配置表单
This commit is contained in:
		
							
								
								
									
										2
									
								
								packages/2.0.5/AppForm/components/Add.vue
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								packages/2.0.5/AppForm/components/Add.vue
									
									
									
									
										vendored
									
									
								
							| @@ -16,7 +16,7 @@ | |||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <basic-info ref="basicInfo" v-model="basicInfo" v-show="currIndex === 0" :dict="dict" :instance="instance"></basic-info> |       <basic-info ref="basicInfo" v-model="basicInfo" v-show="currIndex === 0" :dict="dict" :instance="instance"></basic-info> | ||||||
|       <form-layout class="form-config__wrapper" v-model="tableInfos" ref="form" v-show="currIndex === 1" :dict="dict" :instance="instance"></form-layout> |       <form-layout :appType="basicInfo.appType" class="form-config__wrapper" v-model="tableInfos" ref="form" v-if="currIndex === 1" :dict="dict" :instance="instance"></form-layout> | ||||||
|       <form-config |       <form-config | ||||||
|         ref="config" |         ref="config" | ||||||
|         :showListFields="showListFields" |         :showListFields="showListFields" | ||||||
|   | |||||||
							
								
								
									
										81
									
								
								packages/2.0.5/AppForm/components/FormLayout.vue
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								packages/2.0.5/AppForm/components/FormLayout.vue
									
									
									
									
										vendored
									
									
								
							| @@ -51,6 +51,7 @@ | |||||||
