cnhis-design-vue 3.1.16-beta.12 → 3.1.16-beta.15
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/packages/big-table/src/BigTable.vue.d.ts +6 -1
- package/es/packages/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.js +2 -2
- package/es/packages/big-table/src/components/edit-form/edit-date.js +13 -3
- package/es/packages/big-table/src/components/edit-form/edit-time.js +1 -0
- package/es/packages/big-table/src/hooks/useSeparateRow.js +5 -2
- package/es/packages/button-print/index.d.ts +1 -1
- package/es/packages/button-print/src/ButtonPrint.vue.d.ts +1 -1
- package/es/packages/button-print/src/ButtonPrint.vue_vue_type_script_setup_true_lang.js +15 -3
- package/es/packages/fabric-chart/src/components/PopupTip.js +2 -2
- package/es/packages/fabric-chart/src/hooks/useCenter.js +11 -2
- package/es/packages/form-config/index.d.ts +7 -2
- package/es/packages/form-config/src/FormConfig.vue.d.ts +7 -2
- package/es/packages/form-config/src/components/FormConfigCreator.vue.d.ts +3 -1
- package/es/packages/form-config/src/components/FormConfigEdit.vue.d.ts +4 -1
- package/es/packages/form-render/index.d.ts +3 -1
- package/es/packages/form-render/index.js +0 -1
- package/es/packages/form-render/src/FormRender.js +5 -6
- package/es/packages/form-render/src/FormRender.vue.d.ts +3 -1
- package/es/packages/form-render/src/components/renderer/{combination/index.d.ts → combination.d.ts} +3 -3
- package/es/packages/form-render/src/components/renderer/combination.js +82 -0
- package/es/packages/form-render/src/components/renderer/date.js +12 -4
- package/es/packages/form-render/src/components/renderer/formItem.js +11 -3
- package/es/packages/form-render/src/components/renderer/index.d.ts +1 -0
- package/es/packages/form-render/src/components/renderer/index.js +2 -1
- package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.d.ts +0 -0
- package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.js +0 -0
- package/es/packages/form-render/src/components/renderer/jsonCombination/index.d.ts +44 -0
- package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/index.js +14 -9
- package/es/packages/form-render/src/hooks/index.d.ts +0 -1
- package/es/packages/form-render/src/hooks/index.js +0 -1
- package/es/packages/form-render/src/hooks/useFieldListAdaptor.d.ts +1 -1
- package/es/packages/form-render/src/hooks/useFieldListAdaptor.js +7 -3
- package/es/packages/form-render/src/types/fieldItem.d.ts +4 -0
- package/es/packages/form-render/src/types/index.d.ts +1 -1
- package/es/packages/form-render/src/utils/index.js +3 -2
- package/es/packages/form-render/src/utils/schema.d.ts +60 -0
- package/es/packages/form-render/src/utils/schema.js +5 -2
- package/es/packages/form-render/style/index.css +7 -0
- package/es/packages/index.css +7 -0
- package/es/packages/index.js +0 -1
- package/es/packages/shortcut-provider/src/hooks/useShortcuts.js +1 -0
- package/es/packages/shortcut-setter/index.d.ts +4 -1
- package/es/packages/shortcut-setter/src/ShortcutSetter.vue.d.ts +4 -1
- package/es/src/utils/index.d.ts +1 -0
- package/es/src/utils/index.js +11 -1
- package/global.d.ts +8 -8
- package/package.json +4 -4
- package/es/packages/form-render/src/hooks/useInitialData.d.ts +0 -5
- package/es/packages/form-render/src/hooks/useInitialData.js +0 -16
|
@@ -1126,7 +1126,12 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
1126
1126
|
textColorGhostHoverWarning: string;
|
|
1127
1127
|
textColorGhostPressedWarning: string;
|
|
1128
1128
|
textColorGhostFocusWarning: string;
|
|
1129
|
-
textColorGhostDisabledWarning: string;
|
|
1129
|
+
textColorGhostDisabledWarning: string; /**
|
|
1130
|
+
* 判断是否渲染EditForm
|
|
1131
|
+
* @param {*} row
|
|
1132
|
+
* @param {*} column
|
|
1133
|
+
* @returns
|
|
1134
|
+
*/
|
|
1130
1135
|
borderWarning: string;
|
|
1131
1136
|
borderHoverWarning: string;
|
|
1132
1137
|
borderPressedWarning: string;
|
|
@@ -354,10 +354,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
354
354
|
showSeq = true
|
|
355
355
|
} = map;
|
|
356
356
|
if (isEdit) {
|
|
357
|
-
|
|
357
|
+
Object.assign(state.editConfig, editConfig);
|
|
358
358
|
state.rowConfig.height = 48;
|
|
359
359
|
}
|
|
360
|
-
|
|
360
|
+
Object.assign(state.rowConfig, rowConfig);
|
|
361
361
|
state.rowConfig.keyField = handleRowId.value;
|
|
362
362
|
if (selectType) {
|
|
363
363
|
isBatchSelect = 1;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { defineComponent, createVNode, mergeProps } from 'vue';
|
|
1
|
+
import { defineComponent, computed, createVNode, mergeProps } from 'vue';
|
|
2
|
+
import { generateTimeFormat } from '../../../../../src/utils';
|
|
2
3
|
import { isFunction } from 'lodash-es';
|
|
3
4
|
import { NDatePicker } from 'naive-ui';
|
|
4
5
|
|
|
@@ -25,7 +26,6 @@ var EditDate = defineComponent({
|
|
|
25
26
|
emits: ["formChange"],
|
|
26
27
|
setup(props, {
|
|
27
28
|
attrs,
|
|
28
|
-
slots,
|
|
29
29
|
emit
|
|
30
30
|
}) {
|
|
31
31
|
const onConfirm = (value) => {
|
|
@@ -102,11 +102,21 @@ var EditDate = defineComponent({
|
|
|
102
102
|
return customDateDisabled(ts, props.row);
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
|
+
const formatConfig = computed(() => {
|
|
106
|
+
const valueFormat = props.col.valueFormat || "yyyy-MM-dd HH:mm:ss";
|
|
107
|
+
return {
|
|
108
|
+
valueFormat,
|
|
109
|
+
format: valueFormat,
|
|
110
|
+
timePickerProps: {
|
|
111
|
+
format: generateTimeFormat(valueFormat)
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
});
|
|
105
115
|
const config = {
|
|
106
116
|
type: props.col.type || props.col.dateType || "datetime",
|
|
107
117
|
clearable: props.col.clearable || true,
|
|
108
118
|
disabled: props.col.disabled || false,
|
|
109
|
-
|
|
119
|
+
...formatConfig.value,
|
|
110
120
|
isDateDisabled: customDateDisabledDecorator(props.col.isDateDisabled) || isDateDisabled,
|
|
111
121
|
placeholder: props.col.placeholder || "\u8BF7\u9009\u62E9",
|
|
112
122
|
...props.col.componentProps || {}
|
|
@@ -41,6 +41,7 @@ var editTime = defineComponent({
|
|
|
41
41
|
const config = {
|
|
42
42
|
placeholder: props.col.placeholder || "\u8BF7\u9009\u62E9",
|
|
43
43
|
valueFormat: props.col.valueFormat || "HH:mm",
|
|
44
|
+
format: props.col.valueFormat || "yyyy-MM-dd HH:mm:ss",
|
|
44
45
|
...props.col.componentProps || {}
|
|
45
46
|
};
|
|
46
47
|
return () => createVNode(NTimePicker, mergeProps(attrs, config, {
|
|
@@ -84,13 +84,15 @@ function useSeparateRow(getColumnConfig, getFieldItem, $VXETable) {
|
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
(await res).push(...Array.from({ length: getColumnInfoMaxLength(parsedRowData) }).map((_, index) => {
|
|
87
|
+
const separateData = getSeparateRowData(parsedRowData, index);
|
|
87
88
|
if (index === 0) {
|
|
88
89
|
separateDataMap.value.set(row, {
|
|
89
90
|
row,
|
|
90
91
|
rawRow: rawData[dataIndex],
|
|
91
92
|
index,
|
|
92
|
-
separateData
|
|
93
|
+
separateData
|
|
93
94
|
});
|
|
95
|
+
row.$__SEPARATE_DATA = [separateData];
|
|
94
96
|
return row;
|
|
95
97
|
}
|
|
96
98
|
const data2 = { $__SEPARATE: true };
|
|
@@ -98,8 +100,9 @@ function useSeparateRow(getColumnConfig, getFieldItem, $VXETable) {
|
|
|
98
100
|
row: data2,
|
|
99
101
|
rawRow: rawData[dataIndex],
|
|
100
102
|
index,
|
|
101
|
-
separateData
|
|
103
|
+
separateData
|
|
102
104
|
});
|
|
105
|
+
row.$__SEPARATE_DATA.push(separateData);
|
|
103
106
|
return data2;
|
|
104
107
|
}));
|
|
105
108
|
return res;
|
|
@@ -161,7 +161,7 @@ declare const ButtonPrint: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
161
161
|
init: () => Promise<boolean>;
|
|
162
162
|
handleClickBtn: () => Promise<false | undefined>;
|
|
163
163
|
reformatPrintParams: () => void;
|
|
164
|
-
verifiySuccess: () => void;
|
|
164
|
+
verifiySuccess: (token: any) => void;
|
|
165
165
|
NDropdown: import("vue").DefineComponent<{
|
|
166
166
|
readonly theme: import("vue").PropType<import("naive-ui/es/_mixins").Theme<"Dropdown", {
|
|
167
167
|
optionHeightSmall: string;
|
|
@@ -165,7 +165,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
165
165
|
init: () => Promise<boolean>;
|
|
166
166
|
handleClickBtn: () => Promise<false | undefined>;
|
|
167
167
|
reformatPrintParams: () => void;
|
|
168
|
-
verifiySuccess: () => void;
|
|
168
|
+
verifiySuccess: (token: any) => void;
|
|
169
169
|
NDropdown: import("vue").DefineComponent<{
|
|
170
170
|
readonly theme: import("vue").PropType<import("naive-ui/es/_mixins").Theme<"Dropdown", {
|
|
171
171
|
optionHeightSmall: string;
|
|
@@ -240,6 +240,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
240
240
|
state.visible = false;
|
|
241
241
|
});
|
|
242
242
|
};
|
|
243
|
+
const handleClickEdit = () => {
|
|
244
|
+
props.prevFn().catch(() => {
|
|
245
|
+
prevFnError();
|
|
246
|
+
return Promise.reject();
|
|
247
|
+
}).then(() => {
|
|
248
|
+
state.identityVerification.visible = true;
|
|
249
|
+
}).finally(() => {
|
|
250
|
+
state.visible = false;
|
|
251
|
+
});
|
|
252
|
+
};
|
|
243
253
|
const handleSelect = (key) => {
|
|
244
254
|
switch (key) {
|
|
245
255
|
case "printText":
|
|
@@ -249,7 +259,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
249
259
|
handleClickPreview();
|
|
250
260
|
break;
|
|
251
261
|
case "formatEditText":
|
|
252
|
-
|
|
262
|
+
handleClickEdit();
|
|
253
263
|
break;
|
|
254
264
|
case "downloadPdf":
|
|
255
265
|
handleClickPdf();
|
|
@@ -406,11 +416,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
406
416
|
}
|
|
407
417
|
state.printParams = formatParams(state.templateParams, props.params);
|
|
408
418
|
};
|
|
409
|
-
const verifiySuccess = () => {
|
|
419
|
+
const verifiySuccess = (token) => {
|
|
420
|
+
state.identityVerification.visible = false;
|
|
410
421
|
const queryParams = {
|
|
411
422
|
formatId: state.currentFormatId,
|
|
412
423
|
templateId: getTemplateIdByFormatId(state.currentFormatId),
|
|
413
|
-
params: getPrintParams()
|
|
424
|
+
params: getPrintParams(),
|
|
425
|
+
token
|
|
414
426
|
};
|
|
415
427
|
printInstance.editPrintFormat(queryParams, (res) => {
|
|
416
428
|
callLocalServicesSuccessCb(res, "edit");
|
|
@@ -20,8 +20,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
20
20
|
style: normalizeStyle(unref(pointStyle))
|
|
21
21
|
}, [
|
|
22
22
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.list, (item) => {
|
|
23
|
-
return openBlock(), createElementBlock("li",
|
|
24
|
-
}),
|
|
23
|
+
return openBlock(), createElementBlock("li", { key: item }, toDisplayString(item), 1);
|
|
24
|
+
}), 128))
|
|
25
25
|
], 4), [
|
|
26
26
|
[vShow, __props.show]
|
|
27
27
|
])
|
|
@@ -430,9 +430,18 @@ function useCenter(canvas, propItems, emits, cumputedX, cumputedY, getXValue, ge
|
|
|
430
430
|
x: point.left,
|
|
431
431
|
y: point.top
|
|
432
432
|
};
|
|
433
|
-
|
|
434
|
-
pointTipProps.list = [`${title} ${yValue}${unit || ""}`, `\u65F6\u95F4 ${((data == null ? void 0 : data.time) || getXValue(point.left)).slice(-5)}`];
|
|
433
|
+
pointTipProps.list = [getListValue(), `\u65F6\u95F4 ${((data == null ? void 0 : data.time) || getXValue(point.left)).slice(-5)}`];
|
|
435
434
|
pointTipProps.show = true;
|
|
435
|
+
function getListValue() {
|
|
436
|
+
const { value, drugReduce, physicsReduce } = data;
|
|
437
|
+
if (drugReduce) {
|
|
438
|
+
return `\u836F\u7269\u964D${type == "pain" ? "\u75DB" : "\u6E29"} ${value}\u2014>${drugReduce}${unit || ""}`;
|
|
439
|
+
}
|
|
440
|
+
if (physicsReduce) {
|
|
441
|
+
return `\u7269\u7406\u964D${type == "pain" ? "\u75DB" : "\u6E29"} ${value}\u2014>${physicsReduce}${unit || ""}`;
|
|
442
|
+
}
|
|
443
|
+
return `${title} ${value}${unit || ""}`;
|
|
444
|
+
}
|
|
436
445
|
}
|
|
437
446
|
function moveLimit(point) {
|
|
438
447
|
point.setCoords();
|
|
@@ -229,6 +229,7 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
229
229
|
content?: string | import("..").FormRenderer | Record<string, import("..").FormRenderer> | undefined;
|
|
230
230
|
lazyRequest?: boolean | undefined;
|
|
231
231
|
maxGroupNum?: number | undefined;
|
|
232
|
+
jsonCombination?: boolean | undefined;
|
|
232
233
|
children?: any[] | undefined;
|
|
233
234
|
properties?: any[] | undefined;
|
|
234
235
|
componentProps?: import("../../../es/src/types").AnyObject | undefined;
|
|
@@ -3988,7 +3989,9 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
3988
3989
|
}>>;
|
|
3989
3990
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
3990
3991
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
3991
|
-
formModel: import("@formily/core").Form<
|
|
3992
|
+
formModel: import("@formily/core").Form<{
|
|
3993
|
+
[x: string]: any;
|
|
3994
|
+
}>;
|
|
3992
3995
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
3993
3996
|
businessCollector: import("..").BusinessCollector;
|
|
3994
3997
|
formItemDepsCollector: import("..").FormItemDepsCollector;
|
|
@@ -9074,7 +9077,9 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
9074
9077
|
}>>;
|
|
9075
9078
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
9076
9079
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
9077
|
-
formModel: import("@formily/core").Form<
|
|
9080
|
+
formModel: import("@formily/core").Form<{
|
|
9081
|
+
[x: string]: any;
|
|
9082
|
+
}>;
|
|
9078
9083
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
9079
9084
|
businessCollector: import("..").BusinessCollector;
|
|
9080
9085
|
formItemDepsCollector: import("..").FormItemDepsCollector;
|
|
@@ -231,6 +231,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
231
231
|
content?: string | import("../..").FormRenderer | Record<string, import("../..").FormRenderer> | undefined;
|
|
232
232
|
lazyRequest?: boolean | undefined;
|
|
233
233
|
maxGroupNum?: number | undefined;
|
|
234
|
+
jsonCombination?: boolean | undefined;
|
|
234
235
|
children?: any[] | undefined;
|
|
235
236
|
properties?: any[] | undefined;
|
|
236
237
|
componentProps?: import("../../../../es/src/types").AnyObject | undefined;
|
|
@@ -3990,7 +3991,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
3990
3991
|
}>>;
|
|
3991
3992
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
3992
3993
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
3993
|
-
formModel: import("@formily/core").Form<
|
|
3994
|
+
formModel: import("@formily/core").Form<{
|
|
3995
|
+
[x: string]: any;
|
|
3996
|
+
}>;
|
|
3994
3997
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
3995
3998
|
businessCollector: import("../..").BusinessCollector;
|
|
3996
3999
|
formItemDepsCollector: import("../..").FormItemDepsCollector;
|
|
@@ -9076,7 +9079,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
9076
9079
|
}>>;
|
|
9077
9080
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
9078
9081
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
9079
|
-
formModel: import("@formily/core").Form<
|
|
9082
|
+
formModel: import("@formily/core").Form<{
|
|
9083
|
+
[x: string]: any;
|
|
9084
|
+
}>;
|
|
9080
9085
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
9081
9086
|
businessCollector: import("../..").BusinessCollector;
|
|
9082
9087
|
formItemDepsCollector: import("../..").FormItemDepsCollector;
|
|
@@ -3580,7 +3580,9 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
3580
3580
|
}>>;
|
|
3581
3581
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
3582
3582
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
3583
|
-
formModel: import("@formily/core").Form<
|
|
3583
|
+
formModel: import("@formily/core").Form<{
|
|
3584
|
+
[x: string]: any;
|
|
3585
|
+
}>;
|
|
3584
3586
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
3585
3587
|
businessCollector: import("../../../../../es/packages/form-render").BusinessCollector;
|
|
3586
3588
|
formItemDepsCollector: import("../../../../../es/packages/form-render").FormItemDepsCollector;
|
|
@@ -92,6 +92,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
92
92
|
content?: string | import("../../../../../es/packages/form-render").FormRenderer | Record<string, import("../../../../../es/packages/form-render").FormRenderer> | undefined;
|
|
93
93
|
lazyRequest?: boolean | undefined;
|
|
94
94
|
maxGroupNum?: number | undefined;
|
|
95
|
+
jsonCombination?: boolean | undefined;
|
|
95
96
|
children?: any[] | undefined;
|
|
96
97
|
properties?: any[] | undefined;
|
|
97
98
|
componentProps?: import("../../../../../es/src/types").AnyObject | undefined;
|
|
@@ -3851,7 +3852,9 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
3851
3852
|
}>>;
|
|
3852
3853
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
3853
3854
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
3854
|
-
formModel: import("@formily/core").Form<
|
|
3855
|
+
formModel: import("@formily/core").Form<{
|
|
3856
|
+
[x: string]: any;
|
|
3857
|
+
}>;
|
|
3855
3858
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
3856
3859
|
businessCollector: import("../../../../../es/packages/form-render").BusinessCollector;
|
|
3857
3860
|
formItemDepsCollector: import("../../../../../es/packages/form-render").FormItemDepsCollector;
|
|
@@ -236,7 +236,9 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
236
236
|
}>>;
|
|
237
237
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
238
238
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
239
|
-
formModel: import("@formily/core").Form<
|
|
239
|
+
formModel: import("@formily/core").Form<{
|
|
240
|
+
[x: string]: any;
|
|
241
|
+
}>;
|
|
240
242
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
241
243
|
businessCollector: import("./src/hooks").BusinessCollector;
|
|
242
244
|
formItemDepsCollector: import("./src/hooks").FormItemDepsCollector;
|
|
@@ -12,7 +12,6 @@ export { useFormValidator } from './src/hooks/useFormValidator.js';
|
|
|
12
12
|
export { BusinessCollector, useBusinessBinding } from './src/hooks/useBusinessBinding.js';
|
|
13
13
|
export { ContextCollector, useChangeContext } from './src/hooks/useChangeContext.js';
|
|
14
14
|
export { FormItemDepsCollector, useFormItemDeps } from './src/hooks/useFormItemDeps.js';
|
|
15
|
-
export { useInitialData } from './src/hooks/useInitialData.js';
|
|
16
15
|
export { useAnchor } from './src/hooks/useAnchor.js';
|
|
17
16
|
export { useFormContext } from './src/hooks/useFormContext.js';
|
|
18
17
|
|
|
@@ -6,10 +6,9 @@ import { cloneDeep, isArray } from 'lodash-es';
|
|
|
6
6
|
import { NForm, NTabs, NTabPane, NConfigProvider } from 'naive-ui';
|
|
7
7
|
import { FormItemLineBarDepKeyPrepend } from '../../../packages/form-render/src/constants';
|
|
8
8
|
import { useFormRenderLifeCycle } from '../../../packages/form-render/src/hooks/useFormRenderLifeCycle';
|
|
9
|
-
import { arrayed, queryDecorator, queryInput, getParentLinebar } from '../../../packages/form-render/src/utils';
|
|
9
|
+
import { createObjSchema, arrayed, queryDecorator, queryInput, getParentLinebar } from '../../../packages/form-render/src/utils';
|
|
10
10
|
import { useNuiThemeOverrides } from '../../../packages/form-table/src/hooks/useNuiThemeOverrides';
|
|
11
11
|
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.js';
|
|
12
|
-
import { useInitialData } from './hooks/useInitialData.js';
|
|
13
12
|
import { useFormContext } from './hooks/useFormContext.js';
|
|
14
13
|
import { useFieldListAdaptor } from './hooks/useFieldListAdaptor.js';
|
|
15
14
|
import { useFieldVisitor } from './hooks/useFieldVisitor.js';
|
|
@@ -50,7 +49,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
50
49
|
const { nuiThemeOverrides } = useNuiThemeOverrides();
|
|
51
50
|
useFormRenderLifeCycle(props).callLifeCycle("onSetup");
|
|
52
51
|
const formModel = createForm({
|
|
53
|
-
initialValues:
|
|
52
|
+
initialValues: props.initialData,
|
|
54
53
|
effects() {
|
|
55
54
|
onFieldValueChange("*", async (field) => {
|
|
56
55
|
const fieldKey = field.props.name.toString();
|
|
@@ -68,16 +67,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
68
67
|
});
|
|
69
68
|
const { SchemaField, businessCollector, formItemDepsCollector, changeContextCollector, formUUID } = useFormContext(props, formModel);
|
|
70
69
|
const scrollbarRef = ref();
|
|
71
|
-
const { schemaAdaptor } = useFieldListAdaptor(businessCollector
|
|
70
|
+
const { schemaAdaptor } = useFieldListAdaptor(businessCollector);
|
|
72
71
|
const parsedSchema = computed(() => {
|
|
73
72
|
if (props.schema) {
|
|
74
73
|
return props.schema;
|
|
75
74
|
}
|
|
76
75
|
if (props.fieldList) {
|
|
77
76
|
const _fieldList = useFieldVisitor().traverse(cloneDeep(props.fieldList), props.fieldVisitor);
|
|
78
|
-
return
|
|
77
|
+
return createObjSchema(schemaAdaptor(_fieldList));
|
|
79
78
|
}
|
|
80
|
-
return {
|
|
79
|
+
return createObjSchema({});
|
|
81
80
|
});
|
|
82
81
|
const { currentAnchor, generateAnchorList, anchorIdList, formHeight, onScroll } = useAnchor(props, scrollbarRef, formItemDepsCollector);
|
|
83
82
|
watch(parsedSchema, generateAnchorList, { immediate: true });
|
|
@@ -236,7 +236,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
236
236
|
}>>;
|
|
237
237
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
238
238
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
239
|
-
formModel: import("@formily/core").Form<
|
|
239
|
+
formModel: import("@formily/core").Form<{
|
|
240
|
+
[x: string]: any;
|
|
241
|
+
}>;
|
|
240
242
|
SchemaField: Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
241
243
|
businessCollector: import("./hooks").BusinessCollector;
|
|
242
244
|
formItemDepsCollector: import("./hooks").FormItemDepsCollector;
|
package/es/packages/form-render/src/components/renderer/{combination/index.d.ts → combination.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FieldItem } from '
|
|
1
|
+
import { FieldItem } from '../../../../../../es/packages/form-render';
|
|
2
2
|
import { PropType } from 'vue';
|
|
3
3
|
export declare const COMBINATION: import("vue").DefineComponent<{
|
|
4
4
|
title: {
|
|
@@ -6,7 +6,7 @@ export declare const COMBINATION: import("vue").DefineComponent<{
|
|
|
6
6
|
default: string;
|
|
7
7
|
};
|
|
8
8
|
value: {
|
|
9
|
-
type:
|
|
9
|
+
type: ArrayConstructor;
|
|
10
10
|
};
|
|
11
11
|
maxGroupNum: {
|
|
12
12
|
type: NumberConstructor;
|
|
@@ -24,7 +24,7 @@ export declare const COMBINATION: import("vue").DefineComponent<{
|
|
|
24
24
|
default: string;
|
|
25
25
|
};
|
|
26
26
|
value: {
|
|
27
|
-
type:
|
|
27
|
+
type: ArrayConstructor;
|
|
28
28
|
};
|
|
29
29
|
maxGroupNum: {
|
|
30
30
|
type: NumberConstructor;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, inject, createVNode, createTextVNode } from 'vue';
|
|
2
|
+
import { isNumber } from 'lodash-es';
|
|
3
|
+
import { useFieldListAdaptor } from '../../../../../packages/form-render';
|
|
4
|
+
import { useField, RecursionField, connect } from '@formily/vue';
|
|
5
|
+
import { NButton } from 'naive-ui';
|
|
6
|
+
import { InjectionBusinessCollector } from '../../../../../packages/form-render/src/constants';
|
|
7
|
+
import { createObjSchema } from '../../../../../packages/form-render/src/utils';
|
|
8
|
+
|
|
9
|
+
const script = defineComponent({
|
|
10
|
+
name: "FormCombination",
|
|
11
|
+
props: {
|
|
12
|
+
title: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: ""
|
|
15
|
+
},
|
|
16
|
+
value: {
|
|
17
|
+
type: Array
|
|
18
|
+
},
|
|
19
|
+
maxGroupNum: {
|
|
20
|
+
type: Number
|
|
21
|
+
},
|
|
22
|
+
getProperties: {
|
|
23
|
+
type: Function,
|
|
24
|
+
default: () => []
|
|
25
|
+
},
|
|
26
|
+
onInput: {},
|
|
27
|
+
onBlur: {},
|
|
28
|
+
onChange: {}
|
|
29
|
+
},
|
|
30
|
+
emits: ["update:value"],
|
|
31
|
+
setup(props) {
|
|
32
|
+
const field = useField();
|
|
33
|
+
const currentGroupNum = ref(1);
|
|
34
|
+
const maxGroupNum = computed(() => {
|
|
35
|
+
if (!isNumber(props.maxGroupNum))
|
|
36
|
+
return Infinity;
|
|
37
|
+
if (props.maxGroupNum < 1)
|
|
38
|
+
return 0;
|
|
39
|
+
return ~~props.maxGroupNum;
|
|
40
|
+
});
|
|
41
|
+
function addGroup() {
|
|
42
|
+
currentGroupNum.value++;
|
|
43
|
+
}
|
|
44
|
+
async function removeGroup(idx) {
|
|
45
|
+
currentGroupNum.value--;
|
|
46
|
+
await field.value.remove(idx);
|
|
47
|
+
}
|
|
48
|
+
const collector = inject(InjectionBusinessCollector);
|
|
49
|
+
const {
|
|
50
|
+
schemaAdaptor
|
|
51
|
+
} = useFieldListAdaptor(collector);
|
|
52
|
+
return () => {
|
|
53
|
+
return createVNode("section", {
|
|
54
|
+
"class": "form-render__combination"
|
|
55
|
+
}, [createVNode("header", {
|
|
56
|
+
"class": "form-render__combinationHeader"
|
|
57
|
+
}, [createVNode("div", {
|
|
58
|
+
"class": "form-render__combinationHeaderText"
|
|
59
|
+
}, [props.title]), createVNode(NButton, {
|
|
60
|
+
"onClick": addGroup,
|
|
61
|
+
"type": "info",
|
|
62
|
+
"text": true,
|
|
63
|
+
"disabled": currentGroupNum.value >= maxGroupNum.value
|
|
64
|
+
}, {
|
|
65
|
+
default: () => [createTextVNode("\u65B0\u589E")]
|
|
66
|
+
})]), Array.from({
|
|
67
|
+
length: currentGroupNum.value
|
|
68
|
+
}).map((_, idx) => createVNode("section", {
|
|
69
|
+
"class": "form-render__combinationContent"
|
|
70
|
+
}, [createVNode(RecursionField, {
|
|
71
|
+
"schema": createObjSchema(schemaAdaptor(props.getProperties())),
|
|
72
|
+
"name": idx
|
|
73
|
+
}, null), idx === 0 ? null : createVNode("i", {
|
|
74
|
+
"class": "form-render__combinationClose",
|
|
75
|
+
"onClick": () => removeGroup(idx)
|
|
76
|
+
}, ["-"])]))]);
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const COMBINATION = connect(script);
|
|
81
|
+
|
|
82
|
+
export { COMBINATION };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defineComponent, computed, watch, createVNode, mergeProps } from 'vue';
|
|
2
|
+
import { generateTimeFormat } from '../../../../../src/utils';
|
|
2
3
|
import { connect, mapProps } from '@formily/vue';
|
|
3
4
|
import { isObject } from '@vueuse/core';
|
|
4
5
|
import { format } from 'date-fns';
|
|
@@ -66,9 +67,7 @@ const script = defineComponent({
|
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
const validateConfig = computed(() => {
|
|
69
|
-
const result = {
|
|
70
|
-
valueFormat: props.valueFormat
|
|
71
|
-
};
|
|
70
|
+
const result = {};
|
|
72
71
|
if (isObject(props.validate)) {
|
|
73
72
|
const {
|
|
74
73
|
min_date,
|
|
@@ -81,6 +80,15 @@ const script = defineComponent({
|
|
|
81
80
|
}
|
|
82
81
|
return result;
|
|
83
82
|
});
|
|
83
|
+
const formatConfig = computed(() => {
|
|
84
|
+
return {
|
|
85
|
+
valueFormat: props.valueFormat,
|
|
86
|
+
format: props.valueFormat,
|
|
87
|
+
timePickerProps: {
|
|
88
|
+
format: generateTimeFormat(props.valueFormat)
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
});
|
|
84
92
|
function formatDate(value) {
|
|
85
93
|
if (!value)
|
|
86
94
|
return value;
|
|
@@ -95,7 +103,7 @@ const script = defineComponent({
|
|
|
95
103
|
get: () => formatDate(props.value),
|
|
96
104
|
set: (value) => emit("update:value", value)
|
|
97
105
|
});
|
|
98
|
-
return () => createVNode(NDatePicker, mergeProps(validateConfig.value, {
|
|
106
|
+
return () => createVNode(NDatePicker, mergeProps(validateConfig.value, formatConfig.value, {
|
|
99
107
|
"formatted-value": valueRef.value,
|
|
100
108
|
"onUpdate:formatted-value": ($event) => valueRef.value = $event
|
|
101
109
|
}), null);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { defineComponent, inject, computed, createVNode } from 'vue';
|
|
2
2
|
import { isVoidField } from '@formily/core';
|
|
3
|
-
import { connect, mapProps } from '@formily/vue';
|
|
3
|
+
import { useField, connect, mapProps } from '@formily/vue';
|
|
4
4
|
import { NFormItem } from 'naive-ui';
|
|
5
5
|
import AnnotationEdit from '../../../../../packages/annotation-edit';
|
|
6
|
-
import { InjectionAnnotation } from '../../../../../packages/form-render/src/constants';
|
|
6
|
+
import { InjectionAnnotation, InjectionFormUUID } from '../../../../../packages/form-render/src/constants';
|
|
7
|
+
import { elementIdEscape } from '../../../../../packages/form-render/src/utils';
|
|
7
8
|
|
|
8
9
|
const script = defineComponent({
|
|
9
10
|
props: {
|
|
@@ -38,6 +39,11 @@ const script = defineComponent({
|
|
|
38
39
|
return annotation.value && props.annotation !== false;
|
|
39
40
|
});
|
|
40
41
|
const showLabel = computed(() => props.label && props.label !== " ");
|
|
42
|
+
const field = useField();
|
|
43
|
+
const uuid = inject(InjectionFormUUID);
|
|
44
|
+
const id = computed(() => {
|
|
45
|
+
return elementIdEscape(`${uuid}-${field.value.path.toString()}`);
|
|
46
|
+
});
|
|
41
47
|
function renderLabel() {
|
|
42
48
|
return showLabel.value ? createVNode("section", {
|
|
43
49
|
"class": "form-render__formItemLabel"
|
|
@@ -47,7 +53,9 @@ const script = defineComponent({
|
|
|
47
53
|
}]
|
|
48
54
|
}, [props.label]), showAnnotation.value ? renderAnnotation() : null]) : null;
|
|
49
55
|
}
|
|
50
|
-
return () => createVNode(NFormItem,
|
|
56
|
+
return () => createVNode(NFormItem, {
|
|
57
|
+
id: id.value
|
|
58
|
+
}, {
|
|
51
59
|
...slots,
|
|
52
60
|
label: renderLabel
|
|
53
61
|
});
|
|
@@ -7,7 +7,8 @@ export { LINEBAR } from './linebar.js';
|
|
|
7
7
|
export { INPUT_GROUP } from './inputGroup.js';
|
|
8
8
|
export { DATE } from './date.js';
|
|
9
9
|
export { SEARCH_CASCADE } from './cascader.js';
|
|
10
|
-
export {
|
|
10
|
+
export { JSON_COMBINATION } from './jsonCombination/index.js';
|
|
11
|
+
export { COMBINATION } from './combination.js';
|
|
11
12
|
export { CHECKBOX } from './checkbox.js';
|
|
12
13
|
export { SWITCH } from './switch.js';
|
|
13
14
|
export { RADIO } from './radio.js';
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FieldItem } from '../../../../../../../es/packages/form-render';
|
|
2
|
+
import { PropType } from 'vue';
|
|
3
|
+
export declare const JSON_COMBINATION: import("vue").DefineComponent<{
|
|
4
|
+
title: {
|
|
5
|
+
type: StringConstructor;
|
|
6
|
+
default: string;
|
|
7
|
+
};
|
|
8
|
+
value: {
|
|
9
|
+
type: (ArrayConstructor | StringConstructor)[];
|
|
10
|
+
};
|
|
11
|
+
maxGroupNum: {
|
|
12
|
+
type: NumberConstructor;
|
|
13
|
+
};
|
|
14
|
+
getProperties: {
|
|
15
|
+
type: PropType<() => FieldItem[]>;
|
|
16
|
+
default: () => never[];
|
|
17
|
+
};
|
|
18
|
+
onInput: {};
|
|
19
|
+
onBlur: {};
|
|
20
|
+
onChange: {};
|
|
21
|
+
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:value"[], "update:value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
22
|
+
title: {
|
|
23
|
+
type: StringConstructor;
|
|
24
|
+
default: string;
|
|
25
|
+
};
|
|
26
|
+
value: {
|
|
27
|
+
type: (ArrayConstructor | StringConstructor)[];
|
|
28
|
+
};
|
|
29
|
+
maxGroupNum: {
|
|
30
|
+
type: NumberConstructor;
|
|
31
|
+
};
|
|
32
|
+
getProperties: {
|
|
33
|
+
type: PropType<() => FieldItem[]>;
|
|
34
|
+
default: () => never[];
|
|
35
|
+
};
|
|
36
|
+
onInput: {};
|
|
37
|
+
onBlur: {};
|
|
38
|
+
onChange: {};
|
|
39
|
+
}>> & {
|
|
40
|
+
"onUpdate:value"?: ((...args: any[]) => any) | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
title: string;
|
|
43
|
+
getProperties: () => FieldItem[];
|
|
44
|
+
}>;
|
package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/index.js
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { defineComponent, ref, computed, watch, onMounted, createVNode, createTextVNode } from 'vue';
|
|
2
2
|
import { isField } from '@formily/core';
|
|
3
3
|
import { Path } from '@formily/path';
|
|
4
|
-
import { isNumber, isEqual } from 'lodash-es';
|
|
5
|
-
import { useDeepValidate } from '../../../../../../packages/form-render/src/components/renderer/
|
|
6
|
-
import {
|
|
4
|
+
import { isNumber, isArray, isEqual } from 'lodash-es';
|
|
5
|
+
import { useDeepValidate } from '../../../../../../packages/form-render/src/components/renderer/jsonCombination/hooks/useDeepValidate';
|
|
6
|
+
import { formRenderLog, mergeDeepProperties } from '../../../utils/index.js';
|
|
7
7
|
import { connect, mapProps } from '@formily/vue';
|
|
8
8
|
import { useDebounceFn, isObject } from '@vueuse/core';
|
|
9
9
|
import { NButton } from 'naive-ui';
|
|
@@ -11,14 +11,14 @@ import FormRender from '../../../FormRender.js';
|
|
|
11
11
|
import { assignUpdateValue } from '../../../utils/schema.js';
|
|
12
12
|
|
|
13
13
|
const script = defineComponent({
|
|
14
|
-
name: "
|
|
14
|
+
name: "FormJsonCombination",
|
|
15
15
|
props: {
|
|
16
16
|
title: {
|
|
17
17
|
type: String,
|
|
18
18
|
default: ""
|
|
19
19
|
},
|
|
20
20
|
value: {
|
|
21
|
-
type: String
|
|
21
|
+
type: [String, Array]
|
|
22
22
|
},
|
|
23
23
|
maxGroupNum: {
|
|
24
24
|
type: Number
|
|
@@ -35,12 +35,18 @@ const script = defineComponent({
|
|
|
35
35
|
setup(props, {
|
|
36
36
|
emit
|
|
37
37
|
}) {
|
|
38
|
+
formRenderLog("\u5F53\u524DCOMBINATION\u63A7\u4EF6\u4E3Ajson\u6A21\u5F0F,\u63A8\u8350\u4F7F\u7528\u975Ejson\u6A21\u5F0F,FieldItem.jsonCombination=false", "warn");
|
|
38
39
|
const emitChange = useDebounceFn(function emitChange2() {
|
|
39
40
|
emit("update:value", JSON.stringify(combinationData.value));
|
|
40
41
|
}, 300);
|
|
41
42
|
const combinationData = ref([]);
|
|
42
43
|
const currentGroupNum = computed(() => combinationData.value.length);
|
|
43
44
|
function setCombinationData(data, withInitialData = false) {
|
|
45
|
+
if (isArray(data)) {
|
|
46
|
+
if (!data.length)
|
|
47
|
+
data.push({});
|
|
48
|
+
data = JSON.stringify(data);
|
|
49
|
+
}
|
|
44
50
|
const parsedData = getParsedData(data);
|
|
45
51
|
if (!needLoad(parsedData))
|
|
46
52
|
return;
|
|
@@ -66,7 +72,6 @@ const script = defineComponent({
|
|
|
66
72
|
return null;
|
|
67
73
|
return result;
|
|
68
74
|
} catch (e) {
|
|
69
|
-
formRenderLog(`invalid JSON value ${data2} in COMBINATION => ${props.title}`, "warn");
|
|
70
75
|
return null;
|
|
71
76
|
}
|
|
72
77
|
}
|
|
@@ -141,7 +146,7 @@ const script = defineComponent({
|
|
|
141
146
|
})]), Array.from({
|
|
142
147
|
length: currentGroupNum.value
|
|
143
148
|
}).map((_, idx) => createVNode("section", {
|
|
144
|
-
"class": "form-
|
|
149
|
+
"class": "form-render__combinationContentJson"
|
|
145
150
|
}, [createVNode(FormRenderComponent, {
|
|
146
151
|
"ref": (_ref) => setFormRenderRef(idx, _ref),
|
|
147
152
|
"fieldList": props.getProperties(),
|
|
@@ -153,6 +158,6 @@ const script = defineComponent({
|
|
|
153
158
|
};
|
|
154
159
|
}
|
|
155
160
|
});
|
|
156
|
-
const
|
|
161
|
+
const JSON_COMBINATION = connect(script, mapProps(assignUpdateValue));
|
|
157
162
|
|
|
158
|
-
export {
|
|
163
|
+
export { JSON_COMBINATION };
|
|
@@ -9,6 +9,5 @@ export { useFormValidator } from './useFormValidator.js';
|
|
|
9
9
|
export { BusinessCollector, useBusinessBinding } from './useBusinessBinding.js';
|
|
10
10
|
export { ContextCollector, useChangeContext } from './useChangeContext.js';
|
|
11
11
|
export { FormItemDepsCollector, useFormItemDeps } from './useFormItemDeps.js';
|
|
12
|
-
export { useInitialData } from './useInitialData.js';
|
|
13
12
|
export { useAnchor } from './useAnchor.js';
|
|
14
13
|
export { useFormContext } from './useFormContext.js';
|
|
@@ -3,7 +3,7 @@ import { FieldItem } from '../types';
|
|
|
3
3
|
/**
|
|
4
4
|
* @description 胶水层, 将低代码平台中的fieldList转换为JSONSchema
|
|
5
5
|
*/
|
|
6
|
-
export declare function useFieldListAdaptor(collector: BusinessCollector
|
|
6
|
+
export declare function useFieldListAdaptor(collector: BusinessCollector): {
|
|
7
7
|
schemaAdaptor: (fieldList: FieldItem[]) => Record<string, import("@formily/json-schema/esm/types").Stringify<{
|
|
8
8
|
[key: symbol]: any;
|
|
9
9
|
[key: `x-${string}`]: any;
|
|
@@ -2,10 +2,10 @@ import { isObject } from '@vueuse/core';
|
|
|
2
2
|
import { pick } from 'lodash-es';
|
|
3
3
|
import { useFormValidator, useTypeNormalize } from '../../../../packages/form-render';
|
|
4
4
|
import { arrayed, parseNumberFromMaybeString, formRenderLog } from '../utils/index.js';
|
|
5
|
-
import { fieldKeyEscape, createLinebarId
|
|
5
|
+
import { fieldKeyEscape, createLinebarId } from '../utils/schema.js';
|
|
6
6
|
import { transformDateFormat } from '../utils/business.js';
|
|
7
7
|
|
|
8
|
-
function useFieldListAdaptor(collector
|
|
8
|
+
function useFieldListAdaptor(collector) {
|
|
9
9
|
const { createValidatorSchema } = useFormValidator();
|
|
10
10
|
const createStandardSchema = (item) => {
|
|
11
11
|
var _a;
|
|
@@ -14,6 +14,7 @@ function useFieldListAdaptor(collector, uuid) {
|
|
|
14
14
|
type: (_a = item.fieldType) != null ? _a : "string",
|
|
15
15
|
title: item.alias || item.name,
|
|
16
16
|
"x-component": item.html_type,
|
|
17
|
+
default: item.default_val,
|
|
17
18
|
"x-component-props": {
|
|
18
19
|
placeholder: item.placeholder,
|
|
19
20
|
clearable: item.is_empty === "0",
|
|
@@ -38,7 +39,6 @@ function useFieldListAdaptor(collector, uuid) {
|
|
|
38
39
|
showLabel: item.hide_title !== "1",
|
|
39
40
|
propertyKey: item.val_key,
|
|
40
41
|
annotation: item.annotation,
|
|
41
|
-
id: elementIdEscape(`${uuid}-${item.val_key}`),
|
|
42
42
|
...item.decoratorProps || {}
|
|
43
43
|
}
|
|
44
44
|
});
|
|
@@ -102,6 +102,10 @@ function useFieldListAdaptor(collector, uuid) {
|
|
|
102
102
|
};
|
|
103
103
|
const createCombinationSchema = (item) => {
|
|
104
104
|
const schema = createStandardSchema(item);
|
|
105
|
+
schema.type = "array";
|
|
106
|
+
if (item.jsonCombination !== false) {
|
|
107
|
+
schema["x-component"] = "JSON_COMBINATION";
|
|
108
|
+
}
|
|
105
109
|
Object.assign(schema["x-decorator-props"], {
|
|
106
110
|
showLabel: false,
|
|
107
111
|
showFeedback: false
|
|
@@ -43,7 +43,7 @@ export declare type FormChangePayload = {
|
|
|
43
43
|
fieldKey: string;
|
|
44
44
|
fieldName: string;
|
|
45
45
|
fieldInstance: DataField;
|
|
46
|
-
context
|
|
46
|
+
context?: FormChangeContext;
|
|
47
47
|
};
|
|
48
48
|
export declare type DependKeyType = string | Record<string, string> | Array<{
|
|
49
49
|
paramName: string;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { inject, provide, computed, createVNode, Fragment } from 'vue';
|
|
2
|
+
import { Path } from '@formily/path';
|
|
2
3
|
import { isObject } from '@vue/shared';
|
|
3
4
|
import { isNumber, isString, isFunction } from 'lodash-es';
|
|
4
5
|
export { isIdCard, isMobile, parseAge2Birthday, parseAge2FromContext, parseBirthday, parseIdCard, transformDateFormat } from './business.js';
|
|
5
6
|
export { queryDecorator, queryInput } from './dom.js';
|
|
6
|
-
export { assignUpdateValue, createLinebarId, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema } from './schema.js';
|
|
7
|
+
export { assignUpdateValue, createLinebarId, createObjSchema, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema } from './schema.js';
|
|
7
8
|
|
|
8
9
|
function formRenderLog(message, type = "log") {
|
|
9
10
|
console[type](`[FormRender]: ${message}`);
|
|
@@ -19,7 +20,7 @@ function mergeDeepProperties(target, fieldList, traverseProperties = ["children"
|
|
|
19
20
|
if (!isObject(field))
|
|
20
21
|
return;
|
|
21
22
|
if (targetPropertyFor(field) != null && _target[propertyFor(field)] == null) {
|
|
22
|
-
_target
|
|
23
|
+
Path.setIn(_target, propertyFor(field), targetPropertyFor(field));
|
|
23
24
|
}
|
|
24
25
|
traverseProperties.forEach((p) => {
|
|
25
26
|
if (!field[p])
|
|
@@ -14,3 +14,63 @@ export declare function assignUpdateValue(props: AnyObject, field: GeneralField)
|
|
|
14
14
|
[x: string]: any;
|
|
15
15
|
};
|
|
16
16
|
export declare function traverseFieldList(fieldList: FieldItem[], handler: (field: FieldItem) => void): void;
|
|
17
|
+
export declare function createObjSchema(properties: Record<string, ISchema>): {
|
|
18
|
+
type: string;
|
|
19
|
+
properties: Record<string, import("@formily/json-schema/esm/types").Stringify<{
|
|
20
|
+
[key: symbol]: any;
|
|
21
|
+
[key: `x-${string}`]: any;
|
|
22
|
+
[key: `x-${number}`]: any;
|
|
23
|
+
version?: string | undefined;
|
|
24
|
+
name?: import("@formily/json-schema/esm/types").SchemaKey | undefined;
|
|
25
|
+
title?: any;
|
|
26
|
+
description?: any;
|
|
27
|
+
default?: any;
|
|
28
|
+
readOnly?: boolean | undefined;
|
|
29
|
+
writeOnly?: boolean | undefined;
|
|
30
|
+
type?: import("@formily/json-schema/esm/types").SchemaTypes | undefined;
|
|
31
|
+
enum?: import("@formily/json-schema/esm/types").SchemaEnum<any> | undefined;
|
|
32
|
+
const?: any;
|
|
33
|
+
multipleOf?: number | undefined;
|
|
34
|
+
maximum?: number | undefined;
|
|
35
|
+
exclusiveMaximum?: number | undefined;
|
|
36
|
+
minimum?: number | undefined;
|
|
37
|
+
exclusiveMinimum?: number | undefined;
|
|
38
|
+
maxLength?: number | undefined;
|
|
39
|
+
minLength?: number | undefined;
|
|
40
|
+
pattern?: string | RegExp | undefined;
|
|
41
|
+
maxItems?: number | undefined;
|
|
42
|
+
minItems?: number | undefined;
|
|
43
|
+
uniqueItems?: boolean | undefined;
|
|
44
|
+
maxProperties?: number | undefined;
|
|
45
|
+
minProperties?: number | undefined;
|
|
46
|
+
required?: string | boolean | string[] | undefined;
|
|
47
|
+
format?: string | undefined;
|
|
48
|
+
$ref?: string | undefined;
|
|
49
|
+
$namespace?: string | undefined;
|
|
50
|
+
definitions?: import("@formily/json-schema/esm/types").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
|
|
51
|
+
properties?: import("@formily/json-schema/esm/types").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
|
|
52
|
+
items?: import("@formily/json-schema/esm/types").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
|
|
53
|
+
additionalItems?: import("@formily/json-schema/esm/types").Stringify<any> | undefined;
|
|
54
|
+
patternProperties?: import("@formily/json-schema/esm/types").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
|
|
55
|
+
additionalProperties?: import("@formily/json-schema/esm/types").Stringify<any> | undefined;
|
|
56
|
+
"x-value"?: any;
|
|
57
|
+
"x-index"?: number | undefined;
|
|
58
|
+
"x-pattern"?: any;
|
|
59
|
+
"x-display"?: any;
|
|
60
|
+
"x-validator"?: any;
|
|
61
|
+
"x-decorator"?: any;
|
|
62
|
+
"x-decorator-props"?: any;
|
|
63
|
+
"x-component"?: any;
|
|
64
|
+
"x-component-props"?: any;
|
|
65
|
+
"x-reactions"?: import("@formily/json-schema/esm/types").SchemaReactions<any> | undefined;
|
|
66
|
+
"x-content"?: any;
|
|
67
|
+
"x-data"?: any;
|
|
68
|
+
"x-visible"?: boolean | undefined;
|
|
69
|
+
"x-hidden"?: boolean | undefined;
|
|
70
|
+
"x-disabled"?: boolean | undefined;
|
|
71
|
+
"x-editable"?: boolean | undefined;
|
|
72
|
+
"x-read-only"?: boolean | undefined;
|
|
73
|
+
"x-read-pretty"?: boolean | undefined;
|
|
74
|
+
"x-compile-omitted"?: string[] | undefined;
|
|
75
|
+
}>>;
|
|
76
|
+
};
|
|
@@ -14,7 +14,7 @@ function fieldKeyEscape(fieldList) {
|
|
|
14
14
|
return fieldList.map((f) => f.val_key).join("-").replace(/[.]/g, "_");
|
|
15
15
|
}
|
|
16
16
|
function elementIdEscape(id) {
|
|
17
|
-
return id.replace(
|
|
17
|
+
return id.replace(/[.]/g, "-");
|
|
18
18
|
}
|
|
19
19
|
function createLinebarId(id) {
|
|
20
20
|
return elementIdEscape(`id-${id}`);
|
|
@@ -90,5 +90,8 @@ function traverseFieldList(fieldList, handler) {
|
|
|
90
90
|
}
|
|
91
91
|
traverse(fieldList);
|
|
92
92
|
}
|
|
93
|
+
function createObjSchema(properties) {
|
|
94
|
+
return { type: "object", properties };
|
|
95
|
+
}
|
|
93
96
|
|
|
94
|
-
export { assignUpdateValue, createLinebarId, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema };
|
|
97
|
+
export { assignUpdateValue, createLinebarId, createObjSchema, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema };
|
|
@@ -125,8 +125,15 @@
|
|
|
125
125
|
vertical-align: middle;
|
|
126
126
|
font-size: 16px;
|
|
127
127
|
}
|
|
128
|
+
.form-render__combinationContentJson {
|
|
129
|
+
position: relative;
|
|
130
|
+
}
|
|
128
131
|
.form-render__combinationContent {
|
|
129
132
|
position: relative;
|
|
133
|
+
display: grid !important;
|
|
134
|
+
grid-template-columns: repeat(var(--column), minmax(0px, 1fr));
|
|
135
|
+
align-items: start;
|
|
136
|
+
gap: 0 16px;
|
|
130
137
|
}
|
|
131
138
|
.form-render__complex {
|
|
132
139
|
width: 100%;
|
package/es/packages/index.css
CHANGED
|
@@ -2946,8 +2946,15 @@ body > .vxe-table--tooltip-wrapper {
|
|
|
2946
2946
|
vertical-align: middle;
|
|
2947
2947
|
font-size: 16px;
|
|
2948
2948
|
}
|
|
2949
|
+
.form-render__combinationContentJson {
|
|
2950
|
+
position: relative;
|
|
2951
|
+
}
|
|
2949
2952
|
.form-render__combinationContent {
|
|
2950
2953
|
position: relative;
|
|
2954
|
+
display: grid !important;
|
|
2955
|
+
grid-template-columns: repeat(var(--column), minmax(0px, 1fr));
|
|
2956
|
+
align-items: start;
|
|
2957
|
+
gap: 0 16px;
|
|
2951
2958
|
}
|
|
2952
2959
|
.form-render__complex {
|
|
2953
2960
|
width: 100%;
|
package/es/packages/index.js
CHANGED
|
@@ -51,7 +51,6 @@ export { useFormValidator } from './form-render/src/hooks/useFormValidator.js';
|
|
|
51
51
|
export { BusinessCollector, useBusinessBinding } from './form-render/src/hooks/useBusinessBinding.js';
|
|
52
52
|
export { ContextCollector, useChangeContext } from './form-render/src/hooks/useChangeContext.js';
|
|
53
53
|
export { FormItemDepsCollector, useFormItemDeps } from './form-render/src/hooks/useFormItemDeps.js';
|
|
54
|
-
export { useInitialData } from './form-render/src/hooks/useInitialData.js';
|
|
55
54
|
export { useAnchor } from './form-render/src/hooks/useAnchor.js';
|
|
56
55
|
export { useFormContext } from './form-render/src/hooks/useFormContext.js';
|
|
57
56
|
export { GlobalShortcutProvider, ShortcutManager, useShortcuts } from './shortcut-provider/src/hooks/useShortcuts.js';
|
|
@@ -88,6 +88,7 @@ class ShortcutManager {
|
|
|
88
88
|
const callback = this.shortcutCallbackMap.get(keySignature);
|
|
89
89
|
if (!callback)
|
|
90
90
|
return;
|
|
91
|
+
event.preventDefault();
|
|
91
92
|
const shortcutItem = Object.values(this.shortcutCache.value).find((item) => item.currentKeySignature === keySignature);
|
|
92
93
|
if (!shortcutItem || shortcutItem.status !== ShortcutStatus.ACTIVE || shortcutItem.disabled)
|
|
93
94
|
return;
|
|
@@ -122,6 +122,7 @@ declare const ShortcutSetter: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
122
122
|
content?: string | import("..").FormRenderer | Record<string, import("..").FormRenderer> | undefined;
|
|
123
123
|
lazyRequest?: boolean | undefined;
|
|
124
124
|
maxGroupNum?: number | undefined;
|
|
125
|
+
jsonCombination?: boolean | undefined;
|
|
125
126
|
children?: any[] | undefined;
|
|
126
127
|
properties?: any[] | undefined;
|
|
127
128
|
componentProps?: import("../../../es/src/types").AnyObject | undefined;
|
|
@@ -1931,7 +1932,9 @@ declare const ShortcutSetter: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
1931
1932
|
}>>;
|
|
1932
1933
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
1933
1934
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
1934
|
-
formModel: import("@formily/core").Form<
|
|
1935
|
+
formModel: import("@formily/core").Form<{
|
|
1936
|
+
[x: string]: any;
|
|
1937
|
+
}>;
|
|
1935
1938
|
SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
1936
1939
|
businessCollector: import("..").BusinessCollector;
|
|
1937
1940
|
formItemDepsCollector: import("..").FormItemDepsCollector;
|
|
@@ -124,6 +124,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
124
124
|
content?: string | import("../../../../es/packages/form-render").FormRenderer | Record<string, import("../../../../es/packages/form-render").FormRenderer> | undefined;
|
|
125
125
|
lazyRequest?: boolean | undefined;
|
|
126
126
|
maxGroupNum?: number | undefined;
|
|
127
|
+
jsonCombination?: boolean | undefined;
|
|
127
128
|
children?: any[] | undefined;
|
|
128
129
|
properties?: any[] | undefined;
|
|
129
130
|
componentProps?: import("../../../../es/src/types").AnyObject | undefined;
|
|
@@ -1933,7 +1934,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
1933
1934
|
}>>;
|
|
1934
1935
|
emit: (event: "formChange", ...args: any[]) => void;
|
|
1935
1936
|
nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
|
|
1936
|
-
formModel: import("@formily/core").Form<
|
|
1937
|
+
formModel: import("@formily/core").Form<{
|
|
1938
|
+
[x: string]: any;
|
|
1939
|
+
}>;
|
|
1937
1940
|
SchemaField: Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
|
|
1938
1941
|
businessCollector: import("../../../../es/packages/form-render").BusinessCollector;
|
|
1939
1942
|
formItemDepsCollector: import("../../../../es/packages/form-render").FormItemDepsCollector;
|
package/es/src/utils/index.d.ts
CHANGED
package/es/src/utils/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isString } from 'lodash-es';
|
|
2
|
+
|
|
1
3
|
function safeComponentRegister(app, component, cName = component.name, scheduler) {
|
|
2
4
|
if (!cName)
|
|
3
5
|
throw new Error(`[CUI]: invalid component name for ${component}`);
|
|
@@ -11,5 +13,13 @@ function safeComponentRegister(app, component, cName = component.name, scheduler
|
|
|
11
13
|
app.component(cName, component);
|
|
12
14
|
}
|
|
13
15
|
}
|
|
16
|
+
function generateTimeFormat(format) {
|
|
17
|
+
if (!isString(format))
|
|
18
|
+
return;
|
|
19
|
+
const matched = format.match(/[Hms:]+/);
|
|
20
|
+
if (!matched)
|
|
21
|
+
return;
|
|
22
|
+
return matched[0];
|
|
23
|
+
}
|
|
14
24
|
|
|
15
|
-
export { safeComponentRegister };
|
|
25
|
+
export { generateTimeFormat, safeComponentRegister };
|
package/global.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as NaiveUI from 'naive-ui';
|
|
2
|
-
|
|
3
|
-
declare module 'naive-ui' {
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
export const NTree: any;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export {};
|
|
1
|
+
import * as NaiveUI from 'naive-ui';
|
|
2
|
+
|
|
3
|
+
declare module 'naive-ui' {
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
export const NTree: any;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cnhis-design-vue",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "3.1.16-beta.
|
|
4
|
+
"version": "3.1.16-beta.15",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"module": "es/packages/index.js",
|
|
7
7
|
"main": "es/packages/index.js",
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"vue": "^3.2.0"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@formily/core": "
|
|
35
|
-
"@formily/path": "
|
|
36
|
-
"@formily/vue": "
|
|
34
|
+
"@formily/core": "2.1.9",
|
|
35
|
+
"@formily/path": "2.1.9",
|
|
36
|
+
"@formily/vue": "2.1.9",
|
|
37
37
|
"@highlightjs/vue-plugin": "^2.1.0",
|
|
38
38
|
"@vicons/ionicons5": "^0.12.0",
|
|
39
39
|
"@vueuse/core": "^8.6.0",
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Path } from '@formily/path';
|
|
2
|
-
import { mergeWith } from 'lodash-es';
|
|
3
|
-
import { traverseFieldList } from '../../../../packages/form-render/src/utils';
|
|
4
|
-
|
|
5
|
-
function useInitialData() {
|
|
6
|
-
function assignInitialData(initialData, fieldList) {
|
|
7
|
-
const defaultVal = {};
|
|
8
|
-
fieldList && traverseFieldList(fieldList, (field) => {
|
|
9
|
-
field.default_val != void 0 && Path.setIn(defaultVal, field.val_key, field.default_val);
|
|
10
|
-
});
|
|
11
|
-
return mergeWith({}, initialData, defaultVal);
|
|
12
|
-
}
|
|
13
|
-
return { assignInitialData };
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export { useInitialData };
|