构造介绍

public:搁置一下公共文件
src:我的项目的次要构造放在这个里边

assets:公共的款式,图片文件common:公共的js文件,内部引入js文件components:我的项目要的次要页面组件locales:语言包(可换地位:比方放到assets中)vuex:我的项目状态集中管理APP.vue:我的项目主页面main.js:我的项目主函数router.js:路由文件

其余文件可依据我的项目需要增删

vuex应用


type.js:次要用来寄存mutations办法中的常量
store.js:vuex的状态集中管理文件
modules:寄存各个组件的状态树


store.js

import Vue from 'vue';import Vuex from 'vuex';import VuexPersist from 'vuex-persist';import login from './modules/login';import element from './modules/element';import tree from './modules/tree';import editChart from './modules/editChart';import datasource from './modules/datasource';import upload from './modules/upload';import tabledrag from './modules/tabledrag';import permission from './modules/permission';import controlCenter from './modules/controlCenter';import editScreen from './modules/editScreen';import fullpage from './modules/fullpage';import template from './modules/template';import filter from './modules/filter';import linkage from './modules/linkage';import bigScreen from './modules/bigScreen';import dataSync from './modules/dataSync';import targetManage from './modules/targetManage';import fastAnaysis from './modules/fastAnaysis';import permissionNew from './modules/permissionNew';import sqlModel from './modules/sqlModel';Vue.use(Vuex);const vuexLocal = new VuexPersist({  storage: window.sessionStorage,  modules: ['sqlModel']});const store = new Vuex.Store({  modules: {    login,    element,    tree,    editChart,    upload,    tabledrag,    template,    datasource,    permission,    controlCenter,    editScreen,    fullpage,    bigScreen,    dataSync,    filter,    linkage,    targetManage,    fastAnaysis,    permissionNew,    sqlModel  },  plugins: [vuexLocal.plugin]  // strict: process.env.NODE_ENV !== 'production'});export default store;

type.js

// loginexport const SET_USER_INFO = 'SET_USER_INFO'; // 设置用户信息export const SET_LOGIN_STATUS = 'SET_LOGIN_STATUS'; // 设置登录状态export const SET_STORE = 'SET_STORE';export const SETROLE_AND_FETCHPERMISSION = 'SETROLE_AND_FETCHPERMISSION';// elementexport const SET_MODAL = 'SET_MODAL';// 全局modal (动静component的nama)export const SET_FILTER = 'SET_FILTER'; // 存入工夫,用于模态框全屏用export const SET_THEME = 'SET_THEME'; // 存入主题,用于全局export const SET_BIG_SCREEN_THEME = 'SET_BIG_SCREEN_THEME'; // 大屏主题export const SET_FULLPAGE_STORE = 'SET_FULLPAGE_STORE'; // 单图表组件管制全屏,并向全屏通用组件提供数据export const SET_TREE_NODES = 'SET_TREE_NODES'; // 目录树export const SET_DASHBOARD_FILES = 'SET_DASHBOARD_FILES';export const SET_FIELD_NODES = 'SET_FIELD_NODES'; // 增加图表目录树export const SET_TREE_MENU_TYPE = 'SET_TREE_MENU_TYPE'; // 增加目录树类型export const SET_UPLOAD = 'SET_UPLOAD'; // 上传export const SET_UPLOAD_IMG = 'SET_UPLOAD_IMG'; // 上传图片export const SET_REFRESH = 'SET_REFRESH'; // 是否刷新export const SET_TABLEDRAGCONFIG = 'SET_TABLEDRAGCONFIG';export const SET_FILTERINFO = 'SET_FILTERINFO';export const SET_FILTERARR = 'SET_FILTERARR';// permissionexport const UPDATE_PERMISSION_LIST = 'UPDATE_PERMISSION_LIST';export const SET_ROLE_INFO = 'SET_ROLE_INFO';export const FETCH_PERMISSION_LIST = 'FETCH_PERMISSION_LIST';export const GET_SHOW_ELES = 'GET_SHOW_ELES';export const GET_HEADER_PERMS = 'GET_HEADER_PERMS';export const SET_HEADER_PERMS_INFO = 'SET_HEADER_PERMS_INFO';export const FETCH_HEADER_PERMS_LIST = 'FETCH_HEADER_PERMS_LIST';export const IS_TEMPLATE_PREMISSION = 'IS_TEMPLATE_PREMISSION'; // 是否有获取模板的权限export const USER_TYPE_PERMISSIONLIST = 'USER_TYPE_PERMISSIONLIST'; // 依据用户类型的权限export const SET_USER_TYPE_PERMISSIONLIST = 'SET_USER_TYPE_PERMISSIONLIST'; // 设置依据用户类型的权限export const GET_USER_TYPE_PERMISSIONLIST = 'GET_USER_TYPE_PERMISSIONLIST'; // 获取依据用户类型的权限// 数据源export const SET_CUSTOMFILELIST = 'SET_CUSTOMFILELIST';// 数据同步export const SET_CLIENT = 'SET_CLIENT';export const SET_TASKSET = 'SET_TASKSET';

modules/tree.js

import * as types from '../type';let fieldNode = sessionStorage.getItem('fieldNodes');let treeNodes = sessionStorage.getItem('treeNodes');let dashboardFile = sessionStorage.getItem('treeNodes');let menuType = sessionStorage.getItem('menuType');let menuCode = sessionStorage.getItem('menuCode');const state = {  // 目录树以及以后节点  treeNodes: treeNodes ? JSON.parse(treeNodes) : [],  fieldNodes: fieldNode ? JSON.parse(fieldNode) : [],  dashboardFiles: dashboardFile ? JSON.parse(dashboardFile) : [],  menuTypes: menuType || '',  menuCode: menuCode || ''};const getters = {  treeNodes: state => state.treeNodes,  fieldNodes: state => state.fieldNodes,  dashboardFiles: state => state.dashboardFiles,  menuTypes: state => state.menuTypes,  menuCode: state => state.menuCode};const actions = {  setTreeNodes ({commit}, data) {    sessionStorage.setItem('treeNodes', JSON.stringify(data));    commit(types.SET_TREE_NODES, data);  },  setDashboardFiles ({commit}, data) {    sessionStorage.setItem('dashboardFiles', JSON.stringify(data));    commit(types.SET_DASHBOARD_FILES, data);  },  setFieldNodes ({commit}, data) {    sessionStorage.setItem('fieldNodes', JSON.stringify(data));    commit(types.SET_FIELD_NODES, data);  },  setMenuTypes ({commit}, data) {    sessionStorage.setItem('menuType', data);    commit(types.SET_TREE_MENU_TYPE, data);  },  setMenuCode ({commit}, data) {    sessionStorage.setItem('menuCode', data);    commit('MENU_CODE', data);  }};const mutations = {  [types.SET_TREE_NODES] (state, res) {    state.treeNodes = res;  },  [types.SET_DASHBOARD_FILES] (state, res) {    state.dashboardFiles = res;  },  [types.SET_FIELD_NODES] (state, res) {    state.fieldNodes = res;  },  [types.SET_TREE_MENU_TYPE] (state, res) {    state.menuType = res;  },  MENU_CODE (state, res) {    state.menuCode = res;  }};export default {  state,  actions,  getters,  mutations};

页面中应用

import {mapActions, mapGetters, mapMutations} from 'vuex';import store from '@/vuex/store';
 computed: {    ...mapGetters({      treeNodes: 'treeNodes',      menuCode: 'menuCode'    }),    /**     * @description 文件夹是否可拖拽disable     */    dirDragableDisable () {      return (        this.isDisable ||        !this.$_has_permission(          this.$PERMISSION_TAG_LIST.DASHBOARD_EDIT_LEFTDIRDRAG        )      );    },    /**     * @description 看板是否可拖拽disable     */    dasbboardDragableDisable () {      return !this.$_has_permission(        this.$PERMISSION_TAG_LIST.DASHBOARD_EDIT_FILEDRAG      );    }  },
 methods: {    ...mapMutations({      setMenuData: 'controlCenter/setMenuData'    }),    ...mapActions({      setTreeNodes: 'setTreeNodes',      setMenuCode: 'setMenuCode',      setDashboardFiles: 'setDashboardFiles'    }),    getMenuInfo (val) {      // 获取菜单树目录      if (val !== undefined && val !== '') {        store.state.tree.menuTypes = val; // 批改menutype类型      }      api        .getMenuInfo({menuType: this.menuTypes, requestType: 1})        .then((res) => {          // console.log(res[0].children);          if (res && res[0] && res[0].children && res[0].children.length > 0) {            let parent = res[0];            this.toShowFile(parent, 'children');            this.menuData = parent;            if (this.menuTypes === 1) {              this.setDashboardFiles(this.menuData.children);            }            /* if (this.menuData.id === '4') { // 管理中心的左树存起暂用,与treeNodes反复,注掉了            this.setMenuData(this.menuData);          } */            // 如果有id            if (this.$route.query.menuCode) {              this.getCurrentNode(this.$route.query.menuCode);            } else {              this.setFirstNode();            }            this.setTreeNodes(this.menuData.children);          } else {            this.menuData = {children: []};            this.setMenuCode();            this.setTreeNodes([]);            this.$router.push(this.$route.path);          }          this.$emit('initTreeComplete');        });      this.$emit('action');    },  }