shared-layout-components 1.0.8 → 1.0.10
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 +56 -46
- package/dist/index.esm.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/styles.css +9 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,6 +32,7 @@ npm install shared-layout-components
|
|
|
32
32
|
```json
|
|
33
33
|
{
|
|
34
34
|
"vue": "^3.3.4",
|
|
35
|
+
"vue-router": "^4.0.0",
|
|
35
36
|
"ant-design-vue": "^4.2.6",
|
|
36
37
|
"@ant-design/icons-vue": "^7.0.0",
|
|
37
38
|
"pinia": "^3.0.0",
|
|
@@ -41,33 +42,68 @@ npm install shared-layout-components
|
|
|
41
42
|
|
|
42
43
|
## 快速开始
|
|
43
44
|
|
|
44
|
-
###
|
|
45
|
+
### 1. 定义路由配置
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
// router.js
|
|
49
|
+
export const routes = [
|
|
50
|
+
{
|
|
51
|
+
path: '/',
|
|
52
|
+
redirect: '/dashboard'
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
path: '/dashboard',
|
|
56
|
+
name: 'Dashboard',
|
|
57
|
+
component: () => import('./pages/Dashboard.vue'),
|
|
58
|
+
meta: { title: '仪表盘' }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
path: '/user/list',
|
|
62
|
+
name: 'UserList',
|
|
63
|
+
component: () => import('./pages/UserList.vue'),
|
|
64
|
+
meta: { title: '用户列表' }
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. 初始化应用
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
// main.js
|
|
73
|
+
import { createApp } from 'vue';
|
|
74
|
+
import Antd from 'ant-design-vue';
|
|
75
|
+
import 'ant-design-vue/dist/reset.css';
|
|
76
|
+
import App from './App.vue';
|
|
77
|
+
import { routes } from './router';
|
|
78
|
+
import SharedLayoutComponents from 'shared-layout-components';
|
|
79
|
+
|
|
80
|
+
const app = createApp(App);
|
|
81
|
+
|
|
82
|
+
// 使用组件库,传入路由配置
|
|
83
|
+
// 组件库会自动创建 router 和 pinia 实例
|
|
84
|
+
app.use(SharedLayoutComponents, { routes });
|
|
85
|
+
app.use(Antd);
|
|
86
|
+
|
|
87
|
+
app.mount('#app');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 2. 使用 PageLayout 组件
|
|
45
91
|
|
|
46
92
|
```vue
|
|
47
93
|
<template>
|
|
48
94
|
<PageLayout
|
|
49
|
-
ref="pageLayoutRef"
|
|
50
95
|
:menuData="menuData"
|
|
51
96
|
:systemTitle="systemTitle"
|
|
52
|
-
@menu-click="handleMenuClick"
|
|
53
|
-
@tab-change="handleTabChange"
|
|
54
97
|
>
|
|
55
|
-
<!--主内容区域-->
|
|
56
98
|
<template #default="{ activeTab }">
|
|
57
99
|
<router-view></router-view>
|
|
58
100
|
</template>
|
|
59
|
-
<!-- 面包屑右侧区域内容 -->
|
|
60
|
-
<template #breadcrumbExtra></template>
|
|
61
101
|
</PageLayout>
|
|
62
102
|
</template>
|
|
63
103
|
|
|
64
104
|
<script setup>
|
|
65
|
-
import { ref
|
|
66
|
-
import {
|
|
67
|
-
|
|
68
|
-
const router = useRouter();
|
|
69
|
-
const route = useRoute();
|
|
70
|
-
const pageLayoutRef = ref(null);
|
|
105
|
+
import { ref } from 'vue';
|
|
106
|
+
import { PageLayout } from 'shared-layout-components';
|
|
71
107
|
|
|
72
108
|
const systemTitle = ref('管理系统');
|
|
73
109
|
|
|
@@ -88,42 +124,15 @@ const menuData = ref([
|
|
|
88
124
|
]
|
|
89
125
|
}
|
|
90
126
|
]);
|
|
91
|
-
|
|
92
|
-
// 监听路由变化,自动添加标签页
|
|
93
|
-
watchEffect(() => {
|
|
94
|
-
const path = route.path;
|
|
95
|
-
const layout = pageLayoutRef.value;
|
|
96
|
-
|
|
97
|
-
if (layout && path && path !== '/') {
|
|
98
|
-
const menuKey = findMenuKeyByPath(menuData.value, path);
|
|
99
|
-
if (menuKey) {
|
|
100
|
-
layout.addTabByMenuKey(menuKey);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
function findMenuKeyByPath(items, targetPath) {
|
|
106
|
-
for (const item of items) {
|
|
107
|
-
if (item.path === targetPath) return item.key;
|
|
108
|
-
if (item.children) {
|
|
109
|
-
const found = findMenuKeyByPath(item.children, targetPath);
|
|
110
|
-
if (found) return found;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const handleMenuClick = (item) => {
|
|
117
|
-
if (item.path) router.push(item.path);
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const handleTabChange = (key) => {
|
|
121
|
-
const tab = pageLayoutRef.value?.tabsList?.find(t => t.key === key);
|
|
122
|
-
if (tab?.path) router.push(tab.path);
|
|
123
|
-
};
|
|
124
127
|
</script>
|
|
125
128
|
```
|
|
126
129
|
|
|
130
|
+
组件会自动处理:
|
|
131
|
+
- 路由变化时自动添加对应标签页
|
|
132
|
+
- 点击菜单时自动跳转路由
|
|
133
|
+
- 切换标签页时自动跳转路由
|
|
134
|
+
- 关闭标签页时自动切换到相邻标签页并跳转
|
|
135
|
+
|
|
127
136
|
## API
|
|
128
137
|
|
|
129
138
|
### PageLayout Props
|
|
@@ -136,6 +145,7 @@ const handleTabChange = (key) => {
|
|
|
136
145
|
| showTabs | 是否显示标签页 | `Boolean` | `true` |
|
|
137
146
|
| showBreadcrumb | 是否显示面包屑 | `Boolean` | `true` |
|
|
138
147
|
| autoAddTab | 是否自动添加标签页 | `Boolean` | `true` |
|
|
148
|
+
| enableRouterSync | 是否启用路由联动 | `Boolean` | `true` |
|
|
139
149
|
| defaultTabs | 默认标签页列表 | `Array` | `[]` |
|
|
140
150
|
| homeBreadcrumb | 首页面包屑配置 | `Object` | `{}` |
|
|
141
151
|
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createPinia as e,defineStore as t}from"pinia";import{default as a}from"pinia-plugin-persistedstate";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as u,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 p,toDisplayString as m,toRef as y,unref as h,watch as T,withCtx as g,withModifiers as k}from"vue";import{EnvironmentOutlined as w,LeftOutlined as A,RightOutlined as S}from"@ant-design/icons-vue";var C={262(e,t){t.A=(e,t)=>{const a=e.__vccOpts||e;for(const[e,n]of t)a[e]=n;return a}}},_={};function x(e){var t=_[e];if(void 0!==t)return t.exports;var a=_[e]={exports:{}};return C[e](a,a.exports,x),a.exports}x.d=(e,t)=>{for(var a in t)x.o(t,a)&&!x.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},x.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;if("string"==typeof import.meta.url&&(e=import.meta.url),!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e})();const D=x.p+"images/icon-ai.14abd0.png",B=x.p+"images/icon-helper.e4bdca.png";function I(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=O(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},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 i,u=!0,o=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return u=e.done,e},e:function(e){o=!0,i=e},f:function(){try{u||null==a.return||a.return()}finally{if(o)throw i}}}}function O(e,t){if(e){if("string"==typeof e)return K(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?K(e,t):void 0}}function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var j={class:"system-title"},E={class:"menu-wrapper"};const $={__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 a=t.expose,n=t.emit,u=e,b=n,v=(r(function(){return u.systemTitle}),d(u.collapsed)),y=d([]),g=d([]);T(function(){return u.collapsed},function(e){v.value=e}),T(v,function(e){b("update:collapsed",e)}),T(function(){return u.activeKey},function(e){if(e){y.value=[e];var t=function(e,a){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=I(e);try{for(i.s();!(n=i.n()).done;){var u=n.value;if(u.key===a)return r;if(u.children){var o=t(u.children,a,u.key);if(null!==o)return o}}}catch(e){i.e(e)}finally{i.f()}return null},a=u.menuData.length>0?u.menuData:k,n=t(a,e);n&&!g.value.includes(n)&&(g.value=[].concat(function(e){if(Array.isArray(e))return K(e)}(r=g.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||O(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.")}(),[n]))}var r},{immediate:!0});var k=[],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})},C=r(function(){var e=u.menuData.length>0?u.menuData:k;return w(e)}),_=function(){v.value=!v.value},x=function(e){var t=e.key,a=(e.item,function(e,t){var n,r=I(e);try{for(r.s();!(n=r.n()).done;){var i=n.value;if(i.key===t)return i;if(i.children){var u=a(i.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null}),n=u.menuData.length>0?u.menuData:k,r=a(n,t);r&&(b("menu-click",r),b("update:activeKey",t))},D=function(e){g.value=e};return T(y,function(e){if(e.length>0){var t=e[0];b("update:activeKey",t)}},{immediate:!1}),a({toggleCollapse:_,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 a=p("a-menu");return f(),o("div",{class:s(["sidebar",{collapsed:v.value}])},[l("div",j,[l("h1",null,m(u.systemTitle),1)]),l("div",E,[c(a,{selectedKeys:y.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return y.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:x,onOpenChange:D},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),l("div",{class:"collapse-btn",onClick:_},[v.value?(f(),i(h(S),{key:1})):(f(),i(h(A),{key:0}))])],2)}}};var L=x(262);const M=(0,L.A)($,[["__scopeId","data-v-3166c85e"]]);var P={class:"tabs-wrapper"},U={class:"tabs-container"},X=["onClick"],V={class:"tab-title"},N=["onClick"];const R=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 a=t.emit,i=e,c=a,v=d(i.activeTab),p=[],y=r(function(){return i.tabs.length>0?i.tabs:p});return T(function(){return i.activeTab},function(e){e&&e!==v.value&&(v.value=e)},{immediate:!0}),T(y,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",P,[l("div",U,[(f(!0),o(n,null,b(y.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",V,m(e.title),1),!1!==e.closable&&y.value.length>1?(f(),o("span",{key:0,class:"tab-close",onClick:k(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,N)):u("",!0)],10,X)}),128))])])}}}),z=(0,L.A)(R,[["__scopeId","data-v-26cdabbe"]]);var F={class:"breadcrumb-wrapper"},q={class:"breadcrumb-content"},G={key:0,class:"breadcrumb-current"},H=["onClick"],J={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 a=t.emit,u=e,s=a,d=r(function(){return u.items.length>0?u.items:[]});return function(e,t){var a=p("a-breadcrumb-item"),r=p("a-breadcrumb");return f(),o("div",F,[l("div",q,[c(h(w),{class:"breadcrumb-icon"}),c(r,null,{default:g(function(){return[(f(!0),o(n,null,b(d.value,function(e,t){return f(),i(a,{key:t},{default:g(function(){return[t===d.value.length-1?(f(),o("span",G,m(e.title),1)):(f(),o("a",{key:1,onClick:function(a){return function(e,t){s("click",{item:e,index:t})}(e,t)}},m(e.title),9,H))]}),_:2},1024)}),128))]}),_:1})]),l("div",J,[v(e.$slots,"default")])])}}}),W=(0,L.A)(Q,[["__scopeId","data-v-06ed9d84"]]);var Y=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 a,n=Math.min(t,this.tabs.length-1);this.currentTab=(null===(a=this.tabs[n])||void 0===a?void 0:a.key)||""}},setCurrentTab:function(e){this.currentTab=e},clearTabs:function(){this.tabs=[],this.currentTab=""}},persist:{storage:sessionStorage}});function Z(e){return function(e){if(Array.isArray(e))return ae(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||te(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 ee(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!a){if(Array.isArray(e)||(a=te(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0,r=function(){};return{s:r,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},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 i,u=!0,o=!1;return{s:function(){a=a.call(e)},n:function(){var e=a.next();return u=e.done,e},e:function(e){o=!0,i=e},f:function(){try{u||null==a.return||a.return()}finally{if(o)throw i}}}}function te(e,t){if(e){if("string"==typeof e)return ae(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ae(e,t):void 0}}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var ne={key:1,class:"page-layout--breadcrumb"},re={class:"page-layout--content"};const ie=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}},emits:["menu-click","tab-change","tab-click","tab-close","breadcrumb-click","update:activeTab"],setup:function(e,t){var a=t.expose,n=t.emit,s=e,b=n,m=Y(),h=d(!1),k=y(m,"currentTab"),w=y(m,"tabs");T(function(){return s.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return m.addTab(e)})},{immediate:!0,deep:!0});var A=r(function(){return m.currentTabData}),S=function(e,t){var a,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=ee(e);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i.key===t)return[].concat(Z(n),[{title:i.title||i.label,path:i.path,key:i.key}]);if(i.children&&i.children.length>0){var u=S(i.children,t,[].concat(Z(n),[{title:i.title||i.label,path:i.path,key:i.key}]));if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},C=function(e,t){var a,n=ee(e);try{for(n.s();!(a=n.n()).done;){var r=a.value;if(r.key===t)return r;if(r.children&&r.children.length>0){var i=C(r.children,t);if(i)return i}}}catch(e){n.e(e)}finally{n.f()}return null},_=r(function(){if(k.value===s.homeBreadcrumb.key)return[s.homeBreadcrumb];if(s.menuData&&s.menuData.length>0){var e=S(s.menuData,k.value);if(e)return e}var t=w.value.find(function(e){return e.key===k.value});return t?[s.homeBreadcrumb,{title:t.title,key:t.key}]:[s.homeBreadcrumb]}),x=function(e){b("menu-click",e),s.autoAddTab&&(m.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),b("update:activeTab",e.key))},I=function(e){m.setCurrentTab(e),b("update:activeTab",e),b("tab-change",e)},O=function(e){b("tab-click",e)},K=function(e){m.removeTab(e.key),b("update:activeTab",k.value),b("tab-close",e)},j=function(e){b("breadcrumb-click",e)};return a({addTab:function(e){m.addTab(e),b("update:activeTab",e.key)},removeTab:function(e){m.removeTab(e),b("update:activeTab",k.value)},getCurrentTab:function(){return m.currentTabData},addTabByMenuKey:function(e){var t=C(s.menuData,e);t&&s.autoAddTab&&(m.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),b("update:activeTab",e))},findMenuItem:C,tabsList:w,currentTab:k,currentTabData:A,breadcrumbList:_,clearTabs:m.clearTabs}),function(t,a){var n=p("a-layout-sider"),r=p("a-layout");return f(),i(r,{class:"page-layout"},{default:g(function(){return[c(n,{class:"page-layout--sider"},{default:g(function(){return[v(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),i(M,{key:0,collapsed:h.value,"onUpdate:collapsed":a[0]||(a[0]=function(e){return h.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:k.value,onMenuClick:x},null,8,["collapsed","menuData","systemTitle","activeKey"])):u("",!0)]})]}),_:3}),c(r,{class:"page-layout--main"},{default:g(function(){return[e.showTabs?v(t.$slots,"tabs",{key:0,tabs:w.value,activeTab:k.value},function(){return[c(z,{tabs:w.value,activeTab:k.value,"onUpdate:activeTab":I,onTabClick:O,onTabClose:K},null,8,["tabs","activeTab"])]}):u("",!0),e.showBreadcrumb?(f(),o("div",ne,[c(W,{items:_.value,onClick:j},{default:g(function(){return[v(t.$slots,"breadcrumbExtra",{},function(){return[a[1]||(a[1]=l("div",{class:"breadcrumb-extra"},[l("div",{class:"extra-item"},[l("img",{src:D,alt:""}),l("p",null,"AI助手")]),l("div",{class:"extra-item"},[l("img",{src:B,alt:""}),l("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):u("",!0),l("div",re,[v(t.$slots,"default",{activeTab:k.value,tabData:A.value})])]}),_:3})]}),_:3})}}}),ue=(0,L.A)(ie,[["__scopeId","data-v-59d80916"]]);var oe=[ue,M,W,z],le=function(t){if(!le.installed){if(le.installed=!0,!t.config.globalProperties.$pinia){var n=function(){var t=e();return t.use(a),t}();t.use(n)}oe.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&le(window.Vue);const ce={install:le,PageLayout:ue,SidebarLayout:M,BreadCrumb:W,Tabs:z};export{W as BreadCrumb,ue as PageLayout,M as SidebarLayout,z as Tabs,ce as default,Y as useTabsStore};
|
|
1
|
+
import{createPinia as e,defineStore as t}from"pinia";import{default as n}from"pinia-plugin-persistedstate";import{Fragment as r,computed as a,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 p,toDisplayString as y,toRef as m,unref as h,watch as g,withCtx as k,withModifiers as T}from"vue";import{EnvironmentOutlined as w,LeftOutlined as S,RightOutlined as O}from"@ant-design/icons-vue";import{createRouter as A,createWebHistory as D}from"vue-router";var j={262(e,t){t.A=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}}},C={};function _(e){var t=C[e];if(void 0!==t)return t.exports;var n=C[e]={exports:{}};return j[e](n,n.exports,_),n.exports}_.d=(e,t)=>{for(var n in t)_.o(t,n)&&!_.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},_.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;if("string"==typeof import.meta.url&&(e=import.meta.url),!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),_.p=e})();const x=_.p+"images/icon-ai.14abd0.png",B=_.p+"images/icon-helper.e4bdca.png";function P(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=I(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 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 I(e,t){if(e){if("string"==typeof e)return K(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)?K(e,t):void 0}}function K(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 E={class:"system-title"},$={class:"menu-wrapper"};const L={__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,i=e,b=r,v=(a(function(){return i.systemTitle}),d(i.collapsed)),m=d([]),k=d([]);g(function(){return i.collapsed},function(e){v.value=e}),g(v,function(e){b("update:collapsed",e)}),g(function(){return i.activeKey},function(e){if(e){m.value=[e];var t=function(e,n){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,u=P(e);try{for(u.s();!(r=u.n()).done;){var i=r.value;if(i.key===n)return a;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,r=t(n,e);r&&!k.value.includes(r)&&(k.value=[].concat(function(e){if(Array.isArray(e))return K(e)}(a=k.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||I(a)||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 a},{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})},A=a(function(){var e=i.menuData.length>0?i.menuData:T;return w(e)}),D=function(){v.value=!v.value},j=function(e){var t=e.key,n=(e.item,function(e,t){var r,a=P(e);try{for(a.s();!(r=a.n()).done;){var u=r.value;if(u.key===t)return u;if(u.children){var i=n(u.children,t);if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null}),r=i.menuData.length>0?i.menuData:T,a=n(r,t);a&&(b("menu-click",a),b("update:activeKey",t))},C=function(e){k.value=e};return g(m,function(e){if(e.length>0){var t=e[0];b("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:D,expandMenu:function(e){k.value.includes(e)||k.value.push(e)},collapseMenu:function(e){var t=k.value.indexOf(e);t>-1&&k.value.splice(t,1)}}),function(e,t){var n=p("a-menu");return f(),o("div",{class:s(["sidebar",{collapsed:v.value}])},[l("div",E,[l("h1",null,y(i.systemTitle),1)]),l("div",$,[c(n,{selectedKeys:m.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return m.value=e}),openKeys:k.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return k.value=e}),mode:"inline","inline-collapsed":v.value,items:A.value,onClick:j,onOpenChange:C},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),l("div",{class:"collapse-btn",onClick:D},[v.value?(f(),u(h(O),{key:1})):(f(),u(h(S),{key:0}))])],2)}}};var M=_(262);const R=(0,M.A)(L,[["__scopeId","data-v-3166c85e"]]);var U={class:"tabs-wrapper"},X={class:"tabs-container"},V=["onClick"],N={class:"tab-title"},z=["onClick"];const F=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),p=[],m=a(function(){return u.tabs.length>0?u.tabs:p});return g(function(){return u.activeTab},function(e){e&&e!==v.value&&(v.value=e)},{immediate:!0}),g(m,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",X,[(f(!0),o(r,null,b(m.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,y(e.title),1),!1!==e.closable&&m.value.length>1?(f(),o("span",{key:0,class:"tab-close",onClick:T(function(t){return function(e){c("tab-close",e)}(e)},["stop"])}," × ",8,z)):i("",!0)],10,V)}),128))])])}}}),H=(0,M.A)(F,[["__scopeId","data-v-26cdabbe"]]);var W={class:"breadcrumb-wrapper"},q={class:"breadcrumb-content"},G={key:0,class:"breadcrumb-current"},J=["onClick"],Q={class:"breadcrumb-extra"};const Y=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=a(function(){return i.items.length>0?i.items:[]});return function(e,t){var n=p("a-breadcrumb-item"),a=p("a-breadcrumb");return f(),o("div",W,[l("div",q,[c(h(w),{class:"breadcrumb-icon"}),c(a,null,{default:k(function(){return[(f(!0),o(r,null,b(d.value,function(e,t){return f(),u(n,{key:t},{default:k(function(){return[t===d.value.length-1?(f(),o("span",G,y(e.title),1)):(f(),o("a",{key:1,onClick:function(n){return function(e,t){s("click",{item:e,index:t})}(e,t)}},y(e.title),9,J))]}),_:2},1024)}),128))]}),_:1})]),l("div",Q,[v(e.$slots,"default")])])}}}),Z=(0,M.A)(Y,[["__scopeId","data-v-06ed9d84"]]);var ee=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,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}});function te(e){return te="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},te(e)}function ne(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 re(e,t,n){return(t=function(e){var t=function(e){if("object"!=te(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=te(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==te(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ae=null,ue=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return ae=A(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(n),!0).forEach(function(t){re(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ne(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({history:D(t.basePath||""),routes:e},t)),ae},ie=function(){return ae},oe=function(){return ae?ae.currentRoute:null};function le(e){return function(e){if(Array.isArray(e))return fe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||se(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 ce(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=se(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 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 se(e,t){if(e){if("string"==typeof e)return fe(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)?fe(e,t):void 0}}function fe(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 de={key:1,class:"page-layout--breadcrumb"},be={class:"page-layout--content"};const ve=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,s=e,b=r,y=ie(),h=oe(),T=ee(),w=d(!1),S=m(T,"currentTab"),O=m(T,"tabs");g(function(){return s.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return T.addTab(e)})},{immediate:!0,deep:!0});var A=a(function(){return T.currentTabData}),D=function(e,t){var n,r=ce(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 u=D(a.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null},j=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=ce(e);try{for(a.s();!(n=a.n()).done;){var u=n.value;if(u.key===t)return[].concat(le(r),[{title:u.title||u.label,path:u.path,key:u.key}]);if(u.children&&u.children.length>0){var i=j(u.children,t,[].concat(le(r),[{title:u.title||u.label,path:u.path,key:u.key}]));if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null},C=function(e,t){var n,r=ce(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 u=C(a.children,t);if(u)return u}}}catch(e){r.e(e)}finally{r.f()}return null};g(function(){var e;return null==h||null===(e=h.value)||void 0===e?void 0:e.path},function(e){if(s.enableRouterSync&&e&&"/"!==e){var t=D(s.menuData,e);t&&L(t)}},{immediate:!0});var _=a(function(){if(S.value===s.homeBreadcrumb.key)return[s.homeBreadcrumb];if(s.menuData&&s.menuData.length>0){var e=j(s.menuData,S.value);if(e)return e}var t=O.value.find(function(e){return e.key===S.value});return t?[s.homeBreadcrumb,{title:t.title,key:t.key}]:[s.homeBreadcrumb]}),P=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)),s.enableRouterSync&&y&&e.path&&y.push(e.path)},I=function(e){if(T.setCurrentTab(e),b("update:activeTab",e),b("tab-change",e),s.enableRouterSync&&y){var t=O.value.find(function(t){return t.key===e});null!=t&&t.path&&y.push(t.path)}},K=function(e){b("tab-click",e)},E=function(e){if(T.removeTab(e.key),b("update:activeTab",S.value),b("tab-close",e),s.enableRouterSync&&y){var t=T.currentTabData;null!=t&&t.path&&y.push(t.path)}},$=function(e){b("breadcrumb-click",e)},L=function(e){var t=C(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",S.value)},getCurrentTab:function(){return T.currentTabData},addTabByMenuKey:L,findMenuItem:C,findMenuKeyByPath:D,tabsList:O,currentTab:S,currentTabData:A,breadcrumbList:_,clearTabs:T.clearTabs}),function(t,n){var r=p("a-layout-sider"),a=p("a-layout");return f(),u(a,{class:"page-layout"},{default:k(function(){return[c(r,{class:"page-layout--sider"},{default:k(function(){return[v(t.$slots,"sidebar",{},function(){return[e.showSidebar?(f(),u(R,{key:0,collapsed:w.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return w.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:S.value,onMenuClick:P},null,8,["collapsed","menuData","systemTitle","activeKey"])):i("",!0)]})]}),_:3}),c(a,{class:"page-layout--main"},{default:k(function(){return[e.showTabs?v(t.$slots,"tabs",{key:0,tabs:O.value,activeTab:S.value},function(){return[c(H,{tabs:O.value,activeTab:S.value,"onUpdate:activeTab":I,onTabClick:K,onTabClose:E},null,8,["tabs","activeTab"])]}):i("",!0),e.showBreadcrumb?(f(),o("div",de,[c(Z,{items:_.value,onClick:$},{default:k(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:x,alt:""}),l("p",null,"AI助手")]),l("div",{class:"extra-item"},[l("img",{src:B,alt:""}),l("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):i("",!0),l("div",be,[v(t.$slots,"default",{activeTab:S.value,tabData:A.value})])]}),_:3})]}),_:3})}}}),pe=(0,M.A)(ve,[["__scopeId","data-v-ad3d51fa"]]);var ye=[pe,R,Z,H],me=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!me.installed){if(me.installed=!0,!t.config.globalProperties.$pinia){var a=function(){var t=e();return t.use(n),t}();t.use(a)}if(r.routes&&r.routes.length>0){var u=ue(r.routes,r.routerOptions||{});t.use(u),t.provide("router",u),t.provide("route",u.currentRoute)}ye.forEach(function(e){t.component(e.name,e)})}};"undefined"!=typeof window&&window.Vue&&me(window.Vue);const he={install:me,PageLayout:pe,SidebarLayout:R,BreadCrumb:Z,Tabs:H};export{Z as BreadCrumb,pe as PageLayout,R as SidebarLayout,H as Tabs,ue as createAppRouter,he as default,oe as useRoute,ie as useRouter,ee as useTabsStore};
|
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")):"function"==typeof define&&define.amd?define(["@ant-design/icons-vue","pinia","pinia-plugin-persistedstate","vue"],t):"object"==typeof exports?exports.SharedLayoutComponents=t(require("@ant-design/icons-vue"),require("pinia"),require("pinia-plugin-persistedstate"),require("vue")):e.SharedLayoutComponents=t(e.icons,e.pinia,e.piniaPluginPersistedstate,e.Vue)}(this,(e,t,n,a)=>(()=>{"use strict";var r={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},144(e){e.exports=t},282(e){e.exports=n},594(e){e.exports=a}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[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.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;i.g.importScripts&&(e=i.g.location+"");var t=i.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var a=n.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=n[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})();var u={};i.d(u,{default:()=>H});var l=i(144),c=i(282),s=i.n(c),d=i(594);const f=i.p+"images/icon-ai.14abd0.png",p=i.p+"images/icon-helper.e4bdca.png";var m=i(166);function b(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=v(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,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function v(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}function y(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 h={class:"system-title"},k={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,a=t.emit,r=e,o=a,i=((0,d.computed)(function(){return r.systemTitle}),(0,d.ref)(r.collapsed)),u=(0,d.ref)([]),l=(0,d.ref)([]);(0,d.watch)(function(){return r.collapsed},function(e){i.value=e}),(0,d.watch)(i,function(e){o("update:collapsed",e)}),(0,d.watch)(function(){return r.activeKey},function(e){if(e){u.value=[e];var t=function(e,n){var a,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=b(e);try{for(o.s();!(a=o.n()).done;){var i=a.value;if(i.key===n)return r;if(i.children){var u=t(i.children,n,i.key);if(null!==u)return u}}}catch(e){o.e(e)}finally{o.f()}return null},n=r.menuData.length>0?r.menuData:c,a=t(n,e);a&&!l.value.includes(a)&&(l.value=[].concat(function(e){if(Array.isArray(e))return y(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||v(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 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})},f=(0,d.computed)(function(){var e=r.menuData.length>0?r.menuData:c;return s(e)}),p=function(){i.value=!i.value},g=function(e){var t=e.key,n=(e.item,function(e,t){var a,r=b(e);try{for(r.s();!(a=r.n()).done;){var o=a.value;if(o.key===t)return o;if(o.children){var i=n(o.children,t);if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null}),a=r.menuData.length>0?r.menuData:c,i=n(a,t);i&&(o("menu-click",i),o("update:activeKey",t))},T=function(e){l.value=e};return(0,d.watch)(u,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:p,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,d.resolveComponent)("a-menu");return(0,d.openBlock)(),(0,d.createElementBlock)("div",{class:(0,d.normalizeClass)(["sidebar",{collapsed:i.value}])},[(0,d.createElementVNode)("div",h,[(0,d.createElementVNode)("h1",null,(0,d.toDisplayString)(r.systemTitle),1)]),(0,d.createElementVNode)("div",k,[(0,d.createVNode)(n,{selectedKeys:u.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return u.value=e}),openKeys:l.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return l.value=e}),mode:"inline","inline-collapsed":i.value,items:f.value,onClick:g,onOpenChange:T},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,d.createElementVNode)("div",{class:"collapse-btn",onClick:p},[i.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(m.RightOutlined),{key:1})):((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(m.LeftOutlined),{key:0}))])],2)}}};var T=i(262);const w=(0,T.A)(g,[["__scopeId","data-v-3166c85e"]]);var B={class:"tabs-wrapper"},C={class:"tabs-container"},S=["onClick"],E={class:"tab-title"},x=["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,d.ref)(a.activeTab),i=[],u=(0,d.computed)(function(){return a.tabs.length>0?a.tabs:i});return(0,d.watch)(function(){return a.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,d.watch)(u,function(e){e.length>0&&!o.value&&(o.value=e[0].key,r("update:activeTab",e[0].key))},{immediate:!0}),function(e,t){return(0,d.openBlock)(),(0,d.createElementBlock)("div",B,[(0,d.createElementVNode)("div",C,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(u.value,function(e){return(0,d.openBlock)(),(0,d.createElementBlock)("div",{key:e.key,class:(0,d.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,d.createElementVNode)("span",E,(0,d.toDisplayString)(e.title),1),!1!==e.closable&&u.value.length>1?((0,d.openBlock)(),(0,d.createElementBlock)("span",{key:0,class:"tab-close",onClick:(0,d.withModifiers)(function(t){return function(e){r("tab-close",e)}(e)},["stop"])}," × ",8,x)):(0,d.createCommentVNode)("",!0)],10,S)}),128))])])}}}),V=(0,T.A)(A,[["__scopeId","data-v-26cdabbe"]]);var N={class:"breadcrumb-wrapper"},_={class:"breadcrumb-content"},D={key:0,class:"breadcrumb-current"},I=["onClick"],j={class:"breadcrumb-extra"};const O=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,d.computed)(function(){return a.items.length>0?a.items:[]});return function(e,t){var n=(0,d.resolveComponent)("a-breadcrumb-item"),a=(0,d.resolveComponent)("a-breadcrumb");return(0,d.openBlock)(),(0,d.createElementBlock)("div",N,[(0,d.createElementVNode)("div",_,[(0,d.createVNode)((0,d.unref)(m.EnvironmentOutlined),{class:"breadcrumb-icon"}),(0,d.createVNode)(a,null,{default:(0,d.withCtx)(function(){return[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(o.value,function(e,t){return(0,d.openBlock)(),(0,d.createBlock)(n,{key:t},{default:(0,d.withCtx)(function(){return[t===o.value.length-1?((0,d.openBlock)(),(0,d.createElementBlock)("span",D,(0,d.toDisplayString)(e.title),1)):((0,d.openBlock)(),(0,d.createElementBlock)("a",{key:1,onClick:function(n){return function(e,t){r("click",{item:e,index:t})}(e,t)}},(0,d.toDisplayString)(e.title),9,I))]}),_:2},1024)}),128))]}),_:1})]),(0,d.createElementVNode)("div",j,[(0,d.renderSlot)(e.$slots,"default")])])}}}),K=(0,T.A)(O,[["__scopeId","data-v-06ed9d84"]]);var L=(0,l.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,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 P(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||M(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 $(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=M(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,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function M(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}function q(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 U={key:1,class:"page-layout--breadcrumb"},X={class:"page-layout--content"};const R=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}},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,i=L(),u=(0,d.ref)(!1),l=(0,d.toRef)(i,"currentTab"),c=(0,d.toRef)(i,"tabs");(0,d.watch)(function(){return r.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return i.addTab(e)})},{immediate:!0,deep:!0});var s=(0,d.computed)(function(){return i.currentTabData}),m=function(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=$(e);try{for(r.s();!(n=r.n()).done;){var o=n.value;if(o.key===t)return[].concat(P(a),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var i=m(o.children,t,[].concat(P(a),[{title:o.title||o.label,path:o.path,key:o.key}]));if(i)return i}}}catch(e){r.e(e)}finally{r.f()}return null},b=function(e,t){var n,a=$(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=b(r.children,t);if(o)return o}}}catch(e){a.e(e)}finally{a.f()}return null},v=(0,d.computed)(function(){if(l.value===r.homeBreadcrumb.key)return[r.homeBreadcrumb];if(r.menuData&&r.menuData.length>0){var e=m(r.menuData,l.value);if(e)return e}var t=c.value.find(function(e){return e.key===l.value});return t?[r.homeBreadcrumb,{title:t.title,key:t.key}]:[r.homeBreadcrumb]}),y=function(e){o("menu-click",e),r.autoAddTab&&(i.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key))},h=function(e){i.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e)},k=function(e){o("tab-click",e)},g=function(e){i.removeTab(e.key),o("update:activeTab",l.value),o("tab-close",e)},T=function(e){o("breadcrumb-click",e)};return n({addTab:function(e){i.addTab(e),o("update:activeTab",e.key)},removeTab:function(e){i.removeTab(e),o("update:activeTab",l.value)},getCurrentTab:function(){return i.currentTabData},addTabByMenuKey:function(e){var t=b(r.menuData,e);t&&r.autoAddTab&&(i.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))},findMenuItem:b,tabsList:c,currentTab:l,currentTabData:s,breadcrumbList:v,clearTabs:i.clearTabs}),function(t,n){var a=(0,d.resolveComponent)("a-layout-sider"),r=(0,d.resolveComponent)("a-layout");return(0,d.openBlock)(),(0,d.createBlock)(r,{class:"page-layout"},{default:(0,d.withCtx)(function(){return[(0,d.createVNode)(a,{class:"page-layout--sider"},{default:(0,d.withCtx)(function(){return[(0,d.renderSlot)(t.$slots,"sidebar",{},function(){return[e.showSidebar?((0,d.openBlock)(),(0,d.createBlock)(w,{key:0,collapsed:u.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return u.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:l.value,onMenuClick:y},null,8,["collapsed","menuData","systemTitle","activeKey"])):(0,d.createCommentVNode)("",!0)]})]}),_:3}),(0,d.createVNode)(r,{class:"page-layout--main"},{default:(0,d.withCtx)(function(){return[e.showTabs?(0,d.renderSlot)(t.$slots,"tabs",{key:0,tabs:c.value,activeTab:l.value},function(){return[(0,d.createVNode)(V,{tabs:c.value,activeTab:l.value,"onUpdate:activeTab":h,onTabClick:k,onTabClose:g},null,8,["tabs","activeTab"])]}):(0,d.createCommentVNode)("",!0),e.showBreadcrumb?((0,d.openBlock)(),(0,d.createElementBlock)("div",U,[(0,d.createVNode)(K,{items:v.value,onClick:T},{default:(0,d.withCtx)(function(){return[(0,d.renderSlot)(t.$slots,"breadcrumbExtra",{},function(){return[n[1]||(n[1]=(0,d.createElementVNode)("div",{class:"breadcrumb-extra"},[(0,d.createElementVNode)("div",{class:"extra-item"},[(0,d.createElementVNode)("img",{src:f,alt:""}),(0,d.createElementVNode)("p",null,"AI助手")]),(0,d.createElementVNode)("div",{class:"extra-item"},[(0,d.createElementVNode)("img",{src:p,alt:""}),(0,d.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,d.createCommentVNode)("",!0),(0,d.createElementVNode)("div",X,[(0,d.renderSlot)(t.$slots,"default",{activeTab:l.value,tabData:s.value})])]}),_:3})]}),_:3})}}}),F=(0,T.A)(R,[["__scopeId","data-v-59d80916"]]);var z=[F,w,K,V],G=function(e){if(!G.installed){if(G.installed=!0,!e.config.globalProperties.$pinia){var t=function(){var e=(0,l.createPinia)();return e.use(s()),e}();e.use(t)}z.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&G(window.Vue);const H={install:G,PageLayout:F,SidebarLayout:w,BreadCrumb:K,Tabs:V};return u.default})());
|
|
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}},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return o[e](n,n.exports,u),n.exports}u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},u.d=(e,t)=>{for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e;u.g.importScripts&&(e=u.g.location+"");var t=u.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u.p=e})();var l={};u.d(l,{default:()=>re});var c=u(144),s=u(282),d=u.n(s),f=u(594);const p=u.p+"images/icon-ai.14abd0.png",b=u.p+"images/icon-helper.e4bdca.png";var v=u(166);function m(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=y(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,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function y(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}function h(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 g={class:"system-title"},k={class:"menu-wrapper"};const T={__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,i=((0,f.computed)(function(){return a.systemTitle}),(0,f.ref)(a.collapsed)),u=(0,f.ref)([]),l=(0,f.ref)([]);(0,f.watch)(function(){return a.collapsed},function(e){i.value=e}),(0,f.watch)(i,function(e){o("update:collapsed",e)}),(0,f.watch)(function(){return a.activeKey},function(e){if(e){u.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 i=r.value;if(i.key===n)return a;if(i.children){var u=t(i.children,n,i.key);if(null!==u)return u}}}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 h(e)}(o=l.value)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||y(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)}),p=function(){i.value=!i.value},b=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 i=n(o.children,t);if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null}),r=a.menuData.length>0?a.menuData:c,i=n(r,t);i&&(o("menu-click",i),o("update:activeKey",t))},T=function(e){l.value=e};return(0,f.watch)(u,function(e){if(e.length>0){var t=e[0];o("update:activeKey",t)}},{immediate:!1}),n({toggleCollapse:p,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:i.value}])},[(0,f.createElementVNode)("div",g,[(0,f.createElementVNode)("h1",null,(0,f.toDisplayString)(a.systemTitle),1)]),(0,f.createElementVNode)("div",k,[(0,f.createVNode)(n,{selectedKeys:u.value,"onUpdate:selectedKeys":t[0]||(t[0]=function(e){return u.value=e}),openKeys:l.value,"onUpdate:openKeys":t[1]||(t[1]=function(e){return l.value=e}),mode:"inline","inline-collapsed":i.value,items:d.value,onClick:b,onOpenChange:T},null,8,["selectedKeys","openKeys","inline-collapsed","items"])]),(0,f.createElementVNode)("div",{class:"collapse-btn",onClick:p},[i.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(v.RightOutlined),{key:1})):((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(v.LeftOutlined),{key:0}))])],2)}}};var w=u(262);const S=(0,w.A)(T,[["__scopeId","data-v-3166c85e"]]);var B={class:"tabs-wrapper"},C={class:"tabs-container"},E=["onClick"],x={class:"tab-title"},O=["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,r=e,a=n,o=(0,f.ref)(r.activeTab),i=[],u=(0,f.computed)(function(){return r.tabs.length>0?r.tabs:i});return(0,f.watch)(function(){return r.activeTab},function(e){e&&e!==o.value&&(o.value=e)},{immediate:!0}),(0,f.watch)(u,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",B,[(0,f.createElementVNode)("div",C,[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(u.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",x,(0,f.toDisplayString)(e.title),1),!1!==e.closable&&u.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,O)):(0,f.createCommentVNode)("",!0)],10,E)}),128))])])}}}),j=(0,w.A)(A,[["__scopeId","data-v-26cdabbe"]]);var V={class:"breadcrumb-wrapper"},D={class:"breadcrumb-content"},N={key:0,class:"breadcrumb-current"},_=["onClick"],P={class:"breadcrumb-extra"};const I=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",V,[(0,f.createElementVNode)("div",D,[(0,f.createVNode)((0,f.unref)(v.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,_))]}),_:2},1024)}),128))]}),_:1})]),(0,f.createElementVNode)("div",P,[(0,f.renderSlot)(e.$slots,"default")])])}}}),K=(0,w.A)(I,[["__scopeId","data-v-06ed9d84"]]);var L=(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}}),R=u(269);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 $(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 q(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 U=null,X=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return U=(0,R.createRouter)(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){q(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:(0,R.createWebHistory)(t.basePath||""),routes:e},t)),U},F=function(){return U},z=function(){return U?U.currentRoute:null};function H(e){return function(e){if(Array.isArray(e))return J(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||G(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 W(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=G(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,i=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){u=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(u)throw o}}}}function G(e,t){if(e){if("string"==typeof e)return J(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)?J(e,t):void 0}}function J(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 Q={key:1,class:"page-layout--breadcrumb"},Y={class:"page-layout--content"};const Z=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,i=F(),u=z(),l=L(),c=(0,f.ref)(!1),s=(0,f.toRef)(l,"currentTab"),d=(0,f.toRef)(l,"tabs");(0,f.watch)(function(){return a.defaultTabs},function(e){e&&e.length>0&&e.forEach(function(e){return l.addTab(e)})},{immediate:!0,deep:!0});var v=(0,f.computed)(function(){return l.currentTabData}),m=function(e,t){var n,r=W(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=m(a.children,t);if(o)return o}}}catch(e){r.e(e)}finally{r.f()}return null},y=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=W(e);try{for(a.s();!(n=a.n()).done;){var o=n.value;if(o.key===t)return[].concat(H(r),[{title:o.title||o.label,path:o.path,key:o.key}]);if(o.children&&o.children.length>0){var i=y(o.children,t,[].concat(H(r),[{title:o.title||o.label,path:o.path,key:o.key}]));if(i)return i}}}catch(e){a.e(e)}finally{a.f()}return null},h=function(e,t){var n,r=W(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=h(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==u||null===(e=u.value)||void 0===e?void 0:e.path},function(e){if(a.enableRouterSync&&e&&"/"!==e){var t=m(a.menuData,e);t&&E(t)}},{immediate:!0});var g=(0,f.computed)(function(){if(s.value===a.homeBreadcrumb.key)return[a.homeBreadcrumb];if(a.menuData&&a.menuData.length>0){var e=y(a.menuData,s.value);if(e)return e}var t=d.value.find(function(e){return e.key===s.value});return t?[a.homeBreadcrumb,{title:t.title,key:t.key}]:[a.homeBreadcrumb]}),k=function(e){o("menu-click",e),a.autoAddTab&&(l.addTab({key:e.key,title:e.title||e.label,closable:!0,path:e.path}),o("update:activeTab",e.key)),a.enableRouterSync&&i&&e.path&&i.push(e.path)},T=function(e){if(l.setCurrentTab(e),o("update:activeTab",e),o("tab-change",e),a.enableRouterSync&&i){var t=d.value.find(function(t){return t.key===e});null!=t&&t.path&&i.push(t.path)}},w=function(e){o("tab-click",e)},B=function(e){if(l.removeTab(e.key),o("update:activeTab",s.value),o("tab-close",e),a.enableRouterSync&&i){var t=l.currentTabData;null!=t&&t.path&&i.push(t.path)}},C=function(e){o("breadcrumb-click",e)},E=function(e){var t=h(a.menuData,e);t&&a.autoAddTab&&(l.addTab({key:t.key,title:t.title||t.label,closable:!0,path:t.path}),o("update:activeTab",e))};return n({addTab:function(e){l.addTab(e),o("update:activeTab",e.key)},removeTab:function(e){l.removeTab(e),o("update:activeTab",s.value)},getCurrentTab:function(){return l.currentTabData},addTabByMenuKey:E,findMenuItem:h,findMenuKeyByPath:m,tabsList:d,currentTab:s,currentTabData:v,breadcrumbList:g,clearTabs:l.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)(S,{key:0,collapsed:c.value,"onUpdate:collapsed":n[0]||(n[0]=function(e){return c.value=e}),menuData:e.menuData,systemTitle:e.systemTitle,activeKey:s.value,onMenuClick:k},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:d.value,activeTab:s.value},function(){return[(0,f.createVNode)(j,{tabs:d.value,activeTab:s.value,"onUpdate:activeTab":T,onTabClick:w,onTabClose:B},null,8,["tabs","activeTab"])]}):(0,f.createCommentVNode)("",!0),e.showBreadcrumb?((0,f.openBlock)(),(0,f.createElementBlock)("div",Q,[(0,f.createVNode)(K,{items:g.value,onClick:C},{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:p,alt:""}),(0,f.createElementVNode)("p",null,"AI助手")]),(0,f.createElementVNode)("div",{class:"extra-item"},[(0,f.createElementVNode)("img",{src:b,alt:""}),(0,f.createElementVNode)("p",null,"帮助文档")])],-1))]})]}),_:3},8,["items"])])):(0,f.createCommentVNode)("",!0),(0,f.createElementVNode)("div",Y,[(0,f.renderSlot)(t.$slots,"default",{activeTab:s.value,tabData:v.value})])]}),_:3})]}),_:3})}}}),ee=(0,w.A)(Z,[["__scopeId","data-v-ad3d51fa"]]);var te=[ee,S,K,j],ne=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!ne.installed){if(ne.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=X(t.routes,t.routerOptions||{});e.use(r),e.provide("router",r),e.provide("route",r.currentRoute)}te.forEach(function(t){e.component(t.name,t)})}};"undefined"!=typeof window&&window.Vue&&ne(window.Vue);const re={install:ne,PageLayout:ee,SidebarLayout:S,BreadCrumb:K,Tabs:j};return l.default})());
|
package/dist/styles.css
CHANGED
|
@@ -231,12 +231,12 @@
|
|
|
231
231
|
color: #B3B3B3;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
.page-layout[data-v-
|
|
234
|
+
.page-layout[data-v-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
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-ad3d51fa] {
|
|
279
279
|
margin-bottom: 0;
|
|
280
280
|
}
|
|
281
|
-
.page-layout .page-layout--content[data-v-
|
|
281
|
+
.page-layout .page-layout--content[data-v-ad3d51fa] {
|
|
282
282
|
flex: 1;
|
|
283
283
|
overflow: auto;
|
|
284
284
|
padding: 0;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"shared-layout-components","version":"1.0.
|
|
1
|
+
{"name":"shared-layout-components","version":"1.0.10","description":"基于 Vue3 和 Ant Design Vue 的公共布局组件库","main":"dist/index.umd.js","module":"dist/index.esm.js","unpkg":"dist/index.umd.js","jsdelivr":"dist/index.umd.js","types":"dist/types/index.d.ts","keywords":["vue3","components","layout","ant-design-vue","sidebar","tabs","breadcrumb","admin"],"author":"","license":"MIT","files":["dist","README.md"],"scripts":{"build":"cross-env NODE_ENV=production webpack --config webpack.config.js","dev":"webpack serve --config webpack.dev.config.js","lint":"eslint src/**/*.{js,vue}","prepublishOnly":"npx rimraf dist && npm run build"},"peerDependencies":{"@ant-design/icons-vue":"^7.0.0","ant-design-vue":"^4.2.6","vue":"^3.3.4","vue-router":"^4.0.0","pinia":"^3.0.4","pinia-plugin-persistedstate":"^4.0.0"},"devDependencies":{"@ant-design/icons-vue":"^7.0.0","@babel/core":"^7.23.5","@babel/preset-env":"^7.23.5","ant-design-vue":"^4.2.6","babel-loader":"^9.1.3","core-js":"^3.33.3","cross-env":"^7.0.3","css-loader":"^6.8.1","html-webpack-plugin":"^5.6.6","less":"^4.2.0","less-loader":"^11.1.4","mini-css-extract-plugin":"^2.7.6","pinia":"^3.0.4","pinia-plugin-persistedstate":"^4.7.1","style-loader":"^3.3.3","vue":"^3.3.4","vue-loader":"^17.3.1","vue-router":"^4.6.4","webpack":"^5.89.0","webpack-cli":"^5.1.4","webpack-dev-server":"^4.15.1"},"repository":{"type":"git","url":""},"bugs":{"url":""},"homepage":""}
|