ecinc-cloud-mappaio 9.7.60 → 9.7.63

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.
@@ -23524,7 +23524,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".van-switch-field[data-v-61ed46da]{pos
23524
23524
 
23525
23525
  /***/ }),
23526
23526
 
23527
- /***/ 5441:
23527
+ /***/ 9204:
23528
23528
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
23529
23529
 
23530
23530
  "use strict";
@@ -23538,7 +23538,7 @@ __webpack_require__.r(__webpack_exports__);
23538
23538
 
23539
23539
  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()));
23540
23540
  // Module
23541
- ___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}", ""]);
23541
+ ___CSS_LOADER_EXPORT___.push([module.id, ".van-textarea-field[data-v-6e9369e7]{position:relative}.van-textarea-field[data-v-6e9369e7] .van-field__label{width:90%!important}.van-textarea-field[data-v-6e9369e7]: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-6e9369e7]{width:100%;white-space:pre-wrap}.richtext-content[data-v-6e9369e7] img{-o-object-fit:contain;object-fit:contain;max-width:100%!important;height:auto!important}.richtext-content-hidden[data-v-6e9369e7]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.voice-input-entry[data-v-6e9369e7]{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-6e9369e7]{width:16px;height:16px;margin-right:4px}.voice-input-entry[data-v-6e9369e7]:active{opacity:.7}.van-textarea-field[data-v-6e9369e7] .field-flSubject .richtext-content,.van-textarea-field[data-v-6e9369e7] .field-flSubject textarea.van-field__control{font-size:16px;font-weight:700}", ""]);
23542
23542
  // Exports
23543
23543
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
23544
23544
 
@@ -51394,19 +51394,19 @@ var update = add("49a7cd0a", content, true, {"sourceMap":false,"shadowMode":fals
51394
51394
 
51395
51395
  /***/ }),
51396
51396
 
51397
- /***/ 8619:
51397
+ /***/ 1578:
51398
51398
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51399
51399
 
51400
51400
  // style-loader: Adds some css to the DOM by adding a <style> tag
51401
51401
 
51402
51402
  // load the styles
51403
- var content = __webpack_require__(5441);
51403
+ var content = __webpack_require__(9204);
51404
51404
  if(content.__esModule) content = content.default;
51405
51405
  if(typeof content === 'string') content = [[module.id, content, '']];
51406
51406
  if(content.locals) module.exports = content.locals;
51407
51407
  // add the styles to the DOM
51408
51408
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
51409
- var update = add("44739768", content, true, {"sourceMap":false,"shadowMode":false});
51409
+ var update = add("70f0078e", content, true, {"sourceMap":false,"shadowMode":false});
51410
51410
 
51411
51411
  /***/ }),
51412
51412
 
@@ -72249,8 +72249,8 @@ var SwitchField_component = (0,componentNormalizer/* default */.A)(
72249
72249
  )
72250
72250
 
72251
72251
  /* harmony default export */ var SwitchField = (SwitchField_component.exports);
72252
- ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
72253
- var TextareaFieldvue_type_template_id_27eb631a_scoped_true_render = function render() {
72252
+ ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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=6e9369e7&scoped=true
72253
+ var TextareaFieldvue_type_template_id_6e9369e7_scoped_true_render = function render() {
72254
72254
  var _vm = this,
72255
72255
  _c = _vm._self._c;
72256
72256
  return _vm.isShowField ? _c('div', {
@@ -72378,7 +72378,7 @@ var TextareaFieldvue_type_template_id_27eb631a_scoped_true_render = function ren
72378
72378
  }
72379
72379
  })], 1) : _vm._e();
72380
72380
  };
72381
- var TextareaFieldvue_type_template_id_27eb631a_scoped_true_staticRenderFns = [];
72381
+ var TextareaFieldvue_type_template_id_6e9369e7_scoped_true_staticRenderFns = [];
72382
72382
 
72383
72383
  ;// CONCATENATED MODULE: ./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
