ecinc-cloud-mappaio 9.7.13 → 9.7.14

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.
@@ -8760,7 +8760,7 @@ src.install = function (Vue) {
8760
8760
 
8761
8761
  /***/ }),
8762
8762
 
8763
- /***/ 6760:
8763
+ /***/ 6058:
8764
8764
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8765
8765
 
8766
8766
  "use strict";
@@ -8780,7 +8780,7 @@ __webpack_require__.d(__webpack_exports__, {
8780
8780
  WriteToReadIdea: function() { return /* binding */ Wflowform_WriteToReadIdea; }
8781
8781
  });
8782
8782
 
8783
- ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[0]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=template&id=4f8ded30&scoped=true
8783
+ ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[0]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=template&id=d820d2a0&scoped=true
8784
8784
  var render = function render() {
8785
8785
  var _vm = this,
8786
8786
  _c = _vm._self._c;
@@ -8791,9 +8791,9 @@ var render = function render() {
8791
8791
  }) : _vm._e(), _vm.attachModeType === 'default' ? _c('van-cell-group', {
8792
8792
  staticClass: "van-attachment-field",
8793
8793
  class: {
8794
- 'wflow-attach': _vm.showAttachments || _vm.canUpload
8794
+ 'wflow-attach': _vm.localShowAttach || _vm.canUpload
8795
8795
  }
8796
- }, [!_vm.canUpload ? _c('van-cell', {
8796
+ }, [_c('van-cell', {
8797
8797
  staticStyle: {
8798
8798
  "height": "44px"
8799
8799
  },
@@ -8803,21 +8803,20 @@ var render = function render() {
8803
8803
  },
8804
8804
  on: {
8805
8805
  "click": function click($event) {
8806
- _vm.showAttachments = !_vm.showAttachments;
8806
+ _vm.localShowAttach = !_vm.localShowAttach;
8807
8807
  }
8808
8808
  }
8809
- }, [_vm.attachList.length > 0 ? [_vm._v(" " + _vm._s(_vm.showAttachments ? _vm.$tx('ecmapp.pageBtns.fold', '折叠') : _vm.$tx('ecmapp.pageBtns.open', '展开')) + " "), _c('van-icon', {
8810
- class: _vm.showAttachments ? 'icon-play-up' : 'icon-play-down',
8811
- attrs: {
8812
- "name": "play"
8813
- }
8814
- })] : [_vm._v(_vm._s(_vm.$tx('ecmapp.common.nothing', '无')))]], 2) : _c('van-cell', {
8809
+ }, [_c('span', {
8815
8810
  staticStyle: {
8816
- "height": "44px"
8817
- },
8818
- attrs: {
8819
- "required": _vm.isRequired > 0,
8820
- "title": (_vm.title ? _vm.title : _vm.$tx('common.attach', '附件')) + '(' + _vm.attachList.length + ')'
8811
+ "display": "inline-flex",
8812
+ "align-items": "center",
8813
+ "gap": "8px"
8814
+ }
8815
+ }, [_vm.canUpload ? _c('span', {
8816
+ on: {
8817
+ "click": function click($event) {
8818
+ $event.stopPropagation();
8819
+ }
8821
8820
  }
8822
8821
  }, [_c('van-uploader', {
8823
8822
  attrs: {
@@ -8837,7 +8836,7 @@ var render = function render() {
8837
8836
  },
8838
8837
  expression: "uploadAttach"
8839
8838
  }
8840
- }, [_vm.canUpload ? _c('van-icon', {
8839
+ }, [_c('van-icon', {
8841
8840
  staticStyle: {
8842
8841
  "margin-top": "2px"
8843
8842
  },
@@ -8845,12 +8844,17 @@ var render = function render() {
8845
8844
  "name": "add-o",
8846
8845
  "size": "20px"
8847
8846
  }
8848
- }) : _vm._e()], 1)], 1)], 1) : _vm._e(), _vm.attachModeType === 'default' ? _c('van-cell-group', {
8847
+ })], 1)], 1) : _vm._e(), _vm.attachList.length > 0 ? _c('span', [_vm._v(" " + _vm._s(_vm.localShowAttach ? _vm.$tx('ecmapp.pageBtns.fold', '折叠') : _vm.$tx('ecmapp.pageBtns.open', '展开')) + " "), _c('van-icon', {
8848
+ class: _vm.localShowAttach ? 'icon-play-up' : 'icon-play-down',
8849
+ attrs: {
8850
+ "name": "play"
8851
+ }
8852
+ })], 1) : _vm._e(), _vm.attachList.length === 0 && !_vm.canUpload ? _c('span', [_vm._v(" " + _vm._s(_vm.$tx('ecmapp.common.nothing', '无')) + " ")]) : _vm._e()])])], 1) : _vm._e(), _vm.attachModeType === 'default' ? _c('van-cell-group', {
8849
8853
  directives: [{
8850
8854
  name: "show",
8851
8855
  rawName: "v-show",
8852
- value: _vm.showAttachments || _vm.componentType === 'Wflow' && _vm.vo.status < 1,
8853
- expression: "showAttachments || (componentType === 'Wflow' && vo.status < 1)"
8856
+ value: _vm.localShowAttach || _vm.componentType === 'Wflow' && _vm.vo.status < 1,
8857
+ expression: "localShowAttach || (componentType === 'Wflow' && vo.status < 1)"
8854
8858
  }],
8855
8859
  staticClass: "wfattach-container"
8856
8860
  }, [_vm._l(_vm.attachList, function (attach, index) {
@@ -8877,7 +8881,7 @@ var render = function render() {
8877
8881
  domProps: {
8878
8882
  "innerHTML": _vm._s(attach.fileSize)
8879
8883
  }
8880
- }), _vm.showMoreMenu && attach.id !== undefined ? [_c('van-icon', {
8884
+ }), _vm.localShowMoreMenu && attach.id !== undefined ? [_c('van-icon', {
8881
8885
  attrs: {
8882
8886
  "name": "ellipsis"
8883
8887
  },
@@ -8898,7 +8902,13 @@ var render = function render() {
8898
8902
  return _vm.handleOpenEditor(attach);
8899
8903
  }
8900
8904
  }
8901
- }) : _vm._e(), _vm.canUpload && _vm.canDelete ? _c('van-icon', {
8905
+ }) : _vm._e(), _vm.deletingAttachId === attach.id ? [_c('van-icon', {
8906
+ staticClass: "attach-deleting-icon",
8907
+ attrs: {
8908
+ "name": "replay",
8909
+ "color": "#ee0a24"
8910
+ }
8911
+ })] : _vm.canUpload && _vm.canDelete ? _c('van-icon', {
8902
8912
  attrs: {
8903
8913
  "color": "#ee0a24",
8904
8914
  "name": "cross"
@@ -8910,9 +8920,6 @@ var render = function render() {
8910
8920
  }
8911
8921
  }
8912
8922
  }) : _vm._e(), _vm.attachShowDownload && attach.id !== undefined ? _c('van-icon', {
8913
- staticStyle: {
8914
- "margin-left": "4px"
8915
- },
8916
8923
  attrs: {
8917
8924
  "name": "down"
8918
8925
  },
@@ -8992,7 +8999,13 @@ var render = function render() {
8992
8999
  "top": "11px",
8993
9000
  "padding": "0 5px"
8994
9001
  }
8995
- }, [_vm.canUpload && _vm.canDelete ? _c('van-icon', {
9002
+ }, [_vm.deletingAttachId === attach.id ? [_c('van-icon', {
9003
+ staticClass: "attach-deleting-icon",
9004
+ attrs: {
9005
+ "name": "replay",
9006
+ "color": "#ee0a24"
9007
+ }
9008
+ })] : _vm.canUpload && _vm.canDelete ? _c('van-icon', {
8996
9009
  attrs: {
8997
9010
  "name": "cross"
8998
9011
  },
@@ -9012,7 +9025,7 @@ var render = function render() {
9012
9025
  return _vm.handleUploadPreview(attach);
9013
9026
  }
9014
9027
  }
9015
- })], 1)]), !attach.id && attach.file.progress > 0 ? _c('template', {
9028
+ })], 2)]), !attach.id && attach.file.progress > 0 ? _c('template', {
9016
9029
  slot: "label"
9017
9030
  }, [_c('div', {
9018
9031
  staticClass: "upload-progress"
@@ -9208,7 +9221,12 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9208
9221
  onZipAttachPreviewClick: {
9209
9222
  type: Function,
9210
9223
  default: null
9211
- } // 自定义压缩附件处理方式
9224
+ },
9225
+ // 自定义压缩附件处理方式
9226
+ autoUpload: {
9227
+ type: Boolean,
9228
+ default: true
9229
+ } // 是否开启自动上传,属性值为true时选择文件后自动上传
9212
9230
  },
9213
9231
  data: function data() {
9214
9232
  return {
@@ -9220,6 +9238,9 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9220
9238
  renameAttach: {
9221
9239
  rename: ''
9222
9240
  },
9241
+ localShowAttach: this.showAttachments,
9242
+ localShowMoreMenu: this.showMoreMenu,
9243
+ deletingAttachId: null,
9223
9244
  licExpiredAlert: null,
9224
9245
  loginUser: this.$store.getters.loginUser,
9225
9246
  topdfFile: '.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt',
@@ -9227,7 +9248,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9227
9248
  imgFile: '.pdf,.pdfx,.jpg,.png,.jpeg,.gif,.bmp' //图片文件格式
9228
9249
  };
9229
9250
  },
9230
- computed: _objectSpread({}, (0,vuex_esm/* mapGetters */.L8)(['loginUser'])),
9251
+ computed: _objectSpread({}, (0,vuex_esm/* mapGetters */.L8)(['loginUser', 'maxFileSize'])),
9231
9252
  watch: {
9232
9253
  attachments: {
9233
9254
  handler: function handler(val) {
@@ -9275,6 +9296,12 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9275
9296
  },
9276
9297
  deep: true,
9277
9298
  immediate: true
9299
+ },
9300
+ showAttachments: function showAttachments(val) {
9301
+ this.localShowAttach = val;
9302
+ },
9303
+ showMoreMenu: function showMoreMenu(val) {
9304
+ this.localShowMoreMenu = val;
9278
9305
  }
9279
9306
  },
9280
9307
  created: function created() {
@@ -9288,7 +9315,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9288
9315
  this.curTN.tnCanEdit = $scope.canEdit;
9289
9316
  if (this.canEdit == null) this.canEdit = this.curTN.tnCanEdit;
9290
9317
  this.canUpload = this.attachEdit !== null ? this.attachEdit.canUpload : this.canEdit === 1;
9291
- } else if (this.vo.status < 1 || this.attachsType === 'DONEXT') {
9318
+ } else if (this.curTN.tnCanEdit === 1 || this.attachsType === 'DONEXT') {
9292
9319
  // 流程表单
9293
9320
  this.canUpload = true;
9294
9321
  }
@@ -9302,8 +9329,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9302
9329
  setTimeout(function () {
9303
9330
  _this3.setWfAttachUrl();
9304
9331
  if (window.mappType !== 'ecinc') {
9305
- _this3.$set(_this3, 'showMoreMenu', false);
9306
- _this3.$forceUpdate();
9332
+ _this3.localShowMoreMenu = false;
9307
9333
  }
9308
9334
  }, 500);
9309
9335
 
@@ -9770,6 +9796,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9770
9796
  deleteUrl = _this8.wfAttachUrl + '/delete';
9771
9797
  if (_this.$vnode.context.wfInstance === undefined || _this.$vnode.context.wfInstance === null || _this.$vnode.context.wfInstance.id === undefined) deleteUrl = _this8.wfAttachUrl + '/deleteAttach'; // 非流程表单
9772
9798
 
9799
+ _this8.deletingAttachId = file.id;
9773
9800
  _this8.$http({
9774
9801
  method: 'DELETE',
9775
9802
  contentType: 'application/x-www-form-urlencoded',
@@ -9793,8 +9820,10 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9793
9820
  message: res.message
9794
9821
  });
9795
9822
  }
9823
+ }).finally(function () {
9824
+ _this8.deletingAttachId = null;
9796
9825
  });
