Vue前端框架的基础配置

登录界面添加背景图

通过在登录界面的vue文件中,设置div标签的background-image属性,加载背景图

<style scoped>
.myvue{
        width:100%;
        height: 750px;
//添加背景图的地址
        background-image: url(../assets/oa.jpeg);
        background-size: cover;
        background-position: center;
//相对布局
        position: relative;
}
    .loginContainer{
        margin-top:200px;
        border-radius: 15px;
        background-clip: padding-box;
        margin: 0px auto;
        width:350px;
        padding:15px 35px 15px 35px;
        background-color: #fff;
        border: 1px solid #eaeaea;
        box-shadow: 0 0 25px #cac6c6;
        position: relative;
    }
    .loginTitle{
        margin: 0px auto 40px auto;
        text-align: center;
    }
    #main{
        padding-top:200px
    }
    .loginRemember{
        text-align: left;
        margin: 0px 0px 15px 0px;
    }
    .el-form-item__content{
        display:flex;
        align-items: center;
    }
    .code
    {
            width:80px;
            height:30px;
            display: inline-block;
            font-family:Arial;
            font-style:italic;
             color:blue;
             border:1px solid #dedede;
             border-radius:5px;
             padding:2px 3px;
             letter-spacing:1px;
             font-weight:bolder;                      
             cursor:pointer;
             text-align:center;
             vertical-align:middle;
    }
</style>

<template>
   <div class="myvue">
       <div id="main">
       <el-form ref="loginForm" :model="loginForm" class="loginContainer" :rules="rules">
           <h3 class="loginTitle">系统登录</h3>
           <el-form-item prop="username">
               <el-input type='text' auto-complete="false" v-model="loginForm.username" placeholder="请输入用户名">
               </el-input>
            </<el-form-item>
        </el-form>
    </div>
</div>
</template>

根据用户身份动态设置路由

在router文件夹下的index.js中,添加路由表及每个路由对应的用户身份,将其与选择结构结合,根据逐级判断,让用户与路由表对应起来。前端设计部分,利用vue框架的特点{{}}获取属性值,实现动态路由效果

<el-container>
                <el-aside width="300px">
                    <!-- 导航栏 -->
                    <!--设置导航栏的选项跳转,根据不同的index跳转到不同的界面 -->
                    <el-menu router >
                        <el-submenu  v-for="(item,index1) in this.$router.options.routes" :key="index1" v-if="!item.hidden" :index="index1">
                        <!-- <el-submenu  v-for="(item,index1) in routes" :key="index1"  :index="index1"> -->
                            <template slot="title">
                                <i class="el-icon-location" style="color:#1accff;margin-right:5px"></i>
                                <span>{{item.name}}</span>
                            </template>
                                <el-menu-item :index="children.path" v-for="(children,indexj) in item.children">{{children.name}}</el-menu-item>
                        </el-submenu>
                    </el-menu>
                </el-aside>
                <el-main>
                    <!-- 在右上方设置面包屑效果,并增加超链接 -->
                    <el-breadcrumb v-if="this.$router.currentRoute.path!='/home'" separator-class="el-icon-arrow-right">
                        <el-breadcrumb-item :to="{path:'/home'}">首页</el-breadcrumb-item>
                        <el-breadcrumb-item >{{this.$router.currentRoute.name}}</el-breadcrumb-item>
                    </el-breadcrumb>
                    <div class='welcome' v-if="this.$router.currentRoute.path=='/home'">
                        <div class="wer">
                                <el-card class="box-card" style="width:400px">
                                    <div slot="header" class="clearfix">
                                        <i class="el-icon-location" style="color:#1accff;margin-right:5px" ></i>
                                        <span id="text">正在定位..</span>
                                    </div>
                                <div id="weather" ><el-empty :image-size="50"></el-empty></div>
                                </el-card>
                         </div>
                         <div class="news">
                         
                                <el-card class="box-card" style="width:400px">
                                    <div slot="header" class="clearfix" >
                                        <i class="el-icon-location" style="color:#1accff;margin-right:5px;margin-botton:10px" ></i>
                                        <span class="news-text">时政新闻</span>
                                    </div>
                                
                                <div id="content" style="text-decoration: none;"><el-empty :image-size="50"></el-empty></div>
                                </el-card>
                         </div>
                    </div>                   
                    <router-view class="routerView"></router-view>
                </el-main>
            </el-container>
        </el-container>

