ecinc-cloud-mappaio 9.7.34 → 9.7.37

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.
@@ -1407,7 +1407,7 @@ var actions = {
1407
1407
 
1408
1408
  /***/ }),
1409
1409
 
1410
- /***/ 6424:
1410
+ /***/ 2184:
1411
1411
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1412
1412
 
1413
1413
  "use strict";
@@ -2313,8 +2313,8 @@ var SysSetupvue_type_template_id_2497073a_scoped_true_render = function render()
2313
2313
  };
2314
2314
  var SysSetupvue_type_template_id_2497073a_scoped_true_staticRenderFns = [];
2315
2315
 
2316
- ;// 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/ecwplat/Module/src/MenuItemForm.vue?vue&type=template&id=76a1a43d&scoped=true
2317
- var MenuItemFormvue_type_template_id_76a1a43d_scoped_true_render = function render() {
2316
+ ;// 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/ecwplat/Module/src/MenuItemForm.vue?vue&type=template&id=3ebd0a76&scoped=true
2317
+ var MenuItemFormvue_type_template_id_3ebd0a76_scoped_true_render = function render() {
2318
2318
  var _vm = this,
2319
2319
  _c = _vm._self._c;
2320
2320
  return _c('el-form', {
@@ -2707,7 +2707,7 @@ var MenuItemFormvue_type_template_id_76a1a43d_scoped_true_render = function rend
2707
2707
  attrs: {
2708
2708
  "dataType": _vm.$tx('ecwplat.menuForm.allFile', '全部')
2709
2709
  }
2710
- }, [_vm._v(_vm._s(this.$tx('ecwplat.menuForm.allFile', '全部')) + "列表URL")])]), _c('td', {
2710
+ }, [_vm._v(_vm._s(_vm.$tx('ecwplat.menuForm.allFile', '全部')) + "列表URL")])]), _c('td', {
2711
2711
  staticClass: "el-table__cell tdcont tdw83",
2712
2712
  attrs: {
2713
2713
  "colspan": "3"
@@ -3810,7 +3810,7 @@ var MenuItemFormvue_type_template_id_76a1a43d_scoped_true_render = function rend
3810
3810
  }
3811
3811
  }, [_c('Icons')], 1) : _vm._e()], 1);
3812
3812
  };
3813
- var MenuItemFormvue_type_template_id_76a1a43d_scoped_true_staticRenderFns = [];
3813
+ var MenuItemFormvue_type_template_id_3ebd0a76_scoped_true_staticRenderFns = [];
3814
3814
 
3815
3815
  ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecwplat/Module/src/MenuItemForm.vue?vue&type=script&lang=js
3816
3816
  /* harmony default export */ var MenuItemFormvue_type_script_lang_js = ({
@@ -4195,7 +4195,7 @@ var MenuItemFormvue_type_template_id_76a1a43d_scoped_true_staticRenderFns = [];
4195
4195
  if (formUrl.indexOf('/dcontent/') !== -1) {
4196
4196
  formUrl = formUrl.split('/dcontent/')[1];
4197
4197
  } else if (formUrl.indexOf('@/wapp/') !== -1) {
4198
- formUrl = formUrl.split('@/wapp/')[1].replace('/\//', '.');
4198
+ formUrl = formUrl.split('@/wapp/')[1].replace('///', '.');
4199
4199
  }
4200
4200
  this.$set(this.vo, 'href', formUrl.split('.')[1]);
4201
4201
  this.$set(this.vo, 'wfEngineUrl', formUrl.split('.')[0] + '/' + formUrl.split('.')[1]);
@@ -4252,9 +4252,9 @@ var MenuItemFormvue_type_template_id_76a1a43d_scoped_true_staticRenderFns = [];
4252
4252
  });
4253
4253
  ;// CONCATENATED MODULE: ./packages/ecwplat/Module/src/MenuItemForm.vue?vue&type=script&lang=js
4254
4254
  /* harmony default export */ var src_MenuItemFormvue_type_script_lang_js = (MenuItemFormvue_type_script_lang_js);
4255
- // 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/ecwplat/Module/src/MenuItemForm.vue?vue&type=style&index=0&id=76a1a43d&prod&scoped=true&lang=scss
4256
- var MenuItemFormvue_type_style_index_0_id_76a1a43d_prod_scoped_true_lang_scss = __webpack_require__(7799);
4257
- ;// CONCATENATED MODULE: ./packages/ecwplat/Module/src/MenuItemForm.vue?vue&type=style&index=0&id=76a1a43d&prod&scoped=true&lang=scss
4255
+ // 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/ecwplat/Module/src/MenuItemForm.vue?vue&type=style&index=0&id=3ebd0a76&prod&scoped=true&lang=scss
4256
+ var MenuItemFormvue_type_style_index_0_id_3ebd0a76_prod_scoped_true_lang_scss = __webpack_require__(6750);
4257
+ ;// CONCATENATED MODULE: ./packages/ecwplat/Module/src/MenuItemForm.vue?vue&type=style&index=0&id=3ebd0a76&prod&scoped=true&lang=scss
4258
4258
 
4259
4259
  ;// CONCATENATED MODULE: ./packages/ecwplat/Module/src/MenuItemForm.vue
4260
4260
 
@@ -4267,11 +4267,11 @@ var MenuItemFormvue_type_style_index_0_id_76a1a43d_prod_scoped_true_lang_scss =
4267
4267
 
4268
4268
  var MenuItemForm_component = (0,componentNormalizer/* default */.A)(
4269
4269
  src_MenuItemFormvue_type_script_lang_js,
4270
- MenuItemFormvue_type_template_id_76a1a43d_scoped_true_render,
4271
- MenuItemFormvue_type_template_id_76a1a43d_scoped_true_staticRenderFns,
4270
+ MenuItemFormvue_type_template_id_3ebd0a76_scoped_true_render,
4271
+ MenuItemFormvue_type_template_id_3ebd0a76_scoped_true_staticRenderFns,
4272
4272
  false,
4273
4273
  null,
4274
- "76a1a43d",
4274
+ "3ebd0a76",
4275
4275
  null
4276
4276
 
4277
4277
  )
@@ -8766,7 +8766,7 @@ src.install = function (Vue) {
8766
8766
 
8767
8767
  /***/ }),
8768
8768
 
8769
- /***/ 8866:
8769
+ /***/ 5888:
8770
8770
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
8771
8771
 
8772
8772
  "use strict";
@@ -8782,6 +8782,7 @@ __webpack_require__.d(__webpack_exports__, {
8782
8782
  ShortcutProcessing: function() { return /* binding */ Wflowform_ShortcutProcessing; },
8783
8783
  SubmitDialog: function() { return /* binding */ Wflowform_SubmitDialog; },
8784
8784
  SubmitHandle: function() { return /* binding */ Wflowform_SubmitHandle; },
8785
+ VoiceInputDialog: function() { return /* binding */ Wflowform_VoiceInputDialog; },
8785
8786
  WfNodelogList: function() { return /* binding */ Wflowform_WfNodelogList; },
8786
8787
  WriteToReadIdea: function() { return /* binding */ Wflowform_WriteToReadIdea; }
8787
8788
  });
@@ -12725,8 +12726,8 @@ var SelectOuterDeputy_component = (0,componentNormalizer/* default */.A)(
12725
12726
  )
12726
12727
 
12727
12728
  /* harmony default export */ var SelectOuterDeputy = (SelectOuterDeputy_component.exports);
12728
- ;// 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/SubmitHandle.vue?vue&type=template&id=44733f4f&scoped=true
12729
- var SubmitHandlevue_type_template_id_44733f4f_scoped_true_render = function render() {
12729
+ ;// 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/SubmitHandle.vue?vue&type=template&id=6bdfbd40&scoped=true
12730
+ var SubmitHandlevue_type_template_id_6bdfbd40_scoped_true_render = function render() {
12730
12731
  var _vm = this,
12731
12732
  _c = _vm._self._c;
12732
12733
  return _vm.initiated ? _c('div', {
@@ -13511,7 +13512,7 @@ var SubmitHandlevue_type_template_id_44733f4f_scoped_true_render = function rend
13511
13512
  }
13512
13513
  })], 2) : _vm._e();
13513
13514
  };
13514
- var SubmitHandlevue_type_template_id_44733f4f_scoped_true_staticRenderFns = [];
13515
+ var SubmitHandlevue_type_template_id_6bdfbd40_scoped_true_staticRenderFns = [];
13515
13516
 
13516
13517
  ;// 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/WfTaskNode.vue?vue&type=template&id=d1ae2f20&scoped=true
13517
13518
  var WfTaskNodevue_type_template_id_d1ae2f20_scoped_true_render = function render() {
@@ -14840,12 +14841,12 @@ var WfTaskNode_component = (0,componentNormalizer/* default */.A)(
14840
14841
  )
14841
14842
 
14842
14843
  /* harmony default export */ var WfTaskNode = (WfTaskNode_component.exports);
14843
- ;// 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/VoiceInputDialog.vue?vue&type=template&id=28732777&scoped=true
14844
- var VoiceInputDialogvue_type_template_id_28732777_scoped_true_render = function render() {
14844
+ ;// 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/VoiceInputDialog.vue?vue&type=template&id=cf18a87c&scoped=true
14845
+ var VoiceInputDialogvue_type_template_id_cf18a87c_scoped_true_render = function render() {
14845
14846
  var _vm = this,
14846
14847
  _c = _vm._self._c;
14847
14848
  return _c('van-popup', {
14848
- staticClass: "voice-input-popup",
14849
+ class: ['voice-input-popup', 'skin-' + _vm.currentSkin],
14849
14850
  attrs: {
14850
14851
  "round": "",
14851
14852
  "position": "bottom",
@@ -14878,6 +14879,17 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_render = function
14878
14879
  })], 1), _c('div', {
14879
14880
  staticClass: "voice-popup-body"
14880
14881
  }, [_c('div', {
14882
+ staticClass: "voice-mic-wrap",
14883
+ class: {
14884
+ recording: _vm.status === 'recording'
14885
+ }
14886
+ }, [_c('span', {
14887
+ staticClass: "tech-ripple tech-ripple-1"
14888
+ }), _c('span', {
14889
+ staticClass: "tech-ripple tech-ripple-2"
14890
+ }), _c('span', {
14891
+ staticClass: "tech-ripple tech-ripple-3"
14892
+ }), _c('div', {
14881
14893
  staticClass: "voice-mic-btn",
14882
14894
  class: {
14883
14895
  recording: _vm.status === 'recording'
@@ -14905,7 +14917,7 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_render = function
14905
14917
  attrs: {
14906
14918
  "d": "M768 480c0 141.4-114.6 256-256 256S256 621.4 256 480h-64c0 163.9 123.3 299 288 318.4V896H352v64h320v-64H544v-97.6C708.7 779 832 643.9 832 480h-64z"
14907
14919
  }
14908
- })])], 1), _c('div', {
14920
+ })])], 1)]), _c('div', {
14909
14921
  staticClass: "voice-status-text",
14910
14922
  class: {
14911
14923
  'is-error': _vm.status === 'error'
@@ -14968,27 +14980,46 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_render = function
14968
14980
  }
14969
14981
  }, [_vm._v(_vm._s(_vm.$tx('ecmapp.wflowform.voiceFillOpinion', '填入意见')))])], 1)]);