9797
- case 3:
9826
+ case 4:
9798
9827
  case "end":
9799
9828
  return _context2.stop();
9800
9829
  }
@@ -9898,6 +9927,33 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9898
9927
  return attach.fileType === _this9.attachsType;
9899
9928
  });
9900
9929
  this.$forceUpdate();
9930
+
9931
+ // 选择文件后自动展开附件列表
9932
+ this.localShowAttach = true;
9933
+ setTimeout(function () {
9934
+ // 自动上传
9935
+ if (_this9.autoUpload) {
9936
+ var scope = null;
9937
+ if (_this9.$vnode.context.wfInstance) {
9938
+ scope = _this9.$vnode.context;
9939
+ } else if (_this9.$vnode.context.$parent.moduleInfo) {
9940
+ scope = _this9.$vnode.context.$parent;
9941
+ scope.wfInstance = {
9942
+ module: scope.moduleCode,
9943
+ bodyDocId: ''
9944
+ };
9945
+ } else if (_this9.$vnode.context.$parent.$vnode.context.moduleInfo) {
9946
+ scope = _this9.$vnode.context.$parent.$vnode.context;
9947
+ scope.wfInstance = {
9948
+ module: scope.moduleCode,
9949
+ bodyDocId: ''
9950
+ };
9951
+ }
9952
+ if (scope) {
9953
+ _this9.uploadWflowAttach(scope);
9954
+ }
9955
+ }
9956
+ }, 100);
9901
9957
  },
9902
9958
  // 初始化文件头像
