|
|
@ -1,26 +1,51 @@ |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div class="dialog-h-content scroll-h"> |
|
|
|
<el-form ref="ref_form" :inline="true" :model="dataForm" :rules="dataRule" :disabled="formType === 'detail'" class="form"> |
|
|
|
<el-form-item label="所属小区" label-width="150px" style="display: block"> |
|
|
|
<span>{{ agencyObj.agencyName }}—{{ agencyObj.gridName }}—{{ agencyObj.label }}</span> |
|
|
|
</el-form-item> |
|
|
|
<div> |
|
|
|
<div class="dialog-h-content scroll-h"> |
|
|
|
<el-form ref="ref_form" |
|
|
|
:inline="true" |
|
|
|
:model="dataForm" |
|
|
|
:rules="dataRule" |
|
|
|
:disabled="formType === 'detail'" |
|
|
|
class="form"> |
|
|
|
<el-form-item label="所属小区" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<span>{{ agencyObj.agencyName }}—{{ agencyObj.gridName }}—{{ agencyObj.label }}</span> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="楼栋名称" prop="buildingName" label-width="150px" style="display: block"> |
|
|
|
<el-input class="item_width_1" maxlength="10" placeholder="请输入楼栋名称" v-model="dataForm.buildingName"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼栋编码" prop="coding" label-width="150px" style="display: block"> |
|
|
|
<el-input class="item_width_2" maxlength="50" placeholder="请输入楼栋编码" v-model="dataForm.coding"></el-input> |
|
|
|
<el-button style="margin-left: 10px" type="primary" size="small" @click="handleCode">生成</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼栋类型" prop="type" label-width="150px" style="display: block"> |
|
|
|
<el-radio-group v-model="buildType"> |
|
|
|
<el-radio :label="'1'">商品房</el-radio> |
|
|
|
<el-radio :label="'2'">自建房</el-radio> |
|
|
|
<el-radio :label="'3'">别墅</el-radio> |
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="排序" |
|
|
|
<el-form-item label="楼栋名称" |
|
|
|
prop="buildingName" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_1" |
|
|
|
maxlength="10" |
|
|
|
placeholder="请输入楼栋名称" |
|
|
|
v-model="dataForm.buildingName"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼栋编码" |
|
|
|
prop="coding" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_2" |
|
|
|
maxlength="50" |
|
|
|
placeholder="请输入楼栋编码" |
|
|
|
v-model="dataForm.coding"></el-input> |
|
|
|
<el-button style="margin-left: 10px" |
|
|
|
type="primary" |
|
|
|
size="small" |
|
|
|
@click="handleCode">生成</el-button> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼栋类型" |
|
|
|
prop="type" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-radio-group v-model="buildType"> |
|
|
|
<el-radio :label="'1'">商品房</el-radio> |
|
|
|
<el-radio :label="'2'">自建房</el-radio> |
|
|
|
<el-radio :label="'3'">别墅</el-radio> |
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="排序" |
|
|
|
prop="sort" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
@ -28,67 +53,122 @@ |
|
|
|
v-model="dataForm.sort" |
|
|
|
label="排序"></el-input-number> |
|
|
|
</el-form-item> --> |
|
|
|
<el-form-item label="单元数" style="display: block" prop="totalUnitNum" label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" v-model="dataForm.totalUnitNum" :min="1" :max="9999" label="单元数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="层数" style="display: block" prop="totalFloorNum" label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" v-model="dataForm.totalFloorNum" :min="0" :max="9999" label="层数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="总户数" style="display: block" prop="totalHouseNum" label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" v-model="dataForm.totalHouseNum" :min="0" :max="9999" label="总户数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="人口数" style="display: block" prop="realPerson" label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" v-model="dataForm.realPerson" :min="0" :max="9999" label="人口数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼长/单元长姓名" prop="buildingLeaderName" label-width="150px" style="display: block"> |
|
|
|
<el-input class="item_width_1" placeholder="请输入楼长/单元长姓名" v-model="dataForm.buildingLeaderName"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="单元数" |
|
|
|
style="display: block" |
|
|
|
prop="totalUnitNum" |
|
|
|
label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" |
|
|
|
v-model="dataForm.totalUnitNum" |
|
|
|
:min="1" |
|
|
|
:max="9999" |
|
|
|
label="单元数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="层数" |
|
|
|
style="display: block" |
|
|
|
prop="totalFloorNum" |
|
|
|
label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" |
|
|
|
v-model="dataForm.totalFloorNum" |
|
|
|
:min="0" |
|
|
|
:max="9999" |
|
|
|
label="层数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="总户数" |
|
|
|
style="display: block" |
|
|
|
prop="totalHouseNum" |
|
|
|
label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" |
|
|
|
v-model="dataForm.totalHouseNum" |
|
|
|
:min="0" |
|
|
|
:max="9999" |
|
|
|
label="总户数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="人口数" |
|
|
|
style="display: block" |
|
|
|
prop="realPerson" |
|
|
|
label-width="150px"> |
|
|
|
<el-input-number class="item_width_4" |
|
|
|
v-model="dataForm.realPerson" |
|
|
|
:min="0" |
|
|
|
:max="9999" |
|
|
|
label="人口数"></el-input-number> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼长/单元长姓名" |
|
|
|
prop="buildingLeaderName" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_1" |
|
|
|
placeholder="请输入楼长/单元长姓名" |
|
|
|
v-model="dataForm.buildingLeaderName"></el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="楼长/单元长电话" prop="buildingLeaderMobile" label-width="150px" style="display: block"> |
|
|
|
<el-input class="item_width_1" type="number" placeholder="请输入楼长/单元长电话" v-model="dataForm.buildingLeaderMobile"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="身份证号" prop="buildingLeaderIdCard" label-width="150px"> |
|
|
|
<el-input v-model="dataForm.buildingLeaderIdCard" class="item_width_2" size="small" clearable placeholder="请输入"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="类型" prop="buildingLeaderType" label-width="150px"> |
|
|
|
<el-form-item label="楼长/单元长电话" |
|
|
|
prop="buildingLeaderMobile" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_1" |
|
|
|
type="number" |
|
|
|
placeholder="请输入楼长/单元长电话" |
|
|
|
v-model="dataForm.buildingLeaderMobile"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="身份证号" |
|
|
|
prop="buildingLeaderIdCard" |
|
|
|
label-width="150px"> |
|
|
|
<el-input v-model="dataForm.buildingLeaderIdCard" |
|
|
|
class="item_width_2" |
|
|
|
size="small" |
|
|
|
clearable |
|
|
|
placeholder="请输入"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="类型" prop="buildingLeaderType" label-width="150px"> |
|
|
|
<el-select class="item_width_2" v-model="dataForm.buildingLeaderType" placeholder="请选择" filterable multiple clearable> |
|
|
|
<el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> --> |
|
|
|
<el-form-item label="地图位置" prop="longitude" label-width="150px" style="display: block"> |
|
|
|
<div style="width: 500px"> |
|
|
|
<el-select |
|
|
|
v-model="searchValue" |
|
|
|
filterable |
|
|
|
style="width: 500px" |
|
|
|
remote |
|
|
|
:reserve-keyword="true" |
|
|
|
placeholder="请输入关键词" |
|
|
|
:remote-method="remoteMethod" |
|
|
|
:loading="loading" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="(item, index) in searchOptions" |
|
|
|
@click.native="handleClickKey(index)" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
<div id="app_build" class="div_map"></div> |
|
|
|
</div> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼栋地址" prop="coordinatePosition" label-width="150px" style="display: block"> |
|
|
|
<!-- <span>{{ dataForm.coordinatePosition }}</span> --> |
|
|
|
<el-input class="item_width_1" placeholder="请选择楼栋地址" v-model="dataForm.coordinatePosition" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
<div class="div_btn"> |
|
|
|
<el-button size="small" @click="handleCancle">取 消</el-button> |
|
|
|
<el-button size="small" v-if="formType != 'detail'" type="primary" :disabled="btnDisable" @click="handleComfirm">确 定</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-form-item label="地图位置" |
|
|
|
prop="longitude" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<div style="width: 500px"> |
|
|
|
<el-select v-model="searchValue" |
|
|
|
filterable |
|
|
|
style="width: 500px" |
|
|
|
remote |
|
|
|
:reserve-keyword="true" |
|
|
|
placeholder="请输入关键词" |
|
|
|
:remote-method="remoteMethod" |
|
|
|
:loading="loading"> |
|
|
|
<el-option v-for="(item, index) in searchOptions" |
|
|
|
@click.native="handleClickKey(index)" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
<div id="app_build" |
|
|
|
class="div_map"></div> |
|
|
|
</div> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="楼栋地址" |
|
|
|
prop="coordinatePosition" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<!-- <span>{{ dataForm.coordinatePosition }}</span> --> |
|
|
|
<el-input class="item_width_1" |
|
|
|
placeholder="请选择楼栋地址" |
|
|
|
v-model="dataForm.coordinatePosition" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
<div class="div_btn"> |
|
|
|
<el-button size="small" |
|
|
|
@click="handleCancle">取 消</el-button> |
|
|
|
<el-button size="small" |
|
|
|
v-if="formType != 'detail'" |
|
|
|
type="primary" |
|
|
|
:disabled="btnDisable" |
|
|
|
@click="handleComfirm">确 定</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
@ -102,342 +182,342 @@ var markers; |
|
|
|
var infoWindowList; |
|
|
|
let loading; // 加载动画 |
|
|
|
export default { |
|
|
|
data() { |
|
|
|
const checkPhone = (rule, value, callback) => { |
|
|
|
if (value == '' || !value) { |
|
|
|
callback(); |
|
|
|
} else if (!/^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(1[|6|7|8][0-9]))\d{8}$/.test(value)) { |
|
|
|
callback(new Error('请输入正确的手机号格式')); |
|
|
|
} else { |
|
|
|
callback(); |
|
|
|
} |
|
|
|
}; |
|
|
|
// 验证身份证号 |
|
|
|
const checkCardId = (rule, value, callback) => { |
|
|
|
if (value == '' || !value) { |
|
|
|
callback(); |
|
|
|
} else if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)) { |
|
|
|
callback(new Error('请输入正确的身份证号')); |
|
|
|
} else { |
|
|
|
callback(); |
|
|
|
} |
|
|
|
}; |
|
|
|
return { |
|
|
|
typeList: [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '楼长' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '1', |
|
|
|
label: '单元长' |
|
|
|
} |
|
|
|
], |
|
|
|
formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 |
|
|
|
searchOptions: [], |
|
|
|
searchValue: '', |
|
|
|
resultList: [], |
|
|
|
loading: false, |
|
|
|
data() { |
|
|
|
const checkPhone = (rule, value, callback) => { |
|
|
|
if (value == '' || !value) { |
|
|
|
callback(); |
|
|
|
} else if (!/^1[3-9]\d{9}$/.test(value)) { |
|
|
|
callback(new Error('请输入正确的手机号格式')); |
|
|
|
} else { |
|
|
|
callback(); |
|
|
|
} |
|
|
|
}; |
|
|
|
// 验证身份证号 |
|
|
|
const checkCardId = (rule, value, callback) => { |
|
|
|
if (value == '' || !value) { |
|
|
|
callback(); |
|
|
|
} else if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)) { |
|
|
|
callback(new Error('请输入正确的身份证号')); |
|
|
|
} else { |
|
|
|
callback(); |
|
|
|
} |
|
|
|
}; |
|
|
|
return { |
|
|
|
typeList: [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '楼长' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '1', |
|
|
|
label: '单元长' |
|
|
|
} |
|
|
|
], |
|
|
|
formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 |
|
|
|
searchOptions: [], |
|
|
|
searchValue: '', |
|
|
|
resultList: [], |
|
|
|
loading: false, |
|
|
|
|
|
|
|
btnDisable: false, |
|
|
|
buildingId: '', //楼栋ID |
|
|
|
buildType: '1', |
|
|
|
dataForm: { |
|
|
|
agencyId: '', // 所属组织ID |
|
|
|
agencyName: '', |
|
|
|
gridId: '', //所属网格ID |
|
|
|
neighborHoodId: '', //所属小区id |
|
|
|
buildingName: '', //房屋名称 |
|
|
|
// sort: 0,//排序 |
|
|
|
totalUnitNum: 1, //单元数 |
|
|
|
totalFloorNum: 0, //层数 |
|
|
|
totalHouseNum: 0, //总户数 |
|
|
|
realPerson: 0, |
|
|
|
buildingLeaderName: '', //楼长姓名 |
|
|
|
buildingLeaderMobile: '', //楼长电话 |
|
|
|
buildingLeaderIdCard: '', // |
|
|
|
btnDisable: false, |
|
|
|
buildingId: '', //楼栋ID |
|
|
|
buildType: '1', |
|
|
|
dataForm: { |
|
|
|
agencyId: '', // 所属组织ID |
|
|
|
agencyName: '', |
|
|
|
gridId: '', //所属网格ID |
|
|
|
neighborHoodId: '', //所属小区id |
|
|
|
buildingName: '', //房屋名称 |
|
|
|
// sort: 0,//排序 |
|
|
|
totalUnitNum: 1, //单元数 |
|
|
|
totalFloorNum: 0, //层数 |
|
|
|
totalHouseNum: 0, //总户数 |
|
|
|
realPerson: 0, |
|
|
|
buildingLeaderName: '', //楼长姓名 |
|
|
|
buildingLeaderMobile: '', //楼长电话 |
|
|
|
buildingLeaderIdCard: '', // |
|
|
|
|
|
|
|
// buildingLeaderType: [], //房屋类型 |
|
|
|
coordinatePosition: '', |
|
|
|
sysCoding: '', |
|
|
|
coding: '', |
|
|
|
location: '', //坐标位置 |
|
|
|
longitude: '', //经度 |
|
|
|
latitude: '' //纬度 |
|
|
|
}, |
|
|
|
// buildingLeaderType: [], //房屋类型 |
|
|
|
coordinatePosition: '', |
|
|
|
sysCoding: '', |
|
|
|
coding: '', |
|
|
|
location: '', //坐标位置 |
|
|
|
longitude: '', //经度 |
|
|
|
latitude: '' //纬度 |
|
|
|
}, |
|
|
|
|
|
|
|
keyWords: '', |
|
|
|
agencyObj: {}, |
|
|
|
dataRule: { |
|
|
|
buildingName: [ |
|
|
|
{ required: true, message: '楼栋名称不能为空', trigger: 'blur' }, |
|
|
|
{ |
|
|
|
min: 1, |
|
|
|
max: 10, |
|
|
|
message: '小区名称长度在 1 到 10个字符', |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
// type: [{ required: true, message: '楼栋类型不能为空', trigger: 'blur' }], |
|
|
|
totalUnitNum: [{ required: true, message: '单元数不能为空', trigger: 'blur' }], |
|
|
|
coding: [{ required: true, message: '楼栋编码不能为空', trigger: 'blur' }], |
|
|
|
buildingLeaderMobile: [ |
|
|
|
{ |
|
|
|
validator: checkPhone, |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
buildingLeaderIdCard: [ |
|
|
|
{ |
|
|
|
validator: checkCardId, |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
] |
|
|
|
keyWords: '', |
|
|
|
agencyObj: {}, |
|
|
|
dataRule: { |
|
|
|
buildingName: [ |
|
|
|
{ required: true, message: '楼栋名称不能为空', trigger: 'blur' }, |
|
|
|
{ |
|
|
|
min: 1, |
|
|
|
max: 10, |
|
|
|
message: '小区名称长度在 1 到 10个字符', |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
// type: [{ required: true, message: '楼栋类型不能为空', trigger: 'blur' }], |
|
|
|
totalUnitNum: [{ required: true, message: '单元数不能为空', trigger: 'blur' }], |
|
|
|
coding: [{ required: true, message: '楼栋编码不能为空', trigger: 'blur' }], |
|
|
|
buildingLeaderMobile: [ |
|
|
|
{ |
|
|
|
validator: checkPhone, |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
buildingLeaderIdCard: [ |
|
|
|
{ |
|
|
|
validator: checkCardId, |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
] |
|
|
|
|
|
|
|
// totalFloorNum: [ |
|
|
|
// { required: true, message: '层数不能为空', trigger: 'blur' } |
|
|
|
// ], |
|
|
|
// totalHouseNum: [ |
|
|
|
// { required: true, message: '户数不能为空', trigger: 'blur' } |
|
|
|
// ], |
|
|
|
// longitude: [ |
|
|
|
// { required: true, message: '坐标不能为空', trigger: 'blur' } |
|
|
|
// ], |
|
|
|
} |
|
|
|
}; |
|
|
|
}, |
|
|
|
components: {}, |
|
|
|
mounted() {}, |
|
|
|
// totalFloorNum: [ |
|
|
|
// { required: true, message: '层数不能为空', trigger: 'blur' } |
|
|
|
// ], |
|
|
|
// totalHouseNum: [ |
|
|
|
// { required: true, message: '户数不能为空', trigger: 'blur' } |
|
|
|
// ], |
|
|
|
// longitude: [ |
|
|
|
// { required: true, message: '坐标不能为空', trigger: 'blur' } |
|
|
|
// ], |
|
|
|
} |
|
|
|
}; |
|
|
|
}, |
|
|
|
components: {}, |
|
|
|
mounted() { }, |
|
|
|
|
|
|
|
methods: { |
|
|
|
async initForm(type, row, agencyObj) { |
|
|
|
this.$refs.ref_form.resetFields(); |
|
|
|
let { latitude, longitude } = this.$store.state.user; |
|
|
|
this.agencyObj = agencyObj; |
|
|
|
this.dataForm.agencyId = agencyObj.agencyId; |
|
|
|
this.dataForm.gridId = agencyObj.gridId; |
|
|
|
this.dataForm.neighborHoodId = agencyObj.id; |
|
|
|
methods: { |
|
|
|
async initForm(type, row, agencyObj) { |
|
|
|
this.$refs.ref_form.resetFields(); |
|
|
|
let { latitude, longitude } = this.$store.state.user; |
|
|
|
this.agencyObj = agencyObj; |
|
|
|
this.dataForm.agencyId = agencyObj.agencyId; |
|
|
|
this.dataForm.gridId = agencyObj.gridId; |
|
|
|
this.dataForm.neighborHoodId = agencyObj.id; |
|
|
|
|
|
|
|
this.formType = type; |
|
|
|
if (row) { |
|
|
|
this.dataForm = JSON.parse(JSON.stringify(row)); |
|
|
|
this.buildingId = this.dataForm.buildingId; |
|
|
|
// this.buildType = this.dataForm.buildingTypeKey |
|
|
|
this.buildType = this.dataForm.type; |
|
|
|
} else { |
|
|
|
this.dataForm.latitude = latitude; |
|
|
|
this.dataForm.longitude = longitude; |
|
|
|
} |
|
|
|
console.log('this.dataForm', this.dataForm); |
|
|
|
// if (this.dataForm.buildingLeaderType && this.dataForm.buildingLeaderType.indexOf(',') > -1) { |
|
|
|
// this.dataForm.buildingLeaderType = this.dataForm.buildingLeaderType.split(','); |
|
|
|
// } else { |
|
|
|
// this.dataForm.buildingLeaderType = []; |
|
|
|
// } |
|
|
|
this.formType = type; |
|
|
|
if (row) { |
|
|
|
this.dataForm = JSON.parse(JSON.stringify(row)); |
|
|
|
this.buildingId = this.dataForm.buildingId; |
|
|
|
// this.buildType = this.dataForm.buildingTypeKey |
|
|
|
this.buildType = this.dataForm.type; |
|
|
|
} else { |
|
|
|
this.dataForm.latitude = latitude; |
|
|
|
this.dataForm.longitude = longitude; |
|
|
|
} |
|
|
|
console.log('this.dataForm', this.dataForm); |
|
|
|
// if (this.dataForm.buildingLeaderType && this.dataForm.buildingLeaderType.indexOf(',') > -1) { |
|
|
|
// this.dataForm.buildingLeaderType = this.dataForm.buildingLeaderType.split(','); |
|
|
|
// } else { |
|
|
|
// this.dataForm.buildingLeaderType = []; |
|
|
|
// } |
|
|
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
if (!map) { |
|
|
|
this.initMap(this.dataForm.latitude, this.dataForm.longitude); |
|
|
|
} else { |
|
|
|
map.setCenter(this.dataForm.latitude, this.dataForm.longitude); |
|
|
|
map.setMarker(this.dataForm.latitude, this.dataForm.longitude); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
this.$nextTick(() => { |
|
|
|
if (!map) { |
|
|
|
this.initMap(this.dataForm.latitude, this.dataForm.longitude); |
|
|
|
} else { |
|
|
|
map.setCenter(this.dataForm.latitude, this.dataForm.longitude); |
|
|
|
map.setMarker(this.dataForm.latitude, this.dataForm.longitude); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
async handleComfirm() { |
|
|
|
this.btnDisable = true; |
|
|
|
setTimeout(() => { |
|
|
|
this.btnDisable = false; |
|
|
|
}, 10000); |
|
|
|
this.dataForm.type = this.buildType; |
|
|
|
this.$refs['ref_form'].validate((valid, messageObj) => { |
|
|
|
if (!valid) { |
|
|
|
this.btnDisable = false; |
|
|
|
app.util.validateRule(messageObj); |
|
|
|
} else { |
|
|
|
this.addBuild(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
async handleCode() { |
|
|
|
const { data, code, msg } = await requestPost('/gov/org/houseInformation/getBuildingCoding/' + this.dataForm.neighborHoodId); |
|
|
|
console.log('data----', data); |
|
|
|
console.log('code----', code); |
|
|
|
console.log('msg----', msg); |
|
|
|
if (msg == 'success' && code == 0) { |
|
|
|
this.dataForm.coding = data.coding; |
|
|
|
this.dataForm.sysCoding = data.sysCoding; |
|
|
|
} |
|
|
|
}, |
|
|
|
async addBuild() { |
|
|
|
if (this.dataForm.buildingLeaderMobile) { |
|
|
|
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 |
|
|
|
if (this.dataForm.buildingLeaderMobile && regPhone.test(this.dataForm.buildingLeaderMobile) === false) { |
|
|
|
this.btnDisable = false; |
|
|
|
this.$message({ |
|
|
|
type: 'warning', |
|
|
|
message: '请输入正确的楼主手机' |
|
|
|
}); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
async handleComfirm() { |
|
|
|
this.btnDisable = true; |
|
|
|
setTimeout(() => { |
|
|
|
this.btnDisable = false; |
|
|
|
}, 10000); |
|
|
|
this.dataForm.type = this.buildType; |
|
|
|
this.$refs['ref_form'].validate((valid, messageObj) => { |
|
|
|
if (!valid) { |
|
|
|
this.btnDisable = false; |
|
|
|
app.util.validateRule(messageObj); |
|
|
|
} else { |
|
|
|
this.addBuild(); |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
async handleCode() { |
|
|
|
const { data, code, msg } = await requestPost('/gov/org/houseInformation/getBuildingCoding/' + this.dataForm.neighborHoodId); |
|
|
|
console.log('data----', data); |
|
|
|
console.log('code----', code); |
|
|
|
console.log('msg----', msg); |
|
|
|
if (msg == 'success' && code == 0) { |
|
|
|
this.dataForm.coding = data.coding; |
|
|
|
this.dataForm.sysCoding = data.sysCoding; |
|
|
|
} |
|
|
|
}, |
|
|
|
async addBuild() { |
|
|
|
if (this.dataForm.buildingLeaderMobile) { |
|
|
|
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 |
|
|
|
if (this.dataForm.buildingLeaderMobile && regPhone.test(this.dataForm.buildingLeaderMobile) === false) { |
|
|
|
this.btnDisable = false; |
|
|
|
this.$message({ |
|
|
|
type: 'warning', |
|
|
|
message: '请输入正确的楼主手机' |
|
|
|
}); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let url = ''; |
|
|
|
if (this.formType === 'add') { |
|
|
|
url = '/gov/org/building/buildingadd'; |
|
|
|
} else { |
|
|
|
url = '/gov/org/building/buildingupdate'; |
|
|
|
let url = ''; |
|
|
|
if (this.formType === 'add') { |
|
|
|
url = '/gov/org/building/buildingadd'; |
|
|
|
} else { |
|
|
|
url = '/gov/org/building/buildingupdate'; |
|
|
|
|
|
|
|
this.dataForm.buildingId = this.buildingId; |
|
|
|
} |
|
|
|
// if (this.dataForm.buildingLeaderType) { |
|
|
|
// this.dataForm.buildingLeaderType = this.dataForm.buildingLeaderType.toString(); |
|
|
|
// } else { |
|
|
|
// this.dataForm.buildingLeaderType = ''; |
|
|
|
// } |
|
|
|
const { data, code, msg } = await requestPost(url, this.dataForm); |
|
|
|
this.dataForm.buildingId = this.buildingId; |
|
|
|
} |
|
|
|
// if (this.dataForm.buildingLeaderType) { |
|
|
|
// this.dataForm.buildingLeaderType = this.dataForm.buildingLeaderType.toString(); |
|
|
|
// } else { |
|
|
|
// this.dataForm.buildingLeaderType = ''; |
|
|
|
// } |
|
|
|
const { data, code, msg } = await requestPost(url, this.dataForm); |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.$message({ |
|
|
|
type: 'success', |
|
|
|
message: '操作成功' |
|
|
|
}); |
|
|
|
this.resetData(); |
|
|
|
this.btnDisable = false; |
|
|
|
this.$emit('dialogOk'); |
|
|
|
} else { |
|
|
|
this.btnDisable = false; |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
if (code === 0) { |
|
|
|
this.$message({ |
|
|
|
type: 'success', |
|
|
|
message: '操作成功' |
|
|
|
}); |
|
|
|
this.resetData(); |
|
|
|
this.btnDisable = false; |
|
|
|
this.$emit('dialogOk'); |
|
|
|
} else { |
|
|
|
this.btnDisable = false; |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleCancle() { |
|
|
|
this.resetData(); |
|
|
|
this.$emit('dialogCancle'); |
|
|
|
}, |
|
|
|
// 地图初始化函数,本例取名为init,开发者可根据实际情况定义 |
|
|
|
initMap(latitude, longitude) { |
|
|
|
map = new daiMap( |
|
|
|
document.getElementById('app_build'), |
|
|
|
{ latitude, longitude }, |
|
|
|
{ |
|
|
|
zoom: 16.2, // 设置地图缩放级别 |
|
|
|
pitch: 43.5, // 设置俯仰角 |
|
|
|
rotation: 45 // 设置地图旋转角度 |
|
|
|
} |
|
|
|
); |
|
|
|
handleCancle() { |
|
|
|
this.resetData(); |
|
|
|
this.$emit('dialogCancle'); |
|
|
|
}, |
|
|
|
// 地图初始化函数,本例取名为init,开发者可根据实际情况定义 |
|
|
|
initMap(latitude, longitude) { |
|
|
|
map = new daiMap( |
|
|
|
document.getElementById('app_build'), |
|
|
|
{ latitude, longitude }, |
|
|
|
{ |
|
|
|
zoom: 16.2, // 设置地图缩放级别 |
|
|
|
pitch: 43.5, // 设置俯仰角 |
|
|
|
rotation: 45 // 设置地图旋转角度 |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
// 监听地图平移结束 |
|
|
|
map.on('dragend', e => { |
|
|
|
this.handleMoveCenter(e); |
|
|
|
}); |
|
|
|
// 监听地图平移结束 |
|
|
|
map.on('dragend', e => { |
|
|
|
this.handleMoveCenter(e); |
|
|
|
}); |
|
|
|
|
|
|
|
map.setCenter(latitude, longitude); |
|
|
|
map.setMarker(latitude, longitude); |
|
|
|
}, |
|
|
|
map.setCenter(latitude, longitude); |
|
|
|
map.setMarker(latitude, longitude); |
|
|
|
}, |
|
|
|
|
|
|
|
async handleMoveCenter() { |
|
|
|
//修改地图中心点 |
|
|
|
const { lat, lng } = map.getCenter(); |
|
|
|
this.dataForm.latitude = lat; |
|
|
|
this.dataForm.longitude = lng; |
|
|
|
map.setMarker(lat, lng); |
|
|
|
async handleMoveCenter() { |
|
|
|
//修改地图中心点 |
|
|
|
const { lat, lng } = map.getCenter(); |
|
|
|
this.dataForm.latitude = lat; |
|
|
|
this.dataForm.longitude = lng; |
|
|
|
map.setMarker(lat, lng); |
|
|
|
|
|
|
|
let { msg, data } = await map.getAddress(lat, lng); |
|
|
|
if (msg == 'success') { |
|
|
|
this.dataForm.coordinatePosition = data.address; |
|
|
|
this.searchValue = data.address; |
|
|
|
this.searchOptions = []; |
|
|
|
} |
|
|
|
}, |
|
|
|
let { msg, data } = await map.getAddress(lat, lng); |
|
|
|
if (msg == 'success') { |
|
|
|
this.dataForm.coordinatePosition = data.address; |
|
|
|
this.searchValue = data.address; |
|
|
|
this.searchOptions = []; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async remoteMethod(query) { |
|
|
|
if (query !== '') { |
|
|
|
this.loading = true; |
|
|
|
async remoteMethod(query) { |
|
|
|
if (query !== '') { |
|
|
|
this.loading = true; |
|
|
|
|
|
|
|
const { msg, data } = await map.searchNearby(query); |
|
|
|
this.loading = false; |
|
|
|
this.resultList = []; |
|
|
|
const { msg, data } = await map.searchNearby(query); |
|
|
|
this.loading = false; |
|
|
|
this.resultList = []; |
|
|
|
|
|
|
|
if (msg == 'success' && data.resultList && data.resultList.length > 0) { |
|
|
|
if (data.resultList && data.resultList.length > 0) { |
|
|
|
this.resultList = data.resultList; |
|
|
|
this.searchOptions = this.resultList.map(item => { |
|
|
|
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` }; |
|
|
|
}); |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.searchOptions = [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '未检索到结果' |
|
|
|
} |
|
|
|
]; |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.searchOptions = []; |
|
|
|
} |
|
|
|
}, |
|
|
|
if (msg == 'success' && data.resultList && data.resultList.length > 0) { |
|
|
|
if (data.resultList && data.resultList.length > 0) { |
|
|
|
this.resultList = data.resultList; |
|
|
|
this.searchOptions = this.resultList.map(item => { |
|
|
|
return { value: `${item.hotPointID}`, label: `${item.address + item.name}` }; |
|
|
|
}); |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.searchOptions = [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '未检索到结果' |
|
|
|
} |
|
|
|
]; |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.searchOptions = []; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleClickKey(index) { |
|
|
|
let selPosition = this.resultList[index]; |
|
|
|
let lonlat = selPosition.lonlat.split(' '); |
|
|
|
map.setCenter(lonlat[1], lonlat[0]); |
|
|
|
map.setMarker(lonlat[1], lonlat[0]); |
|
|
|
this.dataForm.latitude = lonlat[1]; |
|
|
|
this.dataForm.longitude = lonlat[0]; |
|
|
|
this.dataForm.coordinatePosition = selPosition.address + selPosition.name; |
|
|
|
}, |
|
|
|
handleClickKey(index) { |
|
|
|
let selPosition = this.resultList[index]; |
|
|
|
let lonlat = selPosition.lonlat.split(' '); |
|
|
|
map.setCenter(lonlat[1], lonlat[0]); |
|
|
|
map.setMarker(lonlat[1], lonlat[0]); |
|
|
|
this.dataForm.latitude = lonlat[1]; |
|
|
|
this.dataForm.longitude = lonlat[0]; |
|
|
|
this.dataForm.coordinatePosition = selPosition.address + selPosition.name; |
|
|
|
}, |
|
|
|
|
|
|
|
resetData() { |
|
|
|
this.searchValue = ''; |
|
|
|
this.searchOptions = []; |
|
|
|
this.resultList = []; |
|
|
|
this.buildingId = ''; //楼栋ID |
|
|
|
this.buildType = '1'; |
|
|
|
this.dataForm = { |
|
|
|
agencyId: '', // 所属组织ID |
|
|
|
agencyName: '', |
|
|
|
gridId: '', //所属网格ID |
|
|
|
neighborHoodId: '', //所属小区id |
|
|
|
buildingName: '', //房屋名称 |
|
|
|
// sort: 0,//排序 |
|
|
|
totalUnitNum: 1, //单元数 |
|
|
|
totalFloorNum: 0, //层数 |
|
|
|
totalHouseNum: 0, //总户数 |
|
|
|
realPerson: 0, |
|
|
|
buildingLeaderName: '', //楼长姓名 |
|
|
|
buildingLeaderMobile: '', //楼长电话 |
|
|
|
type: '', //房屋类型 |
|
|
|
location: '', //坐标位置 |
|
|
|
longitude: '', //经度 |
|
|
|
latitude: '', //纬度 |
|
|
|
coding: '', |
|
|
|
sysCoding: '', |
|
|
|
coordinatePosition: '' |
|
|
|
}; |
|
|
|
}, |
|
|
|
// 开启加载动画 |
|
|
|
startLoading() { |
|
|
|
loading = Loading.service({ |
|
|
|
lock: true, // 是否锁定 |
|
|
|
text: '正在加载……', // 加载中需要显示的文字 |
|
|
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 结束加载动画 |
|
|
|
endLoading() { |
|
|
|
// clearTimeout(timer); |
|
|
|
if (loading) { |
|
|
|
loading.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: {}, |
|
|
|
props: {} |
|
|
|
resetData() { |
|
|
|
this.searchValue = ''; |
|
|
|
this.searchOptions = []; |
|
|
|
this.resultList = []; |
|
|
|
this.buildingId = ''; //楼栋ID |
|
|
|
this.buildType = '1'; |
|
|
|
this.dataForm = { |
|
|
|
agencyId: '', // 所属组织ID |
|
|
|
agencyName: '', |
|
|
|
gridId: '', //所属网格ID |
|
|
|
neighborHoodId: '', //所属小区id |
|
|
|
buildingName: '', //房屋名称 |
|
|
|
// sort: 0,//排序 |
|
|
|
totalUnitNum: 1, //单元数 |
|
|
|
totalFloorNum: 0, //层数 |
|
|
|
totalHouseNum: 0, //总户数 |
|
|
|
realPerson: 0, |
|
|
|
buildingLeaderName: '', //楼长姓名 |
|
|
|
buildingLeaderMobile: '', //楼长电话 |
|
|
|
type: '', //房屋类型 |
|
|
|
location: '', //坐标位置 |
|
|
|
longitude: '', //经度 |
|
|
|
latitude: '', //纬度 |
|
|
|
coding: '', |
|
|
|
sysCoding: '', |
|
|
|
coordinatePosition: '' |
|
|
|
}; |
|
|
|
}, |
|
|
|
// 开启加载动画 |
|
|
|
startLoading() { |
|
|
|
loading = Loading.service({ |
|
|
|
lock: true, // 是否锁定 |
|
|
|
text: '正在加载……', // 加载中需要显示的文字 |
|
|
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 结束加载动画 |
|
|
|
endLoading() { |
|
|
|
// clearTimeout(timer); |
|
|
|
if (loading) { |
|
|
|
loading.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
computed: {}, |
|
|
|
props: {} |
|
|
|
}; |
|
|
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
|
|
@import '@/assets/scss/modules/visual/communityManageForm.scss'; |
|
|
|
@import "@/assets/scss/modules/visual/communityManageForm.scss"; |
|
|
|
</style> |
|
|
|