vue3-components-plus 3.0.30 → 3.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,12 +2,12 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  var _a2;
5
- import { defineComponent, openBlock, createElementBlock, createElementVNode, ref as ref$1, watch, normalizeClass, nextTick, useCssVars, computed, defineAsyncComponent, reactive, onMounted, onUnmounted, resolveComponent, createBlock, normalizeStyle, createSlots, withCtx, resolveDynamicComponent, mergeProps, toHandlers, Fragment, createTextVNode, toDisplayString, unref, createCommentVNode, createVNode, createApp, render, useAttrs, watchEffect, withDirectives, vShow, renderSlot, resolveDirective, renderList, getCurrentInstance, shallowRef, onBeforeUnmount, createStaticVNode, Transition, vModelText, withModifiers, normalizeProps, guardReactiveProps, onUpdated, h as h$2 } from "vue";
6
- import { ElMessage, ElImage } from "element-plus";
5
+ import { defineComponent, openBlock, createElementBlock, createElementVNode, ref as ref$1, watch, normalizeClass, nextTick, useCssVars, computed, defineAsyncComponent, reactive, onMounted, onUnmounted, resolveComponent, createBlock, normalizeStyle, createSlots, withCtx, resolveDynamicComponent, mergeProps, toHandlers, Fragment, createTextVNode, toDisplayString, unref, createCommentVNode, createVNode, createApp, render, useAttrs, watchEffect, withDirectives, vShow, renderSlot, resolveDirective, renderList, getCurrentInstance, shallowRef, onBeforeUnmount, createStaticVNode, Transition, vModelText, withModifiers, markRaw, toRaw, h as h$2, useSlots, onUpdated } from "vue";
6
+ import { ElMessage, ElImage, ElTableColumn, ElButton, ElTag } from "element-plus";
7
7
  import VuePdfApp from "vue3-pdf-app";
8
8
  import axios from "axios";
9
9
  /*! Element Plus Icons Vue v2.3.2 */
