bm-admin-ui 1.0.52-alpha → 1.0.53-alpha

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.
Files changed (35) hide show
  1. package/es/components/button/index.d.ts +1 -1
  2. package/es/components/button/src/button.vue.d.ts +1 -1
  3. package/es/components/editor/index.d.ts +1 -1
  4. package/es/components/editor/src/editor.vue.d.ts +1 -1
  5. package/es/components/form-create/index.js +82 -13
  6. package/es/components/form-designer/index.js +10 -10
  7. package/es/components/search-filter/index.d.ts +1 -1
  8. package/es/components/search-filter/src/search-filter.vue.d.ts +1 -1
  9. package/es/components/select-all/index.d.ts +1 -1
  10. package/es/components/select-all/src/selectAll.vue.d.ts +1 -1
  11. package/es/components/staffs-selector/index.d.ts +1 -1
  12. package/es/components/staffs-selector/src/staffs-selector.vue.d.ts +1 -1
  13. package/lib/components/button/index.d.ts +1 -1
  14. package/lib/components/button/src/button.vue.d.ts +1 -1
  15. package/lib/components/editor/index.d.ts +1 -1
  16. package/lib/components/editor/src/editor.vue.d.ts +1 -1
  17. package/lib/components/form-create/index.js +82 -13
  18. package/lib/components/form-designer/index.js +1 -1
  19. package/lib/components/search-filter/index.d.ts +1 -1
  20. package/lib/components/search-filter/src/search-filter.vue.d.ts +1 -1
  21. package/lib/components/select-all/index.d.ts +1 -1
  22. package/lib/components/select-all/src/selectAll.vue.d.ts +1 -1
  23. package/lib/components/staffs-selector/index.d.ts +1 -1
  24. package/lib/components/staffs-selector/src/staffs-selector.vue.d.ts +1 -1
  25. package/package.json +1 -1
  26. package/types/components/button/index.d.ts +1 -1
  27. package/types/components/button/src/button.vue.d.ts +1 -1
  28. package/types/components/editor/index.d.ts +1 -1
  29. package/types/components/editor/src/editor.vue.d.ts +1 -1
  30. package/types/components/search-filter/index.d.ts +1 -1
  31. package/types/components/search-filter/src/search-filter.vue.d.ts +1 -1
  32. package/types/components/select-all/index.d.ts +1 -1
  33. package/types/components/select-all/src/selectAll.vue.d.ts +1 -1
  34. package/types/components/staffs-selector/index.d.ts +1 -1
  35. package/types/components/staffs-selector/src/staffs-selector.vue.d.ts +1 -1
@@ -78,7 +78,7 @@ declare const BmButton: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
78
78
  onMousedown: {
79
79
  type: import("vue").PropType<(event: MouseEvent) => void>;
80
80
  };
81
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "loading" | "htmlType" | "ghost" | "block" | "danger">;
81
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "htmlType" | "loading" | "disabled" | "ghost" | "block" | "danger">;
82
82
  $attrs: {
83
83
  [x: string]: unknown;
84
84
  };
@@ -80,7 +80,7 @@ declare const _default: import("vue").DefineComponent<{
80
80
  onMousedown: {
81
81
  type: import("vue").PropType<(event: MouseEvent) => void>;
82
82
  };
83
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "loading" | "htmlType" | "ghost" | "block" | "danger">;
83
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "htmlType" | "loading" | "disabled" | "ghost" | "block" | "danger">;
84
84
  $attrs: {
85
85
  [x: string]: unknown;
86
86
  };
@@ -294,8 +294,8 @@ declare const BmEditor: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
294
294
  onReady?: ((...args: any[]) => any) | undefined;
295
295
  onGetCount?: ((...args: any[]) => any) | undefined;
296
296
  }, {
297
- value: string;
298
297
  disabled: boolean;
298
+ value: string;
299
299
  options: {
300
300
  [key: string]: any;
301
301
  };
@@ -294,8 +294,8 @@ declare const _default: import("vue").DefineComponent<{
294
294
  onReady?: ((...args: any[]) => any) | undefined;
295
295
  onGetCount?: ((...args: any[]) => any) | undefined;
296
296
  }, {
297
- value: string;
298
297
  disabled: boolean;
298
+ value: string;
299
299
  options: {
300
300
  [key: string]: any;
301
301
  };
@@ -1287,6 +1287,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1287
1287
  \u5546\u54C1\u7BB1\u89C4: "carton",
1288
1288
  \u5546\u54C1\u5355\u4F4D: "unit"
1289
1289
  };
1290
+ let productIndex = 0;
1290
1291
  const oper = "oper";
1291
1292
  const bmFloatTableRef = ref();
1292
1293
  const importFeature = computed(() => isShow("import"));
@@ -1329,6 +1330,12 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1329
1330
  });
1330
1331
  const xGrid = computed(() => bmFloatTableRef.value.xGrid || {});
1331
1332
  const inputRef = ref();
1333
+ const childRulesMap = computed(
1334
+ () => props.rule?.config?.childRules.reduce((result, item) => {
1335
+ result[item.field] = item;
1336
+ return result;
1337
+ }, {}) || {}
1338
+ );
1332
1339
  function isShow(key) {
1333
1340
  return props.rule.config.tableAdvancedFeatures.includes(key);
1334
1341
  }
