فهرست منبع

格式化表单组件代码,修改表单校验样式

cfort 3 سال پیش
والد
کامیت
c54cda4024
1فایلهای تغییر یافته به همراه1233 افزوده شده و 1222 حذف شده
  1. 1233 1222
      src/business/platform/form/formrender/dynamic-form/dynamic-form-field.vue

+ 1233 - 1222
src/business/platform/form/formrender/dynamic-form/dynamic-form-field.vue

@@ -1,1269 +1,1280 @@
 <template>
-  <div style="color: #000000;" class="jbd-dynamic-form-field">
-    <!-- 单行文本、 多行文本、数字-->
-    <template v-if="fieldType==='text'||fieldType==='textarea' ||fieldType==='number'">
-      <template v-if="readonlyText">
-        <div  :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">{{ dataModel||'/'}}  </div>
-      </template>
+    <div style="color: #000000;" class="jbd-dynamic-form-field">
+        <!-- 单行文本、 多行文本、数字-->
+        <template v-if="fieldType === 'text' || fieldType === 'textarea' || fieldType === 'number'">
+            <template v-if="readonlyText">
+                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                    {{ dataModel || '/' }}
+                </div>
+            </template>
 
-     				<el-dropdown v-else-if="fieldType==='text'||fieldType==='textarea'"  :style="{width:width}" size="mini"
-     				   placement="top-start"
-     				   trigger="click"
-     				   @command="handleCommand"
-     				   >
-            <!-- <el-dropdown v-else-if="fieldType==='text'||fieldType==='textarea'"  :style="{width:width}" size="mini"
-     				   @click.native="reqPhrase($store.getters.userInfo.employee.groupID,field)"
-     				   placement="top-start"
-     				   trigger="click"
-     				   @command="handleCommand"
-     				   > -->
-     					  <el-input
-     						v-model="dataModel"
-     						:placeholder="placeholder"
-     						:type="fieldType"
-     						:name="field.name"
-     						:autosize="autosize"
-     						:rows="fieldOptions.rows||3"
-     						:readonly="readonly"
-                 unselectable="on"
-     						:style="{width:width}"
-                clearable
-     						v-on="$listeners"
-     					  />
-
-     					 <!-- <el-button
-               v-if="(!fieldOptions.custom_class || fieldOptions.custom_class>=120) && !dataModel"
-     						@click.stop="addDict($store.getters.userInfo.employee.groupID,field,field.label)"
-     						size="mini"
-     						title='添加短语'
-     						plain
-     						icon="el-icon-folder-add"
-     						align="center"
-     						class="elButtonPlace"
-     						/> -->
-
-     					<el-dropdown-menu slot="dropdown" v-show="menuHide" >
-     						  <el-dropdown-item v-for="(item,index) in selectModel"
-     						  :key="index" :command="item.contextName">
-     						  {{index+1}}. {{item.contextName | ellipsis}}
-
-     						  <span style="float: right;margin-left:50px ;color: #EB6709;"
-     							  @click.stop="deleteDicts(item.uuId,field.label)">删</span>
-     						  </el-dropdown-item>
-     					</el-dropdown-menu>
+            <el-dropdown
+                v-else-if="fieldType === 'text' || fieldType === 'textarea'"
+                :style="{ width: width }"
+                size="mini"
+                placement="top-start"
+                trigger="click"
+                @command="handleCommand"
+            >
+                <!-- <el-dropdown
+                    v-else-if="fieldType==='text'||fieldType==='textarea'"  :style="{width:width}" size="mini"
+                    placement="top-start"
+                    trigger="click"
+                    @click.native="reqPhrase($store.getters.userInfo.employee.groupID,field)"
+                    @command="handleCommand"
+                > -->
+                <el-input
+                    v-model="dataModel"
+                    :placeholder="placeholder"
+                    :type="fieldType"
+                    :name="field.name"
+                    :autosize="autosize"
+                    :rows="fieldOptions.rows || 3"
+                    :readonly="readonly"
+                    unselectable="on"
+                    :style="{ width: width }"
+                    clearable
+                    v-on="$listeners"
+                />
 
-     			</el-dropdown>
+                <!-- <el-button
+                    v-if="(!fieldOptions.custom_class || fieldOptions.custom_class>=120) && !dataModel"
+                    size="mini"
+                    title='添加短语'
+                    plain
+                    icon="el-icon-folder-add"
+                    align="center"
+                    class="elButtonPlace"
+                    @click.stop="addDict($store.getters.userInfo.employee.groupID,field,field.label)"
+                /> -->
 
-     	  <el-input
-     	    v-else
-     	    v-model="dataModel"
-     	    :placeholder="placeholder"
-     	    :type="fieldType"
-     	    :name="field.name"
-     	    :autosize="autosize"
-     	    :rows="fieldOptions.rows||2"
-     	    :readonly="readonly"
-     	    clearable
-     	    v-on="$listeners"
-     	  />
-
-     	  </template>
+                <el-dropdown-menu slot="dropdown" v-show="menuHide">
+                    <el-dropdown-item
+                        v-for="(item, index) in selectModel"
+                        :key="index"
+                        :command="item.contextName"
+                    >
+                        {{ index + 1 }}. {{ item.contextName | ellipsis }}
+                        <span style="float: right; margin-left: 50px; color: #eb6709;" @click.stop="deleteDicts(item.uuId, field.label)">删</span>
+                    </el-dropdown-item>
+                </el-dropdown-menu>
+            </el-dropdown>
 
+            <el-input
+                v-else
+                v-model="dataModel"
+                :placeholder="placeholder"
+                :type="fieldType"
+                :name="field.name"
+                :autosize="autosize"
+                :rows="fieldOptions.rows || 2"
+                :readonly="readonly"
+                clearable
+                v-on="$listeners"
+            />
+        </template>
 
+        <!-- 计数器 -->
+        <template v-else-if="fieldType === 'inputNumber'">
+            <template v-if="readonlyText">
+                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                    {{ dataModel || '/' }}
+                </div>
+            </template>
+            <el-input-number
+                v-else
+                v-model="numberDataModel"
+                :max="fieldOptions.max"
+                :min="fieldOptions.min"
+                :step="fieldOptions.step"
+                :controls="fieldOptions.controls"
+                :controls-position="fieldOptions.controls_position"
+                :placeholder="fieldOptions.placeholder"
+                :readonly="readonly"
+                unselectable="on"
+                :style="{ width: width }"
+                v-on="$listeners"
+            />
+        </template>
+        <!-- 单项选择 -->
+        <template v-else-if="fieldType === 'radio'">
+            <template v-if="readonlyText">
+                <div
+                    v-if="$utils.isNotEmpty(dataModel)"
+                    :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                    {{ dataModel | optionsFilter(dataOptions, 'label', 'val') }}
+                </div>
+                <div v-else :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+            </template>
+            <el-radio-group
+                v-else
+                v-model="dataModel"
+                :disabled="readonly"
+                v-on="$listeners"
+            >
+                <component
+                    :is="fieldOptions.button ? 'el-radio-button' : 'el-radio'"
+                    v-for="o in dataOptions"
+                    :key="o.val"
+                    :label="o.val"
+                    :border="fieldOptions.border"
+                    :style="{ display: fieldOptions.arrangement === 'vertical' ? 'block' : null }"
+                    class="ibps-pt-5"
+                >
+                    {{ o.label }}
+                </component>
+            </el-radio-group>
+        </template>
 
-    <!-- 计数器 -->
-    <template v-else-if="fieldType === 'inputNumber'">
-      <template v-if="readonlyText">
-        <div :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">{{ dataModel||'/'}}</div>
-      </template>
-      <el-input-number
-        v-else
-        v-model="numberDataModel"
-        :max="fieldOptions.max"
-        :min="fieldOptions.min"
-        :step="fieldOptions.step"
-        :controls="fieldOptions.controls"
-        :controls-position="fieldOptions.controls_position"
-        :placeholder="fieldOptions.placeholder"
-        :readonly="readonly"
-        unselectable="on"
-        :style="{width:width}"
-        v-on="$listeners"
-      />
-    </template>
-    <!-- 单项选择 -->
-    <template v-else-if="fieldType==='radio'">
-      <template v-if="readonlyText">
-        <div v-if="$utils.isNotEmpty(dataModel)" :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">
-          {{ dataModel|optionsFilter(dataOptions,'label','val') }}
-        </div>
-        <div v-else :class="isTable ? '' :'ibps-field-text-no'">/</div>
-      </template>
-      <el-radio-group
-        v-else
-        v-model="dataModel"
-        :disabled="readonly"
-        v-on="$listeners"
-      >
-        <component
-          :is="fieldOptions.button?'el-radio-button':'el-radio'"
-          v-for="o in dataOptions"
-          :key="o.val"
-          :label="o.val"
-          :border="fieldOptions.border"
-          :style="{
-            display: fieldOptions.arrangement==='vertical' ? 'block' : null}"
-          class="ibps-pt-5"
-        >
-          {{ o.label }}
-        </component>
-      </el-radio-group>
-    </template>
+        <!-- 多选项选择 -->
+        <div v-else-if="fieldType === 'checkbox' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <template v-else-if="fieldType === 'checkbox'">
+            <template v-if="readonlyText">
+                <template v-if="checkboxDataModel && checkboxDataModel.length > 0">
+                    <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''">
+                        <span
+                            v-for="(v, i) in checkboxDataModel"
+                            :key="i"
+                            class="ibps-mr-5"
+                        >
+                            {{ v | optionsFilter(dataOptions, 'label', 'val') }}
+                        </span>
+                    </div>
+                </template>
+            </template>
+            <el-checkbox-group
+                v-else
+                v-model="checkboxDataModel"
+                v-on="$listeners"
+            >
+                <component
+                    :is="fieldOptions.button ? 'el-checkbox-button' : 'el-checkbox'"
+                    v-for="o in dataOptions"
+                    :key="o.val"
+                    :label="o.val"
+                    :border="fieldOptions.border"
+                    :style="{display: fieldOptions.arrangement === 'vertical' ? 'block' : null}">
+                    {{ o.label }}
+                </component>
+            </el-checkbox-group>
+        </template>
 
+        <!-- <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
+        <ibps-custom-dialog v-else-if="fieldType === 'customDialog'" :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''" -->
 
