From fecc4ba507f281bab9f700af84172aae6586e353 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E5=AE=8F=E6=9D=B0?= <1943105267@qq.com> Date: Wed, 27 Sep 2023 13:37:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/permission.js | 134 ++++----- .../volunteer/conversionRecord/index.vue | 262 +++++++++--------- src/views/volunteer/gxhzs/gxhzsff/index.vue | 25 +- src/views/volunteer/gxhzs/mygxhzs/index.vue | 233 ++++++++++++++++ src/views/volunteer/yzczs/myycxzs/index.vue | 233 ++++++++++++++++ src/views/volunteer/yzczs/ycxzsff/index.vue | 136 +++++++++ 6 files changed, 803 insertions(+), 220 deletions(-) diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index da6153d..2246238 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -1,9 +1,9 @@ -import auth from '@/plugins/auth' -import router, { constantRoutes, dynamicRoutes } from '@/router' -import { getRouters } from '@/api/menu' -import Layout from '@/layout/index' -import ParentView from '@/components/ParentView' -import InnerLink from '@/layout/components/InnerLink' +import auth from "@/plugins/auth"; +import router, { constantRoutes, dynamicRoutes } from "@/router"; +import { getRouters } from "@/api/menu"; +import Layout from "@/layout/index"; +import ParentView from "@/components/ParentView"; +import InnerLink from "@/layout/components/InnerLink"; const permission = { state: { @@ -11,124 +11,124 @@ const permission = { addRoutes: [], defaultRoutes: [], topbarRouters: [], - sidebarRouters: [] + sidebarRouters: [], }, mutations: { SET_ROUTES: (state, routes) => { - state.addRoutes = routes - state.routes = constantRoutes.concat(routes) + state.addRoutes = routes; + state.routes = constantRoutes.concat(routes); }, SET_DEFAULT_ROUTES: (state, routes) => { - state.defaultRoutes = constantRoutes.concat(routes) + state.defaultRoutes = constantRoutes.concat(routes); }, SET_TOPBAR_ROUTES: (state, routes) => { - state.topbarRouters = routes + state.topbarRouters = routes; }, SET_SIDEBAR_ROUTERS: (state, routes) => { // console.log(routes) - state.sidebarRouters = routes + state.sidebarRouters = routes; }, }, actions: { // 生成路由 GenerateRoutes({ commit }) { - return new Promise(resolve => { + return new Promise((resolve) => { // 向后端请求路由数据 - getRouters().then(res => { - const sdata = JSON.parse(JSON.stringify(res.data)) - const rdata = JSON.parse(JSON.stringify(res.data)) - const sidebarRoutes = filterAsyncRouter(sdata) - const rewriteRoutes = filterAsyncRouter(rdata, false, true) + getRouters().then((res) => { + const sdata = JSON.parse(JSON.stringify(res.data)); + const rdata = JSON.parse(JSON.stringify(res.data)); + const sidebarRoutes = filterAsyncRouter(sdata); + const rewriteRoutes = filterAsyncRouter(rdata, false, true); const asyncRoutes = filterDynamicRoutes(dynamicRoutes); - rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true }) + rewriteRoutes.push({ path: "*", redirect: "/404", hidden: true }); router.addRoutes(asyncRoutes); - commit('SET_ROUTES', rewriteRoutes) - commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes)) - commit('SET_DEFAULT_ROUTES', sidebarRoutes) - commit('SET_TOPBAR_ROUTES', sidebarRoutes) - resolve(rewriteRoutes) - }) - }) - } - } -} + commit("SET_ROUTES", rewriteRoutes); + commit("SET_SIDEBAR_ROUTERS", constantRoutes.concat(sidebarRoutes)); + commit("SET_DEFAULT_ROUTES", sidebarRoutes); + commit("SET_TOPBAR_ROUTES", sidebarRoutes); + resolve(rewriteRoutes); + }); + }); + }, + }, +}; // 遍历后台传来的路由字符串,转换为组件对象 function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { - return asyncRouterMap.filter(route => { + return asyncRouterMap.filter((route) => { if (type && route.children) { - route.children = filterChildren(route.children) + route.children = filterChildren(route.children); } if (route.component) { // Layout ParentView 组件特殊处理 - if (route.component === 'Layout') { - route.component = Layout - } else if (route.component === 'ParentView') { - route.component = ParentView - } else if (route.component === 'InnerLink') { - route.component = InnerLink + if (route.component === "Layout") { + route.component = Layout; + } else if (route.component === "ParentView") { + route.component = ParentView; + } else if (route.component === "InnerLink") { + route.component = InnerLink; } else { - route.component = loadView(route.component) + route.component = loadView(route.component); } } if (route.children != null && route.children && route.children.length) { - route.children = filterAsyncRouter(route.children, route, type) + route.children = filterAsyncRouter(route.children, route, type); } else { - delete route['children'] - delete route['redirect'] + delete route["children"]; + delete route["redirect"]; } - return true - }) + return true; + }); } function filterChildren(childrenMap, lastRouter = false) { - var children = [] + var children = []; childrenMap.forEach((el, index) => { if (el.children && el.children.length) { - if (el.component === 'ParentView' && !lastRouter) { - el.children.forEach(c => { - c.path = el.path + '/' + c.path + if (el.component === "ParentView" && !lastRouter) { + el.children.forEach((c) => { + c.path = el.path + "/" + c.path; if (c.children && c.children.length) { - children = children.concat(filterChildren(c.children, c)) - return + children = children.concat(filterChildren(c.children, c)); + return; } - children.push(c) - }) - return + children.push(c); + }); + return; } } if (lastRouter) { - el.path = lastRouter.path + '/' + el.path + el.path = lastRouter.path + "/" + el.path; } - children = children.concat(el) - }) - return children + children = children.concat(el); + }); + return children; } // 动态路由遍历,验证是否具备权限 export function filterDynamicRoutes(routes) { - const res = [] - routes.forEach(route => { + const res = []; + routes.forEach((route) => { if (route.permissions) { if (auth.hasPermiOr(route.permissions)) { - res.push(route) + res.push(route); } } else if (route.roles) { if (auth.hasRoleOr(route.roles)) { - res.push(route) + res.push(route); } } - }) - return res + }); + return res; } export const loadView = (view) => { - if (process.env.NODE_ENV === 'development') { - return (resolve) => require([`@/views/${view}`], resolve) + if (process.env.NODE_ENV === "development") { + return (resolve) => require([`@/views/${view}`], resolve); } else { // 使用 import 实现生产环境的路由懒加载 - return () => import(`@/views/${view}`) + return () => import(`@/views/${view}`); } -} +}; -export default permission +export default permission; diff --git a/src/views/volunteer/conversionRecord/index.vue b/src/views/volunteer/conversionRecord/index.vue index c6c5849..c236ccc 100644 --- a/src/views/volunteer/conversionRecord/index.vue +++ b/src/views/volunteer/conversionRecord/index.vue @@ -9,7 +9,11 @@