@fecp/designer 5.3.4 → 5.3.6
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.
- package/es/designer.css +208 -179
- package/es/packages/designer/package.json.mjs +1 -1
- package/es/packages/designer/src/components/FilterConfigDisplay.vue.mjs +5 -3
- package/es/packages/designer/src/packages/advancedFilter/ValueInput.vue2.mjs +2 -2
- package/es/packages/designer/src/packages/dataLinkage/index.vue.mjs +85 -75
- package/es/packages/designer/src/packages/dialogGlobal/index.vue.mjs +2 -0
- package/es/packages/designer/src/packages/eventFlow/dialog/action/TableChildRefresh.vue2.mjs +94 -0
- package/es/packages/designer/src/packages/eventFlow/dialog/action/TableRowDelete.vue2.mjs +54 -0
- package/es/packages/designer/src/packages/eventFlow/dialog/action/config.mjs +12 -1
- package/es/packages/designer/src/packages/formulaEditor/index.vue2.mjs +10 -1
- package/es/packages/designer/src/packages/table/headerBtn.vue.mjs +2 -0
- package/es/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.mjs +12 -5
- package/es/packages/designer/src/packages/table/queryModule/index.vue.mjs +11 -16
- package/es/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.mjs +5 -4
- package/es/packages/vue/src/components/forms/form/Form.vue.mjs +246 -139
- package/es/packages/vue/src/components/forms/formItem/FormItem.vue.mjs +20 -3
- package/es/packages/vue/src/components/forms/subForm/SubForm.vue.mjs +5 -6
- package/es/packages/vue/src/components/forms/subTable/SubTable.vue.mjs +12 -6
- package/es/packages/vue/src/components/table/CustomButtons.vue.mjs +11 -3
- package/es/packages/vue/src/components/table/DynamicQuery.vue.mjs +16 -8
- package/es/packages/vue/src/components/table/Table.vue.mjs +7 -5
- package/es/packages/vue/src/utils/eventFlow/actionHandlers.mjs +88 -2
- package/es/packages/vue/src/utils/parseFilterConfig.mjs +44 -0
- package/lib/designer.css +208 -179
- package/lib/packages/designer/package.json.js +1 -1
- package/lib/packages/designer/src/components/FilterConfigDisplay.vue.js +5 -3
- package/lib/packages/designer/src/packages/advancedFilter/ValueInput.vue2.js +2 -2
- package/lib/packages/designer/src/packages/dataLinkage/index.vue.js +93 -83
- package/lib/packages/designer/src/packages/dialogGlobal/index.vue.js +2 -0
- package/lib/packages/designer/src/packages/eventFlow/dialog/action/TableChildRefresh.vue2.js +94 -0
- package/lib/packages/designer/src/packages/eventFlow/dialog/action/TableRowDelete.vue2.js +54 -0
- package/lib/packages/designer/src/packages/eventFlow/dialog/action/config.js +12 -1
- package/lib/packages/designer/src/packages/formulaEditor/index.vue2.js +10 -1
- package/lib/packages/designer/src/packages/table/headerBtn.vue.js +2 -0
- package/lib/packages/designer/src/packages/table/queryModule/DynamicModeConfig.vue.js +12 -5
- package/lib/packages/designer/src/packages/table/queryModule/index.vue.js +11 -16
- package/lib/packages/vue/src/components/bus/approvalHistory/ApprovalHistory.vue.js +5 -4
- package/lib/packages/vue/src/components/forms/form/Form.vue.js +244 -137
- package/lib/packages/vue/src/components/forms/formItem/FormItem.vue.js +19 -2
- package/lib/packages/vue/src/components/forms/subForm/SubForm.vue.js +5 -6
- package/lib/packages/vue/src/components/forms/subTable/SubTable.vue.js +12 -6
- package/lib/packages/vue/src/components/table/CustomButtons.vue.js +11 -3
- package/lib/packages/vue/src/components/table/DynamicQuery.vue.js +16 -8
- package/lib/packages/vue/src/components/table/Table.vue.js +7 -5
- package/lib/packages/vue/src/utils/eventFlow/actionHandlers.js +94 -8
- package/lib/packages/vue/src/utils/parseFilterConfig.js +44 -0
- package/package.json +1 -1
|
@@ -38,8 +38,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
38
38
|
const traceNo = vue.ref("");
|
|
39
39
|
const formData = vue.inject("formData");
|
|
40
40
|
vue.inject("rowHeight");
|
|
41
|
-
|
|
41
|
+
vue.inject("gridLayout");
|
|
42
42
|
vue.inject("gridLayoutFieldsData");
|
|
43
|
+
const setFormItemHeight = vue.inject("setFormItemHeight");
|
|
43
44
|
const fieldsData = props.localConfig.fieldsData.map((item) => {
|
|
44
45
|
return item.component;
|
|
45
46
|
});
|
|
@@ -65,11 +66,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
65
66
|
const foundItem = props.localConfig.fieldsData.find(
|
|
66
67
|
(item) => item.id == props.config.id
|
|
67
68
|
);
|
|
68
|
-
const titleHeight = config.titleMode != "none" ? 60 : 0;
|
|
69
|
+
const titleHeight = props.config.titleMode != "none" ? 60 : 0;
|
|
69
70
|
if (foundItem) {
|
|
70
71
|
foundItem.fixedH = true;
|
|
71
72
|
foundItem.h = dom.offsetHeight + titleHeight;
|
|
72
|
-
|
|
73
|
+
setFormItemHeight(props.config.id, true, dom.offsetHeight + titleHeight);
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
return (_ctx, _cache) => {
|
|
@@ -126,5 +127,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
126
127
|
};
|
|
127
128
|
}
|
|
128
129
|
});
|
|
129
|
-
const _ApprovalHistory = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
130
|
+
const _ApprovalHistory = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-f7d02612"]]);
|
|
130
131
|
exports.default = _ApprovalHistory;
|
|
@@ -149,8 +149,12 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
149
149
|
});
|
|
150
150
|
hiddenFields.value = option.hiddenFields || [];
|
|
151
151
|
await loadFieldDataSources();
|
|
152
|
+
await loadProductData();
|
|
153
|
+
applyProductConfigToForm();
|
|
154
|
+
mergeOptionsToFields();
|
|
152
155
|
loadFormData();
|
|
153
156
|
loadEventFlow();
|
|
157
|
+
initGridLayoutDataConfig();
|
|
154
158
|
if (pageEvents && localConfig.value.pageEventConfig) {
|
|
155
159
|
const onCreatedEvent = localConfig.value.pageEventConfig.find(
|
|
156
160
|
(e) => e.name === "onCreated"
|
|
@@ -160,9 +164,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
160
164
|
await pageEvents.executeEvent("onCreated");
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
|
-
await loadProductData();
|
|
164
|
-
applyProductConfigToForm();
|
|
165
|
-
mergeOptionsToFields();
|
|
166
167
|
} catch (error) {
|
|
167
168
|
console.error("加载配置失败:", error);
|
|
168
169
|
index$5.ElMessage.error("加载配置失败");
|
|
@@ -176,7 +177,11 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
176
177
|
if (fieldsData.value) {
|
|
177
178
|
fieldsData.value.forEach((component) => {
|
|
178
179
|
if (component.fieldName) {
|
|
179
|
-
|
|
180
|
+
let defaultValue = component.defaultValue || null;
|
|
181
|
+
if (component.fieldType == "number") {
|
|
182
|
+
defaultValue = Number(defaultValue || 0);
|
|
183
|
+
}
|
|
184
|
+
defaultData[component.fieldName] = defaultValue;
|
|
180
185
|
}
|
|
181
186
|
if (component.fieldName) {
|
|
182
187
|
const fieldRules = validation.generateFieldRules(component);
|
|
@@ -359,16 +364,6 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
359
364
|
prodRules.value[formField.fieldName] = [];
|
|
360
365
|
}
|
|
361
366
|
const customValidator = (rule, value, callback) => {
|
|
362
|
-
console.log(
|
|
363
|
-
"🚀 ~ customValidator 被调用 ~ 字段:",
|
|
364
|
-
formField == null ? void 0 : formField.fieldName,
|
|
365
|
-
"值:",
|
|
366
|
-
value,
|
|
367
|
-
"minValue:",
|
|
368
|
-
minValue,
|
|
369
|
-
"maxValue:",
|
|
370
|
-
maxValue
|
|
371
|
-
);
|
|
372
367
|
if (value === null || value === void 0 || value === "") {
|
|
373
368
|
callback();
|
|
374
369
|
return;
|
|
@@ -474,7 +469,36 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
474
469
|
}
|
|
475
470
|
});
|
|
476
471
|
}
|
|
477
|
-
const
|
|
472
|
+
const gridLayoutFieldsData = vue.ref([]);
|
|
473
|
+
const oriGridLayoutData = vue.ref([]);
|
|
474
|
+
const formItemRefs = vue.ref(/* @__PURE__ */ new Map());
|
|
475
|
+
const setFormItemRef = (el, component) => {
|
|
476
|
+
if (!el) {
|
|
477
|
+
if (component && component.id) {
|
|
478
|
+
formItemRefs.value.delete(component.id);
|
|
479
|
+
}
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
if (component && component.id) {
|
|
483
|
+
formItemRefs.value.set(String(component.id), el);
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
const getFormItemRef = (fieldId) => {
|
|
487
|
+
const formItem = formItemRefs.value.get(fieldId);
|
|
488
|
+
if (!formItem) {
|
|
489
|
+
console.log(`未找到 fieldId: ${fieldId} 的 FormItem 组件`);
|
|
490
|
+
return null;
|
|
491
|
+
}
|
|
492
|
+
console.log(`找到 FormItem 组件:`, formItem);
|
|
493
|
+
if (typeof formItem.getInnerComponentRef === "function") {
|
|
494
|
+
const innerRef = formItem.getInnerComponentRef();
|
|
495
|
+
console.log(`内部组件 ref:`, innerRef);
|
|
496
|
+
return innerRef;
|
|
497
|
+
} else {
|
|
498
|
+
console.log(`FormItem 组件没有 getInnerComponentRef 方法`);
|
|
499
|
+
return null;
|
|
500
|
+
}
|
|
501
|
+
};
|
|
478
502
|
function initGridLayoutDataConfig() {
|
|
479
503
|
let gridLayoutData = common.cloneDeep(localConfig.value.fieldsData || []);
|
|
480
504
|
gridLayoutData = gridLayoutData.map((item) => {
|
|
@@ -492,125 +516,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
492
516
|
}
|
|
493
517
|
return item;
|
|
494
518
|
});
|
|
495
|
-
|
|
519
|
+
oriGridLayoutData.value = gridLayoutData;
|
|
496
520
|
}
|
|
497
|
-
const gridLayoutFieldsData = vue.computed(() => {
|
|
498
|
-
initGridLayoutDataConfig();
|
|
499
|
-
let gridLayoutData = common.cloneDeep(gridLayoutDataConfig.value || []);
|
|
500
|
-
const linkedConfig = localConfig.value.linkedConfig || {};
|
|
501
|
-
const dataLink = (linkedConfig == null ? void 0 : linkedConfig.dataLink) || [];
|
|
502
|
-
const fields = [...fieldsData.value, ...hiddenFields.value];
|
|
503
|
-
dataLink.forEach((item) => {
|
|
504
|
-
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
505
|
-
const fieldAssignments = item.fieldAssignments || [];
|
|
506
|
-
fieldAssignments.forEach((assignment) => {
|
|
507
|
-
var _a, _b;
|
|
508
|
-
const fieldId = assignment.fieldId;
|
|
509
|
-
const formulaText = (_b = (_a = assignment.formula) == null ? void 0 : _a.value) == null ? void 0 : _b.text;
|
|
510
|
-
const field = fields.find((f) => f.id == fieldId);
|
|
511
|
-
if (field && formulaText) {
|
|
512
|
-
const calcResult = calculate.calculate({
|
|
513
|
-
text: formulaText,
|
|
514
|
-
marks: [],
|
|
515
|
-
value: formData.value
|
|
516
|
-
});
|
|
517
|
-
formData.value[field.fieldName] = calcResult;
|
|
518
|
-
}
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
|
-
});
|
|
522
|
-
const visibility = (linkedConfig == null ? void 0 : linkedConfig.visibility) || [];
|
|
523
|
-
visibility.forEach((item) => {
|
|
524
|
-
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
525
|
-
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
526
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
527
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
528
|
-
if (layoutFieldItem) {
|
|
529
|
-
layoutFieldItem.hidden = false;
|
|
530
|
-
}
|
|
531
|
-
});
|
|
532
|
-
} else {
|
|
533
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
534
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
535
|
-
if (layoutFieldItem) {
|
|
536
|
-
layoutFieldItem.hidden = true;
|
|
537
|
-
}
|
|
538
|
-
});
|
|
539
|
-
}
|
|
540
|
-
});
|
|
541
|
-
gridLayoutData = gridLayoutData.filter((item) => !item.hidden);
|
|
542
|
-
const requiredArr = (linkedConfig == null ? void 0 : linkedConfig.required) || [];
|
|
543
|
-
requiredArr.forEach((item) => {
|
|
544
|
-
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
545
|
-
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
546
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
547
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
548
|
-
if (layoutFieldItem) {
|
|
549
|
-
layoutFieldItem.component.required = true;
|
|
550
|
-
}
|
|
551
|
-
});
|
|
552
|
-
} else {
|
|
553
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
554
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
555
|
-
if (layoutFieldItem) {
|
|
556
|
-
layoutFieldItem.component.required = false;
|
|
557
|
-
}
|
|
558
|
-
});
|
|
559
|
-
}
|
|
560
|
-
});
|
|
561
|
-
const rules = {};
|
|
562
|
-
gridLayoutData.forEach(({ component }) => {
|
|
563
|
-
if (component.fieldName) {
|
|
564
|
-
const fieldRules = validation.generateFieldRules(component);
|
|
565
|
-
if (fieldRules.length > 0) {
|
|
566
|
-
rules[component.fieldName] = fieldRules;
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
});
|
|
570
|
-
for (let fieldName in prodRules.value) {
|
|
571
|
-
rules[fieldName] = prodRules.value[fieldName];
|
|
572
|
-
}
|
|
573
|
-
formRules.value = rules;
|
|
574
|
-
const readonlyArr = (linkedConfig == null ? void 0 : linkedConfig.readonly) || [];
|
|
575
|
-
readonlyArr.forEach((item) => {
|
|
576
|
-
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
577
|
-
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
578
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
579
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
580
|
-
if (layoutFieldItem) {
|
|
581
|
-
layoutFieldItem.component.readOnly = true;
|
|
582
|
-
}
|
|
583
|
-
});
|
|
584
|
-
} else {
|
|
585
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
586
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
587
|
-
if (layoutFieldItem) {
|
|
588
|
-
layoutFieldItem.component.readOnly = false;
|
|
589
|
-
}
|
|
590
|
-
});
|
|
591
|
-
}
|
|
592
|
-
});
|
|
593
|
-
const disabledArr = (linkedConfig == null ? void 0 : linkedConfig.disabled) || [];
|
|
594
|
-
disabledArr.forEach((item) => {
|
|
595
|
-
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
596
|
-
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
597
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
598
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
599
|
-
if (layoutFieldItem) {
|
|
600
|
-
layoutFieldItem.component.disabled = true;
|
|
601
|
-
}
|
|
602
|
-
});
|
|
603
|
-
} else {
|
|
604
|
-
dataLinkFieldList.forEach((fieldId) => {
|
|
605
|
-
const layoutFieldItem = gridLayoutData.find((g) => g.id == fieldId);
|
|
606
|
-
if (layoutFieldItem) {
|
|
607
|
-
layoutFieldItem.component.disabled = false;
|
|
608
|
-
}
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
});
|
|
612
|
-
return gridLayoutData;
|
|
613
|
-
});
|
|
614
521
|
const getFieldError = (fieldName) => {
|
|
615
522
|
var _a;
|
|
616
523
|
if (!formRef.value) return "";
|
|
@@ -748,13 +655,210 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
748
655
|
vue.onMounted(() => {
|
|
749
656
|
loadConfig();
|
|
750
657
|
});
|
|
658
|
+
vue.onBeforeUnmount(() => {
|
|
659
|
+
formItemRefs.value.clear();
|
|
660
|
+
});
|
|
661
|
+
const prevFormData = vue.ref({});
|
|
662
|
+
const findChangedFields = (newData, oldData) => {
|
|
663
|
+
const changedFields = [];
|
|
664
|
+
const allKeys = /* @__PURE__ */ new Set([
|
|
665
|
+
...Object.keys(newData || {}),
|
|
666
|
+
...Object.keys(oldData || {})
|
|
667
|
+
]);
|
|
668
|
+
for (const key of allKeys) {
|
|
669
|
+
const newVal = newData[key];
|
|
670
|
+
const oldVal = oldData[key];
|
|
671
|
+
if (newVal !== oldVal) {
|
|
672
|
+
changedFields.push(key);
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
return changedFields;
|
|
676
|
+
};
|
|
677
|
+
const filterRelevantLinkageConfigs = (changedFieldNames, linkedConfig, fields) => {
|
|
678
|
+
const result = {
|
|
679
|
+
dataLink: [],
|
|
680
|
+
visibility: [],
|
|
681
|
+
required: [],
|
|
682
|
+
readonly: [],
|
|
683
|
+
disabled: []
|
|
684
|
+
};
|
|
685
|
+
if (!linkedConfig || changedFieldNames.length === 0) {
|
|
686
|
+
return result;
|
|
687
|
+
}
|
|
688
|
+
const changedFieldIds = changedFieldNames.map((fieldName) => {
|
|
689
|
+
const field = fields.find((f) => f.fieldName == fieldName);
|
|
690
|
+
return field ? field.id : null;
|
|
691
|
+
}).filter((id) => id !== null);
|
|
692
|
+
if (linkedConfig.dataLink) {
|
|
693
|
+
result.dataLink = linkedConfig.dataLink.filter((item) => {
|
|
694
|
+
return changedFieldIds.some(
|
|
695
|
+
(fieldId) => parseFilterConfig.checkFieldInFilterConfig(item.filterConfig, fieldId) || parseFilterConfig.checkFieldInResultConfig(item.fieldAssignments, fieldId, fields)
|
|
696
|
+
);
|
|
697
|
+
});
|
|
698
|
+
}
|
|
699
|
+
if (linkedConfig.visibility) {
|
|
700
|
+
result.visibility = linkedConfig.visibility;
|
|
701
|
+
}
|
|
702
|
+
if (linkedConfig.required) {
|
|
703
|
+
result.required = linkedConfig.required;
|
|
704
|
+
}
|
|
705
|
+
if (linkedConfig.readonly) {
|
|
706
|
+
result.readonly = linkedConfig.readonly;
|
|
707
|
+
}
|
|
708
|
+
if (linkedConfig.disabled) {
|
|
709
|
+
result.disabled = linkedConfig.disabled;
|
|
710
|
+
}
|
|
711
|
+
return result;
|
|
712
|
+
};
|
|
713
|
+
const applyLinkageEffectsForChangedFields = (changedFieldNames) => {
|
|
714
|
+
var _a;
|
|
715
|
+
console.log(
|
|
716
|
+
"🚀 ~ applyLinkageEffectsForChangedFields ~ 变化的字段:",
|
|
717
|
+
changedFieldNames
|
|
718
|
+
);
|
|
719
|
+
const linkedConfig = localConfig.value.linkedConfig || {};
|
|
720
|
+
const fields = [...fieldsData.value, ...hiddenFields.value];
|
|
721
|
+
const relevantConfigs = filterRelevantLinkageConfigs(
|
|
722
|
+
changedFieldNames,
|
|
723
|
+
linkedConfig,
|
|
724
|
+
fields
|
|
725
|
+
);
|
|
726
|
+
relevantConfigs.dataLink.forEach((item) => {
|
|
727
|
+
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
728
|
+
const fieldAssignments = item.fieldAssignments || [];
|
|
729
|
+
fieldAssignments.forEach((assignment) => {
|
|
730
|
+
var _a2, _b;
|
|
731
|
+
const fieldId = assignment.fieldId;
|
|
732
|
+
const formulaText = (_b = (_a2 = assignment.formula) == null ? void 0 : _a2.value) == null ? void 0 : _b.text;
|
|
733
|
+
const field = fields.find((f) => f.id == fieldId);
|
|
734
|
+
if (field && formulaText) {
|
|
735
|
+
const calcResult = calculate.calculate({
|
|
736
|
+
text: formulaText,
|
|
737
|
+
marks: [],
|
|
738
|
+
value: formData.value
|
|
739
|
+
});
|
|
740
|
+
formData.value[field.fieldName] = calcResult;
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
});
|
|
745
|
+
const updatedLayoutData = common.cloneDeep(oriGridLayoutData.value || []);
|
|
746
|
+
relevantConfigs.visibility.forEach((item) => {
|
|
747
|
+
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
748
|
+
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
749
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
750
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
751
|
+
if (layoutFieldItem) {
|
|
752
|
+
layoutFieldItem.hidden = false;
|
|
753
|
+
}
|
|
754
|
+
});
|
|
755
|
+
} else {
|
|
756
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
757
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
758
|
+
if (layoutFieldItem) {
|
|
759
|
+
layoutFieldItem.hidden = true;
|
|
760
|
+
}
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
});
|
|
764
|
+
relevantConfigs.required.forEach((item) => {
|
|
765
|
+
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
766
|
+
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
767
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
768
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
769
|
+
if (layoutFieldItem) {
|
|
770
|
+
layoutFieldItem.component.required = true;
|
|
771
|
+
}
|
|
772
|
+
});
|
|
773
|
+
} else {
|
|
774
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
775
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
776
|
+
if (layoutFieldItem) {
|
|
777
|
+
layoutFieldItem.component.required = false;
|
|
778
|
+
}
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
});
|
|
782
|
+
const rules = {};
|
|
783
|
+
updatedLayoutData.forEach(({ component }) => {
|
|
784
|
+
if (component.fieldName) {
|
|
785
|
+
const fieldRules = validation.generateFieldRules(component);
|
|
786
|
+
if (fieldRules.length > 0) {
|
|
787
|
+
rules[component.fieldName] = fieldRules;
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
});
|
|
791
|
+
for (let fieldName in prodRules.value) {
|
|
792
|
+
rules[fieldName] = prodRules.value[fieldName];
|
|
793
|
+
}
|
|
794
|
+
formRules.value = rules;
|
|
795
|
+
relevantConfigs.readonly.forEach((item) => {
|
|
796
|
+
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
797
|
+
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
798
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
799
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
800
|
+
if (layoutFieldItem) {
|
|
801
|
+
layoutFieldItem.component.readOnly = true;
|
|
802
|
+
}
|
|
803
|
+
});
|
|
804
|
+
} else {
|
|
805
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
806
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
807
|
+
if (layoutFieldItem) {
|
|
808
|
+
layoutFieldItem.component.readOnly = false;
|
|
809
|
+
}
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
});
|
|
813
|
+
relevantConfigs.disabled.forEach((item) => {
|
|
814
|
+
const dataLinkFieldList = item.dataLinkFieldList || [];
|
|
815
|
+
if (parseFilterConfig.checkFilterMatch(item.filterConfig, formData.value, fields)) {
|
|
816
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
817
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
818
|
+
if (layoutFieldItem) {
|
|
819
|
+
layoutFieldItem.component.disabled = true;
|
|
820
|
+
}
|
|
821
|
+
});
|
|
822
|
+
} else {
|
|
823
|
+
dataLinkFieldList.forEach((fieldId) => {
|
|
824
|
+
const layoutFieldItem = updatedLayoutData.find((g) => g.id == fieldId);
|
|
825
|
+
if (layoutFieldItem) {
|
|
826
|
+
layoutFieldItem.component.disabled = false;
|
|
827
|
+
}
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
});
|
|
831
|
+
gridLayoutFieldsData.value = updatedLayoutData.filter((item) => !item.hidden);
|
|
832
|
+
(_a = gridLayout == null ? void 0 : gridLayout.value) == null ? void 0 : _a.resizeEvent();
|
|
833
|
+
};
|
|
751
834
|
vue.watch(
|
|
752
835
|
formData,
|
|
753
|
-
(newVal) => {
|
|
836
|
+
(newVal, oldVal) => {
|
|
837
|
+
const changedFields = findChangedFields(newVal, prevFormData.value);
|
|
838
|
+
if (changedFields.length > 0) {
|
|
839
|
+
applyLinkageEffectsForChangedFields(changedFields);
|
|
840
|
+
}
|
|
841
|
+
prevFormData.value = { ...newVal };
|
|
754
842
|
emit("update:modelValue", newVal);
|
|
755
843
|
},
|
|
756
844
|
{ deep: true }
|
|
757
845
|
);
|
|
846
|
+
function setFormItemHeight(id, fixedH, h) {
|
|
847
|
+
var _a;
|
|
848
|
+
const item = gridLayoutFieldsData.value.find((item2) => item2.id == id);
|
|
849
|
+
if (!fixedH) {
|
|
850
|
+
item.h = h * 60;
|
|
851
|
+
} else if (fixedH) {
|
|
852
|
+
item.h = h / (localConfig.value.labelPosition == "top" ? 1.5 : 1);
|
|
853
|
+
}
|
|
854
|
+
const oriItem = oriGridLayoutData.value.find((item2) => item2.id == id);
|
|
855
|
+
if (!fixedH) {
|
|
856
|
+
oriItem.h = h * 60;
|
|
857
|
+
} else if (fixedH) {
|
|
858
|
+
oriItem.h = h / (localConfig.value.labelPosition == "top" ? 1.5 : 1);
|
|
859
|
+
}
|
|
860
|
+
(_a = gridLayout == null ? void 0 : gridLayout.value) == null ? void 0 : _a.resizeEvent();
|
|
861
|
+
}
|
|
758
862
|
vue.provide("formData", formData);
|
|
759
863
|
vue.provide("localConfig", localConfig);
|
|
760
864
|
vue.provide("fieldsData", fieldsData);
|
|
@@ -762,12 +866,14 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
762
866
|
vue.provide("rowHeight", rowHeight);
|
|
763
867
|
vue.provide("gridLayout", gridLayout);
|
|
764
868
|
vue.provide("gridLayoutFieldsData", gridLayoutFieldsData);
|
|
869
|
+
vue.provide("setFormItemHeight", setFormItemHeight);
|
|
765
870
|
vue.provide("formCtx", ctx);
|
|
766
871
|
__expose({
|
|
767
872
|
validate,
|
|
768
873
|
resetFields,
|
|
769
874
|
getFormData,
|
|
770
875
|
setFormData,
|
|
876
|
+
getFormItemRef,
|
|
771
877
|
formRef,
|
|
772
878
|
localConfig
|
|
773
879
|
});
|
|
@@ -803,8 +909,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
803
909
|
key: 0,
|
|
804
910
|
ref_key: "gridLayout",
|
|
805
911
|
ref: gridLayout,
|
|
806
|
-
layout:
|
|
807
|
-
"onUpdate:layout": _cache[0] || (_cache[0] = ($event) =>
|
|
912
|
+
layout: gridLayoutFieldsData.value,
|
|
913
|
+
"onUpdate:layout": _cache[0] || (_cache[0] = ($event) => gridLayoutFieldsData.value = $event),
|
|
808
914
|
"row-height": rowHeight.value,
|
|
809
915
|
margin: [0, 0],
|
|
810
916
|
"use-css-transforms": false,
|
|
@@ -814,6 +920,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
814
920
|
}, {
|
|
815
921
|
item: vue.withCtx(({ item: { component } }) => [
|
|
816
922
|
vue.createVNode(FormItem.default, {
|
|
923
|
+
ref: (el) => setFormItemRef(el, component),
|
|
817
924
|
modelValue: formData.value[component.fieldName],
|
|
818
925
|
"onUpdate:modelValue": ($event) => formData.value[component.fieldName] = $event,
|
|
819
926
|
config: component,
|
|
@@ -852,5 +959,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
852
959
|
};
|
|
853
960
|
}
|
|
854
961
|
});
|
|
855
|
-
const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
962
|
+
const _Form = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-a3082b55"]]);
|
|
856
963
|
exports.default = _Form;
|
|
@@ -56,7 +56,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
emits: ["update:modelValue", "change"],
|
|
59
|
-
setup(__props, { emit: __emit }) {
|
|
59
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
60
60
|
const props = __props;
|
|
61
61
|
const emit = __emit;
|
|
62
62
|
function handleChange(config, val) {
|
|
@@ -90,6 +90,7 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
90
90
|
}
|
|
91
91
|
});
|
|
92
92
|
}, 300);
|
|
93
|
+
const innerComponentRef = vue.ref(null);
|
|
93
94
|
const compValue = vue.computed({
|
|
94
95
|
get: () => props.modelValue,
|
|
95
96
|
set: (val) => {
|
|
@@ -99,6 +100,14 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
102
|
});
|
|
103
|
+
const getInnerComponentRef = () => {
|
|
104
|
+
debugger;
|
|
105
|
+
return innerComponentRef.value;
|
|
106
|
+
};
|
|
107
|
+
__expose({
|
|
108
|
+
config: props.config,
|
|
109
|
+
getInnerComponentRef
|
|
110
|
+
});
|
|
102
111
|
return (_ctx, _cache) => {
|
|
103
112
|
const _component_el_tooltip = index$8.ElTooltip;
|
|
104
113
|
const _component_el_form_item = index$7.ElFormItem;
|
|
@@ -110,15 +119,21 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
110
119
|
config: __props.config
|
|
111
120
|
}, null, 8, ["config"])) : __props.config.fieldType == "subForm" ? (vue.openBlock(), vue.createBlock(vue.unref(index$4.SubForm), {
|
|
112
121
|
key: 2,
|
|
122
|
+
ref_key: "innerComponentRef",
|
|
123
|
+
ref: innerComponentRef,
|
|
113
124
|
config: __props.config,
|
|
114
125
|
localConfig: __props.localConfig,
|
|
115
126
|
formMode: __props.formMode
|
|
116
127
|
}, null, 8, ["config", "localConfig", "formMode"])) : __props.config.fieldType == "subTable" ? (vue.openBlock(), vue.createBlock(vue.unref(index$5.SubTable), {
|
|
117
128
|
key: 3,
|
|
129
|
+
ref_key: "innerComponentRef",
|
|
130
|
+
ref: innerComponentRef,
|
|
118
131
|
config: __props.config,
|
|
119
132
|
localConfig: __props.localConfig
|
|
120
133
|
}, null, 8, ["config", "localConfig"])) : __props.config.fieldType == "approvalHistory" ? (vue.openBlock(), vue.createBlock(vue.unref(index$6.ApprovalHistory), {
|
|
121
134
|
key: 4,
|
|
135
|
+
ref_key: "innerComponentRef",
|
|
136
|
+
ref: innerComponentRef,
|
|
122
137
|
config: __props.config,
|
|
123
138
|
localConfig: __props.localConfig
|
|
124
139
|
}, null, 8, ["config", "localConfig"])) : __props.config.fieldType == "blank" || __props.config.fieldType == "divider" ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
@@ -134,6 +149,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
134
149
|
default: vue.withCtx(() => [
|
|
135
150
|
__props.config.labelMode != "label" ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(componentType.value), vue.mergeProps({
|
|
136
151
|
key: 0,
|
|
152
|
+
ref_key: "innerComponentRef",
|
|
153
|
+
ref: innerComponentRef,
|
|
137
154
|
modelValue: compValue.value,
|
|
138
155
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => compValue.value = $event)
|
|
139
156
|
}, componentProps.value, {
|
|
@@ -172,5 +189,5 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
172
189
|
};
|
|
173
190
|
}
|
|
174
191
|
});
|
|
175
|
-
const _FormItem = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
192
|
+
const _FormItem = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-1fbcd248"]]);
|
|
176
193
|
exports.default = _FormItem;
|
|
@@ -50,8 +50,8 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
50
50
|
const props = __props;
|
|
51
51
|
const formData = vue.inject("formData");
|
|
52
52
|
vue.inject("rowHeight");
|
|
53
|
-
|
|
54
|
-
vue.inject("
|
|
53
|
+
vue.inject("gridLayout");
|
|
54
|
+
const setFormItemHeight = vue.inject("setFormItemHeight");
|
|
55
55
|
function subFormLoaded(subOption) {
|
|
56
56
|
const fieldsData = subOption.fieldsData;
|
|
57
57
|
console.log("🚀 ~ loaded ~ subOption:", subOption);
|
|
@@ -61,11 +61,10 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
61
61
|
const foundItem = props.localConfig.fieldsData.find(
|
|
62
62
|
(item) => item.id == props.config.id
|
|
63
63
|
);
|
|
64
|
-
const
|
|
65
|
-
const titleHeight = config.titleMode != "none" ? 1 : 0;
|
|
64
|
+
const titleHeight = props.config.titleMode != "none" ? 1 : 0;
|
|
66
65
|
if (foundItem) {
|
|
67
|
-
foundItem.h = maxY +
|
|
68
|
-
|
|
66
|
+
foundItem.h = maxY + titleHeight;
|
|
67
|
+
setFormItemHeight(props.config.id, false, maxY + titleHeight);
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
return (_ctx, _cache) => {
|
|
@@ -46,12 +46,12 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
46
46
|
// default: false,
|
|
47
47
|
// },
|
|
48
48
|
},
|
|
49
|
-
setup(__props) {
|
|
49
|
+
setup(__props, { expose: __expose }) {
|
|
50
50
|
const props = __props;
|
|
51
51
|
const formData = vue.inject("formData");
|
|
52
52
|
vue.inject("rowHeight");
|
|
53
|
-
|
|
54
|
-
vue.inject("
|
|
53
|
+
vue.inject("gridLayout");
|
|
54
|
+
const setFormItemHeight = vue.inject("setFormItemHeight");
|
|
55
55
|
const subTableData = vue.computed(() => {
|
|
56
56
|
if (props.config.dataSourceFrom == "main") {
|
|
57
57
|
return formData.value[props.config.fieldName];
|
|
@@ -81,15 +81,18 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
81
81
|
});
|
|
82
82
|
function subTableLoaded(subOption) {
|
|
83
83
|
subTableOption.value = subOption;
|
|
84
|
-
console.log("🚀 ~ subTableLoaded ~ subOption:", subOption);
|
|
85
84
|
const foundItem = props.localConfig.fieldsData.find(
|
|
86
85
|
(item) => item.id == props.config.id
|
|
87
86
|
);
|
|
88
|
-
const titleHeight = config.titleMode != "none" ? 60 : 0;
|
|
87
|
+
const titleHeight = props.config.titleMode != "none" ? 60 : 0;
|
|
89
88
|
if (foundItem) {
|
|
90
89
|
foundItem.fixedH = true;
|
|
91
90
|
foundItem.h = props.config.subTableHeight + titleHeight;
|
|
92
|
-
|
|
91
|
+
setFormItemHeight(
|
|
92
|
+
props.config.id,
|
|
93
|
+
true,
|
|
94
|
+
props.config.subTableHeight + titleHeight
|
|
95
|
+
);
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
98
|
const tableRef = vue.ref();
|
|
@@ -101,6 +104,9 @@ const _sfc_main = /* @__PURE__ */ Object.assign({
|
|
|
101
104
|
type: "custom"
|
|
102
105
|
});
|
|
103
106
|
};
|
|
107
|
+
__expose({
|
|
108
|
+
subTableRef: tableRef
|
|
109
|
+
});
|
|
104
110
|
return (_ctx, _cache) => {
|
|
105
111
|
const _component_el_button = index$1.ElButton;
|
|
106
112
|
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
@@ -29,6 +29,14 @@ const _sfc_main = {
|
|
|
29
29
|
localConfig: {
|
|
30
30
|
type: Object,
|
|
31
31
|
default: {}
|
|
32
|
+
},
|
|
33
|
+
readOnly: {
|
|
34
|
+
type: Boolean,
|
|
35
|
+
default: false
|
|
36
|
+
},
|
|
37
|
+
isSubTable: {
|
|
38
|
+
type: Boolean,
|
|
39
|
+
default: false
|
|
32
40
|
}
|
|
33
41
|
},
|
|
34
42
|
emits: ["click"],
|
|
@@ -90,10 +98,10 @@ const _sfc_main = {
|
|
|
90
98
|
})
|
|
91
99
|
])) : vue.createCommentVNode("", true),
|
|
92
100
|
__props.localConfig.showTitle ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, vue.toDisplayString(__props.localConfig.templateName), 1)) : vue.createCommentVNode("", true),
|
|
93
|
-
hasButtons.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.VxeToolbar), {
|
|
101
|
+
!__props.readOnly && !__props.isSubTable && hasButtons.value ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.VxeToolbar), {
|
|
94
102
|
key: 2,
|
|
95
103
|
ref: "toolbarRef",
|
|
96
|
-
style: { "flex": "1" }
|
|
104
|
+
style: { "flex": "1", "margin-bottom": "8px" }
|
|
97
105
|
}, {
|
|
98
106
|
buttons: vue.withCtx(() => [
|
|
99
107
|
leftButtons.value.length ? (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 0 }, vue.renderList(leftButtons.value, (btn) => {
|
|
@@ -131,5 +139,5 @@ const _sfc_main = {
|
|
|
131
139
|
};
|
|
132
140
|
}
|
|
133
141
|
};
|
|
134
|
-
const CustomButtons = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-
|
|
142
|
+
const CustomButtons = /* @__PURE__ */ _pluginVue_exportHelper.default(_sfc_main, [["__scopeId", "data-v-4a702348"]]);
|
|
135
143
|
exports.default = CustomButtons;
|