bm-admin-ui 1.0.49-alpha → 1.0.51-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.
@@ -85,10 +85,18 @@ var input = {
85
85
  value: row[field],
86
86
  placeholder: data.props.placeholder,
87
87
  disabled: data.disabled,
88
- maxlength: 200,
88
+ maxlength: data.props.maxlength || 200,
89
89
  'onUpdate:value': (value) => {
90
90
  row[field] = value;
91
91
  },
92
+ onBlur() {
93
+ var _a;
94
+ const value = row[field];
95
+ const txtFormatFn = (_a = data === null || data === void 0 ? void 0 : data.config) === null || _a === void 0 ? void 0 : _a.txtFormatFn;
96
+ if (txtFormatFn && !txtFormatFn(value)) {
97
+ row[field] = '';
98
+ }
99
+ },
92
100
  });
93
101
  },
94
102
  },
@@ -220,6 +228,8 @@ var numInput = {
220
228
  return vue.h(antDesignVue.InputNumber, {
221
229
  value: row[field],
222
230
  placeholder: data.props.placeholder,
231
+ parser: data.props.parser,
232
+ formatter: data.props.formatter,
223
233
  'onUpdate:value': (value) => {
224
234
  row[field] = value;
225
235
  },
@@ -784,7 +794,8 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
784
794
  "defaultSelected",
785
795
  "load",
786
796
  "disabled",
787
- "fieldNames"
797
+ "fieldNames",
798
+ "immediateFetch"
788
799
  ],
789
800
  emits: ["change"],
790
801
  setup(__props, { emit: emits }) {
@@ -837,8 +848,9 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
837
848
  "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => visible.value = $event),
838
849
  title: __props.title,
839
850
  mode: __props.mode,
840
- load: __props.load
841
- }, null, 8, ["select", "visible", "title", "mode", "load"])
851
+ load: __props.load,
852
+ "immediate-fetch": __props.immediateFetch
853
+ }, null, 8, ["select", "visible", "title", "mode", "load", "immediate-fetch"])
842
854
  ]);
843
855
  };
844
856
  }
@@ -936,9 +948,21 @@ var people = {
936
948
  minWidth: data.config.fieldRatio,
937
949
  slots: {
938
950
  default({ row }) {
939
- return vue.h(StaffSelector, Object.assign({ title: '添加员工', mode: data.props.limit ? 'radio' : 'multiple', placeholder: data.props.placeholder, disabled: data.disabled, onChange: (value) => {
951
+ return vue.h(StaffSelector, {
952
+ title: '添加员工',
953
+ mode: data.props.limit ? 'radio' : 'multiple',
954
+ placeholder: data.props.placeholder,
955
+ disabled: data.disabled,
956
+ onChange: (value) => {
940
957
  row[field] = value;
941
- }, defaultSelected: row[field] }, extraConfig.people));
958
+ },
959
+ defaultSelected: row[field],
960
+ load(params) {
961
+ return __awaiter(this, void 0, void 0, function* () {
962
+ return yield extraConfig.people.fetch(params);
963
+ });
964
+ },
965
+ });
942
966
  },
943
967
  },
944
968
  };
@@ -998,8 +1022,8 @@ const _hoisted_5$4 = {
998
1022
  key: 1,
999
1023
  class: "bm-fc-select-material-temp__content__circle"
1000
1024
  };
1001
- const _hoisted_6$4 = ["title"];
1002
- const _hoisted_7$4 = { class: "bm-fc-select-material-temp__content__item-time" };
1025
+ const _hoisted_6$3 = ["title"];
1026
+ const _hoisted_7$3 = { class: "bm-fc-select-material-temp__content__item-time" };
1003
1027
  const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1004
1028
  __name: "select-material-temp",
1005
1029
  props: [
@@ -1214,9 +1238,9 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1214
1238
  vue.createElementVNode("span", {
1215
1239
  class: "bm-fc-select-material-temp__content__name",
1216
1240
  title: item.templateName
1217
- }, vue.toDisplayString(item.templateName), 9, _hoisted_6$4)
1241
+ }, vue.toDisplayString(item.templateName), 9, _hoisted_6$3)
1218
1242
  ], 8, _hoisted_4$4),
