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

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 (122) hide show
  1. package/build/plugins.ts +39 -39
  2. package/dist/{403-RBzulrcG.js → 403-C3cfjZIT.js} +1 -1
  3. package/dist/{404-DX-dU_6C.js → 404-Bg3j7QIo.js} +1 -1
  4. package/dist/{500-BCTk0__d.js → 500-CMT7Zyy7.js} +1 -1
  5. package/dist/{AuthorityInfo-BADTOenq.js → AuthorityInfo-B1mvqs4x.js} +1 -1
  6. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-Cv46yAx_.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DwoW7QWO.js} +1 -1
  7. package/dist/{Company-B-61KrWd.js → Company-qTguidK8.js} +3 -3
  8. package/dist/{CompanyPanel-CawSrEff.js → CompanyPanel-BBC-o-k3.js} +8 -8
  9. package/dist/{Department-CrzJPtvP.js → Department-C3mKZOnK.js} +3 -3
  10. package/dist/{DepartmentPanel-DYuL8H-j.js → DepartmentPanel-CNdpOHBT.js} +3 -3
  11. package/dist/{DesignPanel-DEAv6V68.js → DesignPanel-D9jrRCoG.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-BsnXZ2td.js → DesignPanel.vue_vue_type_style_index_0_lang-A-Aj1Hl0.js} +2 -2
  13. package/dist/{DictView-BuO-2b-c.js → DictView-CgdVkSiP.js} +1 -1
  14. package/dist/{InvOrganization-CBgKBJAn.js → InvOrganization-RE7s3vBq.js} +1 -1
  15. package/dist/{Org-BaQw2r-o.js → Org-wXDGvTrS.js} +1 -1
  16. package/dist/{Preview-DvCrmKNk.js → Preview-Pvt1__BV.js} +1 -1
  17. package/dist/{ReportDefine-DyhWz0as.js → ReportDefine-xEQsgFyv.js} +1 -1
  18. package/dist/{ReportDesign-DgZ2f2zv.js → ReportDesign-jOSuEFH9.js} +2 -2
  19. package/dist/{ReportQuery-DTZYbCDi.js → ReportQuery-DxEmmGiN.js} +1 -1
  20. package/dist/{ReportQueryFrom-B-vtJegP.js → ReportQueryFrom-CFlxfS5M.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-D6izgxph.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-iHpiYz8f.js} +1 -1
  22. package/dist/{ReportTemplate-DA1ZqKGf.js → ReportTemplate-Dtz3aet7.js} +1 -1
  23. package/dist/{Role-mbqoav5t.js → Role-B_NsHIyE.js} +3 -3
  24. package/dist/{RoleAssign-ltEJIEcr.js → RoleAssign-C9wm4zq4.js} +8 -8
  25. package/dist/{RolePanel-u90v9eS0.js → RolePanel-BlHidBR0.js} +1 -1
  26. package/dist/{RolePanel-1g1a-G8D.js → RolePanel-DWM9mfNs.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-D9YxpGnt.js → RolePanel.vue_vue_type_script_setup_true_lang-Cn4RRzXm.js} +1 -1
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-LC4Egk-Q.js → RolePanel.vue_vue_type_script_setup_true_lang-DVQ9aqb1.js} +3 -3
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-DZ3W1epK.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCm-_i8O.js} +1 -1
  30. package/dist/{Staff-CJ2GgCL3.js → Staff-BfDc61QS.js} +3 -3
  31. package/dist/{StaffInfo-3KkodDCK.js → StaffInfo-BaJFo4mg.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-CW-isIxJ.js → StaffInfo.vue_vue_type_script_setup_true_lang-Bwj4x1wu.js} +1 -1
  33. package/dist/{StaffPanel-DoXPSoY5.js → StaffPanel-B6I2ZS6A.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-DvhGnOMZ.js → StaffPanel.vue_vue_type_script_setup_true_lang-vbyS4w3V.js} +2 -2
  35. package/dist/{SysUser-BuIZhMPh.js → SysUser-B_r9LYc5.js} +2 -2
  36. package/dist/{SysUserPanel-t1GJcJGM.js → SysUserPanel-C4ajcHPV.js} +1 -1
  37. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-CDDkFLlN.js → SysUserPanel.vue_vue_type_script_setup_true_lang-8Q0VvC9B.js} +43 -39
  38. package/dist/{SystemMenu-DuLEL6_l.js → SystemMenu-CyPG23uP.js} +2 -2
  39. package/dist/{UserInfo-WWby4lts.js → UserInfo-BkoGt4ib.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-B06ZSrJV.js → UserInfo.vue_vue_type_style_index_0_lang-DrzF1YYG.js} +1 -1
  41. package/dist/{childView-B0-EAoAi.js → childView-9vEO8ymO.js} +1 -1
  42. package/dist/{childView-IYY4L8VK.js → childView-Dh0NyiQe.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-CjF8nZuj.js → childView.vue_vue_type_style_index_0_lang-BOeoZuAK.js} +2 -2
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-B56v6yK7.js → childView.vue_vue_type_style_index_0_lang-CMOjfXBX.js} +1 -1
  45. package/dist/{code-rule-DDLdi3pP.js → code-rule-C7jI_1gJ.js} +1 -1
  46. package/dist/core.es.js +1 -1
  47. package/dist/{cron-task-p3-AFN1w.js → cron-task-Dg9DJXvv.js} +1 -1
  48. package/dist/{frameView-B_WAZErD.js → frameView-CeR-_hjB.js} +1 -1
  49. package/dist/{index-24fnvUBy.js → index-Bb7gIEvu.js} +611 -569
  50. package/dist/{layoutView-CoEp2afn.js → layoutView-wsLHrEeX.js} +1340 -1337
  51. package/dist/{login-DP0oP70W.js → login-CluzzdqH.js} +2 -2
  52. package/dist/{lov-view-BDoZRK-v.js → lov-view-BvQCvwbW.js} +2 -2
  53. package/dist/{menuInfo-5Xls76qB.js → menuInfo-B8RLelIC.js} +1 -1
  54. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BfZczW9a.js → menuInfo.vue_vue_type_style_index_0_lang-DvkapEZr.js} +1 -1
  55. package/dist/{pda-app-DxGYn4G7.js → pda-app-D3LNmD9a.js} +2 -2
  56. package/dist/{resource-BnYWe_-Q.js → resource-D8JA_03-.js} +1 -1
  57. package/dist/{su-welcome-B2rNhhDH.js → su-welcome-BjxeEKSo.js} +1 -1
  58. package/dist/{sys-config-Bb4WkxZK.js → sys-config-sbeLk9bP.js} +1 -1
  59. package/dist/udp-core.css +1 -9
  60. package/index.ts +48 -48
  61. package/package.json +1 -1
  62. package/src/App.vue +65 -65
  63. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  64. package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
  65. package/src/components/udp/{grid.vue → grid/index.vue} +27 -24
  66. package/src/components/udp/index.ts +2 -9
  67. package/src/components/udp/utils.ts +60 -107
  68. package/src/layout/components/lay-navbar/index.vue +239 -239
  69. package/src/layout/components/lay-panel/index.vue +150 -150
  70. package/src/layout/components/lay-search/index.vue +25 -25
  71. package/src/layout/components/lay-select-org/index.vue +64 -64
  72. package/src/layout/components/lay-sidebar/horizontal.vue +190 -190
  73. package/src/layout/components/lay-sidebar/mixNav.vue +260 -260
  74. package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -92
  75. package/src/layout/components/lay-tag/index.vue +20 -48
  76. package/src/layout/hooks/useNav.ts +173 -173
  77. package/src/layout/hooks/useTag.ts +5 -3
  78. package/src/layout/types.ts +3 -2
  79. package/src/main.ts +9 -6
  80. package/src/plugins/i18n/en.ts +302 -302
  81. package/src/plugins/i18n/zh.ts +356 -354
  82. package/src/plugins/vxe-table/index.ts +116 -53
  83. package/src/plugins/vxe-table/render.tsx +956 -956
  84. package/src/router/index.ts +186 -177
  85. package/src/router/modules/remaining.ts +58 -58
  86. package/src/router/utils.ts +393 -377
  87. package/src/store/modules/app.ts +1 -3
  88. package/src/store/modules/multiTags.ts +110 -109
  89. package/src/store/modules/permission.ts +113 -100
  90. package/src/style/button.scss +85 -85
  91. package/src/style/login.css +336 -336
  92. package/src/style/vxetable.scss +13 -3
  93. package/src/views/organization/company/CompanyPanel.vue +259 -259
  94. package/src/views/organization/department/DepartmentPanel.vue +269 -283
  95. package/src/views/system/menu/SystemMenu.vue +183 -183
  96. package/src/views/system/menu/menuInfo.vue +363 -363
  97. package/src/views/system/role/UserInfo.vue +195 -195
  98. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  99. package/src/views/system/role-assign/RolePanel.vue +139 -139
  100. package/src/views/system/sys/sys-config.vue +336 -336
  101. package/src/views/system/sysUser/SysUserPanel.vue +279 -278
  102. package/src/views/uapp/pda/pda-app.vue +208 -208
  103. package/src/views/udev/dict/DictView.vue +118 -118
  104. package/src/views/udev/dict/childView.vue +1 -1
  105. package/src/views/udev/lov/lov-view.vue +91 -91
  106. package/src/views/ulogin/login.vue +323 -323
  107. package/src/views/upms/interface/log-out.vue +101 -101
  108. package/src/views/urpt/design/DesignPanel.vue +507 -507
  109. package/types/global.d.ts +230 -230
  110. package/src/components/udp/count-down.vue +0 -536
  111. package/src/components/udp/flip-down/FlipCard/flip-card.vue +0 -251
  112. package/src/components/udp/flip-down/FlipCard/interfaces.ts +0 -4
  113. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +0 -113
  114. package/src/components/udp/form-upload.vue +0 -482
  115. package/src/components/udp/form.vue +0 -112
  116. package/src/components/udp/lov.vue +0 -388
  117. package/src/components/udp/modal-form.vue +0 -190
  118. package/src/components/udp/modal-grid.vue +0 -298
  119. package/src/components/udp/upload.vue +0 -423
  120. package/src/utils/udp/http/index.ts +0 -294
  121. package/src/utils/udp/http/types.d.ts +0 -49
  122. package/src/utils/udp/useRender.ts +0 -431
