@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
@@ -0,0 +1,4 @@
1
+ const A = "data:image/png;base64,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";
2
+ export {
3
+ A as u
4
+ };
package/index.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /*
2
2
  * @Author: levi7754 levi7754@163.com
3
3
  * @Date: 2024-04-14 19:10:28
4
- * @LastEditors: wei.li
5
- * @LastEditTime: 2024-06-26 17:08:49
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-11-10 09:23:24
6
6
  * @FilePath: /udp-front/packages/udp-core/index.ts
7
7
  * @Description:
8
8
  */
@@ -17,11 +17,15 @@ import { useSystemStoreHook as useSystemStore } from './src/store/modules/system
17
17
  import { useMultiTagsStoreHook as useMultiTagsStore } from './src/store/modules/multiTags';
18
18
  import { usePermissionStoreHook as usePermissionStore } from './src/store/modules/permission';
19
19
 
20
- import { handleAliveRoute, delCurrentRoute } from './src/router/utils';
21
-
22
- import { lifeCycleEvent } from './src/utils/lifecycle';
20
+ import { handleAliveRoute, delCurrentRoute, getProcessMenu } from './src/router/utils';
21
+ import { useLayout } from './src/layout/hooks/useLayout';
22
+ import { useDataThemeChange } from './src/layout/hooks/useDataThemeChange';
23
+ import { constantRoutes, remainingRouters, routerBefore } from './src/router';
23
24
 
24
25
  import { getServiceApi } from './src/api';
26
+ import { initDict } from './src/api/user';
27
+
28
+ import { lifeCycleEvent, getPlatform, getBrower } from './src/utils';
25
29
 
26
30
  export {
27
31
  store,
@@ -32,5 +36,14 @@ export {
32
36
  delCurrentRoute,
33
37
  handleAliveRoute,
34
38
  getServiceApi,
35
- lifeCycleEvent
39
+ lifeCycleEvent,
40
+ routerBefore,
41
+ constantRoutes,
42
+ remainingRouters,
43
+ useDataThemeChange,
44
+ useLayout,
45
+ initDict,
46
+ getPlatform,
47
+ getBrower,
48
+ getProcessMenu
36
49
  };
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
- {
2
- "name": "@utogether/udp-core",
3
- "private": false,
4
- "version": "1.0.1",
5
- "description": "",
6
- "type": "module",
7
- "main1": "index.ts",
8
- "main": "dist/core.es.js",
9
- "scripts": {
10
- "dev": "vite",
11
- "build": "vite build",
12
- "preview:build": "pnpm build && vite preview"
13
- },
14
- "keywords": [],
15
- "author": "",
16
- "license": "ISC"
17
- }
1
+ {
2
+ "name": "@utogether/udp-core",
3
+ "private": false,
4
+ "version": "1.0.2",
5
+ "description": "",
6
+ "type": "module",
7
+ "main1": "index.ts",
8
+ "main": "dist/core.es.js",
9
+ "scripts": {
10
+ "dev": "vite",
11
+ "build": "vite build",
12
+ "preview:build": "pnpm build && vite preview",
13
+ "report": "rimraf dist && vite build"
14
+ },
15
+ "keywords": [],
16
+ "author": "",
17
+ "license": "ISC"
18
+ }
package/src/App.vue CHANGED
@@ -2,11 +2,11 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-12-23 17:33:19
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-08 14:44:35
5
+ * @LastEditTime: 2025-08-13 08:39:18
6
6
  * @Description: file content
7
7
  -->
8
8
  <template>
9
- <el-config-provider size="small" :z-index="2000" :locale="currentLocale">
9
+ <el-config-provider size="small" :z-index="5555" :locale="currentLocale">
10
10
  <router-view />
11
11
  </el-config-provider>
12
12
  </template>
@@ -63,8 +63,3 @@ export default defineComponent({
63
63
  }
64
64
  });
65
65
  </script>