14970
14982
  };
14971
- var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns = [];
14983
+ var VoiceInputDialogvue_type_template_id_cf18a87c_scoped_true_staticRenderFns = [];
14972
14984
 
14973
14985
  ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecmapp/Wflowform/src/VoiceInputDialog.vue?vue&type=script&lang=js
14986
+ // 人声判定阈值:AnalyserNode频谱均值(getByteFrequencyData,取值范围0-255)超过该值视为有人声;
14987
+ // 值越小越灵敏(环境噪声易误触发),越大越迟钝(轻声说话可能漏检),10为安静室内环境的经验值
14988
+ var VOICE_AVG_THRESHOLD = 10;
14989
+ // 前导静音容忍时长(毫秒):录音开始后一直未检测到人声,超过该时长自动结束并丢弃录音,
14990
+ // 避免用户点了麦克风却没说话导致录音一直挂着;10秒足够用户反应和开口
14991
+ var LEADING_SILENCE_MS = 10000;
14992
+ // 尾部静音容忍时长(毫秒):已检测到人声后连续沉默超过该时长自动结束录音,
14993
+ // 审批意见多为短句,说完后无需等太久即可收尾;该值应大于句中自然停顿(约1-2秒)
14994
+ var TRAILING_SILENCE_MS = 3000;
14974
14995
  /* harmony default export */ var VoiceInputDialogvue_type_script_lang_js = ({
14975
14996
  name: 'VoiceInputDialog',
14976
14997
  props: {
14977
14998
  visible: {
14978
14999
  type: Boolean,
14979
15000
  default: false
15001
+ },
15002
+ // 界面皮肤:basic-基本版 tech-科技版,仅影响视觉样式,识别功能完全一致
15003
+ skin: {
15004
+ type: String,
15005
+ default: 'basic',
15006
+ validator: function validator(val) {
15007
+ return ['basic', 'tech'].indexOf(val) > -1;
15008
+ }
14980
15009
  }
14981
15010
  },
14982
15011
  data: function data() {
14983
15012
  return {
14984
15013
  i18npkg: 'ecmapp',
14985
15014
  moduleCode: 'wflowform',
15015
+ currentSkin: this.skin,
15016
+ // 当前皮肤(basic/tech),初始取自skin属性,头部按钮可切换
14986
15017
  status: 'idle',
14987
15018
  // idle:待录音 recording:录音中 processing:识别中(仅后端模式) done:识别完成 error:出错
14988
15019
  errorText: '',
14989
15020
  resultText: '',
14990
15021
  finalText: '',
14991
- // 浏览器模式已确认的识别文本
15022
+ // 已确认的识别文本(浏览器模式的final结果、流式模式已分段终稿)
14992
15023
  seconds: 0,
14993
15024
  timer: null,
14994
15025
  recognition: null,
@@ -14998,6 +15029,24 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
14998
15029
  stream: null,
14999
15030
  // 麦克风音频流
15000
15031
  audioChunks: [],
15032
+ ws: null,
15033
+ // 流式识别WebSocket连接
15034
+ wsProcessor: null,
15035
+ // 流式识别PCM采集节点
15036
+ wsSource: null,
15037
+ // 流式识别音频源节点
15038
+ streamActive: false,
15039
+ // 流式识别链路是否正常(异常时降级为整段上传)
15040
+ streamWaitingDone: false,
15041
+ // 已发stop,等待服务端最终结果
15042
+ streamDoneTimer: null,
15043
+ // 等待最终结果的超时兜底定时器
15044
+ lastVoiceAt: 0,
15045
+ // 最近一次检测到人声的时间戳,用于静音自动结束
15046
+ hasVoice: false,
15047
+ // 本次录音是否检测到过人声
15048
+ discardRecording: false,
15049
+ // 全程静音自动结束时丢弃录音,不上传识别
15001
15050
  audioContext: null,
15002
15051
  // 波形绘制音频上下文
15003
15052
  analyser: null,
@@ -15018,10 +15067,18 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15018
15067
  }
15019
15068
  },
15020
15069
  // window.voiceToWord为非空字符串且不为browser时,视为后端转写接口URL
15070
+ // 后端语音识别服务部署在eccloud-clientms,网关已将/voice/**路由过去,
15071
+ // 故该参数配置为'/voice/recognize/toText'(请求基地址由$http的baseURL统一拼接)
15021
15072
  backendUrl: function backendUrl() {
15022
15073
  var voiceToWord = window.voiceToWord;
15023
15074
  return voiceToWord && typeof voiceToWord === 'string' && voiceToWord !== 'browser' ? voiceToWord : '';
15024
15075
  },
15076
+ // window.voiceToWordStream为非空字符串时启用流式识别(WebSocket边说边出字),
15077
+ // 值为网关内路径如'/voice/recognize/stream',未配置则维持录完整段上传识别
15078
+ streamPath: function streamPath() {
15079
+ var streamPath = window.voiceToWordStream;
15080
+ return this.backendUrl && streamPath && typeof streamPath === 'string' ? streamPath : '';
15081
+ },
15025
15082
  statusText: function statusText() {
15026
15083
  switch (this.status) {
15027
15084
  case 'recording':
@@ -15048,6 +15105,9 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15048
15105
  this.resetState();
15049
15106
  this.preRequestPermission();
15050
15107
  }
15108
+ },
15109
+ skin: function skin(val) {
15110
+ this.currentSkin = val;
15051
15111
  }
15052
15112
  },
15053
15113
  beforeDestroy: function beforeDestroy() {
@@ -15061,6 +15121,8 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15061
15121
  this.finalText = '';
15062
15122
  this.seconds = 0;
15063
15123
  this.audioChunks = [];
15124
+ this.hasVoice = false;
15125
+ this.discardRecording = false;
15064
15126
  },
15065
15127
  // 打开弹窗即预请求麦克风权限,被拒绝时显示引导文案
15066
15128
  preRequestPermission: function preRequestPermission() {
@@ -15097,12 +15159,23 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15097
15159
  startRecord: function startRecord() {
15098
15160
  this.resultText = '';
15099
15161
  this.finalText = '';
15162
+ // 在用户点击手势上下文内创建AudioContext,规避移动端自动播放策略导致的suspended(波形无数据)
15163
+ this.prepareAudioContext();
15100
15164
  if (this.backendUrl) {
15101
15165
  this.startBackendRecord();
15102
15166
  } else {
15103
15167
  this.startBrowserRecognition();
15104
15168
  }
15105
15169
  },
15170
+ prepareAudioContext: function prepareAudioContext() {
15171
+ var AudioContextClass = window.AudioContext || window.webkitAudioContext;
15172
+ if (!AudioContextClass) return;
15173
+ if (this.audioContext && this.audioContext.state !== 'closed') return;
15174
+ this.audioContext = new AudioContextClass();
15175
+ if (this.audioContext.state === 'suspended') {
15176
+ this.audioContext.resume().catch(function () {});
15177
+ }
15178
+ },
15106
15179
  stopRecord: function stopRecord() {
15107
15180
  this.stopTimer();
15108
15181
  if (this.recognition) {
@@ -15117,6 +15190,7 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15117
15190
  this.seconds = 0;
15118
15191
  this.timer = setInterval(function () {
15119
15192
  _this2.seconds++;
15193
+ _this2.checkSilenceTimeout();
15120
15194
  }, 1000);
15121
15195
  },
15122
15196
  stopTimer: function stopTimer() {
@@ -15125,6 +15199,18 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15125
15199
  this.timer = null;
15126
15200
  }
15127
15201
  },
15202
+ // 连续静音超时自动结束录音;全程无人声则丢弃录音并提示,无analyser数据时降级为不启用
15203
+ checkSilenceTimeout: function checkSilenceTimeout() {
15204
+ if (this.status !== 'recording' || !this.analyser) return;
15205
+ var silenceLimit = this.hasVoice ? TRAILING_SILENCE_MS : LEADING_SILENCE_MS;
15206
+ if (Date.now() - this.lastVoiceAt < silenceLimit) return;
15207
+ if (!this.hasVoice) {
15208
+ this.discardRecording = true;
15209
+ this.status = 'error';
15210
+ this.errorText = this.$tx('ecmapp.wflowform.voiceNoSpeech', '未检测到语音,请重试。');
15211
+ }
15212
+ this.stopRecord();
15213
+ },
15128
15214
  // 浏览器模式:Web Speech API直转文字,中间结果实时上屏
15129
15215
  startBrowserRecognition: function startBrowserRecognition() {
15130
15216
  var _this3 = this;
@@ -15202,6 +15288,9 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15202
15288
  }).then(function (stream) {
15203
15289
  _this4.stream = stream;
15204
15290
  _this4.audioChunks = [];
15291
+ // 立即置为录音中:MediaRecorder.onstart是异步事件,而WebSocket经本地代理握手可能先于它完成,
15292
+ // 若等onstart才置status,onopen会因status仍为idle而误关连接(code=1000)
15293
+ _this4.status = 'recording';
15205
15294
  var mimeType = window.MediaRecorder && MediaRecorder.isTypeSupported('audio/webm;codecs=opus') ? 'audio/webm;codecs=opus' : '';
15206
15295
  var mediaRecorder = mimeType ? new MediaRecorder(stream, {
15207
15296
  mimeType: mimeType
@@ -15212,22 +15301,42 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15212
15301
  }
15213
15302
  };
15214
15303
  mediaRecorder.onstart = function () {
15215
- _this4.status = 'recording';
15216
15304
  _this4.startTimer();
15217
- _this4.startWaveform(stream);
15305
+ // canvas由v-show控制,需等DOM更新可见后再取尺寸绘制波形,否则画布为0×0
15306
+ _this4.$nextTick(function () {
15307
+ // 回调执行前录音可能已停止,避免创建无人清理的AudioContext
15308
+ if (_this4.status === 'recording') {
15309
+ _this4.startWaveform(stream);
15310
+ }
15311
+ });
15218
15312
  };
15219
15313
  mediaRecorder.onstop = function () {
15220
15314
  _this4.stopTimer();
15315
+ // 先断开PCM推送再关波形(stopWaveform会关闭AudioContext)
15316
+ _this4.stopPcmCapture();
15221
15317
  _this4.stopWaveform();
15222
15318
  _this4.releaseStream();
15223
15319
  _this4.mediaRecorder = null;
15224
- // 弹窗已关闭(取消录音)则不再上传
15225
- if (_this4.visible && _this4.audioChunks.length > 0) {
15320
+ if (_this4.discardRecording) {
15321
+ // 全程静音自动结束:丢弃录音,提示已在checkSilenceTimeout中给出
15322
+ _this4.discardRecording = false;
15323
+ _this4.audioChunks = [];
15324
+ _this4.closeStream();
15325
+ } else if (_this4.visible && _this4.streamActive && _this4.ws && _this4.ws.readyState === WebSocket.OPEN) {
15326
+ // 流式链路全程正常:通知服务端冲刷解码器收尾,不再整段上传
15327
+ _this4.finishStream();
15328
+ } else if (_this4.visible && _this4.audioChunks.length > 0) {
15329
+ // 弹窗已关闭(取消录音)则不再上传;流式失败时降级为整段上传
15330
+ _this4.closeStream();
15226
15331
  _this4.uploadVoice();
15227
15332
  }
15228
15333
  };
15229
15334
  _this4.mediaRecorder = mediaRecorder;
15230
15335
  mediaRecorder.start();
15336
+ // 流式识别:录音同时经 WebSocket 推送PCM,边说边出字;失败自动降级为整段上传
15337
+ if (_this4.streamPath) {
15338
+ _this4.startStream(stream);
15339
+ }
15231
15340
  }).catch(function () {
15232
15341
  _this4.showPermissionError();
15233
15342
  });
@@ -15265,6 +15374,179 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15265
15374
  _this5.errorText = _this5.$tx('ecmapp.wflowform.voiceRecognizeFail', '语音识别失败,请重试。');
15266
15375
  });
