Browse Source

合并五大图层

test
jiangyy 3 years ago
parent
commit
a82f146fc1
  1. 222
      src/views/components/editResi.vue

222
src/views/components/editResi.vue

@ -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(',')
@ -382,7 +413,7 @@ export default {
} }
let form = initForm(this.formInfo, this.formList) let form = initForm(this.formInfo, this.formList)
let rules = initRules(this.formList) let rules = initRules(this.formList)
let tempFormList = [ ...this.formList ] let tempFormList = [...this.formList]
let constForm = { let constForm = {
...form ...form
} }
@ -526,13 +557,13 @@ export default {
} }
}) })
}, },
getTreeData(data){ getTreeData (data) {
if (!Array.isArray(data)) return [] if (!Array.isArray(data)) return []
let arr = data.map(item => { let arr = data.map(item => {
let _item = {} let _item = {}
if (item.children) { if (item.children) {
if (item.children.length === 0) _item = { ...item, children: undefined } if (item.children.length === 0) _item = { ...item, children: undefined }
else _item = { ...item, children: this.getTreeData(item.children)} else _item = { ...item, children: this.getTreeData(item.children) }
} else { } else {
_item = { ...item } _item = { ...item }
} }
@ -614,9 +645,9 @@ export default {
this.getHouseList() this.getHouseList()
}, },
// //
handleChangeH(val){ handleChangeH (val) {
let item = this.optionsH.find(item => item.value === val); let item = this.optionsH.find(item => item.value === val);
if(item && item.type == '1'){ if (item && item.type == '1') {
this.form.IS_TENANT = '1' this.form.IS_TENANT = '1'
console.log('item-----', item) console.log('item-----', item)
} else this.form.IS_TENANT = '0' } else this.form.IS_TENANT = '0'
@ -625,7 +656,7 @@ export default {
let arr = [] let arr = []
this.addList.forEach(item => { this.addList.forEach(item => {
// console.log('handlerMuscForm----000', this.$refs['baseForms' + item.row || item][0].handleForm()) // console.log('handlerMuscForm----000', this.$refs['baseForms' + item.row || item][0].handleForm())
arr.push([ ...this.$refs['baseForms' + item.row][0].handleForm() ]) arr.push([...this.$refs['baseForms' + item.row][0].handleForm()])
}) })
if (arr.length === 0) return arr if (arr.length === 0) return arr
let arr2 = arr.reduce(function (a, b) { return a.concat(b) }) let arr2 = arr.reduce(function (a, b) { return a.concat(b) })
@ -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;
} }
@ -826,31 +856,31 @@ export default {
// .resi-form .resi-cell { // .resi-form .resi-cell {
// display: flex; // display: flex;
// align-items: center; // align-items: center;
// .resi-cell-label { // .resi-cell-label {
// width: 70px; // width: 70px;
// box-sizing: border-box; // box-sizing: border-box;
// margin-right: 15px; // margin-right: 15px;
// text-align: right; // text-align: right;
// } // }
// .resi-cell-value-radio { // .resi-cell-value-radio {
// display: flex; // display: flex;
// align-items: center; // align-items: center;
// min-height: 36px; // min-height: 36px;
// } // }
// .resi-cell-value .resi-cell-input { // .resi-cell-value .resi-cell-input {
// width: 180px; // width: 180px;
// } // }
.resi-cell-value .resi-cell-textarea { .resi-cell-value .resi-cell-textarea {
width: 300px; width: 300px;
} }
.resi-cell-col { .resi-cell-col {
display: flex; display: flex;
.el-form-item { .el-form-item {
margin-right: 10px; margin-right: 10px;
} }
} }
.resi-cell-select { .resi-cell-select {
width: 190px; width: 190px;
box-sizing: border-box; box-sizing: border-box;
margin-right: 10px; margin-right: 10px;
@ -860,9 +890,9 @@ export default {
&-small { &-small {
width: 88px; width: 88px;
} }
} }
.resi-cell-select:last-child { .resi-cell-select:last-child {
margin-right: 0; margin-right: 0;
} }
// } // }
</style> </style>

Loading…
Cancel
Save