10
- var _sfc_main$f = /* @__PURE__ */ defineComponent({
10
+ var _sfc_main$e = /* @__PURE__ */ defineComponent({
11
11
  name: "AddLocation",
12
12
  __name: "add-location",
13
13
  setup(__props) {
@@ -29,7 +29,7 @@ var _sfc_main$f = /* @__PURE__ */ defineComponent({
29
29
  })
30
30
  ]));
31
31
  }
32
- }), add_location_default = _sfc_main$f;
32
+ }), add_location_default = _sfc_main$e;
33
33
  var _sfc_main2 = /* @__PURE__ */ defineComponent({
34
34
  name: "Aim",
35
35
  __name: "aim",
@@ -44406,7 +44406,7 @@ var utils$2 = {
44406
44406
  SHEET_VERY_HIDDEN: 2
44407
44407
  }
44408
44408
  };
44409
- const _sfc_main$e = /* @__PURE__ */ defineComponent({
44409
+ const _sfc_main$d = /* @__PURE__ */ defineComponent({
44410
44410
  __name: "ExcelComp",
44411
44411
  props: {
44412
44412
  // 文件对象或文件URL
@@ -44783,7 +44783,7 @@ const _export_sfc = (sfc, props) => {
44783
44783
  }
44784
44784
  return target;
44785
44785
  };
44786
- const ExcelComp = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-1aba0d50"]]);
44786
+ const ExcelComp = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-1aba0d50"]]);
44787
44787
  var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
44788
44788
  var freeSelf = typeof self == "object" && self && self.Object === Object && self;
44789
44789
  var root = freeGlobal || freeSelf || Function("return this")();
@@ -44826,15 +44826,14 @@ const loadCssVars = () => {
44826
44826
  ThemeVar.VARS = variables;
44827
44827
  return variables;
44828
44828
  };
44829
- const _hoisted_1$9 = { class: "dialog-content" };
44830
- const _hoisted_2$6 = { class: "dialog-header" };
44831
- const _hoisted_3$5 = { class: "dialog-title" };
44832
- const _hoisted_4$3 = { class: "dialog-controls" };
44833
- const _hoisted_5$2 = {
44829
+ const _hoisted_1$9 = { class: "dialog-header" };
44830
+ const _hoisted_2$5 = { class: "dialog-title" };
44831
+ const _hoisted_3$4 = { class: "dialog-controls" };
44832
+ const _hoisted_4$3 = {
44834
44833
  key: 1,
44835
44834
  class: "dialog-footer"
44836
44835
  };
44837
- const _sfc_main$d = /* @__PURE__ */ defineComponent({
44836
+ const _sfc_main$c = /* @__PURE__ */ defineComponent({
44838
44837
  __name: "NsDialog",
44839
44838
  props: {
44840
44839
  class: {
@@ -44964,13 +44963,10 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
44964
44963
  },
44965
44964
  setup(__props) {
44966
44965
  useCssVars((_ctx) => ({
44967
- "fcb374fa": __props.modalColor,
44968
- "v85a3a6ce": _height.value,
44969
- "v2ab959d2": dialogPosition.value.left,
44970
- "v5a266c45": dialogPosition.value.top,
44971
- "v7ff5a356": tbPadding.value,
44972
- "v5be4f93e": lrPadding.value,
44973
- "v4fd69864": _centerHeight.value
44966
+ "v48d8fea8": __props.modalColor,
44967
+ "v1481ea10": _height.value,
44968
+ "v782b960e": dialogPosition.value.left,
44969
+ "v08c32324": dialogPosition.value.top
44974
44970
  }));
44975
44971
  const asyncDom = computed(() => {
44976
44972
  var _a3;
@@ -45016,6 +45012,13 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45016
45012
  y: null
45017
45013
  });
45018
45014
  const _height = ref$1("fit-content");
45015
+ const dialogContentStyle = computed(() => ({
45016
+ paddingTop: tbPadding.value,
45017
+ paddingBottom: tbPadding.value,
45018
+ paddingLeft: lrPadding.value,
45019
+ paddingRight: lrPadding.value,
45020
+ height: _centerHeight.value
45021
+ }));
45019
45022
  const _centerHeight = ref$1("auto");
45020
45023
  const tbPadding = ref$1(ThemeVar.VARS["--matrix-dialog-padding-topBottom"]);
45021
45024
  const lrPadding = ref$1(ThemeVar.VARS["--matrix-dialog-padding-leftRight"]);
@@ -45137,7 +45140,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45137
45140
  } else {
45138
45141
  _height.value = `calc(${heightValue} - ${topBottom}px)`;
45139
45142
  }
45140
- _centerHeight.value = `calc(100% - ${topBottom * 2}px)`;
45143
+ _centerHeight.value = "100%";
45141
45144
  return;
45142
45145
  } catch (error) {
45143
45146
  console.log(error);
@@ -45259,8 +45262,8 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45259
45262
  onClosed: dealClosed
45260
45263
  }, createSlots({
45261
45264
  header: withCtx(() => [
45262
- createElementVNode("div", _hoisted_2$6, [
45263
- createElementVNode("div", _hoisted_3$5, [
45265
+ createElementVNode("div", _hoisted_1$9, [
45266
+ createElementVNode("div", _hoisted_2$5, [
45264
45267
  __props.headerDom ? (openBlock(), createBlock(resolveDynamicComponent(asyncHeaderDom.value), mergeProps({ key: 0 }, props.headerOption, toHandlers({
45265
45268
  ...props.headerEvents,
45266
45269
  close: closeDialog
@@ -45268,7 +45271,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45268
45271
  createTextVNode(toDisplayString(currentTitle.value), 1)
45269
45272
  ], 64))
45270
45273
  ]),
45271
- createElementVNode("div", _hoisted_4$3, [
45274
+ createElementVNode("div", _hoisted_3$4, [
45272
45275
  showMaximizeButton.value ? (openBlock(), createBlock(_component_el_icon, {
45273
45276
  key: 0,
45274
45277
  class: "dialog-maximize",
@@ -45294,7 +45297,10 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45294
45297
  ])
45295
45298
  ]),
45296
45299
  default: withCtx(() => [
45297
- createElementVNode("div", _hoisted_1$9, [
45300
+ createElementVNode("div", {
45301
+ class: "dialog-content",
45302
+ style: normalizeStyle(dialogContentStyle.value)
45303
+ }, [
45298
45304
  (openBlock(), createBlock(resolveDynamicComponent(asyncDom.value), mergeProps({
45299
45305
  ref_key: "componentRef",
45300
45306
  ref: componentRef
@@ -45302,7 +45308,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45302
45308
  ...props.events,
45303
45309
  close: closeDialog
45304
45310
  })), null, 16))
45305
- ])
45311
+ ], 4)
45306
45312
  ]),
45307
45313
  _: 2
45308
45314
  }, [
@@ -45312,7 +45318,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45312
45318
  __props.footerDom ? (openBlock(), createBlock(resolveDynamicComponent(asyncFooterDom.value), mergeProps({ key: 0 }, props.footerOption, toHandlers({
45313
45319
  ...props.footerEvents,
45314
45320
  close: closeDialog
45315
- })), null, 16)) : (openBlock(), createElementBlock("div", _hoisted_5$2, [
45321
+ })), null, 16)) : (openBlock(), createElementBlock("div", _hoisted_4$3, [
45316
45322
  createVNode(_component_el_button, {
45317
45323
  class: "dialog-footer-btn btn-cancel",
45318
45324
  onClick: closeDialog
@@ -45381,7 +45387,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45381
45387
  };
45382
45388
  window.__dialogInstances.push(instance2);
45383
45389
  if (externalApp) {
45384
- const vnode = createVNode(_sfc_main$d, {
45390
+ const vnode = createVNode(_sfc_main$c, {
45385
45391
  ...superData,
45386
45392
  containerId,
45387
45393
  // 添加容器ID传递给组件
@@ -45405,7 +45411,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45405
45411
  vnode.appContext = externalApp._context;
45406
45412
  render(vnode, container);
45407
45413
  } else {
45408
- const app2 = createApp(_sfc_main$d, {
45414
+ const app2 = createApp(_sfc_main$c, {
45409
45415
  ...superData,
45410
45416
  containerId,
45411
45417
  // 添加容器ID传递给组件
@@ -45426,7 +45432,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45426
45432
  }
45427
45433
  }
45428
45434
  });
45429
- const vnode = createVNode(_sfc_main$d, {
45435
+ const vnode = createVNode(_sfc_main$c, {
45430
45436
  ...superData,
45431
45437
  containerId,
45432
45438
  dialogInstance: instance2
@@ -45436,7 +45442,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45436
45442
  }
45437
45443
  return instance2;
45438
45444
  };
45439
- const _sfc_main$c = /* @__PURE__ */ defineComponent({
45445
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45440
45446
  __name: "index",
45441
45447
  props: {
45442
45448
  isShowDialog: {
@@ -45562,13 +45568,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
45562
45568
  };
45563
45569
  }
45564
45570
  });
45565
- _sfc_main$c.install = (app2) => {
45566
- app2.component(_sfc_main$c.name, _sfc_main$c);
45571
+ _sfc_main$b.install = (app2) => {
45572
+ app2.component(_sfc_main$b.name, _sfc_main$b);
45567
45573
  };
45568
45574
  const _hoisted_1$8 = { class: "pdf-reader" };
45569
- const _hoisted_2$5 = { class: "pdf-tools" };
45570
- const _hoisted_3$4 = ["id"];
45571
- const _sfc_main$b = /* @__PURE__ */ defineComponent({
45575
+ const _hoisted_2$4 = { class: "pdf-tools" };
45576
+ const _hoisted_3$3 = ["id"];
45577
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
45572
45578
  ...{
45573
45579
  name: "ns-pdf"
45574
45580
  },
@@ -45655,7 +45661,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45655
45661
  const _component_el_button = resolveComponent("el-button");
45656
45662
  const _component_el_empty = resolveComponent("el-empty");
45657
45663
  return openBlock(), createElementBlock("div", _hoisted_1$8, [
45658
- withDirectives(createElementVNode("div", _hoisted_2$5, [
45664
+ withDirectives(createElementVNode("div", _hoisted_2$4, [
45659
45665
  createVNode(_component_el_button, {
45660
45666
  id: idConfig.value.previousPage
45661
45667
  }, {
@@ -45669,7 +45675,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45669
45675
  class: "jump-input",
45670
45676
  id: idConfig.value.pageNumber,
45671
45677
  type: "number"
45672
- }, null, 8, _hoisted_3$4),
45678
+ }, null, 8, _hoisted_3$3),
45673
45679
  createElementVNode("span", null, "/" + toDisplayString(numPages.value) + "页", 1)
45674
45680
  ]),
45675
45681
  createVNode(_component_el_button, {
@@ -45719,7 +45725,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45719
45725
  };
45720
45726
  }
45721
45727
  });
45722
- const NsPdf = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-e08020c7"]]);
45728
+ const NsPdf = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-e08020c7"]]);
45723
45729
  NsPdf.install = (app2) => {
45724
45730
  app2.component(NsPdf.name, NsPdf);
45725
45731
  };
@@ -52077,14 +52083,14 @@ async function renderAsync(data, bodyContainer, styleContainer, userOptions) {
52077
52083
  return doc;
52078
52084
  }
52079
52085
  const _hoisted_1$7 = { class: "word-reader" };
52080
- const _hoisted_2$4 = { class: "word-tools" };
52081
- const _hoisted_3$3 = { class: "zoom-info" };
52086
+ const _hoisted_2$3 = { class: "word-tools" };
52087
+ const _hoisted_3$2 = { class: "zoom-info" };
52082
52088
  const _hoisted_4$2 = { class: "word-container" };
52083
52089
  const _hoisted_5$1 = {
52084
52090
  key: 0,
52085
52091
  class: "loading-wrapper"
52086
52092
  };
52087
- const _sfc_main$a = /* @__PURE__ */ defineComponent({
52093
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52088
52094
  ...{
52089
52095
  name: "ns-word"
52090
52096
  },
@@ -52218,7 +52224,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
52218
52224
  return (_ctx, _cache) => {
52219
52225
  const _component_el_button = resolveComponent("el-button");
52220
52226
  return openBlock(), createElementBlock("div", _hoisted_1$7, [
52221
- withDirectives(createElementVNode("div", _hoisted_2$4, [
52227
+ withDirectives(createElementVNode("div", _hoisted_2$3, [
52222
52228
  createVNode(_component_el_button, {
52223
52229
  onClick: zoomOut,
52224
52230
  disabled: zoom.value <= 0.5
@@ -52228,7 +52234,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
52228
52234
  ])]),
52229
52235
  _: 1
52230
52236
  }, 8, ["disabled"]),
52231
- createElementVNode("span", _hoisted_3$3, toDisplayString(Math.round(zoom.value * 100)) + "%", 1),
52237
+ createElementVNode("span", _hoisted_3$2, toDisplayString(Math.round(zoom.value * 100)) + "%", 1),
52232
52238
  createVNode(_component_el_button, {
52233
52239
  onClick: zoomIn,
52234
52240
  disabled: zoom.value >= 3
@@ -52259,12 +52265,12 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
52259
52265
  };
52260
52266
  }
52261
52267
  });
52262
- const NsWord = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-5777b155"]]);
52268
+ const NsWord = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-5777b155"]]);
52263
52269
  NsWord.install = (app2) => {
52264
52270
  app2.component(NsWord.name, NsWord);
52265
52271
  };
52266
52272
  const _hoisted_1$6 = { class: "ns-office" };
52267
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52273
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
52268
52274
  ...{
52269
52275
  name: "ns-office"
52270
52276
  },
@@ -52315,7 +52321,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52315
52321
  return (_ctx, _cache) => {
52316
52322
  const _component_NoData = resolveComponent("NoData");
52317
52323
  return openBlock(), createElementBlock("div", _hoisted_1$6, [
52318
- fileType.value === "excel" ? (openBlock(), createBlock(_sfc_main$c, mergeProps({ key: 0 }, _ctx.$attrs, {
52324
+ fileType.value === "excel" ? (openBlock(), createBlock(_sfc_main$b, mergeProps({ key: 0 }, _ctx.$attrs, {
52319
52325
  isEdit: false,
52320
52326
  isShowDialog: false,
52321
52327
  file: __props.url,
@@ -52338,7 +52344,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52338
52344
  };
52339
52345
  }
52340
52346
  });
52341
- const NsOffice = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-a4bc0168"]]);
52347
+ const NsOffice = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-a4bc0168"]]);
52342
52348
  NsOffice.install = (app2) => {
52343
52349
  app2.component(NsOffice.name, NsOffice);
52344
52350
  };
@@ -52357,10 +52363,10 @@ const _hoisted_1$5 = {
52357
52363
  key: 0,
52358
52364
  class: "sub-row"
52359
52365
  };
52360
- const _hoisted_2$3 = {
52366
+ const _hoisted_2$2 = {
52361
52367
  class: /* @__PURE__ */ normalizeClass(["sub-row-group"])
52362
52368
  };
52363
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
52369
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
52364
52370
  __name: "DynamicForm",
52365
52371
  props: {
52366
52372
  // 可选table, vertical, 默认不带边框颜色
@@ -53167,7 +53173,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
53167
53173
  ], 2)), [
53168
53174
  [_directive_sline]
53169
53175
  ]),
53170
- createElementVNode("div", _hoisted_2$3, [
53176
+ createElementVNode("div", _hoisted_2$2, [
53171
53177
  (openBlock(true), createElementBlock(Fragment, null, renderList(rowInfo.children, (subRowInfo, _subIndex) => {
53172
53178
  return openBlock(), createElementBlock("div", {
53173
53179
  class: normalizeClass(["sub-row-item"]),
@@ -53418,12 +53424,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
53418
53424
  };
53419
53425
  }
53420
53426
  });
53421
- const NsForm = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-a196e4ed"]]);
53427
+ const NsForm = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-a196e4ed"]]);
53422
53428
  const _hoisted_1$4 = { class: "title-image-view" };
53423
- const _hoisted_2$2 = { class: "content-model-title" };
53424
- const _hoisted_3$2 = { class: "title-text" };
53429
+ const _hoisted_2$1 = { class: "content-model-title" };
53430
+ const _hoisted_3$1 = { class: "title-text" };
53425
53431
  const _hoisted_4$1 = { class: "content-ui" };
53426
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
53432
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
53427
53433
  __name: "DynamicFormTitle",
53428
53434
  props: {
53429
53435
  title: {
@@ -53434,10 +53440,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
53434
53440
  setup(__props) {
53435
53441
  return (_ctx, _cache) => {
53436
53442
  return openBlock(), createElementBlock("div", _hoisted_1$4, [
53437
- createElementVNode("div", _hoisted_2$2, [
53443
+ createElementVNode("div", _hoisted_2$1, [
53438
53444
  _cache[0] || (_cache[0] = createElementVNode("div", { class: "title-icon" }, null, -1)),
53439
53445
  renderSlot(_ctx.$slots, "title", {}, () => [
53440
- createElementVNode("span", _hoisted_3$2, toDisplayString(__props.title), 1)
53446
+ createElementVNode("span", _hoisted_3$1, toDisplayString(__props.title), 1)
53441
53447
  ], true)
53442
53448
  ]),
53443
53449
  createElementVNode("div", _hoisted_4$1, [
@@ -53447,7 +53453,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
53447
53453
  };
53448
53454
  }
53449
53455
  });
53450
- const NsFormTitle = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-a0ddcbf6"]]);
53456
+ const NsFormTitle = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-a0ddcbf6"]]);
53451
53457
  function registerDirective(app2) {
53452
53458
  app2.directive("sline", {
53453
53459
  mounted(el2) {
@@ -53458,6 +53464,34 @@ function registerDirective(app2) {
53458
53464
  el2.style.maxWidth = "100%";
53459
53465
  }
53460
53466
  });
53467
+ app2.directive("enterClick", {
53468
+ mounted(el2) {
53469
+ const handler = (event) => {
53470
+ if (event.key !== "Enter") return;
53471
+ const activeEl = document.activeElement;
53472
+ const isSelectTrigger = activeEl && activeEl.tagName === "INPUT" && activeEl.closest(".el-select");
53473
+ if (isSelectTrigger) {
53474
+ const isDropdownOpen = activeEl.getAttribute("aria-expanded") === "true";
53475
+ if (isDropdownOpen) {
53476
+ return;
53477
+ }
53478
+ }
53479
+ el2.click();
53480
+ if (isSelectTrigger) {
53481
+ event.preventDefault();
53482
+ event.stopPropagation();
53483
+ }
53484
+ };
53485
+ el2.__nsEnterClickHandler = handler;
53486
+ document.addEventListener("keydown", handler, true);
53487
+ },
53488
+ unmounted(el2) {
53489
+ if (el2.__nsEnterClickHandler) {
53490
+ document.removeEventListener("keydown", el2.__nsEnterClickHandler, true);
53491
+ delete el2.__nsEnterClickHandler;
53492
+ }
53493
+ }
53494
+ });
53461
53495
  app2.directive("permission", {
53462
53496
  mounted(el2, binding) {
53463
53497
  var _a3, _b, _c2, _d, _e, _f;
@@ -74814,7 +74848,7 @@ function ss(e6, t3) {
74814
74848
  ]));
74815
74849
  }
74816
74850
  const m5 = { render: ss }, f5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: m5, render: ss }, Symbol.toStringTag, { value: "Module" }));
74817
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
74851
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
74818
74852
  __name: "index",
74819
74853
  props: {
74820
74854
  content: {
@@ -74841,7 +74875,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
74841
74875
  };
74842
74876
  }
74843
74877
  });
74844
- const NsMD = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-3760fe44"]]);
74878
+ const NsMD = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-3760fe44"]]);
74845
74879
  NsMD.install = (app2) => {
74846
74880
  app2.component(NsMD.name, NsMD);
74847
74881
  try {
@@ -74852,7 +74886,7 @@ NsMD.install = (app2) => {
74852
74886
  };
74853
74887
  const StoneIcon = "data:image/png;base64,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";
74854
74888
  const DownFill = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAA6klEQVR4AeyVwQ3CMAxFnZw6BqPQSRBbcEDiQiXGgEnoKEwBPSX4H+CAimM7CA6k6r80/v8lVuRG+tHTwF9rfGt1azV127x0aZMXUvuKlytmWrHOFoVMu+kQLlXg6xDWHHBkqd5MNN6G0JeKiydGgBauhSJTBUZhCW6BIk8NRvE7uBWKLBMYhle4B4ocMximB9wLRYYLDCPgmtuL2jm5wXNhlm8iuOPp45pamHbslTYigmMk89R6Tjj2usGSsXZNPHFKdEqBepfYK21OBGPQT/swulT7k5B2XbMmnrgmuORt4FKHPrb+f62+AwAA//94RD+mAAAABklEQVQDAFK0zD0qFi7YAAAAAElFTkSuQmCC";
74855
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
74889
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
74856
74890
  ...{
74857
74891
  name: "NsSaturationLine"
74858
74892
  },
@@ -76091,14 +76125,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
76091
76125
  };
76092
76126
  }
76093
76127
  });
76094
- const NsSaturationLine = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-f5b1512e"]]);
76128
+ const NsSaturationLine = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-f5b1512e"]]);
76095
76129
  NsSaturationLine.install = (app2) => {
76096
76130
  const componentName = NsSaturationLine.name || "NsSaturationLine";
76097
76131
  app2.component(componentName, NsSaturationLine);
76098
76132
  };
76099
76133
  const EmptyPng = "data:image/png;base64,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";
76100
76134
  const _hoisted_1$3 = ["src"];
76101
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
76135
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
76102
76136
  __name: "NsImage",
76103
76137
  props: {
76104
76138
  src: {
@@ -76219,289 +76253,355 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
76219
76253
  };
76220
76254
  }
76221
76255
  });
76222
- const NsImage = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-af5258bc"]]);
76256
+ const NsImage = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-af5258bc"]]);
76223
76257
  NsImage.install = (app2) => {
76224
76258
  app2.component(NsImage.name, NsImage);
76225
76259
  };
76260
+ const SlotRenderer = {
76261
+ name: "NsSlotRenderer",
76262
+ props: {
76263
+ renderer: {
76264
+ type: Function,
76265
+ default: null
76266
+ },
76267
+ scope: {
76268
+ type: Object,
76269
+ default: () => ({})
76270
+ }
76271
+ },
76272
+ setup(props) {
76273
+ return () => {
76274
+ return props.renderer ? props.renderer(props.scope || {}) : null;
76275
+ };
76276
+ }
76277
+ };
76226
76278
  const _hoisted_1$2 = { class: "page-search" };
76227
- const _sfc_main$3 = {
76279
+ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
76280
+ name: "NsSearch",
76281
+ inheritAttrs: false
76282
+ }, {
76228
76283
  __name: "PageSearch",
76229
76284
  props: {
76230
- // 搜索项配置
76231
76285
  items: {
76232
76286
  type: Array,
76233
- required: true,
76234
76287
  default: () => []
76235
76288
  },
76236
- // 外部注入的搜索参数(用于特殊情况传参)
76237
76289
  externalParams: {
76238
76290
  type: Object,
76239
76291
  default: () => ({})
76240
76292
  },
76241
- // 标签宽度
76242
- labelWidth: {
76243
- type: String,
76244
- default: "100px"
76245
- },
76246
- // 默认每项占用的 span
76247
76293
  defaultSpan: {
76248
76294
  type: Number,
76249
76295
  default: 6
76250
76296
  },
76251
- // 按钮占用的 span
76252
- buttonSpan: {
76253
- type: Number,
76254
- default: 6
76255
- },
76256
- // 按钮位置:first-第一行后面,last-最后一行后面
76257
- buttonPosition: {
76258
- type: String,
76259
- default: "last",
76260
- validator: (value) => ["first", "last"].includes(value)
76261
- },
76262
- // 是否显示展开/收起按钮
76263
76297
  showCollapse: {
76264
76298
  type: Boolean,
76265
76299
  default: true
76266
76300
  },
76267
- // 折叠时显示的项数
76268
76301
  collapseLimit: {
76269
76302
  type: Number,
76270
76303
  default: 3
76271
76304
  },
76272
- // 每行显示的项数(用于计算第一行最后一项的索引)
76273
- itemsPerRow: {
76305
+ slotRenderers: {
76306
+ type: Object,
76307
+ default: () => ({})
76308
+ },
76309
+ actionsAlign: {
76310
+ type: String,
76311
+ default: "left"
76312
+ },
76313
+ actionsSpan: {
76274
76314
  type: Number,
76275
- default: 4
76315
+ default: null
76316
+ },
76317
+ actionsWidth: {
76318
+ type: [String, Number],
76319
+ default: ""
76320
+ },
76321
+ collapseToggleText: {
76322
+ type: [Array, String],
76323
+ default: () => ["展开", "收起"]
76324
+ },
76325
+ enterTrigger: {
76326
+ type: Boolean,
76327
+ default: true
76276
76328
  }
76277
76329
  },
76278
76330
  emits: ["search", "reset"],
76279
76331
  setup(__props, { expose: __expose, emit: __emit }) {
76280
76332
  const props = __props;
76281
76333
  const emit = __emit;
76334
+ const attrs = useAttrs();
76282
76335
  const formRef = ref$1(null);
76283
- const formData = ref$1({});
76336
+ const formData = reactive({});
76284
76337
  const isCollapsed = ref$1(true);
76285
- const totalItems = computed(() => props.items.length);
76286
- const firstRowLastIndex = computed(() => {
76287
- return Math.min(props.itemsPerRow - 1, props.items.length - 1);
76338
+ function toKebabCase(value) {
76339
+ if (typeof value !== "string") return value;
76340
+ if (value.indexOf("-") > -1) return value.toLowerCase();
76341
+ return value.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
76342
+ }
76343
+ const formAttrs = computed(() => attrs || {});
76344
+ const itemsPerRow = computed(() => {
76345
+ const span = Number(props.defaultSpan || 6);
76346
+ const normalizedSpan = Number.isFinite(span) && span > 0 ? span : 6;
76347
+ return Math.max(1, Math.floor(24 / normalizedSpan));
76348
+ });
76349
+ const processedItems = computed(() => {
76350
+ return (props.items || []).map((item) => {
76351
+ const result = { ...item };
76352
+ if (result.component && typeof result.component !== "string") {
76353
+ result.component = markRaw(toRaw(result.component));
76354
+ }
76355
+ if (result.children) {
76356
+ result.children = unref(result.children);
76357
+ }
76358
+ return result;
76359
+ });
76288
76360
  });
76289
76361
  const visibleItems = computed(() => {
76290
76362
  if (!props.showCollapse || !isCollapsed.value) {
76291
- return props.items;
76363
+ return processedItems.value;
76364
+ }
76365
+ const sourceItems = processedItems.value;
76366
+ let limit = Math.min(Number(props.collapseLimit || 0), sourceItems.length);
76367
+ if (limit > 0 && limit % itemsPerRow.value === 0 && sourceItems.length > limit) {
76368
+ limit = limit - 1;
76292
76369
  }
76293
- return props.items.slice(0, props.collapseLimit);
76370
+ return sourceItems.slice(0, Math.max(limit, 1));
76294
76371
  });
76295
- const initFormData = () => {
76296
- const data = {};
76297
- props.items.forEach((item) => {
76298
- if (item.defaultValue !== void 0) {
76299
- data[item.prop] = item.defaultValue;
76300
- } else {
76301
- data[item.prop] = void 0;
76302
- }
76372
+ const normalizedActionsAlign = computed(() => {
76373
+ const value = String(props.actionsAlign || "").toLowerCase();
76374
+ return ["left", "center", "right"].includes(value) ? value : "left";
76375
+ });
76376
+ const actionAlignClass = computed(() => {
76377
+ return `page-search__actions--${normalizedActionsAlign.value}`;
76378
+ });
76379
+ const resolvedActionsSpan = computed(() => {
76380
+ const span = Number(props.actionsSpan);
76381
+ if (Number.isFinite(span) && span > 0) {
76382
+ return Math.min(Math.floor(span), 24);
76383
+ }
76384
+ return Number(props.defaultSpan || 6);
76385
+ });
76386
+ const actionsColStyle = computed(() => {
76387
+ const width = toCssSize(props.actionsWidth);
76388
+ if (!width) return void 0;
76389
+ return {
76390
+ flex: `0 0 ${width}`,
76391
+ maxWidth: width
76392
+ };
76393
+ });
76394
+ const collapseToggleLabels = computed(() => {
76395
+ if (Array.isArray(props.collapseToggleText)) {
76396
+ const expandLabel2 = String(props.collapseToggleText[0] || "").trim();
76397
+ const collapseLabel2 = String(props.collapseToggleText[1] || "").trim();
76398
+ return [expandLabel2 || "展开", collapseLabel2 || "收起"];
76399
+ }
76400
+ const text = String(props.collapseToggleText || "").trim();
76401
+ if (!text) return ["展开", "收起"];
76402
+ const parts = text.split("/");
76403
+ const expandLabel = String(parts[0] || "").trim();
76404
+ const collapseLabel = String(parts[1] || "").trim();
76405
+ return [expandLabel || "展开", collapseLabel || "收起"];
76406
+ });
76407
+ function normalizeComponent(component) {
76408
+ if (typeof component === "string") return toKebabCase(component);
76409
+ return markRaw(component);
76410
+ }
76411
+ function initFormData() {
76412
+ const nextData = {};
76413
+ (props.items || []).forEach((item) => {
76414
+ nextData[item.prop] = item.defaultValue !== void 0 ? item.defaultValue : void 0;
76303
76415
  });
76304
- formData.value = { ...data, ...props.externalParams };
76305
- };
76416
+ Object.keys(formData).forEach((key) => delete formData[key]);
76417
+ Object.assign(formData, { ...nextData, ...props.externalParams });
76418
+ }
76419
+ function isSlotItem(item) {
76420
+ return item && (item.type === "slot" || item.slot === true || typeof item.slot === "string");
76421
+ }
76422
+ function getSlotRenderer(item) {
76423
+ const name = typeof item.slot === "string" ? item.slot : item.slotName || item.prop;
76424
+ return props.slotRenderers[name] || null;
76425
+ }
76426
+ function isSelectComponent(item) {
76427
+ const comp = item.component || "";
76428
+ if (typeof comp === "string") {
76429
+ return toKebabCase(comp) === "el-select";
76430
+ }
76431
+ return comp.componentName === "ElSelect" || comp.name && toKebabCase(comp.name) === "el-select";
76432
+ }
76433
+ function toCssSize(value) {
76434
+ if (value === "" || value === null || value === void 0) return "";
76435
+ if (typeof value === "number") return `${value}px`;
76436
+ return String(value);
76437
+ }
76438
+ function handleSearch() {
76439
+ emit("search", { ...formData, _resetPage: true });
76440
+ }
76441
+ function handleReset() {
76442
+ const nextData = {};
76443
+ (props.items || []).forEach((item) => {
76444
+ nextData[item.prop] = item.defaultValue !== void 0 ? item.defaultValue : void 0;
76445
+ });
76446
+ Object.keys(formData).forEach((key) => delete formData[key]);
76447
+ Object.assign(formData, { ...nextData, ...props.externalParams });
76448
+ emit("search", { ...formData, _resetPage: true });
76449
+ emit("reset");
76450
+ }
76451
+ function toggleCollapse() {
76452
+ isCollapsed.value = !isCollapsed.value;
76453
+ }
76306
76454
  watch(
76307
- () => props.externalParams,
76308
- (newVal) => {
76309
- if (newVal && Object.keys(newVal).length > 0) {
76310
- formData.value = { ...formData.value, ...newVal };
76311
- }
76455
+ () => props.items,
76456
+ () => {
76457
+ initFormData();
76312
76458
  },
76313
76459
  { deep: true, immediate: true }
76314
76460
  );
76315
76461
  watch(
76316
- () => props.items,
76462
+ () => props.externalParams,
76317
76463
  () => {
76318
- initFormData();
76464
+ Object.assign(formData, { ...props.externalParams });
76319
76465
  },
76320
- { deep: true }
76466
+ { deep: true, immediate: true }
76321
76467
  );
76322
- const handleSearch = () => {
76323
- emit("search", { ...formData.value, _resetPage: true });
76324
- };
76325
- const handleReset = () => {
76326
- const data = {};
76327
- props.items.forEach((item) => {
76328
- if (item.defaultValue !== void 0) {
76329
- data[item.prop] = item.defaultValue;
76330
- } else {
76331
- data[item.prop] = void 0;
76332
- }
76333
- });
76334
- formData.value = { ...data, ...props.externalParams };
76335
- emit("search", { ...formData.value, _resetPage: true });
76336
- emit("reset");
76337
- };
76338
- const toggleCollapse = () => {
76339
- isCollapsed.value = !isCollapsed.value;
76340
- };
76341
- __expose({
76342
- formRef,
76343
- getFormData: () => ({ ...formData.value }),
76344
- setFormData: (data) => {
76345
- formData.value = { ...formData.value, ...data };
76346
- },
76347
- resetForm: handleReset,
76348
- validate: () => {
76349
- var _a3;
76350
- return (_a3 = formRef.value) == null ? void 0 : _a3.validate();
76351
- },
76352
- clearValidate: (props2) => {
76353
- var _a3;
76354
- return (_a3 = formRef.value) == null ? void 0 : _a3.clearValidate(props2);
76468
+ function getFormData() {
76469
+ return { ...formData };
76470
+ }
76471
+ function setFormData(data) {
76472
+ Object.assign(formData, data || {});
76473
+ }
76474
+ function resetForm() {
76475
+ handleReset();
76476
+ }
76477
+ function validate() {
76478
+ return formRef.value && formRef.value.validate ? formRef.value.validate() : Promise.resolve(true);
76479
+ }
76480
+ function clearValidate(propsList) {
76481
+ if (formRef.value && formRef.value.clearValidate) {
76482
+ formRef.value.clearValidate(propsList);
76355
76483
  }
76356
- });
76357
- onMounted(() => {
76358
- initFormData();
76484
+ }
76485
+ __expose({
76486
+ getFormData,
76487
+ setFormData,
76488
+ resetForm,
76489
+ validate,
76490
+ clearValidate,
76491
+ formRef
76359
76492
  });
76360
76493
  return (_ctx, _cache) => {
76494
+ const _component_el_option = resolveComponent("el-option");
76361
76495
  const _component_el_form_item = resolveComponent("el-form-item");
76362
76496
  const _component_el_col = resolveComponent("el-col");
76363
76497
  const _component_el_button = resolveComponent("el-button");
76364
76498
  const _component_el_icon = resolveComponent("el-icon");
76365
76499
  const _component_el_row = resolveComponent("el-row");
76366
76500
  const _component_el_form = resolveComponent("el-form");
76501
+ const _directive_enterClick = resolveDirective("enterClick");
76367
76502
  return openBlock(), createElementBlock("div", _hoisted_1$2, [
76368
- createVNode(_component_el_form, {
76503
+ createVNode(_component_el_form, mergeProps({
76369
76504
  ref_key: "formRef",
76370
76505
  ref: formRef,
76371
- model: formData.value,
76372
- "label-width": __props.labelWidth,
76373
- inline: false
76374
- }, {
76506
+ inline: true,
76507
+ model: formData
76508
+ }, formAttrs.value, { class: "page-search__form" }), {
76375
76509
  default: withCtx(() => [
76376
- createVNode(_component_el_row, { gutter: 16 }, {
76510
+ createVNode(_component_el_row, {
76511
+ gutter: 16,
76512
+ type: "flex",
76513
+ class: "page-search__row"
76514
+ }, {
76377
76515
  default: withCtx(() => [
76378
76516
  (openBlock(true), createElementBlock(Fragment, null, renderList(visibleItems.value, (item, index2) => {
76379
- return openBlock(), createElementBlock(Fragment, { key: index2 }, [
76380
- createVNode(_component_el_col, {
76381
- span: item.span || __props.defaultSpan
76382
- }, {
76383
- default: withCtx(() => [
76384
- createVNode(_component_el_form_item, {
76385
- label: item.label,
76386
- prop: item.prop
76387
- }, {
76388
- default: withCtx(() => [
76389
- item.component ? (openBlock(), createBlock(resolveDynamicComponent(item.component), mergeProps({
76390
- key: 0,
76391
- modelValue: formData.value[item.prop],
76392
- "onUpdate:modelValue": ($event) => formData.value[item.prop] = $event
76393
- }, { ref_for: true }, item.attrs, toHandlers(item.events || {})), {
76394
- default: withCtx(() => [
76395
- item.children && item.children.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(item.children, (child) => {
76396
- return openBlock(), createBlock(resolveDynamicComponent("el-option"), {
76397
- key: child.value,
76398
- label: child.label,
76399
- value: child.value
76400
- }, null, 8, ["label", "value"]);
76401
- }), 128)) : createCommentVNode("", true)
76402
- ]),
76403
- _: 2
76404
- }, 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "slot" ? renderSlot(_ctx.$slots, item.slot, {
76405
- key: 1,
76406
- formData: formData.value,
76407
- item
76408
- }, void 0, true) : createCommentVNode("", true)
76409
- ]),
76410
- _: 2
76411
- }, 1032, ["label", "prop"])
76412
- ]),
76413
- _: 2
76414
- }, 1032, ["span"]),
76415
- __props.buttonPosition === "first" && index2 === firstRowLastIndex.value ? (openBlock(), createBlock(_component_el_col, {
76416
- key: 0,
76417
- span: __props.buttonSpan,
76418
- class: "search-buttons"
76419
- }, {
76420
- default: withCtx(() => [
76421
- createVNode(_component_el_form_item, { "label-width": "0" }, {
76422
- default: withCtx(() => [
76423
- createVNode(_component_el_button, {
76424
- type: "primary",
76425
- icon: unref(search_default),
76426
- onClick: handleSearch
76427
- }, {
76428
- default: withCtx(() => [..._cache[0] || (_cache[0] = [
76429
- createTextVNode(" 查询 ", -1)
76430
- ])]),
76431
- _: 1
76432
- }, 8, ["icon"]),
76433
- createVNode(_component_el_button, {
76434
- icon: unref(refresh_default),
76435
- onClick: handleReset
76436
- }, {
76437
- default: withCtx(() => [..._cache[1] || (_cache[1] = [
76438
- createTextVNode(" 重置 ", -1)
76439
- ])]),
76440
- _: 1
76441
- }, 8, ["icon"]),
76442
- __props.showCollapse && totalItems.value > __props.collapseLimit ? (openBlock(), createBlock(_component_el_button, {
76443
- key: 0,
76444
- type: "primary",
76445
- link: "",
76446
- onClick: toggleCollapse
76447
- }, {
76448
- default: withCtx(() => [
76449
- createTextVNode(toDisplayString(isCollapsed.value ? "展开" : "收起") + " ", 1),
76450
- createVNode(_component_el_icon, { class: "el-icon--right" }, {
76451
- default: withCtx(() => [
76452
- (openBlock(), createBlock(resolveDynamicComponent(isCollapsed.value ? "ArrowDown" : "ArrowUp")))
76453
- ]),
76454
- _: 1
76455
- })
76456
- ]),
76457
- _: 1
76458
- })) : createCommentVNode("", true)
76459
- ]),
76460
- _: 1
76461
- })
76462
- ]),
76463
- _: 1
76464
- }, 8, ["span"])) : createCommentVNode("", true)
76465
- ], 64);
76517
+ return openBlock(), createBlock(_component_el_col, {
76518
+ key: item.prop || index2,
76519
+ span: item.span || __props.defaultSpan
76520
+ }, {
76521
+ default: withCtx(() => [
76522
+ createVNode(_component_el_form_item, mergeProps({
76523
+ label: item.label,
76524
+ prop: item.prop
76525
+ }, { ref_for: true }, item.formItemAttrs || {}), {
76526
+ default: withCtx(() => [
76527
+ isSlotItem(item) ? (openBlock(), createBlock(unref(SlotRenderer), {
76528
+ key: 0,
76529
+ renderer: getSlotRenderer(item),
76530
+ scope: { formData, item }
76531
+ }, null, 8, ["renderer", "scope"])) : (openBlock(), createBlock(resolveDynamicComponent(normalizeComponent(item.component || "el-input")), mergeProps({
76532
+ key: 1,
76533
+ modelValue: formData[item.prop],
76534
+ "onUpdate:modelValue": ($event) => formData[item.prop] = $event
76535
+ }, { ref_for: true }, item.attrs || {}, toHandlers(item.events || {})), {
76536
+ default: withCtx(() => [
76537
+ isSelectComponent(item) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(item.children || [], (option, optionIndex) => {
76538
+ return openBlock(), createBlock(_component_el_option, {
76539
+ key: option.value !== void 0 ? option.value : optionIndex,
76540
+ label: option.label,
76541
+ value: option.value,
76542
+ disabled: option.disabled
76543
+ }, null, 8, ["label", "value", "disabled"]);
76544
+ }), 128)) : createCommentVNode("", true)
76545
+ ]),
76546
+ _: 2
76547
+ }, 1040, ["modelValue", "onUpdate:modelValue"]))
76548
+ ]),
76549
+ _: 2
76550
+ }, 1040, ["label", "prop"])
76551
+ ]),
76552
+ _: 2
76553
+ }, 1032, ["span"]);
76466
76554
  }), 128)),
76467
- __props.buttonPosition === "last" ? (openBlock(), createBlock(_component_el_col, {
76468
- key: 0,
76469
- span: __props.buttonSpan,
76470
- class: "search-buttons"
76555
+ createVNode(_component_el_col, {
76556
+ span: resolvedActionsSpan.value,
76557
+ style: normalizeStyle(actionsColStyle.value),
76558
+ class: normalizeClass(["page-search__actions", actionAlignClass.value])
76471
76559
  }, {
76472
76560
  default: withCtx(() => [
76473
76561
  createVNode(_component_el_form_item, { "label-width": "0" }, {
76474
76562
  default: withCtx(() => [
76475
- createVNode(_component_el_button, {
76563
+ __props.enterTrigger ? withDirectives((openBlock(), createBlock(_component_el_button, {
76564
+ key: 0,
76476
76565
  type: "primary",
76477
- icon: unref(search_default),
76478
76566
  onClick: handleSearch
76479
76567
  }, {
76480
- default: withCtx(() => [..._cache[2] || (_cache[2] = [
76481
- createTextVNode(" 查询 ", -1)
76568
+ default: withCtx(() => [..._cache[0] || (_cache[0] = [
76569
+ createTextVNode("查询", -1)
76482
76570
  ])]),
76483
76571
  _: 1
76484
- }, 8, ["icon"]),
76485
- createVNode(_component_el_button, {
76486
- icon: unref(refresh_default),
76487
- onClick: handleReset
76572
+ })), [
76573
+ [_directive_enterClick]
76574
+ ]) : (openBlock(), createBlock(_component_el_button, {
76575
+ key: 1,
76576
+ type: "primary",
76577
+ onClick: handleSearch
76488
76578
  }, {
76489
- default: withCtx(() => [..._cache[3] || (_cache[3] = [
76490
- createTextVNode(" 重置 ", -1)
76579
+ default: withCtx(() => [..._cache[1] || (_cache[1] = [
76580
+ createTextVNode("查询", -1)
76491
76581
  ])]),
76492
76582
  _: 1
76493
- }, 8, ["icon"]),
76494
- __props.showCollapse && totalItems.value > __props.collapseLimit ? (openBlock(), createBlock(_component_el_button, {
76495
- key: 0,
76496
- type: "primary",
76583
+ })),
76584
+ createVNode(_component_el_button, { onClick: handleReset }, {
76585
+ default: withCtx(() => [..._cache[2] || (_cache[2] = [
76586
+ createTextVNode("重置", -1)
76587
+ ])]),
76588
+ _: 1
76589
+ }),
76590
+ __props.slotRenderers["actions-after-reset"] ? (openBlock(), createBlock(unref(SlotRenderer), {
76591
+ key: 2,
76592
+ renderer: __props.slotRenderers["actions-after-reset"],
76593
+ scope: { formData, handleSearch, handleReset, isCollapsed: isCollapsed.value }
76594
+ }, null, 8, ["renderer", "scope"])) : createCommentVNode("", true),
76595
+ __props.showCollapse && __props.items.length > __props.collapseLimit ? (openBlock(), createBlock(_component_el_button, {
76596
+ key: 3,
76497
76597
  link: "",
76498
76598
  onClick: toggleCollapse
76499
76599
  }, {
76500
76600
  default: withCtx(() => [
76501
- createTextVNode(toDisplayString(isCollapsed.value ? "展开" : "收起") + " ", 1),
76502
- createVNode(_component_el_icon, { class: "el-icon--right" }, {
76601
+ createElementVNode("span", null, toDisplayString(isCollapsed.value ? collapseToggleLabels.value[0] : collapseToggleLabels.value[1]), 1),
76602
+ createVNode(_component_el_icon, null, {
76503
76603
  default: withCtx(() => [
76504
- (openBlock(), createBlock(resolveDynamicComponent(isCollapsed.value ? "ArrowDown" : "ArrowUp")))
76604
+ (openBlock(), createBlock(resolveDynamicComponent(isCollapsed.value ? unref(arrow_down_default) : unref(arrow_up_default))))
76505
76605
  ]),
76506
76606
  _: 1
76507
76607
  })
@@ -76513,380 +76613,338 @@ const _sfc_main$3 = {
76513
76613
  })
76514
76614
  ]),
76515
76615
  _: 1
76516
- }, 8, ["span"])) : createCommentVNode("", true)
76616
+ }, 8, ["span", "style", "class"])
76517
76617
  ]),
76518
- _: 3
76618
+ _: 1
76519
76619
  })
76520
76620
  ]),
76521
- _: 3
76522
- }, 8, ["model", "label-width"])
76621
+ _: 1
76622
+ }, 16, ["model"])
76523
76623
  ]);
76524
76624
  };
76525
76625
  }
76526
- };
76527
- const NsSearch = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-202ad5bb"]]);
76528
- const DEFAULT_PAGINATION = {
76529
- total: 0,
76530
- currentPage: 1,
76531
- pageSize: 10
76532
- };
76533
- function createPagination(customParams) {
76534
- return {
76535
- ...DEFAULT_PAGINATION,
76536
- ...customParams
76537
- };
76538
- }
76539
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
76540
- __name: "TableColumn",
76626
+ });
76627
+ const NsSearch = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-96f0d4e2"]]);
76628
+ const RESERVED_KEYS = [
76629
+ "children",
76630
+ "slot",
76631
+ "headerSlot",
76632
+ "buttons",
76633
+ "enum",
76634
+ "type",
76635
+ "imageWidth",
76636
+ "imageHeight",
76637
+ "linkText"
76638
+ ];
76639
+ const TableColumn = {
76640
+ name: "NsTableColumn",
76541
76641
  props: {
76542
76642
  column: {
76543
76643
  type: Object,
76544
76644
  required: true
76645
+ },
76646
+ slotRenderers: {
76647
+ type: Object,
76648
+ default: () => ({})
76545
76649
  }
76546
76650
  },
76547
76651
  emits: ["link-click", "button-click"],
76548
- setup(__props, { emit: __emit }) {
76549
- const emit = __emit;
76550
- const isBtnDisabled = (btn, row) => {
76551
- if (!btn.disabled) return false;
76552
- if (typeof btn.disabled === "function") {
76553
- return btn.disabled(row);
76652
+ setup(props, { emit }) {
76653
+ function getColumnProps(column) {
76654
+ const columnProps = { ...column };
76655
+ RESERVED_KEYS.forEach((key) => delete columnProps[key]);
76656
+ return columnProps;
76657
+ }
76658
+ function getRenderer(name) {
76659
+ return name ? props.slotRenderers[name] : null;
76660
+ }
76661
+ function getCellValue(row, column) {
76662
+ return column.prop ? row[column.prop] : void 0;
76663
+ }
76664
+ function isVisible(config, row) {
76665
+ if (typeof config.show === "function") {
76666
+ return config.show(row) !== false;
76554
76667
  }
76555
- return Boolean(btn.disabled);
76556
- };
76557
- const isBtnShow = (btn, row) => {
76558
- if (!btn.show) return true;
76559
- if (typeof btn.show === "function") {
76560
- return btn.show(row);
76668
+ if (config.show === void 0) {
76669
+ return true;
76561
76670
  }
76562
- return Boolean(btn.show);
76563
- };
76564
- const formatValue = (value, column) => {
76565
- if (column.formatter) {
76566
- return column.formatter(value);
76671
+ return !!config.show;
76672
+ }
76673
+ function isDisabled(config, row) {
76674
+ return typeof config.disabled === "function" ? !!config.disabled(row) : !!config.disabled;
76675
+ }
76676
+ function renderActionButtons(scope, column) {
76677
+ const buttons = Array.isArray(column.buttons) ? column.buttons : [];
76678
+ return buttons.filter((button) => isVisible(button, scope.row)).map((button, index2) => {
76679
+ const slotRenderer = getRenderer(button.slot);
76680
+ if (slotRenderer) {
76681
+ return slotRenderer({ ...scope, row: scope.row, column, button });
76682
+ }
76683
+ return h$2(
76684
+ ElButton,
76685
+ {
76686
+ key: button.label || index2,
76687
+ size: button.size || "small",
76688
+ link: button.link !== false,
76689
+ type: button.link ? void 0 : button.type,
76690
+ icon: button.icon || void 0,
76691
+ disabled: isDisabled(button, scope.row),
76692
+ onClick: () => {
76693
+ if (typeof button.handler === "function") {
76694
+ button.handler(scope.row, scope.$index);
76695
+ }
76696
+ emit("button-click", scope.row, column, button);
76697
+ }
76698
+ },
76699
+ { default: () => button.label }
76700
+ );
76701
+ });
76702
+ }
76703
+ function renderTag(scope, column) {
76704
+ const cellValue = getCellValue(scope.row, column);
76705
+ const tagType = typeof column.tagType === "function" ? column.tagType(scope.row, cellValue) : column.tagType;
76706
+ const text = typeof column.formatter === "function" ? column.formatter(scope.row, column, cellValue) : resolveEnumText(column, cellValue);
76707
+ return h$2(ElTag, { type: tagType || "info", size: column.tagSize || "small" }, { default: () => text });
76708
+ }
76709
+ function renderImage(scope, column) {
76710
+ const src2 = getCellValue(scope.row, column);
76711
+ if (!src2) {
76712
+ return "-";
76567
76713
  }
76568
- if (column.enum) {
76569
- return column.enum[value] || value;
76714
+ return h$2("img", {
76715
+ style: {
76716
+ width: column.imageWidth || "40px",
76717
+ height: column.imageHeight || "40px",
76718
+ objectFit: "cover",
76719
+ borderRadius: "4px"
76720
+ },
76721
+ src: src2,
76722
+ alt: column.label || "image"
76723
+ });
76724
+ }
76725
+ function renderLink(scope, column) {
76726
+ const renderer = getRenderer(column.slot);
76727
+ if (renderer) {
76728
+ return renderer(scope);
76570
76729
  }
76571
- return value;
76572
- };
76573
- const getTagType = (value, tagMap) => {
76574
- if (!tagMap) return "";
76575
- return tagMap[value] || "";
76576
- };
76577
- const handleButtonClick = (btn, row, index2) => {
76578
- if (isBtnDisabled(btn, row)) {
76579
- return;
76730
+ const cellValue = getCellValue(scope.row, column);
76731
+ return h$2(
76732
+ ElButton,
76733
+ {
76734
+ link: true,
76735
+ onClick: () => emit("link-click", scope.row, column)
76736
+ },
76737
+ { default: () => column.linkText || cellValue || "-" }
76738
+ );
76739
+ }
76740
+ function resolveEnumText(column, value) {
76741
+ const enumList = column.enum || column.options || [];
76742
+ if (!Array.isArray(enumList)) {
76743
+ return value;
76580
76744
  }
76581
- if (btn.handler) {
76582
- btn.handler(row, index2);
76745
+ const matched = enumList.find((item) => item.value === value);
76746
+ return matched ? matched.label : value;
76747
+ }
76748
+ function renderDefaultCell(scope, column) {
76749
+ const renderer = getRenderer(column.slot);
76750
+ if (renderer) {
76751
+ return renderer(scope);
76583
76752
  }
76584
- emit("button-click", btn, row, index2);
76585
- };
76586
- const handleLinkClick = (row, column) => {
76587
- emit("link-click", row, column);
76588
- };
76589
- const boundColumnProps = [
76590
- "prop",
76591
- "label",
76592
- "width",
76593
- "minWidth",
76594
- "fixed",
76595
- "sortable",
76596
- "align",
76597
- "headerAlign",
76598
- "showOverflowTooltip",
76599
- "type",
76600
- "slot",
76601
- "buttons",
76602
- "tagMap",
76603
- "imageWidth",
76604
- "imageHeight",
76605
- "previewList",
76606
- "formatter",
76607
- "format",
76608
- "enum",
76609
- "attrs",
76610
- "children"
76611
- ];
76612
- const getColumnAttrs = (column) => {
76613
- const result = {};
76614
- for (const key in column) {
76615
- if (!boundColumnProps.includes(key)) {
76616
- result[key] = column[key];
76617
- }
76753
+ if (column.type === "action") {
76754
+ return h$2("div", { class: "ns-table-column__actions" }, renderActionButtons(scope, column));
76618
76755
  }
76619
- if (column.attrs) {
76620
- Object.assign(result, column.attrs);
76756
+ if (column.type === "tag") {
76757
+ return renderTag(scope, column);
76621
76758
  }
76622
- return result;
76623
- };
76624
- return (_ctx, _cache) => {
76625
- const _component_TableColumn = resolveComponent("TableColumn", true);
76626
- const _component_el_button = resolveComponent("el-button");
76627
- const _component_el_tag = resolveComponent("el-tag");
76628
- const _component_el_image = resolveComponent("el-image");
76629
- const _component_el_link = resolveComponent("el-link");
76630
- const _component_el_table_column = resolveComponent("el-table-column");
76631
- return openBlock(), createBlock(_component_el_table_column, mergeProps({
76632
- prop: __props.column.prop,
76633
- label: __props.column.label,
76634
- width: __props.column.width,
76635
- "min-width": __props.column.minWidth,
76636
- fixed: __props.column.fixed,
76637
- sortable: __props.column.sortable,
76638
- align: __props.column.align || "center",
76639
- "header-align": __props.column.headerAlign,
76640
- "show-overflow-tooltip": __props.column.showOverflowTooltip !== false
76641
- }, getColumnAttrs(__props.column)), createSlots({
76642
- default: withCtx(() => [
76643
- __props.column.children && __props.column.children.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.column.children, (child, index2) => {
76644
- return openBlock(), createBlock(_component_TableColumn, {
76645
- key: child.prop || `${__props.column.label}-child-${index2}`,
76646
- column: child
76647
- }, createSlots({ _: 2 }, [
76648
- renderList(_ctx.$slots, (_3, slotName) => {
76649
- return {
76650
- name: slotName,
76651
- fn: withCtx((slotData) => [
76652
- renderSlot(_ctx.$slots, slotName, mergeProps({ ref_for: true }, slotData))
76653
- ])
76654
- };
76655
- })
76656
- ]), 1032, ["column"]);
76657
- }), 128)) : createCommentVNode("", true)
76658
- ]),
76659
- _: 2
76660
- }, [
76661
- !__props.column.children || !__props.column.children.length ? {
76662
- name: "default",
76663
- fn: withCtx((scope) => [
76664
- __props.column.type === "action" ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.column.buttons, (btn, index2) => {
76665
- return openBlock(), createElementBlock(Fragment, { key: index2 }, [
76666
- btn.slot ? renderSlot(_ctx.$slots, btn.slot, {
76667
- key: 0,
76668
- row: scope.row,
76669
- $index: scope.$index
76670
- }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
76671
- isBtnShow(btn, scope.row) ? (openBlock(), createBlock(_component_el_button, {
76672
- key: 0,
76673
- type: btn.type || "primary",
76674
- size: btn.size || "small",
76675
- link: btn.link,
76676
- icon: btn.icon,
76677
- disabled: isBtnDisabled(btn, scope.row),
76678
- class: normalizeClass({
76679
- "is-disabled-custom": isBtnDisabled(btn, scope.row)
76680
- }),
76681
- onClick: withModifiers(($event) => handleButtonClick(btn, scope.row, scope.$index), ["stop"])
76682
- }, {
76683
- default: withCtx(() => [
76684
- createTextVNode(toDisplayString(btn.label), 1)
76685
- ]),
76686
- _: 2
76687
- }, 1032, ["type", "size", "link", "icon", "disabled", "class", "onClick"])) : createCommentVNode("", true)
76688
- ], 64))
76689
- ], 64);
76690
- }), 128)) : __props.column.slot ? renderSlot(_ctx.$slots, __props.column.slot, {
76691
- key: 1,
76692
- row: scope.row,
76693
- column: __props.column,
76694
- $index: scope.$index
76695
- }, () => [
76696
- createTextVNode(toDisplayString(scope.row[__props.column.prop]), 1)
76697
- ]) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
76698
- __props.column.type === "tag" ? (openBlock(), createBlock(_component_el_tag, {
76699
- key: 0,
76700
- type: getTagType(scope.row[__props.column.prop], __props.column.tagMap)
76701
- }, {
76702
- default: withCtx(() => [
76703
- createTextVNode(toDisplayString(formatValue(scope.row[__props.column.prop], __props.column)), 1)
76704
- ]),
76705
- _: 2
76706
- }, 1032, ["type"])) : __props.column.type === "image" ? (openBlock(), createBlock(_component_el_image, {
76707
- key: 1,
76708
- src: scope.row[__props.column.prop],
76709
- style: normalizeStyle({
76710
- width: __props.column.imageWidth || "50px",
76711
- height: __props.column.imageHeight || "50px"
76712
- }),
76713
- "preview-src-list": __props.column.previewList ? [scope.row[__props.column.prop]] : void 0,
76714
- fit: "cover"
76715
- }, null, 8, ["src", "style", "preview-src-list"])) : __props.column.type === "link" ? (openBlock(), createBlock(_component_el_link, {
76716
- key: 2,
76717
- type: "primary",
76718
- onClick: ($event) => handleLinkClick(scope.row, __props.column)
76719
- }, {
76720
- default: withCtx(() => [
76721
- createTextVNode(toDisplayString(formatValue(scope.row[__props.column.prop], __props.column)), 1)
76722
- ]),
76723
- _: 2
76724
- }, 1032, ["onClick"])) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
76725
- createTextVNode(toDisplayString(formatValue(scope.row[__props.column.prop], __props.column)), 1)
76726
- ], 64))
76727
- ], 64))
76728
- ]),
76729
- key: "0"
76730
- } : void 0
76731
- ]), 1040, ["prop", "label", "width", "min-width", "fixed", "sortable", "align", "header-align", "show-overflow-tooltip"]);
76732
- };
76759
+ if (column.type === "image") {
76760
+ return renderImage(scope, column);
76761
+ }
76762
+ if (column.type === "link") {
76763
+ return renderLink(scope, column);
76764
+ }
76765
+ const cellValue = getCellValue(scope.row, column);
76766
+ if (typeof column.formatter === "function") {
76767
+ return column.formatter(scope.row, column, cellValue);
76768
+ }
76769
+ if (column.enum) {
76770
+ return resolveEnumText(column, cellValue);
76771
+ }
76772
+ return cellValue === void 0 || cellValue === null || cellValue === "" ? "-" : cellValue;
76773
+ }
76774
+ function buildChildVnodes(children) {
76775
+ return children.map((child, index2) => {
76776
+ const childHasChildren = Array.isArray(child.children) && child.children.length > 0;
76777
+ const childKey = child.prop || child.label || `col_${index2}`;
76778
+ const childProps = { key: childKey, ...getColumnProps(child) };
76779
+ if (childHasChildren) {
76780
+ return h$2(ElTableColumn, childProps, buildChildVnodes(child.children));
76781
+ }
76782
+ return h$2(ElTableColumn, childProps, {
76783
+ default: (scope) => {
76784
+ if (!scope) return null;
76785
+ return renderDefaultCell(scope, child);
76786
+ }
76787
+ });
76788
+ });
76789
+ }
76790
+ function renderColumn(column) {
76791
+ const hasChildren = Array.isArray(column.children) && column.children.length > 0;
76792
+ const headerRenderer = getRenderer(column.headerSlot);
76793
+ if (hasChildren) {
76794
+ return h$2(ElTableColumn, getColumnProps(column), buildChildVnodes(column.children));
76795
+ }
76796
+ const slots = {
76797
+ default: (scope) => {
76798
+ if (!scope) return null;
76799
+ return renderDefaultCell(scope, column);
76800
+ }
76801
+ };
76802
+ if (headerRenderer) slots.header = headerRenderer;
76803
+ return h$2(ElTableColumn, getColumnProps(column), slots);
76804
+ }
76805
+ return () => renderColumn(props.column);
76733
76806
  }
76734
- });
76807
+ };
76808
+ const DEFAULT_PAGINATION = {
76809
+ total: 0,
76810
+ currentPage: 1,
76811
+ pageSize: 10
76812
+ };
76813
+ function createPagination(customParams = {}) {
76814
+ return {
76815
+ ...DEFAULT_PAGINATION,
76816
+ ...customParams
76817
+ };
76818
+ }
76735
76819
  const _hoisted_1$1 = { class: "page-table" };
76736
- const _hoisted_2$1 = {
76820
+ const _hoisted_2 = {
76737
76821
  key: 0,
76738
- class: "table-header"
76822
+ class: "page-table__header"
76739
76823
  };
76740
- const _hoisted_3$1 = { class: "header-left" };
76741
- const _hoisted_4 = { class: "header-right" };
76824
+ const _hoisted_3 = { class: "page-table__actions" };
76825
+ const _hoisted_4 = { class: "page-table__main" };
76742
76826
  const _hoisted_5 = {
76743
76827
  key: 1,
76744
- class: "pagination-wrapper"
76828
+ class: "page-table__empty"
76829
+ };
76830
+ const _hoisted_6 = {
76831
+ key: 1,
76832
+ class: "page-table__pagination"
76745
76833
  };
76746
- const _sfc_main$1 = {
76834
+ const _sfc_main$1 = /* @__PURE__ */ Object.assign({
76835
+ name: "NsTable",
76836
+ inheritAttrs: false
76837
+ }, {
76747
76838
  __name: "PageTable",
76748
76839
  props: {
76749
- // 表格数据
76750
76840
  tableData: {
76751
76841
  type: Array,
76752
76842
  default: () => []
76753
76843
  },
76754
- // 列配置
76755
76844
  columns: {
76756
76845
  type: Array,
76757
76846
  default: () => []
76758
76847
  },
76759
- // 操作按钮配置
76760
76848
  actionButtons: {
76761
76849
  type: Array,
76762
76850
  default: () => []
76763
76851
  },
76764
- // 操作列宽度
76765
- actionColumnWidth: {
76766
- type: [String, Number],
76767
- default: 200
76768
- },
76769
- // 操作列固定
76770
- actionFixed: {
76771
- type: [String, Boolean],
76772
- default: "right"
76773
- },
76774
- // 操作列标签
76775
- actionColumnLabel: {
76776
- type: String,
76777
- default: "操作"
76778
- },
76779
- // 操作列对齐方式
76780
- actionColumnAlign: {
76781
- type: String,
76782
- default: "left"
76783
- },
76784
- // 操作列表头对齐方式
76785
- actionColumnHeaderAlign: {
76786
- type: String,
76787
- default: "center"
76788
- },
76789
- // 操作列最小宽度
76790
- actionColumnMinWidth: {
76791
- type: [String, Number],
76792
- default: void 0
76793
- },
76794
- // 是否显示新增按钮
76795
76852
  showAddButton: {
76796
76853
  type: Boolean,
76797
76854
  default: true
76798
76855
  },
76799
- // 新增按钮文本
76800
76856
  addButtonText: {
76801
76857
  type: String,
76802
76858
  default: "新增"
76803
76859
  },
76804
- // 是否显示表头工具栏
76805
76860
  showHeaderToolbar: {
76806
76861
  type: Boolean,
76807
76862
  default: true
76808
76863
  },
76809
- // 是否显示选择列
76810
76864
  showSelection: {
76811
76865
  type: Boolean,
76812
76866
  default: false
76813
76867
  },
76814
- // 是否显示序号列
76815
76868
  showIndex: {
76816
76869
  type: Boolean,
76817
76870
  default: false
76818
76871
  },
76819
- // 是否显示边框
76872
+ indexWidth: {
76873
+ type: [String, Number],
76874
+ default: 60
76875
+ },
76876
+ indexAlign: {
76877
+ type: String,
76878
+ default: ""
76879
+ },
76880
+ indexHeaderAlign: {
76881
+ type: String,
76882
+ default: ""
76883
+ },
76820
76884
  border: {
76821
76885
  type: Boolean,
76822
76886
  default: true
76823
76887
  },
76824
- // 是否显示斑马纹
76825
76888
  stripe: {
76826
76889
  type: Boolean,
76827
76890
  default: false
76828
76891
  },
76829
- // 表格高度
76830
76892
  height: {
76831
76893
  type: [String, Number],
76832
76894
  default: void 0
76833
76895
  },
76834
- // 表格最大高度
76835
76896
  maxHeight: {
76836
76897
  type: [String, Number],
76837
76898
  default: void 0
76838
76899
  },
76839
- // 行数据的 Key
76900
+ autoHeight: {
76901
+ type: Boolean,
76902
+ default: true
76903
+ },
76840
76904
  rowKey: {
76841
76905
  type: [String, Function],
76842
76906
  default: void 0
76843
76907
  },
76844
- // 是否默认展开所有行
76845
76908
  defaultExpandAll: {
76846
76909
  type: Boolean,
76847
76910
  default: false
76848
76911
  },
76849
- // 是否高亮当前行
76850
76912
  highlightCurrentRow: {
76851
76913
  type: Boolean,
76852
76914
  default: false
76853
76915
  },
76854
- // 是否显示加载状态
76855
76916
  loading: {
76856
76917
  type: Boolean,
76857
76918
  default: false
76858
76919
  },
76859
- // 是否显示分页
76860
76920
  showPagination: {
76861
76921
  type: Boolean,
76862
76922
  default: true
76863
76923
  },
76864
- // 总条数
76865
76924
  total: {
76866
76925
  type: Number,
76867
76926
  default: 0
76868
76927
  },
76869
- // 当前页(可选,如果传入则使用外部值,否则使用内部管理)
76870
76928
  currentPage: {
76871
76929
  type: Number,
76872
76930
  default: null
76873
76931
  },
76874
- // 每页条数(可选,如果传入则使用外部值,否则使用内部管理)
76875
76932
  pageSize: {
76876
76933
  type: Number,
76877
76934
  default: null
76878
76935
  },
76879
- // 每页条数选项
76936
+ useDefaultPage: {
76937
+ type: Boolean,
76938
+ default: true
76939
+ },
76880
76940
  pageSizes: {
76881
76941
  type: Array,
76882
76942
  default: () => [10, 20, 50, 100]
76883
76943
  },
76884
- // 分页布局
76885
76944
  paginationLayout: {
76886
76945
  type: String,
76887
76946
  default: "total, sizes, prev, pager, next, jumper"
76888
76947
  },
76889
- // 分页参数自定义 key 名称
76890
76948
  pageNumberKey: {
76891
76949
  type: String,
76892
76950
  default: "currentPage"
@@ -76898,6 +76956,10 @@ const _sfc_main$1 = {
76898
76956
  pageTotalKey: {
76899
76957
  type: String,
76900
76958
  default: "total"
76959
+ },
76960
+ slotRenderers: {
76961
+ type: Object,
76962
+ default: () => ({})
76901
76963
  }
76902
76964
  },
76903
76965
  emits: [
@@ -76912,432 +76974,369 @@ const _sfc_main$1 = {
76912
76974
  "update:pageSize"
76913
76975
  ],
76914
76976
  setup(__props, { expose: __expose, emit: __emit }) {
76977
+ const RESERVED_LISTENERS = ["add", "selection-change", "sort-change", "row-click", "size-change", "current-change", "link-click"];
76915
76978
  const props = __props;
76916
76979
  const emit = __emit;
76917
76980
  const attrs = useAttrs();
76918
- const definedProps = [
76919
- "tableData",
76920
- "columns",
76921
- "actionButtons",
76922
- "actionColumnWidth",
76923
- "actionFixed",
76924
- "actionColumnLabel",
76925
- "actionColumnAlign",
76926
- "actionColumnHeaderAlign",
76927
- "actionColumnMinWidth",
76928
- "showAddButton",
76929
- "addButtonText",
76930
- "showHeaderToolbar",
76931
- "showSelection",
76932
- "showIndex",
76933
- "border",
76934
- "stripe",
76935
- "height",
76936
- "maxHeight",
76937
- "rowKey",
76938
- "defaultExpandAll",
76939
- "highlightCurrentRow",
76940
- "loading",
76941
- "showPagination",
76942
- "total",
76943
- "currentPage",
76944
- "pageSize",
76945
- "pageSizes",
76946
- "paginationLayout",
76947
- "pageNumberKey",
76948
- "pageSizeKey",
76949
- "pageTotalKey"
76950
- ];
76951
- const definedEvents = [
76952
- "add",
76953
- "selection-change",
76954
- "sort-change",
76955
- "row-click",
76956
- "size-change",
76957
- "current-change",
76958
- "link-click",
76959
- "update:currentPage",
76960
- "update:pageSize"
76961
- ];
76962
- const toKebabCase = (str) => {
76963
- return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
76964
- };
76965
- const toEventName = (eventName) => {
76966
- return "on" + eventName.replace(/-([a-z])/g, (_3, letter) => letter.toUpperCase());
76967
- };
76968
- const tableAttrs = computed(() => {
76969
- const result = {};
76970
- for (const key in attrs) {
76971
- const isDefinedProp = definedProps.some(
76972
- (prop) => key === prop || key === toKebabCase(prop)
76973
- );
76974
- const isDefinedEvent = definedEvents.some((event) => {
76975
- const eventKey = toEventName(event);
76976
- return key === eventKey;
76981
+ const tableRef = ref$1(null);
76982
+ const internalPagination = reactive(createPagination());
76983
+ const currentPageModel = computed(() => {
76984
+ return props.currentPage === null ? internalPagination.currentPage : props.currentPage;
76985
+ });
76986
+ const pageSizeModel = computed(() => {
76987
+ return props.pageSize === null ? internalPagination.pageSize : props.pageSize;
76988
+ });
76989
+ const mergedAttrs = computed(() => attrs || {});
76990
+ const mergedListeners = computed(() => {
76991
+ const listeners = {};
76992
+ if (attrs) {
76993
+ Object.keys(attrs).forEach((key) => {
76994
+ if (key.startsWith("on") && key.length > 2) {
76995
+ const eventName = key.charAt(2).toLowerCase() + key.slice(3);
76996
+ if (!RESERVED_LISTENERS.includes(eventName)) {
76997
+ listeners[key] = attrs[key];
76998
+ }
76999
+ }
76977
77000
  });
76978
- if (!isDefinedProp && !isDefinedEvent) {
76979
- result[key] = attrs[key];
76980
- }
76981
77001
  }
76982
- return result;
77002
+ return listeners;
77003
+ });
77004
+ const resolvedHeight = computed(() => {
77005
+ if (props.height !== void 0) {
77006
+ return props.height;
77007
+ }
77008
+ if (props.autoHeight && props.maxHeight === void 0) {
77009
+ return "100%";
77010
+ }
77011
+ return void 0;
77012
+ });
77013
+ const resolvedMaxHeight = computed(() => {
77014
+ if (props.maxHeight !== void 0) {
77015
+ return props.maxHeight;
77016
+ }
77017
+ return void 0;
76983
77018
  });
76984
- const tableRef = ref$1(null);
76985
- const internalPagination = reactive(createPagination());
76986
77019
  watch(
76987
77020
  () => props.currentPage,
76988
- (newVal) => {
76989
- if (newVal !== null && newVal !== internalPagination.currentPage) {
76990
- internalPagination.currentPage = newVal;
77021
+ (value) => {
77022
+ if (value !== null) {
77023
+ internalPagination.currentPage = value;
76991
77024
  }
76992
77025
  },
76993
77026
  { immediate: true }
76994
77027
  );
76995
77028
  watch(
76996
77029
  () => props.pageSize,
76997
- (newVal) => {
76998
- if (newVal !== null && newVal !== internalPagination.pageSize) {
76999
- internalPagination.pageSize = newVal;
77030
+ (value) => {
77031
+ if (value !== null) {
77032
+ internalPagination.pageSize = value;
77000
77033
  }
77001
77034
  },
77002
77035
  { immediate: true }
77003
77036
  );
77004
- const currentPageModel = computed({
77005
- get: () => props.currentPage !== null ? props.currentPage : internalPagination.currentPage,
77006
- set: (val) => {
77007
- internalPagination.currentPage = val;
77008
- emit("update:currentPage", val);
77009
- }
77010
- });
77011
- const pageSizeModel = computed({
77012
- get: () => props.pageSize !== null ? props.pageSize : internalPagination.pageSize,
77013
- set: (val) => {
77014
- internalPagination.pageSize = val;
77015
- emit("update:pageSize", val);
77016
- }
77017
- });
77018
- const getNumIndex = (index2) => {
77019
- return (Number(currentPageModel.value) - 1) * Number(pageSizeModel.value) + index2 + 1;
77020
- };
77021
- const handleAdd = () => {
77037
+ function handleAdd() {
77022
77038
  emit("add");
77023
- };
77024
- const handleSelectionChange = (selection) => {
77039
+ }
77040
+ function handleSelectionChange(selection) {
77025
77041
  emit("selection-change", selection);
77026
- };
77027
- const handleSortChange2 = (sort) => {
77028
- emit("sort-change", sort);
77029
- };
77030
- const handleRowClick = (row, column, event) => {
77042
+ }
77043
+ function handleSortChange2(sort2) {
77044
+ emit("sort-change", sort2);
77045
+ }
77046
+ function handleRowClick(row, column, event) {
77031
77047
  emit("row-click", row, column, event);
77032
- };
77033
- const handleSizeChange = (size) => {
77048
+ }
77049
+ function handleSizeChange(size) {
77050
+ internalPagination.pageSize = size;
77051
+ if (!props.useDefaultPage) {
77052
+ emit("update:pageSize", size);
77053
+ }
77034
77054
  emit("size-change", size);
77035
- };
77036
- const handleCurrentChange = (page) => {
77055
+ }
77056
+ function handleCurrentChange(page) {
77057
+ internalPagination.currentPage = page;
77058
+ if (!props.useDefaultPage) {
77059
+ emit("update:currentPage", page);
77060
+ }
77037
77061
  emit("current-change", page);
77038
- };
77039
- const handleLinkClick = (row, column) => {
77062
+ }
77063
+ function handleLinkClick(row, column) {
77040
77064
  emit("link-click", row, column);
77041
- };
77042
- __expose({
77043
- tableRef,
77044
- // 选择列相关方法
77045
- clearSelection: () => {
77046
- var _a3, _b;
77047
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77048
- },
77049
- toggleRowSelection: (row, selected) => {
77050
- var _a3, _b;
77051
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleRowSelection) == null ? void 0 : _b.call(_a3, row, selected);
77052
- },
77053
- toggleAllSelection: () => {
77054
- var _a3, _b;
77055
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleAllSelection) == null ? void 0 : _b.call(_a3);
77056
- },
77057
- setCurrentRow: (row) => {
77058
- var _a3, _b;
77059
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.setCurrentRow) == null ? void 0 : _b.call(_a3, row);
77060
- },
77061
- // 获取选择数据
77062
- getSelectionRows: () => {
77063
- var _a3, _b;
77064
- return ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77065
- },
77066
- getSelectionKeys: () => {
77067
- var _a3, _b;
77068
- const rows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77069
- if (props.rowKey) {
77070
- if (typeof props.rowKey === "function") {
77071
- return rows.map((row) => props.rowKey(row));
77072
- } else {
77073
- return rows.map((row) => row[props.rowKey]);
77074
- }
77075
- }
77065
+ }
77066
+ function getIndex(index2) {
77067
+ if (!props.showPagination) {
77068
+ return index2 + 1;
77069
+ }
77070
+ const currentPage = Number(currentPageModel.value || 1);
77071
+ const pageSize = Number(pageSizeModel.value || 10);
77072
+ return (currentPage - 1) * pageSize + index2 + 1;
77073
+ }
77074
+ function getSelectionRows() {
77075
+ return tableRef.value && tableRef.value.selection ? tableRef.value.selection : [];
77076
+ }
77077
+ function getSelectionKeys() {
77078
+ const rows = getSelectionRows();
77079
+ if (!props.rowKey) {
77076
77080
  return rows;
77077
- },
77078
- // 设置选择数据
77079
- setSelectionRows: (rows) => {
77080
- var _a3, _b;
77081
- if (!tableRef.value) return;
77082
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77083
- rows.forEach((row) => {
77084
- var _a4, _b2;
77085
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77086
- });
77087
- },
77088
- setSelectionKeys: (keys2) => {
77089
- var _a3, _b;
77090
- if (!tableRef.value || !props.rowKey) return;
77091
- const tableData = props.tableData;
77092
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77093
- keys2.forEach((key) => {
77094
- var _a4, _b2;
77095
- const row = tableData.find((row2) => {
77096
- if (typeof props.rowKey === "function") {
77097
- return props.rowKey(row2) === key;
77098
- } else {
77099
- return row2[props.rowKey] === key;
77100
- }
77101
- });
77102
- if (row) {
77103
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77104
- }
77105
- });
77106
- },
77107
- // 判断是否选中
77108
- isRowSelected: (row) => {
77109
- var _a3, _b;
77110
- const selectedRows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77111
- return selectedRows.includes(row);
77112
- },
77113
- isKeySelected: (key) => {
77114
- var _a3, _b;
77115
- if (!props.rowKey) return false;
77116
- const selectedRows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77117
- return selectedRows.some((row) => {
77118
- if (typeof props.rowKey === "function") {
77119
- return props.rowKey(row) === key;
77120
- } else {
77121
- return row[props.rowKey] === key;
77122
- }
77123
- });
77124
- },
77125
- // 全选/取消全选
77126
- selectAll: () => {
77127
- var _a3, _b;
77128
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleAllSelection) == null ? void 0 : _b.call(_a3);
77129
- },
77130
- clearAllSelection: () => {
77131
- var _a3, _b;
77132
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77133
- },
77134
- // 表格操作相关方法
77135
- clearSort: () => {
77136
- var _a3, _b;
77137
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSort) == null ? void 0 : _b.call(_a3);
77138
- },
77139
- clearFilter: (columnKey) => {
77140
- var _a3, _b;
77141
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearFilter) == null ? void 0 : _b.call(_a3, columnKey);
77142
- },
77143
- doLayout: () => {
77144
- var _a3, _b;
77145
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.doLayout) == null ? void 0 : _b.call(_a3);
77146
- },
77147
- sort: (prop, order) => {
77148
- var _a3, _b;
77149
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.sort) == null ? void 0 : _b.call(_a3, prop, order);
77150
- },
77151
- // 分页控制方法
77152
- resetPage: () => {
77153
- internalPagination.currentPage = 1;
77081
+ }
77082
+ return rows.map((row) => typeof props.rowKey === "function" ? props.rowKey(row) : row[props.rowKey]);
77083
+ }
77084
+ function setSelectionRows(rows) {
77085
+ if (!tableRef.value) return;
77086
+ tableRef.value.clearSelection();
77087
+ (rows || []).forEach((row) => {
77088
+ tableRef.value.toggleRowSelection(row, true);
77089
+ });
77090
+ }
77091
+ function setSelectionKeys(keys2) {
77092
+ if (!tableRef.value || !props.rowKey) return;
77093
+ tableRef.value.clearSelection();
77094
+ (keys2 || []).forEach((key) => {
77095
+ const row = (props.tableData || []).find((item) => (typeof props.rowKey === "function" ? props.rowKey(item) : item[props.rowKey]) === key);
77096
+ if (row) {
77097
+ tableRef.value.toggleRowSelection(row, true);
77098
+ }
77099
+ });
77100
+ }
77101
+ function isRowSelected(row) {
77102
+ return getSelectionRows().includes(row);
77103
+ }
77104
+ function isKeySelected(key) {
77105
+ return getSelectionKeys().includes(key);
77106
+ }
77107
+ function clearSelection() {
77108
+ if (tableRef.value) {
77109
+ tableRef.value.clearSelection();
77110
+ }
77111
+ }
77112
+ function toggleRowSelection(row, selected) {
77113
+ if (tableRef.value) {
77114
+ tableRef.value.toggleRowSelection(row, selected);
77115
+ }
77116
+ }
77117
+ function toggleAllSelection() {
77118
+ if (tableRef.value) {
77119
+ tableRef.value.toggleAllSelection();
77120
+ }
77121
+ }
77122
+ function selectAll() {
77123
+ toggleAllSelection();
77124
+ }
77125
+ function clearAllSelection() {
77126
+ clearSelection();
77127
+ }
77128
+ function clearSort() {
77129
+ tableRef.value && tableRef.value.clearSort && tableRef.value.clearSort();
77130
+ }
77131
+ function clearFilter(columnKey) {
77132
+ tableRef.value && tableRef.value.clearFilter && tableRef.value.clearFilter(columnKey);
77133
+ }
77134
+ function doLayout() {
77135
+ tableRef.value && tableRef.value.doLayout && tableRef.value.doLayout();
77136
+ }
77137
+ function sort(prop, order) {
77138
+ tableRef.value && tableRef.value.sort && tableRef.value.sort(prop, order);
77139
+ }
77140
+ function resetPage() {
77141
+ internalPagination.currentPage = 1;
77142
+ if (!props.useDefaultPage) {
77154
77143
  emit("update:currentPage", 1);
77155
- },
77156
- setPage: (page) => {
77157
- internalPagination.currentPage = page;
77144
+ }
77145
+ }
77146
+ function setPage(page) {
77147
+ internalPagination.currentPage = page;
77148
+ if (!props.useDefaultPage) {
77158
77149
  emit("update:currentPage", page);
77159
- },
77160
- setPageSize: (size) => {
77161
- internalPagination.pageSize = size;
77150
+ }
77151
+ }
77152
+ function setPageSize(size) {
77153
+ internalPagination.pageSize = size;
77154
+ if (!props.useDefaultPage) {
77162
77155
  emit("update:pageSize", size);
77163
- },
77164
- getPagination: () => ({
77156
+ }
77157
+ }
77158
+ function getPagination() {
77159
+ return {
77165
77160
  [props.pageTotalKey]: props.total,
77166
77161
  [props.pageNumberKey]: currentPageModel.value,
77167
77162
  [props.pageSizeKey]: pageSizeModel.value
77168
- }),
77169
- setPagination: (pagination) => {
77170
- if (pagination.currentPage !== void 0) {
77171
- internalPagination.currentPage = pagination.currentPage;
77172
- emit("update:currentPage", pagination.currentPage);
77173
- }
77174
- if (pagination.pageSize !== void 0) {
77175
- internalPagination.pageSize = pagination.pageSize;
77176
- emit("update:pageSize", pagination.pageSize);
77177
- }
77163
+ };
77164
+ }
77165
+ function setPagination(pagination) {
77166
+ if (pagination.currentPage !== void 0) {
77167
+ setPage(pagination.currentPage);
77178
77168
  }
77169
+ if (pagination.pageSize !== void 0) {
77170
+ setPageSize(pagination.pageSize);
77171
+ }
77172
+ }
77173
+ __expose({
77174
+ tableRef,
77175
+ getSelectionRows,
77176
+ getSelectionKeys,
77177
+ setSelectionRows,
77178
+ setSelectionKeys,
77179
+ isRowSelected,
77180
+ isKeySelected,
77181
+ clearSelection,
77182
+ toggleRowSelection,
77183
+ toggleAllSelection,
77184
+ selectAll,
77185
+ clearAllSelection,
77186
+ clearSort,
77187
+ clearFilter,
77188
+ doLayout,
77189
+ sort,
77190
+ resetPage,
77191
+ setPage,
77192
+ setPageSize,
77193
+ getPagination,
77194
+ setPagination
77179
77195
  });
77180
77196
  return (_ctx, _cache) => {
77181
77197
  const _component_el_button = resolveComponent("el-button");
77182
77198
  const _component_el_table_column = resolveComponent("el-table-column");
77183
- const _component_el_empty = resolveComponent("el-empty");
77184
77199
  const _component_el_table = resolveComponent("el-table");
77185
77200
  const _component_el_pagination = resolveComponent("el-pagination");
77186
77201
  const _directive_loading = resolveDirective("loading");
77187
77202
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
77188
- renderSlot(_ctx.$slots, "page-content", {}, () => [
77189
- __props.showHeaderToolbar ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
77190
- createElementVNode("div", _hoisted_3$1, [
77191
- renderSlot(_ctx.$slots, "header-left", {}, void 0, true)
77192
- ]),
77193
- createElementVNode("div", _hoisted_4, [
77194
- renderSlot(_ctx.$slots, "header-right", {}, () => [
77195
- __props.showAddButton ? (openBlock(), createBlock(_component_el_button, {
77196
- key: 0,
77197
- type: "primary",
77198
- icon: unref(plus_default),
77199
- onClick: handleAdd
77200
- }, {
77201
- default: withCtx(() => [
77202
- createTextVNode(toDisplayString(__props.addButtonText), 1)
77203
- ]),
77204
- _: 1
77205
- }, 8, ["icon"])) : createCommentVNode("", true)
77206
- ], true)
77207
- ])
77208
- ])) : createCommentVNode("", true),
77203
+ __props.showHeaderToolbar ? (openBlock(), createElementBlock("div", _hoisted_2, [
77204
+ createVNode(unref(SlotRenderer), {
77205
+ renderer: __props.slotRenderers["header-left"],
77206
+ scope: { tableData: __props.tableData }
77207
+ }, null, 8, ["renderer", "scope"]),
77208
+ createElementVNode("div", _hoisted_3, [
77209
+ createVNode(unref(SlotRenderer), {
77210
+ renderer: __props.slotRenderers["header-actions"],
77211
+ scope: { tableData: __props.tableData }
77212
+ }, null, 8, ["renderer", "scope"]),
77213
+ __props.showAddButton && !__props.slotRenderers["header-actions"] ? (openBlock(), createBlock(_component_el_button, {
77214
+ key: 0,
77215
+ type: "primary",
77216
+ size: "small",
77217
+ onClick: handleAdd
77218
+ }, {
77219
+ default: withCtx(() => [
77220
+ createTextVNode(toDisplayString(__props.addButtonText), 1)
77221
+ ]),
77222
+ _: 1
77223
+ })) : createCommentVNode("", true)
77224
+ ])
77225
+ ])) : createCommentVNode("", true),
77226
+ createElementVNode("div", _hoisted_4, [
77209
77227
  withDirectives((openBlock(), createBlock(_component_el_table, mergeProps({
77210
77228
  ref_key: "tableRef",
77211
- ref: tableRef
77212
- }, tableAttrs.value, {
77229
+ ref: tableRef,
77213
77230
  data: __props.tableData,
77214
77231
  border: __props.border,
77215
77232
  stripe: __props.stripe,
77216
- height: __props.height,
77217
- "max-height": __props.maxHeight,
77233
+ height: resolvedHeight.value,
77234
+ "max-height": resolvedMaxHeight.value,
77218
77235
  "row-key": __props.rowKey,
77219
77236
  "default-expand-all": __props.defaultExpandAll,
77220
77237
  "highlight-current-row": __props.highlightCurrentRow,
77238
+ class: ["page-table__table", { "page-table__table--no-border": !__props.border }]
77239
+ }, mergedAttrs.value, toHandlers(mergedListeners.value), {
77221
77240
  onSelectionChange: handleSelectionChange,
77222
77241
  onSortChange: handleSortChange2,
77223
77242
  onRowClick: handleRowClick
77224
77243
  }), {
77225
77244
  empty: withCtx(() => [
77226
- renderSlot(_ctx.$slots, "empty", {}, () => [
77227
- createVNode(_component_el_empty, { description: "暂无数据" })
77228
- ], true)
77245
+ __props.slotRenderers.empty ? (openBlock(), createBlock(unref(SlotRenderer), {
77246
+ key: 0,
77247
+ renderer: __props.slotRenderers.empty,
77248
+ scope: { tableData: __props.tableData }
77249
+ }, null, 8, ["renderer", "scope"])) : (openBlock(), createElementBlock("div", _hoisted_5, "暂无数据"))
77229
77250
  ]),
77230
77251
  default: withCtx(() => [
77231
77252
  __props.showSelection ? (openBlock(), createBlock(_component_el_table_column, {
77232
77253
  key: 0,
77233
77254
  type: "selection",
77234
77255
  width: "55",
77235
- align: "center",
77236
77256
  "reserve-selection": !!__props.rowKey
77237
77257
  }, null, 8, ["reserve-selection"])) : createCommentVNode("", true),
77238
77258
  __props.showIndex ? (openBlock(), createBlock(_component_el_table_column, {
77239
77259
  key: 1,
77240
77260
  type: "index",
77241
77261
  label: "序号",
77242
- width: "60",
77243
- index: getNumIndex,
77244
- align: "center"
77245
- })) : createCommentVNode("", true),
77246
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
77247
- return openBlock(), createBlock(_sfc_main$2, {
77248
- key: column.prop || column.type || column.label,
77262
+ width: __props.indexWidth,
77263
+ index: getIndex,
77264
+ align: __props.indexAlign,
77265
+ "header-align": __props.indexHeaderAlign || __props.indexAlign
77266
+ }, null, 8, ["width", "align", "header-align"])) : createCommentVNode("", true),
77267
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column, index2) => {
77268
+ return openBlock(), createBlock(unref(TableColumn), {
77269
+ key: column.prop || column.label || index2,
77249
77270
  column,
77271
+ "slot-renderers": __props.slotRenderers,
77250
77272
  onLinkClick: handleLinkClick
77251
- }, createSlots({ _: 2 }, [
77252
- renderList(_ctx.$slots, (_3, slotName) => {
77253
- return {
77254
- name: slotName,
77255
- fn: withCtx((slotData) => [
77256
- renderSlot(_ctx.$slots, slotName, mergeProps({ ref_for: true }, slotData), void 0, true)
77257
- ])
77258
- };
77259
- })
77260
- ]), 1032, ["column"]);
77273
+ }, null, 8, ["column", "slot-renderers"]);
77261
77274
  }), 128))
77262
77275
  ]),
77263
- _: 3
77264
- }, 16, ["data", "border", "stripe", "height", "max-height", "row-key", "default-expand-all", "highlight-current-row"])), [
77276
+ _: 1
77277
+ }, 16, ["data", "border", "stripe", "height", "max-height", "row-key", "default-expand-all", "highlight-current-row", "class"])), [
77265
77278
  [_directive_loading, __props.loading]
77266
- ]),
77267
- __props.showPagination ? (openBlock(), createElementBlock("div", _hoisted_5, [
77268
- createVNode(_component_el_pagination, {
77269
- "current-page": currentPageModel.value,
77270
- "onUpdate:currentPage": _cache[0] || (_cache[0] = ($event) => currentPageModel.value = $event),
77271
- "page-size": pageSizeModel.value,
77272
- "onUpdate:pageSize": _cache[1] || (_cache[1] = ($event) => pageSizeModel.value = $event),
77273
- "page-sizes": __props.pageSizes,
77274
- total: __props.total,
77275
- layout: __props.paginationLayout,
77276
- onSizeChange: handleSizeChange,
77277
- onCurrentChange: handleCurrentChange
77278
- }, null, 8, ["current-page", "page-size", "page-sizes", "total", "layout"])
77279
- ])) : createCommentVNode("", true)
77280
- ], true)
77279
+ ])
77280
+ ]),
77281
+ __props.showPagination ? (openBlock(), createElementBlock("div", _hoisted_6, [
77282
+ createVNode(_component_el_pagination, {
77283
+ background: "",
77284
+ "current-page": currentPageModel.value,
77285
+ "page-size": pageSizeModel.value,
77286
+ "page-sizes": __props.pageSizes,
77287
+ total: __props.total,
77288
+ layout: __props.paginationLayout,
77289
+ onSizeChange: handleSizeChange,
77290
+ onCurrentChange: handleCurrentChange
77291
+ }, null, 8, ["current-page", "page-size", "page-sizes", "total", "layout"])
77292
+ ])) : createCommentVNode("", true)
77281
77293
  ]);
77282
77294
  };
77283
77295
  }
77284
- };
77285
- const NsTable = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-629ce96f"]]);
77296
+ });
77297
+ const NsTable = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-52972a74"]]);
77286
77298
  const _hoisted_1 = { class: "page-container" };
77287
- const _hoisted_2 = {
77288
- key: 0,
77289
- class: "search-wrapper"
77290
- };
77291
- const _hoisted_3 = { class: "table-wrapper" };
77292
- const _sfc_main = {
77299
+ const _sfc_main = /* @__PURE__ */ Object.assign({
77300
+ name: "NsTableContainer"
77301
+ }, {
77293
77302
  __name: "PageContainer",
77294
77303
  props: {
77295
- // 是否显示搜索区域
77296
77304
  showSearch: {
77297
77305
  type: Boolean,
77298
77306
  default: true
77299
77307
  },
77300
- // 外部注入的搜索参数(用于特殊情况传参)
77301
77308
  externalSearchParams: {
77302
77309
  type: Object,
77303
77310
  default: () => ({})
77304
77311
  },
77305
- // 搜索项配置
77306
77312
  searchItems: {
77307
77313
  type: Array,
77308
77314
  default: () => []
77309
77315
  },
77310
- // 表格数据
77311
77316
  tableData: {
77312
77317
  type: Array,
77313
77318
  default: () => []
77314
77319
  },
77315
- // 列配置
77316
77320
  columns: {
77317
77321
  type: Array,
77318
77322
  default: () => []
77319
77323
  },
77320
- // 操作按钮配置
77321
77324
  actionButtons: {
77322
77325
  type: Array,
77323
77326
  default: () => []
77324
77327
  },
77325
- // 总条数
77326
77328
  total: {
77327
77329
  type: Number,
77328
77330
  default: 0
77329
77331
  },
77330
- // 当前页(可选,如果传入则使用外部值,否则使用内部管理)
77331
77332
  currentPage: {
77332
77333
  type: Number,
77333
77334
  default: null
77334
77335
  },
77335
- // 每页条数(可选,如果传入则使用外部值,否则使用内部管理)
77336
77336
  pageSize: {
77337
77337
  type: Number,
77338
77338
  default: null
77339
77339
  },
77340
- // 分页参数自定义 key 名称
77341
77340
  pageNumberKey: {
77342
77341
  type: String,
77343
77342
  default: "currentPage"
@@ -77350,415 +77349,411 @@ const _sfc_main = {
77350
77349
  type: String,
77351
77350
  default: "total"
77352
77351
  },
77353
- // PageSearch 的其他属性
77354
77352
  searchProps: {
77355
77353
  type: Object,
77356
77354
  default: () => ({})
77357
77355
  },
77358
- // PageTable 的其他属性
77356
+ enterTrigger: {
77357
+ type: Boolean,
77358
+ default: true
77359
+ },
77359
77360
  tableProps: {
77360
77361
  type: Object,
77361
77362
  default: () => ({})
77362
77363
  },
77363
- // 数据加载函数(用于分页变化时自动刷新数据)
77364
- loadData: {
77365
- type: Function,
77366
- default: null
77364
+ useDefaultPage: {
77365
+ type: Boolean,
77366
+ default: true
77367
77367
  }
77368
77368
  },
77369
77369
  emits: [
77370
- "update:currentPage",
77371
- "update:pageSize",
77372
77370
  "search",
77373
77371
  "reset",
77374
77372
  "add",
77375
- "size-change",
77376
- "current-change",
77377
- "page-change",
77378
77373
  "selection-change",
77379
77374
  "sort-change",
77380
77375
  "row-click",
77381
- "link-click"
77376
+ "size-change",
77377
+ "current-change",
77378
+ "page-change",
77379
+ "link-click",
77380
+ "update:currentPage",
77381
+ "update:pageSize"
77382
77382
  ],
77383
77383
  setup(__props, { expose: __expose, emit: __emit }) {
77384
77384
  const props = __props;
77385
77385
  const emit = __emit;
77386
+ useSlots();
77386
77387
  const searchRef = ref$1(null);
77387
77388
  const tableRef = ref$1(null);
77388
77389
  const internalPagination = reactive(createPagination());
77390
+ const internalSearchParams = reactive({});
77391
+ const internalSortState = reactive({ prop: "", order: "" });
77389
77392
  const pendingSelectionKeys = ref$1(/* @__PURE__ */ new Set());
77390
- watch(
77391
- () => props.currentPage,
77392
- (newVal) => {
77393
- if (newVal !== null && newVal !== internalPagination.currentPage) {
77394
- internalPagination.currentPage = newVal;
77395
- }
77396
- },
77397
- { immediate: true }
77398
- );
77399
- watch(
77400
- () => props.pageSize,
77401
- (newVal) => {
77402
- if (newVal !== null && newVal !== internalPagination.pageSize) {
77403
- internalPagination.pageSize = newVal;
77404
- }
77405
- },
77406
- { immediate: true }
77407
- );
77408
- const currentPageModel = computed({
77409
- get: () => props.currentPage !== null ? props.currentPage : internalPagination.currentPage,
77410
- set: (val) => {
77411
- internalPagination.currentPage = val;
77412
- emit("update:currentPage", val);
77413
- }
77393
+ const selectionRowMap = reactive({});
77394
+ const isSyncingSelection = ref$1(false);
77395
+ let emitSearchTimer = null;
77396
+ const currentPageModel = computed(() => {
77397
+ if (props.useDefaultPage) return internalPagination.currentPage;
77398
+ return props.currentPage === null ? internalPagination.currentPage : props.currentPage;
77414
77399
  });
77415
- const pageSizeModel = computed({
77416
- get: () => props.pageSize !== null ? props.pageSize : internalPagination.pageSize,
77417
- set: (val) => {
77418
- internalPagination.pageSize = val;
77419
- emit("update:pageSize", val);
77420
- }
77400
+ const pageSizeModel = computed(() => {
77401
+ if (props.useDefaultPage) return internalPagination.pageSize;
77402
+ return props.pageSize === null ? internalPagination.pageSize : props.pageSize;
77421
77403
  });
77422
- watch(
77423
- () => props.tableData,
77424
- () => {
77425
- var _a3;
77426
- if (pendingSelectionKeys.value.size > 0 && tableRef.value) {
77427
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77428
- if (!rowKey) return;
77429
- setTimeout(() => {
77430
- props.tableData.forEach((row) => {
77431
- var _a4, _b;
77432
- let key;
77433
- if (typeof rowKey === "function") {
77434
- key = rowKey(row);
77435
- } else {
77436
- key = row[rowKey];
77437
- }
77438
- if (pendingSelectionKeys.value.has(key)) {
77439
- (_b = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b.call(_a4, row, true);
77440
- }
77441
- });
77442
- }, 0);
77443
- }
77444
- },
77445
- { immediate: true }
77446
- );
77447
- const handleSearch = (params) => {
77448
- var _a3, _b;
77404
+ const currentRowKey = computed(() => {
77405
+ return props.tableProps && props.tableProps.rowKey;
77406
+ });
77407
+ function getRowKey(row) {
77408
+ if (!currentRowKey.value) return row;
77409
+ return typeof currentRowKey.value === "function" ? currentRowKey.value(row) : row[currentRowKey.value];
77410
+ }
77411
+ function resetSelectionState() {
77449
77412
  pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77413
+ Object.keys(selectionRowMap).forEach((key) => delete selectionRowMap[key]);
77450
77414
  if (tableRef.value) {
77451
- (_b = (_a3 = tableRef.value).clearSelection) == null ? void 0 : _b.call(_a3);
77415
+ tableRef.value.clearSelection && tableRef.value.clearSelection();
77416
+ }
77417
+ }
77418
+ function syncSelectionToCurrentPage() {
77419
+ if (!currentRowKey.value || !tableRef.value) {
77420
+ return;
77452
77421
  }
77422
+ isSyncingSelection.value = true;
77423
+ (props.tableData || []).forEach((row) => {
77424
+ const key = getRowKey(row);
77425
+ if (pendingSelectionKeys.value.has(key)) {
77426
+ selectionRowMap[key] = row;
77427
+ } else {
77428
+ delete selectionRowMap[key];
77429
+ }
77430
+ });
77431
+ const rowsToSelect = (props.tableData || []).filter(
77432
+ (row) => pendingSelectionKeys.value.has(getRowKey(row))
77433
+ );
77434
+ const elTable = tableRef.value.tableRef;
77435
+ const currentSelection = elTable ? elTable.getSelectionRows() : [];
77436
+ const currentSelectedKeys = currentSelection.map((row) => getRowKey(row));
77437
+ const toAdd = rowsToSelect.filter((row) => !currentSelectedKeys.includes(getRowKey(row)));
77438
+ const toRemove = (props.tableData || []).filter(
77439
+ (row) => !pendingSelectionKeys.value.has(getRowKey(row)) && currentSelectedKeys.includes(getRowKey(row))
77440
+ );
77441
+ toAdd.forEach((row) => {
77442
+ tableRef.value.toggleRowSelection(row, true);
77443
+ });
77444
+ toRemove.forEach((row) => {
77445
+ tableRef.value.toggleRowSelection(row, false);
77446
+ });
77447
+ nextTick(() => {
77448
+ isSyncingSelection.value = false;
77449
+ });
77450
+ }
77451
+ function handleSearch(params) {
77452
+ resetSelectionState();
77453
+ let nextParams = params || {};
77453
77454
  if (params && params._resetPage) {
77454
77455
  const { _resetPage, ...searchParams } = params;
77456
+ nextParams = searchParams;
77455
77457
  internalPagination.currentPage = 1;
77456
- emit("search", searchParams);
77457
- } else {
77458
- emit("search", params);
77459
- }
77460
- };
77461
- const handleReset = () => {
77462
- var _a3, _b;
77463
- pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77464
- if (tableRef.value) {
77465
- (_b = (_a3 = tableRef.value).clearSelection) == null ? void 0 : _b.call(_a3);
77458
+ if (!props.useDefaultPage) {
77459
+ emit("update:currentPage", 1);
77460
+ }
77466
77461
  }
77462
+ Object.keys(internalSearchParams).forEach((key) => delete internalSearchParams[key]);
77463
+ Object.assign(internalSearchParams, { ...nextParams });
77464
+ emitSearch();
77465
+ }
77466
+ function handleReset() {
77467
+ resetSelectionState();
77467
77468
  emit("reset");
77468
- };
77469
- const handleAdd = () => {
77469
+ }
77470
+ function handleAdd() {
77470
77471
  emit("add");
77471
- };
77472
- const handleSizeChange = (size) => {
77472
+ }
77473
+ function handleSizeChange(size) {
77474
+ internalPagination.pageSize = size;
77475
+ const maxPage = Math.max(1, Math.ceil((props.total || 0) / size));
77476
+ if (internalPagination.currentPage > maxPage) {
77477
+ internalPagination.currentPage = maxPage;
77478
+ }
77479
+ if (!props.useDefaultPage) {
77480
+ emit("update:pageSize", size);
77481
+ emit("update:currentPage", internalPagination.currentPage);
77482
+ }
77473
77483
  emit("size-change", size);
77474
77484
  emit("page-change", {
77475
77485
  currentPage: internalPagination.currentPage,
77476
77486
  pageSize: size
77477
77487
  });
77478
- if (props.loadData) {
77479
- props.loadData();
77488
+ emitSearch();
77489
+ }
77490
+ function handleCurrentChange(page) {
77491
+ if (internalPagination.currentPage === page) {
77492
+ return;
77493
+ }
77494
+ internalPagination.currentPage = page;
77495
+ if (!props.useDefaultPage) {
77496
+ emit("update:currentPage", page);
77480
77497
  }
77481
- };
77482
- const handleCurrentChange = (page) => {
77483
77498
  emit("current-change", page);
77484
77499
  emit("page-change", {
77485
77500
  currentPage: page,
77486
- pageSize: internalPagination.pageSize
77501
+ pageSize: pageSizeModel.value
77487
77502
  });
77488
- if (props.loadData) {
77489
- props.loadData();
77503
+ emitSearch();
77504
+ }
77505
+ function handleSelectionChange(selection) {
77506
+ if (isSyncingSelection.value) {
77507
+ return;
77490
77508
  }
77491
- };
77492
- const handleSelectionChange = (selection) => {
77493
- emit("selection-change", selection);
77494
- };
77495
- const handleSortChange2 = (sort) => {
77509
+ if (!currentRowKey.value) {
77510
+ emit("selection-change", selection);
77511
+ return;
77512
+ }
77513
+ const currentPageKeys = (props.tableData || []).map((row) => getRowKey(row));
77514
+ currentPageKeys.forEach((key) => {
77515
+ pendingSelectionKeys.value.delete(key);
77516
+ delete selectionRowMap[key];
77517
+ });
77518
+ (selection || []).forEach((row) => {
77519
+ const key = getRowKey(row);
77520
+ pendingSelectionKeys.value.add(key);
77521
+ selectionRowMap[key] = row;
77522
+ });
77523
+ emit("selection-change", Object.values(selectionRowMap));
77524
+ }
77525
+ function handleSortChange2(sort) {
77526
+ internalSortState.prop = sort ? sort.prop : "";
77527
+ internalSortState.order = sort ? sort.order : "";
77496
77528
  emit("sort-change", sort);
77497
- };
77498
- const handleRowClick = (row, column, event) => {
77529
+ emitSearch();
77530
+ }
77531
+ function handleRowClick(row, column, event) {
77499
77532
  emit("row-click", row, column, event);
77500
- };
77501
- const handleLinkClick = (row, column) => {
77533
+ }
77534
+ function handleLinkClick(row, column) {
77502
77535
  emit("link-click", row, column);
77503
- };
77504
- const tableMethods = new Proxy(
77505
- {},
77506
- {
77507
- get(target, prop) {
77508
- if (prop === "tableRef") {
77509
- return tableRef;
77510
- }
77511
- return (...args) => {
77512
- if (tableRef.value && typeof tableRef.value[prop] === "function") {
77513
- return tableRef.value[prop](...args);
77514
- }
77515
- return void 0;
77516
- };
77536
+ }
77537
+ function buildLoadQuery() {
77538
+ return {
77539
+ ...internalSearchParams,
77540
+ [props.pageNumberKey]: currentPageModel.value,
77541
+ [props.pageSizeKey]: pageSizeModel.value,
77542
+ sort: { ...internalSortState }
77543
+ };
77544
+ }
77545
+ function emitSearch() {
77546
+ if (emitSearchTimer) {
77547
+ clearTimeout(emitSearchTimer);
77548
+ }
77549
+ emitSearchTimer = setTimeout(() => {
77550
+ emitSearchTimer = null;
77551
+ emit("search", buildLoadQuery());
77552
+ }, 0);
77553
+ }
77554
+ function reload() {
77555
+ emitSearch();
77556
+ }
77557
+ function refresh(isFirstPage = true) {
77558
+ if (isFirstPage) {
77559
+ internalPagination.currentPage = 1;
77560
+ if (!props.useDefaultPage) {
77561
+ emit("update:currentPage", 1);
77517
77562
  }
77518
77563
  }
77519
- );
77520
- const initSearchAndLoad = () => {
77564
+ emitSearch();
77565
+ }
77566
+ function getSearchParams() {
77567
+ return buildLoadQuery();
77568
+ }
77569
+ function initSearchAndLoad() {
77521
77570
  nextTick(() => {
77522
- if (searchRef.value && props.showSearch) {
77523
- const initialFormData = searchRef.value.getFormData();
77524
- emit("search", initialFormData);
77571
+ if (props.showSearch && searchRef.value) {
77572
+ const formData = searchRef.value.getFormData();
77573
+ Object.keys(internalSearchParams).forEach((key) => delete internalSearchParams[key]);
77574
+ Object.assign(internalSearchParams, { ...formData });
77525
77575
  }
77576
+ emitSearch();
77526
77577
  });
77527
- };
77528
- __expose({
77529
- searchRef,
77530
- tableRef,
77531
- // 初始化搜索参数并触发查询(用于异步搜索条件场景)
77532
- initSearchAndLoad,
77533
- // 暴露 PageSearch 的方法
77534
- getSearchFormData: () => {
77535
- var _a3;
77536
- return (_a3 = searchRef.value) == null ? void 0 : _a3.getFormData();
77537
- },
77538
- setSearchFormData: (data) => {
77539
- var _a3;
77540
- return (_a3 = searchRef.value) == null ? void 0 : _a3.setFormData(data);
77541
- },
77542
- resetSearchForm: () => {
77543
- var _a3;
77544
- return (_a3 = searchRef.value) == null ? void 0 : _a3.resetForm();
77545
- },
77546
- validateSearchForm: () => {
77547
- var _a3;
77548
- return (_a3 = searchRef.value) == null ? void 0 : _a3.validate();
77549
- },
77550
- // 暴露内部分页状态
77551
- getPagination: () => {
77552
- return {
77553
- [props.pageTotalKey]: props.total,
77554
- [props.pageNumberKey]: internalPagination.currentPage,
77555
- [props.pageSizeKey]: internalPagination.pageSize
77556
- };
77557
- },
77558
- setPagination: (pagination) => {
77559
- if (pagination.currentPage !== void 0) {
77560
- internalPagination.currentPage = pagination.currentPage;
77561
- }
77562
- if (pagination.pageSize !== void 0) {
77563
- internalPagination.pageSize = pagination.pageSize;
77578
+ }
77579
+ function getSearchFormData() {
77580
+ return searchRef.value ? searchRef.value.getFormData() : {};
77581
+ }
77582
+ function setSearchFormData(data) {
77583
+ searchRef.value && searchRef.value.setFormData(data);
77584
+ }
77585
+ function resetSearchForm() {
77586
+ searchRef.value && searchRef.value.resetForm();
77587
+ }
77588
+ function validateSearchForm() {
77589
+ return searchRef.value ? searchRef.value.validate() : Promise.resolve(true);
77590
+ }
77591
+ function getPagination() {
77592
+ return {
77593
+ [props.pageTotalKey]: props.total,
77594
+ [props.pageNumberKey]: currentPageModel.value,
77595
+ [props.pageSizeKey]: pageSizeModel.value
77596
+ };
77597
+ }
77598
+ function getSelectionRows() {
77599
+ var _a3, _b;
77600
+ return currentRowKey.value ? Object.values(selectionRowMap) : ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77601
+ }
77602
+ function getSelectionKeys() {
77603
+ var _a3, _b;
77604
+ return currentRowKey.value ? Array.from(pendingSelectionKeys.value) : ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionKeys) == null ? void 0 : _b.call(_a3)) || [];
77605
+ }
77606
+ function setSelectionRows(rows) {
77607
+ if (!currentRowKey.value) {
77608
+ tableRef.value && tableRef.value.setSelectionRows(rows);
77609
+ return;
77610
+ }
77611
+ pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77612
+ Object.keys(selectionRowMap).forEach((key) => delete selectionRowMap[key]);
77613
+ (rows || []).forEach((row) => {
77614
+ const key = getRowKey(row);
77615
+ pendingSelectionKeys.value.add(key);
77616
+ selectionRowMap[key] = row;
77617
+ });
77618
+ syncSelectionToCurrentPage();
77619
+ }
77620
+ function setSelectionKeys(keys2) {
77621
+ if (!currentRowKey.value) {
77622
+ tableRef.value && tableRef.value.setSelectionKeys(keys2);
77623
+ return;
77624
+ }
77625
+ pendingSelectionKeys.value = new Set(keys2 || []);
77626
+ (props.tableData || []).forEach((row) => {
77627
+ const key = getRowKey(row);
77628
+ if (pendingSelectionKeys.value.has(key)) {
77629
+ selectionRowMap[key] = row;
77564
77630
  }
77565
- },
77566
- resetPagination: () => {
77567
- internalPagination.currentPage = 1;
77568
- internalPagination.pageSize = 10;
77569
- },
77570
- // 直接透传PageTable的所有方法
77571
- ...tableMethods,
77572
- // 为了向后兼容,保留原有的方法名(可选)
77573
- clearTableSelection: () => {
77574
- var _a3, _b;
77575
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77576
- },
77577
- toggleRowSelection: (row, selected) => {
77578
- var _a3, _b;
77579
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleRowSelection) == null ? void 0 : _b.call(_a3, row, selected);
77580
- },
77581
- toggleAllSelection: () => {
77582
- var _a3, _b;
77583
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleAllSelection) == null ? void 0 : _b.call(_a3);
77584
- },
77585
- setCurrentRow: (row) => {
77586
- var _a3, _b;
77587
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.setCurrentRow) == null ? void 0 : _b.call(_a3, row);
77588
- },
77589
- getSelectionRows: () => {
77590
- var _a3, _b;
77591
- return ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77592
- },
77593
- getSelectionKeys: () => {
77594
- var _a3, _b, _c2;
77595
- const rows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77596
- const rowKey = (_c2 = props.tableProps) == null ? void 0 : _c2.rowKey;
77597
- if (rowKey) {
77598
- if (typeof rowKey === "function") {
77599
- return rows.map((row) => rowKey(row));
77600
- } else {
77601
- return rows.map((row) => row[rowKey]);
77602
- }
77631
+ });
77632
+ syncSelectionToCurrentPage();
77633
+ }
77634
+ function clearAllSelection() {
77635
+ resetSelectionState();
77636
+ }
77637
+ function selectAll() {
77638
+ if (!tableRef.value) return;
77639
+ if (!currentRowKey.value) {
77640
+ tableRef.value.selectAll();
77641
+ return;
77642
+ }
77643
+ (props.tableData || []).forEach((row) => {
77644
+ const key = getRowKey(row);
77645
+ pendingSelectionKeys.value.add(key);
77646
+ selectionRowMap[key] = row;
77647
+ });
77648
+ tableRef.value.setSelectionRows(props.tableData);
77649
+ }
77650
+ function isRowSelected(row) {
77651
+ var _a3, _b;
77652
+ return currentRowKey.value ? pendingSelectionKeys.value.has(getRowKey(row)) : (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.isRowSelected) == null ? void 0 : _b.call(_a3, row);
77653
+ }
77654
+ function isKeySelected(key) {
77655
+ var _a3, _b;
77656
+ return currentRowKey.value ? pendingSelectionKeys.value.has(key) : (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.isKeySelected) == null ? void 0 : _b.call(_a3, key);
77657
+ }
77658
+ watch(
77659
+ () => props.currentPage,
77660
+ (value) => {
77661
+ if (props.useDefaultPage) return;
77662
+ if (value !== null) {
77663
+ internalPagination.currentPage = value;
77603
77664
  }
77604
- return rows;
77605
- },
77606
- setSelectionRows: (rows) => {
77607
- var _a3, _b;
77608
- if (!tableRef.value) return;
77609
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77610
- rows.forEach((row) => {
77611
- var _a4, _b2;
77612
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77613
- });
77614
77665
  },
77615
- setSelectionKeys: (keys2) => {
77616
- var _a3, _b, _c2;
77617
- if (!tableRef.value) return;
77618
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77619
- if (!rowKey) {
77620
- console.warn("setSelectionKeys 需要配置 rowKey");
77621
- return;
77666
+ { immediate: true }
77667
+ );
77668
+ watch(
77669
+ () => props.pageSize,
77670
+ (value) => {
77671
+ if (props.useDefaultPage) return;
77672
+ if (value !== null) {
77673
+ internalPagination.pageSize = value;
77622
77674
  }
77623
- pendingSelectionKeys.value = new Set(keys2);
77624
- (_c2 = (_b = tableRef.value) == null ? void 0 : _b.clearSelection) == null ? void 0 : _c2.call(_b);
77625
- keys2.forEach((key) => {
77626
- var _a4, _b2;
77627
- const row = props.tableData.find((row2) => {
77628
- if (typeof rowKey === "function") {
77629
- return rowKey(row2) === key;
77630
- } else {
77631
- return row2[rowKey] === key;
77632
- }
77633
- });
77634
- if (row) {
77635
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77636
- }
77637
- });
77638
- },
77639
- isRowSelected: (row) => {
77640
- var _a3, _b;
77641
- const selectedRows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77642
- return selectedRows.includes(row);
77643
- },
77644
- isKeySelected: (key) => {
77645
- var _a3, _b, _c2;
77646
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77647
- if (!rowKey) return false;
77648
- const selectedRows = ((_c2 = (_b = tableRef.value) == null ? void 0 : _b.getSelectionRows) == null ? void 0 : _c2.call(_b)) || [];
77649
- return selectedRows.some((row) => {
77650
- if (typeof rowKey === "function") {
77651
- return rowKey(row) === key;
77652
- } else {
77653
- return row[rowKey] === key;
77654
- }
77655
- });
77656
77675
  },
77657
- // 全选/取消全选
77658
- selectAll: () => {
77659
- var _a3;
77660
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77661
- if (rowKey) {
77662
- props.tableData.forEach((row) => {
77663
- let key;
77664
- if (typeof rowKey === "function") {
77665
- key = rowKey(row);
77666
- } else {
77667
- key = row[rowKey];
77668
- }
77669
- pendingSelectionKeys.value.add(key);
77670
- });
77671
- }
77672
- props.tableData.forEach((row) => {
77673
- var _a4, _b;
77674
- (_b = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b.call(_a4, row, true);
77676
+ { immediate: true }
77677
+ );
77678
+ watch(
77679
+ () => props.tableData,
77680
+ () => {
77681
+ nextTick(() => {
77682
+ syncSelectionToCurrentPage();
77675
77683
  });
77676
77684
  },
77677
- clearAllSelection: () => {
77678
- var _a3, _b;
77679
- pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77680
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77681
- },
77682
- // 表格操作相关方法
77683
- clearSort: () => {
77684
- var _a3, _b;
77685
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSort) == null ? void 0 : _b.call(_a3);
77686
- },
77687
- clearFilter: (columnKey) => {
77688
- var _a3, _b;
77689
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearFilter) == null ? void 0 : _b.call(_a3, columnKey);
77690
- },
77691
- doLayout: () => {
77692
- var _a3, _b;
77693
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.doLayout) == null ? void 0 : _b.call(_a3);
77694
- },
77695
- sort: (prop, order) => {
77696
- var _a3, _b;
77697
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.sort) == null ? void 0 : _b.call(_a3, prop, order);
77685
+ { deep: true, immediate: true }
77686
+ );
77687
+ onBeforeUnmount(() => {
77688
+ if (emitSearchTimer) {
77689
+ clearTimeout(emitSearchTimer);
77690
+ emitSearchTimer = null;
77698
77691
  }
77699
77692
  });
77693
+ __expose({
77694
+ searchRef,
77695
+ tableRef,
77696
+ reload,
77697
+ refresh,
77698
+ getSearchParams,
77699
+ initSearchAndLoad,
77700
+ getSearchFormData,
77701
+ setSearchFormData,
77702
+ resetSearchForm,
77703
+ validateSearchForm,
77704
+ getPagination,
77705
+ getSelectionRows,
77706
+ getSelectionKeys,
77707
+ setSelectionRows,
77708
+ setSelectionKeys,
77709
+ clearAllSelection,
77710
+ selectAll,
77711
+ isRowSelected,
77712
+ isKeySelected
77713
+ });
77700
77714
  return (_ctx, _cache) => {
77701
77715
  return openBlock(), createElementBlock("div", _hoisted_1, [
77702
- __props.showSearch ? (openBlock(), createElementBlock("div", _hoisted_2, [
77703
- createVNode(NsSearch, mergeProps({
77704
- ref_key: "searchRef",
77705
- ref: searchRef,
77706
- "page-size": pageSizeModel.value,
77707
- "onUpdate:pageSize": _cache[0] || (_cache[0] = ($event) => pageSizeModel.value = $event),
77708
- "current-page": currentPageModel.value,
77709
- "onUpdate:currentPage": _cache[1] || (_cache[1] = ($event) => currentPageModel.value = $event),
77710
- items: __props.searchItems,
77711
- "external-params": __props.externalSearchParams
77712
- }, __props.searchProps, {
77713
- onSearch: handleSearch,
77714
- onReset: handleReset
77715
- }), createSlots({ _: 2 }, [
77716
- renderList(_ctx.$slots, (_3, name) => {
77717
- return {
77718
- name,
77719
- fn: withCtx((slotData) => [
77720
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)), void 0, true)
77721
- ])
77722
- };
77723
- })
77724
- ]), 1040, ["page-size", "current-page", "items", "external-params"])
77725
- ])) : createCommentVNode("", true),
77726
- createElementVNode("div", _hoisted_3, [
77727
- createVNode(NsTable, mergeProps({
77728
- ref_key: "tableRef",
77729
- ref: tableRef,
77730
- "table-data": __props.tableData,
77731
- columns: __props.columns,
77732
- "action-buttons": __props.actionButtons,
77733
- total: __props.total,
77734
- "current-page": currentPageModel.value,
77735
- "onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => currentPageModel.value = $event),
77736
- "page-size": pageSizeModel.value,
77737
- "onUpdate:pageSize": _cache[3] || (_cache[3] = ($event) => pageSizeModel.value = $event)
77738
- }, __props.tableProps, {
77739
- onAdd: handleAdd,
77740
- onSizeChange: handleSizeChange,
77741
- onCurrentChange: handleCurrentChange,
77742
- onSelectionChange: handleSelectionChange,
77743
- onSortChange: handleSortChange2,
77744
- onRowClick: handleRowClick,
77745
- onLinkClick: handleLinkClick
77746
- }), createSlots({ _: 2 }, [
77747
- renderList(_ctx.$slots, (_3, name) => {
77748
- return {
77749
- name,
77750
- fn: withCtx((slotData) => [
77751
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)), void 0, true)
77752
- ])
77753
- };
77754
- })
77755
- ]), 1040, ["table-data", "columns", "action-buttons", "total", "current-page", "page-size"])
77756
- ])
77716
+ __props.showSearch ? (openBlock(), createBlock(NsSearch, mergeProps({
77717
+ key: 0,
77718
+ ref_key: "searchRef",
77719
+ ref: searchRef,
77720
+ items: __props.searchItems,
77721
+ "external-params": __props.externalSearchParams,
77722
+ "enter-trigger": __props.enterTrigger,
77723
+ "slot-renderers": _ctx.$slots
77724
+ }, __props.searchProps, {
77725
+ onSearch: handleSearch,
77726
+ onReset: handleReset
77727
+ }), null, 16, ["items", "external-params", "enter-trigger", "slot-renderers"])) : createCommentVNode("", true),
77728
+ renderSlot(_ctx.$slots, "extend", {}, void 0, true),
77729
+ createVNode(NsTable, mergeProps({
77730
+ ref_key: "tableRef",
77731
+ ref: tableRef,
77732
+ "table-data": __props.tableData,
77733
+ columns: __props.columns,
77734
+ "action-buttons": __props.actionButtons,
77735
+ total: __props.total,
77736
+ "current-page": currentPageModel.value,
77737
+ "page-size": pageSizeModel.value,
77738
+ "use-default-page": __props.useDefaultPage,
77739
+ "page-number-key": __props.pageNumberKey,
77740
+ "page-size-key": __props.pageSizeKey,
77741
+ "page-total-key": __props.pageTotalKey,
77742
+ "slot-renderers": _ctx.$slots
77743
+ }, __props.tableProps, {
77744
+ onAdd: handleAdd,
77745
+ onSelectionChange: handleSelectionChange,
77746
+ onSortChange: handleSortChange2,
77747
+ onRowClick: handleRowClick,
77748
+ onSizeChange: handleSizeChange,
77749
+ onCurrentChange: handleCurrentChange,
77750
+ onLinkClick: handleLinkClick
77751
+ }), null, 16, ["table-data", "columns", "action-buttons", "total", "current-page", "page-size", "use-default-page", "page-number-key", "page-size-key", "page-total-key", "slot-renderers"])
77757
77752
  ]);
77758
77753
  };
77759
77754
  }
77760
- };
77761
- const NsTableContainer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3f45ef27"]]);
77755
+ });
77756
+ const NsTableContainer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4332eea8"]]);
77762
77757
  NsTableContainer.install = (app2) => {
77763
77758
  app2.component("NsTableContainer", NsTableContainer);
77764
77759
  };
@@ -92302,7 +92297,7 @@ async function getEncryptSm2(publicKey, originalArr = [], isAdd04 = false, ciphe
92302
92297
  return encryptArrs;
92303
92298
  }
92304
92299
  const components = {
92305
- NsExcel: _sfc_main$c,
92300
+ NsExcel: _sfc_main$b,
92306
92301
  NsPdf,
92307
92302
  NsWord,
92308
92303
  NsOffice,
@@ -92358,7 +92353,7 @@ const index = {
92358
92353
  };
92359
92354
  export {
92360
92355
  NsDialog,
92361
- _sfc_main$c as NsExcel,
92356
+ _sfc_main$b as NsExcel,
92362
92357
  NsForm,
92363
92358
  NsFormTitle,
92364
92359
  NsImage,