9903
9959
  initPotourl: function initPotourl(attach) {
@@ -9937,11 +9993,27 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9937
9993
  case 0:
9938
9994
  _uploadAttachFile = function _uploadAttachFile3() {
9939
9995
  _uploadAttachFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(attach, index) {
9940
- var file, config, module, reqData, uploadRst;
9996
+ var file, maxFileSizeStr, message, config, module, reqData, uploadRst;
9941
9997
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
9942
9998
  while (1) switch (_context4.prev = _context4.next) {
9943
9999
  case 0:
9944
- file = attach.file;
10000
+ file = attach.file; // maxFileSize 校验:超过单文件大小限制时拒绝上传
10001
+ if (!(_this.maxFileSize && _this.maxFileSize !== -1)) {
10002
+ _context4.next = 6;
10003
+ break;
10004
+ }
10005
+ if (!(file.file && file.file.size > _this.maxFileSize)) {
10006
+ _context4.next = 6;
10007
+ break;
10008
+ }
10009
+ maxFileSizeStr = (0,utils/* formatFileSize */.v7)(_this.maxFileSize);
10010
+ message = '上传单个文件大小不允许超过' + maxFileSizeStr;
10011
+ return _context4.abrupt("return", {
10012
+ code: 'failure',
10013
+ message: message,
10014
+ body: {}
10015
+ });
10016
+ case 6:
9945
10017
  config = {
9946
10018
  onUploadProgress: function onUploadProgress(progressEvent) {
9947
10019
  var complete = progressEvent.loaded / progressEvent.total * 100 | 0;
@@ -9972,12 +10044,12 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
9972
10044
  // 代办佐证材料
9973
10045
  reqData.uploadBy = attach.uploadBy;
9974
10046
  }
9975
- _context4.next = 9;
10047
+ _context4.next = 14;
9976
10048
  return _this.$wfEngine.upload(_this, _this.wfAttachUrl + '/upload', file.file, reqData, config);
9977
- case 9:
10049
+ case 14:
9978
10050
  uploadRst = _context4.sent;
9979
10051
  return _context4.abrupt("return", uploadRst);
9980
- case 11:
10052
+ case 16:
9981
10053
  case "end":
9982
10054
  return _context4.stop();
9983
10055
  }
@@ -10183,7 +10255,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
10183
10255
  if (!attachment.id) return;
10184
10256
  var downloadUrl = '';
10185
10257
  downloadUrl = "/apigw" + '/' + this.wfAttachUrl + '/downloadById?inline=false&attachIds=' + attachment.id + '&httpPort=' + location.port + '&csrfToken=' + window.$auth.getCsrfToken();
10186
- if (window.layout === 'H5') {
10258
+ if (window.mappType === 'ecinc') {
10187
10259
  window.$wv.downloadFile(downloadUrl, null, attachment.fileName, null);
10188
10260
  } else {
10189
10261
  this.$mappUtils.downLoadAndOpenFile(this, downloadUrl, attachment.fileName, attachment.fileSize);
@@ -10193,9 +10265,9 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
10193
10265
  });
10194
10266
  ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=script&lang=js
10195
10267
  /* harmony default export */ var src_Attachmentvue_type_script_lang_js = (Attachmentvue_type_script_lang_js);
10196
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-65.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-65.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-65.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-65.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-65.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=style&index=0&id=4f8ded30&prod&scoped=true&lang=scss
10197
- var Attachmentvue_type_style_index_0_id_4f8ded30_prod_scoped_true_lang_scss = __webpack_require__(7112);
10198
- ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=style&index=0&id=4f8ded30&prod&scoped=true&lang=scss
10268
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-65.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-65.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-65.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-65.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-65.use[4]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=style&index=0&id=d820d2a0&prod&scoped=true&lang=scss
10269
+ var Attachmentvue_type_style_index_0_id_d820d2a0_prod_scoped_true_lang_scss = __webpack_require__(7781);
10270
+ ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/Attachment.vue?vue&type=style&index=0&id=d820d2a0&prod&scoped=true&lang=scss
10199
10271
 
10200
10272
  // EXTERNAL MODULE: ./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js
10201
10273
  var componentNormalizer = __webpack_require__(1656);
@@ -10214,7 +10286,7 @@ var component = (0,componentNormalizer/* default */.A)(
10214
10286
  staticRenderFns,
10215
10287
  false,
10216
10288
  null,
10217
- "4f8ded30",
10289
+ "d820d2a0",
10218
10290
  null
10219
10291
 
10220
10292
  )
@@ -18790,15 +18862,347 @@ module.exports = {
18790
18862
 
18791
18863
  /***/ }),
18792
18864
 
18793
- /***/ 9932:
18865
+ /***/ 6322:
18794
18866
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
18795
18867
 
18796
18868
  "use strict";
18869
+ // ESM COMPAT FLAG
18797
18870
  __webpack_require__.r(__webpack_exports__);
18798
- /* harmony import */ var qs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5373);
18799
- /* harmony import */ var qs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(qs__WEBPACK_IMPORTED_MODULE_1__);
18800
- /* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2215);
18801
- /* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(js_cookie__WEBPACK_IMPORTED_MODULE_0__);
18871
+
18872
+ // EXPORTS
18873
+ __webpack_require__.d(__webpack_exports__, {
18874
+ "default": function() { return /* binding */ wfengine; }
18875
+ });
18876
+
18877
+ // EXTERNAL MODULE: ./node_modules/qs/lib/index.js
18878
+ var lib = __webpack_require__(5373);
18879
+ var lib_default = /*#__PURE__*/__webpack_require__.n(lib);
18880
+ // EXTERNAL MODULE: ./node_modules/js-cookie/src/js.cookie.js
18881
+ var js_cookie = __webpack_require__(2215);
18882
+ var js_cookie_default = /*#__PURE__*/__webpack_require__.n(js_cookie);
18883
+ // EXTERNAL MODULE: ./node_modules/spark-md5/spark-md5.js
18884
+ var spark_md5 = __webpack_require__(5735);
18885
+ var spark_md5_default = /*#__PURE__*/__webpack_require__.n(spark_md5);
18886
+ ;// CONCATENATED MODULE: ./packages/ecwflow/wfengine/chunkUpload.js
18887
+ /**
18888
+ * 分片上传核心模块
18889
+ * 封装大文件分片上传、断点续传全流程逻辑
18890
+ */
18891
+
18892
+
18893
+ // ========== 配置 ==========
18894
+ var DEFAULT_CHUNK_SIZE = 5; // 默认分片大小(MB)
18895
+ var MAX_RETRY = 3; // 单分片最大重试次数
18896
+ var RETRY_DELAYS = [1000, 2000, 4000]; // 指数退避延迟(ms)
18897
+ var STORAGE_PREFIX = 'chunk_upload_'; // localStorage key 前缀
18898
+
18899
+ /**
18900
+ * 获取分片大小(字节)
18901
+ */
18902
+ function getChunkSize() {
18903
+ return (window.chunkUploadSize || DEFAULT_CHUNK_SIZE) * 1024 * 1024;
18904
+ }
18905
+
18906
+ // ========== MD5 计算 ==========
18907
+
18908
+ /**
18909
+ * 使用 spark-md5 增量计算文件 MD5(避免大文件一次性读入内存)
18910
+ * @param {File} file 文件对象
18911
+ * @param {number} chunkSize 切片大小(字节)
18912
+ * @returns {Promise<string>} 文件 MD5 值(32位小写)
18913
+ */
18914
+ function computeFileMD5(file, chunkSize) {
18915
+ return new Promise(function (resolve, reject) {
18916
+ var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;
18917
+ var chunks = Math.ceil(file.size / chunkSize);
18918
+ var currentChunk = 0;
18919
+ var spark = new (spark_md5_default()).ArrayBuffer();
18920
+ var reader = new FileReader();
18921
+ reader.onload = function (e) {
18922
+ spark.append(e.target.result);
18923
+ currentChunk++;
18924
+ if (currentChunk < chunks) {
18925
+ loadNext();
18926
+ } else {
18927
+ resolve(spark.end());
18928
+ }
18929
+ };
18930
+ reader.onerror = function () {
18931
+ reject(new Error('文件读取失败'));
18932
+ };
18933
+ function loadNext() {
18934
+ var start = currentChunk * chunkSize;
18935
+ var end = Math.min(start + chunkSize, file.size);
18936
+ var chunk = blobSlice.call(file, start, end);
18937
+ reader.readAsArrayBuffer(chunk);
18938
+ }
18939
+ loadNext();
18940
+ });
18941
+ }
18942
+
18943
+ // ========== localStorage 断点进度管理 ==========
18944
+
18945
+ /**
18946
+ * 保存上传进度
18947
+ */
18948
+ function saveUploadProgress(fileMd5, data) {
18949
+ try {
18950
+ localStorage.setItem(STORAGE_PREFIX + fileMd5, JSON.stringify(data));
18951
+ } catch (e) {
18952
+ // localStorage 满或不可用,静默忽略
18953
+ }
18954
+ }
18955
+
18956
+ /**
18957
+ * 获取上传进度
18958
+ */
18959
+ function getUploadProgress(fileMd5) {
18960
+ try {
18961
+ var raw = localStorage.getItem(STORAGE_PREFIX + fileMd5);
18962
+ return raw ? JSON.parse(raw) : null;
18963
+ } catch (e) {
18964
+ return null;
18965
+ }
18966
+ }
18967
+
18968
+ /**
18969
+ * 清除上传进度
18970
+ */
18971
+ function clearUploadProgress(fileMd5) {
18972
+ try {
18973
+ localStorage.removeItem(STORAGE_PREFIX + fileMd5);
18974
+ } catch (e) {
18975
+ // 静默忽略
18976
+ }
18977
+ }
18978
+
18979
+ // ========== 后端接口调用 ==========
18980
+
18981
+ /**
18982
+ * 检查已上传分片
18983
+ * @param {Vue} $scope Vue 实例
18984
+ * @param {string} baseUrl 基础 URL(如 workflow/wfBusiAttach)
18985
+ * @param {string} fileMd5 文件 MD5
18986
+ * @param {number} totalChunks 总分片数
18987
+ * @returns {Promise<number[]>} 已上传分片索引列表
18988
+ */
18989
+ function checkChunkStatus($scope, baseUrl, fileMd5, totalChunks) {
18990
+ var formData = new FormData();
18991
+ formData.append('fileMd5', fileMd5);
18992
+ formData.append('totalChunks', totalChunks);
18993
+ return $scope.$http({
18994
+ url: baseUrl + '/uploadChunkCheck',
18995
+ method: 'post',
18996
+ data: formData
18997
+ }).then(function (res) {
18998
+ if (res.code === 'success' && res.body) {
18999
+ return res.body.uploadedChunks || [];
19000
+ }
19001
+ return [];
19002
+ }).catch(function () {
19003
+ return [];
19004
+ });
19005
+ }
19006
+
19007
+ /**
19008
+ * 上传单个分片(含重试)
19009
+ * @param {Vue} $scope Vue 实例
19010
+ * @param {string} baseUrl 基础 URL
19011
+ * @param {File} file 完整文件对象
19012
+ * @param {number} chunkIndex 分片索引
19013
+ * @param {string} fileMd5 文件 MD5
19014
+ * @param {number} totalChunks 总分片数
19015
+ * @param {string} fileName 文件名
19016
+ * @param {number} fileSize 文件大小
19017
+ * @returns {Promise}
19018
+ */
19019
+ function uploadSingleChunk($scope, baseUrl, file, chunkIndex, fileMd5, totalChunks, fileName, fileSize) {
19020
+ var chunkSize = getChunkSize();
19021
+ var start = chunkIndex * chunkSize;
19022
+ var end = Math.min(start + chunkSize, file.size);
19023
+ var chunk = file.slice(start, end);
19024
+ var formData = new FormData();
19025
+ formData.append('chunkFile', chunk, 'chunk_' + chunkIndex);
19026
+ formData.append('fileMd5', fileMd5);
19027
+ formData.append('chunkIndex', chunkIndex);
19028
+ formData.append('totalChunks', totalChunks);
19029
+ formData.append('fileName', fileName);
19030
+ formData.append('fileSize', fileSize);
19031
+ return doUploadWithRetry($scope, baseUrl + '/uploadChunk', formData, 0, chunkIndex);
19032
+ }
19033
+
19034
+ /**
19035
+ * 带重试的上传请求
19036
+ */
19037
+ function doUploadWithRetry($scope, url, formData, retryCount, chunkIdx) {
19038
+ return $scope.$http({
19039
+ url: url,
19040
+ method: 'post',
19041
+ data: formData
19042
+ }).then(function (res) {
19043
+ if (res.code !== 'success') {
19044
+ console.error('[chunkUpload] chunk_' + chunkIdx + ' failed:', res.message);
19045
+ throw new Error(res.message || 'chunk upload failed');
19046
+ }
19047
+ console.log('[chunkUpload] chunk_' + chunkIdx + ' success');
19048
+ return res;
19049
+ }).catch(function (err) {
19050
+ if (retryCount < MAX_RETRY) {
19051
+ console.warn('[chunkUpload] chunk_' + chunkIdx + ' retry ' + (retryCount + 1) + ':', err.message || err);
19052
+ var delay = RETRY_DELAYS[retryCount] || RETRY_DELAYS[RETRY_DELAYS.length - 1];
19053
+ return new Promise(function (resolve) {
19054
+ setTimeout(resolve, delay);
19055
+ }).then(function () {
19056
+ return doUploadWithRetry($scope, url, formData, retryCount + 1, chunkIdx);
19057
+ });
19058
+ }
19059
+ throw err;
19060
+ });
19061
+ }
19062
+
19063
+ /**
19064
+ * 合并分片
19065
+ * @param {Vue} $scope Vue 实例
19066
+ * @param {string} baseUrl 基础 URL
19067
+ * @param {string} fileMd5 文件 MD5
19068
+ * @param {string} fileName 文件名
19069
+ * @param {number} fileSize 文件大小
19070
+ * @param {number} totalChunks 总分片数
19071
+ * @param {Object} reqData 业务参数(module, busiDataId 等)
19072
+ * @returns {Promise}
19073
+ */
19074
+ function mergeChunks($scope, baseUrl, fileMd5, fileName, fileSize, totalChunks, reqData) {
19075
+ var formData = new FormData();
19076
+ formData.append('fileMd5', fileMd5);
19077
+ formData.append('fileName', fileName);
19078
+ formData.append('fileSize', fileSize);
19079
+ formData.append('totalChunks', totalChunks);
19080
+ if (reqData) {
19081
+ for (var key in reqData) {
19082
+ if (reqData.hasOwnProperty(key) && reqData[key] !== undefined && reqData[key] !== null) {
19083
+ formData.append(key, reqData[key]);
19084
+ }
19085
+ }
19086
+ }
19087
+ return $scope.$http({
19088
+ url: baseUrl + '/uploadChunkMerge',
19089
+ method: 'post',
19090
+ data: formData
19091
+ });
19092
+ }
19093
+
19094
+ // ========== 主编排函数 ==========
19095
+
19096
+ /**
19097
+ * 分片上传主流程
19098
+ * @param {Vue} $scope Vue 实例
19099
+ * @param {string} uploadUrl 上传 URL(如 workflow/wfBusiAttach/upload)
19100
+ * @param {File} file 文件对象
19101
+ * @param {Object} reqData 业务参数
19102
+ * @param {Object} config 配置(含 onUploadProgress 回调)
19103
+ * @returns {Promise} 合并后的响应,与原 upload 接口返回格式一致
19104
+ */
19105
+ function chunkedUpload($scope, uploadUrl, file, reqData, config) {
19106
+ var chunkSize = getChunkSize();
19107
+ var totalChunks = Math.ceil(file.size / chunkSize);
19108
+ var fileName = file.name || 'unknown';
19109
+ var fileSize = file.size;
19110
+
19111
+ // 从 uploadUrl 中提取 baseUrl(去掉末尾的 /upload)
19112
+ var baseUrl = uploadUrl.replace(/\/upload\/?$/, '');
19113
+ var onProgress = config && config.onUploadProgress || null;
19114
+ return new Promise(function (resolve, reject) {
19115
+ // Step 1: 计算文件 MD5
19116
+ computeFileMD5(file, chunkSize).then(function (fileMd5) {
19117
+ // Step 2: 检查断点续传进度
19118
+ var savedProgress = getUploadProgress(fileMd5);
19119
+ var uploadedBytes = savedProgress ? savedProgress.uploadedBytes || 0 : 0;
19120
+ return checkChunkStatus($scope, baseUrl, fileMd5, totalChunks).then(function (uploadedChunks) {
19121
+ // Step 3: 逐片上传未完成的分片
19122
+ var completedChunks = uploadedChunks.length;
19123
+ var uploadedBytesFromServer = 0;
19124
+ for (var i = 0; i < uploadedChunks.length; i++) {
19125
+ var idx = uploadedChunks[i];
19126
+ var cStart = idx * chunkSize;
19127
+ var cEnd = Math.min(cStart + chunkSize, fileSize);
19128
+ uploadedBytesFromServer += cEnd - cStart;
19129
+ }
19130
+ uploadedBytes = uploadedBytesFromServer;
19131
+
19132
+ // 模拟初始进度回调
19133
+ if (onProgress) {
19134
+ onProgress({
19135
+ loaded: uploadedBytes,
19136
+ total: fileSize
19137
+ });
19138
+ }
19139
+ return uploadChunksSequentially($scope, baseUrl, file, fileMd5, totalChunks, uploadedChunks, fileName, fileSize, chunkSize, function (chunkBytes) {
19140
+ completedChunks++;
19141
+ uploadedBytes += chunkBytes;
19142
+ if (onProgress) {
19143
+ onProgress({
19144
+ loaded: uploadedBytes,
19145
+ total: fileSize
19146
+ });
19147
+ }
19148
+ // 保存进度到 localStorage
19149
+ saveUploadProgress(fileMd5, {
19150
+ completedChunks: completedChunks,
19151
+ uploadedBytes: uploadedBytes,
19152
+ totalChunks: totalChunks,
19153
+ fileName: fileName,
19154
+ fileSize: fileSize,
19155
+ timestamp: Date.now()
19156
+ });
19157
+ }).then(function () {
19158
+ // Step 4: 合并分片
19159
+ return mergeChunks($scope, baseUrl, fileMd5, fileName, fileSize, totalChunks, reqData);
19160
+ }).then(function (mergeResult) {
19161
+ // Step 5: 合并成功,清除进度记录
19162
+ clearUploadProgress(fileMd5);
19163
+ resolve(mergeResult);
19164
+ });
19165
+ });
19166
+ }).catch(function (err) {
19167
+ reject(err);
19168
+ });
19169
+ });
19170
+ }
19171
+
19172
+ /**
19173
+ * 逐片串行上传
19174
+ * 使用 Array.reduce 链式调用,reduce 回调参数 cIdx 天然为每次迭代创建独立闭包,
19175
+ * 避免 for + var 共享变量导致所有分片使用同一个 chunkIndex 的问题。
19176
+ */
19177
+ function uploadChunksSequentially($scope, baseUrl, file, fileMd5, totalChunks, uploadedChunks, fileName, fileSize, chunkSize, onChunkDone) {
19178
+ var uploadedSet = {};
19179
+ for (var i = 0; i < uploadedChunks.length; i++) {
19180
+ uploadedSet[uploadedChunks[i]] = true;
19181
+ }
19182
+
19183
+ // 构建待上传分片索引数组
19184
+ var chunkIndices = [];
19185
+ for (var chunkIndex = 0; chunkIndex < totalChunks; chunkIndex++) {
19186
+ if (!uploadedSet[chunkIndex]) {
19187
+ chunkIndices.push(chunkIndex);
19188
+ }
19189
+ }
19190
+
19191
+ // reduce 的 cIdx 参数每次迭代都是独立的值,无闭包共享问题
19192
+ return chunkIndices.reduce(function (chain, cIdx) {
19193
+ return chain.then(function () {
19194
+ return uploadSingleChunk($scope, baseUrl, file, cIdx, fileMd5, totalChunks, fileName, fileSize).then(function () {
19195
+ var cStart = cIdx * chunkSize;
19196
+ var cEnd = Math.min(cStart + chunkSize, fileSize);
19197
+ var cBytes = cEnd - cStart;
19198
+ if (onChunkDone) {
19199
+ onChunkDone(cBytes);
19200
+ }
19201
+ });
19202
+ });
19203
+ }, Promise.resolve());
19204
+ }
19205
+ ;// CONCATENATED MODULE: ./packages/ecwflow/wfengine/index.js
18802
19206
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
18803
19207
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18804
19208
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -18813,6 +19217,7 @@ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(
18813
19217
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
18814
19218
 
18815
19219
 
19220
+
18816
19221
  var install = function install(Vue) {
18817
19222
  var WfEngine = new Vue({
18818
19223
  methods: {
@@ -19030,7 +19435,7 @@ var install = function install(Vue) {
19030
19435
  }
19031
19436
  }
19032
19437
  if ($scope.wfJsonData && $scope.wfJsonData.routes) {
19033
- var rindex = js_cookie__WEBPACK_IMPORTED_MODULE_0___default().get('route-index-' + $scope.wfInstance.id);
19438
+ var rindex = js_cookie_default().get('route-index-' + $scope.wfInstance.id);
19034
19439
  if (rindex !== undefined && rindex !== null) {
19035
19440
  rindex = parseInt(rindex);
19036
19441
  if ($scope.wfJsonData.routes.length > rindex) $scope.submitHandle.route.index = rindex;
@@ -19478,7 +19883,7 @@ var install = function install(Vue) {
19478
19883
  $scope.$http({
19479
19884
  method: 'POST',
19480
19885
  contentType: 'application/x-www-form-urlencoded',
19481
- data: qs__WEBPACK_IMPORTED_MODULE_1___default().stringify(saveData),
19886
+ data: lib_default().stringify(saveData),
19482
19887
  params: params,
19483
19888
  url: wfEngineUrl
19484
19889
  }).then(function (res) {
@@ -19524,7 +19929,7 @@ var install = function install(Vue) {
19524
19929
  });
19525
19930
  }
19526
19931
  if ($scope.wfJsonData && $scope.wfJsonData.routes) {
19527
- var rindex = js_cookie__WEBPACK_IMPORTED_MODULE_0___default().get('route-index-' + $scope.wfInstance.id);
19932
+ var rindex = js_cookie_default().get('route-index-' + $scope.wfInstance.id);
19528
19933
  if (rindex !== undefined && rindex !== null) {
19529
19934
  rindex = parseInt(rindex);
19530
19935
  if ($scope.wfJsonData.routes.length > rindex) $scope.submitHandle.route.index = rindex;
@@ -19599,7 +20004,7 @@ var install = function install(Vue) {
19599
20004
  }
19600
20005
  var submitHandle = JSON.parse(JSON.stringify($scope.submitHandle));
19601
20006
  if (submitType.indexOf('Save') !== -1) {
19602
- js_cookie__WEBPACK_IMPORTED_MODULE_0___default().set('route-index-' + $scope.wfInstance.id, submitHandle.route.index);
20007
+ js_cookie_default().set('route-index-' + $scope.wfInstance.id, submitHandle.route.index);
19603
20008
  var route = $scope.wfJsonData == null || $scope.wfJsonData.routes == null || $scope.wfJsonData.routes.length === 0 ? {
19604
20009
  taskNodes: []
19605
20010
  } : $scope.wfJsonData.routes[submitHandle.route.index];
@@ -19610,14 +20015,14 @@ var install = function install(Vue) {
19610
20015
  if (nextUsers !== '') nextUsers += ';';
19611
20016
  nextUsers += user.id;
19612
20017
  });
19613
- js_cookie__WEBPACK_IMPORTED_MODULE_0___default().set('route-wfuser-' + $scope.curTN.tnID + '-' + wfNode.id, nextUsers);
20018
+ js_cookie_default().set('route-wfuser-' + $scope.curTN.tnID + '-' + wfNode.id, nextUsers);
19614
20019
  }
19615
20020
  });
19616
20021
  delete submitHandle.submitRoute;
19617
20022
  delete submitHandle.nextTNProp;
19618
20023
  delete submitHandle.nextTNUser;
19619
20024
  } else {
19620
- js_cookie__WEBPACK_IMPORTED_MODULE_0___default().set('route-index-' + $scope.wfInstance.id, '', {
20025
+ js_cookie_default().set('route-index-' + $scope.wfInstance.id, '', {
19621
20026
  expires: 0
19622
20027
  });
19623
20028
  var selRoute = $scope.wfJsonData == null || $scope.wfJsonData.routes == null || $scope.wfJsonData.routes.length === 0 ? {
@@ -19660,7 +20065,7 @@ var install = function install(Vue) {
19660
20065
  delete wfNode.users;
19661
20066
  submitHandle.nextTNProp.push(wfNode);
19662
20067
  submitHandle.nextTNUser.push(nextUsers);
19663
- js_cookie__WEBPACK_IMPORTED_MODULE_0___default().set('route-wfuser-' + $scope.curTN.tnID + '-' + wfNode.id, '', {
20068
+ js_cookie_default().set('route-wfuser-' + $scope.curTN.tnID + '-' + wfNode.id, '', {
19664
20069
  expires: 0
19665
20070
  });
19666
20071
  }
@@ -19693,7 +20098,7 @@ var install = function install(Vue) {
19693
20098
  headers: {
19694
20099
  'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
19695
20100
  },
19696
- data: qs__WEBPACK_IMPORTED_MODULE_1___default().stringify(saveData),
20101
+ data: lib_default().stringify(saveData),
19697
20102
  url: (params.wfEngineUrl || $scope.wfEngineUrl || 'workflow/wfInstance') + '/saveWfInstance'
19698
20103
  }).then(function (res) {
19699
20104
  if (res.code === 'success') {
@@ -19966,7 +20371,7 @@ var install = function install(Vue) {
19966
20371
  _this4.$http({
19967
20372
  method: 'POST',
19968
20373
  contentType: 'application/x-www-form-urlencoded',
19969
- data: qs__WEBPACK_IMPORTED_MODULE_1___default().stringify(saveData),
20374
+ data: lib_default().stringify(saveData),
19970
20375
  params: $scope.$vnode.context.wfParams,
19971
20376
  url: 'workflow/wfInstance/getUdmNodeUsers'
19972
20377
  }).then(function (res) {
@@ -20016,7 +20421,7 @@ var install = function install(Vue) {
20016
20421
  headers: {
20017
20422
  'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
20018
20423
  },
20019
- data: qs__WEBPACK_IMPORTED_MODULE_1___default().stringify({
20424
+ data: lib_default().stringify({
20020
20425
  wfInstance: JSON.stringify($scope.wfInstance),
20021
20426
  nextTNUsers: JSON.stringify(nextTNUsers)
20022
20427
  }),
@@ -20174,6 +20579,11 @@ var install = function install(Vue) {
20174
20579
  }
20175
20580
  },
20176
20581
  upload: function upload($scope, uploadUrl, file, params, config) {
20582
+ // 分片上传分流判断:chunkFileSizeThreshold > 0 且文件大小超过阈值
20583
+ var chunkThreshold = window.chunkFileSizeThreshold;
20584
+ if (chunkThreshold > 0 && file && file.size > chunkThreshold * 1024 * 1024) {
20585
+ return chunkedUpload($scope, uploadUrl, file, params, config);
20586
+ }
20177
20587
  var formData = new FormData();
20178
20588
  if (params != null) {
20179
20589
  for (var key in params) {
@@ -20272,7 +20682,7 @@ var install = function install(Vue) {
20272
20682
  });
20273
20683
  Vue.prototype.$wfEngine = WfEngine;
20274
20684
  };
20275
- /* harmony default export */ __webpack_exports__["default"] = (install);
20685
+ /* harmony default export */ var wfengine = (install);
20276
20686
 
20277
20687
  /***/ }),
20278
20688
 
@@ -21598,7 +22008,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, "[data-v-d6f101a0] .van-nav-bar__title{
21598
22008
 
21599
22009
  /***/ }),
21600
22010
 
21601
- /***/ 6943:
22011
+ /***/ 7986:
21602
22012
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
21603
22013
 
21604
22014
  "use strict";
@@ -21612,7 +22022,7 @@ __webpack_require__.r(__webpack_exports__);
21612
22022
 
21613
22023
  var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
21614
22024
  // Module
21615
- ___CSS_LOADER_EXPORT___.push([module.id, ".wfattach-container .van-cell__value[data-v-4f8ded30],.wfattach-container[data-v-4f8ded30] .van-cell__title{-webkit-box-flex:0;-ms-flex:none;flex:none}.wfattach-container[data-v-4f8ded30] .van-cell__title{width:65%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}.wfattach-container[data-v-4f8ded30] .van-cell__value{width:35%;height:24px}.wfattach-container[data-v-4f8ded30] .van-cell__value .van-icon-add-o{line-height:24px}.wfattach-container[data-v-4f8ded30] .van-cell__value .van-circle{margin-top:2px}.wfattach-container[data-v-4f8ded30] .van-cell__value .attach-icon{display:-webkit-box;display:-ms-flexbox;display:flex;float:right}.wfattach-container[data-v-4f8ded30] .van-cell__value .attach-icon .van-icon{line-height:24px;margin-left:15px;font-size:16px}.wfattach-container[data-v-4f8ded30]:after{border-top-width:0}.attachmants_preview .attachmants .van-cell-group .van-cell[data-v-4f8ded30]{padding-left:70px;padding-right:36px}.attachmants_preview .attachmants .van-cell-group .van-cell[data-v-4f8ded30]:after{right:0}.attachmants_preview .attachmants .van-cell-group .van-cell[data-v-4f8ded30]:first-child:before{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;content:\" \";pointer-events:none;right:0;top:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.attachmants_preview .attachmants .van-cell-group .van-cell .van-cell__title[data-v-4f8ded30]{position:relative}.attachmants_preview .attachmants .van-cell-group .van-cell .van-cell__title .attach_photo[data-v-4f8ded30]{position:absolute;left:-54px;height:44px;width:44px}.attachmants_preview .attachmants .van-cell-group .van-cell .van-cell__title .attach_name[data-v-4f8ded30]{width:calc(100vw - 107px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-attachment-field[data-v-4f8ded30]{position:relative}.van-attachment-field[data-v-4f8ded30]:after{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;content:\" \";pointer-events:none;top:unset;border-width:0;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}", ""]);
22025
+ ___CSS_LOADER_EXPORT___.push([module.id, ".wfattach-container .van-cell__value[data-v-d820d2a0],.wfattach-container[data-v-d820d2a0] .van-cell__title{-webkit-box-flex:0;-ms-flex:none;flex:none}.wfattach-container[data-v-d820d2a0] .van-cell__title{width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}.wfattach-container[data-v-d820d2a0] .van-cell__value{width:45%;height:24px}.wfattach-container[data-v-d820d2a0] .van-cell__value .van-icon-add-o{line-height:24px}.wfattach-container[data-v-d820d2a0] .van-cell__value .van-circle{margin-top:2px}.wfattach-container[data-v-d820d2a0] .van-cell__value .attach-icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wfattach-container[data-v-d820d2a0] .van-cell__value .attach-icon>span{white-space:nowrap;-ms-flex-negative:0;flex-shrink:0}.wfattach-container[data-v-d820d2a0] .van-cell__value .attach-icon .van-icon{line-height:24px;margin-left:10px;font-size:16px;-ms-flex-negative:0;flex-shrink:0}.wfattach-container[data-v-d820d2a0]:after{border-top-width:0}.attachmants_preview .attachmants .van-cell-group .van-cell[data-v-d820d2a0]{padding-left:70px;padding-right:36px}.attachmants_preview .attachmants .van-cell-group .van-cell[data-v-d820d2a0]:after{right:0}.attachmants_preview .attachmants .van-cell-group .van-cell[data-v-d820d2a0]:first-child:before{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;content:\" \";pointer-events:none;right:0;top:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.attachmants_preview .attachmants .van-cell-group .van-cell .van-cell__title[data-v-d820d2a0]{position:relative}.attachmants_preview .attachmants .van-cell-group .van-cell .van-cell__title .attach_photo[data-v-d820d2a0]{position:absolute;left:-54px;height:44px;width:44px}.attachmants_preview .attachmants .van-cell-group .van-cell .van-cell__title .attach_name[data-v-d820d2a0]{width:calc(100vw - 107px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-attachment-field[data-v-d820d2a0]{position:relative}.van-attachment-field[data-v-d820d2a0]:after{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;content:\" \";pointer-events:none;top:unset;border-width:0;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.attach-deleting-icon[data-v-d820d2a0]{display:inline-block;-webkit-animation:attach-spin-d820d2a0 .8s linear infinite;animation:attach-spin-d820d2a0 .8s linear infinite}@-webkit-keyframes attach-spin-d820d2a0{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes attach-spin-d820d2a0{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}", ""]);
21616
22026
  // Exports
21617
22027
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
21618
22028
 
@@ -48026,6 +48436,750 @@ module.exports = function getSideChannel() {
48026
48436
  };
48027
48437
 
48028
48438
 
48439
+ /***/ }),
48440
+
48441
+ /***/ 5735:
48442
+ /***/ (function(module) {
48443
+
48444
+ (function (factory) {
48445
+ if (true) {
48446
+ // Node/CommonJS
48447
+ module.exports = factory();
48448
+ } else { var glob; }
48449
+ }(function (undefined) {
48450
+
48451
+ 'use strict';
48452
+
48453
+ /*
48454
+ * Fastest md5 implementation around (JKM md5).
48455
+ * Credits: Joseph Myers
48456
+ *
48457
+ * @see http://www.myersdaily.org/joseph/javascript/md5-text.html
48458
+ * @see http://jsperf.com/md5-shootout/7
48459
+ */
48460
+
48461
+ /* this function is much faster,
48462
+ so if possible we use it. Some IEs
48463
+ are the only ones I know of that
48464
+ need the idiotic second function,
48465
+ generated by an if clause. */
48466
+ var add32 = function (a, b) {
48467
+ return (a + b) & 0xFFFFFFFF;
48468
+ },
48469
+ hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
48470
+
48471
+
48472
+ function cmn(q, a, b, x, s, t) {
48473
+ a = add32(add32(a, q), add32(x, t));
48474
+ return add32((a << s) | (a >>> (32 - s)), b);
48475
+ }
48476
+
48477
+ function md5cycle(x, k) {
48478
+ var a = x[0],
48479
+ b = x[1],
48480
+ c = x[2],
48481
+ d = x[3];
48482
+
48483
+ a += (b & c | ~b & d) + k[0] - 680876936 | 0;
48484
+ a = (a << 7 | a >>> 25) + b | 0;
48485
+ d += (a & b | ~a & c) + k[1] - 389564586 | 0;
48486
+ d = (d << 12 | d >>> 20) + a | 0;
48487
+ c += (d & a | ~d & b) + k[2] + 606105819 | 0;
48488
+ c = (c << 17 | c >>> 15) + d | 0;
48489
+ b += (c & d | ~c & a) + k[3] - 1044525330 | 0;
48490
+ b = (b << 22 | b >>> 10) + c | 0;
48491
+ a += (b & c | ~b & d) + k[4] - 176418897 | 0;
48492
+ a = (a << 7 | a >>> 25) + b | 0;
48493
+ d += (a & b | ~a & c) + k[5] + 1200080426 | 0;
48494
+ d = (d << 12 | d >>> 20) + a | 0;
48495
+ c += (d & a | ~d & b) + k[6] - 1473231341 | 0;
48496
+ c = (c << 17 | c >>> 15) + d | 0;
48497
+ b += (c & d | ~c & a) + k[7] - 45705983 | 0;
48498
+ b = (b << 22 | b >>> 10) + c | 0;
48499
+ a += (b & c | ~b & d) + k[8] + 1770035416 | 0;
48500
+ a = (a << 7 | a >>> 25) + b | 0;
48501
+ d += (a & b | ~a & c) + k[9] - 1958414417 | 0;
48502
+ d = (d << 12 | d >>> 20) + a | 0;
48503
+ c += (d & a | ~d & b) + k[10] - 42063 | 0;
48504
+ c = (c << 17 | c >>> 15) + d | 0;
48505
+ b += (c & d | ~c & a) + k[11] - 1990404162 | 0;
48506
+ b = (b << 22 | b >>> 10) + c | 0;
48507
+ a += (b & c | ~b & d) + k[12] + 1804603682 | 0;
48508
+ a = (a << 7 | a >>> 25) + b | 0;
48509
+ d += (a & b | ~a & c) + k[13] - 40341101 | 0;
48510
+ d = (d << 12 | d >>> 20) + a | 0;
48511
+ c += (d & a | ~d & b) + k[14] - 1502002290 | 0;
48512
+ c = (c << 17 | c >>> 15) + d | 0;
48513
+ b += (c & d | ~c & a) + k[15] + 1236535329 | 0;
48514
+ b = (b << 22 | b >>> 10) + c | 0;
48515
+
48516
+ a += (b & d | c & ~d) + k[1] - 165796510 | 0;
48517
+ a = (a << 5 | a >>> 27) + b | 0;
48518
+ d += (a & c | b & ~c) + k[6] - 1069501632 | 0;
48519
+ d = (d << 9 | d >>> 23) + a | 0;
48520
+ c += (d & b | a & ~b) + k[11] + 643717713 | 0;
48521
+ c = (c << 14 | c >>> 18) + d | 0;
48522
+ b += (c & a | d & ~a) + k[0] - 373897302 | 0;
48523
+ b = (b << 20 | b >>> 12) + c | 0;
48524
+ a += (b & d | c & ~d) + k[5] - 701558691 | 0;
48525
+ a = (a << 5 | a >>> 27) + b | 0;
48526
+ d += (a & c | b & ~c) + k[10] + 38016083 | 0;
48527
+ d = (d << 9 | d >>> 23) + a | 0;
48528
+ c += (d & b | a & ~b) + k[15] - 660478335 | 0;
48529
+ c = (c << 14 | c >>> 18) + d | 0;
48530
+ b += (c & a | d & ~a) + k[4] - 405537848 | 0;
48531
+ b = (b << 20 | b >>> 12) + c | 0;
48532
+ a += (b & d | c & ~d) + k[9] + 568446438 | 0;
48533
+ a = (a << 5 | a >>> 27) + b | 0;
48534
+ d += (a & c | b & ~c) + k[14] - 1019803690 | 0;
48535
+ d = (d << 9 | d >>> 23) + a | 0;
48536
+ c += (d & b | a & ~b) + k[3] - 187363961 | 0;
48537
+ c = (c << 14 | c >>> 18) + d | 0;
48538
+ b += (c & a | d & ~a) + k[8] + 1163531501 | 0;
48539
+ b = (b << 20 | b >>> 12) + c | 0;
48540
+ a += (b & d | c & ~d) + k[13] - 1444681467 | 0;
48541
+ a = (a << 5 | a >>> 27) + b | 0;
48542
+ d += (a & c | b & ~c) + k[2] - 51403784 | 0;
48543
+ d = (d << 9 | d >>> 23) + a | 0;
48544
+ c += (d & b | a & ~b) + k[7] + 1735328473 | 0;
48545
+ c = (c << 14 | c >>> 18) + d | 0;
48546
+ b += (c & a | d & ~a) + k[12] - 1926607734 | 0;
48547
+ b = (b << 20 | b >>> 12) + c | 0;
48548
+
48549
+ a += (b ^ c ^ d) + k[5] - 378558 | 0;
48550
+ a = (a << 4 | a >>> 28) + b | 0;
48551
+ d += (a ^ b ^ c) + k[8] - 2022574463 | 0;
48552
+ d = (d << 11 | d >>> 21) + a | 0;
48553
+ c += (d ^ a ^ b) + k[11] + 1839030562 | 0;
48554
+ c = (c << 16 | c >>> 16) + d | 0;
48555
+ b += (c ^ d ^ a) + k[14] - 35309556 | 0;
48556
+ b = (b << 23 | b >>> 9) + c | 0;
48557
+ a += (b ^ c ^ d) + k[1] - 1530992060 | 0;
48558
+ a = (a << 4 | a >>> 28) + b | 0;
48559
+ d += (a ^ b ^ c) + k[4] + 1272893353 | 0;
48560
+ d = (d << 11 | d >>> 21) + a | 0;
48561
+ c += (d ^ a ^ b) + k[7] - 155497632 | 0;
48562
+ c = (c << 16 | c >>> 16) + d | 0;
48563
+ b += (c ^ d ^ a) + k[10] - 1094730640 | 0;
48564
+ b = (b << 23 | b >>> 9) + c | 0;
48565
+ a += (b ^ c ^ d) + k[13] + 681279174 | 0;
48566
+ a = (a << 4 | a >>> 28) + b | 0;
48567
+ d += (a ^ b ^ c) + k[0] - 358537222 | 0;
48568
+ d = (d << 11 | d >>> 21) + a | 0;
48569
+ c += (d ^ a ^ b) + k[3] - 722521979 | 0;
48570
+ c = (c << 16 | c >>> 16) + d | 0;
48571
+ b += (c ^ d ^ a) + k[6] + 76029189 | 0;
48572
+ b = (b << 23 | b >>> 9) + c | 0;
48573
+ a += (b ^ c ^ d) + k[9] - 640364487 | 0;
48574
+ a = (a << 4 | a >>> 28) + b | 0;
48575
+ d += (a ^ b ^ c) + k[12] - 421815835 | 0;
48576
+ d = (d << 11 | d >>> 21) + a | 0;
48577
+ c += (d ^ a ^ b) + k[15] + 530742520 | 0;
48578
+ c = (c << 16 | c >>> 16) + d | 0;
48579
+ b += (c ^ d ^ a) + k[2] - 995338651 | 0;
48580
+ b = (b << 23 | b >>> 9) + c | 0;
48581
+
48582
+ a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;
48583
+ a = (a << 6 | a >>> 26) + b | 0;
48584
+ d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;
48585
+ d = (d << 10 | d >>> 22) + a | 0;
48586
+ c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;
48587
+ c = (c << 15 | c >>> 17) + d | 0;
48588
+ b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;
48589
+ b = (b << 21 |b >>> 11) + c | 0;
48590
+ a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;
48591
+ a = (a << 6 | a >>> 26) + b | 0;
48592
+ d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;
48593
+ d = (d << 10 | d >>> 22) + a | 0;
48594
+ c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;
48595
+ c = (c << 15 | c >>> 17) + d | 0;
48596
+ b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;
48597
+ b = (b << 21 |b >>> 11) + c | 0;
48598
+ a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;
48599
+ a = (a << 6 | a >>> 26) + b | 0;
48600
+ d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;
48601
+ d = (d << 10 | d >>> 22) + a | 0;
48602
+ c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;
48603
+ c = (c << 15 | c >>> 17) + d | 0;
48604
+ b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;
48605
+ b = (b << 21 |b >>> 11) + c | 0;
48606
+ a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;
48607
+ a = (a << 6 | a >>> 26) + b | 0;
48608
+ d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;
48609
+ d = (d << 10 | d >>> 22) + a | 0;
48610
+ c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;
48611
+ c = (c << 15 | c >>> 17) + d | 0;
48612
+ b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;
48613
+ b = (b << 21 | b >>> 11) + c | 0;
48614
+
48615
+ x[0] = a + x[0] | 0;
48616
+ x[1] = b + x[1] | 0;
48617
+ x[2] = c + x[2] | 0;
48618
+ x[3] = d + x[3] | 0;
48619
+ }
48620
+
48621
+ function md5blk(s) {
48622
+ var md5blks = [],
48623
+ i; /* Andy King said do it this way. */
48624
+
48625
+ for (i = 0; i < 64; i += 4) {
48626
+ md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);
48627
+ }
48628
+ return md5blks;
48629
+ }
48630
+
48631
+ function md5blk_array(a) {
48632
+ var md5blks = [],
48633
+ i; /* Andy King said do it this way. */
48634
+
48635
+ for (i = 0; i < 64; i += 4) {
48636
+ md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);
48637
+ }
48638
+ return md5blks;
48639
+ }
48640
+
48641
+ function md51(s) {
48642
+ var n = s.length,
48643
+ state = [1732584193, -271733879, -1732584194, 271733878],
48644
+ i,
48645
+ length,
48646
+ tail,
48647
+ tmp,
48648
+ lo,
48649
+ hi;
48650
+
48651
+ for (i = 64; i <= n; i += 64) {
48652
+ md5cycle(state, md5blk(s.substring(i - 64, i)));
48653
+ }
48654
+ s = s.substring(i - 64);
48655
+ length = s.length;
48656
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
48657
+ for (i = 0; i < length; i += 1) {
48658
+ tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);
48659
+ }
48660
+ tail[i >> 2] |= 0x80 << ((i % 4) << 3);
48661
+ if (i > 55) {
48662
+ md5cycle(state, tail);
48663
+ for (i = 0; i < 16; i += 1) {
48664
+ tail[i] = 0;
48665
+ }
48666
+ }
48667
+
48668
+ // Beware that the final length might not fit in 32 bits so we take care of that
48669
+ tmp = n * 8;
48670
+ tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
48671
+ lo = parseInt(tmp[2], 16);
48672
+ hi = parseInt(tmp[1], 16) || 0;
48673
+
48674
+ tail[14] = lo;
48675
+ tail[15] = hi;
48676
+
48677
+ md5cycle(state, tail);
48678
+ return state;
48679
+ }
48680
+
48681
+ function md51_array(a) {
48682
+ var n = a.length,
48683
+ state = [1732584193, -271733879, -1732584194, 271733878],
48684
+ i,
48685
+ length,
48686
+ tail,
48687
+ tmp,
48688
+ lo,
48689
+ hi;
48690
+
48691
+ for (i = 64; i <= n; i += 64) {
48692
+ md5cycle(state, md5blk_array(a.subarray(i - 64, i)));
48693
+ }
48694
+
48695
+ // Not sure if it is a bug, however IE10 will always produce a sub array of length 1
48696
+ // containing the last element of the parent array if the sub array specified starts
48697
+ // beyond the length of the parent array - weird.
48698
+ // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue
48699
+ a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);
48700
+
48701
+ length = a.length;
48702
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
48703
+ for (i = 0; i < length; i += 1) {
48704
+ tail[i >> 2] |= a[i] << ((i % 4) << 3);
48705
+ }
48706
+
48707
+ tail[i >> 2] |= 0x80 << ((i % 4) << 3);
48708
+ if (i > 55) {
48709
+ md5cycle(state, tail);
48710
+ for (i = 0; i < 16; i += 1) {
48711
+ tail[i] = 0;
48712
+ }
48713
+ }
48714
+
48715
+ // Beware that the final length might not fit in 32 bits so we take care of that
48716
+ tmp = n * 8;
48717
+ tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
48718
+ lo = parseInt(tmp[2], 16);
48719
+ hi = parseInt(tmp[1], 16) || 0;
48720
+
48721
+ tail[14] = lo;
48722
+ tail[15] = hi;
48723
+
48724
+ md5cycle(state, tail);
48725
+
48726
+ return state;
48727
+ }
48728
+
48729
+ function rhex(n) {
48730
+ var s = '',
48731
+ j;
48732
+ for (j = 0; j < 4; j += 1) {
48733
+ s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];
48734
+ }
48735
+ return s;
48736
+ }
48737
+
48738
+ function hex(x) {
48739
+ var i;
48740
+ for (i = 0; i < x.length; i += 1) {
48741
+ x[i] = rhex(x[i]);
48742
+ }
48743
+ return x.join('');
48744
+ }
48745
+
48746
+ // In some cases the fast add32 function cannot be used..
48747
+ if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {
48748
+ add32 = function (x, y) {
48749
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF),
48750
+ msw = (x >> 16) + (y >> 16) + (lsw >> 16);
48751
+ return (msw << 16) | (lsw & 0xFFFF);
48752
+ };
48753
+ }
48754
+
48755
+ // ---------------------------------------------------
48756
+
48757
+ /**
48758
+ * ArrayBuffer slice polyfill.
48759
+ *
48760
+ * @see https://github.com/ttaubert/node-arraybuffer-slice
48761
+ */
48762
+
48763
+ if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {
48764
+ (function () {
48765
+ function clamp(val, length) {
48766
+ val = (val | 0) || 0;
48767
+
48768
+ if (val < 0) {
48769
+ return Math.max(val + length, 0);
48770
+ }
48771
+
48772
+ return Math.min(val, length);
48773
+ }
48774
+
48775
+ ArrayBuffer.prototype.slice = function (from, to) {
48776
+ var length = this.byteLength,
48777
+ begin = clamp(from, length),
48778
+ end = length,
48779
+ num,
48780
+ target,
48781
+ targetArray,
48782
+ sourceArray;
48783
+
48784
+ if (to !== undefined) {
48785
+ end = clamp(to, length);
48786
+ }
48787
+
48788
+ if (begin > end) {
48789
+ return new ArrayBuffer(0);
48790
+ }
48791
+
48792
+ num = end - begin;
48793
+ target = new ArrayBuffer(num);
48794
+ targetArray = new Uint8Array(target);
48795
+
48796
+ sourceArray = new Uint8Array(this, begin, num);
48797
+ targetArray.set(sourceArray);
48798
+
48799
+ return target;
48800
+ };
48801
+ })();
48802
+ }
48803
+
48804
+ // ---------------------------------------------------
48805
+
48806
+ /**
48807
+ * Helpers.
48808
+ */
48809
+
48810
+ function toUtf8(str) {
48811
+ if (/[\u0080-\uFFFF]/.test(str)) {
48812
+ str = unescape(encodeURIComponent(str));
48813
+ }
48814
+
48815
+ return str;
48816
+ }
48817
+
48818
+ function utf8Str2ArrayBuffer(str, returnUInt8Array) {
48819
+ var length = str.length,
48820
+ buff = new ArrayBuffer(length),
48821
+ arr = new Uint8Array(buff),
48822
+ i;
48823
+
48824
+ for (i = 0; i < length; i += 1) {
48825
+ arr[i] = str.charCodeAt(i);
48826
+ }
48827
+
48828
+ return returnUInt8Array ? arr : buff;
48829
+ }
48830
+
48831
+ function arrayBuffer2Utf8Str(buff) {
48832
+ return String.fromCharCode.apply(null, new Uint8Array(buff));
48833
+ }
48834
+
48835
+ function concatenateArrayBuffers(first, second, returnUInt8Array) {
48836
+ var result = new Uint8Array(first.byteLength + second.byteLength);
48837
+
48838
+ result.set(new Uint8Array(first));
48839
+ result.set(new Uint8Array(second), first.byteLength);
48840
+
48841
+ return returnUInt8Array ? result : result.buffer;
48842
+ }
48843
+
48844
+ function hexToBinaryString(hex) {
48845
+ var bytes = [],
48846
+ length = hex.length,
48847
+ x;
48848
+
48849
+ for (x = 0; x < length - 1; x += 2) {
48850
+ bytes.push(parseInt(hex.substr(x, 2), 16));
48851
+ }
48852
+
48853
+ return String.fromCharCode.apply(String, bytes);
48854
+ }
48855
+
48856
+ // ---------------------------------------------------
48857
+
48858
+ /**
48859
+ * SparkMD5 OOP implementation.
48860
+ *
48861
+ * Use this class to perform an incremental md5, otherwise use the
48862
+ * static methods instead.
48863
+ */
48864
+
48865
+ function SparkMD5() {
48866
+ // call reset to init the instance
48867
+ this.reset();
48868
+ }
48869
+
48870
+ /**
48871
+ * Appends a string.
48872
+ * A conversion will be applied if an utf8 string is detected.
48873
+ *
48874
+ * @param {String} str The string to be appended
48875
+ *
48876
+ * @return {SparkMD5} The instance itself
48877
+ */
48878
+ SparkMD5.prototype.append = function (str) {
48879
+ // Converts the string to utf8 bytes if necessary
48880
+ // Then append as binary
48881
+ this.appendBinary(toUtf8(str));
48882
+
48883
+ return this;
48884
+ };
48885
+
48886
+ /**
48887
+ * Appends a binary string.
48888
+ *
48889
+ * @param {String} contents The binary string to be appended
48890
+ *
48891
+ * @return {SparkMD5} The instance itself
48892
+ */
48893
+ SparkMD5.prototype.appendBinary = function (contents) {
48894
+ this._buff += contents;
48895
+ this._length += contents.length;
48896
+
48897
+ var length = this._buff.length,
48898
+ i;
48899
+
48900
+ for (i = 64; i <= length; i += 64) {
48901
+ md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));
48902
+ }
48903
+
48904
+ this._buff = this._buff.substring(i - 64);
48905
+
48906
+ return this;
48907
+ };
48908
+
48909
+ /**
48910
+ * Finishes the incremental computation, reseting the internal state and
48911
+ * returning the result.
48912
+ *
48913
+ * @param {Boolean} raw True to get the raw string, false to get the hex string
48914
+ *
48915
+ * @return {String} The result
48916
+ */
48917
+ SparkMD5.prototype.end = function (raw) {
48918
+ var buff = this._buff,
48919
+ length = buff.length,
48920
+ i,
48921
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
48922
+ ret;
48923
+
48924
+ for (i = 0; i < length; i += 1) {
48925
+ tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);
48926
+ }
48927
+
48928
+ this._finish(tail, length);
48929
+ ret = hex(this._hash);
48930
+
48931
+ if (raw) {
48932
+ ret = hexToBinaryString(ret);
48933
+ }
48934
+
48935
+ this.reset();
48936
+
48937
+ return ret;
48938
+ };
48939
+
48940
+ /**
48941
+ * Resets the internal state of the computation.
48942
+ *
48943
+ * @return {SparkMD5} The instance itself
48944
+ */
48945
+ SparkMD5.prototype.reset = function () {
48946
+ this._buff = '';
48947
+ this._length = 0;
48948
+ this._hash = [1732584193, -271733879, -1732584194, 271733878];
48949
+
48950
+ return this;
48951
+ };
48952
+
48953
+ /**
48954
+ * Gets the internal state of the computation.
48955
+ *
48956
+ * @return {Object} The state
48957
+ */
48958
+ SparkMD5.prototype.getState = function () {
48959
+ return {
48960
+ buff: this._buff,
48961
+ length: this._length,
48962
+ hash: this._hash.slice()
48963
+ };
48964
+ };
48965
+
48966
+ /**
48967
+ * Gets the internal state of the computation.
48968
+ *
48969
+ * @param {Object} state The state
48970
+ *
48971
+ * @return {SparkMD5} The instance itself
48972
+ */
48973
+ SparkMD5.prototype.setState = function (state) {
48974
+ this._buff = state.buff;
48975
+ this._length = state.length;
48976
+ this._hash = state.hash;
48977
+
48978
+ return this;
48979
+ };
48980
+
48981
+ /**
48982
+ * Releases memory used by the incremental buffer and other additional
48983
+ * resources. If you plan to use the instance again, use reset instead.
48984
+ */
48985
+ SparkMD5.prototype.destroy = function () {
48986
+ delete this._hash;
48987
+ delete this._buff;
48988
+ delete this._length;
48989
+ };
48990
+
48991
+ /**
48992
+ * Finish the final calculation based on the tail.
48993
+ *
48994
+ * @param {Array} tail The tail (will be modified)
48995
+ * @param {Number} length The length of the remaining buffer
48996
+ */
48997
+ SparkMD5.prototype._finish = function (tail, length) {
48998
+ var i = length,
48999
+ tmp,
49000
+ lo,
49001
+ hi;
49002
+
49003
+ tail[i >> 2] |= 0x80 << ((i % 4) << 3);
49004
+ if (i > 55) {
49005
+ md5cycle(this._hash, tail);
49006
+ for (i = 0; i < 16; i += 1) {
49007
+ tail[i] = 0;
49008
+ }
49009
+ }
49010
+
49011
+ // Do the final computation based on the tail and length
49012
+ // Beware that the final length may not fit in 32 bits so we take care of that
49013
+ tmp = this._length * 8;
49014
+ tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
49015
+ lo = parseInt(tmp[2], 16);
49016
+ hi = parseInt(tmp[1], 16) || 0;
49017
+
49018
+ tail[14] = lo;
49019
+ tail[15] = hi;
49020
+ md5cycle(this._hash, tail);
49021
+ };
49022
+
49023
+ /**
49024
+ * Performs the md5 hash on a string.
49025
+ * A conversion will be applied if utf8 string is detected.
49026
+ *
49027
+ * @param {String} str The string
49028
+ * @param {Boolean} [raw] True to get the raw string, false to get the hex string
49029
+ *
49030
+ * @return {String} The result
49031
+ */
49032
+ SparkMD5.hash = function (str, raw) {
49033
+ // Converts the string to utf8 bytes if necessary
49034
+ // Then compute it using the binary function
49035
+ return SparkMD5.hashBinary(toUtf8(str), raw);
49036
+ };
49037
+
49038
+ /**
49039
+ * Performs the md5 hash on a binary string.
49040
+ *
49041
+ * @param {String} content The binary string
49042
+ * @param {Boolean} [raw] True to get the raw string, false to get the hex string
49043
+ *
49044
+ * @return {String} The result
49045
+ */
49046
+ SparkMD5.hashBinary = function (content, raw) {
49047
+ var hash = md51(content),
49048
+ ret = hex(hash);
49049
+
49050
+ return raw ? hexToBinaryString(ret) : ret;
49051
+ };
49052
+
49053
+ // ---------------------------------------------------
49054
+
49055
+ /**
49056
+ * SparkMD5 OOP implementation for array buffers.
49057
+ *
49058
+ * Use this class to perform an incremental md5 ONLY for array buffers.
49059
+ */
49060
+ SparkMD5.ArrayBuffer = function () {
49061
+ // call reset to init the instance
49062
+ this.reset();
49063
+ };
49064
+
49065
+ /**
49066
+ * Appends an array buffer.
49067
+ *
49068
+ * @param {ArrayBuffer} arr The array to be appended
49069
+ *
49070
+ * @return {SparkMD5.ArrayBuffer} The instance itself
49071
+ */
49072
+ SparkMD5.ArrayBuffer.prototype.append = function (arr) {
49073
+ var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),
49074
+ length = buff.length,
49075
+ i;
49076
+
49077
+ this._length += arr.byteLength;
49078
+
49079
+ for (i = 64; i <= length; i += 64) {
49080
+ md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));
49081
+ }
49082
+
49083
+ this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);
49084
+
49085
+ return this;
49086
+ };
49087
+
49088
+ /**
49089
+ * Finishes the incremental computation, reseting the internal state and
49090
+ * returning the result.
49091
+ *
49092
+ * @param {Boolean} raw True to get the raw string, false to get the hex string
49093
+ *
49094
+ * @return {String} The result
49095
+ */
49096
+ SparkMD5.ArrayBuffer.prototype.end = function (raw) {
49097
+ var buff = this._buff,
49098
+ length = buff.length,
49099
+ tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
49100
+ i,
49101
+ ret;
49102
+
49103
+ for (i = 0; i < length; i += 1) {
49104
+ tail[i >> 2] |= buff[i] << ((i % 4) << 3);
49105
+ }
49106
+
49107
+ this._finish(tail, length);
49108
+ ret = hex(this._hash);
49109
+
49110
+ if (raw) {
49111
+ ret = hexToBinaryString(ret);
49112
+ }
49113
+
49114
+ this.reset();
49115
+
49116
+ return ret;
49117
+ };
49118
+
49119
+ /**
49120
+ * Resets the internal state of the computation.
49121
+ *
49122
+ * @return {SparkMD5.ArrayBuffer} The instance itself
49123
+ */
49124
+ SparkMD5.ArrayBuffer.prototype.reset = function () {
49125
+ this._buff = new Uint8Array(0);
49126
+ this._length = 0;
49127
+ this._hash = [1732584193, -271733879, -1732584194, 271733878];
49128
+
49129
+ return this;
49130
+ };
49131
+
49132
+ /**
49133
+ * Gets the internal state of the computation.
49134
+ *
49135
+ * @return {Object} The state
49136
+ */
49137
+ SparkMD5.ArrayBuffer.prototype.getState = function () {
49138
+ var state = SparkMD5.prototype.getState.call(this);
49139
+
49140
+ // Convert buffer to a string
49141
+ state.buff = arrayBuffer2Utf8Str(state.buff);
49142
+
49143
+ return state;
49144
+ };
49145
+
49146
+ /**
49147
+ * Gets the internal state of the computation.
49148
+ *
49149
+ * @param {Object} state The state
49150
+ *
49151
+ * @return {SparkMD5.ArrayBuffer} The instance itself
49152
+ */
49153
+ SparkMD5.ArrayBuffer.prototype.setState = function (state) {
49154
+ // Convert string to buffer
49155
+ state.buff = utf8Str2ArrayBuffer(state.buff, true);
49156
+
49157
+ return SparkMD5.prototype.setState.call(this, state);
49158
+ };
49159
+
49160
+ SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;
49161
+
49162
+ SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;
49163
+
49164
+ /**
49165
+ * Performs the md5 hash on an array buffer.
49166
+ *
49167
+ * @param {ArrayBuffer} arr The array buffer
49168
+ * @param {Boolean} [raw] True to get the raw string, false to get the hex one
49169
+ *
49170
+ * @return {String} The result
49171
+ */
49172
+ SparkMD5.ArrayBuffer.hash = function (arr, raw) {
49173
+ var hash = md51_array(new Uint8Array(arr)),
49174
+ ret = hex(hash);
49175
+
49176
+ return raw ? hexToBinaryString(ret) : ret;
49177
+ };
49178
+
49179
+ return SparkMD5;
49180
+ }));
49181
+
49182
+
48029
49183
  /***/ }),
