@utogether/udp-core 1.0.1-beta.9 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/build/plugins.ts +37 -39
  2. package/dist/{403-BOzKHdlm.js → 403-B1rIjAAu.js} +6 -6
  3. package/dist/{404-uwgt4Nll.js → 404-mBqc2y4t.js} +4 -4
  4. package/dist/{500-4HBf6V9m.js → 500-BoI45Zdh.js} +2 -2
  5. package/dist/{AuthorityInfo-DvbIh1vT.js → AuthorityInfo-B08NBIIn.js} +1 -1
  6. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BlCPvwXU.js → AuthorityInfo.vue_vue_type_style_index_0_lang-BLP1SaiH.js} +3 -3
  7. package/dist/{Company-D7Q9BFmr.js → Company-JGGyWEWH.js} +3 -3
  8. package/dist/{CompanyPanel-C0-PJlrt.js → CompanyPanel-BQ_cCmDx.js} +7 -7
  9. package/dist/{Department-h2hlXACv.js → Department-z2iO6hwM.js} +10 -10
  10. package/dist/{DepartmentPanel-B6hDEQpG.js → DepartmentPanel-BtQe7zwU.js} +108 -78
  11. package/dist/{DesignPanel-cS58-1v9.js → DesignPanel-7mhtVWas.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-LdvLC8VU.js → DesignPanel.vue_vue_type_style_index_0_lang-4EsHemj_.js} +6 -6
  13. package/dist/{DictView-T3TmpBa8.js → DictView-CjchV2Yk.js} +15 -16
  14. package/dist/InvOrganization-Pn1O_XP0.js +74 -0
  15. package/dist/{Org-CnCBDGKF.js → Org-BqytV_vi.js} +1 -1
  16. package/dist/{Preview-BaktKXB1.js → Preview-CLpUUMay.js} +2 -2
  17. package/dist/{ReportDefine-5Rb0PO9A.js → ReportDefine-Cz1KtEUF.js} +1 -1
  18. package/dist/{ReportDesign-DYdkVREA.js → ReportDesign-BaORYud4.js} +13 -13
  19. package/dist/{ReportQuery-BwhzIXMt.js → ReportQuery-CPCPXiXz.js} +1 -1
  20. package/dist/{ReportQueryFrom-PHtWwlOe.js → ReportQueryFrom-C_AcrfkJ.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-BE5yZNPM.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-Bm67ejay.js} +1 -1
  22. package/dist/{ReportTemplate-DaadVXIi.js → ReportTemplate-CFiNMz79.js} +11 -11
  23. package/dist/{Role-Dtg3nAmG.js → Role-B-XDoJd5.js} +3 -3
  24. package/dist/{RoleAssign-DEGtLssH.js → RoleAssign-BolW8YVs.js} +8 -8
  25. package/dist/{RolePanel-DpUzfE_o.js → RolePanel-2kfs5tw9.js} +1 -1
  26. package/dist/{RolePanel-CT7BTPmy.js → RolePanel-HilSuYns.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Xyo0YEI0.js → RolePanel.vue_vue_type_script_setup_true_lang-CE4gApUY.js} +7 -7
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Dg2A6DJu.js → RolePanel.vue_vue_type_script_setup_true_lang-DPzgfAyV.js} +13 -13
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-CyutzDZS.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCTH4RkH.js} +4 -4
  30. package/dist/{Staff-_NlAGkrh.js → Staff-BTk3whFC.js} +3 -3
  31. package/dist/{StaffInfo-DVgUvVgd.js → StaffInfo-d3AuSzlA.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-C8hmlFgX.js → StaffInfo.vue_vue_type_script_setup_true_lang-eOL4VlfE.js} +5 -5
  33. package/dist/{StaffPanel-DKNZE3IE.js → StaffPanel-DV-D4jjz.js} +1 -1
  34. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-4sFq3CEo.js +135 -0
  35. package/dist/{SysUser-kQUf7XKz.js → SysUser-BnjYytws.js} +2 -2
  36. package/dist/{SysUserPanel-C191uX3U.js → SysUserPanel-CBoyD-Qi.js} +1 -1
  37. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-PrTlTZR-.js +341 -0
  38. package/dist/{SystemMenu-DwuSvHnj.js → SystemMenu-kYB_ZaUt.js} +36 -36
  39. package/dist/{UserInfo-DIsInFld.js → UserInfo-4dx97VBL.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-CnvGdbej.js → UserInfo.vue_vue_type_style_index_0_lang-BpbC_ZDm.js} +10 -10
  41. package/dist/{childView-3Bs2UBEw.js → childView-CHPNfTEb.js} +1 -1
  42. package/dist/{childView-BawyULD7.js → childView-CKA_JgVZ.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-YpWF-p2F.js → childView.vue_vue_type_style_index_0_lang-Bym2fQRd.js} +7 -7
  44. package/dist/childView.vue_vue_type_style_index_0_lang-W7bCtXeu.js +177 -0
  45. package/dist/{code-rule-DVaYcn8S.js → code-rule-CbxuZg0-.js} +40 -38
  46. package/dist/core.es.js +18 -12
  47. package/dist/{cron-task-xuzP-BpE.js → cron-task-nTOpqQYf.js} +7 -7
  48. package/dist/flow-task-B07st2aD.js +10 -0
  49. package/dist/{frameView-Cudt06qS.js → frameView-Z1tPUyCh.js} +1 -1
  50. package/dist/index-C3q8HoJM.js +4650 -0
  51. package/dist/{layoutView-BlFTV2jX.js → layoutView--MGA9zUB.js} +1766 -1760
  52. package/dist/{log-in-e7D5Ss1P.js → log-in-CSYJDA6m.js} +36 -29
  53. package/dist/log-out-DiwGCg7p.js +130 -0
  54. package/dist/login-C6Y0ajDp.js +251 -0
  55. package/dist/{login-log-kqKzKTto.js → login-log-C0V-_l3F.js} +5 -3
  56. package/dist/{lov-view-B2HaxyMs.js → lov-view-Cmv7wZZ9.js} +6 -6
  57. package/dist/{menuInfo-BxCTJ1VW.js → menuInfo-UeutJpOa.js} +1 -1
  58. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-CLOPNeUW.js → menuInfo.vue_vue_type_style_index_0_lang-CWX4Mu67.js} +118 -98
  59. package/dist/{pda-app-DPsAFNiw.js → pda-app-B6w99SJo.js} +10 -10
  60. package/dist/{resource-Dibb7t8u.js → resource-BybJvUv0.js} +4 -4
  61. package/dist/{su-welcome-DejR0KkM.js → su-welcome-C1bmxHoY.js} +119 -121
  62. package/dist/sys-config-BnmIDnCj.js +370 -0
  63. package/dist/udp-core.css +1 -9
  64. package/dist/utogether-MlnyYtNS.js +4 -0
  65. package/index.ts +49 -40
  66. package/package.json +18 -18
  67. package/src/App.vue +65 -65
  68. package/src/api/http.ts +1 -4
  69. package/src/api/index.ts +4 -2
  70. package/src/api/user.ts +2 -2
  71. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  72. package/src/components/SuScrollTree/ScrollPanel.vue +1 -6
  73. package/src/components/udp/content/index.vue +88 -0
  74. package/src/components/udp/{form.vue → form/form.vue} +13 -16
  75. package/src/components/udp/{grid.vue → grid/index.vue} +56 -27
  76. package/src/components/udp/index.ts +4 -9
  77. package/src/components/udp/ut-stamp-badge/index.vue +271 -0
  78. package/src/components/udp/utils.ts +66 -105
  79. package/src/layout/components/lay-navbar/index.vue +8 -6
  80. package/src/layout/components/lay-panel/index.vue +150 -150
  81. package/src/layout/components/lay-search/index.vue +25 -25
  82. package/src/layout/components/lay-select-org/index.vue +4 -9
  83. package/src/layout/components/lay-setting/index.vue +503 -510
  84. package/src/layout/components/lay-sidebar/horizontal.vue +8 -6
  85. package/src/layout/components/lay-sidebar/mixNav.vue +260 -258
  86. package/src/layout/components/lay-sidebar/sidebar-logo.vue +101 -98
  87. package/src/layout/components/lay-tag/index.vue +24 -51
  88. package/src/layout/hooks/useDataThemeChange.ts +1 -1
  89. package/src/layout/hooks/useNav.ts +176 -173
  90. package/src/layout/hooks/useTag.ts +227 -233
  91. package/src/layout/types.ts +93 -92
  92. package/src/main.ts +115 -119
  93. package/src/plugins/i18n/en.ts +302 -302
  94. package/src/plugins/i18n/module/u-workflow.ts +1 -1
  95. package/src/plugins/i18n/zh.ts +21 -6
  96. package/src/plugins/vxe-table/index.ts +116 -53
  97. package/src/plugins/vxe-table/render.tsx +945 -956
  98. package/src/router/index.ts +17 -17
  99. package/src/router/modules/flow.ts +35 -0
  100. package/src/router/modules/home.ts +32 -32
  101. package/src/router/modules/remaining.ts +58 -58
  102. package/src/router/utils.ts +420 -377
  103. package/src/store/modules/app.ts +2 -4
  104. package/src/store/modules/epTheme.ts +48 -49
  105. package/src/store/modules/multiTags.ts +15 -14
  106. package/src/store/modules/permission.ts +25 -15
  107. package/src/store/modules/system.ts +1 -3
  108. package/src/style/button.scss +85 -85
  109. package/src/style/login.css +1 -1
  110. package/src/style/vxetable.scss +61 -2
  111. package/src/utils/dataFormat/index.ts +223 -223
  112. package/src/utils/index.ts +3 -1
  113. package/src/utils/lifecycle.ts +39 -20
  114. package/src/utils/propTypes.ts +1 -6
  115. package/src/utils/storage/index.ts +2 -2
  116. package/src/utils/udp/http/index.ts +24 -11
  117. package/src/utils/udp/http/types.d.ts +3 -10
  118. package/src/views/login/login-view.vue +4 -18
  119. package/src/views/organization/company/CompanyPanel.vue +259 -259
  120. package/src/views/organization/department/Department.vue +58 -58
  121. package/src/views/organization/department/DepartmentPanel.vue +303 -283
  122. package/src/views/organization/inv-org/InvOrganization.vue +22 -7
  123. package/src/views/organization/staff/StaffInfo.vue +127 -133
  124. package/src/views/organization/staff/StaffPanel.vue +162 -145
  125. package/src/views/system/cron/cron-task.vue +2 -12
  126. package/src/views/system/menu/SystemMenu.vue +185 -183
  127. package/src/views/system/menu/menuInfo.vue +384 -363
  128. package/src/views/system/role/UserInfo.vue +195 -195
  129. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  130. package/src/views/system/role-assign/RolePanel.vue +139 -139
  131. package/src/views/system/sys/sys-config.vue +69 -20
  132. package/src/views/system/sysUser/SysUserPanel.vue +97 -28
  133. package/src/views/uapp/pda/pda-app.vue +208 -208
  134. package/src/views/udev/coderule/code-rule.vue +132 -121
  135. package/src/views/udev/dict/DictView.vue +2 -2
  136. package/src/views/udev/dict/childView.vue +183 -222
  137. package/src/views/udev/lov/childView.vue +1 -7
  138. package/src/views/udev/lov/lov-view.vue +91 -91
  139. package/src/views/uhome/components/menu-favorite.vue +314 -331
  140. package/src/views/uhome/su-welcome.vue +319 -339
  141. package/src/views/ulogin/login.vue +325 -321
  142. package/src/views/upms/interface/log-in.vue +100 -106
  143. package/src/views/upms/interface/log-out.vue +104 -107
  144. package/src/views/upms/user/login-log.vue +54 -60
  145. package/src/views/urpt/design/DesignPanel.vue +507 -507
  146. package/src/views/urpt/design/Preview.vue +1 -0
  147. package/src/views/urpt/design/ReportDesign.vue +2 -4
  148. package/src/views/utask/flow-task.vue +18 -0
  149. package/types/global.d.ts +231 -236
  150. package/dist/InvOrganization-BVuOhzbt.js +0 -66
  151. package/dist/StaffPanel.vue_vue_type_script_setup_true_lang-BOOO6Cek.js +0 -111
  152. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-SwNbAEvW.js +0 -294
  153. package/dist/childView.vue_vue_type_style_index_0_lang-DWIFCX3X.js +0 -187
  154. package/dist/index-CKnq5xIa.js +0 -2623
  155. package/dist/log-out--RRncZhN.js +0 -120
  156. package/dist/login-CpKykfdf.js +0 -253
  157. package/dist/sys-config-DiySRWns.js +0 -277
  158. package/dist/utogether-Dct_14Zk.js +0 -182
  159. package/src/components/udp/count-down.vue +0 -536
  160. package/src/components/udp/flip-down/FlipCard/flip-card.vue +0 -251
  161. package/src/components/udp/flip-down/FlipCard/interfaces.ts +0 -4
  162. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +0 -113
  163. package/src/components/udp/form-upload.vue +0 -482
  164. package/src/components/udp/lov.vue +0 -388
  165. package/src/components/udp/modal-form.vue +0 -189
  166. package/src/components/udp/modal-grid.vue +0 -288
  167. package/src/components/udp/upload.vue +0 -423
  168. package/src/utils/udp/useRender.ts +0 -431
