wangting
2023-07-21 6d4ba6de5ad9b1a8f3b7b680aa3a3a2ce08b22a6
组件在菜单中复用
已修改5个文件
63 ■■■■ 文件已修改
Source/UBCS-WEB/public/src/router/avue-router.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/index/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/page/index/layout.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/permission.js 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/router/avue-router.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/public/src/router/avue-router.js
@@ -99,6 +99,8 @@
      const propsDefault = {
        label: propsConfig.label || 'name',
        path: propsConfig.path || 'path',
        fullPath: propsConfig.fullPath || 'fullPath',
        query:propsConfig.query || 'query',
        icon: propsConfig.icon || 'icon',
        children: propsConfig.children || 'children',
        meta: propsConfig.meta || 'meta',
@@ -117,9 +119,23 @@
            } else {
              return oMenu[propsDefault.path]
            }
          })(),
          })();
        let fullPath=path;
        let query=oMenu[propsDefault.query] || {};
        if(path.indexOf('?')!=-1){
          let params=path.split('?')[1].split('&');
          path=path.split('?')[0]
          params.forEach(pitem=>{
            try {
              query[pitem.split('=')[0]]=pitem.split('=')[1];
            }catch (e) {
              query[pitem.split('=')[0]]=null;
            }
          })
        }
          //特殊处理组件 执行完这个 component 也就是精确到具体的文件了  views文件夹下面就是具体的页面代码
          component = 'views' + oMenu.path,
          let component = 'views' + path,
          name = oMenu[propsDefault.label],
          icon = oMenu[propsDefault.icon],
          children = oMenu[propsDefault.children],
@@ -136,6 +152,8 @@
        const isChild = children.length !== 0;
        const oRouter = {
          path: path,
          fullPath:fullPath,
          query:query,
          component(resolve) {
            // 判断是否为首路由
            if (first) {
Source/UBCS-WEB/src/page/index/index.vue
@@ -98,6 +98,7 @@
      openMenu(item = {}) {
        this.$store.dispatch("GetMenu", item.id).then(data => {
          if (data.length !== 0) {
            debugger;
            this.$router.$avueRouter.formatRoutes(data, true);
          }
          //当点击顶部菜单后默认打开第一个菜单
Source/UBCS-WEB/src/page/index/layout.vue
@@ -1,8 +1,8 @@
<template>
  <div>
    <keep-alive>
      <router-view class="avue-view" v-if="$route.meta.keepAlive" />
      <router-view class="avue-view" v-if="$route.meta.keepAlive"  :key="$route.fullPath"/>
    </keep-alive>
    <router-view class="avue-view" v-if="!$route.meta.keepAlive" />
    <router-view class="avue-view" v-if="!$route.meta.keepAlive"  :key="$route.fullPath"/>
  </div>
</template>
Source/UBCS-WEB/src/permission.js
@@ -29,8 +29,15 @@
            next({path: '/login'})
          })
        } else {
          const value = to.query.src || to.fullPath;
          const label = to.query.name || to.name;
          let query=JSON.parse(JSON.stringify(to.query));
         for(var q in to.query) {
           if (to.query[q].indexOf('@name=') != -1) {
             query[q] = to.query[q].split('@name=')[0]
             query['name'] = to.query[q].split('@name=')[1]
           }
         }
          const value = query.src || to.fullPath|| to.path ;
          const label = query.name || to.name;
          const meta = to.meta || router.$avueRouter.meta || {};
          const i18n = to.query.i18n;
          if (to.query.target) {
Source/UBCS-WEB/src/router/avue-router.js
@@ -99,6 +99,8 @@
      const propsDefault = {
        label: propsConfig.label || 'name',
        path: propsConfig.path || 'path',
        fullPath: propsConfig.fullPath || 'fullPath',
        query:propsConfig.query || 'query',
        icon: propsConfig.icon || 'icon',
        children: propsConfig.children || 'children',
        meta: propsConfig.meta || 'meta',
@@ -117,9 +119,24 @@
            } else {
              return oMenu[propsDefault.path]
            }
          })(),
          })();
          let fullPath=path;
        let query=oMenu[propsDefault.query] || {};
        if(path.indexOf('?')!=-1){
          let params=path.split('?')[1].split('@');
          path=path.split('?')[0]
          params.forEach(pitem=>{
            try {
              query[pitem.split('=')[0]]=pitem.split('=')[1];
            }catch (e) {
              query[pitem.split('=')[0]]=null;
            }
          })
        }
          //特殊处理组件 执行完这个 component 也就是精确到具体的文件了  views文件夹下面就是具体的页面代码
          component = 'views' + oMenu.path,
         let component = 'views' + path,
          name = oMenu[propsDefault.label],
          icon = oMenu[propsDefault.icon],
          children = oMenu[propsDefault.children],
@@ -136,6 +153,9 @@
        const isChild = children.length !== 0;
        const oRouter = {
          path: path,
          fullPath:fullPath,
          query:query,
          params:query,
          component(resolve) {
            // 判断是否为首路由
            if (first) {
@@ -188,6 +208,7 @@
      // for循环结束
      // 这个first 卡的其实就是首路由
      if (first) {
        debugger;
        this.safe.$router.addRoutes(aRouter)
      } else {
        // 这里返回的是子组件