15267
15376
  },
15377
+ // 由axios的baseURL(/apigw)拼出流式识别WebSocket地址
15378
+ buildStreamWsUrl: function buildStreamWsUrl() {
15379
+ var base = this.$http && this.$http.defaults && this.$http.defaults.baseURL || '';
15380
+ if (!/^https?:/i.test(base)) {
15381
+ base = location.origin + (base && base.charAt(0) !== '/' ? '/' : '') + base;
15382
+ }
15383
+ return base.replace(/^https:/, 'wss:').replace(/^http:/, 'ws:') + this.streamPath;
15384
+ },
15385
+ // 建立流式识别WebSocket,成功后边录边传PCM;任何失败都静默回落到整段上传
15386
+ startStream: function startStream(stream) {
15387
+ var _this6 = this;
15388
+ var wsUrl = this.buildStreamWsUrl();
15389
+ console.log('[VoiceStream] 连接:', wsUrl);
15390
+ var ws;
15391
+ try {
15392
+ ws = new WebSocket(wsUrl);
15393
+ } catch (e) {
15394
+ console.warn('[VoiceStream] 创建WebSocket失败,降级为整段上传:', e);
15395
+ return;
15396
+ }
15397
+ ws.binaryType = 'arraybuffer';
15398
+ this.ws = ws;
15399
+ ws.onopen = function () {
15400
+ if (_this6.ws !== ws) return;
15401
+ if (_this6.status !== 'recording') {
15402
+ try {
15403
+ ws.close();
15404
+ } catch (e) {
15405
+ // 已关闭时close抛错可忽略
15406
+ }
15407
+ return;
15408
+ }
15409
+ console.log('[VoiceStream] 握手成功,开始推送PCM');
15410
+ _this6.streamActive = true;
15411
+ _this6.startPcmCapture(stream);
15412
+ };
15413
+ ws.onmessage = function (event) {
15414
+ return _this6.onStreamMessage(event);
15415
+ };
15416
+ ws.onerror = function (event) {
15417
+ console.warn('[VoiceStream] 连接错误,将降级为整段上传', event);
15418
+ };
15419
+ ws.onclose = function (event) {
15420
+ console.log('[VoiceStream] 连接关闭 code=' + event.code + (event.reason ? ' reason=' + event.reason : ''));
15421
+ if (_this6.ws !== ws) return;
15422
+ _this6.ws = null;
15423
+ if (_this6.streamWaitingDone) {
15424
+ // 等待最终结果期间服务端关闭,视为收尾完成
15425
+ _this6.onStreamDone();
15426
+ } else if (_this6.status === 'recording') {
15427
+ // 录音途中异常断开,标记降级,onstop时走整段上传
15428
+ _this6.streamActive = false;
15429
+ _this6.stopPcmCapture();
15430
+ }
15431
+ };
15432
+ },
15433
+ onStreamMessage: function onStreamMessage(event) {
15434
+ var msg;
15435
+ try {
15436
+ msg = JSON.parse(event.data);
15437
+ } catch (e) {
15438
+ return;
15439
+ }
15440
+ if (msg.error) {
15441
+ // 服务端明确报错(如流式未启用),降级到整段上传
15442
+ console.warn('[VoiceStream] 服务端报错,降级为整段上传:', msg.error);
15443
+ this.streamActive = false;
15444
+ this.stopPcmCapture();
15445
+ return;
15446
+ }
15447
+ if (msg.isFinal) {
15448
+ // 一段话说完(端点检测分段),固化进finalText
15449
+ if (msg.text) {
15450
+ this.finalText += msg.text;
15451
+ }
15452
+ this.resultText = this.finalText;
15453
+ } else {
15454
+ this.resultText = this.finalText + (msg.text || '');
15455
+ }
15456
+ if (msg.done) {
15457
+ this.onStreamDone();
15458
+ }
15459
+ },
15460
+ // 用ScriptProcessorNode抓PCM实时发送(AudioWorklet在旧WebView兼容性差)
15461
+ startPcmCapture: function startPcmCapture(stream) {
15462
+ var _this7 = this;
15463
+ var audioContext = this.audioContext;
15464
+ if (!audioContext || audioContext.state === 'closed') return;
15465
+ var source = audioContext.createMediaStreamSource(stream);
15466
+ var processor = audioContext.createScriptProcessor(4096, 1, 1);
15467
+ processor.onaudioprocess = function (event) {
15468
+ if (!_this7.streamActive || !_this7.ws || _this7.ws.readyState !== WebSocket.OPEN) return;
15469
+ var input = event.inputBuffer.getChannelData(0);
15470
+ _this7.ws.send(_this7.downsampleToInt16(input, event.inputBuffer.sampleRate));
15471
+ };
15472
+ source.connect(processor);
15473
+ // 必须接入输出图才会触发onaudioprocess,无output通道不会回放
15474
+ processor.connect(audioContext.destination);
15475
+ this.wsSource = source;
15476
+ this.wsProcessor = processor;
15477
+ },
15478
+ // 线性插值降采样到16kHz并转Int16小端,兼容44.1k/48k采集
15479
+ downsampleToInt16: function downsampleToInt16(input, sourceRate) {
15480
+ var ratio = sourceRate / 16000;
15481
+ var length = Math.floor(input.length / ratio);
15482
+ var result = new Int16Array(length);
15483
+ for (var i = 0; i < length; i++) {
15484
+ var pos = i * ratio;
15485
+ var left = Math.floor(pos);
15486
+ var right = Math.min(left + 1, input.length - 1);
15487
+ var sample = input[left] + (input[right] - input[left]) * (pos - left);
15488
+ var clamped = Math.max(-1, Math.min(1, sample));
15489
+ result[i] = clamped < 0 ? clamped * 0x8000 : clamped * 0x7fff;
15490
+ }
15491
+ return result.buffer;
15492
+ },
15493
+ stopPcmCapture: function stopPcmCapture() {
15494
+ if (this.wsProcessor) {
15495
+ this.wsProcessor.disconnect();
15496
+ this.wsProcessor.onaudioprocess = null;
15497
+ this.wsProcessor = null;
15498
+ }
15499
+ if (this.wsSource) {
15500
+ this.wsSource.disconnect();
15501
+ this.wsSource = null;
15502
+ }
15503
+ },
15504
+ // 录音结束:通知服务端冲刷解码器,等最终结果(超时兜底直接用现有文字)
15505
+ finishStream: function finishStream() {
15506
+ var _this8 = this;
15507
+ this.status = 'processing';
15508
+ this.streamWaitingDone = true;
15509
+ this.streamDoneTimer = setTimeout(function () {
15510
+ return _this8.onStreamDone();
15511
+ }, 4000);
15512
+ try {
15513
+ this.ws.send('stop');
15514
+ } catch (e) {
15515
+ this.onStreamDone();
15516
+ }
15517
+ },
15518
+ // 流式收尾(幂等):resultText已含最新partial,超时兜底也不丢字
15519
+ onStreamDone: function onStreamDone() {
15520
+ if (!this.streamWaitingDone) return;
15521
+ this.streamWaitingDone = false;
15522
+ this.closeStream();
15523
+ this.audioChunks = [];
15524
+ if (this.resultText.trim() !== '') {
15525
+ this.status = 'done';
15526
+ } else {
15527
+ this.status = 'error';
15528
+ this.errorText = this.$tx('ecmapp.wflowform.voiceNoSpeech', '未检测到语音,请重试。');
15529
+ }
15530
+ },
15531
+ closeStream: function closeStream() {
15532
+ this.stopPcmCapture();
15533
+ if (this.streamDoneTimer) {
15534
+ clearTimeout(this.streamDoneTimer);
15535
+ this.streamDoneTimer = null;
15536
+ }
15537
+ if (this.ws) {
15538
+ var ws = this.ws;
15539
+ this.ws = null;
15540
+ ws.onclose = null;
15541
+ try {
15542
+ ws.close();
15543
+ } catch (e) {
15544
+ // 已关闭时close抛错可忽略
15545
+ }
15546
+ }
15547
+ this.streamActive = false;
15548
+ this.streamWaitingDone = false;
15549
+ },
15268
15550
  releaseStream: function releaseStream() {
15269
15551
  if (this.stream) {
15270
15552
  this.stream.getTracks().forEach(function (track) {
@@ -15275,37 +15557,41 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15275
15557
  },
15276
15558
  // 浏览器模式下SpeechRecognition不暴露音频流,单独取一路流用于波形绘制
15277
15559
  startVisualStream: function startVisualStream() {
15278
- var _this6 = this;
15560
+ var _this9 = this;
15279
15561
  if (!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)) return;
15280
15562
  navigator.mediaDevices.getUserMedia({
15281
15563
  audio: true
15282
15564
  }).then(function (stream) {
15283
15565
  // 取流回来时录音可能已结束
15284
- if (_this6.status !== 'recording') {
15566
+ if (_this9.status !== 'recording') {
15285
15567
  stream.getTracks().forEach(function (track) {
15286
15568
  return track.stop();
15287
15569
  });
15288
15570
  return;
15289
15571
  }
15290
- _this6.visualStream = stream;
15291
- _this6.startWaveform(stream);
15572
+ _this9.visualStream = stream;
15573
+ _this9.startWaveform(stream);
15292
15574
  }).catch(function () {});
15293
15575
  },
15294
- // 用AnalyserNode实时绘制录音波形柱状图
15576
+ // 用AnalyserNode实时绘制录音波形柱状图,复用startRecord手势内创建的AudioContext
15295
15577
  startWaveform: function startWaveform(stream) {
15296
- var _this7 = this;
15297
- var AudioContextClass = window.AudioContext || window.webkitAudioContext;
15578
+ var _this10 = this;
15298
15579
  var canvas = this.$refs.waveCanvas;
15299
- if (!AudioContextClass || !canvas) return;
15300
- var audioContext = new AudioContextClass();
15580
+ var audioContext = this.audioContext;
15581
+ if (!audioContext || audioContext.state === 'closed' || !canvas) return;
15582
+ if (audioContext.state === 'suspended') {
15583
+ audioContext.resume().catch(function () {});
15584
+ }
15301
15585
  var analyser = audioContext.createAnalyser();
15302
15586
  analyser.fftSize = 128;
15303
15587
  audioContext.createMediaStreamSource(stream).connect(analyser);
15304
- this.audioContext = audioContext;
15305
15588
  this.analyser = analyser;
15589
+ this.lastVoiceAt = Date.now();
15590
+ this.hasVoice = false;
15306
15591
  var dpr = window.devicePixelRatio || 1;
15307
- canvas.width = canvas.clientWidth * dpr;
15308
- canvas.height = canvas.clientHeight * dpr;
15592
+ // canvas尚未完成布局时取不到尺寸,按样式表尺寸200×32兜底,避免0×0画布
15593
+ canvas.width = (canvas.clientWidth || 200) * dpr;
15594
+ canvas.height = (canvas.clientHeight || 32) * dpr;
15309
15595
  var ctx = canvas.getContext('2d');
15310
15596
  var dataArray = new Uint8Array(analyser.frequencyBinCount);
15311
15597
  var barCount = 32;
@@ -15313,15 +15599,32 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15313
15599
  var barWidth = (canvas.width - gap * (barCount - 1)) / barCount;
15314
15600
  var centerY = canvas.height / 2;
15315
15601
  var draw = function draw() {
15316
- if (!_this7.analyser) return;
15317
- _this7.waveRafId = requestAnimationFrame(draw);
15318
- _this7.analyser.getByteFrequencyData(dataArray);
15602
+ if (!_this10.analyser) return;
15603
+ _this10.waveRafId = requestAnimationFrame(draw);
15604
+ _this10.analyser.getByteFrequencyData(dataArray);
15605
+ // 顺带做人声检测,供静音自动结束判定
15606
+ var sum = 0;
15607
+ for (var i = 0; i < dataArray.length; i++) {
15608
+ sum += dataArray[i];
15609
+ }
15610
+ if (sum / dataArray.length > VOICE_AVG_THRESHOLD) {
15611
+ _this10.lastVoiceAt = Date.now();
15612
+ _this10.hasVoice = true;
15613
+ }
15319
15614
  ctx.clearRect(0, 0, canvas.width, canvas.height);
15320
- ctx.fillStyle = '#1989fa';
15321
- for (var i = 0; i < barCount; i++) {
15322
- var value = dataArray[Math.floor(i * dataArray.length / barCount)] / 255;
15615
+ // 波形颜色随皮肤切换:科技版霓虹青带辉光,基本版保持品牌蓝
15616
+ if (_this10.currentSkin === 'tech') {
15617
+ ctx.fillStyle = '#00e5ff';
15618
+ ctx.shadowColor = 'rgba(0, 229, 255, 0.8)';
15619
+ ctx.shadowBlur = 8 * dpr;
15620
+ } else {
15621
+ ctx.fillStyle = '#1989fa';
15622
+ ctx.shadowBlur = 0;
15623
+ }
15624
+ for (var _i = 0; _i < barCount; _i++) {
15625
+ var value = dataArray[Math.floor(_i * dataArray.length / barCount)] / 255;
15323
15626
  var barHeight = Math.max(2 * dpr, value * canvas.height);
15324
- var x = i * (barWidth + gap);
15627
+ var x = _i * (barWidth + gap);
15325
15628
  ctx.fillRect(x, centerY - barHeight / 2, barWidth, barHeight);
15326
15629
  }
15327
15630
  };
@@ -15347,6 +15650,7 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15347
15650
  // 关闭/取消时释放麦克风等资源
15348
15651
  releaseResources: function releaseResources() {
15349
15652
  this.stopTimer();
15653
+ this.closeStream();
15350
15654
  this.stopWaveform();
15351
15655
  if (this.recognition) {
15352
15656
  this.recognition.abort();
@@ -15371,9 +15675,9 @@ var VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns =
15371
15675
  });
15372
15676
  ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/VoiceInputDialog.vue?vue&type=script&lang=js
15373
15677
  /* harmony default export */ var src_VoiceInputDialogvue_type_script_lang_js = (VoiceInputDialogvue_type_script_lang_js);
15374
- // 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/VoiceInputDialog.vue?vue&type=style&index=0&id=28732777&prod&scoped=true&lang=scss
15375
- var VoiceInputDialogvue_type_style_index_0_id_28732777_prod_scoped_true_lang_scss = __webpack_require__(80);
15376
- ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/VoiceInputDialog.vue?vue&type=style&index=0&id=28732777&prod&scoped=true&lang=scss
15678
+ // 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/VoiceInputDialog.vue?vue&type=style&index=0&id=cf18a87c&prod&scoped=true&lang=scss
15679
+ var VoiceInputDialogvue_type_style_index_0_id_cf18a87c_prod_scoped_true_lang_scss = __webpack_require__(958);
15680
+ ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/VoiceInputDialog.vue?vue&type=style&index=0&id=cf18a87c&prod&scoped=true&lang=scss
15377
15681
 
15378
15682
  ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/VoiceInputDialog.vue
15379
15683
 
@@ -15386,11 +15690,11 @@ var VoiceInputDialogvue_type_style_index_0_id_28732777_prod_scoped_true_lang_scs
15386
15690
 
15387
15691
  var VoiceInputDialog_component = (0,componentNormalizer/* default */.A)(
15388
15692
  src_VoiceInputDialogvue_type_script_lang_js,
15389
- VoiceInputDialogvue_type_template_id_28732777_scoped_true_render,
15390
- VoiceInputDialogvue_type_template_id_28732777_scoped_true_staticRenderFns,
15693
+ VoiceInputDialogvue_type_template_id_cf18a87c_scoped_true_render,
15694
+ VoiceInputDialogvue_type_template_id_cf18a87c_scoped_true_staticRenderFns,
15391
15695
  false,
15392
15696
  null,
15393
- "28732777",
15697
+ "cf18a87c",
15394
15698
  null
15395
15699
 
15396
15700
  )
@@ -15614,6 +15918,7 @@ var moment = __webpack_require__(5093);
15614
15918
  },
15615
15919
  methods: {
15616
15920
  // 检测语音输入按钮可用性:未配置window.voiceToWord时需https/localhost安全上下文且浏览器支持Web Speech API,否则不显示按钮
15921
+ // 后端转写时window.voiceToWord配置为'/voice/recognize/toText',由网关路由到eccloud-clientms
15617
15922
  initVoiceInputEnabled: function initVoiceInputEnabled() {
15618
15923
  var voiceToWord = window.voiceToWord;
15619
15924
  if (voiceToWord && typeof voiceToWord === 'string' && voiceToWord !== 'browser') {
@@ -16417,9 +16722,9 @@ var moment = __webpack_require__(5093);
16417
16722
  });
16418
16723
  ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/SubmitHandle.vue?vue&type=script&lang=js
16419
16724
  /* harmony default export */ var src_SubmitHandlevue_type_script_lang_js = (SubmitHandlevue_type_script_lang_js);
16420
- // 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/SubmitHandle.vue?vue&type=style&index=0&id=44733f4f&prod&scoped=true&lang=scss
16421
- var SubmitHandlevue_type_style_index_0_id_44733f4f_prod_scoped_true_lang_scss = __webpack_require__(9500);
16422
- ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/SubmitHandle.vue?vue&type=style&index=0&id=44733f4f&prod&scoped=true&lang=scss
16725
+ // 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/SubmitHandle.vue?vue&type=style&index=0&id=6bdfbd40&prod&scoped=true&lang=scss
16726
+ var SubmitHandlevue_type_style_index_0_id_6bdfbd40_prod_scoped_true_lang_scss = __webpack_require__(8525);
16727
+ ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/SubmitHandle.vue?vue&type=style&index=0&id=6bdfbd40&prod&scoped=true&lang=scss
16423
16728
 
16424
16729
  ;// CONCATENATED MODULE: ./packages/ecmapp/Wflowform/src/SubmitHandle.vue
16425
16730
 
@@ -16432,11 +16737,11 @@ var SubmitHandlevue_type_style_index_0_id_44733f4f_prod_scoped_true_lang_scss =
16432
16737
 
16433
16738
  var SubmitHandle_component = (0,componentNormalizer/* default */.A)(
16434
16739
  src_SubmitHandlevue_type_script_lang_js,
16435
- SubmitHandlevue_type_template_id_44733f4f_scoped_true_render,
16436
- SubmitHandlevue_type_template_id_44733f4f_scoped_true_staticRenderFns,
16740
+ SubmitHandlevue_type_template_id_6bdfbd40_scoped_true_render,
16741
+ SubmitHandlevue_type_template_id_6bdfbd40_scoped_true_staticRenderFns,
16437
16742
  false,
16438
16743
  null,
16439
- "44733f4f",
16744
+ "6bdfbd40",
16440
16745
  null
16441
16746
 
16442
16747
  )
@@ -19091,6 +19396,7 @@ var ShortcutProcessing_component = (0,componentNormalizer/* default */.A)(
19091
19396
 
19092
19397
 
19093
19398
 
19399
+
19094
19400
  // 为组件添加 install 方法,用于按需引入
19095
19401
  Attachment.install = function (Vue) {
19096
19402
  Vue.component(Attachment.name, Attachment);
@@ -19119,6 +19425,9 @@ WriteToReadIdea.install = function (Vue) {
19119
19425
  ShortcutProcessing.install = function (Vue) {
19120
19426
  Vue.component(ShortcutProcessing.name, ShortcutProcessing);
19121
19427
  };
19428
+ VoiceInputDialog.install = function (Vue) {
19429
+ Vue.component(VoiceInputDialog.name, VoiceInputDialog);
19430
+ };
19122
19431
  var Wflowform_Attachment = Attachment;
19123
19432
  var Wflowform_BodyFile = BodyFile;
19124
19433
  var Wflowform_HandleIdea = HandleIdea;
@@ -19128,6 +19437,7 @@ var Wflowform_SubmitDialog = SubmitDialog;
19128
19437
  var Wflowform_WfNodelogList = WfNodelogList;
19129
19438
  var Wflowform_WriteToReadIdea = WriteToReadIdea;
19130
19439
  var Wflowform_ShortcutProcessing = ShortcutProcessing;
19440
+ var Wflowform_VoiceInputDialog = VoiceInputDialog;
19131
19441
 
19132
19442
  /***/ }),
19133
19443
 
@@ -22240,7 +22550,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".van-switch-field[data-v-61ed46da]{pos
22240
22550
 
22241
22551
  /***/ }),
22242
22552
 
22243
- /***/ 4953:
22553
+ /***/ 7855:
22244
22554
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
22245
22555
 
22246
22556
  "use strict";
@@ -22254,7 +22564,7 @@ __webpack_require__.r(__webpack_exports__);
22254
22564
 
22255
22565
  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()));
22256
22566
  // Module
22257
- ___CSS_LOADER_EXPORT___.push([module.id, ".van-textarea-field[data-v-7743d246]{position:relative}.van-textarea-field[data-v-7743d246] .van-field__label{width:90%!important}.van-textarea-field[data-v-7743d246]:after{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;content:\" \";pointer-events:none;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.richtext-content[data-v-7743d246]{width:100%;white-space:pre-wrap}.richtext-content[data-v-7743d246] img{-o-object-fit:contain;object-fit:contain;max-width:100%!important;height:auto!important}.richtext-content-hidden[data-v-7743d246]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.van-textarea-field[data-v-7743d246] .field-flSubject .richtext-content,.van-textarea-field[data-v-7743d246] .field-flSubject textarea.van-field__control{font-size:16px;font-weight:700}", ""]);
22567
+ ___CSS_LOADER_EXPORT___.push([module.id, ".van-textarea-field[data-v-27eb631a]{position:relative}.van-textarea-field[data-v-27eb631a] .van-field__label{width:90%!important}.van-textarea-field[data-v-27eb631a]:after{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;content:\" \";pointer-events:none;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.richtext-content[data-v-27eb631a]{width:100%;white-space:pre-wrap}.richtext-content[data-v-27eb631a] img{-o-object-fit:contain;object-fit:contain;max-width:100%!important;height:auto!important}.richtext-content-hidden[data-v-27eb631a]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.voice-input-entry[data-v-27eb631a]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:6px 16px 10px;color:#1989fa;font-size:14px}.voice-input-entry .voice-input-entry-icon[data-v-27eb631a]{width:16px;height:16px;margin-right:4px}.voice-input-entry[data-v-27eb631a]:active{opacity:.7}.van-textarea-field[data-v-27eb631a] .field-flSubject .richtext-content,.van-textarea-field[data-v-27eb631a] .field-flSubject textarea.van-field__control{font-size:16px;font-weight:700}", ""]);
22258
22568
  // Exports
22259
22569
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
22260
22570
 
@@ -22876,7 +23186,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".submit-dialog-container[data-v-9c230b
22876
23186
 
22877
23187
  /***/ }),
