Просмотр исходного кода

数据框组件只读显示换行

cyy 2 лет назад
Родитель
Сommit
d61280e5e9

+ 209 - 131
src/business/platform/form/dynamic-form/form-field.vue

@@ -1,21 +1,20 @@
 <template>
   <!-- 单行文本、 多行文本、 数字-->
   <van-field
-    v-if="fieldType==='text'||fieldType==='textarea'||fieldType==='number'"
+    v-if="
+      fieldType === 'text' || fieldType === 'textarea' || fieldType === 'number'
+    "
     v-model="dataModel"
     :name="field.name"
     :label="label"
     :placeholder="placeholder"
     :input-align="inputAlign"
-
-    :type="fieldType"
-
+    :type="fieldType == 'text' && readonly == true ? 'textarea' : fieldType"
     :required="required"
     :readonly="readonly"
     :rules="rules"
-
     :autosize="autosize"
-    :rows="fieldOptions.rows||2"
+    :rows="fieldOptions.rows || 2"
     :desc="field.desc"
     autocomplete="off"
     border
@@ -23,12 +22,18 @@
     v-on="$listeners"
   >
     <template #label>
-      {{ label }}<van-icon v-if="field.desc && descPosition==='lableIcon'" name="warning" class="ibps-dialog-icon" @click="showDesc(label,field.desc)" />
+      {{ label
+      }}<van-icon
+        v-if="field.desc && descPosition === 'lableIcon'"
+        name="warning"
+        class="ibps-dialog-icon"
+        @click="showDesc(label, field.desc)"
+      />
     </template>
   </van-field>
 
   <ibps-stepper
-    v-else-if="fieldType==='inputNumber'"
+    v-else-if="fieldType === 'inputNumber'"
     v-model="dataModel"
     :max="fieldOptions.max"
     :min="fieldOptions.min"
@@ -37,28 +42,24 @@
     :desc="field.desc"
     :desc-position="descPosition"
     :input-align="inputAlign"
-
     :label="label"
     :required="required"
     :readonly="readonly"
     :rules="rules"
-
     v-on="$listeners"
   />
 
   <!-- 单项选择 -->
   <ibps-radio
-    v-else-if="fieldType==='radio'"
+    v-else-if="fieldType === 'radio'"
     v-model="dataModel"
     :name="field.name"
     :label="label"
     :placeholder="placeholder"
     :input-align="inputAlign"
-
     :options="dataOptions"
     value-key="val"
     :other-option-value.sync="otherOptionValue"
-
     :required="required"
     :readonly="readonly"
     :rules="rules"
@@ -66,23 +67,20 @@
     :desc="field.desc"
     border
     clearable
-
     v-on="$listeners"
   />
 
   <!-- 多项选择 -->
   <ibps-checkbox
-    v-else-if="fieldType==='checkbox'"
+    v-else-if="fieldType === 'checkbox'"
     v-model="dataModel"
     :name="field.name"
     :label="label"
     :placeholder="placeholder"
     :input-align="inputAlign"
-
     :options="dataOptions"
     value-key="val"
     :other-option-value.sync="otherOptionValue"
-
     :required="required"
     :readonly="readonly"
     :rules="rules"
@@ -94,16 +92,14 @@
   />
   <!-- 下拉选择 -->
   <ibps-select
-    v-else-if="fieldType==='select'"
+    v-else-if="fieldType === 'select'"
     v-model="dataModel"
     :name="field.name"
     :label="label"
     :placeholder="placeholder"
     :input-align="inputAlign"
-
     :options="dataOptions"
     value-key="val"
-
     :required="required"
     :readonly="readonly"
     :rules="rules"
@@ -115,7 +111,11 @@
   />
   <!-- 日期/ 当前时间、当前日期 -->
   <ibps-date-picker
-    v-else-if="fieldType==='datePicker'|| fieldType==='currentDate'|| fieldType==='currentTime'"
+    v-else-if="
+      fieldType === 'datePicker' ||
+        fieldType === 'currentDate' ||
+        fieldType === 'currentTime'
+    "
     v-model="dateDataModel"
     :label="field.label"
     :desc="field.desc"
@@ -123,10 +123,13 @@
     :placeholder="placeholder"
     :format="dateFormat"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