@@ -1,92 +1,92 @@
1
- <!--
2
- * @Author: wei.li
3
- * @Date: 2021-11-17 16:02:30
4
- * @LastEditors: levi7754 levi7754@163.com
5
- * @LastEditTime: 2025-04-17 17:15:15
6
- * @Description: file content
7
- -->
8
- <script setup lang="ts">
9
- import { ref } from 'vue';
10
- import { storageLocal } from '@utogether/utils';
11
- import { kSYSCONFIG } from '../../../contant';
12
- import utogether from '../../../assets/images/utogether.png';
13
-
14
- const props = defineProps({
15
- collapse: Boolean
16
- });
17
-
18
- const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
19
-
20
- const title = sysConfig['title'];
21
- const logo = ref(sysConfig['logo'] || utogether);
22
- // console.log(logo);
23
- </script>
24
-
25
- <template>
26
- <div class="sidebar-logo-container" :class="{ collapses: props.collapse }">
27
- <transition name="sidebarLogoFade">
28
- <router-link v-if="props.collapse" key="props.collapse" :title="title" class="sidebar-logo-link" to="/">
29
- <img :src="logo" class="ut-collapse-img ut-sidebar-logo" />
30
- </router-link>
31
- <router-link v-else key="expand" :title="title" class="sidebar-logo-link" to="/">
32
- <img :src="logo" class="ut-sidebar-logo h-10" />
33
- <span class="sidebar-title">{{ title }}</span>
34
- </router-link>
35
- </transition>
36
- </div>
37
- </template>
38
-
39
- <style lang="scss" scoped>
40
- .sidebar-logo-container {
41
- position: relative;
42
- width: 100%;
43
- height: 48px;
44
- overflow: hidden;
45
- text-align: center;
46
- background-color: var(--udp-theme-sidebar-logo);
47
-
48
- .sidebar-logo-link {
49
- // margin-top: 5px;
50
- display: flex;
51
- flex-direction: column;
52
- height: 100%;
53
- overflow: hidden;
54
- text-overflow: ellipsis;
55
- white-space: nowrap;
56
-
57
- .ut-sidebar-logo {
58
- height: 100%;
59
- }
60
-
61
- .ut-collapse-img {
62
- width: 100%;
63
- }
64
-
65
- .sidebar-title {
66
- display: block;
67
- // width: 140px;
68
- // margin-top: 10px;
69
- margin-left: 10px;
70
- overflow: hidden;
71
- text-overflow: ellipsis;
72
- font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
73
- font-size: 24px;
74
- font-weight: 600;
75
- color: var(--udp-theme-project-text);
76
- text-align: left;
77
- white-space: nowrap;
78
- }
79
- }
80
-
81
- .collapses {
82
- .sidebar-logo {
83
- margin-right: 0;
84
- }
85
- }
86
-
87
- svg {
88
- width: 50px;
89
- height: 50px;
90
- }
91
- }
92
- </style>
1
+ <!--
2
+ * @Author: wei.li
3
+ * @Date: 2021-11-17 16:02:30
4
+ * @LastEditors: levi7754 levi7754@163.com
5
+ * @LastEditTime: 2025-04-17 17:15:15
6
+ * @Description: file content
7
+ -->
8
+ <script setup lang="ts">
9
+ import { ref } from 'vue';
10
+ import { storageLocal } from '@utogether/utils';
11
+ import { kSYSCONFIG } from '../../../contant';
12
+ import utogether from '../../../assets/images/utogether.png';
13
+
14
+ const props = defineProps({
15
+ collapse: Boolean
16
+ });
17
+
18
+ const sysConfig = storageLocal.getItem(kSYSCONFIG) || {};
19
+
20
+ const title = sysConfig['title'];
21
+ const logo = ref(sysConfig['logo'] || utogether);
22
+ // console.log(logo);
23
+ </script>
24
+
25
+ <template>
26
+ <div class="sidebar-logo-container" :class="{ collapses: props.collapse }">
27
+ <transition name="sidebarLogoFade">
28
+ <router-link v-if="props.collapse" key="props.collapse" :title="title" class="sidebar-logo-link" to="/">
29
+ <img :src="logo" class="ut-collapse-img ut-sidebar-logo" />
30
+ </router-link>
31
+ <router-link v-else key="expand" :title="title" class="sidebar-logo-link" to="/">
32
+ <img :src="logo" class="ut-sidebar-logo h-10" />
33
+ <span class="sidebar-title">{{ title }}</span>
34
+ </router-link>
35
+ </transition>
36
+ </div>
37
+ </template>
38
+
39
+ <style lang="scss" scoped>
40
+ .sidebar-logo-container {
41
+ position: relative;
42
+ width: 100%;
43
+ height: 48px;
44
+ overflow: hidden;
45
+ text-align: center;
46
+ background-color: var(--udp-theme-sidebar-logo);
47
+
48
+ .sidebar-logo-link {
49
+ // margin-top: 5px;
50
+ display: flex;
51
+ flex-direction: column;
52
+ height: 100%;
53
+ overflow: hidden;
54
+ text-overflow: ellipsis;
55
+ white-space: nowrap;
56
+
57
+ .ut-sidebar-logo {
58
+ height: 100%;
59
+ }
60
+
61
+ .ut-collapse-img {
62
+ width: 100%;
63
+ }
64
+
65
+ .sidebar-title {
66
+ display: block;
67
+ // width: 140px;
68
+ // margin-top: 10px;
69
+ margin-left: 10px;
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
73
+ font-size: 24px;
74
+ font-weight: 600;
75
+ color: var(--udp-theme-project-text);
76
+ text-align: left;
77
+ white-space: nowrap;
78
+ }
79
+ }
80
+
81
+ .collapses {
82
+ .sidebar-logo {
83
+ margin-right: 0;
84
+ }
85
+ }
86
+
87
+ svg {
88
+ width: 50px;
89
+ height: 50px;
90
+ }
91
+ }
92
+ </style>
@@ -53,10 +53,7 @@ const contextmenuRef = ref();
53
53
  const isShowArrow = ref(false);