22878
23188
 
22879
- /***/ 7103:
23189
+ /***/ 2106:
22880
23190
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
22881
23191
 
22882
23192
  "use strict";
@@ -22895,14 +23205,14 @@ var ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require
22895
23205
  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()));
22896
23206
  var ___CSS_LOADER_URL_REPLACEMENT_0___ = _node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);
22897
23207
  // Module
22898
- ___CSS_LOADER_EXPORT___.push([module.id, ".submit-handle-container .idea-button-container .van-cell__value[data-v-44733f4f]{text-align:right}.submit-handle-container .idea-button-container .van-cell__value .van-button[data-v-44733f4f]{margin-right:0;margin-left:5px}.submit-handle-container .curIdea-filed[data-v-44733f4f] .van-cell__title,.submit-handle-container .curIdea-filed[data-v-44733f4f]:after{display:none}.submit-handle-container .idea-input-wrap[data-v-44733f4f]{position:relative}.submit-handle-container .idea-input-wrap[data-v-44733f4f] .curIdea-filed textarea{padding-right:30px}.submit-handle-container .idea-input-wrap .voice-input-btn[data-v-44733f4f]{position:absolute;right:12px;bottom:8px;z-index:2;width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;background-color:#f2f3f5;color:#646566}.submit-handle-container .idea-input-wrap .voice-input-btn .voice-input-icon[data-v-44733f4f]{width:16px;height:16px}.submit-handle-container .idea-input-wrap .voice-input-btn[data-v-44733f4f]:active{background-color:#ebedf0;color:#1989fa}.submit-handle-container .clearfix[data-v-44733f4f]:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}.submit-handle-container[data-v-44733f4f] .van-radio-group .van-cell__title{font-weight:400!important}.submit-handle-container .van-wflow-operate-detail-cell[data-v-44733f4f]:after{border-top-width:0}.submit-handle-container .van-wflow-operate-detail-cell-path[data-v-44733f4f]:after{border-width:1px;-webkit-transform:scale(.5);transform:scale(.5)}.submit-handle-container[data-v-44733f4f] .tnLimit-container .van-field{width:50px;display:inline-block;padding:0}.submit-handle-container[data-v-44733f4f] .tnLimit-container .van-field .van-field__body input{text-align:center}.submit-handle-container[data-v-44733f4f] .tnLimit-container .van-field__body:after{color:#323233;content:attr(value-suffix);word-break:keep-all}.submit-handle-container .delete-icon[data-v-44733f4f]{display:-webkit-box;display:-ms-flexbox;display:flex;float:right}.submit-handle-container .delete-icon .van-icon[data-v-44733f4f]{line-height:24px;margin-left:5px;font-size:16px}.selectBox_title[data-v-44733f4f]{height:45px;line-height:45px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:14px}.selectBox_content[data-v-44733f4f],.selectBox_title[data-v-44733f4f]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 15px}.selectBox_content[data-v-44733f4f]{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap}.selectBox_content .selectBox_content_son[data-v-44733f4f]{border:1px solid #f1f1f1}.selectBox_content .selectBox_content_son[data-v-44733f4f],.selectBox_content .selectBox_content_son_change[data-v-44733f4f]{padding:4px;background:#f8fafb;font-size:14px;margin-bottom:10px!important;text-align:center;height:22px;line-height:22px;width:calc(25% - 17.5px);margin-right:10px}.selectBox_content .selectBox_content_son_change[data-v-44733f4f]{border:1px solid #3f88f1;background-image:url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");background-repeat:no-repeat;background-size:15px 15px;background-position:100% 100%;color:#3f88f1}.selectBox_content_sonall[data-v-44733f4f]{white-space:nowrap;overflow:hidden;overflow-x:scroll;-webkit-overflow-scrolling:touch}.selectBox_content_sonall[data-v-44733f4f]:nth-child(4n){margin-right:0}.selectBox_content_sonall[data-v-44733f4f]::-webkit-scrollbar{display:none}.viewAllComments[data-v-44733f4f]{height:45px;line-height:45px;text-align:center;color:#b7b7b7;font-size:12px;background:#fff;display:block;width:100%}", ""]);
23208
+ ___CSS_LOADER_EXPORT___.push([module.id, ".submit-handle-container .idea-button-container .van-cell__value[data-v-6bdfbd40]{text-align:right}.submit-handle-container .idea-button-container .van-cell__value .van-button[data-v-6bdfbd40]{margin-right:0;margin-left:5px}.submit-handle-container .curIdea-filed[data-v-6bdfbd40] .van-cell__title,.submit-handle-container .curIdea-filed[data-v-6bdfbd40]:after{display:none}.submit-handle-container .idea-input-wrap[data-v-6bdfbd40]{position:relative}.submit-handle-container .idea-input-wrap[data-v-6bdfbd40] .curIdea-filed textarea{padding-right:30px}.submit-handle-container .idea-input-wrap .voice-input-btn[data-v-6bdfbd40]{position:absolute;right:12px;bottom:8px;z-index:2;width:28px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;background-color:#f2f3f5;color:#646566}.submit-handle-container .idea-input-wrap .voice-input-btn .voice-input-icon[data-v-6bdfbd40]{width:16px;height:16px}.submit-handle-container .idea-input-wrap .voice-input-btn[data-v-6bdfbd40]:active{background-color:#ebedf0;color:#1989fa}.submit-handle-container .clearfix[data-v-6bdfbd40]:after{content:\".\";display:block;height:0;clear:both;visibility:hidden}.submit-handle-container[data-v-6bdfbd40] .van-radio-group .van-cell__title{font-weight:400!important}.submit-handle-container .van-wflow-operate-detail-cell[data-v-6bdfbd40]:after{border-top-width:0}.submit-handle-container .van-wflow-operate-detail-cell-path[data-v-6bdfbd40]:after{border-width:1px;-webkit-transform:scale(.5);transform:scale(.5)}.submit-handle-container[data-v-6bdfbd40] .tnLimit-container .van-field{width:50px;display:inline-block;padding:0}.submit-handle-container[data-v-6bdfbd40] .tnLimit-container .van-field .van-field__body input{text-align:center}.submit-handle-container[data-v-6bdfbd40] .tnLimit-container .van-field__body:after{color:#323233;content:attr(value-suffix);word-break:keep-all}.submit-handle-container .delete-icon[data-v-6bdfbd40]{display:-webkit-box;display:-ms-flexbox;display:flex;float:right}.submit-handle-container .delete-icon .van-icon[data-v-6bdfbd40]{line-height:24px;margin-left:5px;font-size:16px}.selectBox_title[data-v-6bdfbd40]{height:45px;line-height:45px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:14px}.selectBox_content[data-v-6bdfbd40],.selectBox_title[data-v-6bdfbd40]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 15px}.selectBox_content[data-v-6bdfbd40]{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap}.selectBox_content .selectBox_content_son[data-v-6bdfbd40]{border:1px solid #f1f1f1}.selectBox_content .selectBox_content_son[data-v-6bdfbd40],.selectBox_content .selectBox_content_son_change[data-v-6bdfbd40]{padding:4px;background:#f8fafb;font-size:14px;margin-bottom:10px!important;text-align:center;height:22px;line-height:22px;width:calc(25% - 17.5px);margin-right:10px}.selectBox_content .selectBox_content_son_change[data-v-6bdfbd40]{border:1px solid #3f88f1;background-image:url(" + ___CSS_LOADER_URL_REPLACEMENT_0___ + ");background-repeat:no-repeat;background-size:15px 15px;background-position:100% 100%;color:#3f88f1}.selectBox_content_sonall[data-v-6bdfbd40]{white-space:nowrap;overflow:hidden;overflow-x:scroll;-webkit-overflow-scrolling:touch}.selectBox_content_sonall[data-v-6bdfbd40]:nth-child(4n){margin-right:0}.selectBox_content_sonall[data-v-6bdfbd40]::-webkit-scrollbar{display:none}.viewAllComments[data-v-6bdfbd40]{height:45px;line-height:45px;text-align:center;color:#b7b7b7;font-size:12px;background:#fff;display:block;width:100%}", ""]);
22899
23209
  // Exports
22900
23210
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
22901
23211
 
22902
23212
 
22903
23213
  /***/ }),
