@utogether/udp-core 1.0.1-beta.15 → 1.0.1-beta.16

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 (71) hide show
  1. package/dist/{403-DpJevH-h.js → 403-RBzulrcG.js} +1 -1
  2. package/dist/{404-BpqJK3YD.js → 404-DX-dU_6C.js} +1 -1
  3. package/dist/{500-DyvRbMD_.js → 500-BCTk0__d.js} +1 -1
  4. package/dist/{AuthorityInfo-Cyu4XHXx.js → AuthorityInfo-BADTOenq.js} +1 -1
  5. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BxmnEEFq.js → AuthorityInfo.vue_vue_type_style_index_0_lang-Cv46yAx_.js} +3 -3
  6. package/dist/{Company-BLygcYrI.js → Company-B-61KrWd.js} +3 -3
  7. package/dist/{CompanyPanel-D5Tgw6LF.js → CompanyPanel-CawSrEff.js} +10 -10
  8. package/dist/{Department-qI9OninZ.js → Department-CrzJPtvP.js} +3 -3
  9. package/dist/{DepartmentPanel-P-P8fPZQ.js → DepartmentPanel-DYuL8H-j.js} +23 -23
  10. package/dist/{DesignPanel-BxjD0AZi.js → DesignPanel-DEAv6V68.js} +1 -1
  11. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DN_OKxCu.js → DesignPanel.vue_vue_type_style_index_0_lang-BsnXZ2td.js} +6 -6
  12. package/dist/{DictView-PWL_Vf0T.js → DictView-BuO-2b-c.js} +15 -16
  13. package/dist/{InvOrganization-JXBXyn3G.js → InvOrganization-CBgKBJAn.js} +1 -1
  14. package/dist/{Org-DcTJn6YQ.js → Org-BaQw2r-o.js} +3 -3
  15. package/dist/{Preview-IKvbHI8a.js → Preview-DvCrmKNk.js} +1 -1
  16. package/dist/{ReportDefine-_G7ts7Ch.js → ReportDefine-DyhWz0as.js} +1 -1
  17. package/dist/{ReportDesign-7h5oFklh.js → ReportDesign-DgZ2f2zv.js} +9 -9
  18. package/dist/{ReportQuery-dj0BQUyi.js → ReportQuery-DTZYbCDi.js} +1 -1
  19. package/dist/{ReportQueryFrom-6WaZPg9i.js → ReportQueryFrom-B-vtJegP.js} +1 -1
  20. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-ChhcBPqa.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-D6izgxph.js} +1 -1
  21. package/dist/{ReportTemplate-DIvJ3RrB.js → ReportTemplate-DA1ZqKGf.js} +11 -11
  22. package/dist/{Role-ia_3qAZU.js → Role-mbqoav5t.js} +3 -3
  23. package/dist/{RoleAssign-D0zVl4y3.js → RoleAssign-ltEJIEcr.js} +3 -3
  24. package/dist/{RolePanel-CQxOiAzj.js → RolePanel-1g1a-G8D.js} +1 -1
  25. package/dist/{RolePanel-BiGGmP2w.js → RolePanel-u90v9eS0.js} +1 -1
  26. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BYDLRS_x.js → RolePanel.vue_vue_type_script_setup_true_lang-D9YxpGnt.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Dwv5LFbf.js → RolePanel.vue_vue_type_script_setup_true_lang-LC4Egk-Q.js} +9 -9
  28. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-gPP4duO8.js → ScrollPanel.vue_vue_type_style_index_0_lang-DZ3W1epK.js} +8 -8
  29. package/dist/{Staff-Bf_oUqF6.js → Staff-CJ2GgCL3.js} +3 -3
  30. package/dist/{StaffInfo-D5aisjx2.js → StaffInfo-3KkodDCK.js} +1 -1
  31. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-6PX7Bx6A.js → StaffInfo.vue_vue_type_script_setup_true_lang-CW-isIxJ.js} +7 -7
  32. package/dist/{StaffPanel--zKzd4rt.js → StaffPanel-DoXPSoY5.js} +1 -1
  33. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-BWZSIFpq.js → StaffPanel.vue_vue_type_script_setup_true_lang-DvhGnOMZ.js} +2 -2
  34. package/dist/{SysUser-BelbESLR.js → SysUser-BuIZhMPh.js} +2 -2
  35. package/dist/{SysUserPanel-BixKqQcA.js → SysUserPanel-t1GJcJGM.js} +1 -1
  36. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-BhaWZEfo.js → SysUserPanel.vue_vue_type_script_setup_true_lang-CDDkFLlN.js} +6 -6
  37. package/dist/{SystemMenu-D40tzcSj.js → SystemMenu-DuLEL6_l.js} +10 -10
  38. package/dist/{UserInfo-DTyk071j.js → UserInfo-WWby4lts.js} +1 -1
  39. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-p9MByikC.js → UserInfo.vue_vue_type_style_index_0_lang-B06ZSrJV.js} +10 -10
  40. package/dist/{childView-so5qSxr0.js → childView-B0-EAoAi.js} +1 -1
  41. package/dist/{childView-xL3iE1yN.js → childView-IYY4L8VK.js} +1 -1
  42. package/dist/{childView.vue_vue_type_style_index_0_lang-DK1ei5uM.js → childView.vue_vue_type_style_index_0_lang-B56v6yK7.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-CKcXpSqa.js → childView.vue_vue_type_style_index_0_lang-CjF8nZuj.js} +6 -6
  44. package/dist/{code-rule-DC35y76w.js → code-rule-DDLdi3pP.js} +6 -6
  45. package/dist/core.es.js +17 -12
  46. package/dist/{cron-task-BhjQ4S68.js → cron-task-p3-AFN1w.js} +11 -11
  47. package/dist/{frameView-G_zhG9pf.js → frameView-B_WAZErD.js} +1 -1
  48. package/dist/{index-C6ehxLLO.js → index-24fnvUBy.js} +741 -540
  49. package/dist/{layoutView-CO2U8qCQ.js → layoutView-CoEp2afn.js} +25 -27
  50. package/dist/login-DP0oP70W.js +249 -0
  51. package/dist/{lov-view-Cr929NMD.js → lov-view-BDoZRK-v.js} +5 -5
  52. package/dist/{menuInfo-BWuROp7u.js → menuInfo-5Xls76qB.js} +1 -1
  53. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-9nouHUjO.js → menuInfo.vue_vue_type_style_index_0_lang-BfZczW9a.js} +7 -7
  54. package/dist/{pda-app-CQP1sMAI.js → pda-app-DxGYn4G7.js} +18 -18
  55. package/dist/{resource-BDQLrMpK.js → resource-BnYWe_-Q.js} +7 -7
  56. package/dist/{su-welcome-CZysrZQ1.js → su-welcome-B2rNhhDH.js} +88 -88
  57. package/dist/{sys-config-BiGNMYSA.js → sys-config-Bb4WkxZK.js} +6 -6
  58. package/dist/udp-core.css +2 -2
  59. package/dist/utogether-MlnyYtNS.js +4 -0
  60. package/index.ts +12 -4
  61. package/package.json +1 -1
  62. package/src/layout/hooks/useTag.ts +221 -233
  63. package/src/main.ts +114 -113
  64. package/src/style/login.css +336 -336
  65. package/src/style/vxetable.scss +13 -0
  66. package/src/utils/index.ts +3 -1
  67. package/src/views/udev/dict/DictView.vue +2 -2
  68. package/src/views/ulogin/login.vue +323 -323
  69. package/types/global.d.ts +230 -236
  70. package/dist/login-DzyK2soP.js +0 -278
  71. package/dist/utogether-BRirriOz.js +0 -182
