bm-admin-ui 1.2.35-alpha → 1.2.37-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.
@@ -10,71 +10,71 @@ var _export_sfc = (sfc, props) => {
10
10
  return target;
11
11
  };
12
12
 
13
- const _sfc_main = defineComponent({
14
- name: 'BmCascader',
15
- components: { DownOutlined },
16
- props: {
17
- tipType: {
18
- type: String,
19
- default: () => {
20
- return 'none'
21
- },
22
- },
23
- width: {
24
- type: Number,
25
- default: () => {
26
- return 200
27
- },
28
- },
29
- },
30
- setup(props, { emit, attrs }) {
31
- const nameArr = (arr) => {
32
- return arr.reduce(
33
- (acc, cur) => acc.concat(Array.isArray(cur) ? nameArr(cur) : cur),
34
- []
35
- )
36
- };
37
- const state = reactive({
38
- labelNameList: '',
39
- visible: false,
40
- });
41
- const methods = {
42
- onmouseover() {
43
- state.labelNameList.length && (state.visible = true);
44
- },
45
- onmouseout() {
46
- state.labelNameList.length && (state.visible = false);
47
- },
48
- onchange(value, selectedOptions) {
49
- if (attrs.multiple === '' || attrs.multiple) {
50
- let res = selectedOptions.map((v, k) => {
51
- return v.map((e, i) => {
52
- return e.label
53
- })
54
- });
55
- state.labelNameList = nameArr(res).join(',');
56
- }
57
- },
58
- };
59
- watch(
60
- () => state.labelNameList.length,
61
- (val) => {
62
- if (!val) {
63
- state.visible = false;
64
- }
65
- },
66
- { deep: true }
67
- );
68
- onMounted(() => {
69
- attrs.value?.length &&
70
- (state.labelNameList = nameArr(attrs.value).join(','));
71
- });
72
- return {
73
- ...toRefs(state),
74
- ...methods,
75
- }
76
- },
77
- });
13
+ const _sfc_main = defineComponent({
14
+ name: 'BmCascader',
15
+ components: { DownOutlined },
16
+ props: {
17
+ tipType: {
18
+ type: String,
19
+ default: () => {
20
+ return 'none'
21
+ },
22
+ },
23
+ width: {
24
+ type: Number,
25
+ default: () => {
26
+ return 200
27
+ },
28
+ },
29
+ },
30
+ setup(props, { emit, attrs }) {
31
+ const nameArr = (arr) => {
32
+ return arr.reduce(
33
+ (acc, cur) => acc.concat(Array.isArray(cur) ? nameArr(cur) : cur),
34
+ []
35
+ )
36
+ };
37
+ const state = reactive({
38
+ labelNameList: '',
39
+ visible: false,
40
+ });
41
+ const methods = {
42
+ onmouseover() {
43
+ state.labelNameList.length && (state.visible = true);
44
+ },
45
+ onmouseout() {
46
+ state.labelNameList.length && (state.visible = false);
47
+ },
48
+ onchange(value, selectedOptions) {
49
+ if (attrs.multiple === '' || attrs.multiple) {
50
+ let res = selectedOptions.map((v, k) => {
51
+ return v.map((e, i) => {
52
+ return e.label
53
+ })
54
+ });
55
+ state.labelNameList = nameArr(res).join(',');
56
+ }
57
+ },
58
+ };
59
+ watch(
60
+ () => state.labelNameList.length,
61
+ (val) => {
62
+ if (!val) {
63
+ state.visible = false;
64
+ }
65
+ },
66
+ { deep: true }
67
+ );
68
+ onMounted(() => {
69
+ attrs.value?.length &&
70
+ (state.labelNameList = nameArr(attrs.value).join(','));
71
+ });
72
+ return {
73
+ ...toRefs(state),
74
+ ...methods,
75
+ }
76
+ },
77
+ });
78
78
 
