import request from '../api' import store from '../store' import { Message } from 'element-ui' const dict = { url: "/dictionary/queryValsByCodeList", loading: [], resolves: [], getStorage() { const dicts = JSON.parse(localStorage.getItem('dicts') || null) return dicts?.data || dicts || []; }, setUrl(v) { this.url = v }, getData(codeList) { codeList = [codeList].flat().filter(Boolean).toString() return request.post(this.url, null, { withoutToken: true, params: {codeList} }).then(res => res?.data && this.setStorage(res.data)) }, load(...code) { return new Promise(resolve => { this.resolves.push(resolve) if (this.loading.length == 2) { const [timer, codes] = this.loading; clearTimeout(timer) code = Array.from(new Set([codes, code].flat())) } const timer = setTimeout(() => { this.getData(code).then(() => Promise.all(this.resolves.map(e => e())).then(() => this.resolves = [])) }, 500) this.loading = [timer, code] }) }, setStorage(data) { let ds = this.getStorage() data.map(p => { if (ds.some(d => d.key == p.key)) { const index = ds.findIndex(d => d.key == p.key) ds.splice(index, 1, p) } else { ds.push(p) } }) localStorage.setItem("dicts", JSON.stringify([ds].flat())) }, getDict(key) { let dict = this.getStorage().find(e => e.key == key) !dict && console.warn("字典%s缺少加载...", key) return dict ? dict.values : [] }, getValue(key, label) { let dict = this.getDict(key) if (dict) { let item = dict.find(v => v.dictName == label) return item ? item.dictValue : label } else return label }, getLabel(key, value) { let dict = this.getDict(key) if (dict) { let item = dict.find(v => v.dictValue == value) return item ? item.dictName : value } else return value }, getColor(key, value) { let dict = this.getDict(key) if (dict) { let item = dict.find(v => v.dictValue == value) return item ? item.dictColor : value } else return value }, } const dateUtil = { timestampToTime(timestamp) { // 时间戳为10位需*1000,时间戳为13位不需乘1000 let date = new Date(timestamp); let Y = date.getFullYear() + "-"; let M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-"; let D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " "; let h = date.getHours() + ":"; let m = date.getMinutes() + ":"; let s = date.getSeconds(); return Y + M + D + h + m + s; } } const userCheck = () => { store.dispatch('getUserInfo').then(res => { return new Promise((resolve, reject) => { if (res.data.flag != 1) { Message.error('您的账号未激活或已失效,请激活后使用') this.$store.commit('setActiveDlgShow', true) reject('您的账号未激活或已失效,请激活后使用') return false } if (res.data.type != 4 && this.$store.state.mallId != this.$store.state.userInfo.mallId) { Message.error('您当前登录的TEMU账号与会员绑定账号不一致') reject('您当前登录的TEMU账号与会员绑定账号不一致') return false } resolve(res.data) }) }) } export default { dict, dateUtil, userCheck }