vue3-components-plus 3.0.25 → 3.0.32

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, createSlots, withCtx, resolveDynamicComponent, mergeProps, toHandlers, Fragment, createTextVNode, toDisplayString, unref, createCommentVNode, createVNode, createApp, render, useAttrs, watchEffect, withDirectives, vShow, renderSlot, resolveDirective, renderList, normalizeStyle, 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",
@@ -14710,8 +14710,8 @@ var CRC32 = /* @__PURE__ */ (function() {
14710
14710
  return CRC322;
14711
14711
  })();
14712
14712
  var CFB = /* @__PURE__ */ (function _CFB() {
14713
- var exports$1 = {};
14714
- exports$1.version = "1.2.1";
14713
+ var exports = {};
14714
+ exports.version = "1.2.1";
14715
14715
  function namecmp(l, r) {
14716
14716
  var L = l.split("/"), R3 = r.split("/");
14717
14717
  for (var i6 = 0, c = 0, Z2 = Math.min(L.length, R3.length); i6 < Z2; ++i6) {
@@ -16276,12 +16276,12 @@ var CFB = /* @__PURE__ */ (function _CFB() {
16276
16276
  function cfb_gc(cfb) {
16277
16277
  rebuild_cfb(cfb, true);
16278
16278
  }
16279
- exports$1.find = find;
16280
- exports$1.read = read;
16281
- exports$1.parse = parse2;
16282
- exports$1.write = write;
16283
- exports$1.writeFile = write_file;
16284
- exports$1.utils = {
16279
+ exports.find = find;
16280
+ exports.read = read;
16281
+ exports.parse = parse2;
16282
+ exports.write = write;
16283
+ exports.writeFile = write_file;
16284
+ exports.utils = {
16285
16285
  cfb_new,
16286
16286
  cfb_add,
16287
16287
  cfb_del,
@@ -16296,7 +16296,7 @@ var CFB = /* @__PURE__ */ (function _CFB() {
16296
16296
  _inflateRaw: _inflate,
16297
16297
  consts
16298
16298
  };
16299
- return exports$1;
16299
+ return exports;
16300
16300
  })();
16301
16301
  function blobify(data) {
16302
16302
  if (typeof data === "string") return s2ab(data);
@@ -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
- "v77f2af18": __props.modalColor,
44968
- "v7a8999b8": _height.value,
44969
- "d0083dbc": dialogPosition.value.left,
44970
- "bc631e4c": dialogPosition.value.top,
44971
- "v565b3321": tbPadding.value,
44972
- "v324a8909": lrPadding.value,
44973
- "v437133ce": _centerHeight.value
44966
+ "b8b76806": __props.modalColor,
44967
+ "v56df6f42": _height.value,
44968
+ "v4a0bf5dd": dialogPosition.value.left,
44969
+ "v3d494e82": 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"]);
@@ -45253,13 +45256,14 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45253
45256
  modelValue: visible.value,
45254
45257
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
45255
45258
  width: currentWidth.value,
45259
+ style: normalizeStyle({ height: _height.value, ...dialogPosition.value }),
45256
45260
  "show-close": false,
45257
45261
  onClose: dealClose,
45258
45262
  onClosed: dealClosed
45259
45263
  }, createSlots({
45260
45264
  header: withCtx(() => [
45261
- createElementVNode("div", _hoisted_2$6, [
45262
- createElementVNode("div", _hoisted_3$5, [
45265
+ createElementVNode("div", _hoisted_1$9, [
45266
+ createElementVNode("div", _hoisted_2$5, [
45263
45267
  __props.headerDom ? (openBlock(), createBlock(resolveDynamicComponent(asyncHeaderDom.value), mergeProps({ key: 0 }, props.headerOption, toHandlers({
45264
45268
  ...props.headerEvents,
45265
45269
  close: closeDialog
@@ -45267,7 +45271,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45267
45271
  createTextVNode(toDisplayString(currentTitle.value), 1)
45268
45272
  ], 64))
45269
45273
  ]),
45270
- createElementVNode("div", _hoisted_4$3, [
45274
+ createElementVNode("div", _hoisted_3$4, [
45271
45275
  showMaximizeButton.value ? (openBlock(), createBlock(_component_el_icon, {
45272
45276
  key: 0,
45273
45277
  class: "dialog-maximize",
@@ -45293,7 +45297,10 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45293
45297
  ])
45294
45298
  ]),
45295
45299
  default: withCtx(() => [
45296
- createElementVNode("div", _hoisted_1$9, [
45300
+ createElementVNode("div", {
45301
+ class: "dialog-content",
45302
+ style: normalizeStyle(dialogContentStyle.value)
45303
+ }, [
45297
45304
  (openBlock(), createBlock(resolveDynamicComponent(asyncDom.value), mergeProps({
45298
45305
  ref_key: "componentRef",
45299
45306
  ref: componentRef
@@ -45301,7 +45308,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45301
45308
  ...props.events,
45302
45309
  close: closeDialog
45303
45310
  })), null, 16))
45304
- ])
45311
+ ], 4)
45305
45312
  ]),
45306
45313
  _: 2
45307
45314
  }, [
@@ -45311,7 +45318,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45311
45318
  __props.footerDom ? (openBlock(), createBlock(resolveDynamicComponent(asyncFooterDom.value), mergeProps({ key: 0 }, props.footerOption, toHandlers({
45312
45319
  ...props.footerEvents,
45313
45320
  close: closeDialog
45314
- })), null, 16)) : (openBlock(), createElementBlock("div", _hoisted_5$2, [
45321
+ })), null, 16)) : (openBlock(), createElementBlock("div", _hoisted_4$3, [
45315
45322
  createVNode(_component_el_button, {
45316
45323
  class: "dialog-footer-btn btn-cancel",
45317
45324
  onClick: closeDialog
@@ -45336,7 +45343,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
45336
45343
  ]),
45337
45344
  key: "0"
45338
45345
  } : void 0
45339
- ]), 1032, ["class", "modal-class", "modal", "modal-penetrable", "draggable", "close-on-click-modal", "modelValue", "width"]);
45346
+ ]), 1032, ["class", "modal-class", "modal", "modal-penetrable", "draggable", "close-on-click-modal", "modelValue", "width", "style"]);
45340
45347
  };
45341
45348
  }
45342
45349
  });
@@ -45380,7 +45387,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45380
45387
  };
45381
45388
  window.__dialogInstances.push(instance2);
45382
45389
  if (externalApp) {
45383
- const vnode = createVNode(_sfc_main$d, {
45390
+ const vnode = createVNode(_sfc_main$c, {
45384
45391
  ...superData,
45385
45392
  containerId,
45386
45393
  // 添加容器ID传递给组件
@@ -45404,7 +45411,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45404
45411
  vnode.appContext = externalApp._context;
45405
45412
  render(vnode, container);
45406
45413
  } else {
45407
- const app2 = createApp(_sfc_main$d, {
45414
+ const app2 = createApp(_sfc_main$c, {
45408
45415
  ...superData,
45409
45416
  containerId,
45410
45417
  // 添加容器ID传递给组件
@@ -45425,7 +45432,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45425
45432
  }
45426
45433
  }
45427
45434
  });
45428
- const vnode = createVNode(_sfc_main$d, {
45435
+ const vnode = createVNode(_sfc_main$c, {
45429
45436
  ...superData,
45430
45437
  containerId,
45431
45438
  dialogInstance: instance2
@@ -45435,7 +45442,7 @@ const NsDialog = (data, modal = true, appendTo = "#app") => {
45435
45442
  }
45436
45443
  return instance2;
45437
45444
  };
45438
- const _sfc_main$c = /* @__PURE__ */ defineComponent({
45445
+ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45439
45446
  __name: "index",
45440
45447
  props: {
45441
45448
  isShowDialog: {
@@ -45561,13 +45568,13 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
45561
45568
  };
45562
45569
  }
45563
45570
  });
45564
- _sfc_main$c.install = (app2) => {
45565
- 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);
45566
45573
  };
45567
45574
  const _hoisted_1$8 = { class: "pdf-reader" };
45568
- const _hoisted_2$5 = { class: "pdf-tools" };
45569
- const _hoisted_3$4 = ["id"];
45570
- 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({
45571
45578
  ...{
45572
45579
  name: "ns-pdf"
45573
45580
  },
@@ -45654,7 +45661,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45654
45661
  const _component_el_button = resolveComponent("el-button");
45655
45662
  const _component_el_empty = resolveComponent("el-empty");
45656
45663
  return openBlock(), createElementBlock("div", _hoisted_1$8, [
45657
- withDirectives(createElementVNode("div", _hoisted_2$5, [
45664
+ withDirectives(createElementVNode("div", _hoisted_2$4, [
45658
45665
  createVNode(_component_el_button, {
45659
45666
  id: idConfig.value.previousPage
45660
45667
  }, {
@@ -45668,7 +45675,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45668
45675
  class: "jump-input",
45669
45676
  id: idConfig.value.pageNumber,
45670
45677
  type: "number"
45671
- }, null, 8, _hoisted_3$4),
45678
+ }, null, 8, _hoisted_3$3),
45672
45679
  createElementVNode("span", null, "/" + toDisplayString(numPages.value) + "页", 1)
45673
45680
  ]),
45674
45681
  createVNode(_component_el_button, {
@@ -45718,7 +45725,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
45718
45725
  };
45719
45726
  }
45720
45727
  });
45721
- 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"]]);
45722
45729
  NsPdf.install = (app2) => {
45723
45730
  app2.component(NsPdf.name, NsPdf);
45724
45731
  };
@@ -45769,7 +45776,7 @@ var hasRequiredJszip_min;
45769
45776
  function requireJszip_min() {
45770
45777
  if (hasRequiredJszip_min) return jszip_min.exports;
45771
45778
  hasRequiredJszip_min = 1;
45772
- (function(module, exports$1) {
45779
+ (function(module, exports) {
45773
45780
  !(function(e6) {
45774
45781
  module.exports = e6();
45775
45782
  })(function() {
@@ -52076,14 +52083,14 @@ async function renderAsync(data, bodyContainer, styleContainer, userOptions) {
52076
52083
  return doc;
52077
52084
  }
52078
52085
  const _hoisted_1$7 = { class: "word-reader" };
52079
- const _hoisted_2$4 = { class: "word-tools" };
52080
- const _hoisted_3$3 = { class: "zoom-info" };
52086
+ const _hoisted_2$3 = { class: "word-tools" };
52087
+ const _hoisted_3$2 = { class: "zoom-info" };
52081
52088
  const _hoisted_4$2 = { class: "word-container" };
52082
52089
  const _hoisted_5$1 = {
52083
52090
  key: 0,
52084
52091
  class: "loading-wrapper"
52085
52092
  };
52086
- const _sfc_main$a = /* @__PURE__ */ defineComponent({
52093
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52087
52094
  ...{
52088
52095
  name: "ns-word"
52089
52096
  },
@@ -52217,7 +52224,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
52217
52224
  return (_ctx, _cache) => {
52218
52225
  const _component_el_button = resolveComponent("el-button");
52219
52226
  return openBlock(), createElementBlock("div", _hoisted_1$7, [
52220
- withDirectives(createElementVNode("div", _hoisted_2$4, [
52227
+ withDirectives(createElementVNode("div", _hoisted_2$3, [
52221
52228
  createVNode(_component_el_button, {
52222
52229
  onClick: zoomOut,
52223
52230
  disabled: zoom.value <= 0.5
@@ -52227,7 +52234,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
52227
52234
  ])]),
52228
52235
  _: 1
52229
52236
  }, 8, ["disabled"]),
52230
- 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),
52231
52238
  createVNode(_component_el_button, {
52232
52239
  onClick: zoomIn,
52233
52240
  disabled: zoom.value >= 3
@@ -52258,12 +52265,12 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
52258
52265
  };
52259
52266
  }
52260
52267
  });
52261
- 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"]]);
52262
52269
  NsWord.install = (app2) => {
52263
52270
  app2.component(NsWord.name, NsWord);
52264
52271
  };
52265
52272
  const _hoisted_1$6 = { class: "ns-office" };
52266
- const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52273
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
52267
52274
  ...{
52268
52275
  name: "ns-office"
52269
52276
  },
@@ -52314,7 +52321,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52314
52321
  return (_ctx, _cache) => {
52315
52322
  const _component_NoData = resolveComponent("NoData");
52316
52323
  return openBlock(), createElementBlock("div", _hoisted_1$6, [
52317
- 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, {
52318
52325
  isEdit: false,
52319
52326
  isShowDialog: false,
52320
52327
  file: __props.url,
@@ -52337,7 +52344,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
52337
52344
  };
52338
52345
  }
52339
52346
  });
52340
- 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"]]);
52341
52348
  NsOffice.install = (app2) => {
52342
52349
  app2.component(NsOffice.name, NsOffice);
52343
52350
  };
@@ -52356,10 +52363,10 @@ const _hoisted_1$5 = {
52356
52363
  key: 0,
52357
52364
  class: "sub-row"
52358
52365
  };
52359
- const _hoisted_2$3 = {
52366
+ const _hoisted_2$2 = {
52360
52367
  class: /* @__PURE__ */ normalizeClass(["sub-row-group"])
52361
52368
  };
52362
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
52369
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
52363
52370
  __name: "DynamicForm",
52364
52371
  props: {
52365
52372
  // 可选table, vertical, 默认不带边框颜色
@@ -53166,7 +53173,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
53166
53173
  ], 2)), [
53167
53174
  [_directive_sline]
53168
53175
  ]),
53169
- createElementVNode("div", _hoisted_2$3, [
53176
+ createElementVNode("div", _hoisted_2$2, [
53170
53177
  (openBlock(true), createElementBlock(Fragment, null, renderList(rowInfo.children, (subRowInfo, _subIndex) => {
53171
53178
  return openBlock(), createElementBlock("div", {
53172
53179
  class: normalizeClass(["sub-row-item"]),
@@ -53417,12 +53424,12 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
53417
53424
  };
53418
53425
  }
53419
53426
  });
53420
- 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"]]);
53421
53428
  const _hoisted_1$4 = { class: "title-image-view" };
53422
- const _hoisted_2$2 = { class: "content-model-title" };
53423
- const _hoisted_3$2 = { class: "title-text" };
53429
+ const _hoisted_2$1 = { class: "content-model-title" };
53430
+ const _hoisted_3$1 = { class: "title-text" };
53424
53431
  const _hoisted_4$1 = { class: "content-ui" };
53425
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
53432
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
53426
53433
  __name: "DynamicFormTitle",
53427
53434
  props: {
53428
53435
  title: {
@@ -53433,10 +53440,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
53433
53440
  setup(__props) {
53434
53441
  return (_ctx, _cache) => {
53435
53442
  return openBlock(), createElementBlock("div", _hoisted_1$4, [
53436
- createElementVNode("div", _hoisted_2$2, [
53443
+ createElementVNode("div", _hoisted_2$1, [
53437
53444
  _cache[0] || (_cache[0] = createElementVNode("div", { class: "title-icon" }, null, -1)),
53438
53445
  renderSlot(_ctx.$slots, "title", {}, () => [
53439
- createElementVNode("span", _hoisted_3$2, toDisplayString(__props.title), 1)
53446
+ createElementVNode("span", _hoisted_3$1, toDisplayString(__props.title), 1)
53440
53447
  ], true)
53441
53448
  ]),
53442
53449
  createElementVNode("div", _hoisted_4$1, [
@@ -53446,7 +53453,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
53446
53453
  };
53447
53454
  }
53448
53455
  });
53449
- 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"]]);
53450
53457
  function registerDirective(app2) {
53451
53458
  app2.directive("sline", {
53452
53459
  mounted(el2) {
@@ -53457,6 +53464,34 @@ function registerDirective(app2) {
53457
53464
  el2.style.maxWidth = "100%";
53458
53465
  }
53459
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
+ });
53460
53495
  app2.directive("permission", {
53461
53496
  mounted(el2, binding) {
53462
53497
  var _a3, _b, _c2, _d, _e, _f;
@@ -54352,9 +54387,8 @@ function requireSideChannelList() {
54352
54387
  }
54353
54388
  },
54354
54389
  "delete": function(key) {
54355
- var root2 = $o2 && $o2.next;
54356
54390
  var deletedNode = listDelete($o2, key);
54357
- if (deletedNode && root2 && root2 === deletedNode) {
54391
+ if (deletedNode && $o2 && !$o2.next) {
54358
54392
  $o2 = void 0;
54359
54393
  }
54360
54394
  return !!deletedNode;
@@ -55345,7 +55379,8 @@ function requireSideChannel() {
55345
55379
  var channel = {
55346
55380
  assert: function(key) {
55347
55381
  if (!channel.has(key)) {
55348
- throw new $TypeError("Side channel does not contain " + inspect(key));
55382
+ var keyDesc = key && Object(key) === key ? "the given object key" : inspect(key);
55383
+ throw new $TypeError("Side channel does not contain " + keyDesc);
55349
55384
  }
55350
55385
  },
55351
55386
  "delete": function(key) {
@@ -55747,7 +55782,7 @@ function requireStringify() {
55747
55782
  }
55748
55783
  if (obj === null) {
55749
55784
  if (strictNullHandling) {
55750
- return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, "key", format) : prefix;
55785
+ return formatter(encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, "key", format) : prefix);
55751
55786
  }
55752
55787
  obj = "";
55753
55788
  }
@@ -55765,7 +55800,9 @@ function requireStringify() {
55765
55800
  var objKeys;
55766
55801
  if (generateArrayPrefix === "comma" && isArray(obj)) {
55767
55802
  if (encodeValuesOnly && encoder) {
55768
- obj = utils2.maybeMap(obj, encoder);
55803
+ obj = utils2.maybeMap(obj, function(v) {
55804
+ return v == null ? v : encoder(v);
55805
+ });
55769
55806
  }
55770
55807
  objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }];
55771
55808
  } else if (isArray(filter)) {
@@ -55903,6 +55940,9 @@ function requireStringify() {
55903
55940
  var sideChannel2 = getSideChannel();
55904
55941
  for (var i3 = 0; i3 < objKeys.length; ++i3) {
55905
55942
  var key = objKeys[i3];
55943
+ if (typeof key === "undefined" || key === null) {
55944
+ continue;
55945
+ }
55906
55946
  var value = obj[key];
55907
55947
  if (options.skipNulls && value === null) {
55908
55948
  continue;
@@ -55932,9 +55972,9 @@ function requireStringify() {
55932
55972
  var prefix = options.addQueryPrefix === true ? "?" : "";
55933
55973
  if (options.charsetSentinel) {
55934
55974
  if (options.charset === "iso-8859-1") {
55935
- prefix += "utf8=%26%2310003%3B&";
55975
+ prefix += "utf8=%26%2310003%3B" + options.delimiter;
55936
55976
  } else {
55937
- prefix += "utf8=%E2%9C%93&";
55977
+ prefix += "utf8=%E2%9C%93" + options.delimiter;
55938
55978
  }
55939
55979
  }
55940
55980
  return joined.length > 0 ? prefix + joined : "";
@@ -55996,9 +56036,9 @@ function requireParse() {
55996
56036
  var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit;
55997
56037
  var parts = cleanStr.split(
55998
56038
  options.delimiter,
55999
- options.throwOnLimitExceeded ? limit + 1 : limit
56039
+ options.throwOnLimitExceeded && typeof limit !== "undefined" ? limit + 1 : limit
56000
56040
  );
56001
- if (options.throwOnLimitExceeded && parts.length > limit) {
56041
+ if (options.throwOnLimitExceeded && typeof limit !== "undefined" && parts.length > limit) {
56002
56042
  throw new RangeError("Parameter limit exceeded. Only " + limit + " parameter" + (limit === 1 ? "" : "s") + " allowed.");
56003
56043
  }
56004
56044
  var skipIndex = -1;
@@ -56117,8 +56157,8 @@ function requireParse() {
56117
56157
  }
56118
56158
  return leaf;
56119
56159
  };
56120
- var splitKeyIntoSegments = function splitKeyIntoSegments2(givenKey, options) {
56121
- var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey;
56160
+ var splitKeyIntoSegments = function splitKeyIntoSegments2(originalKey, options) {
56161
+ var key = options.allowDots ? originalKey.replace(/\.([^.[]+)/g, "[$1]") : originalKey;
56122
56162
  if (options.depth <= 0) {
56123
56163
  if (!options.plainObjects && has.call(Object.prototype, key)) {
56124
56164
  if (!options.allowPrototypes) {
@@ -56127,37 +56167,56 @@ function requireParse() {
56127
56167
  }
56128
56168
  return [key];
56129
56169
  }
56130
- var brackets = /(\[[^[\]]*])/;
56131
- var child = /(\[[^[\]]*])/g;
56132
- var segment = brackets.exec(key);
56133
- var parent = segment ? key.slice(0, segment.index) : key;
56134
- var keys2 = [];
56170
+ var segments = [];
56171
+ var first = key.indexOf("[");
56172
+ var parent = first >= 0 ? key.slice(0, first) : key;
56135
56173
  if (parent) {
56136
56174
  if (!options.plainObjects && has.call(Object.prototype, parent)) {
56137
56175
  if (!options.allowPrototypes) {
56138
56176
  return;
56139
56177
  }
56140
56178
  }
56141
- keys2[keys2.length] = parent;
56142
- }
56143
- var i3 = 0;
56144
- while ((segment = child.exec(key)) !== null && i3 < options.depth) {
56145
- i3 += 1;
56146
- var segmentContent = segment[1].slice(1, -1);
56147
- if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {
56148
- if (!options.allowPrototypes) {
56149
- return;
56179
+ segments[segments.length] = parent;
56180
+ }
56181
+ var n = key.length;
56182
+ var open = first;
56183
+ var collected = 0;
56184
+ while (open >= 0 && collected < options.depth) {
56185
+ var level = 1;
56186
+ var i3 = open + 1;
56187
+ var close = -1;
56188
+ while (i3 < n && close < 0) {
56189
+ var cu2 = key.charCodeAt(i3);
56190
+ if (cu2 === 91) {
56191
+ level += 1;
56192
+ } else if (cu2 === 93) {
56193
+ level -= 1;
56194
+ if (level === 0) {
56195
+ close = i3;
56196
+ }
56150
56197
  }
56198
+ i3 += 1;
56199
+ }
56200
+ if (close < 0) {
56201
+ segments[segments.length] = "[" + key.slice(open) + "]";
56202
+ return segments;
56203
+ }
56204
+ var seg = key.slice(open, close + 1);
56205
+ var content = seg.slice(1, -1);
56206
+ if (!options.plainObjects && has.call(Object.prototype, content) && !options.allowPrototypes) {
56207
+ return;
56151
56208
  }
56152
- keys2[keys2.length] = segment[1];
56209
+ segments[segments.length] = seg;
56210
+ collected += 1;
56211
+ open = key.indexOf("[", close + 1);
56153
56212
  }
56154
- if (segment) {
56213
+ if (open >= 0) {
56155
56214
  if (options.strictDepth === true) {
56156
56215
  throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true");
56157
56216
  }
56158
- keys2[keys2.length] = "[" + key.slice(segment.index) + "]";
56217
+ segments[segments.length] = "[" + key.slice(open) + "]";
56159
56218
  }
56160
- return keys2;
56219
+ return segments;
56161
56220
  };
56162
56221
  var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
56163
56222
  if (!givenKey) {
@@ -74789,7 +74848,7 @@ function ss(e6, t3) {
74789
74848
  ]));
74790
74849
  }
74791
74850
  const m5 = { render: ss }, f5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: m5, render: ss }, Symbol.toStringTag, { value: "Module" }));
74792
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
74851
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
74793
74852
  __name: "index",
74794
74853
  props: {
74795
74854
  content: {
@@ -74816,7 +74875,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
74816
74875
  };
74817
74876
  }
74818
74877
  });
74819
- 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"]]);
74820
74879
  NsMD.install = (app2) => {
74821
74880
  app2.component(NsMD.name, NsMD);
74822
74881
  try {
@@ -74827,7 +74886,7 @@ NsMD.install = (app2) => {
74827
74886
  };
74828
74887
  const StoneIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHIAAABmCAIAAACY+FKnAABOfklEQVR42k29d79tW3EduObKYaezT7jvgZC7+0v3X91t2ZZoWQEaScgIgYT1axAZhG2hgCQMvHfvSTuunHqMUetAX+Hrd8/Ze4U5K4yqGlXT/etPvj7P86Q/Yz+M0+g7P4oiP4w8D7/owyCMorAqL4eX18D3kjQZx26exmHw0nwX4tdh4HzP9/0gCHw/HMfem0fPc+M44cr4snPBNA34Zd/3j+/f8/Muurm9H4bGn0c39bi9CwI3Dl4YH67tu4f7yXMOt/d8h7/wH9Pg/GDm9Ub8P3wYX8H1j4fT3d0dnhKfxt/4NP44/MP3u6Yfho7fd/hqhJ82dVsUq+PxNUmiJHLDMLog9DzfC5LQ98aJ98S7Ozw812PmW7jAzUMQ+XiPOApmvBs/FwzjiIdxHh5o8H3eDysQ4C5cBlzKc//y46/pYfmYzsMTBF1TpVnqB+E0tH3XB1ES+HgRb/Ki0+vr8fXR+f40TLvdzc3dvus6rDUewXlRFOMp+Ty+Xg6PxttwCXhv/Oz19aVvWhfn9/vbri/76zkK8EihH+Bu4dQPcxR/eHz93Oc+Nzufz42XdPOMp8cSToPHf/pcznlI4qyFEAxTGEahLsBXHlq8Ij6De02zj2fDquIBJqy4H5/P5/uH++PxhF8WKd5u4EPObpy9OIkhGOPQY0vwbb4DL6J/4Ap49nEI4rhrW7zp5OE1Z+73zD9c/RnykEEw+JC4VxC7n/34L01Uh6HHGuBKlB28zDSGIf4VeT53zPkxbjN5E9bl6cP7zWq9udli3bEPvL2PVRijJMHfuA12YcIDUQlmvuCMJ8O1/efnlzxf40ZZ5I1dAzVwE2Qm1IZjSaNLMx5ej7/92/+Oa4E35mUnu4L+TLyK72OzoS14sKapszQNuCt6vGmYpw57AFFo224YBp+SglUJwiQ/HV6DAPKDVfbWeYSXwoJKK/D9SHsRUDOkatg8Sp6DUA+QqZhPOHXd0LZ1EKcBFwrr69urUT/wHQgeboeFxr///jt/AumFrA5952ktIDhUK0/vEET4b+iIF8QjJX/yveFyue62+xkXkBDhnSj/3LeBckFNCqiqDoKA/8O6zIEf1m099FB22BcXzT1ujqeCxs39hAtAt6Gbh2o8HA6f/fijOM0c7AnFZ9alYGcCvhmUzoXQzaGHOg7l9RqFbrUqoCHYSwrp1I3Q/SBqWxMc7jqWLwzDvuvK8np7966urv7cRT5VfJwirDlNhUQK4oUL4Y5Yci4V3mgcIX34JUzcNE51VTU1tDmM4oxPRaF1UhHYsBEX0Mc8988/+kvoWFtfITf4rESVDzFLgbkJ8wD1xt7NI4zgWNdX6HuWp5R/fCbAHkDQEv4nHwSPMcx8SN/+gYXGNYIgPJ2OUZTg3uvNamhKihuuQPPn81YhresUZc+v1898/HE/TYE0TQ/sKD4zlqueZV+hcfgqrHtblU3XvHv3gFWwp8UT4n+4JUwarZzem3LvvKYp+9G7u78/vjxha8M4piWmxYKNDWiyKASUTawXng2mOYpj+AOtNV40gmGh6fDc+fwacaMhIwm3ASKIS/gwLL2Uw2FZv9p1kKMOGxTFKaRPFj/gPvONHOQfbgeiAY0b+74sm9u7Bzm5novBnQqkmoH0FNLk5P4gxXo+ShCtdlm3uF+eQWeDvjrjh/j60F59P0o327mrxq4foniag/V6M9BZdrJ0uqyuwBWlmQ5mORduYNddr+csi3FNrDXEgrqIt6RNG/EzWF+a46HHLl/KEg8DV1ldLjDd1GwoJ5cctnKkV6RriWlJ+Hr4m+JFycDd8QVoMF2E39GvwxiWMHpxkpTXKky4yLCZemUuhvvpd/4Elh76jeeiRRs62hisKVcd3gRrBl3HpaHyQ91UMBLwVTTXvDiWhm/r+wICPvccNkQWatJa4DWhsw57fjpebnYbPwrHroar4fegyd0QJXEcwV/1kJ8pjM7nS5olSZpS1IJAxou2CO9JAddKA7Jo22CgRuAT3CNLYtg9JyiSpimuCNsYQjkorxNv53vnS4mn2t89tHUlE+cEMmg88GrQrCBK5cSgGCahgSQd8tNh1T2+DoxNcL60tw8PwBV4yAEPNc2wDF3XekOLtYKA56u1+4fvfGGg3jh4jEka5C1GgG8A/+/LCMvMeYfjeZWvstVKPtfRYVIYB8k31jMmJOCWSs69YJw6yAOsYN/20JckCYfqMhEhxRNQ2tA5rpcX4GMQ8iAOi/XT0wu2NstSeHg8Ik0E13GgEYdYOUmj52AosWS48nazjyEsvv/+/QfsbbHa1FVZV4c0yzy6wSSiZaPhf3054orFqgDUwVYGMl9938gceYQ3dI90s/h0vt4G8rNQCZqapqZUY+GzDFYdCDTNCmxKHEU0R/I6WHwgp6LIuVY//ds/hPWgEuH2lMjOcB/eAQATb8j/dJCaCVbs5fl1t7lZbQsKtZMfhEEBUKVAQeZCboxHZaEM0BpAt7CRDQw8gN/Ulh72MIxmWknaEaAySCVQAU15HAENdW0HQQHCa9u+ul6AQgKpzOK68P9TBYB2UljPqqr+1//tf4F5qNuurdp8vZGdGH/x83+FBK7yrG0bKBrWAz+Po2S33TXd6E0QtLipStyLSMYnNBcYGZu2HrsphsAXmUd97GmNej71ZrvFXgPO13VPJ4018ejjsaWy+MTZw4A3gBBMWNY/hvkICKaIv7H0lLUgklmE5NMYEyBM4+l07QeAEbfKYe5TrKhQhb9gVXosSgUBseCUgLzXds31fF4VOTZJO0H5xo/6rsUq9XJp+OwkOaekO1w7G6FTtFJhHPqEqcMEsQO+P7++JEm22m4JzhxXEMvZdzUuHiUQ8NjQyye/+hS3We92fLRphmjjM/vbG0gupOX4ehz6ptjceub9hWeosG5+fny6udnmWSJMR90A+D1fLut1keYrCB1MVnWtvWnIVhuBUeAI7DFhEkyaZ6AZCOHvv/VHhES0SsDDLfYnlHfDemkLCIJwlR5fGyM8M/wKfHCRBbB/swtpyxkE9QSETstJlzIbJhdkGX/5i19Q5SL6N+xyU9fYzzgOodgAoPhhlq9pKB09K+GBB4sUQ8gBDbBSvKquCQMNhVyvd7O230ALnrS8QklLOClEgLJAXg9/HvL6WPftbpemGaJEgoQZmxaX1bWt63yzhdQjiAiI8GlaYBzwtPfv7qDTMxE3tRt/IAFZXmDnsHJw3ZBxSBz21g8RRhAgY4thsfCtvmsgNARe//DtL1JlsaaIUvoWrwekQLfAh5CoevCh1yDIIA+yUXKTcNPesF4V3DHh4dmAlC4lhAxRJ948vD5DzXf73axYqaqrvm2KPMe2UxDO1xj2b7Wrmy6kZnnEZ9oV4uVAiByXYgRF9xMnBRzFpPc2DI4nQmwNp0GdCwyYYwNG4Ha8yeyivNhAZqq6TBGZ5SuEEo8f3ufFWro563lnhgOKe+Hkocr0ocCUI+UVVoei0DQUPA+4tUHEnEQ+tAcGYbt/J0fq6+7U3YEhuwdp/QOGuXCc/D7MY6g18kyjcVVguccPr6v1Nl/tpsUizk11QWQ7dM12t2KYEoQI7CCpaZ5jQXBvKRcgnofIBGoVJ4BuM+Oepsmy3McOIVbtx/P5hOgzW+0gibBskAtsZ0AA4EE0obOwux6NnAd7t1nfQoT4tIo1+BJ+OC8AXt5mGLC+UPTAj4hCYcbj3H5bXc7Yqrt37x7ff8IsRhgTEkUEGBCmUREmkJ4nZeH+YrFn/gtiXyHIdr0nfwVhqfHncoLLgG7tHj6KwtgeGNEj3D6gBSTafeOL/zsWMKQvxe3CMEkFq7hLacwUyfFUtk2XZyEjwHSNZ8HLA3QhtgE+MssIgwVrjci2boAN8UBwP6FMC+LLCtKP5TZQBWgMyAWLQNA+e68vT7hnBIPQd4odiIIBXfHCBNFwoX3bVlcEYIiWIeC8i2CRxbKekhjCBsqOyCCej0f4WrwJtkv5nxDP2dXXIIrxkq+vz5vtrflAN0Op8fCRtocmj2Be6s8F4DWBf3ziXNfC5Cf5Coo09O3pdEniFBsWRUGarQJaKicYOhFE4TW++eXfCbi/ofaHIbxg1oR1zrKk6WnyNwWQdlA3ECUPT5gmIU2FwmfcFSoDh4vFwXpd4JurFn586KiSMKBFlhAUO7lIcwMzNh4vmBBd1Jfz8YBnSvItgdbIewdytMSSs0KEIAASxA0nRcvMVXnO/ual4NMQttOIMauGO+IXTx8+bLbrNNsgEKPXcvQOglMd/k6KLVMnTKS5rmkgjwqOneAN3YkwDK4M8fLgiODf8CsYUlgB7DZ2smn71WY/tG15elpvd0m2xRLDvGCjYLawZO67f/VHirds++lADOnzxcMQz4on2G4KuGTsBnYSpg3yg/cPFqzuy4/1MfY8jLFf7z99H/EJGIyvMqx2kKT5RNM/yHyFvm9RHPFceT0AZmKJgYVpByYooGsRdEz0kYxKPA/GMYxXzDfKB1rQbNaIWcmIqO7tJ06xHx3068vz/uEeGGJUporR2jhdL68wQWGSM/IDcOabOwE3XkAYjq6QSQA/gr2hOwGGqC4wjYCokFN+znN1M9zsd1jHEiAhi9L1DSCf/QoLAsfl/varv0dsJFNiPoC5ib4m0gmheis8N/bccCNDJgXeTCz5NBaWmMQjAZkqk+U/Pj7Ctt7sb2F6V1kMq4pXlysYF2O1uETaRIRtCLQ82XC8YZLlzhIRTMWNTJK2DfQBgcT0G/33JBGwIiMNiJbVjAKtCBMJE8Lz0+mEd1mvNnB1niVrAv9yfIF1atvWsywQoQHzVyFdUM5wQ+lSJmqhMIgI42SRthlxddQ1dVNXbdMCLEGo6grBzghlBSCL1zdYubK80vQhpv/ml/8PKN3EdEOEV1K2dHZTu1mtIgRFwwCJ8JgsZPyqBCgzI1gZOnrLbYxQvRyRJuQcz3IpKzi/vEjL82m13cihBdhnbkoQKwDzlDToJsnwyMwXjIkXJxnAAh5GmSdIfHa5HKIon5SaFMyfeENCBa28g2mLqF2M9mY5SV4X4gkbAqh7Pp32t7d4algHi9Qvp0PEYDABBHZTh8tlGbHBqK+lCaGOkrN6Ry6IYcQ5CYVwsFB09DQ3iujh6mD/emyFx/gAu5wmaUaU8rd/8XuIoSHkI0BhB7fr53nKO/NKsEhMzS0IdLHqgTLFeFWEHz3ERTmI0NCYUk3AQ/SvCWQgCj1lb50yA4JNi8MhAvccEAXgBy2Glseyf44xW1jV166qtvvbJSGpzP04mkIpfex5Ucj31jWZGcSPBlpkWMIaq9i0g7L3UGeP+qsr5+s9NkPWUykLOT5fAQ9Td4GPRQCcAITHMgI+T8qrbNfbmU/FvAfz6vouPojdYIoLAKft4TCgVfSEgGvf/trvC67MeUJgEeoPlBKmx3dK9ck16u7EebMXUgXH3qQEn0jzoqNZHBVDxHgxCs3kZWmyJAcEDvEjGRkCUovBsTKPn/wqxzZmmVNshm2UHWTl5no6Q9Zg/iB91EqmcnwFPvqksJ78uacVUfKAH8ZviJkihmeuQ3gW4zE87B8Wa7N/B1vPNA2D/Y7rGOfegibnBYiEYY9Pn1/xST7pPG02G1hbqpGslcxXiEVGYKD9hWZgNYAQeuiHZdzcd77+h4LWsNUdvrq92bw5B2Jxpe+c5R9k3X0rMpm8hcSVbZLkRDoMVRyerCqvEX4yjFlOzDipVGLWwpOTnVWZUGLePT4+5WnKlI88Jc0vTD7euKmKYqWEOvcTi2WJCikHESLjbmd7EaiCMC8ga7IyGmwXFblqGsB2LCIAzORCpULp4vUwDPpwQVVlFFMr0xRGgNiwoqVWzctXm6xYMUXtzUrOMfPrU+xG/YdTxpZRjCcrVdG8+u773/iCHgV6C28e3tysezh62jNf6JJ5I7hXWEgE3VPfEO1hd5lCZDKcGAtxDhMfPaw+wMjpeMaD7vf3CgClYXJlIyURktKZM3dK3zw9Pa2KHHGw1Xuwcng0OJbNZstk4CzDYx5smpI4gvkD5nMsQDGxC0FWYGDK5Cw4nARlsEBpmh4Oh/UqQ1zXDzODjpbhhh8BHyozSys/EFsBSiM0oEZ3KrvR7+G/87yAl57oPBIt+qDk7KSalWc1IRgJvLhMOnMCZVldqtp976//GJ8DRGOxb572NwD5vWdpEtws8JTKihCha4ehlFzrgMUfQnHCF2XxJxkBbAdc8Hq1y9cFqzieSaoqFnRQAzc3iCz9iOd4fXperdeA2b5VV+b5cHjJ0lh+WTh3WooavpkR7qkF8aYCLESYUVZdz81vdxEOc+fzeb1KhW8TCsQkezcPqmsoyy6tZKg69FbNM6tNpDv0QiAdlhL/EQRx31Xa50kBSKDb9ZYYhGBxU2dXns+H46v77tf/ANdBOIe//aHfbFPYCOoPTEuczkPLTAs12AqfgSqyPYFtFCl4Z51ZLicQlHTH4+nu7h5fpxJopeDV8flAtROa+4E4P6BgDofXY16s4PW17sP1eu3bDvEbhDCUnX8rFkEwOysRem+emiaACL9Xgka6GYSUX7kBj7X0+MP7D7DwkPIwKQiEcUHPSkO0wc5KfdwVCQyThKpsMgHRq1YftkxWMAAlbuWTwwz3wF4zgUdHI+v5Pf0hHBVXFuYL/3Pf/ovfC5MYV7heT+s0AjCShzJxIMaky6KBVAldvzLQq5eVeUa0ymR7KO/mDofzzc0uotbg9gwiLLbCtmNxPQUFeOEoSjw/evzwKQt8MCh4k6G/lE2eFlmxxufl5SWhKuvij2MME1ku0tPTeUzvMr9MbyPLYkQCeUWH5Xh9PaRMGKbCsxREpsRsZWVPLfxRQOS9FXfpi4CXi9Uawtb3CIImukuIa1IwkgM0HBhq41sIkbGcxJ4sr4TMMGBfYSu++ee/w0I04sjyertdJVkaxHHflARDxMa00XCCZGPMIyNIzxc8nAg1nBVXZnMW9Mueq+ohL4qI9YVZtiJg4ry5ClT4s7OgewaC84Ok67vDywefRAfXtt00Bze399hjfAlK6ZvzZbjNDBajSdML2VDlA+DQR3E+JmVeZOxUDgoEDIAq+UHY0ojlVaVUCD/leJ0yWIFh3tnAo/AiAj9YMIRCMFRN3To+LTbGB2JRvUeC4pmNYtnYqiQWyAihz1jWf48NBILpG5Yw4zR1cwss7fQC/oK7uaeENwjbzWXNRP64BN5Rpnq2xJoMomP2GVaJRrxnEO28vq1ZyveZsrSYB++I3QZ4Pp/OL8+PclfRw7vPpFkK/4RwRvGbZ7XigfneibEgc0uWLpxlfEK4OOKNBVTLu8kiU7vCqLycB1aUySUImQ+i/XFKAumBmRL03+L1pTAtT4hP+8ycTg38D0KpNKeSsQrozKpaZKTwo/esqkP+SzJ2Pesj//jdL7weLog0cLHdfg840TN/7Kv8RyHFRVl5HTpWE+aQ0FU2G08NFEKQK/zlZHfxRnXTZqutN7ZmjgOSjqhZBGeCWeaEJLSqzwXB4+NzUzWf+9znkjSaVDnkTnS9ypRMNjFdAK+j6pKB/4B/QiUpZfqn5RnkbJf4Bf84HV99xqApTSOLVwxhfJXeTAlUYPZlrHozBqwe9z2+AXMKYzB0THJCOERwsPWMPdk9tzB3aCtVoKmtXstg4Rc/+fLheHx9vWBJ1pv1zX5HhfIGq6BTrnx6f3wr9GlA+Mg0tZGK1q2pnkENFpHhhc7V/f07b2olU4qaANGkmObEzJYFoXI3TCbEx/O1a7vb2xvGFMxFjTIuDJwYvy0h/yJcyr8NwGSmuXj5YVQgObE8MTOolrlRufdyPmT5CviJoqQgUGrO+yr9slTLhdyd4i3aCEQDoY9NjavyslZ9TEnTSJtBiowUlqjXSvd8lwFIqrGyFckG//L9P4b8HE/l9XK92W6xsjQWQyOXSF33mbVnAZKcL64mpZhha8CYh0ULBR7ENW1TtYCG3rt3e1auFJ+FSpqr+Dh4FgMQwI8qTjgLai8AAMp2EzbQQM8WjHRd/5Zeklws0kGHJGlVOl5kE/FQGFBCZqSdzPYzSVmWQK/GxOKiYGkMWjFhE0iHJl9xuT0bTCpeA6YpiohPz8crvJYwj6ObDWNpxmR6SdaGAj86/PMBqMQXu4f24aff/Lylph6fjkUWr9e5LZwSsL4KhbNKSZ5W0MhrTsWouB+wig3d4NDDViEEP17aIs0e3t0a7qVPlEzJ/BG04aOTCYuqKUyjjV5d1XjaLEvEjrE0rlP6eWi7nsun8NRTOY/14NkZIYEwlZljCODctuS8BAvhh89+OF6huXcPH51eXuC70jQLGcgSZAuiOUtEcCfkAwnDuxagf7VaUbTJnPTLa903F3h8bDbXmuU7QTGaqTZOCyVe2r5vzADJZAfuZ9/7I4tlygp2pBNxMUC45rvRYkcsMDwzo1dVYbHl2FF8gwvKLU/r8ow3ga+E8aibLo2i+4cbLKEV+7hGKg3PrOv4soQq/noW0QJ2cZPgqeuy2u42kSrvRsVTQDkLd8y+4aO35AjrVIqLlRQnxwmG3vyy0tU96zvduN/dRATE/blE8OojSAuVDZFQ+/Kx1CrABjm3zmwCoDQRkR/5uvLr02OeA1mHEgXLMJPBIt5aI1Q3B4qMAmowLtW4//E3/5Ekqihu+hHrBWhGeksYABJ1zYW5kyhK8wQmDC/XNDWTbKzBTXG2jrMVl7Iuo4BlMMhOXTfwDNtNNimCNyaszNZojAymTUaG3FD/mKwQRASn3X4HQbhcLiTfJDF2AdeBjqVJCO8Ba0i/JwxnVQG8OlbfCH+6s48HO52uSZozZTn7wG3XS4k1vL/d8d7kHXkvJ7F6AF1ZME0NcZMZ0tRdN8C+xZHPYtrQ4Sk2u62YhCFFYnLnw9Nmt7O0PeMGP4ypWIAojfLAYsHwo+TEwXa5H/315+PQb1lqhwO/ZWq5vgAP4xJAOW0L8fY2mxy2S89BGbLsZppvfeYsyC1UjEIxgefJkni1ymTpfCEW8ivw6NB0XIyUGdbaijRfwydC2vAQQ1dHMXBFQwzg4bFavCdUu1hvYOaOh8MgFVO8Ncukwh2NBNNmuKkArCEmRIdMLk7LHzq9NKKdhumv2+50Oqt2IIqn8ooKwbFDpO1YpDV0AzR1u1tneTHChcQx7MDL88vNfrvZbBWjB3J4DBlJB26hvEyQymGPfLDIuW/9xX/CsjJ1P/mb3QbbPEoMFEUojR2mH3/mM3j5Tz/9FT652txAnGe5dngErAj0bbPdQ/5H7kS7ytMkDjyxN6CYVXm9lu3Qk3SEgKrYbFxATlHCCqDHWpMXtNUZltoXCYPBpzL/ab7q2rrIEzzOTG4lM5keIrcog8U4HYGdDpMyHbvdlpnRKBGFpmPBgBydkIX7Yayup/u7Hd/PBU+Pj9gKPC0Wl0UqJkvJvVZK2bOAcFStEWYBTne9XqXZ6sOHx81219QVrH8g06Fkv0pk43w+naC7eZEJM3hdP3ZDj+D1d4jyfdideDZYazxa1pxZeoPErvIVFBGK1rU9pWymKVTm2Ic9+vD+PZYrRwyKi7YtqT0hQ6YWijwNRZ5da8L59XYTp4nKmnTVUHZsNV4N+345PuMB1zcPUCJL+SqXCldWAlzA3SYJKzpkao7GHCFwa9r+WlaAVrCY2EJzMtD3bphwcRa5ohTRenW9wJutVxkAbNcDDfcIArnzJHtEzCIqONd6TRKpGR9izphxRGhIFiabqRIiIk+J41EInBsBUevbruFlc+hPP0w0RP/47T8g2w0OzocYQ5hT1aIZk2DVqrqEAJKzgvek9RyStOhHIy5QLQN6VQchUS4dQCSAYtCbwQsxfePwpYk4jAWSUTEffTp0k+UHBh14g64+472SbDPLk1iqDE+vxMJ8ePoEskwGEQLHoVOYtOQjmnbKirWYd4NCWdajEedEWaZKwUgdIsG/JeM7CEcljawwAUnAwrN9QK4VDwXJDRkyMJnbIrgnwT+W+Sa7ogfaYS02wANbfZdeQtyA8vQKlcVq4iljBhK+++F//b9hhFlHgs5WVSy8BunQ/kD4mtmLuoHeWvmkmc85TvYc1mvgG1U5iPEvRL2WrCQGHJimwl0HpYwtc6q+Bb4c7GAc0Q1CfK7XUxQmZN8JGzAjSV1hphGrAEP7/pNfQf422y1AKHlddQ3fgIWDWUvSuCdbLlFiiFlCaCtrRmlOXnFTYmPwLWqAsySA3zb402V5kuW5gQFzg0sKlTEkMO8V7kBhPqtWgaI75uEUoiistg6OhcYDpz0wPcg/DAd+8LX/kK82MO4snPRDvt4A0CPQG/rKnCDiIKgbXletDzPMph/BLALT4WlUuRpGC7LIVVcSmRCHa4rdAn4OZkNMdBHx9JYqxXbkWT5YYPbyXAgqMuhwjGjpWInSR8v2QzHSLMMqkfiXpEQj0lrWkYAYSZNPRqO30D1WSYarBbAhcRhg3WfRPAURp4V7OM1PT493795hUQayleMlElGUhsc/vTzDhar84DKy6nAfmj6YmFlZTcOUq806z5iDV7g1ijlFJrf7wV/9LlBYUqzrGrgXyPFGaJck974tx76FuWt5LZatVpuCaq5tJWAMoln1X8g1M0Ys68+W32JEHUfYLa1vYBGBU60iUPsPxDzPc5qnYTqdDlmaKF81WfWE7z0OkEHcqCOJps+ydBApio08ykdC25l/oUkNOjEgO27/gNgKwBM7EjHhoxQaa4yeEeRn21fnrudL17e73S2uClOLdSeJmRk/vA3uCe0mAwpeCxgcQH6gM8Rn5tenDzDOgFib3Z5l4LduKT28FS8n9/OffPVwPEHi4iS6nM63d3dKOrCfCn9X8AnQYdJOmwxOcXerpemhXxBeSIzcpiF7/AxPU/mW82UOLx7mQPEVDEikkvho6SILYskhSGO4TjjD49OnEbN3TCRP5H/SbIhHFFdV01TXm92GSRcVfZVdFVYJaKOxoJdrDXQN18EGg6YF1MLFo0RYWnczJs9SplSzQF1eIeV8POZIW8uwYynhq4ti50QSgek8HJ5X203E0rIULk6hW9jjvFiLCNorIxhamtWz2BF7/i8/+LMoSQFXDs9PcFR39x8BM1u+FTazLKuOhKEZZnX/7rO692ipDM/Ia7oIFdLNLIKxYAPcR3pPM3hxlC4NMf+/zjUrjYjnE0K1R9LdquZ6gvfjuvn44ZquRg1orH2M4m8HDgG+koQDEGuWZRNhA3MfWRq///AcMxYIpTfAWgndKX8tTiWzQMNSBCfspqEcJpcWG0SreIuuLWHToDF4qNlT4lFlGSw0nHZX13EsmkCcwXuX18vNzY1yN4E1nimYnI2NYC0+7mff/5LYHO50vrRVu9vvp6mFULD0yLwD9BjLnmdFwUIMeVSjpVlD5k99PbOCH9b+6G2xaW11SrK1H+bqUAgHtZGR+k1oOmpHA8trwLMADAH/tnUF72rtVVZenVXpUUJrYC7CiYAlLvHlXJbX8+3tzihweIrrFe72SsL3FMD9ClxSuE1apVEqzdNX0N9cr9V6t5fiNxYsYA+TcJT7TUX88yytwwBhmK7HV+AORDGn04WimhfEANw8JymZZm9Bp+bE3c//7itGDSM1ri7bqoQiCk7CiScz+2wyn+UExIuxCoU9KXaOyZtB0T23lmF3Y+kprGx5OWKV8/UeAEXhB9vOVEeDZ2BOmpBl6GdpdZYxQ3w+HwKPxhQ/IiuAiQjiBE9xhyd9NwICLAdc+PFw+vD+k89+5j4vNrCJeOFPP/2UpnB7Q/nBWrMZzLPsx7TUbNQdoNeHxAGaY3mYtKV5n4FDqstpu93ifejNpyUlpvTtHAbx04dPfBL7+t3+BmuiQoNjK4yQ1tK9aO1DWMt/+9GfOXIRJvMnLy/P0O3NZuOpg1NsOqdAWOV+ZXwUgEVqw2L+Ry0gbpyM6qQayeyfXh93N/chcNvUz6T5TWY6sMOkHOMNRSYLCPWJzM+nA2I9rvtSK7aGPksJQU6HJfE8qMfUkUsEgT0dj+t1CpsMhX1+uUCDEHGSGMqc/6xWFrdQcr1J5WFqF7uZrle4aQt9STwVEa9ryjxPrF7gWPtzv+leFCMZe/ny9GG/X60UULF0JJKWAAwDS9b/lV93//bDL+FlncoBuMXjy8tQt0AeEBbSbtX35mwB2dHCxiKldSNgbENLvnwfo1XpOCwFcPUnv/z5u3e/xXKXErfiV3mW9ifG1kWVHgsU7QSw7XjpGAE8Oyji2TKBnhHphslyXmz2iIxCrUo2MyNYWzGhuiTfkEnPgiAzFbQAWlcVnAer0hjDEppTlTUMJbAwCTM91Yhthm0FHxenKyHZ4c0OWDWdGVps2+n1eDg8Pby7TeA2eEGxUixbKl7wEpX824//XJDGU5XFP5xOU+/t7x+s0cLQg5uX3kXr5yRbvW985erNmthHFyfINWbXcJ5vgLEsXa1Pimwk4jI0fFSCxKjP+Nj1cq7Ph/3d7WS9bHLYBuMWzsjCvaWUByL6CmMA8DfPT8+49AaxL+0MEZVjuGl8LqM3juYnZaxDkZFrxX3RrCywNaWMfR0GWNbCSGKeVYe4xEsjJFlvnne5ln2PaDgnvtTaOREpWWtRdEoKzs+++wUYeSM24/sAWzFc8Sq3rkVWxWkEmRb2FH7ge1AWBwsrGh8rngQCgRfEgeEsNokC8ZRREBVFAiBNTqtIg9a7on7wWUwvkzyGBnjnlw+/unv3sdR2WvgfCuZsOa01VF1f9Jd0BWzugrEDjqjrplltNljirNgufb0AQ4FFHpO4Rk6VfVUlWEPoVAVlzKZ0D/nACMmg60W+9ha75yv14aaFVj+pgT4EOPnkV79cr1LyFX0RbEeV+GW7yfMBxP/XH3xJWTLfWhlfXg7r1S4QtUKxuWc1ZIinR8qQSZBUw/oEA6WT1U1s6X6p7XQ4vK4B94tERdxwYH1QkwfeyJtWhsIa1nUJHAbQ+vr0Hh7DKG+B6hGGyJQVHViaV09fpO4G7TqDq54hdgMokRe0MxGsjfCDIpYJfk5kA8+qVbIovWRx4INFGQtmvAfLuuX1FEd+sdo59SeSQtmwYYwtBnSWrIZhQ+uyvlyusOlFnuOOwIgIp6gR4r/QSWFzfvj1382yhHhw8vB8wFRCHir4iOWrfl449pqNoV7QNrW/1K+5ORFpnRHCdsjt7vZ28sQ06ZrD6+tuu2M6hQHbrAZAPF7cD4OR/Nmi3LVLSSYg3jg8v7/Z3xgnxS0MVnOTbjKaBSlcgwUXVr20lisJY9i21ShdFraS48C+KSM8TlY3cyyNTIxuRrLdJzEnfJUsGbfg1RCeuCC5nM8BYI5LjGBKvlvgsnyFGIM8u74v67pru/U6t86eNF8rQ02z4UcZffKP//r38xWZlAhREPRUwI9xlgNsz4MUUJ1E5Bzg96z/bbY3otxwl0lNDQL1w5Ip17a1L/sNy4DQbJ1jPyM1S48yHohfUnXPWuNg6dNVEgDjJ8A3T+/ff/TRPV6VDAb108sREGiqR9izniabjMAkJOBeCyjGtAokc+iGy/mAH+KRiqIgnxKwwZszi9lZpmaSEO8YiWOhVj1EDjHhEdP96SAAF7Bs5dXXc99X0irIY75erwP1fqgzvI3jAO78crpMY4O4C+/lC76wt5Yly8H903e/pK4i36AEXE3IOCdh3qTv6DdpFjsxgpwI3dFEVlW81FMZlZPCAql5eT4kjBrDpoNiDqsinQZskoJ9ObSQ+U2in6btlGRzyoWJFDOOp+NpS049fSPljM2iIuKxq2joh5nDJ1inGpquy5Ko6SZsf5zkQSgDraD2w/vHz/zWxxB+FXphiw49c+GZxdiQX3wmJBqcsjzvJ9ZTWVkOA/bQDhaq8C9WK8or5C+UgfLGTlgvQLQaiEtGPfOCumq75qwkCzNoDQSvZ9rQff9r/9c8+tl6B5jddxUkvG5qgA5oEps5zE4Z6WNGAM6Cyv/8n7+AIEH8imLbdDXsg1x9vlrlrM2No1jj87rI67a9ng54jDxP4cdGFqbwyqFnlBn2yw5GWsGiXK7NbrMJY/98PCmXTqAO6QOwBdoVF8sZgQUq+FuffQfpOJ/PxnGzlBhWrm1b6ZIS0iO55wOz2ukkNi67baa5g4+rLvv7j+I4ratK5e63GrMIxEStoU93wrxmZF5EREwquq385KkdJYzqsmmaEqEzoDTcJzZyf3fvfvSNz2+394HSrMzSwVANLWSD7RAdgzkb6mAIjhFOmhFIMuxZ6Ah1dYYwrVYrGHinHE3dwVoMazZkRKfTEde9u3/XDuP5eMAnt7sdrlCyu59pGagYVo1LpoE09JxddTy8YB1xM2WhYPq9hvWG1hhf290+FH0eklxXpVNyR0gfxqcLnIhenpqc/IjsvFl58dm3FCVUCV5kvd1pwssgG+V8o7AvfdoIDa74b7wsseCCH97CWU+jcfxwXnpbQryuRTwQfDwmrJL7+2/9cV5sgxgR5ykindXr6lpXdvB3YbaaYCannk6F8XsiuvpAtsySPiFur65nf+7hE6sKoX3YkszLUiAH2QwkJUxexECsr9abW66Ig4XB/l152XQFnajrKgyMo0rJAFIXt3uCGaYocR6E33X1L37+cxj3h49/exR7H0gT1ul6vagxMFRo37Oj3SMLclK7RxJOPaLfmSnhgD5qFCoro7SAJNogBGwY105iiHds6xrB9MP9rWoiibXUWHevCIm9JcEsEJjFbhqNrCNyH/fgX370ZXh/T9lbKEtPd8GKJWAEFl5bHq3WawMn1l9kPC51YpN2ykzw0J0OcP2bnqo3pVnasLd4TBPunosKRvh+H8aFtSFw8gB0v2sux9eb29ueCMjBo0Bd8FZS/CTLMo2PoaNwngXugNXnvNhBwH3RS40n4KnRU0AUmGoQCziRhs2hb2lp8QOJydSR6vkDm08YXGnaADW850+ApUJYnJfnl802T0iP9Iwp4RkYdhZS96I9a4CUjRSR8dHMmqCuW2ib+/l/+8uqPIdEaiIyep7ajOkalQpxRZbCLDd1FVmHEXsoR0J49RGKWUEHejpdNqsMvq4qmxhARO08AZYOzjDIvO6aJ5GLM/JllIEdmJdC9B6V50PIYQpwC70IQgTnVd1uijwu1koCwKXWnhT8WnVJtmZNULIcLu0vk5vhEqBmTZGnI4dhJJNNkaKWcmOUBguUllCvgfOb8rLebt5G17CCBIBFqg4M4DwAdKolwWZ7qI2YJIeO9JaJIE99RtFkzAH1lUL9sE/wWlBK9/O/+y+IcjkNIkqsBNuyxrvES8yDcCZPI4JaRGQukpqbaVtlAawhamgaMi3E1prCwIhfkQiU7AmBN19tbn0Wr0arHpNxJ119eX69udn1zcWbjWjlK2Hmnp6ePnp3B7SIkH+eDOG686UG4CcCd8Jbnk2tsgQuhz3hmfcP79T9btmdeWFxLVR/wt1ZfrKu6wJaKGdguU2mQ9savwVImDm0RKWayYodkfHFZ85y6lWqael4ReyzVIOmKrm2LiEZ7uc//LPX83GGh9muVSSfO83C4BoRpkcK/9iiYZwtrNRsM1PEyFaDOAtK3TjVZZmnsTFMWdEU6mbtMHLQEYdom3MDQg0KC2YyurxuGF5fDvvbW2/ijJGZhIoQ3gZXgN/z5+Hudi+idoM3hJm9ljWsg7Iz8RuJflLhy7f6xPF43N0+MH3l20yh0UYPkODDaIJEq8G6UoDAmALkeLJJJEZ2b17Pm/XK2r8NpfqKnpV8ET2aKkXECW3W9WfjMBsnrKkuYtpE7mff+yKc7NPj693tTds26hGdNvtbFrRlpDlfSztPhoRbcnRkPSpTwz6CoXdhArwP84plzTPWUYDpSHiY1Sgzz4hbYOw//uzHvapP1rNs4zY+/eT9fn8nqoqSG5ZxJmJLyus1DseUfXnUNQ6baUgzgZubmD8bxXn31RMOg8O3Bu7e3dwpJFuSZFwRtSyR86yckH4yceAAayyxyIGQvgbgBHFErHESk2qf7DdEPGZ2xBJPxpv1jIHN+LtX+UugiE0ECnci968//H/KqoHAFZstAvm2rCIWwefVeqsWx9F6A3XlPpKrsXQdPSMzII3nEvIinY/oHkHualU0nenfoPa6tqpaUlyHYbctVtutMmxs5OdsoWn85FefAn5FJEcN0lR2Jyqr7s8ufH5+fXe/FzGP3AkY0DhbAZSoyy80jOnkM9mkGwUwaFwpzbiyjLJN03oLz5bkAFPMw8AWssiHncFrAk7sxa9X88poSQ9hfloYG7nGvlsbzcXOxNkGp4zSXTKIvBnWGT6budm/+6+/W1cdFtGP2L8O/I2Hg6YjkFsVa195Jj9IBIk5qkMs9XEhkw/cT6jSrLQQYGkGac2zuhmZHCEvhBlSkhLSGCHG5XzMyF6L1epBPAJHdzqe97d3MJhM5YhkzBZftnMQaeA9uqZbr2K836UssSNZscElGE9z0cz29dbolURsFrheyv3d3cA67WgxnOjETMjBmGiVnbFQIVnX04so7xFwm3z9rMzsaH29S9+pyN8K4sfZsjwaE2nVo1EJKVU/w66tqc1wQj/6mz/kYDFlf5uaJNsJ0TVnweF96vV6I2cb2PAsZjrGwZKMC4tRMZLP0mz5/HRA4Hv/cDuzy5zh6ewSYWziMBGvk5aV/bqDXCsUrpoO7wN4HqcZu2MD9V5ysk1jmIbkgZmsIZiby7Xa338ck1I4W0rW6iizMSGcUrDz+PT8nLOFzpLlvno2rCdWCR55cetLwpPhsQE64QShJG7pnwnM4OgOk8YPBlZcmFkC0Pb07TQ0Yg1TG8jkgunUHCDsKyHtp//ty4dzBcQ2+1MEE06WQzewRziuyqNnPWJKWbKPvm5gcUXundUBBMwxcZwX51IMT88vddXc3z1s9rtp0HRFZ+krZ2PxPCUOfe0wDHF5re7v75MsOZM0mcWK3yAJ5Ac6Sx7PqveRlgj4cjmXW5Y8RzFQJjVRK/wNlgIJg7aAOOnEyvytfjhM1jmK8N+fQjmebo7V8wqAAbWtyHnxbQQRs46eMhLKe45y9MEboPCUnIUtrWwkAiB5VdbDhDt22Yqk56zIgHQgs+4XP/pTCPrlcqnLig19KUlkMAHWej2wq/bQdko8ayhoGKXw1oj8fBVZOfVL0T3e6eXlBa+82e00+dRZocB8qHGjEGsp3PXVcdE8vxwAodjQeK1s1I1NpDDZMhwdmOfxXFXV5bW8ubvjvTRLzbg6S7ZbRslnWW/gPKZpvnvgxD7rxNVXaFajgAUcuBQOq+i76+kAOdvd7OAEje3Ni4jvCUSIGLfXVDbrARfYYEfZ5VKuNmtFvMGoYBoKsNluOPSwb7A+DYL4X/7kz+GdAbVeX8/rIguNRSSyGLN5ZHcexo7inBVrRCBxlsKljOSMRBxTwSXTDkcQOjLtlYn1rYXSSqeaEsBuMe8tt+LMsB5PNzeb8+kcivVg4ulr5kAA1SGzF6+H7a6fH7FhHBhye3/HqbScVwbwl7Kbt5N/ZOstVLO5VvDFnFm6I7E7DXRZlqtkCoylzsTjOGKfosjVDT7v7Xb7kJmgdlimBLAhgrPhhinL4dKKy7m+XC8PDw9YnJeXV6XtlfniYKke65rliceguA3CjFndX/zkzxnJOA64QoQAeyexHzm5VbN3yvJcn0+7/T2WFftGyKaclk3Y+HXGGTboeqbRYC7GqeeRyTSymWXWJvo99uwMNj8P2Khvy+PxjKfb391LNgMpImMKqIuZNjxD28DpO7Ub+xxEJ6F+/+l7PEUqB8jRtvRymq4hLPTWkSZJtQYBSXRM7lCogIq5yzhJsTBuaXsNy/NrzziKPe7b3QbGqq4rq3/iK0AjCDaZy0eoqsSqpyGP2DLoHtYHv4W4AoVczif3yx//ieA7jLTXIJyt65RsVp/mmfNl/KolLeNm/wAgC81lKsAaCVSV0fxEQx0eUBvUOU3gqVgBddgboEsXc+xA4MmLOhs2Y16urS/HwylNEw5uISSag4gx9fXSJEkELeZUP1qAWdQC9dRa6dgT5YlWhe0cQF747Wq1ZhTHUipjwn5YeuvVcL00JIuo7VuHu+hvoWC4L7fHj18uh3cfvePHx5ZtCF5wPALhz3uEGEFUXc5tV1vZuFdbW5pnACpleXn38cenl2PV1Nvd9ghxfv/TrwMOeiSWAsB7r4dL4Efbm03XNlY0rKoqCtMtLKbqLz6ZeBfZLKv3TeKMLynI56enIo2tziqPGrm3eQRLZUoMH2tGeX55XK02UBwmvdoOkX5W5JCi56fnIsthvq0HZWHjcDLfaIxJkQ8jKGzJzqN2s2ELg/JM9G5dp24Fz7i0nk3zVFWaYv72FHPbDXBWUcxEsFKiAI5kymdpakRayTmEM2i7noN/mlYdcoMlXxD7Mpeo1t/rtczytOupDdaZheD1T1vChSlLIy6T7//yF58iWEozFk1lPf37d591arqxgruIJqOGbobGxAk00xs3eXl+xt7tgASET2D+3uaBGwaabawq3ut6vUL0sFucqHJ3jwuSh6YB1efLBRdfbXacBEFy5/hr2oAVB8XQ6vXD4Pj6UuRR09HVQMk43bPnRFwNX1imABv7Tuxf0mmx0FgpGPT1et1UV0676vvZTdv9R6zfsI6iGg+hAtOS50trnZ/4uRNFUn0tE9YeECLP2cSCCK3tOrUvCb/9j2/9sYaBkMXBCm2AuPv6/P7RavSIi6J0TWjZVRrZ8Gs+DAM1tSVHlh7k2O0oatoGwej9/iZMmayy2SualRsKD9J6Dm1NUm5VbjbrIIqh9eZG07yg8g193bbl+XL/8M4mw9pcG95oKRz7yqMzF4h9bVuWItgsrXSogs5ZmqfuVRYxA2sP0zTbUROzPHb1a5gq/u98REQQ5MWWoQ1HDg4JWYiBhjGSuosXeXk9ww2qTTsUkptFWh4gnplm3gAhIZh8eXliBwDT2N/+IoU/9JUDCC5XRATJ5YJY7grTsr+/jdJCWUsSui1YFxOC+d/ZWF2qpFI7ZMJfDhe4vd3udlI+zFmKx2e1nG0gQ3c9XyB+WcJhoXgT4JWbmy08W5rluDCCXVz08fFpDWO5RQCt4S8qqRqK8JzNnBhE9WADIICqeM5sNxCr2om9oILxtATxHaPwIEtCFRyjvl8IhOLkirjkRWqz80I3wW/LGZD27nOy2xTG2eVaT4RoWBXOnZRTnIvVymIlMdTpZYDbgDfcT7/9Rax0ohIGNLfXWDT8D+t7Ol73NzfFZqXuRBuH4ild5C31BqepmTYPRCSwuizTPH19eQ68MC3yZQLBONcNZ4H6rBsHmi0WYt9EAUngNz/6zEear2rNgB2e5OX5BW/18HCjjiybj+6L9DxLtZxGK3Mu4vVygXWGyDC9zBTiDPsFF9c2jV6VJhniBd/y8O6jtrywc451qsFoCJpDGKqk66lB1ws531nBE+vKIS7k5o5gIUoPh3PgW2mc2wZoZOQaUZcZlKp0IjwCI4AAgRMaPdex924crHg1ItIO2doShwk7Ra2FkNxeT1NkJmtjVT3KOB34ank9bTfZ6+FaIbjQYBs8ByQF4C8MbEYS+zEo2uPUdB02BZ+8u9vDbEH1pHeUxMPhCIFacbA5p3tiEYEN2BO/EM0WYSFuFRMULqUuLwAqWbEt1lvINTwtYU3Fsbi4+O3tnvP11JiouVwkMQ7qavA5WDZcshzjwGVlht4FsAmzQZ4Rhgux5TjDzpZs9nUOYb0GgqszTYU4BFdLzoW04e99ATJVt4Ocw9SLZg2RCaIsyTcQBzwb53/JluFVWRyE8Oc5ZwbArKgxfWlld35VXler6FL25eW63Ww0xRd7EfQCub63TL+xFku8FRZi4DWZ+b7Z7wHL4Mf7oT0ey5vbrYZf+jZL8PT6mKeIDwPgxLohpYEzoSOyvgHIAcsR2wxdxzU1/DexK7duGiw3VDjyl0FZUZowP0/uqfjcjhfEK3O2oZp7mD8KPDJt6Vo9TbvhxHlE8QFDrBrmcf9wvy6AYWpG8Or2Zs2GZXCOZGFy7p/+9j/jKf0oAdyTMSZLdntz7wWR1amYawhsOvWo4R6WaWRc2zPj1aqzL1LQgSUI1psUfrlr2s26sLS5Tep4mwA0zQuGZA8V62tDfy3LWbPs8yIvVmtIZ1k26ixgEqzjrIdQE/vc1LdKHYxK4PiCgKS9UlcU1avr0oihA1MjSYwHx0Ksi/iNb+rU6W5txKP4Jd71csJ6EjuzpsGCFp0z7VWoAKjROSGEIsPsLudqs9tGoWYEqn99Np6WOkWtquK+/7X/EGmsUKg+QyXQwps999yPyEBnH30Y2lRCq6MRVpOIinXmFINe2TD1VMO/JnkWVxy+5wGxGaHMZudbUtxcHF4vZptLzwqG5p5crqy8JnkxqAHORl8ECwyYOYqCsSE7xG7vHxhoONZZ2WwQIIauYZyg7+xatUMrKBw0axS/wK+a9np83W4Ko+EwJh470bycsoVYuFq120SJvkX3VB/xoBN9Q31NslwP0F+rfo9QRdlCtXSyxkwzjdhH+8oSzt//v793vuJrHJ/LlpV+yDL2J2tmuL8cR8K4ZNA/Q0NwNkHfzq7xLOXL9maOzITeYfUQko9L+5aohkJXlv8eNDExFEmKqZGuxV8Np3+HKt6R/J7acTbqEb1WFTlx1A8I7vTw7jOaxb84B5uNgYuVZaVA1tO4IGs8sgBrUcHz6Qi7b/OVjLHc27gswAMvGKbACX0bMZI1GB3IwsH5TA6NmlOJh2mgx7d3D8bEEb0heju4YjTDynlw3/+rzw/Ez6bm8257ExeFUlOSL0VTIkLqZqIFio29MHqZ9l9G4IwQmbZ8xX8Wqx0nPQniGaZ7Q/JO8zMBIJjSjdPcAlOeedNPpg0QzEkjIThjr+urqoTW5/m2rs4eC4W+KlHQ8nB/exdEC1kcK3U4PBfFSq3gyzgIREN2Hsxko1uw9NfrZp3DxR4OF6Bn2JwoySgKdRNna4NiIlNqIoGUxjreiB37hp6rhR1P7+4egDXIpeWtif/IqGWL3iQLM7pv/+XnieQJRscozrbb/SAbaoccabLKvHRvSHjN+QR2s/nXxw0tTqg8HzlbPs80PIwHtwghLSM8mBjrOxVj2CkeJbmyz/TLMAIG1Bwp19z8pqphq1PY2jV9VwMP0FXWqiD2DYM6LBgpVJpO0dTV7mbvcRL9cuyBJstMv066BwuxYYJVg7ljypiMDVi58HS64hPYSEXny1B7C+Temi4YoDPFNXSwJOtVIUPq3g7z8UadGKDqYctRmt/8yu+yoTlkA4agZZjEacuXlwrPAx2iZzlTZ+tHrtnYAewCE9H4TwYkR2aAuo50zL52Vk1kJyhHGQMpisCEh+hJkzEyiebZK4aaX48nmwYQsfPRpWkMES6v1XqzIXFek5twGVqBcUzowUJOnBAk0KD28vD8/v7+XiODxLbQUJRJQMJnusKp8KWmIj8EQPDJf7HAgYt+OlcZgfYyMkgyPr4drkRowYiZ8BPvzvGJxXrXVte0KJSQ9VQf1HAsb6qq2n37q1hWnxmnrGDULAa6p75wBn9dZaRBvf9oB9F46voyhmFoXMwR2HR4ev/pdrvL85QZ65EDw5VLH+DF2AutSTZ2toYNYuWo6DiC/NbtCDy42u40itY3l3V4OTy8uyclS5jPiqlSskFBJBWwJz6tsay43PPz43a79S1BIjb9Mo9+MVdGZ1Yiw/w1gvquIlWfECY8n68AjOQki9O6zNqzaQXektHQyGSgOHaeIwhkXjxmImUg56wJ6Fd9mHiWnL/9lX+f5WuyPuNYp1ZExOQcAOmpJX/UMPBBHozOUaNzATMpgzpOqmNe1cGV9cfDYc+DFtQnrTMj2Kou04Y3N79p08DYq+pNoUaqYAVhAdQXwQncocbOXXiCQh6R/RzaaBiyJug9bIC3ZuwFUcdno+MpVtuX56d8vdJgd/ZiWPvpMpFEC83joEYOatTZFZybKz/RTx1n0Fd17YexjZ9edN+zRBjFan5r1WV45libqcpznmcEFWQu92qZpdggVM3S1P30u19mf/k4Wp6JWfzIh3KxU4QTG5vFapLDw94Da5SzsTQcRK3TdawL7Xg6FXDGqnRxwOREUgxkEaFakq0iLvFkM25F5hjV0Ua8pbkYZET57IlKcPfNKmPPmZFGli5gmZHZbD1fGviSrA8CdtwoxU7ADi8T8UibYL2Loz8JRazb0ygo3mwOd9Y8aNaSW7YSjN04BXFaEL0p76E5j2+NJrMdUKF8+dhGDDYRavOfQq7hqLMYSD+oq7Fr3D/94C9scIU1IZnSsR87inUcz/jWKeJJNkcdGKWGFaM4YWXnJbF0udaionJ+oPpie1LyAq+pW574wsOPllGyvnqEibywJ02NOKtqmNPEXjasBQT7m60c5qym+tCGDRLS+p5ogSMRYRgYOsEvatbQ+2K9sYGZZi5Y8efqBTYvQAVq8kLMdGpzrH1nVHTTYW9h3w1qz0vQMhnv1dgBuGbLTge2l7F7UUQ/Yr0AQNizxhUKb9u6f/zefwkMB4hcZa2oM+mPIRy6bQKuqxNsRslmbx1j8G1u7i1TOGtIAQJ5BLTr3UZwS9P8HDO+LWnEQ6wx/Az629aagFiMGhS8ev61rPCSUJ+mbe/ubmH6yJwWPZpNi2ofUAg/CcwPRjfTTNglY902TV4UNF+4qehK3tKPN87UYs+mX2lZnVX2vWWMO3taJoLi1vNjTfByaiK1MyatT5LJlvJ4hJvc3b9z6uSNIw0YgeWME2PKw4fCAnME+D985089ARqG7oGdlrmcNWejwhWt2myqQFWiXkytSWWSCYsFecb+4Msvr6/YxP3dbc9Ehm9DPAVVA5LjJgu6nThVAyWAfCwyZ7XBLWfy9DBMye393kZkz0sxarGnkCYbQTe/tWuoasL8kM4HISrQIGbfCrImkW/ziBYOkvLF7NxViZecWzsviugZmsRDQ0Pr5iHFaLLCE3N/HAI0cqpnQZPqWTvOUskhKdPOHWwUqkTuv3/zi5RKrVugZKINQSNA57glOLtMAz0GgbJGWSuNGnMc84SNBqpvIWNNeXh5WRf5hvobqWV71Ji+2oWJ6G9dDOw9tpa0x23aqkYIywEYRGxTyw6SLo3ju/3NMnyMObNApzuE1tJieY3FBwRGaRmtr4PnR2YZ2ztZbCG00olTyzQLXyZlcr/mW5sotzYhTx6MhHpH2bJuOXZA6ySUWIS2FsKTZAXPEbKzAuSJgjA1aIzHqZhY8Kzm5v77t74o4gmT4cv5gEu7mOp5TI4RAjCCakq7oJ376HuCpSIDwSC+vr4CMZKTHsd5zuH6b7MpPUWlbKCMNCCAis+ceCueQ8rpFYy1Bw7m9DgZAe/Hhnhr1RfRU2fIcUk32xUwo7wX6ReThuUr4eCdzhdoXaomDW9puBFPQGlq24zZzmxbxp6Pig/ehltrWTvE7gjV6NapJTAL2hLqWdcx0RXHoRrYeuEwUWvJTgw42aVt3tpOfPd33/iDpChCgoFhnn4z8nZcTs+LrG6hKUMckmJ7hMdIE9rBSYdzVFUbpmme5eT/VGVfXnfssFLfMsBXkikB2Cg9zKSPzVvB5kPx6G46mlcWhdL8dDisVkWS5Z4qDiqajSGn0wLbNlDRuz3nb9nRhKPlbZhV6Kq6z9MIDj9fb534aDY7YLKjP2RJlL6i2mlSQa8O4tmm5MICs2bbcoK6hlP3QbAwSPCV1XprI+CNIUOgFsRCfr3OB/Z5Gqez02F5WJ/7mz/5P2/2d9gQzXWDdKZG31Cj+bAc0jZQWSBbQ9ssg8RnmyGaqj7EuX865MW3EzRGTSAcOPSvx/JhZbAc+Pn5XOVZgkUjX5300pBgvljxdMYwkFmcD6+HVbFSOZ51wElTZzifl86uN47QjkdgJaOMNB61aQADZoDfPA7SYp1m6VLrJTJb+ihsho1lNjwDWf4CslTl9jQxeGrYNqgZEMPgjF0/DJzEpAa7hTzDQj6TJmadbLq00gIk/ThRB92//virNFucnK/RfEBwyr+RUCu0JCylViRlMeQOZizH+VSSRd0DD0XFZhUqq2QcHkIxpgrVBaxyMiEurEDL9CNWlsPqThcSdW73HpuuOTNQ2lAxEZXm8CSM09QSyKBw0jhh59/ut2Kj0MZwhqNjdF+WteNBkfH5eFzl2KbCMr9q5nc6dM2zw+bUOLucpYEVyVdrZp2VWLHONg53qxuObgkggI1NA8IqrzZbDWkdRAEZ1MdElaAITiyq2LBehshKgrl//u6fTjot1mo4ZO/3MJSHuuYcw0gT/LI8JfdRIxGV1WOiJ8VP89Xx9QiMSeTbdzYd1ukIniVhpZmXdjyQ1Ws9O3tlnB6fnmNywQoyVRUXWqr7eq3hQied4aDpsw7GhVPYghlPn8QpXvh8eI38WTg8wladz2W6KlKVsCAi2806gtlhtWrJmgtLqURE9e00CxBXQ+yX84AvNQ54C5XB9UTWZOc3bcdbh0Hfdjo3CCEAXEzKie880S0yqn6sURmWi1ItQwjhp9/6UpzGTV1T3NyMWKUDXhHFqUPIDOTR8cDb18MJIGJ7e5uwHYKTd8Ngrjp3fHy8vdsHyr2SQNgPGtHeazCVnQlCIs4ojpiJs+bGDu0wNW2fsQPNtyQsQk5Ax8ulxu3UP8fqliYDBFz6oRo9v2FultEqOxejTEowlFXFM5Lwxml6vZy7urm5vdNoPYICZlVsauREKfFtbM80Xs9nPHOxXjELEcRGfLFYA7uCD3I2qSrb0KEP75+hZBAk6QHnxTR1xzIPCZM8hmu922l8jDVZj+7bX/mPW2iNzv4jbLdBUzrzN4399bpA7IRLX8srUCt0wdjcIvW54+kAAd5sdxaZ6Hi13jMeiwI26wVGiGUOUBXUySLB66WCJk9do3NT6C5UdnB2VogGkoejJiiRv8XTu5mbe369ejwGKhdV1ZfnDeBnijxRKsBr2/rw8ux7/s3NBmCp7ZjnFhiLlFCedDYkqWlQ3fPpxOGMUZAmFL26ajmqKN8gKnnr12rYptU2Vd2wd1Z9SGpfooKV1/qTX30o1sB17KN9m7fgs6D9na/+J3xIQNqzbi0lNKmqbXn96OP7iTiD42mtFxY2cJhsDr13en3abm4iFoQH9cC5BYhrDIa6v7jWgc7Rcm/ZIFn88XIpd1sIV6W+G6hjwZuL8DMts+x59BrPO9E5IspEubICCo67+jrLBXc8pWbMVysd/8OjOzW6fezFEAKiIMwMLOEinMgQfjl+3WxO3XawyhBlPOTLy1OcFnFScFq1x2ouhO/48rrb73Q88WDNRDoxzsfSVWX7+vJ8i5jQYjYOju+h96sidz/869/naYUIfibWstRmPqZpBLT19Phyt73Z3t20GnkIC5IWhZJTA3m8MMHPL7/12c8x0h87vDmnwb0Ntf3NeWFqNrUDV94GylBioa0BC5w5k9me+GbsMQ1sIDZzZjqBWb5ylL/WxDPA23SNf9TlCYYjXUN7wqq8OPFcNIWB8YuvA3/YZw+QYA5XM3jsDOWFxKM+GOvETZIIwXk3Uv2dMizirXD+D8GDjjCwoYLi2/qsTjXtHHhdC1c/Mastt4Enf358qZvK/fgb/1kMjpFrOo850HS2Ej3R12yQw2a9g2q8fPg0LwDFE4bXdIjudG4oY1m2TBfjgFc7MOeNyrucqj1aTrbXmdjzMthFnZ9RojM7YFkbAanA2hsny/kEqunPg9Opjkz+kqEFo+yidMOj11i4nHW8XmfnqQyDnRiS2fAb7aCmH4lqaYcWLa6UPTqDcltOp7H0M090YyJSR2f4alH0dahweDoceQrJNFvZmQyteQZmWW13cUS27PV0hH/imMGBE64omv/8nT/kWLBhZHkkheNL1QWigzR119OlWxXFJ5/8Ek+yXm+LQgdkBX5VTfC5drKaktaJDhI0jK00hwh7dhQ0tJxNYDZU18hFEyvGaqfC6nU6CGFU9O0GMT1I+Jj6kOfEzIsNUVq6bock3wPdh46HCHDyJWPNpOXJ6UOk8w5+fWCCnW3qpEk6fHHJf1oSNrTmc7Y58Ahnkty5OKH2gAdIcGDy0PSjY3ew7MzS4844HvperlbweMHx5SmMA7b4a+QcDe8vf/KVQdPv8OTWQzZrppjvdVYgYw/F4JVNQ8Z0Glen0+3dCiFNRLa7bycSvo3qtenqVrj0FT6OOteY1QdKqw3SJBAY3n/6dP/wME2dMkY6g3ey9J0afCjjEE871ECdAhY0k/ELvQ5WrEHUHI4qgEE5FQjRWUXzMgXR2aEtzihiwdsp2YSxPJJqMUpkb3NM0KhOS6dOZNIFPfHsIF8Jx06NC0C0I661bSNMDElQyTjU9NuK6CZrUPq3H345B3hkyAIsBqsUXM7HgaMpRCyVznNOvR/jvhCiC8D36Xj38FDwQFJEk2+n9ZkB+/Whlr7hGDuzwTrvIUdsn+54GNXlk/cvv/253+Iw9ll9OW+jh5JwtsZL1esJ+phYEpPb42yx+HI+9+O83+94CJNKAHXTLyfTkiZoM44CU33NgGPbirUNWqeHnQ/OdkhBRc0RZf2Y5GQmiH21JozG6Y6jzHO/mcdj1TxlWnnI0+V46ttyvV0Xq92kDP2o3DQHNqUwRgGZoTpYEcpaSo+gOOy95JyWAY53nDWCA04W8nK739n0XcuD2Bg/RRrBryXCQoC3me1O442U1puny/l0Les0jjfb1dK5amha3lYzZC0X3Yc8NQuYYGQPLw+1YCm7qhrEgOL+MN7zmd8IrVKyZAAW6r2zzOmklKZRfJULh7NQpma2k6F5ApySKT27OkUyG9vWk1T5Nud0Xs4+sAqjek64HufDwfO69Xbr22k7GrOG5/r/AExbjJU3DEkPAAAAAElFTkSuQmCC";
74829
74888
  const DownFill = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAA6klEQVR4AeyVwQ3CMAxFnZw6BqPQSRBbcEDiQiXGgEnoKEwBPSX4H+CAimM7CA6k6r80/v8lVuRG+tHTwF9rfGt1azV127x0aZMXUvuKlytmWrHOFoVMu+kQLlXg6xDWHHBkqd5MNN6G0JeKiydGgBauhSJTBUZhCW6BIk8NRvE7uBWKLBMYhle4B4ocMximB9wLRYYLDCPgmtuL2jm5wXNhlm8iuOPp45pamHbslTYigmMk89R6Tjj2usGSsXZNPHFKdEqBepfYK21OBGPQT/swulT7k5B2XbMmnrgmuORt4FKHPrb+f62+AwAA//94RD+mAAAABklEQVQDAFK0zD0qFi7YAAAAAElFTkSuQmCC";
74830
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
74889
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
74831
74890
  ...{
74832
74891
  name: "NsSaturationLine"
74833
74892
  },
@@ -76066,14 +76125,14 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
76066
76125
  };
76067
76126
  }
76068
76127
  });
76069
- 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"]]);
76070
76129
  NsSaturationLine.install = (app2) => {
76071
76130
  const componentName = NsSaturationLine.name || "NsSaturationLine";
76072
76131
  app2.component(componentName, NsSaturationLine);
76073
76132
  };
76074
76133
  const EmptyPng = "data:image/png;base64,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";
76075
76134
  const _hoisted_1$3 = ["src"];
76076
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
76135
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
76077
76136
  __name: "NsImage",
76078
76137
  props: {
76079
76138
  src: {
@@ -76194,289 +76253,355 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
76194
76253
  };
76195
76254
  }
76196
76255
  });
76197
- 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"]]);
76198
76257
  NsImage.install = (app2) => {
76199
76258
  app2.component(NsImage.name, NsImage);
76200
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
+ };
76201
76278
  const _hoisted_1$2 = { class: "page-search" };
76202
- const _sfc_main$3 = {
76279
+ const _sfc_main$2 = /* @__PURE__ */ Object.assign({
76280
+ name: "NsSearch",
76281
+ inheritAttrs: false
76282
+ }, {
76203
76283
  __name: "PageSearch",
76204
76284
  props: {
76205
- // 搜索项配置
76206
76285
  items: {
76207
76286
  type: Array,
76208
- required: true,
76209
76287
  default: () => []
76210
76288
  },
76211
- // 外部注入的搜索参数(用于特殊情况传参)
76212
76289
  externalParams: {
76213
76290
  type: Object,
76214
76291
  default: () => ({})
76215
76292
  },
76216
- // 标签宽度
76217
- labelWidth: {
76218
- type: String,
76219
- default: "100px"
76220
- },
76221
- // 默认每项占用的 span
76222
76293
  defaultSpan: {
76223
76294
  type: Number,
76224
76295
  default: 6
76225
76296
  },
76226
- // 按钮占用的 span
76227
- buttonSpan: {
76228
- type: Number,
76229
- default: 6
76230
- },
76231
- // 按钮位置:first-第一行后面,last-最后一行后面
76232
- buttonPosition: {
76233
- type: String,
76234
- default: "last",
76235
- validator: (value) => ["first", "last"].includes(value)
76236
- },
76237
- // 是否显示展开/收起按钮
76238
76297
  showCollapse: {
76239
76298
  type: Boolean,
76240
76299
  default: true
76241
76300
  },
76242
- // 折叠时显示的项数
76243
76301
  collapseLimit: {
76244
76302
  type: Number,
76245
76303
  default: 3
76246
76304
  },
76247
- // 每行显示的项数(用于计算第一行最后一项的索引)
76248
- itemsPerRow: {
76305
+ slotRenderers: {
76306
+ type: Object,
76307
+ default: () => ({})
76308
+ },
76309
+ actionsAlign: {
76310
+ type: String,
76311
+ default: "left"
76312
+ },
76313
+ actionsSpan: {
76249
76314
  type: Number,
76250
- 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
76251
76328
  }
76252
76329
  },
76253
76330
  emits: ["search", "reset"],
76254
76331
  setup(__props, { expose: __expose, emit: __emit }) {
76255
76332
  const props = __props;
76256
76333
  const emit = __emit;
76334
+ const attrs = useAttrs();
76257
76335
  const formRef = ref$1(null);
76258
- const formData = ref$1({});
76336
+ const formData = reactive({});
76259
76337
  const isCollapsed = ref$1(true);
76260
- const totalItems = computed(() => props.items.length);
76261
- const firstRowLastIndex = computed(() => {
76262
- 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
+ });
76263
76360
  });
76264
76361
  const visibleItems = computed(() => {
76265
76362
  if (!props.showCollapse || !isCollapsed.value) {
76266
- 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;
76267
76369
  }
76268
- return props.items.slice(0, props.collapseLimit);
76370
+ return sourceItems.slice(0, Math.max(limit, 1));
76269
76371
  });
76270
- const initFormData = () => {
76271
- const data = {};
76272
- props.items.forEach((item) => {
76273
- if (item.defaultValue !== void 0) {
76274
- data[item.prop] = item.defaultValue;
76275
- } else {
76276
- data[item.prop] = void 0;
76277
- }
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;
76278
76415
  });
76279
- formData.value = { ...data, ...props.externalParams };
76280
- };
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
+ }
76281
76454
  watch(
76282
- () => props.externalParams,
76283
- (newVal) => {
76284
- if (newVal && Object.keys(newVal).length > 0) {
76285
- formData.value = { ...formData.value, ...newVal };
76286
- }
76455
+ () => props.items,
76456
+ () => {
76457
+ initFormData();
76287
76458
  },
76288
76459
  { deep: true, immediate: true }
76289
76460
  );
76290
76461
  watch(
76291
- () => props.items,
76462
+ () => props.externalParams,
76292
76463
  () => {
76293
- initFormData();
76464
+ Object.assign(formData, { ...props.externalParams });
76294
76465
  },
76295
- { deep: true }
76466
+ { deep: true, immediate: true }
76296
76467
  );
76297
- const handleSearch = () => {
76298
- emit("search", { ...formData.value, _resetPage: true });
76299
- };
76300
- const handleReset = () => {
76301
- const data = {};
76302
- props.items.forEach((item) => {
76303
- if (item.defaultValue !== void 0) {
76304
- data[item.prop] = item.defaultValue;
76305
- } else {
76306
- data[item.prop] = void 0;
76307
- }
76308
- });
76309
- formData.value = { ...data, ...props.externalParams };
76310
- emit("search", { ...formData.value, _resetPage: true });
76311
- emit("reset");
76312
- };
76313
- const toggleCollapse = () => {
76314
- isCollapsed.value = !isCollapsed.value;
76315
- };
76316
- __expose({
76317
- formRef,
76318
- getFormData: () => ({ ...formData.value }),
76319
- setFormData: (data) => {
76320
- formData.value = { ...formData.value, ...data };
76321
- },
76322
- resetForm: handleReset,
76323
- validate: () => {
76324
- var _a3;
76325
- return (_a3 = formRef.value) == null ? void 0 : _a3.validate();
76326
- },
76327
- clearValidate: (props2) => {
76328
- var _a3;
76329
- 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);
76330
76483
  }
76331
- });
76332
- onMounted(() => {
76333
- initFormData();
76484
+ }
76485
+ __expose({
76486
+ getFormData,
76487
+ setFormData,
76488
+ resetForm,
76489
+ validate,
76490
+ clearValidate,
76491
+ formRef
76334
76492
  });
76335
76493
  return (_ctx, _cache) => {
76494
+ const _component_el_option = resolveComponent("el-option");
76336
76495
  const _component_el_form_item = resolveComponent("el-form-item");
76337
76496
  const _component_el_col = resolveComponent("el-col");
76338
76497
  const _component_el_button = resolveComponent("el-button");
76339
76498
  const _component_el_icon = resolveComponent("el-icon");
76340
76499
  const _component_el_row = resolveComponent("el-row");
76341
76500
  const _component_el_form = resolveComponent("el-form");
76501
+ const _directive_enterClick = resolveDirective("enterClick");
76342
76502
  return openBlock(), createElementBlock("div", _hoisted_1$2, [
76343
- createVNode(_component_el_form, {
76503
+ createVNode(_component_el_form, mergeProps({
76344
76504
  ref_key: "formRef",
76345
76505
  ref: formRef,
76346
- model: formData.value,
76347
- "label-width": __props.labelWidth,
76348
- inline: false
76349
- }, {
76506
+ inline: true,
76507
+ model: formData
76508
+ }, formAttrs.value, { class: "page-search__form" }), {
76350
76509
  default: withCtx(() => [
76351
- createVNode(_component_el_row, { gutter: 16 }, {
76510
+ createVNode(_component_el_row, {
76511
+ gutter: 16,
76512
+ type: "flex",
76513
+ class: "page-search__row"
76514
+ }, {
76352
76515
  default: withCtx(() => [
76353
76516
  (openBlock(true), createElementBlock(Fragment, null, renderList(visibleItems.value, (item, index2) => {
76354
- return openBlock(), createElementBlock(Fragment, { key: index2 }, [
76355
- createVNode(_component_el_col, {
76356
- span: item.span || __props.defaultSpan
76357
- }, {
76358
- default: withCtx(() => [
76359
- createVNode(_component_el_form_item, {
76360
- label: item.label,
76361
- prop: item.prop
76362
- }, {
76363
- default: withCtx(() => [
76364
- item.component ? (openBlock(), createBlock(resolveDynamicComponent(item.component), mergeProps({
76365
- key: 0,
76366
- modelValue: formData.value[item.prop],
76367
- "onUpdate:modelValue": ($event) => formData.value[item.prop] = $event
76368
- }, { ref_for: true }, item.attrs, toHandlers(item.events || {})), {
76369
- default: withCtx(() => [
76370
- item.children && item.children.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(item.children, (child) => {
76371
- return openBlock(), createBlock(resolveDynamicComponent("el-option"), {
76372
- key: child.value,
76373
- label: child.label,
76374
- value: child.value
76375
- }, null, 8, ["label", "value"]);
76376
- }), 128)) : createCommentVNode("", true)
76377
- ]),
76378
- _: 2
76379
- }, 1040, ["modelValue", "onUpdate:modelValue"])) : item.type === "slot" ? renderSlot(_ctx.$slots, item.slot, {
76380
- key: 1,
76381
- formData: formData.value,
76382
- item
76383
- }, void 0, true) : createCommentVNode("", true)
76384
- ]),
76385
- _: 2
76386
- }, 1032, ["label", "prop"])
76387
- ]),
76388
- _: 2
76389
- }, 1032, ["span"]),
76390
- __props.buttonPosition === "first" && index2 === firstRowLastIndex.value ? (openBlock(), createBlock(_component_el_col, {
76391
- key: 0,
76392
- span: __props.buttonSpan,
76393
- class: "search-buttons"
76394
- }, {
76395
- default: withCtx(() => [
76396
- createVNode(_component_el_form_item, { "label-width": "0" }, {
76397
- default: withCtx(() => [
76398
- createVNode(_component_el_button, {
76399
- type: "primary",
76400
- icon: unref(search_default),
76401
- onClick: handleSearch
76402
- }, {
76403
- default: withCtx(() => [..._cache[0] || (_cache[0] = [
76404
- createTextVNode(" 查询 ", -1)
76405
- ])]),
76406
- _: 1
76407
- }, 8, ["icon"]),
76408
- createVNode(_component_el_button, {
76409
- icon: unref(refresh_default),
76410
- onClick: handleReset
76411
- }, {
76412
- default: withCtx(() => [..._cache[1] || (_cache[1] = [
76413
- createTextVNode(" 重置 ", -1)
76414
- ])]),
76415
- _: 1
76416
- }, 8, ["icon"]),
76417
- __props.showCollapse && totalItems.value > __props.collapseLimit ? (openBlock(), createBlock(_component_el_button, {
76418
- key: 0,
76419
- type: "primary",
76420
- link: "",
76421
- onClick: toggleCollapse
76422
- }, {
76423
- default: withCtx(() => [
76424
- createTextVNode(toDisplayString(isCollapsed.value ? "展开" : "收起") + " ", 1),
76425
- createVNode(_component_el_icon, { class: "el-icon--right" }, {
76426
- default: withCtx(() => [
76427
- (openBlock(), createBlock(resolveDynamicComponent(isCollapsed.value ? "ArrowDown" : "ArrowUp")))
76428
- ]),
76429
- _: 1
76430
- })
76431
- ]),
76432
- _: 1
76433
- })) : createCommentVNode("", true)
76434
- ]),
76435
- _: 1
76436
- })
76437
- ]),
76438
- _: 1
76439
- }, 8, ["span"])) : createCommentVNode("", true)
76440
- ], 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"]);
76441
76554
  }), 128)),
76442
- __props.buttonPosition === "last" ? (openBlock(), createBlock(_component_el_col, {
76443
- key: 0,
76444
- span: __props.buttonSpan,
76445
- 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])
76446
76559
  }, {
76447
76560
  default: withCtx(() => [
76448
76561
  createVNode(_component_el_form_item, { "label-width": "0" }, {
76449
76562
  default: withCtx(() => [
76450
- createVNode(_component_el_button, {
76563
+ __props.enterTrigger ? withDirectives((openBlock(), createBlock(_component_el_button, {
76564
+ key: 0,
76451
76565
  type: "primary",
76452
- icon: unref(search_default),
76453
76566
  onClick: handleSearch
76454
76567
  }, {
76455
- default: withCtx(() => [..._cache[2] || (_cache[2] = [
76456
- createTextVNode(" 查询 ", -1)
76568
+ default: withCtx(() => [..._cache[0] || (_cache[0] = [
76569
+ createTextVNode("查询", -1)
76457
76570
  ])]),
76458
76571
  _: 1
76459
- }, 8, ["icon"]),
76460
- createVNode(_component_el_button, {
76461
- icon: unref(refresh_default),
76462
- onClick: handleReset
76572
+ })), [
76573
+ [_directive_enterClick]
76574
+ ]) : (openBlock(), createBlock(_component_el_button, {
76575
+ key: 1,
76576
+ type: "primary",
76577
+ onClick: handleSearch
76463
76578
  }, {
76464
- default: withCtx(() => [..._cache[3] || (_cache[3] = [
76465
- createTextVNode(" 重置 ", -1)
76579
+ default: withCtx(() => [..._cache[1] || (_cache[1] = [
76580
+ createTextVNode("查询", -1)
76466
76581
  ])]),
76467
76582
  _: 1
76468
- }, 8, ["icon"]),
76469
- __props.showCollapse && totalItems.value > __props.collapseLimit ? (openBlock(), createBlock(_component_el_button, {
76470
- key: 0,
76471
- 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,
76472
76597
  link: "",
76473
76598
  onClick: toggleCollapse
76474
76599
  }, {
76475
76600
  default: withCtx(() => [
76476
- createTextVNode(toDisplayString(isCollapsed.value ? "展开" : "收起") + " ", 1),
76477
- 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, {
76478
76603
  default: withCtx(() => [
76479
- (openBlock(), createBlock(resolveDynamicComponent(isCollapsed.value ? "ArrowDown" : "ArrowUp")))
76604
+ (openBlock(), createBlock(resolveDynamicComponent(isCollapsed.value ? unref(arrow_down_default) : unref(arrow_up_default))))
76480
76605
  ]),
76481
76606
  _: 1
76482
76607
  })
@@ -76488,380 +76613,338 @@ const _sfc_main$3 = {
76488
76613
  })
76489
76614
  ]),
76490
76615
  _: 1
76491
- }, 8, ["span"])) : createCommentVNode("", true)
76616
+ }, 8, ["span", "style", "class"])
76492
76617
  ]),
76493
- _: 3
76618
+ _: 1
76494
76619
  })
76495
76620
  ]),
76496
- _: 3
76497
- }, 8, ["model", "label-width"])
76621
+ _: 1
76622
+ }, 16, ["model"])
76498
76623
  ]);
76499
76624
  };
76500
76625
  }
76501
- };
76502
- const NsSearch = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-202ad5bb"]]);
76503
- const DEFAULT_PAGINATION = {
76504
- total: 0,
76505
- currentPage: 1,
76506
- pageSize: 10
76507
- };
76508
- function createPagination(customParams) {
76509
- return {
76510
- ...DEFAULT_PAGINATION,
76511
- ...customParams
76512
- };
76513
- }
76514
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
76515
- __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",
76516
76641
  props: {
76517
76642
  column: {
76518
76643
  type: Object,
76519
76644
  required: true
76645
+ },
76646
+ slotRenderers: {
76647
+ type: Object,
76648
+ default: () => ({})
76520
76649
  }
76521
76650
  },
76522
76651
  emits: ["link-click", "button-click"],
76523
- setup(__props, { emit: __emit }) {
76524
- const emit = __emit;
76525
- const isBtnDisabled = (btn, row) => {
76526
- if (!btn.disabled) return false;
76527
- if (typeof btn.disabled === "function") {
76528
- 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;
76529
76667
  }
76530
- return Boolean(btn.disabled);
76531
- };
76532
- const isBtnShow = (btn, row) => {
76533
- if (!btn.show) return true;
76534
- if (typeof btn.show === "function") {
76535
- return btn.show(row);
76668
+ if (config.show === void 0) {
76669
+ return true;
76536
76670
  }
76537
- return Boolean(btn.show);
76538
- };
76539
- const formatValue = (value, column) => {
76540
- if (column.formatter) {
76541
- 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 "-";
76542
76713
  }
76543
- if (column.enum) {
76544
- 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);
76545
76729
  }
76546
- return value;
76547
- };
76548
- const getTagType = (value, tagMap) => {
76549
- if (!tagMap) return "";
76550
- return tagMap[value] || "";
76551
- };
76552
- const handleButtonClick = (btn, row, index2) => {
76553
- if (isBtnDisabled(btn, row)) {
76554
- 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;
76555
76744
  }
76556
- if (btn.handler) {
76557
- 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);
76558
76752
  }
76559
- emit("button-click", btn, row, index2);
76560
- };
76561
- const handleLinkClick = (row, column) => {
76562
- emit("link-click", row, column);
76563
- };
76564
- const boundColumnProps = [
76565
- "prop",
76566
- "label",
76567
- "width",
76568
- "minWidth",
76569
- "fixed",
76570
- "sortable",
76571
- "align",
76572
- "headerAlign",
76573
- "showOverflowTooltip",
76574
- "type",
76575
- "slot",
76576
- "buttons",
76577
- "tagMap",
76578
- "imageWidth",
76579
- "imageHeight",
76580
- "previewList",
76581
- "formatter",
76582
- "format",
76583
- "enum",
76584
- "attrs",
76585
- "children"
76586
- ];
76587
- const getColumnAttrs = (column) => {
76588
- const result = {};
76589
- for (const key in column) {
76590
- if (!boundColumnProps.includes(key)) {
76591
- result[key] = column[key];
76592
- }
76753
+ if (column.type === "action") {
76754
+ return h$2("div", { class: "ns-table-column__actions" }, renderActionButtons(scope, column));
76593
76755
  }
76594
- if (column.attrs) {
76595
- Object.assign(result, column.attrs);
76756
+ if (column.type === "tag") {
76757
+ return renderTag(scope, column);
76596
76758
  }
76597
- return result;
76598
- };
76599
- return (_ctx, _cache) => {
76600
- const _component_TableColumn = resolveComponent("TableColumn", true);
76601
- const _component_el_button = resolveComponent("el-button");
76602
- const _component_el_tag = resolveComponent("el-tag");
76603
- const _component_el_image = resolveComponent("el-image");
76604
- const _component_el_link = resolveComponent("el-link");
76605
- const _component_el_table_column = resolveComponent("el-table-column");
76606
- return openBlock(), createBlock(_component_el_table_column, mergeProps({
76607
- prop: __props.column.prop,
76608
- label: __props.column.label,
76609
- width: __props.column.width,
76610
- "min-width": __props.column.minWidth,
76611
- fixed: __props.column.fixed,
76612
- sortable: __props.column.sortable,
76613
- align: __props.column.align || "center",
76614
- "header-align": __props.column.headerAlign,
76615
- "show-overflow-tooltip": __props.column.showOverflowTooltip !== false
76616
- }, getColumnAttrs(__props.column)), createSlots({
76617
- default: withCtx(() => [
76618
- __props.column.children && __props.column.children.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.column.children, (child, index2) => {
76619
- return openBlock(), createBlock(_component_TableColumn, {
76620
- key: child.prop || `${__props.column.label}-child-${index2}`,
76621
- column: child
76622
- }, createSlots({ _: 2 }, [
76623
- renderList(_ctx.$slots, (_3, slotName) => {
76624
- return {
76625
- name: slotName,
76626
- fn: withCtx((slotData) => [
76627
- renderSlot(_ctx.$slots, slotName, mergeProps({ ref_for: true }, slotData))
76628
- ])
76629
- };
76630
- })
76631
- ]), 1032, ["column"]);
76632
- }), 128)) : createCommentVNode("", true)
76633
- ]),
76634
- _: 2
76635
- }, [
76636
- !__props.column.children || !__props.column.children.length ? {
76637
- name: "default",
76638
- fn: withCtx((scope) => [
76639
- __props.column.type === "action" ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.column.buttons, (btn, index2) => {
76640
- return openBlock(), createElementBlock(Fragment, { key: index2 }, [
76641
- btn.slot ? renderSlot(_ctx.$slots, btn.slot, {
76642
- key: 0,
76643
- row: scope.row,
76644
- $index: scope.$index
76645
- }) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
76646
- isBtnShow(btn, scope.row) ? (openBlock(), createBlock(_component_el_button, {
76647
- key: 0,
76648
- type: btn.type || "primary",
76649
- size: btn.size || "small",
76650
- link: btn.link,
76651
- icon: btn.icon,
76652
- disabled: isBtnDisabled(btn, scope.row),
76653
- class: normalizeClass({
76654
- "is-disabled-custom": isBtnDisabled(btn, scope.row)
76655
- }),
76656
- onClick: withModifiers(($event) => handleButtonClick(btn, scope.row, scope.$index), ["stop"])
76657
- }, {
76658
- default: withCtx(() => [
76659
- createTextVNode(toDisplayString(btn.label), 1)
76660
- ]),
76661
- _: 2
76662
- }, 1032, ["type", "size", "link", "icon", "disabled", "class", "onClick"])) : createCommentVNode("", true)
76663
- ], 64))
76664
- ], 64);
76665
- }), 128)) : __props.column.slot ? renderSlot(_ctx.$slots, __props.column.slot, {
76666
- key: 1,
76667
- row: scope.row,
76668
- column: __props.column,
76669
- $index: scope.$index
76670
- }, () => [
76671
- createTextVNode(toDisplayString(scope.row[__props.column.prop]), 1)
76672
- ]) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
76673
- __props.column.type === "tag" ? (openBlock(), createBlock(_component_el_tag, {
76674
- key: 0,
76675
- type: getTagType(scope.row[__props.column.prop], __props.column.tagMap)
76676
- }, {
76677
- default: withCtx(() => [
76678
- createTextVNode(toDisplayString(formatValue(scope.row[__props.column.prop], __props.column)), 1)
76679
- ]),
76680
- _: 2
76681
- }, 1032, ["type"])) : __props.column.type === "image" ? (openBlock(), createBlock(_component_el_image, {
76682
- key: 1,
76683
- src: scope.row[__props.column.prop],
76684
- style: normalizeStyle({
76685
- width: __props.column.imageWidth || "50px",
76686
- height: __props.column.imageHeight || "50px"
76687
- }),
76688
- "preview-src-list": __props.column.previewList ? [scope.row[__props.column.prop]] : void 0,
76689
- fit: "cover"
76690
- }, null, 8, ["src", "style", "preview-src-list"])) : __props.column.type === "link" ? (openBlock(), createBlock(_component_el_link, {
76691
- key: 2,
76692
- type: "primary",
76693
- onClick: ($event) => handleLinkClick(scope.row, __props.column)
76694
- }, {
76695
- default: withCtx(() => [
76696
- createTextVNode(toDisplayString(formatValue(scope.row[__props.column.prop], __props.column)), 1)
76697
- ]),
76698
- _: 2
76699
- }, 1032, ["onClick"])) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
76700
- createTextVNode(toDisplayString(formatValue(scope.row[__props.column.prop], __props.column)), 1)
76701
- ], 64))
76702
- ], 64))
76703
- ]),
76704
- key: "0"
76705
- } : void 0
76706
- ]), 1040, ["prop", "label", "width", "min-width", "fixed", "sortable", "align", "header-align", "show-overflow-tooltip"]);
76707
- };
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);
76708
76806
  }
76709
- });
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
+ }
76710
76819
  const _hoisted_1$1 = { class: "page-table" };
76711
- const _hoisted_2$1 = {
76820
+ const _hoisted_2 = {
76712
76821
  key: 0,
76713
- class: "table-header"
76822
+ class: "page-table__header"
76714
76823
  };
76715
- const _hoisted_3$1 = { class: "header-left" };
76716
- const _hoisted_4 = { class: "header-right" };
76824
+ const _hoisted_3 = { class: "page-table__actions" };
76825
+ const _hoisted_4 = { class: "page-table__main" };
76717
76826
  const _hoisted_5 = {
76718
76827
  key: 1,
76719
- class: "pagination-wrapper"
76828
+ class: "page-table__empty"
76829
+ };
76830
+ const _hoisted_6 = {
76831
+ key: 1,
76832
+ class: "page-table__pagination"
76720
76833
  };
76721
- const _sfc_main$1 = {
76834
+ const _sfc_main$1 = /* @__PURE__ */ Object.assign({
76835
+ name: "NsTable",
76836
+ inheritAttrs: false
76837
+ }, {
76722
76838
  __name: "PageTable",
76723
76839
  props: {
76724
- // 表格数据
76725
76840
  tableData: {
76726
76841
  type: Array,
76727
76842
  default: () => []
76728
76843
  },
76729
- // 列配置
76730
76844
  columns: {
76731
76845
  type: Array,
76732
76846
  default: () => []
76733
76847
  },
76734
- // 操作按钮配置
76735
76848
  actionButtons: {
76736
76849
  type: Array,
76737
76850
  default: () => []
76738
76851
  },
76739
- // 操作列宽度
76740
- actionColumnWidth: {
76741
- type: [String, Number],
76742
- default: 200
76743
- },
76744
- // 操作列固定
76745
- actionFixed: {
76746
- type: [String, Boolean],
76747
- default: "right"
76748
- },
76749
- // 操作列标签
76750
- actionColumnLabel: {
76751
- type: String,
76752
- default: "操作"
76753
- },
76754
- // 操作列对齐方式
76755
- actionColumnAlign: {
76756
- type: String,
76757
- default: "left"
76758
- },
76759
- // 操作列表头对齐方式
76760
- actionColumnHeaderAlign: {
76761
- type: String,
76762
- default: "center"
76763
- },
76764
- // 操作列最小宽度
76765
- actionColumnMinWidth: {
76766
- type: [String, Number],
76767
- default: void 0
76768
- },
76769
- // 是否显示新增按钮
76770
76852
  showAddButton: {
76771
76853
  type: Boolean,
76772
76854
  default: true
76773
76855
  },
76774
- // 新增按钮文本
76775
76856
  addButtonText: {
76776
76857
  type: String,
76777
76858
  default: "新增"
76778
76859
  },
76779
- // 是否显示表头工具栏
76780
76860
  showHeaderToolbar: {
76781
76861
  type: Boolean,
76782
76862
  default: true
76783
76863
  },
76784
- // 是否显示选择列
76785
76864
  showSelection: {
76786
76865
  type: Boolean,
76787
76866
  default: false
76788
76867
  },
76789
- // 是否显示序号列
76790
76868
  showIndex: {
76791
76869
  type: Boolean,
76792
76870
  default: false
76793
76871
  },
76794
- // 是否显示边框
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
+ },
76795
76884
  border: {
76796
76885
  type: Boolean,
76797
76886
  default: true
76798
76887
  },
76799
- // 是否显示斑马纹
76800
76888
  stripe: {
76801
76889
  type: Boolean,
76802
76890
  default: false
76803
76891
  },
76804
- // 表格高度
76805
76892
  height: {
76806
76893
  type: [String, Number],
76807
76894
  default: void 0
76808
76895
  },
76809
- // 表格最大高度
76810
76896
  maxHeight: {
76811
76897
  type: [String, Number],
76812
76898
  default: void 0
76813
76899
  },
76814
- // 行数据的 Key
76900
+ autoHeight: {
76901
+ type: Boolean,
76902
+ default: true
76903
+ },
76815
76904
  rowKey: {
76816
76905
  type: [String, Function],
76817
76906
  default: void 0
76818
76907
  },
76819
- // 是否默认展开所有行
76820
76908
  defaultExpandAll: {
76821
76909
  type: Boolean,
76822
76910
  default: false
76823
76911
  },
76824
- // 是否高亮当前行
76825
76912
  highlightCurrentRow: {
76826
76913
  type: Boolean,
76827
76914
  default: false
76828
76915
  },
76829
- // 是否显示加载状态
76830
76916
  loading: {
76831
76917
  type: Boolean,
76832
76918
  default: false
76833
76919
  },
76834
- // 是否显示分页
76835
76920
  showPagination: {
76836
76921
  type: Boolean,
76837
76922
  default: true
76838
76923
  },
76839
- // 总条数
76840
76924
  total: {
76841
76925
  type: Number,
76842
76926
  default: 0
76843
76927
  },
76844
- // 当前页(可选,如果传入则使用外部值,否则使用内部管理)
76845
76928
  currentPage: {
76846
76929
  type: Number,
76847
76930
  default: null
76848
76931
  },
76849
- // 每页条数(可选,如果传入则使用外部值,否则使用内部管理)
76850
76932
  pageSize: {
76851
76933
  type: Number,
76852
76934
  default: null
76853
76935
  },
76854
- // 每页条数选项
76936
+ useDefaultPage: {
76937
+ type: Boolean,
76938
+ default: true
76939
+ },
76855
76940
  pageSizes: {
76856
76941
  type: Array,
76857
76942
  default: () => [10, 20, 50, 100]
76858
76943
  },
76859
- // 分页布局
76860
76944
  paginationLayout: {
76861
76945
  type: String,
76862
76946
  default: "total, sizes, prev, pager, next, jumper"
76863
76947
  },
76864
- // 分页参数自定义 key 名称
76865
76948
  pageNumberKey: {
76866
76949
  type: String,
76867
76950
  default: "currentPage"
@@ -76873,6 +76956,10 @@ const _sfc_main$1 = {
76873
76956
  pageTotalKey: {
76874
76957
  type: String,
76875
76958
  default: "total"
76959
+ },
76960
+ slotRenderers: {
76961
+ type: Object,
76962
+ default: () => ({})
76876
76963
  }
76877
76964
  },
76878
76965
  emits: [
@@ -76887,432 +76974,369 @@ const _sfc_main$1 = {
76887
76974
  "update:pageSize"
76888
76975
  ],
76889
76976
  setup(__props, { expose: __expose, emit: __emit }) {
76977
+ const RESERVED_LISTENERS = ["add", "selection-change", "sort-change", "row-click", "size-change", "current-change", "link-click"];
76890
76978
  const props = __props;
76891
76979
  const emit = __emit;
76892
76980
  const attrs = useAttrs();
76893
- const definedProps = [
76894
- "tableData",
76895
- "columns",
76896
- "actionButtons",
76897
- "actionColumnWidth",
76898
- "actionFixed",
76899
- "actionColumnLabel",
76900
- "actionColumnAlign",
76901
- "actionColumnHeaderAlign",
76902
- "actionColumnMinWidth",
76903
- "showAddButton",
76904
- "addButtonText",
76905
- "showHeaderToolbar",
76906
- "showSelection",
76907
- "showIndex",
76908
- "border",
76909
- "stripe",
76910
- "height",
76911
- "maxHeight",
76912
- "rowKey",
76913
- "defaultExpandAll",
76914
- "highlightCurrentRow",
76915
- "loading",
76916
- "showPagination",
76917
- "total",
76918
- "currentPage",
76919
- "pageSize",
76920
- "pageSizes",
76921
- "paginationLayout",
76922
- "pageNumberKey",
76923
- "pageSizeKey",
76924
- "pageTotalKey"
76925
- ];
76926
- const definedEvents = [
76927
- "add",
76928
- "selection-change",
76929
- "sort-change",
76930
- "row-click",
76931
- "size-change",
76932
- "current-change",
76933
- "link-click",
76934
- "update:currentPage",
76935
- "update:pageSize"
76936
- ];
76937
- const toKebabCase = (str) => {
76938
- return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
76939
- };
76940
- const toEventName = (eventName) => {
76941
- return "on" + eventName.replace(/-([a-z])/g, (_3, letter) => letter.toUpperCase());
76942
- };
76943
- const tableAttrs = computed(() => {
76944
- const result = {};
76945
- for (const key in attrs) {
76946
- const isDefinedProp = definedProps.some(
76947
- (prop) => key === prop || key === toKebabCase(prop)
76948
- );
76949
- const isDefinedEvent = definedEvents.some((event) => {
76950
- const eventKey = toEventName(event);
76951
- 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
+ }
76952
77000
  });
76953
- if (!isDefinedProp && !isDefinedEvent) {
76954
- result[key] = attrs[key];
76955
- }
76956
77001
  }
76957
- 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;
76958
77018
  });
76959
- const tableRef = ref$1(null);
76960
- const internalPagination = reactive(createPagination());
76961
77019
  watch(
76962
77020
  () => props.currentPage,
76963
- (newVal) => {
76964
- if (newVal !== null && newVal !== internalPagination.currentPage) {
76965
- internalPagination.currentPage = newVal;
77021
+ (value) => {
77022
+ if (value !== null) {
77023
+ internalPagination.currentPage = value;
76966
77024
  }
76967
77025
  },
76968
77026
  { immediate: true }
76969
77027
  );
76970
77028
  watch(
76971
77029
  () => props.pageSize,
76972
- (newVal) => {
76973
- if (newVal !== null && newVal !== internalPagination.pageSize) {
76974
- internalPagination.pageSize = newVal;
77030
+ (value) => {
77031
+ if (value !== null) {
77032
+ internalPagination.pageSize = value;
76975
77033
  }
76976
77034
  },
76977
77035
  { immediate: true }
76978
77036
  );
76979
- const currentPageModel = computed({
76980
- get: () => props.currentPage !== null ? props.currentPage : internalPagination.currentPage,
76981
- set: (val) => {
76982
- internalPagination.currentPage = val;
76983
- emit("update:currentPage", val);
76984
- }
76985
- });
76986
- const pageSizeModel = computed({
76987
- get: () => props.pageSize !== null ? props.pageSize : internalPagination.pageSize,
76988
- set: (val) => {
76989
- internalPagination.pageSize = val;
76990
- emit("update:pageSize", val);
76991
- }
76992
- });
76993
- const getNumIndex = (index2) => {
76994
- return (Number(currentPageModel.value) - 1) * Number(pageSizeModel.value) + index2 + 1;
76995
- };
76996
- const handleAdd = () => {
77037
+ function handleAdd() {
76997
77038
  emit("add");
76998
- };
76999
- const handleSelectionChange = (selection) => {
77039
+ }
77040
+ function handleSelectionChange(selection) {
77000
77041
  emit("selection-change", selection);
77001
- };
77002
- const handleSortChange2 = (sort) => {
77003
- emit("sort-change", sort);
77004
- };
77005
- const handleRowClick = (row, column, event) => {
77042
+ }
77043
+ function handleSortChange2(sort2) {
77044
+ emit("sort-change", sort2);
77045
+ }
77046
+ function handleRowClick(row, column, event) {
77006
77047
  emit("row-click", row, column, event);
77007
- };
77008
- const handleSizeChange = (size) => {
77048
+ }
77049
+ function handleSizeChange(size) {
77050
+ internalPagination.pageSize = size;
77051
+ if (!props.useDefaultPage) {
77052
+ emit("update:pageSize", size);
77053
+ }
77009
77054
  emit("size-change", size);
77010
- };
77011
- const handleCurrentChange = (page) => {
77055
+ }
77056
+ function handleCurrentChange(page) {
77057
+ internalPagination.currentPage = page;
77058
+ if (!props.useDefaultPage) {
77059
+ emit("update:currentPage", page);
77060
+ }
77012
77061
  emit("current-change", page);
77013
- };
77014
- const handleLinkClick = (row, column) => {
77062
+ }
77063
+ function handleLinkClick(row, column) {
77015
77064
  emit("link-click", row, column);
77016
- };
77017
- __expose({
77018
- tableRef,
77019
- // 选择列相关方法
77020
- clearSelection: () => {
77021
- var _a3, _b;
77022
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77023
- },
77024
- toggleRowSelection: (row, selected) => {
77025
- var _a3, _b;
77026
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleRowSelection) == null ? void 0 : _b.call(_a3, row, selected);
77027
- },
77028
- toggleAllSelection: () => {
77029
- var _a3, _b;
77030
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleAllSelection) == null ? void 0 : _b.call(_a3);
77031
- },
77032
- setCurrentRow: (row) => {
77033
- var _a3, _b;
77034
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.setCurrentRow) == null ? void 0 : _b.call(_a3, row);
77035
- },
77036
- // 获取选择数据
77037
- getSelectionRows: () => {
77038
- var _a3, _b;
77039
- return ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77040
- },
77041
- getSelectionKeys: () => {
77042
- var _a3, _b;
77043
- const rows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77044
- if (props.rowKey) {
77045
- if (typeof props.rowKey === "function") {
77046
- return rows.map((row) => props.rowKey(row));
77047
- } else {
77048
- return rows.map((row) => row[props.rowKey]);
77049
- }
77050
- }
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) {
77051
77080
  return rows;
77052
- },
77053
- // 设置选择数据
77054
- setSelectionRows: (rows) => {
77055
- var _a3, _b;
77056
- if (!tableRef.value) return;
77057
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77058
- rows.forEach((row) => {
77059
- var _a4, _b2;
77060
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77061
- });
77062
- },
77063
- setSelectionKeys: (keys2) => {
77064
- var _a3, _b;
77065
- if (!tableRef.value || !props.rowKey) return;
77066
- const tableData = props.tableData;
77067
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77068
- keys2.forEach((key) => {
77069
- var _a4, _b2;
77070
- const row = tableData.find((row2) => {
77071
- if (typeof props.rowKey === "function") {
77072
- return props.rowKey(row2) === key;
77073
- } else {
77074
- return row2[props.rowKey] === key;
77075
- }
77076
- });
77077
- if (row) {
77078
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77079
- }
77080
- });
77081
- },
77082
- // 判断是否选中
77083
- isRowSelected: (row) => {
77084
- var _a3, _b;
77085
- const selectedRows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77086
- return selectedRows.includes(row);
77087
- },
77088
- isKeySelected: (key) => {
77089
- var _a3, _b;
77090
- if (!props.rowKey) return false;
77091
- const selectedRows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77092
- return selectedRows.some((row) => {
77093
- if (typeof props.rowKey === "function") {
77094
- return props.rowKey(row) === key;
77095
- } else {
77096
- return row[props.rowKey] === key;
77097
- }
77098
- });
77099
- },
77100
- // 全选/取消全选
77101
- selectAll: () => {
77102
- var _a3, _b;
77103
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleAllSelection) == null ? void 0 : _b.call(_a3);
77104
- },
77105
- clearAllSelection: () => {
77106
- var _a3, _b;
77107
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77108
- },
77109
- // 表格操作相关方法
77110
- clearSort: () => {
77111
- var _a3, _b;
77112
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSort) == null ? void 0 : _b.call(_a3);
77113
- },
77114
- clearFilter: (columnKey) => {
77115
- var _a3, _b;
77116
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearFilter) == null ? void 0 : _b.call(_a3, columnKey);
77117
- },
77118
- doLayout: () => {
77119
- var _a3, _b;
77120
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.doLayout) == null ? void 0 : _b.call(_a3);
77121
- },
77122
- sort: (prop, order) => {
77123
- var _a3, _b;
77124
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.sort) == null ? void 0 : _b.call(_a3, prop, order);
77125
- },
77126
- // 分页控制方法
77127
- resetPage: () => {
77128
- 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) {
77129
77143
  emit("update:currentPage", 1);
77130
- },
77131
- setPage: (page) => {
77132
- internalPagination.currentPage = page;
77144
+ }
77145
+ }
77146
+ function setPage(page) {
77147
+ internalPagination.currentPage = page;
77148
+ if (!props.useDefaultPage) {
77133
77149
  emit("update:currentPage", page);
77134
- },
77135
- setPageSize: (size) => {
77136
- internalPagination.pageSize = size;
77150
+ }
77151
+ }
77152
+ function setPageSize(size) {
77153
+ internalPagination.pageSize = size;
77154
+ if (!props.useDefaultPage) {
77137
77155
  emit("update:pageSize", size);
77138
- },
77139
- getPagination: () => ({
77156
+ }
77157
+ }
77158
+ function getPagination() {
77159
+ return {
77140
77160
  [props.pageTotalKey]: props.total,
77141
77161
  [props.pageNumberKey]: currentPageModel.value,
77142
77162
  [props.pageSizeKey]: pageSizeModel.value
77143
- }),
77144
- setPagination: (pagination) => {
77145
- if (pagination.currentPage !== void 0) {
77146
- internalPagination.currentPage = pagination.currentPage;
77147
- emit("update:currentPage", pagination.currentPage);
77148
- }
77149
- if (pagination.pageSize !== void 0) {
77150
- internalPagination.pageSize = pagination.pageSize;
77151
- emit("update:pageSize", pagination.pageSize);
77152
- }
77163
+ };
77164
+ }
77165
+ function setPagination(pagination) {
77166
+ if (pagination.currentPage !== void 0) {
77167
+ setPage(pagination.currentPage);
77168
+ }
77169
+ if (pagination.pageSize !== void 0) {
77170
+ setPageSize(pagination.pageSize);
77153
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
77154
77195
  });
77155
77196
  return (_ctx, _cache) => {
77156
77197
  const _component_el_button = resolveComponent("el-button");
77157
77198
  const _component_el_table_column = resolveComponent("el-table-column");
77158
- const _component_el_empty = resolveComponent("el-empty");
77159
77199
  const _component_el_table = resolveComponent("el-table");
77160
77200
  const _component_el_pagination = resolveComponent("el-pagination");
77161
77201
  const _directive_loading = resolveDirective("loading");
77162
77202
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
77163
- renderSlot(_ctx.$slots, "page-content", {}, () => [
77164
- __props.showHeaderToolbar ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
77165
- createElementVNode("div", _hoisted_3$1, [
77166
- renderSlot(_ctx.$slots, "header-left", {}, void 0, true)
77167
- ]),
77168
- createElementVNode("div", _hoisted_4, [
77169
- renderSlot(_ctx.$slots, "header-right", {}, () => [
77170
- __props.showAddButton ? (openBlock(), createBlock(_component_el_button, {
77171
- key: 0,
77172
- type: "primary",
77173
- icon: unref(plus_default),
77174
- onClick: handleAdd
77175
- }, {
77176
- default: withCtx(() => [
77177
- createTextVNode(toDisplayString(__props.addButtonText), 1)
77178
- ]),
77179
- _: 1
77180
- }, 8, ["icon"])) : createCommentVNode("", true)
77181
- ], true)
77182
- ])
77183
- ])) : 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, [
77184
77227
  withDirectives((openBlock(), createBlock(_component_el_table, mergeProps({
77185
77228
  ref_key: "tableRef",
77186
- ref: tableRef
77187
- }, tableAttrs.value, {
77229
+ ref: tableRef,
77188
77230
  data: __props.tableData,
77189
77231
  border: __props.border,
77190
77232
  stripe: __props.stripe,
77191
- height: __props.height,
77192
- "max-height": __props.maxHeight,
77233
+ height: resolvedHeight.value,
77234
+ "max-height": resolvedMaxHeight.value,
77193
77235
  "row-key": __props.rowKey,
77194
77236
  "default-expand-all": __props.defaultExpandAll,
77195
77237
  "highlight-current-row": __props.highlightCurrentRow,
77238
+ class: ["page-table__table", { "page-table__table--no-border": !__props.border }]
77239
+ }, mergedAttrs.value, toHandlers(mergedListeners.value), {
77196
77240
  onSelectionChange: handleSelectionChange,
77197
77241
  onSortChange: handleSortChange2,
77198
77242
  onRowClick: handleRowClick
77199
77243
  }), {
77200
77244
  empty: withCtx(() => [
77201
- renderSlot(_ctx.$slots, "empty", {}, () => [
77202
- createVNode(_component_el_empty, { description: "暂无数据" })
77203
- ], 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, "暂无数据"))
77204
77250
  ]),
77205
77251
  default: withCtx(() => [
77206
77252
  __props.showSelection ? (openBlock(), createBlock(_component_el_table_column, {
77207
77253
  key: 0,
77208
77254
  type: "selection",
77209
77255
  width: "55",
77210
- align: "center",
77211
77256
  "reserve-selection": !!__props.rowKey
77212
77257
  }, null, 8, ["reserve-selection"])) : createCommentVNode("", true),
77213
77258
  __props.showIndex ? (openBlock(), createBlock(_component_el_table_column, {
77214
77259
  key: 1,
77215
77260
  type: "index",
77216
77261
  label: "序号",
77217
- width: "60",
77218
- index: getNumIndex,
77219
- align: "center"
77220
- })) : createCommentVNode("", true),
77221
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
77222
- return openBlock(), createBlock(_sfc_main$2, {
77223
- 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,
77224
77270
  column,
77271
+ "slot-renderers": __props.slotRenderers,
77225
77272
  onLinkClick: handleLinkClick
77226
- }, createSlots({ _: 2 }, [
77227
- renderList(_ctx.$slots, (_3, slotName) => {
77228
- return {
77229
- name: slotName,
77230
- fn: withCtx((slotData) => [
77231
- renderSlot(_ctx.$slots, slotName, mergeProps({ ref_for: true }, slotData), void 0, true)
77232
- ])
77233
- };
77234
- })
77235
- ]), 1032, ["column"]);
77273
+ }, null, 8, ["column", "slot-renderers"]);
77236
77274
  }), 128))
77237
77275
  ]),
77238
- _: 3
77239
- }, 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"])), [
77240
77278
  [_directive_loading, __props.loading]
77241
- ]),
77242
- __props.showPagination ? (openBlock(), createElementBlock("div", _hoisted_5, [
77243
- createVNode(_component_el_pagination, {
77244
- "current-page": currentPageModel.value,
77245
- "onUpdate:currentPage": _cache[0] || (_cache[0] = ($event) => currentPageModel.value = $event),
77246
- "page-size": pageSizeModel.value,
77247
- "onUpdate:pageSize": _cache[1] || (_cache[1] = ($event) => pageSizeModel.value = $event),
77248
- "page-sizes": __props.pageSizes,
77249
- total: __props.total,
77250
- layout: __props.paginationLayout,
77251
- onSizeChange: handleSizeChange,
77252
- onCurrentChange: handleCurrentChange
77253
- }, null, 8, ["current-page", "page-size", "page-sizes", "total", "layout"])
77254
- ])) : createCommentVNode("", true)
77255
- ], 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)
77256
77293
  ]);
77257
77294
  };
77258
77295
  }
77259
- };
77260
- 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"]]);
77261
77298
  const _hoisted_1 = { class: "page-container" };
77262
- const _hoisted_2 = {
77263
- key: 0,
77264
- class: "search-wrapper"
77265
- };
77266
- const _hoisted_3 = { class: "table-wrapper" };
77267
- const _sfc_main = {
77299
+ const _sfc_main = /* @__PURE__ */ Object.assign({
77300
+ name: "NsTableContainer"
77301
+ }, {
77268
77302
  __name: "PageContainer",
77269
77303
  props: {
77270
- // 是否显示搜索区域
77271
77304
  showSearch: {
77272
77305
  type: Boolean,
77273
77306
  default: true
77274
77307
  },
77275
- // 外部注入的搜索参数(用于特殊情况传参)
77276
77308
  externalSearchParams: {
77277
77309
  type: Object,
77278
77310
  default: () => ({})
77279
77311
  },
77280
- // 搜索项配置
77281
77312
  searchItems: {
77282
77313
  type: Array,
77283
77314
  default: () => []
77284
77315
  },
77285
- // 表格数据
77286
77316
  tableData: {
77287
77317
  type: Array,
77288
77318
  default: () => []
77289
77319
  },
77290
- // 列配置
77291
77320
  columns: {
77292
77321
  type: Array,
77293
77322
  default: () => []
77294
77323
  },
77295
- // 操作按钮配置
77296
77324
  actionButtons: {
77297
77325
  type: Array,
77298
77326
  default: () => []
77299
77327
  },
77300
- // 总条数
77301
77328
  total: {
77302
77329
  type: Number,
77303
77330
  default: 0
77304
77331
  },
77305
- // 当前页(可选,如果传入则使用外部值,否则使用内部管理)
77306
77332
  currentPage: {
77307
77333
  type: Number,
77308
77334
  default: null
77309
77335
  },
77310
- // 每页条数(可选,如果传入则使用外部值,否则使用内部管理)
77311
77336
  pageSize: {
77312
77337
  type: Number,
77313
77338
  default: null
77314
77339
  },
77315
- // 分页参数自定义 key 名称
77316
77340
  pageNumberKey: {
77317
77341
  type: String,
77318
77342
  default: "currentPage"
@@ -77325,415 +77349,411 @@ const _sfc_main = {
77325
77349
  type: String,
77326
77350
  default: "total"
77327
77351
  },
77328
- // PageSearch 的其他属性
77329
77352
  searchProps: {
77330
77353
  type: Object,
77331
77354
  default: () => ({})
77332
77355
  },
77333
- // PageTable 的其他属性
77356
+ enterTrigger: {
77357
+ type: Boolean,
77358
+ default: true
77359
+ },
77334
77360
  tableProps: {
77335
77361
  type: Object,
77336
77362
  default: () => ({})
77337
77363
  },
77338
- // 数据加载函数(用于分页变化时自动刷新数据)
77339
- loadData: {
77340
- type: Function,
77341
- default: null
77364
+ useDefaultPage: {
77365
+ type: Boolean,
77366
+ default: true
77342
77367
  }
77343
77368
  },
77344
77369
  emits: [
77345
- "update:currentPage",
77346
- "update:pageSize",
77347
77370
  "search",
77348
77371
  "reset",
77349
77372
  "add",
77350
- "size-change",
77351
- "current-change",
77352
- "page-change",
77353
77373
  "selection-change",
77354
77374
  "sort-change",
77355
77375
  "row-click",
77356
- "link-click"
77376
+ "size-change",
77377
+ "current-change",
77378
+ "page-change",
77379
+ "link-click",
77380
+ "update:currentPage",
77381
+ "update:pageSize"
77357
77382
  ],
77358
77383
  setup(__props, { expose: __expose, emit: __emit }) {
77359
77384
  const props = __props;
77360
77385
  const emit = __emit;
77386
+ useSlots();
77361
77387
  const searchRef = ref$1(null);
77362
77388
  const tableRef = ref$1(null);
77363
77389
  const internalPagination = reactive(createPagination());
77390
+ const internalSearchParams = reactive({});
77391
+ const internalSortState = reactive({ prop: "", order: "" });
77364
77392
  const pendingSelectionKeys = ref$1(/* @__PURE__ */ new Set());
77365
- watch(
77366
- () => props.currentPage,
77367
- (newVal) => {
77368
- if (newVal !== null && newVal !== internalPagination.currentPage) {
77369
- internalPagination.currentPage = newVal;
77370
- }
77371
- },
77372
- { immediate: true }
77373
- );
77374
- watch(
77375
- () => props.pageSize,
77376
- (newVal) => {
77377
- if (newVal !== null && newVal !== internalPagination.pageSize) {
77378
- internalPagination.pageSize = newVal;
77379
- }
77380
- },
77381
- { immediate: true }
77382
- );
77383
- const currentPageModel = computed({
77384
- get: () => props.currentPage !== null ? props.currentPage : internalPagination.currentPage,
77385
- set: (val) => {
77386
- internalPagination.currentPage = val;
77387
- emit("update:currentPage", val);
77388
- }
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;
77389
77399
  });
77390
- const pageSizeModel = computed({
77391
- get: () => props.pageSize !== null ? props.pageSize : internalPagination.pageSize,
77392
- set: (val) => {
77393
- internalPagination.pageSize = val;
77394
- emit("update:pageSize", val);
77395
- }
77400
+ const pageSizeModel = computed(() => {
77401
+ if (props.useDefaultPage) return internalPagination.pageSize;
77402
+ return props.pageSize === null ? internalPagination.pageSize : props.pageSize;
77396
77403
  });
77397
- watch(
77398
- () => props.tableData,
77399
- () => {
77400
- var _a3;
77401
- if (pendingSelectionKeys.value.size > 0 && tableRef.value) {
77402
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77403
- if (!rowKey) return;
77404
- setTimeout(() => {
77405
- props.tableData.forEach((row) => {
77406
- var _a4, _b;
77407
- let key;
77408
- if (typeof rowKey === "function") {
77409
- key = rowKey(row);
77410
- } else {
77411
- key = row[rowKey];
77412
- }
77413
- if (pendingSelectionKeys.value.has(key)) {
77414
- (_b = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b.call(_a4, row, true);
77415
- }
77416
- });
77417
- }, 0);
77418
- }
77419
- },
77420
- { immediate: true }
77421
- );
77422
- const handleSearch = (params) => {
77423
- 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() {
77424
77412
  pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77413
+ Object.keys(selectionRowMap).forEach((key) => delete selectionRowMap[key]);
77425
77414
  if (tableRef.value) {
77426
- (_b = (_a3 = tableRef.value).clearSelection) == null ? void 0 : _b.call(_a3);
77415
+ tableRef.value.clearSelection && tableRef.value.clearSelection();
77427
77416
  }
77417
+ }
77418
+ function syncSelectionToCurrentPage() {
77419
+ if (!currentRowKey.value || !tableRef.value) {
77420
+ return;
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 || {};
77428
77454
  if (params && params._resetPage) {
77429
77455
  const { _resetPage, ...searchParams } = params;
77456
+ nextParams = searchParams;
77430
77457
  internalPagination.currentPage = 1;
77431
- emit("search", searchParams);
77432
- } else {
77433
- emit("search", params);
77434
- }
77435
- };
77436
- const handleReset = () => {
77437
- var _a3, _b;
77438
- pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77439
- if (tableRef.value) {
77440
- (_b = (_a3 = tableRef.value).clearSelection) == null ? void 0 : _b.call(_a3);
77458
+ if (!props.useDefaultPage) {
77459
+ emit("update:currentPage", 1);
77460
+ }
77441
77461
  }
77462
+ Object.keys(internalSearchParams).forEach((key) => delete internalSearchParams[key]);
77463
+ Object.assign(internalSearchParams, { ...nextParams });
77464
+ emitSearch();
77465
+ }
77466
+ function handleReset() {
77467
+ resetSelectionState();
77442
77468
  emit("reset");
77443
- };
77444
- const handleAdd = () => {
77469
+ }
77470
+ function handleAdd() {
77445
77471
  emit("add");
77446
- };
77447
- 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
+ }
77448
77483
  emit("size-change", size);
77449
77484
  emit("page-change", {
77450
77485
  currentPage: internalPagination.currentPage,
77451
77486
  pageSize: size
77452
77487
  });
77453
- if (props.loadData) {
77454
- 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);
77455
77497
  }
77456
- };
77457
- const handleCurrentChange = (page) => {
77458
77498
  emit("current-change", page);
77459
77499
  emit("page-change", {
77460
77500
  currentPage: page,
77461
- pageSize: internalPagination.pageSize
77501
+ pageSize: pageSizeModel.value
77462
77502
  });
77463
- if (props.loadData) {
77464
- props.loadData();
77503
+ emitSearch();
77504
+ }
77505
+ function handleSelectionChange(selection) {
77506
+ if (isSyncingSelection.value) {
77507
+ return;
77465
77508
  }
77466
- };
77467
- const handleSelectionChange = (selection) => {
77468
- emit("selection-change", selection);
77469
- };
77470
- 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 : "";
77471
77528
  emit("sort-change", sort);
77472
- };
77473
- const handleRowClick = (row, column, event) => {
77529
+ emitSearch();
77530
+ }
77531
+ function handleRowClick(row, column, event) {
77474
77532
  emit("row-click", row, column, event);
77475
- };
77476
- const handleLinkClick = (row, column) => {
77533
+ }
77534
+ function handleLinkClick(row, column) {
77477
77535
  emit("link-click", row, column);
77478
- };
77479
- const tableMethods = new Proxy(
77480
- {},
77481
- {
77482
- get(target, prop) {
77483
- if (prop === "tableRef") {
77484
- return tableRef;
77485
- }
77486
- return (...args) => {
77487
- if (tableRef.value && typeof tableRef.value[prop] === "function") {
77488
- return tableRef.value[prop](...args);
77489
- }
77490
- return void 0;
77491
- };
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);
77492
77562
  }
77493
77563
  }
77494
- );
77495
- const initSearchAndLoad = () => {
77564
+ emitSearch();
77565
+ }
77566
+ function getSearchParams() {
77567
+ return buildLoadQuery();
77568
+ }
77569
+ function initSearchAndLoad() {
77496
77570
  nextTick(() => {
77497
- if (searchRef.value && props.showSearch) {
77498
- const initialFormData = searchRef.value.getFormData();
77499
- 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 });
77500
77575
  }
77576
+ emitSearch();
77501
77577
  });
77502
- };
77503
- __expose({
77504
- searchRef,
77505
- tableRef,
77506
- // 初始化搜索参数并触发查询(用于异步搜索条件场景)
77507
- initSearchAndLoad,
77508
- // 暴露 PageSearch 的方法
77509
- getSearchFormData: () => {
77510
- var _a3;
77511
- return (_a3 = searchRef.value) == null ? void 0 : _a3.getFormData();
77512
- },
77513
- setSearchFormData: (data) => {
77514
- var _a3;
77515
- return (_a3 = searchRef.value) == null ? void 0 : _a3.setFormData(data);
77516
- },
77517
- resetSearchForm: () => {
77518
- var _a3;
77519
- return (_a3 = searchRef.value) == null ? void 0 : _a3.resetForm();
77520
- },
77521
- validateSearchForm: () => {
77522
- var _a3;
77523
- return (_a3 = searchRef.value) == null ? void 0 : _a3.validate();
77524
- },
77525
- // 暴露内部分页状态
77526
- getPagination: () => {
77527
- return {
77528
- [props.pageTotalKey]: props.total,
77529
- [props.pageNumberKey]: internalPagination.currentPage,
77530
- [props.pageSizeKey]: internalPagination.pageSize
77531
- };
77532
- },
77533
- setPagination: (pagination) => {
77534
- if (pagination.currentPage !== void 0) {
77535
- internalPagination.currentPage = pagination.currentPage;
77536
- }
77537
- if (pagination.pageSize !== void 0) {
77538
- 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;
77539
77630
  }
77540
- },
77541
- resetPagination: () => {
77542
- internalPagination.currentPage = 1;
77543
- internalPagination.pageSize = 10;
77544
- },
77545
- // 直接透传PageTable的所有方法
77546
- ...tableMethods,
77547
- // 为了向后兼容,保留原有的方法名(可选)
77548
- clearTableSelection: () => {
77549
- var _a3, _b;
77550
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77551
- },
77552
- toggleRowSelection: (row, selected) => {
77553
- var _a3, _b;
77554
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleRowSelection) == null ? void 0 : _b.call(_a3, row, selected);
77555
- },
77556
- toggleAllSelection: () => {
77557
- var _a3, _b;
77558
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.toggleAllSelection) == null ? void 0 : _b.call(_a3);
77559
- },
77560
- setCurrentRow: (row) => {
77561
- var _a3, _b;
77562
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.setCurrentRow) == null ? void 0 : _b.call(_a3, row);
77563
- },
77564
- getSelectionRows: () => {
77565
- var _a3, _b;
77566
- return ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77567
- },
77568
- getSelectionKeys: () => {
77569
- var _a3, _b, _c2;
77570
- const rows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77571
- const rowKey = (_c2 = props.tableProps) == null ? void 0 : _c2.rowKey;
77572
- if (rowKey) {
77573
- if (typeof rowKey === "function") {
77574
- return rows.map((row) => rowKey(row));
77575
- } else {
77576
- return rows.map((row) => row[rowKey]);
77577
- }
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;
77578
77664
  }
77579
- return rows;
77580
77665
  },
77581
- setSelectionRows: (rows) => {
77582
- var _a3, _b;
77583
- if (!tableRef.value) return;
77584
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77585
- rows.forEach((row) => {
77586
- var _a4, _b2;
77587
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77588
- });
77589
- },
77590
- setSelectionKeys: (keys2) => {
77591
- var _a3, _b, _c2;
77592
- if (!tableRef.value) return;
77593
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77594
- if (!rowKey) {
77595
- console.warn("setSelectionKeys 需要配置 rowKey");
77596
- 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;
77597
77674
  }
77598
- pendingSelectionKeys.value = new Set(keys2);
77599
- (_c2 = (_b = tableRef.value) == null ? void 0 : _b.clearSelection) == null ? void 0 : _c2.call(_b);
77600
- keys2.forEach((key) => {
77601
- var _a4, _b2;
77602
- const row = props.tableData.find((row2) => {
77603
- if (typeof rowKey === "function") {
77604
- return rowKey(row2) === key;
77605
- } else {
77606
- return row2[rowKey] === key;
77607
- }
77608
- });
77609
- if (row) {
77610
- (_b2 = (_a4 = tableRef.value) == null ? void 0 : _a4.toggleRowSelection) == null ? void 0 : _b2.call(_a4, row, true);
77611
- }
77612
- });
77613
- },
77614
- isRowSelected: (row) => {
77615
- var _a3, _b;
77616
- const selectedRows = ((_b = (_a3 = tableRef.value) == null ? void 0 : _a3.getSelectionRows) == null ? void 0 : _b.call(_a3)) || [];
77617
- return selectedRows.includes(row);
77618
77675
  },
77619
- isKeySelected: (key) => {
77620
- var _a3, _b, _c2;
77621
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77622
- if (!rowKey) return false;
77623
- const selectedRows = ((_c2 = (_b = tableRef.value) == null ? void 0 : _b.getSelectionRows) == null ? void 0 : _c2.call(_b)) || [];
77624
- return selectedRows.some((row) => {
77625
- if (typeof rowKey === "function") {
77626
- return rowKey(row) === key;
77627
- } else {
77628
- return row[rowKey] === key;
77629
- }
77630
- });
77631
- },
77632
- // 全选/取消全选
77633
- selectAll: () => {
77634
- var _a3;
77635
- const rowKey = (_a3 = props.tableProps) == null ? void 0 : _a3.rowKey;
77636
- if (rowKey) {
77637
- props.tableData.forEach((row) => {
77638
- let key;
77639
- if (typeof rowKey === "function") {
77640
- key = rowKey(row);
77641
- } else {
77642
- key = row[rowKey];
77643
- }
77644
- pendingSelectionKeys.value.add(key);
77645
- });
77646
- }
77647
- props.tableData.forEach((row) => {
77648
- var _a4, _b;
77649
- (_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();
77650
77683
  });
77651
77684
  },
77652
- clearAllSelection: () => {
77653
- var _a3, _b;
77654
- pendingSelectionKeys.value = /* @__PURE__ */ new Set();
77655
- (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSelection) == null ? void 0 : _b.call(_a3);
77656
- },
77657
- // 表格操作相关方法
77658
- clearSort: () => {
77659
- var _a3, _b;
77660
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearSort) == null ? void 0 : _b.call(_a3);
77661
- },
77662
- clearFilter: (columnKey) => {
77663
- var _a3, _b;
77664
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.clearFilter) == null ? void 0 : _b.call(_a3, columnKey);
77665
- },
77666
- doLayout: () => {
77667
- var _a3, _b;
77668
- return (_b = (_a3 = tableRef.value) == null ? void 0 : _a3.doLayout) == null ? void 0 : _b.call(_a3);
77669
- },
77670
- sort: (prop, order) => {
77671
- var _a3, _b;
77672
- 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;
77673
77691
  }
77674
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
+ });
77675
77714
  return (_ctx, _cache) => {
77676
77715
  return openBlock(), createElementBlock("div", _hoisted_1, [
77677
- __props.showSearch ? (openBlock(), createElementBlock("div", _hoisted_2, [
77678
- createVNode(NsSearch, mergeProps({
77679
- ref_key: "searchRef",
77680
- ref: searchRef,
77681
- "page-size": pageSizeModel.value,
77682
- "onUpdate:pageSize": _cache[0] || (_cache[0] = ($event) => pageSizeModel.value = $event),
77683
- "current-page": currentPageModel.value,
77684
- "onUpdate:currentPage": _cache[1] || (_cache[1] = ($event) => currentPageModel.value = $event),
77685
- items: __props.searchItems,
77686
- "external-params": __props.externalSearchParams
77687
- }, __props.searchProps, {
77688
- onSearch: handleSearch,
77689
- onReset: handleReset
77690
- }), createSlots({ _: 2 }, [
77691
- renderList(_ctx.$slots, (_3, name) => {
77692
- return {
77693
- name,
77694
- fn: withCtx((slotData) => [
77695
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)), void 0, true)
77696
- ])
77697
- };
77698
- })
77699
- ]), 1040, ["page-size", "current-page", "items", "external-params"])
77700
- ])) : createCommentVNode("", true),
77701
- createElementVNode("div", _hoisted_3, [
77702
- createVNode(NsTable, mergeProps({
77703
- ref_key: "tableRef",
77704
- ref: tableRef,
77705
- "table-data": __props.tableData,
77706
- columns: __props.columns,
77707
- "action-buttons": __props.actionButtons,
77708
- total: __props.total,
77709
- "current-page": currentPageModel.value,
77710
- "onUpdate:currentPage": _cache[2] || (_cache[2] = ($event) => currentPageModel.value = $event),
77711
- "page-size": pageSizeModel.value,
77712
- "onUpdate:pageSize": _cache[3] || (_cache[3] = ($event) => pageSizeModel.value = $event)
77713
- }, __props.tableProps, {
77714
- onAdd: handleAdd,
77715
- onSizeChange: handleSizeChange,
77716
- onCurrentChange: handleCurrentChange,
77717
- onSelectionChange: handleSelectionChange,
77718
- onSortChange: handleSortChange2,
77719
- onRowClick: handleRowClick,
77720
- onLinkClick: handleLinkClick
77721
- }), createSlots({ _: 2 }, [
77722
- renderList(_ctx.$slots, (_3, name) => {
77723
- return {
77724
- name,
77725
- fn: withCtx((slotData) => [
77726
- renderSlot(_ctx.$slots, name, normalizeProps(guardReactiveProps(slotData)), void 0, true)
77727
- ])
77728
- };
77729
- })
77730
- ]), 1040, ["table-data", "columns", "action-buttons", "total", "current-page", "page-size"])
77731
- ])
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"])
77732
77752
  ]);
77733
77753
  };
77734
77754
  }
77735
- };
77736
- const NsTableContainer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3f45ef27"]]);
77755
+ });
77756
+ const NsTableContainer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4332eea8"]]);
77737
77757
  NsTableContainer.install = (app2) => {
77738
77758
  app2.component("NsTableContainer", NsTableContainer);
77739
77759
  };
@@ -77750,7 +77770,7 @@ function detectBrowser() {
77750
77770
  const glob = typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof WorkerGlobalScope !== "undefined" ? self : {};
77751
77771
  const Konva$2 = {
77752
77772
  _global: glob,
77753
- version: "10.2.3",
77773
+ version: "10.3.0",
77754
77774
  isBrowser: detectBrowser(),
77755
77775
  isUnminified: /param/.test((function(param) {
77756
77776
  }).toString()),
@@ -80884,14 +80904,23 @@ let Node$1 = class Node2 {
80884
80904
  evt.type = eventType;
80885
80905
  const topListeners = this._getProtoListeners(eventType);
80886
80906
  if (topListeners) {
80887
- for (let i3 = 0; i3 < topListeners.length; i3++) {
80888
- topListeners[i3].handler.call(this, evt);
80907
+ const list = topListeners.slice();
80908
+ for (let i3 = 0; i3 < list.length; i3++) {
80909
+ list[i3].handler.call(this, evt);
80889
80910
  }
80890
80911
  }
80891
80912
  const selfListeners = this.eventListeners[eventType];
80892
80913
  if (selfListeners) {
80893
- for (let i3 = 0; i3 < selfListeners.length; i3++) {
80894
- selfListeners[i3].handler.call(this, evt);
80914
+ const list = selfListeners.slice();
80915
+ const origLen = list.length;
80916
+ for (let i3 = 0; i3 < list.length; i3++) {
80917
+ list[i3].handler.call(this, evt);
80918
+ }
80919
+ const liveListeners = this.eventListeners[eventType];
80920
+ if (liveListeners) {
80921
+ for (let i3 = origLen; i3 < liveListeners.length; i3++) {
80922
+ liveListeners[i3].handler.call(this, evt);
80923
+ }
80895
80924
  }
80896
80925
  }
80897
80926
  }
@@ -85993,6 +86022,38 @@ const AUTO = "auto", CENTER = "center", INHERIT = "inherit", JUSTIFY = "justify"
85993
86022
  "ellipsis",
85994
86023
  "letterSpacing"
85995
86024
  ], attrChangeListLen = ATTR_CHANGE_LIST$1.length;
86025
+ let _shadowOpacityBuggy = null;
86026
+ function hasShadowOpacityBug() {
86027
+ if (_shadowOpacityBuggy !== null) {
86028
+ return _shadowOpacityBuggy;
86029
+ }
86030
+ _shadowOpacityBuggy = false;
86031
+ try {
86032
+ const c = document.createElement("canvas");
86033
+ c.width = 10;
86034
+ c.height = 10;
86035
+ const ctx = c.getContext(CONTEXT_2D);
86036
+ if (ctx) {
86037
+ ctx.globalAlpha = 0;
86038
+ ctx.shadowColor = "black";
86039
+ ctx.shadowBlur = 5;
86040
+ ctx.shadowOffsetX = 5;
86041
+ ctx.shadowOffsetY = 5;
86042
+ ctx.fillStyle = "black";
86043
+ ctx.font = "10px Arial";
86044
+ ctx.fillText("X", 0, 10);
86045
+ const data = ctx.getImageData(0, 0, 10, 10).data;
86046
+ for (let i3 = 3; i3 < data.length; i3 += 4) {
86047
+ if (data[i3] > 0) {
86048
+ _shadowOpacityBuggy = true;
86049
+ break;
86050
+ }
86051
+ }
86052
+ }
86053
+ } catch (e6) {
86054
+ }
86055
+ return _shadowOpacityBuggy;
86056
+ }
85996
86057
  function normalizeFontFamily(fontFamily) {
85997
86058
  return fontFamily.split(",").map((family) => {
85998
86059
  family = family.trim();
@@ -86338,6 +86399,9 @@ class Text extends Shape {
86338
86399
  if (hasLine && hasShadow) {
86339
86400
  return true;
86340
86401
  }
86402
+ if (hasShadow && this.getAbsoluteOpacity() !== 1 && hasShadowOpacityBug()) {
86403
+ return true;
86404
+ }
86341
86405
  return super._useBufferCanvas();
86342
86406
  }
86343
86407
  }
@@ -86388,7 +86452,7 @@ class TextPath extends Shape {
86388
86452
  this._readDataAttribute();
86389
86453
  this._setTextData();
86390
86454
  });
86391
- this.on("textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva", this._setTextData);
86455
+ this.on("textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva directionChange.konva", this._setTextData);
86392
86456
  this._setTextData();
86393
86457
  }
86394
86458
  _getTextPathLength() {
@@ -86503,6 +86567,9 @@ class TextPath extends Shape {
86503
86567
  }
86504
86568
  _setTextData() {
86505
86569
  const charArr = stringToArray(this.text());
86570
+ if (this.direction() === "rtl") {
86571
+ charArr.reverse();
86572
+ }
86506
86573
  const chars = [];
86507
86574
  let width = 0;
86508
86575
  for (let i3 = 0; i3 < charArr.length; i3++) {
@@ -86633,6 +86700,7 @@ Factory.addGetterSetter(TextPath, "fontVariant", NORMAL);
86633
86700
  Factory.addGetterSetter(TextPath, "text", EMPTY_STRING);
86634
86701
  Factory.addGetterSetter(TextPath, "textDecoration", "");
86635
86702
  Factory.addGetterSetter(TextPath, "kerningFunc", void 0);
86703
+ Factory.addGetterSetter(TextPath, "direction", "inherit");
86636
86704
  const EVENTS_NAME = "tr-konva";
86637
86705
  const ATTR_CHANGE_LIST = [
86638
86706
  "resizeEnabledChange",
@@ -89513,7 +89581,7 @@ var hasRequiredJsbn;
89513
89581
  function requireJsbn() {
89514
89582
  if (hasRequiredJsbn) return jsbn$1.exports;
89515
89583
  hasRequiredJsbn = 1;
89516
- (function(module, exports$1) {
89584
+ (function(module, exports) {
89517
89585
  (function() {
89518
89586
  var dbits;
89519
89587
  var canary = 244837814094590;
@@ -92229,7 +92297,7 @@ async function getEncryptSm2(publicKey, originalArr = [], isAdd04 = false, ciphe
92229
92297
  return encryptArrs;
92230
92298
  }
92231
92299
  const components = {
92232
- NsExcel: _sfc_main$c,
92300
+ NsExcel: _sfc_main$b,
92233
92301
  NsPdf,
92234
92302
  NsWord,
92235
92303
  NsOffice,
@@ -92285,7 +92353,7 @@ const index = {
92285
92353
  };
92286
92354
  export {
92287
92355
  NsDialog,
92288
- _sfc_main$c as NsExcel,
92356
+ _sfc_main$b as NsExcel,
92289
92357
  NsForm,
92290
92358
  NsFormTitle,
92291
92359
  NsImage,