@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.
Files changed (126) hide show
  1. package/build/plugins.ts +39 -39
  2. package/dist/{403-DpJevH-h.js → 403-C3cfjZIT.js} +1 -1
  3. package/dist/{404-BpqJK3YD.js → 404-Bg3j7QIo.js} +1 -1
  4. package/dist/{500-DyvRbMD_.js → 500-CMT7Zyy7.js} +1 -1
  5. package/dist/{AuthorityInfo-Cyu4XHXx.js → AuthorityInfo-B1mvqs4x.js} +1 -1
  6. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BxmnEEFq.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DwoW7QWO.js} +3 -3
  7. package/dist/{Company-BLygcYrI.js → Company-qTguidK8.js} +3 -3
  8. package/dist/{CompanyPanel-D5Tgw6LF.js → CompanyPanel-BBC-o-k3.js} +17 -17
  9. package/dist/{Department-qI9OninZ.js → Department-C3mKZOnK.js} +3 -3
  10. package/dist/{DepartmentPanel-P-P8fPZQ.js → DepartmentPanel-CNdpOHBT.js} +25 -25
  11. package/dist/{DesignPanel-BxjD0AZi.js → DesignPanel-D9jrRCoG.js} +1 -1
  12. 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
  13. package/dist/{DictView-PWL_Vf0T.js → DictView-CgdVkSiP.js} +15 -16
  14. package/dist/{InvOrganization-JXBXyn3G.js → InvOrganization-RE7s3vBq.js} +1 -1
  15. package/dist/{Org-DcTJn6YQ.js → Org-wXDGvTrS.js} +3 -3
  16. package/dist/{Preview-IKvbHI8a.js → Preview-Pvt1__BV.js} +1 -1
  17. package/dist/{ReportDefine-_G7ts7Ch.js → ReportDefine-xEQsgFyv.js} +1 -1
  18. package/dist/{ReportDesign-7h5oFklh.js → ReportDesign-jOSuEFH9.js} +9 -9
  19. package/dist/{ReportQuery-dj0BQUyi.js → ReportQuery-DxEmmGiN.js} +1 -1
  20. package/dist/{ReportQueryFrom-6WaZPg9i.js → ReportQueryFrom-CFlxfS5M.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-ChhcBPqa.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-iHpiYz8f.js} +1 -1
  22. package/dist/{ReportTemplate-DIvJ3RrB.js → ReportTemplate-Dtz3aet7.js} +11 -11
  23. package/dist/{Role-ia_3qAZU.js → Role-B_NsHIyE.js} +3 -3
  24. package/dist/{RoleAssign-D0zVl4y3.js → RoleAssign-C9wm4zq4.js} +8 -8
  25. package/dist/{RolePanel-CQxOiAzj.js → RolePanel-BlHidBR0.js} +1 -1
  26. package/dist/{RolePanel-BiGGmP2w.js → RolePanel-DWM9mfNs.js} +1 -1
  27. 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
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Dwv5LFbf.js → RolePanel.vue_vue_type_script_setup_true_lang-DVQ9aqb1.js} +9 -9
  29. 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
  30. package/dist/{Staff-Bf_oUqF6.js → Staff-BfDc61QS.js} +3 -3
  31. package/dist/{StaffInfo-D5aisjx2.js → StaffInfo-BaJFo4mg.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-6PX7Bx6A.js → StaffInfo.vue_vue_type_script_setup_true_lang-Bwj4x1wu.js} +7 -7
  33. package/dist/{StaffPanel--zKzd4rt.js → StaffPanel-B6I2ZS6A.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-BWZSIFpq.js → StaffPanel.vue_vue_type_script_setup_true_lang-vbyS4w3V.js} +2 -2
  35. package/dist/{SysUser-BelbESLR.js → SysUser-B_r9LYc5.js} +2 -2
  36. package/dist/{SysUserPanel-BixKqQcA.js → SysUserPanel-C4ajcHPV.js} +1 -1
  37. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-BhaWZEfo.js → SysUserPanel.vue_vue_type_script_setup_true_lang-8Q0VvC9B.js} +41 -37
  38. package/dist/{SystemMenu-D40tzcSj.js → SystemMenu-CyPG23uP.js} +10 -10
  39. package/dist/{UserInfo-DTyk071j.js → UserInfo-BkoGt4ib.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-p9MByikC.js → UserInfo.vue_vue_type_style_index_0_lang-DrzF1YYG.js} +10 -10
  41. package/dist/{childView-so5qSxr0.js → childView-9vEO8ymO.js} +1 -1
  42. package/dist/{childView-xL3iE1yN.js → childView-Dh0NyiQe.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-CKcXpSqa.js → childView.vue_vue_type_style_index_0_lang-BOeoZuAK.js} +7 -7
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-DK1ei5uM.js → childView.vue_vue_type_style_index_0_lang-CMOjfXBX.js} +1 -1
  45. package/dist/{code-rule-DC35y76w.js → code-rule-C7jI_1gJ.js} +6 -6
  46. package/dist/core.es.js +17 -12
  47. package/dist/{cron-task-BhjQ4S68.js → cron-task-Dg9DJXvv.js} +11 -11
  48. package/dist/{frameView-G_zhG9pf.js → frameView-CeR-_hjB.js} +1 -1
  49. package/dist/{index-C6ehxLLO.js → index-Bb7gIEvu.js} +739 -496
  50. package/dist/{layoutView-CO2U8qCQ.js → layoutView-wsLHrEeX.js} +1347 -1346
  51. package/dist/login-CluzzdqH.js +249 -0
  52. package/dist/{lov-view-Cr929NMD.js → lov-view-BvQCvwbW.js} +5 -5
  53. package/dist/{menuInfo-BWuROp7u.js → menuInfo-B8RLelIC.js} +1 -1
  54. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-9nouHUjO.js → menuInfo.vue_vue_type_style_index_0_lang-DvkapEZr.js} +7 -7
  55. package/dist/{pda-app-CQP1sMAI.js → pda-app-D3LNmD9a.js} +19 -19
  56. package/dist/{resource-BDQLrMpK.js → resource-D8JA_03-.js} +7 -7
  57. package/dist/{su-welcome-CZysrZQ1.js → su-welcome-BjxeEKSo.js} +88 -88
  58. package/dist/{sys-config-BiGNMYSA.js → sys-config-sbeLk9bP.js} +6 -6
  59. package/dist/udp-core.css +1 -9
  60. package/dist/utogether-MlnyYtNS.js +4 -0
  61. package/index.ts +48 -40
  62. package/package.json +1 -1
  63. package/src/App.vue +65 -65
  64. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  65. package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
  66. package/src/components/udp/{grid.vue → grid/index.vue} +27 -24
  67. package/src/components/udp/index.ts +2 -9
  68. package/src/components/udp/utils.ts +60 -107
  69. package/src/layout/components/lay-navbar/index.vue +239 -239
  70. package/src/layout/components/lay-panel/index.vue +150 -150
  71. package/src/layout/components/lay-search/index.vue +25 -25
  72. package/src/layout/components/lay-select-org/index.vue +64 -64
  73. package/src/layout/components/lay-sidebar/horizontal.vue +190 -190
  74. package/src/layout/components/lay-sidebar/mixNav.vue +260 -260
  75. package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -92
  76. package/src/layout/components/lay-tag/index.vue +20 -48
  77. package/src/layout/hooks/useNav.ts +173 -173
  78. package/src/layout/hooks/useTag.ts +223 -233
  79. package/src/layout/types.ts +3 -2
  80. package/src/main.ts +117 -113
  81. package/src/plugins/i18n/en.ts +302 -302
  82. package/src/plugins/i18n/zh.ts +356 -354
  83. package/src/plugins/vxe-table/index.ts +116 -53
  84. package/src/plugins/vxe-table/render.tsx +956 -956
  85. package/src/router/index.ts +186 -177
  86. package/src/router/modules/remaining.ts +58 -58
  87. package/src/router/utils.ts +393 -377
  88. package/src/store/modules/app.ts +1 -3
  89. package/src/store/modules/multiTags.ts +110 -109
  90. package/src/store/modules/permission.ts +113 -100
  91. package/src/style/button.scss +85 -85
  92. package/src/style/login.css +1 -1
  93. package/src/style/vxetable.scss +25 -2
  94. package/src/utils/index.ts +3 -1
  95. package/src/views/organization/company/CompanyPanel.vue +259 -259
  96. package/src/views/organization/department/DepartmentPanel.vue +269 -283
  97. package/src/views/system/menu/SystemMenu.vue +183 -183
  98. package/src/views/system/menu/menuInfo.vue +363 -363
  99. package/src/views/system/role/UserInfo.vue +195 -195
  100. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  101. package/src/views/system/role-assign/RolePanel.vue +139 -139
  102. package/src/views/system/sys/sys-config.vue +336 -336
  103. package/src/views/system/sysUser/SysUserPanel.vue +279 -278
  104. package/src/views/uapp/pda/pda-app.vue +208 -208
  105. package/src/views/udev/dict/DictView.vue +118 -118
  106. package/src/views/udev/dict/childView.vue +1 -1
  107. package/src/views/udev/lov/lov-view.vue +91 -91
  108. package/src/views/ulogin/login.vue +2 -2
  109. package/src/views/upms/interface/log-out.vue +101 -101
  110. package/src/views/urpt/design/DesignPanel.vue +507 -507
  111. package/types/global.d.ts +2 -8
  112. package/dist/login-DzyK2soP.js +0 -278
  113. package/dist/utogether-BRirriOz.js +0 -182
  114. package/src/components/udp/count-down.vue +0 -536
  115. package/src/components/udp/flip-down/FlipCard/flip-card.vue +0 -251
  116. package/src/components/udp/flip-down/FlipCard/interfaces.ts +0 -4
  117. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +0 -113
  118. package/src/components/udp/form-upload.vue +0 -482
  119. package/src/components/udp/form.vue +0 -112
  120. package/src/components/udp/lov.vue +0 -388
  121. package/src/components/udp/modal-form.vue +0 -190
  122. package/src/components/udp/modal-grid.vue +0 -298
  123. package/src/components/udp/upload.vue +0 -423
  124. package/src/utils/udp/http/index.ts +0 -294
  125. package/src/utils/udp/http/types.d.ts +0 -49
  126. 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
- };