-    :readonly="fieldType==='currentTime'||fieldType==='currentDate'?true:readonly"
+    :readonly="
+      fieldType === 'currentTime' || fieldType === 'currentDate'
+        ? true
+        : readonly
+    "
     :rules="rules"
     type="custom"
     v-on="$listeners"
@@ -134,7 +137,7 @@
 
   <!-- 开关控件 -->
   <ibps-switch
-    v-else-if="fieldType==='switch'"
+    v-else-if="fieldType === 'switch'"
     v-model="dataModel"
     :name="field.name"
     :label="field.label"
@@ -142,35 +145,30 @@
     :desc="field.desc"
     :desc-position="descPosition"
     :input-align="inputAlign"
-
     :active-value="fieldOptions.active_value"
     :inactive-value="fieldOptions.inactive_value"
     :active-text="fieldOptions.active_text"
     :inactive-text="fieldOptions.inactive_text"
     :active-color="fieldOptions.active_color"
     :inactive-color="fieldOptions.inactive_color"
-
     :required="required"
     :disabled="readonly"
     :rules="rules"
-
     v-on="$listeners"
   />
 
   <!-- 滑块控件 -->
   <ibps-slider
-    v-else-if="fieldType==='slider'"
+    v-else-if="fieldType === 'slider'"
     v-model="numberDataModel"
     :name="field.name"
     :label="field.label"
     :desc="field.desc"
     :desc-position="descPosition"
     :placeholder="placeholder"
-
     :max="fieldOptions.max"
     :min="fieldOptions.min"
     :step="fieldOptions.step"
-
     :required="required"
     :disabled="readonly"
     :rules="rules"
@@ -179,7 +177,7 @@
 
   <!-- 评分控件 -->
   <ibps-rate
-    v-else-if="fieldType==='rate'"
+    v-else-if="fieldType === 'rate'"
     v-model="numberDataModel"
     :name="field.name"
     :label="field.label"
@@ -187,10 +185,8 @@
     :desc-position="descPosition"
     :placeholder="placeholder"
     :input-align="inputAlign"
-
     :count="fieldOptions.max"
     :allow-half="fieldOptions.allow_half"
-
     :required="required"
     :readonly="readonly"
     :rules="rules"
@@ -198,14 +194,13 @@
   />
   <!-- 富文本 -->
   <ibps-editor
-    v-else-if="fieldType==='editor'"
+    v-else-if="fieldType === 'editor'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
     :desc-position="descPosition"
     :placeholder="placeholder"
     :height="height"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -214,7 +209,7 @@
   />
   <!-- 数据字典 -->
   <ibps-dictionary
-    v-else-if="fieldType==='dictionary'"
+    v-else-if="fieldType === 'dictionary'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
@@ -226,7 +221,6 @@
     :separator="fieldOptions.split"
     :multiple="multiple"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -235,7 +229,7 @@
   />
   <!-- 自动编号 -->
   <ibps-auto-number
-    v-else-if="fieldType==='autoNumber'"
+    v-else-if="fieldType === 'autoNumber'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
@@ -244,7 +238,6 @@
     :identity="fieldOptions.identity"
     :init="$utils.toBoolean(fieldOptions.init)"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -253,13 +246,13 @@
   />
   <!-- 上传附件 -->
   <ibps-uploader
-    v-else-if="fieldType==='attachment'"
+    v-else-if="fieldType === 'attachment'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
     :desc-position="descPosition"
     :placeholder="placeholder"
-    :store="fieldOptions.store||'json'"
+    :store="fieldOptions.store || 'json'"
     :max-size="maxFileSize"
     :limit="fileQuantity"
     :accept="fileAccept"
@@ -268,7 +261,6 @@
     :download="fieldOptions.download"
     :upload-type="fieldOptions.uploadType"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -278,30 +270,37 @@
 
   <!-- 选择器 -->
   <ibps-selector
-    v-else-if="fieldType==='selector' || fieldType==='currentUser'|| fieldType==='currentOrg'"
+    v-else-if="
+      fieldType === 'selector' ||
+        fieldType === 'currentUser' ||
+        fieldType === 'currentOrg'
+    "
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
     :desc-position="descPosition"
     :placeholder="placeholder"
-    :store="fieldOptions.store||'id'"
-    :type="fieldOptions.selector_type||'user'"
+    :store="fieldOptions.store || 'id'"
+    :type="fieldOptions.selector_type || 'user'"
     :multiple="multiple"
     :bind-id="bindId"
     :field-options="fieldOptions"
     :filter="fieldOptions.filter"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
