|
|
@ -1,28 +1,44 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div :id="formId" class="resi-container"> |
|
|
<div :id="formId" |
|
|
<el-form :ref="formId" class="resi-form" :model="form" :rules="rulesForm" :label-width="labelWidth"> |
|
|
class="resi-container"> |
|
|
|
|
|
<el-form :ref="formId" |
|
|
|
|
|
class="resi-form" |
|
|
|
|
|
:model="form" |
|
|
|
|
|
:rules="rulesForm" |
|
|
|
|
|
:label-width="labelWidth"> |
|
|
<template v-if="supportAdd"> |
|
|
<template v-if="supportAdd"> |
|
|
<el-row style="margin-bottom: 10px;"> |
|
|
<el-row style="margin-bottom: 10px;"> |
|
|
<el-col :span="24"> |
|
|
<el-col :span="24"> |
|
|
<el-button icon="el-icon-plus" size="small" @click="handleAddRow"></el-button> |
|
|
<el-button icon="el-icon-plus" |
|
|
|
|
|
size="small" |
|
|
|
|
|
@click="handleAddRow"></el-button> |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
<edit-form v-for="(item, index) in addList" :key="index" :ref="'baseForms' + index" :columns="3" |
|
|
<edit-form v-for="(item, index) in addList" |
|
|
:form-list="item.itemList || formList" :form-id="'baseForms' + item.row" /> |
|
|
:key="index" |
|
|
|
|
|
:ref="'baseForms' + index" |
|
|
|
|
|
:columns="3" |
|
|
|
|
|
:form-list="item.itemList || formList" |
|
|
|
|
|
:form-id="'baseForms' + item.row" /> |
|
|
</template> |
|
|
</template> |
|
|
<template v-else> |
|
|
<template v-else> |
|
|
<el-row v-if="fixed" class="resi-row"> |
|
|
<el-row v-if="fixed" |
|
|
|
|
|
class="resi-row"> |
|
|
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> --> |
|
|
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> --> |
|
|
<el-col :span="6"> |
|
|
<el-col :span="6"> |
|
|
<el-form-item prop="GRID_ID" label="所属网格"> |
|
|
<el-form-item prop="GRID_ID" |
|
|
|
|
|
label="所属网格"> |
|
|
<!-- <div class="resi-cell"> --> |
|
|
<!-- <div class="resi-cell"> --> |
|
|
<!-- <div class="resi-cell-label">{{n.label}}</div> --> |
|
|
<!-- <div class="resi-cell-label">{{n.label}}</div> --> |
|
|
<div class="resi-cell-value"> |
|
|
<div class="resi-cell-value"> |
|
|
<el-select v-model.trim="form.GRID_ID" :disabled="disabled" placeholder="请选择网格" size="small" |
|
|
<el-select v-model.trim="form.GRID_ID" |
|
|
clearable class="resi-cell-select" @change="handleChangeGrid" |
|
|
:disabled="disabled" |
|
|
> |
|
|
placeholder="请选择网格" |
|
|
<el-option |
|
|
size="small" |
|
|
v-for="item in optionsG" |
|
|
clearable |
|
|
|
|
|
class="resi-cell-select" |
|
|
|
|
|
@change="handleChangeGrid"> |
|
|
|
|
|
<el-option v-for="item in optionsG" |
|
|
:key="item.value" |
|
|
:key="item.value" |
|
|
:label="item.label" |
|
|
:label="item.label" |
|
|
:value="item.value"> |
|
|
:value="item.value"> |
|
|
@ -33,15 +49,19 @@ |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> |
|
|
</el-col> |
|
|
<el-col :span="18"> |
|
|
<el-col :span="18"> |
|
|
<el-form-item label="所属房屋" required> |
|
|
<el-form-item label="所属房屋" |
|
|
|
|
|
required> |
|
|
<div class="resi-cell-value"> |
|
|
<div class="resi-cell-value"> |
|
|
<div class="resi-cell-col"> |
|
|
<div class="resi-cell-col"> |
|
|
<el-form-item prop="VILLAGE_ID"> |
|
|
<el-form-item prop="VILLAGE_ID"> |
|
|
<el-select v-model.trim="form.VILLAGE_ID" placeholder="请选择小区" size="small" |
|
|
<el-select v-model.trim="form.VILLAGE_ID" |
|
|
clearable class="resi-cell-select" :disabled="disabled" @change="handleChangeV" |
|
|
placeholder="请选择小区" |
|
|
> |
|
|
size="small" |
|
|
<el-option |
|
|
clearable |
|
|
v-for="item in optionsV" |
|
|
class="resi-cell-select" |
|
|
|
|
|
:disabled="disabled" |
|
|
|
|
|
@change="handleChangeV"> |
|
|
|
|
|
<el-option v-for="item in optionsV" |
|
|
:key="item.value" |
|
|
:key="item.value" |
|
|
:label="item.label" |
|
|
:label="item.label" |
|
|
:value="item.value"> |
|
|
:value="item.value"> |
|
|
@ -49,11 +69,14 @@ |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item prop="BUILD_ID"> |
|
|
<el-form-item prop="BUILD_ID"> |
|
|
<el-select v-model.trim="form.BUILD_ID" placeholder="请选择楼号" size="small" |
|
|
<el-select v-model.trim="form.BUILD_ID" |
|
|
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle" @change="handleChangeB" |
|
|
placeholder="请选择楼号" |
|
|
> |
|
|
size="small" |
|
|
<el-option |
|
|
clearable |
|
|
v-for="item in optionsB" |
|
|
:disabled="disabled" |
|
|
|
|
|
class="resi-cell-select resi-cell-select-middle" |
|
|
|
|
|
@change="handleChangeB"> |
|
|
|
|
|
<el-option v-for="item in optionsB" |
|
|
:key="item.value" |
|
|
:key="item.value" |
|
|
:label="item.label" |
|
|
:label="item.label" |
|
|
:value="item.value"> |
|
|
:value="item.value"> |
|
|
@ -61,11 +84,14 @@ |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item prop="UNIT_ID"> |
|
|
<el-form-item prop="UNIT_ID"> |
|
|
<el-select v-model.trim="form.UNIT_ID" placeholder="请选择单元" size="small" |
|
|
<el-select v-model.trim="form.UNIT_ID" |
|
|
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle" @change="handleChangeD" |
|
|
placeholder="请选择单元" |
|
|
> |
|
|
size="small" |
|
|
<el-option |
|
|
clearable |
|
|
v-for="item in optionsD" |
|
|
:disabled="disabled" |
|
|
|
|
|
class="resi-cell-select resi-cell-select-middle" |
|
|
|
|
|
@change="handleChangeD"> |
|
|
|
|
|
<el-option v-for="item in optionsD" |
|
|
:key="item.value" |
|
|
:key="item.value" |
|
|
:label="item.label" |
|
|
:label="item.label" |
|
|
:value="item.value"> |
|
|
:value="item.value"> |
|
|
@ -73,12 +99,14 @@ |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item prop="HOME_ID"> |
|
|
<el-form-item prop="HOME_ID"> |
|
|
<el-select v-model.trim="form.HOME_ID" placeholder="请选择房号" size="small" |
|
|
<el-select v-model.trim="form.HOME_ID" |
|
|
clearable :disabled="disabled" class="resi-cell-select resi-cell-select-middle" |
|
|
placeholder="请选择房号" |
|
|
@change="handleChangeH" |
|
|
size="small" |
|
|
> |
|
|
clearable |
|
|
<el-option |
|
|
:disabled="disabled" |
|
|
v-for="item in optionsH" |
|
|
class="resi-cell-select resi-cell-select-middle" |
|
|
|
|
|
@change="handleChangeH"> |
|
|
|
|
|
<el-option v-for="item in optionsH" |
|
|
:key="item.value" |
|
|
:key="item.value" |
|
|
:label="item.label" |
|
|
:label="item.label" |
|
|
:value="item.value"> |
|
|
:value="item.value"> |
|
|
@ -134,34 +162,35 @@ |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-col> --> |
|
|
</el-col> --> |
|
|
</el-row> |
|
|
</el-row> |
|
|
<el-row v-for="(item, index) in sliceList(formList, columns)" :key="index" class="resi-row"> |
|
|
<el-row v-for="(item, index) in sliceList(formList, columns)" |
|
|
|
|
|
:key="index" |
|
|
|
|
|
class="resi-row"> |
|
|
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> --> |
|
|
<!-- <el-col v-for="n in item" :key="n.id" :span="n.itemType === 'textarea'&&24 || (24/columns)"> --> |
|
|
<el-col v-for="n in item" :key="n.itemId" :span="item.length === 1 ? 24 : (24/columns)" |
|
|
<el-col v-for="n in item" |
|
|
|
|
|
:key="n.itemId" |
|
|
|
|
|
:span="item.length === 1 ? 24 : (24/columns)" |
|
|
:style="n.itemType === 'divider' && 'display: none;'"> |
|
|
:style="n.itemType === 'divider' && 'display: none;'"> |
|
|
<el-form-item :prop="n.columnName" :label="n.label"> |
|
|
<el-form-item :prop="n.columnName" |
|
|
|
|
|
:label="n.label"> |
|
|
<!-- <div class="resi-cell"> --> |
|
|
<!-- <div class="resi-cell"> --> |
|
|
<!-- <div class="resi-cell-label">{{n.label}}</div> --> |
|
|
<!-- <div class="resi-cell-label">{{n.label}}</div> --> |
|
|
<div class="resi-cell-value"> |
|
|
<div class="resi-cell-value"> |
|
|
<template v-if="n.itemType === 'input' || n.itemType === 'textarea'"> |
|
|
<template v-if="n.itemType === 'input' || n.itemType === 'textarea'"> |
|
|
<el-input |
|
|
<el-input v-if="n.validType" |
|
|
v-if="n.validType" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
class="resi-cell-input" |
|
|
class="resi-cell-input" |
|
|
size="small" |
|
|
size="small" |
|
|
clearable |
|
|
clearable |
|
|
placeholder="请输入内容" |
|
|
placeholder="请输入内容"> |
|
|
> |
|
|
|
|
|
</el-input> |
|
|
</el-input> |
|
|
<el-input |
|
|
<el-input v-else |
|
|
v-else |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
class="resi-cell-input" |
|
|
class="resi-cell-input" |
|
|
size="small" |
|
|
size="small" |
|
|
clearable |
|
|
clearable |
|
|
placeholder="请输入内容" |
|
|
placeholder="请输入内容"> |
|
|
> |
|
|
|
|
|
</el-input> |
|
|
</el-input> |
|
|
</template> |
|
|
</template> |
|
|
<!-- <template v-if="n.itemType === 'textarea'"> |
|
|
<!-- <template v-if="n.itemType === 'textarea'"> |
|
|
@ -175,8 +204,7 @@ |
|
|
> |
|
|
> |
|
|
</el-input> |
|
|
</el-input> |
|
|
</template> --> |
|
|
</template> --> |
|
|
<el-date-picker |
|
|
<el-date-picker v-else-if="n.itemType === 'datepicker'" |
|
|
v-else-if="n.itemType === 'datepicker'" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
class="resi-cell-input" |
|
|
class="resi-cell-input" |
|
|
@ -187,8 +215,7 @@ |
|
|
format="yyyy 年 MM 月 dd 日" |
|
|
format="yyyy 年 MM 月 dd 日" |
|
|
value-format="yyyy-MM-dd"> |
|
|
value-format="yyyy-MM-dd"> |
|
|
</el-date-picker> |
|
|
</el-date-picker> |
|
|
<el-date-picker |
|
|
<el-date-picker v-else-if="n.itemType === 'daterange'" |
|
|
v-else-if="n.itemType === 'daterange'" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
type="daterange" |
|
|
type="daterange" |
|
|
@ -197,17 +224,14 @@ |
|
|
value-format="yyyy-MM-dd" |
|
|
value-format="yyyy-MM-dd" |
|
|
range-separator="至" |
|
|
range-separator="至" |
|
|
start-placeholder="开始日期" |
|
|
start-placeholder="开始日期" |
|
|
end-placeholder="结束日期" |
|
|
end-placeholder="结束日期"> |
|
|
> |
|
|
|
|
|
</el-date-picker> |
|
|
</el-date-picker> |
|
|
<el-time-picker |
|
|
<el-time-picker v-else-if="n.itemType === 'timepicker'" |
|
|
v-else-if="n.itemType === 'timepicker'" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
placeholder="任意时间点"> |
|
|
placeholder="任意时间点"> |
|
|
</el-time-picker> |
|
|
</el-time-picker> |
|
|
<el-time-picker |
|
|
<el-time-picker v-else-if="n.itemType === 'timerange'" |
|
|
v-else-if="n.itemType === 'timerange'" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
is-range |
|
|
is-range |
|
|
@ -216,12 +240,15 @@ |
|
|
end-placeholder="结束时间" |
|
|
end-placeholder="结束时间" |
|
|
placeholder="选择时间范围"> |
|
|
placeholder="选择时间范围"> |
|
|
</el-time-picker> |
|
|
</el-time-picker> |
|
|
<el-select v-else-if="n.itemType === 'select'" v-model.trim="form[n.columnName]" |
|
|
<el-select v-else-if="n.itemType === 'select'" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
:multiple="n.multiSelect" |
|
|
:multiple="n.multiSelect" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
placeholder="请选择" size="small" clearable class="resi-cell-select"> |
|
|
placeholder="请选择" |
|
|
<el-option |
|
|
size="small" |
|
|
v-for="item in n.options || options" |
|
|
clearable |
|
|
|
|
|
class="resi-cell-select"> |
|
|
|
|
|
<el-option v-for="item in n.options || options" |
|
|
:key="item.value" |
|
|
:key="item.value" |
|
|
:label="item.label" |
|
|
:label="item.label" |
|
|
:value="item.value"> |
|
|
:value="item.value"> |
|
|
@ -231,19 +258,20 @@ |
|
|
:options="options" |
|
|
:options="options" |
|
|
:props="{ checkStrictly: true }" |
|
|
:props="{ checkStrictly: true }" |
|
|
clearable></el-cascader> --> |
|
|
clearable></el-cascader> --> |
|
|
<el-cascader |
|
|
<el-cascader v-else-if="n.itemType === 'cascader'" |
|
|
v-else-if="n.itemType === 'cascader'" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
v-model.trim="form[n.columnName]" |
|
|
:options="n.options" |
|
|
:options="n.options" |
|
|
:props="{ checkStrictly: true }" |
|
|
:props="{ checkStrictly: true }" |
|
|
:disabled="disabled" |
|
|
:disabled="disabled" |
|
|
:props="{ emitPath: false }" |
|
|
|
|
|
clearable |
|
|
clearable |
|
|
size="small" |
|
|
size="small" |
|
|
class="resi-cell-select"> |
|
|
class="resi-cell-select"> |
|
|
</el-cascader> |
|
|
</el-cascader> |
|
|
<template v-else-if="n.itemType === 'radio'"> |
|
|
<template v-else-if="n.itemType === 'radio'"> |
|
|
<el-radio v-for="ns in n.options" :key="ns.value" v-model.trim="form[n.columnName]" :disabled="disabled" |
|
|
<el-radio v-for="ns in n.options" |
|
|
|
|
|
:key="ns.value" |
|
|
|
|
|
v-model.trim="form[n.columnName]" |
|
|
|
|
|
:disabled="disabled" |
|
|
:label="ns.value"> |
|
|
:label="ns.value"> |
|
|
{{ ns.label }} |
|
|
{{ ns.label }} |
|
|
</el-radio> |
|
|
</el-radio> |
|
|
@ -251,7 +279,10 @@ |
|
|
</template> |
|
|
</template> |
|
|
<template v-else-if="n.itemType === 'checkbox'"> |
|
|
<template v-else-if="n.itemType === 'checkbox'"> |
|
|
<el-checkbox-group v-model.trim="form[n.columnName]"> |
|
|
<el-checkbox-group v-model.trim="form[n.columnName]"> |
|
|
<el-checkbox v-for="ns in n.options" :key="ns.value" :label="ns.value" :disabled="disabled">{{ns.label}}</el-checkbox> |
|
|
<el-checkbox v-for="ns in n.options" |
|
|
|
|
|
:key="ns.value" |
|
|
|
|
|
:label="ns.value" |
|
|
|
|
|
:disabled="disabled">{{ns.label}}</el-checkbox> |
|
|
<!-- <el-checkbox label="n.la"></el-checkbox> --> |
|
|
<!-- <el-checkbox label="n.la"></el-checkbox> --> |
|
|
</el-checkbox-group> |
|
|
</el-checkbox-group> |
|
|
</template> |
|
|
</template> |
|
|
@ -349,7 +380,7 @@ export default { |
|
|
_form = { ...obj } |
|
|
_form = { ...obj } |
|
|
// return _form |
|
|
// return _form |
|
|
} |
|
|
} |
|
|
const itemTypes = ['daterange', 'timerange'] |
|
|
const itemTypes = ['cascader', 'daterange', 'timerange'] |
|
|
arr.forEach(item => { |
|
|
arr.forEach(item => { |
|
|
if (item.multiSelect || itemTypes.includes(item.itemType)) { |
|
|
if (item.multiSelect || itemTypes.includes(item.itemType)) { |
|
|
if (item.columnValue && item.columnValue.indexOf(',') > -1) _form[item.columnName] = item.columnValue.split(',') |
|
|
if (item.columnValue && item.columnValue.indexOf(',') > -1) _form[item.columnName] = item.columnValue.split(',') |
|
|
@ -808,17 +839,16 @@ export default { |
|
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
<style lang="scss" scoped> |
|
|
.resi-form { |
|
|
.resi-form { |
|
|
:deep .el-date-editor.el-input, .el-date-editor.el-input__inner { |
|
|
:deep .el-date-editor.el-input, |
|
|
|
|
|
.el-date-editor.el-input__inner { |
|
|
width: 100% !important; |
|
|
width: 100% !important; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
.resi-cell-value .resi-cell-input { |
|
|
.resi-cell-value .resi-cell-input { |
|
|
width: 190px; |
|
|
width: 190px; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
</style> |
|
|
</style> |
|
|
<style lang="scss" scoped> |
|
|
<style lang="scss" scoped> |
|
|
|
|
|
|
|
|
.resi-form .resi-row { |
|
|
.resi-form .resi-row { |
|
|
margin-bottom: 0; |
|
|
margin-bottom: 0; |
|
|
} |
|
|
} |
|
|
|