@utogether/udp-core 1.0.1-beta.2 → 1.0.1-beta.20

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 (159) hide show
  1. package/build/plugins.ts +8 -1
  2. package/dist/{403-BBQoJwTM.js → 403-Bz5EJPLA.js} +1 -1
  3. package/dist/{404-BbJPSIWM.js → 404-ClOnaj9V.js} +1 -1
  4. package/dist/{500-BtFL9R4M.js → 500-DCUfhV7Y.js} +1 -1
  5. package/dist/{AuthorityInfo-DhiwCeLN.js → AuthorityInfo-q6E-js1r.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BM52QDgn.js +100 -0
  7. package/dist/{Company-CGqmslx-.js → Company-BSShW3Q4.js} +3 -3
  8. package/dist/{CompanyPanel-hlDsxD-6.js → CompanyPanel-Dl8eOYLk.js} +26 -26
  9. package/dist/{Department-BZyJtacc.js → Department-CVIxAnUN.js} +3 -3
  10. package/dist/{DepartmentPanel-D-a_EBFt.js → DepartmentPanel-Sa3IDl4z.js} +25 -25
  11. package/dist/{DesignPanel-Bl4luWDV.js → DesignPanel-DnRipagE.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-I8C3iGvz.js → DesignPanel.vue_vue_type_style_index_0_lang-DGNyp3Vl.js} +28 -30
  13. package/dist/DictView-uf2K9A1d.js +109 -0
  14. package/dist/InvOrganization-CG9VCpXl.js +74 -0
  15. package/dist/Org-W2CBN1B8.js +39 -0
  16. package/dist/{Preview-pHD84xqI.js → Preview-DPBxdDvW.js} +2 -2
  17. package/dist/{ReportDefine-DnnCNQWS.js → ReportDefine-Dsx9VM-I.js} +1 -1
  18. package/dist/{ReportDesign-BnI_Q4pg.js → ReportDesign-DiIGfte0.js} +43 -43
  19. package/dist/{ReportQuery-Dby2MmtM.js → ReportQuery-9A4Bfs1M.js} +1 -1
  20. package/dist/{ReportQueryFrom-Blm1N8P1.js → ReportQueryFrom-M5qLoGAa.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CnG_Ybnt.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-OQ9pUCKP.js} +1 -1
  22. package/dist/{ReportTemplate-D65RXRY_.js → ReportTemplate-C34FWAuK.js} +28 -28
  23. package/dist/{Role-eFZoTpXc.js → Role-jG3VTeOF.js} +6 -6
  24. package/dist/{RoleAssign-D9-Y3UNz.js → RoleAssign-BfHpCequ.js} +9 -9
  25. package/dist/{RolePanel-DlFw6HSf.js → RolePanel-DW9pNl0L.js} +1 -1
  26. package/dist/{RolePanel-CoUOc3sX.js → RolePanel-xRN2-rkk.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Clwk-MHw.js → RolePanel.vue_vue_type_script_setup_true_lang-BVEHqEq9.js} +44 -38
  28. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-C0rTy6vZ.js +132 -0
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-M2FQJwPU.js → ScrollPanel.vue_vue_type_style_index_0_lang-D65sJYWT.js} +23 -23
  30. package/dist/{Staff-DFBLCsAd.js → Staff-BqBVEjau.js} +3 -3
  31. package/dist/{StaffInfo-d2CK0oBA.js → StaffInfo-DXeyyEFL.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-4m8wK9tq.js → StaffInfo.vue_vue_type_script_setup_true_lang-Dg0iYgRf.js} +16 -16
  33. package/dist/{StaffPanel-D6aWLKN3.js → StaffPanel-iE-8VtUm.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-C7YT2CVb.js → StaffPanel.vue_vue_type_script_setup_true_lang-BrrvE1xm.js} +2 -2
  35. package/dist/{SysUser-BdZvYxQH.js → SysUser-DSZyW30i.js} +2 -2
  36. package/dist/{SysUserPanel-BIVa6LLr.js → SysUserPanel-CbiG6GQF.js} +1 -1
  37. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-B1Y1fmBe.js +298 -0
  38. package/dist/{SystemMenu-C-5VKlHK.js → SystemMenu-DreuWY-a.js} +33 -33
  39. package/dist/{UserInfo-DqXCRZts.js → UserInfo-DXrzKAim.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-N3TwfpPx.js → UserInfo.vue_vue_type_style_index_0_lang-C44E20b4.js} +41 -39
  41. package/dist/{childView-B2lSsqS3.js → childView-VCidWgY6.js} +1 -1
  42. package/dist/{childView-DRUNqgjI.js → childView-k5IkJOBr.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-B9XBDDU_.js → childView.vue_vue_type_style_index_0_lang-C6ftwwvZ.js} +1 -1
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-oGriyFTv.js → childView.vue_vue_type_style_index_0_lang-DmG82dVB.js} +43 -43
  45. package/dist/{code-rule-DZC9T6cl.js → code-rule-7WQMabpW.js} +13 -15
  46. package/dist/core.es.js +18 -10
  47. package/dist/{cron-task-BJwPeA5F.js → cron-task-D1t56MSu.js} +11 -11
  48. package/dist/{frameView-C6wkvok-.js → frameView-CWsIFBgU.js} +1 -1
  49. package/dist/img/l_img.svg +1 -1
  50. package/dist/img/minicolors.png +0 -0
  51. package/dist/img/v_img.svg +1 -1
  52. package/dist/index-DxWAYxai.js +5495 -0
  53. package/dist/{layoutView-CeJBpZb_.js → layoutView-DLpHSner.js} +1564 -1559
  54. package/dist/{log-in-e7D5Ss1P.js → log-in-CpGqc33f.js} +5 -4
  55. package/dist/{log-out--RRncZhN.js → log-out-D1b4VRMZ.js} +30 -24
  56. package/dist/login-OjDiQmz8.js +249 -0
  57. package/dist/{login-log-CvVnyGi3.js → login-log-BNRXLeMi.js} +4 -3
  58. package/dist/{lov-view-DRF-99U4.js → lov-view-D28X6m3k.js} +5 -5
  59. package/dist/{menuInfo-3Sjvs9nM.js → menuInfo-DwPB6rHz.js} +1 -1
  60. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-DrQ560nm.js → menuInfo.vue_vue_type_style_index_0_lang-l5DNRfb7.js} +34 -32
  61. package/dist/{pda-app-B9tn7jdv.js → pda-app-Bdms2PRY.js} +202 -188
  62. package/dist/{resource-BqnxbQNe.js → resource-y6SHrHoq.js} +18 -18
  63. package/dist/{su-welcome-VwifUK_O.js → su-welcome-D9G6EuK2.js} +118 -120
  64. package/dist/sys-config-DFnGHiFc.js +355 -0
  65. package/dist/udp-core.css +1 -9
  66. package/dist/utogether-MlnyYtNS.js +4 -0
  67. package/index.ts +17 -5
  68. package/package.json +1 -1
  69. package/src/App.vue +2 -7
  70. package/src/api/http.ts +1 -4
  71. package/src/api/index.ts +5 -3
  72. package/src/api/user.ts +2 -2
  73. package/src/components/SuCharts/src/UserInfo.vue +3 -3
  74. package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
  75. package/src/components/udp/form/form.vue +109 -0
  76. package/src/components/udp/grid/index.vue +509 -0
  77. package/src/components/udp/index.ts +4 -4
  78. package/src/components/udp/utils.ts +405 -40
  79. package/src/directives/permission/index.ts +1 -1
  80. package/src/layout/components/lay-navbar/index.vue +9 -7
  81. package/src/layout/components/lay-panel/index.vue +3 -3
  82. package/src/layout/components/lay-search/index.vue +1 -1
  83. package/src/layout/components/lay-select-org/index.vue +4 -9
  84. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  85. package/src/layout/components/lay-sidebar/horizontal.vue +4 -5
  86. package/src/layout/components/lay-sidebar/mixNav.vue +6 -4
  87. package/src/layout/components/lay-sidebar/sidebar-logo.vue +94 -98
  88. package/src/layout/components/lay-tag/index.vue +596 -625
  89. package/src/layout/hooks/useTag.ts +223 -233
  90. package/src/layout/layoutView.vue +215 -215
  91. package/src/layout/types.ts +3 -2
  92. package/src/main.ts +39 -31
  93. package/src/plugins/i18n/en.ts +26 -13
  94. package/src/plugins/i18n/zh.ts +35 -16
  95. package/src/plugins/vxe-table/index.ts +67 -4
  96. package/src/plugins/vxe-table/render.tsx +945 -817
  97. package/src/router/index.ts +186 -183
  98. package/src/router/modules/remaining.ts +1 -26
  99. package/src/router/utils.ts +393 -377
  100. package/src/store/modules/app.ts +1 -3
  101. package/src/store/modules/multiTags.ts +110 -109
  102. package/src/store/modules/permission.ts +113 -103
  103. package/src/store/modules/system.ts +1 -3
  104. package/src/style/button.scss +10 -3
  105. package/src/style/login.css +1 -1
  106. package/src/style/tailwind.css +1 -68
  107. package/src/style/vxetable.scss +348 -256
  108. package/src/utils/authority/index.ts +1 -1
  109. package/src/utils/index.ts +3 -1
  110. package/src/utils/propTypes.ts +1 -6
  111. package/src/views/login/login-view.vue +6 -20
  112. package/src/views/organization/company/CompanyPanel.vue +2 -2
  113. package/src/views/organization/department/DepartmentPanel.vue +269 -283
  114. package/src/views/organization/inv-org/InvOrganization.vue +23 -9
  115. package/src/views/organization/org/Org.vue +9 -5
  116. package/src/views/system/menu/SystemMenu.vue +183 -197
  117. package/src/views/system/menu/menuInfo.vue +8 -18
  118. package/src/views/system/role/AuthorityInfo.vue +19 -15
  119. package/src/views/system/role/Role.vue +1 -5
  120. package/src/views/system/role/RolePanel.vue +11 -2
  121. package/src/views/system/role/UserInfo.vue +11 -9
  122. package/src/views/system/role-assign/RoleAssign.vue +2 -2
  123. package/src/views/system/role-assign/RolePanel.vue +12 -9
  124. package/src/views/system/sys/sys-config.vue +66 -21
  125. package/src/views/system/sysUser/SysUserPanel.vue +44 -43
  126. package/src/views/uapp/pda/pda-app.vue +48 -16
  127. package/src/views/udev/coderule/code-rule.vue +120 -121
  128. package/src/views/udev/dict/DictView.vue +16 -4
  129. package/src/views/udev/dict/childView.vue +8 -8
  130. package/src/views/ufile/aggregation/File.vue +5 -5
  131. package/src/views/ufile/file/water-mark.vue +14 -14
  132. package/src/views/uhome/components/menu-favorite.vue +314 -331
  133. package/src/views/uhome/su-welcome.vue +3 -3
  134. package/src/views/ulogin/login.vue +19 -12
  135. package/src/views/upms/interface/log-in.vue +100 -106
  136. package/src/views/upms/interface/log-out.vue +2 -8
  137. package/src/views/upms/user/login-log.vue +54 -60
  138. package/src/views/urpt/design/DesignPanel.vue +16 -35
  139. package/src/views/urpt/design/Preview.vue +1 -0
  140. package/src/views/urpt/design/ReportDesign.vue +17 -23
  141. package/src/views/urpt/static-resource/resource.vue +3 -3
  142. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  143. package/types/global.d.ts +4 -9
  144. package/vite.config.ts +6 -2
  145. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-Duyweh89.js +0 -102
  146. package/dist/DictView-B4a7Hs1X.js +0 -95
  147. package/dist/InvOrganization-q4T3y8dQ.js +0 -260
  148. package/dist/Org-BTGTrAVz.js +0 -35
  149. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-DKHgNWQP.js +0 -126
  150. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-BsBKpYR7.js +0 -288
  151. package/dist/index-DZc3qRTx.js +0 -2650
  152. package/dist/login-BOxwzwdB.js +0 -252
  153. package/dist/sys-config-C0-gSBFO.js +0 -277
  154. package/dist/utogether-Di1byIum.js +0 -182
  155. package/src/components/udp/form-upload.vue +0 -183
  156. package/src/components/udp/modal-form.vue +0 -180
  157. package/src/utils/http/index.ts +0 -297
  158. package/src/utils/http/types.d.ts +0 -46
  159. package/src/utils/udp/useRender.ts +0 -420
