shared-layout-components 1.0.14 → 1.0.16
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.
- package/README.md +67 -16
- package/dist/index.esm.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/styles.css +20 -20
- package/package.json +76 -1
package/README.md
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
- 💾 **状态持久化** - 基于 Pinia 的标签页状态管理,支持刷新保持
|
|
10
10
|
- 🎨 **高度可定制** - 支持插槽自定义各区域内容
|
|
11
11
|
- 📦 **按需引入** - 支持 UMD 和 ES Module 两种格式
|
|
12
|
+
- 🔄 **对等依赖** - 通过函数参数接收宿主应用的依赖实例,避免重复打包
|
|
12
13
|
|
|
13
14
|
## 组件列表
|
|
14
15
|
|
|
@@ -25,21 +26,32 @@
|
|
|
25
26
|
npm install shared-layout-components
|
|
26
27
|
```
|
|
27
28
|
|
|
28
|
-
##
|
|
29
|
+
## 前置依赖(对等依赖)
|
|
29
30
|
|
|
30
|
-
|
|
31
|
+
本库使用**对等依赖(peer dependencies)**方式管理依赖,需要在宿主应用中安装以下依赖:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install vue@^3.3.4 vue-router@^4.0.0 pinia@^3.0.0 ant-design-vue@^4.2.6 @ant-design/icons-vue@^7.0.0
|
|
35
|
+
```
|
|
31
36
|
|
|
32
37
|
```json
|
|
33
38
|
{
|
|
34
39
|
"vue": "^3.3.4",
|
|
35
40
|
"vue-router": "^4.0.0",
|
|
36
|
-
"ant-design-vue": "^4.2.6",
|
|
37
|
-
"@ant-design/icons-vue": "^7.0.0",
|
|
38
41
|
"pinia": "^3.0.0",
|
|
39
|
-
"
|
|
42
|
+
"ant-design-vue": "^4.2.6",
|
|
43
|
+
"@ant-design/icons-vue": "^7.0.0"
|
|
40
44
|
}
|
|
41
45
|
```
|
|
42
46
|
|
|
47
|
+
### 可选依赖
|
|
48
|
+
|
|
49
|
+
| 依赖 | 说明 |
|
|
50
|
+
|------|------|
|
|
51
|
+
| `pinia-plugin-persistedstate` | 标签页状态持久化,不传则状态在页面刷新后丢失 |
|
|
52
|
+
|
|
53
|
+
**说明**:本库不会将依赖打包到构建产物中,而是通过函数参数从宿主应用接收实例,避免版本冲突和重复打包。
|
|
54
|
+
|
|
43
55
|
## 快速开始
|
|
44
56
|
|
|
45
57
|
### 1. 定义路由配置
|
|
@@ -75,23 +87,47 @@ import Antd from 'ant-design-vue';
|
|
|
75
87
|
import 'ant-design-vue/dist/reset.css';
|
|
76
88
|
import App from './App.vue';
|
|
77
89
|
import { routes } from './router';
|
|
78
|
-
|
|
90
|
+
|
|
91
|
+
// 导入对等依赖模块
|
|
92
|
+
import * as VueRouter from 'vue-router';
|
|
93
|
+
import * as pinia from 'pinia';
|
|
94
|
+
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
|
|
95
|
+
|
|
96
|
+
// 导入组件库
|
|
97
|
+
import { createSharedLayout } from 'shared-layout-components';
|
|
79
98
|
|
|
80
99
|
const app = createApp(App);
|
|
81
100
|
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
app.use(
|
|
101
|
+
// 创建并安装 Pinia(宿主应用自行管理)
|
|
102
|
+
const piniaInstance = pinia.createPinia();
|
|
103
|
+
piniaInstance.use(piniaPluginPersistedstate);
|
|
104
|
+
app.use(piniaInstance);
|
|
105
|
+
|
|
106
|
+
// 创建并安装 Vue Router(宿主应用自行管理)
|
|
107
|
+
const router = VueRouter.createRouter({
|
|
108
|
+
history: VueRouter.createWebHistory(),
|
|
109
|
+
routes
|
|
110
|
+
});
|
|
111
|
+
app.use(router);
|
|
112
|
+
|
|
113
|
+
// 使用组件库,传入宿主应用的依赖实例
|
|
114
|
+
const sharedLayout = createSharedLayout({
|
|
115
|
+
pinia, // 传入 pinia 模块
|
|
116
|
+
piniaPluginPersistedstate, // 传入持久化插件
|
|
117
|
+
router, // 传入已创建的路由实例
|
|
118
|
+
vueRouter: VueRouter // 传入 vue-router 模块
|
|
119
|
+
});
|
|
120
|
+
app.use(sharedLayout);
|
|
86
121
|
|
|
122
|
+
app.use(Antd);
|
|
87
123
|
app.mount('#app');
|
|
88
124
|
```
|
|
89
125
|
|
|
90
126
|
**说明**:
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
127
|
+
- 宿主应用需要自行创建并安装 router 和 pinia 实例
|
|
128
|
+
- 将依赖模块通过参数传递给组件库
|
|
129
|
+
- 组件库通过注入机制将依赖提供给内部组件使用
|
|
130
|
+
- 这种方式避免了依赖重复打包和版本冲突
|
|
95
131
|
|
|
96
132
|
### 3. 使用 PageLayout 组件
|
|
97
133
|
|
|
@@ -141,6 +177,19 @@ const menuData = ref([
|
|
|
141
177
|
|
|
142
178
|
## API
|
|
143
179
|
|
|
180
|
+
### createSharedLayout(options)
|
|
181
|
+
|
|
182
|
+
创建组件库插件,需要在宿主应用中调用。
|
|
183
|
+
|
|
184
|
+
| 参数 | 说明 | 类型 | 必需 |
|
|
185
|
+
| --- | --- | --- | --- |
|
|
186
|
+
| pinia | Pinia 模块(`import * as pinia from 'pinia'`) | `Object` | 是 |
|
|
187
|
+
| piniaPluginPersistedstate | Pinia 持久化插件 | `Object` | 否 |
|
|
188
|
+
| router | 已创建的 Vue Router 实例 | `Object` | 否 |
|
|
189
|
+
| vueRouter | Vue Router 模块(`import * as VueRouter from 'vue-router'`) | `Object` | 否 |
|
|
190
|
+
| routes | 路由配置数组(如未传入 router 则需要) | `Array` | 否 |
|
|
191
|
+
| routerOptions | 路由选项 | `Object` | 否 |
|
|
192
|
+
|
|
144
193
|
### PageLayout Props
|
|
145
194
|
|
|
146
195
|
| 参数 | 说明 | 类型 | 默认值 |
|
|
@@ -227,11 +276,12 @@ const tab = {
|
|
|
227
276
|
|
|
228
277
|
## 状态管理
|
|
229
278
|
|
|
230
|
-
组件内部使用 Pinia 管理标签页状态,通过 `
|
|
279
|
+
组件内部使用 Pinia 管理标签页状态,通过 `getStores` 可访问:
|
|
231
280
|
|
|
232
281
|
```js
|
|
233
|
-
import {
|
|
282
|
+
import { getStores } from 'shared-layout-components';
|
|
234
283
|
|
|
284
|
+
const { useTabsStore } = getStores();
|
|
235
285
|
const tabsStore = useTabsStore();
|
|
236
286
|
|
|
237
287
|
// 获取当前标签页列表
|
|
@@ -261,6 +311,7 @@ npm run build
|
|
|
261
311
|
|
|
262
312
|
```bash
|
|
263
313
|
# 构建并发布
|
|
314
|
+
npm run prepublishOnly
|
|
264
315
|
npm publish
|
|
265
316
|
```
|
|
266
317
|
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createPinia as e,defineStore as t}from"pinia";import{default as n}from"pinia-plugin-persistedstate";import{Fragment as a,computed as r,createBlock as u,createCommentVNode as i,createElementBlock as o,createElementVNode as l,createVNode as c,normalizeClass as s,openBlock as f,ref as d,renderList as b,renderSlot as v,resolveComponent as y,toDisplayString as m,unref as p,watch as h,withCtx as A,withModifiers as g}from"vue";import{EnvironmentOutlined as T,LeftOutlined as k,RightOutlined as w}from"@ant-design/icons-vue";import{createRouter as S,createWebHistory as C}from"vue-router";var D={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}}},E={};function O(e){var t=E[e];if(void 0!==t)return t.exports;var n=E[e]={exports:{}};return D[e](n,n.exports,O),n.exports}function K(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=B(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,i=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw u}}}}function B(e,t){if(e){if("string"==typeof e)return L(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(e,t):void 0}}function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}O.d=(e,t)=>{for(var n in t)O.o(t,n)&&!O.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},O.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var P={class:"system-title"},x={class:"menu-wrapper"};const R={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,a=t.emit,i=e,b=a,v=(r(function(){return i.systemTitle}),d(i.collapsed)),A=d([]),g=d([]);h(function(){return i.collapsed},function(e){v.value=e}),h(v,function(e){b("update:collapsed",e)}),h(function(){return i.activeKey},function(e){if(e){A.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=K(e);try{for(u.s();!(a=u.n()).done;){var i=a.value;if(i.key===n)return r;if(i.children){var o=t(i.children,n,i.key);if(null!==o)return o}}}catch(e){u.e(e)}finally{u.f()}return null},n=i.menuData.length>0?i.menuData:T,a=t(n,e);a&&!g.value.includes(a)&&(g.value=[].concat(function(e){if(Array.isArray(e))return L(e)}(r=g.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||B(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var r},{immediate:!0});var T=[],S=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=S(e.children)),t})},C=r(function(){var e=i.menuData.length>0?i.menuData:T;return S(e)}),D=function(){v.value=!v.value},E=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=K(e);try{for(r.s();!(a=r.n()).done;){var u=a.value;if(u.key===t)return u;if(u.children){var i=n(u.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),a=i.menuData.length>0?i.menuData:T,r=n(a,t);r&&(b("menu-click",r),b("update:activeKey",t))},O=function(e){g.value=e};return h(A,function(e){if(e.length>0){var t=e[0];b("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:D,expandMenu:function(e){g.value.includes(e)||g.value.push(e)},collapseMenu:function(e){var t=g.value.indexOf(e);t>-1&&g.value.splice(t,1)}}),function(e,t){var n=y("a-menu");return f(),o("div",{class:s(["sidebar",{collapsed:v.value}])},[l("div",P,[l("h1",null,m(i.systemTitle),1)]),l("div",x,[c(n,{selectedKeys:A.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return A.value=e}),openKeys:g.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return g.value=e}),mode:"inline","inline-collapsed":v.value,items:C.value,onClick:E,onOpenChange:O},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),l("div",{class:"collapse-btn",onClick:D},[v.value?(f(),u(p(w),{key:1})):(f(),u(p(k),{key:0}))])],2)}}};var V=O(262);const I=(0,V.A)(R,[["__scopeId","data-v-3166c85e"]]);var U={class:"tabs-wrapper"},j={class:"tabs-container"},M=["onClick"],N={class:"tab-title"},J=["onClick"];const Z=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,u=e,c=n,v=d(u.activeTab),y=[],p=r(function(){return u.tabs.length>0?u.tabs:y});return h(function(){return u.activeTab},function(e){e&&e!==v.value&&(v.value=e)},{immediate:!0}),h(p,function(e){e.length>0&&!v.value&&(v.value=e[0].key,c("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return f(),o("div",U,[l("div",j,[(f(!0),o(a,null,b(p.value,function(e){return f(),o("div",{key:e.key,class:s(["tab-item",{active:v.value===e.key}]),onClick:function(t){return function(e){v.value=e.key,c("update:activeTab",e.key),c("tab-click",e)}(e)}},[l("span",N,m(e.title),1),!1!==e.closable&&p.value.length>1?(f(),o("span",{key:0,class:"tab-close",onClick:g(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,J)):i("",!0)],10,M)}),128))])])}}}),F=(0,V.A)(Z,[["__scopeId","data-v-26cdabbe"]]);var W={class:"breadcrumb-wrapper"},z={class:"breadcrumb-content"},Q={key:0,class:"breadcrumb-current"},Y=["onClick"],X={class:"breadcrumb-extra"};const q=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,i=e,s=n,d=r(function(){return i.items.length>0?i.items:[]});return function(e,t){var n=y("a-breadcrumb-item"),r=y("a-breadcrumb");return f(),o("div",W,[l("div",z,[c(p(T),{class:"breadcrumb-icon"}),c(r,null,{default:A(function(){return[(f(!0),o(a,null,b(d.value,function(e,t){return f(),u(n,{key:t},{default:A(function(){return[t===d.value.length-1?(f(),o("span",Q,m(e.title),1)):(f(),o("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},m(e.title),9,Y))]}),_:2},1024)}),128))]}),_:1})]),l("div",X,[v(e.$slots,"default")])])}}}),G=(0,V.A)(q,[["__scopeId","data-v-06ed9d84"]]);var H=t("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),this.currentTab=e.key},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function ee(e,t,n){return(t=function(e){var t=function(e){if("object"!=_(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var te=null,ne=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return te=S(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach(function(t){ee(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:C(t.basePath||""),routes:e},t)),te},ae=function(){return te},re=function(){return te?te.currentRoute:null};function ue(e){return function(e){if(Array.isArray(e))return le(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||oe(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ie(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=oe(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u,i=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,u=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw u}}}}function oe(e,t){if(e){if("string"==typeof e)return le(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?le(e,t):void 0}}function le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ce={key:1,class:"page-layout--breadcrumb"},se={class:"page-layout--content"};const fe=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,a=t.emit,s=e,b=a,m=ae(),p=re(),g=null,T=function(){return g||(g=H()),g},k=d(!1),w=r({get:function(){return T().currentTab},set:function(e){T().currentTab=e}}),S=r(function(){return T().tabs});h(function(){return s.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return T().addTab(e)})},{immediate:!0,deep:!0});var C=r(function(){return T().currentTabData}),D=function(e,t){var n,a=ie(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var u=D(r.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null},E=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=ie(e);try{for(r.s();!(n=r.n()).done;){var u=n.value;if(u.key===t)return[].concat(ue(a),[{title:u.title||u.label,path:u.path,key:u.key}]);if(u.children&&u.children.length>0){var i=E(u.children,t,[].concat(ue(a),[{title:u.title||u.label,path:u.path,key:u.key}]));if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null},O=function(e,t){var n,a=ie(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var u=O(r.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null};h(function(){var e;return null==p||null===(e=p.value)||void 0===e?void 0:e.path},function(e){if(s.enableRouterSync&&e&&"/"!==e){var t=D(s.menuData,e);t&&V(t)}},{immediate:!0});var K=r(function(){if(w.value===s.homeBreadcrumb.key)return[s.homeBreadcrumb];if(s.menuData&&s.menuData.length>0){var e=E(s.menuData,w.value);if(e)return e}var t=S.value.find(function(e){return e.key===w.value});return t?[s.homeBreadcrumb,{title:t.title,key:t.key}]:[s.homeBreadcrumb]}),B=function(e){b("menu-click",e),s.autoAddTab&&(T().addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),b("update:activeTab",e.key)),console.log("router",m),console.log("item.path",e.path),s.enableRouterSync&&m&&e.path&&m.push(e.path)},L=function(e){if(T().setCurrentTab(e),b("update:activeTab",e),b("tab-change",e),s.enableRouterSync&&m){var t=S.value.find(function(t){return t.key===e});console.log("tab",t),null!=t&&t.path&&m.push(t.path)}},P=function(e){b("tab-click",e)},x=function(e){if(T().removeTab(e.key),b("update:activeTab",w.value),b("tab-close",e),s.enableRouterSync&&m){var t=T().currentTabData;null!=t&&t.path&&m.push(t.path)}},R=function(e){b("breadcrumb-click",e)},V=function(e){var t=O(s.menuData,e);t&&s.autoAddTab&&(T().addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),b("update:activeTab",e))};return n({addTab:function(e){T().addTab(e),b("update:activeTab",e.key)},removeTab:function(e){T().removeTab(e),b("update:activeTab",w.value)},getCurrentTab:function(){return T().currentTabData},addTabByMenuKey:V,findMenuItem:O,findMenuKeyByPath:D,tabsList:S,currentTab:w,currentTabData:C,breadcrumbList:K,clearTabs:function(){return T().clearTabs()}}),function(t,n){var a=y("a-layout-sider"),r=y("a-layout");return f(),u(r,{class:"page-layout"},{default:A(function(){return[c(a,{class:"page-layout--sider"},{default:A(function(){return[v(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),u(I,{key:0,collapsed:k.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return k.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:w.value,onMenuClick:B},null,8,["collapsed","menuData","systemTitle","activeKey"])):i("",!0)]})]}),_:3}),c(r,{class:"page-layout--main"},{default:A(function(){return[e.showTabs?v(t.$slots,"tabs",{key:0,tabs:S.value,activeTab:w.value},function(){return[c(F,{tabs:S.value,activeTab:w.value,"onUpdate:activeTab":L,onTabClick:P,onTabClose:x},null,8,["tabs","activeTab"])]}):i("",!0),e.showBreadcrumb?(f(),o("div",ce,[c(G,{items:K.value,onClick:R},{default:A(function(){return[v(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=l("div",{class:"breadcrumb-extra"},[l("div",{class:"extra-item"},[l("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),l("p",null,"AI助手")]),l("div",{class:"extra-item"},[l("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),l("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):i("",!0),l("div",se,[v(t.$slots,"default",{activeTab:w.value,tabData:C.value})])]}),_:3})]}),_:3})}}}),de=(0,V.A)(fe,[["__scopeId","data-v-2dca0f58"]]);var be=[de,I,G,F],ve=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!ve.installed){if(ve.installed=!0,!t.config.globalProperties.$pinia){var r=function(){var t=e();return t.use(n),t}();t.use(r)}if(a.routes&&a.routes.length>0){var u=ne(a.routes,a.routerOptions||{});t.use(u)}be.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&ve(window.Vue);const ye={install:ve,PageLayout:de,SidebarLayout:I,BreadCrumb:G,Tabs:F};export{G as BreadCrumb,de as PageLayout,I as SidebarLayout,F as Tabs,ne as createAppRouter,ye as default,re as getCurrentRoute,ae as getRouter,H as useTabsStore};
|
|
1
|
+
import{Fragment as e,computed as t,createBlock as n,createCommentVNode as a,createElementBlock as r,createElementVNode as o,createVNode as u,getCurrentInstance as i,inject as l,normalizeClass as c,onMounted as s,openBlock as f,ref as d,renderList as v,renderSlot as y,resolveComponent as b,toDisplayString as p,unref as m,watch as h,withCtx as g,withModifiers as A}from"vue";import{EnvironmentOutlined as T,LeftOutlined as k,RightOutlined as S}from"@ant-design/icons-vue";var w={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}}},D={};function P(e){var t=D[e];if(void 0!==t)return t.exports;var n=D[e]={exports:{}};return w[e](n,n.exports,P),n.exports}function C(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=L(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function L(e,t){if(e){if("string"==typeof e)return E(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}P.d=(e,t)=>{for(var n in t)P.o(t,n)&&!P.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},P.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var K={class:"system-title"},O={class:"menu-wrapper"};const R={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,a){var i=a.expose,l=a.emit,s=e,v=l,y=(t(function(){return s.systemTitle}),d(s.collapsed)),g=d([]),A=d([]);h(function(){return s.collapsed},function(e){y.value=e}),h(y,function(e){v("update:collapsed",e)}),h(function(){return s.activeKey},function(e){if(e){g.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=C(e);try{for(o.s();!(a=o.n()).done;){var u=a.value;if(u.key===n)return r;if(u.children){var i=t(u.children,n,u.key);if(null!==i)return i}}}catch(e){o.e(e)}finally{o.f()}return null},n=s.menuData.length>0?s.menuData:T,a=t(n,e);a&&!A.value.includes(a)&&(A.value=[].concat(function(e){if(Array.isArray(e))return E(e)}(r=A.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||L(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var r},{immediate:!0});var T=[],w=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=w(e.children)),t})},D=t(function(){var e=s.menuData.length>0?s.menuData:T;return w(e)}),P=function(){y.value=!y.value},R=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=C(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),a=s.menuData.length>0?s.menuData:T,r=n(a,t);r&&(v("menu-click",r),v("update:activeKey",t))},B=function(e){A.value=e};return h(g,function(e){if(e.length>0){var t=e[0];v("update:activeKey",t)}},{immediate:!1}),i({toggleCollapse:P,expandMenu:function(e){A.value.includes(e)||A.value.push(e)},collapseMenu:function(e){var t=A.value.indexOf(e);t>-1&&A.value.splice(t,1)}}),function(e,t){var a=b("a-menu");return f(),r("div",{class:c(["sidebar",{collapsed:y.value}])},[o("div",K,[o("h1",null,p(s.systemTitle),1)]),o("div",O,[u(a,{selectedKeys:g.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return g.value=e}),openKeys:A.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return A.value=e}),mode:"inline","inline-collapsed":y.value,items:D.value,onClick:R,onOpenChange:B},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),o("div",{class:"collapse-btn",onClick:P},[y.value?(f(),n(m(S),{key:1})):(f(),n(m(k),{key:0}))])],2)}}};var B=P(262);const I=(0,B.A)(R,[["__scopeId","data-v-3166c85e"]]);var x={class:"tabs-wrapper"},M={class:"tabs-container"},V=["onClick"],j={class:"tab-title"},U=["onClick"];const N=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(n,u){var i=u.emit,l=n,s=i,y=d(l.activeTab),b=[],m=t(function(){return l.tabs.length>0?l.tabs:b});return h(function(){return l.activeTab},function(e){e&&e!==y.value&&(y.value=e)},{immediate:!0}),h(m,function(e){e.length>0&&!y.value&&!l.activeTab&&(y.value=e[0].key,s("update:activeTab",e[0].key))},{immediate:!0}),function(t,n){return f(),r("div",x,[o("div",M,[(f(!0),r(e,null,v(m.value,function(e){return f(),r("div",{key:e.key,class:c(["tab-item",{active:y.value===e.key}]),onClick:function(t){return function(e){y.value=e.key,s("update:activeTab",e.key),s("tab-click",e)}(e)}},[o("span",j,p(e.title),1),!1!==e.closable&&m.value.length>1?(f(),r("span",{key:0,class:"tab-close",onClick:A(function(t){return function(e){s("tab-close",e)}(e)},["stop"])}," × ",8,U)):a("",!0)],10,V)}),128))])])}}}),J=(0,B.A)(N,[["__scopeId","data-v-dca4842a"]]);var Z={class:"breadcrumb-wrapper"},W={class:"breadcrumb-content"},F={key:0,class:"breadcrumb-current"},z=["onClick"],Q={class:"breadcrumb-extra"};const Y=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(a,i){var l=i.emit,c=a,s=l,d=t(function(){return c.items.length>0?c.items:[]});return function(t,a){var i=b("a-breadcrumb-item"),l=b("a-breadcrumb");return f(),r("div",Z,[o("div",W,[u(m(T),{class:"breadcrumb-icon"}),u(l,null,{default:g(function(){return[(f(!0),r(e,null,v(d.value,function(e,t){return f(),n(i,{key:t},{default:g(function(){return[t===d.value.length-1?(f(),r("span",F,p(e.title),1)):(f(),r("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},p(e.title),9,z))]}),_:2},1024)}),128))]}),_:1})]),o("div",Q,[y(t.$slots,"default")])])}}}),X=(0,B.A)(Y,[["__scopeId","data-v-06ed9d84"]]);var q={useTabsStore:Symbol("useTabsStore"),routerManager:Symbol("routerManager"),piniaInstance:Symbol("piniaInstance")};function G(e){return function(e){if(Array.isArray(e))return $(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||_(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=_(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function _(e,t){if(e){if("string"==typeof e)return $(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$(e,t):void 0}}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ee={key:1,class:"page-layout--breadcrumb"},te={class:"page-layout--content"};const ne=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,c){var v=c.expose,p=c.emit,m=e,A=p,T=l(q.useTabsStore),k=l(q.routerManager),S=l(q.piniaInstance);console.log("[PageLayout] inject 结果:",{useTabsStore:T,routerManager:k,piniaInstance:S}),console.log("[PageLayout] injectionKeys:",q),i();var w=null,D=function(){if(!w){if(!T)return console.error("[shared-layout-components/PageLayout] 未找到 useTabsStore,请确保通过 app.use() 正确安装组件库"),null;try{w=T()}catch(e){return console.error("[shared-layout-components/PageLayout] 获取 tabsStore 失败:",e),null}}return w},P=t(function(){var e;return(null==k||null===(e=k.getRouter)||void 0===e?void 0:e.call(k))||null}),C=t(function(){var e;return(null==k||null===(e=k.getCurrentRoute)||void 0===e?void 0:e.call(k))||null}),L=d(!1),E=t({get:function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTab)||""},set:function(e){var t=D();t&&(t.currentTab=e)}}),K=t(function(){var e;return(null===(e=D())||void 0===e?void 0:e.tabs)||[]});h(function(){return m.defaultTabs},function(e){if(e&&e.length>0){var t=D();t&&(e.forEach(function(e){t.addTab(e,!1)}),!t.currentTab&&e[0]&&t.setCurrentTab(e[0].key))}},{immediate:!0,deep:!0});var O=function(){var e;if(m.enableRouterSync){var t=D();if(t){var n=(null===(e=C.value)||void 0===e?void 0:e.value)||C.value,a=null==n?void 0:n.path;if(console.log("[PageLayout] syncRouteToTab - 当前路由:",a,"当前路由对象:",n),console.log("[PageLayout] 当前 tabs:",t.tabs,"currentTab:",t.currentTab),a){var r=t.tabs.find(function(e){return e.path===a});if(r)return console.log("[PageLayout] tab 已存在:",r),void(t.currentTab!==r.key&&t.setCurrentTab(r.key));if(m.autoAddTab&&m.menuData&&m.menuData.length>0){console.log("[PageLayout] 查找 menuKey,menuData:",m.menuData,"currentPath:",a);var o=B(m.menuData,a);console.log("[PageLayout] 查找到的 menuKey:",o),o&&F(o)}}else console.log("[PageLayout] 路由路径为空,跳过")}else console.error("[PageLayout] store 未初始化")}else console.log("[PageLayout] enableRouterSync 为 false,跳过")};h(function(){var e,t=(null===(e=C.value)||void 0===e?void 0:e.value)||C.value;return null==t?void 0:t.path},function(e,t){console.log("[PageLayout] 路由变化:",t,"->",e),e&&e!==t&&O()}),s(function(){console.log("[PageLayout] onMounted - 开始同步路由到 tab"),setTimeout(function(){O()},0)});var R=t(function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTabData)||null}),B=function(e,t){var n,a=H(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=B(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},x=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=H(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(G(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=x(o.children,t,[].concat(G(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},M=function(e,t){var n,a=H(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=M(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},V=t(function(){var e;if(E.value===m.homeBreadcrumb.key)return[m.homeBreadcrumb];if(E.value&&m.menuData&&m.menuData.length>0){var t=x(m.menuData,E.value);if(t)return t}var n=null==C||null===(e=C.value)||void 0===e?void 0:e.path;if(n&&"/"!==n&&m.menuData&&m.menuData.length>0){var a=B(m.menuData,n);if(a){var r=x(m.menuData,a);if(r)return r}}var o=K.value.find(function(e){return e.key===E.value});return o?[m.homeBreadcrumb,{title:o.title,key:o.key}]:[m.homeBreadcrumb]}),j=function(e){A("menu-click",e);var t=D();m.autoAddTab&&t&&(t.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),A("update:activeTab",e.key)),m.enableRouterSync&&P.value&&e.path&&P.value.push(e.path)},U=function(e){var t=D();if(t&&t.setCurrentTab(e),A("update:activeTab",e),A("tab-change",e),m.enableRouterSync&&P.value){var n=K.value.find(function(t){return t.key===e});null!=n&&n.path&&P.value.push(n.path)}},N=function(e){A("tab-click",e)},Z=function(e){var t=D();if(t&&t.removeTab(e.key),A("update:activeTab",E.value),A("tab-close",e),m.enableRouterSync&&P.value){var n,a=null===(n=D())||void 0===n?void 0:n.currentTabData;null!=a&&a.path&&P.value.push(a.path)}},W=function(e){A("breadcrumb-click",e)},F=function(e){var t=M(m.menuData,e),n=D();t&&m.autoAddTab&&n&&(n.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),A("update:activeTab",e))};return v({addTab:function(e){var t=D();t&&(t.addTab(e),A("update:activeTab",e.key))},removeTab:function(e){var t=D();t&&(t.removeTab(e),A("update:activeTab",E.value))},getCurrentTab:function(){var e;return(null===(e=D())||void 0===e?void 0:e.currentTabData)||null},addTabByMenuKey:F,findMenuItem:M,findMenuKeyByPath:B,tabsList:K,currentTab:E,currentTabData:R,breadcrumbList:V,clearTabs:function(){var e;return null===(e=D())||void 0===e?void 0:e.clearTabs()}}),function(t,i){var l=b("a-layout-sider"),c=b("a-layout");return f(),n(c,{class:"page-layout"},{default:g(function(){return[u(l,{class:"page-layout--sider"},{default:g(function(){return[y(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),n(I,{key:0,collapsed:L.value,"onUpdate:collapsed":i[0]||(i[0]=function(e){return L.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:E.value,onMenuClick:j},null,8,["collapsed","menuData","systemTitle","activeKey"])):a("",!0)]})]}),_:3}),u(c,{class:"page-layout--main"},{default:g(function(){return[e.showTabs?y(t.$slots,"tabs",{key:0,tabs:K.value,activeTab:E.value},function(){return[u(J,{tabs:K.value,activeTab:E.value,"onUpdate:activeTab":U,onTabClick:N,onTabClose:Z},null,8,["tabs","activeTab"])]}):a("",!0),e.showBreadcrumb?(f(),r("div",ee,[u(X,{items:V.value,onClick:W},{default:g(function(){return[y(t.$slots,"breadcrumbExtra",{},function(){return[i[1]||(i[1]=o("div",{class:"breadcrumb-extra"},[o("div",{class:"extra-item"},[o("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),o("p",null,"AI助手")]),o("div",{class:"extra-item"},[o("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),o("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):a("",!0),o("div",te,[y(t.$slots,"default",{activeTab:E.value,tabData:R.value})])]}),_:3})]}),_:3})}}}),ae=(0,B.A)(ne,[["__scopeId","data-v-1e044ec7"]]);var re=function(e,t){if(!e||!e.defineStore)throw new Error("[shared-layout-components] 请传入有效的 pinia 模块,需要包含 defineStore 方法");var n=e.defineStore,a=e.setActivePinia,r=n("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),t&&(this.currentTab=e.key)},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});return{useTabsStore:function(){return t&&a&&a(t),r.apply(void 0,arguments)},useTabsStoreRaw:r}};function oe(e){return oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},oe(e)}function ue(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function ie(e,t,n){return(t=function(e){var t=function(e){if("object"!=oe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=oe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==oe(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var le=null,ce=null,se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e&&(ce=e),t&&(le=t),{createRouter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!ce)throw new Error("[shared-layout-components] 请先传入 vue-router 模块或提供已有的路由实例");var n=ce,a=n.createRouter,r=n.createWebHistory;if(!a||!r)throw new Error("[shared-layout-components] 传入的 vue-router 模块无效,需要包含 createRouter 和 createWebHistory");return le=a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(n),!0).forEach(function(t){ie(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ue(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:r(t.basePath||""),routes:e},t))},getRouter:function(){return le},getCurrentRoute:function(){return le?le.currentRoute:null},push:function(e){le?le.push(e):console.warn("[shared-layout-components] 路由实例未创建")},replace:function(e){le?le.replace(e):console.warn("[shared-layout-components] 路由实例未创建")}}},fe=[ae,I,X,J],de=null,ve=null,ye=null,be=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{install:function(t){if(!this.installed){this.installed=!0;var n=e.pinia,a=e.piniaInstance,r=e.piniaPluginPersistedstate,o=e.router,u=e.vueRouter,i=e.routes,l=e.routerOptions,c=void 0===l?{}:l;if(!(ye=a))if(t.config.globalProperties.$pinia)ye=t.config.globalProperties.$pinia;else{if(!n)throw new Error("[shared-layout-components] 请传入 piniaInstance 或通过 app.use(pinia) 预先安装 pinia");var s=n.createPinia,f=n.setActivePinia;ye=s(),r&&r.default&&ye.use(r.default),t.use(ye),f&&f(ye)}if(!n)throw new Error("[shared-layout-components] 请传入 pinia 模块(包含 defineStore 等)以便创建 stores");if(de=re(n,ye),console.log("[shared-layout] stores 创建成功:",de),t.provide(q.useTabsStore,de.useTabsStore),t.provide(q.piniaInstance,ye),console.log("[shared-layout] provide 完成, injectionKeys:",q),o)ve=se(null,o);else if(u&&(ve=se(u),i&&i.length>0)){var d=ve.createRouter(i,c);t.use(d)}ve&&t.provide(q.routerManager,ve),fe.forEach(function(e){t.component(e.name,e)}),t.config.globalProperties.$sharedLayout={stores:de,routerManager:ve}}}}};"undefined"!=typeof window&&window.Vue&&console.warn("[shared-layout-components] 请使用 app.use() 方式安装组件库");const pe={install:function(e){be(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).install(e)},PageLayout:ae,SidebarLayout:I,BreadCrumb:X,Tabs:J};var me=function(){if(!de)throw new Error("[shared-layout-components] 请先调用 app.use() 安装组件库");return de},he=function(){return ve};export{X as BreadCrumb,ae as PageLayout,I as SidebarLayout,J as Tabs,se as createRouterManager,be as createSharedLayout,re as createStores,pe as default,he as getRouterManager,me as getStores,q as injectionKeys};
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue"),require("vue-router")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","pinia","pinia-plugin-persistedstate","vue","vue-router"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue"),require("vue-router")):e.SharedLayoutComponents=t(e.icons,e.pinia,e.piniaPluginPersistedstate,e.Vue,e.VueRouter)}(this,(e,t,n,r,a)=>(()=>{"use strict";var o={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},166(t){t.exports=e},144(e){e.exports=t},282(e){e.exports=n},594(e){e.exports=r},269(e){e.exports=a}},u={};function i(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={exports:{}};return o[e](n,n.exports,i),n.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var l={};i.d(l,{default:()=>_});var c=i(144),s=i(282),d=i.n(s),f=i(594),p=i(166);function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=b(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function b(e,t){if(e){if("string"==typeof e)return v(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y={class:"system-title"},h={class:"menu-wrapper"};const g={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,r=t.emit,a=e,o=r,u=((0,f.computed)(function(){return a.systemTitle}),(0,f.ref)(a.collapsed)),i=(0,f.ref)([]),l=(0,f.ref)([]);(0,f.watch)(function(){return a.collapsed},function(e){u.value=e}),(0,f.watch)(u,function(e){o("update:collapsed",e)}),(0,f.watch)(function(){return a.activeKey},function(e){if(e){i.value=[e];var t=function(e,n){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=m(e);try{for(o.s();!(r=o.n()).done;){var u=r.value;if(u.key===n)return a;if(u.children){var i=t(u.children,n,u.key);if(null!==i)return i}}}catch(e){o.e(e)}finally{o.f()}return null},n=a.menuData.length>0?a.menuData:c,r=t(n,e);r&&!l.value.includes(r)&&(l.value=[].concat(function(e){if(Array.isArray(e))return v(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||b(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[r]))}var o},{immediate:!0});var c=[],s=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=s(e.children)),t})},d=(0,f.computed)(function(){var e=a.menuData.length>0?a.menuData:c;return s(e)}),g=function(){u.value=!u.value},k=function(e){var t=e.key,n=(e.item,function(e,t){var r,a=m(e);try{for(a.s();!(r=a.n()).done;){var o=r.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null}),r=a.menuData.length>0?a.menuData:c,u=n(r,t);u&&(o("menu-click",u),o("update:activeKey",t))},A=function(e){l.value=e};return(0,f.watch)(i,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:g,expandMenu:function(e){l.value.includes(e)||l.value.push(e)},collapseMenu:function(e){var t=l.value.indexOf(e);t>-1&&l.value.splice(t,1)}}),function(e,t){var n=(0,f.resolveComponent)("a-menu");return(0,f.openBlock)(),(0,f.createElementBlock)("div",{class:(0,f.normalizeClass)(["sidebar",{collapsed:u.value}])},[(0,f.createElementVNode)("div",y,[(0,f.createElementVNode)("h1",null,(0,f.toDisplayString)(a.systemTitle),1)]),(0,f.createElementVNode)("div",h,[(0,f.createVNode)(n,{selectedKeys:i.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return i.value=e}),openKeys:l.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return l.value=e}),mode:"inline","inline-collapsed":u.value,items:d.value,onClick:k,onOpenChange:A},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,f.createElementVNode)("div",{class:"collapse-btn",onClick:g},[u.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(p.RightOutlined),{key:1})):((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(p.LeftOutlined),{key:0}))])],2)}}};var k=i(262);const A=(0,k.A)(g,[["__scopeId","data-v-3166c85e"]]);var T={class:"tabs-wrapper"},w={class:"tabs-container"},S=["onClick"],E={class:"tab-title"},B=["onClick"];const C=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,r=e,a=n,o=(0,f.ref)(r.activeTab),u=[],i=(0,f.computed)(function(){return r.tabs.length>0?r.tabs:u});return(0,f.watch)(function(){return r.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,f.watch)(i,function(e){e.length>0&&!o.value&&(o.value=e[0].key,a("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,f.openBlock)(),(0,f.createElementBlock)("div",T,[(0,f.createElementVNode)("div",w,[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(i.value,function(e){return(0,f.openBlock)(),(0,f.createElementBlock)("div",{key:e.key,class:(0,f.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,a("update:activeTab",e.key),a("tab-click",e)}(e)}},[(0,f.createElementVNode)("span",E,(0,f.toDisplayString)(e.title),1),!1!==e.closable&&i.value.length>1?((0,f.openBlock)(),(0,f.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,f.withModifiers)(function(t){return function(e){a("tab-close",e)}(e)},["stop"])}," × ",8,B)):(0,f.createCommentVNode)("",!0)],10,S)}),128))])])}}}),V=(0,k.A)(C,[["__scopeId","data-v-26cdabbe"]]);var D={class:"breadcrumb-wrapper"},x={class:"breadcrumb-content"},N={key:0,class:"breadcrumb-current"},O=["onClick"],L={class:"breadcrumb-extra"};const K=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,r=e,a=n,o=(0,f.computed)(function(){return r.items.length>0?r.items:[]});return function(e,t){var n=(0,f.resolveComponent)("a-breadcrumb-item"),r=(0,f.resolveComponent)("a-breadcrumb");return(0,f.openBlock)(),(0,f.createElementBlock)("div",D,[(0,f.createElementVNode)("div",x,[(0,f.createVNode)((0,f.unref)(p.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,f.createVNode)(r,null,{default:(0,f.withCtx)(function(){return[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(o.value,function(e,t){return(0,f.openBlock)(),(0,f.createBlock)(n,{key:t},{default:(0,f.withCtx)(function(){return[t===o.value.length-1?((0,f.openBlock)(),(0,f.createElementBlock)("span",N,(0,f.toDisplayString)(e.title),1)):((0,f.openBlock)(),(0,f.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){a("click",{item:e,index:t})}(e,t)}},(0,f.toDisplayString)(e.title),9,O))]}),_:2},1024)}),128))]}),_:1})]),(0,f.createElementVNode)("div",L,[(0,f.renderSlot)(e.$slots,"default")])])}}}),P=(0,k.A)(K,[["__scopeId","data-v-06ed9d84"]]);var R=(0,c.defineStore)("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),this.currentTab=e.key},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,r=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[r])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}}),j=i(269);function I(e){return I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},I(e)}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function M(e,t,n){return(t=function(e){var t=function(e){if("object"!=I(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=I(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==I(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var q=null;function J(e){return function(e){if(Array.isArray(e))return z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||F(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Z(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=F(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){i=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(i)throw o}}}}function F(e,t){if(e){if("string"==typeof e)return z(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?z(e,t):void 0}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var W={key:1,class:"page-layout--breadcrumb"},Q={class:"page-layout--content"};const Y=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,r=t.emit,a=e,o=r,u=q,i=q?q.currentRoute:null,l=null,c=function(){return l||(l=R()),l},s=(0,f.ref)(!1),d=(0,f.computed)({get:function(){return c().currentTab},set:function(e){c().currentTab=e}}),p=(0,f.computed)(function(){return c().tabs});(0,f.watch)(function(){return a.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return c().addTab(e)})},{immediate:!0,deep:!0});var m=(0,f.computed)(function(){return c().currentTabData}),b=function(e,t){var n,r=Z(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.path===t)return a.key;if(a.children&&a.children.length>0){var o=b(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null},v=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=Z(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;if(o.key===t)return[].concat(J(r),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=v(o.children,t,[].concat(J(r),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){a.e(e)}finally{a.f()}return null},y=function(e,t){var n,r=Z(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.key===t)return a;if(a.children&&a.children.length>0){var o=y(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null};(0,f.watch)(function(){var e;return null==i||null===(e=i.value)||void 0===e?void 0:e.path},function(e){if(a.enableRouterSync&&e&&"/"!==e){var t=b(a.menuData,e);t&&E(t)}},{immediate:!0});var h=(0,f.computed)(function(){if(d.value===a.homeBreadcrumb.key)return[a.homeBreadcrumb];if(a.menuData&&a.menuData.length>0){var e=v(a.menuData,d.value);if(e)return e}var t=p.value.find(function(e){return e.key===d.value});return t?[a.homeBreadcrumb,{title:t.title,key:t.key}]:[a.homeBreadcrumb]}),g=function(e){o("menu-click",e),a.autoAddTab&&(c().addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),console.log("router",u),console.log("item.path",e.path),a.enableRouterSync&&u&&e.path&&u.push(e.path)},k=function(e){if(c().setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),a.enableRouterSync&&u){var t=p.value.find(function(t){return t.key===e});console.log("tab",t),null!=t&&t.path&&u.push(t.path)}},T=function(e){o("tab-click",e)},w=function(e){if(c().removeTab(e.key),o("update:activeTab",d.value),o("tab-close",e),a.enableRouterSync&&u){var t=c().currentTabData;null!=t&&t.path&&u.push(t.path)}},S=function(e){o("breadcrumb-click",e)},E=function(e){var t=y(a.menuData,e);t&&a.autoAddTab&&(c().addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){c().addTab(e),o("update:activeTab",e.key)},removeTab:function(e){c().removeTab(e),o("update:activeTab",d.value)},getCurrentTab:function(){return c().currentTabData},addTabByMenuKey:E,findMenuItem:y,findMenuKeyByPath:b,tabsList:p,currentTab:d,currentTabData:m,breadcrumbList:h,clearTabs:function(){return c().clearTabs()}}),function(t,n){var r=(0,f.resolveComponent)("a-layout-sider"),a=(0,f.resolveComponent)("a-layout");return(0,f.openBlock)(),(0,f.createBlock)(a,{class:"page-layout"},{default:(0,f.withCtx)(function(){return[(0,f.createVNode)(r,{class:"page-layout--sider"},{default:(0,f.withCtx)(function(){return[(0,f.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,f.openBlock)(),(0,f.createBlock)(A,{key:0,collapsed:s.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return s.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:d.value,onMenuClick:g},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,f.createCommentVNode)("",!0)]})]}),_:3}),(0,f.createVNode)(a,{class:"page-layout--main"},{default:(0,f.withCtx)(function(){return[e.showTabs?(0,f.renderSlot)(t.$slots,"tabs",{key:0,tabs:p.value,activeTab:d.value},function(){return[(0,f.createVNode)(V,{tabs:p.value,activeTab:d.value,"onUpdate:activeTab":k,onTabClick:T,onTabClose:w},null,8,["tabs","activeTab"])]}):(0,f.createCommentVNode)("",!0),e.showBreadcrumb?((0,f.openBlock)(),(0,f.createElementBlock)("div",W,[(0,f.createVNode)(P,{items:h.value,onClick:S},{default:(0,f.withCtx)(function(){return[(0,f.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,f.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),(0,f.createElementVNode)("p",null,"AI助手")]),(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),(0,f.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,f.createCommentVNode)("",!0),(0,f.createElementVNode)("div",Q,[(0,f.renderSlot)(t.$slots,"default",{activeTab:d.value,tabData:m.value})])]}),_:3})]}),_:3})}}}),X=(0,k.A)(Y,[["__scopeId","data-v-2dca0f58"]]);var G=[X,A,P,V],H=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!H.installed){if(H.installed=!0,!e.config.globalProperties.$pinia){var n=function(){var e=(0,c.createPinia)();return e.use(d()),e}();e.use(n)}if(t.routes&&t.routes.length>0){var r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return q=(0,j.createRouter)(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach(function(t){M(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:(0,j.createWebHistory)(t.basePath||""),routes:e},t)),q}(t.routes,t.routerOptions||{});e.use(r)}G.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&H(window.Vue);const _={install:H,PageLayout:X,SidebarLayout:A,BreadCrumb:P,Tabs:V};return l.default})());
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@ant-design/icons-vue"),require("vue")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","vue"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("vue")):e.SharedLayoutComponents=t(e.icons,e.Vue)}(this,(e,t)=>(()=>{"use strict";var n={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,a]of t)n[e]=a;return n}},166(t){t.exports=e},594(e){e.exports=t}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var o=a[e]={exports:{}};return n[e](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};r.d(o,{default:()=>X});var u=r(594),l=r(166);function i(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=c(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw o}}}}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d={class:"system-title"},f={class:"menu-wrapper"};const v={__name:"SidebarLayout",props:{activeKey:{type:String,default:""},menuData:{type:Array,default:function(){return[]}},collapsed:{type:Boolean,default:!1},systemTitle:{type:String,default:"XXXXXX系统名称"}},emits:["menu-click","update:activeKey","update:collapsed"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,v=((0,u.computed)(function(){return r.systemTitle}),(0,u.ref)(r.collapsed)),p=(0,u.ref)([]),y=(0,u.ref)([]);(0,u.watch)(function(){return r.collapsed},function(e){v.value=e}),(0,u.watch)(v,function(e){o("update:collapsed",e)}),(0,u.watch)(function(){return r.activeKey},function(e){if(e){p.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=i(e);try{for(o.s();!(a=o.n()).done;){var u=a.value;if(u.key===n)return r;if(u.children){var l=t(u.children,n,u.key);if(null!==l)return l}}}catch(e){o.e(e)}finally{o.f()}return null},n=r.menuData.length>0?r.menuData:m,a=t(n,e);a&&!y.value.includes(a)&&(y.value=[].concat(function(e){if(Array.isArray(e))return s(e)}(o=y.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||c(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[a]))}var o},{immediate:!0});var m=[],b=function(e){return e.map(function(e){var t={key:e.key,label:e.label||e.title,title:e.title||e.label,path:e.path,external:e.external};return e.children&&e.children.length>0&&(t.children=b(e.children)),t})},h=(0,u.computed)(function(){var e=r.menuData.length>0?r.menuData:m;return b(e)}),g=function(){v.value=!v.value},k=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=i(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var u=n(o.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),a=r.menuData.length>0?r.menuData:m,u=n(a,t);u&&(o("menu-click",u),o("update:activeKey",t))},A=function(e){y.value=e};return(0,u.watch)(p,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:g,expandMenu:function(e){y.value.includes(e)||y.value.push(e)},collapseMenu:function(e){var t=y.value.indexOf(e);t>-1&&y.value.splice(t,1)}}),function(e,t){var n=(0,u.resolveComponent)("a-menu");return(0,u.openBlock)(),(0,u.createElementBlock)("div",{class:(0,u.normalizeClass)(["sidebar",{collapsed:v.value}])},[(0,u.createElementVNode)("div",d,[(0,u.createElementVNode)("h1",null,(0,u.toDisplayString)(r.systemTitle),1)]),(0,u.createElementVNode)("div",f,[(0,u.createVNode)(n,{selectedKeys:p.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return p.value=e}),openKeys:y.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return y.value=e}),mode:"inline","inline-collapsed":v.value,items:h.value,onClick:k,onOpenChange:A},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,u.createElementVNode)("div",{class:"collapse-btn",onClick:g},[v.value?((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(l.RightOutlined),{key:1})):((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(l.LeftOutlined),{key:0}))])],2)}}};var p=r(262);const y=(0,p.A)(v,[["__scopeId","data-v-3166c85e"]]);var m={class:"tabs-wrapper"},b={class:"tabs-container"},h=["onClick"],g={class:"tab-title"},k=["onClick"];const A=Object.assign({name:"Tabs"},{__name:"Tabs",props:{tabs:{type:Array,default:function(){return[]}},activeTab:{type:String,default:""}},emits:["update:activeTab","tab-click","tab-close"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,u.ref)(a.activeTab),l=[],i=(0,u.computed)(function(){return a.tabs.length>0?a.tabs:l});return(0,u.watch)(function(){return a.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,u.watch)(i,function(e){e.length>0&&!o.value&&!a.activeTab&&(o.value=e[0].key,r("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,u.openBlock)(),(0,u.createElementBlock)("div",m,[(0,u.createElementVNode)("div",b,[((0,u.openBlock)(!0),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(i.value,function(e){return(0,u.openBlock)(),(0,u.createElementBlock)("div",{key:e.key,class:(0,u.normalizeClass)(["tab-item",{active:o.value===e.key}]),onClick:function(t){return function(e){o.value=e.key,r("update:activeTab",e.key),r("tab-click",e)}(e)}},[(0,u.createElementVNode)("span",g,(0,u.toDisplayString)(e.title),1),!1!==e.closable&&i.value.length>1?((0,u.openBlock)(),(0,u.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,u.withModifiers)(function(t){return function(e){r("tab-close",e)}(e)},["stop"])}," × ",8,k)):(0,u.createCommentVNode)("",!0)],10,h)}),128))])])}}}),T=(0,p.A)(A,[["__scopeId","data-v-dca4842a"]]);var w={class:"breadcrumb-wrapper"},S={class:"breadcrumb-content"},E={key:0,class:"breadcrumb-current"},C=["onClick"],B={class:"breadcrumb-extra"};const D=Object.assign({name:"BreadCrumb"},{__name:"BreadCrumb",props:{items:{type:Array,default:function(){return[]}}},emits:["click"],setup:function(e,t){var n=t.emit,a=e,r=n,o=(0,u.computed)(function(){return a.items.length>0?a.items:[]});return function(e,t){var n=(0,u.resolveComponent)("a-breadcrumb-item"),a=(0,u.resolveComponent)("a-breadcrumb");return(0,u.openBlock)(),(0,u.createElementBlock)("div",w,[(0,u.createElementVNode)("div",S,[(0,u.createVNode)((0,u.unref)(l.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,u.createVNode)(a,null,{default:(0,u.withCtx)(function(){return[((0,u.openBlock)(!0),(0,u.createElementBlock)(u.Fragment,null,(0,u.renderList)(o.value,function(e,t){return(0,u.openBlock)(),(0,u.createBlock)(n,{key:t},{default:(0,u.withCtx)(function(){return[t===o.value.length-1?((0,u.openBlock)(),(0,u.createElementBlock)("span",E,(0,u.toDisplayString)(e.title),1)):((0,u.openBlock)(),(0,u.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){r("click",{item:e,index:t})}(e,t)}},(0,u.toDisplayString)(e.title),9,C))]}),_:2},1024)}),128))]}),_:1})]),(0,u.createElementVNode)("div",B,[(0,u.renderSlot)(e.$slots,"default")])])}}}),L=(0,p.A)(D,[["__scopeId","data-v-06ed9d84"]]);var P={useTabsStore:Symbol("useTabsStore"),routerManager:Symbol("routerManager"),piniaInstance:Symbol("piniaInstance")};function V(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||K(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=K(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw o}}}}function K(e,t){if(e){if("string"==typeof e)return N(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var O={key:1,class:"page-layout--breadcrumb"},R={class:"page-layout--content"};const I=Object.assign({name:"PageLayout"},{__name:"PageLayout",props:{showSidebar:{type:Boolean,default:!0},menuData:{type:Array,default:function(){return[]}},systemTitle:{type:String,default:"管理系统"},showTabs:{type:Boolean,default:!0},defaultTabs:{type:Array,default:function(){return[]}},showBreadcrumb:{type:Boolean,default:!0},homeBreadcrumb:{type:Object,default:function(){return{}}},autoAddTab:{type:Boolean,default:!0},enableRouterSync:{type:Boolean,default:!0}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var n=t.expose,a=t.emit,r=e,o=a,l=(0,u.inject)(P.useTabsStore),i=(0,u.inject)(P.routerManager),c=(0,u.inject)(P.piniaInstance);console.log("[PageLayout] inject 结果:",{useTabsStore:l,routerManager:i,piniaInstance:c}),console.log("[PageLayout] injectionKeys:",P),(0,u.getCurrentInstance)();var s=null,d=function(){if(!s){if(!l)return console.error("[shared-layout-components/PageLayout] 未找到 useTabsStore,请确保通过 app.use() 正确安装组件库"),null;try{s=l()}catch(e){return console.error("[shared-layout-components/PageLayout] 获取 tabsStore 失败:",e),null}}return s},f=(0,u.computed)(function(){var e;return(null==i||null===(e=i.getRouter)||void 0===e?void 0:e.call(i))||null}),v=(0,u.computed)(function(){var e;return(null==i||null===(e=i.getCurrentRoute)||void 0===e?void 0:e.call(i))||null}),p=(0,u.ref)(!1),m=(0,u.computed)({get:function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTab)||""},set:function(e){var t=d();t&&(t.currentTab=e)}}),b=(0,u.computed)(function(){var e;return(null===(e=d())||void 0===e?void 0:e.tabs)||[]});(0,u.watch)(function(){return r.defaultTabs},function(e){if(e&&e.length>0){var t=d();t&&(e.forEach(function(e){t.addTab(e,!1)}),!t.currentTab&&e[0]&&t.setCurrentTab(e[0].key))}},{immediate:!0,deep:!0});var h=function(){var e;if(r.enableRouterSync){var t=d();if(t){var n=(null===(e=v.value)||void 0===e?void 0:e.value)||v.value,a=null==n?void 0:n.path;if(console.log("[PageLayout] syncRouteToTab - 当前路由:",a,"当前路由对象:",n),console.log("[PageLayout] 当前 tabs:",t.tabs,"currentTab:",t.currentTab),a){var o=t.tabs.find(function(e){return e.path===a});if(o)return console.log("[PageLayout] tab 已存在:",o),void(t.currentTab!==o.key&&t.setCurrentTab(o.key));if(r.autoAddTab&&r.menuData&&r.menuData.length>0){console.log("[PageLayout] 查找 menuKey,menuData:",r.menuData,"currentPath:",a);var u=k(r.menuData,a);console.log("[PageLayout] 查找到的 menuKey:",u),u&&N(u)}}else console.log("[PageLayout] 路由路径为空,跳过")}else console.error("[PageLayout] store 未初始化")}else console.log("[PageLayout] enableRouterSync 为 false,跳过")};(0,u.watch)(function(){var e,t=(null===(e=v.value)||void 0===e?void 0:e.value)||v.value;return null==t?void 0:t.path},function(e,t){console.log("[PageLayout] 路由变化:",t,"->",e),e&&e!==t&&h()}),(0,u.onMounted)(function(){console.log("[PageLayout] onMounted - 开始同步路由到 tab"),setTimeout(function(){h()},0)});var g=(0,u.computed)(function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTabData)||null}),k=function(e,t){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.path===t)return r.key;if(r.children&&r.children.length>0){var o=k(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},A=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=x(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(V(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var u=A(o.children,t,[].concat(V(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},w=function(e,t){var n,a=x(e);try{for(a.s();!(n=a.n()).done;){var r=n.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var o=w(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},S=(0,u.computed)(function(){var e;if(m.value===r.homeBreadcrumb.key)return[r.homeBreadcrumb];if(m.value&&r.menuData&&r.menuData.length>0){var t=A(r.menuData,m.value);if(t)return t}var n=null==v||null===(e=v.value)||void 0===e?void 0:e.path;if(n&&"/"!==n&&r.menuData&&r.menuData.length>0){var a=k(r.menuData,n);if(a){var o=A(r.menuData,a);if(o)return o}}var u=b.value.find(function(e){return e.key===m.value});return u?[r.homeBreadcrumb,{title:u.title,key:u.key}]:[r.homeBreadcrumb]}),E=function(e){o("menu-click",e);var t=d();r.autoAddTab&&t&&(t.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),r.enableRouterSync&&f.value&&e.path&&f.value.push(e.path)},C=function(e){var t=d();if(t&&t.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),r.enableRouterSync&&f.value){var n=b.value.find(function(t){return t.key===e});null!=n&&n.path&&f.value.push(n.path)}},B=function(e){o("tab-click",e)},D=function(e){var t=d();if(t&&t.removeTab(e.key),o("update:activeTab",m.value),o("tab-close",e),r.enableRouterSync&&f.value){var n,a=null===(n=d())||void 0===n?void 0:n.currentTabData;null!=a&&a.path&&f.value.push(a.path)}},K=function(e){o("breadcrumb-click",e)},N=function(e){var t=w(r.menuData,e),n=d();t&&r.autoAddTab&&n&&(n.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){var t=d();t&&(t.addTab(e),o("update:activeTab",e.key))},removeTab:function(e){var t=d();t&&(t.removeTab(e),o("update:activeTab",m.value))},getCurrentTab:function(){var e;return(null===(e=d())||void 0===e?void 0:e.currentTabData)||null},addTabByMenuKey:N,findMenuItem:w,findMenuKeyByPath:k,tabsList:b,currentTab:m,currentTabData:g,breadcrumbList:S,clearTabs:function(){var e;return null===(e=d())||void 0===e?void 0:e.clearTabs()}}),function(t,n){var a=(0,u.resolveComponent)("a-layout-sider"),r=(0,u.resolveComponent)("a-layout");return(0,u.openBlock)(),(0,u.createBlock)(r,{class:"page-layout"},{default:(0,u.withCtx)(function(){return[(0,u.createVNode)(a,{class:"page-layout--sider"},{default:(0,u.withCtx)(function(){return[(0,u.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,u.openBlock)(),(0,u.createBlock)(y,{key:0,collapsed:p.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return p.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:m.value,onMenuClick:E},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,u.createCommentVNode)("",!0)]})]}),_:3}),(0,u.createVNode)(r,{class:"page-layout--main"},{default:(0,u.withCtx)(function(){return[e.showTabs?(0,u.renderSlot)(t.$slots,"tabs",{key:0,tabs:b.value,activeTab:m.value},function(){return[(0,u.createVNode)(T,{tabs:b.value,activeTab:m.value,"onUpdate:activeTab":C,onTabClick:B,onTabClose:D},null,8,["tabs","activeTab"])]}):(0,u.createCommentVNode)("",!0),e.showBreadcrumb?((0,u.openBlock)(),(0,u.createElementBlock)("div",O,[(0,u.createVNode)(L,{items:S.value,onClick:K},{default:(0,u.withCtx)(function(){return[(0,u.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,u.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,u.createElementVNode)("div",{class:"extra-item"},[(0,u.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAYCAYAAAAPtVbGAAAEzklEQVR4AZRWWyisaxj+zVqr1TrPXkU5tWcicjdCxMWeES6EbeLGqU3OSQslJZkZRcqFJRdOiUlySNi4EpmSIqfZKUoyU05xYY1DIcl+ni8zjWFZe0/z/t/7fd97Pv2/THrht7y8rK6qqmouLS21pKWl3ScmJgooKCi4z83NXa+vr+9ZX19XvyBCXD2r5EH4XGVl5dzMzEzZxsaGgtSvX7+2Ei4uLiSz2awaHR3Nrq2tnYMhcz09PYKGdK7wRElHR4eurq6OwtU+Pj42WG1oamrSDAwMuI2NjSkJxNvb2zVardb46tUrKwxRQ6FlcnJS56qA+0dKIFDX2dmp50VFRUVLX1+fsrCwUB8WFmbimTPwrKamJhtKNSEhIQbe6fHLy8t7osihhB6srq7qP3/+bIuPj9dkZGSUubm52cj8EoDGSsOQtxwvLy9pZ2dHPzg4WObMI5REREQopqam9CQqKSnJKS4uNjkT/Rc8Li6ul4pI29/f3zw9Pa0iThBKfH19ew4PDyVPT09DamrqOC9c4f7+Xk4L4bGewL0rDRUlJSW1UNbs7Gyz/V7W1dWl3t3dVUORcNt+4bxWV1ersrKyLCiAZoSGedOBL9mZxo6Xl5frg4KCbEtLS2pWKc9lJycnfxFBHn4aosvLy7GtrS15TEyMTaVSmUkPT0TJwiudwWBwJBs5snl7extZ5mtra6KHZGgmFZny8/ONXF0Bsc1eWFhQ0NPGxsbg0NDQFtLAe/nm5mYyPNNPTEzoEZ5snhPsId/e3v6Te9mbN29UAQEBEix41hMUhLCSJQsaq5+fH/mkm5ubLwiLCRGwYrVFR0c7+GGImUV0fHwsvJUhFNLV1ZVVcLo87F6QAXlhLyiOjo6+kOz29vY3KLWhcTXop2DgDhnAbSgi6ezsTE5aUV1EngMkV+QLJd4Lxm+gsTQ0NHzHKl1fX//OvKCaLLDcQpznzvDx40exlRF59+6dcEucPDygQA1BaicvaFXvp0+fRFg+fPjA/QP14wUK5Uw8Ro5oZpm7u7sVIZDs5WYnZ9Wx3h+8YChycJeDMcOwSaenpz9VsrKyokLSJRgiKlEGL/6mVnu5QZAESxSLi4vZ9OLr169GntkBs0mg9niLjcsDuRRhDgwM/IdXMpYbQiDNz89/g3BhHaZs8vv3700KhaL8mRFj8/f3N8EAhk3OlXsIE6GBDAUmsggzGlPkT8bSDA8PN7HZMHNEuaanp38fGhrStLa2CiIIcPxRAGbeoQk1xLlyD1woQWOyXxQwchxnDLMkqgveGGCRBOKytrY20aUOqf8TiYyMFIIRBREVsgsl9CYhIcHARA8PD4+NjIw8O5fI8CuIjY0dp8EHBwcqhE4oEkrIiKrhy8lwfn4uNxqNY3yB8fxXQEEIkQ7Dswy4CiGyeXh4mBl+Vhn5HUq4aW9v10O4KFG+wJKTky2YTT1gfhRC7OUseeRDx+nM2YXXQDOacj0zM/PH27dvRd/ZK/aREiqiR3t7e0pOW6wKCMoG8xy/VqiUgML4UVRUNAcD9Pv7+3KEyKTVao1KpdLM0saYF2GCJ39Q5hMlPMSXiLW7uzsYPSE+FsjM87u7OwWBeFRUlBWjvwVh0mA6a/i+Ry6D4ZUyJSUFOrVG9Bh7Tv4vAAAA//+JkNwrAAAABklEQVQDAEMWYUbEMf08AAAAAElFTkSuQmCC",alt:""}),(0,u.createElementVNode)("p",null,"AI助手")]),(0,u.createElementVNode)("div",{class:"extra-item"},[(0,u.createElementVNode)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADaUlEQVR4AYxWXVIaQRDunkSSt+AN8AZ4guAJoieIvkj5FHlJyUIVWKW7vumbBaYKPYF4AswJ5AZyA3lMljCd71tcXPnTqWlmdqb765/pnsHJitZsdvJBdNWoRe1eELUeg7BlpFrYeqphDeNhM7osrICQhQooRIA4Fz+J+aaYFdV0qKr3JFHtm1nJRM5jc4/g7VBmkaI5BfWz9o+RuQcCEMyp31qLcxunwf7maXV/K6UwKCuEd2BiF7y7UPRQDVuHs0rA87LEcHhvF7BsSGCCnVQP7pvNveEL18vsJCh3w6PyDkB2RGWo8IgYkmnYm3zRcmE4RAYeVhN4svP2LxV58VtQMiBG1pNEAeNn3pqASsDPqgcDzKe9Hl2VEOceD5jEeT26LE0ZMKFMqgSeNIiJZUQQvyP50DCRPKhCRixNO6zZ9uZ7iHOJZwIJxrzkzfW4N2XEhLJO/B6meWB2MIqjJgjvitpdhJhyMUuqcg6LhgjbBs+EMeeca6AEJMvP0CqyDZglprlDxmwLmpleY3jVm6ftopgUTLVL69JNzgFwg+/8UdSZqwOV8TH2JF6LD52ofuPHIutltDZQkaF4+S0zTZ37wiX3YZTnmKWPfz/3KadOvzoxK9KlLEM6Z3qeBuX1sLb/yrskrGI85EH4c7+f8qcj5UR0AC8LzkTmLJAVjeCxuJ4wdCKVpayoC+wVHH7e3bPgYv54YVhn0Jyo0JV3eYHUa9Bygoe1A9aNvNFwIyBWYCowpTCu7mbIOO2/BxzxZ930HSqYGZL/9+lPcTW6iKmvOB1X3uKrhy0YIuLN7lxulLuggKGaOa6isHpwzUJaxTPZ0+8cYVDXMaWYpnSpPnO/kCklhjDAo1OL2p10bdEYRJe7XhBK1WsWpCPTWMZ7LAxvbunDQT6SqS1NCGaZiGsoitM/V3OigJogfAwq4OHoTRjxlen0NKyWN3gXZZanU8qk9eFFjp8xJVFALlTsBdMP80TJ7E2J9aW9jus8BScG6iM5VwpMFfCD6Qf3KqA86DY4a91Ww19JRnA/SzwTAuNMeh7XuZok1z0xsnyvFHCDnozVb5rIDS65bZXxbfrIEIwUhO2HUS5+JDCTg0lCmazlxCLNKeAi4wfmXa9+A55UCCBmRYKRhAeNfxaC6yIX59b5TlCGsrP0HwAA//9BECN1AAAABklEQVQDAF7M7K1fqR9uAAAAAElFTkSuQmCC",alt:""}),(0,u.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,u.createCommentVNode)("",!0),(0,u.createElementVNode)("div",R,[(0,u.renderSlot)(t.$slots,"default",{activeTab:m.value,tabData:g.value})])]}),_:3})]}),_:3})}}}),j=(0,p.A)(I,[["__scopeId","data-v-1e044ec7"]]);function M(e){return M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},M(e)}function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function J(e,t,n){return(t=function(e){var t=function(e){if("object"!=M(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=M(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==M(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Z=null,F=null,W=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e&&(F=e),t&&(Z=t),{createRouter:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!F)throw new Error("[shared-layout-components] 请先传入 vue-router 模块或提供已有的路由实例");var n=F,a=n.createRouter,r=n.createWebHistory;if(!a||!r)throw new Error("[shared-layout-components] 传入的 vue-router 模块无效,需要包含 createRouter 和 createWebHistory");return Z=a(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach(function(t){J(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:r(t.basePath||""),routes:e},t))},getRouter:function(){return Z},getCurrentRoute:function(){return Z?Z.currentRoute:null},push:function(e){Z?Z.push(e):console.warn("[shared-layout-components] 路由实例未创建")},replace:function(e){Z?Z.replace(e):console.warn("[shared-layout-components] 路由实例未创建")}}},q=[j,y,L,T],z=null,Q=null,Y=null;"undefined"!=typeof window&&window.Vue&&console.warn("[shared-layout-components] 请使用 app.use() 方式安装组件库");const X={install:function(e){(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{install:function(t){if(!this.installed){this.installed=!0;var n=e.pinia,a=e.piniaInstance,r=e.piniaPluginPersistedstate,o=e.router,u=e.vueRouter,l=e.routes,i=e.routerOptions,c=void 0===i?{}:i;if(!(Y=a))if(t.config.globalProperties.$pinia)Y=t.config.globalProperties.$pinia;else{if(!n)throw new Error("[shared-layout-components] 请传入 piniaInstance 或通过 app.use(pinia) 预先安装 pinia");var s=n.createPinia,d=n.setActivePinia;Y=s(),r&&r.default&&Y.use(r.default),t.use(Y),d&&d(Y)}if(!n)throw new Error("[shared-layout-components] 请传入 pinia 模块(包含 defineStore 等)以便创建 stores");if(z=function(e,t){if(!e||!e.defineStore)throw new Error("[shared-layout-components] 请传入有效的 pinia 模块,需要包含 defineStore 方法");var n=e.defineStore,a=e.setActivePinia,r=n("pageLayoutTabs",{state:function(){return{tabs:[],currentTab:""}},getters:{currentTabData:function(e){return e.tabs.find(function(t){return t.key===e.currentTab})||null}},actions:{addTab:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.tabs.find(function(t){return t.key===e.key})||this.tabs.push(e),t&&(this.currentTab=e.key)},removeTab:function(e){var t=this.tabs.findIndex(function(t){return t.key===e});if(t>-1&&(this.tabs.splice(t,1),this.currentTab===e)){var n,a=Math.min(t,this.tabs.length-1);this.currentTab=(null===(n=this.tabs[a])||void 0===n?void 0:n.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});return{useTabsStore:function(){return t&&a&&a(t),r.apply(void 0,arguments)},useTabsStoreRaw:r}}(n,Y),console.log("[shared-layout] stores 创建成功:",z),t.provide(P.useTabsStore,z.useTabsStore),t.provide(P.piniaInstance,Y),console.log("[shared-layout] provide 完成, injectionKeys:",P),o)Q=W(null,o);else if(u&&(Q=W(u),l&&l.length>0)){var f=Q.createRouter(l,c);t.use(f)}Q&&t.provide(P.routerManager,Q),q.forEach(function(e){t.component(e.name,e)}),t.config.globalProperties.$sharedLayout={stores:z,routerManager:Q}}}}})(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).install(e)},PageLayout:j,SidebarLayout:y,BreadCrumb:L,Tabs:T};return o.default})());
|
package/dist/styles.css
CHANGED
|
@@ -123,28 +123,28 @@
|
|
|
123
123
|
color: #999;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
.tabs-wrapper[data-v-
|
|
126
|
+
.tabs-wrapper[data-v-dca4842a] {
|
|
127
127
|
height: 36px;
|
|
128
128
|
background: #FFFFFF;
|
|
129
129
|
border-radius: 0px 0px 0px 0px;
|
|
130
130
|
border-bottom: 1px solid #EFF3F8;
|
|
131
131
|
padding: 0 24px;
|
|
132
132
|
}
|
|
133
|
-
.tabs-wrapper .tabs-container[data-v-
|
|
133
|
+
.tabs-wrapper .tabs-container[data-v-dca4842a] {
|
|
134
134
|
display: flex;
|
|
135
135
|
align-items: center;
|
|
136
136
|
height: 36px;
|
|
137
137
|
overflow-x: auto;
|
|
138
138
|
white-space: nowrap;
|
|
139
139
|
}
|
|
140
|
-
.tabs-wrapper .tabs-container[data-v-
|
|
140
|
+
.tabs-wrapper .tabs-container[data-v-dca4842a]::-webkit-scrollbar {
|
|
141
141
|
height: 4px;
|
|
142
142
|
}
|
|
143
|
-
.tabs-wrapper .tabs-container[data-v-
|
|
143
|
+
.tabs-wrapper .tabs-container[data-v-dca4842a]::-webkit-scrollbar-thumb {
|
|
144
144
|
background: #C1C1C1;
|
|
145
145
|
border-radius: 2px;
|
|
146
146
|
}
|
|
147
|
-
.tabs-wrapper .tabs-container .tab-item[data-v-
|
|
147
|
+
.tabs-wrapper .tabs-container .tab-item[data-v-dca4842a] {
|
|
148
148
|
height: 26px;
|
|
149
149
|
font-size: 12px;
|
|
150
150
|
color: #999999;
|
|
@@ -159,27 +159,27 @@
|
|
|
159
159
|
margin-right: 8px;
|
|
160
160
|
padding: 0px 8px;
|
|
161
161
|
}
|
|
162
|
-
.tabs-wrapper .tabs-container .tab-item[data-v-
|
|
162
|
+
.tabs-wrapper .tabs-container .tab-item[data-v-dca4842a]:hover {
|
|
163
163
|
background: #E6F7FF;
|
|
164
164
|
}
|
|
165
|
-
.tabs-wrapper .tabs-container .tab-item.active[data-v-
|
|
165
|
+
.tabs-wrapper .tabs-container .tab-item.active[data-v-dca4842a] {
|
|
166
166
|
background: #FFF0E6;
|
|
167
167
|
border-radius: 2px 2px 2px 2px;
|
|
168
168
|
}
|
|
169
|
-
.tabs-wrapper .tabs-container .tab-item.active .tab-title[data-v-
|
|
169
|
+
.tabs-wrapper .tabs-container .tab-item.active .tab-title[data-v-dca4842a] {
|
|
170
170
|
color: #FE6A08;
|
|
171
171
|
}
|
|
172
|
-
.tabs-wrapper .tabs-container .tab-item.active .tab-close[data-v-
|
|
172
|
+
.tabs-wrapper .tabs-container .tab-item.active .tab-close[data-v-dca4842a] {
|
|
173
173
|
color: #FE6A08;
|
|
174
174
|
}
|
|
175
|
-
.tabs-wrapper .tabs-container .tab-item .tab-title[data-v-
|
|
175
|
+
.tabs-wrapper .tabs-container .tab-item .tab-title[data-v-dca4842a] {
|
|
176
176
|
font-size: 12px;
|
|
177
177
|
color: #999999;
|
|
178
178
|
overflow: hidden;
|
|
179
179
|
text-overflow: ellipsis;
|
|
180
180
|
white-space: nowrap;
|
|
181
181
|
}
|
|
182
|
-
.tabs-wrapper .tabs-container .tab-item .tab-close[data-v-
|
|
182
|
+
.tabs-wrapper .tabs-container .tab-item .tab-close[data-v-dca4842a] {
|
|
183
183
|
display: inline-flex;
|
|
184
184
|
align-items: center;
|
|
185
185
|
justify-content: center;
|
|
@@ -231,12 +231,12 @@
|
|
|
231
231
|
color: #B3B3B3;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
.page-layout[data-v-
|
|
234
|
+
.page-layout[data-v-1e044ec7] {
|
|
235
235
|
height: 100%;
|
|
236
236
|
background-color: #F5F7FA;
|
|
237
237
|
overflow: hidden;
|
|
238
238
|
}
|
|
239
|
-
.page-layout .page-layout--sider[data-v-
|
|
239
|
+
.page-layout .page-layout--sider[data-v-1e044ec7] {
|
|
240
240
|
width: auto !important;
|
|
241
241
|
max-width: none !important;
|
|
242
242
|
min-width: auto !important;
|
|
@@ -245,23 +245,23 @@
|
|
|
245
245
|
height: 100%;
|
|
246
246
|
overflow-y: auto;
|
|
247
247
|
}
|
|
248
|
-
.page-layout .page-layout--main[data-v-
|
|
248
|
+
.page-layout .page-layout--main[data-v-1e044ec7] {
|
|
249
249
|
display: flex;
|
|
250
250
|
flex-direction: column;
|
|
251
251
|
height: 100%;
|
|
252
252
|
background: #FFFFFF;
|
|
253
253
|
overflow: hidden;
|
|
254
254
|
}
|
|
255
|
-
.page-layout .page-layout--breadcrumb[data-v-
|
|
255
|
+
.page-layout .page-layout--breadcrumb[data-v-1e044ec7] {
|
|
256
256
|
flex-shrink: 0;
|
|
257
257
|
padding: 0 24px;
|
|
258
258
|
background: #fff;
|
|
259
259
|
}
|
|
260
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-
|
|
260
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra[data-v-1e044ec7] {
|
|
261
261
|
display: flex;
|
|
262
262
|
align-items: center;
|
|
263
263
|
}
|
|
264
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-
|
|
264
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item[data-v-1e044ec7] {
|
|
265
265
|
display: flex;
|
|
266
266
|
align-items: center;
|
|
267
267
|
font-size: 12px;
|
|
@@ -270,15 +270,15 @@
|
|
|
270
270
|
margin-left: 10px;
|
|
271
271
|
cursor: pointer;
|
|
272
272
|
}
|
|
273
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-
|
|
273
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item img[data-v-1e044ec7] {
|
|
274
274
|
width: 12px;
|
|
275
275
|
height: 12px;
|
|
276
276
|
margin-right: 3px;
|
|
277
277
|
}
|
|
278
|
-
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-
|
|
278
|
+
.page-layout .page-layout--breadcrumb .breadcrumb-extra .extra-item p[data-v-1e044ec7] {
|
|
279
279
|
margin-bottom: 0;
|
|
280
280
|
}
|
|
281
|
-
.page-layout .page-layout--content[data-v-
|
|
281
|
+
.page-layout .page-layout--content[data-v-1e044ec7] {
|
|
282
282
|
flex: 1;
|
|
283
283
|
overflow: auto;
|
|
284
284
|
padding: 0;
|
package/package.json
CHANGED
|
@@ -1 +1,76 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "shared-layout-components",
|
|
3
|
+
"version": "1.0.16",
|
|
4
|
+
"description": "基于 Vue3 和 Ant Design Vue 的公共布局组件库",
|
|
5
|
+
"main": "dist/index.umd.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
7
|
+
"unpkg": "dist/index.umd.js",
|
|
8
|
+
"jsdelivr": "dist/index.umd.js",
|
|
9
|
+
"types": "dist/types/index.d.ts",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"vue3",
|
|
12
|
+
"components",
|
|
13
|
+
"layout",
|
|
14
|
+
"ant-design-vue",
|
|
15
|
+
"sidebar",
|
|
16
|
+
"tabs",
|
|
17
|
+
"breadcrumb",
|
|
18
|
+
"admin"
|
|
19
|
+
],
|
|
20
|
+
"author": "",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
|
|
28
|
+
"dev": "webpack serve --config webpack.dev.config.js",
|
|
29
|
+
"lint": "eslint src/**/*.{js,vue}",
|
|
30
|
+
"prepublishOnly": "npx rimraf dist && npm run build"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"vue": "^3.3.4",
|
|
34
|
+
"vue-router": "^4.0.0",
|
|
35
|
+
"pinia": "^3.0.4",
|
|
36
|
+
"ant-design-vue": "^4.2.6",
|
|
37
|
+
"@ant-design/icons-vue": "^7.0.0",
|
|
38
|
+
"pinia-plugin-persistedstate": "^4.0.0"
|
|
39
|
+
},
|
|
40
|
+
"peerDependenciesMeta": {
|
|
41
|
+
"pinia-plugin-persistedstate": {
|
|
42
|
+
"optional": true
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@ant-design/icons-vue": "^7.0.0",
|
|
47
|
+
"@babel/core": "^7.23.5",
|
|
48
|
+
"@babel/preset-env": "^7.23.5",
|
|
49
|
+
"ant-design-vue": "^4.2.6",
|
|
50
|
+
"babel-loader": "^9.1.3",
|
|
51
|
+
"core-js": "^3.33.3",
|
|
52
|
+
"cross-env": "^7.0.3",
|
|
53
|
+
"css-loader": "^6.8.1",
|
|
54
|
+
"html-webpack-plugin": "^5.6.6",
|
|
55
|
+
"less": "^4.2.0",
|
|
56
|
+
"less-loader": "^11.1.4",
|
|
57
|
+
"mini-css-extract-plugin": "^2.7.6",
|
|
58
|
+
"pinia": "^3.0.4",
|
|
59
|
+
"pinia-plugin-persistedstate": "^4.7.1",
|
|
60
|
+
"style-loader": "^3.3.3",
|
|
61
|
+
"vue": "^3.3.4",
|
|
62
|
+
"vue-loader": "^17.3.1",
|
|
63
|
+
"vue-router": "^4.6.4",
|
|
64
|
+
"webpack": "^5.89.0",
|
|
65
|
+
"webpack-cli": "^5.1.4",
|
|
66
|
+
"webpack-dev-server": "^4.15.1"
|
|
67
|
+
},
|
|
68
|
+
"repository": {
|
|
69
|
+
"type": "git",
|
|
70
|
+
"url": ""
|
|
71
|
+
},
|
|
72
|
+
"bugs": {
|
|
73
|
+
"url": ""
|
|
74
|
+
},
|
|
75
|
+
"homepage": ""
|
|
76
|
+
}
|