-    <!-- 多选项选择 -->
-    <div v-else-if="fieldType === 'checkbox' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <template v-else-if="fieldType==='checkbox'">
-      <template v-if="readonlyText">
-        <template v-if="checkboxDataModel && checkboxDataModel.length >0">
-        <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''" >
-          <span v-for="(v,i) in checkboxDataModel" :key="i" class="ibps-mr-5">
-            {{ v|optionsFilter(dataOptions,'label','val') }}
-          </span>
-         </div>
+        <!-- 下拉框 -->
+        <div v-else-if="fieldType === 'select' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <template v-else-if="fieldType === 'select'">
+            <template v-if="readonlyText">
+                <template v-if="multipleSelect">
+                    <template v-if="selectDataModel && selectDataModel.length > 0">
+                        <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''">
+                            <span
+                                v-for="(v, i) in selectDataModel"
+                                :key="i"
+                                class="ibps-mr-5"
+                            >
+                                {{ v | optionsFilter(dataOptions, 'label', 'val') }}
+                            </span>
+                        </div>
+                    </template>
+                </template>
+                <template v-else>
+                    <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''">
+                        <span v-if="$utils.isNotEmpty(dataModel)" class="ibps-mr-5">
+                            {{ dataModel | optionsFilter(dataOptions, 'label', 'val') }}
+                        </span>
+                    </div>
+                </template>
+            </template>
+            <el-select
+                v-else
+                v-model="selectDataModel"
+                :placeholder="dropdownPlaceholder"
+                :name="field.name"
+                :disabled="readonly"
+                :style="{ width: width }"
+                :multiple="multipleSelect"
+                :clearable="clearable"
+                v-on="$listeners"
+            >
+                <el-option
+                    v-for="o in dataOptions"
+                    :key="o.val"
+                    :label="o.label"
+                    :value="o.val"
+                />
+            </el-select>
+        </template>
+        <!-- 开关 -->
+        <template v-else-if="fieldType === 'switch'">
+            <template v-if="readonlyText">
+                <el-tag v-if="$utils.isNotEmpty(dataModel)" :class=" isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                    {{ dataModel | optionsFilter(switchOptions, 'label', 'val') }}
+                </el-tag>
+            </template>
+            <template v-else>
+                <el-checkbox
+                    v-if="fieldOptions.appearance === 'checkbox'"
+                    v-model="dataModel"
+                    :disabled="readonly"
+                    v-on="$listeners"
+                />
+                <el-switch
+                    v-else
+                    v-model="dataModel"
+                    :width="switchWidth"
+                    :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"
+                    :disabled="readonly"
+                    v-on="$listeners"
+                />
+            </template>
         </template>
-      </template>
-      <el-checkbox-group
-        v-else
-        v-model="checkboxDataModel"
-        v-on="$listeners"
-      >
-        <component
-          :is="fieldOptions.button?'el-checkbox-button':'el-checkbox'"
-          v-for="o in dataOptions"
-          :key="o.val"
-          :label="o.val"
-          :border="fieldOptions.border"
-          :style="{display: fieldOptions.arrangement==='vertical' ? 'block' : null}"
-        > {{ o.label }}
-        </component>
-      </el-checkbox-group>
-    </template>
 
-    <!-- <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-custom-dialog
-      v-else-if="fieldType === 'customDialog'"
-      :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''" -->
+        <!-- 滑块 -->
+        <template v-else-if="fieldType === 'slider'">
+            <template v-if="readonlyText">
+                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                    {{ dataModel || '/' }}
+                </div>
+            </template>
+            <div v-else style="width: 99%;">
+                <el-slider
+                    v-model="numberDataModel"
+                    :show-input="fieldOptions.show_input"
+                    :show-tooltip="fieldOptions.show_tooltip"
+                    :max="fieldOptions.max"
+                    :min="fieldOptions.min"
+                    :step="fieldOptions.step"
+                    :disabled="readonly"
+                    :style="{ width: width }"
+                    v-on="$listeners"
+                />
+            </div>
+        </template>
+        <!-- 评分 -->
+        <template v-else-if="fieldType === 'rate'">
+            <template v-if="readonlyText">
+                <div :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                    {{ dataModel || '/' }}
+                </div>
+            </template>
+            <el-rate
+                v-else
+                v-model="numberDataModel"
+                :max="fieldOptions.max"
+                :allow-half="fieldOptions.allow_half"
+                :show-text="fieldOptions.show_text"
+                :show-score="fieldOptions.show_score"
+                :disabled="readonly"
+                class="ibps-pt-10"
+                v-on="$listeners"
+            />
+        </template>
+        <!-- <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
+        <ibps-custom-dialog v-else-if="fieldType === 'customDialog'" :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"></ibps-custom-dialog> -->
 
+        <!-- 日期控件 -->
+        <template
+            v-else-if="fieldType === 'datePicker' || fieldType === 'currentTime' || fieldType === 'currentDate'">
+            <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                {{ dataModel | dateFormat(datefmt, datefmt) || '/' }}
+            </div>
+            <template v-else>
+                <el-date-picker
+                    v-if="datePckerType === 'datePicker'"
+                    v-model="dataModel"
+                    :type="dateType"
+                    :value-format="datefmt"
+                    :format="datefmt"
+                    :placeholder="selectPlaceholder"
+                    @change="selectTime"
+                    :style="{ width: width }"
+                    :readonly="fieldType === 'currentTime' || fieldType === 'currentDate' ? true : readonly"
+                    :clearable="clearable"
+                    unselectable="on"
+                    v-on="$listeners"
+                />
+                <el-time-picker
+                    v-else-if="datePckerType === 'timePicker'"
+                    v-model="dataModel"
+                    :value-format="datefmt"
+                    :format="datefmt"
+                    :placeholder="selectPlaceholder"
+                    :style="{ width: width }"
+                    :readonly="fieldType === 'currentTime' || fieldType === 'currentDate' ? true : readonly"
+                    :clearable="clearable"
+                    unselectable="on"
+                    v-on="$listeners"
+                />
+                <!--TODO:时间控件自定义格式-->
+            </template>
+        </template>
 
-    <!-- 下拉框 -->
-     <div v-else-if="fieldType === 'select' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <template v-else-if="fieldType==='select'">
-      <template v-if="readonlyText">
-        <template v-if="multipleSelect">
-          <template v-if="selectDataModel && selectDataModel.length >0">
-              <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''">
-                <span v-for="(v,i) in selectDataModel" :key="i" class="ibps-mr-5">
-                  {{ v|optionsFilter(dataOptions,'label','val') }}
-                </span>
-              </div>
-          </template>
+        <!-- =======================增强字段==============================-->
+        <!--富文本框-->
+        <template v-else-if="fieldType === 'editor'">
+            <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'" v-html="$utils.formatText(dataModel)"/>
+            <ibps-ueditor
+                v-else
+                v-model="dataModel"
+                :placeholder="placeholder"
+                :readonly="readonly"
+                :config="ueditorConfig"
+                destroy
+                v-on="$listeners"
+            />
         </template>
-        <template v-else>
-           <div :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''">
-            <span v-if="$utils.isNotEmpty(dataModel)" class="ibps-mr-5">
-              {{ dataModel|optionsFilter(dataOptions,'label','val') }}
-            </span>
-          </div>
+        <!--数据字典-->
+        <ibps-dictionary
+            v-else-if="fieldType === 'dictionary'"
+            v-model="dataModel"
+            :type-key="fieldOptions.dictionary"
+            :multiple="multiple"
+            :select-mode="fieldOptions.select_mode"
+            :display-mode="fieldOptions.display_mode"
+            :separator="fieldOptions.split"
+            :placeholder="fieldOptions.placeholder"
+            :disabled="readonly"
+            :readonly="readonly"
+            :readonly-text="readonlyText ? 'text' : 'original'"
+            :clearable="clearable"
+            :style="{ width: width }"
+            v-on="$listeners"
+        />
+        <!-- 自动编号-->
+        <template v-else-if="fieldType === 'autoNumber'">
+            <ibps-auto-number
+                v-if="!readonlyText"
+                v-model="dataModel"
+                :alias="fieldOptions.identity"
+                :init="fieldOptions.init === 'true' || fieldOptions.init"
+                :placeholder="placeholder"
+                :readonly="readonly"
+                :readonly-text="readonlyText"
+                v-on="$listeners"
+            />
+            <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                {{ dataModel || '/' }}
+            </div>
         </template>
-      </template>
-      <el-select
-        v-else
-        v-model="selectDataModel"
-        :placeholder="dropdownPlaceholder"
-        :name="field.name"
-        :disabled="readonly"
-        :style="{width:width}"
-        :multiple="multipleSelect"
-        :clearable="clearable"
 
-        v-on="$listeners"
-      >
-        <el-option
-          v-for="o in dataOptions"
-          :key="o.val"
-          :label="o.label"
-          :value="o.val"
+        <!-- 上传附件-->
+        <div v-else-if="fieldType === 'attachment' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <ibps-attachment
+            v-else-if="fieldType === 'attachment'"
+            v-model="dataModel"
+            :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''"
+            :placeholder="selectPlaceholder"
+            :download="fieldOptions.download"
+            :readonly="readonly"
+            :limit="fileQuantity"
+            :file-size="maxFileSize"
+            :accept="fileAccept"
+            :file-ext="fileFormates"
+            :multiple="multiple"
+            :operation_status="operation_status"
+            :upload-type="fieldOptions.uploadType"
+            :store="fieldOptions.store"
+            :media-type="fieldOptions.media_type"
+            :media="fieldOptions.media"
+            :style="{ width: width }"
+            v-on="$listeners"
         />
-      </el-select>
-    </template>
-    <!-- 开关 -->
-    <template v-else-if="fieldType==='switch'">
-      <template v-if="readonlyText">
-        <el-tag v-if="$utils.isNotEmpty(dataModel)" :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">
-          {{ dataModel|optionsFilter(switchOptions,'label','val') }}
-        </el-tag>
-      </template>
-      <template v-else>
-        <el-checkbox
-          v-if="fieldOptions.appearance==='checkbox'"
-          v-model="dataModel"
-          :disabled="readonly"
-          v-on="$listeners"
+        <!-- 选择器-->
+        <div v-else-if="(fieldType === 'selector' || fieldType === 'currentUser' || fieldType === 'currentOrg') && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <ibps-user-selector
+            v-else-if="fieldType === 'selector' || fieldType === 'currentUser' || fieldType === 'currentOrg'"
+            :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''"
+            v-model="dataModel"
+            :placeholder="selectPlaceholder"
+            :type="fieldOptions.selector_type"
+            :filter="fieldOptions.filter"
+            :multiple="multiple"
+            :store="fieldOptions.store || 'id'"
+            :disabled="fieldType === 'currentUser' || fieldType === 'currentOrg' ? true : readonly"
+            :readonly-text="readonlyText ? 'text' : null"
+            :style="{ width: width }"
+            @change-link-data="handleSeletorLinkageData"
+            v-on="$listeners"
         />