|                     scroll |                     scroll | ||||||
|                     @end="onElEnd" |                     @end="onElEnd" | ||||||
|                     element="div" |                     element="div" | ||||||
|  |                     filter=".components-filter" | ||||||
|                     draggable=".components-item" |                     draggable=".components-item" | ||||||
|                     group="componentsGroup" |                     group="componentsGroup" | ||||||
|                     :sort="true"> |                     :sort="true"> | ||||||
| @@ -58,10 +59,13 @@ | |||||||
|                       class="components-item" |                       class="components-item" | ||||||
|                       v-for="(item, i) in group.column" |                       v-for="(item, i) in group.column" | ||||||
|                       :style="{width: item.grid * 100 + '%'}" |                       :style="{width: item.grid * 100 + '%'}" | ||||||
|                       :class="[groupIndex === j && activeIndex === i ? 'active' : '']" |                       :class="{ | ||||||
|  |                         'components-filter': item.isInit === '1', | ||||||
|  |                         'active': groupIndex === j && activeIndex === i | ||||||
|  |                       }" | ||||||
|                       @click.stop="groupIndex = j, activeIndex = i, isGroup = false" |                       @click.stop="groupIndex = j, activeIndex = i, isGroup = false" | ||||||
|                       :key="i"> |                       :key="i"> | ||||||
|                       <div class="left-item__item--remove" title="删除字段" v-show="groupIndex === j && activeIndex === i" @click.stop="removeItem(j, i)"> |                       <div class="left-item__item--remove" title="删除字段" v-show="item.isInit !== '1' && groupIndex === j && activeIndex === i" @click.stop="removeItem(j, i)"> | ||||||
|                         <i class="iconfont iconDelete"></i> |                         <i class="iconfont iconDelete"></i> | ||||||
|                         <span>删除字段</span> |                         <span>删除字段</span> | ||||||
|                       </div> |                       </div> | ||||||
| @@ -69,6 +73,16 @@ | |||||||
|                         <template v-if="(item.type === 'textarea')"> |                         <template v-if="(item.type === 'textarea')"> | ||||||
|                           <el-input :disabled="item.disable === '1'" :rows="item.lineNumber" size="small" type="textarea" :placeholder="item.fieldTips" v-model="item.defaultValue"></el-input> |                           <el-input :disabled="item.disable === '1'" :rows="item.lineNumber" size="small" type="textarea" :placeholder="item.fieldTips" v-model="item.defaultValue"></el-input> | ||||||
|                         </template> |                         </template> | ||||||
|  |                         <template v-if="(item.type === 'resident')"> | ||||||
|  |                           <el-input :disabled="item.disable === '1'" size="small" placeholder="请选择人员" v-model="item.defaultValue"> | ||||||
|  |                             <template slot="append">选择人员</template> | ||||||
|  |                           </el-input> | ||||||
|  |                         </template> | ||||||
|  |                         <template v-if="(item.type === 'gird')"> | ||||||
|  |                           <el-input :disabled="item.disable === '1'" size="small" placeholder="请选择网格" v-model="item.defaultValue"> | ||||||
|  |                             <template slot="append">选择网格</template> | ||||||
|  |                           </el-input> | ||||||
|  |                         </template> | ||||||
|                         <template v-if="item.type === 'radio'"> |                         <template v-if="item.type === 'radio'"> | ||||||
|                           <el-radio-group v-model="item.defaultValue" :disabled="item.disable === '1'"> |                           <el-radio-group v-model="item.defaultValue" :disabled="item.disable === '1'"> | ||||||
|                             <el-radio :label="field.label" v-for="(field, index) in item.options" :key="index">{{ field.label }}</el-radio> |                             <el-radio :label="field.label" v-for="(field, index) in item.options" :key="index">{{ field.label }}</el-radio> | ||||||
| @@ -110,11 +124,10 @@ | |||||||
|                         <template v-if="item.type === 'area'"> |                         <template v-if="item.type === 'area'"> | ||||||
|                           <ai-area-get |                           <ai-area-get | ||||||
|                             :instance="instance" |                             :instance="instance" | ||||||
|                             always-show |                             always-show /> | ||||||
|                           /> |  | ||||||
|                         </template> |                         </template> | ||||||
|                         <template v-if="item.type === 'select'"> |                         <template v-if="item.type === 'select'"> | ||||||
|                           <el-select :disabled="item.disable === '1'" size="small" :placeholder="item.fieldTips" v-model="item.defaultValue"> |                           <el-select :disabled="item.disable === '1'" style="width: 100%;" size="small" :placeholder="item.fieldTips" v-model="item.defaultValue"> | ||||||
|                             <el-option |                             <el-option | ||||||
|                               v-for="(filed, index) in item.options" |                               v-for="(filed, index) in item.options" | ||||||
|                               :key="index" |                               :key="index" | ||||||
| @@ -153,7 +166,7 @@ | |||||||
|           <el-input placeholder="请输入分组名称" :maxlength="32" show-word-limit v-model="currTarget.groupName"></el-input> |           <el-input placeholder="请输入分组名称" :maxlength="32" show-word-limit v-model="currTarget.groupName"></el-input> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div class="layout-right__del" @click="removeGroup" v-if="isGroup && targetList.length > 1"> |       <div class="layout-right__del" @click="removeGroup" v-if="isGroup && targetList.length > 1 && currTarget.isInit !== '1'"> | ||||||
|         <span>删除分组</span> |         <span>删除分组</span> | ||||||
|       </div> |       </div> | ||||||
|       <div class="right-item" v-if="activeIndex > -1"> |       <div class="right-item" v-if="activeIndex > -1"> | ||||||
| @@ -360,7 +373,8 @@ | |||||||
|       params: Object, |       params: Object, | ||||||
|       type: String, |       type: String, | ||||||
|       areaId: String, |       areaId: String, | ||||||
|       value: Array |       value: Array, | ||||||
|  |       appType: String | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     components: { |     components: { | ||||||
| @@ -483,6 +497,9 @@ | |||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     mounted () { |     mounted () { | ||||||
|  |       if (this.appType && !this.value.length) { | ||||||
|  |         this.getInitFileds() | ||||||
|  |       } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     methods: { |     methods: { | ||||||
| @@ -509,6 +526,56 @@ | |||||||
|         }) |         }) | ||||||
|       }, |       }, | ||||||
|  |  | ||||||
|  |       getInitFileds () { | ||||||
|  |         this.instance.post(`/app/appapplicationinfo/queryInitTable?appType=${this.appType}`).then(res => { | ||||||
|  |           if (res.code === 0) { | ||||||
|  |             let arr = res.data | ||||||
|  |             let groups = this.unique(arr.map(v => v.groupName)) | ||||||
|  |             this.targetList = groups.map(groupName => { | ||||||
|  |               const column = arr.filter(v => v.groupName === groupName).map(item => { | ||||||
|  |                 if (['select', 'checkbox', 'radio'].includes(item.type)) { | ||||||
|  |                   item.options = item.selectValues.split('`').map(v => { | ||||||
|  |                     return { | ||||||
|  |                       label: v, | ||||||
|  |                       value: '' | ||||||
|  |                     } | ||||||
|  |                   }) | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 if (item.type === 'checkbox' && item.defaultValue) { | ||||||
|  |                   item.defaultValue = item.defaultValue.split('`') | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 if (item.grid) { | ||||||
|  |                   item.grid = Number(item.grid) | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 return item | ||||||
|  |               }) | ||||||
|  |  | ||||||
|  |               return { | ||||||
|  |                 type: 'group', | ||||||
|  |                 fieldName: '卡片', | ||||||
|  |                 fixedLabel: '卡片', | ||||||
|  |                 icon: 'iconpic', | ||||||
|  |                 groupName, | ||||||
|  |                 column: column, | ||||||
|  |                 isInit: '1' | ||||||
|  |               } | ||||||
|  |             }) | ||||||
|  |  | ||||||
|  |             this.targetList.push({ | ||||||
|  |               type: 'group', | ||||||
|  |               fieldName: '卡片', | ||||||
|  |               fixedLabel: '卡片', | ||||||
|  |               icon: 'iconpic', | ||||||
|  |               groupName: '基础信息', | ||||||
|  |               column: [] | ||||||
|  |             }) | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |       }, | ||||||
|  |  | ||||||
|       onConfirm () { |       onConfirm () { | ||||||
|         let result = [] |         let result = [] | ||||||
|         this.targetList.forEach((group, i) => { |         this.targetList.forEach((group, i) => { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user