22904
23214
 
22905
- /***/ 3355:
23215
+ /***/ 2145:
22906
23216
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
22907
23217
 
22908
23218
  "use strict";
@@ -22916,7 +23226,7 @@ __webpack_require__.r(__webpack_exports__);
22916
23226
 
22917
23227
  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()));
22918
23228
  // Module
22919
- ___CSS_LOADER_EXPORT___.push([module.id, ".voice-input-popup[data-v-28732777]{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.voice-input-popup .voice-popup-header[data-v-28732777]{position:relative;height:48px;line-height:48px;text-align:center}.voice-input-popup .voice-popup-header .voice-popup-title[data-v-28732777]{font-size:16px;font-weight:600;color:#323233}.voice-input-popup .voice-popup-header .voice-popup-close[data-v-28732777]{position:absolute;right:16px;top:16px;font-size:16px;color:#c8c9cc}.voice-input-popup .voice-popup-body[data-v-28732777]{padding:8px 16px 0;text-align:center}.voice-input-popup .voice-popup-body .voice-mic-btn[data-v-28732777]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:64px;height:64px;border-radius:50%;background-color:#1989fa;color:#fff}.voice-input-popup .voice-popup-body .voice-mic-btn .voice-mic-icon[data-v-28732777]{width:28px;height:28px}.voice-input-popup .voice-popup-body .voice-mic-btn.recording[data-v-28732777]{background-color:#ee0a24;-webkit-animation:voice-breathe-28732777 1.5s ease-out infinite;animation:voice-breathe-28732777 1.5s ease-out infinite}.voice-input-popup .voice-popup-body .voice-status-text[data-v-28732777]{margin-top:12px;font-size:13px;color:#646566}.voice-input-popup .voice-popup-body .voice-status-text.is-error[data-v-28732777]{color:#ee0a24}.voice-input-popup .voice-popup-body .voice-wave-canvas[data-v-28732777]{display:block;width:200px;height:32px;margin:8px auto 0}.voice-input-popup .voice-popup-body .voice-timer[data-v-28732777]{margin-top:4px;font-size:13px;color:#969799}.voice-input-popup .voice-popup-body .voice-result-field[data-v-28732777]{margin-top:12px;background-color:#f7f8fa;border-radius:8px}.voice-input-popup .voice-popup-footer[data-v-28732777]{padding:12px 16px;text-align:right}.voice-input-popup .voice-popup-footer .van-button[data-v-28732777]{margin-left:8px;min-width:80px}@-webkit-keyframes voice-breathe-28732777{0%{-webkit-box-shadow:0 0 0 0 rgba(238,10,36,.5);box-shadow:0 0 0 0 rgba(238,10,36,.5)}to{-webkit-box-shadow:0 0 0 16px rgba(238,10,36,0);box-shadow:0 0 0 16px rgba(238,10,36,0)}}@keyframes voice-breathe-28732777{0%{-webkit-box-shadow:0 0 0 0 rgba(238,10,36,.5);box-shadow:0 0 0 0 rgba(238,10,36,.5)}to{-webkit-box-shadow:0 0 0 16px rgba(238,10,36,0);box-shadow:0 0 0 16px rgba(238,10,36,0)}}", ""]);
23229
+ ___CSS_LOADER_EXPORT___.push([module.id, ".voice-input-popup[data-v-cf18a87c]{padding-bottom:constant(safe-area-inset-bottom);padding-bottom:env(safe-area-inset-bottom)}.voice-input-popup .voice-popup-header[data-v-cf18a87c]{position:relative;height:48px;line-height:48px;text-align:center}.voice-input-popup .voice-popup-header .voice-popup-title[data-v-cf18a87c]{font-size:16px;font-weight:600;color:#323233}.voice-input-popup .voice-popup-header .voice-popup-close[data-v-cf18a87c]{position:absolute;right:16px;top:16px;font-size:16px;color:#c8c9cc}.voice-input-popup .voice-popup-body[data-v-cf18a87c]{padding:8px 16px 0;text-align:center}.voice-input-popup .voice-popup-body .voice-mic-btn[data-v-cf18a87c]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:64px;height:64px;border-radius:50%;background-color:#1989fa;color:#fff}.voice-input-popup .voice-popup-body .voice-mic-btn .voice-mic-icon[data-v-cf18a87c]{width:28px;height:28px}.voice-input-popup .voice-popup-body .voice-mic-btn.recording[data-v-cf18a87c]{background-color:#ee0a24;-webkit-animation:voice-breathe-cf18a87c 1.5s ease-out infinite;animation:voice-breathe-cf18a87c 1.5s ease-out infinite}.voice-input-popup .voice-popup-body .voice-mic-btn[data-v-cf18a87c] .van-loading{padding-top:0}.voice-input-popup .voice-popup-body .voice-status-text[data-v-cf18a87c]{margin-top:12px;font-size:13px;color:#646566}.voice-input-popup .voice-popup-body .voice-status-text.is-error[data-v-cf18a87c]{color:#ee0a24}.voice-input-popup .voice-popup-body .voice-wave-canvas[data-v-cf18a87c]{display:block;width:200px;height:32px;margin:8px auto 0}.voice-input-popup .voice-popup-body .voice-timer[data-v-cf18a87c]{margin-top:4px;font-size:13px;color:#969799}.voice-input-popup .voice-popup-body .voice-result-field[data-v-cf18a87c]{margin-top:12px;background-color:#f7f8fa;border-radius:8px}.voice-input-popup .voice-popup-footer[data-v-cf18a87c]{padding:12px 16px;text-align:right}.voice-input-popup .voice-popup-footer .van-button[data-v-cf18a87c]{margin-left:8px;min-width:80px}.voice-mic-wrap[data-v-cf18a87c]{position:relative;display:inline-block;width:64px;height:64px}.voice-mic-wrap .tech-ripple[data-v-cf18a87c]{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;border:1px solid rgba(0,229,255,.6);opacity:0;pointer-events:none}.voice-input-popup.skin-tech[data-v-cf18a87c]{background-image:linear-gradient(rgba(0,229,255,.045) 1px,transparent 0),linear-gradient(90deg,rgba(0,229,255,.045) 1px,transparent 0),radial-gradient(circle at 18% 0,rgba(0,229,255,.12),transparent 42%),radial-gradient(circle at 85% 100%,rgba(0,110,255,.12),transparent 45%),linear-gradient(160deg,#060d21,#0a1a3f 55%,#071026);background-size:24px 24px,24px 24px,100% 100%,100% 100%,100% 100%}.voice-input-popup.skin-tech .voice-popup-header[data-v-cf18a87c]{border-bottom:1px solid rgba(0,229,255,.15)}.voice-input-popup.skin-tech .voice-popup-header .voice-popup-title[data-v-cf18a87c]{color:#d8f4ff;letter-spacing:3px;text-shadow:0 0 10px rgba(0,229,255,.75)}.voice-input-popup.skin-tech .voice-popup-header .voice-popup-close[data-v-cf18a87c]{color:rgba(0,229,255,.6)}.voice-input-popup.skin-tech .voice-popup-body .voice-mic-btn[data-v-cf18a87c]{background:radial-gradient(circle at 30% 25%,#1a4a8a,#0a2547 72%);border:1.5px solid rgba(0,229,255,.7);color:#00e5ff;-webkit-box-shadow:0 0 20px rgba(0,229,255,.4),inset 0 0 15px rgba(0,229,255,.15);box-shadow:0 0 20px rgba(0,229,255,.4),inset 0 0 15px rgba(0,229,255,.15)}.voice-input-popup.skin-tech .voice-popup-body .voice-mic-btn.recording[data-v-cf18a87c]{background:radial-gradient(circle at 30% 25%,#8a1a3f,#470a20 72%);border-color:rgba(255,45,105,.85);color:#ff5c8a;-webkit-animation:tech-breathe-cf18a87c 1.5s ease-out infinite;animation:tech-breathe-cf18a87c 1.5s ease-out infinite}.voice-input-popup.skin-tech .voice-popup-body .voice-status-text[data-v-cf18a87c]{color:#8fd8ff;text-shadow:0 0 6px rgba(0,229,255,.3)}.voice-input-popup.skin-tech .voice-popup-body .voice-status-text.is-error[data-v-cf18a87c]{color:#ff5c8a;text-shadow:0 0 6px rgba(255,45,105,.3)}.voice-input-popup.skin-tech .voice-popup-body .voice-timer[data-v-cf18a87c]{color:#00e5ff;font-family:Courier New,Courier,monospace;letter-spacing:2px;text-shadow:0 0 8px rgba(0,229,255,.7)}.voice-input-popup.skin-tech .voice-popup-body .voice-result-field[data-v-cf18a87c]{background:rgba(6,25,55,.6);border:1px solid rgba(0,229,255,.35);-webkit-box-shadow:inset 0 0 12px rgba(0,229,255,.1);box-shadow:inset 0 0 12px rgba(0,229,255,.1)}.voice-input-popup.skin-tech .voice-popup-body .voice-result-field[data-v-cf18a87c] .van-field__control{color:#d8f4ff;caret-color:#00e5ff}.voice-input-popup.skin-tech .voice-popup-body .voice-result-field[data-v-cf18a87c] .van-field__control::-webkit-input-placeholder{color:rgba(143,216,255,.4)}.voice-input-popup.skin-tech .voice-popup-body .voice-result-field[data-v-cf18a87c] .van-field__control::-moz-placeholder{color:rgba(143,216,255,.4)}.voice-input-popup.skin-tech .voice-popup-body .voice-result-field[data-v-cf18a87c] .van-field__control::-ms-input-placeholder{color:rgba(143,216,255,.4)}.voice-input-popup.skin-tech .voice-popup-body .voice-result-field[data-v-cf18a87c] .van-field__control::placeholder{color:rgba(143,216,255,.4)}.voice-input-popup.skin-tech .voice-popup-footer .van-button--default[data-v-cf18a87c]{background:transparent;color:#8fd8ff}.voice-input-popup.skin-tech .voice-popup-footer .van-button--default[data-v-cf18a87c]:after{border-color:rgba(0,229,255,.4)}.voice-input-popup.skin-tech .voice-popup-footer .van-button--info[data-v-cf18a87c]{background:-webkit-gradient(linear,left top,right top,from(#00b8d4),to(#00e5ff));background:linear-gradient(90deg,#00b8d4,#00e5ff);color:#04122b;-webkit-box-shadow:0 0 12px rgba(0,229,255,.45);box-shadow:0 0 12px rgba(0,229,255,.45)}.voice-input-popup.skin-tech .voice-popup-footer .van-button--info[data-v-cf18a87c]:after{border-width:0}.voice-input-popup.skin-tech .voice-popup-footer .van-button--info.van-button--disabled[data-v-cf18a87c]{opacity:.45}.voice-input-popup.skin-tech .voice-mic-wrap.recording .tech-ripple[data-v-cf18a87c]{border-color:rgba(255,45,105,.7);-webkit-animation:tech-ripple-cf18a87c 2s ease-out infinite;animation:tech-ripple-cf18a87c 2s ease-out infinite}.voice-input-popup.skin-tech .voice-mic-wrap.recording .tech-ripple-2[data-v-cf18a87c]{-webkit-animation-delay:.6s;animation-delay:.6s}.voice-input-popup.skin-tech .voice-mic-wrap.recording .tech-ripple-3[data-v-cf18a87c]{-webkit-animation-delay:1.2s;animation-delay:1.2s}@-webkit-keyframes tech-ripple-cf18a87c{0%{-webkit-transform:scale(1);transform:scale(1);opacity:.7}to{-webkit-transform:scale(2.4);transform:scale(2.4);opacity:0}}@keyframes tech-ripple-cf18a87c{0%{-webkit-transform:scale(1);transform:scale(1);opacity:.7}to{-webkit-transform:scale(2.4);transform:scale(2.4);opacity:0}}@-webkit-keyframes tech-breathe-cf18a87c{0%{-webkit-box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 0 rgba(255,45,105,.45);box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 0 rgba(255,45,105,.45)}to{-webkit-box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 18px rgba(255,45,105,0);box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 18px rgba(255,45,105,0)}}@keyframes tech-breathe-cf18a87c{0%{-webkit-box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 0 rgba(255,45,105,.45);box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 0 rgba(255,45,105,.45)}to{-webkit-box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 18px rgba(255,45,105,0);box-shadow:0 0 24px rgba(255,45,105,.55),inset 0 0 15px rgba(255,45,105,.2),0 0 0 18px rgba(255,45,105,0)}}@-webkit-keyframes voice-breathe-cf18a87c{0%{-webkit-box-shadow:0 0 0 0 rgba(238,10,36,.5);box-shadow:0 0 0 0 rgba(238,10,36,.5)}to{-webkit-box-shadow:0 0 0 16px rgba(238,10,36,0);box-shadow:0 0 0 16px rgba(238,10,36,0)}}@keyframes voice-breathe-cf18a87c{0%{-webkit-box-shadow:0 0 0 0 rgba(238,10,36,.5);box-shadow:0 0 0 0 rgba(238,10,36,.5)}to{-webkit-box-shadow:0 0 0 16px rgba(238,10,36,0);box-shadow:0 0 0 16px rgba(238,10,36,0)}}", ""]);
22920
23230
  // Exports
