mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-11 20:06:44 +08:00
2022年5月29日从svn移到git
This commit is contained in:
25
src/store/getters.js
Normal file
25
src/store/getters.js
Normal file
@@ -0,0 +1,25 @@
|
||||
const getters = {
|
||||
init: state => state.app.initData,
|
||||
sidebar: state => state.app.sidebar,
|
||||
size: state => state.app.size,
|
||||
device: state => state.app.device,
|
||||
visitedViews: state => state.tagsView.visitedViews,
|
||||
cachedViews: state => state.tagsView.cachedViews,
|
||||
avatar: state => state.user.info.avatar,
|
||||
userInfo: state => state.user.info,
|
||||
newslist: state => state.user.newslist,
|
||||
orgId: state => state.user.orgId,
|
||||
permissions: state => state.user.permissions,
|
||||
identity: state => state.user.identity,
|
||||
curIdentity: state => state.user.curIdentity,
|
||||
permission_routes: state => state.permission.routes,
|
||||
sidebarRouters: state => state.permission.sidebarRouters,
|
||||
portalCase: state => state.portal.case,
|
||||
portalLoginRememberMe: state => state.portal.loginRememberMe,
|
||||
resOwnerMap:state => state.resOwner.resOwnerMap,
|
||||
sysTypeMap:state => state.sysType.sysTypeMap,
|
||||
userMsg:state => state.user.msg,
|
||||
messagesBeReviewed:state => state.user.messagesBeReviewed,
|
||||
studyTaskCount:state => state.user.studyTaskCount,
|
||||
}
|
||||
export default getters
|
||||
29
src/store/index.js
Normal file
29
src/store/index.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import Vue from 'vue'
|
||||
import Vuex from 'vuex'
|
||||
import app from './modules/app'
|
||||
import user from './modules/user'
|
||||
import tagsView from './modules/tagsView'
|
||||
import permission from './modules/permission'
|
||||
import settings from './modules/settings'
|
||||
import portal from './modules/portal'
|
||||
import getters from './getters'
|
||||
import sysType from './modules/sysType'
|
||||
import resOwner from './modules/resOwner'
|
||||
|
||||
Vue.use(Vuex)
|
||||
|
||||
const store = new Vuex.Store({
|
||||
modules: {
|
||||
app,
|
||||
user,
|
||||
tagsView,
|
||||
permission,
|
||||
settings,
|
||||
portal,
|
||||
sysType,
|
||||
resOwner
|
||||
},
|
||||
getters
|
||||
})
|
||||
|
||||
export default store
|
||||
60
src/store/modules/app.js
Normal file
60
src/store/modules/app.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import Cookies from 'vue-cookies'
|
||||
|
||||
const state = {
|
||||
initData:false,
|
||||
sidebar: {
|
||||
opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
|
||||
withoutAnimation: false
|
||||
},
|
||||
device: 'desktop',//默认是桌面,以后会有android,ios,minapp
|
||||
size: Cookies.get('size') || 'medium' //字段大小
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
SET_INITDATA: (state, init) => {
|
||||
state.initData = init
|
||||
},
|
||||
TOGGLE_SIDEBAR: state => {
|
||||
state.sidebar.opened = !state.sidebar.opened
|
||||
state.sidebar.withoutAnimation = false
|
||||
if (state.sidebar.opened) {
|
||||
Cookies.set('sidebarStatus', 1)
|
||||
} else {
|
||||
Cookies.set('sidebarStatus', 0)
|
||||
}
|
||||
},
|
||||
CLOSE_SIDEBAR: (state, withoutAnimation) => {
|
||||
Cookies.set('sidebarStatus', 0)
|
||||
state.sidebar.opened = false
|
||||
state.sidebar.withoutAnimation = withoutAnimation
|
||||
},
|
||||
TOGGLE_DEVICE: (state, device) => {
|
||||
state.device = device
|
||||
},
|
||||
SET_SIZE: (state, size) => {
|
||||
state.size = size
|
||||
Cookies.set('size', size)
|
||||
}
|
||||
}
|
||||
|
||||
const actions = {
|
||||
toggleSideBar({ commit }) {
|
||||
commit('TOGGLE_SIDEBAR')
|
||||
},
|
||||
closeSideBar({ commit }, { withoutAnimation }) {
|
||||
commit('CLOSE_SIDEBAR', withoutAnimation)
|
||||
},
|
||||
toggleDevice({ commit }, device) {
|
||||
commit('TOGGLE_DEVICE', device)
|
||||
},
|
||||
setSize({ commit }, size) {
|
||||
commit('SET_SIZE', size)
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
101
src/store/modules/permission.js
Normal file
101
src/store/modules/permission.js
Normal file
@@ -0,0 +1,101 @@
|
||||
import { constantRoutes } from '@/router'
|
||||
/**import { getRouters } from '@/api/menu'**/
|
||||
import Layout from '@/layout/index'
|
||||
import ParentView from '@/components/ParentView';
|
||||
|
||||
const permission = {
|
||||
state: {
|
||||
routes: [],
|
||||
addRoutes: [],
|
||||
sidebarRouters: []
|
||||
},
|
||||
mutations: {
|
||||
SET_ROUTES: (state, routes) => {
|
||||
state.addRoutes = routes
|
||||
state.routes = constantRoutes.concat(routes)
|
||||
},
|
||||
SET_SIDEBAR_ROUTERS: (state, routers) => {
|
||||
state.sidebarRouters = constantRoutes.concat(routers)
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 生成路由
|
||||
GenerateRoutes({commit},menu){
|
||||
return new Promise(resolve => {
|
||||
const sdata = JSON.parse(JSON.stringify(menu.routers))
|
||||
const rdata = JSON.parse(JSON.stringify(menu.routers))
|
||||
const sidebarRoutes = filterAsyncRouter(sdata)
|
||||
const rewriteRoutes = filterAsyncRouter(rdata, true)
|
||||
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
|
||||
commit('SET_ROUTES', rewriteRoutes)
|
||||
commit('SET_SIDEBAR_ROUTERS', sidebarRoutes);
|
||||
resolve(rewriteRoutes);
|
||||
});
|
||||
/**
|
||||
return new Promise(resolve => {
|
||||
// 向后端请求路由数据
|
||||
getRouters().then(res => {
|
||||
const sdata = JSON.parse(JSON.stringify(res.data))
|
||||
const rdata = JSON.parse(JSON.stringify(res.data))
|
||||
const sidebarRoutes = filterAsyncRouter(sdata)
|
||||
const rewriteRoutes = filterAsyncRouter(rdata, true)
|
||||
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
|
||||
commit('SET_ROUTES', rewriteRoutes)
|
||||
commit('SET_SIDEBAR_ROUTERS', sidebarRoutes)
|
||||
resolve(rewriteRoutes)
|
||||
})
|
||||
})
|
||||
**/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 遍历后台传来的路由字符串,转换为组件对象
|
||||
function filterAsyncRouter(asyncRouterMap, isRewrite = false) {
|
||||
return asyncRouterMap.filter(route => {
|
||||
if (isRewrite && route.children) {
|
||||
route.children = filterChildren(route.children)
|
||||
}
|
||||
if (route.component) {
|
||||
// Layout ParentView 组件特殊处理
|
||||
if (route.component === 'Layout') {
|
||||
route.component = Layout
|
||||
} else if (route.component === 'ParentView') {
|
||||
route.component = ParentView
|
||||
} else {
|
||||
route.component = loadView(route.component)
|
||||
}
|
||||
}
|
||||
if (route.children != null && route.children && route.children.length) {
|
||||
route.children = filterAsyncRouter(route.children, route, isRewrite)
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
function filterChildren(childrenMap) {
|
||||
var children = []
|
||||
childrenMap.forEach((el, index) => {
|
||||
if (el.children && el.children.length) {
|
||||
if (el.component === 'ParentView') {
|
||||
el.children.forEach(c => {
|
||||
c.path = el.path + '/' + c.path
|
||||
if (c.children && c.children.length) {
|
||||
children = children.concat(filterChildren(c.children, c))
|
||||
return
|
||||
}
|
||||
children.push(c)
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
children = children.concat(el)
|
||||
})
|
||||
return children
|
||||
}
|
||||
|
||||
export const loadView = (view) => { // 路由懒加载
|
||||
return (resolve) => require([`@/views/${view}`], resolve)
|
||||
}
|
||||
|
||||
export default permission
|
||||
45
src/store/modules/portal.js
Normal file
45
src/store/modules/portal.js
Normal file
@@ -0,0 +1,45 @@
|
||||
const state = {
|
||||
case: {
|
||||
readProtocol: sessionStorage.getItem("readProtocol") == null ? false : JSON.parse(sessionStorage.getItem("readProtocol"))
|
||||
},
|
||||
loginRememberMe: sessionStorage.getItem("loginRememberMe") == null ? {} : JSON.parse(sessionStorage.getItem("loginRememberMe"))
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
SET_ReadProtocol: (state, iden) => {
|
||||
state.case.readProtocol = iden;
|
||||
sessionStorage.setItem("readProtocol", iden);
|
||||
},
|
||||
SET_LoginRememberMe: (state, iden) => {
|
||||
state.loginRememberMe = iden;
|
||||
sessionStorage.setItem("loginRememberMe", JSON.stringify(iden));
|
||||
}
|
||||
}
|
||||
|
||||
const actions = {
|
||||
//设置已读案例协议
|
||||
SetReadProtocol({
|
||||
commit
|
||||
}, iden) {
|
||||
return new Promise((resolve) => {
|
||||
commit('SET_ReadProtocol', iden);
|
||||
resolve();
|
||||
})
|
||||
},
|
||||
//设置登录记住密码
|
||||
SetLoginRememberMe({
|
||||
commit
|
||||
}, iden) {
|
||||
return new Promise((resolve) => {
|
||||
commit('SET_LoginRememberMe', iden);
|
||||
resolve();
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
95
src/store/modules/resOwner.js
Normal file
95
src/store/modules/resOwner.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import {getToken} from '@/utils/token'
|
||||
import apiResowner from '../../api/modules/resowner.js';
|
||||
|
||||
const state={
|
||||
resOwnerTree: [],//资源归属
|
||||
resOwnerMap:null
|
||||
}
|
||||
|
||||
const mutations={
|
||||
setResOwnerTree: (state, tree) => {
|
||||
state.resOwnerTree = tree
|
||||
},
|
||||
setResOwnerMap: (state, map) => {
|
||||
state.resOwnerMap = map
|
||||
},
|
||||
}
|
||||
const actions={
|
||||
getResOwnerTree({commit}) {
|
||||
return new Promise((resolve,reject)=>{
|
||||
if(state.resOwnerTree.length>0){
|
||||
resolve(state.resOwnerTree);
|
||||
}else{
|
||||
let hasData = sessionStorage.getItem('resOwnerTree');
|
||||
if(hasData){
|
||||
let treeData = JSON.parse(hasData);
|
||||
commit('setResOwnerTree', treeData);
|
||||
resolve(treeData);
|
||||
}else{
|
||||
apiResowner.tree(1).then(res=>{
|
||||
if(res.status === 200) {
|
||||
sessionStorage.setItem('resOwnerTree',JSON.stringify(res.result));
|
||||
commit('setResOwnerTree', res.result);
|
||||
//转化为map放到状态中
|
||||
let map=new Map();
|
||||
res.result.forEach(item=>{
|
||||
map.set(item.code, item.name);
|
||||
if(item.children && item.children!=''){
|
||||
item.children.forEach(child=>{
|
||||
map.set(child.code, child.name);
|
||||
if(child.children && child.children!=''){
|
||||
child.children.forEach(last=>{
|
||||
map.set(last.code, last.name);
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
commit('setResOwnerMap', map);
|
||||
resolve(res.result)
|
||||
} else {
|
||||
reject('资源归属获取失败!');
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
loadResOwners(context){
|
||||
if(state.resOwnerMap==null){
|
||||
let hasData = sessionStorage.getItem('resOwnerMap');
|
||||
if(hasData){
|
||||
hasData=JSON.parse(hasData);
|
||||
}
|
||||
//console.log(hasData,"hasData");
|
||||
if(hasData && hasData.length>10){
|
||||
let map=new Map();
|
||||
hasData.forEach(item=>{
|
||||
map.set(item.code, item.name);
|
||||
});
|
||||
context.commit('setResOwnerMap',map);
|
||||
}else{
|
||||
apiResowner.list(1,'').then(res=>{
|
||||
if(res.status === 200) {
|
||||
let map=new Map();
|
||||
res.result.forEach(item=>{
|
||||
map.set(item.code, item.name);
|
||||
});
|
||||
//console.log(map,map);
|
||||
sessionStorage.setItem('resOwnerMap',JSON.stringify(res.result));
|
||||
context.commit('setResOwnerMap', map);
|
||||
} else {
|
||||
console.log('资源归属获取失败!');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
35
src/store/modules/settings.js
Normal file
35
src/store/modules/settings.js
Normal file
@@ -0,0 +1,35 @@
|
||||
// import variables from '@/assets/styles/element-variables.scss'
|
||||
import defaultSettings from '@/settings'
|
||||
|
||||
const { sideTheme, showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings
|
||||
|
||||
const state = {
|
||||
theme: 'default',
|
||||
sideTheme: sideTheme,
|
||||
showSettings: showSettings,
|
||||
tagsView: tagsView,
|
||||
fixedHeader: fixedHeader,
|
||||
sidebarLogo: sidebarLogo
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
CHANGE_SETTING: (state, { key, value }) => {
|
||||
if (state.hasOwnProperty(key)) {
|
||||
state[key] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const actions = {
|
||||
changeSetting({ commit }, data) {
|
||||
commit('CHANGE_SETTING', data)
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
|
||||
95
src/store/modules/sysType.js
Normal file
95
src/store/modules/sysType.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import {getToken} from '@/utils/token'
|
||||
import apiType from '../../api/modules/type.js'
|
||||
|
||||
const state={
|
||||
sysTypeTree: [], //内容类型
|
||||
sysTypeMap:null
|
||||
}
|
||||
|
||||
const mutations={
|
||||
setSysTypeTree: (state, tree) => {
|
||||
state.sysTypeTree = tree
|
||||
},
|
||||
setSysTypeMap: (state, map) => {
|
||||
state.sysTypeMap = map
|
||||
},
|
||||
}
|
||||
const actions={
|
||||
getSysTypeTree({commit}) {
|
||||
return new Promise((resolve,reject)=>{
|
||||
if(state.sysTypeTree.length>0){
|
||||
resolve(state.sysTypeTree);
|
||||
}else{
|
||||
let hasData = sessionStorage.getItem('sysTypeTree');
|
||||
if(hasData){
|
||||
let treeData = JSON.parse(hasData);
|
||||
commit('setSysTypeTree', treeData);
|
||||
resolve(treeData);
|
||||
}else{
|
||||
apiType.tree(1).then(res=>{
|
||||
if(res.status === 200) {
|
||||
sessionStorage.setItem('sysTypeTree',JSON.stringify(res.result));
|
||||
commit('setSysTypeTree', res.result);
|
||||
//转化为map放到状态中
|
||||
let map=new Map();
|
||||
res.result.forEach(item=>{
|
||||
map.set(item.id, item.name);
|
||||
if(item.children && item.children!=''){
|
||||
item.children.forEach(child=>{
|
||||
map.set(child.id, child.name);
|
||||
if(child.children && child.children!=''){
|
||||
child.children.forEach(last=>{
|
||||
map.set(last.id, last.name);
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
commit('setSysTypeMap', map);
|
||||
resolve(res.result)
|
||||
} else {
|
||||
reject('资源归属获取失败!');
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
loadSysTypes(context){
|
||||
if(state.sysTypeMap==null){
|
||||
let hasData = sessionStorage.getItem('sysTypeMap');
|
||||
if(hasData){
|
||||
hasData=JSON.parse(hasData);
|
||||
}
|
||||
//console.log(hasData,"hasData");
|
||||
if(hasData && hasData.length>10){
|
||||
let map=new Map();
|
||||
hasData.forEach(item=>{
|
||||
map.set(item.id, item.name);
|
||||
});
|
||||
context.commit('setSysTypeMap',map);
|
||||
}else{
|
||||
apiType.list(1,'').then(res=>{
|
||||
if(res.status === 200) {
|
||||
let map=new Map();
|
||||
res.result.forEach(item=>{
|
||||
map.set(item.id, item.name);
|
||||
});
|
||||
//console.log(map,map);
|
||||
sessionStorage.setItem('sysTypeMap',JSON.stringify(res.result));
|
||||
context.commit('setSysTypeMap', map);
|
||||
} else {
|
||||
console.log('内容分类获取失败!');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
159
src/store/modules/tagsView.js
Normal file
159
src/store/modules/tagsView.js
Normal file
@@ -0,0 +1,159 @@
|
||||
const state = {
|
||||
visitedViews: [],
|
||||
cachedViews: []
|
||||
}
|
||||
|
||||
const mutations = {
|
||||
ADD_VISITED_VIEW: (state, view) => {
|
||||
if (state.visitedViews.some(v => v.path === view.path)) return
|
||||
state.visitedViews.push(
|
||||
Object.assign({}, view, {
|
||||
title: view.meta.title || 'no-name'
|
||||
})
|
||||
)
|
||||
},
|
||||
ADD_CACHED_VIEW: (state, view) => {
|
||||
if (state.cachedViews.includes(view.name)) return
|
||||
if (!view.meta.noCache) {
|
||||
state.cachedViews.push(view.name)
|
||||
}
|
||||
},
|
||||
|
||||
DEL_VISITED_VIEW: (state, view) => {
|
||||
for (const [i, v] of state.visitedViews.entries()) {
|
||||
if (v.path === view.path) {
|
||||
state.visitedViews.splice(i, 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
DEL_CACHED_VIEW: (state, view) => {
|
||||
const index = state.cachedViews.indexOf(view.name)
|
||||
index > -1 && state.cachedViews.splice(index, 1)
|
||||
},
|
||||
|
||||
DEL_OTHERS_VISITED_VIEWS: (state, view) => {
|
||||
state.visitedViews = state.visitedViews.filter(v => {
|
||||
return v.meta.affix || v.path === view.path
|
||||
})
|
||||
},
|
||||
DEL_OTHERS_CACHED_VIEWS: (state, view) => {
|
||||
const index = state.cachedViews.indexOf(view.name)
|
||||
if (index > -1) {
|
||||
state.cachedViews = state.cachedViews.slice(index, index + 1)
|
||||
} else {
|
||||
state.cachedViews = []
|
||||
}
|
||||
},
|
||||
|
||||
DEL_ALL_VISITED_VIEWS: state => {
|
||||
// keep affix tags
|
||||
const affixTags = state.visitedViews.filter(tag => tag.meta.affix)
|
||||
state.visitedViews = affixTags
|
||||
},
|
||||
DEL_ALL_CACHED_VIEWS: state => {
|
||||
state.cachedViews = []
|
||||
},
|
||||
|
||||
UPDATE_VISITED_VIEW: (state, view) => {
|
||||
for (let v of state.visitedViews) {
|
||||
if (v.path === view.path) {
|
||||
v = Object.assign(v, view)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const actions = {
|
||||
addView({ dispatch }, view) {
|
||||
dispatch('addVisitedView', view)
|
||||
dispatch('addCachedView', view)
|
||||
},
|
||||
addVisitedView({ commit }, view) {
|
||||
commit('ADD_VISITED_VIEW', view)
|
||||
},
|
||||
addCachedView({ commit }, view) {
|
||||
commit('ADD_CACHED_VIEW', view)
|
||||
},
|
||||
|
||||
delView({ dispatch, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
dispatch('delVisitedView', view)
|
||||
dispatch('delCachedView', view)
|
||||
resolve({
|
||||
visitedViews: [...state.visitedViews],
|
||||
cachedViews: [...state.cachedViews]
|
||||
})
|
||||
})
|
||||
},
|
||||
delVisitedView({ commit, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_VISITED_VIEW', view)
|
||||
resolve([...state.visitedViews])
|
||||
})
|
||||
},
|
||||
delCachedView({ commit, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_CACHED_VIEW', view)
|
||||
resolve([...state.cachedViews])
|
||||
})
|
||||
},
|
||||
|
||||
delOthersViews({ dispatch, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
dispatch('delOthersVisitedViews', view)
|
||||
dispatch('delOthersCachedViews', view)
|
||||
resolve({
|
||||
visitedViews: [...state.visitedViews],
|
||||
cachedViews: [...state.cachedViews]
|
||||
})
|
||||
})
|
||||
},
|
||||
delOthersVisitedViews({ commit, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_OTHERS_VISITED_VIEWS', view)
|
||||
resolve([...state.visitedViews])
|
||||
})
|
||||
},
|
||||
delOthersCachedViews({ commit, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_OTHERS_CACHED_VIEWS', view)
|
||||
resolve([...state.cachedViews])
|
||||
})
|
||||
},
|
||||
|
||||
delAllViews({ dispatch, state }, view) {
|
||||
return new Promise(resolve => {
|
||||
dispatch('delAllVisitedViews', view)
|
||||
dispatch('delAllCachedViews', view)
|
||||
resolve({
|
||||
visitedViews: [...state.visitedViews],
|
||||
cachedViews: [...state.cachedViews]
|
||||
})
|
||||
})
|
||||
},
|
||||
delAllVisitedViews({ commit, state }) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_ALL_VISITED_VIEWS')
|
||||
resolve([...state.visitedViews])
|
||||
})
|
||||
},
|
||||
delAllCachedViews({ commit, state }) {
|
||||
return new Promise(resolve => {
|
||||
commit('DEL_ALL_CACHED_VIEWS')
|
||||
resolve([...state.cachedViews])
|
||||
})
|
||||
},
|
||||
|
||||
updateVisitedView({ commit }, view) {
|
||||
commit('UPDATE_VISITED_VIEW', view)
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state,
|
||||
mutations,
|
||||
actions
|
||||
}
|
||||
218
src/store/modules/user.js
Normal file
218
src/store/modules/user.js
Normal file
@@ -0,0 +1,218 @@
|
||||
import { getToken, setToken, removeToken } from '@/utils/token'
|
||||
import app from '@/api/console.js'
|
||||
import apiLogin from '@/api/login.js'
|
||||
import apiMessage from '@/api/system/message.js'
|
||||
import apiCourse from "@/api/modules/course.js";
|
||||
import apiBoeCourse from "@/api/boe/course.js";
|
||||
import apiBoeLogout from "@/api/boe/login.js";
|
||||
|
||||
const user = {
|
||||
state: {
|
||||
info: { aid: '', loginName: '', name: '', avatar: '', userNo: '', departId: '', departName: '', departFullName: '',studyTotal:0,studyTotalH:0},
|
||||
identity: 2, // 1表学员,2表教师,3表管理员。目前只有3会被设置表示学员教师管理员身份都有
|
||||
msg:0,//未读消息数
|
||||
messagesBeReviewed: 0,//待审核的消息
|
||||
studyTaskCount:0,//学习任务数
|
||||
curIdentity: sessionStorage.getItem("curIdentity") == null ? 1 : sessionStorage.getItem("curIdentity"), // 用户当前选择的身份 1学员 2教师 3管理员
|
||||
permissions: []
|
||||
},
|
||||
mutations: {
|
||||
SET_Identity: (state, iden) => {
|
||||
state.identity = iden
|
||||
},
|
||||
SET_Msg: (state, m) => {
|
||||
state.msg = m
|
||||
},
|
||||
SET_MessagesBeReviewed: (state, m) => {
|
||||
state.messagesBeReviewed = m
|
||||
},
|
||||
SET_StudyTaskCount: (state, m) => {
|
||||
state.studyTaskCount = m
|
||||
//console.log(state)
|
||||
},
|
||||
SET_CurIdentity: (state, iden) => {
|
||||
state.curIdentity = iden
|
||||
sessionStorage.setItem("curIdentity", iden);
|
||||
},
|
||||
SET_UserInfo: (state, uinfo) => {
|
||||
state.info = uinfo
|
||||
},
|
||||
SET_PERMISSIONS: (state, permissions) => {
|
||||
state.permissions = permissions
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
refrashMsg({ commit }) {
|
||||
apiMessage.isRead().then(res=>{
|
||||
if(res.status==200){
|
||||
commit('SET_Msg',res.result);
|
||||
}else{
|
||||
console.log("读取未读消息失败:"+res.message);
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
refrashReviewed({ commit }) {
|
||||
apiCourse.countWaitAudit().then(res=>{
|
||||
if(res.status==200){
|
||||
commit('SET_MessagesBeReviewed',res.result);
|
||||
}else{
|
||||
console.log("读取待审核消息失败:"+res.message);
|
||||
}
|
||||
})
|
||||
},
|
||||
refrashStudyTaskCount({ commit }) {
|
||||
apiBoeCourse.cmtaskList({page:1,size:1}).then(res=>{
|
||||
if(res.status==200){
|
||||
let count = 0;
|
||||
if(res.result.count > 0){
|
||||
count = res.result.count;
|
||||
}
|
||||
commit('SET_StudyTaskCount',count);
|
||||
}else{
|
||||
console.log("读取学习任务数失败:"+res.message);
|
||||
}
|
||||
})
|
||||
},
|
||||
//设置用户身份
|
||||
SetIdentity({ commit }, iden) {
|
||||
return new Promise((resolve) => {
|
||||
commit('SET_Identity', iden);
|
||||
resolve();
|
||||
})
|
||||
},
|
||||
// 设置当前身份状态
|
||||
SetCurIdentity({ commit }, iden) {
|
||||
return new Promise((resolve) => {
|
||||
commit('SET_CurIdentity', iden);
|
||||
resolve();
|
||||
})
|
||||
},
|
||||
//登录
|
||||
Login({ commit }, userInfo) {
|
||||
const loginName = userInfo.loginName.trim()
|
||||
const password = userInfo.password
|
||||
const code = userInfo.code
|
||||
const key = userInfo.key
|
||||
let that = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
apiLogin.login(loginName, password, code,key).then(res => {
|
||||
if(res.status == 200){
|
||||
setToken(res.result.access_token);
|
||||
// 重置portal中case页面的阅读协议状态
|
||||
that.dispatch('portal/SetReadProtocol', false);
|
||||
}
|
||||
resolve(res);
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
//初始化框架数据,获取用户信息,用户菜单
|
||||
InitData({ commit, state }) {
|
||||
let token = getToken();
|
||||
return new Promise((resolve, reject) => {
|
||||
//console.log(token);
|
||||
app.initData().then(res =>{
|
||||
let studyTotalH = 0;// 小时显示
|
||||
let t1=parseFloat(res.result.studyTotal);
|
||||
let t2=parseFloat(res.result.learningDuration);
|
||||
if(t1 > 0 || t2 > 0){
|
||||
studyTotalH = parseFloat((t1 + t2)/ 3600).toFixed(1);
|
||||
}
|
||||
// 只保留二级
|
||||
let dfn = "";
|
||||
if(res.result.departFullName){
|
||||
let dfnArray = res.result.departFullName.split('/');
|
||||
if(dfnArray.length > 2){
|
||||
dfn = dfnArray[0] + "/" + dfnArray[1];
|
||||
}else{
|
||||
dfn = res.result.departFullName;
|
||||
}
|
||||
}
|
||||
const user = {
|
||||
aid: res.result.aid,
|
||||
sysId:res.result.sysId,
|
||||
name: res.result.name,
|
||||
avatar: res.result.avatar,
|
||||
sex:res.result.sex? res.result.sex:1,
|
||||
loginName: res.result.loginName,
|
||||
userNo: res.result.userNo,
|
||||
departId: res.result.departId,
|
||||
departName: res.result.departName,
|
||||
departFullName: dfn,
|
||||
studyTotal: res.result.studyTotal,
|
||||
studyTotalH:studyTotalH
|
||||
};
|
||||
// user.avatar = user.avatar == "" ? require("@/assets/images/user/default.png") : process.env.VUE_APP_FILE_BASE_URL + user.avatar;
|
||||
user.avatar = user.avatar == "" ? "" : process.env.VUE_APP_FILE_BASE_URL + user.avatar;
|
||||
commit('SET_UserInfo', user);
|
||||
commit('SET_Identity', res.result.userType);
|
||||
//console.log(user)
|
||||
resolve(res)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
//获取用户信息
|
||||
// GetUserInfo({ commit, state }) {
|
||||
// return new Promise((resolve, reject) => {
|
||||
// apiUser.getUserInfo(state.token).then(res => {
|
||||
// const user = {
|
||||
// aid: res.result.aid,
|
||||
// name: res.result.name,
|
||||
// avatar: res.result.avatar,
|
||||
// loginName: res.result.loginName,
|
||||
// userNo: res.result.userNo,
|
||||
// departId: res.result.departId,
|
||||
// departName: res.result.departName
|
||||
// };
|
||||
// user.avatar = user.avatar == "" ? require("@/assets/images/user/default.png") : process.env.VUE_APP_BASE_API + res.result.avatar;
|
||||
// commit('SET_UserInfo', user);
|
||||
// commit('SET_Identity', res.result.userType);
|
||||
// resolve(res)
|
||||
// }).catch(error => {
|
||||
// reject(error)
|
||||
// })
|
||||
// })
|
||||
// },
|
||||
//更新用户信息
|
||||
// UpdateUserInfo({ commit, state }, uinfo) {
|
||||
// return new Promise((resolve, reject) => {
|
||||
// apiUser.saveUserInfo(uinfo).then(res => {
|
||||
// commit('SET_UserInfo', uinfo);
|
||||
// resolve(res)
|
||||
// }).catch(error => {
|
||||
// reject(error)
|
||||
// })
|
||||
// })
|
||||
// },
|
||||
// 退出系统
|
||||
LogOut({ commit, state }) {
|
||||
return new Promise((resolve, reject) => {
|
||||
apiBoeLogout.logout();
|
||||
commit('SET_PERMISSIONS', [])
|
||||
removeToken()
|
||||
//resolve()
|
||||
|
||||
apiLogin.logout().then(() => {
|
||||
resolve()
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 前端 登出
|
||||
FedLogOut({ commit }) {
|
||||
return new Promise(resolve => {
|
||||
commit('SET_TOKEN', '')
|
||||
removeToken()
|
||||
resolve()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default user
|
||||
Reference in New Issue
Block a user