-    :readonly="(fieldType==='currentUser' || fieldType==='currentOrg')?true:readonly"
+    :readonly="
+      fieldType === 'currentUser' || fieldType === 'currentOrg'
+        ? true
+        : readonly
+    "
     :rules="rules"
     @bind-callback="selectorBindCallback"
     v-on="$listeners"
   />
   <!-- 自定义对话框 -->
   <ibps-custom-dialog
-    v-else-if="fieldType==='customDialog'"
+    v-else-if="fieldType === 'customDialog'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
@@ -313,7 +312,6 @@
     :field-options="fieldOptions"
     :dynamic-params="dynamicParams"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -324,7 +322,7 @@
   />
   <!-- 关联数据 -->
   <ibps-linkdata
-    v-else-if="fieldType==='linkdata'"
+    v-else-if="fieldType === 'linkdata'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
@@ -332,14 +330,12 @@
     :placeholder="placeholder"
     :multiple="multipleSelect"
     :template-key="fieldOptions.linkdata"
-    :store="fieldOptions.store||'id'"
+    :store="fieldOptions.store || 'id'"
     :dynamic-params="dynamicParams"
     :input-align="inputAlign"
-
     :value-key="valueKey"
     :label-type="labelType"
     :label-key="labelKey"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -351,7 +347,7 @@
 
   <!-- 地址 -->
   <ibps-address
-    v-else-if="fieldType==='address'"
+    v-else-if="fieldType === 'address'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
@@ -362,7 +358,6 @@
     :level="fieldOptions.level"
     :has-street="fieldOptions.is_street"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -372,14 +367,13 @@
 
   <!-- 签名 -->
   <ibps-signature
-    v-else-if="fieldType==='signature'"
+    v-else-if="fieldType === 'signature'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
     :desc-position="descPosition"
     :placeholder="placeholder"
     :height="height"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
@@ -388,12 +382,11 @@
   />
   <!-- 图片 -->
   <ibps-image
-    v-else-if="fieldType==='image'"
+    v-else-if="fieldType === 'image'"
     v-model="dataModel"
     :label="field.label"
     :desc="field.desc"
     :desc-position="descPosition"
-
     :width="fieldOptions.width"
     :height="fieldOptions.height"
     :limit="fieldOptions.limit"
@@ -411,7 +404,7 @@
 
   <!-- =======================自定义控件==============================-->
   <!-- 自定义组件 -->
-  <div v-else-if="fieldType==='component'">
+  <div v-else-if="fieldType === 'component'">
     <component
       :is="fieldOptions.component_name"
       v-model="dataModel"
@@ -428,7 +421,7 @@
     />
   </div>
   <!-- 自定义控件 -->
-  <div v-else-if="fieldType==='control'">
+  <div v-else-if="fieldType === 'control'">
     <component
       :is="fieldOptions.component_name"
       v-model="dataModel"
@@ -447,15 +440,15 @@
 
   <!-- 隐藏域-->
   <input
-    v-else-if="fieldType==='hidden'"
+    v-else-if="fieldType === 'hidden'"
     v-model="dataModel"
     type="hidden"
     v-on="$listeners"
-  >
+  />
 
   <!-- 描述-->
   <ibps-desc
-    v-else-if="fieldType==='desc'"
+    v-else-if="fieldType === 'desc'"
     v-model="dataModel"
     :label="field.label"
     :border="fieldOptions.split_line"
@@ -468,7 +461,7 @@
 
   <!-- 文本-->
   <van-field
-    v-else-if="fieldType==='label'"
+    v-else-if="fieldType === 'label'"
     v-model="dataModel"
     :label="label"
     :desc="field.desc"
@@ -477,21 +470,25 @@
     :type="fieldType"
     :height="fieldOptions.height"
     :input-align="inputAlign"
-
     :name="field.name"
     :required="required"
     readonly
-
     autosize
     v-on="$listeners"
   >
     <template #label>
-      {{ label }}<van-icon v-if="field.desc && descPosition==='lableIcon'" name="warning" class="ibps-dialog-icon" @click="showDesc(label,field.desc)" />
+      {{ label
+      }}<van-icon
+        v-if="field.desc && descPosition === 'lableIcon'"
+        name="warning"
+        class="ibps-dialog-icon"
+        @click="showDesc(label, field.desc)"
+      />
     </template>
   </van-field>
   <!-- 链接 -->
   <ibps-hyperlink