@@ -1385,12 +1392,13 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1385
1392
  }, {});
1386
1393
  }
1387
1394
  function getProductColumn(rule) {
1395
+ const productName = `\u5546\u54C1${String(++productIndex).padStart(2, "0")}`;
1388
1396
  const field = rule.field;
1389
1397
  const associatedFields = rule.config.associatedFields;
1390
1398
  const columns2 = [
1391
1399
  {
1392
1400
  field,
1393
- title: "\u5546\u54C1\u7F16\u7801",
1401
+ title: `\u5546\u54C1\u7F16\u7801-${productName}`,
1394
1402
  headerClassName: rule.effect.required ? "is-required" : "",
1395
1403
  minWidth: "138px",
1396
1404
  slots: {
@@ -1402,7 +1410,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1402
1410
  "onUpdate:value": (value) => {
1403
1411
  row[field] = value;
1404
1412
  },
1405
- onChange() {
1413
+ onPressEnter() {
1406
1414
  queryProductInfo(rule, row);
1407
1415
  }
1408
1416
  });
@@ -1415,7 +1423,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1415
1423
  const childField = field + item.value;
1416
1424
  columns2.push({
1417
1425
  field: childField,
1418
- title: item.label,
1426
+ title: `${item.label}-${productName}`,
1419
1427
  minWidth: "138px",
1420
1428
  slots: {
1421
1429
  default({ row }) {
@@ -1493,13 +1501,15 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1493
1501
  reader.onload = (fr) => {
1494
1502
  const rows = parseCsv(fr?.target?.result);
1495
1503
  const validColumns = columns.filter((c) => isValidColumn(c));
1504
+ const result = [];
1496
1505
  rows.forEach((row) => {
1497
1506
  const rowData = {};
1498
1507
  row.forEach((item, index) => {
1499
1508
  rowData[validColumns[index].field] = item;
1500
1509
  });
1501
- data.push(rowData);
1510
+ result.push(rowData);
1502
1511
  });
1512
+ validate(result);
1503
1513
  e.target.value = "";
1504
1514
  };
1505
1515
  file && reader.readAsText(file, "GB2312");
@@ -1510,10 +1520,64 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
1510
1520
  function parseCsv(result) {
1511
1521
  let data2 = [];
1512
1522
  if (result) {
1513
- data2 = result.split("\r\n").slice(1).filter((item) => item).map((item) => item.split(","));
1523
+ data2 = result.split("\r\n").slice(1).filter((item) => item).map((item) => item.replaceAll(" ", "").split(","));
1514
1524
  }
1515
1525
  return data2;
1516
1526
  }
1527
+ function validate(rowData) {
1528
+ const validColumns = columns.filter((c) => isValidColumn(c));
1529
+ for (const row of rowData) {
1530
+ for (const { field } of validColumns) {
1531
+ const rule = childRulesMap.value[field];
1532
+ let value = row[field];
1533
+ const txtFormatFn = rule.config?.txtFormatFn;
1534
+ if (rule.effect.required && !value) {
1535
+ break;
1536
+ }
1537
+ if (txtFormatFn && !txtFormatFn(value)) {
1538
+ break;
1539
+ }
1540
+ if (rule.name === "input") {
1541
+ const maxlength = rule.props.maxlength || 200;
1542
+ if (value.length > maxlength) {
1543
+ break;
1544
+ }
1545
+ }
1546
+ if (rule.name === "textarea") {
1547
+ if (value.length > 5e3) {
1548
+ break;
1549
+ }
1550
+ }
1551
+ if (rule.name === "numInput") {
1552
+ if (rule.config.format === 1) {
1553
+ if (!value.includes("%")) {
1554
+ break;
1555
+ }
1556
+ } else {
1557
+ if (!isNaN(value)) {
1558
+ break;
1559
+ }
1560
+ }
1561
+ if (rule.config.decimalPlaces !== void 0 && value.split(".")[1]?.length > rule.config.decimalPlaces) {
1562
+ break;
1563
+ }
1564
+ }
1565
+ if (rule.name === "radio") {
1566
+ if (rule.options.every((item) => item.value !== value)) {
1567
+ break;
1568
+ }
1569
+ }
1570
+ if (rule.name === "checkbox") {
1571
+ value = value.split("\u3001");
1572
+ if (value.some((item) => rule.options.every((r) => r.value !== item))) {
1573
+ break;
1574
+ }
1575
+ row[field] = value;
1576
+ }
1577
+ if (rule.name === "date") ;
1578
+ }
1579
+ }
1580
+ }
1517
1581
  watch(
1518
1582
  () => props.rule,
1519
1583
  () => {
@@ -1686,7 +1750,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1686
1750
  return panes.find((pane) => pane.key === activeKey.value);
1687
1751
  }
1688
1752
  function getTempDetail(templateCode) {
1689
- return props.extraConfig.fetchMaterialTempDetail({ templateCode });
1753
+ return props.extraConfig.materialTemp.fetchMaterialTempDetail({
1754
+ templateCode
1755
+ });
1690
1756
  }
1691
1757
  function handleUpload(list) {
1692
1758
  getAcitvePane().uploadList = list;
@@ -1793,9 +1859,11 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1793
1859
  }
1794
1860
  if (coverage.fieldType === 2) {
1795
1861
  const decimalPlaces = extraValues.decimalPlaces || 0;
1862
+ value.config.decimalPlaces = decimalPlaces;
1796
1863
  value.props = {
1797
1864
  placeholder: "\u8BF7\u8F93\u5165"
1798
1865
  };
1866
+ value.config.format = extraValues.format;
1799
1867
  if (extraValues.format === 1) {
1800
1868
  value.props.parser = (value2) => floor(value2.replace("%", ""), decimalPlaces);
1801
1869
  value.props.formatter = (value2) => `${value2}%`;
@@ -1862,7 +1930,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
1862
1930
  }
1863
1931
  }
1864
1932
  props.value && initValue(props.value);
1865
- props.extraConfig.getDict().then((data) => {
1933
+ props.extraConfig.materialTemp.getDict().then((data) => {
1866
1934
  measrueDicts.value = data;
1867
1935
  });
1868
1936
  watch(mainShopValue, () => {
@@ -2100,7 +2168,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2100
2168
  "extra-props": {
2101
2169
  maxCount: 9
2102
2170
  },
2103
- "upload-request": __props.extraConfig.uploadRequest,
2171
+ "upload-request": __props.extraConfig.materialTemp.uploadRequest,
2104
2172
  "default-list": pane.uploadList,
2105
2173
  onUpdate: handleUpload
2106
2174
  }, null, 8, ["upload-props", "upload-request", "default-list"])
@@ -2120,8 +2188,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2120
2188
  key: 0,
2121
2189
  rule: pane.tableRule,
2122
2190
  "disabled-table": __props.disabled?.includes?.("editTable"),
2191
+ "extra-config": __props.extraConfig,
2123
2192
  onChange: handleTableDataChange
2124
- }, null, 8, ["rule", "disabled-table"])) : createCommentVNode("v-if", true)
2193
+ }, null, 8, ["rule", "disabled-table", "extra-config"])) : createCommentVNode("v-if", true)
2125
2194
  ]),
2126
2195
  _: 2
2127
2196
  }, 1024)