72384
72384
  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); }
@@ -72460,13 +72460,14 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72460
72460
  updateField: false,
72461
72461
  inputValue: '',
72462
72462
  nodeFieldReadOnly: false,
72463
- voiceDialogVisible: false
72463
+ voiceDialogVisible: false,
72464
+ voiceEnvSupported: false // 当前环境是否支持语音输入
72464
72465
  };
72465
72466
  },
72466
72467
  computed: TextareaFieldvue_type_script_lang_js_objectSpread(TextareaFieldvue_type_script_lang_js_objectSpread({}, (0,vuex_esm/* mapGetters */.L8)(['loginUser'])), {}, {
72467
- // 语音输入按钮显示条件:voice-input属性为true、字段可编辑且非元素级只读
72468
+ // 语音输入按钮显示条件:voice-input属性为true、字段可编辑、非元素级只读且当前环境支持语音输入
72468
72469
  voiceInputEnabled: function voiceInputEnabled() {
72469
- return this.voiceInput && !this.readonly && !this.nodeFieldReadOnly && this.elementReadonly !== 1;
72470
+ return this.voiceInput && !this.readonly && !this.nodeFieldReadOnly && this.elementReadonly !== 1 && this.voiceEnvSupported;
72470
72471
  },
72471
72472
  optionGenerateUrl: function optionGenerateUrl() {
72472
72473
  var _this2 = this;
@@ -72529,6 +72530,7 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72529
72530
  }
72530
72531
  }
72531
72532
  this.nodeFieldReadOnly = this.readonly;
72533
+ this.initVoiceInputEnabled();
72532
72534
  },
72533
72535
  beforeDestroy: function beforeDestroy() {
72534
72536
  this.fieldDom.removeEventListener('change', this.initVerify);
@@ -72781,12 +72783,33 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72781
72783
  _this6.updateField = false;
72782
72784
  });
72783
72785
  },
72784
- // 打开语音输入弹窗
72786
+ // 检测语音输入按钮可用性:未配置window.voiceToWord时需https/localhost安全上下文且浏览器支持Web Speech API,否则不显示按钮
72787
+ // 后端转写时window.voiceToWord配置为'/voice/recognize/toText',由网关路由到eccloud-clientms
72788
+ initVoiceInputEnabled: function initVoiceInputEnabled() {
72789
+ var voiceToWord = window.voiceToWord;
72790
+ if (voiceToWord && typeof voiceToWord === 'string' && voiceToWord !== 'browser') {
72791
+ // 后端接口转文字:需getUserMedia录音(同样仅安全上下文下可用)
72792
+ this.voiceEnvSupported = !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) || window.mappType === 'ecinc';
72793
+ } else {
72794
+ // 浏览器直转文字:需安全上下文且支持SpeechRecognition
72795
+ this.voiceEnvSupported = window.isSecureContext === true && ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window);
72796
+ }
72797
+ },
72798
+ // 打开语音输入弹窗:安全上下文下打开弹窗,易臣客户端WebView下走原生录音识别,识别结果经window.voiceInputCallback回写
72785
72799
  openVoiceDialog: function openVoiceDialog() {
72786
- this.voiceDialogVisible = true;
72800
+ var _this7 = this;
72801
+ if (window.isSecureContext) {
72802
+ this.voiceDialogVisible = true;
72803
+ } else if (window.mappType === 'ecinc') {
72804
+ window.voiceInputCallback = function (text) {
72805
+ return _this7.onVoiceConfirm(text);
72806
+ };
72807
+ this.$wv.streamRecordRecognize('voiceInputCallback');
72808
+ }
72787
72809
  },
72788
72810
  // 语音识别完成回调:识别文本追加到现有内容末尾,同步更新字段值
72789
72811
  onVoiceConfirm: function onVoiceConfirm(text) {
72812
+ if (!text) return;
72790
72813
  this.inputValue = this.inputValue ? this.inputValue + text : text;
72791
72814
  this.setFieldValue(this.inputValue);
72792
72815
  },
