配置表单

This commit is contained in:
yanran200730
2022-03-09 15:19:22 +08:00
parent 975e4599d1
commit ecc1500d50
2 changed files with 75 additions and 8 deletions

View File

@@ -16,7 +16,7 @@
</div>
</div>
<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
ref="config"
:showListFields="showListFields"

View File

@@ -51,6 +51,7 @@
scroll
@end="onElEnd"
element="div"
filter=".components-filter"
draggable=".components-item"
group="componentsGroup"
:sort="true">
@@ -58,10 +59,13 @@
class="components-item"
v-for="(item, i) in group.column"
: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"
: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>
<span>删除字段</span>
</div>
@@ -69,6 +73,16 @@
<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>
</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'">
<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>
@@ -110,11 +124,10 @@
<template v-if="item.type === 'area'">
<ai-area-get
:instance="instance"
always-show
/>
always-show />
</template>
<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
v-for="(filed, index) in item.options"
:key="index"
@@ -153,7 +166,7 @@
<el-input placeholder="请输入分组名称" :maxlength="32" show-word-limit v-model="currTarget.groupName"></el-input>
</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>
</div>
<div class="right-item" v-if="activeIndex > -1">
@@ -360,7 +373,8 @@
params: Object,
type: String,
areaId: String,
value: Array
value: Array,
appType: String
},
components: {
@@ -483,6 +497,9 @@
},
mounted () {
if (this.appType && !this.value.length) {
this.getInitFileds()
}
},
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 () {
let result = []
this.targetList.forEach((group, i) => {