@utogether/udp-core 1.0.4 → 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 (184) hide show
  1. package/dist/{403-DASI6Pwz.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-YhBA92cb.js → 404-xdB6lFeQ.js} +1 -1
  5. package/dist/500-BYfzvixf-CGpEieyQ.js +67 -0
  6. package/dist/{500-ywbFF5MX.js → 500-C94bRK2S.js} +2 -2
  7. package/dist/AuthorityInfo-DBovfUjB-DpQwT9Q5.js +4 -0
  8. package/dist/{AuthorityInfo-tCSX2Fh7.js → AuthorityInfo-Dy3b_nFN.js} +1 -1
  9. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-Cwd6UT2i.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-BeBNiwqc.js → AuthorityPanel-CRlAwbaI.js} +1 -1
  13. package/dist/AuthorityPanel.vue_vue_type_style_index_0_lang-DxhZjp1S-CJvk3pW8.js +114 -0
  14. package/dist/{AuthorityPanel.vue_vue_type_style_index_0_lang-CIYmnP9-.js → AuthorityPanel.vue_vue_type_style_index_0_lang-DxhZjp1S.js} +31 -24
  15. package/dist/Company-B4vsXy2I-CkNCOqjJ.js +25 -0
  16. package/dist/{Company-l23MEzdM.js → Company-gKkfnhLt.js} +3 -3
  17. package/dist/{CompanyPanel-D_s0rh6h.js → CompanyPanel-BF5Pc35s.js} +7 -7
  18. package/dist/CompanyPanel-Czcx8Gyw-CvndXwB_.js +206 -0
  19. package/dist/DataSet-DT-rGICv-DaUfgbxk.js +147 -0
  20. package/dist/{Department-DSEvORLg.js → Department-D0I3QVZe.js} +3 -3
  21. package/dist/Department-D0dVUrGC-C6HJcYI1.js +25 -0
  22. package/dist/{DepartmentPanel-WN8nOgCV.js → DepartmentPanel-2LHODgc7.js} +22 -22
  23. package/dist/DepartmentPanel-e91Lxr1j-BS_A-ILd.js +254 -0
  24. package/dist/{DesignPanel-DirEGh9M.js → DesignPanel-CtF3cAAQ.js} +1 -1
  25. package/dist/DesignPanel-DdFl_ohi-uCwFxcl1.js +4 -0
  26. package/dist/DesignPanel.vue_vue_type_style_index_0_lang-BACPrfUI-cC7yL0uY.js +1013 -0
  27. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-D02hXSrN.js → DesignPanel.vue_vue_type_style_index_0_lang-BCYgwoVt.js} +3 -3
  28. package/dist/DictView-BzQLOf_P-DDicwdmM.js +111 -0
  29. package/dist/{DictView-DiIQdiek.js → DictView-H3V5hxg3.js} +17 -16
  30. package/dist/{InvOrganization-b7v3g9EJ.js → InvOrganization-BiGLnbqe.js} +2 -2
  31. package/dist/InvOrganization-atbhw0CI-BABbVt9V.js +74 -0
  32. package/dist/Org-BW1YHG-Q-Cow7JWlD.js +39 -0
  33. package/dist/{Org-BORfx1PL.js → Org-DQTCQHNY.js} +2 -2
  34. package/dist/Preview-DJtVsoq1-CCGidQjJ.js +48 -0
  35. package/dist/{Preview-DkRn_TSc.js → Preview-DXaiis29.js} +1 -1
  36. package/dist/{ReportDefine-Cd0QeaWA.js → ReportDefine-BLh4CiER.js} +1 -1
  37. package/dist/ReportDefine-CNx_ob99-6NQAHK-Q.js +10 -0
  38. package/dist/ReportDesign-FbQ6yTJS-C1pPAUSp.js +165 -0
  39. package/dist/{ReportDesign-4qNqyeEW.js → ReportDesign-Ni1YxrLC.js} +7 -7
  40. package/dist/ReportQuery-C5gz8Lgd-Eu2cQmda.js +75 -0
  41. package/dist/{ReportQuery-BJfTFpec.js → ReportQuery-C8G88_qF.js} +1 -1
  42. package/dist/ReportQueryFrom-C7scua5v-uHXWq8Gy.js +4 -0
  43. package/dist/{ReportQueryFrom-CB7sExZx.js → ReportQueryFrom-CuZKPtB4.js} +1 -1
  44. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CqO_2Ier.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-BAn_siFW.js} +7 -7
  45. package/dist/ReportQueryFrom.vue_vue_type_style_index_0_lang-DCbz67Wa-vK6r2uCl.js +178 -0
  46. package/dist/ReportTemplate-BDANdIWv-D_IGjR1w.js +161 -0
  47. package/dist/{ReportTemplate-B69muSgT.js → ReportTemplate-DFnDXWmx.js} +8 -8
  48. package/dist/{Role-Bo4YrNDC.js → Role-BQ7hsfPn.js} +3 -3
  49. package/dist/Role-ByB0WbxW-5E8Mb148.js +25 -0
  50. package/dist/RoleAssign-DW6iC_0v-Bis61auk.js +26 -0
  51. package/dist/{RoleAssign-kOMYJ4s3.js → RoleAssign-UPCg2d4G.js} +3 -3
  52. package/dist/RolePanel-BM2MaQPU-CgcsbfaX.js +4 -0
  53. package/dist/{RolePanel-BSJmjyqc.js → RolePanel-C-mQ5XRq.js} +1 -1
  54. package/dist/RolePanel-ClQy8DBL-DARL4O-o.js +4 -0
  55. package/dist/{RolePanel-B1d4e6uk.js → RolePanel-CoSXOCZN.js} +1 -1
  56. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-Bc_Ao_PU-DMmxr2iI.js +132 -0
  57. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-DgQpfjaU.js → RolePanel.vue_vue_type_script_setup_true_lang-Bg-t2UhF.js} +7 -7
  58. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-DCzX-ZP_.js → RolePanel.vue_vue_type_script_setup_true_lang-D-o7HYZ8.js} +8 -8
  59. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-fthF1zkp-JsbQJoDy.js +154 -0
  60. package/dist/ScrollPanel.vue_vue_type_style_index_0_lang-ByWIwajm-BsBf2Vs3.js +100 -0
  61. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-WNOYFxJ1.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCsoxDfk.js} +1 -1
  62. package/dist/Staff-CuxzvhD9-D0KTcyRh.js +25 -0
  63. package/dist/{Staff-BFp3zNNR.js → Staff-D-CmvG1R.js} +3 -3
  64. package/dist/StaffInfo-CY7gUICu-EZUhUwIp.js +4 -0
  65. package/dist/{StaffInfo-DcU9_40C.js → StaffInfo-Idhvuc6e.js} +1 -1
  66. package/dist/StaffInfo.vue_vue_type_script_setup_true_lang-Dd8gtQz8-Dlkt-eCn.js +108 -0
  67. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-CtfN2CAr.js → StaffInfo.vue_vue_type_script_setup_true_lang-MUGKjnHU.js} +1 -1
  68. package/dist/{StaffPanel-7exWkZd9.js → StaffPanel-CDDmAYE5.js} +1 -1
  69. package/dist/StaffPanel-CwqG0_xr-CrvzLJoc.js +4 -0
  70. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-v5xOXKRS.js → StaffPanel.vue_vue_type_script_setup_true_lang-Bdilqbee.js} +42 -42
  71. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-DCdBy8Hu-BXrueqi0.js +143 -0
  72. package/dist/SysUser-9Q2UJWhi-DprWXFlR.js +15 -0
  73. package/dist/{SysUser-B3uB_cp2.js → SysUser-a-j5bppr.js} +2 -2
  74. package/dist/{SysUserPanel-B0CLp5AO.js → SysUserPanel-6V232wwB.js} +1 -1
  75. package/dist/SysUserPanel-bJy69O7x-BJtBgFEs.js +4 -0
  76. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-Cwea_4dY.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BOtHuMVy.js} +126 -111
  77. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-DUPFqgz3-BSqRCMen.js +356 -0
  78. package/dist/{SystemMenu-a59l4hTk.js → SystemMenu-BnVeOSOQ.js} +50 -47
  79. package/dist/SystemMenu-DGOAolc1-CJSLHP8i.js +156 -0
  80. package/dist/UserInfo-CKoOHkAM-DDWp0I_U.js +4 -0
  81. package/dist/{UserInfo-D1IA2oLt.js → UserInfo-Cax9b2nw.js} +1 -1
  82. package/dist/UserInfo.vue_vue_type_style_index_0_lang-BaT53SSu-DsNaAomO.js +160 -0
  83. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-DDVgYRD5.js → UserInfo.vue_vue_type_style_index_0_lang-D-cw11i9.js} +2 -2
  84. package/dist/await-to-js.es5-Bv3Eu4mi-UCggJjes.js +10 -0
  85. package/dist/await-to-js.es5-Bv3Eu4mi.js +10 -0
  86. package/dist/childView-0YZQ6GBn-CEqg7k5d.js +4 -0
  87. package/dist/{childView-6rCeLcsx.js → childView-DKG3eZo8.js} +1 -1
  88. package/dist/childView-DKkgi3yo-D47ft-vi.js +4 -0
  89. package/dist/{childView-JdrkroL5.js → childView-siumuBz0.js} +1 -1
  90. package/dist/childView.vue_vue_type_style_index_0_lang-ABMrGInv-ClOdE_sa.js +143 -0
  91. package/dist/{childView.vue_vue_type_style_index_0_lang-BfcnWnx9.js → childView.vue_vue_type_style_index_0_lang-CUfXDS1q.js} +28 -25
  92. package/dist/{childView.vue_vue_type_style_index_0_lang-B8x99f1B.js → childView.vue_vue_type_style_index_0_lang-CW3EbAmW.js} +8 -8
  93. package/dist/childView.vue_vue_type_style_index_0_lang-CaW106ve-CClTM8PK.js +180 -0
  94. package/dist/{code-rule-2lkPF547.js → code-rule-Dtoree6F.js} +2 -2
  95. package/dist/code-rule-wQyfgpNL-C4evD4Co.js +148 -0
  96. package/dist/core.es.js +10 -10
  97. package/dist/cron-task-C-kryDtd-C0NuGZCe.js +135 -0
  98. package/dist/{cron-task-DV1pGO1m.js → cron-task-GSRgA7S5.js} +2 -2
  99. package/dist/flow-task-B07st2aD-CgQvagSQ.js +10 -0
  100. package/dist/frameView-BOGA3ezf-QoSxzmSQ.js +44 -0
  101. package/dist/{frameView-C0bzSB8c.js → frameView-Cy6wxW0K.js} +1 -1
  102. package/dist/index-Dc7xWMiC.js +7265 -0
  103. package/dist/layout-home-3Dy4onl4.js +228 -0
  104. package/dist/layout-home-CYHksXN_-Basy-3IH.js +228 -0
  105. package/dist/layoutView-BaRvAbIa-xVgfqspc.js +3302 -0
  106. package/dist/{layoutView-CTV-E4Cj.js → layoutView-DMjNscJ-.js} +148 -149
  107. package/dist/log-in-Cx1dGik8-BVeEHeZ8.js +117 -0
  108. package/dist/{log-in-CoBP2x6u.js → log-in-VAG6Cvcx.js} +8 -8
  109. package/dist/log-out-COYdxrNC-ftopGZdE.js +130 -0
  110. package/dist/{log-out-KX8FiRVf.js → log-out-DZGaMCjC.js} +4 -4
  111. package/dist/{login-CtCoGWzD.js → login-CqVMdNHs.js} +126 -136
  112. package/dist/login-Dg9ofNS8-Bocp1XMA.js +241 -0
  113. package/dist/login-log-DJBGJVV0-AoOyj0jD.js +70 -0
  114. package/dist/lov-view-C0T5prk8-B2DBmn55.js +97 -0
  115. package/dist/{lov-view-Bm0JEzzg.js → lov-view-Cc68_28B.js} +7 -7
  116. package/dist/{menuInfo-D2qPoRwz.js → menuInfo-BIrIaJlH.js} +1 -1
  117. package/dist/menuInfo-BZJ_q7bz-Drho-_QC.js +4 -0
  118. package/dist/menuInfo.vue_vue_type_style_index_0_lang-BA8xjUo3-BCZ1wipf.js +363 -0
  119. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DoQjX9Ly.js → menuInfo.vue_vue_type_style_index_0_lang-DlE4w35X.js} +38 -36
  120. package/dist/{pda-app-SbcIclbH.js → pda-app-DnjphrRS.js} +9 -9
  121. package/dist/pda-app-m9hsppHo-B4xyja1o.js +710 -0
  122. package/dist/redirect-BqegffKC-CBCIuqmz.js +15 -0
  123. package/dist/resource-C6KEIXu--B_ddyecm.js +97 -0
  124. package/dist/{resource-Cdq1UKGI.js → resource-DISgPDM7.js} +4 -4
  125. package/dist/su-welcome-BjbuSrBZ.js +49424 -0
  126. package/dist/su-welcome-CYYy-dzr-D3RKPoB0.js +42089 -0
  127. package/dist/sys-config-DCjJGtht-DARDjlrt.js +370 -0
  128. package/dist/{sys-config-CCOf4xbj.js → sys-config-Yc9vh1t1.js} +13 -13
  129. package/dist/udp-core.css +1 -1
  130. package/dist/utogether-MlnyYtNS-CGgjFNPS.js +4 -0
  131. package/package.json +5 -2
  132. package/src/App.vue +37 -31
  133. package/src/components/udp/content/index.vue +88 -88
  134. package/src/components/udp/form-upload/form-upload.vue +492 -0
  135. package/src/components/udp/grid/index.vue +524 -524
  136. package/src/components/udp/index.ts +6 -5
  137. package/src/components/udp/ut-stamp-badge/index.vue +271 -271
  138. package/src/components/udp/utils.ts +408 -408
  139. package/src/layout/components/lay-content/index.vue +4 -11
  140. package/src/layout/components/lay-search/components/SearchModal.vue +181 -189
  141. package/src/layout/components/lay-setting/index.vue +503 -503
  142. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -101
  143. package/src/layout/components/lay-tag/index.vue +598 -598
  144. package/src/layout/hooks/useNav.ts +176 -176
  145. package/src/layout/hooks/useTag.ts +227 -227
  146. package/src/layout/layoutView.vue +216 -215
  147. package/src/layout/types.ts +93 -93
  148. package/src/main.ts +111 -115
  149. package/src/plugins/i18n/zh.ts +17 -3
  150. package/src/plugins/vxe-table/index.ts +116 -116
  151. package/src/plugins/vxe-table/render.tsx +968 -950
  152. package/src/router/index.ts +187 -187
  153. package/src/router/modules/home.ts +32 -32
  154. package/src/router/utils.ts +420 -420
  155. package/src/store/modules/epTheme.ts +48 -48
  156. package/src/style/vxetable.scss +18 -2
  157. package/src/utils/dataFormat/index.ts +222 -222
  158. package/src/utils/lifecycle.ts +39 -39
  159. package/src/views/organization/department/DepartmentPanel.vue +303 -303
  160. package/src/views/organization/staff/StaffInfo.vue +127 -127
  161. package/src/views/organization/staff/StaffPanel.vue +3 -3
  162. package/src/views/system/layout/layout-home.vue +237 -0
  163. package/src/views/system/menu/AuthorityPanel.vue +10 -9
  164. package/src/views/system/menu/SystemMenu.vue +194 -185
  165. package/src/views/system/menu/menuInfo.vue +384 -384
  166. package/src/views/system/sysUser/SysUserPanel.vue +363 -347
  167. package/src/views/udev/coderule/code-rule.vue +132 -132
  168. package/src/views/udev/dict/DictView.vue +118 -118
  169. package/src/views/udev/dict/childView.vue +184 -183
  170. package/src/views/udev/lov/childView.vue +174 -174
  171. package/src/views/uhome/components/common-menu.vue +118 -0
  172. package/src/views/uhome/components/dynamic-component.vue +66 -0
  173. package/src/views/uhome/components/home-todo.vue +170 -0
  174. package/src/views/uhome/components/menu-favorite.vue +315 -315
  175. package/src/views/uhome/dynamic-card.vue +31 -0
  176. package/src/views/uhome/su-welcome.vue +48 -113
  177. package/src/views/ulogin/login.vue +336 -325
  178. package/src/views/upms/interface/log-in.vue +100 -100
  179. package/src/views/upms/interface/log-out.vue +104 -104
  180. package/src/views/upms/user/login-log.vue +54 -54
  181. package/types/global.d.ts +232 -231
  182. package/dist/await-to-js.es5-BtRbN2QH.js +0 -10
  183. package/dist/index-BbtbEMCH.js +0 -4649
  184. package/dist/su-welcome-BHDsjqqV.js +0 -524