48030
49184
 
48031
49185
  /***/ 5680:
@@ -48540,19 +49694,19 @@ var update = add("ac1f4192", content, true, {"sourceMap":false,"shadowMode":fals
48540
49694
 
48541
49695
  /***/ }),
48542
49696
 
48543
- /***/ 7112:
49697
+ /***/ 7781:
48544
49698
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
48545
49699
 
48546
49700
  // style-loader: Adds some css to the DOM by adding a <style> tag
48547
49701
 
48548
49702
  // load the styles
48549
- var content = __webpack_require__(6943);
49703
+ var content = __webpack_require__(7986);
48550
49704
  if(content.__esModule) content = content.default;
48551
49705
  if(typeof content === 'string') content = [[module.id, content, '']];
48552
49706
  if(content.locals) module.exports = content.locals;
48553
49707
  // add the styles to the DOM
48554
49708
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
48555
- var update = add("1c81ec7f", content, true, {"sourceMap":false,"shadowMode":false});
49709
+ var update = add("44766374", content, true, {"sourceMap":false,"shadowMode":false});
48556
49710
 
48557
49711
  /***/ }),
48558
49712
 
@@ -70813,39 +71967,39 @@ var asyncComponents = [
70813
71967
  }],
70814
71968
  // ========== ecmapp/Wflowform 工作流表单子组件 → chunk: m-wflow-form ==========
