@utogether/udp-core 1.0.1-beta.15 → 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 (126) hide show
  1. package/build/plugins.ts +39 -39
  2. package/dist/{403-DpJevH-h.js → 403-C3cfjZIT.js} +1 -1
  3. package/dist/{404-BpqJK3YD.js → 404-Bg3j7QIo.js} +1 -1
  4. package/dist/{500-DyvRbMD_.js → 500-CMT7Zyy7.js} +1 -1
  5. package/dist/{AuthorityInfo-Cyu4XHXx.js → AuthorityInfo-B1mvqs4x.js} +1 -1
  6. package/dist/{AuthorityInfo.vue_vue_type_style_index_0_lang-BxmnEEFq.js → AuthorityInfo.vue_vue_type_style_index_0_lang-DwoW7QWO.js} +3 -3
  7. package/dist/{Company-BLygcYrI.js → Company-qTguidK8.js} +3 -3
  8. package/dist/{CompanyPanel-D5Tgw6LF.js → CompanyPanel-BBC-o-k3.js} +17 -17
  9. package/dist/{Department-qI9OninZ.js → Department-C3mKZOnK.js} +3 -3
  10. package/dist/{DepartmentPanel-P-P8fPZQ.js → DepartmentPanel-CNdpOHBT.js} +25 -25
  11. package/dist/{DesignPanel-BxjD0AZi.js → DesignPanel-D9jrRCoG.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DN_OKxCu.js → DesignPanel.vue_vue_type_style_index_0_lang-A-Aj1Hl0.js} +6 -6
  13. package/dist/{DictView-PWL_Vf0T.js → DictView-CgdVkSiP.js} +15 -16
  14. package/dist/{InvOrganization-JXBXyn3G.js → InvOrganization-RE7s3vBq.js} +1 -1
  15. package/dist/{Org-DcTJn6YQ.js → Org-wXDGvTrS.js} +3 -3
  16. package/dist/{Preview-IKvbHI8a.js → Preview-Pvt1__BV.js} +1 -1
  17. package/dist/{ReportDefine-_G7ts7Ch.js → ReportDefine-xEQsgFyv.js} +1 -1
  18. package/dist/{ReportDesign-7h5oFklh.js → ReportDesign-jOSuEFH9.js} +9 -9
  19. package/dist/{ReportQuery-dj0BQUyi.js → ReportQuery-DxEmmGiN.js} +1 -1
  20. package/dist/{ReportQueryFrom-6WaZPg9i.js → ReportQueryFrom-CFlxfS5M.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-ChhcBPqa.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-iHpiYz8f.js} +1 -1
  22. package/dist/{ReportTemplate-DIvJ3RrB.js → ReportTemplate-Dtz3aet7.js} +11 -11
  23. package/dist/{Role-ia_3qAZU.js → Role-B_NsHIyE.js} +3 -3
  24. package/dist/{RoleAssign-D0zVl4y3.js → RoleAssign-C9wm4zq4.js} +8 -8
  25. package/dist/{RolePanel-CQxOiAzj.js → RolePanel-BlHidBR0.js} +1 -1
  26. package/dist/{RolePanel-BiGGmP2w.js → RolePanel-DWM9mfNs.js} +1 -1
  27. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BYDLRS_x.js → RolePanel.vue_vue_type_script_setup_true_lang-Cn4RRzXm.js} +1 -1
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-Dwv5LFbf.js → RolePanel.vue_vue_type_script_setup_true_lang-DVQ9aqb1.js} +9 -9
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-gPP4duO8.js → ScrollPanel.vue_vue_type_style_index_0_lang-CCm-_i8O.js} +8 -8
  30. package/dist/{Staff-Bf_oUqF6.js → Staff-BfDc61QS.js} +3 -3
  31. package/dist/{StaffInfo-D5aisjx2.js → StaffInfo-BaJFo4mg.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-6PX7Bx6A.js → StaffInfo.vue_vue_type_script_setup_true_lang-Bwj4x1wu.js} +7 -7
  33. package/dist/{StaffPanel--zKzd4rt.js → StaffPanel-B6I2ZS6A.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-BWZSIFpq.js → StaffPanel.vue_vue_type_script_setup_true_lang-vbyS4w3V.js} +2 -2
  35. package/dist/{SysUser-BelbESLR.js → SysUser-B_r9LYc5.js} +2 -2
  36. package/dist/{SysUserPanel-BixKqQcA.js → SysUserPanel-C4ajcHPV.js} +1 -1
  37. package/dist/{SysUserPanel.vue_vue_type_script_setup_true_lang-BhaWZEfo.js → SysUserPanel.vue_vue_type_script_setup_true_lang-8Q0VvC9B.js} +41 -37
  38. package/dist/{SystemMenu-D40tzcSj.js → SystemMenu-CyPG23uP.js} +10 -10
  39. package/dist/{UserInfo-DTyk071j.js → UserInfo-BkoGt4ib.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-p9MByikC.js → UserInfo.vue_vue_type_style_index_0_lang-DrzF1YYG.js} +10 -10
  41. package/dist/{childView-so5qSxr0.js → childView-9vEO8ymO.js} +1 -1
  42. package/dist/{childView-xL3iE1yN.js → childView-Dh0NyiQe.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-CKcXpSqa.js → childView.vue_vue_type_style_index_0_lang-BOeoZuAK.js} +7 -7
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-DK1ei5uM.js → childView.vue_vue_type_style_index_0_lang-CMOjfXBX.js} +1 -1
  45. package/dist/{code-rule-DC35y76w.js → code-rule-C7jI_1gJ.js} +6 -6
  46. package/dist/core.es.js +17 -12
  47. package/dist/{cron-task-BhjQ4S68.js → cron-task-Dg9DJXvv.js} +11 -11
  48. package/dist/{frameView-G_zhG9pf.js → frameView-CeR-_hjB.js} +1 -1
  49. package/dist/{index-C6ehxLLO.js → index-Bb7gIEvu.js} +739 -496
  50. package/dist/{layoutView-CO2U8qCQ.js → layoutView-wsLHrEeX.js} +1347 -1346
  51. package/dist/login-CluzzdqH.js +249 -0
  52. package/dist/{lov-view-Cr929NMD.js → lov-view-BvQCvwbW.js} +5 -5
  53. package/dist/{menuInfo-BWuROp7u.js → menuInfo-B8RLelIC.js} +1 -1
  54. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-9nouHUjO.js → menuInfo.vue_vue_type_style_index_0_lang-DvkapEZr.js} +7 -7
  55. package/dist/{pda-app-CQP1sMAI.js → pda-app-D3LNmD9a.js} +19 -19
  56. package/dist/{resource-BDQLrMpK.js → resource-D8JA_03-.js} +7 -7
  57. package/dist/{su-welcome-CZysrZQ1.js → su-welcome-BjxeEKSo.js} +88 -88
  58. package/dist/{sys-config-BiGNMYSA.js → sys-config-sbeLk9bP.js} +6 -6
  59. package/dist/udp-core.css +1 -9
  60. package/dist/utogether-MlnyYtNS.js +4 -0
  61. package/index.ts +48 -40
  62. package/package.json +1 -1
  63. package/src/App.vue +65 -65
  64. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  65. package/src/components/SuScrollTree/ScrollPanel.vue +170 -175
  66. package/src/components/udp/{grid.vue → grid/index.vue} +27 -24
  67. package/src/components/udp/index.ts +2 -9
  68. package/src/components/udp/utils.ts +60 -107
  69. package/src/layout/components/lay-navbar/index.vue +239 -239
  70. package/src/layout/components/lay-panel/index.vue +150 -150
  71. package/src/layout/components/lay-search/index.vue +25 -25
  72. package/src/layout/components/lay-select-org/index.vue +64 -64
  73. package/src/layout/components/lay-sidebar/horizontal.vue +190 -190
  74. package/src/layout/components/lay-sidebar/mixNav.vue +260 -260
  75. package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -92
  76. package/src/layout/components/lay-tag/index.vue +20 -48
  77. package/src/layout/hooks/useNav.ts +173 -173
  78. package/src/layout/hooks/useTag.ts +223 -233
  79. package/src/layout/types.ts +3 -2
  80. package/src/main.ts +117 -113
  81. package/src/plugins/i18n/en.ts +302 -302
  82. package/src/plugins/i18n/zh.ts +356 -354
  83. package/src/plugins/vxe-table/index.ts +116 -53
  84. package/src/plugins/vxe-table/render.tsx +956 -956
  85. package/src/router/index.ts +186 -177
  86. package/src/router/modules/remaining.ts +58 -58
  87. package/src/router/utils.ts +393 -377
  88. package/src/store/modules/app.ts +1 -3
  89. package/src/store/modules/multiTags.ts +110 -109
  90. package/src/store/modules/permission.ts +113 -100
  91. package/src/style/button.scss +85 -85
  92. package/src/style/login.css +1 -1
  93. package/src/style/vxetable.scss +25 -2
  94. package/src/utils/index.ts +3 -1
  95. package/src/views/organization/company/CompanyPanel.vue +259 -259
  96. package/src/views/organization/department/DepartmentPanel.vue +269 -283
  97. package/src/views/system/menu/SystemMenu.vue +183 -183
  98. package/src/views/system/menu/menuInfo.vue +363 -363
  99. package/src/views/system/role/UserInfo.vue +195 -195
  100. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  101. package/src/views/system/role-assign/RolePanel.vue +139 -139
  102. package/src/views/system/sys/sys-config.vue +336 -336
  103. package/src/views/system/sysUser/SysUserPanel.vue +279 -278
  104. package/src/views/uapp/pda/pda-app.vue +208 -208
  105. package/src/views/udev/dict/DictView.vue +118 -118
  106. package/src/views/udev/dict/childView.vue +1 -1
  107. package/src/views/udev/lov/lov-view.vue +91 -91
  108. package/src/views/ulogin/login.vue +2 -2
  109. package/src/views/upms/interface/log-out.vue +101 -101
  110. package/src/views/urpt/design/DesignPanel.vue +507 -507
  111. package/types/global.d.ts +2 -8
  112. package/dist/login-DzyK2soP.js +0 -278
  113. package/dist/utogether-BRirriOz.js +0 -182
  114. package/src/components/udp/count-down.vue +0 -536
  115. package/src/components/udp/flip-down/FlipCard/flip-card.vue +0 -251
  116. package/src/components/udp/flip-down/FlipCard/interfaces.ts +0 -4
  117. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +0 -113
  118. package/src/components/udp/form-upload.vue +0 -482
  119. package/src/components/udp/form.vue +0 -112
  120. package/src/components/udp/lov.vue +0 -388
  121. package/src/components/udp/modal-form.vue +0 -190
  122. package/src/components/udp/modal-grid.vue +0 -298
  123. package/src/components/udp/upload.vue +0 -423
  124. package/src/utils/udp/http/index.ts +0 -294
  125. package/src/utils/udp/http/types.d.ts +0 -49
  126. 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) }}