@utogether/udp-core 1.0.1-beta.16 → 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.
Files changed (122) hide show
  1. package/build/plugins.ts +39 -39
  2. package/dist/{403-RBzulrcG.js → 403-C3cfjZIT.js} +1 -1
  3. package/dist/{404-DX-dU_6C.js → 404-Bg3j7QIo.js} +1 -1
  4. package/dist/{500-BCTk0__d.js → 500-CMT7Zyy7.js} +1 -1
  5. package/dist/{AuthorityInfo-BADTOenq.js → AuthorityInfo-B1mvqs4x.js} +1 -1
  6. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-Cv46yAx_.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DwoW7QWO.js} +1 -1
  7. package/dist/{Company-B-61KrWd.js → Company-qTguidK8.js} +3 -3
  8. package/dist/{CompanyPanel-CawSrEff.js → CompanyPanel-BBC-o-k3.js} +8 -8
  9. package/dist/{Department-CrzJPtvP.js → Department-C3mKZOnK.js} +3 -3
  10. package/dist/{DepartmentPanel-DYuL8H-j.js → DepartmentPanel-CNdpOHBT.js} +3 -3
  11. package/dist/{DesignPanel-DEAv6V68.js → DesignPanel-D9jrRCoG.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BsnXZ2td.js → DesignPanel.vue_vue_type_style_index_0_lang-A-Aj1Hl0.js} +2 -2
  13. package/dist/{DictView-BuO-2b-c.js → DictView-CgdVkSiP.js} +1 -1
  14. package/dist/{InvOrganization-CBgKBJAn.js → InvOrganization-RE7s3vBq.js} +1 -1
  15. package/dist/{Org-BaQw2r-o.js → Org-wXDGvTrS.js} +1 -1
  16. package/dist/{Preview-DvCrmKNk.js → Preview-Pvt1__BV.js} +1 -1
  17. package/dist/{ReportDefine-DyhWz0as.js → ReportDefine-xEQsgFyv.js} +1 -1
  18. package/dist/{ReportDesign-DgZ2f2zv.js → ReportDesign-jOSuEFH9.js} +2 -2
  19. package/dist/{ReportQuery-DTZYbCDi.js → ReportQuery-DxEmmGiN.js} +1 -1
  20. package/dist/{ReportQueryFrom-B-vtJegP.js → ReportQueryFrom-CFlxfS5M.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-D6izgxph.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-iHpiYz8f.js} +1 -1
  22. package/dist/{ReportTemplate-DA1ZqKGf.js → ReportTemplate-Dtz3aet7.js} +1 -1
  23. package/dist/{Role-mbqoav5t.js → Role-B_NsHIyE.js} +3 -3
  24. package/dist/{RoleAssign-ltEJIEcr.js → RoleAssign-C9wm4zq4.js} +8 -8
  25. package/dist/{RolePanel-u90v9eS0.js → RolePanel-BlHidBR0.js} +1 -1
  26. package/dist/{RolePanel-1g1a-G8D.js → RolePanel-DWM9mfNs.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-D9YxpGnt.js → RolePanel.vue_vue_type_script_setup_true_lang-Cn4RRzXm.js} +1 -1
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-LC4Egk-Q.js → RolePanel.vue_vue_type_script_setup_true_lang-DVQ9aqb1.js} +3 -3
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-DZ3W1epK.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCm-_i8O.js} +1 -1
  30. package/dist/{Staff-CJ2GgCL3.js → Staff-BfDc61QS.js} +3 -3
  31. package/dist/{StaffInfo-3KkodDCK.js → StaffInfo-BaJFo4mg.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-CW-isIxJ.js → StaffInfo.vue_vue_type_script_setup_true_lang-Bwj4x1wu.js} +1 -1
  33. package/dist/{StaffPanel-DoXPSoY5.js → StaffPanel-B6I2ZS6A.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-DvhGnOMZ.js → StaffPanel.vue_vue_type_script_setup_true_lang-vbyS4w3V.js} +2 -2
  35. package/dist/{SysUser-BuIZhMPh.js → SysUser-B_r9LYc5.js} +2 -2
  36. package/dist/{SysUserPanel-t1GJcJGM.js → SysUserPanel-C4ajcHPV.js} +1 -1
  37. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-CDDkFLlN.js → SysUserPanel.vue_vue_type_script_setup_true_lang-8Q0VvC9B.js} +43 -39
  38. package/dist/{SystemMenu-DuLEL6_l.js → SystemMenu-CyPG23uP.js} +2 -2
  39. package/dist/{UserInfo-WWby4lts.js → UserInfo-BkoGt4ib.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-B06ZSrJV.js → UserInfo.vue_vue_type_style_index_0_lang-DrzF1YYG.js} +1 -1
  41. package/dist/{childView-B0-EAoAi.js → childView-9vEO8ymO.js} +1 -1
  42. package/dist/{childView-IYY4L8VK.js → childView-Dh0NyiQe.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-CjF8nZuj.js → childView.vue_vue_type_style_index_0_lang-BOeoZuAK.js} +2 -2
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-B56v6yK7.js → childView.vue_vue_type_style_index_0_lang-CMOjfXBX.js} +1 -1
  45. package/dist/{code-rule-DDLdi3pP.js → code-rule-C7jI_1gJ.js} +1 -1
  46. package/dist/core.es.js +1 -1
  47. package/dist/{cron-task-p3-AFN1w.js → cron-task-Dg9DJXvv.js} +1 -1
  48. package/dist/{frameView-B_WAZErD.js → frameView-CeR-_hjB.js} +1 -1
  49. package/dist/{index-24fnvUBy.js → index-Bb7gIEvu.js} +611 -569
  50. package/dist/{layoutView-CoEp2afn.js → layoutView-wsLHrEeX.js} +1340 -1337
  51. package/dist/{login-DP0oP70W.js → login-CluzzdqH.js} +2 -2
  52. package/dist/{lov-view-BDoZRK-v.js → lov-view-BvQCvwbW.js} +2 -2
  53. package/dist/{menuInfo-5Xls76qB.js → menuInfo-B8RLelIC.js} +1 -1
  54. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BfZczW9a.js → menuInfo.vue_vue_type_style_index_0_lang-DvkapEZr.js} +1 -1
  55. package/dist/{pda-app-DxGYn4G7.js → pda-app-D3LNmD9a.js} +2 -2
  56. package/dist/{resource-BnYWe_-Q.js → resource-D8JA_03-.js} +1 -1
  57. package/dist/{su-welcome-B2rNhhDH.js → su-welcome-BjxeEKSo.js} +1 -1
  58. package/dist/{sys-config-Bb4WkxZK.js → sys-config-sbeLk9bP.js} +1 -1
  59. package/dist/udp-core.css +1 -9
  60. package/index.ts +48 -48
  61. package/package.json +1 -1
  62. package/src/App.vue +65 -65
  63. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  64. package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
  65. package/src/components/udp/{grid.vue → grid/index.vue} +27 -24
  66. package/src/components/udp/index.ts +2 -9
  67. package/src/components/udp/utils.ts +60 -107
  68. package/src/layout/components/lay-navbar/index.vue +239 -239
  69. package/src/layout/components/lay-panel/index.vue +150 -150
  70. package/src/layout/components/lay-search/index.vue +25 -25
  71. package/src/layout/components/lay-select-org/index.vue +64 -64
  72. package/src/layout/components/lay-sidebar/horizontal.vue +190 -190
  73. package/src/layout/components/lay-sidebar/mixNav.vue +260 -260
  74. package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -92
  75. package/src/layout/components/lay-tag/index.vue +20 -48
  76. package/src/layout/hooks/useNav.ts +173 -173
  77. package/src/layout/hooks/useTag.ts +5 -3
  78. package/src/layout/types.ts +3 -2
  79. package/src/main.ts +9 -6
  80. package/src/plugins/i18n/en.ts +302 -302
  81. package/src/plugins/i18n/zh.ts +356 -354
  82. package/src/plugins/vxe-table/index.ts +116 -53
  83. package/src/plugins/vxe-table/render.tsx +956 -956
  84. package/src/router/index.ts +186 -177
  85. package/src/router/modules/remaining.ts +58 -58
  86. package/src/router/utils.ts +393 -377
  87. package/src/store/modules/app.ts +1 -3
  88. package/src/store/modules/multiTags.ts +110 -109
  89. package/src/store/modules/permission.ts +113 -100
  90. package/src/style/button.scss +85 -85
  91. package/src/style/login.css +336 -336
  92. package/src/style/vxetable.scss +13 -3
  93. package/src/views/organization/company/CompanyPanel.vue +259 -259
  94. package/src/views/organization/department/DepartmentPanel.vue +269 -283
  95. package/src/views/system/menu/SystemMenu.vue +183 -183
  96. package/src/views/system/menu/menuInfo.vue +363 -363
  97. package/src/views/system/role/UserInfo.vue +195 -195
  98. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  99. package/src/views/system/role-assign/RolePanel.vue +139 -139
  100. package/src/views/system/sys/sys-config.vue +336 -336
  101. package/src/views/system/sysUser/SysUserPanel.vue +279 -278
  102. package/src/views/uapp/pda/pda-app.vue +208 -208
  103. package/src/views/udev/dict/DictView.vue +118 -118
  104. package/src/views/udev/dict/childView.vue +1 -1
  105. package/src/views/udev/lov/lov-view.vue +91 -91
  106. package/src/views/ulogin/login.vue +323 -323
  107. package/src/views/upms/interface/log-out.vue +101 -101
  108. package/src/views/urpt/design/DesignPanel.vue +507 -507
  109. package/types/global.d.ts +230 -230
  110. package/src/components/udp/count-down.vue +0 -536
  111. package/src/components/udp/flip-down/FlipCard/flip-card.vue +0 -251
  112. package/src/components/udp/flip-down/FlipCard/interfaces.ts +0 -4
  113. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +0 -113
  114. package/src/components/udp/form-upload.vue +0 -482
  115. package/src/components/udp/form.vue +0 -112
  116. package/src/components/udp/lov.vue +0 -388
  117. package/src/components/udp/modal-form.vue +0 -190
  118. package/src/components/udp/modal-grid.vue +0 -298
  119. package/src/components/udp/upload.vue +0 -423
  120. package/src/utils/udp/http/index.ts +0 -294
  121. package/src/utils/udp/http/types.d.ts +0 -49
  122. package/src/utils/udp/useRender.ts +0 -431
@@ -1,26 +1,24 @@
1
1
  /*
2
- * @Author: levi7754 levi7754@163.com
3
- * @Date: 2025-07-14 17:38:38
2
+ * @Author: wei.li
3
+ * @Date: 2022-06-23 17:29:11
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-09-10 15:38:34
6
- * @FilePath: \udp-front\packages\udp-core\src\components\udp\utils.ts
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
- import { clone, isString, isEmpty, toDateString, isObject, isFunction, merge } from 'xe-utils';
10
- import { cookies, storageLocal, useRender } from '@utogether/utils';
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
- const query = formatDateRange(params, props.items);
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
- const query = formatDateRange(params, props.items);
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
- if (element.multiple || element.itemRender?.props?.multiple) {
146
- query[element.field] = query[element.field]?.join(',');
147
- } else {
148
- const val = query[element.field];
149
- if (val && element.toField) {
150
- query[element.fromField] = toDateString(val[0], startFormatter);
151
- query[element.toField] = toDateString(val[1], endFormatter);
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: 'delete',
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
- custom: !!attrs.gridId,
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
- };