UNPKG

gxd-vue-library

Version:

依赖与element Ui插件库,聚福宝福利PC端插件库

145 lines (130 loc) 4.36 kB
'use strict'; import store from './../store' import setting from "./../../settings.js" class MainMiddleware { constructor($bus, helper,$vm){ this.$bus = window['JFB_BUS'] = $bus; this.$helper = helper; this.$vm = $vm; this.$messages = []; this.$allMessages = []; this.ajaxErrorMessageKey = 'ajaxErrorMessage'; this.saveAjaxErrorMessageMaxTime = 0.003; window.isJumpToProductList=[] //启动错误监听事件 this.ajaxErrorMessage(); if(store['_modulesNamespaceMap'] && store['_modulesNamespaceMap']['adminProduct/'] && store['_modulesNamespaceMap']['adminProduct/']['_rawModule'] && store['_modulesNamespaceMap']['adminProduct/']['_rawModule']['actions'] && store['_modulesNamespaceMap']['adminProduct/']['_rawModule']['actions']['jumpType'] && !setting.isCloseGetJumpType ) { this.getJumpType(); } if(this.$vm) { this.$vm.isJumpToProduct = this.isJumpToProduct; } } /** * @description 对象转url参数 * @param params */ jsonToParams(params={}) { let arr = []; Object.keys(params).map(key=>{ arr.push(`${key}=${params[key]}`) }); return arr; } deep(params){ return JSON.parse(JSON.stringify(params)) } copy(data) { let url = data let oInput = document.createElement('input') oInput.value = url document.body.appendChild(oInput) oInput.select() // 选择对象 document.execCommand("Copy") // 执行浏览器复制命令 oInput.remove(); this.$vm.$message({ message: '复制成功', type: 'success' }) } popAjaxErrorMessage(){ this.$allMessages = this.$allMessages.concat(JSON.parse(JSON.stringify(this.$messages))); let str = this.$messages.filter(item=> item.request_id).map(item=>{ return `<li>${item.request_id}${item.code} | ${item.message.slice(0,15)}</li>` }); let $messages = JSON.parse(JSON.stringify(this.$messages)); str = `<ul class="ajax-error-message_ul" style="margin: 0 0 0 20px; border: 0; padding: 0">${str.join('')}</ul>`; this.$vm.$confirm(str, '错误提示', { confirmButtonText: '复制错误信息', showCancelButton: false, showClose: false, closeOnClickModal: false, closeOnPressEscape: false, dangerouslyUseHTMLString: true, customClass:'ajax-error-message', type: 'error' }).then(() => { this.copy(JSON.stringify(this.$allMessages)) }).catch(() => {}); this.$messages = []; } ajaxErrorMessage(){ this.$bus.$on('ajaxMessage', (data)=>{ this.ajaxErrorMessagePush(data) }) } checkAjaxErrorMessageExpire(time){ let dayTime = this.saveAjaxErrorMessageMaxTime * 60 * 60 * 1000; console.log('save.max.time=', Math.floor(dayTime / 1000), 's') let newData = {}; let data = xdLocalStore.get(this.ajaxErrorMessageKey) || {}; Object.keys(data).map(t => { if (Number(t) + dayTime > time) { newData[t] = data[t]; } }); return newData; } ajaxErrorMessagePush(params){ let time = new Date().getTime(); //清除超过一天到数据 let newData = this.checkAjaxErrorMessageExpire(time) //设置当前数据 let newParams = null; if(this.$helper.checkVarType(params) === 'array' || this.$helper.checkVarType(params) === 'object' ) { newParams = this.deep(params) } else{ newParams = {params: params}; } newData[time] = {...newParams, localTime: new Date().toLocaleString(), show: false}; xdLocalStore.set(this.ajaxErrorMessageKey, newData) } async getJumpType() { try{ let isJumpToProductList = await store.dispatch('adminProduct/jumpType') window.isJumpToProductList = isJumpToProductList.data.list.length>0&&isJumpToProductList.data.list?isJumpToProductList.data.list.map(item=>{ console.log(item,'kkkkkkk'); return `${item.business_code}_${item.product_type}` }):[] console.log(window.isJumpToProductList,'2222-n'); }catch(e){ console.log(e,'getJumpType'); } } isJumpToProduct(type){ console.log(window.isJumpToProductList,'1111-n'); return !(window.isJumpToProductList.includes(type)); } } export default ($bus, helper, $vm)=>{ return window['$mainMiddleware'] = new MainMiddleware($bus, helper, $vm) }