@@ -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
@@ -2,7 +2,7 @@
2
2
  * @Author: levi7754 levi7754@163.com
3
3
  * @Date: 2024-04-14 19:10:28
4
4
  * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-07-27 11:04:41
5
+ * @LastEditTime: 2025-09-12 14:48:18
6
6
  * @FilePath: /udp-front/packages/udp-core/index.ts
7
7
  * @Description:
8
8
  */
@@ -18,11 +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
+ import { useLayout } from './src/layout/hooks/useLayout';
22
+ import { useDataThemeChange } from './src/layout/hooks/useDataThemeChange';
21
23
  import { constantRoutes, remainingRouters, routerBefore } from './src/router';
22
24
 
23
- import { lifeCycleEvent } from './src/utils/lifecycle';
24
-
25
25
  import { getServiceApi } from './src/api';
26
+ import { initDict } from './src/api/user';
27
+
28
+ import { lifeCycleEvent, getPlatform, getBrower } from './src/utils';
26
29
 
27
30
  export {
28
31
  store,
@@ -36,5 +39,10 @@ export {
36
39
  lifeCycleEvent,
37
40
  routerBefore,
38
41
  constantRoutes,
39
- remainingRouters
42
+ remainingRouters,
43
+ useDataThemeChange,
44
+ useLayout,
45
+ initDict,
46
+ getPlatform,
47
+ getBrower
40
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.15",
4
+ "version": "1.0.1-beta.16",
5
5
  "description": "",
6
6
  "type": "module",
7
7
  "main1": "index.ts",
@@ -1,233 +1,221 @@
1
- import {
2
- ref,
3
- unref,
4
- watch,
5
- computed,
6
- reactive,
7
- onMounted,
8
- type CSSProperties,
9
- getCurrentInstance
10
- } from 'vue';
11
- import type { tagsViewsType } from '../types';
12
- import { isEqual, isBoolean } from 'xe-utils';
13
- import { useEventListener } from '@vueuse/core';
14
- import { useRoute, useRouter } from 'vue-router';
15
- import { storageLocal, toggleClass, hasClass } from '@utogether/utils';
16
- import { transformI18n } from '../../plugins/i18n';
17
- import { useSettingStoreHook } from '../../store/modules/settings';
18
- import { responsiveStorageNameSpace } from '../../config';
19
- import { useMultiTagsStoreHook } from '../../store/modules/multiTags';
20
-
21
- export function useTags() {
22
- const route = useRoute();
23
- const router = useRouter();
24
- const instance = getCurrentInstance();
25
- const SuSetting = useSettingStoreHook();
26
-
27
- const buttonTop = ref(0);
28
- const buttonLeft = ref(0);
29
- const translateX = ref(0);
30
- const visible = ref(false);
31
- const activeIndex = ref(-1);
32
- // 当前右键选中的路由信息
33
- const currentSelect = ref({});
34
-
35
- /** 显示模式,默认灵动模式 */
36
- const showModel = ref(
37
- storageLocal.getItem(`${responsiveStorageNameSpace()}configure`)?.showModel || 'smart'
38
- );
39
- /** 是否隐藏标签页,默认显示 */
40
- const showTags =
41
- ref(storageLocal.getItem(`${responsiveStorageNameSpace()}configure`)?.hideTabs) ?? ref('false');
42
- const multiTags: any = computed(() => {
43
- return useMultiTagsStoreHook().multiTags;
44
- });
45
-
46
- const tagsViews = reactive<Array<tagsViewsType>>([
47
- {
48
- icon: 'refresh-right',
49
- text: 'message.udp.reload',
50
- divided: false,
51
- disabled: false,
52
- show: true
53
- },
54
- {
55
- icon: 'close',
56
- text: 'message.udp.closeCurrentTab',
57
- divided: false,
58
- disabled: multiTags.value.length > 1 ? false : true,
59
- show: true
60
- },
61
- {
62
- icon: 'ri:text-direction-r',
63
- text: 'message.udp.closeLeftTabs',
64
- divided: true,
65
- disabled: multiTags.value.length > 1 ? false : true,
66
- show: true
67
- },
68
- {
69
- icon: 'ri:text-direction-l',
70
- text: 'message.udp.closeRightTabs',
71
- divided: false,
72
- disabled: multiTags.value.length > 1 ? false : true,
73
- show: true
74
- },
75
- {
76
- icon: 'ri:text-spacing',
77
- text: 'message.udp.closeOtherTabs',
78
- divided: true,
79
- disabled: multiTags.value.length > 2 ? false : true,
80
- show: true
81
- },
82
- {
83
- icon: 'ri:subtract-line',
84
- text: 'message.udp.closeAllTabs',
85
- divided: false,
86
- disabled: multiTags.value.length > 1 ? false : true,
87
- show: true
88
- },
89
- {
90
- icon: 'ri:fullscreen-fill',
91
- text: 'message.udp.wholeFullScreen',
92
- divided: true,
93
- disabled: false,
94
- show: true
95
- },
96
- {
97
- icon: 'ri:fullscreen-fill',
98
- text: 'message.udp.contentFullScreen',
99
- divided: false,
100
- disabled: false,
101
- show: true
102
- }
103
- ]);
104
-
105
- function conditionHandle(item, previous, next) {
106
- if (isBoolean(route?.meta?.showLink) && route?.meta?.showLink === false) {
107
- if (Object.keys(route.query).length > 0) {
108
- return isEqual(route.query, item.query) ? previous : next;
109
- } else {
110
- return isEqual(route.params, item.params) ? previous : next;
111
- }
112
- } else {
113
- return route.path === item.path ? previous : next;
114
- }
115
- }
116
-
117
- const isFixedTag = computed(() => {
118
- return item => {
119
- return isBoolean(item?.meta?.fixedTag) && item?.meta?.fixedTag === true;
120
- };
121
- });
122
-
123
- const iconIsActive = computed(() => {
124
- return (item, index) => {
125
- if (index === 0) return;
126
- return conditionHandle(item, true, false);
127
- };
128
- });
129
-
130
- const linkIsActive = computed(() => {
131
- return item => {
132
- return conditionHandle(item, 'is-active', '');
133
- };
134
- });
135
-
136
- const scheduleIsActive = computed(() => {
137
- return item => {
138
- return conditionHandle(item, 'schedule-active', '');
139
- };
140
- });
141
-
142
- const getTabStyle = computed((): CSSProperties => {
143
- return {
144
- transform: `translateX(${translateX.value}px)`
145
- };
146
- });
147
-
148
- const getContextMenuStyle = computed((): CSSProperties => {
149
- return { left: buttonLeft.value + 'px', top: buttonTop.value + 'px' };
150
- });
151
-
152
- const closeMenu = () => {
153
- visible.value = false;
154
- };
155
-
156
- /** 鼠标移入添加激活样式 */
157
- function onMouseenter(index) {
158
- if (index) activeIndex.value = index;
159
- if (unref(showModel) === 'smart') {
160
- if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
161
- toggleClass(true, 'schedule-in', instance.refs['schedule' + index][0]);
162
- toggleClass(false, 'schedule-out', instance.refs['schedule' + index][0]);
163
- } else {
164
- if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
165
- toggleClass(true, 'card-in', instance.refs['dynamic' + index][0]);
166
- toggleClass(false, 'card-out', instance.refs['dynamic' + index][0]);
167
- }
168
- }
169
-
170
- /** 鼠标移出恢复默认样式 */
171
- function onMouseleave(index) {
172
- activeIndex.value = -1;
173
- if (unref(showModel) === 'smart') {
174
- if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
175
- toggleClass(false, 'schedule-in', instance.refs['schedule' + index][0]);
176
- toggleClass(true, 'schedule-out', instance.refs['schedule' + index][0]);
177
- } else {
178
- if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
179
- toggleClass(false, 'card-in', instance.refs['dynamic' + index][0]);
180
- toggleClass(true, 'card-out', instance.refs['dynamic' + index][0]);
181
- }
182
- }
183
-
184
- function onContentFullScreen() {
185
- SuSetting.hiddenSideBar
186
- ? SuSetting.changeSetting({ key: 'hiddenSideBar', value: false })
187
- : SuSetting.changeSetting({ key: 'hiddenSideBar', value: true });
188
- }
189
-
190
- onMounted(() => {
191
- if (!showModel.value) {
192
- const configure = storageLocal.getItem(`${responsiveStorageNameSpace()}configure`);
193
- configure.showModel = 'card';
194
- storageLocal.setItem(`${responsiveStorageNameSpace()}configure`, configure);
195
- }
196
- });
197
-
198
- watch(
199
- () => visible.value,
200
- () => {
201
- useEventListener(document, 'click', closeMenu);
202
- }
203
- );
204
-
205
- return {
206
- route,
207
- router,
208
- visible,
209
- showTags,
210
- instance,
211
- multiTags,
212
- showModel,
213
- tagsViews,
214
- buttonTop,
215
- buttonLeft,
216
- translateX,
217
- isFixedTag,
218
- SuSetting,
219
- activeIndex,
220
- getTabStyle,
221
- iconIsActive,
222
- linkIsActive,
223
- currentSelect,
224
- scheduleIsActive,
225
- getContextMenuStyle,
226
- closeMenu,
227
- onMounted,
228
- onMouseenter,
229
- onMouseleave,
230
- transformI18n,
231
- onContentFullScreen
232
- };
233
- }
1
+ import { ref, unref, watch, computed, reactive, onMounted, type CSSProperties, getCurrentInstance } from 'vue';
2
+ import type { tagsViewsType } from '../types';
3
+ import { isEqual, isBoolean } from 'xe-utils';
4
+ import { useEventListener } from '@vueuse/core';
5
+ import { useRoute, useRouter } from 'vue-router';
6
+ import { storageLocal, toggleClass, hasClass } from '@utogether/utils';
7
+ import { transformI18n } from '../../plugins/i18n';
8
+ import { useSettingStoreHook } from '../../store/modules/settings';
9
+ import { responsiveStorageNameSpace } from '../../config';
10
+ import { useMultiTagsStoreHook } from '../../store/modules/multiTags';
11
+
12
+ export function useTags() {
13
+ const route = useRoute();
14
+ const router = useRouter();
15
+ const instance = getCurrentInstance();
16
+ const SuSetting = useSettingStoreHook();
17
+
18
+ const buttonTop = ref(0);
19
+ const buttonLeft = ref(0);
20
+ const translateX = ref(0);
21
+ const visible = ref(false);
22
+ const activeIndex = ref(-1);
23
+ // 当前右键选中的路由信息
24
+ const currentSelect = ref({});
25
+
26
+ /** 显示模式,默认灵动模式 */
27
+ const showModel = ref(storageLocal.getItem(`${responsiveStorageNameSpace()}configure`)?.showModel || 'smart');
28
+ /** 是否隐藏标签页,默认显示 */
29
+ const showTags = ref(storageLocal.getItem(`${responsiveStorageNameSpace()}configure`)?.hideTabs) ?? ref('false');
30
+ const multiTags: any = computed(() => {
31
+ return useMultiTagsStoreHook().multiTags;
32
+ });
33
+
34
+ const tagsViews = reactive<Array<tagsViewsType>>([
35
+ {
36
+ icon: 'refresh-right',
37
+ text: 'message.udp.reload',
38
+ divided: false,
39
+ disabled: false,
40
+ show: true
41
+ },
42
+ {
43
+ icon: 'close',
44
+ text: 'message.udp.closeCurrentTab',
45
+ divided: false,
46
+ disabled: multiTags.value.length > 1 ? false : true,
47
+ show: true
48
+ },
49
+ {
50
+ icon: 'ri:text-direction-r',
51
+ text: 'message.udp.closeLeftTabs',
52
+ divided: true,
53
+ disabled: multiTags.value.length > 1 ? false : true,
54
+ show: true
55
+ },
56
+ {
57
+ icon: 'ri:text-direction-l',
58
+ text: 'message.udp.closeRightTabs',
59
+ divided: false,
60
+ disabled: multiTags.value.length > 1 ? false : true,
61
+ show: true
62
+ },
63
+ {
64
+ icon: 'ri:text-spacing',
65
+ text: 'message.udp.closeOtherTabs',
66
+ divided: true,
67
+ disabled: multiTags.value.length > 2 ? false : true,
68
+ show: true
69
+ },
70
+ {
71
+ icon: 'ri:subtract-line',
72
+ text: 'message.udp.closeAllTabs',
73
+ divided: false,
74
+ disabled: multiTags.value.length > 1 ? false : true,
75
+ show: true
76
+ },
77
+ {
78
+ icon: 'ri:fullscreen-fill',
79
+ text: 'message.udp.wholeFullScreen',
80
+ divided: true,
81
+ disabled: false,
82
+ show: true
83
+ },
84
+ {
85
+ icon: 'ri:fullscreen-fill',
86
+ text: 'message.udp.contentFullScreen',
87
+ divided: false,
88
+ disabled: false,
89
+ show: true
90
+ }
91
+ ]);
92
+
93
+ function conditionHandle(item, previous, next) {
94
+ if (isBoolean(route?.meta?.showLink) && route?.meta?.showLink === false) {
95
+ if (Object.keys(route.query).length > 0) {
96
+ return isEqual(route.query, item.query) ? previous : next;
97
+ } else {
98
+ return isEqual(route.params, item.params) ? previous : next;
99
+ }
100
+ } else {
101
+ return route.path === item.path ? previous : next;
102
+ }
103
+ }
104
+
105
+ const isFixedTag = computed(() => {
106
+ return item => {
107
+ return isBoolean(item?.meta?.fixedTag) && item?.meta?.fixedTag === true;
108
+ };
109
+ });
110
+
111
+ const iconIsActive = computed(() => {
112
+ return (item, index) => {
113
+ if (index === 0) return;
114
+ return conditionHandle(item, true, false);
115
+ };
116
+ });
117
+
118
+ const linkIsActive = computed(() => {
119
+ return item => {
120
+ return conditionHandle(item, 'is-active', '');
121
+ };
122
+ });
123
+
124
+ const scheduleIsActive = computed(() => {
125
+ return item => {
126
+ return conditionHandle(item, 'schedule-active', '');
127
+ };
128
+ });
129
+
130
+ const getTabStyle = computed((): CSSProperties => {
131
+ return {
132
+ transform: `translateX(${translateX.value}px)`
133
+ };
134
+ });
135
+
136
+ const getContextMenuStyle = computed((): CSSProperties => {
137
+ return { left: buttonLeft.value + 'px', top: buttonTop.value + 'px' };
138
+ });
139
+
140
+ const closeMenu = () => {
141
+ visible.value = false;
142
+ };
143
+
144
+ /** 鼠标移入添加激活样式 */
145
+ function onMouseenter(index) {
146
+ if (index) activeIndex.value = index;
147
+ if (unref(showModel) === 'smart') {
148
+ if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
149
+ toggleClass(true, 'schedule-in', instance.refs['schedule' + index][0]);
150
+ toggleClass(false, 'schedule-out', instance.refs['schedule' + index][0]);
151
+ } else {
152
+ if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
153
+ toggleClass(true, 'card-in', instance.refs['dynamic' + index][0]);
154
+ toggleClass(false, 'card-out', instance.refs['dynamic' + index][0]);
155
+ }
156
+ }
157
+
158
+ /** 鼠标移出恢复默认样式 */
159
+ function onMouseleave(index) {
160
+ activeIndex.value = -1;
161
+ if (unref(showModel) === 'smart') {
162
+ if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
163
+ toggleClass(false, 'schedule-in', instance.refs['schedule' + index][0]);
164
+ toggleClass(true, 'schedule-out', instance.refs['schedule' + index][0]);
165
+ } else {
166
+ if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
167
+ toggleClass(false, 'card-in', instance.refs['dynamic' + index][0]);
168
+ toggleClass(true, 'card-out', instance.refs['dynamic' + index][0]);
169
+ }
170
+ }
171
+
172
+ function onContentFullScreen() {
173
+ SuSetting.hiddenSideBar
174
+ ? SuSetting.changeSetting({ key: 'hiddenSideBar', value: false })
175
+ : SuSetting.changeSetting({ key: 'hiddenSideBar', value: true });
176
+ }
177
+
178
+ onMounted(() => {
179
+ if (!showModel.value) {
180
+ const configure = storageLocal.getItem(`${responsiveStorageNameSpace()}configure`);
181
+ configure.showModel = 'card';
182
+ storageLocal.setItem(`${responsiveStorageNameSpace()}configure`, configure);
183
+ }
184
+ });
185
+
186
+ watch(
187
+ () => visible.value,
188
+ () => {
189
+ useEventListener(document, 'click', closeMenu);
190
+ }
191
+ );
192
+
193
+ return {
194
+ route,
195
+ router,
196
+ visible,
197
+ showTags,
198
+ instance,
199
+ multiTags,
200
+ showModel,
201
+ tagsViews,
202
+ buttonTop,
203
+ buttonLeft,
204
+ translateX,
205
+ isFixedTag,
206
+ SuSetting,
207
+ activeIndex,
208
+ getTabStyle,
209
+ iconIsActive,
210
+ linkIsActive,
211
+ currentSelect,
212
+ scheduleIsActive,
213
+ getContextMenuStyle,
214
+ closeMenu,
215
+ onMounted,
216
+ onMouseenter,
217
+ onMouseleave,
218
+ transformI18n,
219
+ onContentFullScreen
220
+ };
221
+ }