@utogether/udp-core 2.0.0-beta.1 → 2.0.0-beta.3

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 (182) hide show
  1. package/dist/{403-CTJDBjz7.js → 403-CxOqlq0f.js} +3 -3
  2. package/dist/403-WCboRvzZ-ZAPgYStl.js +65 -0
  3. package/dist/404-2V0Qi-d7-DkNwQggp.js +65 -0
  4. package/dist/{404-BFYkWIkQ.js → 404-xdB6lFeQ.js} +1 -1
  5. package/dist/500-BYfzvixf-CGpEieyQ.js +67 -0
  6. package/dist/{500-DGG3qadg.js → 500-C94bRK2S.js} +2 -2
  7. package/dist/AuthorityInfo-DBovfUjB-DpQwT9Q5.js +4 -0
  8. package/dist/{AuthorityInfo-ozZIo1Te.js → AuthorityInfo-Dy3b_nFN.js} +1 -1
  9. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-DujerENw.js → AuthorityInfo.vue_vue_type_style_index_0_lang-Bh7IbcdY.js} +2 -2
  10. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-D-l_Az3s-Cw7WmFxz.js +100 -0
  11. package/dist/AuthorityPanel-CRlAwbaI-G7pZXKdE.js +4 -0
  12. package/dist/AuthorityPanel.vue_vue_type_style_index_0_lang-DxhZjp1S-CJvk3pW8.js +114 -0
  13. package/dist/Company-B4vsXy2I-CkNCOqjJ.js +25 -0
  14. package/dist/{Company-6VJtwh23.js → Company-gKkfnhLt.js} +3 -3
  15. package/dist/{CompanyPanel-B2P488mq.js → CompanyPanel-BF5Pc35s.js} +7 -7
  16. package/dist/CompanyPanel-Czcx8Gyw-CvndXwB_.js +206 -0
  17. package/dist/DataSet-DT-rGICv-DaUfgbxk.js +147 -0
  18. package/dist/{Department-BnwoLEOC.js → Department-D0I3QVZe.js} +3 -3
  19. package/dist/Department-D0dVUrGC-C6HJcYI1.js +25 -0
  20. package/dist/{DepartmentPanel-CRrrmxtv.js → DepartmentPanel-2LHODgc7.js} +22 -22
  21. package/dist/DepartmentPanel-e91Lxr1j-BS_A-ILd.js +254 -0
  22. package/dist/{DesignPanel-CvbccgX2.js → DesignPanel-CtF3cAAQ.js} +1 -1
  23. package/dist/DesignPanel-DdFl_ohi-uCwFxcl1.js +4 -0
  24. package/dist/DesignPanel.vue_vue_type_style_index_0_lang-BACPrfUI-cC7yL0uY.js +1013 -0
  25. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-Dz2tUszs.js → DesignPanel.vue_vue_type_style_index_0_lang-BCYgwoVt.js} +3 -3
  26. package/dist/DictView-BzQLOf_P-DDicwdmM.js +111 -0
  27. package/dist/{DictView-Ce1LoVHh.js → DictView-H3V5hxg3.js} +1 -1
  28. package/dist/{InvOrganization-BwCFZO1X.js → InvOrganization-BiGLnbqe.js} +2 -2
  29. package/dist/InvOrganization-atbhw0CI-BABbVt9V.js +74 -0
  30. package/dist/Org-BW1YHG-Q-Cow7JWlD.js +39 -0
  31. package/dist/{Org-0hzs6b0R.js → Org-DQTCQHNY.js} +2 -2
  32. package/dist/Preview-DJtVsoq1-CCGidQjJ.js +48 -0
  33. package/dist/{Preview--DnEAhwh.js → Preview-DXaiis29.js} +1 -1
  34. package/dist/{ReportDefine-Cu983bTN.js → ReportDefine-BLh4CiER.js} +1 -1
  35. package/dist/ReportDefine-CNx_ob99-6NQAHK-Q.js +10 -0
  36. package/dist/ReportDesign-FbQ6yTJS-C1pPAUSp.js +165 -0
  37. package/dist/{ReportDesign-QsWXXgvo.js → ReportDesign-Ni1YxrLC.js} +7 -7
  38. package/dist/ReportQuery-C5gz8Lgd-Eu2cQmda.js +75 -0
  39. package/dist/{ReportQuery-BjKIIhPu.js → ReportQuery-C8G88_qF.js} +1 -1
  40. package/dist/ReportQueryFrom-C7scua5v-uHXWq8Gy.js +4 -0
  41. package/dist/{ReportQueryFrom-DIjBO6Fx.js → ReportQueryFrom-CuZKPtB4.js} +1 -1
  42. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-0T62cUMK.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-BAn_siFW.js} +7 -7
  43. package/dist/ReportQueryFrom.vue_vue_type_style_index_0_lang-DCbz67Wa-vK6r2uCl.js +178 -0
  44. package/dist/ReportTemplate-BDANdIWv-D_IGjR1w.js +161 -0
  45. package/dist/{ReportTemplate-2uk9tJcy.js → ReportTemplate-DFnDXWmx.js} +8 -8
  46. package/dist/{Role-_QP8QEaI.js → Role-BQ7hsfPn.js} +3 -3
  47. package/dist/Role-ByB0WbxW-5E8Mb148.js +25 -0
  48. package/dist/RoleAssign-DW6iC_0v-Bis61auk.js +26 -0
  49. package/dist/{RoleAssign-C2gkcmEQ.js → RoleAssign-UPCg2d4G.js} +3 -3
  50. package/dist/RolePanel-BM2MaQPU-CgcsbfaX.js +4 -0
  51. package/dist/{RolePanel-vnl_lXNY.js → RolePanel-C-mQ5XRq.js} +1 -1
  52. package/dist/RolePanel-ClQy8DBL-DARL4O-o.js +4 -0
  53. package/dist/{RolePanel-B8FPNGaA.js → RolePanel-CoSXOCZN.js} +1 -1
  54. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-Bc_Ao_PU-DMmxr2iI.js +132 -0
  55. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-bxHXrBYl.js → RolePanel.vue_vue_type_script_setup_true_lang-Bg-t2UhF.js} +7 -7
  56. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BuQbYEEI.js → RolePanel.vue_vue_type_script_setup_true_lang-D-o7HYZ8.js} +8 -8
  57. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-fthF1zkp-JsbQJoDy.js +154 -0
  58. package/dist/ScrollPanel.vue_vue_type_style_index_0_lang-ByWIwajm-BsBf2Vs3.js +100 -0
  59. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-C6yZXBqB.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCsoxDfk.js} +1 -1
  60. package/dist/Staff-CuxzvhD9-D0KTcyRh.js +25 -0
  61. package/dist/{Staff-CHWrMIEb.js → Staff-D-CmvG1R.js} +3 -3
  62. package/dist/StaffInfo-CY7gUICu-EZUhUwIp.js +4 -0
  63. package/dist/{StaffInfo-Cpq2eayz.js → StaffInfo-Idhvuc6e.js} +1 -1
  64. package/dist/StaffInfo.vue_vue_type_script_setup_true_lang-Dd8gtQz8-Dlkt-eCn.js +108 -0
  65. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-BVCjF2i1.js → StaffInfo.vue_vue_type_script_setup_true_lang-MUGKjnHU.js} +1 -1
  66. package/dist/{StaffPanel-D2BMXt5p.js → StaffPanel-CDDmAYE5.js} +1 -1
  67. package/dist/StaffPanel-CwqG0_xr-CrvzLJoc.js +4 -0
  68. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-B6jAGo-g.js → StaffPanel.vue_vue_type_script_setup_true_lang-Bdilqbee.js} +42 -42
  69. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-DCdBy8Hu-BXrueqi0.js +143 -0
  70. package/dist/SysUser-9Q2UJWhi-DprWXFlR.js +15 -0
  71. package/dist/{SysUser-om6H1BeC.js → SysUser-a-j5bppr.js} +2 -2
  72. package/dist/{SysUserPanel-CH0HPP7h.js → SysUserPanel-6V232wwB.js} +1 -1
  73. package/dist/SysUserPanel-bJy69O7x-BJtBgFEs.js +4 -0
  74. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-Dpl13ee0.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BOtHuMVy.js} +2 -2
  75. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-DUPFqgz3-BSqRCMen.js +356 -0
  76. package/dist/{SystemMenu-BkG_DKxA.js → SystemMenu-BnVeOSOQ.js} +7 -7
  77. package/dist/SystemMenu-DGOAolc1-CJSLHP8i.js +156 -0
  78. package/dist/UserInfo-CKoOHkAM-DDWp0I_U.js +4 -0
  79. package/dist/{UserInfo-D9croxUe.js → UserInfo-Cax9b2nw.js} +1 -1
  80. package/dist/UserInfo.vue_vue_type_style_index_0_lang-BaT53SSu-DsNaAomO.js +160 -0
  81. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-DLIP8xpN.js → UserInfo.vue_vue_type_style_index_0_lang-D-cw11i9.js} +2 -2
  82. package/dist/await-to-js.es5-Bv3Eu4mi-UCggJjes.js +10 -0
  83. package/dist/await-to-js.es5-Bv3Eu4mi.js +10 -0
  84. package/dist/childView-0YZQ6GBn-CEqg7k5d.js +4 -0
  85. package/dist/{childView-BY_Ip-l1.js → childView-DKG3eZo8.js} +1 -1
  86. package/dist/childView-DKkgi3yo-D47ft-vi.js +4 -0
  87. package/dist/{childView-CHp_TueS.js → childView-siumuBz0.js} +1 -1
  88. package/dist/childView.vue_vue_type_style_index_0_lang-ABMrGInv-ClOdE_sa.js +143 -0
  89. package/dist/{childView.vue_vue_type_style_index_0_lang-BNHbDRjt.js → childView.vue_vue_type_style_index_0_lang-CUfXDS1q.js} +8 -8
  90. package/dist/{childView.vue_vue_type_style_index_0_lang-CbjGf7Z7.js → childView.vue_vue_type_style_index_0_lang-CW3EbAmW.js} +8 -8
  91. package/dist/childView.vue_vue_type_style_index_0_lang-CaW106ve-CClTM8PK.js +180 -0
  92. package/dist/{code-rule-Ce6yWqCq.js → code-rule-Dtoree6F.js} +2 -2
  93. package/dist/code-rule-wQyfgpNL-C4evD4Co.js +148 -0
  94. package/dist/core.es.js +10 -10
  95. package/dist/cron-task-C-kryDtd-C0NuGZCe.js +135 -0
  96. package/dist/{cron-task-DziaH0rI.js → cron-task-GSRgA7S5.js} +2 -2
  97. package/dist/flow-task-B07st2aD-CgQvagSQ.js +10 -0
  98. package/dist/frameView-BOGA3ezf-QoSxzmSQ.js +44 -0
  99. package/dist/{frameView-DNeCVQaY.js → frameView-Cy6wxW0K.js} +1 -1
  100. package/dist/{index-BabfUVv_.js → index-Dc7xWMiC.js} +1057 -1033
  101. package/dist/layout-home-3Dy4onl4.js +228 -0
  102. package/dist/layout-home-CYHksXN_-Basy-3IH.js +228 -0
  103. package/dist/layoutView-BaRvAbIa-xVgfqspc.js +3302 -0
  104. package/dist/{layoutView-12Mlp9A2.js → layoutView-DMjNscJ-.js} +8 -8
  105. package/dist/log-in-Cx1dGik8-BVeEHeZ8.js +117 -0
  106. package/dist/{log-in-1NGaA5OM.js → log-in-VAG6Cvcx.js} +8 -8
  107. package/dist/log-out-COYdxrNC-ftopGZdE.js +130 -0
  108. package/dist/{log-out-B8_atGcQ.js → log-out-DZGaMCjC.js} +4 -4
  109. package/dist/{login-5dydO6GR.js → login-CqVMdNHs.js} +16 -16
  110. package/dist/login-Dg9ofNS8-Bocp1XMA.js +241 -0
  111. package/dist/login-log-DJBGJVV0-AoOyj0jD.js +70 -0
  112. package/dist/lov-view-C0T5prk8-B2DBmn55.js +97 -0
  113. package/dist/{lov-view-DPvGUu3h.js → lov-view-Cc68_28B.js} +7 -7
  114. package/dist/{menuInfo-DVADYfEK.js → menuInfo-BIrIaJlH.js} +1 -1
  115. package/dist/menuInfo-BZJ_q7bz-Drho-_QC.js +4 -0
  116. package/dist/menuInfo.vue_vue_type_style_index_0_lang-BA8xjUo3-BCZ1wipf.js +363 -0
  117. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DgsifDrm.js → menuInfo.vue_vue_type_style_index_0_lang-DlE4w35X.js} +2 -2
  118. package/dist/{pda-app-BZXs-2BQ.js → pda-app-DnjphrRS.js} +9 -9
  119. package/dist/pda-app-m9hsppHo-B4xyja1o.js +710 -0
  120. package/dist/redirect-BqegffKC-CBCIuqmz.js +15 -0
  121. package/dist/resource-C6KEIXu--B_ddyecm.js +97 -0
  122. package/dist/{resource-BZA9NFKc.js → resource-DISgPDM7.js} +4 -4
  123. package/dist/su-welcome-BjbuSrBZ.js +49424 -0
  124. package/dist/su-welcome-CYYy-dzr-D3RKPoB0.js +42089 -0
  125. package/dist/sys-config-DCjJGtht-DARDjlrt.js +370 -0
  126. package/dist/{sys-config-DQmNjWH4.js → sys-config-Yc9vh1t1.js} +13 -13
  127. package/dist/udp-core.css +1 -1
  128. package/dist/utogether-MlnyYtNS-CGgjFNPS.js +4 -0
  129. package/package.json +5 -2
  130. package/src/App.vue +71 -71
  131. package/src/components/udp/content/index.vue +88 -88
  132. package/src/components/udp/form-upload/form-upload.vue +492 -492
  133. package/src/components/udp/grid/index.vue +524 -524
  134. package/src/components/udp/index.ts +6 -6
  135. package/src/components/udp/ut-stamp-badge/index.vue +271 -271
  136. package/src/components/udp/utils.ts +408 -408
  137. package/src/layout/components/lay-content/index.vue +136 -136
  138. package/src/layout/components/lay-search/components/SearchModal.vue +181 -189
  139. package/src/layout/components/lay-setting/index.vue +503 -503
  140. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -101
  141. package/src/layout/components/lay-tag/index.vue +598 -598
  142. package/src/layout/hooks/useNav.ts +176 -176
  143. package/src/layout/hooks/useTag.ts +227 -227
  144. package/src/layout/layoutView.vue +216 -216
  145. package/src/layout/types.ts +93 -93
  146. package/src/main.ts +111 -112
  147. package/src/plugins/i18n/zh.ts +1 -0
  148. package/src/plugins/vxe-table/index.ts +116 -116
  149. package/src/plugins/vxe-table/render.tsx +968 -968
  150. package/src/router/index.ts +187 -187
  151. package/src/router/modules/home.ts +32 -32
  152. package/src/router/utils.ts +420 -420
  153. package/src/store/modules/epTheme.ts +48 -48
  154. package/src/style/vxetable.scss +364 -356
  155. package/src/utils/dataFormat/index.ts +222 -222
  156. package/src/utils/lifecycle.ts +39 -39
  157. package/src/views/organization/department/DepartmentPanel.vue +303 -303
  158. package/src/views/organization/staff/StaffInfo.vue +127 -127
  159. package/src/views/organization/staff/StaffPanel.vue +3 -3
  160. package/src/views/system/layout/layout-home.vue +45 -7
  161. package/src/views/system/menu/AuthorityPanel.vue +141 -141
  162. package/src/views/system/menu/SystemMenu.vue +194 -194
  163. package/src/views/system/menu/menuInfo.vue +1 -1
  164. package/src/views/system/sysUser/SysUserPanel.vue +363 -363
  165. package/src/views/udev/coderule/code-rule.vue +132 -132
  166. package/src/views/udev/dict/DictView.vue +118 -118
  167. package/src/views/udev/dict/childView.vue +184 -184
  168. package/src/views/udev/lov/childView.vue +174 -174
  169. package/src/views/uhome/components/common-menu.vue +118 -0
  170. package/src/views/uhome/components/dynamic-component.vue +66 -0
  171. package/src/views/uhome/components/home-todo.vue +170 -0
  172. package/src/views/uhome/components/menu-favorite.vue +315 -315
  173. package/src/views/uhome/dynamic-card.vue +18 -19
  174. package/src/views/uhome/su-welcome.vue +46 -116
  175. package/src/views/ulogin/login.vue +336 -336
  176. package/src/views/upms/interface/log-in.vue +100 -100
  177. package/src/views/upms/interface/log-out.vue +104 -104
  178. package/src/views/upms/user/login-log.vue +54 -54
  179. package/types/global.d.ts +232 -232
  180. package/dist/await-to-js.es5-BtRbN2QH.js +0 -10
  181. package/dist/layout-home-Cis1KlEr.js +0 -195
  182. package/dist/su-welcome-BXe6Cdp3.js +0 -580