-        <el-switch
-          v-else
-          v-model="dataModel"
-          :width="switchWidth"
-          :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"
-          :disabled="readonly"
-          v-on="$listeners"
+        <!--自定义对话框-->
+        <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <ibps-custom-dialog
+            v-else-if="fieldType === 'customDialog'"
+            :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''"
+            v-model="dataModel"
+            :template-key="fieldOptions.dialog"
+            :dynamic-params="dynamicParams"
+            :has-dynamic-params="hasDynamicParams"
+            :multiple="multipleString"
+            :placeholder="selectPlaceholder"
+            :store="fieldOptions.store"
+            :icon="fieldOptions.icon ? 'ibps-icon-' + fieldOptions.icon : ''"
+            :type="fieldOptions.dialog_type"
+            :disabled="readonly"
+            :readonly-text="readonlyText ? 'text' : null"
+            :style="{ width: width }"
+            @change-link-data="handleLinkageData"
+            @change-link-attr="handleLinkageAttr"
+            v-on="$listeners"
         />
-      </template>
-    </template>
-
-    <!-- 滑块 -->
-    <template v-else-if="fieldType==='slider'">
-      <template v-if="readonlyText ">
-        <div :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">{{ dataModel||'/'}}</div>
-      </template>
-      <div v-else style="width:99%;">
-        <el-slider
-          v-model="numberDataModel"
-          :show-input="fieldOptions.show_input"
-          :show-tooltip="fieldOptions.show_tooltip"
-          :max="fieldOptions.max"
-          :min="fieldOptions.min"
-          :step="fieldOptions.step"
-          :disabled="readonly"
-          :style="{width:width}"
-
-          v-on="$listeners"
+        <!-- 关联数据-->
+        <div v-else-if="fieldType === 'linkdata' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <ibps-link-data
+            v-else-if="fieldType === 'linkdata'"
+            :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''"
+            v-model="dataModel"
+            :template-key="fieldOptions.linkdata"
+            :dynamic-params="dynamicParams"
+            :has-dynamic-params="hasDynamicParams"
+            :placeholder="selectPlaceholder"
+            :multiple="multipleString"
+            :structure="structure"
+            :value-key="valueKey"
+            :label-type="labelType"
+            :label-key="labelKey"
+            :config="linkConfig"
+            :disabled="readonly"
+            :readonly="readonly"
+            :readonly-text="readonlyText ? 'text' : 'original'"
+            :style="{ width: width }"
+            @change-link-data="handleLinkageData"
+            @change-link-attr="handleLinkageAttr"
+            v-on="$listeners"
         />
-      </div>
-    </template>
-    <!-- 评分 -->
-    <template v-else-if="fieldType==='rate'">
-      <template v-if="readonlyText ">
-        <div :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">{{ dataModel||'/'}}</div>
-      </template>
-      <el-rate
-        v-else
-        v-model="numberDataModel"
-        :max="fieldOptions.max"
-        :allow-half="fieldOptions.allow_half"
-        :show-text="fieldOptions.show_text"
-        :show-score="fieldOptions.show_score"
-        :disabled="readonly"
-        class="ibps-pt-10"
-        v-on="$listeners"
-      />
-    </template>
-    <!-- <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-custom-dialog
-      v-else-if="fieldType === 'customDialog'"
-      :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''" -->
 
-
-
-    <!-- 日期控件 -->
-    <template v-else-if="fieldType==='datePicker'||fieldType==='currentTime'||fieldType==='currentDate'">
-      <div v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">
-        {{ dataModel|dateFormat(datefmt,datefmt)|| '/' }}
-      </div>
-      <template v-else>
-        <el-date-picker
-          v-if="datePckerType ==='datePicker'"
-          v-model="dataModel"
-          :type="dateType"
-          :value-format="datefmt"
-          :format="datefmt"
-          :placeholder="selectPlaceholder"
-          @change="selectTime"
-          :style="{width:width}"
-          :readonly="fieldType==='currentTime'||fieldType==='currentDate'?true:readonly"
-          :clearable="clearable"
-          unselectable="on"
-          v-on="$listeners"
+        <!-- 地址-->
+        <div v-else-if="fieldType === 'address'">
+            <ibps-address
+                v-model="addressValue"
+                :size="fieldOptions.size"
+                :top="fieldOptions.top || 'country'"
+                :top-val="addressTopVal"
+                :level="fieldOptions.level || 'district'"
+                :disabled="readonly"
+                :readonly-text="readonlyText ? 'text' : null"
+                :placeholder="selectPlaceholder"
+                data-type="code"
+                :style="{ width: width }"
+                v-on="$listeners"
+            />
+            <div v-if="fieldOptions.is_street && readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+                {{ streetValue || '/' }}
+            </div>
+            <template v-else>
+                <p></p>
+                <el-input
+                    v-if="fieldOptions.is_street"
+                    v-model="streetValue"
+                    :disabled="readonly"
+                    :style="{ width: width }"
+                    :placeholder="fieldOptions.street_placeholder"
+                    type="textarea"
+                />
+            </template>
+        </div>
+        <!-- 签名-->
+        <div v-else-if="fieldType === 'signature' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <ibps-signature
+            v-else-if="fieldType === 'signature'"
+            :class="isTable ? '' : readonlyText ? 'ibps-field-text' : ''"
+            v-model="dataModel"
+            :placeholder="placeholder"
+            :height="fieldOptions.height"
+            :disabled="readonly"
+            :style="{ width: width }"
+            v-on="$listeners"
         />
-        <el-time-picker
-          v-else-if="datePckerType ==='timePicker'"
-          v-model="dataModel"
-          :value-format="datefmt"
-          :format="datefmt"
-          :placeholder="selectPlaceholder"
-          :style="{width:width}"
-          :readonly="fieldType==='currentTime'||fieldType==='currentDate'?true:readonly"
-          :clearable="clearable"
-          unselectable="on"
-          v-on="$listeners"
+        <!-- 图片-->
+        <div v-else-if="fieldType === 'image' && readonlyText && !dataModel" :class="isTable ? '' : 'ibps-field-text-no'">/</div>
+        <ibps-image
+            v-else-if="fieldType === 'image'"
+            :class="isTable ? '' : readonlyText ? 'ibps-field-text-img' : ''"
+            v-model="dataModel"
+            :width="fieldOptions.width"
+            :height="fieldOptions.height"
+            :limit="fieldOptions.limit"
+            :accept="imagesAccept"
+            :media="fieldOptions.media"
+            :tip="fieldOptions.tip"
+            :size="fieldOptions.size"
+            :upload-type="fieldOptions.uploadType"
+            :disabled="readonly"
+            v-on="$listeners"
         />
-        <!--TODO:时间控件自定义格式-->
-      </template>
-    </template>
-
-    <!-- =======================增强字段==============================-->
-    <!--富文本框-->
-    <template v-else-if="fieldType==='editor'">
-      <div
-        v-if="readonlyText"
-       :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'"
-        v-html="$utils.formatText(dataModel)"
-      />
-      <ibps-ueditor
-        v-else
-        v-model="dataModel"
-        :placeholder="placeholder"
-        :readonly="readonly"
-        :config="ueditorConfig"
-        destroy
-        v-on="$listeners"
-      />
-    </template>
-    <!--数据字典-->
-    <ibps-dictionary
-      v-else-if="fieldType==='dictionary'"
-      v-model="dataModel"
-      :type-key="fieldOptions.dictionary"
-      :multiple="multiple"
-      :select-mode="fieldOptions.select_mode"
-      :display-mode="fieldOptions.display_mode"
-      :separator="fieldOptions.split"
-      :placeholder="fieldOptions.placeholder"
-      :disabled="readonly"
-      :readonly="readonly"
-      :readonly-text="readonlyText?'text':'original'"
-      :clearable="clearable"
-      :style="{width:width}"
-      v-on="$listeners"
-    />
-    <!-- 自动编号-->
-    <template v-else-if="fieldType==='autoNumber'">
-      <ibps-auto-number
-        v-if="!readonlyText"
-        v-model="dataModel"
-        :alias="fieldOptions.identity"
-        :init="fieldOptions.init==='true'||fieldOptions.init"
-        :placeholder="placeholder"
-        :readonly="readonly"
-        :readonly-text="readonlyText"
-        v-on="$listeners"
-      />
-        <div  v-if="readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">{{ dataModel||'/'}}</div>
-    </template>
-
-    <!-- 上传附件-->
-    <div v-else-if="fieldType === 'attachment' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-attachment
-      v-else-if="fieldType==='attachment'"
-      v-model="dataModel"
-       :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"
-      :placeholder="selectPlaceholder"
-      :download="fieldOptions.download"
-      :readonly="readonly"
-      :limit="fileQuantity"
-      :file-size="maxFileSize"
-      :accept="fileAccept"
-      :file-ext="fileFormates"
-      :multiple="multiple"
-      :operation_status ="operation_status"
-      :upload-type="fieldOptions.uploadType"
-      :store="fieldOptions.store"
-      :media-type="fieldOptions.media_type"
-      :media="fieldOptions.media"
-      :style="{width:width}"
-      v-on="$listeners"
-    />
-    <!-- 选择器-->
-     <div v-else-if="(fieldType==='selector' || fieldType==='currentUser' || fieldType==='currentOrg') && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-user-selector
-      v-else-if="fieldType==='selector' || fieldType==='currentUser' || fieldType==='currentOrg' "
-      :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"
-      v-model="dataModel"
-      :placeholder="selectPlaceholder"
-      :type="fieldOptions.selector_type"
-      :filter="fieldOptions.filter"
-      :multiple="multiple"
-      :store="fieldOptions.store||'id'"
-      :disabled="(fieldType==='currentUser' || fieldType==='currentOrg')?true:readonly"
-      :readonly-text="readonlyText?'text':null"
-      :style="{width:width}"
-      @change-link-data="handleSeletorLinkageData"
-      v-on="$listeners"
-    />
-    <!--自定义对话框-->
-     <div v-else-if="fieldType === 'customDialog' && readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-custom-dialog
-      v-else-if="fieldType === 'customDialog'"
-      :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"
-      v-model="dataModel"
-      :template-key="fieldOptions.dialog"
-      :dynamic-params="dynamicParams"
-      :has-dynamic-params="hasDynamicParams"
-      :multiple="multipleString"
-      :placeholder="selectPlaceholder"
-      :store="fieldOptions.store"
-      :icon="fieldOptions.icon?'ibps-icon-'+fieldOptions.icon:''"
-      :type="fieldOptions.dialog_type"
-      :disabled="readonly"
-      :readonly-text="readonlyText?'text':null"
-      :style="{width:width}"
-      @change-link-data="handleLinkageData"
-      @change-link-attr="handleLinkageAttr"
-      v-on="$listeners"
-    />
-    <!-- 关联数据-->
-    <div v-else-if="fieldType==='linkdata'&& readonlyText && !dataModel"  :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-link-data
-      v-else-if="fieldType==='linkdata'"
-      :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"
-      v-model="dataModel"
-      :template-key="fieldOptions.linkdata"
-      :dynamic-params="dynamicParams"
-      :has-dynamic-params="hasDynamicParams"
-      :placeholder="selectPlaceholder"
-      :multiple="multipleString"
-      :structure="structure"
-      :value-key="valueKey"
-      :label-type="labelType"
-      :label-key="labelKey"
-      :config="linkConfig"
-      :disabled="readonly"
-      :readonly="readonly"
-      :readonly-text="readonlyText?'text':'original'"
-      :style="{width:width}"
-      @change-link-data="handleLinkageData"
-      @change-link-attr="handleLinkageAttr"
-      v-on="$listeners"
-    />
+        <!-- 流程实例 -->
+        <ibps-bpm-inst-his
+            v-else-if="fieldType === 'bpmInstHis'"
+            v-model="jsonArrayDataModel"
+            :bpm-def-scope="fieldOptions.filter.bpmDefScope"
+            :bpm-def-key="fieldOptions.filter.bpmDefKey"
+            :script="fieldOptions.filter.script"
+            :starter-scope="fieldOptions.filter.starterScope"
+            :starter="fieldOptions.filter.starter"
+            :placeholder="selectPlaceholder"
+            :readonly="readonly"
+            v-on="$listeners"
+        />
+        <!-- =======================自定义控件==============================-->
+        <!-- 自定义组件 -->
+        <template v-else-if="fieldType === 'component'">
+            <component
+                :is="fieldOptions.component_name"
+                v-model="dataModel"
+                :field="field"
+                :form-data="formData"
+                :readonly="readonly"
+                :readonly-style="readonlyStyle"
+                :code="code"
+                :row="row"
+                :params="params"
+                @change-data="changeFormData"
+                v-on="$listeners"
+            />
+        </template>
+        <!-- 自定义控件 -->
+        <template v-else-if="fieldType === 'control'">
+            <component
+                :is="fieldOptions.component_name"
+                v-model="dataModel"
+                :field="field"
+                :form-data="formData"
+                :readonly="readonly"
+                :readonly-style="readonlyStyle"
+                :code="code"
+                :row="row"
+                :params="params"
+                @change-data="changeFormData"
+                v-on="$listeners"
+            />
+        </template>
 
