user.js 15.4 KB
import Vue from 'vue'
import { login, logout, phoneLogin } from "@/api/login"
import { ACCESS_TOKEN, USER_NAME, USER_INFO, USER_AUTH, SYS_BUTTON_AUTH } from "@/store/mutation-types"
import { welcome } from "@/utils/util"
import { queryPermissionsByUser } from '@/api/api'
import { querySelectionByParentCodeList } from '@/api/configApi'
import { getAction } from '@/api/manage'

const user = {
  state: {
    token: '',
    username: '',
    realname: '',
    welcome: '',
    avatar: '',
    permissionList: [],
    info: {},
    selectList: []
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_NAME: (state, { username, realname, welcome }) => {
      state.username = username
      state.realname = realname
      state.welcome = welcome
    },
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar
    },
    SET_PERMISSIONLIST: (state, permissionList) => {
      state.permissionList = permissionList
    },
    SET_INFO: (state, info) => {
      state.info = info
    },
  },

  actions: {
    // CAS验证登录
    ValidateLogin({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        getAction("/cas/client/validateLogin", userInfo).then(response => {
          console.log("----cas 登录--------", response);
          if (response.success) {
            const result = response.result
            const userInfo = result.userInfo
            Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
            Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
            Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
            commit('SET_TOKEN', result.token)
            commit('SET_INFO', userInfo)
            commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname, welcome: welcome() })
            commit('SET_AVATAR', userInfo.avatar)
            resolve(response)
          } else {
            resolve(response)
          }
        }).catch(error => {
          reject(error)
        })
      })
    },
    // 登录
    Login({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        login(userInfo).then(response => {
          // console.log("登录了啊",response.result.userInfo.id)
          if (response.status.statusCode == 0) {
            // console.log("11111",response.status.statusCode)
            localStorage.setItem("userId", response.result.userInfo.id)
            const result = response.result
            const userInfo = result.userInfo
            Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
            Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
            Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
            commit('SET_TOKEN', result.token)
            commit('SET_INFO', userInfo)
            commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname, welcome: welcome() })
            commit('SET_AVATAR', userInfo.avatar)
            resolve(response)
          } else {
            reject(response)
          }
        }).catch(error => {
          reject(error)
        })
      })
    },
    //手机号登录
    PhoneLogin({ commit }, userInfo) {
      return new Promise((resolve, reject) => {
        phoneLogin(userInfo).then(response => {
          if (response.code == '200') {
            const result = response.result
            const userInfo = result.userInfo
            Vue.ls.set(ACCESS_TOKEN, result.token, 7 * 24 * 60 * 60 * 1000)
            Vue.ls.set(USER_NAME, userInfo.username, 7 * 24 * 60 * 60 * 1000)
            Vue.ls.set(USER_INFO, userInfo, 7 * 24 * 60 * 60 * 1000)
            commit('SET_TOKEN', result.token)
            commit('SET_INFO', userInfo)
            commit('SET_NAME', { username: userInfo.username, realname: userInfo.realname, welcome: welcome() })
            commit('SET_AVATAR', userInfo.avatar)
            resolve(response)
          } else {
            reject(response)
          }
        }).catch(error => {
          reject(error)
        })
      })
    },
    // 获取用户信息
    GetPermissionList({ commit }) {
      return new Promise((resolve, reject) => {
        let v_token = Vue.ls.get(ACCESS_TOKEN);
        let params = { token: v_token };
        queryPermissionsByUser(params).then(response => {
          const menuData = response.result.menu;
          const authData = response.result.auth;
          const allAuthData = response.result.allAuth;
          //Vue.ls.set(USER_AUTH,authData);
          sessionStorage.setItem(USER_AUTH, JSON.stringify(authData));
          sessionStorage.setItem(SYS_BUTTON_AUTH, JSON.stringify(allAuthData));
          if (menuData && menuData.length > 0) {
            commit('SET_PERMISSIONLIST', menuData)
          } else {
            reject('getPermissionList: permissions must be a non-null array !')
          }
          resolve(response)
        }).catch(error => {
          reject(error)
        })
      })
    },

    // 登出
    Logout({ commit, state }) {
      return new Promise((resolve) => {
        let logoutToken = state.token;
        commit('SET_TOKEN', '')
        commit('SET_PERMISSIONLIST', [])
        Vue.ls.remove(ACCESS_TOKEN)
        //console.log('logoutToken: '+ logoutToken)
        logout(logoutToken).then(() => {
          //var sevice = "http://"+window.location.host+"/";
          //var serviceUrl = encodeURIComponent(sevice);
          //window.location.href = window._CONFIG['casPrefixUrl']+"/logout?service="+serviceUrl;
          resolve()
          console.log("执行了吗")
        }).catch(() => {
          resolve()
        })
      })
    },
    // 获取下拉及表格转换数据
    commonSelectData({ commit, state }) {
      // 有几个值,我改了一下,可以获取状态是无效的。因为后续展示和查询的,需要状态无效的也一起。如果你们需要有效的,在后面增加_1.
      // DB_COLLECTION_INFO  进件流
      // DB_BUSINESS_CHANNEL 业务渠道
      // DB_COOPERATION_PLATFORM 合作平台
      // DB_PRODUCT_CATEGORY 产品类别
      // DB_BUSINESS_DEPARTMENT 业务部门
      // DB_FUND 资金方
      return new Promise((resolve, reject) => {
        let params = ["CREDIT_APPLY_SOURCE",
          "CREDIT_APPLY_STATUS",
          "BUSINESS_DEPARTMENT",
          "CREDIT_CERT_CODE",
          "CREDIT_CERT_DETAIL_CODE",
          'CONTRACT_TEMPLATE_TYPE',
          'DB_FUND',
          'DB_COLLECTION_INFO',
          'DB_BUSINESS_CHANNEL',
          'DB_COOPERATION_PLATFORM',
          'DB_PRODUCT_CATEGORY',
          'CREDIT_DETAIL_CERT_STATUS',
          'SELECTION_RELATION',
          'DB_BUSINESS_CHANNEL_1',
          'DB_COOPERATION_PLATFORM_1',
          'DB_PRODUCT_CATEGORY_1',
          'FUND_APPROVAL',
          'PHONE_CHECK_LOAN_TYPE_CODE',
          'PHONE_CHECK_COST_TYPE_CODE',
          'CREDIT_APPLY_APPROVAL_STATUS',
          'LOAN_APPLY_STATUS_CODE',
          'DB_REMIT_APPLY_STATUS',
          'DB_PAYMENT_WAY',
          'DB_TIME_POINT',
          'DB_PRODUCT_TYPE',
          'DB_REPAYMENT_TYPE',
          'DB_REMIT_ACCOUNT_TYPE',
          'DB_SHOW_PAY_STATUS',
          'DB_BILL_TYPE',
          'DB_REPAY_CHANNEL',
          'DB_REPAY_PAY_STATUS',
          'DB_REPAY_SOURCE',
          'CREDIT_TRANS_TYPE',
          'CREDIT_TRANS_DIRECTION',
          'DUANXINLEIXING',
          'REPAYMENT_TYPE'
        ];
        querySelectionByParentCodeList(params).then(response => {
          //console.log("码表怎么是空?",response.result.result)
          const selectList = response.result.result
          const intoStatus = response.result.result[0] ? response.result.result[0].optionList : [] // 进件来源
          const applyWayStatus = response.result.result[1] ? response.result.result[1].optionList : [] // 进件状态
          const programOffices = response.result.result[2] ? response.result.result[2].optionList : [] // 组织机构
          const creditCertCode = response.result.result[3] ? response.result.result[3].optionList : [] // 认证节点
          const creditCertDetailCode = response.result.result[4] ? response.result.result[4].optionList : [] // 节点服务
          const contractTemplateType = response.result.result[5] ? response.result.result[5].optionList : []// 合同模板
          const dbFund = response.result.result[6] ? response.result.result[6].optionList : [] // 资金方 
          const dbCollectionInfo = response.result.result[7] ? response.result.result[7].optionList : [] // 进件流编号 
          const dbBusinessChannel = response.result.result[8] ? response.result.result[8].optionList : [] // 业务线名称 
          const dbCooPerationPlatform = response.result.result[9] ? response.result.result[9].optionList : [] // 合作平台
          const dbProductCategory = response.result.result[10] ? response.result.result[10].optionList : [] // 产品分类
          const creditDetailCertStatus = response.result.result[11] ? response.result.result[11].optionList : [] // 认证结果
          const selectTionRelation = response.result.result[12] ? response.result.result[12].optionList : [] // 与联系人关系
          const dbBusinessChannel_1 = response.result.result[13] ? response.result.result[13].optionList : [] // 业务线名称 已启用
          const dbCooPerationPlatform_1 = response.result.result[14] ? response.result.result[14].optionList : []//合作平台 已启用
          const dbProductCategory_1 = response.result.result[15] ? response.result.result[15].optionList : [] // 产品分类 已启用
          const dbfundApproval = response.result.result[16] ? response.result.result[16].optionList : [] // 资金方 未知
          const phoneCheckLoanTypeCode = response.result.result[17] ? response.result.result[17].optionList : [] // 电核负债类型
          const phoneCheckCostTypeCode = response.result.result[18] ? response.result.result[18].optionList : [] // 电核成本类型
          const creditApplyApprovalStatus = response.result.result[19] ? response.result.result[19].optionList : [] // 授信审批状态
          const loanApplyStatusCode = response.result.result[20] ? response.result.result[20].optionList : [] // 借款/用信审批状态
          const dbRemitApplyStatus = response.result.result[21] ? response.result.result[21].optionList : [] // 放款状态
          const dbPaymentWay = response.result.result[22] ? response.result.result[22].optionList : [] // 放款方式
          const dbTimePoint = response.result.result[23] ? response.result.result[23].optionList : [] // 收费模式
          const dbProductType = response.result.result[24] ? response.result.result[24].optionList : [] // 产品类型(放款管理)
          const dbRepaymentType = response.result.result[25] ? response.result.result[25].optionList : [] // 还款方式
          const dbRemitAccountType = response.result.result[26] ? response.result.result[26].optionList : [] // 放款账户类型
          const dbShowPayStatus = response.result.result[27] ? response.result.result[27].optionList : [] // 还款状态
          const dbBillType = response.result.result[28] ? response.result.result[28].optionList : [] // 账单类型
          const dbRepayChannel = response.result.result[29] ? response.result.result[29].optionList : [] // 还款方式  账单管理用
          const dbRepayPayStatus = response.result.result[30] ? response.result.result[30].optionList : [] // 还款状态 账单管理用
          const dbRepaySource = response.result.result[31] ? response.result.result[31].optionList : [] // 还款类型 账单管理用
          const transType = response.result.result[32] ? response.result.result[32].optionList : [] // 额度管理 交易流水 业务操作
          const transDirection = response.result.result[33] ? response.result.result[33].optionList : [] // 额度管理 交易流水 额度(增/减)
          const duanxinType = response.result.result[34] ? response.result.result[34].optionList : [] // 短信类型
          const repayment = response.result.result[35] ? response.result.result[35].optionList : [] //还款方式 审批页面
          sessionStorage.setItem('SELECTLIST', JSON.stringify(selectList));
          sessionStorage.setItem('APPLYWAYSTATUS', JSON.stringify(applyWayStatus));
          sessionStorage.setItem('INTOSTATUS', JSON.stringify(intoStatus));
          sessionStorage.setItem('PROGRAMOFFICES', JSON.stringify(programOffices));
          sessionStorage.setItem('CREDITCERTCODE', JSON.stringify(creditCertCode));
          sessionStorage.setItem('CREDITCERTDETAILCODE', JSON.stringify(creditCertDetailCode));
          sessionStorage.setItem('CONTRACTTEMPLATETYPE', JSON.stringify(contractTemplateType));
          sessionStorage.setItem('DBFUND', JSON.stringify(dbFund));
          sessionStorage.setItem('DB_COLLECTION_INFO', JSON.stringify(dbCollectionInfo));
          sessionStorage.setItem('DB_BUSINESS_CHANNEL', JSON.stringify(dbBusinessChannel));
          sessionStorage.setItem('DB_COOPERATION_PLATFORM', JSON.stringify(dbCooPerationPlatform));
          sessionStorage.setItem('DB_PRODUCT_CATEGORY', JSON.stringify(dbProductCategory));
          sessionStorage.setItem('CREDIT_DETAIL_CERT_STATUS', JSON.stringify(creditDetailCertStatus));
          sessionStorage.setItem('SELECTION_RELATION', JSON.stringify(selectTionRelation));
          sessionStorage.setItem('DB_BUSINESS_CHANNEL_1', JSON.stringify(dbBusinessChannel_1));
          sessionStorage.setItem('DB_COOPERATION_PLATFORM_1', JSON.stringify(dbCooPerationPlatform_1));
          sessionStorage.setItem('DB_PRODUCT_CATEGORY_1', JSON.stringify(dbProductCategory_1));
          sessionStorage.setItem('FUND_APPROVAL', JSON.stringify(dbfundApproval));
          sessionStorage.setItem('PHONE_CHECK_LOAN_TYPE_CODE', JSON.stringify(phoneCheckLoanTypeCode));
          sessionStorage.setItem('PHONE_CHECK_COST_TYPE_CODE', JSON.stringify(phoneCheckCostTypeCode));
          sessionStorage.setItem('CREDIT_APPLY_APPROVAL_STATUS', JSON.stringify(creditApplyApprovalStatus));
          sessionStorage.setItem('LOAN_APPLY_STATUS_CODE', JSON.stringify(loanApplyStatusCode));
          sessionStorage.setItem('DB_REMIT_APPLY_STATUS', JSON.stringify(dbRemitApplyStatus));
          sessionStorage.setItem('DB_PAYMENT_WAY', JSON.stringify(dbPaymentWay));
          sessionStorage.setItem('DB_TIME_POINT', JSON.stringify(dbTimePoint));
          sessionStorage.setItem('DB_PRODUCT_TYPE', JSON.stringify(dbProductType));
          sessionStorage.setItem('DB_REPAYMENT_TYPE', JSON.stringify(dbRepaymentType));
          sessionStorage.setItem('DB_REMIT_ACCOUNT_TYPE', JSON.stringify(dbRemitAccountType));
          sessionStorage.setItem('DB_SHOW_PAY_STATUS', JSON.stringify(dbShowPayStatus));
          sessionStorage.setItem('DB_BILL_TYPE', JSON.stringify(dbBillType));
          // alert("aa",JSON.stringify(dbBillType))
          sessionStorage.setItem('DB_REPAY_CHANNEL', JSON.stringify(dbRepayChannel));
          sessionStorage.setItem('DB_REPAY_PAY_STATUS', JSON.stringify(dbRepayPayStatus));
          sessionStorage.setItem('DB_REPAY_SOURCE', JSON.stringify(dbRepaySource));
          sessionStorage.setItem('CREDIT_TRANS_TYPE', JSON.stringify(transType));
          sessionStorage.setItem('CREDIT_TRANS_DIRECTION', JSON.stringify(transDirection));
          sessionStorage.setItem('DUANXINLEIXING', JSON.stringify(duanxinType));
          sessionStorage.setItem('REPAYMENT_TYPE', JSON.stringify(repayment));
          resolve(response)
        }).catch(error => {
          reject(error)
        })
      })
    }
  }
}

export default user