|
@@ -13,6 +13,8 @@ import router, {
|
|
|
resetRouter
|
|
|
} from '@/router'
|
|
|
import Layout from '@/layout'
|
|
|
+import { getProjectList } from '@/apiV2/project'
|
|
|
+import { getCompanyProjectList } from '@/apiV2/company'
|
|
|
const state = {
|
|
|
token: getToken(),
|
|
|
name: '',
|
|
@@ -21,7 +23,13 @@ const state = {
|
|
|
roles: [],
|
|
|
topnav: '',
|
|
|
toplist: [],
|
|
|
- operations: []
|
|
|
+ operations: [],
|
|
|
+ userInfo: {}, // 当前用户信息
|
|
|
+ companyList: [], // 公司列表
|
|
|
+ company: {}, // 当前公司
|
|
|
+ projectList: [], // 项目列表
|
|
|
+ project: {}, // 当前项目
|
|
|
+ globalFilter: true, // 是否开启企业/项目筛选
|
|
|
}
|
|
|
/**
|
|
|
* 添加动态(菜单)路由
|
|
@@ -87,6 +95,16 @@ const mutations = {
|
|
|
},
|
|
|
SET_OPERATION: (state, operations) => {
|
|
|
state.operations = operations
|
|
|
+ },
|
|
|
+ SET_USERINFO: (state, userinfo) => {
|
|
|
+ state.userInfo = userinfo
|
|
|
+ },
|
|
|
+ SET_PROJECT: (state, project) => {
|
|
|
+ state.project = project
|
|
|
+ localStorage.setItem('globalProject', JSON.stringify(project))
|
|
|
+ },
|
|
|
+ SET_COMPANY: (state, project) => {
|
|
|
+ state.company = project
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -127,6 +145,7 @@ const actions = {
|
|
|
const data = response
|
|
|
localStorage.setItem('manager-userLogin', JSON.stringify(data.data))
|
|
|
// localStorage.setItem('manager-companyId', JSON.stringify(response.data.enterprise.id))
|
|
|
+ commit('SET_USERINFO', data.data)
|
|
|
if (!data) {
|
|
|
reject('Verification failed, please Login again.')
|
|
|
}
|
|
@@ -142,6 +161,9 @@ const actions = {
|
|
|
commit('SET_AVATAR', avatar)
|
|
|
commit('SET_INTRODUCTION', introduction) */
|
|
|
commit('SET_ROLES', 'admin')
|
|
|
+ commit('SET_NAME', 'andy')
|
|
|
+ commit('SET_AVATAR', 'zhoudong')
|
|
|
+ commit('SET_INTRODUCTION', '第一个应用')
|
|
|
commit('SET_OPERATION', menus)
|
|
|
resolve(data)
|
|
|
}).catch(error => {
|
|
@@ -260,6 +282,91 @@ const actions = {
|
|
|
resolve(rtnArr)
|
|
|
})
|
|
|
})
|
|
|
+ },
|
|
|
+
|
|
|
+ setProject({ commit }, project) {
|
|
|
+ commit('SET_PROJECT', project)
|
|
|
+ window.location.reload()
|
|
|
+ // Bus.emit('projectChange', project)
|
|
|
+ },
|
|
|
+
|
|
|
+ async getProject({ state, dispatch }) {
|
|
|
+ const projectStr = localStorage.getItem('globalProject')
|
|
|
+ const isAdmin = state.userInfo.companyId === 0
|
|
|
+ /* 设置全局默认项目 */
|
|
|
+ if (isAdmin) { // 企业 + 项目
|
|
|
+ const setProjectByLocal = () => { // 设置项目(通过本地缓存)
|
|
|
+ const localProject = JSON.parse(projectStr)
|
|
|
+ let localProjectError = true
|
|
|
+ state.companyList.filter(company => company.projects?.length).map(company => {
|
|
|
+ const project = company.projects.find(project => project.projectNo === localProject.projectNo)
|
|
|
+ if (project) { // 项目合法
|
|
|
+ setCP(company, project)
|
|
|
+ localProjectError = false
|
|
|
+ console.log('PROJCET(local):', state.project)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(localProjectError) setProjectByRemote()
|
|
|
+ }
|
|
|
+ const setProjectByRemote = () => { // 设置项目(取接口第一个)
|
|
|
+ const company = state.companyList.find(company => company.projects?.length)
|
|
|
+ if (company) {
|
|
|
+ setCP(company, company.projects[0])
|
|
|
+ }
|
|
|
+ console.log('PROJCET(remote):', state.project)
|
|
|
+ }
|
|
|
+ const setCP = (company, project) => { // 设置企业+项目
|
|
|
+ state.company = company
|
|
|
+ // company存在,要切到项目状态,右上角才会显示
|
|
|
+ state.project = project
|
|
|
+ state.projectList = company.projects
|
|
|
+ }
|
|
|
+ const res = await getCompanyProjectList()
|
|
|
+ if (res.success) {
|
|
|
+ state.companyList = res.data
|
|
|
+ if (projectStr) { // 缓存
|
|
|
+ try {
|
|
|
+ setProjectByLocal()
|
|
|
+ } catch (err) {
|
|
|
+ console.error(err)
|
|
|
+ setProjectByRemote()
|
|
|
+ }
|
|
|
+ } else { // 接口
|
|
|
+ setProjectByRemote()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else { // 项目
|
|
|
+ const setProjectByRemote = () => {
|
|
|
+ if (state.projectList[0]) state.project = state.projectList[0] // dispatch('setProject', state.projectList[0])
|
|
|
+ else state.project = {} // dispatch('setProject', {})
|
|
|
+ }
|
|
|
+ const res = await getProjectList({ companyId: state.userInfo.companyId })
|
|
|
+ state.company = { id: state.userInfo.companyId, name: state.userInfo.companyName }
|
|
|
+ state.projectList = res.data || []
|
|
|
+ if (projectStr) { // 缓存
|
|
|
+ try {
|
|
|
+ const localProject = JSON.parse(projectStr)
|
|
|
+ const project = state.projectList.find(project => project.projectNo === localProject.projectNo)
|
|
|
+ if (project) { // 项目合法
|
|
|
+ state.project = project // dispatch('setProject', project)
|
|
|
+ } else {
|
|
|
+ setProjectByRemote()
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ setProjectByRemote()
|
|
|
+ }
|
|
|
+ } else { // 接口
|
|
|
+ setProjectByRemote()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return state.project
|
|
|
+ },
|
|
|
+ toggleGlobalFilter({ state, dispatch }, value = false) {
|
|
|
+ console.log(`GLOBAL_FILTER`, value)
|
|
|
+ state.globalFilter = value
|
|
|
+ },
|
|
|
+ closeGlobalFilter({ state, dispatch }) {
|
|
|
+ dispatch('toggleGlobalFilter', false)
|
|
|
}
|
|
|
}
|
|
|
|