gxd-vue-library
Version:
依赖与element Ui插件库,聚福宝福利PC端插件库
145 lines (130 loc) • 4.36 kB
JavaScript
;
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)
}