Kaynağa Gözat

deploy

master
Soleilw 1 yıl önce
ebeveyn
işleme
84e4ef332c

+ 1
- 0
dist/assets/index-T7d3tWJo.css
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 613
- 0
dist/assets/index-XPjI18tg.js
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 0
- 613
dist/assets/index-eXGpzddQ.js
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 0
- 1
dist/assets/index-rOTXzbDU.css
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 2
- 2
dist/index.html Dosyayı Görüntüle

<link rel="icon" type="image/svg+xml" href="/logo_1.jpg" /> <link rel="icon" type="image/svg+xml" href="/logo_1.jpg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>后台管理系统</title> <title>后台管理系统</title>
<script type="module" crossorigin src="/assets/index-eXGpzddQ.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-rOTXzbDU.css">
<script type="module" crossorigin src="/assets/index-XPjI18tg.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-T7d3tWJo.css">
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>

+ 14
- 14
package-lock.json Dosyayı Görüntüle

} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.32",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
"version": "8.4.35",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
"integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.4.tgz",
"integrity": "sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==",
"version": "5.1.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz",
"integrity": "sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.19.3", "esbuild": "^0.19.3",
"postcss": "^8.4.31",
"postcss": "^8.4.35",
"rollup": "^4.2.0" "rollup": "^4.2.0"
}, },
"bin": { "bin": {
"optional": true "optional": true
}, },
"postcss": { "postcss": {
"version": "8.4.32",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
"version": "8.4.35",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
"integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
"requires": { "requires": {
"nanoid": "^3.3.7", "nanoid": "^3.3.7",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
} }
}, },
"vite": { "vite": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.0.4.tgz",
"integrity": "sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==",
"version": "5.1.5",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz",
"integrity": "sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"esbuild": "^0.19.3", "esbuild": "^0.19.3",
"fsevents": "~2.3.3", "fsevents": "~2.3.3",
"postcss": "^8.4.31",
"postcss": "^8.4.35",
"rollup": "^4.2.0" "rollup": "^4.2.0"
} }
}, },

+ 10
- 10
src/components/layout/sider/aSider.vue Dosyayı Görüntüle

