123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- import App from '@/main.js'
- import cookies from 'weapp-cookie'
- import * as API from '@/api/login'
- import { CloudFindPwd } from '@/api/cloud.js'
- import {
- AdminQueryLoginUser,
- AdminRoleAuth,
- QueryMobileModuleSetting,
- QueryCompanyConfig
- } from '@/api/admin'
- import { GetNavConfig } from '@/api/base.js'
- import check_permission from '@/utils/permission.js'
- import { isEmpty } from '@/utils/types'
- import { navLibList, getNavList } from '@/utils/data.js'
- import { DEFAULT_NAV_CONFIG } from '@/config.js'
- const state = {
- userInfo: {},
- token: null,
- companyList: [],
- loginTypes: null,
- authData: null,
- serviceNav: [], // 导航栏
- navConfig: DEFAULT_NAV_CONFIG, // 导航栏配置
- fileterData: {}, // 高级筛选本地缓存
- expirationInfo: {
- companyLogo: null,
- companyName: null,
- endTime: null,
- endDay: null
- },
- showExpiration: false
- }
- const getters = {
- userInfo: state => state.userInfo,
- companyList: state => state.companyList,
- authData: state => state.authData,
- serviceNav: state => state.serviceNav,
- navConfig: state => state.navConfig,
- fileterData: state => state.fileterData,
- expirationInfo: state => state.expirationInfo,
- showExpiration: state => state.showExpiration
- }
- const actions = {
- /**
- * 登录
- */
- login({
- commit,
- dispatch
- }, data) {
- return new Promise((resolve, reject) => {
- API.login(data).then(res => {
- if (res) {
- // 记录用户名
- uni.setStorageSync('username', data.username)
- console.log('login res: ', res)
- if (res.hasOwnProperty('companyList')) {
- // 多公司登陆
- commit('SET_COMPANY_LIST', res.companyList)
- resolve(2)
- } else {
- // 单个公司登陆
- commit('SET_TOKEN', res.adminToken || '')
- dispatch('setUserData').then(() => {
- resolve(1)
- }).catch(() => {
- reject('网络错误,请稍后重试')
- })
- }
- } else {
- reject('账号或密码错误!')
- }
- }).catch(error => {
- console.log('err', error)
- reject('网络错误,请稍后重试')
- })
- })
- },
- /**
- * 选择企业登录
- */
- chooseLogin({
- commit,
- dispatch
- }, data) {
- return new Promise((resolve, reject) => {
- API.chooseLogin(data).then(res => {
- if (res) {
- console.log('login res: ', res)
- // 单个公司登陆
- commit('SET_TOKEN', res.adminToken || '')
- dispatch('setUserData').then(() => {
- resolve(1)
- }).catch(() => {
- reject('网络错误,请稍后重试')
- })
- } else {
- reject('账号或密码错误!')
- }
- }).catch(error => {
- console.log('err', error)
- reject('网络错误,请稍后重试')
- })
- })
- },
- /**
- * 忘记密码
- */
- forgetPwd({
- commit,
- dispatch
- }, params) {
- return new Promise((resolve, reject) => {
- CloudFindPwd(params).then(res => {
- console.log('find res : ', res)
- if (res.length > 0) {
- if (res.length === 1) {
- // 单个公司重置密码
- resolve(res[0].companyId)
- } else {
- // 多公司重置密码
- commit('SET_COMPANY_LIST', res)
- resolve(-1)
- }
- }
- }).catch(err => {
- reject(err)
- })
- })
- },
- /**
- * 登录用户信息
- */
- setUserData({
- dispatch,
- commit
- }) {
- commit('SET_NAV_FOOTER', [])
- commit('SET_AUTH_LIST')
- return new Promise((resolve, reject) => {
- Promise.all([
- AdminQueryLoginUser(), // 获取用户信息
- AdminRoleAuth(), // 获取用户权限数据
- QueryCompanyConfig(), // 企业信息
- GetNavConfig() // 获取导航配置信息
- ]).then(res => {
- let userInfo = res[0]
- let authList = res[1]
- let companyConfig = res[2]
- let navConfig = isEmpty(res[3]) ? {} : res[3][0]
- commit('SET_USER_INFO', userInfo) // 用户信息
- commit('SET_AUTH_LIST', authList) // 权限信息
- commit('SAVE_FILTER_DATA', uni.getStorageSync('filterData'))
- commit('SET_NAV_FOOTER', {
- ...DEFAULT_NAV_CONFIG,
- ...navConfig
- })
- dispatch('base/startHeartbeat', null, { root: true })
- commit('SET_EXPIRATION_INFO', companyConfig)
- if (companyConfig.endDay) {
- setTimeout(() => {
- commit('SET_EXPIRATION', true)
- }, 2000)
- }
- resolve()
- }).catch(() => {
- reject()
- })
- })
- }
- }
- const mutations = {
- SET_COMPANY_LIST(state, data) {
- state.companyList = data
- },
- SET_AUTH_LIST(state, data) {
- if (data) {
- state.authData = data
- uni.setStorageSync('auth', data)
- } else {
- state.authData = uni.getStorageSync('auth') || {}
- }
- },
- /**
- * 保存用户信息
- */
- SET_USER_INFO(state, data) {
- if (!data) {
- try {
- state.userInfo = uni.getStorageSync('userInfo') || {}
- } catch (e) {
- state.userInfo = {}
- }
- } else {
- try {
- uni.setStorageSync('userInfo', data)
- } catch {
- console.log('set error')
- }
- state.userInfo = data || {}
- }
- if (state.userInfo.hasOwnProperty('companyId')) {
- uni.setStorageSync('companyId', state.userInfo.companyId)
- }
- },
- /**
- * 保存登录信息
- */
- SET_TOKEN(state, data) {
- if (!data) {
- state.token = uni.getStorageSync('token') || null
- } else {
- uni.setStorageSync('token', data)
- state.token = data
- }
- },
- SET_NAV_FOOTER(state, data) {
- if (isEmpty(data)) {
- data = DEFAULT_NAV_CONFIG
- }
- const nav = data.nav || DEFAULT_NAV_CONFIG.nav
- if (!nav.includes(12)) {
- nav.push(12)
- }
- if (nav.length > 5) {
- nav.splice(4, nav.length - 5)
- }
- state.serviceNav = getNavList(nav)
- state.navConfig = data
- uni.setStorageSync('navConfig', data)
- },
- SAVE_FILTER_DATA(state, data) {
- state.fileterData = {
- ...state.fileterData,
- ...data
- }
- // console.log('SAVE_FILTER_DATA', state.fileterData)
- uni.setStorageSync('filterData', state.fileterData)
- },
- SET_EXPIRATION_INFO(state, data = false) {
- state.expirationInfo = data
- },
- /**
- * 更新到期提醒状态
- */
- SET_EXPIRATION(state, data = false) {
- state.showExpiration = data
- },
- CLEAR_DATA(state) {
- state.userInfo = {}
- state.token = null
- state.companyList = []
- state.loginTypes = null
- state.authData = null
- state.serviceNav = DEFAULT_NAV_CONFIG
- state.fileterData = {}
- cookies.clearCookies()
- App.$clearStorage()
- }
- }
- export default {
- namespaced: true,
- state,
- getters,
- actions,
- mutations
- }
|