1219
- vue.createElementVNode("div", _hoisted_7$4, vue.toDisplayString(vue.unref(dayjs__default["default"])(item.lastUpdateTime).format("YYYY/MM/DD")), 1)
1243
+ vue.createElementVNode("div", _hoisted_7$3, vue.toDisplayString(vue.unref(dayjs__default["default"])(item.lastUpdateTime).format("YYYY/MM/DD")), 1)
1220
1244
  ])
1221
1245
  ]),
1222
1246
  _: 2
@@ -1253,11 +1277,15 @@ const _hoisted_2$4 = { class: "bm-dc-table-widget__title" };
1253
1277
  const _hoisted_3$3 = { class: "bm-dc-table-widget__title-samll" };
1254
1278
  const _hoisted_4$3 = { class: "bm-dc-table-widget__top-bar" };
1255
1279
  const _hoisted_5$3 = { class: "bm-dc-table-widget__table" };
1256
- const _hoisted_6$3 = ["onClick"];
1257
- const _hoisted_7$3 = ["onClick"];
1258
1280
  const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1259
1281
  __name: "table-widget",
1260
- props: ["rule", "extraConfig", "disabled"],
1282
+ props: [
1283
+ "rule",
1284
+ "extraConfig",
1285
+ "disabled",
1286
+ "disabledTable",
1287
+ "hidden"
1288
+ ],
1261
1289
  emits: ["change"],
1262
1290
  setup(__props, { emit: emits }) {
1263
1291
  const props = __props;
@@ -1280,7 +1308,10 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1280
1308
  columns: [...columns],
1281
1309
  data: [...data],
1282
1310
  checkboxConfig: {
1283
- trigger: "cell"
1311
+ trigger: "cell",
1312
+ checkMethod() {
1313
+ return !props.disabled;
1314
+ }
1284
1315
  }
1285
1316
  }));