<a-menu mode="inline" v-model:openKeys="openSubMenu" @openChange="onOpenChange" inlineCollapsed <a-menu mode="inline" v-model:openKeys="openSubMenu" @openChange="onOpenChange" inlineCollapsed
v-model:selectedKeys="selectedMenu" style="background: #19be6b; height: '90vh';color: #fff;"> v-model:selectedKeys="selectedMenu" style="background: #19be6b; height: '90vh';color: #fff;">
<template v-for="(item,index) in menuList"> <template v-for="(item,index) in menuList">
<template v-if="!item.childs">
<template v-if="!item.children">
<a-menu-item :key="item.path" @click="onMenu(item.path)"> <a-menu-item :key="item.path" @click="onMenu(item.path)">
<template #icon> <template #icon>
<!-- <component :is="item"></component> --> <!-- <component :is="item"></component> -->
</template> </template>
<span>{{item.name}}</span>
<span>{{item.meta.title}}</span>
</a-menu-item> </a-menu-item>
</template> </template>
<template v-else> <template v-else>
<template #icon> <template #icon>
<!-- <component :is="item"></component> --> <!-- <component :is="item"></component> -->
</template> </template>
<template #title>{{item.name}}</template>
<template v-for="(twoItem, twoIndex) in item.childs">
<a-sub-menu v-if="twoItem.childs" :key="twoItem.path">
<template #title>{{item.meta.title}}</template>
<template v-for="(twoItem, twoIndex) in item.children">
<a-sub-menu v-if="twoItem.children.length > 0" :key="twoItem.path">
<template #title> <template #title>
{{twoItem.name}}
{{twoItem.meta.title}}
</template> </template>
<a-menu-item v-for="(threeItem, threeIndex) in twoItem.childs" :key="threeItem.path"
@click="onMenu(threeItem.path)">{{ threeItem.name }}</a-menu-item>
<a-menu-item v-for="(threeItem, threeIndex) in twoItem.children" :key="threeItem.path"
@click="onMenu(threeItem.path)">{{ threeItem.meta.title }}</a-menu-item>
</a-sub-menu> </a-sub-menu>
<a-menu-item v-else @click="onMenu(twoItem.path)" :key="twoItem.path"> <a-menu-item v-else @click="onMenu(twoItem.path)" :key="twoItem.path">
{{ twoItem.name }}
{{ twoItem.meta.title }}
</a-menu-item> </a-menu-item>
</template> </template>
</a-sub-menu> </a-sub-menu>
import { ref, onMounted, computed } from 'vue'; import { ref, onMounted, computed } from 'vue';
import { useMenu } from '@/hooks/useMenu'; import { useMenu } from '@/hooks/useMenu';
let { menuList, onMenu, routerCur, routerArrayCur } = useMenu(); let { menuList, onMenu, routerCur, routerArrayCur } = useMenu();
console.log(menuList)
const selectedMenu = computed(() => { const selectedMenu = computed(() => {
let newSelectedMenu = [routerCur()]; let newSelectedMenu = [routerCur()];
return newSelectedMenu; return newSelectedMenu;

+ 12
- 4
src/hooks/useAsRouter.ts Dosyayı Görüntüle

function routerCur() { function routerCur() {
return router.currentRoute.value.path return router.currentRoute.value.path
} }
// 获取当前路由父路由 // 获取当前路由父路由
function routerArrayCur() { function routerArrayCur() {
return router.currentRoute.value.matched[1].path; return router.currentRoute.value.matched[1].path;
} }
// 跳转路由 // 跳转路由
function routerTo(url : string) { function routerTo(url : string) {
router.push(url) router.push(url)
} }


// 匹配路由页面 // 匹配路由页面
function routerDynamic(userRouter : string[], originRouter : Object[]) {
const finalRouter = originRouter.filter(item => userRouter.includes(item.action)).map(item => ({ ...item, childs: item.childs ? routerDynamic(userRouter, item.childs) : null }));
function routerDynamic(originRouter, actionsArray) {
const finalRouter = originRouter.filter(item => actionsArray.some(action => action.action === item.name))
.map((item) => ({
...item,
meta: {
...item.meta,
title: actionsArray.find(action => action.action === item.name)?.name || item.meta.title,
},
children: item.children ? routerDynamic(item.children, actionsArray) : [],
}));
return finalRouter; return finalRouter;
} }



+ 20
- 0
src/main.ts Dosyayı Görüntüle

import ACSelectCommon from '@/components/cSelect/common.vue'; import ACSelectCommon from '@/components/cSelect/common.vue';
import UploadOne from '@/components/upload/one.vue'; import UploadOne from '@/components/upload/one.vue';
import { Model } from 'node_modules/echarts/index'; import { Model } from 'node_modules/echarts/index';

// router.beforeEach(async (to, from, next) => {
// document.title = `${to.meta.title} - 菊城人才市场后台管理`;
// // 动态路由可能还没加载完成,先检查是否已加载
// if (store.state.permissions.permissionList == null) {
// debugger
// await store.dispatch('permissions/FETCH_PERMISSION');
// }
// // 这里假设有一个isAuth的getter来检查用户是否已登录
// if (sessionStorage.getItem('token')) {
// debugger
// next();
// } else {
// debugger
// next('/login');
// }

// });
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
document.title = `${to.meta.title} - 菊城人才市场后台管理`; document.title = `${to.meta.title} - 菊城人才市场后台管理`;

if (!sessionStorage.getItem('token')) { if (!sessionStorage.getItem('token')) {
if (to.matched.length > 0 && !to.matched.some(record => record.meta.requiresAuth)) { if (to.matched.length > 0 && !to.matched.some(record => record.meta.requiresAuth)) {
next() next()

+ 2
- 2
src/store/usePermissionStore.ts Dosyayı Görüntüle

}) })
let arr = state.arrresult; let arr = state.arrresult;
// let arr = ['permission', 'role', 'account', 'company', 'vip', 'member', 'homemake', 'homemakeType', 'homemakePosition', 'homemakeDemand', 'homemakeAppointment', 'job', 'department', 'jobSeeker', 'jobResume', 'jobFair', 'jobFairList', 'jobFairCompany', 'information', 'section', 'article', 'list', 'putIn', 'advertisementList', 'advertisement', 'activity', 'activityList', 'activityAddress', 'statistics', 'statisticsResume', 'statisticsResumeMajor']; // let arr = ['permission', 'role', 'account', 'company', 'vip', 'member', 'homemake', 'homemakeType', 'homemakePosition', 'homemakeDemand', 'homemakeAppointment', 'job', 'department', 'jobSeeker', 'jobResume', 'jobFair', 'jobFairList', 'jobFairCompany', 'information', 'section', 'article', 'list', 'putIn', 'advertisementList', 'advertisement', 'activity', 'activityList', 'activityAddress', 'statistics', 'statisticsResume', 'statisticsResumeMajor'];
let routes = routerDynamic(arr, res.data.menulist);
let routes = routerDynamic(routesModuleList, arr);
LayoutRoute.children.push(...routes); LayoutRoute.children.push(...routes);
commit('SET_MENU', LayoutRoute.children); commit('SET_MENU', LayoutRoute.children);
routerAdd(LayoutRoute); routerAdd(LayoutRoute);
}; };


const pushItem = (item : Object) => { const pushItem = (item : Object) => {
state.arrresult.push(item.action)
state.arrresult.push({action:item.action, name:item.name})
if (item.childs) { if (item.childs) {
for (const child of item.childs) { for (const child of item.childs) {
pushItem(child) pushItem(child)

Loading…
İptal
Kaydet