-    v-else-if="fieldType==='hyperlink'"
+    v-else-if="fieldType === 'hyperlink'"
     :label="label"
     :desc="field.desc"
     :desc-position="descPosition"
@@ -499,27 +496,26 @@
     :text="fieldOptions.text"
     :type="fieldOptions.type"
     :input-align="inputAlign"
-
     :link="fieldOptions.link"
     :text-type="fieldOptions.textType"
     :link-type="fieldOptions.linkType"
     :text-javascript="fieldOptions.text_javascript"
     :form-data="dynamicForm"
     preview-entrance
-
-    :icon="fieldOptions.icon?fieldOptions.icon:''"
+    :icon="fieldOptions.icon ? fieldOptions.icon : ''"
     v-on="$listeners"
   />
 
   <!-- 分割线 -->
   <van-divider
-    v-else-if="fieldType==='divider'"
+    v-else-if="fieldType === 'divider'"
     :content-position="fieldOptions.content_position"
-  >{{ field.label }}</van-divider>
+    >{{ field.label }}</van-divider
+  >
 
   <!--警告-->
   <ibps-alert
-    v-else-if="fieldType==='alert'"
+    v-else-if="fieldType === 'alert'"
     :title="field.label"
     :description="field.desc"
     :type="fieldOptions.type"
@@ -539,7 +535,6 @@
     :height="height"
     :params="bpmInstHisParams"
     :input-align="inputAlign"
-
     :rules="rules"
     :name="field.name"
     :required="required"
@@ -558,9 +553,7 @@
     :input-align="inputAlign"
   />
   <!-- 审批历史-->
-  <div
-    v-else-if="fieldType === 'approval_history'"
-  >
+  <div v-else-if="fieldType === 'approval_history'">
     <ibps-approval-history
       v-if="showApprovalHistory"
       :label="field.label"
@@ -574,9 +567,7 @@
   </div>
 
   <!-- 流程图-->
-  <div
-    v-else-if="fieldType === 'flow_diagram'"
-  >
+  <div v-else-if="fieldType === 'flow_diagram'">
     <ibps-flow-diagram
       v-if="showFlowDiagram"
       :label="field.label"
@@ -590,7 +581,7 @@
   </div>
   <!-- 审批意见-->
   <ibps-approval-opinion
-    v-else-if="fieldType==='approval_opinion'"
+    v-else-if="fieldType === 'approval_opinion'"
     v-model="dataModel"
     :label="label"
     :desc="field.desc"
@@ -599,13 +590,16 @@
     :data="formOpinion"
     :layout="fieldOptions.arrangement"
     :options="fieldOptions.options"
-    :has-common-statment="!!(fieldOptions.common_statment === true || fieldOptions.common_statment === 'true')"
+    :has-common-statment="
+      !!(
+        fieldOptions.common_statment === true ||
+        fieldOptions.common_statment === 'true'
+      )
+    "
     :height="fieldOptions.height"
-
     :name="field.name"
     :required="required"
     :readonly="readonly"
-
     autosize
     clearable
   />
@@ -619,7 +613,10 @@ import ActionUtils from '@/utils/action'
 import fecha from '@/utils/fecha'
 import FormOptions from '../constants/formOptions'
 import FormUtils from '../utils/formUtil'