-    <!-- 地址-->
-    <div
-      v-else-if="fieldType==='address'"
-    >
-      <ibps-address
-        v-model="addressValue"
-        :size="fieldOptions.size"
-        :top="fieldOptions.top || 'country'"
-        :top-val="addressTopVal"
-        :level="fieldOptions.level||'district'"
-        :disabled="readonly"
-        :readonly-text="readonlyText?'text':null"
-        :placeholder="selectPlaceholder"
-        data-type="code"
-        :style="{width:width}"
-        v-on="$listeners"
-      />
-      <div v-if="fieldOptions.is_street && readonlyText" :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">
-        {{ streetValue || '/' }}
-      </div>
-      <template v-else>
-        <p />
-        <el-input
-          v-if="fieldOptions.is_street"
-          v-model="streetValue"
-          :disabled="readonly"
-          :style="{width:width}"
-          :placeholder="fieldOptions.street_placeholder"
-          type="textarea"
+        <!-- 链接 -->
+        <ibps-link
+            v-else-if="fieldType === 'hyperlink'"
+            :text="fieldOptions.text"
+            :link="fieldOptions.link"
+            :show-type="fieldOptions.showType"
+            :text-type="fieldOptions.textType"
+            :link-type="fieldOptions.linkType"
+            :text-javascript="fieldOptions.text_javascript"
+            :type="fieldOptions.type"
+            :form-data="dynamicForm"
+            preview-entrance
+            :icon="fieldOptions.icon ? 'ibps-icon-' + fieldOptions.icon : ''"
+            v-on="$listeners"
         />
-      </template>
+        <Dictionaryitem
+            v-if="dict_add"
+            @proceedCont="proceedCont()"
+            ref="dict_add"
+        >
+        </Dictionaryitem>
+        <!-- =======================其它字段==============================-->
+        <!-- 文本-->
+        <span v-else-if="fieldType === 'label'" :class=" isTable ? '' : dataModel ? 'ibps-field-text' : 'ibps-field-text-no'">
+            <template v-if="value">{{ value || '/' }}</template>
+            <template v-else>{{ placeholder || '/' }}</template>
+        </span>
     </div>
-    <!-- 签名-->
-     <div v-else-if="fieldType==='signature' && readonlyText && !dataModel" :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-signature
-      v-else-if="fieldType==='signature'"
-       :class="isTable ? '' : readonlyText ? 'ibps-field-text' :''"
-      v-model="dataModel"
-      :placeholder="placeholder"
-      :height="fieldOptions.height"
-      :disabled="readonly"
-      :style="{width:width}"
-      v-on="$listeners"
-    />
-    <!-- 图片-->
-     <div v-else-if="fieldType==='image' && readonlyText && !dataModel" :class="isTable ? '' :'ibps-field-text-no'">/</div>
-    <ibps-image
-      v-else-if="fieldType==='image'"
-      :class="isTable ? '' : readonlyText ? 'ibps-field-text-img' :''"
-      v-model="dataModel"
-      :width="fieldOptions.width"
-      :height="fieldOptions.height"
-      :limit="fieldOptions.limit"
-      :accept="imagesAccept"
-      :media="fieldOptions.media"
-      :tip="fieldOptions.tip"
-      :size="fieldOptions.size"
-      :upload-type="fieldOptions.uploadType"
-      :disabled="readonly"
-      v-on="$listeners"
-    />
-    <!-- 流程实例 -->
-    <ibps-bpm-inst-his
-      v-else-if="fieldType==='bpmInstHis'"
-      v-model="jsonArrayDataModel"
-      :bpm-def-scope="fieldOptions.filter.bpmDefScope"
-      :bpm-def-key="fieldOptions.filter.bpmDefKey"
-      :script="fieldOptions.filter.script"
-      :starter-scope="fieldOptions.filter.starterScope"
-      :starter="fieldOptions.filter.starter"
-      :placeholder="selectPlaceholder"
-      :readonly="readonly"
-      v-on="$listeners"
-    />
-    <!-- =======================自定义控件==============================-->
-    <!-- 自定义组件 -->
-    <template v-else-if="fieldType==='component'">
-      <component
-        :is="fieldOptions.component_name"
-        v-model="dataModel"
-        :field="field"
-        :form-data="formData"
-        :readonly="readonly"
-        :readonly-style="readonlyStyle"
-        :code="code"
-        :row="row"
-        :params="params"
-        @change-data="changeFormData"
-        v-on="$listeners"
-      />
-    </template>
-    <!-- 自定义控件 -->
-    <template v-else-if="fieldType==='control'">
-      <component
-        :is="fieldOptions.component_name"
-        v-model="dataModel"
-        :field="field"
-        :form-data="formData"
-        :readonly="readonly"
-        :readonly-style="readonlyStyle"
-        :code="code"
-        :row="row"
-        :params="params"
-        @change-data="changeFormData"
-        v-on="$listeners"
-      />
-    </template>
-
-    <!-- 链接 -->
-    <ibps-link
-      v-else-if="fieldType === 'hyperlink'"
-      :text="fieldOptions.text"
-      :link="fieldOptions.link"
-      :show-type="fieldOptions.showType"
-      :text-type="fieldOptions.textType"
-      :link-type="fieldOptions.linkType"
-      :text-javascript="fieldOptions.text_javascript"
-      :type="fieldOptions.type"
-      :form-data="dynamicForm"
-      preview-entrance
-      :icon="fieldOptions.icon?'ibps-icon-'+fieldOptions.icon:''"
-      v-on="$listeners"
-    />
-    <Dictionaryitem v-if="dict_add" @proceedCont="proceedCont()"  ref='dict_add'> </Dictionaryitem>
-    <!-- =======================其它字段==============================-->
-    <!-- 文本-->
-    <span v-else-if="fieldType==='label'" :class="isTable ? '' : dataModel ? 'ibps-field-text' :'ibps-field-text-no'">
-      <template v-if="value">
-        {{ value ||'/'}}
-      </template>
-      <template v-else>
-        {{ placeholder ||'/'}}
-      </template>
-    </span>
-  </div>
-
 </template>
 <script>
-import Vue from 'vue'
-import { getByKey, queryDataTable } from '@/api/platform/data/dataTemplate'
-import ActionUtils from '@/utils/action'
-import FormOptions from '@/business/platform/form/constants/formOptions'
-import { fileTypes as FILE_TYPES, accept as ACCEPT } from '@/business/platform/file/constants/fileTypes'
-import FormUtils from '@/business/platform/form/utils/formUtil'
-import DateFormatUtil from '@/business/platform/form/utils/dateFormatUtil'
-import request from '@/utils/request'
-import { BPMN_URL } from'@/api/baseUrl'
+    import Vue from 'vue'
+    import { getByKey, queryDataTable } from '@/api/platform/data/dataTemplate'
+    import ActionUtils from '@/utils/action'
+    import FormOptions from '@/business/platform/form/constants/formOptions'
+    import { fileTypes as FILE_TYPES, accept as ACCEPT } from '@/business/platform/file/constants/fileTypes'
+    import FormUtils from '@/business/platform/form/utils/formUtil'
+    import DateFormatUtil from '@/business/platform/form/utils/dateFormatUtil'
+    import request from '@/utils/request'
+    import { BPMN_URL } from '@/api/baseUrl'
 