1286
1317
  const countText = vue.computed(() => {
@@ -1316,13 +1347,13 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1316
1347
  data.splice(0, data.length);
1317
1348
  const childRules = lodashEs.cloneDeep(props.rule.config.childRules);
1318
1349
  const value = props.rule.value;
1319
- if (deleteFeature.value) {
1350
+ if (deleteFeature.value && !props.hidden) {
1320
1351
  columns.push({
1321
1352
  type: "checkbox",
1322
1353
  width: "54px"
1323
1354
  });
1324
1355
  }
1325
- if (props.disabled) {
1356
+ if (props.disabledTable) {
1326
1357
  childRules.forEach((rule) => {
1327
1358
  rule.disabled = true;
1328
1359
  });
@@ -1341,15 +1372,16 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1341
1372
  return pre;
1342
1373
  }, [])
1343
1374
  );
1344
- columns.push({
1345
- field: oper,
1346
- title: "\u64CD\u4F5C",
1347
- minWidth: "100px",
1348
- fixed: "right",
1349
- slots: {
1350
- default: "floatHandle"
1351
- }
1352
- });
1375
+ if (!props.hidden)
1376
+ columns.push({
1377
+ field: oper,
1378
+ title: "\u64CD\u4F5C",
1379
+ minWidth: "140px",
1380
+ fixed: "right",
1381
+ slots: {
1382
+ default: "floatHandle"
1383
+ }
1384
+ });
1353
1385
  handleAdd(value);
1354
1386
  }
1355
1387
  function getRowData() {
@@ -1514,19 +1546,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1514
1546
  vue.createTextVNode(vue.toDisplayString(__props.rule.title.title) + " ", 1),
1515
1547
  vue.createElementVNode("span", _hoisted_3$3, vue.toDisplayString(vue.unref(countText)), 1),
1516
1548
  vue.createElementVNode("div", _hoisted_4$3, [
1517
- vue.unref(importFeature) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
1518
- vue.createVNode(vue.unref(antDesignVue.Button), { onClick: handleDownload }, {
1519
- default: vue.withCtx(() => [
1520
- vue.createTextVNode("\u4E0B\u8F7D\u6A21\u677F")
1521
- ]),
1522
- _: 1
1523
- }),
1524
- vue.createVNode(vue.unref(antDesignVue.Button), { onClick: handleImport }, {
1525
- default: vue.withCtx(() => [
1526
- vue.createTextVNode("\u6279\u91CF\u5BFC\u5165")
1527
- ]),
1528
- _: 1
1529
- }),
1549
+ vue.unref(importFeature) && !__props.hidden ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
1530
1550
  vue.createElementVNode("input", {
1531
1551
  ref_key: "inputRef",
1532
1552
  ref: inputRef,
@@ -1535,19 +1555,40 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1535
1555
  type: "file",
1536
1556
  accept: "text/csv",
1537
1557
  onChange: handleChange
1538
- }, null, 544)
1558
+ }, null, 544),
1559
+ vue.createVNode(vue.unref(antDesignVue.Button), {
1560
+ disabled: __props.disabled,
1561
+ onClick: handleDownload
1562
+ }, {
1563
+ default: vue.withCtx(() => [
1564
+ vue.createTextVNode("\u4E0B\u8F7D\u6A21\u677F")
1565
+ ]),
1566
+ _: 1
1567
+ }, 8, ["disabled"]),
1568
+ vue.createVNode(vue.unref(antDesignVue.Button), {
1569
+ disabled: __props.disabled,
1570
+ onClick: handleImport
1571
+ }, {
1572
+ default: vue.withCtx(() => [
1573
+ vue.createTextVNode("\u6279\u91CF\u5BFC\u5165")
1574
+ ]),
1575
+ _: 1
1576
+ }, 8, ["disabled"])
1539
1577
  ], 64)) : vue.createCommentVNode("v-if", true),
1540
- vue.unref(deleteFeature) ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Button), {
1578
+ vue.unref(deleteFeature) && !__props.hidden ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Button), {
1541
1579
  key: 1,
1580
+ disabled: __props.disabled,
1542
1581
  onClick: handleBatchDelete
1543
1582
  }, {
1544
1583
  default: vue.withCtx(() => [
1545
1584
  vue.createTextVNode("\u6279\u91CF\u5220\u9664")
1546
1585
  ]),
1547
1586
  _: 1
1548
- })) : vue.createCommentVNode("v-if", true),
1549
- vue.createVNode(vue.unref(antDesignVue.Button), {
1587
+ }, 8, ["disabled"])) : vue.createCommentVNode("v-if", true),
1588
+ !__props.hidden ? (vue.openBlock(), vue.createBlock(vue.unref(antDesignVue.Button), {
1589
+ key: 2,
1550
1590
  type: "primary",
1591
+ disabled: __props.disabled,
1551
1592
  onClick: handleAdd
1552
1593
  }, {
1553
1594
  default: vue.withCtx(() => [
@@ -1555,7 +1596,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1555
1596
  vue.createTextVNode(" \u65B0\u589E ")
1556
1597
  ]),
1557
1598
  _: 1
1558
- })
1599
+ }, 8, ["disabled"])) : vue.createCommentVNode("v-if", true)
1559
1600
  ])
1560
1601
  ]),