@@ -72817,9 +72840,9 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72817
72840
  });
72818
72841
  ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=script&lang=js
72819
72842
  /* harmony default export */ var FormField_TextareaFieldvue_type_script_lang_js = (TextareaFieldvue_type_script_lang_js);
72820
- // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.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
72821
- var TextareaFieldvue_type_style_index_0_id_27eb631a_prod_scoped_true_lang_scss = __webpack_require__(8619);
72822
- ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=27eb631a&prod&scoped=true&lang=scss
72843
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.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=6e9369e7&prod&scoped=true&lang=scss
72844
+ var TextareaFieldvue_type_style_index_0_id_6e9369e7_prod_scoped_true_lang_scss = __webpack_require__(1578);
72845
+ ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=6e9369e7&prod&scoped=true&lang=scss
72823
72846
 
72824
72847
  ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue
72825
72848
 
@@ -72832,11 +72855,11 @@ var TextareaFieldvue_type_style_index_0_id_27eb631a_prod_scoped_true_lang_scss =
72832
72855
 
72833
72856
  var TextareaField_component = (0,componentNormalizer/* default */.A)(
72834
72857
  FormField_TextareaFieldvue_type_script_lang_js,
72835
- TextareaFieldvue_type_template_id_27eb631a_scoped_true_render,
72836
- TextareaFieldvue_type_template_id_27eb631a_scoped_true_staticRenderFns,
72858
+ TextareaFieldvue_type_template_id_6e9369e7_scoped_true_render,
72859
+ TextareaFieldvue_type_template_id_6e9369e7_scoped_true_staticRenderFns,
72837
72860
  false,
72838
72861
  null,
72839
- "27eb631a",
72862
+ "6e9369e7",
72840
72863
  null
72841
72864
 
72842
72865
  )
@@ -23534,7 +23534,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".van-switch-field[data-v-61ed46da]{pos
23534
23534
 
23535
23535
  /***/ }),
23536
23536
 
23537
- /***/ 7855:
23537
+ /***/ 5598:
23538
23538
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
23539
23539
 
23540
23540
  "use strict";
@@ -23548,7 +23548,7 @@ __webpack_require__.r(__webpack_exports__);
23548
23548
 
23549
23549
  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()));
23550
23550
  // Module
23551
- ___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}", ""]);
23551
+ ___CSS_LOADER_EXPORT___.push([module.id, ".van-textarea-field[data-v-6e9369e7]{position:relative}.van-textarea-field[data-v-6e9369e7] .van-field__label{width:90%!important}.van-textarea-field[data-v-6e9369e7]: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-6e9369e7]{width:100%;white-space:pre-wrap}.richtext-content[data-v-6e9369e7] img{-o-object-fit:contain;object-fit:contain;max-width:100%!important;height:auto!important}.richtext-content-hidden[data-v-6e9369e7]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.voice-input-entry[data-v-6e9369e7]{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-6e9369e7]{width:16px;height:16px;margin-right:4px}.voice-input-entry[data-v-6e9369e7]:active{opacity:.7}.van-textarea-field[data-v-6e9369e7] .field-flSubject .richtext-content,.van-textarea-field[data-v-6e9369e7] .field-flSubject textarea.van-field__control{font-size:16px;font-weight:700}", ""]);
23552
23552
  // Exports
23553
23553
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
23554
23554
 
@@ -51404,19 +51404,19 @@ var update = add("72d06f4a", content, true, {"sourceMap":false,"shadowMode":fals
51404
51404
 
51405
51405
  /***/ }),
51406
51406
 
51407
- /***/ 6150:
51407
+ /***/ 2908:
51408
51408
  /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
51409
51409
 
51410
51410
  // style-loader: Adds some css to the DOM by adding a <style> tag
51411
51411
 
51412
51412
  // load the styles
