Vue+element 首页业务实现

接着上篇登录后 登录表单数据发送给服务器、验证成功后返回token口令、储存到浏览器会话窗口。方便登录过后的一些请求发送。

// 统一封装的 axios
// 配置axios
import axios from 'axios'
// 请求的根路径
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
// 请求拦截 添加 herders.Authorization 身份字段 并且展示进度条
axios.interceptors.request.use(config =>{
  config.headers.Authorization = window.sessionStorage.getItem('token')
  // 必须在最后 return config
  NProgress.start()
  return config
})

// 响应拦截 中 展示进度条

axios.interceptors.response.use(config =>{
  // 必须在最后 return config
  NProgress.done()
  return config
})

之后页面会通过路由跳转到首页

首页布局采用 element-ui的Container 布局容器

 Header:

用来渲染标题  以及右侧的退出按钮

<!--   头部区域   -->
      <el-header>
        <div>
          <i class="el-icon-s-promotion"></i>
          电商后台管理系统
        </div>
        <el-button type="danger" round @click="logout">退出</el-button>
      </el-header>


<script>


    logout () {
      // 退出登录 清空token 跳转到登录页
      window.sessionStorage.clear()
      this.$router.push('/login')
    }


</script>

 Aside

侧边导航:

页面进入到home时 发送请求 获得 导航列表数据  

      created() {
    // 页面刚创建时 获取 左侧导航数据
    this.getMenuList()
  },


async getMenuList(){
      const {data:res} = await this.$http.get('menus')
      if (res.meta.status !== 200) return this.$Msg.error(res.meta.msg)
      this.MenuData = res.data
    },

使用 el-submenu 一级菜单  el-menu-item 二级菜单  渲染组件完成 

再使用多重 v-for 渲染数据

组件的一些属性 可以在 element-ui 官网直接查询

如collapse 操作边栏 展示与收缩  通过 点击toggle 切换布尔值 影响 最上面标签的三元表达式

    toggle(){

      // 切换侧导航收起和展开

      this.isCollapse = !this.isCollapse

    },

通过 defalut-active 默认显示高亮

点击哪一个二级菜单就把它储存到  浏览器储存当中

    currPath(path){

      // 存储高亮的二级导航

      window.sessionStorage.setItem('currPath',path)

      this.activePath = window.sessionStorage.getItem('currPath')

    }

 

<!--        侧边栏 unique-opened 是否只保持一个菜单展开-->
        <el-aside :width="isCollapse ? '64px' : '200px'">
          <div class="toggle" @click="toggle">
            <i class="el-icon-s-unfold"></i>
          </div>
          <el-menu
            background-color="#303133"
            text-color="#fff"
            active-text-color="#ffd04b"
            :collapse="isCollapse"
            :default-active="activePath"
            :router="true"
            :collapse-transition="false"
            :unique-opened="false">
<!--            一级菜单 index+'' 加空字符串 变成字符串-->
            <el-submenu :index="m.id + ''" v-for="m in MenuData" :key="m.id">
              <template slot="title">
                <i :class="iconList[m.id]"></i>
                <span>{{m.authName}}</span>
              </template>
<!--              二级菜单-->
              <el-menu-item :index="'/'+mc.path"
                            @click="currPath('/'+mc.path)"
                            v-for="mc in m.children"
                            :key="mc.id">
                <template slot="title">
                  <i :class="iconList[mc.id]"></i>
                  <span>{{mc.authName}}</span>
                </template>
              </el-menu-item>
            </el-submenu>

          </el-menu>
        </el-aside>

main

只放置一个<router-view></router-view> 通过路由配置来 更改显示内容

一进入页面先登录 登录完成后 进入首页欢迎页

 

欢迎页 以及其他组件 都在 home的 children当中 

const routes = [
  {
    path: '/',
    redirect: '/login'
  },
  {
    path: '/login',
    component: Login
  },
  {
    path: '/home',
    component: Home,
    redirect: '/welcome',
    children:[
      {
        path:'/welcome',
        component:Welcome
      },
      {
        path:'/users',
        component:Users
      },
      {
        path:'/rights',
        component:RightsC
      }.......

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue Element是一个基于Vue.js框架构建的UI组件库,提供了丰富的组件,方便开发者构建各种交互界面。要实现SKU表格,可以借助Vue Element的Table组件和选择器组件。 首先,需要准备好SKU的数据结构,包括SKU的属性以及对应的值。可以使用一个嵌套的数组来表示,例如: ``` [ { name: '颜色', values: ['红色', '蓝色', '绿色'] }, { name: '尺码', values: ['S', 'M', 'L'] } ] ``` 接下来,在Vue组件中使用Table组件来展示SKU表格。可以使用v-for指令循环遍历SKU的属性和值,生成表头和表格数据。同时,可以给每个单元格添加选择器组件来选择对应的属性值。 示例代码如下: ```html <template> <el-table :data="tableData"> <el-table-column v-for="attr in attributes" :key="attr.name" :label="attr.name" > <template slot-scope="scope"> <el-select v-model="scope.row[attr.name]" placeholder="请选择"> <el-option v-for="value in attr.values" :key="value" :label="value" :value="value"></el-option> </el-select> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { attributes: [ { name: '颜色', values: ['红色', '蓝色', '绿色'] }, { name: '尺码', values: ['S', 'M', 'L'] } ], tableData: [] }; }, created() { // 生成SKU表格数据 const skuData = this.generateSkuData(this.attributes); this.tableData = skuData; }, methods: { generateSkuData(attributes) { // 根据属性生成表格数据 const skuData = []; const rowLength = attributes.reduce((acc, curr) => acc * curr.values.length, 1); for (let i = 0; i < rowLength; i++) { const rowData = {}; let remain = i; attributes.forEach(attr => { const valueIndex = remain % attr.values.length; rowData[attr.name] = attr.values[valueIndex]; remain = Math.floor(remain / attr.values.length); }); skuData.push(rowData); } return skuData; } } }; </script> ``` 通过上述代码,可以实现一个基于Vue Element的SKU表格。每个单元格都可以通过选择器组件选择对应的属性值,从而构建SKU表格。当选择器的值发生改变时,可以通过监听事件获取到最新的SKU数据。这样,就可以根据选择器的值进行相应的业务操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值