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

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 (248) hide show
  1. package/dist/{403-CTJDBjz7.js → 403-CekcmGOc.js} +3 -3
  2. package/dist/403-CxOqlq0f-C28ufSE6.js +65 -0
  3. package/dist/403-WCboRvzZ-ZAPgYStl-Ck7rlpC9.js +65 -0
  4. package/dist/404-2V0Qi-d7-DkNwQggp-3kilva5o.js +65 -0
  5. package/dist/{404-BFYkWIkQ.js → 404-DeSH9KnK.js} +1 -1
  6. package/dist/404-xdB6lFeQ-DRhUFuKU.js +65 -0
  7. package/dist/500-BYfzvixf-CGpEieyQ-DLrc9brB.js +67 -0
  8. package/dist/500-C94bRK2S-_XtNljMI.js +67 -0
  9. package/dist/{500-DGG3qadg.js → 500-DHOHlmtv.js} +2 -2
  10. package/dist/{AuthorityInfo-ozZIo1Te.js → AuthorityInfo-BC8U3Zk4.js} +1 -1
  11. package/dist/AuthorityInfo-DBovfUjB-DpQwT9Q5-ChKFxbGl.js +4 -0
  12. package/dist/AuthorityInfo-Dy3b_nFN-BBC0HKlV.js +4 -0
  13. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-Bh7IbcdY-BgLN7Lgx.js +100 -0
  14. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-D-l_Az3s-Cw7WmFxz-B8tPqh_7.js +100 -0
  15. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-DujerENw.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DVFi0qOJ.js} +2 -2
  16. package/dist/AuthorityPanel-CRlAwbaI-G7pZXKdE-DAeYw45g.js +4 -0
  17. package/dist/AuthorityPanel-CRlAwbaI-G7pZXKdE.js +4 -0
  18. package/dist/AuthorityPanel.vue_vue_type_style_index_0_lang-DxhZjp1S-CJvk3pW8-C6jMEDJq.js +114 -0
  19. package/dist/AuthorityPanel.vue_vue_type_style_index_0_lang-DxhZjp1S-CJvk3pW8.js +114 -0
  20. package/dist/Company-B4vsXy2I-CkNCOqjJ-PjoD0ztY.js +25 -0
  21. package/dist/{Company-6VJtwh23.js → Company-Byq4p14C.js} +3 -3
  22. package/dist/Company-gKkfnhLt-BReGxz7n.js +25 -0
  23. package/dist/CompanyPanel-BF5Pc35s-CtpymP6a.js +206 -0
  24. package/dist/{CompanyPanel-B2P488mq.js → CompanyPanel-CIHP7rVd.js} +7 -7
  25. package/dist/CompanyPanel-Czcx8Gyw-CvndXwB_-mYpxegRQ.js +206 -0
  26. package/dist/DataSet-DT-rGICv-DaUfgbxk-YztlXv7w.js +147 -0
  27. package/dist/DataSet-DT-rGICv-DaUfgbxk.js +147 -0
  28. package/dist/{Department-BnwoLEOC.js → Department-CxgSq34X.js} +3 -3
  29. package/dist/Department-D0I3QVZe-CfWPT-lY.js +25 -0
  30. package/dist/Department-D0dVUrGC-C6HJcYI1-DhAtBQym.js +25 -0
  31. package/dist/DepartmentPanel-2LHODgc7--VCCaEsu.js +254 -0
  32. package/dist/DepartmentPanel-e91Lxr1j-BS_A-ILd-V3QvVWmJ.js +254 -0
  33. package/dist/{DepartmentPanel-CRrrmxtv.js → DepartmentPanel-hYNqywSQ.js} +22 -22
  34. package/dist/DesignPanel-CtF3cAAQ-FM7zpexb.js +4 -0
  35. package/dist/DesignPanel-DdFl_ohi-uCwFxcl1-7p3ouXrw.js +4 -0
  36. package/dist/{DesignPanel-CvbccgX2.js → DesignPanel-GEhqXIAx.js} +1 -1
  37. package/dist/DesignPanel.vue_vue_type_style_index_0_lang-BACPrfUI-cC7yL0uY-CoM_RAUN.js +1013 -0
  38. package/dist/DesignPanel.vue_vue_type_style_index_0_lang-BCYgwoVt-CcCVpy0f.js +1013 -0
  39. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-Dz2tUszs.js → DesignPanel.vue_vue_type_style_index_0_lang-DxA6H5Ts.js} +3 -3
  40. package/dist/DictView-BzQLOf_P-DDicwdmM-B8CFC279.js +111 -0
  41. package/dist/DictView-H3V5hxg3-BQZWN2zT.js +111 -0
  42. package/dist/{DictView-Ce1LoVHh.js → DictView-tyGrHFO8.js} +1 -1
  43. package/dist/InvOrganization-BiGLnbqe-BK3vgYYR.js +74 -0
  44. package/dist/{InvOrganization-BwCFZO1X.js → InvOrganization-DjJ4XkxN.js} +2 -2
  45. package/dist/InvOrganization-atbhw0CI-BABbVt9V-BT8PkfWL.js +74 -0
  46. package/dist/{Org-0hzs6b0R.js → Org-3eHX7nBU.js} +2 -2
  47. package/dist/Org-BW1YHG-Q-Cow7JWlD-C7ygI7jx.js +39 -0
  48. package/dist/Org-DQTCQHNY-CEEpGGlZ.js +39 -0
  49. package/dist/{Preview--DnEAhwh.js → Preview-Cgc3O8vp.js} +1 -1
  50. package/dist/Preview-DJtVsoq1-CCGidQjJ-DQ_OC1-S.js +48 -0
  51. package/dist/Preview-DXaiis29-BYyNhC1p.js +48 -0
  52. package/dist/ReportDefine-BLh4CiER-D68a0DWB.js +10 -0
  53. package/dist/ReportDefine-CNx_ob99-6NQAHK-Q-BL5gB56o.js +10 -0
  54. package/dist/{ReportDefine-Cu983bTN.js → ReportDefine-FYxHLbPV.js} +1 -1
  55. package/dist/{ReportDesign-QsWXXgvo.js → ReportDesign-BTOVgMzz.js} +7 -7
  56. package/dist/ReportDesign-FbQ6yTJS-C1pPAUSp-DTsrU_wq.js +165 -0
  57. package/dist/ReportDesign-Ni1YxrLC-DfziOJc3.js +165 -0
  58. package/dist/ReportQuery-C5gz8Lgd-Eu2cQmda-c9iy6TZ_.js +75 -0
  59. package/dist/ReportQuery-C8G88_qF-BKknwX1u.js +75 -0
  60. package/dist/{ReportQuery-BjKIIhPu.js → ReportQuery-Dhy9sk04.js} +1 -1
  61. package/dist/{ReportQueryFrom-DIjBO6Fx.js → ReportQueryFrom-B1TE8lOG.js} +1 -1
  62. package/dist/ReportQueryFrom-C7scua5v-uHXWq8Gy-Cq4havLh.js +4 -0
  63. package/dist/ReportQueryFrom-CuZKPtB4-B_TaZr-N.js +4 -0
  64. package/dist/ReportQueryFrom.vue_vue_type_style_index_0_lang-BAn_siFW-CdTqG6KF.js +178 -0
  65. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-0T62cUMK.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-D93NL2N7.js} +7 -7
  66. package/dist/ReportQueryFrom.vue_vue_type_style_index_0_lang-DCbz67Wa-vK6r2uCl-kdXwDD3n.js +178 -0
  67. package/dist/ReportTemplate-BDANdIWv-D_IGjR1w-txJDRw_J.js +161 -0
  68. package/dist/{ReportTemplate-2uk9tJcy.js → ReportTemplate-C-EuU7mL.js} +8 -8
  69. package/dist/ReportTemplate-DFnDXWmx-QQkaZRvV.js +161 -0
  70. package/dist/Role-BQ7hsfPn-BLwTiMMj.js +25 -0
  71. package/dist/Role-ByB0WbxW-5E8Mb148-WoZV4JKV.js +25 -0
  72. package/dist/{Role-_QP8QEaI.js → Role-Dc1dZ0o9.js} +3 -3
  73. package/dist/{RoleAssign-C2gkcmEQ.js → RoleAssign-DDv65izq.js} +3 -3
  74. package/dist/RoleAssign-DW6iC_0v-Bis61auk-BB4DziuB.js +26 -0
  75. package/dist/RoleAssign-UPCg2d4G-g4V-duK9.js +26 -0
  76. package/dist/RolePanel-BM2MaQPU-CgcsbfaX-D28vR3Fh.js +4 -0
  77. package/dist/RolePanel-C-mQ5XRq-JQYWITkX.js +4 -0
  78. package/dist/{RolePanel-vnl_lXNY.js → RolePanel-CiDM8OSr.js} +1 -1
  79. package/dist/RolePanel-ClQy8DBL-DARL4O-o-DrElGZ66.js +4 -0
  80. package/dist/RolePanel-CoSXOCZN-BdCEhz3b.js +4 -0
  81. package/dist/{RolePanel-B8FPNGaA.js → RolePanel-Dw_pTEGV.js} +1 -1
  82. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-Bc_Ao_PU-DMmxr2iI-Bsk0Mun8.js +132 -0
  83. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-Bg-t2UhF-CMTLt3Lp.js +154 -0
  84. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-bxHXrBYl.js → RolePanel.vue_vue_type_script_setup_true_lang-CG_KY7NS.js} +7 -7
  85. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BuQbYEEI.js → RolePanel.vue_vue_type_script_setup_true_lang-Ctq1lItN.js} +8 -8
  86. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-D-o7HYZ8-DPs8J-8D.js +132 -0
  87. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-fthF1zkp-JsbQJoDy-vZfwM6bG.js +154 -0
  88. package/dist/ScrollPanel.vue_vue_type_style_index_0_lang-ByWIwajm-BsBf2Vs3-CTeY23xN.js +100 -0
  89. package/dist/ScrollPanel.vue_vue_type_style_index_0_lang-CCsoxDfk-D-4pB58A.js +100 -0
  90. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-C6yZXBqB.js → ScrollPanel.vue_vue_type_style_index_0_lang-CyU7XjI3.js} +1 -1
  91. package/dist/Staff-CuxzvhD9-D0KTcyRh-Cj8NbX79.js +25 -0
  92. package/dist/Staff-D-CmvG1R-uwSWH8-m.js +25 -0
  93. package/dist/{Staff-CHWrMIEb.js → Staff-DMh451jL.js} +3 -3
  94. package/dist/{StaffInfo-Cpq2eayz.js → StaffInfo-2PhYcVaz.js} +1 -1
  95. package/dist/StaffInfo-CY7gUICu-EZUhUwIp-C8POP58u.js +4 -0
  96. package/dist/StaffInfo-Idhvuc6e-COVQmEz0.js +4 -0
  97. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-BVCjF2i1.js → StaffInfo.vue_vue_type_script_setup_true_lang-CrCFms3g.js} +1 -1
  98. package/dist/StaffInfo.vue_vue_type_script_setup_true_lang-Dd8gtQz8-Dlkt-eCn-p0kltEdZ.js +108 -0
  99. package/dist/StaffInfo.vue_vue_type_script_setup_true_lang-MUGKjnHU-Cj9lcXG6.js +108 -0
  100. package/dist/{StaffPanel-D2BMXt5p.js → StaffPanel-BrvkXT68.js} +1 -1
  101. package/dist/StaffPanel-CDDmAYE5-mLPGD2Nf.js +4 -0
  102. package/dist/StaffPanel-CwqG0_xr-CrvzLJoc-AX54GdZ3.js +4 -0
  103. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-Bdilqbee-RiBDcMMj.js +143 -0
  104. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-DCdBy8Hu-BXrueqi0-DFG90qAT.js +143 -0
  105. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-B6jAGo-g.js → StaffPanel.vue_vue_type_script_setup_true_lang-DKr8VVOJ.js} +42 -42
  106. package/dist/SysUser-9Q2UJWhi-DprWXFlR-DUMl4Hfm.js +15 -0
  107. package/dist/{SysUser-om6H1BeC.js → SysUser-DLDd5do7.js} +2 -2
  108. package/dist/SysUser-a-j5bppr-CpP0s5DW.js +15 -0
  109. package/dist/SysUserPanel-6V232wwB-DI8apzmL.js +4 -0
  110. package/dist/{SysUserPanel-CH0HPP7h.js → SysUserPanel-DDQxi2Hk.js} +1 -1
  111. package/dist/SysUserPanel-bJy69O7x-BJtBgFEs-DEXctwBe.js +4 -0
  112. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-BOtHuMVy-CD9JQp9h.js +356 -0
  113. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-DUPFqgz3-BSqRCMen-BBtBr0VU.js +356 -0
  114. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-Dpl13ee0.js → SysUserPanel.vue_vue_type_script_setup_true_lang-DvOggZs6.js} +2 -2
  115. package/dist/SystemMenu-BnVeOSOQ-6HW3jX57.js +156 -0
  116. package/dist/SystemMenu-DGOAolc1-CJSLHP8i-DIUNb03s.js +156 -0
  117. package/dist/{SystemMenu-BkG_DKxA.js → SystemMenu-nFNfz4Nj.js} +7 -7
  118. package/dist/{UserInfo-D9croxUe.js → UserInfo-B9PLKur5.js} +1 -1
  119. package/dist/UserInfo-CKoOHkAM-DDWp0I_U-DEerO-y3.js +4 -0
  120. package/dist/UserInfo-Cax9b2nw-DBResyaY.js +4 -0
  121. package/dist/UserInfo.vue_vue_type_style_index_0_lang-BaT53SSu-DsNaAomO-7IKIrGoq.js +160 -0
  122. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-DLIP8xpN.js → UserInfo.vue_vue_type_style_index_0_lang-BwZNwtQH.js} +2 -2
  123. package/dist/UserInfo.vue_vue_type_style_index_0_lang-D-cw11i9-B2nI6TLi.js +160 -0
  124. package/dist/await-to-js.es5-Bv3Eu4mi-UCggJjes-CRQnmLCs.js +10 -0
  125. package/dist/await-to-js.es5-Bv3Eu4mi-UCggJjes.js +10 -0
  126. package/dist/await-to-js.es5-Bv3Eu4mi.js +10 -0
  127. package/dist/childView-0YZQ6GBn-CEqg7k5d-CDGM_XzZ.js +4 -0
  128. package/dist/{childView-BY_Ip-l1.js → childView-BEDVB_RG.js} +1 -1
  129. package/dist/{childView-CHp_TueS.js → childView-BRa268Qh.js} +1 -1
  130. package/dist/childView-DKG3eZo8-CCtKjCU7.js +4 -0
  131. package/dist/childView-DKkgi3yo-D47ft-vi-B5yI8Dk7.js +4 -0
  132. package/dist/childView-siumuBz0-CyYKsSPy.js +4 -0
  133. package/dist/childView.vue_vue_type_style_index_0_lang-ABMrGInv-ClOdE_sa-BnvsyZ35.js +143 -0
  134. package/dist/{childView.vue_vue_type_style_index_0_lang-BNHbDRjt.js → childView.vue_vue_type_style_index_0_lang-BcyosNSH.js} +8 -8
  135. package/dist/childView.vue_vue_type_style_index_0_lang-CUfXDS1q-DNNy6Qe3.js +180 -0
  136. package/dist/childView.vue_vue_type_style_index_0_lang-CW3EbAmW-D6Jvom5y.js +143 -0
  137. package/dist/childView.vue_vue_type_style_index_0_lang-CaW106ve-CClTM8PK-ZSgCqafc.js +180 -0
  138. package/dist/{childView.vue_vue_type_style_index_0_lang-CbjGf7Z7.js → childView.vue_vue_type_style_index_0_lang-qsceJGeR.js} +8 -8
  139. package/dist/{code-rule-Ce6yWqCq.js → code-rule-CJ4FuOo1.js} +2 -2
  140. package/dist/code-rule-Dtoree6F-B4yeNvFw.js +148 -0
  141. package/dist/code-rule-wQyfgpNL-C4evD4Co-BOJCC1LY.js +148 -0
  142. package/dist/core.es.js +10 -10
  143. package/dist/cron-task-C-kryDtd-C0NuGZCe-DIJuoNx-.js +135 -0
  144. package/dist/{cron-task-DziaH0rI.js → cron-task-CXnv7hIa.js} +2 -2
  145. package/dist/cron-task-GSRgA7S5-D_xfN2g_.js +135 -0
  146. package/dist/flow-task-B07st2aD-CgQvagSQ-BaPlX6ds.js +10 -0
  147. package/dist/flow-task-B07st2aD-CgQvagSQ.js +10 -0
  148. package/dist/frameView-BOGA3ezf-QoSxzmSQ-BWs9F5mT.js +44 -0
  149. package/dist/frameView-Cy6wxW0K-BLdNZaGh.js +44 -0
  150. package/dist/{frameView-DNeCVQaY.js → frameView-g5e9PYdE.js} +1 -1
  151. package/dist/{index-BabfUVv_.js → index-BEAth5RR.js} +1057 -1033
  152. package/dist/layout-home-3Dy4onl4-COK554mq.js +228 -0
  153. package/dist/layout-home-CYHksXN_-Basy-3IH-Dnun4YUs.js +228 -0
  154. package/dist/layout-home-bl3JShSF.js +232 -0
  155. package/dist/layoutView-BaRvAbIa-xVgfqspc-zL46XaoI.js +3302 -0
  156. package/dist/layoutView-DMjNscJ--DvK2S5BQ.js +3302 -0
  157. package/dist/{layoutView-12Mlp9A2.js → layoutView-DmM9xk-X.js} +8 -8
  158. package/dist/log-in-Cx1dGik8-BVeEHeZ8-D7mV8pl4.js +117 -0
  159. package/dist/log-in-VAG6Cvcx-B6arurXx.js +117 -0
  160. package/dist/{log-in-1NGaA5OM.js → log-in-eGoxFTDE.js} +8 -8
  161. package/dist/log-out-COYdxrNC-ftopGZdE-Ch_UgXZv.js +130 -0
  162. package/dist/{log-out-B8_atGcQ.js → log-out-CthD_tSk.js} +4 -4
  163. package/dist/log-out-DZGaMCjC-OztBlMPh.js +130 -0
  164. package/dist/login-CqVMdNHs-CRJ-LWAK.js +241 -0
  165. package/dist/login-Dg9ofNS8-Bocp1XMA-DY4y3cAG.js +241 -0
  166. package/dist/{login-5dydO6GR.js → login-Dn7iO3SU.js} +16 -16
  167. package/dist/login-log-DJBGJVV0-AoOyj0jD-AoOyj0jD.js +70 -0
  168. package/dist/login-log-DJBGJVV0-AoOyj0jD.js +70 -0
  169. package/dist/{lov-view-DPvGUu3h.js → lov-view-Bt23RK6S.js} +7 -7
  170. package/dist/lov-view-C0T5prk8-B2DBmn55-BvzOsVW8.js +97 -0
  171. package/dist/lov-view-Cc68_28B-y4f2SzBr.js +97 -0
  172. package/dist/{menuInfo-DVADYfEK.js → menuInfo-BEmcSaIX.js} +1 -1
  173. package/dist/menuInfo-BIrIaJlH-Bxn4KTWH.js +4 -0
  174. package/dist/menuInfo-BZJ_q7bz-Drho-_QC-BK5n3Shr.js +4 -0
  175. package/dist/menuInfo.vue_vue_type_style_index_0_lang-BA8xjUo3-BCZ1wipf-DEApwWGK.js +363 -0
  176. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DgsifDrm.js → menuInfo.vue_vue_type_style_index_0_lang-CVuG-x2a.js} +2 -2
  177. package/dist/menuInfo.vue_vue_type_style_index_0_lang-DlE4w35X-gWYo2VJe.js +363 -0
  178. package/dist/{pda-app-BZXs-2BQ.js → pda-app-BKfXoKAs.js} +9 -9
  179. package/dist/pda-app-DnjphrRS-4tIZDsnN.js +710 -0
  180. package/dist/pda-app-m9hsppHo-B4xyja1o-9mD3zI7J.js +710 -0
  181. package/dist/redirect-BqegffKC-CBCIuqmz-46JkXpSM.js +15 -0
  182. package/dist/redirect-BqegffKC-CBCIuqmz.js +15 -0
  183. package/dist/resource-C6KEIXu--B_ddyecm-CFF-A4cr.js +97 -0
  184. package/dist/{resource-BZA9NFKc.js → resource-CshrvEYp.js} +4 -4
  185. package/dist/resource-DISgPDM7-C4P8jqU0.js +97 -0
  186. package/dist/su-welcome-BjbuSrBZ-DrInu823.js +49339 -0
  187. package/dist/su-welcome-CYYy-dzr-D3RKPoB0-DhP783YJ.js +42089 -0
  188. package/dist/su-welcome-t7YusM3U.js +49427 -0
  189. package/dist/sys-config-DCjJGtht-DARDjlrt-Dx8559bf.js +370 -0
  190. package/dist/{sys-config-DQmNjWH4.js → sys-config-Jqj3l7NK.js} +13 -13
  191. package/dist/sys-config-Yc9vh1t1-B3bJPd9S.js +370 -0
  192. package/dist/udp-core.css +1 -1
  193. package/dist/utogether-MlnyYtNS-CGgjFNPS-CGgjFNPS.js +4 -0
  194. package/dist/utogether-MlnyYtNS-CGgjFNPS.js +4 -0
  195. package/package.json +5 -2
  196. package/src/App.vue +71 -71
  197. package/src/components/udp/content/index.vue +88 -88
  198. package/src/components/udp/form-upload/form-upload.vue +492 -492
  199. package/src/components/udp/grid/index.vue +524 -524
  200. package/src/components/udp/index.ts +6 -6
  201. package/src/components/udp/ut-stamp-badge/index.vue +271 -271
  202. package/src/components/udp/utils.ts +408 -408
  203. package/src/layout/components/lay-content/index.vue +136 -136
  204. package/src/layout/components/lay-search/components/SearchModal.vue +181 -189
  205. package/src/layout/components/lay-setting/index.vue +503 -503
  206. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -101
  207. package/src/layout/components/lay-tag/index.vue +598 -598
  208. package/src/layout/hooks/useNav.ts +176 -176
  209. package/src/layout/hooks/useTag.ts +227 -227
  210. package/src/layout/layoutView.vue +216 -216
  211. package/src/layout/types.ts +93 -93
  212. package/src/main.ts +111 -112
  213. package/src/plugins/i18n/zh.ts +1 -0
  214. package/src/plugins/vxe-table/index.ts +116 -116
  215. package/src/plugins/vxe-table/render.tsx +968 -968
  216. package/src/router/index.ts +187 -187
  217. package/src/router/modules/home.ts +32 -32
  218. package/src/router/utils.ts +420 -420
  219. package/src/store/modules/epTheme.ts +48 -48
  220. package/src/style/vxetable.scss +364 -356
  221. package/src/utils/dataFormat/index.ts +222 -222
  222. package/src/utils/lifecycle.ts +39 -39
  223. package/src/views/organization/department/DepartmentPanel.vue +303 -303
  224. package/src/views/organization/staff/StaffInfo.vue +127 -127
  225. package/src/views/organization/staff/StaffPanel.vue +3 -3
  226. package/src/views/system/layout/layout-home.vue +46 -7
  227. package/src/views/system/menu/AuthorityPanel.vue +141 -141
  228. package/src/views/system/menu/SystemMenu.vue +194 -194
  229. package/src/views/system/menu/menuInfo.vue +1 -1
  230. package/src/views/system/sysUser/SysUserPanel.vue +363 -363
  231. package/src/views/udev/coderule/code-rule.vue +132 -132
  232. package/src/views/udev/dict/DictView.vue +118 -118
  233. package/src/views/udev/dict/childView.vue +184 -184
  234. package/src/views/udev/lov/childView.vue +174 -174
  235. package/src/views/uhome/components/common-menu.vue +118 -0
  236. package/src/views/uhome/components/dynamic-component.vue +66 -0
  237. package/src/views/uhome/components/home-todo.vue +171 -0
  238. package/src/views/uhome/components/menu-favorite.vue +315 -315
  239. package/src/views/uhome/dynamic-card.vue +18 -19
  240. package/src/views/uhome/su-welcome.vue +47 -117
  241. package/src/views/ulogin/login.vue +336 -336
  242. package/src/views/upms/interface/log-in.vue +100 -100
  243. package/src/views/upms/interface/log-out.vue +104 -104
  244. package/src/views/upms/user/login-log.vue +54 -54
  245. package/types/global.d.ts +232 -232
  246. package/dist/await-to-js.es5-BtRbN2QH.js +0 -10
  247. package/dist/layout-home-Cis1KlEr.js +0 -195
  248. package/dist/su-welcome-BXe6Cdp3.js +0 -580
