@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
@@ -1,233 +1,223 @@
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
+ const currentName = route.name || '';
95
+ const itemName = item.name || '';
96
+ if (isBoolean(route?.meta?.showLink) && route?.meta?.showLink === false) {
97
+ if (Object.keys(route.query).length > 0) {
98
+ return currentName === itemName && isEqual(route.query, item.query) ? previous : next;
99
+ } else {
100
+ return currentName === itemName && isEqual(route.params, item.params) ? previous : next;
101
+ }
102
+ } else {
103
+ return currentName === itemName ? previous : next;
104
+ }
105
+ }
106
+
107
+ const isFixedTag = computed(() => {
108
+ return item => {
109
+ return isBoolean(item?.meta?.fixedTag) && item?.meta?.fixedTag === true;
110
+ };
111
+ });
112
+
113
+ const iconIsActive = computed(() => {
114
+ return (item, index) => {
115
+ if (index === 0) return;
116
+ return conditionHandle(item, true, false);
117
+ };
118
+ });
119
+
120
+ const linkIsActive = computed(() => {
121
+ return item => {
122
+ return conditionHandle(item, 'is-active', '');
123
+ };
124
+ });
125
+
126
+ const scheduleIsActive = computed(() => {
127
+ return item => {
128
+ return conditionHandle(item, 'schedule-active', '');
129
+ };
130
+ });
131
+
132
+ const getTabStyle = computed((): CSSProperties => {
133
+ return {
134
+ transform: `translateX(${translateX.value}px)`
135
+ };
136
+ });
137
+
138
+ const getContextMenuStyle = computed((): CSSProperties => {
139
+ return { left: buttonLeft.value + 'px', top: buttonTop.value + 'px' };
140
+ });
141
+
142
+ const closeMenu = () => {
143
+ visible.value = false;
144
+ };
145
+
146
+ /** 鼠标移入添加激活样式 */
147
+ function onMouseenter(index) {
148
+ if (index) activeIndex.value = index;
149
+ if (unref(showModel) === 'smart') {
150
+ if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
151
+ toggleClass(true, 'schedule-in', instance.refs['schedule' + index][0]);
152
+ toggleClass(false, 'schedule-out', instance.refs['schedule' + index][0]);
153
+ } else {
154
+ if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
155
+ toggleClass(true, 'card-in', instance.refs['dynamic' + index][0]);
156
+ toggleClass(false, 'card-out', instance.refs['dynamic' + index][0]);
157
+ }
158
+ }
159
+
160
+ /** 鼠标移出恢复默认样式 */
161
+ function onMouseleave(index) {
162
+ activeIndex.value = -1;
163
+ if (unref(showModel) === 'smart') {
164
+ if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
165
+ toggleClass(false, 'schedule-in', instance.refs['schedule' + index][0]);
166
+ toggleClass(true, 'schedule-out', instance.refs['schedule' + index][0]);
167
+ } else {
168
+ if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
169
+ toggleClass(false, 'card-in', instance.refs['dynamic' + index][0]);
170
+ toggleClass(true, 'card-out', instance.refs['dynamic' + index][0]);
171
+ }
172
+ }
173
+
174
+ function onContentFullScreen() {
175
+ SuSetting.hiddenSideBar
176
+ ? SuSetting.changeSetting({ key: 'hiddenSideBar', value: false })
177
+ : SuSetting.changeSetting({ key: 'hiddenSideBar', value: true });
178
+ }
179
+
180
+ onMounted(() => {
181
+ if (!showModel.value) {
182
+ const configure = storageLocal.getItem(`${responsiveStorageNameSpace()}configure`);
183
+ configure.showModel = 'card';
184
+ storageLocal.setItem(`${responsiveStorageNameSpace()}configure`, configure);
185
+ }
186
+ });
187
+
188
+ watch(
189
+ () => visible.value,
190
+ () => {
191
+ useEventListener(document, 'click', closeMenu);
192
+ }
193
+ );
194
+
195
+ return {
196
+ route,
197
+ router,
198
+ visible,
199
+ showTags,
200
+ instance,
201
+ multiTags,
202
+ showModel,
203
+ tagsViews,
204
+ buttonTop,
205
+ buttonLeft,
206
+ translateX,
207
+ isFixedTag,
208
+ SuSetting,
209
+ activeIndex,
210
+ getTabStyle,
211
+ iconIsActive,
212
+ linkIsActive,
213
+ currentSelect,
214
+ scheduleIsActive,
215
+ getContextMenuStyle,
216
+ closeMenu,
217
+ onMounted,
218
+ onMouseenter,
219
+ onMouseleave,
220
+ transformI18n,
221
+ onContentFullScreen
222
+ };
223
+ }