t20-common-lib 0.15.17 → 0.15.19
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/package.json +1 -1
- package/packages/dynamic-form/src/components/Amount.vue +1 -1
- package/packages/dynamic-form/src/components/AmountRange.vue +6 -2
- package/packages/dynamic-form/src/components/CheckboxGroup.vue +1 -0
- package/packages/dynamic-form/src/components/DMY.vue +6 -2
- package/packages/dynamic-form/src/components/Date.vue +1 -0
- package/packages/dynamic-form/src/components/DateRange.vue +1 -0
- package/packages/dynamic-form/src/components/Dialog.vue +1 -1
- package/packages/dynamic-form/src/components/Input.vue +1 -0
- package/packages/dynamic-form/src/components/InputNumber.vue +1 -0
- package/packages/dynamic-form/src/components/InputNumberRange.vue +1 -0
- package/packages/dynamic-form/src/components/LazySelect.vue +1 -1
- package/packages/dynamic-form/src/components/RadioGroup.vue +1 -0
- package/packages/dynamic-form/src/components/Rate.vue +1 -0
- package/packages/dynamic-form/src/components/SelectTree.vue +1 -1
- package/packages/dynamic-form/src/components/Switch.vue +1 -0
- package/packages/dynamic-form/src/components/Textarea.vue +1 -0
- package/packages/dynamic-form/src/main.vue +10 -53
package/package.json
CHANGED
|
@@ -51,7 +51,9 @@ export default {
|
|
|
51
51
|
return "";
|
|
52
52
|
},
|
|
53
53
|
set(val) {
|
|
54
|
-
|
|
54
|
+
const nextValue = `${val},${this._value2 || this._value2===0?this._value2 : ''}`;
|
|
55
|
+
this.$emit("input", nextValue);
|
|
56
|
+
this.$emit("change", nextValue);
|
|
55
57
|
},
|
|
56
58
|
},
|
|
57
59
|
_value2: {
|
|
@@ -62,7 +64,9 @@ export default {
|
|
|
62
64
|
return "";
|
|
63
65
|
},
|
|
64
66
|
set(val) {
|
|
65
|
-
|
|
67
|
+
const nextValue = `${this._value1},${val || val===0?val : ''}`;
|
|
68
|
+
this.$emit("input", nextValue);
|
|
69
|
+
this.$emit("change", nextValue);
|
|
66
70
|
},
|
|
67
71
|
},
|
|
68
72
|
},
|
|
@@ -79,7 +79,9 @@ export default {
|
|
|
79
79
|
return "";
|
|
80
80
|
},
|
|
81
81
|
set(val) {
|
|
82
|
-
|
|
82
|
+
const nextValue = `${val}${this.value2}`;
|
|
83
|
+
this.$emit("input", nextValue);
|
|
84
|
+
this.$emit("change", nextValue);
|
|
83
85
|
},
|
|
84
86
|
},
|
|
85
87
|
value2: {
|
|
@@ -92,7 +94,9 @@ export default {
|
|
|
92
94
|
return "D";
|
|
93
95
|
},
|
|
94
96
|
set(val) {
|
|
95
|
-
|
|
97
|
+
const nextValue = `${this.value1}${val}`;
|
|
98
|
+
this.$emit("input", nextValue);
|
|
99
|
+
this.$emit("change", nextValue);
|
|
96
100
|
},
|
|
97
101
|
},
|
|
98
102
|
},
|
|
@@ -118,7 +118,7 @@ export default {
|
|
|
118
118
|
},
|
|
119
119
|
async changeFn(val) {
|
|
120
120
|
let item = Array.isArray(this.options) ? this.options.find(t => t.value == val) : {}
|
|
121
|
-
this.$emit('change', item || {})
|
|
121
|
+
this.$emit('change', val, item || {})
|
|
122
122
|
},
|
|
123
123
|
async init() {
|
|
124
124
|
if (!this.items?.api?.apiUrl || !this.items?.api?.requestMethod) {
|
|
@@ -243,7 +243,7 @@ export default {
|
|
|
243
243
|
},
|
|
244
244
|
changeFn(val) {
|
|
245
245
|
let item = this.options.find(t => t.value == val);
|
|
246
|
-
this.$emit("change", item)
|
|
246
|
+
this.$emit("change", val, item)
|
|
247
247
|
},
|
|
248
248
|
changVariable(val){
|
|
249
249
|
if (val == '${inputValue}') return this.useDefaule ? (this.items?.api?.defaultInputValue || this.label ||this._value || "") : this.query;
|
|
@@ -86,14 +86,8 @@
|
|
|
86
86
|
|
|
87
87
|
<script>
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* 2. A 控制 B 必填 — setFieldRequired
|
|
92
|
-
* 3. A 控制 B 可编辑 — setFieldEditable
|
|
93
|
-
* 4. A 控制 B 值/名称回显或下拉项 — setFieldValue、setFieldLabelValue、setFieldOptions
|
|
94
|
-
* 5. A 控制 B 渲染哪种组件 — setFieldElementType(须为 elementTypeChange 中已配置的枚举)
|
|
95
|
-
*
|
|
96
|
-
* fieldControlList:与 dynamicData 同时传入,仅在收到模版时按 fieldNo 与 elements[].prop 合并一次 isShow、showName→label、isRequired;之后渲染均以合并后的 mergedTemplateBase 为唯一数据源。
|
|
89
|
+
* fieldControlList:与 dynamicData 同时传入,仅在收到模版时按 fieldNo 与 elements[].prop
|
|
90
|
+
* 合并一次 isShow、showName→label、isRequired;之后渲染均以合并后的 mergedTemplateBase 为唯一数据源。
|
|
97
91
|
*/
|
|
98
92
|
import { fileUploadTableMixin } from '../mixins/fileUpload'
|
|
99
93
|
// 复用 Demo 中的字段组件,按模板的 elementType 动态渲染
|
|
@@ -124,11 +118,6 @@ export default {
|
|
|
124
118
|
type: Object,
|
|
125
119
|
default: () => ({})
|
|
126
120
|
},
|
|
127
|
-
// 页面侧联动处理函数,由外部自由编排联动逻辑
|
|
128
|
-
linkageMethod: {
|
|
129
|
-
type: Function,
|
|
130
|
-
default: null
|
|
131
|
-
},
|
|
132
121
|
/** 字段控制配置,与 dynamicData 一并传入;仅整合一次 */
|
|
133
122
|
fieldControlList: {
|
|
134
123
|
type: Array,
|
|
@@ -173,7 +162,7 @@ export default {
|
|
|
173
162
|
runtimeTemplate: { units: [] },
|
|
174
163
|
// 联动写入的 options / elementType:每次从 mergedTemplateBase 克隆后会合并回来,避免被重置清空
|
|
175
164
|
linkageFieldOverrides: {},
|
|
176
|
-
//
|
|
165
|
+
// 避免重建模板过程中 watch 循环触发
|
|
177
166
|
isApplyingLinkage: false,
|
|
178
167
|
// 模板字段类型 -> 组件名映射;后续扩展新组件时在这里补
|
|
179
168
|
elementTypeChange: {
|
|
@@ -228,15 +217,10 @@ export default {
|
|
|
228
217
|
deep: true,
|
|
229
218
|
handler() {
|
|
230
219
|
if (this.isApplyingLinkage) return
|
|
220
|
+
// 编辑场景下 value 可能由页面先行组装,等模板就绪后仅补齐缺失字段,不覆盖已传数据。
|
|
221
|
+
if (!this.formGroups.length) return
|
|
231
222
|
this.ensureFormDataShape()
|
|
232
223
|
}
|
|
233
|
-
},
|
|
234
|
-
formData: {
|
|
235
|
-
deep: true,
|
|
236
|
-
handler() {
|
|
237
|
-
if (this.isApplyingLinkage) return
|
|
238
|
-
this.applyFieldStates()
|
|
239
|
-
}
|
|
240
224
|
}
|
|
241
225
|
},
|
|
242
226
|
methods: {
|
|
@@ -366,14 +350,11 @@ export default {
|
|
|
366
350
|
},
|
|
367
351
|
setFieldValue(groupProp, fieldProp, value) {
|
|
368
352
|
const sourceFormData = this.formData && typeof this.formData === 'object' ? this.formData : {}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
}
|
|
372
|
-
groupData[fieldProp] = value
|
|
373
|
-
this.formData = {
|
|
374
|
-
...sourceFormData,
|
|
375
|
-
[groupProp]: groupData
|
|
353
|
+
if (!sourceFormData[groupProp] || typeof sourceFormData[groupProp] !== 'object' || Array.isArray(sourceFormData[groupProp])) {
|
|
354
|
+
this.$set(sourceFormData, groupProp, {})
|
|
376
355
|
}
|
|
356
|
+
this.$set(sourceFormData[groupProp], fieldProp, value)
|
|
357
|
+
this.$emit('input', sourceFormData)
|
|
377
358
|
},
|
|
378
359
|
/**
|
|
379
360
|
* 场景4:与 value 配套的展示字段(模板里的 nameProp),用于下拉等回显名称。
|
|
@@ -435,29 +416,6 @@ export default {
|
|
|
435
416
|
})
|
|
436
417
|
})
|
|
437
418
|
},
|
|
438
|
-
buildLinkageApi() {
|
|
439
|
-
return {
|
|
440
|
-
formData: this.formData,
|
|
441
|
-
formGroups: this.formGroups,
|
|
442
|
-
getGroup: this.getGroup,
|
|
443
|
-
getField: this.getField,
|
|
444
|
-
setGroupShow: this.setGroupShow,
|
|
445
|
-
setFieldShow: this.setFieldShow,
|
|
446
|
-
setFieldRequired: this.setFieldRequired,
|
|
447
|
-
setFieldEditable: this.setFieldEditable,
|
|
448
|
-
setFieldValue: this.setFieldValue,
|
|
449
|
-
setFieldLabelValue: this.setFieldLabelValue,
|
|
450
|
-
setFieldOptions: this.setFieldOptions,
|
|
451
|
-
setFieldElementType: this.setFieldElementType
|
|
452
|
-
}
|
|
453
|
-
},
|
|
454
|
-
runExternalLinkage() {
|
|
455
|
-
const linkageApi = this.buildLinkageApi()
|
|
456
|
-
if (typeof this.linkageMethod === 'function') {
|
|
457
|
-
this.linkageMethod(linkageApi)
|
|
458
|
-
}
|
|
459
|
-
this.$emit('linkage', linkageApi)
|
|
460
|
-
},
|
|
461
419
|
applyFieldStates() {
|
|
462
420
|
if (!this.mergedTemplateBase?.units) return
|
|
463
421
|
this.isApplyingLinkage = true
|
|
@@ -473,14 +431,13 @@ export default {
|
|
|
473
431
|
})
|
|
474
432
|
this.runtimeTemplate = nextTemplate
|
|
475
433
|
this.applyLinkageOverrides()
|
|
476
|
-
this.runExternalLinkage()
|
|
477
434
|
this.formGroups.forEach(group => {
|
|
478
435
|
;(group.elements || []).forEach(item => {
|
|
479
436
|
this.setFieldRule(group.prop, item)
|
|
480
437
|
})
|
|
481
438
|
})
|
|
482
439
|
this.$nextTick(() => {
|
|
483
|
-
//
|
|
440
|
+
// 模板重建后统一清理校验态,避免规则变化导致页面出现历史校验提示。
|
|
484
441
|
if (this.$refs.dynamicForms && typeof this.$refs.dynamicForms.clearValidate === 'function') {
|
|
485
442
|
this.$refs.dynamicForms.clearValidate()
|
|
486
443
|
}
|