@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,98 +1,101 @@
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-11-18 11:52:49
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 { getTopMenu } from '../../../router/utils';
13
+ import utogether from '../../../assets/images/utogether.png';
14
+
15
+ const props = defineProps({
16
+ collapse: Boolean
17
+ });
18
+
19
+ const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
20
+
21
+ const title = sysConfig['title'];
22
+ const showTitle = sysConfig['showTitle'];
23
+ const logo = ref(sysConfig['logo'] || utogether);
24
+ </script>
25
+
26
+ <template>
27
+ <div class="sidebar-logo-container" :class="{ collapses: props.collapse }">
28
+ <transition name="sidebarLogoFade">
29
+ <router-link
30
+ v-if="props.collapse"
31
+ key="props.collapse"
32
+ :title="title"
33
+ class="sidebar-logo-link"
34
+ :to="getTopMenu()?.path ?? '/'"
35
+ >
36
+ <img :src="logo" class="ut-collapse-img ut-sidebar-logo" />
37
+ </router-link>
38
+ <router-link v-else key="expand" :title="title" class="sidebar-logo-link" :to="getTopMenu()?.path ?? '/'">
39
+ <img :src="logo" class="ut-sidebar-logo h-10" />
40
+ <span v-if="showTitle === 'Y'" class="sidebar-title">{{ title }}</span>
41
+ </router-link>
42
+ </transition>
43
+ </div>
44
+ </template>
45
+
46
+ <style lang="scss" scoped>
47
+ .sidebar-logo-container {
48
+ position: relative;
49
+ width: 100%;
50
+ height: 48px;
51
+ overflow: hidden;
52
+ text-align: center;
53
+ background-color: var(--udp-theme-sidebar-logo);
54
+
55
+ .sidebar-logo-link {
56
+ // margin-top: 5px;
57
+ display: flex;
58
+ flex-direction: column;
59
+ height: 100%;
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ white-space: nowrap;
63
+
64
+ .ut-sidebar-logo {
65
+ height: 100%;
66
+ }
67
+
68
+ .ut-collapse-img {
69
+ width: 100%;
70
+ }
71
+
72
+ .sidebar-title {
73
+ display: flex;
74
+ align-items: end;
75
+ // he: 140px;
76
+ // margin-top: 10px;
77
+ height: 100%;
78
+ margin-left: 10px;
79
+ overflow: hidden;
80
+ text-overflow: ellipsis;
81
+ font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
82
+ font-size: 24px;
83
+ font-weight: 600;
84
+ color: var(--udp-theme-project-text);
85
+ text-align: left;
86
+ white-space: nowrap;
87
+ }
88
+ }
89
+
90
+ .collapses {
91
+ .sidebar-logo {
92
+ margin-right: 0;
93
+ }
94
+ }
95
+
96
+ svg {
97
+ width: 50px;
98
+ height: 50px;
99
+ }
100
+ }
101
+ </style>
@@ -9,7 +9,7 @@ import { delay } from '@utogether/utils';
9
9
  import { emitter } from '../../../utils/mitt';
10
10
  import { routerArrays } from '../../types';
11
11
  import { useSettingStoreHook } from '../../../store/modules/settings';
12
- import { handleAliveRoute } from '../../../router/utils';
12
+ import { handleAliveRoute, getTopMenu } from '../../../router/utils';
13
13
  import { useMultiTagsStoreHook } from '../../../store/modules/multiTags';
14
14
  import { usePermissionStoreHook } from '../../../store/modules/permission';
15
15
  import { useTags } from '../../hooks/useTag';
@@ -51,12 +51,10 @@ const containerDom = ref();
51
51
  const scrollbarDom = ref();
52
52
  const contextmenuRef = ref();
53
53
  const isShowArrow = ref(false);
54
+ const topPath = getTopMenu()?.path;
54
55
  const { isFullscreen, toggle } = useFullscreen();
55
56
 
