@utogether/udp-core 1.0.1-beta.10 → 1.0.1-beta.11

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 (83) hide show
  1. package/dist/{403-Ctxjn4q8.js → 403-Dsgsr2M-.js} +1 -1
  2. package/dist/{404-W5yzyiZ9.js → 404-DmPHEfqM.js} +1 -1
  3. package/dist/{500-DXuGEOm4.js → 500-OYEgHR2a.js} +1 -1
  4. package/dist/{AuthorityInfo-C2tflCt8.js → AuthorityInfo-B1H1txG-.js} +1 -1
  5. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-SVgy3HX7.js → AuthorityInfo.vue_vue_type_style_index_0_lang-BUlmQtjQ.js} +1 -1
  6. package/dist/{Company-PLez5GoH.js → Company-C8ojgx93.js} +3 -3
  7. package/dist/{CompanyPanel-CIGaQooL.js → CompanyPanel-Dageer1t.js} +1 -1
  8. package/dist/{Department-B9wLsXFm.js → Department-Dr94_85I.js} +3 -3
  9. package/dist/{DepartmentPanel-DSM4lTaz.js → DepartmentPanel-Bc5r1HpT.js} +1 -1
  10. package/dist/{DesignPanel-B6a9wW_A.js → DesignPanel-CcWt1Myp.js} +1 -1
  11. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DtHfoDQk.js → DesignPanel.vue_vue_type_style_index_0_lang-CKA6nx1l.js} +2 -2
  12. package/dist/{DictView-DhFbQxdJ.js → DictView-BHj6wexC.js} +1 -1
  13. package/dist/InvOrganization-DP3Le9g-.js +72 -0
  14. package/dist/{Org-DxBkYabD.js → Org-BRGHTwsw.js} +1 -1
  15. package/dist/{Preview-BFtRpBxw.js → Preview-CqMaUD_3.js} +1 -1
  16. package/dist/{ReportDefine-BIa2QryC.js → ReportDefine-PEQdTCOY.js} +1 -1
  17. package/dist/{ReportDesign-CnyjI-WD.js → ReportDesign-CB4bv8ba.js} +2 -2
  18. package/dist/{ReportQuery-BiK7yEhV.js → ReportQuery-B7t4lMK0.js} +1 -1
  19. package/dist/{ReportQueryFrom-C2rqdFTm.js → ReportQueryFrom-VBxUIMRJ.js} +1 -1
  20. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-Ba9HLnXQ.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-HeLA4Qs5.js} +1 -1
  21. package/dist/{ReportTemplate-DdkLscP3.js → ReportTemplate-DNkv7F5p.js} +1 -1
  22. package/dist/{Role-BrsxgK8D.js → Role-BGfTpZK4.js} +3 -3
  23. package/dist/{RoleAssign-DiqwJqDa.js → RoleAssign-DrKFWZzA.js} +3 -3
  24. package/dist/{RolePanel-Dqx5dI3f.js → RolePanel-3lvRh7aS.js} +1 -1
  25. package/dist/{RolePanel-BDusGyo7.js → RolePanel-BRI5QYe4.js} +1 -1
  26. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-2Z1q_5uW.js → RolePanel.vue_vue_type_script_setup_true_lang-BXKZb7yt.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-B5lUnaMI.js → RolePanel.vue_vue_type_script_setup_true_lang-Cci_Ysty.js} +3 -3
  28. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-vSP23fEq.js → ScrollPanel.vue_vue_type_style_index_0_lang-BmId6zzA.js} +1 -1
  29. package/dist/{Staff-Cwi9LQiZ.js → Staff-Dr0dq3fW.js} +3 -3
  30. package/dist/{StaffInfo-XjVtyaMv.js → StaffInfo-_N9g2hPa.js} +1 -1
  31. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-wSrAuyet.js → StaffInfo.vue_vue_type_script_setup_true_lang-DiTJY2ug.js} +1 -1
  32. package/dist/{StaffPanel-C-wYcFdv.js → StaffPanel-mxJQiW3G.js} +1 -1
  33. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-DZNArmnC.js → StaffPanel.vue_vue_type_script_setup_true_lang-GRGn-5t6.js} +2 -2
  34. package/dist/{SysUser-O4tvr-Ur.js → SysUser-DgA19hZE.js} +2 -2
  35. package/dist/{SysUserPanel-B853docZ.js → SysUserPanel-Bc85z5_K.js} +1 -1
  36. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-DhiYYC97.js → SysUserPanel.vue_vue_type_script_setup_true_lang-BHDrP1Pk.js} +1 -1
  37. package/dist/{SystemMenu-CXR6mrXr.js → SystemMenu-Be-gFIie.js} +2 -2
  38. package/dist/{UserInfo-BkP8pE2a.js → UserInfo-BCYuwFmr.js} +1 -1
  39. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-D4r_umjV.js → UserInfo.vue_vue_type_style_index_0_lang-B1lgokO6.js} +1 -1
  40. package/dist/{childView-D0HwbgDT.js → childView-DhcBr1UA.js} +1 -1
  41. package/dist/{childView-TRqUkSDC.js → childView-Dk4zZoXd.js} +1 -1
  42. package/dist/{childView.vue_vue_type_style_index_0_lang-BzISq0Jf.js → childView.vue_vue_type_style_index_0_lang-CVnLnl03.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-DQRgNsJY.js → childView.vue_vue_type_style_index_0_lang-D4GYVhOc.js} +1 -1
  44. package/dist/{code-rule-BV7PQWhK.js → code-rule-BSwPwuAL.js} +1 -1
  45. package/dist/core.es.js +1 -1
  46. package/dist/{cron-task-9ZS9bi7K.js → cron-task-T1ztyra7.js} +1 -1
  47. package/dist/{frameView-DE83AN50.js → frameView-BDgngiBq.js} +1 -1
  48. package/dist/index-BSj2AtVL.js +4468 -0
  49. package/dist/{layoutView-D1U-c4By.js → layoutView-i7dLLBzJ.js} +1187 -1183
  50. package/dist/{login-sPCEiTGT.js → login-K5Ludp8x.js} +4 -5
  51. package/dist/{lov-view-76NcYTYl.js → lov-view-lAexiucu.js} +2 -2
  52. package/dist/{menuInfo-CxjfjFpm.js → menuInfo-BaN5YZPp.js} +1 -1
  53. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-C2qahH3r.js → menuInfo.vue_vue_type_style_index_0_lang-yI4QOYxG.js} +1 -1
  54. package/dist/{pda-app-BUH16bLj.js → pda-app-DEtDXFvM.js} +1 -1
  55. package/dist/{resource-CCuHzoA6.js → resource-Bztmz7pn.js} +1 -1
  56. package/dist/{su-welcome-mRArONsd.js → su-welcome-Bx8nBPi9.js} +1 -1
  57. package/dist/sys-config-nvrtYGgi.js +290 -0
  58. package/dist/udp-core.css +2 -2
  59. package/dist/{utogether-Dm_VBQHR.js → utogether-yPnwDAIH.js} +1 -1
  60. package/package.json +18 -18
  61. package/src/api/index.ts +31 -31
  62. package/src/components/udp/form.vue +2 -2
  63. package/src/components/udp/modal-form.vue +2 -1
  64. package/src/components/udp/modal-grid.vue +11 -1
  65. package/src/layout/components/lay-navbar/index.vue +239 -237
  66. package/src/layout/components/lay-search/index.vue +1 -1
  67. package/src/layout/components/lay-select-org/index.vue +64 -69
  68. package/src/layout/components/lay-sidebar/horizontal.vue +190 -191
  69. package/src/layout/components/lay-sidebar/mixNav.vue +260 -258
  70. package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -98
  71. package/src/layout/hooks/useNav.ts +173 -173
  72. package/src/main.ts +119 -119
  73. package/src/plugins/i18n/zh.ts +1 -0
  74. package/src/router/index.ts +3 -13
  75. package/src/store/modules/permission.ts +1 -4
  76. package/src/utils/udp/http/index.ts +283 -281
  77. package/src/views/login/login-view.vue +300 -314
  78. package/src/views/organization/inv-org/InvOrganization.vue +68 -53
  79. package/src/views/system/sys/sys-config.vue +287 -291
  80. package/src/views/ulogin/login.vue +1 -2
  81. package/dist/InvOrganization-D90AbR3b.js +0 -66
  82. package/dist/index-DVARtten.js +0 -2623
  83. package/dist/sys-config-Cvt05yF6.js +0 -277
