vue-cli4.x +elementUI项目记录2(登录+树形控件+分页)

348 阅读1分钟

登录的时候,在vuex对应的文件里面处理好数据:store------》index.js

在这里插入图片描述

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    userInfo: null,
    userData: null,
    refreshMark: null, 
    searchTitle: null,
  },
  //利用getters对state存储的数据进行过滤
  getters: {
    getUserInfo(state) {
      return state.userInfo
    }, 
    getUserName(state) {
      return state.userData
    },
    getRefresh(state){
      return state.refreshMark
    },
    getSearchTitle(state){
      return state.searchTitle
    }
  },
  // 利用mutations改变store的数据(同步的)
  mutations: {
    setSearchTitle(state, payload){
      state.searchTitle = payload
    },
    setUserInfo(state, payload) {
      state.userInfo = payload.userInfo
    },
    setUserName(state, payload){
      state.userData = payload
    },
    setRefresh(state, payload){
      state.refreshMark = payload
    }
  }
})

login.vue登录部分代码

<template>
  <div class="login-container">
    <h1>CY</h1>
    <h3>xxxxxxx管理系统</h3>
    <!-- @keyup.enter.native:监听键盘回车事件 -->
    <el-input class="input" type="text" placeholder="请输入用户名" @keyup.enter.native="onClickLogin" v-model="username" />
    <el-input class="input" type="password" show-password placeholder="请输入密码" @keyup.enter.native="onClickLogin" v-model="userpwd" />
    <el-button class="login-button" type="primary" @click="onClickLogin">登录</el-button>
  </div>
</template>

<script>
  import Util from '../../Util/Util.js'
  import httpUtil from '../../Util/httpUtil.js'
  import qs from 'qs'
  import store from '../../store'
  export default {
    data () {
      return {
          username: '',
          userpwd: ''
      }
    },

    components: {},

    computed: {},

    mounted() {
        //如果有用户就登录
        let token = sessionStorage.getItem('userName');
        if (token == null || !token) {
            console.log("空");
        } else {
            this.$router.replace('/Home');
        }
    },

    methods: {
        onClickLogin(){
            let { username, userpwd } = this.$data
            console.log(username)
            if(!username || !userpwd){
                this.$message.warning('用户名或密码不能为空')
                return false
            }
            //获取身份验证信息和设备id
            let { authorization, deviceId } = Util.getAuthorizationInfo()
            // 通过commit方法提交到mutation
            this.$store.commit('setRefresh', "1")
            //请求登录接口
            console.log(userpwd)
            this.httpRequest.httpPostRequest('/adminLogin/login',{
                username: username,
                password: userpwd,
            }).then((res) => {
                if(res.data.code == 20000){
                    this.$message.success('登录成功')
                    sessionStorage.setItem('userName', res.data.data.name);
                    sessionStorage.setItem('userinfo', JSON.stringify(res.data.data.authorities[0]))
                    this.$router.push({ name:'Home' })
                    console.log(this.$route.path)
                } else {
                    this.$message.error(res.data.message)
                }
            }).catch((error) => {
                console.log(error)
                this.$message.error('网络错误,请稍后重试')
            })
        }
    }
  }

</script>

封装的Util.js

import XLSX from 'xlsx'//xlsx是一个简单的JavaScript插件,读取和写入Excel表格

//防抖函数时间ID
let antiShakeId = 0;
//设备ID
let deviceId = '';

export default class Util {

    //检查有无签名
    static checkSecurity() {
        let tSignature = sessionStorage.getItem("signature");
        return tSignature;
    }

    //导出Excle
    static exportExcle(exportArray, filename = '默认') {
        let tSheet = XLSX.utils.aoa_to_sheet(exportArray);
        let wb = XLSX.utils.book_new();
        XLSX.utils.book_append_sheet(wb, tSheet, "SheetJS");
        XLSX.writeFile(wb, `${filename}.xls`);
    }

    //防抖函数
    static antiShake(callback, time) {
        if (antiShakeId) {
            clearTimeout(antiShakeId)
        }
        antiShakeId = setTimeout(callback, time);
    }

  //获取身份验证相关信息
  static getAuthorizationInfo() {
    //请求身份认证转换base64
    let tStr = "broadtree:CgG8tpmnHVfZD8jl";
    //生成随机设备id
    if (!deviceId) {
        deviceId = Util.getRandomCode();
    }
    
    return {
      authorization: btoa(tStr),
      deviceId: deviceId
    }
  }

  //随机字符串
  static getRandomCode() {
    let tString = ['A', 'B', 'C', 'D', 's', 'w', 'y', 'k', 'R', 'q', 'm'];
    let tCode = '';
    for (let i = 0; i < 10; i++) {
      tCode += tString[Util.wxRandom(0, 11)];
    }
    return tCode + Date.now();
  }

  //随机数取出
  static wxRandom(m, n) {
    var num = Math.floor(Math.random() * (m - n) + n);
    return num;
  }
}