56
- const fixedTags = [
57
- ...routerArrays,
58
- ...usePermissionStoreHook().flatteningRoutes.filter(v => v?.meta?.fixedTag)
59
- ];
57
+ const fixedTags = [...routerArrays, ...usePermissionStoreHook().flatteningRoutes.filter(v => v?.meta?.fixedTag)];
60
58
  const dynamicTagView = async () => {
61
59
  await nextTick();
62
60
  const index = multiTags.value.findIndex(item => {
@@ -93,10 +91,7 @@ const moveToView = async (index: number): Promise<void> => {
93
91
  tabItemElOffsetLeft + tabItemOffsetWidth < -translateX.value + scrollbarDomWidth
94
92
  ) {
95
93
  // 标签在可视区域
96
- translateX.value = Math.min(
97
- 0,
98
- scrollbarDomWidth - tabItemOffsetWidth - tabItemElOffsetLeft - tabNavPadding
99
- );
94
+ translateX.value = Math.min(0, scrollbarDomWidth - tabItemOffsetWidth - tabItemElOffsetLeft - tabNavPadding);
100
95
  } else {
101
96
  // 标签在可视区域右侧
102
97
  translateX.value = -(tabItemElOffsetLeft - (scrollbarDomWidth - tabNavPadding - tabItemOffsetWidth));
@@ -171,7 +166,7 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) {
171
166
 
172
167
  const spliceRoute = (startIndex?: number, length?: number, other?: boolean): void => {
173
168
  if (other) {
174
- useMultiTagsStoreHook().handleTags('equal', [fixedTags, obj]);
169
+ useMultiTagsStoreHook().handleTags('equal', [fixedTags, obj].flat());
175
170
  } else {
176
171
  useMultiTagsStoreHook().handleTags('splice', '', {
177
172
  startIndex,
@@ -263,7 +258,8 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) {
263
258
  startIndex: fixedTags.length,
264
259
  length: multiTags.value.length
265
260
  });
266
- router.push('/welcome');
261
+ router.push(topPath);
262
+
267
263
  handleAliveRoute(route as ToRouteType);
268
264
  break;
269
265
  case 6:
@@ -294,7 +290,7 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) {
294
290
  break;
295
291
  }
296
292
  setTimeout(() => {
297
- showMenuModel(route.fullPath, route.query);
293
+ showMenuModel(route.fullPath, route.query, route.params);
298
294
  });
299
295
  }
300
296
 
@@ -326,11 +322,13 @@ function disabledMenus(value: boolean, fixedTag = false) {
326
322
  }
327
323
 
328
324
  /** 检查当前右键的菜单两边是否存在别的菜单,如果左侧的菜单是顶级菜单,则不显示关闭左侧标签页,如果右侧没有菜单,则不显示关闭右侧标签页 */
329
- function showMenuModel(currentPath: string, query: object = {}, refresh = false) {
325
+ function showMenuModel(currentPath: string, query: object = {}, params: object = {}, refresh = false) {
330
326
  const allRoute = multiTags.value;
331
327
  const routeLength = multiTags.value.length;
332
328
  let currentIndex = -1;
333
- if (isEmpty(query)) {
329
+ if (!isEmpty(params)) {
330
+ currentIndex = allRoute.findIndex(v => isEqual(v.params, params));
331
+ } else if (isEmpty(query)) {
334
332
  currentIndex = allRoute.findIndex(v => v.path === currentPath);
335
333
  } else {
336
334
  currentIndex = allRoute.findIndex(v => isEqual(v.query, query));
@@ -382,7 +380,7 @@ function showMenuModel(currentPath: string, query: object = {}, refresh = false)
382
380
  tagsViews[2].disabled = true;
383
381
  }
384
382
  fixedTagDisabled();
385
- } else if (currentIndex === 0 || currentPath === '/redirect/welcome') {
383
+ } else if (currentIndex === 0 || currentPath === `/redirect${topPath}`) {
386
384
  // 当前路由为首页
387
385
  disabledMenus(true);
388
386
  } else {
@@ -400,14 +398,15 @@ function openMenu(tag, e) {
400
398
  } else if (route.path !== tag.path && route.name !== tag.name) {
401
399
  // 右键菜单不匹配当前路由,隐藏刷新
402
400
  tagsViews[0].show = false;
403
- showMenuModel(tag.path, tag.query);
401
+ showMenuModel(tag.path, tag.query, tag.params);
404
402
  } else if (multiTags.value.length === 2 && route.path !== tag.path) {
405
403
  showMenus(true);
406
404
  // 只有两个标签时不显示关闭其他标签页
407
405
  tagsViews[4].show = false;
406
+ showMenuModel(tag.path, tag.query, tag.params);
408
407
  } else if (route.path === tag.path) {
409
408
  // 右键当前激活的菜单
410
- showMenuModel(tag.path, tag.query, true);
409
+ showMenuModel(tag.path, tag.query, tag.params, true);
411
410
  }
412
411
 
413
412
  currentSelect.value = tag;
@@ -512,11 +511,7 @@ onBeforeUnmount(() => {
512
511
  <span v-show="isShowArrow" class="arrow-left">
513
512
  <IconifyIconOffline icon="ri:arrow-left-s-line" @click="handleScroll(200)" />
514
513
  </span>
515
- <div
516
- ref="scrollbarDom"
517
- class="scroll-container"
518
- :class="showModel === 'chrome' && 'chrome-scroll-container'"
519
- >
514
+ <div ref="scrollbarDom" class="scroll-container" :class="showModel === 'chrome' && 'chrome-scroll-container'">
520
515
  <div ref="tabDom" class="select-none tab" :style="getTabStyle">
521
516
  <div
522
517
  v-for="(item, index) in multiTags"
@@ -535,37 +530,25 @@ onBeforeUnmount(() => {
535
530
  >
536
531
  <template v-if="showModel !== 'chrome'">
537
532
  <span class="tag-title dark:text-text_color_primary! dark:hover:text-primary!">
538
- {{ transformI18n(item.meta.title) }}
533
+ {{ transformI18n(item?.meta?.title) }}
539
534
  </span>
540
535
  <span
541
- v-if="
542
- isFixedTag(item)
543
- ? false
544
- : iconIsActive(item, index) || (index === activeIndex && index !== 0)
545
- "
536
+ v-if="isFixedTag(item) ? false : iconIsActive(item, index) || (index === activeIndex && index !== 0)"
546
537
  class="el-icon-close"
547
538
  @click.stop="deleteMenu(item)"
548
539
  >
549
540
  <IconifyIconOffline icon="ri:close-fill" />
550
541
  </span>
551
- <span
552
- v-if="showModel !== 'card'"
553
- :ref="'schedule' + index"
554
- :class="[scheduleIsActive(item)]"
555
- />
542
+ <span v-if="showModel !== 'card'" :ref="'schedule' + index" :class="[scheduleIsActive(item)]" />
556
543
  </template>
557
544
  <div v-else class="chrome-tab">
558
545
  <div class="chrome-tab__bg">
559
546
  <TagChrome />
560
547
  </div>
561
548
  <span class="tag-title">
562
- {{ transformI18n(item.meta.title) }}
549
+ {{ transformI18n(item?.meta?.title) }}
563
550
  </span>
564
- <span
565
- v-if="isFixedTag(item) ? false : index !== 0"
566
- class="chrome-close-btn"
567
- @click.stop="deleteMenu(item)"
568
- >
551
+ <span v-if="isFixedTag(item) ? false : index !== 0" class="chrome-close-btn" @click.stop="deleteMenu(item)">
569
552
  <IconifyIconOffline icon="ri:close-fill" />
570
553
  </span>
571
554
  <span class="chrome-tab-divider" />
@@ -578,18 +561,8 @@ onBeforeUnmount(() => {
578
561
  </span>
579
562
  <!-- 右键菜单按钮 -->
580
563
  <transition name="el-zoom-in-top">
581
- <ul
582
- v-show="visible"
583
- ref="contextmenuRef"
584
- :key="Math.random()"
585
- :style="getContextMenuStyle"
586
- class="contextmenu"
587
- >
588
- <div
589
- v-for="(item, key) in tagsViews.slice(0, 6)"
590
- :key="key"
591
- style="display: flex; align-items: center"
592
- >
564
+ <ul v-show="visible" ref="contextmenuRef" :key="Math.random()" :style="getContextMenuStyle" class="contextmenu">
565
+ <div v-for="(item, key) in tagsViews.slice(0, 6)" :key="key" style="display: flex; align-items: center">
593
566
  <li v-if="item.show" @click="selectTag(key, item)">
594
567
  <IconifyIconOffline :icon="item.icon" />
595
568
  {{ $t(item.text) }}
@@ -91,7 +91,7 @@ export function useDataThemeChange() {
91
91
  }
92
92
  };
93
93
 
94
- /** 浅色、深色整体风格切换 */
94
+ /** 浅色、深色主题模式切换 */
95
95
  function dataThemeChange(overall?: string) {
96
96
  /* 如果当前是light夜间主题,默认切换到default主题 */
97
97
  overallStyle.value = overall;