@@ -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-09-12 14:48:18
6
6
  * @FilePath: /udp-front/packages/udp-core/index.ts
7
7
  * @Description:
8
8
  */
@@ -18,10 +18,14 @@ import { useMultiTagsStoreHook as useMultiTagsStore } from './src/store/modules/
18
18
  import { usePermissionStoreHook as usePermissionStore } from './src/store/modules/permission';
19
19
 
20
20
  import { handleAliveRoute, delCurrentRoute } from './src/router/utils';
21
-
22
- import { lifeCycleEvent } from './src/utils/lifecycle';
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,13 @@ 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
36
48
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@utogether/udp-core",
3
3
  "private": false,
4
- "version": "1.0.1-beta.2",
4
+ "version": "1.0.1-beta.20",
5
5
  "description": "",
6
6
  "type": "module",
7
7
  "main1": "index.ts",
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>
@@ -1,175 +1,170 @@
1
- <template>
2
- <div class="u-scroll-panel" @click.prevent="handleClickPanel">
3
- <div class="u-panel-header">
4
- <h2>{{ title }}</h2>
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
- />
12
- <vxe-button icon="vxe-icon-refresh" @click="onRefresh" />
13
- </div>
14
- <div class="u-panel-content system-scrollbar">
15
- <el-tree
16
- ref="tree"
17
- :data="data"
18
- :props="treeOtions"
19
- :expand-on-click-node="false"
20
- style="background-color: #fff"
21
- class="u-tree-panel"
22
- node-key="id"
23
- highlight-current
24
- @node-click="handleNodeClick"
25
- >
26
- <template #default="{ node }">
27
- <span class="prefix" :class="{ 'is-leaf': node.isLeaf }">
28
- <i class="ri-folder-2-fill ri-lg mr-1" style="color: #fadb14" />
29
- </span>
30
- <span>{{ node.label }}</span>
31
- </template>
32
- </el-tree>
33
- </div>
34
- </div>
35
- </template>
36
-
37
- <script lang="ts" setup>
38
- import { getServiceApi } from '../../api';
39
- import type { Ref } from 'vue';
40
- import { ref, inject, watch, nextTick } from 'vue';
41
-
42
- interface IProps {
43
- title: string;
44
- url: string;
45
- showAllButton?: boolean;
46
- treeOtions: Object;
47
- extParam?: Object;
48
- }
49
- const props = withDefaults(defineProps<IProps>(), {
50
- treeOtions: () => {
51
- return {
52
- children: 'children',
53
- label: 'label'
54
- };
55
- },
56
- extParam: () => {
57
- return {};
58
- },
59
- showAllButton: false
60
- });
61
-
62
- const data = ref<any>([]);
63
- const tree: Ref<any | null> = ref(null);
64
- // 当前激活item
65
- const active: IRecord = inject('active');
66
- // tree面板变更
67
- const scrollPanelChange: IRecord = inject('scrollPanelChange');
68
- // tree 列表
69
- const treeList: IRecord = inject('treeList');
70
-
71
- watch(
72
- () => scrollPanelChange.value,
73
- () => {
74
- scrollPanelChange.value && getDataList();
75
- }
76
- );
77
-
78
- const getDataList = async (params = {}) => {
79
- const query = Object.assign(params, props.extParam);
80
- const serverData = (await getServiceApi().get(props.url, query)) as IResponseData;
81
- data.value = serverData.list || serverData;
82
- treeList.value = serverData.list || serverData;
83
- active.value = serverData.list ? serverData.list[0] : serverData[0];
84
- nextTick(() => {
85
- tree.value && tree?.value.setCurrentKey(active.value?.id || '');
86
- });
87
- scrollPanelChange.value = false;
88
- };
89
- const handleNodeClick = (row: any) => {
90
- active.value = row;
91
- };
92
-
93
- const handleClickPanel = () => {
94
- active.value = {};
95
- };
96
-
97
- const handleExpand = (array, expanded) => {
98
- array.forEach(el => {
99
- tree.value.store.nodesMap[el.id].expanded = expanded;
100
- if (el.children?.length) {
101
- handleExpand(el.children, expanded);
102
- }
103
- });
104
- console.log('[ tree.value ] >', tree.value);
105
- };
106
-
107
- const onRefresh = () => {
108
- getDataList();
109
- };
110
- defineExpose({
111
- onRefresh
112
- });
113
- getDataList();
114
- </script>
115
-
116
- <style lang="scss">
117
- .u-scroll-panel {
118
- display: flex;
119
- flex-direction: column;
120
- width: 100%;
121
- height: 100%;
122
- background: #fff;
123
-
124
- .u-panel-header {
125
- display: flex;
126
- align-items: center;
127
- padding: 10px;
128
- border-bottom: 1px solid #eee;
129
-
130
- h2 {
131
- // display: box;
132
- height: 30px;
133
- padding: 0;
134
- margin: 0;
135
- margin-right: 20px;
136
- overflow: hidden;
137
- -webkit-line-clamp: 1;
138
- font-size: 14px;
139
- line-height: 30px;
140
- -webkit-box-orient: vertical;
141
- }
142
-
143
- .el-input {
144
- flex: 1;
145
- }
146
- }
147
-
148
- .u-panel-content {
149
- flex: 1;
150
- overflow: auto;
151
- }
152
-
153
- .u-tree-panel {
154
- height: 100%; // 0630
155
- :deep(.el-tree-node__content) {
156
- height: 36px;
157
- }
158
-
159
- :deep(.el-tree-node.is-current > .el-tree-node__content) {
160
- background-color: rgb(64 158 255 / 40%);
161
- }
162
-
163
- :deep(.el-tree-node > .el-tree-node__content) {
164
- transition: 0.2s;
165
- }
166
- }
167
-
168
- .el-vl__window {
169
- height: 360px !important;
170
- // &:first-child {
171
- // height: 100% !important;
172
- // }
173
- }
174
- }
175
- </style>
1
+ <template>
2
+ <div class="u-scroll-panel" @click.prevent="handleClickPanel">
3
+ <div class="u-panel-header">
4
+ <h2>{{ title }}</h2>
5
+ <ut-button v-if="showAllButton" content="BtnExpand" @click="handleExpand(data, true)" />
6
+ <ut-button v-if="showAllButton" status="warning" content="BtnCollapse" @click="handleExpand(data, false)" />
7
+ <vxe-button icon="vxe-icon-refresh" @click="onRefresh" />
8
+ </div>
9
+ <div class="u-panel-content system-scrollbar">
10
+ <el-tree
11
+ ref="tree"
12
+ :data="data"
13
+ :props="treeOtions"
14
+ :expand-on-click-node="false"
15
+ style="background-color: #fff"
16
+ class="u-tree-panel"
17
+ node-key="id"
18
+ highlight-current
19
+ @node-click="handleNodeClick"
20
+ >
21
+ <template #default="{ node }">
22
+ <span class="prefix" :class="{ 'is-leaf': node.isLeaf }">
23
+ <i class="ri-folder-2-fill ri-lg mr-1" style="color: #fadb14" />
24
+ </span>
25
+ <span>{{ node.label }}</span>
26
+ </template>
27
+ </el-tree>
28
+ </div>
29
+ </div>
30
+ </template>
31
+
32
+ <script lang="ts" setup>
33
+ import { getServiceApi } from '../../api';
34
+ import type { Ref } from 'vue';
35
+ import { ref, inject, watch, nextTick } from 'vue';
36
+
37
+ interface IProps {
38
+ title: string;
39
+ url: string;
40
+ showAllButton?: boolean;
41
+ treeOtions: Object;
42
+ defaultParams?: Object;
43
+ }
44
+ const props = withDefaults(defineProps<IProps>(), {
45
+ treeOtions: () => {
46
+ return {
47
+ children: 'children',
48
+ label: 'label'
49
+ };
50
+ },
51
+ defaultParams: () => {
52
+ return {};
53
+ },
54
+ showAllButton: false
55
+ });
56
+
57
+ const data = ref<any>([]);
58
+ const tree: Ref<any | null> = ref(null);
59
+ // 当前激活item
60
+ const active: IRecord = inject('active');
61
+ // tree面板变更
62
+ const scrollPanelChange: IRecord = inject('scrollPanelChange');
63
+ // tree 列表
64
+ const treeList: IRecord = inject('treeList');
65
+
66
+ watch(
67
+ () => scrollPanelChange.value,
68
+ () => {
69
+ scrollPanelChange.value && getDataList();
70
+ }
71
+ );
72
+
73
+ const getDataList = async (params = {}) => {
74
+ const query = Object.assign(params, props.defaultParams);
75
+ const serverData = (await getServiceApi().get(props.url, query)) as IResponseData;
76
+ data.value = serverData.list || serverData;
77
+ treeList.value = serverData.list || serverData;
78
+ active.value = serverData.list ? serverData.list[0] : serverData[0];
79
+ nextTick(() => {
80
+ tree.value && tree?.value.setCurrentKey(active.value?.id || '');
81
+ });
82
+ scrollPanelChange.value = false;
83
+ };
84
+ const handleNodeClick = (row: any) => {
85
+ active.value = row;
86
+ };
87
+
88
+ const handleClickPanel = () => {
89
+ active.value = {};
90
+ };
91
+
92
+ const handleExpand = (array, expanded) => {
93
+ array.forEach(el => {
94
+ tree.value.store.nodesMap[el.id].expanded = expanded;
95
+ if (el.children?.length) {
96
+ handleExpand(el.children, expanded);
97
+ }
98
+ });
99
+ console.log('[ tree.value ] >', tree.value);
100
+ };
101
+
102
+ const onRefresh = () => {
103
+ getDataList();
104
+ };
105
+ defineExpose({
106
+ onRefresh
107
+ });
108
+ getDataList();
109
+ </script>
110
+
111
+ <style lang="scss">
112
+ .u-scroll-panel {
113
+ display: flex;
114
+ flex-direction: column;
115
+ width: 100%;
116
+ height: 100%;
117
+ background: #fff;
118
+
119
+ .u-panel-header {
120
+ display: flex;
121
+ align-items: center;
122
+ padding: 10px;
123
+ border-bottom: 1px solid #eee;
124
+
125
+ h2 {
126
+ // display: box;
127
+ height: 30px;
128
+ padding: 0;
129
+ margin: 0;
130
+ margin-right: 20px;
131
+ overflow: hidden;
132
+ -webkit-line-clamp: 1;
133
+ font-size: 14px;
134
+ line-height: 30px;
135
+ -webkit-box-orient: vertical;
136
+ }
137
+
138
+ .el-input {
139
+ flex: 1;
140
+ }
141
+ }
142
+
143
+ .u-panel-content {
144
+ flex: 1;
145
+ overflow: auto;
146
+ }
147
+
148
+ .u-tree-panel {
149
+ height: 100%; // 0630
150
+ :deep(.el-tree-node__content) {
151
+ height: 36px;
152
+ }
153
+
154
+ :deep(.el-tree-node.is-current > .el-tree-node__content) {
155
+ background-color: rgb(64 158 255 / 40%);
156
+ }
157
+
158
+ :deep(.el-tree-node > .el-tree-node__content) {
159
+ transition: 0.2s;
160
+ }
161
+ }
162
+
163
+ .el-vl__window {
164
+ height: 360px !important;
165
+ // &:first-child {
166
+ // height: 100% !important;
167
+ // }
168
+ }
169
+ }
170
+ </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>