@hzab/data-model 1.7.3 → 1.7.5

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/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # @hzab/data-model@1.7.5
2
+
3
+ fix: array-data-model 数据报错异常处理
4
+
5
+ # @hzab/data-model@1.7.4
6
+
7
+ fix: axios 拦截优化,解决请求取消异常问题
8
+
1
9
  # @hzab/data-model@1.7.3
2
10
 
3
11
  fix: axios 统一
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/data-model",
3
- "version": "1.7.3",
3
+ "version": "1.7.5",
4
4
  "description": "data model",
5
5
  "main": "src",
6
6
  "scripts": {
@@ -2,7 +2,10 @@ import _ from "lodash";
2
2
 
3
3
  import { objToFormData, formDataToObj, _$Temp } from "./utils";
4
4
  import ArrayUtils, { STATE_CODE } from "./ArrayUtils";
5
-
5
+ const errMsg = {
6
+ 404: "未找到对应子项",
7
+ 501: "未传入表单id",
8
+ };
6
9
  /**
7
10
  * ArrayDataModel 本地数据 DataModel
8
11
  */
@@ -172,11 +175,14 @@ class ArrayDataModel extends ArrayUtils {
172
175
  if (res === STATE_CODE.SUC) {
173
176
  let _res = {};
174
177
  if (this.createResMap) {
175
- _res = this.createResMap();
178
+ _res = this.createResMap(res);
176
179
  }
177
180
  resolve(_res);
178
181
  } else {
179
- reject(res);
182
+ reject({
183
+ code: res,
184
+ _message: errMsg[res] || "未知错误",
185
+ });
180
186
  }
181
187
  });
182
188
  }
@@ -193,11 +199,14 @@ class ArrayDataModel extends ArrayUtils {
193
199
  if (res === STATE_CODE.SUC) {
194
200
  let _res = {};
195
201
  if (this.updateResMap) {
196
- _res = this.updateResMap();
202
+ _res = this.updateResMap(res);
197
203
  }
198
204
  resolve(_res);
199
205
  } else {
200
- reject(res);
206
+ reject({
207
+ code: res,
208
+ _message: errMsg[res] || "未知错误",
209
+ });
201
210
  }
202
211
  });
203
212
  }
@@ -214,11 +223,14 @@ class ArrayDataModel extends ArrayUtils {
214
223
  if (res === STATE_CODE.SUC) {
215
224
  let _res = {};
216
225
  if (this.patchResMap) {
217
- _res = this.patchResMap();
226
+ _res = this.patchResMap(res);
218
227
  }
219
228
  resolve(_res);
220
229
  } else {
221
- reject(res);
230
+ reject({
231
+ code: res,
232
+ _message: errMsg[res] || "未知错误",
233
+ });
222
234
  }
223
235
  });
224
236
  }
@@ -240,16 +252,17 @@ class ArrayDataModel extends ArrayUtils {
240
252
  const { _idKey } = this;
241
253
  const id = config[_idKey] || config.params?.[_idKey] || config.data?.[_idKey] || ctx[_idKey];
242
254
  const res = this.delItem(id);
243
- console.log("res", res);
244
-
245
255
  if (res === STATE_CODE.SUC) {
246
256
  let _res = {};
247
257
  if (this.deleteResMap) {
248
- _res = this.deleteResMap();
258
+ _res = this.deleteResMap(res);
249
259
  }
250
260
  resolve(_res);
251
261
  } else {
252
- reject(res);
262
+ reject({
263
+ code: res,
264
+ _message: errMsg[res] || "未知错误",
265
+ });
253
266
  }
254
267
  });
255
268
  }
@@ -293,7 +306,7 @@ class ArrayDataModel extends ArrayUtils {
293
306
  if (sucList.length > 0) {
294
307
  let _res = { sucList, failList };
295
308
  if (this.multipleDeleteResMap) {
296
- _res = this.multipleDeleteResMap();
309
+ _res = this.multipleDeleteResMap(_res);
297
310
  }
298
311
  resolve(_res);
299
312
  } else {
package/src/axios.js CHANGED
@@ -50,10 +50,12 @@ export function setAxios(axiosList) {
50
50
  * axios 守卫
51
51
  * @param {Function} cb
52
52
  * @param {Function} errCb
53
+ * @param {Object} opt
54
+ * @param {Object} opt.replaceErrCb 直接替换回调函数
53
55
  */
54
- export function setAxRequest(cb, errCb) {
56
+ export function setAxRequest(cb, errCb, opt = {}) {
55
57
  temp.axiosList?.forEach((_ax) => {
56
- _ax.interceptors.request.use(cb, errCb);
58
+ _ax.interceptors.request.use(cb, handleErrCb(errCb, { logPrefix: "Error axios response: ", ...opt }));
57
59
  });
58
60
  }
59
61
 
@@ -61,20 +63,40 @@ export function setAxRequest(cb, errCb) {
61
63
  * 请求到结果的拦截处理
62
64
  * @param {Function} cb
63
65
  * @param {Function} errCb
66
+ * @param {Object} opt
67
+ * @param {Object} opt.replaceErrCb 直接替换回调函数
64
68
  */
65
- export function setAxResponse(cb, errCb) {
69
+ export function setAxResponse(cb, errCb, opt = {}) {
66
70
  temp.axiosList?.forEach((_ax) => {
67
- _ax.interceptors.response.use(
68
- cb,
69
- errCb ||
70
- ((error) => {
71
- console.error("Error axios response: ", error);
72
- return Promise.reject(error);
73
- }),
74
- );
71
+ _ax.interceptors.response.use(cb, handleErrCb(errCb, { logPrefix: "Error axios response: ", ...opt }));
75
72
  });
76
73
  }
77
74
 
75
+ /**
76
+ * 处理错误回调函数
77
+ * @param {Function} errCb
78
+ * @param {Object} opt
79
+ * @param {Object} opt.replaceErrCb 直接替换回调函数
80
+ * @returns
81
+ */
82
+ export function handleErrCb(errCb, opt) {
83
+ const { replaceErrCb, logPrefix } = opt || {};
84
+ const isFn = typeof errCb === "function";
85
+
86
+ if (replaceErrCb && isFn) {
87
+ return errCb;
88
+ }
89
+
90
+ return (error) => {
91
+ if (axios.isCancel(error)) {
92
+ console.info("axios 请求已取消:", error);
93
+ return Promise.reject(error);
94
+ }
95
+ console.error(logPrefix, error);
96
+ return isFn ? errCb() : Promise.reject(error);
97
+ };
98
+ }
99
+
78
100
  /**
79
101
  * 设置 axios.defaults
80
102
  * @param {string} key
package/src/data-model.js CHANGED
@@ -459,7 +459,7 @@ class DataModel {
459
459
 
460
460
  handleRes(response, resolve, reject) {
461
461
  if (axios.isCancel(response)) {
462
- reject(response);
462
+ console.info("errorHandler axios.isCancel", response);
463
463
  return;
464
464
  }
465
465
  if (this.isResponse) {
@@ -504,6 +504,10 @@ class DataModel {
504
504
  }
505
505
 
506
506
  errorHandler(err, reject) {
507
+ if (axios.isCancel(err)) {
508
+ console.info("errorHandler axios.isCancel", err);
509
+ return;
510
+ }
507
511
  if (this.isResponse) {
508
512
  reject(err);
509
513
  return;