@deppon/deppon-template 2.4.3 → 2.4.5

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.
@@ -1166,9 +1166,10 @@ body .el-overlay-dialog,
1166
1166
  width: 100%;
1167
1167
  height: 100%;
1168
1168
  overflow: hidden;
1169
- background: radial-gradient(circle at 8% 10%, rgba(64, 158, 255, 0.08), transparent 44%), radial-gradient(circle at 88% 0%, rgba(99, 102, 241, 0.08), transparent 38%), linear-gradient(180deg, #f6f9ff 0%, #f4f7fd 100%);
1170
- /* 覆盖 Element Plus 按钮样式,确保优先级 */
1171
- /* 防止 header-right 插槽内容挤压操作按钮 */
1169
+ --pro-layout-header-bg: var(--el-bg-color, #ffffff);
1170
+ --pro-layout-tags-bar-bg: var(--pro-layout-header-bg);
1171
+ --pro-layout-main-bg: var(--el-bg-color-page, #f2f3f5);
1172
+ background: #fff !important;
1172
1173
  }
1173
1174
  .pro-layout__sider {
1174
1175
  display: flex;
@@ -1181,9 +1182,6 @@ body .el-overlay-dialog,
1181
1182
  box-shadow: 2px 0 8px var(--pro-shadow-color-sider, rgba(0, 0, 0, 0.12));
1182
1183
  transition: width 0.3s ease, transform 0.3s ease;
1183
1184
  flex-shrink: 0;
1184
- /* 去除菜单组右侧的竖线 */
1185
- /* 直接针对 Element Plus 的 .el-menu 类设置样式 */
1186
- /* 确保 .pro-layout__menu 类也能正确匹配 */
1187
1185
  }
1188
1186
  .pro-layout__sider .el-scrollbar__view {
1189
1187
  overflow: visible;
@@ -1203,8 +1201,6 @@ body .el-overlay-dialog,
1203
1201
  }
1204
1202
  .pro-layout__sider .pro-layout__menu-group {
1205
1203
  border-right: none !important;
1206
- /* 确保菜单项也没有右侧边框 */
1207
- /* 直接针对菜单组内的 Element Plus 菜单设置样式 */
1208
1204
  }
1209
1205
  .pro-layout__sider .pro-layout__menu-group::after,
1210
1206
  .pro-layout__sider .pro-layout__menu-group::before {
@@ -1403,8 +1399,6 @@ body .el-overlay-dialog,
1403
1399
  border-bottom: 1px solid var(--el-border-color-lighter, #f0f0f0) !important;
1404
1400
  margin-bottom: 8px;
1405
1401
  margin-top: -1px;
1406
- /* 确保边框重叠时不会出现双边框 */
1407
- /* 收缩时居中显示首字符 */
1408
1402
  }
1409
1403
  .pro-layout__menu-group-header-left {
1410
1404
  display: flex;
@@ -1466,7 +1460,6 @@ body .el-overlay-dialog,
1466
1460
  background-color: transparent;
1467
1461
  font-weight: 400;
1468
1462
  font-family: var(--pro-font-family, 'PingFangSC-Regular') !important;
1469
- /* 常用菜单项样式 */
1470
1463
  }
1471
1464
  .pro-layout__menu--common .el-menu-item .el-menu-item__title {
1472
1465
  display: flex;
@@ -1509,14 +1502,11 @@ body .el-overlay-dialog,
1509
1502
  }
1510
1503
  .pro-layout__header {
1511
1504
  padding: 0 !important;
1512
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(247, 251, 255, 0.92)) !important;
1513
- backdrop-filter: blur(10px);
1505
+ background: var(--pro-layout-header-bg) !important;
1514
1506
  position: relative;
1515
1507
  z-index: 100;
1516
1508
  width: 100vw;
1517
1509
  border-bottom: 1px solid rgba(39, 82, 173, 0.08) !important;
1518
- box-shadow: 0 8px 24px rgba(31, 56, 104, 0.06);
1519
- /* 覆盖 Element Plus 默认的按钮间距 */
1520
1510
  }
1521
1511
  .pro-layout__header--fixed {
1522
1512
  position: fixed;
@@ -1524,8 +1514,6 @@ body .el-overlay-dialog,
1524
1514
  left: 0;
1525
1515
  right: 0;
1526
1516
  z-index: 1000;
1527
- border-bottom: 1px solid rgba(39, 82, 173, 0.08) !important;
1528
- box-shadow: 0 8px 24px rgba(31, 56, 104, 0.06);
1529
1517
  }
1530
1518
  .pro-layout__header-content {
1531
1519
  display: flex;
@@ -1672,8 +1660,8 @@ body .el-overlay-dialog,
1672
1660
  transition: all 0.2s ease !important;
1673
1661
  }
1674
1662
  .pro-layout__top-menu .el-menu-item:hover {
1675
- color: #1f6bff !important;
1676
- background: rgba(64, 158, 255, 0.09) !important;
1663
+ color: var(--el-color-primary, #409eff) !important;
1664
+ background: transparent !important;
1677
1665
  }
1678
1666
  .pro-layout__top-menu .el-menu-item.is-active {
1679
1667
  background: linear-gradient(135deg, rgba(57, 124, 255, 0.18), rgba(108, 74, 255, 0.15)) !important;
@@ -1741,25 +1729,30 @@ body .el-overlay-dialog,
1741
1729
  .pro-layout__tags-view {
1742
1730
  flex-shrink: 0;
1743
1731
  height: auto !important;
1744
- min-height: 48px !important;
1745
- background: transparent !important;
1732
+ padding: 0 !important;
1733
+ margin: 0 !important;
1734
+ display: flex;
1735
+ flex-direction: column;
1736
+ background: var(--pro-layout-header-bg) !important;
1746
1737
  border-bottom: none !important;
1747
1738
  overflow: visible;
1748
1739
  }
1749
1740
  .pro-layout__tags-menu {
1741
+ --el-menu-bg-color: var(--pro-layout-header-bg) !important;
1750
1742
  display: flex !important;
1751
- align-items: center;
1743
+ flex: 1 1 auto;
1744
+ align-self: stretch;
1745
+ align-items: flex-end;
1752
1746
  flex-wrap: nowrap !important;
1753
1747
  overflow-x: auto !important;
1754
- overflow-y: hidden !important;
1755
- min-height: 48px;
1756
- padding: 6px 12px !important;
1757
- margin: 8px 14px 6px;
1758
- border-radius: 12px;
1748
+ overflow-y: visible !important;
1749
+ padding: 0 !important;
1750
+ margin: 0 !important;
1759
1751
  border: none !important;
1760
1752
  outline: none;
1761
- background: transparent !important;
1762
- box-shadow: none;
1753
+ background: var(--pro-layout-header-bg) !important;
1754
+ min-height: 100%;
1755
+ width: 100%;
1763
1756
  height: auto !important;
1764
1757
  }
1765
1758
  .pro-layout__tags-menu.el-menu.el-menu--horizontal {
@@ -1769,45 +1762,94 @@ body .el-overlay-dialog,
1769
1762
  }
1770
1763
  .pro-layout__tags-menu .el-menu-item {
1771
1764
  flex: 0 0 auto;
1772
- height: 34px !important;
1773
- line-height: 34px !important;
1774
- margin-right: 8px !important;
1765
+ height: 36px !important;
1766
+ line-height: 36px !important;
1767
+ margin-right: 4px !important;
1775
1768
  margin-top: 0;
1776
1769
  margin-bottom: 0;
1777
1770
  padding: 0 12px !important;
1778
- border-radius: 8px !important;
1771
+ border-radius: 10px 10px 0 0 !important;
1779
1772
  border: none !important;
1780
1773
  border-bottom: none !important;
1781
1774
  background: transparent !important;
1782
- transition: all 0.2s ease;
1775
+ transition: color 0.2s ease;
1783
1776
  position: relative;
1784
1777
  cursor: pointer;
1785
1778
  display: flex;
1786
1779
  align-items: center;
1787
1780
  }
1788
- .pro-layout__tags-menu .el-menu-item:not(:last-child):not(.is-active)::after {
1789
- display: none;
1790
- }
1791
- .pro-layout__tags-menu .el-menu-item:hover {
1792
- background: rgba(78, 138, 255, 0.1) !important;
1781
+ .pro-layout__tags-menu .el-menu-item:not(.is-active):hover {
1782
+ background: transparent !important;
1793
1783
  }
1794
1784
  .pro-layout__tags-menu .el-menu-item.is-active {
1785
+ z-index: 2;
1795
1786
  border: none !important;
1796
- background: linear-gradient(135deg, #ffffff, #f3f8ff) !important;
1797
- box-shadow: 0 4px 12px rgba(59, 98, 186, 0.16);
1787
+ background: var(--pro-layout-main-bg) !important;
1788
+ box-shadow: none !important;
1798
1789
  border-bottom: none !important;
1799
1790
  overflow: visible;
1800
1791
  }
1792
+ .pro-layout__tags-menu .el-menu-item.is-active::before {
1793
+ content: '';
1794
+ position: absolute;
1795
+ left: -8px;
1796
+ bottom: 0;
1797
+ width: 8px;
1798
+ height: 8px;
1799
+ background: var(--pro-layout-tags-bar-bg);
1800
+ border-bottom-right-radius: 8px;
1801
+ box-shadow: 2px 2px 0 0 var(--pro-layout-main-bg);
1802
+ }
1803
+ .pro-layout__tags-menu .el-menu-item.is-active::after {
1804
+ content: '';
1805
+ position: absolute;
1806
+ right: -8px;
1807
+ bottom: 0;
1808
+ width: 8px;
1809
+ height: 8px;
1810
+ background: var(--pro-layout-tags-bar-bg);
1811
+ border-bottom-left-radius: 8px;
1812
+ box-shadow: -2px 2px 0 0 var(--pro-layout-main-bg);
1813
+ }
1814
+ .pro-layout__tags-menu .pro-layout__tag-item--affix {
1815
+ padding: 0 10px !important;
1816
+ min-width: 40px;
1817
+ justify-content: center;
1818
+ border-radius: 10px 10px 0 0 !important;
1819
+ }
1820
+ .pro-layout__tags-menu .pro-layout__tag-item--affix.is-active::before {
1821
+ display: none;
1822
+ }
1801
1823
  .pro-layout__tags-menu .pro-layout__tag-label {
1802
1824
  color: #46556f;
1803
1825
  font-size: 12px;
1804
1826
  font-weight: 500;
1805
1827
  text-decoration: none !important;
1806
1828
  }
1807
- .pro-layout__tags-menu .el-menu-item.is-active .pro-layout__tag-label {
1808
- color: #2259d2 !important;
1829
+ .pro-layout__tags-menu .pro-layout__tag-label--affix-icon {
1830
+ display: inline-flex;
1831
+ align-items: center;
1832
+ justify-content: center;
1833
+ flex: none !important;
1834
+ overflow: visible;
1835
+ }
1836
+ .pro-layout__tags-menu .pro-layout__tag-label--affix-icon .el-icon {
1837
+ font-size: 16px;
1838
+ color: #5c6c84;
1839
+ }
1840
+ .pro-layout__tags-menu .pro-layout__tag-item--affix.is-active .pro-layout__tag-label--affix-icon .el-icon {
1841
+ color: var(--el-color-primary, #409eff);
1842
+ }
1843
+ .pro-layout__tags-menu .el-menu-item.is-active .pro-layout__tag-label:not(.pro-layout__tag-label--affix-icon) {
1844
+ color: var(--el-color-primary, #409eff) !important;
1809
1845
  font-weight: 600;
1810
1846
  }
1847
+ .pro-layout__tags-menu .el-menu-item:not(.is-active:hover .pro-layout__tag-label:not(.pro-layout__tag-label--affix-icon)) {
1848
+ color: var(--el-color-primary, #409eff) !important;
1849
+ }
1850
+ .pro-layout__tags-menu .el-menu-item:not(.is-active:hover .pro-layout__tag-label--affix-icon .el-icon) {
1851
+ color: var(--el-color-primary, #409eff) !important;
1852
+ }
1811
1853
  .pro-layout__tags-menu .pro-layout__tag-actions .pro-layout__tag-icon {
1812
1854
  color: #8a98b2;
1813
1855
  font-size: 12px;
@@ -1816,7 +1858,7 @@ body .el-overlay-dialog,
1816
1858
  display: inline-flex;
1817
1859
  align-items: center;
1818
1860
  gap: 2px;
1819
- margin-left: 2px;
1861
+ margin-left: 4px;
1820
1862
  }
1821
1863
  .pro-layout__tags-menu .pro-layout__tag-item .pro-layout__tag-icon {
1822
1864
  margin-left: 0 !important;
@@ -1826,28 +1868,6 @@ body .el-overlay-dialog,
1826
1868
  .pro-layout__tags-menu .pro-layout__tag-actions .pro-layout__tag-icon:hover {
1827
1869
  color: #2b65f5 !important;
1828
1870
  }
1829
- .pro-layout__tags-menu .fixed-home-tag-item {
1830
- cursor: pointer;
1831
- user-select: none;
1832
- padding: 0 12px !important;
1833
- background: linear-gradient(135deg, #eff5ff, #e8f1ff) !important;
1834
- box-shadow: none !important;
1835
- }
1836
- .pro-layout__tags-menu .fixed-home-tag-item .fixed-home-tag-label {
1837
- display: inline-flex;
1838
- align-items: center;
1839
- gap: 6px;
1840
- color: #2e5ccf;
1841
- font-weight: 600;
1842
- }
1843
- .pro-layout__tags-menu .fixed-home-tag-item .fixed-home-tag-icon {
1844
- font-style: normal;
1845
- font-size: 14px;
1846
- line-height: 1;
1847
- }
1848
- .pro-layout__tags-menu .fixed-home-tag-item .pro-layout__tag-actions {
1849
- display: none !important;
1850
- }
1851
1871
  .pro-layout__tags-menu > .el-sub-menu {
1852
1872
  margin-left: auto !important;
1853
1873
  position: sticky;
@@ -1879,7 +1899,6 @@ body .el-overlay-dialog,
1879
1899
  }
1880
1900
  .pro-layout__tag-item.is-active .pro-layout__tag-icon:hover {
1881
1901
  color: var(--el-text-color-regular, #606266) !important;
1882
- background-color: var(--el-fill-color-dark, #e4e7ed) !important;
1883
1902
  }
1884
1903
  .pro-layout__tag-item.is-active .pro-layout__tag-icon:hover .el-icon,
1885
1904
  .pro-layout__tag-item.is-active .pro-layout__tag-icon:hover svg {
@@ -1916,7 +1935,6 @@ body .el-overlay-dialog,
1916
1935
  justify-content: center;
1917
1936
  width: 16px;
1918
1937
  height: 16px;
1919
- /* 穿透 el-icon 组件样式 */
1920
1938
  }
1921
1939
  .pro-layout__tag-icon .el-icon,
1922
1940
  .pro-layout__tag-icon svg {
@@ -1925,7 +1943,6 @@ body .el-overlay-dialog,
1925
1943
  }
1926
1944
  .pro-layout__tag-icon:hover {
1927
1945
  color: var(--el-text-color-regular, #606266) !important;
1928
- background-color: var(--el-fill-color-dark, #e4e7ed) !important;
1929
1946
  }
1930
1947
  .pro-layout__tag-icon:hover .el-icon,
1931
1948
  .pro-layout__tag-icon:hover svg {
@@ -1936,7 +1953,7 @@ body .el-overlay-dialog,
1936
1953
  width: 100%;
1937
1954
  padding: 0 !important;
1938
1955
  margin: 0 !important;
1939
- background: radial-gradient(circle at top left, #eef4ff 0%, #f7f9ff 45%, #fbfcff 100%) !important;
1956
+ background: var(--pro-layout-main-bg) !important;
1940
1957
  box-sizing: border-box;
1941
1958
  display: flex;
1942
1959
  flex-direction: column;
@@ -1,10 +1,11 @@
1
1
  import '../_virtual/_rollup-plugin-inject-process-env.js';
2
- import _typeof from '@babel/runtime/helpers/typeof';
3
2
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
- import { useSlots, ref, computed, watch, markRaw, onMounted, onUnmounted, nextTick, openBlock, createBlock, unref, normalizeClass, withCtx, createCommentVNode, createElementVNode, createElementBlock, renderSlot, normalizeStyle, createTextVNode, toDisplayString, createVNode, Fragment, renderList, resolveDynamicComponent, withDirectives, mergeProps, withModifiers, vShow } from 'vue';
3
+ import _typeof from '@babel/runtime/helpers/typeof';
4
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
+ import { useSlots, ref, computed, watch, markRaw, onMounted, onUnmounted, nextTick, openBlock, createBlock, unref, normalizeClass, withCtx, createElementVNode, createElementBlock, renderSlot, normalizeStyle, createCommentVNode, createTextVNode, toDisplayString, createVNode, Fragment, renderList, resolveDynamicComponent, withDirectives, mergeProps, withModifiers, vShow } from 'vue';
5
6
  import { useRouter, useRoute } from '@deppon/deppon-router';
6
7
  import { ElContainer, ElHeader, ElMenu, ElMenuItem, ElBadge, ElSubMenu, ElInput, ElIcon, ElButton, ElAside, ElScrollbar, ElTooltip, ElMain, ElFooter } from '@deppon/deppon-ui';
7
- import { Search, Service, Bell, Close, Refresh, Expand, Fold, ArrowRight, ArrowLeft } from '@deppon/deppon-ui/icons-vue';
8
+ import { Search, Service, Bell, Close, House, Expand, Fold, ArrowRight, ArrowLeft } from '@deppon/deppon-ui/icons-vue';
8
9
  import { isMobile as _isMobile } from '../utils/other.js';
9
10
 
10
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -89,197 +90,169 @@ var _hoisted_22 = {
89
90
  "class": "pro-layout__menu-item-char"
90
91
  };
91
92
  var _hoisted_23 = {
92
- "class": "pro-layout__tag-label"
93
+ "class": "pro-layout__tag-label pro-layout__tag-label--affix-icon"
93
94
  };
94
95
  var _hoisted_24 = {
96
+ "class": "pro-layout__tag-label"
97
+ };
98
+ var _hoisted_25 = {
95
99
  "class": "pro-layout__tag-actions"
96
100
  };
97
101
  var script = {
98
102
  __name: 'ProLayout',
99
103
  props: {
100
- /** 是否显示侧边栏 */
101
104
  showSider: {
102
105
  type: Boolean,
103
106
  "default": true
104
107
  },
105
- /** 侧边栏宽度 */
106
108
  siderWidth: {
107
109
  type: String,
108
110
  "default": '180px'
109
111
  },
110
- /** 侧边栏折叠宽度 */
111
112
  siderCollapsedWidth: {
112
113
  type: String,
113
114
  "default": '64px'
114
115
  },
115
- /** 是否固定头部 */
116
116
  fixedHeader: {
117
117
  type: Boolean,
118
118
  "default": true
119
119
  },
120
- /** 是否折叠 */
121
120
  collapsed: {
122
121
  type: Boolean,
123
122
  "default": true
124
123
  },
125
- /** 是否显示折叠按钮 */
126
124
  showCollapse: {
127
125
  type: Boolean,
128
126
  "default": true
129
127
  },
130
- /** 是否显示 Logo */
131
128
  showLogo: {
132
129
  type: Boolean,
133
130
  "default": true
134
131
  },
135
- /** Logo 图片,可以是字符串(路径)或对象(包含 src 和 size) */
136
132
  logo: {
137
133
  type: [String, Object],
138
134
  "default": null
139
135
  },
140
- /** 标题 */
141
136
  title: {
142
137
  type: String,
143
138
  "default": 'Pro Layout'
144
139
  },
145
- /** 菜单项 */
146
140
  menuItems: {
147
141
  type: Array,
148
142
  "default": function _default() {
149
143
  return [];
150
144
  }
151
145
  },
152
- /** 顶部菜单项 */
153
146
  topMenuItems: {
154
147
  type: Array,
155
148
  "default": function _default() {
156
149
  return [];
157
150
  }
158
151
  },
159
- /** 当前激活的菜单 */
160
152
  activeMenu: {
161
153
  type: String,
162
154
  "default": undefined
163
155
  },
164
- /** 菜单折叠动画 */
165
156
  menuCollapseTransition: {
166
157
  type: Boolean,
167
158
  "default": true
168
159
  },
169
- /** 是否只保持一个子菜单的展开 */
170
160
  menuUniqueOpened: {
171
161
  type: Boolean,
172
162
  "default": true
173
163
  },
174
- /** 菜单模式 */
175
164
  menuMode: {
176
165
  type: String,
177
166
  "default": 'vertical'
178
167
  },
179
- /** 是否使用 vue-router 的模式 */
180
168
  menuRouter: {
181
169
  type: Boolean,
182
170
  "default": true
183
171
  },
184
- /** 菜单属性 */
185
172
  menuProps: {
186
173
  type: Object,
187
174
  "default": function _default() {
188
175
  return {};
189
176
  }
190
177
  },
191
- /** 是否显示头部 */
192
178
  showHeader: {
193
179
  type: Boolean,
194
180
  "default": true
195
181
  },
196
- /** 头部高度 */
197
182
  headerHeight: {
198
183
  type: String,
199
184
  "default": '60px'
200
185
  },
201
- /** 是否显示页脚 */
202
186
  showFooter: {
203
187
  type: Boolean,
204
188
  "default": false
205
189
  },
206
- /** 页脚高度 */
207
190
  footerHeight: {
208
191
  type: String,
209
192
  "default": '60px'
210
193
  },
211
- /** 是否启用响应式布局 */
212
194
  responsive: {
213
195
  type: Boolean,
214
196
  "default": true
215
197
  },
216
- /** 响应式断点(屏幕宽度小于此值时视为移动端) */
217
198
  breakpoint: {
218
199
  type: Number,
219
200
  "default": 768
220
201
  },
221
- /** 是否显示菜单搜索框 */
222
202
  showMenuSearch: {
223
203
  type: Boolean,
224
204
  "default": true
225
205
  },
226
- /** 菜单搜索框占位符 */
227
206
  menuSearchPlaceholder: {
228
207
  type: String,
229
208
  "default": '请输入菜单名称'
230
209
  },
231
- /** 是否显示常用菜单 */
232
210
  showCommonMenus: {
233
211
  type: Boolean,
234
212
  "default": true
235
213
  },
236
- /** 常用菜单最大数量 */
237
214
  commonMenusMax: {
238
215
  type: Number,
239
216
  "default": 5
240
217
  },
241
- /** 是否在头部显示 Logo */
242
218
  showLogoInHeader: {
243
219
  type: Boolean,
244
220
  "default": true
245
221
  },
246
- /** 是否显示顶部菜单 */
247
222
  showTopMenu: {
248
223
  type: Boolean,
249
224
  "default": true
250
225
  },
251
- /** 是否显示头部搜索框 */
252
226
  showHeaderSearch: {
253
227
  type: Boolean,
254
228
  "default": true
255
229
  },
256
- /** 头部搜索框占位符 */
257
230
  headerSearchPlaceholder: {
258
231
  type: String,
259
232
  "default": '输入客户名称'
260
233
  },
261
- /** 是否显示电话图标 */
262
234
  showPhoneIcon: {
263
235
  type: Boolean,
264
236
  "default": true
265
237
  },
266
- /** 是否显示通知图标 */
267
238
  showBellIcon: {
268
239
  type: Boolean,
269
240
  "default": true
270
241
  },
271
- /** 是否显示 TagsView */
272
242
  showTagsView: {
273
243
  type: Boolean,
274
244
  "default": true
275
245
  },
276
- /** TagsView 高度 */
277
246
  tagsViewHeight: {
278
247
  type: String,
279
248
  "default": '40px'
249
+ },
250
+ tagsViewHomePath: {
251
+ type: String,
252
+ "default": '/'
280
253
  }
281
254
  },
282
- emits: ['update:collapsed', 'collapse-change', 'logo-click', 'breadcrumb-click', 'breadcrumb-close', 'phone-click', 'bell-click', 'user-command', 'menu-search', 'menu-search-click', 'header-search', 'tag-refresh', 'tag-close', 'common-menu-delete'],
255
+ emits: ['update:collapsed', 'collapse-change', 'logo-click', 'breadcrumb-click', 'breadcrumb-close', 'phone-click', 'bell-click', 'user-command', 'menu-search', 'menu-search-click', 'header-search', 'tag-close', 'common-menu-delete'],
283
256
  setup: function setup(__props, _ref) {
284
257
  var __emit = _ref.emit;
285
258
  var slots = useSlots();
@@ -294,17 +267,21 @@ var script = {
294
267
  var headerSearchText = ref('');
295
268
  var menuTitleRefs = new Map();
296
269
  var menuTitleOverflowMap = ref(new Map());
297
-
298
- // TagsView 相关
299
270
  var visitedTags = ref([]);
300
271
  var currentPath = ref('');
301
-
302
- // 为 tags menu 生成唯一的 key,确保动态添加标签时能触发 ellipsis 重新计算
303
272
  var tagsMenuKey = computed(function () {
304
273
  return "tags-menu-".concat(visitedTags.value.length, "-").concat(visitedTags.value.map(function (t) {
305
274
  return t.path;
306
275
  }).join('-'));
307
276
  });
277
+ var tagsViewHomePath = computed(function () {
278
+ return props.tagsViewHomePath;
279
+ });
280
+ var otherVisitedTags = computed(function () {
281
+ return visitedTags.value.filter(function (t) {
282
+ return t.path !== tagsViewHomePath.value;
283
+ });
284
+ });
308
285
  var getMenuTitleKey = function getMenuTitleKey(item) {
309
286
  var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
310
287
  return "".concat(prefix).concat((item === null || item === void 0 ? void 0 : item.path) || (item === null || item === void 0 ? void 0 : item.key) || (item === null || item === void 0 ? void 0 : item.title) || (item === null || item === void 0 ? void 0 : item.label) || '');
@@ -342,8 +319,6 @@ var script = {
342
319
  var isMenuTitleOverflow = function isMenuTitleOverflow(key) {
343
320
  return menuTitleOverflowMap.value.get(key) === true;
344
321
  };
345
-
346
- // 从 menuItems 中查找标题
347
322
  var _findMenuTitle = function findMenuTitle(path) {
348
323
  var menuItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.menuItems;
349
324
  var _iterator = _createForOfIteratorHelper(menuItems),
@@ -366,29 +341,39 @@ var script = {
366
341
  }
367
342
  return null;
368
343
  };
369
-
370
- // 获取路由标题
344
+ var ensureAffixHomeTag = function ensureAffixHomeTag() {
345
+ var hp = tagsViewHomePath.value;
346
+ var idx = visitedTags.value.findIndex(function (t) {
347
+ return t.path === hp;
348
+ });
349
+ if (idx === -1) {
350
+ var title = _findMenuTitle(hp) || '首页';
351
+ visitedTags.value.unshift({
352
+ path: hp,
353
+ title: title,
354
+ fullPath: hp
355
+ });
356
+ } else if (idx > 0) {
357
+ var _visitedTags$value$sp = visitedTags.value.splice(idx, 1),
358
+ _visitedTags$value$sp2 = _slicedToArray(_visitedTags$value$sp, 1),
359
+ homeTag = _visitedTags$value$sp2[0];
360
+ visitedTags.value.unshift(homeTag);
361
+ }
362
+ };
371
363
  var getRouteTitle = function getRouteTitle(route) {
372
364
  var _route$meta;
373
- // 优先使用路由 meta.title
374
365
  if ((_route$meta = route.meta) !== null && _route$meta !== void 0 && _route$meta.title) {
375
366
  return route.meta.title;
376
367
  }
377
- // 其次从 menuItems 中查找
378
368
  var menuTitle = _findMenuTitle(route.path);
379
369
  if (menuTitle) {
380
370
  return menuTitle;
381
371
  }
382
- // 最后使用路由名称或路径
383
372
  return route.name || route.path;
384
373
  };
385
-
386
- // 添加标签
387
374
  var addTag = function addTag(route) {
388
375
  var path = route.path;
389
376
  var title = getRouteTitle(route);
390
-
391
- // 检查标签是否已存在
392
377
  var existingTag = visitedTags.value.find(function (tag) {
393
378
  return tag.path === path;
394
379
  });
@@ -401,35 +386,30 @@ var script = {
401
386
  }
402
387
  currentPath.value = path;
403
388
  };
404
-
405
- // 删除标签
406
389
  var removeTag = function removeTag(tag) {
390
+ if (tag.path === tagsViewHomePath.value) {
391
+ return;
392
+ }
407
393
  var index = visitedTags.value.findIndex(function (t) {
408
394
  return t.path === tag.path;
409
395
  });
410
396
  if (index > -1) {
411
397
  visitedTags.value.splice(index, 1);
412
-
413
- // 如果删除的是当前标签,跳转到最后一个标签或首页
414
398
  if (tag.path === currentPath.value) {
415
399
  if (visitedTags.value.length > 0) {
416
400
  var lastTag = visitedTags.value[visitedTags.value.length - 1];
417
401
  router.push(lastTag.fullPath || lastTag.path);
418
402
  } else {
419
- router.push('/');
403
+ router.push(tagsViewHomePath.value);
420
404
  }
421
405
  }
422
406
  }
423
407
  };
424
-
425
- // 点击标签
426
408
  var handleTagClick = function handleTagClick(tag) {
427
409
  if (tag.path !== currentPath.value) {
428
410
  router.push(tag.fullPath || tag.path);
429
411
  }
430
412
  };
431
-
432
- // 处理 el-menu 的 select 事件
433
413
  var handleTagMenuSelect = function handleTagMenuSelect(index) {
434
414
  var tag = visitedTags.value.find(function (t) {
435
415
  return t.path === index;
@@ -438,50 +418,30 @@ var script = {
438
418
  handleTagClick(tag);
439
419
  }
440
420
  };
441
-
442
- // 刷新标签
443
- var handleTagRefresh = function handleTagRefresh(tag) {
444
- // 触发路由刷新,通过重新导航到相同路径并添加时间戳参数
445
- var currentQuery = _objectSpread({}, route.query);
446
- currentQuery._t = Date.now();
447
- router.replace({
448
- path: tag.fullPath || tag.path,
449
- query: currentQuery
450
- });
451
- emit('tag-refresh', tag);
452
- };
453
-
454
- // 关闭标签
455
421
  var handleTagClose = function handleTagClose(tag) {
456
- // 至少保留一个标签
457
- if (visitedTags.value.length <= 1) {
422
+ if (tag.path === tagsViewHomePath.value) {
458
423
  return;
459
424
  }
460
425
  removeTag(tag);
461
426
  emit('tag-close', tag);
462
427
  };
463
-
464
- // 监听路由变化
465
428
  watch(function () {
466
429
  return route.path;
467
430
  }, function (newPath) {
468
431
  if (props.showTagsView && newPath) {
469
432
  addTag(route);
433
+ ensureAffixHomeTag();
470
434
  }
471
435
  }, {
472
436
  immediate: true
473
437
  });
474
-
475
- // 图标组件
476
438
  var SearchIcon = markRaw(Search);
477
439
  var PhoneIcon = markRaw(Service);
478
440
  var BellIcon = markRaw(Bell);
479
441
  var CloseIcon = markRaw(Close);
480
- var RefreshRightIcon = markRaw(Refresh);
442
+ var HouseIcon = markRaw(House);
481
443
  var ExpandIcon = markRaw(Expand);
482
444
  var FoldIcon = markRaw(Fold);
483
-
484
- // Logo 相关计算属性
485
445
  var logoSrc = computed(function () {
486
446
  if (!props.logo) return null;
487
447
  if (typeof props.logo === 'string') {
@@ -517,8 +477,6 @@ var script = {
517
477
  }
518
478
  return {};
519
479
  });
520
-
521
- // 检测是否为移动端
522
480
  var checkMobile = function checkMobile() {
523
481
  if (!props.responsive) {
524
482
  isMobile.value = _isMobile();
@@ -526,8 +484,6 @@ var script = {
526
484
  }
527
485
  windowWidth.value = window.innerWidth;
528
486
  isMobile.value = windowWidth.value < props.breakpoint || _isMobile();
529
-
530
- // 移动端自动折叠侧边栏
531
487
  if (isMobile.value && !collapsed.value) {
532
488
  collapsed.value = true;
533
489
  }
@@ -562,8 +518,6 @@ var script = {
562
518
  var toggleCollapse = function toggleCollapse() {
563
519
  collapsed.value = !collapsed.value;
564
520
  };
565
-
566
- // 计算下方容器的高度和位置
567
521
  var bodyStyle = computed(function () {
568
522
  var style = {};
569
523
  if (props.showHeader) {
@@ -578,39 +532,27 @@ var script = {
578
532
  }
579
533
  return style;
580
534
  });
581
-
582
- // 计算折叠按钮的位置
583
535
  var collapseBtnStyle = computed(function () {
584
536
  var siderWidthValue = collapsed.value ? props.siderCollapsedWidth : props.siderWidth;
585
- // 将宽度值转换为数字(去掉 px 单位)
586
537
  var widthNum = parseFloat(siderWidthValue);
587
538
  return {
588
539
  left: "".concat(widthNum, "px")
589
540
  };
590
541
  });
591
-
592
- // 处理菜单项的通用函数
593
542
  var _processMenuItem = function processMenuItem(item) {
594
543
  var processed = _objectSpread({}, item);
595
- // 如果 icon 是组件,使用 markRaw 标记
596
544
  if (processed.icon && _typeof(processed.icon) === 'object' && 'setup' in processed.icon) {
597
545
  processed.icon = markRaw(processed.icon);
598
546
  }
599
-
600
- // 菜单搜索过滤
601
547
  if (props.showMenuSearch && menuSearchText.value) {
602
548
  var searchText = menuSearchText.value.toLowerCase();
603
549
  var title = (processed.title || processed.label || '').toLowerCase();
604
-
605
- // 如果当前项匹配,保留所有子项
606
550
  if (title.includes(searchText)) {
607
551
  if (processed.children && Array.isArray(processed.children)) {
608
552
  processed.children = processed.children.map(_processMenuItem);
609
553
  }
610
554
  return processed;
611
555
  }
612
-
613
- // 如果当前项不匹配,检查子项
614
556
  if (processed.children && Array.isArray(processed.children)) {
615
557
  var filteredChildren = processed.children.map(_processMenuItem).filter(function (child) {
616
558
  return child !== null;
@@ -620,24 +562,16 @@ var script = {
620
562
  return processed;
621
563
  }
622
564
  }
623
-
624
- // 都不匹配,返回 null
625
565
  return null;
626
566
  }
627
-
628
- // 递归处理子菜单(无搜索时)
629
567
  if (processed.children && Array.isArray(processed.children)) {
630
568
  processed.children = processed.children.map(_processMenuItem);
631
569
  }
632
570
  return processed;
633
571
  };
634
-
635
- // 处理菜单组,将 menuItems 中的组数据转换为可渲染的格式
636
572
  var menuGroups = computed(function () {
637
573
  return props.menuItems.map(function (group) {
638
- // 如果 group 有 type 和 children,说明是分组格式
639
574
  if (group.type && group.children) {
640
- // 如果 type 是 'common' 且 showCommonMenus 为 false,则跳过
641
575
  if (group.type === 'common' && !props.showCommonMenus) {
642
576
  return null;
643
577
  }
@@ -650,7 +584,6 @@ var script = {
650
584
  items: processedItems
651
585
  };
652
586
  }
653
- // 如果没有 type,说明是单个菜单项,需要包装成组
654
587
  var processed = _processMenuItem(group);
655
588
  if (processed) {
656
589
  return {
@@ -664,38 +597,26 @@ var script = {
664
597
  return group !== null && group.items.length > 0;
665
598
  });
666
599
  });
667
-
668
- // 自动计算常用菜单数量
669
600
  var commonMenusCount = computed(function () {
670
601
  var commonGroup = menuGroups.value.find(function (group) {
671
602
  return group.type === 'common';
672
603
  });
673
604
  return commonGroup ? commonGroup.items.length : 0;
674
605
  });
675
-
676
- // 菜单组展开/收缩状态管理
677
606
  var menuGroupExpanded = ref({});
678
-
679
- // 初始化菜单组展开状态(默认全部展开)
680
607
  var initMenuGroupExpanded = function initMenuGroupExpanded() {
681
608
  menuGroups.value.forEach(function (group, index) {
682
609
  if (menuGroupExpanded.value[index] === undefined) {
683
- menuGroupExpanded.value[index] = true; // 默认展开
610
+ menuGroupExpanded.value[index] = true;
684
611
  }
685
612
  });
686
613
  };
687
-
688
- // 判断菜单组是否展开
689
614
  var isMenuGroupExpanded = function isMenuGroupExpanded(groupIndex) {
690
- return menuGroupExpanded.value[groupIndex] !== false; // 默认为 true
615
+ return menuGroupExpanded.value[groupIndex] !== false;
691
616
  };
692
-
693
- // 切换菜单组展开/收缩状态
694
617
  var toggleMenuGroup = function toggleMenuGroup(groupIndex) {
695
618
  menuGroupExpanded.value[groupIndex] = !isMenuGroupExpanded(groupIndex);
696
619
  };
697
-
698
- // 监听 menuGroups 变化,初始化展开状态
699
620
  watch(menuGroups, function () {
700
621
  initMenuGroupExpanded();
701
622
  nextTick(checkAllMenuTitleOverflow);
@@ -708,41 +629,26 @@ var script = {
708
629
  }, function () {
709
630
  nextTick(checkAllMenuTitleOverflow);
710
631
  });
711
-
712
- // 编辑模式状态
713
632
  var isEditMode = ref(false);
714
-
715
- // 切换编辑模式
716
633
  var toggleEditMode = function toggleEditMode() {
717
634
  isEditMode.value = !isEditMode.value;
718
635
  };
719
-
720
- // 处理常用菜单删除
721
636
  var handleCommonMenuDelete = function handleCommonMenuDelete(item) {
722
637
  emit('common-menu-delete', item);
723
638
  };
724
-
725
- // 获取文字的第一个字符
726
639
  var getFirstChar = function getFirstChar(text) {
727
640
  if (!text) return '';
728
- // 获取第一个字符(支持中文和英文)
729
641
  var firstChar = text.trim().charAt(0);
730
642
  return firstChar || '';
731
643
  };
732
-
733
- // 顶部菜单项(优先使用传入的 topMenuItems,否则从 menuItems 中提取顶级菜单)
734
644
  var topMenuItems = computed(function () {
735
- // 如果传入了 topMenuItems,直接使用
736
645
  if (props.topMenuItems && props.topMenuItems.length > 0) {
737
646
  return props.topMenuItems;
738
647
  }
739
648
  return [];
740
649
  });
741
-
742
- // 计算当前激活的顶部菜单
743
650
  var activeTopMenu = computed(function () {
744
651
  var currentPath = route.path;
745
- // 查找匹配的菜单项
746
652
  var _iterator2 = _createForOfIteratorHelper(props.topMenuItems),
747
653
  _step2;
748
654
  try {
@@ -751,7 +657,6 @@ var script = {
751
657
  if (item.path && (currentPath === item.path || currentPath.startsWith(item.path + '/'))) {
752
658
  return item.path || item.key;
753
659
  }
754
- // 检查子菜单
755
660
  if (item.children && item.children.length > 0) {
756
661
  var _iterator3 = _createForOfIteratorHelper(item.children),
757
662
  _step3;
@@ -776,27 +681,18 @@ var script = {
776
681
  }
777
682
  return '';
778
683
  });
779
-
780
- // 处理顶部菜单点击
781
684
  var handleTopMenuClick = function handleTopMenuClick(item) {
782
685
  if (item.path) {
783
686
  router.push(item.path);
784
687
  }
785
688
  };
786
-
787
- // 处理菜单搜索按钮点击
788
689
  var handleMenuSearchClick = function handleMenuSearchClick() {
789
- // 点击后展开菜单
790
690
  collapsed.value = false;
791
691
  emit('menu-search-click');
792
692
  };
793
-
794
- // 监听菜单搜索
795
693
  watch(menuSearchText, function (val) {
796
694
  emit('menu-search', val);
797
695
  });
798
-
799
- // 监听头部搜索
800
696
  watch(headerSearchText, function (val) {
801
697
  emit('header-search', val);
802
698
  });
@@ -807,7 +703,7 @@ var script = {
807
703
  }])
808
704
  }, {
809
705
  "default": withCtx(function () {
810
- return [createCommentVNode(" 顶部 Header (100vw) "), __props.showHeader ? (openBlock(), createBlock(unref(ElHeader), {
706
+ return [__props.showHeader ? (openBlock(), createBlock(unref(ElHeader), {
811
707
  key: 0,
812
708
  height: __props.headerHeight,
813
709
  "class": normalizeClass(["pro-layout__header", {
@@ -815,7 +711,7 @@ var script = {
815
711
  }])
816
712
  }, {
817
713
  "default": withCtx(function () {
818
- return [createElementVNode("div", _hoisted_1, [createCommentVNode(" 左侧:Logo "), createElementVNode("div", _hoisted_2, [__props.showLogoInHeader ? (openBlock(), createElementBlock("div", {
714
+ return [createElementVNode("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [__props.showLogoInHeader ? (openBlock(), createElementBlock("div", {
819
715
  key: 0,
820
716
  "class": "pro-layout__header-logo",
821
717
  onClick: _cache[0] || (_cache[0] = function ($event) {
@@ -833,7 +729,7 @@ var script = {
833
729
  }, null, -1 /* CACHED */)), createTextVNode(" " + toDisplayString(__props.title), 1 /* TEXT */)])) : createCommentVNode("v-if", true)];
834
730
  })])) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "header-left", {
835
731
  collapsed: collapsed.value
836
- })]), createCommentVNode(" 中间:主菜单导航 "), __props.showTopMenu && topMenuItems.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_5, [createVNode(unref(ElMenu), {
732
+ })]), __props.showTopMenu && topMenuItems.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_5, [createVNode(unref(ElMenu), {
837
733
  "default-active": activeTopMenu.value,
838
734
  mode: "horizontal",
839
735
  router: __props.menuRouter,
@@ -955,12 +851,12 @@ var script = {
955
851
  })])])])];
956
852
  }),
957
853
  _: 3 /* FORWARDED */
958
- }, 8 /* PROPS */, ["height", "class"])) : createCommentVNode("v-if", true), createCommentVNode(" 下方容器:左侧导航 + 右侧内容区 "), createVNode(unref(ElContainer), {
854
+ }, 8 /* PROPS */, ["height", "class"])) : createCommentVNode("v-if", true), createVNode(unref(ElContainer), {
959
855
  "class": "pro-layout__body",
960
856
  style: normalizeStyle(bodyStyle.value)
961
857
  }, {
962
858
  "default": withCtx(function () {
963
- return [createCommentVNode(" 侧边栏 "), __props.showSider ? (openBlock(), createBlock(unref(ElAside), {
859
+ return [__props.showSider ? (openBlock(), createBlock(unref(ElAside), {
964
860
  key: 0,
965
861
  width: collapsed.value ? __props.siderCollapsedWidth : __props.siderWidth,
966
862
  "class": normalizeClass(["pro-layout__sider", {
@@ -968,9 +864,9 @@ var script = {
968
864
  }])
969
865
  }, {
970
866
  "default": withCtx(function () {
971
- return [createCommentVNode(" 侧边栏头部插槽 "), unref(slots)['sider-header'] ? (openBlock(), createElementBlock("div", _hoisted_10, [renderSlot(_ctx.$slots, "sider-header", {
867
+ return [unref(slots)['sider-header'] ? (openBlock(), createElementBlock("div", _hoisted_10, [renderSlot(_ctx.$slots, "sider-header", {
972
868
  collapsed: collapsed.value
973
- })])) : createCommentVNode("v-if", true), createCommentVNode(" 菜单搜索框 "), __props.showMenuSearch ? (openBlock(), createElementBlock("div", _hoisted_11, [!collapsed.value ? (openBlock(), createBlock(unref(ElInput), {
869
+ })])) : createCommentVNode("v-if", true), __props.showMenuSearch ? (openBlock(), createElementBlock("div", _hoisted_11, [!collapsed.value ? (openBlock(), createBlock(unref(ElInput), {
974
870
  key: 0,
975
871
  modelValue: menuSearchText.value,
976
872
  "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
@@ -1006,14 +902,14 @@ var script = {
1006
902
  })];
1007
903
  }),
1008
904
  _: 1 /* STABLE */
1009
- }))])) : createCommentVNode("v-if", true), createCommentVNode(" 菜单滚动区域 "), createVNode(unref(ElScrollbar), {
905
+ }))])) : createCommentVNode("v-if", true), createVNode(unref(ElScrollbar), {
1010
906
  "class": "pro-layout__menu-scrollbar"
1011
907
  }, {
1012
908
  "default": withCtx(function () {
1013
- return [createCommentVNode(" 动态菜单组 "), (openBlock(true), createElementBlock(Fragment, null, renderList(menuGroups.value, function (group, groupIndex) {
909
+ return [(openBlock(true), createElementBlock(Fragment, null, renderList(menuGroups.value, function (group, groupIndex) {
1014
910
  return openBlock(), createElementBlock(Fragment, {
1015
911
  key: "".concat(group.type, "-").concat(groupIndex)
1016
- }, [group.items && group.items.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_12, [createCommentVNode(" 当 showCommonMenus 为 false 且只有一个菜单组时,隐藏头部 "), __props.showCommonMenus || menuGroups.value.length > 1 ? (openBlock(), createElementBlock("div", {
912
+ }, [group.items && group.items.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_12, [__props.showCommonMenus || menuGroups.value.length > 1 ? (openBlock(), createElementBlock("div", {
1017
913
  key: 0,
1018
914
  "class": normalizeClass(["pro-layout__menu-group-header", {
1019
915
  'pro-layout__menu-group-header--collapsed': collapsed.value
@@ -1183,17 +1079,17 @@ var script = {
1183
1079
  })];
1184
1080
  }),
1185
1081
  _: 3 /* FORWARDED */
1186
- }, 8 /* PROPS */, ["width", "class"])) : createCommentVNode("v-if", true), createCommentVNode(" 折叠按钮:悬浮在侧边栏右边线的中间 "), __props.showSider && __props.showCollapse ? (openBlock(), createBlock(unref(ElButton), {
1082
+ }, 8 /* PROPS */, ["width", "class"])) : createCommentVNode("v-if", true), __props.showSider && __props.showCollapse ? (openBlock(), createBlock(unref(ElButton), {
1187
1083
  key: 1,
1188
1084
  icon: collapsed.value ? unref(ArrowRight) : unref(ArrowLeft),
1189
1085
  "class": "pro-layout__sider-collapse-btn",
1190
1086
  style: normalizeStyle(collapseBtnStyle.value),
1191
1087
  onClick: toggleCollapse
1192
- }, null, 8 /* PROPS */, ["icon", "style"])) : createCommentVNode("v-if", true), createCommentVNode(" 右侧内容区 "), createVNode(unref(ElContainer), {
1088
+ }, null, 8 /* PROPS */, ["icon", "style"])) : createCommentVNode("v-if", true), createVNode(unref(ElContainer), {
1193
1089
  "class": "pro-layout__content-wrapper"
1194
1090
  }, {
1195
1091
  "default": withCtx(function () {
1196
- return [createCommentVNode(" 右上:TagsView 区域 "), __props.showTagsView ? (openBlock(), createElementBlock("div", {
1092
+ return [__props.showTagsView ? (openBlock(), createElementBlock("div", {
1197
1093
  key: 0,
1198
1094
  "class": "pro-layout__tags-view",
1199
1095
  style: normalizeStyle({
@@ -1208,25 +1104,27 @@ var script = {
1208
1104
  onSelect: handleTagMenuSelect
1209
1105
  }, {
1210
1106
  "default": withCtx(function () {
1211
- return [(openBlock(true), createElementBlock(Fragment, null, renderList(visitedTags.value, function (tag) {
1107
+ return [createVNode(unref(ElMenuItem), {
1108
+ index: tagsViewHomePath.value,
1109
+ "class": "pro-layout__tag-item pro-layout__tag-item--affix"
1110
+ }, {
1111
+ title: withCtx(function () {
1112
+ return [createElementVNode("span", _hoisted_23, [createVNode(unref(ElIcon), null, {
1113
+ "default": withCtx(function () {
1114
+ return [(openBlock(), createBlock(resolveDynamicComponent(unref(HouseIcon))))];
1115
+ }),
1116
+ _: 1 /* STABLE */
1117
+ })])];
1118
+ }),
1119
+ _: 1 /* STABLE */
1120
+ }, 8 /* PROPS */, ["index"]), (openBlock(true), createElementBlock(Fragment, null, renderList(otherVisitedTags.value, function (tag) {
1212
1121
  return openBlock(), createBlock(unref(ElMenuItem), {
1213
1122
  key: tag.path,
1214
1123
  index: tag.path,
1215
1124
  "class": "pro-layout__tag-item"
1216
1125
  }, {
1217
1126
  title: withCtx(function () {
1218
- return [createElementVNode("span", _hoisted_23, toDisplayString(tag.title), 1 /* TEXT */), createElementVNode("div", _hoisted_24, [createVNode(unref(ElIcon), {
1219
- "class": "pro-layout__tag-icon",
1220
- onClick: withModifiers(function ($event) {
1221
- return handleTagRefresh(tag);
1222
- }, ["stop"])
1223
- }, {
1224
- "default": withCtx(function () {
1225
- return [(openBlock(), createBlock(resolveDynamicComponent(unref(RefreshRightIcon))))];
1226
- }),
1227
- _: 1 /* STABLE */
1228
- }, 8 /* PROPS */, ["onClick"]), visitedTags.value.length > 1 ? (openBlock(), createBlock(unref(ElIcon), {
1229
- key: 0,
1127
+ return [createElementVNode("span", _hoisted_24, toDisplayString(tag.title), 1 /* TEXT */), createElementVNode("div", _hoisted_25, [createVNode(unref(ElIcon), {
1230
1128
  "class": "pro-layout__tag-icon",
1231
1129
  onClick: withModifiers(function ($event) {
1232
1130
  return handleTagClose(tag);
@@ -1236,21 +1134,21 @@ var script = {
1236
1134
  return [(openBlock(), createBlock(resolveDynamicComponent(unref(CloseIcon))))];
1237
1135
  }),
1238
1136
  _: 1 /* STABLE */
1239
- }, 8 /* PROPS */, ["onClick"])) : createCommentVNode("v-if", true)])];
1137
+ }, 8 /* PROPS */, ["onClick"])])];
1240
1138
  }),
1241
1139
  _: 2 /* DYNAMIC */
1242
1140
  }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["index"]);
1243
1141
  }), 128 /* KEYED_FRAGMENT */))];
1244
1142
  }),
1245
1143
  _: 1 /* STABLE */
1246
- }, 8 /* PROPS */, ["default-active"]))], 4 /* STYLE */)) : createCommentVNode("v-if", true), createCommentVNode(" 右下:Contain 区域 "), createVNode(unref(ElMain), {
1144
+ }, 8 /* PROPS */, ["default-active"]))], 4 /* STYLE */)) : createCommentVNode("v-if", true), createVNode(unref(ElMain), {
1247
1145
  "class": "pro-layout__content"
1248
1146
  }, {
1249
1147
  "default": withCtx(function () {
1250
1148
  return [renderSlot(_ctx.$slots, "default")];
1251
1149
  }),
1252
1150
  _: 3 /* FORWARDED */
1253
- }), createCommentVNode(" 页脚 "), __props.showFooter ? (openBlock(), createBlock(unref(ElFooter), {
1151
+ }), __props.showFooter ? (openBlock(), createBlock(unref(ElFooter), {
1254
1152
  key: 1,
1255
1153
  height: __props.footerHeight,
1256
1154
  "class": "pro-layout__footer"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deppon/deppon-template",
3
- "version": "2.4.3",
3
+ "version": "2.4.5",
4
4
  "main": "es/index.js",
5
5
  "module": "es/index.js",
6
6
  "typings": "es/index.d.ts",
@@ -43,11 +43,11 @@
43
43
  "less": "^4.2.0"
44
44
  },
45
45
  "dependencies": {
46
- "@deppon/deppon-assets": "2.4.3",
47
- "@deppon/deppon-request": "2.4.3",
48
- "@deppon/deppon-router": "2.4.3",
49
- "@deppon/deppon-ui": "2.4.3",
50
- "@deppon/deppon-utils": "2.4.3",
46
+ "@deppon/deppon-assets": "2.4.5",
47
+ "@deppon/deppon-request": "2.4.5",
48
+ "@deppon/deppon-router": "2.4.5",
49
+ "@deppon/deppon-ui": "2.4.5",
50
+ "@deppon/deppon-utils": "2.4.5",
51
51
  "dayjs": "^1.11.10",
52
52
  "lodash-es": "^4.17.21",
53
53
  "mitt": "^3.0.1"