@@ -2136,8 +2205,8 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
2136
2205
  visible: visible.value,
2137
2206
  "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => visible.value = $event),
2138
2207
  "main-shop-value": unref(mainShopValue),
2139
- "fetch-material-type": __props.extraConfig.fetchMaterialType,
2140
- "fetch-material-temp": __props.extraConfig.fetchMaterialTemp,
2208
+ "fetch-material-type": __props.extraConfig.materialTemp.fetchMaterialType,
2209
+ "fetch-material-temp": __props.extraConfig.materialTemp.fetchMaterialTemp,
2141
2210
  onSelect: handleSelect
2142
2211
  }, null, 8, ["visible", "main-shop-value", "fetch-material-type", "fetch-material-temp"])
2143
2212
  ], 64);
@@ -2165,7 +2234,7 @@ var materialTemp = {
2165
2234
  field: data.field,
2166
2235
  props: {
2167
2236
  uploadPictureRule: data.config.uploadPictureRule,
2168
- extraConfig: extraConfig.materialTemp,
2237
+ extraConfig: extraConfig,
2169
2238
  value: data.value,
2170
2239
  },
2171
2240
  inject: true,
@@ -2256,7 +2325,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
2256
2325
  placeholder: "\u8BF7\u8F93\u5165",
2257
2326
  value: __props.defalutValue,
2258
2327
  disabled: __props.disabled,
2259
- onBlur: handleBlur
2328
+ onPressEnter: handleBlur
2260
2329
  }, null, 8, ["value", "disabled"])
2261
2330
  ]),
2262
2331
  _: 1
@@ -1,5 +1,5 @@
1
1
  import { withInstall } from 'bm-admin-ui/es/utils/with-install';
2
- import { defineComponent, openBlock, createElementBlock, normalizeStyle, toDisplayString, computed, resolveComponent, normalizeClass, unref, createBlock, createCommentVNode, withCtx, createVNode, createTextVNode, withModifiers, ref, watch as watch$1, createElementVNode, nextTick, Fragment, isRef, renderList, renderSlot, createStaticVNode, reactive, onBeforeUnmount, resolveDynamicComponent } from 'vue';
2
+ import { defineComponent, openBlock, createElementBlock, normalizeStyle, toDisplayString, computed, resolveComponent, normalizeClass, unref, createBlock, createCommentVNode, withCtx, createVNode, createTextVNode, withModifiers, ref, watch, createElementVNode, nextTick, Fragment, isRef, renderList, renderSlot, createStaticVNode, reactive, onBeforeUnmount, resolveDynamicComponent } from 'vue';
3
3
  import uniqueId from 'bm-admin-ui/es/utils/uniqueId';
4
4
  import Draggable from 'vuedraggable';
5
5
  import { Tooltip, FormItemRest, Input, Button, RadioGroup, Radio, DatePicker, Checkbox, Tabs, TabPane, Row, Col, Dropdown, Menu, CheckboxGroup, MenuItem, Divider, Switch, Select, Layout, LayoutSider, LayoutContent, message } from 'ant-design-vue';
