import { mapActions, mapGetters } from 'vuex' import currency from 'currency.js' import { Calc, Format } from '@fujica/utils' export default { data() { return { // 全局格式化方法类 Format, // 全局计算 Calc, public_msgType: [ { id: '0', name: '立即返回' }, { id: '1', name: '业务返回' } ], public_projectType: [ { id: '0', name: '车场项目' }, { id: '1', name: '人行项目' } ], // public_cartype: [ // 车辆类型,待定 // { // id: 1, // name: '蓝牌车' // }, // { // id: 2, // name: '绿牌车' // }, // { // id: 3, // name: '黄牌车' // }, // { // id: 4, // name: '白牌车' // }, // { // id: 5, // name: '黑牌车' // }, // { // id: 6, // name: '其他' // } // ], public_cartype_obj: { 1: '蓝牌车', 2: '绿牌车', 3: '黄牌车', 4: '白牌车', 5: '黑牌车', 6: '其他' }, public_cartype1: [ // 车辆类型,待定 { id: 1, name: '小型车' }, { id: 2, name: '小型车' }, { id: 3, name: '大型车' }, { id: 4, name: '小型车' }, { id: 5, name: '小型车' }, { id: 6, name: '其他车' } ], public_cartype_obj1: { 1: '小型车', 2: '小型车', 3: '大型车', 4: '小型车', 5: '小型车', 6: '其他车' }, public_carcolor: [ // 车辆类型,待定 { id: 1, name: '蓝牌' }, { id: 2, name: '绿牌' }, { id: 3, name: '黄牌' }, { id: 4, name: '白牌' }, { id: 5, name: '黑牌' }, { id: 6, name: '其他' } ], public_carcolor_obj: { 1: '蓝牌', 2: '绿牌', 3: '黄牌', 4: '白牌', 5: '黑牌', 6: '其他' }, public_state: [ // 启用禁用状态 { id: 0, name: '禁用' }, { id: 1, name: '启用' } ], public_couponsource: [ // 优惠券种类 { id: 1, name: '电子优惠券' }, { id: 2, name: '纸质优惠券' }, { id: 3, name: '活动优惠券' }, { id: 4, name: '时段优惠券' }, { id: 10, name: '电子优惠券' } ], public_coupontype: [ // 优惠券类型 { id: 1, name: '全免' }, { id: 2, name: '当天全免' }, { id: 3, name: '金额减免' }, { id: 4, name: '小时减免' }, { id: 10, name: '平台时长优惠' } ], public_chargetype: [ // 计费类型 { id: 1, name: '长租车' }, { id: 2, name: '临停车' } ], public_chargetype_obj: { 1: '长租车', 2: '临停车' }, public_inout: [ // 进出类型 { id: 1, name: '入场' }, { id: 2, name: '出场' } ], public_inout_obj: { 1: '入场', 2: '出场' }, public_eventsource: [ // 事件来源 { id: 4, name: '车主呼叫' }, { id: 2, name: '超时转化' }, { id: 3, name: '视频转化' }, { id: 1, name: '实时触发' } ], public_eventsource_obj: { 1: '实时触发', 2: '超时转化', 3: '视频转化', 4: '车主呼叫' }, public_changeway: [ // 转化方式 { id: 0, name: '未转化' }, { id: 1, name: '自动转化' }, { id: 2, name: '手动转化' }, { id: 3, name: '现场恢复' } ], public_changeway_obj: { 0: '未转化', 1: '自动转化', 2: '手动转化', 3: '现场恢复' }, public_open_model: { // 开闸模式 1: '自动开闸', 2: '确认开闸', 3: '禁止入场/出场' }, public_time_type: { // 1: { // zh: '日', // en: 'day' // }, 2: { zh: '月', en: 'month' }, 3: { zh: '年', en: 'year' } }, public_free_time_list: [ { id: 1, num: 1, type: 2 }, { id: 2, num: 2, type: 2 }, { id: 3, num: 3, type: 2 }, { id: 4, num: 6, type: 2 }, { id: 5, num: 1, type: 3 } ], DICT_CODE: { devicename_type: '201', // 报警处理设备类别 alarm_type: '188', // 报警事件类型 public_cartype: '216', // 车牌颜色 cardvoucher_type: '237', // 卡凭证类型 device_state: '182', // 人行梯控设备状态 device_type: '201', // 人行梯控设备类型 message_type: '242', // 消息类型 platform_type: '226', // 开票平台类型 handle_method: '244', // 处理方式 event_status: '245', // 事件状态 convert_method: '246', // 转化方式 menusystem_type: '183', // 菜单管理-系统类型 lane_type: '274', // 通道类别 pay_way: '284', // 支付方式 pay_type: '284', // 支付方式 pay_type1: '211', // 支付类型 pay_type_db: '249', // 上海地标支付类型 pay_channel: '280', // 支付渠道 pay_source: '281' // 支付来源 }, // 缺省图 default_graph_small: require('@/assets/default_graph/graph_car_small.png'), default_graph_big: require('@/assets/default_graph/graph_car_big.png') } }, computed: { ...mapGetters(['public_dict', 'globalProject', 'globalUserInfo', 'globalFilter', 'globalCompany']), public_cartype() { const arr = this.public_dict[this.DICT_CODE.public_cartype] || [] arr.forEach(item => { item.id = parseInt(item.mycode) item.name = item.myname }) return arr }, globalProjectNo() { // 全局项目ID return this.globalProject.projectNo }, globalCompanyId() { // 全局企业ID【当前项目所属企业】 return this.isFujicaAdmin ? (this.$store.state.user.company?.id || 0) : this.globalUserInfo.companyId }, isFujicaAdmin() { // 超管用户 return this.globalUserInfo.companyId === 0 }, isCompanyAdmin() { // 企业超管 } }, methods: { ...mapActions('dict', { 'storeDictByCode': 'dict' }), // 公共获取文本方法 publicGetTxt(id, data, nulltxt) { const txt = id || id == 0 ? data.filter(item => item.id.toString() === id.toString())[0] : '' return txt ? txt.name || txt.myname : (nulltxt || '--') }, /* * 获取集合字段显示 * params: Array list * params: String filedName * */ getMultipleFiled(list, filedName) { if (!list?.length) return '--' return list.map(item => item[filedName] || '--').join(',') }, // 金额计算方法 floatNumCalc() { let sum = 0 for (var i = 0; i < arguments.length; i++) { const val = arguments[i] || 0 sum = currency(sum).add(val).value // .value 不显示.00 } return sum }, // 获取数字字典key值 增加单独处理 spe findValue(code, val, spe = false) { if (!val && val != 0) return '--' const obj = this.public_dict?.[code] ? this.public_dict[code].find(item => spe ? item.mycode.indexOf(val) > -1 : item.mycode == val) : {} return obj?.myname || '--' }, filterButton(str) { return this.$store.getters.operations.includes(str) }, /* 用于弹窗嵌套*/ _openLoading() { this._loadingInstance = this.$loading({ lock: true, text: '等待中...', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }) }, _closeLoading() { this._loadingInstance && this._loadingInstance.close() }, downloadExcel(res, name) { var blob, url, a if (res.success) { url = res.data a = document.createElement('a') a.href = url a.click() } if (!res.code) { blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' }) url = window.URL.createObjectURL(blob) a = document.createElement('a') if (res.headers['content-disposition']) { const fileName = res.headers['content-disposition'].split('=')[1] if (fileName) { const formatString = escape(fileName) const fname = decodeURI(formatString) a.download = fname } } // var timestamp = Date.parse(new Date()) // a.download = name + timestamp + '.xlsx' a.href = url a.click() window.URL.revokeObjectURL(url) } }, ruleTxt(type, rule) { // 优惠券规则文本拼接 var txt = '' switch (parseInt(type)) { case 1: { txt = '停车费全免' break } case 2: { txt = '入场当天停车费全免' break } case 3: { txt = '减免金额' + rule + '元' break } case 4: { txt = '减免时长' + rule + '小时' break } case 10: { txt = rule break } default: { txt = '--' } } return txt }, getDictTxt(list, code) { const obj = list.find(item => item.mycode == code) return obj ? obj.myname : '--' }, /* *@description: 根据秒转化为时分秒 *@params: time:传入的秒 require *@params: type: HH-MM-SS(00时00分00秒) HH-MM(00时00分) hh-mm-ss(0时0分0秒) hh-mm(0时0分) * */ formateTime(time, type = 'hhmmss') { if (!time) return time = parseInt(time) const h = Math.floor(time / 3600) const m = Math.floor((time / 60 % 60)) const s = Math.floor((time % 60)) const hh = h < 10 ? '0' + h : h const mm = m < 10 ? '0' + m : m const ss = s < 10 ? '0' + s : s const hhmmss = `${h > 0 ? h + '时' : ''}${m > 0 ? m + '分' : ''}${s > 0 ? s + '秒' : ''}` const HHMMSS = `${h > 0 ? hh + '时' : ''}${m > 0 ? mm + '分' : ''}${s > 0 ? ss + '秒' : ''}` const hhmm = `${h > 0 ? h + '时' : ''}${m > 0 ? m + '分' : ''}` const HHMM = `${h > 0 ? hh + '时' : ''}${m > 0 ? mm + '分' : ''}` return { hhmmss, HHMMSS, hhmm, HHMM }[type] }, exportnotify(val,res) { const _this = this if (val) { this.$notify({ title: '数据导入/出成功', dangerouslyUseHTMLString: true, message: `请前往【数据中心/导入导出结果】查看结果`, onClick: function() { _this.$router.push({ path: '/exportlist/exportlist' }) } }) } else { if(res.code == '1000000'){ this.$notify({ title: '存在错误数据', dangerouslyUseHTMLString: true, message: `请前往【数据/导入导出报表中心】查看结果`, onClick: function() { _this.$router.push({ path: '/exportlist/exportlist' }) } }) }else{ this.$message.error(res.msg || '操作失败') } } } } }