1561
1602
  vue.createElementVNode("div", _hoisted_5$3, [
@@ -1568,14 +1609,30 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1568
1609
  }, {
1569
1610
  floatHandle: vue.withCtx(({ row, rowIndex }) => [
1570
1611
  vue.unref(copyFeature) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
1571
- vue.createElementVNode("a", {
1612
+ vue.createVNode(vue.unref(antDesignVue.Button), {
1613
+ type: "link",
1614
+ size: "small",
1615
+ disabled: __props.disabled,
1572
1616
  onClick: ($event) => handleCopy(row)
1573
- }, "\u590D\u5236", 8, _hoisted_6$3),
1617
+ }, {
1618
+ default: vue.withCtx(() => [
1619
+ vue.createTextVNode("\u590D\u5236")
1620
+ ]),
1621
+ _: 2
1622
+ }, 1032, ["disabled", "onClick"]),
1574
1623
  vue.createVNode(vue.unref(antDesignVue.Divider), { type: "vertical" })
1575
1624
  ], 64)) : vue.createCommentVNode("v-if", true),
1576
- vue.createElementVNode("a", {
1625
+ vue.createVNode(vue.unref(antDesignVue.Button), {
1626
+ type: "link",
1627
+ size: "small",
1628
+ disabled: __props.disabled,
1577
1629
  onClick: ($event) => handleDelete(rowIndex)
1578
- }, "\u5220\u9664", 8, _hoisted_7$3)
1630
+ }, {
1631
+ default: vue.withCtx(() => [
1632
+ vue.createTextVNode("\u5220\u9664")
1633
+ ]),
1634
+ _: 2
1635
+ }, 1032, ["disabled", "onClick"])
1579
1636
  ]),
1580
1637
  _: 1
1581
1638
  }, 8, ["config"])
@@ -1632,7 +1689,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1632
1689
  getTempDetail(tempId).then((result) => {
1633
1690
  const activePane2 = getAcitvePane();
1634
1691
  activePane2.tempSelected = result;
1635
- activePane2.tableRule = getTableRule(result.coverageArr);
1692
+ activePane2.tableRule = getTableRule(result);
1636
1693
  });
1637
1694
  }
1638
1695
  function getAcitvePane() {
@@ -1673,44 +1730,97 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1673
1730
  }
1674
1731
  }
1675
1732
  }
