gxd-uni-library-editx 1.0.69 → 1.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/XdCardV2/XdCardV2.vue +1 -0
- package/src/components/XdConfirm/XdConfirm.vue +8 -5
- package/src/utils/StyleForm.js +1 -1
- package/src/utils/helper.js +37 -2
- package/src/utils/xd.base.js +14 -0
- package/src/utils/xd.common.js +7 -7
- package/src/utils/xdWxLog.js +13 -1
- package/src/utils/xdWxLog.js.tpl +302 -0
package/package.json
CHANGED
|
@@ -82,11 +82,14 @@
|
|
|
82
82
|
]),
|
|
83
83
|
...mapState({
|
|
84
84
|
currentStyle:(state)=>{
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
if(state.currentStyle !== null) {
|
|
86
|
+
let style = {};
|
|
87
|
+
Object.keys(state.currentStyle).map(key=>{
|
|
88
|
+
style[`$${key}`] = state.currentStyle[key];
|
|
89
|
+
});
|
|
90
|
+
return style
|
|
91
|
+
}
|
|
92
|
+
return {}
|
|
90
93
|
}
|
|
91
94
|
})
|
|
92
95
|
|
package/src/utils/StyleForm.js
CHANGED
package/src/utils/helper.js
CHANGED
|
@@ -812,6 +812,13 @@ class Helpers {
|
|
|
812
812
|
}
|
|
813
813
|
|
|
814
814
|
replacePathForDir(url){
|
|
815
|
+
//#ifndef H5
|
|
816
|
+
return url
|
|
817
|
+
//#endif
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
//#ifdef H5
|
|
815
822
|
let siteDomain = `${window.location.protocol}//${window.location.host}`;
|
|
816
823
|
let dir = '';
|
|
817
824
|
if(store.state.brandInfo && store.state.brandInfo.deploy_dir) {
|
|
@@ -830,6 +837,7 @@ class Helpers {
|
|
|
830
837
|
else return `${siteDomain}${url.replace(reg, '')}`;
|
|
831
838
|
}
|
|
832
839
|
return url;
|
|
840
|
+
//#endif
|
|
833
841
|
}
|
|
834
842
|
|
|
835
843
|
/**
|
|
@@ -1035,13 +1043,38 @@ class Helpers {
|
|
|
1035
1043
|
}
|
|
1036
1044
|
}
|
|
1037
1045
|
|
|
1046
|
+
/**
|
|
1047
|
+
* @description 特殊翻译
|
|
1048
|
+
*/
|
|
1049
|
+
async specialApiTranform(obj, cb){
|
|
1050
|
+
let reg = /(-apiuri\/v)/;
|
|
1051
|
+
//需要转化的特殊访问地址
|
|
1052
|
+
if(reg.test(obj.url)){
|
|
1053
|
+
store.dispatch('getSpecialApiTranform',{url: obj.url})
|
|
1054
|
+
.then(res=>{
|
|
1055
|
+
//链接地址
|
|
1056
|
+
if(res.type === 'url' && res.value){
|
|
1057
|
+
obj.url = res.value;
|
|
1058
|
+
cb(obj)
|
|
1059
|
+
}
|
|
1060
|
+
})
|
|
1061
|
+
.catch(err=>{
|
|
1062
|
+
console.error(err);
|
|
1063
|
+
});
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
else cb(obj);
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1038
1069
|
/**
|
|
1039
1070
|
* @description 保留当前页面,跳转到应用内的某个页面 https://uniapp.dcloud.io/api/router?id=navigateto
|
|
1040
1071
|
* @param obj 与uni.navigateTo的Object参数相同
|
|
1041
1072
|
* @param redirect 是否添加当前页面地址路径最为回调地址
|
|
1042
1073
|
*/
|
|
1043
1074
|
navigateTo(obj = {}, redirect) {
|
|
1044
|
-
this.
|
|
1075
|
+
this.specialApiTranform(obj,(res)=>{
|
|
1076
|
+
this.handleTo(res, redirect);
|
|
1077
|
+
})
|
|
1045
1078
|
}
|
|
1046
1079
|
|
|
1047
1080
|
/**
|
|
@@ -1097,7 +1130,9 @@ class Helpers {
|
|
|
1097
1130
|
* @param notHistory h5使用window.location.replace() H5生效
|
|
1098
1131
|
*/
|
|
1099
1132
|
redirectTo(obj, redirect, notHistory=false) {
|
|
1100
|
-
this.
|
|
1133
|
+
this.specialApiTranform(obj,(res)=>{
|
|
1134
|
+
this.handleTo(res, redirect,notHistory);
|
|
1135
|
+
})
|
|
1101
1136
|
}
|
|
1102
1137
|
|
|
1103
1138
|
/**
|
package/src/utils/xd.base.js
CHANGED
|
@@ -604,6 +604,20 @@ export function isWechat() {
|
|
|
604
604
|
return false
|
|
605
605
|
}
|
|
606
606
|
|
|
607
|
+
/**
|
|
608
|
+
* @description 判断是否为企业微信环境
|
|
609
|
+
* @return {boolean}
|
|
610
|
+
*/
|
|
611
|
+
export function isWechatWork(){
|
|
612
|
+
//#ifdef H5
|
|
613
|
+
let ua = window.navigator.userAgent.toLowerCase();
|
|
614
|
+
return (ua.indexOf('micromessenger') !== -1 //是否为微信客户端
|
|
615
|
+
|| ua.indexOf("miniProgram") !== -1) //是否为webview
|
|
616
|
+
&& ua.indexOf('wxwork') !== -1
|
|
617
|
+
// #endif
|
|
618
|
+
return false
|
|
619
|
+
}
|
|
620
|
+
|
|
607
621
|
/**
|
|
608
622
|
* @description 判断客户端是不是微信客户端
|
|
609
623
|
* @returns {boolean}
|
package/src/utils/xd.common.js
CHANGED
|
@@ -209,12 +209,12 @@ export function handlePesponse(
|
|
|
209
209
|
/**
|
|
210
210
|
* @type {Vue}
|
|
211
211
|
*/
|
|
212
|
-
let $vm = (getApp().globalData && getApp().globalData.$vm) || null;
|
|
212
|
+
let $vm = (getApp() && getApp().globalData && getApp().globalData.$vm) || null;
|
|
213
213
|
let useTime = new Date().getTime() - request.start;
|
|
214
214
|
let requestInfo = xdGetPesponseParams(request, response);
|
|
215
215
|
|
|
216
216
|
//长连接(耗时连接)
|
|
217
|
-
if (getApp().globalData
|
|
217
|
+
if (getApp() && getApp().globalData
|
|
218
218
|
&& getApp().globalData.$store
|
|
219
219
|
&& typeof getApp().saveLogs === 'function'
|
|
220
220
|
&& !checkNotLogs(request.options)
|
|
@@ -261,7 +261,7 @@ export function handlePesponse(
|
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
//记录错误日志
|
|
264
|
-
if (typeof getApp().saveLogs === 'function'
|
|
264
|
+
if (getApp() && typeof getApp().saveLogs === 'function'
|
|
265
265
|
&& !checkNotLogs(request.options)
|
|
266
266
|
) {
|
|
267
267
|
getApp().saveLogs(requestInfo, 'alert', 'ajax');
|
|
@@ -342,7 +342,7 @@ export function handlePesponse(
|
|
|
342
342
|
}
|
|
343
343
|
|
|
344
344
|
//记录错误日志
|
|
345
|
-
if (typeof getApp().saveLogs === 'function'
|
|
345
|
+
if (getApp() && typeof getApp().saveLogs === 'function'
|
|
346
346
|
&& !checkNotLogs(request.options)
|
|
347
347
|
) {
|
|
348
348
|
getApp().saveLogs(requestInfo, 'alert', 'ajax');
|
|
@@ -360,7 +360,7 @@ export function handlePesponse(
|
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
//记录错误日志
|
|
363
|
-
if (typeof getApp().saveLogs === 'function'
|
|
363
|
+
if (getApp() && typeof getApp().saveLogs === 'function'
|
|
364
364
|
&& !checkNotLogs(request.options)
|
|
365
365
|
) {
|
|
366
366
|
getApp().saveLogs(requestInfo, 'alert', 'ajax');
|
|
@@ -392,7 +392,7 @@ export function handlePesponse(
|
|
|
392
392
|
//记录错误日志
|
|
393
393
|
//statusCode === undefined 并且 忽略:.json静态文件和请求返沪时间小雨15秒的
|
|
394
394
|
if(!uriIgnoreErrors(request.options.url, useTime)) {
|
|
395
|
-
if (typeof getApp().saveLogs === 'function'
|
|
395
|
+
if (getApp() && typeof getApp().saveLogs === 'function'
|
|
396
396
|
&& !checkNotLogs(request.options)
|
|
397
397
|
) {
|
|
398
398
|
getApp().saveLogs(requestInfo, 'alert', 'ajax');
|
|
@@ -402,7 +402,7 @@ export function handlePesponse(
|
|
|
402
402
|
|
|
403
403
|
if (!$vm) {
|
|
404
404
|
reject(response);
|
|
405
|
-
|
|
405
|
+
console.warn(message)
|
|
406
406
|
} else {
|
|
407
407
|
$vm.$xdHideLoading();
|
|
408
408
|
reject(response);
|
package/src/utils/xdWxLog.js
CHANGED
|
@@ -5,7 +5,7 @@ import {runtime} from "@/common/runtime";
|
|
|
5
5
|
const settings = require('./../../settings');
|
|
6
6
|
const md5 = require('md5');
|
|
7
7
|
import Vue from 'vue';
|
|
8
|
-
import store from "@/store";
|
|
8
|
+
import store from "@/store/index";
|
|
9
9
|
import {
|
|
10
10
|
baseIsEmpty,
|
|
11
11
|
baseJsDateToTime,
|
|
@@ -46,6 +46,18 @@ class Logs {
|
|
|
46
46
|
return typeof uni.setStorageSync === 'function';
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
setProject(pos, params){
|
|
50
|
+
console.warn(`${pos}:${JSON.stringify(params)}`)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
getParams(data){
|
|
54
|
+
return {}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
setARMSError(error){
|
|
58
|
+
console.error(error)
|
|
59
|
+
}
|
|
60
|
+
|
|
49
61
|
|
|
50
62
|
checkApiHost() {
|
|
51
63
|
if (typeof getApp !== 'function') return false;
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
import {Base64} from 'js-base64';
|
|
3
|
+
import {runtime} from "@/common/runtime";
|
|
4
|
+
|
|
5
|
+
const settings = require('./../../settings');
|
|
6
|
+
const md5 = require('md5');
|
|
7
|
+
import Vue from 'vue';
|
|
8
|
+
import store from "@/store";
|
|
9
|
+
import {
|
|
10
|
+
baseIsEmpty,
|
|
11
|
+
baseJsDateToTime,
|
|
12
|
+
baseGetHost
|
|
13
|
+
} from "@/utils/xd.base";
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
let logInstance = null;
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Logs {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.initDone = false; //是否已加载uni.request和brandInfo['api_host']完成
|
|
22
|
+
this.checkcount = 0; //最大检查1000次
|
|
23
|
+
this.startcount = 0; //最大检查可以上传日志次数
|
|
24
|
+
this.checkMaxWaitTime = 1000;
|
|
25
|
+
//this.check();
|
|
26
|
+
this.saveUploadedLog = [];
|
|
27
|
+
this.onUpdateKeyword = [
|
|
28
|
+
'$vm', //跟uniApp uni.createSelectorQuery() 有关
|
|
29
|
+
"e.x", //跟uniApp滚动组件有关
|
|
30
|
+
'null is not an object (evaluating', //跟uniApp滚动组件有关
|
|
31
|
+
"Cannot read property 'x' of ",// 跟uniApp滚动组件有关
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
//#ifdef H5
|
|
35
|
+
this.initH5GlobalEvent()
|
|
36
|
+
//#endif
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
checkUniRequest() {
|
|
40
|
+
if (typeof uni === 'undefined') return false;
|
|
41
|
+
return typeof uni.request === 'function';
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
checkUniSetStorage() {
|
|
45
|
+
if (typeof uni === 'undefined') return false;
|
|
46
|
+
return typeof uni.setStorageSync === 'function';
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
checkApiHost() {
|
|
51
|
+
if (typeof getApp !== 'function') return false;
|
|
52
|
+
if (typeof getApp().globalData === "undefined") return false;
|
|
53
|
+
if (typeof getApp().globalData.$xd === 'undefined') return false;
|
|
54
|
+
if (typeof getApp().globalData.$xd['brandInfo'] === 'undefined') return false;
|
|
55
|
+
return typeof getApp().globalData.$xd['brandInfo']['api_host'] !== 'undefined';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
check() {
|
|
59
|
+
let timer = setInterval(() => {
|
|
60
|
+
if ((this.checkUniRequest() && this.checkApiHost())
|
|
61
|
+
|| this.checkcount > this.checkMaxWaitTime
|
|
62
|
+
) {
|
|
63
|
+
this.initDone = true;
|
|
64
|
+
if (this.checkUniRequest() && this.checkApiHost()) {
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
this.checkBeforeStart();
|
|
67
|
+
}, 2000)
|
|
68
|
+
}
|
|
69
|
+
clearInterval(timer);
|
|
70
|
+
} else {
|
|
71
|
+
this.checkcount++;
|
|
72
|
+
}
|
|
73
|
+
}, 10)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
checkBeforeStart() {
|
|
77
|
+
let timer = setInterval(() => {
|
|
78
|
+
if (this.startcount > this.checkMaxWaitTime) {
|
|
79
|
+
clearTimeout(timer);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (getApp().globalData.$xd['userInfo'] !== undefined
|
|
83
|
+
&& !baseIsEmpty(getApp().globalData.$xd['userInfo'])
|
|
84
|
+
) {
|
|
85
|
+
this.goBeforeUploadLogs();
|
|
86
|
+
clearTimeout(timer);
|
|
87
|
+
} else {
|
|
88
|
+
this.startcount++;
|
|
89
|
+
}
|
|
90
|
+
}, 10)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
goBeforeUploadLogs() {
|
|
94
|
+
let logsSave = uni.getStorageInfoSync();
|
|
95
|
+
let logs = [];
|
|
96
|
+
logsSave.keys.map((key) => {
|
|
97
|
+
if (key.indexOf('xd.log.') === 0) {
|
|
98
|
+
logs.push(key);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
logs.map((key) => {
|
|
102
|
+
let logStorage = uni.getStorageSync(key);
|
|
103
|
+
let system = this.getSystemInfo();
|
|
104
|
+
|
|
105
|
+
this.ajaxLogs({
|
|
106
|
+
baseApi: getApp().globalData.$xd.brandInfo['api_host'],
|
|
107
|
+
level: logStorage.level,
|
|
108
|
+
content: JSON.stringify({
|
|
109
|
+
...system,
|
|
110
|
+
date: baseJsDateToTime(new Date().getTime() / 1000),
|
|
111
|
+
...logStorage.logs
|
|
112
|
+
})
|
|
113
|
+
})
|
|
114
|
+
uni.removeStorageSync(key);
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
getSystemInfo() {
|
|
120
|
+
console.log(getApp().globalData.$xd.userInfo);
|
|
121
|
+
let userInfo = {};
|
|
122
|
+
let ext = {};
|
|
123
|
+
if (getApp().globalData
|
|
124
|
+
&& getApp().globalData.$xd
|
|
125
|
+
&& getApp().globalData.$xd.userInfo
|
|
126
|
+
) {
|
|
127
|
+
userInfo = Base64.encodeURI(JSON.stringify(getApp().globalData.$xd.userInfo));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
//#ifdef MP-WEIXIN
|
|
131
|
+
if (!baseIsEmpty(uni.getExtConfigSync())) {
|
|
132
|
+
ext = Base64.encodeURI(JSON.stringify(uni.getExtConfigSync()));
|
|
133
|
+
}
|
|
134
|
+
//#endif
|
|
135
|
+
|
|
136
|
+
const {
|
|
137
|
+
SDKVersion,
|
|
138
|
+
model,
|
|
139
|
+
system,
|
|
140
|
+
version,
|
|
141
|
+
deviceOrientation
|
|
142
|
+
} = uni.getSystemInfoSync();
|
|
143
|
+
|
|
144
|
+
console.log(userInfo, ext, uni.getSystemInfoSync());
|
|
145
|
+
return {
|
|
146
|
+
platform: 'weixin',
|
|
147
|
+
project: settings.system,
|
|
148
|
+
SDKVersion,
|
|
149
|
+
model,
|
|
150
|
+
system,
|
|
151
|
+
version,
|
|
152
|
+
deviceOrientation,
|
|
153
|
+
userInfo,
|
|
154
|
+
ext,
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @description 上报日志
|
|
161
|
+
* @param log {Object} 上报日志内容
|
|
162
|
+
* @param type {String} 上报日志内容类型
|
|
163
|
+
* type = global(全局错误)
|
|
164
|
+
* type = onerror(系统捕获全局错误信息)
|
|
165
|
+
* type = promise(异步请求全局捕获错误)
|
|
166
|
+
* type = info(普通日志上报错误)
|
|
167
|
+
* type = debug(上报调试日志)
|
|
168
|
+
* type = ajax(返回异步请求字符串错误)
|
|
169
|
+
* type = unkown(返回异步请求字符串错误)
|
|
170
|
+
* tyoe = setting.error (项目配置错误)
|
|
171
|
+
* type = entry.index (记录访问首页入口来源)
|
|
172
|
+
* type = ajax.default {记录异步请求不知道的code的值}
|
|
173
|
+
* @param level {String} 上报级别 alert|info|debug
|
|
174
|
+
*/
|
|
175
|
+
push(log, level = 'alert', type = "info") {
|
|
176
|
+
if (level === 'debug') {
|
|
177
|
+
if (settings.isDebug) {
|
|
178
|
+
level = 'info';
|
|
179
|
+
type = 'debug';
|
|
180
|
+
} else return;
|
|
181
|
+
}
|
|
182
|
+
type = `handle.${type}`;
|
|
183
|
+
if (!this.initDone) {
|
|
184
|
+
this.saveLog({log, type, level});
|
|
185
|
+
} else {
|
|
186
|
+
this.updateLog(log, type, level);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
ajaxLogs(data) {
|
|
191
|
+
store['dispatch']('saveLogs', data)
|
|
192
|
+
.then(res => {
|
|
193
|
+
})
|
|
194
|
+
.catch(res => {
|
|
195
|
+
})
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* @description 上报日志
|
|
200
|
+
* @param log
|
|
201
|
+
* @param type
|
|
202
|
+
* @param level
|
|
203
|
+
*/
|
|
204
|
+
updateLog(log, type, level) {
|
|
205
|
+
console.log(log, type, level);
|
|
206
|
+
let system = this.getSystemInfo();
|
|
207
|
+
if (level === 'info') system = {}
|
|
208
|
+
let logs = {...system, type, ...log};
|
|
209
|
+
let key = 'xd.log.' + md5(JSON.stringify(logs));
|
|
210
|
+
if (!this.saveUploadedLog.includes(key)) {
|
|
211
|
+
this.ajaxLogs({
|
|
212
|
+
baseApi: getApp().globalData.$xd.brandInfo['api_host'],
|
|
213
|
+
level: level,
|
|
214
|
+
content: JSON.stringify({
|
|
215
|
+
date: baseJsDateToTime(new Date().getTime() / 1000),
|
|
216
|
+
...logs
|
|
217
|
+
}),
|
|
218
|
+
});
|
|
219
|
+
this.saveUploadedLog.push(key);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
saveLog({log, type, level}) {
|
|
224
|
+
let logs = {type, before: true, ...log};
|
|
225
|
+
let key = 'xd.log.' + md5(JSON.stringify(logs));
|
|
226
|
+
if (this.checkUniSetStorage()) {
|
|
227
|
+
uni.setStorageSync(key, {logs, level});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
checkMessage(error) {
|
|
232
|
+
let errorStr = error;
|
|
233
|
+
if (Object.prototype.toString.call(error) === '[object Error]') {
|
|
234
|
+
errorStr = JSON.stringify(runtime().getErrorInfo(error));
|
|
235
|
+
}
|
|
236
|
+
if (Object.prototype.toString.call(error) === '[object String]') {
|
|
237
|
+
errorStr = error;
|
|
238
|
+
}
|
|
239
|
+
if (Object.prototype.toString.call(error) === '[object Object]') {
|
|
240
|
+
errorStr = JSON.stringify(error);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
let isUpdate = true;
|
|
244
|
+
this.onUpdateKeyword.map((keyword) => {
|
|
245
|
+
if (errorStr.indexOf(keyword) !== -1) {
|
|
246
|
+
isUpdate = false
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
return isUpdate === false ? isUpdate : Base64.encodeURI(errorStr);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
initH5GlobalEvent() {
|
|
253
|
+
/**vue捕获全局错误**/
|
|
254
|
+
this.vueErrorHandler();
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* @description vue全局报错
|
|
259
|
+
*/
|
|
260
|
+
vueErrorHandler() {
|
|
261
|
+
Vue.config.errorHandler = (error, vm) => {
|
|
262
|
+
let messageStr = this.checkMessage(error);
|
|
263
|
+
if (messageStr !== false) {
|
|
264
|
+
this.push(
|
|
265
|
+
{error: messageStr},
|
|
266
|
+
'alert',
|
|
267
|
+
'global'
|
|
268
|
+
)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* @description 统一Promise catch处理
|
|
276
|
+
* @param error {Error|String} 错误对象(new Error())|字符串当为字符串时候,全局捕获不会处理
|
|
277
|
+
* @param callback 回调事件
|
|
278
|
+
*/
|
|
279
|
+
catch(error, callback = null) {
|
|
280
|
+
let messageStr = logInstance.checkMessage(error);
|
|
281
|
+
if (messageStr !== false) {
|
|
282
|
+
logInstance.push(
|
|
283
|
+
{error: messageStr},
|
|
284
|
+
'alert',
|
|
285
|
+
'catch'
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
if (typeof callback === 'function') callback()
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function xdWxlog() {
|
|
293
|
+
if (logInstance === null) {
|
|
294
|
+
logInstance = new Logs();
|
|
295
|
+
}
|
|
296
|
+
return logInstance;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
export default xdWxlog();
|
|
301
|
+
|
|
302
|
+
|