79
79
  const _hoisted_1 = {
80
80
  ref: "BmCascader",
@@ -95,18 +95,18 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
95
95
  ? (openBlock(), createBlock(_component_a_popover, {
96
96
  key: 0,
97
97
  visible: _ctx.visible,
98
- "get-popup-container":
99
- (triggerNode) => {
100
- return triggerNode.parentNode
101
- }
98
+ "get-popup-container":
99
+ (triggerNode) => {
100
+ return triggerNode.parentNode
101
+ }
102
102
 
103
103
  }, createSlots({
104
104
  default: withCtx(() => [
105
105
  createVNode(_component_a_cascader, mergeProps(_ctx.$attrs, {
106
- style: {
107
- width:
108
- _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
109
- minWidth: _ctx.width + 'px',
106
+ style: {
107
+ width:
108
+ _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
109
+ minWidth: _ctx.width + 'px',
110
110
  },
111
111
  "show-arrow": true,
112
112
  onMouseover: _ctx.onmouseover,
@@ -159,10 +159,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
159
159
  }, createSlots({
160
160
  default: withCtx(() => [
161
161
  createVNode(_component_a_cascader, mergeProps(_ctx.$attrs, {
162
- style: {
163
- width:
164
- _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
165
- minWidth: _ctx.width + 'px',
162
+ style: {
163
+ width:
164
+ _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
165
+ minWidth: _ctx.width + 'px',
166
166
  },
167
167
  "show-arrow": true,
168
168
  onMouseover: _ctx.onmouseover,
@@ -1070,7 +1070,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1070
1070
  createVNode(unref(BmOverTooltips), {
1071
1071
  title: unref(getShowValue)(item) || tmpForm.value[item.prop]
1072
1072
  }, null, 8, ["title"]),
1073
- createCommentVNode(' <AutoTooltip\r\n :tooltip="getShowValue(item) || tmpForm[item.prop]"\r\n /> ')
1073
+ createCommentVNode(' <AutoTooltip\n :tooltip="getShowValue(item) || tmpForm[item.prop]"\n /> ')
1074
1074
  ], 6)) : createCommentVNode("v-if", true),
1075
1075
  item.type === "multiText" ? (openBlock(), createElementBlock("div", {
1076
1076
  key: 15,
@@ -276,7 +276,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
276
276
  createElementVNode("span", {
277
277
  class: normalizeClass(["opeator", { active: __props.isCustom }])
278
278
  }, [
279
- createCommentVNode(' <CopyOutlined\r\n @click.stop="\r\n () => {\r\n copyCallback()\r\n }\r\n " />&nbsp;\u6682\u65F6\u5173\u95ED\u590D\u5236\u8282\u70B9 '),
279
+ createCommentVNode(' <CopyOutlined\n @click.stop="\n () => {\n copyCallback()\n }\n " />&nbsp;\u6682\u65F6\u5173\u95ED\u590D\u5236\u8282\u70B9 '),
280
280
  createVNode(unref(CloseOutlined), {
281
281
  onClick: _cache[0] || (_cache[0] = withModifiers(
282
282
  () => {
@@ -4,14 +4,14 @@ import { Input, InputNumber, RadioGroup, Radio, Select, DatePicker, RangePicker,
4
4
  import dayjs from 'dayjs';
5
5
  import Picture from 'bm-admin-ui/es/components/upload';
6
6
  import BmStaffsSelector from 'bm-admin-ui/es/components/staffs-selector';
7
- import { BmTagsDisplay, BmFloatTable } from 'bm-admin-ui/es/components';
7
+ import { BmTagsDisplay, BmFloatTable, BmOverTooltips } from 'bm-admin-ui/es/components';
8
8
  import { EyeOutlined, SearchOutlined, CheckCircleFilled, PlusOutlined } from '@ant-design/icons-vue';
9
9
  import { cloneDeep, floor, debounce } from 'lodash-es';
10
10
  import customParseFormat from 'dayjs/plugin/customParseFormat';
11
11
  import utils from 'bm-admin-ui/es/utils/index';
12
12
  import { isNull } from 'bm-admin-ui/es/utils/isNull';
13
13
  import FC from '@form-create/ant-design-vue';
14
- import BmOverTooltips from 'bm-admin-ui/es/components/over-tooltips';
14
+ import BmOverTooltips$1 from 'bm-admin-ui/es/components/over-tooltips';
15
15
 
16
16
  const fieldRatioMap = {
17
17
  '25%': 6,
@@ -382,7 +382,7 @@ var checkbox = {
382
382
  type: data.type,
383
383
  field: data.field,
384
384
  title: data.title.title,
385
- props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
385
+ props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, showArrow: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
386
386
  options: data.options,
387
387
  effect: {
388
388
  required: data.effect.required && (((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请选择'),
@@ -402,7 +402,7 @@ var checkbox = {
402
402
  type: data.type,
403
403
  field: data.field,
404
404
  title: data.title.title,
405
- props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
405
+ props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, showArrow: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
406
406
  options: data.options,
407
407
  effect: {
408
408
  required: data.effect.required && (((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请选择'),
@@ -428,6 +428,7 @@ var checkbox = {
428
428
  options: data.options,
429
429
  mode: 'multiple',
430
430
  allowClear: true,
431
+ showArrow: true,
431
432
  maxTagCount: data.props.maxTagCount,
432
433
  maxTagPlaceholder: data.props.maxTagPlaceholder,
433
434
  getPopupContainer: getContainer,
@@ -697,7 +698,7 @@ var picture = {
697
698
  {
698
699
  required: data.effect.required,
699
700
  type: 'array',
700
- min: 1,
701
+ min: data.effect.required ? 1 : 0,
701
702
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传图片',
702
703
  },
703
704
  ],
@@ -746,7 +747,7 @@ var picture = {
746
747
  {
747
748
  required: data.effect.required,
748
749
  type: 'array',
749
- min: 1,
750
+ min: data.effect.required ? 1 : 0,
750
751
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传图片',
751
752
  },
752
753
  ],
@@ -783,6 +784,8 @@ var file = {
783
784
  extraProps: {
784
785
  maxSize: 20,
785
786
  tips: '单个附件大小需≤20M',
787
+ maxCount: 1,
788
+ hideDisabledBtn: false,
786
789
  },
787
790
  defaultList: data.value,
788
791
  uploadRequest(inject, file) {
@@ -795,14 +798,8 @@ var file = {
795
798
  {
796
799
  required: data.effect.required,
797
800
  type: 'array',
798
- min: 1,
799
801
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传附件',
800
802
  },
801
- {
802
- type: 'array',
803
- len: 1,
804
- message: '附件数量不能超过1个',
805
- },
806
803
  ],
807
804
  inject: true,
808
805
  on: {
@@ -830,6 +827,8 @@ var file = {
830
827
  extraProps: {
831
828
  maxSize: 20,
832
829
  tips: '单个附件大小需≤20M',
830
+ maxCount: 1,
831
+ hideDisabledBtn: false,
833
832
  },
834
833
  defaultList: data.value,
835
834
  uploadRequest(inject, file) {
@@ -842,14 +841,8 @@ var file = {
842
841
  {
843
842
  required: data.effect.required,
844
843
  type: 'array',
845
- min: 1,
846
844
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传附件',
847
845
  },
848
- {
849
- type: 'array',
850
- len: 1,
851
- message: '附件数量不能超过1个',
852
- },
853
846
  ],
854
847
  inject: true,
855
848
  on: {
@@ -18773,7 +18766,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
18773
18766
  debounceFetch("");
18774
18767
  return (_ctx, _cache) => {
18775
18768
  return openBlock(), createElementBlock(Fragment, null, [
18776
- createCommentVNode(' <Input\r\n v-model:value="inputValue"\r\n placeholder="\u8BF7\u8F93\u5165"\r\n :disabled="disabled"\r\n @change="debounceFn($event.target.value)"\r\n ></Input> '),
18769
+ createCommentVNode(' <Input\n v-model:value="inputValue"\n placeholder="\u8BF7\u8F93\u5165"\n :disabled="disabled"\n @change="debounceFn($event.target.value)"\n ></Input> '),
18777
18770
  createVNode(unref(Select), {
18778
18771
  value: __props.value,
18779
18772
  placeholder: "\u8BF7\u9009\u62E9",
@@ -19076,6 +19069,9 @@ const _sfc_main$7 = defineComponent({
19076
19069
  let baseTitle = mainName;
19077
19070
  if (rule.name === "product") {
19078
19071
  baseTitle = `\u5546\u54C1\u7F16\u7801-${mainName}`;
19072
+ if (isProductCenter.value) {
19073
+ baseTitle = `\u5546\u54C1\u7F16\u53F7-${mainName}`;
19074
+ }
19079
19075
  if (isProductCenterSuit.value && rule.field === "productCode") {
19080
19076
  baseTitle = "\u5546\u54C1\u7F16\u53F7";
19081
19077
  }
@@ -19130,6 +19126,9 @@ const _sfc_main$7 = defineComponent({
19130
19126
  ]
19131
19127
  );
19132
19128
  }
19129
+ if (row[childField]) {
19130
+ return h(BmOverTooltips, { title: row[childField] }, []);
19131
+ }
19133
19132
  return h(
19134
19133
  "div",
19135
19134
  {
@@ -19137,10 +19136,10 @@ const _sfc_main$7 = defineComponent({
19137
19136
  color: "#9393A3"
19138
19137
  },
19139
19138
  class: {
19140
- "bm-fc-placeholder": !row[childField]
19139
+ "bm-fc-placeholder": true
19141
19140
  }
19142
19141
  },
19143
- [row[childField] || "\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"]
19142
+ ["\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"]
19144
19143
  );
19145
19144
  }
19146
19145
  }
@@ -19318,8 +19317,13 @@ const _sfc_main$7 = defineComponent({
19318
19317
  });
19319
19318
  result.length && validate(result).then((result2) => {
19320
19319
  data.splice(0, data.length, ...result2);
19320
+ message.success("\u5BFC\u5165\u6210\u529F");
19321
19321
  }).catch((error) => {
19322
- message.error("\u5B58\u5728\u9519\u8BEF\u6570\u636E\uFF0C\u5BFC\u5165\u5931\u8D25");
19322
+ if (typeof error === "string") {
19323
+ message.error("\u5B58\u5728\u9519\u8BEF\u6570\u636E\uFF0C\u5BFC\u5165\u5931\u8D25\uFF1A" + error);
19324
+ } else {
19325
+ message.error("\u5B58\u5728\u9519\u8BEF\u6570\u636E\uFF0C\u5BFC\u5165\u5931\u8D25");
19326
+ }
19323
19327
  console.log("---------------");
19324
19328
  console.log(error);
19325
19329
  console.log("---------------");
@@ -19340,22 +19344,34 @@ const _sfc_main$7 = defineComponent({
19340
19344
  if (columnArr.length !== columns.filter((c) => isValidColumn(c)).length) {
19341
19345
  message.error("\u5BFC\u5165\u7684\u6A21\u677F\u51FA\u9519");
19342
19346
  } else {
19343
- data2 = rows.slice(1).filter((item) => item).map(
19344
- (item) => item.includes(" ") ? item.split(" ") : item.split(",")
19345
- );
19347
+ data2 = rows.slice(1).filter((item) => item).map((item) => {
19348
+ let sonList = item.includes(" ") ? item.split(" ") : item.split(",");
19349
+ sonList = (sonList || []).map((sonItem) => {
19350
+ return sonItem === "" ? void 0 : sonItem;
19351
+ });
19352
+ return sonList;
19353
+ });
19346
19354
  }
19347
19355
  }
19348
19356
  return data2;
19349
19357
  }
19358
+ const parseMap = {
19359
+ product: "\u5546\u54C1\u7F16\u53F7",
19360
+ customer: "\u5BA2\u6237\u7F16\u53F7",
19361
+ shop: "\u5E97\u94FA\u7F16\u53F7",
19362
+ materialTemp: "\u7D20\u6750\u6A21\u677F",
19363
+ materialType: "\u7D20\u6750\u7C7B\u578B"
19364
+ };
19350
19365
  async function validate(rowData) {
19351
19366
  let error = "";
19352
19367
  const validColumns2 = columns.filter((c) => isValidColumn(c));
19353
19368
  for (const row of rowData) {
19354
- for (const { field } of validColumns2) {
19369
+ for (const curColumn of validColumns2) {
19370
+ const field = curColumn.field;
19355
19371
  const rule = childRulesMap.value[`${field}`];
19356
- const title = rule?.title?.title;
19357
19372
  if (!rule)
19358
19373
  continue;
19374
+ const title = rule?.title?.title || curColumn.title || parseMap[rule.name] || "";
19359
19375
  const fieldNames = props.extraConfig[rule.name]?.fieldNames;
19360
19376
  let value = row[`${field}`] || "";
19361
19377
  const txtFormatFn = rule.config?.txtFormatFn;
@@ -19513,6 +19529,9 @@ const _sfc_main$7 = defineComponent({
19513
19529
  [fieldNames.value]: shopInfo.shopCode,
19514
19530
  [fieldNames.label]: shopInfo.shopName
19515
19531
  };
19532
+ if (isProductCenter.value) {
19533
+ handleShopOption(shopInfo, rule, row);
19534
+ }
19516
19535
  } else {
19517
19536
  error = `${title}\u67E5\u8BE2\u7684\u5E97\u94FA\u4E0D\u5B58\u5728`;
19518
19537
  break;
@@ -19927,8 +19946,9 @@ const _sfc_main$7 = defineComponent({
19927
19946
  value: row[item.field],
19928
19947
  fetch: __props.extraConfig?.shop,
19929
19948
  "data-filtering": item?.config?.dataFiltering,
19949
+ disabled: item.disabled,
19930
19950
  onChange: ($event) => handleShopOption($event, item, row)
19931
- }, null, 8, ["value", "fetch", "data-filtering", "onChange"])
19951
+ }, null, 8, ["value", "fetch", "data-filtering", "disabled", "onChange"])
19932
19952
  ])
19933
19953
  };
19934
19954
  }),
@@ -21783,7 +21803,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21783
21803
  emits: ["update:value", "change"],
21784
21804
  setup(__props, { expose, emit: emits }) {
21785
21805
  const props = __props;
21786
- FC.component("BmLabelTooltip", BmOverTooltips);
21806
+ FC.component("BmLabelTooltip", BmOverTooltips$1);
21787
21807
  const formRuleList = computed(() => {
21788
21808
  if (typeof props.resolveRulesConfig === "function") {
21789
21809
  const rules = props.resolveRulesConfig(ruleList);
@@ -2842,7 +2842,7 @@ var ProductInfo = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__file", "product-
2842
2842
 
2843
2843
  const _hoisted_1$6 = { class: "bm-associated-fields-item__content" };
2844
2844
  const _hoisted_2$4 = { class: "bm-associated-fields-item__content" };
2845
- const _hoisted_3$3 = { style: { "text-align": "right", "margin": "6px 0 4px", "padding-right": "8px" } };
2845
+ const _hoisted_3$3 = { style: { "text-align": "left", "margin": "6px 0 4px", "padding-left": "12px" } };
2846
2846
  const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2847
2847
  __name: "pure-associated-fields",
2848
2848
  props: ["associatedFields", "options", "defaultOptions"],
@@ -2967,7 +2967,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
2967
2967
  })
2968
2968
  ]),
2969
2969
  default: withCtx(() => [
2970
- createVNode(unref(Button), { style: { "margin-top": "8px" } }, {
2970
+ createVNode(unref(Button), { style: { "margin-top": "8px", "width": "224px" } }, {
2971
2971
  default: withCtx(() => [
2972
2972
  createVNode(unref(PlusOutlined)),
2973
2973
  createTextVNode("\u6DFB\u52A0\u5B50\u5B57\u6BB5")
@@ -14,71 +14,71 @@ var _export_sfc = (sfc, props) => {
14
14
  return target;
15
15
  };
16
16
 
17
- const _sfc_main = vue.defineComponent({
18
- name: 'BmCascader',
19
- components: { DownOutlined: iconsVue.DownOutlined },
20
- props: {
21
- tipType: {
22
- type: String,
23
- default: () => {
24
- return 'none'
25
- },
26
- },
27
- width: {
28
- type: Number,
29
- default: () => {
30
- return 200
31
- },
32
- },
33
- },
34
- setup(props, { emit, attrs }) {
35
- const nameArr = (arr) => {
36
- return arr.reduce(
37
- (acc, cur) => acc.concat(Array.isArray(cur) ? nameArr(cur) : cur),
38
- []
39
- )
40
- };
41
- const state = vue.reactive({
42
- labelNameList: '',
43
- visible: false,
44
- });
45
- const methods = {
46
- onmouseover() {
47
- state.labelNameList.length && (state.visible = true);
48
- },
49
- onmouseout() {
50
- state.labelNameList.length && (state.visible = false);
51
- },
52
- onchange(value, selectedOptions) {
53
- if (attrs.multiple === '' || attrs.multiple) {
54
- let res = selectedOptions.map((v, k) => {
55
- return v.map((e, i) => {
56
- return e.label
57
- })
58
- });
59
- state.labelNameList = nameArr(res).join(',');
60
- }
61
- },
62
- };
63
- vue.watch(
64
- () => state.labelNameList.length,
65
- (val) => {
66
- if (!val) {
67
- state.visible = false;
68
- }
69
- },
70
- { deep: true }
71
- );
72
- vue.onMounted(() => {
73
- attrs.value?.length &&
74
- (state.labelNameList = nameArr(attrs.value).join(','));
75
- });
76
- return {
77
- ...vue.toRefs(state),
78
- ...methods,
79
- }
80
- },
81
- });
17
+ const _sfc_main = vue.defineComponent({
18
+ name: 'BmCascader',
19
+ components: { DownOutlined: iconsVue.DownOutlined },
20
+ props: {
21
+ tipType: {
22
+ type: String,
23
+ default: () => {
24
+ return 'none'
25
+ },
26
+ },
27
+ width: {
28
+ type: Number,
29
+ default: () => {
30
+ return 200
31
+ },
32
+ },
33
+ },
34
+ setup(props, { emit, attrs }) {
35
+ const nameArr = (arr) => {
36
+ return arr.reduce(
37
+ (acc, cur) => acc.concat(Array.isArray(cur) ? nameArr(cur) : cur),
38
+ []
39
+ )
40
+ };
41
+ const state = vue.reactive({
42
+ labelNameList: '',
43
+ visible: false,
44
+ });
45
+ const methods = {
46
+ onmouseover() {
47
+ state.labelNameList.length && (state.visible = true);
48
+ },
49
+ onmouseout() {
50
+ state.labelNameList.length && (state.visible = false);
51
+ },
52
+ onchange(value, selectedOptions) {
53
+ if (attrs.multiple === '' || attrs.multiple) {
54
+ let res = selectedOptions.map((v, k) => {
55
+ return v.map((e, i) => {
56
+ return e.label
57
+ })
58
+ });
59
+ state.labelNameList = nameArr(res).join(',');
60
+ }
61
+ },
62
+ };
63
+ vue.watch(
64
+ () => state.labelNameList.length,
65
+ (val) => {
66
+ if (!val) {
67
+ state.visible = false;
68
+ }
69
+ },
70
+ { deep: true }
71
+ );
72
+ vue.onMounted(() => {
73
+ attrs.value?.length &&
74
+ (state.labelNameList = nameArr(attrs.value).join(','));
75
+ });
76
+ return {
77
+ ...vue.toRefs(state),
78
+ ...methods,
79
+ }
80
+ },
81
+ });
82
82
 
83
83
  const _hoisted_1 = {
84
84
  ref: "BmCascader",
@@ -99,18 +99,18 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
99
99
  ? (vue.openBlock(), vue.createBlock(_component_a_popover, {
100
100
  key: 0,
101
101
  visible: _ctx.visible,
102
- "get-popup-container":
103
- (triggerNode) => {
104
- return triggerNode.parentNode
105
- }
102
+ "get-popup-container":
103
+ (triggerNode) => {
104
+ return triggerNode.parentNode
105
+ }
106
106
 
107
107
  }, vue.createSlots({
108
108
  default: vue.withCtx(() => [
109
109
  vue.createVNode(_component_a_cascader, vue.mergeProps(_ctx.$attrs, {
110
- style: {
111
- width:
112
- _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
113
- minWidth: _ctx.width + 'px',
110
+ style: {
111
+ width:
112
+ _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
113
+ minWidth: _ctx.width + 'px',
114
114
  },
115
115
  "show-arrow": true,
116
116
  onMouseover: _ctx.onmouseover,
@@ -163,10 +163,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
163
163
  }, vue.createSlots({
164
164
  default: vue.withCtx(() => [
165
165
  vue.createVNode(_component_a_cascader, vue.mergeProps(_ctx.$attrs, {
166
- style: {
167
- width:
168
- _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
169
- minWidth: _ctx.width + 'px',
166
+ style: {
167
+ width:
168
+ _ctx.$attrs.multiple === '' || _ctx.$attrs.multiple ? _ctx.width + 'px' : 'auto',
169
+ minWidth: _ctx.width + 'px',
170
170
  },
171
171
  "show-arrow": true,
172
172
  onMouseover: _ctx.onmouseover,
@@ -1078,7 +1078,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1078
1078
  vue.createVNode(vue.unref(BmOverTooltips__default["default"]), {
1079
1079
  title: vue.unref(getShowValue)(item) || tmpForm.value[item.prop]
1080
1080
  }, null, 8, ["title"]),
1081
- vue.createCommentVNode(' <AutoTooltip\r\n :tooltip="getShowValue(item) || tmpForm[item.prop]"\r\n /> ')
1081
+ vue.createCommentVNode(' <AutoTooltip\n :tooltip="getShowValue(item) || tmpForm[item.prop]"\n /> ')
1082
1082
  ], 6)) : vue.createCommentVNode("v-if", true),
1083
1083
  item.type === "multiText" ? (vue.openBlock(), vue.createElementBlock("div", {
1084
1084
  key: 15,
@@ -287,7 +287,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
287
287
  vue.createElementVNode("span", {
288
288
  class: vue.normalizeClass(["opeator", { active: __props.isCustom }])
289
289
  }, [
290
- vue.createCommentVNode(' <CopyOutlined\r\n @click.stop="\r\n () => {\r\n copyCallback()\r\n }\r\n " />&nbsp;\u6682\u65F6\u5173\u95ED\u590D\u5236\u8282\u70B9 '),
290
+ vue.createCommentVNode(' <CopyOutlined\n @click.stop="\n () => {\n copyCallback()\n }\n " />&nbsp;\u6682\u65F6\u5173\u95ED\u590D\u5236\u8282\u70B9 '),
291
291
  vue.createVNode(vue.unref(iconsVue.CloseOutlined), {
292
292
  onClick: _cache[0] || (_cache[0] = vue.withModifiers(
293
293
  () => {
@@ -396,7 +396,7 @@ var checkbox = {
396
396
  type: data.type,
397
397
  field: data.field,
398
398
  title: data.title.title,
399
- props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
399
+ props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, showArrow: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
400
400
  options: data.options,
401
401
  effect: {
402
402
  required: data.effect.required && (((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请选择'),
@@ -416,7 +416,7 @@ var checkbox = {
416
416
  type: data.type,
417
417
  field: data.field,
418
418
  title: data.title.title,
419
- props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
419
+ props: Object.assign({ placeholder: data.props.placeholder, allowClear: true, showArrow: true, maxTagCount: data.props.maxTagCount, maxTagPlaceholder: data.props.maxTagPlaceholder }, extraProps),
420
420
  options: data.options,
421
421
  effect: {
422
422
  required: data.effect.required && (((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请选择'),
@@ -442,6 +442,7 @@ var checkbox = {
442
442
  options: data.options,
443
443
  mode: 'multiple',
444
444
  allowClear: true,
445
+ showArrow: true,
445
446
  maxTagCount: data.props.maxTagCount,
446
447
  maxTagPlaceholder: data.props.maxTagPlaceholder,
447
448
  getPopupContainer: getContainer,
@@ -711,7 +712,7 @@ var picture = {
711
712
  {
712
713
  required: data.effect.required,
713
714
  type: 'array',
714
- min: 1,
715
+ min: data.effect.required ? 1 : 0,
715
716
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传图片',
716
717
  },
717
718
  ],
@@ -760,7 +761,7 @@ var picture = {
760
761
  {
761
762
  required: data.effect.required,
762
763
  type: 'array',
763
- min: 1,
764
+ min: data.effect.required ? 1 : 0,
764
765
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传图片',
765
766
  },
766
767
  ],
@@ -797,6 +798,8 @@ var file = {
797
798
  extraProps: {
798
799
  maxSize: 20,
799
800
  tips: '单个附件大小需≤20M',
801
+ maxCount: 1,
802
+ hideDisabledBtn: false,
800
803
  },
801
804
  defaultList: data.value,
802
805
  uploadRequest(inject, file) {
@@ -809,14 +812,8 @@ var file = {
809
812
  {
810
813
  required: data.effect.required,
811
814
  type: 'array',
812
- min: 1,
813
815
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传附件',
814
816
  },
815
- {
816
- type: 'array',
817
- len: 1,
818
- message: '附件数量不能超过1个',
819
- },
820
817
  ],
821
818
  inject: true,
822
819
  on: {
@@ -844,6 +841,8 @@ var file = {
844
841
  extraProps: {
845
842
  maxSize: 20,
846
843
  tips: '单个附件大小需≤20M',
844
+ maxCount: 1,
845
+ hideDisabledBtn: false,
847
846
  },
848
847
  defaultList: data.value,
849
848
  uploadRequest(inject, file) {
@@ -856,14 +855,8 @@ var file = {
856
855
  {
857
856
  required: data.effect.required,
858
857
  type: 'array',
859
- min: 1,
860
858
  message: ((_a = data.effect) === null || _a === void 0 ? void 0 : _a.requiredTip) || '请上传附件',
861
859
  },
862
- {
863
- type: 'array',
864
- len: 1,
865
- message: '附件数量不能超过1个',
866
- },
867
860
  ],
868
861
  inject: true,
869
862
  on: {
@@ -18787,7 +18780,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
18787
18780
  debounceFetch("");
18788
18781
  return (_ctx, _cache) => {
18789
18782
  return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
18790
- vue.createCommentVNode(' <Input\r\n v-model:value="inputValue"\r\n placeholder="\u8BF7\u8F93\u5165"\r\n :disabled="disabled"\r\n @change="debounceFn($event.target.value)"\r\n ></Input> '),
18783
+ vue.createCommentVNode(' <Input\n v-model:value="inputValue"\n placeholder="\u8BF7\u8F93\u5165"\n :disabled="disabled"\n @change="debounceFn($event.target.value)"\n ></Input> '),
18791
18784
  vue.createVNode(vue.unref(antDesignVue.Select), {
18792
18785
  value: __props.value,
18793
18786
  placeholder: "\u8BF7\u9009\u62E9",
@@ -19090,6 +19083,9 @@ const _sfc_main$7 = vue.defineComponent({
19090
19083
  let baseTitle = mainName;
19091
19084
  if (rule.name === "product") {
19092
19085
  baseTitle = `\u5546\u54C1\u7F16\u7801-${mainName}`;
19086
+ if (isProductCenter.value) {
19087
+ baseTitle = `\u5546\u54C1\u7F16\u53F7-${mainName}`;
19088
+ }
19093
19089
  if (isProductCenterSuit.value && rule.field === "productCode") {
19094
19090
  baseTitle = "\u5546\u54C1\u7F16\u53F7";
19095
19091
  }
@@ -19144,6 +19140,9 @@ const _sfc_main$7 = vue.defineComponent({
19144
19140
  ]
19145
19141
  );
19146
19142
  }
19143
+ if (row[childField]) {
19144
+ return vue.h(components.BmOverTooltips, { title: row[childField] }, []);
19145
+ }
19147
19146
  return vue.h(
19148
19147
  "div",
19149
19148
  {
@@ -19151,10 +19150,10 @@ const _sfc_main$7 = vue.defineComponent({
19151
19150
  color: "#9393A3"
19152
19151
  },
19153
19152
  class: {
19154
- "bm-fc-placeholder": !row[childField]
19153
+ "bm-fc-placeholder": true
19155
19154
  }
19156
19155
  },
19157
- [row[childField] || "\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"]
19156
+ ["\u7CFB\u7EDF\u81EA\u52A8\u83B7\u53D6"]
19158
19157
  );
19159
19158
  }
19160
19159
  }
@@ -19332,8 +19331,13 @@ const _sfc_main$7 = vue.defineComponent({
19332
19331
  });
19333
19332
  result.length && validate(result).then((result2) => {
19334
19333
  data.splice(0, data.length, ...result2);
19334
+ antDesignVue.message.success("\u5BFC\u5165\u6210\u529F");
19335
19335
  }).catch((error) => {
19336
- antDesignVue.message.error("\u5B58\u5728\u9519\u8BEF\u6570\u636E\uFF0C\u5BFC\u5165\u5931\u8D25");
19336
+ if (typeof error === "string") {
19337
+ antDesignVue.message.error("\u5B58\u5728\u9519\u8BEF\u6570\u636E\uFF0C\u5BFC\u5165\u5931\u8D25\uFF1A" + error);
19338
+ } else {
19339
+ antDesignVue.message.error("\u5B58\u5728\u9519\u8BEF\u6570\u636E\uFF0C\u5BFC\u5165\u5931\u8D25");
19340
+ }
19337
19341
  console.log("---------------");
19338
19342
  console.log(error);
19339
19343
  console.log("---------------");
@@ -19354,22 +19358,34 @@ const _sfc_main$7 = vue.defineComponent({
19354
19358
  if (columnArr.length !== columns.filter((c) => isValidColumn(c)).length) {
19355
19359
  antDesignVue.message.error("\u5BFC\u5165\u7684\u6A21\u677F\u51FA\u9519");
19356
19360
  } else {
19357
- data2 = rows.slice(1).filter((item) => item).map(
19358
- (item) => item.includes(" ") ? item.split(" ") : item.split(",")
19359
- );
19361
+ data2 = rows.slice(1).filter((item) => item).map((item) => {
19362
+ let sonList = item.includes(" ") ? item.split(" ") : item.split(",");
19363
+ sonList = (sonList || []).map((sonItem) => {
19364
+ return sonItem === "" ? void 0 : sonItem;
19365
+ });
19366
+ return sonList;
19367
+ });
19360
19368
  }
19361
19369
  }
19362
19370
  return data2;
19363
19371
  }
19372
+ const parseMap = {
19373
+ product: "\u5546\u54C1\u7F16\u53F7",
19374
+ customer: "\u5BA2\u6237\u7F16\u53F7",
19375
+ shop: "\u5E97\u94FA\u7F16\u53F7",
19376
+ materialTemp: "\u7D20\u6750\u6A21\u677F",
19377
+ materialType: "\u7D20\u6750\u7C7B\u578B"
19378
+ };
19364
19379
  async function validate(rowData) {
19365
19380
  let error = "";
19366
19381
  const validColumns2 = columns.filter((c) => isValidColumn(c));
19367
19382
  for (const row of rowData) {
19368
- for (const { field } of validColumns2) {
19383
+ for (const curColumn of validColumns2) {
19384
+ const field = curColumn.field;
19369
19385
  const rule = childRulesMap.value[`${field}`];
19370
- const title = rule?.title?.title;
19371
19386
  if (!rule)
19372
19387
  continue;
19388
+ const title = rule?.title?.title || curColumn.title || parseMap[rule.name] || "";
19373
19389
  const fieldNames = props.extraConfig[rule.name]?.fieldNames;
19374
19390
  let value = row[`${field}`] || "";
19375
19391
  const txtFormatFn = rule.config?.txtFormatFn;
@@ -19527,6 +19543,9 @@ const _sfc_main$7 = vue.defineComponent({
19527
19543
  [fieldNames.value]: shopInfo.shopCode,
19528
19544
  [fieldNames.label]: shopInfo.shopName
19529
19545
  };
19546
+ if (isProductCenter.value) {
19547
+ handleShopOption(shopInfo, rule, row);
19548
+ }
19530
19549
  } else {
19531
19550
  error = `${title}\u67E5\u8BE2\u7684\u5E97\u94FA\u4E0D\u5B58\u5728`;
19532
19551
  break;
@@ -19941,8 +19960,9 @@ const _sfc_main$7 = vue.defineComponent({
19941
19960
  value: row[item.field],
19942
19961
  fetch: __props.extraConfig?.shop,
19943
19962
  "data-filtering": item?.config?.dataFiltering,
19963
+ disabled: item.disabled,
19944
19964
  onChange: ($event) => handleShopOption($event, item, row)
19945
- }, null, 8, ["value", "fetch", "data-filtering", "onChange"])
19965
+ }, null, 8, ["value", "fetch", "data-filtering", "disabled", "onChange"])
19946
19966
  ])
19947
19967
  };
19948
19968
  }),
@@ -2852,7 +2852,7 @@ var ProductInfo = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__file", "product-
2852
2852
 
2853
2853
  const _hoisted_1$6 = { class: "bm-associated-fields-item__content" };
2854
2854
  const _hoisted_2$4 = { class: "bm-associated-fields-item__content" };
2855
- const _hoisted_3$3 = { style: { "text-align": "right", "margin": "6px 0 4px", "padding-right": "8px" } };
2855
+ const _hoisted_3$3 = { style: { "text-align": "left", "margin": "6px 0 4px", "padding-left": "12px" } };
2856
2856
  const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2857
2857
  __name: "pure-associated-fields",
2858
2858
  props: ["associatedFields", "options", "defaultOptions"],
@@ -2977,7 +2977,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
2977
2977
  })
2978
2978
  ]),
2979
2979
  default: vue.withCtx(() => [
2980
- vue.createVNode(vue.unref(antDesignVue.Button), { style: { "margin-top": "8px" } }, {
2980
+ vue.createVNode(vue.unref(antDesignVue.Button), { style: { "margin-top": "8px", "width": "224px" } }, {
2981
2981
  default: vue.withCtx(() => [
2982
2982
  vue.createVNode(vue.unref(iconsVue.PlusOutlined)),
2983
2983
  vue.createTextVNode("\u6DFB\u52A0\u5B50\u5B57\u6BB5")
package/package.json CHANGED
@@ -1,34 +1,34 @@
1
- {
2
- "name": "bm-admin-ui",
3
- "version": "1.2.35-alpha",
4
- "private": false,
5
- "description": "An Admin Component Library for Bm",
6
- "license": "UNLICENSED",
7
- "repository": {
8
- "type": "git",
9
- "url": "http://gitlab.admin.bluemoon.com.cn/Frontend-web/bm-admin-ui"
10
- },
11
- "main": "lib/index.js",
12
- "module": "es/index.js",
13
- "unpkg": "index.js",
14
- "peerDependencies": {
15
- "vue": "^3.2.31"
16
- },
17
- "dependencies": {
18
- "@form-create/ant-design-vue": "^3.1.12",
19
- "@logicflow/core": "^1.1.7",
20
- "@logicflow/extension": "^1.1.7",
21
- "floating-vue": "2.0.0-beta.17",
22
- "@ant-design/icons-vue": "^6.1.0",
23
- "ant-design-vue": "^3.2.10",
24
- "bm-admin-icons": "^0.2.7",
25
- "vuedraggable": "^4.1.0",
26
- "lodash-es": "^4.17.21",
27
- "dayjs": "^1.11.4",
28
- "vxe-table": "4.2.3",
29
- "xe-utils": "3.5.4"
30
- },
31
- "sideEffects": [
32
- "theme-chalk/*.css"
33
- ]
34
- }
1
+ {
2
+ "name": "bm-admin-ui",
3
+ "version": "1.2.37-alpha",
4
+ "private": false,
5
+ "description": "An Admin Component Library for Bm",
6
+ "license": "UNLICENSED",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "http://gitlab.admin.bluemoon.com.cn/Frontend-web/bm-admin-ui"
10
+ },
11
+ "main": "lib/index.js",
12
+ "module": "es/index.js",
13
+ "unpkg": "index.js",
14
+ "peerDependencies": {
15
+ "vue": "^3.2.31"
16
+ },
17
+ "dependencies": {
18
+ "@form-create/ant-design-vue": "^3.1.12",
19
+ "@logicflow/core": "^1.1.7",
20
+ "@logicflow/extension": "^1.1.7",
21
+ "floating-vue": "2.0.0-beta.17",
22
+ "@ant-design/icons-vue": "^6.1.0",
23
+ "ant-design-vue": "^3.2.10",
24
+ "bm-admin-icons": "^0.2.7",
25
+ "vuedraggable": "^4.1.0",
26
+ "lodash-es": "^4.17.21",
27
+ "dayjs": "^1.11.4",
28
+ "vxe-table": "4.2.3",
29
+ "xe-utils": "3.5.4"
30
+ },
31
+ "sideEffects": [
32
+ "theme-chalk/*.css"
33
+ ]
34
+ }