import { queryDictData, queryCustomerDictData, queryLogo, queryH5Logo } from '@/api/dict' import cache from '@/utils/cache' import store from '../index' const STORE_DICT_NAME = 'store-dict' const SET_DICT = 'SET_DICT' export default { namespaced: true, state: { isInited: false, dict: { SEX_OPTIONS: [ { name: '男', value: 1 }, { name: '女', value: 2 } ], CARD_TYPE: [ { name: '居民身份证', value: 'IDCARD' }, { name: '户口簿', value: 'HOUSEHOLD' }, { name: '中国人民解放军军人身份证件', value: 'PLAIDCARD' }, { name: '中国人民武装警察身份证件', value: 'CAPFIDCARD' }, { name: '港澳居民来往内地通行证', value: 'HKIDCARD' }, { name: '台湾居民来往大陆通行证', value: 'TAIBAOZHENG' }, { name: '外国公民护照', value: 'PASSPORT' }, { name: '港澳居民居住证', value: 'HKRESIDENCECARD' }, { name: '台湾居民居住证', value: 'TWRESIDENCECARD' } ], COMPANY_TYPE: [ { name: '国有企业', value: '0' }, { name: '集体所有制', value: '1' }, { name: '私营企业', value: '2' }, { name: '有限责任公司', value: '3' }, { name: '股份有限公司', value: '4' }, { name: '有限合伙企业', value: '5' }, { name: '联营企业', value: '6' }, { name: '外商投资企业', value: '7' }, { name: '个人独资企业', value: '8' }, { name: '其他', value: '9' } ], INDUSTRY_TYPE: [ { name: '农、林、牧、渔业', value: '0' }, { name: '采矿业', value: '1' }, { name: '制造业', value: '2' }, { name: '电力、热力、燃气及水生产和供应业', value: '3' }, { name: '建筑业', value: '4' }, { name: '批发和零售业', value: '5' }, { name: '交通运输、仓储和邮政业', value: '6' }, { name: '住宿和餐饮业', value: '7' }, { name: '信息传输、软件和信息技术服务业', value: '8' }, { name: '金融业', value: '9' }, { name: '房地产业', value: '10' }, { name: '租赁和商务服务业', value: '11' }, { name: '科学研究和技术服务业', value: '12' }, { name: '水利、环境和公共设施管理业', value: '13' }, { name: '居民服务、修理和其他服务业', value: '14' }, { name: '教育', value: '15' }, { name: '卫生和社会工作', value: '16' }, { name: '文化、体育和娱乐业', value: '17' }, { name: '公共管理、社会保障和社会组织', value: '18' }, { name: '国际组织', value: '19' }, { name: '其他', value: '20' } ], COMPANY_CERT_TYPE: [ { name: '统一社会信用代码', value: '0' }, { name: '组织机构代码证', value: '1' }, { name: '营业执照', value: '2' }, { name: '事业单位法人证书或者社会团体法人登记证书', value: '3' } ], // 业务类型 businessType: [ { name: '自然人新车实名认证', value: '1' }, // 自然人 { name: '自然人二手车实名认证', value: '2' }, // 自然人 { name: '企业新车实名认证', value: '3' }, // 企业实名 { name: '车企新车实名认证', value: '4' }, // 企业实名 { name: '企业责任人变更', value: '5' }, // 企业负责人变更 { name: '车主解绑', value: '6' }, // 自然人 { name: '二手车主解绑', value: '7' }, // 自然人 { name: '车企实名解绑', value: '8' }, { name: '设备更换', value: '9' }, { name: '一车多卡绑定', value: '10' }, { name: '重新绑定', value: '11' }, { name: '企业解绑', value: '12' } ], ...cache.get(STORE_DICT_NAME, {}) }, logo: '', agreement: {}, isInitLogo: false }, mutations: { /** * 设置当前是否是nfc设备 */ [SET_DICT](state, payload) { state.dict = { ...state.dict, ...payload } // 标记当前已经初始化过了 state.isInited = true cache.set(STORE_DICT_NAME, state.dict) }, SET_LOGO(state, payload) { state.logo = payload }, SET_AGREEMENT(state, payload) { state.agreement = payload } }, actions: { /** * 初始化字典项 */ async initDict({ commit, state }) { // 如果当前已经加载过字典项 if (state.isInited) { return } try { // 获取字典项的值 const respData = await (store.getters.loginUser.type === 'C' ? queryCustomerDictData : queryDictData)() // 等待上传的字典项 const dict = {} // 将所有字段取出 Object.keys(respData).forEach(key => { switch (key) { case 'certType': dict['CARD_TYPE'] = respData[key].map(item => ({ name: item.label, value: item.value })) break case 'companyCertType': dict['COMPANY_CERT_TYPE'] = respData[key].map(item => ({ name: item.label, value: item.value })) break case 'companyType': dict['COMPANY_TYPE'] = respData[key].map(item => ({ name: item.label, value: item.value })) break case 'industryType': dict['INDUSTRY_TYPE'] = respData[key].map(item => ({ name: item.label, value: item.value })) break default: dict[key] = respData[key].map(item => ({ name: item.label, value: item.value })) break } }) // 开始设置 commit(SET_DICT, dict) } catch (error) { console.error(error) } }, /** * 获取logo */ async getLogo({ commit, state }, payload) { // 如果当前查询过 if (state.isInitLogo && !payload.force) { return } try { const respData = await (payload.isCustomer ? queryH5Logo : queryLogo)() commit('SET_LOGO', respData.logoH5 ? respData.logoH5.fileUrl : '') commit('SET_AGREEMENT', respData) state.isInitLogo = true } catch (error) { console.error(error) } } } }