@utogether/udp-core 1.0.1 → 1.0.2

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 (239) hide show
  1. package/build/plugins.ts +13 -2
  2. package/dist/{403-JWjatlxJ.js → 403-B1rIjAAu.js} +7 -6
  3. package/dist/{404-BcdMJfPb.js → 404-mBqc2y4t.js} +14 -13
  4. package/dist/{500-bsa3F_cc.js → 500-BoI45Zdh.js} +10 -9
  5. package/dist/{AuthorityInfo-CqItgNs5.js → AuthorityInfo-B08NBIIn.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BLP1SaiH.js +100 -0
  7. package/dist/{AuthorityPanel-BaLMwMgW.js → AuthorityPanel-BeBNiwqc.js} +1 -1
  8. package/dist/{AuthorityPanel.vue_vue_type_style_index_0_lang-C_bkqLD9.js → AuthorityPanel.vue_vue_type_style_index_0_lang-CIYmnP9-.js} +6 -6
  9. package/dist/{Company-DVff9IA7.js → Company-JGGyWEWH.js} +3 -3
  10. package/dist/{CompanyPanel-CNrdq4XE.js → CompanyPanel-BQ_cCmDx.js} +16 -16
  11. package/dist/{Department-CqcpfL4i.js → Department-z2iO6hwM.js} +10 -10
  12. package/dist/{DepartmentPanel-Bvti4LGu.js → DepartmentPanel-BtQe7zwU.js} +108 -78
  13. package/dist/{DesignPanel-CjykspE1.js → DesignPanel-7mhtVWas.js} +1 -1
  14. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BK9EERdd.js → DesignPanel.vue_vue_type_style_index_0_lang-4EsHemj_.js} +24 -26
  15. package/dist/DictView-CjchV2Yk.js +109 -0
  16. package/dist/InvOrganization-Pn1O_XP0.js +74 -0
  17. package/dist/Org-BqytV_vi.js +39 -0
  18. package/dist/{Preview-Cm_7RhYU.js → Preview-CLpUUMay.js} +2 -2
  19. package/dist/{ReportDefine-CJVlQ--7.js → ReportDefine-Cz1KtEUF.js} +1 -1
  20. package/dist/{ReportDesign-B0unlrkt.js → ReportDesign-BaORYud4.js} +46 -46
  21. package/dist/{ReportQuery-BKuMCEvF.js → ReportQuery-CPCPXiXz.js} +5 -5
  22. package/dist/{ReportQueryFrom-DAngMJLU.js → ReportQueryFrom-C_AcrfkJ.js} +1 -1
  23. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CPpwmztJ.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Bm67ejay.js} +6 -5
  24. package/dist/{ReportTemplate-8YH3L8Pv.js → ReportTemplate-CFiNMz79.js} +26 -26
  25. package/dist/{Role-MxI30-0W.js → Role-B-XDoJd5.js} +6 -6
  26. package/dist/{RoleAssign-BzUY_y_y.js → RoleAssign-BolW8YVs.js} +9 -9
  27. package/dist/{RolePanel-DS_TErTn.js → RolePanel-2kfs5tw9.js} +1 -1
  28. package/dist/{RolePanel-CXdcvsR5.js → RolePanel-HilSuYns.js} +1 -1
  29. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-CE4gApUY.js +132 -0
  30. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Ddl-A7Zh.js → RolePanel.vue_vue_type_script_setup_true_lang-DPzgfAyV.js} +42 -36
  31. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-DnchUgIF.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCTH4RkH.js} +20 -20
  32. package/dist/{Staff-D7tXo_Gn.js → Staff-BTk3whFC.js} +3 -3
  33. package/dist/{StaffInfo-Bk8BY8PO.js → StaffInfo-d3AuSzlA.js} +1 -1
  34. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DqKwZi5f.js → StaffInfo.vue_vue_type_script_setup_true_lang-eOL4VlfE.js} +13 -13
  35. package/dist/{StaffPanel-VtpGCTIq.js → StaffPanel-DV-D4jjz.js} +1 -1
  36. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-4sFq3CEo.js +135 -0
  37. package/dist/{SysUser-D0Q6OvD7.js → SysUser-BnjYytws.js} +2 -2
  38. package/dist/{SysUserPanel-1_vrsANQ.js → SysUserPanel-CBoyD-Qi.js} +1 -1
  39. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-PrTlTZR-.js +341 -0
  40. package/dist/{SystemMenu-9PG3vESE.js → SystemMenu-kYB_ZaUt.js} +49 -47
  41. package/dist/{UserInfo-qgXUEGwi.js → UserInfo-4dx97VBL.js} +1 -1
  42. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-CN0C5rVk.js → UserInfo.vue_vue_type_style_index_0_lang-BpbC_ZDm.js} +35 -33
  43. package/dist/{childView-C7ZSA5fR.js → childView-CHPNfTEb.js} +1 -1
  44. package/dist/{childView-yV2QLwfA.js → childView-CKA_JgVZ.js} +1 -1
  45. package/dist/{childView.vue_vue_type_style_index_0_lang-DdKxPGdh.js → childView.vue_vue_type_style_index_0_lang-Bym2fQRd.js} +7 -7
  46. package/dist/childView.vue_vue_type_style_index_0_lang-W7bCtXeu.js +177 -0
  47. package/dist/{code-rule-95K1jr-u.js → code-rule-CbxuZg0-.js} +42 -41
  48. package/dist/core.es.js +19 -10
  49. package/dist/{cron-task-DGrQwOHs.js → cron-task-nTOpqQYf.js} +5 -5
  50. package/dist/flow-task-B07st2aD.js +10 -0
  51. package/dist/{frameView-7SmME93D.js → frameView-Z1tPUyCh.js} +15 -14
  52. package/dist/img/l_img.svg +1 -1
  53. package/dist/img/minicolors.png +0 -0
  54. package/dist/img/v_img.svg +1 -1
  55. package/dist/index-C3q8HoJM.js +4650 -0
  56. package/dist/{layoutView-C6WIVWGZ.js → layoutView--MGA9zUB.js} +1776 -1764
  57. package/dist/{log-in-e7D5Ss1P.js → log-in-CSYJDA6m.js} +36 -29
  58. package/dist/log-out-DiwGCg7p.js +130 -0
  59. package/dist/login-C6Y0ajDp.js +251 -0
  60. package/dist/{login-log-CvVnyGi3.js → login-log-C0V-_l3F.js} +6 -4
  61. package/dist/{lov-view-DoF5LqFQ.js → lov-view-Cmv7wZZ9.js} +9 -9
  62. package/dist/{menuInfo-CNzGQwOD.js → menuInfo-UeutJpOa.js} +1 -1
  63. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-51SYxVc_.js → menuInfo.vue_vue_type_style_index_0_lang-CWX4Mu67.js} +144 -121
  64. package/dist/pda-app-B6w99SJo.js +710 -0
  65. package/dist/redirect-BqegffKC.js +15 -0
  66. package/dist/{resource-gVFFMO9l.js → resource-BybJvUv0.js} +17 -17
  67. package/dist/{su-welcome-BN_s_RX_.js → su-welcome-C1bmxHoY.js} +124 -126
  68. package/dist/sys-config-BnmIDnCj.js +370 -0
  69. package/dist/udp-core.css +1 -9
  70. package/dist/utogether-MlnyYtNS.js +4 -0
  71. package/index.ts +19 -6
  72. package/package.json +18 -17
  73. package/src/App.vue +2 -7
  74. package/src/api/http.ts +1 -4
  75. package/src/api/index.ts +5 -3
  76. package/src/api/user.ts +2 -2
  77. package/src/components/SuCharts/src/UserInfo.vue +3 -3
  78. package/src/components/SuScrollTree/ScrollPanel.vue +4 -9
  79. package/src/components/udp/content/index.vue +88 -0
  80. package/src/components/udp/form/form.vue +109 -0
  81. package/src/components/udp/grid/index.vue +524 -0
  82. package/src/components/udp/index.ts +5 -4
  83. package/src/components/udp/ut-stamp-badge/index.vue +271 -0
  84. package/src/components/udp/utils.ts +408 -40
  85. package/src/directives/permission/index.ts +1 -1
  86. package/src/layout/components/lay-navbar/index.vue +9 -7
  87. package/src/layout/components/lay-panel/index.vue +3 -3
  88. package/src/layout/components/lay-search/index.vue +1 -1
  89. package/src/layout/components/lay-select-org/index.vue +4 -9
  90. package/src/layout/components/lay-setting/index.vue +503 -510
  91. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  92. package/src/layout/components/lay-sidebar/horizontal.vue +8 -6
  93. package/src/layout/components/lay-sidebar/mixNav.vue +260 -258
  94. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -98
  95. package/src/layout/components/lay-tag/index.vue +598 -625
  96. package/src/layout/hooks/useDataThemeChange.ts +1 -1
  97. package/src/layout/hooks/useNav.ts +176 -173
  98. package/src/layout/hooks/useTag.ts +227 -233
  99. package/src/layout/layoutView.vue +215 -215
  100. package/src/layout/types.ts +93 -92
  101. package/src/main.ts +115 -109
  102. package/src/plugins/i18n/en.ts +26 -13
  103. package/src/plugins/i18n/module/u-workflow.ts +1 -1
  104. package/src/plugins/i18n/zh.ts +363 -337
  105. package/src/plugins/vxe-table/index.ts +74 -4
  106. package/src/plugins/vxe-table/render.tsx +186 -58
  107. package/src/router/index.ts +187 -183
  108. package/src/router/modules/flow.ts +35 -0
  109. package/src/router/modules/home.ts +32 -32
  110. package/src/router/modules/remaining.ts +1 -26
  111. package/src/router/utils.ts +420 -377
  112. package/src/store/modules/app.ts +2 -4
  113. package/src/store/modules/epTheme.ts +48 -49
  114. package/src/store/modules/multiTags.ts +15 -14
  115. package/src/store/modules/permission.ts +25 -15
  116. package/src/store/modules/system.ts +1 -3
  117. package/src/style/button.scss +11 -4
  118. package/src/style/login.css +1 -1
  119. package/src/style/tailwind.css +1 -68
  120. package/src/style/vxetable.scss +103 -11
  121. package/src/utils/authority/index.ts +1 -1
  122. package/src/utils/dataFormat/index.ts +223 -223
  123. package/src/utils/index.ts +3 -1
  124. package/src/utils/lifecycle.ts +39 -20
  125. package/src/utils/propTypes.ts +1 -6
  126. package/src/utils/storage/index.ts +2 -2
  127. package/src/utils/{http → udp/http}/index.ts +27 -30
  128. package/src/utils/{http → udp/http}/types.d.ts +2 -6
  129. package/src/views/login/login-view.vue +6 -20
  130. package/src/views/organization/company/CompanyPanel.vue +2 -2
  131. package/src/views/organization/department/Department.vue +58 -58
  132. package/src/views/organization/department/DepartmentPanel.vue +303 -283
  133. package/src/views/organization/inv-org/InvOrganization.vue +23 -9
  134. package/src/views/organization/org/Org.vue +9 -5
  135. package/src/views/organization/staff/StaffInfo.vue +127 -133
  136. package/src/views/organization/staff/StaffPanel.vue +162 -145
  137. package/src/views/system/cron/cron-task.vue +2 -12
  138. package/src/views/system/menu/AuthorityPanel.vue +2 -2
  139. package/src/views/system/menu/SystemMenu.vue +14 -20
  140. package/src/views/system/menu/menuInfo.vue +39 -23
  141. package/src/views/system/role/AuthorityInfo.vue +19 -15
  142. package/src/views/system/role/Role.vue +1 -5
  143. package/src/views/system/role/RolePanel.vue +11 -2
  144. package/src/views/system/role/UserInfo.vue +11 -9
  145. package/src/views/system/role-assign/RoleAssign.vue +2 -2
  146. package/src/views/system/role-assign/RolePanel.vue +12 -9
  147. package/src/views/system/sys/sys-config.vue +70 -21
  148. package/src/views/system/sysUser/SysUserPanel.vue +347 -278
  149. package/src/views/uapp/pda/pda-app.vue +48 -16
  150. package/src/views/udev/coderule/code-rule.vue +132 -121
  151. package/src/views/udev/dict/DictView.vue +118 -106
  152. package/src/views/udev/dict/childView.vue +183 -222
  153. package/src/views/udev/lov/childView.vue +1 -7
  154. package/src/views/ufile/aggregation/File.vue +5 -5
  155. package/src/views/ufile/file/water-mark.vue +14 -14
  156. package/src/views/uhome/components/menu-favorite.vue +314 -331
  157. package/src/views/uhome/su-welcome.vue +319 -339
  158. package/src/views/ulogin/login.vue +325 -316
  159. package/src/views/upms/interface/log-in.vue +100 -106
  160. package/src/views/upms/interface/log-out.vue +104 -107
  161. package/src/views/upms/user/login-log.vue +54 -60
  162. package/src/views/urpt/design/DesignPanel.vue +16 -35
  163. package/src/views/urpt/design/Preview.vue +1 -0
  164. package/src/views/urpt/design/ReportDesign.vue +17 -23
  165. package/src/views/urpt/static-resource/resource.vue +3 -3
  166. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  167. package/src/views/utask/flow-task.vue +18 -0
  168. package/types/global.d.ts +231 -236
  169. package/vite.config.ts +13 -2
  170. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-32L40GY2.js +0 -102
  171. package/dist/DictView-q7kR9K--.js +0 -95
  172. package/dist/InvOrganization-DI45LqZV.js +0 -260
  173. package/dist/Org-CZju_ZiR.js +0 -35
  174. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DJKu6PXz.js +0 -126
  175. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-C3Ixs12y.js +0 -111
  176. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-C5XEmxsV.js +0 -288
  177. package/dist/childView.vue_vue_type_style_index_0_lang-bkmucBUL.js +0 -187
  178. package/dist/core.umd.js +0 -173
  179. package/dist/index-OswH7SsT.js +0 -9937
  180. package/dist/log-out--RRncZhN.js +0 -120
  181. package/dist/login-BhCMeCLS.js +0 -251
  182. package/dist/pda-app-nn3llDUx.js +0 -2209
  183. package/dist/redirect-CmMplDV4.js +0 -15
  184. package/dist/sys-config-DGutV-VX.js +0 -277
  185. package/dist/utogether-wFDCI28t.js +0 -182
  186. package/src/assets/images/empty.png +0 -0
  187. package/src/assets/images/logo.png +0 -0
  188. package/src/components/ReCountTo/README.md +0 -2
  189. package/src/components/ReCountTo/index.ts +0 -18
  190. package/src/components/ReCountTo/src/normal/index.tsx +0 -165
  191. package/src/components/ReCountTo/src/normal/props.ts +0 -37
  192. package/src/components/ReCountTo/src/rebound/index.tsx +0 -67
  193. package/src/components/ReCountTo/src/rebound/props.ts +0 -14
  194. package/src/components/ReCountTo/src/rebound/rebound.css +0 -77
  195. package/src/components/ReCropper/index.ts +0 -14
  196. package/src/components/ReCropper/src/index.tsx +0 -141
  197. package/src/components/ReFlicker/index.css +0 -39
  198. package/src/components/ReFlicker/index.ts +0 -50
  199. package/src/components/ReFlop/index.ts +0 -14
  200. package/src/components/ReFlop/src/Filpper.tsx +0 -99
  201. package/src/components/ReFlop/src/filpper.css +0 -184
  202. package/src/components/ReFlop/src/index.vue +0 -126
  203. package/src/components/ReFlowChart/index.ts +0 -24
  204. package/src/components/ReFlowChart/src/Control.vue +0 -139
  205. package/src/components/ReFlowChart/src/DataDialog.vue +0 -12
  206. package/src/components/ReFlowChart/src/NodePanel.vue +0 -151
  207. package/src/components/ReFlowChart/src/adpterForTurbo.ts +0 -160
  208. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.css +0 -49
  209. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.eot +0 -0
  210. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.js +0 -61
  211. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.json +0 -58
  212. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.svg +0 -47
  213. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.ttf +0 -0
  214. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff +0 -0
  215. package/src/components/ReFlowChart/src/assets/iconfont/iconfont.woff2 +0 -0
  216. package/src/components/ReFlowChart/src/config.ts +0 -62
  217. package/src/components/ReSplitPane/index.css +0 -49
  218. package/src/components/ReSplitPane/index.tsx +0 -119
  219. package/src/components/ReSplitPane/resizer.css +0 -45
  220. package/src/components/ReSplitPane/resizer.tsx +0 -30
  221. package/src/components/SuCommon/card/components/Card.vue +0 -148
  222. package/src/components/SuCommon/card/components/DialogForm.vue +0 -127
  223. package/src/components/SuCommon/card/index.vue +0 -142
  224. package/src/components/SuCommon/icon-select/index.vue +0 -241
  225. package/src/components/SuCommon/table/index.vue +0 -208
  226. package/src/components/SuCommon/utils/index.ts +0 -103
  227. package/src/components/SuCommon/utils/slot.tsx +0 -50
  228. package/src/components/udp/form-upload.vue +0 -132
  229. package/src/components/udp/modal-form.vue +0 -180
  230. package/src/utils/udp/useRender.ts +0 -420
  231. package/src/views/components/contextmenu/basic.vue +0 -74
  232. package/src/views/components/contextmenu/context-menu.vue +0 -40
  233. package/src/views/components/contextmenu/menuDynamic.vue +0 -99
  234. package/src/views/components/contextmenu/menuGroup.vue +0 -71
  235. package/src/views/components/count-to/index.vue +0 -43
  236. package/src/views/components/cropping/index.vue +0 -59
  237. package/src/views/components/cropping/picture.jpeg +0 -0
  238. package/src/views/components/split-pane/index.vue +0 -82
  239. package/src/views/components/video/index.vue +0 -57