@@ -1,98 +1,92 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2021-11-17 16:02:30
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-17 17:15:15
6
- * @Description: file content
7
- -->
8
- <script setup lang="ts">
9
- import { ref } from 'vue';
10
- import { storageLocal } from '@utogether/utils';
11
- import { kSYSCONFIG } from '../../../contant';
12
- import utogether from '../../../assets/images/utogether.png';
13
-
14
- const props = defineProps({
15
- collapse: Boolean
16
- });
17
-
18
- const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
19
-
20
- const title = sysConfig['title'];
21
- const logo = ref(sysConfig['logo'] || utogether);
22
- // console.log(logo);
23
- </script>
24
-
25
- <template>
26
- <div class="sidebar-logo-container" :class="{ collapses: props.collapse }">
27
- <transition name="sidebarLogoFade">
28
- <router-link
29
- v-if="props.collapse"
30
- key="props.collapse"
31
- :title="title"
32
- class="sidebar-logo-link"
33
- to="/"
34
- >
35
- <img :src="logo" class="ut-collapse-img ut-sidebar-logo" />
36
- </router-link>
37
- <router-link v-else key="expand" :title="title" class="sidebar-logo-link" to="/">
38
- <img :src="logo" class="ut-sidebar-logo h-10" />
39
- <span class="sidebar-title">{{ title }}</span>
40
- </router-link>
41
- </transition>
42
- </div>
43
- </template>
44
-
45
- <style lang="scss" scoped>
46
- .sidebar-logo-container {
47
- position: relative;
48
- width: 100%;
49
- height: 48px;
50
- overflow: hidden;
51
- text-align: center;
52
- background-color: var(--udp-theme-sidebar-logo);
53
-
54
- .sidebar-logo-link {
55
- // margin-top: 5px;
56
- display: flex;
57
- flex-direction: column;
58
- height: 100%;
59
- overflow: hidden;
60
- text-overflow: ellipsis;
61
- white-space: nowrap;
62
-
63
- .ut-sidebar-logo {
64
- height: 100%;
65
- }
66
-
67
- .ut-collapse-img {
68
- width: 100%;
69
- }
70
-
71
- .sidebar-title {
72
- display: block;
73
- // width: 140px;
74
- // margin-top: 10px;
75
- margin-left: 10px;
76
- overflow: hidden;
77
- text-overflow: ellipsis;
78
- font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
79
- font-size: 24px;
80
- font-weight: 600;
81
- color: var(--udp-theme-project-text);
82
- text-align: left;
83
- white-space: nowrap;
84
- }
85
- }
86
-
87
- .collapses {
88
- .sidebar-logo {
89
- margin-right: 0;
90
- }
91
- }
92
-
93
- svg {
94
- width: 50px;
95
- height: 50px;
96
- }
97
- }
98
- </style>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-17 16:02:30
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-04-17 17:15:15
6
+ * @Description: file content
7
+ -->
8
+ <script setup lang="ts">
9
+ import { ref } from 'vue';
10
+ import { storageLocal } from '@utogether/utils';
11
+ import { kSYSCONFIG } from '../../../contant';
12
+ import utogether from '../../../assets/images/utogether.png';
13
+
14
+ const props = defineProps({
15
+ collapse: Boolean
16
+ });
17
+
18
+ const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
19
+
20
+ const title = sysConfig['title'];
21
+ const logo = ref(sysConfig['logo'] || utogether);
22
+ // console.log(logo);
23
+ </script>
24
+
25
+ <template>
26
+ <div class="sidebar-logo-container" :class="{ collapses: props.collapse }">
27
+ <transition name="sidebarLogoFade">
28
+ <router-link v-if="props.collapse" key="props.collapse" :title="title" class="sidebar-logo-link" to="/">
29
+ <img :src="logo" class="ut-collapse-img ut-sidebar-logo" />
30
+ </router-link>
31
+ <router-link v-else key="expand" :title="title" class="sidebar-logo-link" to="/">
32
+ <img :src="logo" class="ut-sidebar-logo h-10" />
33
+ <span class="sidebar-title">{{ title }}</span>
34
+ </router-link>
35
+ </transition>
36
+ </div>
37
+ </template>
38
+
39
+ <style lang="scss" scoped>
40
+ .sidebar-logo-container {
41
+ position: relative;
42
+ width: 100%;
43
+ height: 48px;
44
+ overflow: hidden;
45
+ text-align: center;
46
+ background-color: var(--udp-theme-sidebar-logo);
47
+
48
+ .sidebar-logo-link {
49
+ // margin-top: 5px;
50
+ display: flex;
51
+ flex-direction: column;
52
+ height: 100%;
53
+ overflow: hidden;
54
+ text-overflow: ellipsis;
55
+ white-space: nowrap;
56
+
57
+ .ut-sidebar-logo {
58
+ height: 100%;
59
+ }
60
+
61
+ .ut-collapse-img {
62
+ width: 100%;
63
+ }
64
+
65
+ .sidebar-title {
66
+ display: block;
67
+ // width: 140px;
68
+ // margin-top: 10px;
69
+ margin-left: 10px;
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
73
+ font-size: 24px;
74
+ font-weight: 600;
75
+ color: var(--udp-theme-project-text);
76
+ text-align: left;
77
+ white-space: nowrap;
78
+ }
79
+ }
80
+
81
+ .collapses {
82
+ .sidebar-logo {
83
+ margin-right: 0;
84
+ }
85
+ }
86
+
87
+ svg {
88
+ width: 50px;
89
+ height: 50px;
90
+ }
91
+ }
92
+ </style>
@@ -1,173 +1,173 @@
1
- /*
2
- * @Author: wei.li
3
- * @Date: 2023-04-18 15:44:40
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-16 15:49:31
6
- * @Description: file content
7
- */
8
- import { computed, type CSSProperties } from 'vue';
9
- import { storeToRefs } from 'pinia';
10
- import { useRouter } from 'vue-router';
11
- import { cookies, useGlobal, storageLocal } from '@utogether/utils';
12
- import { router, remainingPaths, resetRouter } from '../../router';
13
- import { emitter } from '../../utils/mitt';
14
- import { getEnv } from '../../config';
15
- import { kTOKEN, kLOGINER, kCKTOKEN, kSYSCONFIG } from '../../contant';
16
- import { routerArrays } from '../types';
17
- // import { transformI18n } from '@/plugins/i18n';
18
- import { useAppStoreHook } from '../../store/modules/app';
19
- import { usePermissionStoreHook } from '../../store/modules/permission';
20
- import { useEpThemeStoreHook } from '../../store/modules/epTheme';
21
- import { useSystemStoreHook } from '../../store/modules/system';
22
- import { useMultiTagsStoreHook } from '../../store/modules/multiTags';
23
-
24
- const errorInfo = '当前路由配置不正确,请检查配置';
25
-
26
- export function useNav() {
27
- const appHook = useAppStoreHook();
28
- const routers = useRouter().options.routes;
29
- const { wholeMenus } = storeToRefs(usePermissionStoreHook());
30
-
31
- const getDivStyle = computed((): CSSProperties => {
32
- return {
33
- width: '100%',
34
- display: 'flex',
35
- alignItems: 'center',
36
- justifyContent: 'space-between',
37
- overflow: 'hidden'
38
- };
39
- });
40
-
41
- /** 设置国际化选中后的样式 */
42
- const getDropdownItemStyle = computed(() => {
43
- return (locale, t) => {
44
- return {
45
- background: locale === t ? useEpThemeStoreHook().epThemeColor : '',
46
- color: locale === t ? '#f4f4f5' : '#000'
47
- };
48
- };
49
- });
50
-
51
- const getDropdownItemClass = computed(() => {
52
- return (locale, t) => {
53
- return locale === t ? '' : 'dark:hover:text-primary!';
54
- };
55
- });
56
-
57
- /** 用户名 */
58
- const userInfo = computed<IRecord>(() => {
59
- return useSystemStoreHook().getUserInfo || {};
60
- });
61
- const avatarsStyle = computed(() => {
62
- return userInfo.value ? { marginRight: '10px' } : '';
63
- });
64
-
65
- const isCollapse = computed(() => {
66
- return !appHook.getSidebarStatus;
67
- });
68
-
69
- const device = computed(() => {
70
- return appHook.getDevice;
71
- });
72
-
73
- const { $storage } = useGlobal();
74
- const layout = computed(() => {
75
- return $storage?.layout?.layout;
76
- });
77
-
78
- const title = computed(() => {
79
- const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
80
- return sysConfig?.title || 'U-DP';
81
- });
82
-
83
- /** 动态title */
84
- function setDocumentTitle() {
85
- document.title = getEnv().MODE !== 'staging' ? title.value : `${title.value}•测试`;
86
- }
87
-
88
- /** 退出登录 */
89
- function logout() {
90
- useMultiTagsStoreHook().handleTags('equal', [...routerArrays]);
91
- cookies.remove(kCKTOKEN);
92
- cookies.remove(kTOKEN);
93
- cookies.remove(kLOGINER);
94
- usePermissionStoreHook().setWholeMenus([]);
95
- // 关闭全部标签页, 防止缓存了tags,又用另一个账号登录
96
- useMultiTagsStoreHook().handleTags('splice', '', {
97
- startIndex: 1,
98
- length: useMultiTagsStoreHook()?.multiTags?.length
99
- });
100
- usePermissionStoreHook().clearAllCachePage();
101
- resetRouter();
102
- router.push('/login');
103
- }
104
-
105
- function backHome() {
106
- router.push('/welcome');
107
- }
108
-
109
- function onPanel() {
110
- emitter.emit('openPanel');
111
- }
112
-
113
- function toggleSideBar() {
114
- appHook.toggleSideBar();
115
- }
116
-
117
- function handleResize(menuRef) {
118
- menuRef?.handleResize();
119
- }
120
-
121
- function resolvePath(route) {
122
- if (!route.children) return console.error(errorInfo);
123
- const httpReg = /^http(s?):\/\//;
124
- const routeChildPath = route.children[0]?.path;
125
- if (httpReg.test(routeChildPath)) {
126
- return route.path + '/' + routeChildPath;
127
- } else {
128
- return routeChildPath;
129
- }
130
- }
131
- function menuSelect(indexPath: string) {
132
- if (wholeMenus.value.length === 0 || isRemaining(indexPath)) return;
133
- emitter.emit('changLayoutRoute', indexPath);
134
- }
135
-
136
- /** 判断路径是否参与菜单 */
137
- function isRemaining(path: string) {
138
- return remainingPaths.includes(path);
139
- }
140
-
141
- function passwordItems() {
142
- const itemRender = { name: '$input', props: { type: 'password' } };
143
- return [
144
- { field: 'oldUserPwd', title: 'message.udp.oldPwd', required: true, itemRender },
145
- { field: 'userPwd', title: 'message.udp.newPwd', required: true, itemRender },
146
- { field: 'confirmPwd', title: 'message.udp.confirmPwd', required: true, itemRender }
147
- ];
148
- }
149
-
150
- return {
151
- title,
152
- device,
153
- layout,
154
- logout,
155
- routers,
156
- $storage,
157
- backHome,
158
- onPanel,
159
- getDivStyle,
160
- setDocumentTitle,
161
- toggleSideBar,
162
- menuSelect,
163
- handleResize,
164
- resolvePath,
165
- isCollapse,
166
- appHook,
167
- userInfo,
168
- avatarsStyle,
169
- getDropdownItemStyle,
170
- getDropdownItemClass,
171
- passwordItems
172
- };
173
- }
1
+ /*
2
+ * @Author: wei.li
3
+ * @Date: 2023-04-18 15:44:40
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-04-16 15:49:31
6
+ * @Description: file content
7
+ */
8
+ import { computed, type CSSProperties } from 'vue';
9
+ import { storeToRefs } from 'pinia';
10
+ import { useRouter } from 'vue-router';
11
+ import { cookies, useGlobal, storageLocal } from '@utogether/utils';
12
+ import { router, remainingPaths, resetRouter } from '../../router';
13
+ import { emitter } from '../../utils/mitt';
14
+ import { getEnv } from '../../config';
15
+ import { kTOKEN, kLOGINER, kCKTOKEN, kSYSCONFIG } from '../../contant';
16
+ import { routerArrays } from '../types';
17
+ // import { transformI18n } from '@/plugins/i18n';
18
+ import { useAppStoreHook } from '../../store/modules/app';
19
+ import { usePermissionStoreHook } from '../../store/modules/permission';
20
+ import { useEpThemeStoreHook } from '../../store/modules/epTheme';
21
+ import { useSystemStoreHook } from '../../store/modules/system';
22
+ import { useMultiTagsStoreHook } from '../../store/modules/multiTags';
23
+
24
+ const errorInfo = '当前路由配置不正确,请检查配置';
25
+
26
+ export function useNav() {
27
+ const appHook = useAppStoreHook();
28
+ const routers = useRouter().options.routes;
29
+ const { wholeMenus } = storeToRefs(usePermissionStoreHook());
30
+
31
+ const getDivStyle = computed((): CSSProperties => {
32
+ return {
33
+ width: '100%',
34
+ display: 'flex',
35
+ alignItems: 'center',
36
+ justifyContent: 'space-between',
37
+ overflow: 'hidden'
38
+ };
39
+ });
40
+
41
+ /** 设置国际化选中后的样式 */
42
+ const getDropdownItemStyle = computed(() => {
43
+ return (locale, t) => {
44
+ return {
45
+ background: locale === t ? useEpThemeStoreHook().epThemeColor : '',
46
+ color: locale === t ? '#f4f4f5' : '#000'
47
+ };
48
+ };
49
+ });
50
+
51
+ const getDropdownItemClass = computed(() => {
52
+ return (locale, t) => {
53
+ return locale === t ? '' : 'dark:hover:text-primary!';
54
+ };
55
+ });
56
+
57
+ /** 用户名 */
58
+ const userInfo = computed<IRecord>(() => {
59
+ return useSystemStoreHook().getUserInfo || {};
60
+ });
61
+ const avatarsStyle = computed(() => {
62
+ return userInfo.value ? { marginRight: '10px' } : '';
63
+ });
64
+
65
+ const isCollapse = computed(() => {
66
+ return !appHook.getSidebarStatus;
67
+ });
68
+
69
+ const device = computed(() => {
70
+ return appHook.getDevice;
71
+ });
72
+
73
+ const { $storage } = useGlobal();
74
+ const layout = computed(() => {
75
+ return $storage?.layout?.layout;
76
+ });
77
+
78
+ const title = computed(() => {
79
+ const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
80
+ return sysConfig?.title || 'U-DP';
81
+ });
82
+
83
+ /** 动态title */
84
+ function setDocumentTitle() {
85
+ document.title = getEnv().MODE !== 'staging' ? title.value : `${title.value}•测试`;
86
+ }
87
+
88
+ /** 退出登录 */
89
+ function logout() {
90
+ useMultiTagsStoreHook().handleTags('equal', [...routerArrays]);
91
+ cookies.remove(kCKTOKEN);
92
+ cookies.remove(kTOKEN);
93
+ cookies.remove(kLOGINER);
94
+ usePermissionStoreHook().setWholeMenus([]);
95
+ // 关闭全部标签页, 防止缓存了tags,又用另一个账号登录
96
+ useMultiTagsStoreHook().handleTags('splice', '', {
97
+ startIndex: 1,
98
+ length: useMultiTagsStoreHook()?.multiTags?.length
99
+ });
100
+ usePermissionStoreHook().clearAllCachePage();
101
+ resetRouter();
102
+ router.push('/login');
103
+ }
104
+
105
+ function backHome() {
106
+ router.push('/welcome');
107
+ }
108
+
109
+ function onPanel() {
110
+ emitter.emit('openPanel');
111
+ }
112
+
113
+ function toggleSideBar() {
114
+ appHook.toggleSideBar();
115
+ }
116
+
117
+ function handleResize(menuRef) {
118
+ menuRef?.handleResize();
119
+ }
120
+
121
+ function resolvePath(route) {
122
+ if (!route.children) return console.error(errorInfo);
123
+ const httpReg = /^http(s?):\/\//;
124
+ const routeChildPath = route.children[0]?.path;
125
+ if (httpReg.test(routeChildPath)) {
126
+ return route.path + '/' + routeChildPath;
127
+ } else {
128
+ return routeChildPath;
129
+ }
130
+ }
131
+ function menuSelect(indexPath: string) {
132
+ if (wholeMenus.value.length === 0 || isRemaining(indexPath)) return;
133
+ emitter.emit('changLayoutRoute', indexPath);
134
+ }
135
+
136
+ /** 判断路径是否参与菜单 */
137
+ function isRemaining(path: string) {
138
+ return remainingPaths.includes(path);
139
+ }
140
+
141
+ function passwordItems() {
142
+ const itemRender = { name: '$input', props: { type: 'password' } };
143
+ return [
144
+ { field: 'oldUserPwd', title: 'message.udp.oldPwd', required: true, itemRender },
145
+ { field: 'userPwd', title: 'message.udp.newPwd', required: true, itemRender },
146
+ { field: 'confirmPwd', title: 'message.udp.confirmPwd', required: true, itemRender }
147
+ ];
148
+ }
149
+
150
+ return {
151
+ title,
152
+ device,
153
+ layout,
154
+ logout,
155
+ routers,
156
+ $storage,
157
+ backHome,
158
+ onPanel,
159
+ getDivStyle,
160
+ setDocumentTitle,
161
+ toggleSideBar,
162
+ menuSelect,
163
+ handleResize,
164
+ resolvePath,
165
+ isCollapse,
166
+ appHook,
167
+ userInfo,
168
+ avatarsStyle,
169
+ getDropdownItemStyle,
170
+ getDropdownItemClass,
171
+ passwordItems
172
+ };
173
+ }