-import { fileTypes as FILE_TYPES, accept as ACCEPT } from '@/business/platform/file/constants/fileTypes'
+import {
+  fileTypes as FILE_TYPES,
+  accept as ACCEPT
+} from '@/business/platform/file/constants/fileTypes'
 const _import = require('@/utils/util.import.' + process.env.NODE_ENV)
 
 export default {
@@ -681,7 +678,9 @@ export default {
     },
     numberDataModel: {
       get() {
-        if (this.$utils.isEmpty(this.dataModel)) { return 0 }
+        if (this.$utils.isEmpty(this.dataModel)) {
+          return 0
+        }
         return Number(this.dataModel)
       },
       set(value) {
@@ -696,15 +695,24 @@ export default {
       return this.field.label
     },
     inputAlign() {
-      return this.params && this.$utils.isNotEmpty(this.params.inputAlign) ? this.params.inputAlign || 'left' : 'left'
+      return this.params && this.$utils.isNotEmpty(this.params.inputAlign)
+        ? this.params.inputAlign || 'left'
+        : 'left'
     },
     // 自适应内容高度
     autosize() {
       let autosize = this.fieldOptions.autosize
-      if (this.fieldOptions.autosize && (this.fieldOptions.min_rows || this.fieldOptions.max_rows)) {
+      if (
+        this.fieldOptions.autosize &&
+        (this.fieldOptions.min_rows || this.fieldOptions.max_rows)
+      ) {
         const rows = {}
-        rows.minHeight = this.fieldOptions.min_rows ? this.fieldOptions.min_rows * 24 : null
-        rows.maxHeight = this.fieldOptions.max_rows ? this.fieldOptions.max_rows * 24 : null
+        rows.minHeight = this.fieldOptions.min_rows
+          ? this.fieldOptions.min_rows * 24
+          : null
+        rows.maxHeight = this.fieldOptions.max_rows
+          ? this.fieldOptions.max_rows * 24
+          : null
         autosize = rows
       }
       return autosize
@@ -716,10 +724,18 @@ export default {
       } else if (this.field.field_type === 'currentTime') {
         return FormOptions.t.DATE_FORMATS['time']
       } else {
-        if (this.fieldOptions['datefmt_type'] && this.fieldOptions['datefmt_type'] !== 'custom') {
-          return FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['date']
+        if (
+          this.fieldOptions['datefmt_type'] &&
+          this.fieldOptions['datefmt_type'] !== 'custom'
+        ) {
+          return (
+            FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] ||
+            FormOptions.t.DATE_FORMATS['date']
+          )
         } else {
-          return this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date']
+          return (
+            this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date']
+          )
         }
       }
     },
@@ -754,7 +770,10 @@ export default {
      * 下拉占位符
      */
     selectPlaceholder() {
-      return !this.readonly ? (this.fieldOptions['include_blank_value'] || this.fieldOptions['placeholder']) : ''
+      return !this.readonly
+        ? this.fieldOptions['include_blank_value'] ||
+            this.fieldOptions['placeholder']
+        : ''
     },
     /**
      * 最大文件上传
@@ -773,7 +792,10 @@ export default {
      */
     fileQuantity() {
       const fileQuantity = this.fieldOptions.max_file_quantity
-      if (this.$utils.isNotEmpty(fileQuantity) && (fileQuantity !== '-1' || fileQuantity !== -1)) {
+      if (
+        this.$utils.isNotEmpty(fileQuantity) &&
+        (fileQuantity !== '-1' || fileQuantity !== -1)
+      ) {
         return parseInt(fileQuantity, 10)
       }
       return null
@@ -784,12 +806,16 @@ export default {
      */
     fileAccept() {
       const mediaType = this.fieldOptions.media_type
-      if (this.$utils.isEmpty(mediaType)) { return '*' }
+      if (this.$utils.isEmpty(mediaType)) {
+        return '*'
+      }
       return ACCEPT[mediaType] || '*'
     },
     imagesAccept() {
       const accept = this.fieldOptions.accept
-      if (this.$utils.isEmpty(accept)) { return ACCEPT['images'] }
+      if (this.$utils.isEmpty(accept)) {
+        return ACCEPT['images']
+      }
       if (accept === 'custom') {
         return this.fieldOptions.media
       }
@@ -800,12 +826,14 @@ export default {
      */
     fileFormates() {
       const mediaType = this.fieldOptions.media_type
-      if (this.$utils.isEmpty(mediaType)) { return [] }
+      if (this.$utils.isEmpty(mediaType)) {
+        return []
+      }
       let media = FILE_TYPES[mediaType]
       if (this.$utils.isEmpty(media)) {
         media = (this.fieldOptions.media || '').split(',')
       }
-      return media.map((v) => {
+      return media.map(v => {
         return '.' + v
       })
     },
@@ -814,7 +842,9 @@ export default {
      */
     bindId() {
       const bindId = this.fieldOptions['bind_id']
-      if (this.$utils.isEmpty(bindId)) { return '' }
+      if (this.$utils.isEmpty(bindId)) {
+        return ''
+      }
       return this.formData[bindId] || ''
     },
     /**
@@ -833,7 +863,9 @@ export default {
      * 高度
      */
     height() {
-      return this.fieldOptions.height ? parseInt(this.fieldOptions.height, 10) : null
+      return this.fieldOptions.height
+        ? parseInt(this.fieldOptions.height, 10)
+        : null
     },
     /**
      * 地址最顶值
@@ -850,7 +882,12 @@ export default {
     },
     // 是否显示流程图
     showFlowDiagram() {
-      return !!(this.params.defId || this.params.taskId || this.params.instId || this.params.bizKey)
+      return !!(
+        this.params.defId ||
+        this.params.taskId ||
+        this.params.instId ||
+        this.params.bizKey
+      )
     },
     bpmInstHisParams() {
       const filter = this.fieldOptions.filter || {}
@@ -875,15 +912,28 @@ export default {
       return FormUtils.hasLinkDynamicParams(this.fieldOptions)
     },
     dynamicParams() {
-      return FormUtils.getLinkDynamicParams(this.fieldOptions, this.formData, this.code, this.row)
+      return FormUtils.getLinkDynamicParams(
+        this.fieldOptions,
+        this.formData,
+        this.code,
+        this.row
+      )
     },
     models() {
       if (!this.formData) return {}
-      return this.$utils.isNotEmpty(this.row) ? (this.formData[this.code] ? this.formData[this.code][this.row] : this.formData) : this.formData
+      return this.$utils.isNotEmpty(this.row)
+        ? this.formData[this.code]
+          ? this.formData[this.code][this.row]
+          : this.formData
+        : this.formData
     },
     isValueSource() {
-      return ((this.fieldType === 'radio' || this.fieldType === 'checkbox' || this.fieldType === 'select') &&
-       this.fieldOptions['datasource'] === 'valuesource')
+      return (
+        (this.fieldType === 'radio' ||
+          this.fieldType === 'checkbox' ||
+          this.fieldType === 'select') &&
+        this.fieldOptions['datasource'] === 'valuesource'
+      )
     }
   },
   watch: {
@@ -913,11 +963,12 @@ export default {
       this.fieldOptions['options'] = null
       getByKey({
         dataTemplateKey: this.fieldOptions['value_source']
-      }).then(response => {
-        this.dataTemplate = this.$utils.parseData(response.data)
-        this.loadAjaxOptions()
-      }).catch(() => {
       })
+        .then(response => {
+          this.dataTemplate = this.$utils.parseData(response.data)
+          this.loadAjaxOptions()
+        })
+        .catch(() => {})
     }
     if (this.fieldType === 'component' || this.fieldType === 'control') {
       const component = _import(this.fieldOptions.component_url)
@@ -946,7 +997,10 @@ export default {
         return
       }
       const template = this.dataTemplate.templates[0]
-      queryDataTable(this.getValuesourceParams(template, this.dataTemplate), false).then(resp => {
+      queryDataTable(
+        this.getValuesourceParams(template, this.dataTemplate),
+        false
+      ).then(resp => {
         const data = resp.data || {}
         const dataResult = data.dataResult || []
         const options = dataResult.map(item => {
@@ -964,7 +1018,10 @@ export default {
         return fecha.format(value, this.dateFormat)
       } else {
         try {
-          return fecha.format(this.parseFormatDate(value, this.dateFormat), this.dateFormat)
+          return fecha.format(
+            this.parseFormatDate(value, this.dateFormat),
+            this.dateFormat
+          )
         } catch (error) {
           return value
         }
@@ -976,7 +1033,13 @@ export default {
     parseFormatDate(time, cFormat) {
       let d = fecha.parse(time, cFormat || 'yyyy-MM-dd')
       if (d) return d
-      const dateFormat = ['yyyy-MM-dd HH:mm:ss', 'yyyy-MM-dd', 'yyyy-MM', 'HH:mm:ss', 'HH:mm']
+      const dateFormat = [
+        'yyyy-MM-dd HH:mm:ss',
+        'yyyy-MM-dd',
+        'yyyy-MM',
+        'HH:mm:ss',
+        'HH:mm'
+      ]
       for (let i = 0; i < dateFormat.length; i++) {
         d = fecha.parse(time, dateFormat[i])
         if (d) return d
@@ -995,9 +1058,11 @@ export default {
       if (type === 'role') {
         bind = 'roleAlias'
       }
-      if (this.$utils.isEmpty(linkLinkage) || this.$utils.isEmpty(data)) { return }
+      if (this.$utils.isEmpty(linkLinkage) || this.$utils.isEmpty(data)) {
+        return
+      }
       const field = linkLinkage
-      const fieldObj = field ? field.split('.') : []// 改变的字段
+      const fieldObj = field ? field.split('.') : [] // 改变的字段
       const selectorData = JSON.parse(JSON.stringify(data))
       const targetValues = []
       selectorData.forEach(s => {
@@ -1006,7 +1071,10 @@ export default {
       const targetString = targetValues.join(',')
       if (this.$utils.isNotEmpty(fieldObj)) {
         const fieldName = fieldObj.length > 1 ? fieldObj[1] : fieldObj[0]
-        if (this.$utils.isNotEmpty(fieldName) && this.models.hasOwnProperty(fieldName)) {
+        if (
+          this.$utils.isNotEmpty(fieldName) &&
+          this.models.hasOwnProperty(fieldName)
+        ) {
           this.changeFormData(fieldName, targetString || '')
         }
       }
@@ -1020,15 +1088,20 @@ export default {
       }
       const linkLinkage = this.fieldOptions['link_linkage']
 
-      if (this.$utils.isEmpty(linkLinkage)) { return }
+      if (this.$utils.isEmpty(linkLinkage)) {
+        return
+      }
       const data = selectedData[0]
       for (let i = 0; i < linkLinkage.length; i++) {
         const item = linkLinkage[i]
         const field = item.field
-        const fieldObj = field ? field.split('.') : []// 改变的字段
+        const fieldObj = field ? field.split('.') : [] // 改变的字段
         if (this.$utils.isNotEmpty(fieldObj)) {
           const fieldName = fieldObj.length > 1 ? fieldObj[1] : fieldObj[0]
-          if (this.$utils.isNotEmpty(fieldName) && this.models.hasOwnProperty(fieldName)) {
+          if (
+            this.$utils.isNotEmpty(fieldName) &&
+            this.models.hasOwnProperty(fieldName)
+          ) {
             this.changeFormData(fieldName, data[item.name] || '')
           }
         }
@@ -1042,15 +1115,20 @@ export default {
         return
       }
       const linkAttr = this.fieldOptions['link_attr']
-      if (this.$utils.isEmpty(linkAttr)) { return }
+      if (this.$utils.isEmpty(linkAttr)) {
+        return
+      }
       const data = selectedData[0]
       for (let i = 0; i < linkAttr.length; i++) {
         const item = linkAttr[i]
         const field = item.field
-        const fieldObj = field ? field.split('.') : []// 改变的字段
+        const fieldObj = field ? field.split('.') : [] // 改变的字段
         if (this.$utils.isNotEmpty(fieldObj)) {
           const fieldName = fieldObj.length > 1 ? fieldObj[1] : fieldObj[0]
-          if (this.$utils.isNotEmpty(fieldName) && this.models.hasOwnProperty(fieldName)) {
+          if (
+            this.$utils.isNotEmpty(fieldName) &&
+            this.models.hasOwnProperty(fieldName)
+          ) {
             this.changeFormData(fieldName, data[item.name] || '')
           }
         }
@@ -1076,11 +1154,11 @@ export default {
 }
 </script>
 <style lang="scss" scoped>
-  .field-desc{
-    background: #F3F3F3;
-    font-size: 12px;
-    color: #999999;
-    line-height: 20px;
-    padding:2px 0 10px 15px ;
-  }
+.field-desc {
+  background: #f3f3f3;
+  font-size: 12px;
+  color: #999999;
+  line-height: 20px;
+  padding: 2px 0 10px 15px;
+}
 </style>

+ 3 - 0
src/views/platform/bpmn/complaint/complaint.vue

@@ -41,6 +41,7 @@
           placeholder="请输入投诉单位"
           label-width="6em"
           clearable
+          :type="typeValue == '2' ? 'textarea' : 'text'"
           :readonly="typeValue == '2' ? true : false"
         />
         <van-field
@@ -65,6 +66,8 @@
           placeholder="请输入投诉部门及人员"
           label-width="8em"
           clearable
+          :type="typeValue == '2' ? 'textarea' : 'text'"
+          autosize
           :readonly="typeValue == '2' ? true : false"
         />
         <van-field