@@ -1,222 +1,222 @@
1
- /*
2
- * @Author: wei.li
3
- * @Date: 2022-06-23 17:29:11
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-12-04 13:34:40
6
- * @Description: file content
7
- */
8
-
9
- import { clone, isArray, isString, isEmpty, toDateString } from 'xe-utils';
10
- import { useRender } from '@utogether/utils';
11
-
12
- const renderHook = useRender();
13
-
14
- export const rulesFormat = (records, rule, t) => {
15
- records
16
- .filter(colunm => colunm.required)
17
- .forEach(colunm => {
18
- const { field, title } = colunm;
19
- rule[field] = [
20
- {
21
- required: true,
22
- message: `${t('message.required')}${title ? t(title) : t(`message.${field}`)}`
23
- }
24
- ];
25
- });
26
- return rule;
27
- };
28
-
29
- export const columnFormat = columns => {
30
- return columns.map(m => {
31
- if (m.type) return m;
32
- m.title = m.title || `message.${m.field}`;
33
- return m;
34
- });
35
- };
36
-
37
- const searchBtn: IFormItemProps = {
38
- span: 6,
39
- align: 'right',
40
- collapseNode: false,
41
- itemRender: {
42
- name: 'VxeButtonGroup',
43
- options: [
44
- {
45
- type: 'submit',
46
- submit: 'submit',
47
- content: 'message.btn.search',
48
- status: 'primary',
49
- icon: 'ri-search-line'
50
- },
51
- {
52
- type: 'reset',
53
- name: 'reset',
54
- content: 'message.btn.reset',
55
- status: 'info',
56
- icon: 'ri-refresh-line'
57
- }
58
- ],
59
- events: null
60
- }
61
- };
62
-
63
- export const formatGridItems = (records, favorite) => {
64
- const formItems = records.filter(f => f.visible !== false);
65
- const len = formItems.length;
66
- // 前3个存在时间范围 或者 存在span = 12
67
- const isDateRange = len > 2 && formItems.some((f, idx) => idx < 3 && (f.span > 6 || getDateRange(f)));
68
- // 需要展示折叠按钮
69
- const isCollapse = isDateRange || len > 3;
70
- const defaultCollapse = { collapseTags: true, collapseTagsTooltip: true, multiple: true };
71
- const items = formItems.map((item, idx) => {
72
- item.folding = isDateRange ? isCollapse && idx > 1 : isCollapse && idx > 2;
73
- item.span = getDateRange(item) ? 12 : item.span || 6;
74
- if (item.code && !item.itemRender) {
75
- item.itemRender = renderHook.renderDict(item.code);
76
- }
77
- item.itemRender = item.itemRender || { name: '$input' };
78
- item.title = item.title || `message.${item.field}`;
79
- if (item.multiple || item.itemRender?.props?.multiple) {
80
- item.itemRender.props = Object.assign(defaultCollapse, item.itemRender?.props || {});
81
- }
82
- return item;
83
- });
84
- const btn = clone(searchBtn, true);
85
- btn.collapseNode = isCollapse;
86
- favorite && btn.itemRender.options.length < 3 && btn.itemRender.options.push(favorite);
87
-
88
- if (isCollapse) {
89
- // 按钮设置为 折叠节点
90
- // 折叠时将搜索按钮插入到第一列的最后
91
- const idx = isDateRange ? 2 : 3;
92
- items.splice(idx, 0, btn);
93
- } else {
94
- items.push(btn);
95
- }
96
- return items;
97
- };
98
-
99
- const getDateRange = item => {
100
- if (item.itemRender?.name === '#SuDateRange') {
101
- return item.itemRender?.props?.type === 'daterange' || !item.itemRender?.props?.type;
102
- }
103
- return false;
104
- };
105
- export const formatButton = (buttons, auth?) => {
106
- buttons.forEach(btn => {
107
- btn.auth = auth ? auth[btn.code] || btn.auth : btn.auth;
108
- if (!btn.name) {
109
- btn.name = `message.${btn.name || btn.code}`;
110
- } else if (!btn.name.includes('message.')) {
111
- btn.name = `message.${btn.name}`;
112
- }
113
- });
114
- return buttons;
115
- };
116
-
117
- export const queryAll = (props, http, form, fetchParam) => {
118
- const params = { pageNum: 1, pageSize: 100000 };
119
- Object.assign(params, form, fetchParam || {});
120
- const query = formatDateRange(params, props.formItems);
121
- const ajax = props.version === 'v2' ? http.get : http.post;
122
- return new Promise((resolve, reject) => {
123
- ajax(props.serviceCode.fetch, query)
124
- .then((response: IResponseData) => {
125
- resolve(response.list);
126
- })
127
- .catch((e: any) => {
128
- reject(e);
129
- });
130
- });
131
- };
132
-
133
- /** 查询服务 */
134
- export const query = (props, form, page, http, fetchParam) => {
135
- for (const i in form) {
136
- if (form[i] && isString(form[i])) {
137
- form[i] = form[i].trim();
138
- }
139
- }
140
- const params = {
141
- pageNum: page.currentPage,
142
- pageSize: page.pageSize
143
- };
144
- Object.assign(params, form, fetchParam || {});
145
- const query = formatDateRange(params, props.formItems);
146
- const {
147
- version,
148
- serviceCode: { fetch }
149
- } = props;
150
- if (!fetch) return null;
151
- if (version === 'v2') {
152
- return http.get(fetch, query);
153
- }
154
- return http.post(fetch, query);
155
- };
156
- /** 删除服务 */
157
- export const del = (http, removeRecords, props) => {
158
- const { serviceCode, version, isSingleSubmit } = props;
159
- const { del } = serviceCode;
160
- if (!del) return null;
161
- if (version === 'v2') {
162
- return http.delete(del, !isSingleSubmit ? removeRecords : removeRecords[0]);
163
- }
164
- return http.post(del, !isSingleSubmit ? removeRecords : removeRecords[0]);
165
- };
166
- /** 更新服务 */
167
- export const save = (http, body, props, confirmParam) => {
168
- const allService = [];
169
- const { serviceCode, isSingleSubmit, version, multiField } = props;
170
- const { add, update } = serviceCode;
171
- const { insertRecords, updateRecords } = body;
172
-
173
- if (!isEmpty(insertRecords) && add) {
174
- insertRecords.forEach(m => {
175
- !isEmpty(confirmParam) && Object.assign(m, confirmParam);
176
- m = !isEmpty(multiField) ? setMultiField(props, m, confirmParam) : m;
177
- });
178
- const service = http.post(add, !isSingleSubmit ? insertRecords : insertRecords[0]);
179
- allService.push(service);
180
- }
181
- if (!isEmpty(updateRecords) && update) {
182
- const records = !isEmpty(multiField)
183
- ? updateRecords.map(m => setMultiField(props, m, confirmParam))
184
- : updateRecords;
185
- let service = null;
186
- if (version === 'v2') {
187
- service = http.put(update, !isSingleSubmit ? records : records[0]);
188
- } else {
189
- service = http.post(update, !isSingleSubmit ? records : records[0]);
190
- }
191
- allService.push(service);
192
- }
193
- return allService;
194
- };
195
-
196
- const formatDateRange = (listQuery: any, formItems) => {
197
- const dateRanges = formItems.filter(f => f.itemRender?.name === '#SuDateRange');
198
- if (isEmpty(dateRanges)) return listQuery;
199
- const query = clone(listQuery, true);
200
- dateRanges.forEach((element: any) => {
201
- const val = query[element.field];
202
- if (val && element.toField) {
203
- query[element.fromField] = toDateString(val[0], 'yyyy-MM-dd 00:00:00');
204
- query[element.toField] = toDateString(val[1], 'yyyy-MM-dd 23:59:59');
205
- delete query[element.field];
206
- } else if (val) {
207
- query[`${element.field}From`] = toDateString(val[0], 'yyyy-MM-dd 00:00:00');
208
- query[`${element.field}To`] = toDateString(val[1], 'yyyy-MM-dd 23:59:59');
209
- delete query[element.field];
210
- }
211
- });
212
- return query;
213
- };
214
-
215
- const setMultiField = (props, source: any, confirmParam) => {
216
- const { multiField } = props;
217
- multiField.forEach(field => {
218
- source[field] = isArray(source[field]) ? source[field].join(',') : source[field];
219
- });
220
- Object.assign(source, confirmParam || {});
221
- return source;
222
- };
1
+ /*
2
+ * @Author: wei.li
3
+ * @Date: 2022-06-23 17:29:11
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-12-04 13:34:40
6
+ * @Description: file content
7
+ */
8
+
9
+ import { clone, isArray, isString, isEmpty, toDateString } from 'xe-utils';
10
+ import { useRender } from '@utogether/utils';
11
+
12
+ const renderHook = useRender();
13
+
14
+ export const rulesFormat = (records, rule, t) => {
15
+ records
16
+ .filter(colunm => colunm.required)
17
+ .forEach(colunm => {
18
+ const { field, title } = colunm;
19
+ rule[field] = [
20
+ {
21
+ required: true,
22
+ message: `${t('message.required')}${title ? t(title) : t(`message.${field}`)}`
23
+ }
24
+ ];
25
+ });
26
+ return rule;
27
+ };
28
+
29
+ export const columnFormat = columns => {
30
+ return columns.map(m => {
31
+ if (m.type) return m;
32
+ m.title = m.title || `message.${m.field}`;
33
+ return m;
34
+ });
35
+ };
36
+
37
+ const searchBtn: IFormItemProps = {
38
+ span: 6,
39
+ align: 'right',
40
+ collapseNode: false,
41
+ itemRender: {
42
+ name: 'VxeButtonGroup',
43
+ options: [
44
+ {
45
+ type: 'submit',
46
+ submit: 'submit',
47
+ content: 'message.btn.search',
48
+ status: 'primary',
49
+ icon: 'ri-search-line'
50
+ },
51
+ {
52
+ type: 'reset',
53
+ name: 'reset',
54
+ content: 'message.btn.reset',
55
+ status: 'info',
56
+ icon: 'ri-refresh-line'
57
+ }
58
+ ],
59
+ events: null
60
+ }
61
+ };
62
+
63
+ export const formatGridItems = (records, favorite) => {
64
+ const formItems = records.filter(f => f.visible !== false);
65
+ const len = formItems.length;
66
+ // 前3个存在时间范围 或者 存在span = 12
67
+ const isDateRange = len > 2 && formItems.some((f, idx) => idx < 3 && (f.span > 6 || getDateRange(f)));
68
+ // 需要展示折叠按钮
69
+ const isCollapse = isDateRange || len > 3;
70
+ const defaultCollapse = { collapseTags: true, collapseTagsTooltip: true, multiple: true };
71
+ const items = formItems.map((item, idx) => {
72
+ item.folding = isDateRange ? isCollapse && idx > 1 : isCollapse && idx > 2;
73
+ item.span = getDateRange(item) ? 12 : item.span || 6;
74
+ if (item.code && !item.itemRender) {
75
+ item.itemRender = renderHook.renderDict(item.code);
76
+ }
77
+ item.itemRender = item.itemRender || { name: '$input' };
78
+ item.title = item.title || `message.${item.field}`;
79
+ if (item.multiple || item.itemRender?.props?.multiple) {
80
+ item.itemRender.props = Object.assign(defaultCollapse, item.itemRender?.props || {});
81
+ }
82
+ return item;
83
+ });
84
+ const btn = clone(searchBtn, true);
85
+ btn.collapseNode = isCollapse;
86
+ favorite && btn.itemRender.options.length < 3 && btn.itemRender.options.push(favorite);
87
+
88
+ if (isCollapse) {
89
+ // 按钮设置为 折叠节点
90
+ // 折叠时将搜索按钮插入到第一列的最后
91
+ const idx = isDateRange ? 2 : 3;
92
+ items.splice(idx, 0, btn);
93
+ } else {
94
+ items.push(btn);
95
+ }
96
+ return items;
97
+ };
98
+
99
+ const getDateRange = item => {
100
+ if (item.itemRender?.name === '#SuDateRange') {
101
+ return item.itemRender?.props?.type === 'daterange' || !item.itemRender?.props?.type;
102
+ }
103
+ return false;
104
+ };
105
+ export const formatButton = (buttons, auth?) => {
106
+ buttons.forEach(btn => {
107
+ btn.auth = auth ? auth[btn.code] || btn.auth : btn.auth;
108
+ if (!btn.name) {
109
+ btn.name = `message.${btn.name || btn.code}`;
110
+ } else if (!btn.name.includes('message.')) {
111
+ btn.name = `message.${btn.name}`;
112
+ }
113
+ });
114
+ return buttons;
115
+ };
116
+
117
+ export const queryAll = (props, http, form, fetchParam) => {
118
+ const params = { pageNum: 1, pageSize: 100000 };
119
+ Object.assign(params, form, fetchParam || {});
120
+ const query = formatDateRange(params, props.formItems);
121
+ const ajax = props.version === 'v2' ? http.get : http.post;
122
+ return new Promise((resolve, reject) => {
123
+ ajax(props.serviceCode.fetch, query)
124
+ .then((response: IResponseData) => {
125
+ resolve(response.list);
126
+ })
127
+ .catch((e: any) => {
128
+ reject(e);
129
+ });
130
+ });
131
+ };
132
+
133
+ /** 查询服务 */
134
+ export const query = (props, form, page, http, fetchParam) => {
135
+ for (const i in form) {
136
+ if (form[i] && isString(form[i])) {
137
+ form[i] = form[i].trim();
138
+ }
139
+ }
140
+ const params = {
141
+ pageNum: page.currentPage,
142
+ pageSize: page.pageSize
143
+ };
144
+ Object.assign(params, form, fetchParam || {});
145
+ const query = formatDateRange(params, props.formItems);
146
+ const {
147
+ version,
148
+ serviceCode: { fetch }
149
+ } = props;
150
+ if (!fetch) return null;
151
+ if (version === 'v2') {
152
+ return http.get(fetch, query);
153
+ }
154
+ return http.post(fetch, query);
155
+ };
156
+ /** 删除服务 */
157
+ export const del = (http, removeRecords, props) => {
158
+ const { serviceCode, version, isSingleSubmit } = props;
159
+ const { del } = serviceCode;
160
+ if (!del) return null;
161
+ if (version === 'v2') {
162
+ return http.delete(del, !isSingleSubmit ? removeRecords : removeRecords[0]);
163
+ }
164
+ return http.post(del, !isSingleSubmit ? removeRecords : removeRecords[0]);
165
+ };
166
+ /** 更新服务 */
167
+ export const save = (http, body, props, confirmParam) => {
168
+ const allService = [];
169
+ const { serviceCode, isSingleSubmit, version, multiField } = props;
170
+ const { add, update } = serviceCode;
171
+ const { insertRecords, updateRecords } = body;
172
+
173
+ if (!isEmpty(insertRecords) && add) {
174
+ insertRecords.forEach(m => {
175
+ !isEmpty(confirmParam) && Object.assign(m, confirmParam);
176
+ m = !isEmpty(multiField) ? setMultiField(props, m, confirmParam) : m;
177
+ });
178
+ const service = http.post(add, !isSingleSubmit ? insertRecords : insertRecords[0]);
179
+ allService.push(service);
180
+ }
181
+ if (!isEmpty(updateRecords) && update) {
182
+ const records = !isEmpty(multiField)
183
+ ? updateRecords.map(m => setMultiField(props, m, confirmParam))
184
+ : updateRecords;
185
+ let service = null;
186
+ if (version === 'v2') {
187
+ service = http.put(update, !isSingleSubmit ? records : records[0]);
188
+ } else {
189
+ service = http.post(update, !isSingleSubmit ? records : records[0]);
190
+ }
191
+ allService.push(service);
192
+ }
193
+ return allService;
194
+ };
195
+
196
+ const formatDateRange = (listQuery: any, formItems) => {
197
+ const dateRanges = formItems.filter(f => f.itemRender?.name === '#SuDateRange');
198
+ if (isEmpty(dateRanges)) return listQuery;
199
+ const query = clone(listQuery, true);
200
+ dateRanges.forEach((element: any) => {
201
+ const val = query[element.field];
202
+ if (val && element.toField) {
203
+ query[element.fromField] = toDateString(val[0], 'yyyy-MM-dd 00:00:00');
204
+ query[element.toField] = toDateString(val[1], 'yyyy-MM-dd 23:59:59');
205
+ delete query[element.field];
206
+ } else if (val) {
207
+ query[`${element.field}From`] = toDateString(val[0], 'yyyy-MM-dd 00:00:00');
208
+ query[`${element.field}To`] = toDateString(val[1], 'yyyy-MM-dd 23:59:59');
209
+ delete query[element.field];
210
+ }
211
+ });
212
+ return query;
213
+ };
214
+
215
+ const setMultiField = (props, source: any, confirmParam) => {
216
+ const { multiField } = props;
217
+ multiField.forEach(field => {
218
+ source[field] = isArray(source[field]) ? source[field].join(',') : source[field];
219
+ });
220
+ Object.assign(source, confirmParam || {});
221
+ return source;
222
+ };
@@ -1,39 +1,39 @@
1
- /*
2
- * @Author: wei.li
3
- * @Date: 2024-06-26 16:30:54
4
- * @LastEditors: wei.li
5
- * @LastEditTime: 2024-06-26 17:11:58
6
- * @Description: file content
7
- */
8
-
9
- export const lifeCycleEvent = {
10
- onBeforeLogined: () => {},
11
- onLogined: () => {},
12
- onBeforeLogout: () => {},
13
- onAfterLogout: () => {}
14
- };
15
-
16
- /**
17
- * 平台登录前
18
- */
19
- export const onBeforeLogined = () => {
20
- lifeCycleEvent.onBeforeLogined();
21
- };
22
- /**
23
- * 平台登录后
24
- */
25
- export const onLogined = () => {
26
- lifeCycleEvent.onLogined();
27
- };
28
- /**
29
- * 平台退出前
30
- */
31
- export const onBeforeLogout = () => {
32
- lifeCycleEvent.onBeforeLogout();
33
- };
34
- /**
35
- * 平台退出后
36
- */
37
- export const onAfterLogout = () => {
38
- lifeCycleEvent.onAfterLogout();
39
- };
1
+ /*
2
+ * @Author: wei.li
3
+ * @Date: 2024-06-26 16:30:54
4
+ * @LastEditors: wei.li
5
+ * @LastEditTime: 2024-06-26 17:11:58
6
+ * @Description: file content
7
+ */
8
+
9
+ export const lifeCycleEvent = {
10
+ onBeforeLogined: () => {},
11
+ onLogined: () => {},
12
+ onBeforeLogout: () => {},
13
+ onAfterLogout: () => {}
14
+ };
15
+
16
+ /**
17
+ * 平台登录前
18
+ */
19
+ export const onBeforeLogined = () => {
20
+ lifeCycleEvent.onBeforeLogined();
21
+ };
22
+ /**
23
+ * 平台登录后
24
+ */
25
+ export const onLogined = () => {
26
+ lifeCycleEvent.onLogined();
27
+ };
28
+ /**
29
+ * 平台退出前
30
+ */
31
+ export const onBeforeLogout = () => {
32
+ lifeCycleEvent.onBeforeLogout();
33
+ };
34
+ /**
35
+ * 平台退出后
36
+ */
37
+ export const onAfterLogout = () => {
38
+ lifeCycleEvent.onAfterLogout();
39
+ };