var routes;
routes = [
  {
    path: '/',
//设置每个模块的用户身份
    meta:{
      roles:['admin1','admin2']
    },
    name: 'Login',
    component: Login,
    hidden:true
  },
  {
    path: '/home',
    // name属性和网页点击的文字相关联,动态地渲染组件
    name: '个人中心',
    component:Home,
    hidden:true,
    children:[
  //     // 设置子路由
      {
        path: '/userinfo',
        name: '个人中心',
        component:AdminInfo
      },
    ]
  },
  {
    path: '/home',
    // name属性和网页点击的文字相关联,动态地渲染组件
    name: '新闻管理',
    component: Home,
    hidden:true,
    children:[
          // 设置子路由
          {
            path: '/NewsList',
            name: '时政新闻',
            component: superAdmin
          },
          {
            path: '/inform',
            name: '通知内容',
            component: SysData
          },
        ]
  },
  {
    path: '/home',
    name: '常用服务',
    component:Home,
    meta:{
      roles:['admin2','admin1','user']
    },
    hidden:false,
    children:[
      {
        path: '/mail',
        name: '邮件发送',
        component:Mail
      },
      {
        path: '/sys/config',
        name: '我的通知',
        component:SysConfig
      },
    ]
  },
  {
    path: '/home',
    name: '常用服务-员工',
    component:Home,
    meta:{
      roles:['admin2','admin1']
    },
    hidden:false,
    children:[
      {
        path: '/mail',
        name: '邮件发送',
        component:Mail
      },
      {
        path: '/sign',
        name: '签到管理',
        component:Sign
      },
      {
        path: '/sys/admin',
        name: '重要通知',
        component:SysAdmin
      }
    ]
  },
  {
    path: '/home',
    // name属性和网页点击的文字相关联,动态地渲染组件
    name: '请假管理',
    meta:{
      roles:['admin2','admin1']
    },
    component: Home,
    hidden:false,
    children:[
          // 设置子路由
          {
            path: '/apply/applyUp',
            name: '请假申请',
            component: ApplyUp
          }
        ]
  },
  {
    path: '/home',
    // name属性和网页点击的文字相关联,动态地渲染组件
    name: '员工管理',
    component: Home,
    hidden:false,
      meta:{
        roles:['admin2']
      },
    children:[
      {
        path: '/emp/basic',
        name: '基本资料',
        component: EmpBasic
      }
    ]
  },
  {
    path: '/home',
    // name属性和网页点击的文字相关联,动态地渲染组件
    name: '薪资管理',
    component: Home,
    hidden:false,
    meta:{
      roles:['admin1','admin2']
    },
    children:[
      // 设置子路由
      {
        path: '/sal/table',
        name: '工资表管理',
        component: SalTable
      }
    ]
  },
  {
    path: '/home',
    meta:{
      roles:['admin1']
    },
    // name属性和网页点击的文字相关联,动态地渲染组件
    name: '统计管理',
    component: Home,
    hidden:false,
    children:[
      // 设置子路由
      {
        path: '/sta/all',
        name: '员工信息统计',
        component:chart
      }
    ]
  }
      ]
    } 
]

export const getRole=()=>{
  var name=JSON.parse(window.sessionStorage.getItem('username'));
  getRequest('/role?name='+name).then(resp=>{
      // 获取当前用户的角色
      var role=resp.role;
      var human=resp.human;
      window.sessionStorage.setItem('role',role);
      window.sessionStorage.setItem('human',human);
      // 根据角色,设置动态路由
      if(role==='admin1'){
        var roleList=[false,true,false,true,true,true,false,true,false,true,true];
        var index=0;
        for(var i=3;i<routes.length;i++){
          routes[i].hidden=roleList[index++];
        }
      }
      else if((role==='admin2')){
        var roleList=[false,true,false,true,false,false,true,true,true,true,true];
        var index=0;
        for(var i=3;i<routes.length;i++){
          routes[i].hidden=roleList[index++];
        }
      }      
      else if((role==='user')){
        var roleList=[true,false,true,false,true,true,true,true,false,true,false];
        var index=0;
        for(var i=3;i<routes.length;i++){
          routes[i].hidden=roleList[index++];
        }
      }
    })

面包屑效果(首页>邮件发送)

相关推荐
蒟蒻的贤6 分钟前
vue学习11.21
javascript·vue.js·学习
Thomas游戏开发29 分钟前
Unity3D 逻辑服的Entity, ComponentData与System划分详解
前端框架·unity3d·游戏开发
麻辣_水煮鱼2 小时前
vue数据变化但页面不变
前端·javascript·vue.js
计算机毕设孵化场4 小时前
计算机毕设-基于springboot的多彩吉安红色旅游网站的设计与实现(附源码+lw+ppt+开题报告)
vue.js·spring boot·后端·计算机外设·课程设计·计算机毕设论文·多彩吉安红色旅游网站
小王码农记4 小时前
vue中路由缓存
前端·vue.js·缓存·typescript·anti-design-vue
战神刘玉栋4 小时前
《SpringBoot、Vue 组装exe与套壳保姆级教学》
vue.js·spring boot·后端
乐闻x4 小时前
Vue实践篇:如何在 Vue 项目中检测元素是否展示
前端·javascript·vue.js
理想不理想v5 小时前
【经典】webpack和vite的区别?
java·前端·javascript·vue.js·面试
hgdlip6 小时前
电脑的ip地址怎么换掉:全面指南
tcp/ip·智能路由器·电脑
xChive6 小时前
优化表单交互:在 el-select 组件中嵌入表格显示选项
前端·vue.js·交互·element-plus