-import IbpsUeditor from '@/components/ibps-ueditor'
-import IbpsDictionary from '@/business/platform/cat/dictionary/select'
-import IbpsAutoNumber from '@/business/platform/system/identity/auto-number'
-import IbpsAttachment from '@/business/platform/file/attachment/selector'
-import IbpsUserSelector from '@/business/platform/org/selector'
-import IbpsAddressCascader from '@/components/ibps-address/cascader'
-import IbpsSignature from './components/signature'
-import IbpsImage from '@/business/platform/file/image'
-import IbpsLink from '@/components/ibps-link'
-import IbpsCustomDialog from '@/business/platform/data/templaterender/custom-dialog'
-import IbpsLinkData from '@/business/platform/data/templaterender/link-data'
-import IbpsBpmInstHis from '@/business/platform/bpmn/components/bpm-inst-his'
-import Dictionaryitem from '@/business/platform/form/formrender/dynamic-form/addCont/dictionaryitem-add'
+    import IbpsUeditor from '@/components/ibps-ueditor'
+    import IbpsDictionary from '@/business/platform/cat/dictionary/select'
+    import IbpsAutoNumber from '@/business/platform/system/identity/auto-number'
+    import IbpsAttachment from '@/business/platform/file/attachment/selector'
+    import IbpsUserSelector from '@/business/platform/org/selector'
+    import IbpsAddressCascader from '@/components/ibps-address/cascader'
+    import IbpsSignature from './components/signature'
+    import IbpsImage from '@/business/platform/file/image'
+    import IbpsLink from '@/components/ibps-link'
+    import IbpsCustomDialog from '@/business/platform/data/templaterender/custom-dialog'
+    import IbpsLinkData from '@/business/platform/data/templaterender/link-data'
+    import IbpsBpmInstHis from '@/business/platform/bpmn/components/bpm-inst-his'
+    import Dictionaryitem from '@/business/platform/form/formrender/dynamic-form/addCont/dictionaryitem-add'
 
-const _import = require('@/utils/util.import.' + process.env.NODE_ENV)
+    const _import = require('@/utils/util.import.' + process.env.NODE_ENV)
 