51413
- var content = __webpack_require__(7855);
51413
+ var content = __webpack_require__(5598);
51414
51414
  if(content.__esModule) content = content.default;
51415
51415
  if(typeof content === 'string') content = [[module.id, content, '']];
51416
51416
  if(content.locals) module.exports = content.locals;
51417
51417
  // add the styles to the DOM
51418
51418
  var add = (__webpack_require__(9548)/* ["default"] */ .A)
51419
- var update = add("effdccb0", content, true, {"sourceMap":false,"shadowMode":false});
51419
+ var update = add("0b157e79", content, true, {"sourceMap":false,"shadowMode":false});
51420
51420
 
51421
51421
  /***/ }),
51422
51422
 
@@ -72267,8 +72267,8 @@ var SwitchField_component = (0,componentNormalizer/* default */.A)(
72267
72267
  )
72268
72268
 
72269
72269
  /* harmony default export */ var SwitchField = (SwitchField_component.exports);
72270
- ;// 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
72271
- var TextareaFieldvue_type_template_id_27eb631a_scoped_true_render = function render() {
72270
+ ;// 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=6e9369e7&scoped=true
72271
+ var TextareaFieldvue_type_template_id_6e9369e7_scoped_true_render = function render() {
72272
72272
  var _vm = this,
72273
72273
  _c = _vm._self._c;
72274
72274
  return _vm.isShowField ? _c('div', {
@@ -72396,7 +72396,7 @@ var TextareaFieldvue_type_template_id_27eb631a_scoped_true_render = function ren
72396
72396
  }
72397
72397
  })], 1) : _vm._e();
72398
72398
  };
72399
- var TextareaFieldvue_type_template_id_27eb631a_scoped_true_staticRenderFns = [];
72399
+ var TextareaFieldvue_type_template_id_6e9369e7_scoped_true_staticRenderFns = [];
72400
72400
 
72401
72401
  ;// 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
72402
72402
  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); }
@@ -72478,13 +72478,14 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72478
72478
  updateField: false,
72479
72479
  inputValue: '',
72480
72480
  nodeFieldReadOnly: false,
72481
- voiceDialogVisible: false
72481
+ voiceDialogVisible: false,
72482
+ voiceEnvSupported: false // 当前环境是否支持语音输入
72482
72483
  };
72483
72484
  },
72484
72485
  computed: TextareaFieldvue_type_script_lang_js_objectSpread(TextareaFieldvue_type_script_lang_js_objectSpread({}, (0,vuex_esm/* mapGetters */.L8)(['loginUser'])), {}, {
72485
- // 语音输入按钮显示条件:voice-input属性为true、字段可编辑且非元素级只读
72486
+ // 语音输入按钮显示条件:voice-input属性为true、字段可编辑、非元素级只读且当前环境支持语音输入
72486
72487
  voiceInputEnabled: function voiceInputEnabled() {
72487
- return this.voiceInput && !this.readonly && !this.nodeFieldReadOnly && this.elementReadonly !== 1;
72488
+ return this.voiceInput && !this.readonly && !this.nodeFieldReadOnly && this.elementReadonly !== 1 && this.voiceEnvSupported;
72488
72489
  },
72489
72490
  optionGenerateUrl: function optionGenerateUrl() {
72490
72491
  var _this2 = this;
@@ -72547,6 +72548,7 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72547
72548
  }
72548
72549
  }
72549
72550
  this.nodeFieldReadOnly = this.readonly;
72551
+ this.initVoiceInputEnabled();
72550
72552
  },
72551
72553
  beforeDestroy: function beforeDestroy() {
72552
72554
  this.fieldDom.removeEventListener('change', this.initVerify);
@@ -72799,12 +72801,33 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72799
72801
  _this6.updateField = false;
72800
72802
  });
72801
72803
  },
