美文网首页
Vue实例:医院统一信息平台(调整路由)

Vue实例:医院统一信息平台(调整路由)

作者: 碧波之心 | 来源:发表于2018-06-23 12:44 被阅读545次

    项目构建完成后,我们在对目录进行调整。把页面的骨架搭建起来。就是把前面构建的项目中,菜单规划一下,菜单点击后可以打开正常的页面。恩,顺便把登录的页面效果也做一做。
    这个工程中有两个项目,两边的知识点基本相同。这里都以后台的修改为例,前台类似。

    修改后台路由

    先规划下后台的路由,在@/project/admin/router/下建个文件:routers.js。把路由的配置提取出来。

    import index from 'admin/pages/index'
    
    const routers = [{
      path: '/',
      name: 'index',
      text: '管理台',
      redirect: '/hello',
      component: index,
      children: [{
        path: '/hello',
        name: 'hello',
        text: '示例',
        component: function (resolve) {
          require(['admin/pages/HelloWorld'], resolve)
        }
      }]
    }]
    
    export default routers
    

    修改index.js成如下

    import Vue from 'vue'
    import Router from 'vue-router'
    import routers from './routers'
    
    Vue.use(Router)
    
    const router = new Router({
      routes: routers
    })
    
    export default router
    

    前台也做同样的修改。
    修改完成后,效果没有变化。后面路由配置都可以在routers.js文件中进行,这里不涉及到业务,都是些配置的东东。

    规划路由

    补充routers.js,把规划的菜单(菜单是通过路由生成的)。path: '/'这个路由是项目的根,它指向layout的布局组件。项目中所有的页面都是它的children。菜单是由这个children中的内容生成的。
    把routers.js内容调整下,既然已经开始项目了,HelloWorld就不用了,也不删除它,留着作为创建文件时复制基础内容用。

    import index from 'index/pages/index'
    
    const routers = [{
      path: '/',
      name: 'index',
      text: '首页',
      redirect: '/hello',
      component: index,
      children: [{
        path: '/dashboard',
        name: 'dashboard',
        text: '仪表盘',
        menu: true,
        icon: 'fas fa-tachometer-alt',
        component: function (resolve) {
          require(['index/pages/Dashboard'], resolve)
        }
      }]
    }]
    
    export default routers
    

    修改index.vue,使菜单根据routers生成。

    <script>
    import HuipLayout from '@/components/HuipLayout'
    import routers from 'admin/router/routers'
    export default {
      name: 'AdminMain',
      components: {
        HuipLayout
      },
      data () {
        return {
          defaultLogo: require('@/assets/logo.png'),
          user: {
            name: 'admin'
          },
          tips: [{
            text: '首页',
            name: 'index',
            url: '/index.html'
          }],
          vmenus: routers[0]['children']
        }
      }
    }
    </script>
    

    现在效果如下,菜单是routers自动生成的。


    效果

    暂时先如下配置

    import index from 'admin/pages/index'
    const Wrap = { template: '<router-view></router-view>' }
    
    const routers = [{
      path: '/',
      name: 'index',
      text: '管理台',
      redirect: '/dashboard',
      component: index,
      children: [{
        path: '/dashboard',
        name: 'dashboard',
        text: '仪表盘',
        menu: true,
        icon: 'fas fa-tachometer-alt',
        component: function (resolve) {
          require(['admin/pages/Dashboard'], resolve)
        }
      }, {
        path: '/user',
        name: 'user',
        text: '用户管理',
        menu: true,
        icon: 'fas fa-user-cog',
        component: Wrap,
        hasChildren: true,
        children: [{
          path: '/user/client',
          name: 'user_client',
          text: '客户端管理',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/user/client'], resolve)
          }
        }, {
          path: '/user/org',
          name: 'user_org',
          text: '组织机构',
          menu: true,
          component: Wrap,
          hasChildren: true,
          children: [{
            path: '/user/org/org',
            name: 'user_org_org',
            text: '组织机构',
            menu: true,
            component: function (resolve) {
              require(['admin/pages/user/org'], resolve)
            }
          }, {
            path: '/user/org/type',
            name: 'user_org_type',
            text: '组织类型',
            menu: true,
            component: function (resolve) {
              require(['admin/pages/user/orgType'], resolve)
            }
          }]
        }, {
          path: '/user/role',
          name: 'user_role',
          text: '角色管理',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/user/role'], resolve)
          }
        }, {
          path: '/user/auth',
          name: 'user_auth',
          text: '权限管理',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/user/auth'], resolve)
          }
        }]
      }, {
        path: '/dictionary',
        name: 'dictionary',
        text: '数据仓库',
        menu: true,
        icon: 'fas fa-database',
        component: Wrap,
        hasChildren: true,
        children: [{
          path: '/dictionary/diagnosis',
          name: 'dictionary_diagnosis',
          text: '诊断库',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/dictionary/diagnosis'], resolve)
          }
        }, {
          path: '/dictionary/operating',
          name: 'dictionary_operating',
          text: '术式库',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/dictionary/operating'], resolve)
          }
        }, {
          path: '/dictionary/subject',
          name: 'dictionary_subject',
          text: '学科',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/dictionary/subject'], resolve)
          }
        }, {
          path: '/dictionary/part',
          name: 'dictionary_part',
          text: '人体部位',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/dictionary/part'], resolve)
          }
        }, {
          path: '/dictionary/symptom',
          name: 'dictionary_symptom',
          text: '症状管理',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/dictionary/symptom'], resolve)
          }
        }]
      }, {
        path: '/message',
        name: 'message',
        text: '消息管理',
        menu: true,
        icon: 'far fa-envelope',
        component: Wrap,
        hasChildren: true,
        children: [{
          path: '/message/type',
          name: 'message_type',
          text: '消息分类',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/message/type'], resolve)
          }
        }, {
          path: '/message/list',
          name: 'message_list',
          text: '消息列表',
          menu: true,
          component: function (resolve) {
            require(['admin/pages/message/list'], resolve)
          }
        }]
      }]
    }]
    
    export default routers
    

    界面效果


    后台
    前台
    登录

    总结

    到此,完成了通过路由生成菜单,页面之间的导航。
    git地址:https://gitee.com/biboheart/huip-vue.git

    相关文章

      网友评论

          本文标题:Vue实例:医院统一信息平台(调整路由)

          本文链接:https://www.haomeiwen.com/subject/nwjryftx.html