-export default {
-  inject: ['dynamicForm'],
-  components: {
-    'ibps-ueditor': IbpsUeditor,
-    'ibps-dictionary': IbpsDictionary,
-    'ibps-auto-number': IbpsAutoNumber,
-    'ibps-attachment': IbpsAttachment,
-    'ibps-user-selector': IbpsUserSelector,
-    'ibps-address': IbpsAddressCascader,
-    'ibps-signature': IbpsSignature,
-    'ibps-image': IbpsImage,
-    'ibps-link': IbpsLink,
-    'ibps-custom-dialog': IbpsCustomDialog,
-    'ibps-link-data': IbpsLinkData,
-    'ibps-bpm-inst-his': IbpsBpmInstHis,
-      'Dictionaryitem':Dictionaryitem,
-  },
-    filters: { //定义过滤器
-      ellipsis(value) {
-        if (!value) return ''
-        if (value.length > 40) {
-          return value.slice(0, 40) + '...'
-        }
-        return value
-      }
-    },
-  props: {
-    value: {
-      type: [String, Number, Date, Object, Array]
-    },
-    isTable:  {
-      type: Boolean,
-      default: false
-    },
-    formData: [Object, Array], // 所有字段数据,(包含主主子表)
-    field: {
-      type: Object,
-      required: true
-    },
-    readonly: {
-      type: Boolean,
-      default: false
-    },
-    readonlyStyle: {
-      type: String,
-      default: 'text'
-    },
-    code: String, // 表名
-    row: [String, Number], // 子表行数
-    params: {
-      type: Object
-    }
-  },
-  data() {
-    return {
-      dataModel: this.value,
-      ajaxOptions: [],
-      dataTemplate: {},
-      menuHide:true,
-        selectModel:[],
-      	  watchKey:false,
-      	  inputKey:"",
-      	  dict_add:false,
-    }
-  },
-  computed: {
-    fieldType() {
-      return this.field.field_type
-    },
-    fieldOptions() {
-      return this.field.field_options || {}
-    },
-    width() {
-      return this.fieldOptions.is_width ? (this.fieldOptions.width || 100) + (this.fieldOptions.width_unit || '%') : '100%'
-    },
-    switchWidth() {
-      return this.fieldOptions.is_width ? (this.fieldOptions.width || 40) : 40
-    },
-    checkboxDataModel: {
-      get() {
-        if (Array.isArray(this.dataModel)) {
-          return this.dataModel
-        }
-        return this.dataModel ? this.dataModel.split(',') : []
-      },
-      set(value) {
-        this.dataModel = value.join(',')
-      }
-    },
-    selectDataModel: {
-      get() {
-        if (this.multipleSelect) {
-          if (Array.isArray(this.dataModel)) {
-            return this.dataModel
-          }
-          return this.dataModel ? this.dataModel.split(',') : []
-        } else {
-          return this.dataModel
-        }
-      },
-      set(value) {
-        this.dataModel = this.multipleSelect ? value.join(',') : value
-      }
-    },
-    numberDataModel: {
-      get() {
-        if (!this.$utils.isNum(this.dataModel)) { return }
-        return Number(this.dataModel)
-      },
-      set(value) {
-        this.dataModel = value
-      }
-    },
-    jsonArrayDataModel: {
-      get() {
-        if (this.$utils.isEmpty(this.dataModel)) { return '' }
-        return this.$utils.parseJSON(this.dataModel)
-      },
-      set(value) {
-        this.dataModel = value === '' ? '' : JSON.stringify(value)
-      }
-    },
-    addressTopVal() {
-      return FormUtils.getAddressTopVal(this.fieldOptions)
-    },
-    // 地址值
-    addressValue: {
-      get() {
-        return FormUtils.getAddressControlValue(this.dataModel, this.fieldOptions)
-      },
-      set(value) {
-        this.dataModel = FormUtils.getAddressValue(value, this.dataModel, this.fieldOptions)
-      }
-    },
-    streetValue: {
-      get() {
-        if (this.$utils.isEmpty(this.dataModel)) {
-          return ''
-        }
-        const data = this.$utils.parseJSON(this.dataModel)
-        return data['street'] || ''
-      },
-      set(val) {
-        let data = {}
-        if (this.$utils.isNotEmpty(this.dataModel)) {
-          data = this.$utils.parseJSON(this.dataModel)
-        }
-        data['street'] = val
-        this.dataModel = JSON.stringify(data)
-      }
-    },
-    readonlyText() {
-      if (!this.readonly) return false
-      return this.readonlyStyle === 'text'
-    },
-    // 自适应内容高度
-    autosize() {
-      let autosize = this.fieldOptions.autosize
-      if (this.fieldOptions.autosize && (this.fieldOptions.min_rows || this.fieldOptions.max_rows)) {
-        const rows = {}
-        rows.minRows = this.fieldOptions.min_rows ? this.fieldOptions.min_rows : null
-        rows.maxRows = this.fieldOptions.max_rows ? this.fieldOptions.max_rows : null
-        autosize = rows
-      }
-      return autosize
-    },
-    // 日期格式
-    datefmt() {
-      if (this.fieldOptions['datefmt_type'] && this.fieldOptions['datefmt_type'] !== 'custom') {
-        if (this.fieldType === 'currentDate') {
-          return FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['date']
-        } else if (this.fieldType === 'currentTime') {
-          return FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['time']
-        } else {
-          return FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['date']
-        }
-      } else {
-        return this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date']
-      }
-    },
-    /**
-     * 日期格式处理
-     */
-    dateDealFmt() {
-      return DateFormatUtil.dealFmt(this.datefmt)
-    },
-    // 日期控件类型
-    datePckerType() {
-      return this.dateDealFmt.datePckerType
-    },
-    dateType() {
-      // year/month/date/week/ datetime/datetimerange/daterange
-      // 根据自定义日期格式的配置
-      return this.dateDealFmt.dateType || 'datetime'
-    },
-    /**
-     * 单选、多选、下拉等选项
-     */
-    dataOptions() {
-      return this.field.field_options['options'] || this.ajaxOptions
-    },
-    /**
-     * switch选项
-     */
-    switchOptions() {
-      return FormUtils.getSwitchOptions(this.field.field_options)
-    },
-    /**
-     *  占位符
-     */
-    placeholder() {
-      return !this.readonly ? this.fieldOptions['placeholder'] : ''
-    },
-    /**
-     * 下拉占位符
-     */
-    dropdownPlaceholder() {
-      return this.$utils.isNotEmpty(this.placeholder) ? (this.fieldOptions['include_blank_value'] || this.placeholder) : ''
-    },
-    /**
-     * 选择类型占位符
-     */
-    selectPlaceholder() {
-      return this.$utils.isNotEmpty(this.placeholder) ? this.placeholder : '请选择'
-    },
-    /**
-     * 可清空
-     */
-    clearable() {
-      return this.$utils.toBoolean(this.fieldOptions['clearable'], true)
-    },
-    /**
-     * 编辑器按钮
-     */
-    ueditorConfig() {
-      const config = {
-        initialContent: this.placeholder,
-        toolbars: []
-      }
+    export default {
+        inject: ['dynamicForm'],
+        components: {
+            'ibps-ueditor': IbpsUeditor,
+            'ibps-dictionary': IbpsDictionary,
+            'ibps-auto-number': IbpsAutoNumber,
+            'ibps-attachment': IbpsAttachment,
+            'ibps-user-selector': IbpsUserSelector,
+            'ibps-address': IbpsAddressCascader,
+            'ibps-signature': IbpsSignature,
+            'ibps-image': IbpsImage,
+            'ibps-link': IbpsLink,
+            'ibps-custom-dialog': IbpsCustomDialog,
+            'ibps-link-data': IbpsLinkData,
+            'ibps-bpm-inst-his': IbpsBpmInstHis,
+            Dictionaryitem: Dictionaryitem
+        },
+        filters: {
+            //定义过滤器
+            ellipsis(value) {
+                if (!value) return ''
+                if (value.length > 40) {
+                    return value.slice(0, 40) + '...'
+                }
+                return value
+            }
+        },
+        props: {
+            value: {
+                type: [String, Number, Date, Object, Array]
+            },
+            isTable: {
+                type: Boolean,
+                default: false
+            },
+            formData: [Object, Array], // 所有字段数据,(包含主主子表)
+            field: {
+                type: Object,
+                required: true
+            },
+            readonly: {
+                type: Boolean,
+                default: false
+            },
+            readonlyStyle: {
+                type: String,
+                default: 'text'
+            },
+            code: String, // 表名
+            row: [String, Number], // 子表行数
+            params: {
+                type: Object
+            }
+        },
+        data() {
+            return {
+                dataModel: this.value,
+                ajaxOptions: [],
+                dataTemplate: {},
+                menuHide: true,
+                selectModel: [],
+                watchKey: false,
+                inputKey: '',
+                dict_add: false
+            }
+        },
+        computed: {
+            fieldType() {
+                return this.field.field_type
+            },
+            fieldOptions() {
+                return this.field.field_options || {}
+            },
+            width() {
+                return this.fieldOptions.is_width ? (this.fieldOptions.width || 100) + (this.fieldOptions.width_unit || '%') : '100%'
+            },
+            switchWidth() {
+                return this.fieldOptions.is_width ? this.fieldOptions.width || 40 : 40
+            },
+            checkboxDataModel: {
+                get() {
+                    if (Array.isArray(this.dataModel)) {
+                        return this.dataModel
+                    }
+                    return this.dataModel ? this.dataModel.split(',') : []
+                },
+                set(value) {
+                    this.dataModel = value.join(',')
+                }
+            },
+            selectDataModel: {
+                get() {
+                    if (this.multipleSelect) {
+                        if (Array.isArray(this.dataModel)) {
+                            return this.dataModel
+                        }
+                        return this.dataModel ? this.dataModel.split(',') : []
+                    } else {
+                        return this.dataModel
+                    }
+                },
+                set(value) {
+                    this.dataModel = this.multipleSelect ? value.join(',') : value
+                }
+            },
+            numberDataModel: {
+                get() {
+                    if (!this.$utils.isNum(this.dataModel)) {
+                        return
+                    }
+                    return Number(this.dataModel)
+                },
+                set(value) {
+                    this.dataModel = value
+                }
+            },
+            jsonArrayDataModel: {
+                get() {
+                    if (this.$utils.isEmpty(this.dataModel)) {
+                        return ''
+                    }
+                    return this.$utils.parseJSON(this.dataModel)
+                },
+                set(value) {
+                    this.dataModel = value === '' ? '' : JSON.stringify(value)
+                }
+            },
+            addressTopVal() {
+                return FormUtils.getAddressTopVal(this.fieldOptions)
+            },
+            // 地址值
+            addressValue: {
+                get() {
+                    return FormUtils.getAddressControlValue(this.dataModel, this.fieldOptions)
+                },
+                set(value) {
+                    this.dataModel = FormUtils.getAddressValue(value, this.dataModel, this.fieldOptions)
+                }
+            },
+            streetValue: {
+                get() {
+                    if (this.$utils.isEmpty(this.dataModel)) {
+                        return ''
+                    }
+                    const data = this.$utils.parseJSON(this.dataModel)
+                    return data['street'] || ''
+                },
+                set(val) {
+                    let data = {}
+                    if (this.$utils.isNotEmpty(this.dataModel)) {
+                        data = this.$utils.parseJSON(this.dataModel)
+                    }
+                    data['street'] = val
+                    this.dataModel = JSON.stringify(data)
+                }
+            },
+            readonlyText() {
+                if (!this.readonly) return false
+                return this.readonlyStyle === 'text'
+            },
+            // 自适应内容高度
+            autosize() {
+                let autosize = this.fieldOptions.autosize
+                if (this.fieldOptions.autosize && (this.fieldOptions.min_rows || this.fieldOptions.max_rows)) {
+                    const rows = {}
+                    rows.minRows = this.fieldOptions.min_rows ? this.fieldOptions.min_rows : null
+                    rows.maxRows = this.fieldOptions.max_rows ? this.fieldOptions.max_rows : null
+                    autosize = rows
+                }
+                return autosize
+            },
+            // 日期格式
+            datefmt() {
+                if (this.fieldOptions['datefmt_type'] && this.fieldOptions['datefmt_type'] !== 'custom') {
+                    if (this.fieldType === 'currentDate') {
+                        return (FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['date'])
+                    } else if (this.fieldType === 'currentTime') {
+                        return (FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['time'])
+                    } else {
+                        return (FormOptions.t.DATE_FORMATS[this.fieldOptions['datefmt_type']] || FormOptions.t.DATE_FORMATS['date'])
+                    }
+                } else {
+                    return (this.fieldOptions['datefmt'] || FormOptions.t.DATE_FORMATS['date'])
+                }
+            },
+            /**
+             * 日期格式处理
+             */
+            dateDealFmt() {
+                return DateFormatUtil.dealFmt(this.datefmt)
+            },
+            // 日期控件类型
+            datePckerType() {
+                return this.dateDealFmt.datePckerType
+            },
+            dateType() {
+                // year/month/date/week/ datetime/datetimerange/daterange
+                // 根据自定义日期格式的配置
+                return this.dateDealFmt.dateType || 'datetime'
+            },
+            /**
+             * 单选、多选、下拉等选项
+             */
+            dataOptions() {
+                return this.field.field_options['options'] || this.ajaxOptions
+            },
+            /**
+             * switch选项
+             */
+            switchOptions() {
+                return FormUtils.getSwitchOptions(this.field.field_options)
+            },
+            /**
+             *  占位符
+             */
+            placeholder() {
+                return !this.readonly ? this.fieldOptions['placeholder'] : ''
+            },
+            /**
+             * 下拉占位符
+             */
+            dropdownPlaceholder() {
+                return this.$utils.isNotEmpty(this.placeholder) ? this.fieldOptions['include_blank_value'] || this.placeholder : ''
+            },
+            /**
+             * 选择类型占位符
+             */
+            selectPlaceholder() {
+                return this.$utils.isNotEmpty(this.placeholder) ? this.placeholder : '请选择'
+            },
+            /**
+             * 可清空
+             */
+            clearable() {
+                return this.$utils.toBoolean(this.fieldOptions['clearable'], true)
+            },
+            /**
+             * 编辑器按钮
+             */
+            ueditorConfig() {
+                const config = {
+                    initialContent: this.placeholder,
+                    toolbars: []
+                }
 
-      const toolbars = this.fieldOptions.toolbars
-      if (toolbars && toolbars.length > 0) {
-        config.toolbars.push(toolbars)
-      }
-      return config
-    },
-    /**
-     * 最大文件上传
-     */
-    maxFileSize() {
-      return this.$utils.isNotEmpty(this.fieldOptions.max_file_size) ? this.fieldOptions.max_file_size * 1024 * 1024 : null
-    },
-    /**
-     * 最大文件个数
-     */
-    fileQuantity() {
-      if (this.$utils.isNotEmpty(this.fieldOptions.max_file_quantity) && (this.fieldOptions.max_file_quantity !== '-1' || this.fieldOptions.max_file_quantity !== -1)) {
-        return parseInt(this.fieldOptions.max_file_quantity, 10)
-      } else {
-        return null
-      }
-    },
-    // 格式类型
-    fileAccept() {
-      const mediaType = this.fieldOptions.media_type
-      if (this.$utils.isEmpty(mediaType)) { return '*' }
-      return ACCEPT[mediaType] || '*'
-    },
-    imagesAccept() {
-      const accept = this.fieldOptions.accept
-      if (this.$utils.isEmpty(accept)) { return ACCEPT['images'] }
-      if (accept === 'custom') {
-        return this.fieldOptions.media
-      }
-      return accept
-    },
-    fileFormates() {
-      const mediaType = this.fieldOptions.media_type
-      if (this.$utils.isEmpty(mediaType)) { return [] }
-      const x = FILE_TYPES[mediaType]
-      if ((x)) {
-        return x.map((v) => {
-          return '.' + v
-        })
-      } else {
-        return (this.fieldOptions.media || '').split(',')
-      }
-    },
-    bindId() {
-      return this.fieldOptions['bind_id'] || ''
-    },
-    /**
-     * 是否多选[字符串]
-     */
-    multipleString() {
-      return this.$utils.toBoolean(this.fieldOptions['multiple'] === 'Y', true)
-    },
-    /**
-     * 是否多选
-     */
-    multiple() {
-      return this.$utils.toBoolean(this.fieldOptions['multiple'], true)
-    },
-    /**
-     * 是否多选
-     */
-    multipleSelect() {
-      return this.$utils.toBoolean(this.fieldOptions['multiple'], false)
-    },
+                const toolbars = this.fieldOptions.toolbars
+                if (toolbars && toolbars.length > 0) {
+                    config.toolbars.push(toolbars)
+                }
+                return config
+            },
+            /**
+             * 最大文件上传
+             */
+            maxFileSize() {
+                return this.$utils.isNotEmpty(this.fieldOptions.max_file_size) ? this.fieldOptions.max_file_size * 1024 * 1024 : null
+            },
+            /**
+             * 最大文件个数
+             */
+            fileQuantity() {
+                if (this.$utils.isNotEmpty(this.fieldOptions.max_file_quantity) && (this.fieldOptions.max_file_quantity !== '-1' || this.fieldOptions.max_file_quantity !== -1)
+                ) {
+                    return parseInt(this.fieldOptions.max_file_quantity, 10)
+                } else {
+                    return null
+                }
+            },
+            // 格式类型
+            fileAccept() {
+                const mediaType = this.fieldOptions.media_type
+                if (this.$utils.isEmpty(mediaType)) {
+                    return '*'
+                }
+                return ACCEPT[mediaType] || '*'
+            },
+            imagesAccept() {
+                const accept = this.fieldOptions.accept
+                if (this.$utils.isEmpty(accept)) {
+                    return ACCEPT['images']
+                }
+                if (accept === 'custom') {
+                    return this.fieldOptions.media
+                }
+                return accept
+            },
+            fileFormates() {
+                const mediaType = this.fieldOptions.media_type
+                if (this.$utils.isEmpty(mediaType)) {
+                    return []
+                }
+                const x = FILE_TYPES[mediaType]
+                if (x) {
+                    return x.map((v) => {
+                        return '.' + v
+                    })
+                } else {
+                    return (this.fieldOptions.media || '').split(',')
+                }
+            },
+            bindId() {
+                return this.fieldOptions['bind_id'] || ''
+            },
+            /**
+             * 是否多选[字符串]
+             */
+            multipleString() {
+                return this.$utils.toBoolean(this.fieldOptions['multiple'] === 'Y', true)
+            },
+            /**
+             * 是否多选
+             */
+            multiple() {
+                return this.$utils.toBoolean(this.fieldOptions['multiple'], true)
+            },
+            /**
+             * 是否多选
+             */
+            multipleSelect() {
+                return this.$utils.toBoolean(this.fieldOptions['multiple'], false)
+            },
 
-    operation_status() {
-      return this.fieldOptions['operation_status']
-    },
-    // 高
-    height() {
-      return this.fieldOptions.height ? parseInt(this.fieldOptions.height, 10) : null
-    },
-    // 其他选项值
-    otherOptionValue: {
-      get() {
-        const otherId = this.fieldOptions['option_other_id']
-        if (this.$utils.isEmpty(otherId)) return
-        return this.models[otherId] || ''
-      },
-      set(value) {
-        const otherId = this.fieldOptions['option_other_id']
-        if (this.$utils.isEmpty(otherId)) return
-        this.changeFormData(otherId, value)
-      }
-    },
-    structure() {
-      return FormUtils.getLinkStructure(this.fieldOptions, this.models)
-    },
-    valueKey() {
-      return FormUtils.getLinkValueKey(this.fieldOptions, this.models)
-    },
-    labelType() {
-      return FormUtils.getLinkLabelType(this.fieldOptions, this.models)
-    },
-    labelKey() {
-      return FormUtils.getLinkLabelKey(this.fieldOptions, this.models)
-    },
-    linkConfig() {
-      return FormUtils.getLinkConfig(this.fieldOptions, this.models)
-    },
-    hasDynamicParams() {
-      return FormUtils.hasLinkDynamicParams(this.fieldOptions)
-    },
-    dynamicParams() {
-      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
-    },
-    isValueSource() {
-      return ((this.fieldType === 'radio' || this.fieldType === 'checkbox' || this.fieldType === 'select') &&
-       this.fieldOptions['datasource'] === 'valuesource')
-    }
-  },
-  watch: {
-    value: {
-      handler(val) {
-        this.dataModel = val
-      },
-      deep: true
-    },
-    dataModel: {
-      handler(val) {
-        this.$emit('update:value', val)
-      },
-      deep: true
-    },
-    dynamicParams: {
-      handler(val, oldVal) {
-        if (val !== oldVal && this.isValueSource) {
-          this.loadAjaxOptions()
+            operation_status() {
+                return this.fieldOptions['operation_status']
+            },
+            // 高
+            height() {
+                return this.fieldOptions.height ? parseInt(this.fieldOptions.height, 10) : null
+            },
+            // 其他选项值
+            otherOptionValue: {
+                get() {
+                    const otherId = this.fieldOptions['option_other_id']
+                    if (this.$utils.isEmpty(otherId)) return
+                    return this.models[otherId] || ''
+                },
+                set(value) {
+                    const otherId = this.fieldOptions['option_other_id']
+                    if (this.$utils.isEmpty(otherId)) return
+                    this.changeFormData(otherId, value)
+                }
+            },
+            structure() {
+                return FormUtils.getLinkStructure(this.fieldOptions, this.models)
+            },
+            valueKey() {
+                return FormUtils.getLinkValueKey(this.fieldOptions, this.models)
+            },
+            labelType() {
+                return FormUtils.getLinkLabelType(this.fieldOptions, this.models)
+            },
+            labelKey() {
+                return FormUtils.getLinkLabelKey(this.fieldOptions, this.models)
+            },
+            linkConfig() {
+                return FormUtils.getLinkConfig(this.fieldOptions, this.models)
+            },
+            hasDynamicParams() {
+                return FormUtils.hasLinkDynamicParams(this.fieldOptions)
+            },
+            dynamicParams() {
+                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
+            },
+            isValueSource() {
+                return ((this.fieldType === 'radio' || this.fieldType === 'checkbox' || this.fieldType === 'select') && this.fieldOptions['datasource'] === 'valuesource')
+            }
+        },
+        watch: {
+            value: {
+                handler(val) {
+                    this.dataModel = val
+                },
+                deep: true
+            },
+            dataModel: {
+                handler(val) {
+                    this.$emit('update:value', val)
+                },
+                deep: true
+            },
+            dynamicParams: {
+                handler(val, oldVal) {
+                    if (val !== oldVal && this.isValueSource) {
+                        this.loadAjaxOptions()
+                    }
+                },
+                deep: true
+            }
+        },
+        created() {
+            if (this.isValueSource) {
+                this.field.field_options['options'] = null
+                getByKey({ dataTemplateKey: this.fieldOptions['value_source'] }).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)
+                if (component) {
+                    Vue.component(this.fieldOptions.component_name, component)
+                }
+            }
+        },
+        methods: {
+            /* 日期格式调整*/
+            selectTime(val) {
+                let date = new Date(new Date())
+                let year = date.getFullYear()
+                let month = this.trans(date.getMonth() + 1)
+                let day = this.trans(date.getDate())
+                let addDate = year + '' + month + '' + day
+                if (this.datefmt === 'MM'){
+                    this.dataModel = addDate.substring(0, 4) + '-' + val + '-01'
+                }
+                else if (this.datefmt === 'yyyy-MM') {
+                    this.dataModel = val + '-01'
+                }
+                else if (this.datefmt === 'yyyy') {
+                    this.dataModel = val + '-01-01'
+                }
+            },
+            /* 获取当前时间*/
+            trans(val) {
+                return val < 10 ? '0' + val : val
+            },
+            getValuesourceParams(template, dataTemplate) {
+                const formParams = {}
+                const responseData = JSON.parse(JSON.stringify(template))
+                responseData.datasetKey = dataTemplate.datasetKey
+                responseData.unique = this.valueKey
+                responseData['key'] = this.fieldOptions['value_source']
+                responseData['dynamic_params'] = this.dynamicParams
+                formParams['response_data'] = JSON.stringify(responseData)
+                formParams['filter_condition_key'] = ''
+                return ActionUtils.formatParams(formParams)
+            },
+            loadAjaxOptions() {
+                if (this.$utils.isEmpty(this.dataTemplate)) {
+                    return
+                }
+                const template = this.dataTemplate.templates[0]
+                queryDataTable(this.getValuesourceParams(template, this.dataTemplate)).then((resp) => {
+                    const data = resp.data || {}
+                    const dataResult = data.dataResult || []
+                    const options = dataResult.map((item) => {
+                        return {
+                            val: item[this.valueKey],
+                            label: item[this.labelKey]
+                        }
+                    })
+                    this.ajaxOptions = options
+                })
+            },
+            // 选择器存储格式-绑定标识
+            handleSeletorLinkageData(value, data, type) {
+                if (this.multipleString) {
+                    return
+                }
+                const linkLinkage = this.fieldOptions['bindFiled'] // 绑定字段
+                let bind = this.fieldOptions['bind'] // 获取作为绑定字段属性值得属性
+                if (type === 'role') {
+                    bind = 'roleAlias'
+                }
+                if (this.$utils.isEmpty(linkLinkage) || this.$utils.isEmpty(data)) {
+                    return
+                }
+                const field = linkLinkage
+                const fieldObj = field ? field.split('.') : [] // 改变的字段
+                const selectorData = JSON.parse(JSON.stringify(data))
+                const targetValues = []
+                selectorData.forEach((s) => {targetValues.push(s[bind])})
+                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)) {
+                        this.changeFormData(fieldName, targetString || '')
+                    }
+                }
+            },
+            /**
+             * 联动数据
+             */
+            handleLinkageData(value, data) {
+                if (this.multipleString) {
+                    return
+                }
+                const linkLinkage = this.fieldOptions['link_linkage']
+                if (this.$utils.isEmpty(linkLinkage) || this.$utils.isEmpty(data)) {
+                    return
+                }
+                for (let i = 0; i < linkLinkage.length; i++) {
+                    const item = linkLinkage[i]
+                    const field = item.field
+                    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)) {
+                            this.changeFormData(fieldName, data[item.name] || '')
+                        }
+                    }
+                }
+            },
+            /**
+             *  联动属性
+             */
+            handleLinkageAttr(value, data) {
+                if (this.multipleString) {
+                    return
+                }
+                const linkAttr = this.fieldOptions['link_attr']
+                if (this.$utils.isEmpty(linkAttr) || this.$utils.isEmpty(data)) {
+                    return
+                }
+                for (let i = 0; i < linkAttr.length; i++) {
+                    const item = linkAttr[i]
+                    const field = item.field
+                    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)) {
+                            this.changeFormData(fieldName, data[item.name] || '')
+                        }
+                    }
+                }
+            },
+            /**
+             * 选择器绑定id
+             */
+            selectorBindCallback(value) {
+                const bindId = this.bindId
+                if (this.$utils.isEmpty(bindId)) {
+                    this.$message.error('[' + this.label + ']字段未绑Id')
+                    return
+                }
+                this.changeFormData(bindId, value || '')
+            },
+            /**
+             * 更新字段值(主表或其他子表)
+             */
+            changeFormData(name, value) {
+                this.$emit('change-data', name, value)
+            },
+            /* 请求记忆数据库 */
+            reqPhrase(orderId, field) {
+                if (!this.watchKey || this.inputKey != field.name + field.field_text) {
+                    this.watchKey = true
+                    this.inputKey = field.name + field.field_text
+                    request({
+                        url: BPMN_URL() + '/sys/SysDataContext/getDataContext',
+                        method: 'post',
+                        data: JSON.stringify({
+                            attrName: this.inputKey,
+                            orderId: orderId
+                        })
+                    }).then((response) => {
+                        if (response.state === 200) {
+                            this.selectModel = response.variables.page
+                        }
+                    }).catch((error) => {
+                        this.$message.error('系统忙、或数据错误,请稍后再试')
+                    })
+                }
+            },
+            //选定短语
+            handleCommand(val) {
+                if (!this.dataModel) {
+                    this.dataModel = val
+                } else {
+                    this.dataModel = this.dataModel + val
+                }
+            },
+            //删除字典内容
+            deleteDicts(id, name) {
+                this.menuHide = false
+                this.$confirm(`确定对[ ${name} ]进行 [ 删除操作 ]?`, '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    this.watchKey = false
+                    request({
+                        url: BPMN_URL() + '/sys/SysDataContext/deleteDataContext',
+                        method: 'post',
+                        data: JSON.stringify({ uuId: id })
+                    }).then((response) => {
+                        this.menuHide = true
+                        if (response.state === 200) {
+                            this.$message({
+                                message: '删除成功!',
+                                type: 'success',
+                                duration: 800,
+                                onClose: () => {
+                                    this.visible = false
+                                    this.$emit('proceedCont')
+                                }
+                            })
+                        }
+                    }).catch((error) => {
+                        this.$message.error('系统忙、或数据错误,请稍后再试')
+                    })
+                }).catch(() => {})
+            },
+            // 添加字典
+            addDict(orderId, inputKey, name) {
+                var valueCont = inputKey.name + inputKey.field_text
+                this.dict_add = true
+                this.$nextTick(() => {
+                    this.$refs.dict_add.init(orderId, valueCont, name)
+                })
+            },
+            //回调进行再次点击开关
+            proceedCont() {
+                this.watchKey = false //防止恶意查询 。 为空表示可以点击了
+            }
         }