22921
23231
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
22922
23232
 
@@ -22986,7 +23296,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".loading[data-v-69610664]{margin-top:1
22986
23296
 
22987
23297
  /***/ }),
22988
23298
 
22989
- /***/ 7472:
23299
+ /***/ 1281:
22990
23300
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
22991
23301
 
22992
23302
  "use strict";
@@ -23000,7 +23310,7 @@ __webpack_require__.r(__webpack_exports__);
23000
23310
 
23001
23311
  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()));
23002
23312
  // Module
23003
- ___CSS_LOADER_EXPORT___.push([module.id, ".icon-dialog[data-v-76a1a43d] .el-dialog__body{height:650px;overflow-y:auto;padding:0 0 20px 0}.icon-dialog[data-v-76a1a43d] .el-dialog__body .el-tabs--top{margin-top:0}", ""]);
23313
+ ___CSS_LOADER_EXPORT___.push([module.id, ".icon-dialog[data-v-3ebd0a76] .el-dialog__body{height:650px;overflow-y:auto;padding:0 0 20px 0}.icon-dialog[data-v-3ebd0a76] .el-dialog__body .el-tabs--top{margin-top:0}", ""]);
23004
23314
  // Exports
23005
23315
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
23006
23316
 
@@ -50068,19 +50378,19 @@ var update = add("72d06f4a", content, true, {"sourceMap":false,"shadowMode":fals
50068
50378
 
50069
50379
  /***/ }),