@@ -16,13 +16,8 @@
16
16
  mode="form"
17
17
  @toolbarButtonClick="handleToolClick"
18
18
  />
19
- <MenuInfo
20
- :show="data.showDrawer"
21
- :record="data.record"
22
- :data-status="data.dataStatus"
23
- @onClose="onClose"
24
- />
25
- <AuthorityPanel :show="data.showAuthority" :record="data.record" @onClose="onClose" />
19
+ <MenuInfo :show="data.showDrawer" :record="data.record" :data-status="data.dataStatus" @close="onClose" />
20
+ <AuthorityPanel :show="data.showAuthority" :record="data.record" @close="onClose" />
26
21
  </div>
27
22
  </template>
28
23
 
@@ -63,6 +58,8 @@ const xgrid = ref(null);
63
58
 
64
59
  const url = '/uums/menu';
65
60
 
61
+ let row;
62
+
66
63
  // const buttons = [{ code: 'add', status: 'u-cyan', icon: 'plus', auth: 'add' }];
67
64
 
68
65
  const columns = [
@@ -86,22 +83,13 @@ const columns = [
86
83
  slots: {
87
84
  default: ({ row }) => {
88
85
  const type = row.menuType;
89
- const addCmp = (
90
- <ut-button status="u-cyan" icon="ri-add-fill" content="add" onTap={() => handleAdd(row)} />
91
- );
92
- const authCmp = (
93
- <ut-button icon="ri-lock-fill" content="auth" onTap={() => handleAuthorityPanel(row)} />
94
- );
86
+ const addCmp = <ut-button status="u-cyan" icon="ri-add-fill" content="add" onTap={() => handleAdd(row)} />;
87
+ const authCmp = <ut-button icon="ri-lock-fill" content="auth" onTap={() => handleAuthorityPanel(row)} />;
95
88
  return [
96
89
  <>
97
90
  {!type ? (
98
91
  <>
99
- <ut-button
100
- status="success"
101
- icon="ri-edit-box-line"
102
- content="edit"
103
- onTap={() => handleEdit(row)}
104
- />
92
+ <ut-button status="success" icon="ri-edit-box-line" content="edit" onTap={() => handleEdit(row)} />
105
93
  {['0', '5'].includes(row.menuCategory) ? addCmp : authCmp}
106
94
  </>
107
95
  ) : null}
@@ -147,9 +135,14 @@ const handleAdd = (record?: IRecord) => {
147
135
  data.record.permissionCode = record?.permissionCode;
148
136
  // data.record.menuType = !record || !record.parentId ? '0' : '1';
149
137
  data.record.menuType = '0';
138
+ data.record.showLink = 'Y';
139
+ data.record.isApprovalPage = 'N';
150
140
  data.record.menuCategory = !record ? '0' : '';
151
141
  data.record.parentId = record?.id;
152
142
  data.record.hasChildren = record?.hasChildren;
143
+ data.record.children = data.record.children || [];
144
+ console.log(data.record);
145
+ row = record;
153
146
  };
154
147
 
155
148
  // 编辑
@@ -183,7 +176,8 @@ const handleAuthorityPanel = record => {
183
176
  data.record.dispalyCode = record.permissionCode;
184
177
  };
185
178
 
186
- const onClose = () => {
179
+ const onClose = (type?, record?) => {
180
+ type === 'submit' && (row || record) && xgrid.value.getInstance().reloadTreeExpand(row || record);
187
181
  data.record = {};
188
182
  data.showDrawer = false;
189
183
  data.showAuthority = false;
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-17 16:44:08
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-08 15:43:16
5
+ * @LastEditTime: 2025-11-13 18:18:01
6
6
  * @Description: file content
7
7
  -->
8
8
 
@@ -24,16 +24,11 @@
24
24
  title-colon
25
25
  title-align="right"
26
26
  title-width="110"
27
+ transfer
27
28
  >
28
- <vxe-form-item
29
- v-if="record.menuType === '0'"
30
- :title="$t('message.menuType')"
31
- field="menuCategory"
32
- span="24"
33
- >
29
+ <vxe-form-item v-if="record.menuType === '0'" :title="$t('message.menuType')" field="menuCategory" span="24">
34
30
  <template #default="{ data }">
35
- <vxe-select v-model="data.menuCategory" :disabled="data.menuCategory === '0'">
36
- <!-- v-for="dict in dictData['SU.MENU.TYPE']?.children" -->
31
+ <vxe-select v-model="data.menuCategory" :disabled="data.menuCategory === '0'" :transfer="false">
37
32
  <vxe-option
38
33
  v-for="dict in getLovList('SU.MENU.TYPE')"
39
34
  :key="dict.dictCode"
@@ -65,12 +60,7 @@
65
60
  field="menuCode"
66
61
  span="24"
67
62
  />
68
- <vxe-form-item
69
- :title="$t('message.menuName')"
70
- :item-render="{ name: '$input' }"
71
- field="menuName"
72
- span="24"
73
- />
63
+ <vxe-form-item :title="$t('message.menuName')" :item-render="{ name: '$input' }" field="menuName" span="24" />
74
64
  <vxe-form-item
75
65
  :title="$t('message.menuNameEn')"
76
66
  field="menuNameEn"
@@ -112,6 +102,27 @@
112
102
  field="extraIcon"
113
103
  span="24"
114
104
  />
105
+ <vxe-form-item
106
+ :visible-method="({ data }) => data.menuCategory === '1'"
107
+ :title="$t('message.udp.showLink')"
108
+ :item-render="{
109
+ name: 'VxeSwitch',
110
+ props: { openLabel: '显示', closeLabel: '隐藏', closeValue: 'N', openValue: 'Y' }
111
+ }"
112
+ field="showLink"
113
+ span="24"
114
+ />
115
+ <vxe-form-item
116
+ :visible-method="({ data }) => data.menuCategory === '1'"
117
+ :title="$t('message.udp.isApprovalPage')"
118
+ :item-render="{
119
+ name: 'VxeSwitch',
120
+
121
+ props: { openLabel: '是', closeLabel: '否', closeValue: 'N', openValue: 'Y' }
122
+ }"
123
+ field="isApprovalPage"
124
+ span="24"
125
+ />
115
126
  <vxe-form-item
116
127
  v-if="['0', '5'].includes(record.menuCategory)"
117
128
  :title="$t('message.redirect')"
@@ -155,7 +166,6 @@
155
166
  <script setup lang="ts">
156
167
  import { useI18n } from 'vue-i18n';
157
168
  import { ref, watch } from 'vue';
158
- import { VxeFormPropTypes } from 'vxe-table';
159
169
  import to from 'await-to-js';
160
170
  import { templateRef } from '@vueuse/core';
161
171
  import { useSystemStoreHook } from '../../../store/modules/system';
@@ -189,7 +199,7 @@ watch(
189
199
  const serviceApi = getServiceApi();
190
200
 
191
201
  const { t } = useI18n();
192
- const rules: VxeFormPropTypes.Rules = {
202
+ const rules = {
193
203
  menuCode: [
194
204
  {
195
205
  required: true,
@@ -242,7 +252,7 @@ const authority = ref(['fetch']);
242
252
  const url = '/uums/menu';
243
253
 
244
254
  const emit = defineEmits<{
245
- (e: 'onClose', type): void;
255
+ (e: 'close', type, data?): void;
246
256
  }>();
247
257
 
248
258
  const getPrefixCode = () => {
@@ -261,6 +271,7 @@ const onSubmit = () => {
261
271
  xForm.value.validate(async valid => {
262
272
  if (!valid) {
263
273
  loading.value = true;
274
+ let resData;
264
275
  const { record, dataStatus } = props;
265
276
  if (dataStatus === 'add') {
266
277
  record.permissionCode = `${prefixCode.value}.${record.dispalyCode}`;
@@ -276,14 +287,20 @@ const onSubmit = () => {
276
287
  sort: (idx + 1) * 10
277
288
  };
278
289
  });
279
- await to(serviceApi.post(url, dataList));
290
+ const [err, res] = await to(serviceApi.post(url, dataList));
291
+ if (!err) {
292
+ // props.record.children.push(...res);
293
+ resData = res[0];
294
+ }
280
295
  }
281
296
  loading.value = false;
282
297
  } else {
298
+ record.permissionCode = record.dispalyCode;
283
299
  await to(serviceApi.put(url, [record]));
284
300
  loading.value = false;
301
+ resData = record;
285
302
  }
286
- handleClose('submit');
303
+ handleClose('submit', resData);
287
304
  }
288
305
  });
289
306
  };
@@ -304,8 +321,8 @@ const getLovList = code => {
304
321
  });
305
322
  };
306
323
  // 抽屉关闭
307
- function handleClose(type) {
308
- emit('onClose', type);
324
+ function handleClose(type, data?) {
325
+ emit('close', type, data);
309
326
  }
310
327
  </script>
311
328
 
@@ -324,7 +341,6 @@ function handleClose(type) {
324
341
  }
325
342
 
326
343
  .u-menu-prefix.vxe-input .vxe-input--inner {
327
- padding-left: 160px;
328
344
  border: 1px solid #dcdfe6;
329
345
  }
330
346
 
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-22 19:50:48
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-07-14 14:58:13
5
+ * @LastEditTime: 2025-08-12 09:02:46
6
6
  * @Description: file content
7
7
  -->
8
8
 
@@ -14,32 +14,29 @@
14
14
  :before-close="handleClose"
15
15
  direction="rtl"
16
16
  destroy-on-close
17
+ body-class="ut-draw-body"
17
18
  size="40%"
18
19
  >
19
- <div
20
- v-spinning="loading"
21
- element-loading-text="Loading..."
22
- style="position: relative; height: 80vh"
23
- >
24
- <div style="height: 85%; overflow: auto">
20
+ <div v-spinning="loading" style="position: relative; height: 100%">
21
+ <div>
25
22
  <el-tree-v2
26
23
  ref="xTree"
27
24
  :data="data.dataList"
28
25
  :props="{ children: 'children', label: 'menuName' }"
29
26
  :default-checked-keys="data.defaultCheckedKeys"
30
- :height="420"
27
+ :height="height"
31
28
  show-checkbox
32
29
  node-key="id"
33
30
  />
34
31
  </div>
35
- <div style="position: absolute; width: 100%; height: 15%">
36
- <el-divider style="margin: 16px 0" />
37
- <el-row type="flex" justify="end" style="padding-right: 20px">
38
- <ut-button content="cancel" icon="ri-close-fill" status="warning" @tap="handleClose" />
39
- <ut-button content="confirm" icon="ri-save-3-fill" status="u-cyan" @tap="onSubmit" />
40
- </el-row>
41
- </div>
42
32
  </div>
33
+ <template #footer>
34
+ <el-divider style="margin: 16px 0" />
35
+ <el-row type="flex" justify="end" style="padding-right: 20px">
36
+ <ut-button content="cancel" icon="ri-close-fill" status="warning" @tap="handleClose" />
37
+ <ut-button content="confirm" icon="ri-save-3-fill" status="u-cyan" @tap="onSubmit" />
38
+ </el-row>
39
+ </template>
43
40
  </el-drawer>
44
41
  </div>
45
42
  </template>
@@ -72,9 +69,12 @@ const data = reactive({
72
69
  defaultCheckedKeys: [] // 默认权限
73
70
  });
74
71
 
72
+ const height = window.innerHeight - 180;
73
+
75
74
  const emit = defineEmits<{
76
75
  (e: 'onClose'): void;
77
76
  }>();
77
+
78
78
  // 菜单列表
79
79
  const getDataList = async () => {
80
80
  const res = (await getServiceApi().get('/uums/menu/listMenuTree', {})) as [IRecord];
@@ -126,4 +126,8 @@ onBeforeMount(() => {
126
126
  .el-drawer__header {
127
127
  margin-bottom: 12px;
128
128
  }
129
+
130
+ .ut-draw-body {
131
+ padding: 0 12px;
132
+ }
129
133
  </style>
@@ -8,11 +8,7 @@
8
8
  <template>
9
9
  <div class="u-content-panel">
10
10
  <div class="u-left-panel">
11
- <ScrollPane
12
- :title="$t('company')"
13
- url="/uums/unit"
14
- :tree-otions="{ children: 'children', label: 'unitName' }"
15
- />
11
+ <ScrollPane :title="$t('company')" url="/uums/unit" :tree-otions="{ children: 'children', label: 'unitName' }" />
16
12
  </div>
17
13
  <div class="content">
18
14
  <role-panel />
@@ -11,6 +11,7 @@
11
11
  ref="xgrid"
12
12
  :items="formItems"
13
13
  :columns="columns"
14
+ :check-method="checkMethod"
14
15
  url="/uums/role"
15
16
  mode="form"
16
17
  @buttonClick="onButtonClick"
@@ -39,7 +40,7 @@
39
40
  :url="url"
40
41
  :method="method"
41
42
  width="400"
42
- height="220"
43
+ height="240"
43
44
  data-status="update"
44
45
  :title="$t('message.title.authEdit')"
45
46
  @close="data.showModalView = false"
@@ -105,7 +106,7 @@ const columns = [
105
106
  // <ut-button content="edit" onTap={() => handleShowChild(row, 'update')} />
106
107
  return [
107
108
  <>
108
- <ut-button content="edit" auth="edit" onTap={() => handleEdit(row)} />
109
+ <ut-button content="edit" auth="edit" disabled={row.roleCode === 'admin'} onTap={() => handleEdit(row)} />
109
110
  <ut-button
110
111
  content="dispatchUser"
111
112
  status="warning"
@@ -174,6 +175,10 @@ const handleDispathUser = record => {
174
175
  };
175
176
  // 启用/禁用
176
177
  async function handleClick({ row }) {
178
+ if (row.roleCode === 'admin') {
179
+ row.enabled = '1';
180
+ return;
181
+ }
177
182
  await getServiceApi().put('/uums/role/singleUpdate', row);
178
183
  xgrid.value.refreshData();
179
184
  }
@@ -183,6 +188,10 @@ const onClose = () => {
183
188
  data.showAuthView = false;
184
189
  data.showUserView = false;
185
190
  };
191
+
192
+ const checkMethod = row => {
193
+ return row.roleCode !== 'admin';
194
+ };
186
195
  // 拷贝当前列表项的数据(字典类型)
187
196
  // const { clipboardRef } = useCopyToClipboard();
188
197
  // const cellDBLClickEvent: VxeTableEvents.CellDblclick = ({ row }) => {
@@ -17,7 +17,9 @@
17
17
  :columns="modalColum"
18
18
  :show-footer="true"
19
19
  :editable="false"
20
+ :title="$t('message.udp.userList')"
20
21
  width="60%"
22
+ height="75%"
21
23
  @close="showModalView = false"
22
24
  @confirm="onConfirm"
23
25
  />
@@ -54,13 +56,13 @@ const emit = defineEmits<{
54
56
  const formItems: IFormItemProps[] = [
55
57
  {
56
58
  field: 'userName',
57
- title: 'message.userCode',
59
+ title: 'message.udp.userCode',
58
60
  span: 8,
59
61
  itemRender: { name: '$input' }
60
62
  },
61
63
  {
62
64
  field: 'name',
63
- title: 'message.userName',
65
+ title: 'message.udp.userName',
64
66
  span: 8,
65
67
  itemRender: { name: '$input' }
66
68
  },
@@ -88,11 +90,11 @@ const columns: ITableColProps[] = [
88
90
  { type: 'checkbox', width: 50, align: 'center' },
89
91
  {
90
92
  field: 'userName',
91
- title: 'message.userCode'
93
+ title: 'message.udp.userCode'
92
94
  },
93
95
  {
94
96
  field: 'name',
95
- title: 'message.userName'
97
+ title: 'message.udp.userName'
96
98
  },
97
99
  {
98
100
  field: 'enabled',
@@ -114,18 +116,18 @@ const buttons = [
114
116
  { code: 'delete', name: 'message.btn.del', status: 'danger', icon: 'ri-delete-bin-5-fill' }
115
117
  ];
116
118
  const modalFormItems = [
117
- { field: 'userName', title: 'message.userCode' },
118
- { field: 'name', title: 'message.userName' }
119
+ { field: 'userName', title: 'message.udp.userCode', span: 9 },
120
+ { field: 'name', title: 'message.udp.userName', span: 9 }
119
121
  ];
120
122
  const modalColum = [
121
123
  { type: 'checkbox', width: 40 },
122
- { field: 'userName', title: 'message.userCode' },
123
- { field: 'name', title: 'message.userName' },
124
+ { field: 'userName', title: 'message.udp.userCode' },
125
+ { field: 'name', title: 'message.udp.userName' },
124
126
  { field: 'enabled', width: 70, formatter: ['formatDict', 'SU.ENABLE'] }
125
127
  ];
126
128
  const xgrid = ref({} as VxeGridInstance);
127
129
  const gridOptions = reactive<VxeGridProps>({
128
- height: 560,
130
+ height: 'auto',
129
131
  border: true,
130
132
  pagerConfig: {},
131
133
  toolbarConfig: { buttons, perfect: true },
@@ -2,7 +2,7 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-26 14:37:07
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-06-24 20:20:57
5
+ * @LastEditTime: 2025-08-06 17:55:03
6
6
  * @Description: 角色分配业务单元
7
7
  -->
8
8
  <template>
@@ -11,7 +11,7 @@
11
11
  <ScrollPane
12
12
  :title="$t('SuOrg')"
13
13
  :tree-otions="{ children: 'children', label: 'orgName' }"
14
- extParam="{ pageSize: 500 }"
14
+ :default-params="{ pageSize: 500 }"
15
15
  url="/uums/org"
16
16
  />
17
17
  </div>
@@ -5,9 +5,11 @@
5
5
  :items="formItems"
6
6
  :columns="gridCol"
7
7
  :default-params="data.fetchExtParam"
8
+ :default-value="data.fetchExtParam"
8
9
  :buttons="buttons"
9
10
  :auto-load="false"
10
11
  :url="url"
12
+ :check-method="checkMethod"
11
13
  mode="form"
12
14
  @buttonClick="onButtonClick"
13
15
  />
@@ -18,8 +20,10 @@
18
20
  :columns="columns"
19
21
  :show-footer="true"
20
22
  :editable="false"
23
+ :title="$t('message.udp.roleList')"
21
24
  url="/uums/role"
22
25
  width="60%"
26
+ height="75%"
23
27
  @close="data.showModalView = false"
24
28
  @confirm="onConfirm"
25
29
  />
@@ -61,8 +65,8 @@ watch(
61
65
  const buttons = [{ code: 'del', auth: '/' }];
62
66
 
63
67
  const formItems = [
64
- { field: 'roleName', title: 'message.udp.roleName' },
65
- { field: 'roleCode', title: 'message.udp.roleCode' }
68
+ { field: 'roleName', title: 'message.udp.roleName', span: 9 },
69
+ { field: 'roleCode', title: 'message.udp.roleCode', span: 9 }
66
70
  ];
67
71
 
68
72
  const columns = [
@@ -80,14 +84,9 @@ gridCol.push({
80
84
  fixed: 'right',
81
85
  slots: {
82
86
  default: ({ row }) => {
87
+ if (row.roleCode === 'admin') return null;
83
88
  return [
84
- <ut-button
85
- icon="ri-delete-bin-5-fill"
86
- content="del"
87
- status="danger"
88
- auth="del"
89
- onTap={() => handleDel(row)}
90
- />
89
+ <ut-button icon="ri-delete-bin-5-fill" content="del" status="danger" auth="del" onTap={() => handleDel(row)} />
91
90
  ];
92
91
  }
93
92
  }
@@ -130,6 +129,10 @@ const onConfirm = async records => {
130
129
  }
131
130
  };
132
131
 
132
+ const checkMethod = row => {
133
+ return row.roleCode !== 'admin';
134
+ };
135
+
133
136
  const onButtonClick = code => {
134
137
  code === 'add' && handleAdd();
135
138
  };
@@ -1,20 +1,7 @@
1
1
  <template>
2
- <div v-spinning="loading" class="flex flex-col items-center bg-white u-system-config">
3
- <div class="flex justify-end w-1/2 p-2">
4
- <el-button type="primary" @click="submitForm(xfrom)">
5
- {{ $t('message.btn.confirm') }}
6
- </el-button>
7
- </div>
8
- <div class="flex w-1/2 p-2 overflow-y-auto border border-gray-300 rounded-md">
9
- <el-form
10
- ref="xfrom"
11
- :model="record"
12
- :rules="rules"
13
- label-width="90"
14
- size="small"
15
- status-icon
16
- class="w-full"
17
- >
2
+ <div v-spinning="loading" class="flex flex-col items-center pt-20 bg-white u-system-config">
3
+ <div class="flex w-1/2 p-3 overflow-y-auto border border-gray-300 rounded-md">
4
+ <el-form ref="xfrom" :model="record" :rules="rules" label-width="90" size="small" status-icon class="w-full">
18
5
  <el-form-item :label="$t('message.udp.systemTitle')" prop="title">
19
6
  <el-input v-model="record.title" />
20
7
  </el-form-item>
@@ -33,6 +20,26 @@
33
20
  <el-form-item :label="$t('message.udp.i18nEnabled')" prop="i18nEnabled">
34
21
  <el-switch v-model="record.i18nEnabled" active-value="Y" inactive-value="N" />
35
22
  </el-form-item>
23
+ <el-form-item :label="$t('message.udp.orgTaggle')" prop="orgTaggle">
24
+ <el-switch v-model="record.orgTaggle" active-value="Y" inactive-value="N" />
25
+ </el-form-item>
26
+ <el-form-item :label="$t('message.udp.showTitle')" prop="showTitle">
27
+ <el-switch v-model="record.showTitle" active-value="Y" inactive-value="N" />
28
+ </el-form-item>
29
+ <el-form-item
30
+ v-if="['liwei', 'yanhuaijun', 'phr', 'zhonglijun', 'ccl'].includes(cookies.get(kLOGINER))"
31
+ :label="$t('message.udp.techSupport')"
32
+ prop="techSupport"
33
+ >
34
+ <el-switch v-model="record.techSupport" active-value="Y" inactive-value="N" />
35
+ </el-form-item>
36
+ <el-form-item
37
+ v-if="['liwei', 'yanhuaijun', 'phr', 'zhonglijun', 'ccl'].includes(cookies.get(kLOGINER))"
38
+ :label="$t('message.udp.baseColor')"
39
+ prop="baseColor"
40
+ >
41
+ <vxe-color-picker v-model="record.baseColor" :colors="colorList" type="hex" clearable transfer />
42
+ </el-form-item>
36
43
  <el-form-item :label="$t('message.udp.systemLogo')">
37
44
  <el-upload
38
45
  v-model:file-list="record.logo"
@@ -100,6 +107,11 @@
100
107
  </el-form-item>
101
108
  </el-form>
102
109
  </div>
110
+ <div class="flex justify-end w-1/2 p-2">
111
+ <el-button type="primary" @click="submitForm(xfrom)">
112
+ {{ $t('message.btn.confirm') }}
113
+ </el-button>
114
+ </div>
103
115
  </div>
104
116
  </template>
105
117
 
@@ -110,7 +122,7 @@ import { useI18n } from 'vue-i18n';
110
122
  import to from 'await-to-js';
111
123
  import { successMessage, cookies, warnMessage } from '@utogether/utils';
112
124
  import { isArray } from 'xe-utils';
113
- import { kTOKEN } from '../../../contant';
125
+ import { kTOKEN, kLOGINER } from '../../../contant';
114
126
  import { getServiceApi, getBaseURL } from '../../../api';
115
127
 
116
128
  const xfrom = ref<FormInstance>();
@@ -119,7 +131,11 @@ const record = reactive({
119
131
  defaultLanguage: 'zh',
120
132
  title: 'U-DP',
121
133
  ispTitle: 'U-DP',
122
- i18nEnabled: 'Y',
134
+ baseColor: '#FFF',
135
+ i18nEnabled: 'N',
136
+ orgTaggle: 'Y',
137
+ showTitle: 'Y',
138
+ techSupport: 'Y',
123
139
  copyright: '深圳友聚信息技术有限公司',
124
140
  logo: [],
125
141
  backgroundImg: [],
@@ -134,6 +150,39 @@ const baseUrl = ref(getBaseURL());
134
150
  const url = '/upfm/v1/sysConfig';
135
151
  let dataList = [];
136
152
 
153
+ const colorList = [
154
+ '#DC143C',
155
+ '#FF1493',
156
+ '#FF00FF',
157
+ '#9932CC',
158
+ '#6A5ACD',
159
+ '#0000FF',
160
+ '#00008B',
161
+ '#778899',
162
+ '#1E90FF',
163
+ '#00BFFF',
164
+ '#5F9EA0',
165
+ '#00FFFF',
166
+ '#008080',
167
+ '#7FFFAA',
168
+ '#3CB371',
169
+ '#8FBC8F',
170
+ '#008000',
171
+ '#7CFC00',
172
+ '#556B2F',
173
+ '#FFFFE0',
174
+ '#FFFF00',
175
+ '#808000',
176
+ '#EEE8AA',
177
+ '#FFD700',
178
+ '#FFA500',
179
+ '#FF4500',
180
+ '#FA8072',
181
+ '#FF0000',
182
+ '#800000',
183
+ '#C0C0C0'
184
+ ];
185
+
137
186
  const rules = reactive<FormRules>({
138
187
  defaultLanguage: [
139
188
  {
@@ -142,9 +191,7 @@ const rules = reactive<FormRules>({
142
191
  trigger: 'blur'
143
192
  }
144
193
  ],
145
- title: [
146
- { required: true, message: t('message.required') + t('message.udp.systemTitle'), trigger: 'blur' }
147
- ]
194
+ title: [{ required: true, message: t('message.required') + t('message.udp.systemTitle'), trigger: 'blur' }]
148
195
  });
149
196
 
150
197
  const headers = computed(() => {
@@ -266,6 +313,8 @@ onMounted(() => {
266
313
  </script>
267
314
  <style lang="scss">
268
315
  .u-system-config {
316
+ padding-top: 48px;
317
+
269
318
  .el-select,
270
319
  .el-select--small {
271
320
  width: 100%;