@@ -848,7 +848,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
848
848
  function emitSetValue(val) {
849
849
  emits("setValue", val);
850
850
  }
851
- watch$1(
851
+ watch(
852
852
  props.options,
853
853
  (val) => {
854
854
  handleRepeatOption(val);
@@ -2525,7 +2525,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
2525
2525
  uploadPicRule.hidden = uploadPictureRule.hidden;
2526
2526
  rules.value = [...rules.value];
2527
2527
  }
2528
- watch$1(
2528
+ watch(
2529
2529
  () => props.formCreateInject.rule.config.uploadPictureRule,
2530
2530
  handleUploadPicRule,
2531
2531
  {
@@ -2849,7 +2849,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
2849
2849
  emitChangeEvt();
2850
2850
  }
2851
2851
  init();
2852
- watch$1(visible, (val) => {
2852
+ watch(visible, (val) => {
2853
2853
  visibleChange(val);
2854
2854
  });
2855
2855
  return (_ctx, _cache) => {
@@ -3016,10 +3016,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
3016
3016
  }
3017
3017
  });
3018
3018
  }
3019
- watch$1(checkedValue, (checkedValue2) => {
3019
+ watch(checkedValue, (checkedValue2) => {
3020
3020
  checkedValueChange(checkedValue2);
3021
3021
  });
3022
- watch$1(selectValue, (selectValue2, oldSelectValue) => {
3022
+ watch(selectValue, (selectValue2, oldSelectValue) => {
3023
3023
  selectValueChange(selectValue2);
3024
3024
  shopLinkProduct(selectValue2, oldSelectValue);
3025
3025
  handleChange(selectValue2);
@@ -3672,7 +3672,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
3672
3672
  function getPopupContainer() {
3673
3673
  return document.body;
3674
3674
  }
3675
- watch$1(
3675
+ watch(
3676
3676
  childRules,
3677
3677
  (val) => {
3678
3678
  emits("change", val);
@@ -4145,7 +4145,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
4145
4145
  requiredRule.props.disabled = !!flowCondition[activeRule.value.field];
4146
4146
  }
4147
4147
  }
4148
- watch$1(
4148
+ watch(
4149
4149
  () => props.formRules,
4150
4150
  (formRules) => {
4151
4151
  formRules && edit(formRules);
@@ -4154,10 +4154,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
4154
4154
  immediate: true
4155
4155
  }
4156
4156
  );
4157
- watch$1(activeProps, (activeProps2) => {
4157
+ watch(activeProps, (activeProps2) => {
4158
4158
  flowConditionEffect(activeProps2, props.flowCondition);
4159
4159
  });
4160
- watch$1(
4160
+ watch(
4161
4161
  () => props.flowCondition,
4162
4162
  (flowCondition) => {
4163
4163
  flowConditionEffect(activeProps.value, flowCondition);
@@ -217,9 +217,9 @@ declare const BmSearchFilter: import("bm-admin-ui/es/utils/with-install").SFCWit
217
217
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
218
218
  onExpand?: ((...args: any[]) => any) | undefined;
219
219
  }, {
220
+ loading: boolean;
220
221
  labelCol: Record<string, any>;
221
222
  value: Record<string, any>;
222
- loading: boolean;
223
223
  showExpandBtn: boolean;
224
224
  showSearchIcon: boolean;
225
225
  expandPlacement: "left" | "right";
@@ -217,9 +217,9 @@ declare const _default: import("vue").DefineComponent<{
217
217
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
218
218
  onExpand?: ((...args: any[]) => any) | undefined;
219
219
  }, {
220
+ loading: boolean;
220
221
  labelCol: Record<string, any>;
221
222
  value: Record<string, any>;
222
- loading: boolean;
223
223
  showExpandBtn: boolean;
224
224
  showSearchIcon: boolean;
225
225
  expandPlacement: "left" | "right";
@@ -210,7 +210,7 @@ declare const BmSelectAll: import("bm-admin-ui/es/utils/with-install").SFCWithIn
210
210
  type: BooleanConstructor;
211
211
  default: any;
212
212
  };
213
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "choiceTransitionName" | "open" | "disabled" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "loading" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
213
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "loading" | "disabled" | "bordered" | "choiceTransitionName" | "open" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
214
214
  $attrs: {
215
215
  [x: string]: unknown;
216
216
  };
@@ -210,7 +210,7 @@ declare const _default: import("vue").DefineComponent<{
210
210
  type: BooleanConstructor;
211
211
  default: any;
212
212
  };
213
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "choiceTransitionName" | "open" | "disabled" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "loading" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
213
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "loading" | "disabled" | "bordered" | "choiceTransitionName" | "open" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
214
214
  $attrs: {
215
215
  [x: string]: unknown;
216
216
  };
@@ -1083,9 +1083,9 @@ declare const BmStaffsSelector: import("bm-admin-ui/es/utils/with-install").SFCW
1083
1083
  "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
1084
1084
  "onUpdate:select"?: ((...args: any[]) => any) | undefined;
1085
1085
  }, {
1086
+ title: string;
1086
1087
  mode: string;
1087
1088
  showCount: boolean;
1088
- title: string;
1089
1089
  visible: boolean;
1090
1090
  unitStr: string;
1091
1091
  limit: number;
@@ -1083,9 +1083,9 @@ declare const _default: import("vue").DefineComponent<{
1083
1083
  "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
1084
1084
  "onUpdate:select"?: ((...args: any[]) => any) | undefined;
1085
1085
  }, {
1086
+ title: string;
1086
1087
  mode: string;
1087
1088
  showCount: boolean;
1088
- title: string;
1089
1089
  visible: boolean;
1090
1090
  unitStr: string;
1091
1091
  limit: number;
@@ -78,7 +78,7 @@ declare const BmButton: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
78
78
  onMousedown: {
79
79
  type: import("vue").PropType<(event: MouseEvent) => void>;
80
80
  };
81
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "loading" | "htmlType" | "ghost" | "block" | "danger">;
81
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "htmlType" | "loading" | "disabled" | "ghost" | "block" | "danger">;
82
82
  $attrs: {
83
83
  [x: string]: unknown;
84
84
  };
@@ -80,7 +80,7 @@ declare const _default: import("vue").DefineComponent<{
80
80
  onMousedown: {
81
81
  type: import("vue").PropType<(event: MouseEvent) => void>;
82
82
  };
83
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "loading" | "htmlType" | "ghost" | "block" | "danger">;
83
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "htmlType" | "loading" | "disabled" | "ghost" | "block" | "danger">;
84
84
  $attrs: {
85
85
  [x: string]: unknown;
86
86
  };
@@ -294,8 +294,8 @@ declare const BmEditor: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
294
294
  onReady?: ((...args: any[]) => any) | undefined;
295
295
  onGetCount?: ((...args: any[]) => any) | undefined;
296
296
  }, {
297
- value: string;
298
297
  disabled: boolean;
298
+ value: string;
299
299
  options: {
300
300
  [key: string]: any;
301
301
  };
@@ -294,8 +294,8 @@ declare const _default: import("vue").DefineComponent<{
294
294
  onReady?: ((...args: any[]) => any) | undefined;
295
295
  onGetCount?: ((...args: any[]) => any) | undefined;
296
296
  }, {
297
- value: string;
298
297
  disabled: boolean;
298
+ value: string;
299
299
  options: {
300
300
  [key: string]: any;
301
301
  };
@@ -1297,6 +1297,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1297
1297
  \u5546\u54C1\u7BB1\u89C4: "carton",
1298
1298
  \u5546\u54C1\u5355\u4F4D: "unit"
1299
1299
  };
1300
+ let productIndex = 0;
1300
1301
  const oper = "oper";
1301
1302
  const bmFloatTableRef = vue.ref();
1302
1303
  const importFeature = vue.computed(() => isShow("import"));
@@ -1339,6 +1340,12 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1339
1340
  });
1340
1341
  const xGrid = vue.computed(() => bmFloatTableRef.value.xGrid || {});
1341
1342
  const inputRef = vue.ref();
1343
+ const childRulesMap = vue.computed(
1344
+ () => props.rule?.config?.childRules.reduce((result, item) => {
1345
+ result[item.field] = item;
1346
+ return result;
1347
+ }, {}) || {}
1348
+ );
1342
1349
  function isShow(key) {
1343
1350
  return props.rule.config.tableAdvancedFeatures.includes(key);
1344
1351
  }
@@ -1395,12 +1402,13 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1395
1402
  }, {});
1396
1403
  }
1397
1404
  function getProductColumn(rule) {
1405
+ const productName = `\u5546\u54C1${String(++productIndex).padStart(2, "0")}`;
1398
1406
  const field = rule.field;
1399
1407
  const associatedFields = rule.config.associatedFields;
1400
1408
  const columns2 = [
1401
1409
  {
1402
1410
  field,
1403
- title: "\u5546\u54C1\u7F16\u7801",
1411
+ title: `\u5546\u54C1\u7F16\u7801-${productName}`,
1404
1412
  headerClassName: rule.effect.required ? "is-required" : "",
1405
1413
  minWidth: "138px",
1406
1414
  slots: {
@@ -1412,7 +1420,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1412
1420
  "onUpdate:value": (value) => {
1413
1421
  row[field] = value;
1414
1422
  },
1415
- onChange() {
1423
+ onPressEnter() {
1416
1424
  queryProductInfo(rule, row);
1417
1425
  }
1418
1426
  });
@@ -1425,7 +1433,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1425
1433
  const childField = field + item.value;
1426
1434
  columns2.push({
1427
1435
  field: childField,
1428
- title: item.label,
1436
+ title: `${item.label}-${productName}`,
1429
1437
  minWidth: "138px",
1430
1438
  slots: {
1431
1439
  default({ row }) {
@@ -1503,13 +1511,15 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1503
1511
  reader.onload = (fr) => {
1504
1512
  const rows = parseCsv(fr?.target?.result);
1505
1513
  const validColumns = columns.filter((c) => isValidColumn(c));
1514
+ const result = [];
1506
1515
  rows.forEach((row) => {
1507
1516
  const rowData = {};
1508
1517
  row.forEach((item, index) => {
1509
1518
  rowData[validColumns[index].field] = item;
1510
1519
  });
1511
- data.push(rowData);
1520
+ result.push(rowData);
1512
1521
  });
1522
+ validate(result);
1513
1523
  e.target.value = "";
1514
1524
  };
1515
1525
  file && reader.readAsText(file, "GB2312");
@@ -1520,10 +1530,64 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1520
1530
  function parseCsv(result) {
1521
1531
  let data2 = [];
1522
1532
  if (result) {
1523
- data2 = result.split("\r\n").slice(1).filter((item) => item).map((item) => item.split(","));
1533
+ data2 = result.split("\r\n").slice(1).filter((item) => item).map((item) => item.replaceAll(" ", "").split(","));
1524
1534
  }
1525
1535
  return data2;
1526
1536
  }
1537
+ function validate(rowData) {
1538
+ const validColumns = columns.filter((c) => isValidColumn(c));
1539
+ for (const row of rowData) {
1540
+ for (const { field } of validColumns) {
1541
+ const rule = childRulesMap.value[field];
1542
+ let value = row[field];
1543
+ const txtFormatFn = rule.config?.txtFormatFn;
1544
+ if (rule.effect.required && !value) {
1545
+ break;
1546
+ }
1547
+ if (txtFormatFn && !txtFormatFn(value)) {
1548
+ break;
1549
+ }
1550
+ if (rule.name === "input") {
1551
+ const maxlength = rule.props.maxlength || 200;
1552
+ if (value.length > maxlength) {
1553
+ break;
1554
+ }
1555
+ }
1556
+ if (rule.name === "textarea") {
1557
+ if (value.length > 5e3) {
1558
+ break;
1559
+ }
1560
+ }
1561
+ if (rule.name === "numInput") {
1562
+ if (rule.config.format === 1) {
1563
+ if (!value.includes("%")) {
1564
+ break;
1565
+ }
1566
+ } else {
1567
+ if (!isNaN(value)) {
1568
+ break;
1569
+ }
1570
+ }
1571
+ if (rule.config.decimalPlaces !== void 0 && value.split(".")[1]?.length > rule.config.decimalPlaces) {
1572
+ break;
1573
+ }
1574
+ }
1575
+ if (rule.name === "radio") {
1576
+ if (rule.options.every((item) => item.value !== value)) {
1577
+ break;
1578
+ }
1579
+ }
1580
+ if (rule.name === "checkbox") {
1581
+ value = value.split("\u3001");
1582
+ if (value.some((item) => rule.options.every((r) => r.value !== item))) {
1583
+ break;
1584
+ }
1585
+ row[field] = value;
1586
+ }
1587
+ if (rule.name === "date") ;
1588
+ }
1589
+ }
1590
+ }
1527
1591
  vue.watch(
1528
1592
  () => props.rule,
1529
1593
  () => {
@@ -1696,7 +1760,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1696
1760
  return panes.find((pane) => pane.key === activeKey.value);
1697
1761
  }
1698
1762
  function getTempDetail(templateCode) {
1699
- return props.extraConfig.fetchMaterialTempDetail({ templateCode });
1763
+ return props.extraConfig.materialTemp.fetchMaterialTempDetail({
1764
+ templateCode
1765
+ });
1700
1766
  }
1701
1767
  function handleUpload(list) {
1702
1768
  getAcitvePane().uploadList = list;
@@ -1803,9 +1869,11 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1803
1869
  }
1804
1870
  if (coverage.fieldType === 2) {
1805
1871
  const decimalPlaces = extraValues.decimalPlaces || 0;
1872
+ value.config.decimalPlaces = decimalPlaces;
1806
1873
  value.props = {
1807
1874
  placeholder: "\u8BF7\u8F93\u5165"
1808
1875
  };
1876
+ value.config.format = extraValues.format;
1809
1877
  if (extraValues.format === 1) {
1810
1878
  value.props.parser = (value2) => lodashEs.floor(value2.replace("%", ""), decimalPlaces);
1811
1879
  value.props.formatter = (value2) => `${value2}%`;
@@ -1872,7 +1940,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1872
1940
  }
1873
1941
  }
1874
1942
  props.value && initValue(props.value);
1875
- props.extraConfig.getDict().then((data) => {
1943
+ props.extraConfig.materialTemp.getDict().then((data) => {
1876
1944
  measrueDicts.value = data;
1877
1945
  });
1878
1946
  vue.watch(mainShopValue, () => {
@@ -2110,7 +2178,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2110
2178
  "extra-props": {
2111
2179
  maxCount: 9
2112
2180
  },
2113
- "upload-request": __props.extraConfig.uploadRequest,
2181
+ "upload-request": __props.extraConfig.materialTemp.uploadRequest,
2114
2182
  "default-list": pane.uploadList,
2115
2183
  onUpdate: handleUpload
2116
2184
  }, null, 8, ["upload-props", "upload-request", "default-list"])
@@ -2130,8 +2198,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2130
2198
  key: 0,
2131
2199
  rule: pane.tableRule,
2132
2200
  "disabled-table": __props.disabled?.includes?.("editTable"),
2201
+ "extra-config": __props.extraConfig,
2133
2202
  onChange: handleTableDataChange
2134
- }, null, 8, ["rule", "disabled-table"])) : vue.createCommentVNode("v-if", true)
2203
+ }, null, 8, ["rule", "disabled-table", "extra-config"])) : vue.createCommentVNode("v-if", true)
2135
2204
  ]),
2136
2205
  _: 2
2137
2206
  }, 1024)
@@ -2146,8 +2215,8 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2146
2215
  visible: visible.value,
2147
2216
  "onUpdate:visible": _cache[1] || (_cache[1] = ($event) => visible.value = $event),
2148
2217
  "main-shop-value": vue.unref(mainShopValue),
2149
- "fetch-material-type": __props.extraConfig.fetchMaterialType,
2150
- "fetch-material-temp": __props.extraConfig.fetchMaterialTemp,
2218
+ "fetch-material-type": __props.extraConfig.materialTemp.fetchMaterialType,
2219
+ "fetch-material-temp": __props.extraConfig.materialTemp.fetchMaterialTemp,
2151
2220
  onSelect: handleSelect
2152
2221
  }, null, 8, ["visible", "main-shop-value", "fetch-material-type", "fetch-material-temp"])
2153
2222
  ], 64);
@@ -2175,7 +2244,7 @@ var materialTemp = {
2175
2244
  field: data.field,
2176
2245
  props: {
2177
2246
  uploadPictureRule: data.config.uploadPictureRule,
2178
- extraConfig: extraConfig.materialTemp,
2247
+ extraConfig: extraConfig,
2179
2248
  value: data.value,
2180
2249
  },
2181
2250
  inject: true,
@@ -2266,7 +2335,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2266
2335
  placeholder: "\u8BF7\u8F93\u5165",
2267
2336
  value: __props.defalutValue,
2268
2337
  disabled: __props.disabled,
2269
- onBlur: handleBlur
2338
+ onPressEnter: handleBlur
2270
2339
  }, null, 8, ["value", "disabled"])
2271
2340
  ]),
2272
2341
  _: 1
@@ -1274,7 +1274,7 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1274
1274
  dateValue.value = date;
1275
1275
  emitChange(date);
1276
1276
  }
1277
- watch(format, () => {
1277
+ vue.watch(format, () => {
1278
1278
  handleDateChange("");
1279
1279
  });
1280
1280
  return (_ctx, _cache) => {
@@ -217,9 +217,9 @@ declare const BmSearchFilter: import("bm-admin-ui/es/utils/with-install").SFCWit
217
217
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
218
218
  onExpand?: ((...args: any[]) => any) | undefined;
219
219
  }, {
220
+ loading: boolean;
220
221
  labelCol: Record<string, any>;
221
222
  value: Record<string, any>;
222
- loading: boolean;
223
223
  showExpandBtn: boolean;
224
224
  showSearchIcon: boolean;
225
225
  expandPlacement: "left" | "right";
@@ -217,9 +217,9 @@ declare const _default: import("vue").DefineComponent<{
217
217
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
218
218
  onExpand?: ((...args: any[]) => any) | undefined;
219
219
  }, {
220
+ loading: boolean;
220
221
  labelCol: Record<string, any>;
221
222
  value: Record<string, any>;
222
- loading: boolean;
223
223
  showExpandBtn: boolean;
224
224
  showSearchIcon: boolean;
225
225
  expandPlacement: "left" | "right";
@@ -210,7 +210,7 @@ declare const BmSelectAll: import("bm-admin-ui/es/utils/with-install").SFCWithIn
210
210
  type: BooleanConstructor;
211
211
  default: any;
212
212
  };
213
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "choiceTransitionName" | "open" | "disabled" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "loading" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
213
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "loading" | "disabled" | "bordered" | "choiceTransitionName" | "open" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
214
214
  $attrs: {
215
215
  [x: string]: unknown;
216
216
  };
@@ -210,7 +210,7 @@ declare const _default: import("vue").DefineComponent<{
210
210
  type: BooleanConstructor;
211
211
  default: any;
212
212
  };
213
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "choiceTransitionName" | "open" | "disabled" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "loading" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
213
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "loading" | "disabled" | "bordered" | "choiceTransitionName" | "open" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
214
214
  $attrs: {
215
215
  [x: string]: unknown;
216
216
  };
@@ -1083,9 +1083,9 @@ declare const BmStaffsSelector: import("bm-admin-ui/es/utils/with-install").SFCW
1083
1083
  "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
1084
1084
  "onUpdate:select"?: ((...args: any[]) => any) | undefined;
1085
1085
  }, {
1086
+ title: string;
1086
1087
  mode: string;
1087
1088
  showCount: boolean;
1088
- title: string;
1089
1089
  visible: boolean;
1090
1090
  unitStr: string;
1091
1091
  limit: number;
@@ -1083,9 +1083,9 @@ declare const _default: import("vue").DefineComponent<{
1083
1083
  "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
1084
1084
  "onUpdate:select"?: ((...args: any[]) => any) | undefined;
1085
1085
  }, {
1086
+ title: string;
1086
1087
  mode: string;
1087
1088
  showCount: boolean;
1088
- title: string;
1089
1089
  visible: boolean;
1090
1090
  unitStr: string;
1091
1091
  limit: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bm-admin-ui",
3
- "version": "1.0.52-alpha",
3
+ "version": "1.0.53-alpha",
4
4
  "private": false,
5
5
  "description": "An Admin Component Library for Bm",
6
6
  "license": "UNLICENSED",
@@ -78,7 +78,7 @@ declare const BmButton: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
78
78
  onMousedown: {
79
79
  type: import("vue").PropType<(event: MouseEvent) => void>;
80
80
  };
81
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "loading" | "htmlType" | "ghost" | "block" | "danger">;
81
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "htmlType" | "loading" | "disabled" | "ghost" | "block" | "danger">;
82
82
  $attrs: {
83
83
  [x: string]: unknown;
84
84
  };
@@ -80,7 +80,7 @@ declare const _default: import("vue").DefineComponent<{
80
80
  onMousedown: {
81
81
  type: import("vue").PropType<(event: MouseEvent) => void>;
82
82
  };
83
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "disabled" | "loading" | "htmlType" | "ghost" | "block" | "danger">;
83
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "htmlType" | "loading" | "disabled" | "ghost" | "block" | "danger">;
84
84
  $attrs: {
85
85
  [x: string]: unknown;
86
86
  };
@@ -294,8 +294,8 @@ declare const BmEditor: import("bm-admin-ui/es/utils/with-install").SFCWithInsta
294
294
  onReady?: ((...args: any[]) => any) | undefined;
295
295
  onGetCount?: ((...args: any[]) => any) | undefined;
296
296
  }, {
297
- value: string;
298
297
  disabled: boolean;
298
+ value: string;
299
299
  options: {
300
300
  [key: string]: any;
301
301
  };
@@ -294,8 +294,8 @@ declare const _default: import("vue").DefineComponent<{
294
294
  onReady?: ((...args: any[]) => any) | undefined;
295
295
  onGetCount?: ((...args: any[]) => any) | undefined;
296
296
  }, {
297
- value: string;
298
297
  disabled: boolean;
298
+ value: string;
299
299
  options: {
300
300
  [key: string]: any;
301
301
  };
@@ -217,9 +217,9 @@ declare const BmSearchFilter: import("bm-admin-ui/es/utils/with-install").SFCWit
217
217
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
218
218
  onExpand?: ((...args: any[]) => any) | undefined;
219
219
  }, {
220
+ loading: boolean;
220
221
  labelCol: Record<string, any>;
221
222
  value: Record<string, any>;
222
- loading: boolean;
223
223
  showExpandBtn: boolean;
224
224
  showSearchIcon: boolean;
225
225
  expandPlacement: "left" | "right";
@@ -217,9 +217,9 @@ declare const _default: import("vue").DefineComponent<{
217
217
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
218
218
  onExpand?: ((...args: any[]) => any) | undefined;
219
219
  }, {
220
+ loading: boolean;
220
221
  labelCol: Record<string, any>;
221
222
  value: Record<string, any>;
222
- loading: boolean;
223
223
  showExpandBtn: boolean;
224
224
  showSearchIcon: boolean;
225
225
  expandPlacement: "left" | "right";
@@ -210,7 +210,7 @@ declare const BmSelectAll: import("bm-admin-ui/es/utils/with-install").SFCWithIn
210
210
  type: BooleanConstructor;
211
211
  default: any;
212
212
  };
213
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "choiceTransitionName" | "open" | "disabled" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "loading" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
213
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "loading" | "disabled" | "bordered" | "choiceTransitionName" | "open" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
214
214
  $attrs: {
215
215
  [x: string]: unknown;
216
216
  };
@@ -210,7 +210,7 @@ declare const _default: import("vue").DefineComponent<{
210
210
  type: BooleanConstructor;
211
211
  default: any;
212
212
  };
213
- }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "bordered" | "choiceTransitionName" | "open" | "disabled" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "loading" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
213
+ }>> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "loading" | "disabled" | "bordered" | "choiceTransitionName" | "open" | "virtual" | "dropdownMatchSelectWidth" | "autofocus" | "showSearch" | "defaultOpen" | "allowClear" | "showArrow" | "autoClearSearchValue" | "filterOption" | "defaultActiveFirstOption" | "labelInValue">;
214
214
  $attrs: {
215
215
  [x: string]: unknown;
216
216
  };
@@ -1083,9 +1083,9 @@ declare const BmStaffsSelector: import("bm-admin-ui/es/utils/with-install").SFCW
1083
1083
  "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
1084
1084
  "onUpdate:select"?: ((...args: any[]) => any) | undefined;
1085
1085
  }, {
1086
+ title: string;
1086
1087
  mode: string;
1087
1088
  showCount: boolean;
1088
- title: string;
1089
1089
  visible: boolean;
1090
1090
  unitStr: string;
1091
1091
  limit: number;
@@ -1083,9 +1083,9 @@ declare const _default: import("vue").DefineComponent<{
1083
1083
  "onUpdate:visible"?: ((...args: any[]) => any) | undefined;
1084
1084
  "onUpdate:select"?: ((...args: any[]) => any) | undefined;
1085
1085
  }, {
1086
+ title: string;
1086
1087
  mode: string;
1087
1088
  showCount: boolean;
1088
- title: string;
1089
1089
  visible: boolean;
1090
1090
  unitStr: string;
1091
1091
  limit: number;