50070
50380
 
50071
- /***/ 9472:
50381
+ /***/ 6150:
50072
50382
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
50073
50383
 
50074
50384
  // style-loader: Adds some css to the DOM by adding a <style> tag
50075
50385
 
50076
50386
  // load the styles
50077
- var content = __webpack_require__(4953);
50387
+ var content = __webpack_require__(7855);
50078
50388
  if(content.__esModule) content = content.default;
50079
50389
  if(typeof content === 'string') content = [[module.id, content, '']];
50080
50390
  if(content.locals) module.exports = content.locals;
50081
50391
  // add the styles to the DOM
50082
50392
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
50083
- var update = add("0a26e2e8", content, true, {"sourceMap":false,"shadowMode":false});
50393
+ var update = add("effdccb0", content, true, {"sourceMap":false,"shadowMode":false});
50084
50394
 
50085
50395
  /***/ }),
50086
50396
 
@@ -50548,35 +50858,35 @@ var update = add("72ae29a9", content, true, {"sourceMap":false,"shadowMode":fals
50548
50858
 
50549
50859
  /***/ }),
50550
50860
 
50551
- /***/ 9500:
50861
+ /***/ 8525:
50552
50862
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
50553
50863
 
50554
50864
  // style-loader: Adds some css to the DOM by adding a <style> tag
50555
50865
 
50556
50866
  // load the styles
50557
- var content = __webpack_require__(7103);
50867
+ var content = __webpack_require__(2106);
50558
50868
  if(content.__esModule) content = content.default;
50559
50869
  if(typeof content === 'string') content = [[module.id, content, '']];
50560
50870
  if(content.locals) module.exports = content.locals;
50561
50871
  // add the styles to the DOM
50562
50872
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
50563
- var update = add("4f4e2226", content, true, {"sourceMap":false,"shadowMode":false});
50873
+ var update = add("610e6bf1", content, true, {"sourceMap":false,"shadowMode":false});
50564
50874
 
50565
50875
  /***/ }),
50566
50876
 
50567
- /***/ 80:
50877
+ /***/ 958:
50568
50878
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
50569
50879
 
50570
50880
  // style-loader: Adds some css to the DOM by adding a <style> tag
50571
50881
 
50572
50882
  // load the styles
50573
- var content = __webpack_require__(3355);
50883
+ var content = __webpack_require__(2145);
50574
50884
  if(content.__esModule) content = content.default;
50575
50885
  if(typeof content === 'string') content = [[module.id, content, '']];
50576
50886
  if(content.locals) module.exports = content.locals;
50577
50887
  // add the styles to the DOM
50578
50888
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
50579
- var update = add("567ef468", content, true, {"sourceMap":false,"shadowMode":false});
50889
+ var update = add("c3a9535c", content, true, {"sourceMap":false,"shadowMode":false});
50580
50890
 
50581
50891
  /***/ }),
50582
50892
 
@@ -50628,19 +50938,19 @@ var update = add("67603478", content, true, {"sourceMap":false,"shadowMode":fals
50628
50938
 
50629
50939
  /***/ }),
50630
50940
 
50631
- /***/ 7799:
50941
+ /***/ 6750:
50632
50942
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
50633
50943
 
50634
50944
  // style-loader: Adds some css to the DOM by adding a <style> tag
50635
50945
 
50636
50946
  // load the styles
50637
- var content = __webpack_require__(7472);
50947
+ var content = __webpack_require__(1281);
50638
50948
  if(content.__esModule) content = content.default;
50639
50949
  if(typeof content === 'string') content = [[module.id, content, '']];
50640
50950
  if(content.locals) module.exports = content.locals;
50641
50951
  // add the styles to the DOM
50642
50952
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
50643
- var update = add("6d7e97b1", content, true, {"sourceMap":false,"shadowMode":false});
50953
+ var update = add("74e125c2", content, true, {"sourceMap":false,"shadowMode":false});
50644
50954
 
50645
50955
  /***/ }),
50646
50956
 
@@ -52209,7 +52519,7 @@ webpackContext.id = 2397;
52209
52519
 
52210
52520
  var map = {
52211
52521
  "./app.js": 1494,
52212
- "./route.js": 6424,
52522
+ "./route.js": 2184,
52213
52523
  "./settings.js": 8048,
52214
52524
  "./tagsView.js": 1333
52215
52525
  };