1676
- function getTableRule(coverageArr) {
1733
+ function getTableRule(tempResult) {
1734
+ const { coverageArr, preSetItems } = tempResult;
1677
1735
  const fieldTypeMap = {
1678
1736
  1: "input",
1679
1737
  2: "numInput",
1680
1738
  3: "date",
1681
- 4: "input"
1739
+ 4: "product"
1682
1740
  };
1683
1741
  const formatMap = {
1684
1742
  0: "YYYY-MM",
1685
1743
  1: "YYYY-MM-DD",
1686
1744
  2: "YYYY-MM-DD HH:mm"
1687
1745
  };
1746
+ const txtFormatFnMap = {
1747
+ 1: (txt) => /^\d{11}$/.test(txt),
1748
+ 2: (txt) => /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(txt),
1749
+ 3: (txt) => /(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(txt),
1750
+ 4: (txt) => /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(txt)
1751
+ };
1688
1752
  const activePane2 = getAcitvePane();
1689
- const childRules = coverageArr.filter((coverage) => coverage.fieldType === 4 || coverage.isEdit).map((coverage) => {
1690
- const extraValues = JSON.parse(coverage.extraValues);
1691
- const value = {
1692
- name: fieldTypeMap[coverage.fieldType],
1693
- title: {
1694
- title: coverage.name
1695
- },
1696
- field: coverage.name,
1697
- effect: {
1698
- required: coverage.fieldType === 4 || coverage.isCheck
1699
- },
1700
- config: {
1701
- fieldRatio: "140px"
1702
- }
1703
- };
1704
- if (coverage.fieldType === 3) {
1705
- value.props = {};
1706
- value.props.format = formatMap[extraValues.format];
1707
- }
1708
- if (coverage.fieldType === 1 || coverage.fieldType === 2 || coverage.fieldType === 4) {
1709
- value.props = {};
1710
- value.props.placeholder = "\u8BF7\u8F93\u5165";
1753
+ const childRules = preSetItems.split(",").map((preSetItem) => ({
1754
+ name: "product",
1755
+ title: {
1756
+ title: preSetItem
1757
+ },
1758
+ field: preSetItem,
1759
+ effect: {
1760
+ required: true
1761
+ },
1762
+ props: {
1763
+ placeholder: "\u8BF7\u8F93\u5165"
1764
+ },
1765
+ config: {
1766
+ associatedFields: coverageArr.filter((coverage) => {
1767
+ if (coverage.fieldType === 4) {
1768
+ const extraValues = JSON.parse(coverage.extraValues);
1769
+ return extraValues.fieldName === preSetItem;
1770
+ } else {
1771
+ return false;
1772
+ }
1773
+ }).map((coverage) => {
1774
+ const extraValues = JSON.parse(coverage.extraValues);
1775
+ return {
1776
+ value: extraValues.presetFieldName,
1777
+ label: extraValues.presetFieldName
1778
+ };
1779
+ })
1711
1780
  }
1712
- return value;
1713
- });
1781
+ })).concat(
1782
+ coverageArr.filter((coverage) => coverage.isEdit).map((coverage) => {
1783
+ const extraValues = JSON.parse(coverage.extraValues);
1784
+ const value = {
1785
+ name: fieldTypeMap[coverage.fieldType],
1786
+ title: {
1787
+ title: coverage.name
1788
+ },
1789
+ field: coverage.name,
1790
+ effect: {
1791
+ required: coverage.isCheck
1792
+ },
1793
+ config: {
1794
+ fieldRatio: "140px"
1795
+ }
1796
+ };
1797
+ if (coverage.fieldType === 1) {
1798
+ value.props = {
1799
+ placeholder: "\u8BF7\u8F93\u5165",
1800
+ maxlength: extraValues.maxLength
1801
+ };
1802
+ value.config.txtFormatFn = txtFormatFnMap[extraValues.format];
1803
+ }
1804
+ if (coverage.fieldType === 2) {
1805
+ const decimalPlaces = extraValues.decimalPlaces || 0;
1806
+ value.props = {
1807
+ placeholder: "\u8BF7\u8F93\u5165"
1808
+ };
1809
+ if (extraValues.format === 1) {
1810
+ value.props.parser = (value2) => lodashEs.floor(value2.replace("%", ""), decimalPlaces);
1811
+ value.props.formatter = (value2) => `${value2}%`;
1812
+ } else {
1813
+ value.props.parser = (value2) => lodashEs.floor(value2, decimalPlaces);
1814
+ }
1815
+ }
1816
+ if (coverage.fieldType === 3) {
1817
+ value.props = {
1818
+ format: formatMap[extraValues.format]
1819
+ };
1820
+ }
1821
+ return value;
1822
+ })
1823
+ );
1714
1824
  if (childRules.length)
1715
1825
  return {
1716
1826
  title: {
@@ -1735,6 +1845,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1735
1845
  key: pane.key,
1736
1846
  title: pane.title,
1737
1847
  tempIdSelected: pane.tempSelected.templateCode || pane.tempIdSelected,
1848
+ templateName: pane.tempSelected?.templateName || pane.templateName,
1738
1849
  tableData: pane.tableData,
1739
1850
  uploadList: pane.uploadList
1740
1851
  }))
@@ -1764,7 +1875,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1764
1875
  props.extraConfig.getDict().then((data) => {
1765
1876
  measrueDicts.value = data;
1766
1877
  });
1767
- vue.watch(mainShopValue, (val) => {
1878
+ vue.watch(mainShopValue, () => {
1768
1879
  panes.splice(0);
1769
1880
  activeKey.value = "\u7D20\u67501";
1770
1881
  panes.push({
@@ -2018,9 +2129,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2018
2129
  pane.tableRule ? (vue.openBlock(), vue.createBlock(TableWidget, {
2019
2130
  key: 0,
2020
2131
  rule: pane.tableRule,
2021
- disabled: __props.disabled?.includes?.("editTable"),
2132
+ "disabled-table": __props.disabled?.includes?.("editTable"),
2022
2133
  onChange: handleTableDataChange
2023
- }, null, 8, ["rule", "disabled"])) : vue.createCommentVNode("v-if", true)
2134
+ }, null, 8, ["rule", "disabled-table"])) : vue.createCommentVNode("v-if", true)
2024
2135
  ]),
2025
2136
  _: 2
2026
2137
  }, 1024)
@@ -2437,7 +2548,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
2437
2548
  options.value = result;
2438
2549
  return options.value;
2439
2550
  }).then((options2) => {
2440
- if (props.value.length) {
2551
+ if (props.value?.length) {
2441
2552
  if (props.multiple) {
2442
2553
  props.value.forEach((item) => loadValueOptions(item, options2));
2443
2554
  } else {
@@ -2638,6 +2749,7 @@ var row = {
2638
2749
  const children = [
2639
2750
  {
2640
2751
  type: 'row',
2752
+ field: data.field,
2641
2753
  props: {
2642
2754
  gutter: [0, 24],
2643
2755
  },
@@ -2656,7 +2768,6 @@ var row = {
2656
2768
  return {
2657
2769
  native: true,
2658
2770
  type: 'div',
2659
- field: data.field,
2660
2771
  children,
2661
2772
  class: 'bm-fc-module-widget',
2662
2773
  };
@@ -2758,9 +2869,23 @@ var department = {
2758
2869
  minWidth: data.config.fieldRatio,
2759
2870
  slots: {
2760
2871
  default({ row }) {
2761
- return vue.h(StaffSelector, Object.assign({ title: '添加部门', mode: data.props.limit ? 'radio' : 'multiple', placeholder: data.props.placeholder, immediateFetch: true, unitStr: '个', disabled: data.disabled, onChange: (value) => {
2872
+ return vue.h(StaffSelector, {
2873
+ title: '添加部门',
2874
+ mode: data.props.limit ? 'radio' : 'multiple',
2875
+ placeholder: data.props.placeholder,
2876
+ immediateFetch: true,
2877
+ unitStr: '个',
2878
+ disabled: data.disabled,
2879
+ onChange: (value) => {
2762
2880
  row[field] = value;
2763
- }, defaultSelected: row[field] }, extraConfig.department));
2881
+ },
2882
+ defaultSelected: row[field],
2883
+ load(params) {
2884
+ return __awaiter(this, void 0, void 0, function* () {
2885
+ return yield extraConfig.department.fetch(params);
2886
+ });
2887
+ },
2888
+ });
2764
2889
  },
2765
2890
  },
2766
2891
  };
@@ -2996,16 +3121,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2996
3121
  const rule = vue.ref([]);
2997
3122
  const processFormPermissions = vue.computed(
2998
3123
  () => props.formPermissions ? props.formPermissions.reduce((result, item) => {
2999
- if (item.disabled) {
3000
- if (item.name === "picture") {
3001
- ((item.props = {}).uploadProps = {}).disabled = true;
3002
- } else if (item.name === "materialTemp") {
3003
- (item.props = {}).disabled = item.disabled;
3004
- } else {
3005
- (item.props = {}).disabled = true;
3006
- }
3007
- }
3008
- delete item.disabled;
3009
3124
  result[item.field] = item;
3010
3125
  return result;
3011
3126
  }, {}) : {}
@@ -3015,45 +3130,88 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
3015
3130
  );
3016
3131
  vue.provide("mainShopValue", mainShopValue);
3017
3132
  function setRule(fdRule) {
3018
- fdRule = getRuleData(fdRule);
3019
- rule.value = fdRule.map((data) => {
3133
+ fdRule = setRuleValue(fdRule);
3134
+ fdRule = makeRule(fdRule);
3135
+ rule.value = setRulePermission(fdRule);
3136
+ }
3137
+ function makeRule(fdRule) {
3138
+ return fdRule.map((data) => {
3020
3139
  const childRules = data?.config?.childRules;
3021
3140
  const rule2 = ruleList[data.name].rule(data, props.extraConfig);
3022
3141
  if (data.name === "row" && childRules?.length) {
3023
3142
  const rowRule = rule2.children.find((item) => item.type === "row");
3024
3143
  childRules.forEach((ruleItem) => {
3025
3144
  rowRule.children.push(
3026
- mergeFormPermission(
3027
- ruleItem.field,
3028
- ruleList[ruleItem.name].rowRule(ruleItem, props.extraConfig)
3029
- )
3145
+ ruleList[ruleItem.name].rowRule(ruleItem, props.extraConfig)
3030
3146
  );
3031
3147
  });
3032
- } else if (data.name === "table" && childRules?.length) {
3033
- childRules.forEach((childRule) => {
3034
- const rulePermission = processFormPermissions.value[childRule.field];
3035
- if (rulePermission) {
3036
- childRule.hidden = rulePermission.hidden;
3037
- childRule.disabled = rulePermission.props?.disabled;
3038
- }
3039
- });
3040
- } else if (data.name === "materialTemp") {
3041
- rule2.children[1] = mergeFormPermission(data.field, rule2.children[1]);
3042
- return rule2;
3043
3148
  }
3044
- return mergeFormPermission(data.field, rule2);
3149
+ return rule2;
3045
3150
  });
3046
3151
  }
3047
- function mergeFormPermission(field, rule2) {
3048
- if (processFormPermissions.value[field]) {
3049
- rule2 = lodashEs.merge(rule2, processFormPermissions.value[field]);
3152
+ function mergeFormPermission(rule2) {
3153
+ rule2 = getFormFeildRule(rule2);
3154
+ const formPermission = processFormPermissions.value[rule2.field];
3155
+ const childRules = rule2?.props?.rule?.config?.childRules;
3156
+ const children = rule2.children;
3157
+ if (formPermission) {
3158
+ const { name } = formPermission;
3159
+ if (formPermission.disabled) {
3160
+ if (name === "picture") {
3161
+ rule2.props.uploadProps.disabled = true;
3162
+ } else if (name === "materialTemp") {
3163
+ rule2.props.disabled = formPermission.disabled;
3164
+ } else {
3165
+ if (!rule2.props) {
3166
+ rule2.props = {
3167
+ disabled: true
3168
+ };
3169
+ } else {
3170
+ rule2.props.disabled = true;
3171
+ }
3172
+ }
3173
+ }
3174
+ if (formPermission.hidden) {
3175
+ if (name === "table") {
3176
+ rule2.props.hidden = true;
3177
+ } else {
3178
+ rule2.hidden = true;
3179
+ }
3180
+ }
3050
3181
  }
3051
- return rule2;
3182
+ if (childRules?.length) {
3183
+ let allHidden = true;
3184
+ childRules.forEach((childRule) => {
3185
+ const innerFormPermission = processFormPermissions.value[childRule.field];
3186
+ if (innerFormPermission) {
3187
+ childRule.disabled = innerFormPermission.disabled;
3188
+ childRule.hidden = innerFormPermission.hidden;
3189
+ }
3190
+ if (!innerFormPermission || !childRule.hidden)
3191
+ allHidden = false;
3192
+ });
3193
+ if (formPermission?.hidden && allHidden) {
3194
+ rule2.hidden = true;
3195
+ }
3196
+ }
3197
+ if (children?.length) {
3198
+ children.forEach((child) => mergeFormPermission(child));
3199
+ }
3200
+ }
3201
+ function getFormFeildRule(rule2) {
3202
+ if (rule2.native) {
3203
+ return rule2.children.find((item) => item.field);
3204
+ } else
3205
+ return rule2;
3206
+ }
3207
+ function setRulePermission(fdRule) {
3208
+ fdRule.forEach((rule2) => mergeFormPermission(rule2));
3209
+ return fdRule;
3052
3210
  }
3053
3211
  function handleValue(value) {
3054
3212
  emits("update:value", value);
3055
3213
  }
3056
- function getRuleData(fdRule) {
3214
+ function setRuleValue(fdRule) {
3057
3215
  const ruleData = lodashEs.cloneDeep(fdRule);
3058
3216
  ruleData.forEach((rule2) => {
3059
3217
  if (rule2.name === "row") {