@utogether/udp-core 1.0.1-beta.15 → 1.0.1-beta.17
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/build/plugins.ts +39 -39
- package/dist/{403-DpJevH-h.js → 403-C3cfjZIT.js} +1 -1
- package/dist/{404-BpqJK3YD.js → 404-Bg3j7QIo.js} +1 -1
- package/dist/{500-DyvRbMD_.js → 500-CMT7Zyy7.js} +1 -1
- package/dist/{AuthorityInfo-Cyu4XHXx.js → AuthorityInfo-B1mvqs4x.js} +1 -1
- package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BxmnEEFq.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DwoW7QWO.js} +3 -3
- package/dist/{Company-BLygcYrI.js → Company-qTguidK8.js} +3 -3
- package/dist/{CompanyPanel-D5Tgw6LF.js → CompanyPanel-BBC-o-k3.js} +17 -17
- package/dist/{Department-qI9OninZ.js → Department-C3mKZOnK.js} +3 -3
- package/dist/{DepartmentPanel-P-P8fPZQ.js → DepartmentPanel-CNdpOHBT.js} +25 -25
- package/dist/{DesignPanel-BxjD0AZi.js → DesignPanel-D9jrRCoG.js} +1 -1
- package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DN_OKxCu.js → DesignPanel.vue_vue_type_style_index_0_lang-A-Aj1Hl0.js} +6 -6
- package/dist/{DictView-PWL_Vf0T.js → DictView-CgdVkSiP.js} +15 -16
- package/dist/{InvOrganization-JXBXyn3G.js → InvOrganization-RE7s3vBq.js} +1 -1
- package/dist/{Org-DcTJn6YQ.js → Org-wXDGvTrS.js} +3 -3
- package/dist/{Preview-IKvbHI8a.js → Preview-Pvt1__BV.js} +1 -1
- package/dist/{ReportDefine-_G7ts7Ch.js → ReportDefine-xEQsgFyv.js} +1 -1
- package/dist/{ReportDesign-7h5oFklh.js → ReportDesign-jOSuEFH9.js} +9 -9
- package/dist/{ReportQuery-dj0BQUyi.js → ReportQuery-DxEmmGiN.js} +1 -1
- package/dist/{ReportQueryFrom-6WaZPg9i.js → ReportQueryFrom-CFlxfS5M.js} +1 -1
- package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-ChhcBPqa.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-iHpiYz8f.js} +1 -1
- package/dist/{ReportTemplate-DIvJ3RrB.js → ReportTemplate-Dtz3aet7.js} +11 -11
- package/dist/{Role-ia_3qAZU.js → Role-B_NsHIyE.js} +3 -3
- package/dist/{RoleAssign-D0zVl4y3.js → RoleAssign-C9wm4zq4.js} +8 -8
- package/dist/{RolePanel-CQxOiAzj.js → RolePanel-BlHidBR0.js} +1 -1
- package/dist/{RolePanel-BiGGmP2w.js → RolePanel-DWM9mfNs.js} +1 -1
- package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BYDLRS_x.js → RolePanel.vue_vue_type_script_setup_true_lang-Cn4RRzXm.js} +1 -1
- package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Dwv5LFbf.js → RolePanel.vue_vue_type_script_setup_true_lang-DVQ9aqb1.js} +9 -9
- package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-gPP4duO8.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCm-_i8O.js} +8 -8
- package/dist/{Staff-Bf_oUqF6.js → Staff-BfDc61QS.js} +3 -3
- package/dist/{StaffInfo-D5aisjx2.js → StaffInfo-BaJFo4mg.js} +1 -1
- package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-6PX7Bx6A.js → StaffInfo.vue_vue_type_script_setup_true_lang-Bwj4x1wu.js} +7 -7
- package/dist/{StaffPanel--zKzd4rt.js → StaffPanel-B6I2ZS6A.js} +1 -1
- package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-BWZSIFpq.js → StaffPanel.vue_vue_type_script_setup_true_lang-vbyS4w3V.js} +2 -2
- package/dist/{SysUser-BelbESLR.js → SysUser-B_r9LYc5.js} +2 -2
- package/dist/{SysUserPanel-BixKqQcA.js → SysUserPanel-C4ajcHPV.js} +1 -1
- package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-BhaWZEfo.js → SysUserPanel.vue_vue_type_script_setup_true_lang-8Q0VvC9B.js} +41 -37
- package/dist/{SystemMenu-D40tzcSj.js → SystemMenu-CyPG23uP.js} +10 -10
- package/dist/{UserInfo-DTyk071j.js → UserInfo-BkoGt4ib.js} +1 -1
- package/dist/{UserInfo.vue_vue_type_style_index_0_lang-p9MByikC.js → UserInfo.vue_vue_type_style_index_0_lang-DrzF1YYG.js} +10 -10
- package/dist/{childView-so5qSxr0.js → childView-9vEO8ymO.js} +1 -1
- package/dist/{childView-xL3iE1yN.js → childView-Dh0NyiQe.js} +1 -1
- package/dist/{childView.vue_vue_type_style_index_0_lang-CKcXpSqa.js → childView.vue_vue_type_style_index_0_lang-BOeoZuAK.js} +7 -7
- package/dist/{childView.vue_vue_type_style_index_0_lang-DK1ei5uM.js → childView.vue_vue_type_style_index_0_lang-CMOjfXBX.js} +1 -1
- package/dist/{code-rule-DC35y76w.js → code-rule-C7jI_1gJ.js} +6 -6
- package/dist/core.es.js +17 -12
- package/dist/{cron-task-BhjQ4S68.js → cron-task-Dg9DJXvv.js} +11 -11
- package/dist/{frameView-G_zhG9pf.js → frameView-CeR-_hjB.js} +1 -1
- package/dist/{index-C6ehxLLO.js → index-Bb7gIEvu.js} +739 -496
- package/dist/{layoutView-CO2U8qCQ.js → layoutView-wsLHrEeX.js} +1347 -1346
- package/dist/login-CluzzdqH.js +249 -0
- package/dist/{lov-view-Cr929NMD.js → lov-view-BvQCvwbW.js} +5 -5
- package/dist/{menuInfo-BWuROp7u.js → menuInfo-B8RLelIC.js} +1 -1
- package/dist/{menuInfo.vue_vue_type_style_index_0_lang-9nouHUjO.js → menuInfo.vue_vue_type_style_index_0_lang-DvkapEZr.js} +7 -7
- package/dist/{pda-app-CQP1sMAI.js → pda-app-D3LNmD9a.js} +19 -19
- package/dist/{resource-BDQLrMpK.js → resource-D8JA_03-.js} +7 -7
- package/dist/{su-welcome-CZysrZQ1.js → su-welcome-BjxeEKSo.js} +88 -88
- package/dist/{sys-config-BiGNMYSA.js → sys-config-sbeLk9bP.js} +6 -6
- package/dist/udp-core.css +1 -9
- package/dist/utogether-MlnyYtNS.js +4 -0
- package/index.ts +48 -40
- package/package.json +1 -1
- package/src/App.vue +65 -65
- package/src/components/SuCharts/src/UserInfo.vue +78 -78
- package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
- package/src/components/udp/{grid.vue → grid/index.vue} +27 -24
- package/src/components/udp/index.ts +2 -9
- package/src/components/udp/utils.ts +60 -107
- package/src/layout/components/lay-navbar/index.vue +239 -239
- package/src/layout/components/lay-panel/index.vue +150 -150
- package/src/layout/components/lay-search/index.vue +25 -25
- package/src/layout/components/lay-select-org/index.vue +64 -64
- package/src/layout/components/lay-sidebar/horizontal.vue +190 -190
- package/src/layout/components/lay-sidebar/mixNav.vue +260 -260
- package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -92
- package/src/layout/components/lay-tag/index.vue +20 -48
- package/src/layout/hooks/useNav.ts +173 -173
- package/src/layout/hooks/useTag.ts +223 -233
- package/src/layout/types.ts +3 -2
- package/src/main.ts +117 -113
- package/src/plugins/i18n/en.ts +302 -302
- package/src/plugins/i18n/zh.ts +356 -354
- package/src/plugins/vxe-table/index.ts +116 -53
- package/src/plugins/vxe-table/render.tsx +956 -956
- package/src/router/index.ts +186 -177
- package/src/router/modules/remaining.ts +58 -58
- package/src/router/utils.ts +393 -377
- package/src/store/modules/app.ts +1 -3
- package/src/store/modules/multiTags.ts +110 -109
- package/src/store/modules/permission.ts +113 -100
- package/src/style/button.scss +85 -85
- package/src/style/login.css +1 -1
- package/src/style/vxetable.scss +25 -2
- package/src/utils/index.ts +3 -1
- package/src/views/organization/company/CompanyPanel.vue +259 -259
- package/src/views/organization/department/DepartmentPanel.vue +269 -283
- package/src/views/system/menu/SystemMenu.vue +183 -183
- package/src/views/system/menu/menuInfo.vue +363 -363
- package/src/views/system/role/UserInfo.vue +195 -195
- package/src/views/system/role-assign/RoleAssign.vue +57 -57
- package/src/views/system/role-assign/RolePanel.vue +139 -139
- package/src/views/system/sys/sys-config.vue +336 -336
- package/src/views/system/sysUser/SysUserPanel.vue +279 -278
- package/src/views/uapp/pda/pda-app.vue +208 -208
- package/src/views/udev/dict/DictView.vue +118 -118
- package/src/views/udev/dict/childView.vue +1 -1
- package/src/views/udev/lov/lov-view.vue +91 -91
- package/src/views/ulogin/login.vue +2 -2
- package/src/views/upms/interface/log-out.vue +101 -101
- package/src/views/urpt/design/DesignPanel.vue +507 -507
- package/types/global.d.ts +2 -8
- package/dist/login-DzyK2soP.js +0 -278
- package/dist/utogether-BRirriOz.js +0 -182
- package/src/components/udp/count-down.vue +0 -536
- package/src/components/udp/flip-down/FlipCard/flip-card.vue +0 -251
- package/src/components/udp/flip-down/FlipCard/interfaces.ts +0 -4
- package/src/components/udp/flip-down/FlipClock/flip-clock.vue +0 -113
- package/src/components/udp/form-upload.vue +0 -482
- package/src/components/udp/form.vue +0 -112
- package/src/components/udp/lov.vue +0 -388
- package/src/components/udp/modal-form.vue +0 -190
- package/src/components/udp/modal-grid.vue +0 -298
- package/src/components/udp/upload.vue +0 -423
- package/src/utils/udp/http/index.ts +0 -294
- package/src/utils/udp/http/types.d.ts +0 -49
- package/src/utils/udp/useRender.ts +0 -431
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* @Author:
|
|
3
|
-
* @Date:
|
|
2
|
+
* @Author: wei.li
|
|
3
|
+
* @Date: 2022-06-23 17:29:11
|
|
4
4
|
* @LastEditors: levi7754 levi7754@163.com
|
|
5
|
-
* @LastEditTime: 2025-
|
|
6
|
-
* @
|
|
7
|
-
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
5
|
+
* @LastEditTime: 2025-10-18 11:53:47
|
|
6
|
+
* @Description: file content
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
// @ts-nocheck
|
|
9
|
+
|
|
10
|
+
import { clone, isString, orderBy, isEmpty, toDateString, isObject, isFunction } from 'xe-utils';
|
|
11
|
+
import { cookies, storageLocal } from '@utogether/utils';
|
|
11
12
|
/** 系统配置的key */
|
|
12
13
|
const kSYSCONFIG = 'kSysConfig';
|
|
13
14
|
const kCOOKIES = 'kCookies_param';
|
|
14
15
|
|
|
15
16
|
const sysConfig = storageLocal.getItem(kSYSCONFIG);
|
|
16
17
|
|
|
17
|
-
const renderHook = useRender();
|
|
18
|
-
|
|
19
18
|
/** 工具栏按钮标准化 */
|
|
20
19
|
export const formatButton = (buttons, auth?) => {
|
|
21
20
|
buttons.forEach(btn => {
|
|
22
21
|
btn.auth = auth ? auth[btn.code] || btn.auth : btn.auth;
|
|
23
|
-
debugger;
|
|
24
22
|
if (!btn.name) {
|
|
25
23
|
btn.name = `message.btn.${btn.code}`;
|
|
26
24
|
} else if (sysConfig?.i18nEnabled === 'Y' && !btn.name.startsWith('message.')) {
|
|
@@ -44,7 +42,8 @@ export const queryAll = (props, http, form) => {
|
|
|
44
42
|
const params = { pageNum: 1, pageSize: 100000 };
|
|
45
43
|
const commonParam = getCookieParam();
|
|
46
44
|
Object.assign(params, form, commonParam, props.defaultParams || {});
|
|
47
|
-
|
|
45
|
+
let query = formatMultipleParams(params, props.items);
|
|
46
|
+
query = formatDateRange(query, props.items);
|
|
48
47
|
|
|
49
48
|
const { url } = props;
|
|
50
49
|
if (!url) return null;
|
|
@@ -81,9 +80,9 @@ export const query = (props, form, page, http, isDoc) => {
|
|
|
81
80
|
const params = { pageNum: page.currentPage, pageSize: page.pageSize };
|
|
82
81
|
const commonParam = getCookieParam();
|
|
83
82
|
Object.assign(params, commonParam, props.defaultParams || {}, form);
|
|
84
|
-
|
|
83
|
+
let query = formatMultipleParams(params, props.items);
|
|
84
|
+
query = formatDateRange(query, props.items);
|
|
85
85
|
const { url } = props;
|
|
86
|
-
console.log(query);
|
|
87
86
|
if (!url) return null;
|
|
88
87
|
const requestURL = isString(url) ? url : url.fetch || url.restful;
|
|
89
88
|
const method = url.fetch ? 'post' : 'get';
|
|
@@ -133,28 +132,43 @@ export const save = (http, body, props) => {
|
|
|
133
132
|
return allService;
|
|
134
133
|
};
|
|
135
134
|
|
|
135
|
+
/**
|
|
136
|
+
* 多选数据优化
|
|
137
|
+
* @param listQuery
|
|
138
|
+
* @param items
|
|
139
|
+
* @returns
|
|
140
|
+
*/
|
|
141
|
+
const formatMultipleParams = (listQuery: any, items) => {
|
|
142
|
+
const multipleItems = items.filter(f => f.itemRender?.props?.multiple || f.multiple);
|
|
143
|
+
if (isEmpty(multipleItems)) return listQuery;
|
|
144
|
+
const query = clone(listQuery, true);
|
|
145
|
+
multipleItems.forEach((element: any) => {
|
|
146
|
+
if (element.itemRender.name === '#select') {
|
|
147
|
+
const data = query[`_${element.field}`] || query[`${element.field}`];
|
|
148
|
+
query[element.field] = !isString(data) ? data?.join(',') : data;
|
|
149
|
+
delete query[`_${element.field}`];
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return query;
|
|
153
|
+
};
|
|
154
|
+
|
|
136
155
|
const startFormatter = 'yyyy-MM-dd 00:00:00';
|
|
137
156
|
const endFormatter = 'yyyy-MM-dd 23:59:59';
|
|
157
|
+
// 时间范围优化
|
|
138
158
|
const formatDateRange = (listQuery: any, items) => {
|
|
139
|
-
const dateRanges = items.filter(
|
|
140
|
-
f => f.itemRender?.name === '#SuDateRange' || f.itemRender?.props?.multiple || f.multiple
|
|
141
|
-
);
|
|
159
|
+
const dateRanges = items.filter(f => ['#SuDateRange', 'VxeDateRangePicker'].includes(f.itemRender?.name));
|
|
142
160
|
if (isEmpty(dateRanges)) return listQuery;
|
|
143
161
|
const query = clone(listQuery, true);
|
|
144
162
|
dateRanges.forEach((element: any) => {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
} else if (val) {
|
|
153
|
-
query[`${element.field}From`] = toDateString(val[0], startFormatter);
|
|
154
|
-
query[`${element.field}To`] = toDateString(val[1], endFormatter);
|
|
155
|
-
}
|
|
156
|
-
delete query[element.field];
|
|
163
|
+
const val = query[element.field];
|
|
164
|
+
if (val && element.itemRender.startField) {
|
|
165
|
+
query[element.itemRender.startField] = toDateString(query[element.itemRender.startField], startFormatter);
|
|
166
|
+
query[element.itemRender.endField] = toDateString(query[element.itemRender.endField], endFormatter);
|
|
167
|
+
} else if (val) {
|
|
168
|
+
query[`${element.field}From`] = toDateString(val[0], startFormatter);
|
|
169
|
+
query[`${element.field}To`] = toDateString(val[1], endFormatter);
|
|
157
170
|
}
|
|
171
|
+
delete query[element.field];
|
|
158
172
|
});
|
|
159
173
|
return query;
|
|
160
174
|
};
|
|
@@ -170,19 +184,22 @@ export const inlineButtons = [
|
|
|
170
184
|
name: 'add',
|
|
171
185
|
status: 'u-cyan',
|
|
172
186
|
icon: 'vxe-icon-add',
|
|
173
|
-
auth: 'add'
|
|
187
|
+
auth: 'add',
|
|
188
|
+
sort: 1
|
|
174
189
|
},
|
|
175
190
|
{
|
|
176
191
|
code: 'delete',
|
|
177
192
|
status: 'danger',
|
|
178
193
|
icon: 'vxe-icon-delete',
|
|
179
|
-
auth: 'del'
|
|
194
|
+
auth: 'del',
|
|
195
|
+
sort: 2
|
|
180
196
|
},
|
|
181
197
|
{
|
|
182
198
|
code: 'save',
|
|
183
199
|
status: 'primary',
|
|
184
200
|
icon: 'vxe-icon-save',
|
|
185
|
-
auth: 'edit'
|
|
201
|
+
auth: 'edit',
|
|
202
|
+
sort: 3
|
|
186
203
|
}
|
|
187
204
|
];
|
|
188
205
|
// form 模式按钮
|
|
@@ -191,13 +208,15 @@ export const dialogButtons = [
|
|
|
191
208
|
code: 'add',
|
|
192
209
|
status: 'u-cyan',
|
|
193
210
|
icon: 'vxe-icon-add',
|
|
194
|
-
auth: 'add'
|
|
211
|
+
auth: 'add',
|
|
212
|
+
sort: 1
|
|
195
213
|
},
|
|
196
214
|
{
|
|
197
|
-
code: '
|
|
215
|
+
code: 'del',
|
|
198
216
|
status: 'danger',
|
|
199
217
|
icon: 'vxe-icon-delete',
|
|
200
|
-
auth: 'del'
|
|
218
|
+
auth: 'del',
|
|
219
|
+
sort: 2
|
|
201
220
|
}
|
|
202
221
|
];
|
|
203
222
|
|
|
@@ -228,10 +247,8 @@ export const getExportConfig = attrs => {
|
|
|
228
247
|
export const getToolBarConfig = (data, props, attrs, hasAuthority) => {
|
|
229
248
|
const refreshOptions = {
|
|
230
249
|
icon: 'ri-refresh-line',
|
|
231
|
-
code: 'query',
|
|
232
250
|
iconLoading: 'vxe-icon-spinner roll vxe-loading--default-icon'
|
|
233
251
|
};
|
|
234
|
-
debugger;
|
|
235
252
|
// 不可编辑时
|
|
236
253
|
if (!props.editable) {
|
|
237
254
|
data.editConfig.editable = props.editable;
|
|
@@ -255,6 +272,10 @@ export const getToolBarConfig = (data, props, attrs, hasAuthority) => {
|
|
|
255
272
|
// 先设置传入的按钮
|
|
256
273
|
let buttons = clone(attrs.buttons || [], true);
|
|
257
274
|
|
|
275
|
+
buttons.forEach((button, idx) => {
|
|
276
|
+
button.sort = button.sort || idx + 10;
|
|
277
|
+
});
|
|
278
|
+
|
|
258
279
|
// 获取默认的按钮
|
|
259
280
|
const toolButtons = attrs.mode !== 'form' ? clone(inlineButtons, true) : clone(dialogButtons, true);
|
|
260
281
|
// 判断传入的按钮是否有默认按钮的auth,有就不加入按钮组中,相当于重写了默认的按钮
|
|
@@ -284,11 +305,12 @@ export const getToolBarConfig = (data, props, attrs, hasAuthority) => {
|
|
|
284
305
|
exportBtn = { icon: 'ri-download-2-line', code: 'export' };
|
|
285
306
|
}
|
|
286
307
|
data.toolbarConfig = {
|
|
287
|
-
buttons,
|
|
308
|
+
buttons: orderBy(buttons, 'sort'),
|
|
288
309
|
enabled: true,
|
|
289
310
|
refreshOptions,
|
|
290
|
-
|
|
311
|
+
customOptions: attrs.gridId ? {} : null,
|
|
291
312
|
exportOptions: exportBtn,
|
|
313
|
+
custom: !!attrs.gridId,
|
|
292
314
|
export: hasExport,
|
|
293
315
|
refresh: true,
|
|
294
316
|
perfect: true
|
|
@@ -380,72 +402,3 @@ export const getAttrs = attrs => {
|
|
|
380
402
|
});
|
|
381
403
|
return data;
|
|
382
404
|
};
|
|
383
|
-
|
|
384
|
-
export const formatItems = (items, status, t, span = 24) => {
|
|
385
|
-
if (!items.length) return items;
|
|
386
|
-
return items.map(item => {
|
|
387
|
-
if (item.children?.length) {
|
|
388
|
-
item.children = formatItems(item.children, status, t, span);
|
|
389
|
-
return item;
|
|
390
|
-
} else {
|
|
391
|
-
item.title = item.title || `message.${item.field}`;
|
|
392
|
-
item.span = item.span || span;
|
|
393
|
-
if (item.type === 'collapseNode') {
|
|
394
|
-
// 折叠项目,title和宽度不需要
|
|
395
|
-
item.title = '';
|
|
396
|
-
item.titleWidth = 0;
|
|
397
|
-
}
|
|
398
|
-
let disabled = false;
|
|
399
|
-
let placeholder = t(`message.udp.placeholder`) + t(item.title);
|
|
400
|
-
if (status === 'detail') {
|
|
401
|
-
disabled = true;
|
|
402
|
-
placeholder = '';
|
|
403
|
-
} else {
|
|
404
|
-
disabled = item.disabled === false ? item.disabled : item.disabled || item.itemRender?.props?.disabled;
|
|
405
|
-
}
|
|
406
|
-
let itemRender = {
|
|
407
|
-
name: 'VxeInput',
|
|
408
|
-
props: { disabled, placeholder: disabled ? '' : placeholder }
|
|
409
|
-
};
|
|
410
|
-
if (item.code && !item.itemRender) {
|
|
411
|
-
itemRender = renderHook.renderDict(item.code);
|
|
412
|
-
}
|
|
413
|
-
item.itemRender = item.itemRender || itemRender;
|
|
414
|
-
|
|
415
|
-
item.itemRender['props'] = Object.assign(item.itemRender.props || {}, {
|
|
416
|
-
disabled,
|
|
417
|
-
placeholder: disabled ? '' : placeholder
|
|
418
|
-
});
|
|
419
|
-
console.log('--------------', { item });
|
|
420
|
-
return item;
|
|
421
|
-
}
|
|
422
|
-
});
|
|
423
|
-
};
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* @description: 标准化必填数据
|
|
427
|
-
* @param {*} records 数据列表
|
|
428
|
-
* @param {*} t i18n对象
|
|
429
|
-
* @return {*} rule数据
|
|
430
|
-
*/
|
|
431
|
-
export const formatRules = (records, t) => {
|
|
432
|
-
const rule = {};
|
|
433
|
-
records.forEach(item => {
|
|
434
|
-
if (item.children?.length) {
|
|
435
|
-
const subRuls = formatRules(item.children, t);
|
|
436
|
-
merge(rule, subRuls);
|
|
437
|
-
} else {
|
|
438
|
-
if (item.required) {
|
|
439
|
-
const { field, title } = item;
|
|
440
|
-
const i18n = title?.startsWith('message.');
|
|
441
|
-
rule[field] = [
|
|
442
|
-
{
|
|
443
|
-
required: true,
|
|
444
|
-
message: `${t('message.required')}${title && i18n ? t(title) : title || t(`message.${field}`)}`
|
|
445
|
-
}
|
|
446
|
-
];
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
});
|
|
450
|
-
return rule;
|
|
451
|
-
};
|