| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- import {
- getUserInfo,
- getNavList,
- loginOut,
- loginUsersCheck
- } from '../util/api/user.js';
- import qs from 'qs';
- // 入口文件
- import Vue from 'vue';
- // 配置vuex的步骤
- // 1. 运行 cnpm i vuex -S
- // 2. 导入包
- import Vuex from 'vuex';
- // 3. 注册vuex到vue中
- Vue.use(Vuex);
- // 4. new Vuex.Store() 实例,得到一个 数据仓储对象
- import { assign, slice, isEmpty } from 'lodash-es';
- const store = new Vuex.Store({
- state: {
- // 大家可以把 state 想象成 组件中的 data ,专门用来存储数据的
- // 如果在 组件中,想要访问,store 中的数据,只能通过 this.$store.state.*** 来访问
- btnRight: [],
- massif_id: '',
- userInfo: {},
- navlistInfo: {},
- isLogin: false,
- firstPage: 'home',
- userMenuLimits: [],
- menuList1: [], //首页菜单
- menuList2: [], //出首页的其他菜单
- video: null,
- selfRoomInfo: null,
- pendingVideoConnect: false,
- isVideoTalking: false,
- isVideoCallRefused: false,
- pestTypeList: [{
- label: '林木害虫',
- value: '林木害虫',
- },
- {
- label: '实蝇',
- value: '实蝇',
- },
- {
- label: '杂草',
- value: '杂草',
- }], // 林木害虫类别分类
- },
- getters: {
- btnRight(state) {
- let btnRight = state.btnRight;
- if (btnRight.length == 0) {
- if (sessionStorage.getItem('btnRight') != null) {
- btnRight = JSON.parse(sessionStorage.getItem('btnRight') || []);
- }
- }
- return btnRight;
- }
- },
- mutations: {
- // 注意: 如果要操作 store 中的 state 值,只能通过 调用 mutations 提供的方法,才能操作对应的数据,不推荐直接操作 state 中的数据,因为 万一导致了数据的紊乱,不能快速定位到错误的原因,因为,每个组件都可能有操作数据的方法;
- SET_FIRSTPAGE: (state, firstPage) => {
- state.firstPage = firstPage;
- },
- SET_MENULIST1: (state, menuList1) => {
- state.menuList1 = menuList1;
- },
- SET_MENULIST2: (state, menuList2) => {
- state.menuList2 = menuList2;
- },
- SET_ISLOGIN: (state, isLogin) => {
- state.isLogin = isLogin;
- },
- SET_USERMENUMITS: (state, userMenuLimits) => {
- state.userMenuLimits = userMenuLimits;
- },
- SET_USERINFO: (state, userInfo) => {
- state.userInfo = userInfo;
- },
- SET_NAVLISTINFO: (state, navlistInfo) => {
- state.navlistInfo = navlistInfo;
- },
- btnRightFun(state, payload) {
- state.btnRight = payload;
- },
- // 注意: 如果组件想要调用 mutations 中的方法,只能使用 this.$store.commit('方法名')
- // 这种 调用 mutations 方法的格式,和 this.$emit('父组件中方法名')
- subtract(state, obj) {
- // 注意: mutations 的 函数参数列表中,最多支持两个参数,其中,参数1: 是 state 状态; 参数2: 通过 commit 提交过来的参数;
- console.log(obj);
- state.count -= obj.c + obj.d;
- },
- // echars的数据
- changeMassifId(state, val) {
- if (val) {
- state.massif_id = val;
- } else {
- state.massif_id = '';
- }
- },
- updateVideoInfo(state, payload) {
- state.video = assign({}, payload);
- state.pendingVideoConnect = !isEmpty(payload);
- },
- updateVideoSelfRoomInfo(state, payload) {
- state.selfRoomInfo = assign({}, payload);
- },
- updateMessageList(state, payload) {
- state.list = slice(payload);
- },
- updatePendingVideoConnectStatus(state, flag) {
- state.pendingVideoConnect = flag;
- },
- updateTalkingStatus(state, flag) {
- state.isVideoTalking = flag;
- },
- updateIsRefusedCall(state, flag) {
- state.isVideoCallRefused = flag;
- }
- },
- actions: {
- //获取用户信息
- getUserInfo({ commit, state }) {
- return new Promise((resolve, reject) => {
- var name = localStorage.getItem('cUsername');
- let postData = qs.stringify({
- real_name: name
- });
- getUserInfo(postData)
- .then(response => {
- if (response.data.message == '') {
- sessionStorage.setItem('userType', response.data.data[0].role_id);
- sessionStorage.setItem('logo', response.data.data[0].role_logo);
- commit('SET_USERINFO', response.data.data);
- resolve();
- } else {
- if (document.getElementsByClassName('el-message').length == 0) {
- this.$message.error(response.data.message);
- }
- reject();
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- // 获取权限
- getNavList({ commit, state }) {
- return new Promise((resolve, reject) => {
- getNavList()
- .then(res => {
- if (res.data.message == '') {
- commit('SET_USERMENUMITS', res.data.data.children);
- commit('SET_NAVLISTINFO', res.data.data);
- let menuList1 = [];
- let menuList2 = [];
- let navList = res.data.data.children;
- navList.forEach(item => {
- if (!item.menu && item.children.length) {
- item.menu = 'p' + item.children[0].menu;
- }
- if (item.children) {
- if (item.menu != 'bHome') {
- menuList2.push(item);
- }
- } else {
- menuList1.push(item);
- }
- // 判断设备管理中设备列表是否有信息修改权限
- if (item.purview_name == '设备管理') {
- if (item.children[0].purview_name == '设备列表') {
- for (var i = 0; i < item.children[0].children.length; i++) {
- if (
- item.children[0].children[i].purview_name == '信息修改'
- ) {
- sessionStorage.setItem('equipmentListAmend', true); // 存储信息修改是否可正常查看操作
- return false;
- } else {
- sessionStorage.removeItem('equipmentListAmend');
- }
- }
- }
- }
- });
- let firstPage = ''; //左侧菜单第一项
- if (menuList1.length > 0) {
- firstPage = menuList1[0].menu;
- } else {
- firstPage = menuList2[0].children[0].menu;
- }
- commit('SET_FIRSTPAGE', firstPage); //第一个页面
- let userType = res.data.data.myuser_type; //用户类型
- let userName = res.data.data.username; //用户名
- let myuid = res.data.data.myuid; //用户id
- sessionStorage.setItem('myuser_type', userType);
- sessionStorage.setItem('myuid', myuid);
- commit('SET_MENULIST1', menuList1);
- commit('SET_MENULIST2', menuList2);
- commit('SET_ISLOGIN', true);
- sessionStorage.setItem('sy_isLogin', true);
- resolve(res.data.data.username);
- } else {
- reject();
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- //退出登录
- loginOut({ commit }) {
- return new Promise((resolve, reject) => {
- loginOut()
- .then(res => {
- if (res.data.message == '') {
- window.sessionStorage.setItem('isLogin', false);
- window.localStorage.removeItem('session');
- commit('SET_ISLOGIN', false);
- resolve();
- } else {
- // 强制退出
- window.sessionStorage.setItem('isLogin', false);
- window.localStorage.removeItem('session');
- commit('SET_ISLOGIN', false);
- resolve();
- }
- })
- .catch(err => {
- // 强制退出
- window.sessionStorage.setItem('isLogin', false);
- window.localStorage.removeItem('session');
- commit('SET_ISLOGIN', false);
- resolve();
- });
- });
- },
- // 判断用户登录是否失效
- loginUsersCheck({ commit }) {
- return new Promise((resolve, reject) => {
- loginUsersCheck()
- .then(res => {
- console.log(res);
- if (res.data.data == 1) {
- //登录状态
- commit('SET_ISLOGIN', true);
- sessionStorage.setItem('isLogin', true);
- resolve();
- } else {
- //session过期
- commit('SET_ISLOGIN', false);
- window.localStorage.removeItem('session');
- sessionStorage.setItem('isLogin', false);
- reject();
- }
- })
- .catch(err => {
- commit('SET_ISLOGIN', false);
- window.localStorage.removeItem('session');
- sessionStorage.setItem('isLogin', false);
- reject();
- });
- });
- }
- }
- });
- export default store;
|