@@ -1,48 +1,48 @@
1
- /*
2
- * @Author: wei.li
3
- * @Date: 2021-12-23 17:33:20
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-12-17 18:53:00
6
- * @Description: file content
7
- */
8
- import { store } from '../index';
9
- import { defineStore } from 'pinia';
10
- import { getConfig, responsiveStorageNameSpace } from '../../config';
11
- import { storageLocal } from '@utogether/utils';
12
-
13
- export const useEpThemeStore = defineStore('udp-epTheme', {
14
- state: () => ({
15
- epThemeColor:
16
- storageLocal.getItem(`${responsiveStorageNameSpace()}-layout`)?.epThemeColor ?? getConfig().EpThemeColor,
17
- epTheme: storageLocal.getItem(`${responsiveStorageNameSpace()}-layout`)?.theme ?? getConfig().Theme
18
- }),
19
- getters: {
20
- getEpThemeColor() {
21
- return this.epThemeColor;
22
- },
23
- // 用于mix菜单布局下hamburger-svg的fill属性
24
- fill() {
25
- if (this.epTheme === 'light') {
26
- return '#409eff';
27
- } else if (this.epTheme === 'yellow') {
28
- return '#d25f00';
29
- } else {
30
- return '#fff';
31
- }
32
- }
33
- },
34
- actions: {
35
- setEpThemeColor(newColor: string): void {
36
- const layout = storageLocal.getItem(`${responsiveStorageNameSpace()}layout`);
37
- this.epTheme = layout?.theme;
38
- this.epThemeColor = newColor;
39
- if (!layout) return;
40
- layout.epThemeColor = newColor;
41
- storageLocal.setItem(`${responsiveStorageNameSpace()}layout`, layout);
42
- }
43
- }
44
- });
45
-
46
- export function useEpThemeStoreHook() {
47
- return useEpThemeStore(store);
48
- }
1
+ /*
2
+ * @Author: wei.li
3
+ * @Date: 2021-12-23 17:33:20
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2024-12-17 18:53:00
6
+ * @Description: file content
7
+ */
8
+ import { store } from '../index';
9
+ import { defineStore } from 'pinia';
10
+ import { getConfig, responsiveStorageNameSpace } from '../../config';
11
+ import { storageLocal } from '@utogether/utils';
12
+
13
+ export const useEpThemeStore = defineStore('udp-epTheme', {
14
+ state: () => ({
15
+ epThemeColor:
16
+ storageLocal.getItem(`${responsiveStorageNameSpace()}-layout`)?.epThemeColor ?? getConfig().EpThemeColor,
17
+ epTheme: storageLocal.getItem(`${responsiveStorageNameSpace()}-layout`)?.theme ?? getConfig().Theme
18
+ }),
19
+ getters: {
20
+ getEpThemeColor() {
21
+ return this.epThemeColor;
22
+ },
23
+ // 用于mix菜单布局下hamburger-svg的fill属性
24
+ fill() {
25
+ if (this.epTheme === 'light') {
26
+ return '#409eff';
27
+ } else if (this.epTheme === 'yellow') {
28
+ return '#d25f00';
29
+ } else {
30
+ return '#fff';
31
+ }
32
+ }
33
+ },
34
+ actions: {
35
+ setEpThemeColor(newColor: string): void {
36
+ const layout = storageLocal.getItem(`${responsiveStorageNameSpace()}layout`);
37
+ this.epTheme = layout?.theme;
38
+ this.epThemeColor = newColor;
39
+ if (!layout) return;
40
+ layout.epThemeColor = newColor;
41
+ storageLocal.setItem(`${responsiveStorageNameSpace()}layout`, layout);
42
+ }
43
+ }
44
+ });
45
+
46
+ export function useEpThemeStoreHook() {
47
+ return useEpThemeStore(store);
48
+ }
@@ -85,6 +85,14 @@ html[data-vxe-ui-theme='light'] {
85
85
  }
86
86
  }
87
87
  }
88
+
89
+ // 日期范围必填
90
+ .vxe-date-range-picker:not(.is--disabled) {
91
+ .vxe-date-range-picker--inner,
92
+ .vxe-date-range-picker--suffix {
93
+ background-color: #fffbdf;
94
+ }
95
+ }
88
96
  }
89
97
 
90
98
  /** 分页组件:当前页颜色 */
@@ -341,8 +349,16 @@ html[data-vxe-ui-theme='light'] {
341
349
  /******************************** tab end *************************************/
342
350
 
343
351
  /******************************** preview start 预览图片组件 *************************************/
344
- .vxe-image-preview--operation-wrapper {
345
- color: #c0c4cc;
352
+ .vxe-image-preview {
353
+ &--operation-wrapper {
354
+ color: #c0c4cc;
355
+ }
356
+
357
+ &--close-btn {
358
+ .vxe-icon-close {
359
+ color: #f56c6c;
360
+ }
361
+ }
346
362
  }
347
363
 
348
364
  /******************************** preview end *************************************/
@@ -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
+ };