66
- <style lang="scss">
67
- .hiprint-printElement-image-content img {
68
- content: url('/images/logo.png');
69
- }
70
- </style>
package/src/api/http.ts CHANGED
@@ -26,10 +26,7 @@ export const getPrintTemp = (printPosition, query?) => {
26
26
  const organizationId = useSystemStoreHook().getOrganizationId;
27
27
  const orgId = useSystemStoreHook().getOrgId;
28
28
  const url = '/upms/v1/printTemplateConfig/ogn';
29
- const param = Object.assign(
30
- { pageSize: 100, pageNum: 1, orgId, organizationId, printPosition },
31
- query || {}
32
- );
29
+ const param = Object.assign({ pageSize: 100, pageNum: 1, orgId, organizationId, printPosition }, query || {});
33
30
  return new Promise(reslove => {
34
31
  http.get(`${getBaseURL()}${url}`, param).then(async (res: IResponseData) => {
35
32
  const templateCode = res.list
package/src/api/index.ts CHANGED
@@ -2,10 +2,11 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-17 16:24:43
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-11-23 10:13:07
5
+ * @LastEditTime: 2025-09-05 11:53:29
6
6
  * @Description: API封装
7
7
  */
8
8
  import { http } from '@utogether/utils';
9
+ // import { http } from '../utils/udp/http';
9
10
  import { getEnv } from '../config';
10
11
 
11
12
  // 路由相关服务
@@ -20,8 +21,9 @@ export const getServiceApi = () => {
20
21
 
21
22
  export const setRouter = router => {
22
23
  http.setRouter(router);
23
- console.log('====url', getBaseURL());
24
- // http.setBaseUrl(getBaseURL());
24
+ };
25
+ export const setBaseUrl = router => {
26
+ http.setBaseUrl(router);
25
27
  };
26
28
 
27
29
  const origin = window.location.origin + '/gateway';
package/src/api/user.ts CHANGED
@@ -2,13 +2,13 @@
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-17 16:02:30
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2024-06-06 16:29:39
5
+ * @LastEditTime: 2025-09-05 12:33:08
6
6
  * @Description: file content
7
7
  */
8
8
  import { http } from '@utogether/utils';
9
+ // import { http } from '../utils/udp/http';
9
10
  import { getBaseURL } from './';
10
11
 
11
- http.setBaseUrl(getBaseURL());
12
12
  // 私钥
13
13
  export const getPublicKey = () => http.get(`${getBaseURL()}/public/request`);
14
14
  // 获取验证码
@@ -1,8 +1,8 @@
1
1
  <!--
2
2
  * @Author: wei.li
3
3
  * @Date: 2021-11-17 16:02:30
4
- * @LastEditors: wei.li
5
- * @LastEditTime: 2021-12-02 09:28:42
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-08-14 10:01:18
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup lang="ts">
@@ -23,7 +23,7 @@ const lists = ref([
23
23
  <el-descriptions-item>
24
24
  <template #label>
25
25
  <i class="el-icon-user" />
26
- {{ $t('message.userName') }}
26
+ {{ $t('message.udp.userName') }}
27
27
  </template>
28
28
  {{ employee.userName }}
29
29
  </el-descriptions-item>
@@ -3,12 +3,7 @@
3
3
  <div class="u-panel-header">
4
4
  <h2>{{ title }}</h2>
5
5
  <ut-button v-if="showAllButton" content="BtnExpand" @click="handleExpand(data, true)" />
6
- <ut-button
7
- v-if="showAllButton"
8
- status="warning"
9
- content="BtnCollapse"
10
- @click="handleExpand(data, false)"
11
- />
6
+ <ut-button v-if="showAllButton" status="warning" content="BtnCollapse" @click="handleExpand(data, false)" />
12
7
  <vxe-button icon="vxe-icon-refresh" @click="onRefresh" />
13
8
  </div>
14
9
  <div class="u-panel-content system-scrollbar">
@@ -44,7 +39,7 @@ interface IProps {
44
39
  url: string;
45
40
  showAllButton?: boolean;
46
41
  treeOtions: Object;
47
- extParam?: Object;
42
+ defaultParams?: Object;
48
43
  }
49
44
  const props = withDefaults(defineProps<IProps>(), {
50
45
  treeOtions: () => {
@@ -53,7 +48,7 @@ const props = withDefaults(defineProps<IProps>(), {
53
48
  label: 'label'
54
49
  };
55
50
  },
56
- extParam: () => {
51
+ defaultParams: () => {
57
52
  return {};
58
53
  },
59
54
  showAllButton: false
@@ -76,7 +71,7 @@ watch(
76
71
  );
77
72
 
78
73
  const getDataList = async (params = {}) => {
79
- const query = Object.assign(params, props.extParam);
74
+ const query = Object.assign(params, props.defaultParams);
80
75
  const serverData = (await getServiceApi().get(props.url, query)) as IResponseData;
81
76
  data.value = serverData.list || serverData;
82
77
  treeList.value = serverData.list || serverData;
@@ -0,0 +1,88 @@
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2022-03-09 10:31:45
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-11-20 10:30:15
6
+ * @Description: 详情统一容器
7
+ -->
8
+ <template>
9
+ <div class="ut-content">
10
+ <StampBadge :color="stampOptions.color || 'success'" :content="stampOptions.content" :code="stampOptions.code" />
11
+ <div v-if="showTop && showContentop" class="ut-content-top" :class="title ? 'justify-between' : 'justify-end'">
12
+ <span v-if="title" class="font-black">{{ title }}</span>
13
+ <div class="ut-right-panel">
14
+ <slot name="header" />
15
+ <ut-button
16
+ v-if="showClose"
17
+ status="info"
18
+ :icon="$attrs.icon || 'ri-reply-line'"
19
+ :content="$attrs.content || 'goback'"
20
+ @tap="handleClose()"
21
+ />
22
+ </div>
23
+ </div>
24
+ <div class="ut-content-body">
25
+ <slot name="body" />
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script setup lang="ts">
31
+ import { ref } from 'vue';
32
+ import StampBadge from '../ut-stamp-badge/index.vue';
33
+ defineOptions({ name: 'UtContent' });
34
+
35
+ interface Props {
36
+ title?: string;
37
+ showTop?: boolean;
38
+ showClose?: boolean;
39
+ stampOptions?: IRecord;
40
+ }
41
+
42
+ withDefaults(defineProps<Props>(), {
43
+ title: '',
44
+ showTop: true,
45
+ showClose: true
46
+ });
47
+ const showContentop = ref(window.top === window.self);
48
+
49
+ const emit = defineEmits<{ (e: 'close'): void }>();
50
+
51
+ const handleClose = () => {
52
+ emit('close');
53
+ };
54
+ </script>
55
+
56
+ <style lang="scss" scoped>
57
+ .ut-content {
58
+ position: relative;
59
+ display: flex;
60
+ flex-direction: column;
61
+ width: 100%;
62
+ height: 100%;
63
+ padding: 0 8px;
64
+ background-color: #f7f7f7;
65
+
66
+ &-top {
67
+ position: sticky;
68
+ top: 0;
69
+ left: 0;
70
+ z-index: 10;
71
+ display: flex;
72
+ align-items: center;
73
+ height: 36px;
74
+ padding: 2px 12px;
75
+ background-color: #fff;
76
+ border: 1px solid #e0ebf6;
77
+ }
78
+
79
+ &-body {
80
+ width: 100%;
81
+ height: 100%;
82
+ margin: 5px 0;
83
+ background-color: #fff;
84
+ border: 1px solid #e0ebf6;
85
+ border-radius: 5px;
86
+ }
87
+ }
88
+ </style>
@@ -0,0 +1,109 @@
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2022-03-02 17:07:59
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-09-11 16:24:13
6
+ * @Description: SuForm
7
+ -->
8
+
9
+ <template>
10
+ <div class="width: 100%">
11
+ <vxe-form
12
+ ref="xForm"
13
+ :data="record"
14
+ :items="formItems"
15
+ :rules="rules"
16
+ :loading="loading"
17
+ :vertical="vertical"
18
+ :title-width="titleWidth"
19
+ title-overflow
20
+ title-align="right"
21
+ title-bold
22
+ v-bind="$attrs"
23
+ >
24
+ <template #dividerPrefix />
25
+ <template #collapseNode>
26
+ <vxe-checkbox
27
+ v-model="collapseStatus"
28
+ content="查看更多"
29
+ :checked-value="false"
30
+ :unchecked-value="true"
31
+ class="pl-10"
32
+ @change="onChange"
33
+ />
34
+ </template>
35
+ </vxe-form>
36
+ </div>
37
+ </template>
38
+
39
+ <script lang="ts">
40
+ export default {
41
+ name: 'UtForm'
42
+ };
43
+ </script>
44
+ <script setup lang="ts">
45
+ import { useI18n } from 'vue-i18n';
46
+ import { ref, computed } from 'vue';
47
+ import { formatRules, formatItems } from '@utogether/utils';
48
+ import { clone } from 'xe-utils';
49
+
50
+ export interface IProps {
51
+ record: IRecord; // 数据对象
52
+ items: Array<IFormItemProps>; // form item
53
+ loading?: boolean;
54
+ vertical?: boolean;
55
+ titleWidth?: number;
56
+ span?: number;
57
+ dataStatus?: string;
58
+ }
59
+
60
+ const props = withDefaults(defineProps<IProps>(), {
61
+ record: (): IRecord => {
62
+ return {};
63
+ },
64
+ items: () => [],
65
+ loading: false,
66
+ vertical: false,
67
+ titleWidth: 100,
68
+ span: 6,
69
+ dataStatus: 'detail'
70
+ });
71
+ const xForm = ref(undefined);
72
+ const { t } = useI18n();
73
+ const collapseStatus = ref(true);
74
+ /**
75
+ * @description: 根据items 获取必填选
76
+ */
77
+ const rules = computed(() => {
78
+ if (!props.items.length) return {};
79
+ return formatRules(props.items, t);
80
+ });
81
+
82
+ const formItems = computed(() => {
83
+ if (!props.items.length) return props.items;
84
+ return formatItems(clone(props.items, true), props.dataStatus, 6);
85
+ });
86
+
87
+ const onChange = () => {
88
+ xForm.value.toggleCollapse();
89
+ };
90
+
91
+ /**
92
+ * @deprecated
93
+ * @description 使用validate替换
94
+ * @param cb
95
+ */
96
+ const validateForm = (cb: Function) => {
97
+ (xForm as any).value.validate(cb);
98
+ };
99
+ const validate = (cb: Function) => {
100
+ (xForm as any).value.validate(cb);
101
+ setTimeout(() => {
102
+ xForm.value.clearValidate();
103
+ }, 1600);
104
+ };
105
+ defineExpose({
106
+ validateForm,
107
+ validate
108
+ });
109
+ </script>