-      },
-      deep: true
     }
-  },
-  created() {
-    if (this.isValueSource) {
-      this.field.field_options['options'] = null
-      getByKey({
-        dataTemplateKey: this.fieldOptions['value_source']
-      }).then(response => {
-        this.dataTemplate = this.$utils.parseData(response.data)
-        this.loadAjaxOptions()
-      }).catch(() => {
-      })
+</script>
+<style>
+    .el-form-item {
+        margin-bottom: 16px !important;
     }
-    if (this.fieldType === 'component' || this.fieldType === 'control') {
-      const component = _import(this.fieldOptions.component_url)
-      if (component) {
-        Vue.component(this.fieldOptions.component_name, component)
-      }
+    .el-form-item--small .el-form-item__error {
+        padding-top: 10px !important;
+    }
+    .el-form-item--mini .el-form-item__error {
+        padding-top: 10px !important;
     }
-  },
-  methods: {
-    /* 日期格式调整*/
-    selectTime(val){
-      let date= new Date(new Date());
-      let year= date.getFullYear() ;
-      let month= this.trans(date.getMonth() + 1) ;
-      let day= this.trans(date.getDate());
-      let addDate = year + '' + month +'' + day;
-     if(this.datefmt === 'MM')  this.dataModel = addDate.substring(0, 4) + '-'+val + '-01'
-      else if(this.datefmt === 'yyyy-MM') this.dataModel = val + '-01'
-	    else if(this.datefmt === 'yyyy') this.dataModel = val + '-01-01'
-    },
-    /* 获取当前时间*/
-        trans(val){
-            return val < 10 ? '0' + val : val;
-               },
-    getValuesourceParams(template, dataTemplate) {
-      const formParams = {}
-      const responseData = JSON.parse(JSON.stringify(template))
-      responseData.datasetKey = dataTemplate.datasetKey
-      responseData.unique = this.valueKey
-      responseData['key'] = this.fieldOptions['value_source']
-      responseData['dynamic_params'] = this.dynamicParams
-      formParams['response_data'] = JSON.stringify(responseData)
-      formParams['filter_condition_key'] = ''
-      return ActionUtils.formatParams(formParams)
-    },
-    loadAjaxOptions() {
-      if (this.$utils.isEmpty(this.dataTemplate)) {
-        return
-      }
-      const template = this.dataTemplate.templates[0]
-      queryDataTable(this.getValuesourceParams(template, this.dataTemplate)).then(resp => {
-        const data = resp.data || {}
-        const dataResult = data.dataResult || []
-        const options = dataResult.map(item => {
-          return {
-            val: item[this.valueKey],
-            label: item[this.labelKey]
-          }
-        })
-        this.ajaxOptions = options
-      })
-    },
-    // 选择器存储格式-绑定标识
-    handleSeletorLinkageData(value, data, type) {
-      if (this.multipleString) {
-        return
-      }
-      const linkLinkage = this.fieldOptions['bindFiled'] // 绑定字段
-      let bind = this.fieldOptions['bind'] // 获取作为绑定字段属性值得属性
-      if (type === 'role') {
-        bind = 'roleAlias'
-      }
-      if (this.$utils.isEmpty(linkLinkage) || this.$utils.isEmpty(data)) { return }
-      const field = linkLinkage
-      const fieldObj = field ? field.split('.') : []// 改变的字段
-      const selectorData = JSON.parse(JSON.stringify(data))
-      const targetValues = []
-      selectorData.forEach(s => {
-        targetValues.push(s[bind])
-      })
-      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)) {
-          this.changeFormData(fieldName, targetString || '')
-        }
-      }
-    },
-    /**
-     * 联动数据
-     */
-    handleLinkageData(value, data) {
-      if (this.multipleString) {
-        return
-      }
-      const linkLinkage = this.fieldOptions['link_linkage']
-      if (this.$utils.isEmpty(linkLinkage) || this.$utils.isEmpty(data)) { return }
-      for (let i = 0; i < linkLinkage.length; i++) {
-        const item = linkLinkage[i]
-        const field = item.field
-        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)) {
-            this.changeFormData(fieldName, data[item.name] || '')
-          }
-        }
-      }
-    },
-    /**
-     *  联动属性
-     */
-    handleLinkageAttr(value, data) {
-      if (this.multipleString) {
-        return
-      }
-      const linkAttr = this.fieldOptions['link_attr']
-      if (this.$utils.isEmpty(linkAttr) || this.$utils.isEmpty(data)) { return }
-      for (let i = 0; i < linkAttr.length; i++) {
-        const item = linkAttr[i]
-        const field = item.field
-        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)) {
-            this.changeFormData(fieldName, data[item.name] || '')
-          }
-        }
-      }
-    },
-    /**
-     * 选择器绑定id
-     */
-    selectorBindCallback(value) {
-      const bindId = this.bindId
-      if (this.$utils.isEmpty(bindId)) {
-        this.$message.error('[' + this.label + ']字段未绑Id')
-        return
-      }
-      this.changeFormData(bindId, value || '')
-    },
-    /**
-     * 更新字段值(主表或其他子表)
-     */
-    changeFormData(name, value) {
-      this.$emit('change-data', name, value)
-    },
-
-   		/* 请求记忆数据库 */
-   		reqPhrase(orderId,field){
-
-   		  if(!this.watchKey || this.inputKey!=field.name + field.field_text){
-   		    this.watchKey = true
-   		  	this.inputKey = field.name + field.field_text
-   		        request({
-   		            url:BPMN_URL()+'/sys/SysDataContext/getDataContext',
-   		            method: 'post',
-   		            data:  JSON.stringify({
-                       'attrName':this.inputKey,
-                        'orderId':orderId,
-                         })
-   		          }).then(response => {
-   		            if(response.state===200){
-   						 this.selectModel = response.variables.page
-   		            }
-   		            }).catch(error => {
-   		                this.$message.error('系统忙、或数据错误,请稍后再试')
-   		            })
-   		          }
-   		      },
-   		//选定短语
-   		handleCommand(val){
-       if(!this.dataModel){
-   		  this.dataModel = val
-        }else{
-           this.dataModel = this.dataModel + val
-        }
-   		},
-   		//删除字典内容
-   		deleteDicts(id,name){
-        this.menuHide=false
-   		  this.$confirm(
-   		    `确定对[ ${name} ]进行 [ 删除操作 ]?`,
-   		    "提示",
-   		    {
-   		      confirmButtonText: "确定",
-   		      cancelButtonText: "取消",
-   		      type: "warning"
-   		    }
-   		  ).then(() => {
-   		     this.watchKey = false
-   		      request({
-   		          url:BPMN_URL()+'/sys/SysDataContext/deleteDataContext',
-   		          method: 'post',
-   		          data:  JSON.stringify({
-   		          'uuId':id,
-   		            })
-   		        }).then(response => {
-                this.menuHide=true
-   		        if(response.state===200){
-   					  this.$message({
-   					    message: '删除成功!',
-   					    type: 'success',
-   					    duration: 800,
-   					    onClose: () => {
-   					      this.visible = false
-   					       this.$emit("proceedCont")
-   					    }
-   					  })
-   		          }
-   		          }).catch(error => {
-   		              this.$message.error('系统忙、或数据错误,请稍后再试')
-   		          })
-   		  }).catch(() => {
-   		           });
-   		},
-   		// 添加字典
-   		addDict (orderId,inputKey,name) {
-        var valueCont = inputKey.name + inputKey.field_text
-   		  this.dict_add = true
-   		  this.$nextTick(() => {
-   		    this.$refs.dict_add.init(orderId,valueCont,name)
-   		  })
-   		},
-   		//回调进行再次点击开关
-   		proceedCont(){
-   		  this.watchKey = false//防止恶意查询 。 为空表示可以点击了
-   		}
-     }
-   }
-   </script>
-   <style>
-    .el-form-item {
-         margin-bottom: 6px !important;
-     }
     .el-form-item__error {
-       line-height: 0;
-       }
-   	 .elButtonPlace{
-   			position:absolute;
-   			right: 0px;
-   			z-index:99;
+        line-height: 0;
+    }
+    .elButtonPlace {
+        position: absolute;
+        right: 0px;
+        z-index: 99;
         opacity: 0.2;
         width: 10px;
         padding-left: 0px;
-   	        }
-     .ibps-field-text{
-       white-space: pre-line;
-       color: #000000;
-       box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1),
-       0 0 0 0 rgba(0, 0, 0, 0.1),
-       0 0 0 0 rgba(0, 0, 0, 0.1),
-       0 1px 0px 0 rgba(0, 0, 0, 0.1);
-       padding-left: 5px;
-       min-height: 32px;
-       min-line-height: 32px;
-       }
-       .ibps-field-text-img{
-         color: #000000;
-         box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1),
-         0 0 0 0 rgba(0, 0, 0, 0.1),
-         0 0 0 0 rgba(0, 0, 0, 0.1),
-         0 1px 0px 0 rgba(0, 0, 0, 0.1);
-         padding-left: 5px;
-         height: 150px;
-         }
-      .ibps-field-text-no{
+    }
+    .ibps-field-text {
+        white-space: pre-line;
+        color: #000000;
+        box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 0px 0 rgba(0, 0, 0, 0.1);
+        padding-left: 5px;
+        min-height: 32px;
+        min-line-height: 32px;
+    }
+    .ibps-field-text-img {
         color: #000000;
-        box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1),
-        0 0 0 0 rgba(0, 0, 0, 0.1),
-        0 0 0 0 rgba(0, 0, 0, 0.1),
-        0 1px 0px 0 rgba(0, 0, 0, 0.1);
+        box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 0px 0 rgba(0, 0, 0, 0.1);
+        padding-left: 5px;
+        height: 150px;
+    }
+    .ibps-field-text-no {
+        color: #000000;
+        box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 0px 0 rgba(0, 0, 0, 0.1);
         padding-left: 15px;
         min-height: 32px;
         margin-top: 5px;
         min-line-height: 32px;
         font-size: 20px;
-        }
-   </style>
+    }
+</style>