54
54
  const { isFullscreen, toggle } = useFullscreen();
55
55
 
56
- const fixedTags = [
57
- ...routerArrays,
58
- ...usePermissionStoreHook().flatteningRoutes.filter(v => v?.meta?.fixedTag)
59
- ];
56
+ const fixedTags = [...routerArrays, ...usePermissionStoreHook().flatteningRoutes.filter(v => v?.meta?.fixedTag)];
60
57
  const dynamicTagView = async () => {
61
58
  await nextTick();
62
59
  const index = multiTags.value.findIndex(item => {
@@ -93,10 +90,7 @@ const moveToView = async (index: number): Promise<void> => {
93
90
  tabItemElOffsetLeft + tabItemOffsetWidth < -translateX.value + scrollbarDomWidth
94
91
  ) {
95
92
  // 标签在可视区域
96
- translateX.value = Math.min(
97
- 0,
98
- scrollbarDomWidth - tabItemOffsetWidth - tabItemElOffsetLeft - tabNavPadding
99
- );
93
+ translateX.value = Math.min(0, scrollbarDomWidth - tabItemOffsetWidth - tabItemElOffsetLeft - tabNavPadding);
100
94
  } else {
101
95
  // 标签在可视区域右侧
102
96
  translateX.value = -(tabItemElOffsetLeft - (scrollbarDomWidth - tabNavPadding - tabItemOffsetWidth));
@@ -171,7 +165,7 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) {
171
165
 
172
166
  const spliceRoute = (startIndex?: number, length?: number, other?: boolean): void => {
173
167
  if (other) {
174
- useMultiTagsStoreHook().handleTags('equal', [fixedTags, obj]);
168
+ useMultiTagsStoreHook().handleTags('equal', [fixedTags, obj].flat());
175
169
  } else {
176
170
  useMultiTagsStoreHook().handleTags('splice', '', {
177
171
  startIndex,
@@ -216,6 +210,7 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) {
216
210
  }
217
211
 
218
212
  function deleteMenu(item, tag?: string) {
213
+ debugger;
219
214
  deleteDynamicTag(item, item.path, tag);
220
215
  handleAliveRoute(route as ToRouteType);
221
216
  }
@@ -294,7 +289,7 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) {
294
289
  break;
295
290
  }
296
291
  setTimeout(() => {
297
- showMenuModel(route.fullPath, route.query);
292
+ showMenuModel(route.fullPath, route.query, route.params);
298
293
  });
299
294
  }
300
295
 
@@ -326,11 +321,13 @@ function disabledMenus(value: boolean, fixedTag = false) {
326
321
  }
327
322
 
328
323
  /** 检查当前右键的菜单两边是否存在别的菜单,如果左侧的菜单是顶级菜单,则不显示关闭左侧标签页,如果右侧没有菜单,则不显示关闭右侧标签页 */
329
- function showMenuModel(currentPath: string, query: object = {}, refresh = false) {
324
+ function showMenuModel(currentPath: string, query: object = {}, params: object = {}, refresh = false) {
330
325
  const allRoute = multiTags.value;
331
326
  const routeLength = multiTags.value.length;
332
327
  let currentIndex = -1;
333
- if (isEmpty(query)) {
328
+ if (!isEmpty(params)) {
329
+ currentIndex = allRoute.findIndex(v => isEqual(v.params, params));
330
+ } else if (isEmpty(query)) {
334
331
  currentIndex = allRoute.findIndex(v => v.path === currentPath);
335
332
  } else {
336
333
  currentIndex = allRoute.findIndex(v => isEqual(v.query, query));
@@ -400,14 +397,15 @@ function openMenu(tag, e) {
400
397
  } else if (route.path !== tag.path && route.name !== tag.name) {
401
398
  // 右键菜单不匹配当前路由,隐藏刷新
402
399
  tagsViews[0].show = false;
403
- showMenuModel(tag.path, tag.query);
400
+ showMenuModel(tag.path, tag.query, tag.params);
404
401
  } else if (multiTags.value.length === 2 && route.path !== tag.path) {
405
402
  showMenus(true);
406
403
  // 只有两个标签时不显示关闭其他标签页
407
404
  tagsViews[4].show = false;
405
+ showMenuModel(tag.path, tag.query, tag.params);
408
406
  } else if (route.path === tag.path) {
409
407
  // 右键当前激活的菜单
410
- showMenuModel(tag.path, tag.query, true);
408
+ showMenuModel(tag.path, tag.query, tag.params, true);
411
409
  }
412
410
 
413
411
  currentSelect.value = tag;
@@ -512,11 +510,7 @@ onBeforeUnmount(() => {
512
510
  <span v-show="isShowArrow" class="arrow-left">
513
511
  <IconifyIconOffline icon="ri:arrow-left-s-line" @click="handleScroll(200)" />
514
512
  </span>
515
- <div
516
- ref="scrollbarDom"
517
- class="scroll-container"
518
- :class="showModel === 'chrome' && 'chrome-scroll-container'"
519
- >
513
+ <div ref="scrollbarDom" class="scroll-container" :class="showModel === 'chrome' && 'chrome-scroll-container'">
520
514
  <div ref="tabDom" class="select-none tab" :style="getTabStyle">
521
515
  <div
522
516
  v-for="(item, index) in multiTags"
@@ -535,37 +529,25 @@ onBeforeUnmount(() => {
535
529
  >
536
530
  <template v-if="showModel !== 'chrome'">
537
531
  <span class="tag-title dark:text-text_color_primary! dark:hover:text-primary!">
538
- {{ transformI18n(item.meta.title) }}
532
+ {{ transformI18n(item?.meta?.title) }}
539
533
  </span>
540
534
  <span
541
- v-if="
542
- isFixedTag(item)
543
- ? false
544
- : iconIsActive(item, index) || (index === activeIndex && index !== 0)
545
- "
535
+ v-if="isFixedTag(item) ? false : iconIsActive(item, index) || (index === activeIndex && index !== 0)"
546
536
  class="el-icon-close"
547
537
  @click.stop="deleteMenu(item)"
548
538
  >
549
539
  <IconifyIconOffline icon="ri:close-fill" />
550
540
  </span>
551
- <span
552
- v-if="showModel !== 'card'"
553
- :ref="'schedule' + index"
554
- :class="[scheduleIsActive(item)]"
555
- />
541
+ <span v-if="showModel !== 'card'" :ref="'schedule' + index" :class="[scheduleIsActive(item)]" />
556
542
  </template>
557
543
  <div v-else class="chrome-tab">
558
544
  <div class="chrome-tab__bg">
559
545
  <TagChrome />
560
546
  </div>
561
547
  <span class="tag-title">
562
- {{ transformI18n(item.meta.title) }}
548
+ {{ transformI18n(item?.meta?.title) }}
563
549
  </span>
564
- <span
565
- v-if="isFixedTag(item) ? false : index !== 0"
566
- class="chrome-close-btn"
567
- @click.stop="deleteMenu(item)"
568
- >
550
+ <span v-if="isFixedTag(item) ? false : index !== 0" class="chrome-close-btn" @click.stop="deleteMenu(item)">
569
551
  <IconifyIconOffline icon="ri:close-fill" />
570
552
  </span>
571
553
  <span class="chrome-tab-divider" />
@@ -578,18 +560,8 @@ onBeforeUnmount(() => {
578
560
  </span>
579
561
  <!-- 右键菜单按钮 -->
580
562
  <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
- >
563
+ <ul v-show="visible" ref="contextmenuRef" :key="Math.random()" :style="getContextMenuStyle" class="contextmenu">
564
+ <div v-for="(item, key) in tagsViews.slice(0, 6)" :key="key" style="display: flex; align-items: center">
593
565
  <li v-if="item.show" @click="selectTag(key, item)">
594
566
  <IconifyIconOffline :icon="item.icon" />
595
567
  {{ $t(item.text) }}