@@ -56513,7 +56823,7 @@ service.interceptors.response.use(function (response) {
56513
56823
  errmsg = error.response.data.message;
56514
56824
  }
56515
56825
  if (window.vType === 'wapp') {
56516
- var ignoreUrls = ['login', 'getUserRolePermissions', 'getUiStyleConfig', 'queryUiFontSize', 'homepage/allm'];
56826
+ var ignoreUrls = ['login', 'getUserRolePermissions', 'getUiStyleConfig', 'queryUiFontSize', 'homepage/allm', 'getLastMsgCount'];
56517
56827
  if (!ignoreUrls.some(function (u) {
56518
56828
  return error.config.url.toLowerCase().indexOf(u.toLocaleLowerCase()) !== -1;
56519
56829
  })) {
@@ -70869,8 +71179,8 @@ var SwitchField_component = (0,componentNormalizer/* default */.A)(
70869
71179
  )
70870
71180
 
70871
71181
  /* harmony default export */ var SwitchField = (SwitchField_component.exports);
70872
- ;// 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/Basicform/src/FormField/TextareaField.vue?vue&type=template&id=7743d246&scoped=true
70873
- var TextareaFieldvue_type_template_id_7743d246_scoped_true_render = function render() {
71182
+ ;// 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/Basicform/src/FormField/TextareaField.vue?vue&type=template&id=27eb631a&scoped=true
71183
+ var TextareaFieldvue_type_template_id_27eb631a_scoped_true_render = function render() {
70874
71184
  var _vm = this,
70875
71185
  _c = _vm._self._c;
70876
71186
  return _vm.isShowField ? _c('div', {
@@ -70963,9 +71273,42 @@ var TextareaFieldvue_type_template_id_7743d246_scoped_true_render = function ren
70963
71273
  return _vm.showTextContent(_vm.showType);
70964
71274
  }
70965
71275
  }
70966
- }, [_vm._v(_vm._s(_vm.textName))])]) : _vm._e()], 1) : _vm._e();
71276
+ }, [_vm._v(_vm._s(_vm.textName))])]) : _vm._e(), _vm.voiceInputEnabled ? _c('div', {
71277
+ staticClass: "voice-input-entry",
71278
+ on: {
71279
+ "click": function click($event) {
71280
+ $event.stopPropagation();
71281
+ return _vm.openVoiceDialog.apply(null, arguments);
71282
+ }
71283
+ }
71284
+ }, [_c('svg', {
71285
+ staticClass: "voice-input-entry-icon",
71286
+ attrs: {
71287
+ "viewBox": "0 0 1024 1024",
71288
+ "fill": "currentColor",
71289
+ "aria-hidden": "true"
71290
+ }
71291
+ }, [_c('path', {
71292
+ attrs: {
71293
+ "d": "M512 640c88.4 0 160-71.6 160-160V224c0-88.4-71.6-160-160-160S352 135.6 352 224v256c0 88.4 71.6 160 160 160z"
71294
+ }
71295
+ }), _c('path', {
71296
+ attrs: {
71297
+ "d": "M768 480c0 141.4-114.6 256-256 256S256 621.4 256 480h-64c0 163.9 123.3 299 288 318.4V896H352v64h320v-64H544v-97.6C708.7 779 832 643.9 832 480h-64z"
71298
+ }
71299
+ })]), _c('span', [_vm._v(_vm._s(_vm.$tx('ecmapp.wflowform.voiceInput', '语音输入')))])]) : _vm._e(), _c('VoiceInputDialog', {
71300
+ attrs: {
71301
+ "visible": _vm.voiceDialogVisible
71302
+ },
71303
+ on: {
71304
+ "update:visible": function updateVisible($event) {
71305
+ _vm.voiceDialogVisible = $event;
71306
+ },
71307
+ "confirm": _vm.onVoiceConfirm
71308
+ }
71309
+ })], 1) : _vm._e();
70967
71310
  };
70968
- var TextareaFieldvue_type_template_id_7743d246_scoped_true_staticRenderFns = [];
71311
+ var TextareaFieldvue_type_template_id_27eb631a_scoped_true_staticRenderFns = [];
70969
71312
 
70970
71313
  ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-83.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=script&lang=js
70971
71314
  function TextareaFieldvue_type_script_lang_js_typeof(o) { "@babel/helpers - typeof"; return TextareaFieldvue_type_script_lang_js_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; }, TextareaFieldvue_type_script_lang_js_typeof(o); }
@@ -71030,6 +71373,10 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
71030
71373
  autosize: {
71031
71374
  type: Boolean,
71032
71375
  default: true
71376
+ },
71377
+ voiceInput: {
71378
+ type: Boolean,
71379
+ default: false
71033
71380
  }
71034
71381
  },
71035
71382
  data: function data() {
@@ -71042,10 +71389,15 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
71042
71389
  maxLength: null,
71043
71390
  updateField: false,
71044
71391
  inputValue: '',
71045
- nodeFieldReadOnly: false
71392
+ nodeFieldReadOnly: false,
71393
+ voiceDialogVisible: false
71046
71394
  };
71047
71395
  },
71048
71396
  computed: TextareaFieldvue_type_script_lang_js_objectSpread(TextareaFieldvue_type_script_lang_js_objectSpread({}, (0,vuex_esm/* mapGetters */.L8)(['loginUser'])), {}, {
71397
+ // 语音输入按钮显示条件:voice-input属性为true、字段可编辑且非元素级只读
71398
+ voiceInputEnabled: function voiceInputEnabled() {
71399
+ return this.voiceInput && !this.readonly && !this.nodeFieldReadOnly && this.elementReadonly !== 1;
71400
+ },
71049
71401
  optionGenerateUrl: function optionGenerateUrl() {
71050
71402
  var _this2 = this;
71051
71403
  var url = this.field.optionGenerateUrl;
@@ -71359,6 +71711,15 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
71359
71711
  _this6.updateField = false;
71360
71712
  });
71361
71713
  },
71714
+ // 打开语音输入弹窗
71715
+ openVoiceDialog: function openVoiceDialog() {
71716
+ this.voiceDialogVisible = true;
71717
+ },
71718
+ // 语音识别完成回调:识别文本追加到现有内容末尾,同步更新字段值
71719
+ onVoiceConfirm: function onVoiceConfirm(text) {
71720
+ this.inputValue = this.inputValue ? this.inputValue + text : text;
71721
+ this.setFieldValue(this.inputValue);
71722
+ },
71362
71723
  getFieldValue: function getFieldValue() {
71363
71724
  if (this.model.split('.').length > 1) {
71364
71725
  if (TextareaFieldvue_type_script_lang_js_typeof(this.vo[this.model.split('.')[0]]) === 'object' && this.vo[this.model.split('.')[0]] != null) {
@@ -71386,9 +71747,9 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
71386
71747
  });
71387
71748
  ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=script&lang=js
71388
71749
  /* harmony default export */ var FormField_TextareaFieldvue_type_script_lang_js = (TextareaFieldvue_type_script_lang_js);
71389
- // 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/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=7743d246&prod&scoped=true&lang=scss
71390
- var TextareaFieldvue_type_style_index_0_id_7743d246_prod_scoped_true_lang_scss = __webpack_require__(9472);
71391
- ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=7743d246&prod&scoped=true&lang=scss
71750
+ // 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/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=27eb631a&prod&scoped=true&lang=scss
71751
+ var TextareaFieldvue_type_style_index_0_id_27eb631a_prod_scoped_true_lang_scss = __webpack_require__(6150);
71752
+ ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=27eb631a&prod&scoped=true&lang=scss
71392
71753
 
71393
71754
  ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue
71394
71755
 
@@ -71401,11 +71762,11 @@ var TextareaFieldvue_type_style_index_0_id_7743d246_prod_scoped_true_lang_scss =
71401
71762
 
71402
71763
  var TextareaField_component = (0,componentNormalizer/* default */.A)(
71403
71764
  FormField_TextareaFieldvue_type_script_lang_js,
71404
- TextareaFieldvue_type_template_id_7743d246_scoped_true_render,
71405
- TextareaFieldvue_type_template_id_7743d246_scoped_true_staticRenderFns,
71765
+ TextareaFieldvue_type_template_id_27eb631a_scoped_true_render,
71766
+ TextareaFieldvue_type_template_id_27eb631a_scoped_true_staticRenderFns,
71406
71767
  false,
71407
71768
  null,
71408
- "7743d246",
71769
+ "27eb631a",
71409
71770
  null
71410
71771
 
71411
71772
  )
@@ -72955,39 +73316,39 @@ var asyncComponents = [
72955
73316
  }],
72956
73317
  // ========== ecmapp/Wflowform 工作流表单子组件 → chunk: m-wflow-form ==========
72957
73318
  ['Attachment', function () {
72958
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73319
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72959
73320
  return m.Attachment;
72960
73321
  });
72961
73322
  }], ['BodyFile', function () {
72962
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73323
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72963
73324
  return m.BodyFile;
72964
73325
  });
72965
73326
  }], ['HandleIdea', function () {
72966
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73327
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72967
73328
  return m.HandleIdea;
72968
73329
  });
72969
73330
  }], ['SelectOuterDeputy', function () {
72970
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73331
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72971
73332
  return m.SelectOuterDeputy;
72972
73333
  });
72973
73334
  }], ['SubmitHandle', function () {
72974
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73335
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72975
73336
  return m.SubmitHandle;
72976
73337
  });
72977
73338
  }], ['SubmitDialog', function () {
72978
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73339
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72979
73340
  return m.SubmitDialog;
72980
73341
  });
72981
73342
  }], ['ShortcutProcessing', function () {
72982
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73343
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72983
73344
  return m.ShortcutProcessing;
72984
73345
  });
72985
73346
  }], ['WfNodelogList', function () {
72986
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73347
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72987
73348
  return m.WfNodelogList;
72988
73349
  });
72989
73350
  }], ['WriteToReadIdea', function () {
72990
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866)).then(function (m) {
73351
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888)).then(function (m) {
72991
73352
  return m.WriteToReadIdea;
72992
73353
  });
72993
73354
  }]];
@@ -73040,7 +73401,7 @@ var WfengineModule = function WfengineModule() {
73040
73401
  return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 6322));
73041
73402
  };
73042
73403
  var WflowformModule = function WflowformModule() {
73043
- return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 8866));
73404
+ return Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 5888));
73044
73405
  };
73045
73406
 
73046
73407
  // ---------- 重型功能(PDF/富文本,仅特定页面使用) ----------