@@ -1,524 +1,524 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2021-11-17 16:33:37
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-11-25 18:44:36
6
- * @Description: file content
7
- -->
8
- <template>
9
- <div style="width: 100%; height: 100%">
10
- <vxe-grid
11
- ref="xgrid"
12
- v-bind="data"
13
- class="ut-grid-wrapper"
14
- v-on="attrs.events || {}"
15
- @toolbarButtonClick="toolbarButtonClick"
16
- @toolbarToolClick="toolbarButtonClick"
17
- @cell-click="cellClick"
18
- @cell-dblclick="cellDbclick"
19
- @edit-activated="editEctivated"
20
- @form-reset="onReset"
21
- />
22
- <!-- <SearchScheme
23
- v-if="showModal && props.url"
24
- :items="items"
25
- :view="viewCode"
26
- @search="onSearch"
27
- @close="showModal = false"
28
- /> -->
29
- </div>
30
- </template>
31
-
32
- <script lang="ts" setup>
33
- // @ts-nocheck
34
- import { useI18n } from 'vue-i18n';
35
- import { ref, onBeforeMount, reactive, getCurrentInstance, toRaw, useAttrs, onUnmounted, nextTick } from 'vue';
36
- import { VxeGridProps } from 'vxe-table';
37
- import Sortable from 'sortablejs';
38
- import { clone } from 'xe-utils';
39
- import { i18nColums, formatRules, errorMessage, dbstorage, warnMessage } from '@utogether/utils';
40
- // import { http } from '../../../utils/udp/http';
41
- import { formatGridItems } from '../../../utils/dataFormat';
42
- import {
43
- queryAll,
44
- query,
45
- del,
46
- save,
47
- footerSumMethod,
48
- getToolBarConfig,
49
- defaultColums,
50
- onCheckMethod,
51
- getAttrs
52
- } from '../utils';
53
- // import SearchScheme from '../components/SuSearch.vue';
54
-
55
- defineOptions({
56
- name: 'UtGrid'
57
- });
58
-
59
- export interface IProps {
60
- checkMethod?: Function;
61
- serviceCode?: IRecord;
62
- defaultValue?: IRecord;
63
- defaultParams?: IRecord;
64
- url?: string | IRecord;
65
- columns: Array<ITableColProps>;
66
- items?: Array<IFormItemProps>;
67
- editable?: boolean;
68
- needExport?: boolean; // 是否需要导出
69
- autoLoad?: boolean; // 自动加载查询数据
70
- }
71
-
72
- const attrs: IRecord = getAttrs(useAttrs());
73
-
74
- const kSTORECOLUM = 'U_TABLE_COLUMNN_SORT';
75
- let storeColums;
76
- const cacheColumns = {};
77
-
78
- // console.log(attrs);
79
- const instance = getCurrentInstance()!;
80
- const hasAuthority = instance.appContext.config.globalProperties.$hasAuthority;
81
- const serviceApi = instance.appContext.config.globalProperties.$serviceApi;
82
- const viewCode = instance.parent.type.name;
83
- const $mode = instance.appContext.config.globalProperties.$mode;
84
-
85
- const props = withDefaults(defineProps<IProps>(), {
86
- /**
87
- * @deprecated 2.10.0版本失效,
88
- * */
89
- serviceCode: (): IRecord => {
90
- return {};
91
- },
92
- items: () => [],
93
- columns: () => [],
94
- editable: true,
95
- autoLoad: true,
96
- needExport: true
97
- });
98
-
99
- const { t } = useI18n();
100
-
101
- const xgrid = ref(null);
102
- const showModal = ref(false);
103
-
104
- const favorite = {
105
- icon: 'vxe-icon-setting',
106
- name: 'favorite',
107
- events: {
108
- click: (e, option) => {
109
- if (option.name === 'favorite') {
110
- showModal.value = true;
111
- }
112
- }
113
- }
114
- };
115
-
116
- /**
117
- * @description: 根据items 获取必填选
118
- */
119
- const getRules = () => {
120
- if (!props.columns.length) return {};
121
- return formatRules(props.columns, t);
122
- };
123
- /**
124
- * @description: colum 统一添加国家化
125
- */
126
- const getColumns = () => {
127
- const columns = props.columns;
128
- if (attrs.gridId) {
129
- const cols = defaultColums
130
- .filter(f => !columns.some(s => s.field === f.field))
131
- .map(col => {
132
- if (attrs.format && ['lastUpdateDate', 'creationDate'].includes(col.field)) {
133
- col.formatter = attrs.format;
134
- col.width = 90;
135
- }
136
- return col;
137
- });
138
- const idx = columns.findIndex(s => s.field === 'operate');
139
- if (idx !== -1) {
140
- columns.splice(idx, 0, ...cols);
141
- } else {
142
- columns.push(...cols);
143
- }
144
- }
145
- const act_columns = attrs.gridId ? formatColums(columns) : columns;
146
-
147
- return i18nColums(act_columns, attrs.sortable);
148
- };
149
-
150
- dbstorage.getItem(kSTORECOLUM).then(value => {
151
- storeColums = value;
152
- data.columns = getColumns();
153
- });
154
-
155
- const data = reactive<VxeGridProps>({
156
- border: true,
157
- pagerConfig: { pageSize: attrs.pageSize || 20 },
158
- editConfig: {},
159
- editRules: getRules(),
160
- formConfig: {},
161
- columnConfig: { useKey: true },
162
- toolbarConfig: { enabled: false },
163
- sortConfig: { multiple: true, trigger: 'cell' },
164
- height: $mode ? undefined : window.innerHeight - 92,
165
-
166
- checkboxConfig: {
167
- checkMethod: ({ row }) => onCheckMethod(row, props),
168
- checkRowKeys: props.checkRowKeys
169
- },
170
- loading: false,
171
- footerRowClassName: 'ut-grid-footer',
172
- proxyConfig: {
173
- form: true, // 查询是需要启用表单代理
174
- autoLoad: props.autoLoad,
175
- showResponseMsgvxe: false,
176
- showActionMsgvxe: false,
177
- // 接收 Promise
178
- ajax: {
179
- queryAll: ({ form }) => queryAll(props, serviceApi, form),
180
- query: ({ page, form, code }) => {
181
- return query(props, form, page, serviceApi, code, $mode);
182
- },
183
- delete: ({ body: { removeRecords } }) => del(serviceApi, removeRecords, props),
184
- save: ({ body }) => Promise.all(save(serviceApi, body, props)),
185
- querySuccess: ({ response }) => callback('querySuccess', response),
186
- queryError: ({ response }) => callback('queryError', response),
187
- deleteSuccess: ({ response }) => callback('deleteSuccess', response),
188
- deleteError: ({ response }) => callback('deleteError', response),
189
- saveSuccess: ({ response }) => callback('saveSuccess', response),
190
- saveError: ({ response }) => callback('saveError', response)
191
- }
192
- },
193
- columns: !attrs.gridId ? getColumns() : [],
194
- ...attrs
195
- });
196
-
197
- /**
198
- * @description: 预处理查询form
199
- * @return {*} items
200
- */
201
- const getItems = () => {
202
- if (!props.items.length) return props.items;
203
- return formatGridItems(clone(props.items, true), viewCode && props.url ? favorite : viewCode);
204
- };
205
-
206
- /**
207
- * @description 格式化column
208
- * @return {*} columns
209
- */
210
- function formatColums(columns) {
211
- const customSort = storeColums ? storeColums[attrs.gridId] : {};
212
- if (!customSort) return columns;
213
- return columns
214
- .map((col, idx) => {
215
- const sort = (idx + 1) * 10;
216
- col._sort = customSort[col.field] || sort;
217
- // 缓存列索引数据
218
- cacheColumns[col.field] = col._sort;
219
- return col;
220
- })
221
- .sort((a, b) => a._sort - b._sort);
222
- }
223
-
224
- /**
225
- * @description: 设置grid参数
226
- */
227
- const setGridConfig = () => {
228
- // 查询
229
- if (props.items.length) {
230
- // data.formConfig = {};
231
- data.formConfig = {
232
- titleWidth: 100,
233
- titleAlign: 'right',
234
- items: getItems(),
235
- rules: formatRules(props.items, t),
236
- validConfig: { showMessage: false }
237
- };
238
- }
239
- // tool bar
240
- const obj = getToolBarConfig(data, props, attrs, hasAuthority);
241
- Object.assign(data, obj);
242
- // 表格id,用于自定义列
243
- if (attrs.gridId) {
244
- data.id = attrs.gridId;
245
- data.customConfig = {
246
- storage: true,
247
- mode: 'popup',
248
- checkMethod({ column }) {
249
- return column.field === 'operate' || ['checkbox', 'radio'].includes(column.type) ? false : true;
250
- },
251
- modalOptions: {
252
- width: 750,
253
- height: '75%'
254
- }
255
- };
256
- }
257
- if (attrs.mergeFooter) {
258
- // 合计方法
259
- data.showFooter = true;
260
- data.footerMethod = ({ columns, data }) => footerSumMethod({ columns, data }, attrs.mergeFooter);
261
- }
262
- };
263
- /**
264
- * @description 手动调用查询方法
265
- */
266
- const refreshData = () => {
267
- xgrid.value.commitProxy('query');
268
- };
269
- /**
270
- * @description 刷新列数据
271
- */
272
- const refreshColumn = () => {
273
- data.editRules = getRules();
274
- return xgrid.value.refreshColumn();
275
- };
276
- /**
277
- * @description 显示加载框
278
- */
279
- const showLoading = () => {
280
- data.loading = true;
281
- };
282
- /**
283
- * @description 隐藏加载框
284
- */
285
- const hiddenLoading = () => {
286
- data.loading = false;
287
- };
288
- /**
289
- * @description 获取实例方法
290
- * @return vxe-grid实例的方法
291
- */
292
- const getInstance = () => {
293
- return toRaw(xgrid.value);
294
- };
295
- /**
296
- * @description 获取表格全量数据方法
297
- * @return vxe-grid表格全量数据
298
- */
299
- const getTableData = () => {
300
- return xgrid.value.getTableData().fullData;
301
- };
302
- /**
303
- * @description 获取表格选中的行
304
- * @return vxe-grid表格勾选行
305
- */
306
- const getSelectRecords = (isFull = false) => {
307
- const columnType = props.columns[0].type;
308
- const checkRecords =
309
- columnType === 'radio' ? xgrid.value.getRadioRecord(isFull) : xgrid.value.getCheckboxRecords(isFull);
310
- if (columnType === 'checkbox' && !checkRecords.length) {
311
- warnMessage(t('message.tip_selectedRecord'));
312
- return [];
313
- } else if (columnType === 'radio' && !checkRecords) {
314
- warnMessage(t('message.tip_selectedRecord'));
315
- return null;
316
- }
317
- return checkRecords;
318
- };
319
-
320
- const callback = (cb, response) => {
321
- attrs?.callback && attrs?.callback[cb] && attrs?.callback[cb](response);
322
- };
323
-
324
- const onReset = async e => {
325
- console.log(e);
326
- const data = e.data;
327
- const items = props.items.filter(f => f.itemRender?.props?.multiple);
328
- console.log(items);
329
- items.forEach(item => {
330
- if (item.itemRender.props.defaultValue) {
331
- data[`_${item.field}`] = item.itemRender.props.defaultValue.split(',');
332
- data[`${item.field}`] = item.itemRender.props.defaultValue;
333
- } else {
334
- data[`_${item.field}`] = [];
335
- }
336
- });
337
- if (items.length) {
338
- // 多选时,重新查询一次
339
- setTimeout(() => {
340
- refreshData();
341
- }, 200);
342
- }
343
- };
344
-
345
- let sortable2: any;
346
- const columnDrop = () => {
347
- const $grid = xgrid.value;
348
- sortable2 = Sortable.create($grid.$el.querySelector('.vxe-table--header .vxe-header--row'), {
349
- disabled: !attrs.gridId,
350
- handle: '.vxe-header--column',
351
- onEnd: async sortableEvent => {
352
- const targetThElem = sortableEvent.item;
353
- const newIndex = sortableEvent.newIndex as number;
354
- const oldIndex = sortableEvent.oldIndex as number;
355
- const { fullColumn, tableColumn } = $grid.getTableColumn();
356
- const wrapperElem = targetThElem.parentNode as HTMLElement;
357
- const newColumn = fullColumn[newIndex];
358
- const item = fullColumn[oldIndex];
359
- let nodrag = false;
360
- let msg = '固定列';
361
- if (newColumn.fixed) {
362
- nodrag = false;
363
- } else if (newIndex === 0 || ['checkbox', 'radio'].includes(item.type)) {
364
- msg = '勾选列';
365
- nodrag = true;
366
- } else if (item.field === 'operate' || newIndex === fullColumn.length - 1) {
367
- nodrag = true;
368
- msg = '操作列';
369
- }
370
- if (nodrag) {
371
- // 错误的移动
372
- const oldThElem = wrapperElem.children[oldIndex] as HTMLElement;
373
- if (newIndex > oldIndex) {
374
- wrapperElem.insertBefore(targetThElem, oldThElem);
375
- } else {
376
- wrapperElem.insertBefore(targetThElem, oldThElem ? oldThElem.nextElementSibling : oldThElem);
377
- }
378
- return errorMessage(msg + '不允许拖动!');
379
- }
380
- // 获取列索引 columnIndex > fullColumn
381
- const oldColumnIndex = $grid.getColumnIndex(tableColumn[oldIndex]);
382
- const newColumnIndex = $grid.getColumnIndex(tableColumn[newIndex]);
383
- // 移动到目标列
384
- const currRow = fullColumn.splice(oldColumnIndex, 1)[0];
385
- fullColumn.splice(newColumnIndex, 0, currRow);
386
-
387
- // 拖拽方向 1: 右 -1: 左
388
- const direction = newColumnIndex - oldColumnIndex > 0 ? 1 : -1;
389
-
390
- // 获取新列
391
- const newSort = (newColumnIndex + 1) * 10;
392
- const oldSort = (oldColumnIndex + 1) * 10;
393
- // 目标列索引+1,方便后续计算
394
- const comparisonVal = newSort + 1 * direction;
395
- for (const key in cacheColumns) {
396
- const cacheValue = cacheColumns[key];
397
- if (direction > 0 && cacheValue < comparisonVal && cacheValue > oldSort) {
398
- // 大于拖拽列且小于目标列的索引,均向前移动一个单位
399
- cacheColumns[key] = cacheValue - 10 * direction;
400
- } else if (direction < 0 && cacheValue > comparisonVal && cacheValue < oldSort) {
401
- // 小于拖拽列且大于目标列的索引, 均向后移动一个单位
402
- cacheColumns[key] = cacheValue - 10 * direction;
403
- }
404
- }
405
-
406
- cacheColumns[currRow.field] = newSort;
407
-
408
- dbstorage.setItem(kSTORECOLUM, { [attrs.gridId]: cacheColumns });
409
- $grid.loadColumn(fullColumn);
410
- }
411
- });
412
- };
413
-
414
- /**
415
- * @description 常用查询面板确认查询
416
- * @param data 常用查询条件
417
- */
418
- // const onSearch = data => {
419
- // showModal.value = false;
420
- // const { form } = xgrid.value.getProxyInfo();
421
- // Object.assign(form, data);
422
- // refreshData();
423
- // };
424
-
425
- const reloadGrid = () => {
426
- setGridConfig();
427
- };
428
-
429
- /**
430
- * @description Vue实例对外暴露的相关方法或属性
431
- */
432
- defineExpose({
433
- getTableData,
434
- getSelectRecords,
435
- refreshData,
436
- refreshColumn,
437
- getInstance,
438
- showLoading,
439
- hiddenLoading,
440
- reloadGrid
441
- });
442
-
443
- const toolbarButtonClick = ({ code }) => {
444
- emit('buttonClick', code);
445
- };
446
- const cellClick = e => {
447
- emit('cellClick', e);
448
- };
449
- const cellDbclick = e => {
450
- emit('cellDbclick', e);
451
- };
452
- const editEctivated = e => {
453
- emit('editEctivated', e);
454
- };
455
-
456
- /**
457
- * @description: 监听窗口变化,动态改变表格的高度
458
- */
459
- const addResizeListener = () => {
460
- window.onresize = () => {
461
- return (() => {
462
- let height = attrs?.height || window.innerHeight - 90;
463
- if (attrs.mode !== 'inline' && !attrs?.height) {
464
- height = window.innerHeight - 180;
465
- }
466
- data.height = height < 240 ? 240 : height;
467
- })();
468
- };
469
- };
470
-
471
- let initTime: any;
472
- nextTick(() => {
473
- // 加载完成之后在绑定拖动事件
474
- initTime = setTimeout(() => {
475
- columnDrop();
476
- }, 500);
477
- });
478
- /**
479
- * @description Vue实例卸载
480
- */
481
- onUnmounted(() => {
482
- clearTimeout(initTime);
483
- sortable2 && sortable2.destroy();
484
- });
485
- /**
486
- * @description Vue实例挂载
487
- */
488
- onBeforeMount(() => {
489
- setGridConfig();
490
- addResizeListener();
491
- });
492
-
493
- const emit = defineEmits<{
494
- (e: 'buttonClick', code: string): void;
495
- (e: 'cellClick', data: any): void;
496
- (e: 'cellDbclick', data: any): void;
497
- (e: 'editEctivated', data: any): void;
498
- }>();
499
- </script>
500
-
501
- <style lang="scss">
502
- .ut-grid-wrapper {
503
- padding: 5px;
504
- background-color: #fff;
505
-
506
- .vxe-form--item {
507
- padding: 0.1em 0.8em 0.1em 0 !important;
508
-
509
- .el-select {
510
- .el-input {
511
- height: 26px;
512
- }
513
-
514
- .el-select__tags-text {
515
- color: #000;
516
- }
517
- }
518
- }
519
-
520
- .vxe-grid--layout-body-content-wrapper {
521
- overflow: hidden;
522
- }
523
- }
524
- </style>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-17 16:33:37
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-11-25 18:44:36
6
+ * @Description: file content
7
+ -->
8
+ <template>
9
+ <div style="width: 100%; height: 100%">
10
+ <vxe-grid
11
+ ref="xgrid"
12
+ v-bind="data"
13
+ class="ut-grid-wrapper"
14
+ v-on="attrs.events || {}"
15
+ @toolbarButtonClick="toolbarButtonClick"
16
+ @toolbarToolClick="toolbarButtonClick"
17
+ @cell-click="cellClick"
18
+ @cell-dblclick="cellDbclick"
19
+ @edit-activated="editEctivated"
20
+ @form-reset="onReset"
21
+ />
22
+ <!-- <SearchScheme
23
+ v-if="showModal && props.url"
24
+ :items="items"
25
+ :view="viewCode"
26
+ @search="onSearch"
27
+ @close="showModal = false"
28
+ /> -->
29
+ </div>
30
+ </template>
31
+
32
+ <script lang="ts" setup>
33
+ // @ts-nocheck
34
+ import { useI18n } from 'vue-i18n';
35
+ import { ref, onBeforeMount, reactive, getCurrentInstance, toRaw, useAttrs, onUnmounted, nextTick } from 'vue';
36
+ import { VxeGridProps } from 'vxe-table';
37
+ import Sortable from 'sortablejs';
38
+ import { clone } from 'xe-utils';
39
+ import { i18nColums, formatRules, errorMessage, dbstorage, warnMessage } from '@utogether/utils';
40
+ // import { http } from '../../../utils/udp/http';
41
+ import { formatGridItems } from '../../../utils/dataFormat';
42
+ import {
43
+ queryAll,
44
+ query,
45
+ del,
46
+ save,
47
+ footerSumMethod,
48
+ getToolBarConfig,
49
+ defaultColums,
50
+ onCheckMethod,
51
+ getAttrs
52
+ } from '../utils';
53
+ // import SearchScheme from '../components/SuSearch.vue';
54
+
55
+ defineOptions({
56
+ name: 'UtGrid'
57
+ });
58
+
59
+ export interface IProps {
60
+ checkMethod?: Function;
61
+ serviceCode?: IRecord;
62
+ defaultValue?: IRecord;
63
+ defaultParams?: IRecord;
64
+ url?: string | IRecord;
65
+ columns: Array<ITableColProps>;
66
+ items?: Array<IFormItemProps>;
67
+ editable?: boolean;
68
+ needExport?: boolean; // 是否需要导出
69
+ autoLoad?: boolean; // 自动加载查询数据
70
+ }
71
+
72
+ const attrs: IRecord = getAttrs(useAttrs());
73
+
74
+ const kSTORECOLUM = 'U_TABLE_COLUMNN_SORT';
75
+ let storeColums;
76
+ const cacheColumns = {};
77
+
78
+ // console.log(attrs);
79
+ const instance = getCurrentInstance()!;
80
+ const hasAuthority = instance.appContext.config.globalProperties.$hasAuthority;
81
+ const serviceApi = instance.appContext.config.globalProperties.$serviceApi;
82
+ const viewCode = instance.parent.type.name;
83
+ const $mode = instance.appContext.config.globalProperties.$mode;
84
+
85
+ const props = withDefaults(defineProps<IProps>(), {
86
+ /**
87
+ * @deprecated 2.10.0版本失效,
88
+ * */
89
+ serviceCode: (): IRecord => {
90
+ return {};
91
+ },
92
+ items: () => [],
93
+ columns: () => [],
94
+ editable: true,
95
+ autoLoad: true,
96
+ needExport: true
97
+ });
98
+
99
+ const { t } = useI18n();
100
+
101
+ const xgrid = ref(null);
102
+ const showModal = ref(false);
103
+
104
+ const favorite = {
105
+ icon: 'vxe-icon-setting',
106
+ name: 'favorite',
107
+ events: {
108
+ click: (e, option) => {
109
+ if (option.name === 'favorite') {
110
+ showModal.value = true;
111
+ }
112
+ }
113
+ }
114
+ };
115
+
116
+ /**
117
+ * @description: 根据items 获取必填选
118
+ */
119
+ const getRules = () => {
120
+ if (!props.columns.length) return {};
121
+ return formatRules(props.columns, t);
122
+ };
123
+ /**
124
+ * @description: colum 统一添加国家化
125
+ */
126
+ const getColumns = () => {
127
+ const columns = props.columns;
128
+ if (attrs.gridId) {
129
+ const cols = defaultColums
130
+ .filter(f => !columns.some(s => s.field === f.field))
131
+ .map(col => {
132
+ if (attrs.format && ['lastUpdateDate', 'creationDate'].includes(col.field)) {
133
+ col.formatter = attrs.format;
134
+ col.width = 90;
135
+ }
136
+ return col;
137
+ });
138
+ const idx = columns.findIndex(s => s.field === 'operate');
139
+ if (idx !== -1) {
140
+ columns.splice(idx, 0, ...cols);
141
+ } else {
142
+ columns.push(...cols);
143
+ }
144
+ }
145
+ const act_columns = attrs.gridId ? formatColums(columns) : columns;
146
+
147
+ return i18nColums(act_columns, attrs.sortable);
148
+ };
149
+
150
+ dbstorage.getItem(kSTORECOLUM).then(value => {
151
+ storeColums = value;
152
+ data.columns = getColumns();
153
+ });
154
+
155
+ const data = reactive<VxeGridProps>({
156
+ border: true,
157
+ pagerConfig: { pageSize: attrs.pageSize || 20 },
158
+ editConfig: {},
159
+ editRules: getRules(),
160
+ formConfig: {},
161
+ columnConfig: { useKey: true },
162
+ toolbarConfig: { enabled: false },
163
+ sortConfig: { multiple: true, trigger: 'cell' },
164
+ height: $mode ? undefined : window.innerHeight - 92,
165
+
166
+ checkboxConfig: {
167
+ checkMethod: ({ row }) => onCheckMethod(row, props),
168
+ checkRowKeys: props.checkRowKeys
169
+ },
170
+ loading: false,
171
+ footerRowClassName: 'ut-grid-footer',
172
+ proxyConfig: {
173
+ form: true, // 查询是需要启用表单代理
174
+ autoLoad: props.autoLoad,
175
+ showResponseMsgvxe: false,
176
+ showActionMsgvxe: false,
177
+ // 接收 Promise
178
+ ajax: {
179
+ queryAll: ({ form }) => queryAll(props, serviceApi, form),
180
+ query: ({ page, form, code }) => {
181
+ return query(props, form, page, serviceApi, code, $mode);
182
+ },
183
+ delete: ({ body: { removeRecords } }) => del(serviceApi, removeRecords, props),
184
+ save: ({ body }) => Promise.all(save(serviceApi, body, props)),
185
+ querySuccess: ({ response }) => callback('querySuccess', response),
186
+ queryError: ({ response }) => callback('queryError', response),
187
+ deleteSuccess: ({ response }) => callback('deleteSuccess', response),
188
+ deleteError: ({ response }) => callback('deleteError', response),
189
+ saveSuccess: ({ response }) => callback('saveSuccess', response),
190
+ saveError: ({ response }) => callback('saveError', response)
191
+ }
192
+ },
193
+ columns: !attrs.gridId ? getColumns() : [],
194
+ ...attrs
195
+ });
196
+
197
+ /**
198
+ * @description: 预处理查询form
199
+ * @return {*} items
200
+ */
201
+ const getItems = () => {
202
+ if (!props.items.length) return props.items;
203
+ return formatGridItems(clone(props.items, true), viewCode && props.url ? favorite : viewCode);
204
+ };
205
+
206
+ /**
207
+ * @description 格式化column
208
+ * @return {*} columns
209
+ */
210
+ function formatColums(columns) {
211
+ const customSort = storeColums ? storeColums[attrs.gridId] : {};
212
+ if (!customSort) return columns;
213
+ return columns
214
+ .map((col, idx) => {
215
+ const sort = (idx + 1) * 10;
216
+ col._sort = customSort[col.field] || sort;
217
+ // 缓存列索引数据
218
+ cacheColumns[col.field] = col._sort;
219
+ return col;
220
+ })
221
+ .sort((a, b) => a._sort - b._sort);
222
+ }
223
+
224
+ /**
225
+ * @description: 设置grid参数
226
+ */
227
+ const setGridConfig = () => {
228
+ // 查询
229
+ if (props.items.length) {
230
+ // data.formConfig = {};
231
+ data.formConfig = {
232
+ titleWidth: 100,
233
+ titleAlign: 'right',
234
+ items: getItems(),
235
+ rules: formatRules(props.items, t),
236
+ validConfig: { showMessage: false }
237
+ };
238
+ }
239
+ // tool bar
240
+ const obj = getToolBarConfig(data, props, attrs, hasAuthority);
241
+ Object.assign(data, obj);
242
+ // 表格id,用于自定义列
243
+ if (attrs.gridId) {
244
+ data.id = attrs.gridId;
245
+ data.customConfig = {
246
+ storage: true,
247
+ mode: 'popup',
248
+ checkMethod({ column }) {
249
+ return column.field === 'operate' || ['checkbox', 'radio'].includes(column.type) ? false : true;
250
+ },
251
+ modalOptions: {
252
+ width: 750,
253
+ height: '75%'
254
+ }
255
+ };
256
+ }
257
+ if (attrs.mergeFooter) {
258
+ // 合计方法
259
+ data.showFooter = true;
260
+ data.footerMethod = ({ columns, data }) => footerSumMethod({ columns, data }, attrs.mergeFooter);
261
+ }
262
+ };
263
+ /**
264
+ * @description 手动调用查询方法
265
+ */
266
+ const refreshData = () => {
267
+ xgrid.value.commitProxy('query');
268
+ };
269
+ /**
270
+ * @description 刷新列数据
271
+ */
272
+ const refreshColumn = () => {
273
+ data.editRules = getRules();
274
+ return xgrid.value.refreshColumn();
275
+ };
276
+ /**
277
+ * @description 显示加载框
278
+ */
279
+ const showLoading = () => {
280
+ data.loading = true;
281
+ };
282
+ /**
283
+ * @description 隐藏加载框
284
+ */
285
+ const hiddenLoading = () => {
286
+ data.loading = false;
287
+ };
288
+ /**
289
+ * @description 获取实例方法
290
+ * @return vxe-grid实例的方法
291
+ */
292
+ const getInstance = () => {
293
+ return toRaw(xgrid.value);
294
+ };
295
+ /**
296
+ * @description 获取表格全量数据方法
297
+ * @return vxe-grid表格全量数据
298
+ */
299
+ const getTableData = () => {
300
+ return xgrid.value.getTableData().fullData;
301
+ };
302
+ /**
303
+ * @description 获取表格选中的行
304
+ * @return vxe-grid表格勾选行
305
+ */
306
+ const getSelectRecords = (isFull = false) => {
307
+ const columnType = props.columns[0].type;
308
+ const checkRecords =
309
+ columnType === 'radio' ? xgrid.value.getRadioRecord(isFull) : xgrid.value.getCheckboxRecords(isFull);
310
+ if (columnType === 'checkbox' && !checkRecords.length) {
311
+ warnMessage(t('message.tip_selectedRecord'));
312
+ return [];
313
+ } else if (columnType === 'radio' && !checkRecords) {
314
+ warnMessage(t('message.tip_selectedRecord'));
315
+ return null;
316
+ }
317
+ return checkRecords;
318
+ };
319
+
320
+ const callback = (cb, response) => {
321
+ attrs?.callback && attrs?.callback[cb] && attrs?.callback[cb](response);
322
+ };
323
+
324
+ const onReset = async e => {
325
+ console.log(e);
326
+ const data = e.data;
327
+ const items = props.items.filter(f => f.itemRender?.props?.multiple);
328
+ console.log(items);
329
+ items.forEach(item => {
330
+ if (item.itemRender.props.defaultValue) {
331
+ data[`_${item.field}`] = item.itemRender.props.defaultValue.split(',');
332
+ data[`${item.field}`] = item.itemRender.props.defaultValue;
333
+ } else {
334
+ data[`_${item.field}`] = [];
335
+ }
336
+ });
337
+ if (items.length) {
338
+ // 多选时,重新查询一次
339
+ setTimeout(() => {
340
+ refreshData();
341
+ }, 200);
342
+ }
343
+ };
344
+
345
+ let sortable2: any;
346
+ const columnDrop = () => {
347
+ const $grid = xgrid.value;
348
+ sortable2 = Sortable.create($grid.$el.querySelector('.vxe-table--header .vxe-header--row'), {
349
+ disabled: !attrs.gridId,
350
+ handle: '.vxe-header--column',
351
+ onEnd: async sortableEvent => {
352
+ const targetThElem = sortableEvent.item;
353
+ const newIndex = sortableEvent.newIndex as number;
354
+ const oldIndex = sortableEvent.oldIndex as number;
355
+ const { fullColumn, tableColumn } = $grid.getTableColumn();
356
+ const wrapperElem = targetThElem.parentNode as HTMLElement;
357
+ const newColumn = fullColumn[newIndex];
358
+ const item = fullColumn[oldIndex];
359
+ let nodrag = false;
360
+ let msg = '固定列';
361
+ if (newColumn.fixed) {
362
+ nodrag = false;
363
+ } else if (newIndex === 0 || ['checkbox', 'radio'].includes(item.type)) {
364
+ msg = '勾选列';
365
+ nodrag = true;
366
+ } else if (item.field === 'operate' || newIndex === fullColumn.length - 1) {
367
+ nodrag = true;
368
+ msg = '操作列';
369
+ }
370
+ if (nodrag) {
371
+ // 错误的移动
372
+ const oldThElem = wrapperElem.children[oldIndex] as HTMLElement;
373
+ if (newIndex > oldIndex) {
374
+ wrapperElem.insertBefore(targetThElem, oldThElem);
375
+ } else {
376
+ wrapperElem.insertBefore(targetThElem, oldThElem ? oldThElem.nextElementSibling : oldThElem);
377
+ }
378
+ return errorMessage(msg + '不允许拖动!');
379
+ }
380
+ // 获取列索引 columnIndex > fullColumn
381
+ const oldColumnIndex = $grid.getColumnIndex(tableColumn[oldIndex]);
382
+ const newColumnIndex = $grid.getColumnIndex(tableColumn[newIndex]);
383
+ // 移动到目标列
384
+ const currRow = fullColumn.splice(oldColumnIndex, 1)[0];
385
+ fullColumn.splice(newColumnIndex, 0, currRow);
386
+
387
+ // 拖拽方向 1: 右 -1: 左
388
+ const direction = newColumnIndex - oldColumnIndex > 0 ? 1 : -1;
389
+
390
+ // 获取新列
391
+ const newSort = (newColumnIndex + 1) * 10;
392
+ const oldSort = (oldColumnIndex + 1) * 10;
393
+ // 目标列索引+1,方便后续计算
394
+ const comparisonVal = newSort + 1 * direction;
395
+ for (const key in cacheColumns) {
396
+ const cacheValue = cacheColumns[key];
397
+ if (direction > 0 && cacheValue < comparisonVal && cacheValue > oldSort) {
398
+ // 大于拖拽列且小于目标列的索引,均向前移动一个单位
399
+ cacheColumns[key] = cacheValue - 10 * direction;
400
+ } else if (direction < 0 && cacheValue > comparisonVal && cacheValue < oldSort) {
401
+ // 小于拖拽列且大于目标列的索引, 均向后移动一个单位
402
+ cacheColumns[key] = cacheValue - 10 * direction;
403
+ }
404
+ }
405
+
406
+ cacheColumns[currRow.field] = newSort;
407
+
408
+ dbstorage.setItem(kSTORECOLUM, { [attrs.gridId]: cacheColumns });
409
+ $grid.loadColumn(fullColumn);
410
+ }
411
+ });
412
+ };
413
+
414
+ /**
415
+ * @description 常用查询面板确认查询
416
+ * @param data 常用查询条件
417
+ */
418
+ // const onSearch = data => {
419
+ // showModal.value = false;
420
+ // const { form } = xgrid.value.getProxyInfo();
421
+ // Object.assign(form, data);
422
+ // refreshData();
423
+ // };
424
+
425
+ const reloadGrid = () => {
426
+ setGridConfig();
427
+ };
428
+
429
+ /**
430
+ * @description Vue实例对外暴露的相关方法或属性
431
+ */
432
+ defineExpose({
433
+ getTableData,
434
+ getSelectRecords,
435
+ refreshData,
436
+ refreshColumn,
437
+ getInstance,
438
+ showLoading,
439
+ hiddenLoading,
440
+ reloadGrid
441
+ });
442
+
443
+ const toolbarButtonClick = ({ code }) => {
444
+ emit('buttonClick', code);
445
+ };
446
+ const cellClick = e => {
447
+ emit('cellClick', e);
448
+ };
449
+ const cellDbclick = e => {
450
+ emit('cellDbclick', e);
451
+ };
452
+ const editEctivated = e => {
453
+ emit('editEctivated', e);
454
+ };
455
+
456
+ /**
457
+ * @description: 监听窗口变化,动态改变表格的高度
458
+ */
459
+ const addResizeListener = () => {
460
+ window.onresize = () => {
461
+ return (() => {
462
+ let height = attrs?.height || window.innerHeight - 90;
463
+ if (attrs.mode !== 'inline' && !attrs?.height) {
464
+ height = window.innerHeight - 180;
465
+ }
466
+ data.height = height < 240 ? 240 : height;
467
+ })();
468
+ };
469
+ };
470
+
471
+ let initTime: any;
472
+ nextTick(() => {
473
+ // 加载完成之后在绑定拖动事件
474
+ initTime = setTimeout(() => {
475
+ columnDrop();
476
+ }, 500);
477
+ });
478
+ /**
479
+ * @description Vue实例卸载
480
+ */
481
+ onUnmounted(() => {
482
+ clearTimeout(initTime);
483
+ sortable2 && sortable2.destroy();
484
+ });
485
+ /**
486
+ * @description Vue实例挂载
487
+ */
488
+ onBeforeMount(() => {
489
+ setGridConfig();
490
+ addResizeListener();
491
+ });
492
+
493
+ const emit = defineEmits<{
494
+ (e: 'buttonClick', code: string): void;
495
+ (e: 'cellClick', data: any): void;
496
+ (e: 'cellDbclick', data: any): void;
497
+ (e: 'editEctivated', data: any): void;
498
+ }>();
499
+ </script>
500
+
501
+ <style lang="scss">
502
+ .ut-grid-wrapper {
503
+ padding: 5px;
504
+ background-color: #fff;
505
+
506
+ .vxe-form--item {
507
+ padding: 0.1em 0.8em 0.1em 0 !important;
508
+
509
+ .el-select {
510
+ .el-input {
511
+ height: 26px;
512
+ }
513
+
514
+ .el-select__tags-text {
515
+ color: #000;
516
+ }
517
+ }
518
+ }
519
+
520
+ .vxe-grid--layout-body-content-wrapper {
521
+ overflow: hidden;
522
+ }
523
+ }
524
+ </style>