配置表单
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