70815
71969
  ['Attachment', function () {
70816
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71970
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70817
71971
  return m.Attachment;
70818
71972
  });
70819
71973
  }], ['BodyFile', function () {
70820
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71974
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70821
71975
  return m.BodyFile;
70822
71976
  });
70823
71977
  }], ['HandleIdea', function () {
70824
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71978
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70825
71979
  return m.HandleIdea;
70826
71980
  });
70827
71981
  }], ['SelectOuterDeputy', function () {
70828
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71982
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70829
71983
  return m.SelectOuterDeputy;
70830
71984
  });
70831
71985
  }], ['SubmitHandle', function () {
70832
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71986
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70833
71987
  return m.SubmitHandle;
70834
71988
  });
70835
71989
  }], ['SubmitDialog', function () {
70836
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71990
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70837
71991
  return m.SubmitDialog;
70838
71992
  });
70839
71993
  }], ['ShortcutProcessing', function () {
70840
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71994
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70841
71995
  return m.ShortcutProcessing;
70842
71996
  });
70843
71997
  }], ['WfNodelogList', function () {
70844
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
71998
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70845
71999
  return m.WfNodelogList;
70846
72000
  });
70847
72001
  }], ['WriteToReadIdea', function () {
70848
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760)).then(function (m) {
72002
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058)).then(function (m) {
70849
72003
  return m.WriteToReadIdea;
70850
72004
  });
70851
72005
  }]];
@@ -70869,7 +72023,7 @@ var mappaio_install = function install(Vue) {
70869
72023
  });
70870
72024
 
70871
72025
  // 3. 异步加载工作流引擎插件(独立 chunk)
70872
- Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 9932)).then(function (m) {
72026
+ Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6322)).then(function (m) {
70873
72027
  Vue.use(m.default || m);
70874
72028
  });
70875
72029
  };
@@ -70895,10 +72049,10 @@ var webSocket = websocket/* default */.A;
70895
72049
 
70896
72050
  // ---------- 工作流相关 ----------
70897
72051
  var WfengineModule = function WfengineModule() {
70898
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 9932));
72052
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6322));
70899
72053
  };
70900
72054
  var WflowformModule = function WflowformModule() {
70901
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6760));
72055
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6058));
70902
72056
  };
70903
72057
 
70904
72058
  // ---------- 重型功能(PDF/富文本,仅特定页面使用) ----------