72802
- // 打开语音输入弹窗
72804
+ // 检测语音输入按钮可用性:未配置window.voiceToWord时需https/localhost安全上下文且浏览器支持Web Speech API,否则不显示按钮
72805
+ // 后端转写时window.voiceToWord配置为'/voice/recognize/toText',由网关路由到eccloud-clientms
72806
+ initVoiceInputEnabled: function initVoiceInputEnabled() {
72807
+ var voiceToWord = window.voiceToWord;
72808
+ if (voiceToWord && typeof voiceToWord === 'string' && voiceToWord !== 'browser') {
72809
+ // 后端接口转文字:需getUserMedia录音(同样仅安全上下文下可用)
72810
+ this.voiceEnvSupported = !!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) || window.mappType === 'ecinc';
72811
+ } else {
72812
+ // 浏览器直转文字:需安全上下文且支持SpeechRecognition
72813
+ this.voiceEnvSupported = window.isSecureContext === true && ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window);
72814
+ }
72815
+ },
72816
+ // 打开语音输入弹窗:安全上下文下打开弹窗,易臣客户端WebView下走原生录音识别,识别结果经window.voiceInputCallback回写
72803
72817
  openVoiceDialog: function openVoiceDialog() {
72804
- this.voiceDialogVisible = true;
72818
+ var _this7 = this;
72819
+ if (window.isSecureContext) {
72820
+ this.voiceDialogVisible = true;
72821
+ } else if (window.mappType === 'ecinc') {
72822
+ window.voiceInputCallback = function (text) {
72823
+ return _this7.onVoiceConfirm(text);
72824
+ };
72825
+ this.$wv.streamRecordRecognize('voiceInputCallback');
72826
+ }
72805
72827
  },
72806
72828
  // 语音识别完成回调:识别文本追加到现有内容末尾,同步更新字段值
72807
72829
  onVoiceConfirm: function onVoiceConfirm(text) {
72830
+ if (!text) return;
72808
72831
  this.inputValue = this.inputValue ? this.inputValue + text : text;
72809
72832
  this.setFieldValue(this.inputValue);
72810
72833
  },
@@ -72835,9 +72858,9 @@ function TextareaFieldvue_type_script_lang_js_toPrimitive(t, r) { if ("object" !
72835
72858
  });
72836
72859
  ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=script&lang=js
72837
72860
  /* harmony default export */ var FormField_TextareaFieldvue_type_script_lang_js = (TextareaFieldvue_type_script_lang_js);
72838
- // 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
72839
- var TextareaFieldvue_type_style_index_0_id_27eb631a_prod_scoped_true_lang_scss = __webpack_require__(6150);
72840
- ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=27eb631a&prod&scoped=true&lang=scss
72861
+ // 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=6e9369e7&prod&scoped=true&lang=scss
72862
+ var TextareaFieldvue_type_style_index_0_id_6e9369e7_prod_scoped_true_lang_scss = __webpack_require__(2908);
72863
+ ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue?vue&type=style&index=0&id=6e9369e7&prod&scoped=true&lang=scss
72841
72864
 
72842
72865
  ;// CONCATENATED MODULE: ./packages/ecmapp/Basicform/src/FormField/TextareaField.vue
72843
72866
 
@@ -72850,11 +72873,11 @@ var TextareaFieldvue_type_style_index_0_id_27eb631a_prod_scoped_true_lang_scss =
72850
72873
 
72851
72874
  var TextareaField_component = (0,componentNormalizer/* default */.A)(
72852
72875
  FormField_TextareaFieldvue_type_script_lang_js,
72853
- TextareaFieldvue_type_template_id_27eb631a_scoped_true_render,
72854
- TextareaFieldvue_type_template_id_27eb631a_scoped_true_staticRenderFns,
72876
+ TextareaFieldvue_type_template_id_6e9369e7_scoped_true_render,
72877
+ TextareaFieldvue_type_template_id_6e9369e7_scoped_true_staticRenderFns,
72855
72878
  false,
72856
72879
  null,
72857
- "27eb631a",
72880
+ "6e9369e7",
72858
72881
  null
72859
72882
 
72860
72883
  )