@@ -1,233 +1,227 @@
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
+ if (item.params) {
101
+ return currentName === itemName && isEqual(route.params, item.params) ? previous : next;
102
+ } else {
103
+ return currentName === itemName ? previous : next;
104
+ }
105
+ }
106
+ } else {
107
+ return currentName === itemName ? previous : next;
108
+ }
109
+ }
110
+
111
+ const isFixedTag = computed(() => {
112
+ return item => {
113
+ return isBoolean(item?.meta?.fixedTag) && item?.meta?.fixedTag === true;
114
+ };
115
+ });
116
+
117
+ const iconIsActive = computed(() => {
118
+ return (item, index) => {
119
+ if (index === 0) return;
120
+ return conditionHandle(item, true, false);
121
+ };
122
+ });
123
+
124
+ const linkIsActive = computed(() => {
125
+ return item => {
126
+ return conditionHandle(item, 'is-active', '');
127
+ };
128
+ });
129
+
130
+ const scheduleIsActive = computed(() => {
131
+ return item => {
132
+ return conditionHandle(item, 'schedule-active', '');
133
+ };
134
+ });
135
+
136
+ const getTabStyle = computed((): CSSProperties => {
137
+ return {
138
+ transform: `translateX(${translateX.value}px)`
139
+ };
140
+ });
141
+
142
+ const getContextMenuStyle = computed((): CSSProperties => {
143
+ return { left: buttonLeft.value + 'px', top: buttonTop.value + 'px' };
144
+ });
145
+
146
+ const closeMenu = () => {
147
+ visible.value = false;
148
+ };
149
+
150
+ /** 鼠标移入添加激活样式 */
151
+ function onMouseenter(index) {
152
+ if (index) activeIndex.value = index;
153
+ if (unref(showModel) === 'smart') {
154
+ if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
155
+ toggleClass(true, 'schedule-in', instance.refs['schedule' + index][0]);
156
+ toggleClass(false, 'schedule-out', instance.refs['schedule' + index][0]);
157
+ } else {
158
+ if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
159
+ toggleClass(true, 'card-in', instance.refs['dynamic' + index][0]);
160
+ toggleClass(false, 'card-out', instance.refs['dynamic' + index][0]);
161
+ }
162
+ }
163
+
164
+ /** 鼠标移出恢复默认样式 */
165
+ function onMouseleave(index) {
166
+ activeIndex.value = -1;
167
+ if (unref(showModel) === 'smart') {
168
+ if (hasClass(instance.refs['schedule' + index][0], 'schedule-active')) return;
169
+ toggleClass(false, 'schedule-in', instance.refs['schedule' + index][0]);
170
+ toggleClass(true, 'schedule-out', instance.refs['schedule' + index][0]);
171
+ } else {
172
+ if (hasClass(instance.refs['dynamic' + index][0], 'is-active')) return;
173
+ toggleClass(false, 'card-in', instance.refs['dynamic' + index][0]);
174
+ toggleClass(true, 'card-out', instance.refs['dynamic' + index][0]);
175
+ }
176
+ }
177
+
178
+ function onContentFullScreen() {
179
+ SuSetting.hiddenSideBar
180
+ ? SuSetting.changeSetting({ key: 'hiddenSideBar', value: false })
181
+ : SuSetting.changeSetting({ key: 'hiddenSideBar', value: true });
182
+ }
183
+
184
+ onMounted(() => {
185
+ if (!showModel.value) {
186
+ const configure = storageLocal.getItem(`${responsiveStorageNameSpace()}configure`);
187
+ configure.showModel = 'card';
188
+ storageLocal.setItem(`${responsiveStorageNameSpace()}configure`, configure);
189
+ }
190
+ });
191
+
192
+ watch(
193
+ () => visible.value,
194
+ () => {
195
+ useEventListener(document, 'click', closeMenu);
196
+ }
197
+ );
198
+
199
+ return {
200
+ route,
201
+ router,
202
+ visible,
203
+ showTags,
204
+ instance,
205
+ multiTags,
206
+ showModel,
207
+ tagsViews,
208
+ buttonTop,
209
+ buttonLeft,
210
+ translateX,
211
+ isFixedTag,
212
+ SuSetting,
213
+ activeIndex,
214
+ getTabStyle,
215
+ iconIsActive,
216
+ linkIsActive,
217
+ currentSelect,
218
+ scheduleIsActive,
219
+ getContextMenuStyle,
220
+ closeMenu,
221
+ onMounted,
222
+ onMouseenter,
223
+ onMouseleave,
224
+ transformI18n,
225
+ onContentFullScreen
226
+ };
227
+ }
@@ -1,92 +1,93 @@
1
- /*
2
- * @Author: wei.li
3
- * @Date: 2021-11-17 16:02:30
4
- * @LastEditors: wei.li
5
- * @LastEditTime: 2024-06-27 13:51:19
6
- * @Description: file content
7
- */
8
-
9
- import type { IconifyIcon } from '@iconify/vue';
10
-
11
- export const routerArrays: Array<RouteConfigs> = [
12
- {
13
- path: '/welcome',
14
- meta: {
15
- title: 'message.udp.home',
16
- icon: 'home-filled'
17
- }
18
- }
19
- ];
20
-
21
- export type routeMetaType = {
22
- title?: string;
23
- icon?: string;
24
- showLink?: boolean;
25
- savedPosition?: boolean;
26
- authority?: Array<string>;
27
- };
28
-
29
- export type RouteConfigs = {
30
- path?: string;
31
- query?: object;
32
- params?: object;
33
- meta?: routeMetaType;
34
- children?: RouteConfigs[];
35
- name?: string;
36
- };
37
-
38
- export type multiTagsType = {
39
- tags: Array<RouteConfigs>;
40
- };
41
-
42
- export type tagsViewsType = {
43
- icon: string | IconifyIcon;
44
- text: string;
45
- divided: boolean;
46
- disabled: boolean;
47
- show: boolean;
48
- };
49
-
50
- export interface setType {
51
- sidebar: {
52
- opened: boolean;
53
- withoutAnimation: boolean;
54
- isClickCollapse: boolean;
55
- };
56
- device: string;
57
- fixedHeader: boolean;
58
- classes: {
59
- hideSidebar: boolean;
60
- openSidebar: boolean;
61
- withoutAnimation: boolean;
62
- mobile: boolean;
63
- };
64
- hideTabs: boolean;
65
- }
66
-
67
- export type childrenType = {
68
- path?: string;
69
- noShowingChildren?: boolean;
70
- children?: childrenType[];
71
- value: unknown;
72
- meta?: {
73
- icon?: string;
74
- title?: string;
75
- showParent?: boolean;
76
- extraIcon?: string;
77
- };
78
- showTooltip?: boolean;
79
- parentId?: number;
80
- pathList?: number[];
81
- };
82
-
83
- export type themeColorsType = {
84
- color: string;
85
- themeColor: string;
86
- };
87
-
88
- export interface scrollbarDomType extends HTMLElement {
89
- wrap?: {
90
- offsetWidth: number;
91
- };
92
- }
1
+ /*
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-17 16:02:30
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-10-19 12:07:59
6
+ * @Description: file content
7
+ */
8
+
9
+ import type { IconifyIcon } from '@iconify/vue';
10
+
11
+ export const routerArrays: Array<RouteConfigs> = [
12
+ {
13
+ path: '/welcome',
14
+ name: 'UdpWelcome',
15
+ meta: {
16
+ title: 'message.udp.home',
17
+ icon: 'home-filled'
18
+ }
19
+ }
20
+ ];
21
+
22
+ export type routeMetaType = {
23
+ title?: string;
24
+ icon?: string;
25
+ showLink?: boolean;
26
+ savedPosition?: boolean;
27
+ authority?: Array<string>;
28
+ };
29
+
30
+ export type RouteConfigs = {
31
+ path?: string;
32
+ query?: object;
33
+ params?: object;
34
+ meta?: routeMetaType;
35
+ children?: RouteConfigs[];
36
+ name?: string;
37
+ };
38
+
39
+ export type multiTagsType = {
40
+ tags: Array<RouteConfigs>;
41
+ };
42
+
43
+ export type tagsViewsType = {
44
+ icon: string | IconifyIcon;
45
+ text: string;
46
+ divided: boolean;
47
+ disabled: boolean;
48
+ show: boolean;
49
+ };
50
+
51
+ export interface setType {
52
+ sidebar: {
53
+ opened: boolean;
54
+ withoutAnimation: boolean;
55
+ isClickCollapse: boolean;
56
+ };
57
+ device: string;
58
+ fixedHeader: boolean;
59
+ classes: {
60
+ hideSidebar: boolean;
61
+ openSidebar: boolean;
62
+ withoutAnimation: boolean;
63
+ mobile: boolean;
64
+ };
65
+ hideTabs: boolean;
66
+ }
67
+
68
+ export type childrenType = {
69
+ path?: string;
70
+ noShowingChildren?: boolean;
71
+ children?: childrenType[];
72
+ value: unknown;
73
+ meta?: {
74
+ icon?: string;
75
+ title?: string;
76
+ showParent?: boolean;
77
+ extraIcon?: string;
78
+ };
79
+ showTooltip?: boolean;
80
+ parentId?: number;
81
+ pathList?: number[];
82
+ };
83
+
84
+ export type themeColorsType = {
85
+ color: string;
86
+ themeColor: string;
87
+ };
88
+
89
+ export interface scrollbarDomType extends HTMLElement {
90
+ wrap?: {
91
+ offsetWidth: number;
92
+ };
93
+ }