cnhis-design-vue 0.3.3-beta → 0.3.6-beta
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/env.d.ts +2 -0
- package/es/big-table/index.css +1 -0
- package/es/big-table/index.js +116 -74
- package/es/button-print/index.css +1 -0
- package/es/drag-layout/index.css +2 -1
- package/es/drag-layout/index.js +33 -58
- package/es/grid/index.css +2 -1
- package/es/grid/index.js +2 -3
- package/es/index.css +2 -1
- package/es/index.js +152 -135
- package/package.json +5 -2
- package/packages/big-table/index.ts +17 -0
- package/packages/big-table/src/BigTable.vue +2511 -0
- package/packages/big-table/src/assets/iconfont/iconfont.less +21 -0
- package/packages/big-table/src/assets/iconfont/iconfont.ttf +0 -0
- package/packages/big-table/src/assets/img/failure.png +0 -0
- package/packages/big-table/src/assets/img/icon-asc.png +0 -0
- package/packages/big-table/src/assets/img/icon-desc.png +0 -0
- package/packages/big-table/src/assets/img/no-permission.png +0 -0
- package/packages/big-table/src/assets/img/nodata.png +0 -0
- package/packages/big-table/src/assets/img/notfound.png +0 -0
- package/packages/big-table/src/assets/img/qr.png +0 -0
- package/packages/big-table/src/assets/img/video_default_cover.png +0 -0
- package/packages/big-table/src/assets/img/xb_big.png +0 -0
- package/packages/big-table/src/assets/img/xb_small.png +0 -0
- package/packages/big-table/src/assets/style/table-base.less +275 -0
- package/packages/big-table/src/assets/style/table-global.less +167 -0
- package/packages/big-table/src/bigTableEmits.ts +46 -0
- package/packages/big-table/src/bigTableProps.ts +125 -0
- package/packages/big-table/src/bigTableState.ts +62 -0
- package/packages/big-table/src/components/NoData.vue +90 -0
- package/packages/big-table/src/components/SvgIcon.vue +49 -0
- package/packages/big-table/src/components/TextOverTooltip.vue +110 -0
- package/packages/big-table/src/components/edit-form/EditForm.vue +426 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-date-picker/edit-date-picker.vue +66 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-digital/edit-digital.vue +60 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-input/edit-input.vue +38 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-input-password/edit-input-password.vue +89 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-month-picker/edit-month-picker.vue +38 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-search/edit-search.vue +63 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-search-more/edit-search-more.vue +69 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-select/edit-select.vue +51 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-select-multiple/edit-select-multiple.vue +60 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-textarea/edit-textarea.vue +34 -0
- package/packages/big-table/src/components/edit-form/edit-component/edit-time-picker/edit-time-picker.vue +42 -0
- package/packages/big-table/src/components/edit-form/edit-component/editFormProps.ts +91 -0
- package/packages/big-table/src/components/edit-form/edit-component/register-com.ts +18 -0
- package/packages/big-table/src/components/edit-form/hooks/useConfigData.ts +79 -0
- package/packages/big-table/src/components/edit-form/hooks/useDateType.ts +184 -0
- package/packages/big-table/src/components/edit-form/hooks/useFormCommon.ts +373 -0
- package/packages/big-table/src/components/edit-form/hooks/useItemDefault.ts +638 -0
- package/packages/big-table/src/components/edit-form/hooks/useSearch.ts +910 -0
- package/packages/big-table/src/components/edit-form/hooks/useValidateRules.ts +387 -0
- package/packages/big-table/src/components/edit-form/interface.ts +53 -0
- package/packages/big-table/src/components/edit-form/types.ts +3 -0
- package/packages/big-table/src/components/edit-form/utils.ts +247 -0
- package/packages/big-table/src/hooks/useBatchEditing.ts +574 -0
- package/packages/big-table/src/hooks/useFormat.ts +612 -0
- package/packages/big-table/src/hooks/useNestTable.ts +109 -0
- package/packages/big-table/src/hooks/useTableParse.ts +169 -0
- package/packages/big-table/src/utils.ts +705 -0
- package/packages/button-print/index.ts +15 -0
- package/packages/button-print/src/ButtonPrint.vue +697 -0
- package/packages/button-print/src/components/IdentityVerification.vue +149 -0
- package/packages/button-print/src/interfaces.ts +19 -0
- package/packages/button-print/src/utils/crypto.js +25 -0
- package/packages/button-print/src/utils/print.es.min.js +1 -0
- package/packages/drag-layout/index.ts +15 -0
- package/packages/drag-layout/src/DragFormLeftItem.vue +131 -0
- package/packages/drag-layout/src/DragFormRightItem.vue +277 -0
- package/packages/drag-layout/src/DragLayout.vue +712 -0
- package/packages/grid/index.ts +17 -0
- package/packages/grid/src/Grid.tsx +22 -0
- package/packages/grid/src/hooks.ts +168 -0
- package/packages/index.ts +36 -0
- package/src/component/svg/index.vue +49 -0
- package/src/core/create.ts +5 -0
- package/src/global/variable.ts +2 -0
- package/src/utils/clickoutside.ts +80 -0
- package/src/utils/crypto.js +25 -0
- package/src/utils/vexutils.ts +811 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { nextTick } from 'vue'
|
|
2
|
+
import moment from 'moment';
|
|
3
|
+
import vexutils from '@/utils/vexutils';
|
|
4
|
+
|
|
5
|
+
import type { IsTimeDisabled, IsHourDisabled, IsMinuteDisabled, IsMinuteDisabled } from 'naive-ui'
|
|
6
|
+
interface TimeRange {
|
|
7
|
+
hArr?: number[]
|
|
8
|
+
mArr?: number[]
|
|
9
|
+
sArr?: number[]
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const useDateType = (open: any) => {
|
|
13
|
+
// 日期组件支持相互约束配置
|
|
14
|
+
const disabledDatePicker = (current: any, item: any) => {
|
|
15
|
+
if (!item.validate) return;
|
|
16
|
+
const momentFormat = item?.validate?.momentFormat || "days";
|
|
17
|
+
if (!item.validate.max_date && item.validate.min_date) {
|
|
18
|
+
if (item.validate.min_date === "currTime") {
|
|
19
|
+
return current && current < moment().startOf(momentFormat);
|
|
20
|
+
} else if (item.validate.min_date) {
|
|
21
|
+
return current && current < moment(item.validate.min_date);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (!item.validate.min_date && item.validate.max_date) {
|
|
25
|
+
if (item.validate.max_date === "currTime") {
|
|
26
|
+
return current >= moment().endOf(momentFormat);
|
|
27
|
+
} else if (item.validate.max_date) {
|
|
28
|
+
return current && current >= moment(item.validate.max_date).endOf(momentFormat);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (item.validate.min_date && item.validate.max_date) {
|
|
32
|
+
if (item.validate.min_date != "currTime" && item.validate.max_date != "currTime") {
|
|
33
|
+
return (
|
|
34
|
+
(current && current < moment(item.validate.min_date)) ||
|
|
35
|
+
(current && current >= moment(item.validate.max_date).endOf(momentFormat))
|
|
36
|
+
);
|
|
37
|
+
} else if (item.validate.min_date == "currTime" && item.validate.max_date != "currTime") {
|
|
38
|
+
return (
|
|
39
|
+
(current && current < moment().startOf("days")) ||
|
|
40
|
+
(current && current >= moment(item.validate.max_date).endOf(momentFormat))
|
|
41
|
+
);
|
|
42
|
+
} else if (item.validate.min_date != "currTime" && item.validate.max_date == "currTime") {
|
|
43
|
+
return (
|
|
44
|
+
(current && current < moment(item.validate.min_date)) ||
|
|
45
|
+
current >= moment().endOf(momentFormat)
|
|
46
|
+
);
|
|
47
|
+
} else if (item.validate.min_date == "currTime" && item.validate.max_date == "currTime") {
|
|
48
|
+
return (
|
|
49
|
+
(current && current < moment().startOf("days")) ||
|
|
50
|
+
current >= moment().endOf(momentFormat)
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const setTimeRangeArr = (hMin: number, HMax: number, mMin: number, mMax: number, sMin: number, sMax: number) => {
|
|
56
|
+
const timeRange: TimeRange = {};
|
|
57
|
+
timeRange.hArr = [hMin, HMax];
|
|
58
|
+
timeRange.mArr = [mMin, mMax];
|
|
59
|
+
timeRange.sArr = [sMin, sMax];
|
|
60
|
+
return timeRange;
|
|
61
|
+
}
|
|
62
|
+
const handleCompareTimeRange = (time: number, item: any, type: string) => {
|
|
63
|
+
let timeRange = {};
|
|
64
|
+
const h = moment(time).hour();
|
|
65
|
+
const m = moment(time).minute();
|
|
66
|
+
const s = moment(time).second();
|
|
67
|
+
if (
|
|
68
|
+
(type === "compare" && item.attr === "startDate") ||
|
|
69
|
+
(type === "match" && item.attr === "endDate")
|
|
70
|
+
) {
|
|
71
|
+
timeRange = setTimeRangeArr(0, h, 0, m, 0, s + 1);
|
|
72
|
+
} else if (
|
|
73
|
+
(type === "compare" && item.attr === "endDate") ||
|
|
74
|
+
(type === "match" && item.attr === "startDate")
|
|
75
|
+
) {
|
|
76
|
+
timeRange = setTimeRangeArr(h + 1, 24, m + 1, 60, s, 60);
|
|
77
|
+
}
|
|
78
|
+
return timeRange;
|
|
79
|
+
}
|
|
80
|
+
const disabledMethodTimeRange = (item: any) => {
|
|
81
|
+
const currTime = new Date().valueOf();
|
|
82
|
+
if (!item.validate) return;
|
|
83
|
+
if (
|
|
84
|
+
((item.validate.max_date === "currTime" && item.attr === "startDate") ||
|
|
85
|
+
(item.validate.min_date === "currTime" && item.attr === "endDate")) &&
|
|
86
|
+
!item.validate.setCurrTime
|
|
87
|
+
) {
|
|
88
|
+
item.validate['setCurrTime'] = true
|
|
89
|
+
item.validate.timeRange = handleCompareTimeRange(currTime, item, "match");
|
|
90
|
+
item.validate.currTime = currTime;
|
|
91
|
+
}
|
|
92
|
+
if (
|
|
93
|
+
((item.validate.min_date === "currTime" && item.attr === "startDate") ||
|
|
94
|
+
(item.validate.max_date === "currTime" && item.attr === "endDate")) &&
|
|
95
|
+
!item.validate.setCurrTime
|
|
96
|
+
) {
|
|
97
|
+
item.validate['setCurrTime'] = true
|
|
98
|
+
item.validate.timeRange = handleCompareTimeRange(currTime, item, "compare");
|
|
99
|
+
item.validate.currTime = currTime;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const range = (start: number, end: number) => {
|
|
103
|
+
const result = [];
|
|
104
|
+
for (let i = start; i < end; i++) {
|
|
105
|
+
result.push(i);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
// 日期选择组件 时间选择面板 约束
|
|
110
|
+
const disabledTimePicker = (current: any, item: any): IsTimeDisabled => {
|
|
111
|
+
if (!item.validate) return {};
|
|
112
|
+
if (item.date_format === "YYYY-MM-dd HH:mm:ss") {
|
|
113
|
+
if (vexutils.isEmpty(item.validate.timeRange) || !item.validate.isSpliceHour) {
|
|
114
|
+
disabledMethodTimeRange(item);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const { timeRange = {} } = item.validate;
|
|
118
|
+
if (!vexutils.isEmpty(timeRange)) {
|
|
119
|
+
const { hArr = [], mArr = [], sArr = [] } = timeRange;
|
|
120
|
+
let hRange = range(hArr[0], hArr[1]);
|
|
121
|
+
if (item.date_format === "YYYY-MM-dd HH:mm:ss") {
|
|
122
|
+
if (item.validate.isSpliceHour) {
|
|
123
|
+
const length = hArr[1] - hArr[0];
|
|
124
|
+
const tempRange = range(0, 24);
|
|
125
|
+
tempRange.splice(hArr[0], length + 1);
|
|
126
|
+
hRange = tempRange;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
let diff = 0;
|
|
130
|
+
// 如果 min_date = 'currTime' 时间禁用的“分”,“秒” 减 1 ,避免“当前时间(时分秒)”选不了
|
|
131
|
+
if (
|
|
132
|
+
["startDate", "endDate"].includes(item.attr) &&
|
|
133
|
+
"currTime" == item?.validate?.min_date
|
|
134
|
+
) {
|
|
135
|
+
diff = 1;
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
isHourDisabled: (hour: number) => hour > hRange[0] && hour < hRange[1],
|
|
139
|
+
isMinuteDisabled: (minute: number) => minute > mArr[0] && minute < mArr[1] - diff,
|
|
140
|
+
isSecondDisabled: (second: number) => second > sArr[0] && second < sArr[1] - diff * 5
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const openTimeChange = (isOpen: boolean, item: any) => {
|
|
145
|
+
open.value = isOpen;
|
|
146
|
+
if (!item.validate) return;
|
|
147
|
+
if (!isOpen) {
|
|
148
|
+
nextTick(() => {
|
|
149
|
+
item.validate['setCurrTime'] = false
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// 时间选择器 约束
|
|
154
|
+
const disabledHours = (item: any, type: string): IsHourDisabled | IsMinuteDisabled | IsMinuteDisabled => {
|
|
155
|
+
if (!item.validate) return;
|
|
156
|
+
if (vexutils.isEmpty(item.validate.timeRange) || !item.validate.isSpliceHour) {
|
|
157
|
+
disabledMethodTimeRange(item);
|
|
158
|
+
}
|
|
159
|
+
const { timeRange = {} } = item.validate;
|
|
160
|
+
if (!vexutils.isEmpty(timeRange)) {
|
|
161
|
+
const { hArr = [], mArr = [], sArr = [] } = timeRange;
|
|
162
|
+
let hRange = range(hArr[0], hArr[1]);
|
|
163
|
+
if (item.validate.min_date && item.validate.max_date) {
|
|
164
|
+
const length = hArr[1] - hArr[0];
|
|
165
|
+
const tempRange = range(0, 24);
|
|
166
|
+
tempRange.splice(hArr[0], length + 1);
|
|
167
|
+
hRange = tempRange;
|
|
168
|
+
}
|
|
169
|
+
if (type === "h") {
|
|
170
|
+
return () => hRange;
|
|
171
|
+
} else if (type === "m") {
|
|
172
|
+
return () => range(mArr[0], mArr[1]);
|
|
173
|
+
} else if (type === "s") {
|
|
174
|
+
return () => range(sArr[0], sArr[1]);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return {
|
|
180
|
+
disabledTimePicker,
|
|
181
|
+
disabledDatePicker,
|
|
182
|
+
disabledHours
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { ref, reactive ,computed } from 'vue'
|
|
2
|
+
import type { CmpElement, OptionListObj, EditFormProps } from '../interface'
|
|
3
|
+
import vexutils from '@/utils/vexutils';
|
|
4
|
+
import { handleSysParams, handlerGetDateType, handleGetJsonStr } from '../utils'
|
|
5
|
+
import moment from 'moment';
|
|
6
|
+
import { stat } from 'fs';
|
|
7
|
+
|
|
8
|
+
export const useFormCommon = (props: EditFormProps, state: any, userInfo: any, computedData?: any) => {
|
|
9
|
+
/** 这里的方法 basefrom formitem 都引用, 注意使用 this.xxx 的值 */
|
|
10
|
+
const paramsObj = { defaultValue: state.defaultValue, userInfo, dbParams: state.dbParams }
|
|
11
|
+
|
|
12
|
+
const isFormBoldOpen = computed(() => {
|
|
13
|
+
return function(item: any) {
|
|
14
|
+
let res = item.is_null == '0' && props.styleSetting.formBoldOpen;
|
|
15
|
+
return res;
|
|
16
|
+
}
|
|
17
|
+
})
|
|
18
|
+
// 组合组件 是否显示拖拽icon
|
|
19
|
+
const showDragIcon = computed(() => {
|
|
20
|
+
return function(item: any) {
|
|
21
|
+
let { combinationList = [] } = item || {};
|
|
22
|
+
if (!combinationList.length) return false;
|
|
23
|
+
// delete 之后是软删除 过滤 isCombinationHide=true
|
|
24
|
+
let showCombination = combinationList.filter((v: any) => !v.isCombinationHide);
|
|
25
|
+
return showCombination?.length > 1;
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
/** xxx def */
|
|
29
|
+
const handleGetcheckboxDef = (item: CmpElement) => {
|
|
30
|
+
let optionsList: OptionListObj[] = item.option;
|
|
31
|
+
let valList: string[] = [];
|
|
32
|
+
let checkboxVal = state.defaultValue[item.name] || item.default_val;
|
|
33
|
+
let checkboxList = [];
|
|
34
|
+
checkboxVal = handleSysParams(checkboxVal, paramsObj);
|
|
35
|
+
if (typeof checkboxVal === 'string') {
|
|
36
|
+
if (vexutils.isJSON(checkboxVal)) {
|
|
37
|
+
checkboxList = JSON.parse(checkboxVal);
|
|
38
|
+
} else {
|
|
39
|
+
checkboxList = checkboxVal ? checkboxVal.split(',') : [];
|
|
40
|
+
}
|
|
41
|
+
} else if (Array.isArray(checkboxVal)) {
|
|
42
|
+
checkboxList = checkboxVal;
|
|
43
|
+
}
|
|
44
|
+
// checkboxList = checkboxVal ? checkboxVal.split(",") : [];
|
|
45
|
+
checkboxList = Array.isArray(checkboxList) ? checkboxList : [];
|
|
46
|
+
checkboxList.forEach(v => {
|
|
47
|
+
optionsList.forEach(j => {
|
|
48
|
+
if (j.text == v || j.value == v) {
|
|
49
|
+
valList.push(String(v));
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
return valList || [];
|
|
54
|
+
}
|
|
55
|
+
const transformStr = (item: CmpElement): string => {
|
|
56
|
+
var def = state.defaultValue[item.name];
|
|
57
|
+
var propsDef = def || (def !== '' && def == 0) ? def : item.default_val;
|
|
58
|
+
let defVal = propsDef || propsDef == 0 ? propsDef : '';
|
|
59
|
+
defVal = String(defVal);
|
|
60
|
+
return defVal;
|
|
61
|
+
}
|
|
62
|
+
const handlerFormatTextarea = (data: CmpElement) => {
|
|
63
|
+
let defVal = state.defaultValue[data.name] || data.default_val || '';
|
|
64
|
+
defVal = handleSysParams(defVal, paramsObj)
|
|
65
|
+
if (!defVal) {
|
|
66
|
+
return '';
|
|
67
|
+
} else if (defVal instanceof Object) {
|
|
68
|
+
// 如是 Textarea 类型但传来的默认值是 Object 或 Array
|
|
69
|
+
return JSON.stringify(defVal);
|
|
70
|
+
}
|
|
71
|
+
return defVal;
|
|
72
|
+
}
|
|
73
|
+
const handleGetTextDef = (item: CmpElement) => {
|
|
74
|
+
let defVal: string | number = '';
|
|
75
|
+
var def = state.defaultValue[item.name];
|
|
76
|
+
var propsDef = def || (def !== '' && def === 0) ? def : handleSysParams(item.data_value || item.default_val, paramsObj);
|
|
77
|
+
defVal = propsDef || propsDef === 0 ? propsDef : undefined;
|
|
78
|
+
if (item.html_type === 'DIGITAL') {
|
|
79
|
+
defVal = defVal ? +defVal : defVal;
|
|
80
|
+
}
|
|
81
|
+
return defVal;
|
|
82
|
+
}
|
|
83
|
+
// 日期默认解析
|
|
84
|
+
const handleDateCondition = (item: CmpElement) => {
|
|
85
|
+
let { condition, attr, unit = 'DAY', default_val } = item;
|
|
86
|
+
let format = handlerGetDateType(item);
|
|
87
|
+
let useTime,
|
|
88
|
+
count = Number(default_val) || 0;
|
|
89
|
+
let getUnit = unit.toLowerCase();
|
|
90
|
+
let useUnit = getUnit + 's';
|
|
91
|
+
if (condition == 'IN_THE_PAST') {
|
|
92
|
+
useTime = (moment() as any).subtract(count, useUnit);
|
|
93
|
+
} else {
|
|
94
|
+
useTime = (moment() as any).add(count, useUnit);
|
|
95
|
+
}
|
|
96
|
+
let res = useTime.format(format);
|
|
97
|
+
if (attr == 'startDate') {
|
|
98
|
+
res = useTime.startOf('day').format(format);
|
|
99
|
+
} else if (attr == 'endDate') {
|
|
100
|
+
res = useTime.endOf('day').format(format);
|
|
101
|
+
}
|
|
102
|
+
return res;
|
|
103
|
+
}
|
|
104
|
+
const handleGetdateTypeDef = (item: CmpElement) => {
|
|
105
|
+
var propsDate = state.defaultValue[item.name] || item.default_val;
|
|
106
|
+
if (item.condition === 'IN_THE_PAST' || item.condition === 'IN_THE_FUTURE') {
|
|
107
|
+
propsDate = handleDateCondition(item);
|
|
108
|
+
} else {
|
|
109
|
+
propsDate = handleSysParams(propsDate, paramsObj);
|
|
110
|
+
}
|
|
111
|
+
let dateType = handlerGetDateType(item);
|
|
112
|
+
// if (!this.$utils.isDate(propsDate)) {
|
|
113
|
+
// return null;
|
|
114
|
+
// }
|
|
115
|
+
if (dateType == 'HH:mm:ss' || dateType == 'HH:mm') {
|
|
116
|
+
return propsDate && moment(propsDate, dateType).isValid() ? moment(propsDate, dateType) : null;
|
|
117
|
+
} else {
|
|
118
|
+
if (dateType === 'YYYY-MM-DD HH:mm:ss' && propsDate) {
|
|
119
|
+
// 配置了 YYYY-MM-DD HH:mm:ss 格式, 但是传来的参数是 '2021-5-18',默认补上 '00:00:00'。
|
|
120
|
+
if (typeof propsDate === 'string') {
|
|
121
|
+
let [, h] = propsDate.split(' ');
|
|
122
|
+
if (!h) {
|
|
123
|
+
propsDate = `${propsDate} 00:00:00`;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return propsDate && moment(new Date(propsDate), dateType).isValid() ? moment(new Date(propsDate), dateType) : null;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const transformDefStr = (item: CmpElement) => {
|
|
131
|
+
var def = state.defaultValue[item.name];
|
|
132
|
+
var propsDef = def || (def !== '' && def == 0) ? def : item.default_val;
|
|
133
|
+
let defVal = propsDef || propsDef == 0 ? propsDef : '';
|
|
134
|
+
defVal = String(defVal);
|
|
135
|
+
return defVal;
|
|
136
|
+
}
|
|
137
|
+
const getSelectVal = (data: CmpElement) => {
|
|
138
|
+
let targetStr = transformDefStr(data) || '';
|
|
139
|
+
|
|
140
|
+
if (['SELECT', 'PHONE_TYPE', 'IDCARD_TYPE'].includes(data.html_type)) {
|
|
141
|
+
// 传来的默认值
|
|
142
|
+
targetStr = String(targetStr);
|
|
143
|
+
// 环境变量
|
|
144
|
+
targetStr = handleSysParams(targetStr, paramsObj);
|
|
145
|
+
if (!Array.isArray(data.option)) return targetStr;
|
|
146
|
+
|
|
147
|
+
let f = data.option.find(o => o.value == targetStr);
|
|
148
|
+
if (f) {
|
|
149
|
+
return targetStr;
|
|
150
|
+
} else {
|
|
151
|
+
// SELECT 都没又默认去第一个
|
|
152
|
+
// let valList = Object.values(data.option);
|
|
153
|
+
// let curVal = valList.find(e => !!e);
|
|
154
|
+
const curVal = data.option[0] && data.option[0].value;
|
|
155
|
+
return curVal;
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
return targetStr;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const handlerDefaultUpload = (data: string, type = 'default') => {
|
|
162
|
+
let currentData;
|
|
163
|
+
let fileList;
|
|
164
|
+
if (vexutils.isJSON(data)) {
|
|
165
|
+
currentData = JSON.parse(data);
|
|
166
|
+
} else {
|
|
167
|
+
currentData = data;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (currentData instanceof Array) {
|
|
171
|
+
currentData.forEach(item => {
|
|
172
|
+
item.thumbUrl = item.url;
|
|
173
|
+
item.uid = (-Math.random()).toString();
|
|
174
|
+
item.status = 'done';
|
|
175
|
+
});
|
|
176
|
+
fileList = currentData;
|
|
177
|
+
} else if (typeof currentData === 'string' && currentData.length > 0) {
|
|
178
|
+
const currentList = currentData.split(',');
|
|
179
|
+
fileList = [];
|
|
180
|
+
currentList.forEach(v => {
|
|
181
|
+
if (v) {
|
|
182
|
+
fileList.push({
|
|
183
|
+
url: v,
|
|
184
|
+
thumbUrl: v,
|
|
185
|
+
uid: (-Math.random()).toString(),
|
|
186
|
+
name: 'name',
|
|
187
|
+
status: 'done'
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
} else {
|
|
192
|
+
fileList = [];
|
|
193
|
+
}
|
|
194
|
+
if (type === 'default') {
|
|
195
|
+
return fileList;
|
|
196
|
+
} else {
|
|
197
|
+
return { fileList: fileList };
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const getCascaderDef = (v: CmpElement) => {
|
|
201
|
+
try {
|
|
202
|
+
const is_multi = v.is_multi == '1';
|
|
203
|
+
let defaultValue = state.defaultValue[v.name] || v.default_val;
|
|
204
|
+
if (typeof defaultValue === 'string') {
|
|
205
|
+
defaultValue = handleSysParams(defaultValue, paramsObj);
|
|
206
|
+
if (!vexutils.isJSON(defaultValue)) {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (!defaultValue) return [];
|
|
211
|
+
if (defaultValue.includes('objStr')) {
|
|
212
|
+
if (is_multi) {
|
|
213
|
+
const multiData = handleGetJsonStr(defaultValue);
|
|
214
|
+
const objs = multiData['objs'] || [];
|
|
215
|
+
const objStrList: string[] = [];
|
|
216
|
+
objs.forEach((e: any) => {
|
|
217
|
+
objStrList.push(e.objStr.split('/'));
|
|
218
|
+
});
|
|
219
|
+
return [...objStrList];
|
|
220
|
+
} else {
|
|
221
|
+
defaultValue = handleGetJsonStr(defaultValue).objStr;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (typeof defaultValue == 'string') {
|
|
225
|
+
if (defaultValue.includes('_')) {
|
|
226
|
+
defaultValue = defaultValue.split('_');
|
|
227
|
+
} else {
|
|
228
|
+
defaultValue = defaultValue.split('/');
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (!Array.isArray(defaultValue)) {
|
|
233
|
+
defaultValue = [];
|
|
234
|
+
} else {
|
|
235
|
+
defaultValue = defaultValue.filter(Boolean);
|
|
236
|
+
}
|
|
237
|
+
return is_multi ? [] : defaultValue || [];
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.log(error);
|
|
240
|
+
return [];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
const getInitializeDef = (item: CmpElement) => {
|
|
244
|
+
return handleSysParams(state.defaultValue[item.name] || item.default_val || '', paramsObj);
|
|
245
|
+
}
|
|
246
|
+
const transformNumber = (val: string | number) => {
|
|
247
|
+
if (val) {
|
|
248
|
+
let resVal = +val;
|
|
249
|
+
// marks
|
|
250
|
+
return isNaN(resVal) ? 0 : resVal;
|
|
251
|
+
}
|
|
252
|
+
return undefined;
|
|
253
|
+
}
|
|
254
|
+
// 获取表单默认值
|
|
255
|
+
const handleGetdef = (item: CmpElement) => {
|
|
256
|
+
let defVal;
|
|
257
|
+
// let optionsList = Object.entries(item.option || {});
|
|
258
|
+
switch (item.html_type) {
|
|
259
|
+
case 'CHECKBOX_BLOCK':
|
|
260
|
+
case 'CHECKBOX':
|
|
261
|
+
defVal = handleGetcheckboxDef(item);
|
|
262
|
+
break;
|
|
263
|
+
case 'RADIO_BLOCK':
|
|
264
|
+
case 'RADIO':
|
|
265
|
+
defVal = transformStr(item);
|
|
266
|
+
defVal = handleSysParams(defVal, paramsObj);
|
|
267
|
+
if (!defVal && +defVal != 0) {
|
|
268
|
+
defVal = undefined;
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
case 'MAP':
|
|
272
|
+
defVal = state.defaultValue[item.name] || item.default_val || '';
|
|
273
|
+
defVal = handleSysParams(defVal, paramsObj);
|
|
274
|
+
break;
|
|
275
|
+
case 'TEXTAREA':
|
|
276
|
+
defVal = handlerFormatTextarea(item) || '';
|
|
277
|
+
break;
|
|
278
|
+
case 'INPUT':
|
|
279
|
+
case 'DIGITAL':
|
|
280
|
+
case 'ICON':
|
|
281
|
+
defVal = handleGetTextDef(item);
|
|
282
|
+
break;
|
|
283
|
+
case 'DATE':
|
|
284
|
+
case 'DATE-INPUT':
|
|
285
|
+
case 'DATETIME-INPUT':
|
|
286
|
+
defVal = handleGetdateTypeDef(item);
|
|
287
|
+
break;
|
|
288
|
+
case 'SELECT':
|
|
289
|
+
case 'PHONE_TYPE':
|
|
290
|
+
case 'IDCARD_TYPE':
|
|
291
|
+
defVal = getSelectVal(item);
|
|
292
|
+
break;
|
|
293
|
+
case 'UPPICTURE':
|
|
294
|
+
var def = state.defaultValue[item.name] || item.default_val;
|
|
295
|
+
if (typeof def === 'string') {
|
|
296
|
+
def = handleSysParams(def, paramsObj);
|
|
297
|
+
}
|
|
298
|
+
defVal = handlerDefaultUpload(def, 'values');
|
|
299
|
+
break;
|
|
300
|
+
case 'SEARCH':
|
|
301
|
+
defVal = handleSysParams(item.default_val, paramsObj) || state.defaultValue[item.name] || undefined;
|
|
302
|
+
break;
|
|
303
|
+
case 'SEARCH_MORE':
|
|
304
|
+
defVal = [];
|
|
305
|
+
break;
|
|
306
|
+
case 'LEVEL_SEARCH_CASCADE2':
|
|
307
|
+
defVal = getCascaderDef(item);
|
|
308
|
+
break;
|
|
309
|
+
case 'LABEL':
|
|
310
|
+
defVal = [];
|
|
311
|
+
break;
|
|
312
|
+
case 'GUAGE':
|
|
313
|
+
defVal = state.defaultValue[item.name];
|
|
314
|
+
break;
|
|
315
|
+
case 'SLIDER_COMPONENT':
|
|
316
|
+
defVal = getInitializeDef(item);
|
|
317
|
+
defVal = transformNumber(defVal);
|
|
318
|
+
break;
|
|
319
|
+
case 'SWITCH_COMPONENT':
|
|
320
|
+
defVal = getInitializeDef(item);
|
|
321
|
+
break;
|
|
322
|
+
case 'AGE_JSON':
|
|
323
|
+
let d: any = String(getInitializeDef(item) || {});
|
|
324
|
+
if (vexutils.isJSON(d)) {
|
|
325
|
+
d = JSON.parse(d);
|
|
326
|
+
}
|
|
327
|
+
if (typeof d == 'object') {
|
|
328
|
+
Object.keys(d).forEach(v => {
|
|
329
|
+
d[v] = [-1, '-1'].includes(d[v]) ? '' : d[v];
|
|
330
|
+
});
|
|
331
|
+
defVal = Object.assign({ year: '', month: '', day: '', days: '' }, d);
|
|
332
|
+
} else {
|
|
333
|
+
defVal = { year: '', month: '', day: '', days: '' };
|
|
334
|
+
}
|
|
335
|
+
break;
|
|
336
|
+
case 'AGE':
|
|
337
|
+
defVal = state.defaultValue[item.name] || handleSysParams(item.default_val || '', paramsObj);
|
|
338
|
+
break;
|
|
339
|
+
default:
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
if (item.html_type === 'ICON') {
|
|
343
|
+
state.defaultValue[item.name] = defVal;
|
|
344
|
+
}
|
|
345
|
+
return defVal;
|
|
346
|
+
}
|
|
347
|
+
const handleGetItemDefVal = (item: CmpElement) => {
|
|
348
|
+
let defVal = state.defaultValue[item.name] || item.default_val || '';
|
|
349
|
+
defVal = handleSysParams(defVal, paramsObj);
|
|
350
|
+
return defVal;
|
|
351
|
+
}
|
|
352
|
+
// 获取
|
|
353
|
+
const hanldeGetFieldValue = (item: any, key?: string) => {
|
|
354
|
+
return item?.useFormValue;
|
|
355
|
+
}
|
|
356
|
+
// 清空
|
|
357
|
+
const hanldeResetFields = (key: string) => {
|
|
358
|
+
// 此重置表单要换成naiveui
|
|
359
|
+
computedData.baseForm.resetFields();
|
|
360
|
+
}
|
|
361
|
+
const RandomId = (len: number) => {
|
|
362
|
+
return (
|
|
363
|
+
Math.random()
|
|
364
|
+
.toString(36)
|
|
365
|
+
.slice(3, len) + new Date().getTime()
|
|
366
|
+
);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return {
|
|
370
|
+
handleGetdef,
|
|
371
|
+
RandomId
|
|
372
|
+
}
|
|
373
|
+
}
|