Browse Source

修改手机号表单校验

jly/task002
井乐禹 2 years ago
parent
commit
9fd3a74d78
  1. 862
      src/views/modules/base/communityYantai/buildForm.vue
  2. 1164
      src/views/modules/base/communityYantai/communityForm.vue
  3. 873
      src/views/modules/base/communityYantai/roomForm.vue
  4. 5794
      src/views/modules/base/organization/organization.vue
  5. 535
      src/views/modules/communityService/estateManagement/cpts/edit.vue
  6. 1127
      src/views/modules/housemaster/cpts/edit.vue

862
src/views/modules/base/communityYantai/buildForm.vue

@ -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', // addeditdetail
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', // addeditdetail
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>

1164
src/views/modules/base/communityYantai/communityForm.vue

File diff suppressed because it is too large

873
src/views/modules/base/communityYantai/roomForm.vue

@ -1,42 +1,84 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form" :inline="false" :model="dataForm" :rules="dataRule"
:disabled="formType === 'detail'" class="form">
<el-form-item label="所属楼栋" label-width="150px" style="display: block">
<span>{{ agencyObj.neighborHoodName }}-{{agencyObj.label}}</span>
</el-form-item>
<el-form-item label="所在楼层" label-width="150px" style="display: block">
<el-input class="item_width_1" placeholder="请输入所在楼层" v-model="dataForm.floor">
</el-input>
</el-form-item>
<el-form-item label="单元号" prop="buildingUnitId" label-width="150px" style="display: block">
<el-select class="item_width_1" v-model="dataForm.buildingUnitId" placeholder="请选择" clearable>
<el-option v-for="item in unitList" :key="item.id" :label="item.unitName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="门牌号" prop="doorName" label-width="150px" style="display: block">
<el-input class="item_width_1" placeholder="请输入门牌号" v-model="dataForm.doorName">
</el-input>
</el-form-item>
<el-form-item v-if="formType != 'detail'" 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>
<div v-if="formType === 'detail'">
<el-form-item label="房屋编码" prop="houseCode" label-width="150px" style="display: block">
<el-input class="item_width_1" maxlength="30" v-model="dataForm.houseCode">
</el-input>
</el-form-item>
<div v-if="dataForm.houseQrcodeUrl" style="display: flex;flex-direction: column;">
<img style="margin-left: 70px;width: 200px;" :src="dataForm.houseQrcodeUrl">
<a style="margin-left: 80px" :href="dataForm.houseQrcodeUrl" target="_blank">下载</a>
</div>
</div>
<!-- <el-form-item label="居住人数"
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
:inline="false"
:model="dataForm"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="所属楼栋"
label-width="150px"
style="display: block">
<span>{{ agencyObj.neighborHoodName }}-{{agencyObj.label}}</span>
</el-form-item>
<el-form-item label="所在楼层"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入所在楼层"
v-model="dataForm.floor">
</el-input>
</el-form-item>
<el-form-item label="单元号"
prop="buildingUnitId"
label-width="150px"
style="display: block">
<el-select class="item_width_1"
v-model="dataForm.buildingUnitId"
placeholder="请选择"
clearable>
<el-option v-for="item in unitList"
:key="item.id"
:label="item.unitName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="门牌号"
prop="doorName"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入门牌号"
v-model="dataForm.doorName">
</el-input>
</el-form-item>
<el-form-item v-if="formType != 'detail'"
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>
<div v-if="formType === 'detail'">
<el-form-item label="房屋编码"
prop="houseCode"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="30"
v-model="dataForm.houseCode">
</el-input>
</el-form-item>
<div v-if="dataForm.houseQrcodeUrl"
style="display: flex;flex-direction: column;">
<img style="margin-left: 70px;width: 200px;"
:src="dataForm.houseQrcodeUrl">
<a style="margin-left: 80px"
:href="dataForm.houseQrcodeUrl"
target="_blank">下载</a>
</div>
</div>
<!-- <el-form-item label="居住人数"
style="display: block"
prop="realPerson"
label-width="150px">
@ -46,365 +88,408 @@
:max="9999"
label="居住人数"></el-input-number>
</el-form-item> -->
<el-form-item label="房屋类型" prop="houseType" label-width="150px" style="display: block">
<el-radio-group v-model="houseType">
<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="面积(平方米)" label-width="150px" style="display: block">
<el-input class="item_width_1" placeholder="请输入面积(平方米)" v-model="dataForm.area">
</el-input>
</el-form-item>
<el-form-item label="房屋用途" prop="purpose" label-width="150px" style="display: block">
<el-radio-group v-model="purpose">
<el-radio :label="'1'">住宅</el-radio>
<el-radio :label="'2'">商业</el-radio>
<el-radio :label="'3'">办公</el-radio>
<el-radio :label="'4'">工业</el-radio>
<el-radio :label="'5'">仓储</el-radio>
<el-radio :label="'6'">商住混用</el-radio>
<el-radio :label="'7'">其他</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="房屋状态" prop="rentFlag" label-width="150px" style="display: block">
<el-radio-group v-model="rentFlag">
<el-radio :label="1">出租</el-radio>
<el-radio :label="2">闲置</el-radio>
<el-radio :label="0">自住</el-radio>
<el-radio :label="3">未出售</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="房主姓名" prop="ownerName" label-width="150px" style="display: block">
<el-input class="item_width_1" maxlength="30" placeholder="请输入房主姓名" v-model="dataForm.ownerName">
</el-input>
</el-form-item>
<el-form-item label="联系方式" prop="ownerPhone" label-width="150px" style="display: block">
<el-input class="item_width_1" type='number' placeholder="请输入联系方式" v-model="dataForm.ownerPhone">
</el-input>
</el-form-item>
<el-form-item label="房主身份证" prop="ownerIdCard" label-width="150px" style="display: block">
<el-input class="item_width_1" placeholder="请输入房主身份证" v-model="dataForm.ownerIdCard">
</el-input>
</el-form-item>
<el-form-item label="备注" prop="remark" label-width="150px" style="display: block">
<el-input v-model="dataForm.remark" type="textarea" :autosize="{ minRows: 6, maxRows: 20 }"
maxlength="500" class="item_width_1" style="" clearable show-word-limit
placeholder="请输入备注"></el-input>
</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="houseType"
label-width="150px"
style="display: block">
<el-radio-group v-model="houseType">
<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="面积(平方米)"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入面积(平方米)"
v-model="dataForm.area">
</el-input>
</el-form-item>
<el-form-item label="房屋用途"
prop="purpose"
label-width="150px"
style="display: block">
<el-radio-group v-model="purpose">
<el-radio :label="'1'">住宅</el-radio>
<el-radio :label="'2'">商业</el-radio>
<el-radio :label="'3'">办公</el-radio>
<el-radio :label="'4'">工业</el-radio>
<el-radio :label="'5'">仓储</el-radio>
<el-radio :label="'6'">商住混用</el-radio>
<el-radio :label="'7'">其他</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="房屋状态"
prop="rentFlag"
label-width="150px"
style="display: block">
<el-radio-group v-model="rentFlag">
<el-radio :label="1">出租</el-radio>
<el-radio :label="2">闲置</el-radio>
<el-radio :label="0">自住</el-radio>
<el-radio :label="3">未出售</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="房主姓名"
prop="ownerName"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
maxlength="30"
placeholder="请输入房主姓名"
v-model="dataForm.ownerName">
</el-input>
</el-form-item>
<el-form-item label="联系方式"
prop="ownerPhone"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
type='number'
placeholder="请输入联系方式"
v-model="dataForm.ownerPhone">
</el-input>
</el-form-item>
<el-form-item label="房主身份证"
prop="ownerIdCard"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
placeholder="请输入房主身份证"
v-model="dataForm.ownerIdCard">
</el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark"
label-width="150px"
style="display: block">
<el-input v-model="dataForm.remark"
type="textarea"
:autosize="{ minRows: 6, maxRows: 20 }"
maxlength="500"
class="item_width_1"
style=""
clearable
show-word-limit
placeholder="请输入备注"></el-input>
</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>
import {
mapGetters
} from 'vuex'
import {
Loading
} from 'element-ui' // Loading
import {
requestPost,
requestGet
} from '@/js/dai/request'
let loading //
export default {
data() {
// if (value === '') {
// callback(new Error(''));
// } else
const checkPhone = (rule, value, callback) => {
if (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 === '') {
callback();
} else if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
callback(new Error('请输入正确的身份证号'));
} else {
callback();
}
};
return {
formType: 'add', // addeditdetail
btnDisable: false,
unitList: [],
houseId: '', //ID
houseType: '1',
purpose: '1',
rentFlag: 0,
dataForm: {
neighborHoodId: '', // ID
buildingId: '', //ID
buildingUnitId: '', //ID
doorName: '', //
houseType: '', //
purpose: '', //
rentFlag: 0, //10 12 0
ownerPhone: '', //
ownerName: '', //
ownerIdCard: '', //
remark: '',
// realPerson: 0,
coding: '',
sysCoding: '',
area: "",
floor: ""
},
keyWords: '',
agencyObj: {},
dataRule: {
buildingUnitId: [{
required: true,
message: '所属单元不能为空',
trigger: 'blur'
}, ],
doorName: [{
required: true,
message: '门牌号不能为空',
trigger: 'blur'
}],
coding: [{
required: true,
message: '房屋编码不能为空',
trigger: 'blur'
}],
houseType: [{
required: true,
message: '房屋类型不能为空',
trigger: 'blur'
}],
purpose: [{
required: true,
message: '房屋用途不能为空',
trigger: 'blur'
}],
rentFlag: [{
required: true,
message: '是否出租不能为空',
trigger: 'blur'
}],
ownerPhone: [{
validator: checkPhone,
trigger: 'blur'
}],
ownerName: [{
required: false
}],
ownerIdCard: [{
validator: checkCardId,
trigger: 'blur'
}],
remark: [{
required: false
}],
},
}
},
components: {},
mounted() {},
methods: {
async initForm(type, row, agencyObj) {
this.$refs.ref_form.resetFields();
this.agencyObj = agencyObj
this.formType = type
console.log('agencyObj-----', agencyObj)
if (row) {
this.houseId = row.houseId
await this.loadHouseInfo()
// this.dataForm = JSON.parse(JSON.stringify(row))
// this.houseId = this.dataForm.houseId
// this.dataForm.buildingUnitId = this.dataForm.unitNumKey
// this.dataForm = { ... this.dataForm }
// this.houseType = this.dataForm.houseTypeKey
// this.purpose = this.dataForm.purposeKey
// this.rentFlag = parseInt(this.dataForm.rentFlagKey)
} else {
this.dataForm.neighborHoodId = this.agencyObj.neighborHoodId
this.dataForm.buildingId = this.agencyObj.id
}
await this.loadUnitList()
},
async loadHouseInfo() {
const url = "/gov/org/ichouse/" + this.houseId
const {
data,
code,
msg
} = await requestGet(url)
if (code === 0) {
// debugger
this.dataForm = {
...data
}
this.houseType = this.dataForm.houseType
this.purpose = this.dataForm.purpose
this.rentFlag = parseInt(this.dataForm.rentFlag)
} else {
this.$message.error(msg)
}
},
//
async loadUnitList() {
const url = '/gov/org/building/buildingunitlist'
let params = {
buildingId: this.dataForm.buildingId
}
const {
data,
code,
msg
} = await requestPost(url, params)
if (code === 0) {
this.unitList = data
} else {
this.$message.error(msg)
}
},
async handleCode() {
if (!this.dataForm.buildingUnitId) return this.$message.error('请选择单元')
const {
data,
code,
msg
} = await requestPost("/gov/org/houseInformation/getHouseCoding/" + this.dataForm.buildingUnitId);
if (msg == "success" && code == 0) {
this.dataForm.coding = data.coding
this.dataForm.sysCoding = data.sysCoding
}
},
async handleComfirm() {
this.btnDisable = true
setTimeout(() => {
this.btnDisable = false
}, 10000)
this.dataForm.houseType = this.houseType
this.dataForm.purpose = this.purpose
this.dataForm.rentFlag = this.rentFlag
this.$refs['ref_form'].validate((valid, messageObj) => {
if (!valid) {
this.btnDisable = false
app.util.validateRule(messageObj)
} else {
this.addRoom()
}
})
},
async addRoom() {
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X
if (this.dataForm.ownerIdCard && regCard.test(this.dataForm.ownerIdCard) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
message: '请输入正确的身份证号码'
})
return false;
}
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
if (this.dataForm.ownerPhone && regPhone.test(this.dataForm.ownerPhone) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
message: '请输入正确的手机号码'
})
return false;
}
let url = ''
if (this.formType === 'add') {
url = '/gov/org/house/houseadd'
} else {
url = '/gov/org/house/houseupdate'
this.dataForm.houseId = this.houseId
}
const {
data,
code,
msg
} = await requestPost(url, this.dataForm)
this.btnDisable = false
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
this.resetData()
this.$emit('dialogOk')
} else {
this.$message.error(msg)
}
},
handleCancle() {
this.resetData()
this.$emit('dialogCancle')
},
resetData() {
this.houseId = '' //ID
this.houseType = '1'
this.purpose = '1'
this.rentFlag = 0
this.dataForm = {
neighborHoodId: '', // ID
buildingId: '', //ID
buildingUnitId: '', //ID
doorName: '', //
houseType: '1', //
purpose: '1', //
rentFlag: 0, //10
ownerPhone: '', //
ownerName: '', //
ownerIdCard: '', //
remark: '', //
coding: '',
sysCoding: ''
}
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
computed: {},
props: {
view_real_data: { //
type: Boolean,
default: false,
}
}
}
import {
mapGetters
} from 'vuex'
import {
Loading
} from 'element-ui' // Loading
import {
requestPost,
requestGet
} from '@/js/dai/request'
let loading //
export default {
data() {
// if (value === '') {
// callback(new Error(''));
// } else
const checkPhone = (rule, value, callback) => {
if (value === '') {
callback();
} else if (!/^1[3-9]\d{9}$/.test(value)) {
callback(new Error('请输入正确的手机号格式'));
} else {
callback();
}
};
//
const checkCardId = (rule, value, callback) => {
if (value === '') {
callback();
} else if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
callback(new Error('请输入正确的身份证号'));
} else {
callback();
}
};
return {
formType: 'add', // addeditdetail
btnDisable: false,
unitList: [],
houseId: '', //ID
houseType: '1',
purpose: '1',
rentFlag: 0,
dataForm: {
neighborHoodId: '', // ID
buildingId: '', //ID
buildingUnitId: '', //ID
doorName: '', //
houseType: '', //
purpose: '', //
rentFlag: 0, //10 12 0
ownerPhone: '', //
ownerName: '', //
ownerIdCard: '', //
remark: '',
// realPerson: 0,
coding: '',
sysCoding: '',
area: "",
floor: ""
},
keyWords: '',
agencyObj: {},
dataRule: {
buildingUnitId: [{
required: true,
message: '所属单元不能为空',
trigger: 'blur'
},],
doorName: [{
required: true,
message: '门牌号不能为空',
trigger: 'blur'
}],
coding: [{
required: true,
message: '房屋编码不能为空',
trigger: 'blur'
}],
houseType: [{
required: true,
message: '房屋类型不能为空',
trigger: 'blur'
}],
purpose: [{
required: true,
message: '房屋用途不能为空',
trigger: 'blur'
}],
rentFlag: [{
required: true,
message: '是否出租不能为空',
trigger: 'blur'
}],
ownerPhone: [{
validator: checkPhone,
trigger: 'blur'
}],
ownerName: [{
required: false
}],
ownerIdCard: [{
validator: checkCardId,
trigger: 'blur'
}],
remark: [{
required: false
}],
},
}
},
components: {},
mounted() { },
methods: {
async initForm(type, row, agencyObj) {
this.$refs.ref_form.resetFields();
this.agencyObj = agencyObj
this.formType = type
console.log('agencyObj-----', agencyObj)
if (row) {
this.houseId = row.houseId
await this.loadHouseInfo()
// this.dataForm = JSON.parse(JSON.stringify(row))
// this.houseId = this.dataForm.houseId
// this.dataForm.buildingUnitId = this.dataForm.unitNumKey
// this.dataForm = { ... this.dataForm }
// this.houseType = this.dataForm.houseTypeKey
// this.purpose = this.dataForm.purposeKey
// this.rentFlag = parseInt(this.dataForm.rentFlagKey)
} else {
this.dataForm.neighborHoodId = this.agencyObj.neighborHoodId
this.dataForm.buildingId = this.agencyObj.id
}
await this.loadUnitList()
},
async loadHouseInfo() {
const url = "/gov/org/ichouse/" + this.houseId
const {
data,
code,
msg
} = await requestGet(url)
if (code === 0) {
// debugger
this.dataForm = {
...data
}
this.houseType = this.dataForm.houseType
this.purpose = this.dataForm.purpose
this.rentFlag = parseInt(this.dataForm.rentFlag)
} else {
this.$message.error(msg)
}
},
//
async loadUnitList() {
const url = '/gov/org/building/buildingunitlist'
let params = {
buildingId: this.dataForm.buildingId
}
const {
data,
code,
msg
} = await requestPost(url, params)
if (code === 0) {
this.unitList = data
} else {
this.$message.error(msg)
}
},
async handleCode() {
if (!this.dataForm.buildingUnitId) return this.$message.error('请选择单元')
const {
data,
code,
msg
} = await requestPost("/gov/org/houseInformation/getHouseCoding/" + this.dataForm.buildingUnitId);
if (msg == "success" && code == 0) {
this.dataForm.coding = data.coding
this.dataForm.sysCoding = data.sysCoding
}
},
async handleComfirm() {
this.btnDisable = true
setTimeout(() => {
this.btnDisable = false
}, 10000)
this.dataForm.houseType = this.houseType
this.dataForm.purpose = this.purpose
this.dataForm.rentFlag = this.rentFlag
this.$refs['ref_form'].validate((valid, messageObj) => {
if (!valid) {
this.btnDisable = false
app.util.validateRule(messageObj)
} else {
this.addRoom()
}
})
},
async addRoom() {
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X
if (this.dataForm.ownerIdCard && regCard.test(this.dataForm.ownerIdCard) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
message: '请输入正确的身份证号码'
})
return false;
}
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
if (this.dataForm.ownerPhone && regPhone.test(this.dataForm.ownerPhone) === false) {
this.btnDisable = false
this.$message({
type: 'warning',
message: '请输入正确的手机号码'
})
return false;
}
let url = ''
if (this.formType === 'add') {
url = '/gov/org/house/houseadd'
} else {
url = '/gov/org/house/houseupdate'
this.dataForm.houseId = this.houseId
}
const {
data,
code,
msg
} = await requestPost(url, this.dataForm)
this.btnDisable = false
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
})
this.resetData()
this.$emit('dialogOk')
} else {
this.$message.error(msg)
}
},
handleCancle() {
this.resetData()
this.$emit('dialogCancle')
},
resetData() {
this.houseId = '' //ID
this.houseType = '1'
this.purpose = '1'
this.rentFlag = 0
this.dataForm = {
neighborHoodId: '', // ID
buildingId: '', //ID
buildingUnitId: '', //ID
doorName: '', //
houseType: '1', //
purpose: '1', //
rentFlag: 0, //10
ownerPhone: '', //
ownerName: '', //
ownerIdCard: '', //
remark: '', //
coding: '',
sysCoding: ''
}
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
})
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
computed: {},
props: {
view_real_data: { //
type: Boolean,
default: false,
}
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/visual/communityManageForm.scss";
@import "@/assets/scss/modules/visual/communityManageForm.scss";
.div_tuomin {
position: absolute;
top: 0;
right: 40px;
}
.div_tuomin {
position: absolute;
top: 0;
right: 40px;
}
</style>

5794
src/views/modules/base/organization/organization.vue

File diff suppressed because it is too large

535
src/views/modules/communityService/estateManagement/cpts/edit.vue

@ -1,42 +1,85 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<!-- 姓名 联系电话 证件号 类型 所属组织 楼栋 单元 tianqian -->
<!-- 物业公司 这个不一定 物业联系人 tianqian 联系电话 -->
<el-form ref="ref_form" :inline="true" :model="fmData" :rules="dataRule" :disabled="formType === 'watch'" class="form">
<el-form-item label="物业名称" prop="name" label-width="150px" style="display: block">
<el-input v-model="fmData.name" class="item_width_2" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="物业联系人" prop="contactName" label-width="150px" style="display: block">
<el-input v-model="fmData.contactName" class="item_width_2" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系电话" prop="contactMobile" label-width="150px" style="display: block">
<el-input v-model="fmData.contactMobile" class="item_width_2" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="所属组织" prop="agencyId" label-width="150px" style="display: block">
<el-cascader
ref="myCascader"
filterable
v-model="fmData.agencyId"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency"
/>
</el-form-item>
<el-form-item label="管理小区" prop="neighborHoodIdList" label-width="150px" style="display: block">
<el-select multiple v-model="fmData.neighborHoodIdList" filterable placeholder="请选择" clearable @change="jj">
<el-option v-for="item in neighborhoodList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div>
<div class="dialog-h-content scroll-h">
<!-- 姓名 联系电话 证件号 类型 所属组织 楼栋 单元 tianqian -->
<!-- 物业公司 这个不一定 物业联系人 tianqian 联系电话 -->
<el-form ref="ref_form"
:inline="true"
:model="fmData"
:rules="dataRule"
:disabled="formType === 'watch'"
class="form">
<el-form-item label="物业名称"
prop="name"
label-width="150px"
style="display: block">
<el-input v-model="fmData.name"
class="item_width_2"
size="small"
clearable
placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="物业联系人"
prop="contactName"
label-width="150px"
style="display: block">
<el-input v-model="fmData.contactName"
class="item_width_2"
size="small"
clearable
placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系电话"
prop="contactMobile"
label-width="150px"
style="display: block">
<el-input v-model="fmData.contactMobile"
class="item_width_2"
size="small"
clearable
placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="所属组织"
prop="agencyId"
label-width="150px"
style="display: block">
<el-cascader ref="myCascader"
filterable
v-model="fmData.agencyId"
:options="orgOptions"
:props="orgOptionProps"
:show-all-levels="false"
@change="handleChangeAgency" />
</el-form-item>
<el-form-item label="管理小区"
prop="neighborHoodIdList"
label-width="150px"
style="display: block">
<el-select multiple
v-model="fmData.neighborHoodIdList"
filterable
placeholder="请选择"
clearable
@change="jj">
<el-option v-for="item in neighborhoodList"
:key="item.value"
:label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div class="div_btn resi-btns">
<el-button size="small" @click="handleCancle"> </el-button>
<el-button v-if="formType != 'watch'" type="primary" size="small" :disabled="btnDisable" @click="handleComfirm"> </el-button>
</div>
</div>
<div class="div_btn resi-btns">
<el-button size="small"
@click="handleCancle"> </el-button>
<el-button v-if="formType != 'watch'"
type="primary"
size="small"
:disabled="btnDisable"
@click="handleComfirm"> </el-button>
</div>
</div>
</template>
<script>
@ -45,252 +88,252 @@ import { requestPost } from '@/js/dai/request';
import formVltHelper from 'dai-js/tools/formVltHelper';
export default {
props: {
formId: {
type: String,
default: ''
},
formType: {
type: String,
default: 'info'
},
villageList: {
type: Object,
default: {}
}
},
props: {
formId: {
type: String,
default: ''
},
formType: {
type: String,
default: 'info'
},
villageList: {
type: Object,
default: {}
}
},
data() {
var checkPhone = (rule, value, callback) => {
if(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();
}
};
return {
uploadUrl: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2',
customerId: localStorage.getItem('customerId'),
data() {
var checkPhone = (rule, value, callback) => {
if (value == '') {
callback();
}
else if (!/^1[3-9]\d{9}$/.test(value)) {
callback(new Error('请输入正确的手机号格式'));
} else {
callback();
}
};
return {
uploadUrl: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadqrcodeV2',
customerId: localStorage.getItem('customerId'),
btnDisable: false,
btnDisable: false,
fmData: {
name: '',
contactName: '',
contactMobile: ''
},
dataRule: {
name: [{ required: true, message: '物业名字不能为空', trigger: 'blur' }],
contactMobile: [{ validator: checkPhone, trigger: 'blur' }]
},
orgOptions: [],
orgOptionProps: {
// multiple: false,
// value: 'agencyId',
// label: 'agencyName',
// children: 'subAgencyList',
// checkStrictly: true
multiple: false,
checkStrictly: true,
emitPath: false,
children: 'subAgencyList',
label: 'agencyName',
value: 'agencyId'
},
neighborhoodList: [],
levelOptions: [
{
value: '0',
label: '市级'
},
{
value: '1',
label: '区级'
},
{
value: '2',
label: '街道级'
}
],
categoryOptions: []
};
},
components: {},
// computed: {
// dataRule() {
// return ;
// }
// },
watch: {},
fmData: {
name: '',
contactName: '',
contactMobile: ''
},
dataRule: {
name: [{ required: true, message: '物业名字不能为空', trigger: 'blur' }],
contactMobile: [{ validator: checkPhone, trigger: 'blur' }]
},
orgOptions: [],
orgOptionProps: {
// multiple: false,
// value: 'agencyId',
// label: 'agencyName',
// children: 'subAgencyList',
// checkStrictly: true
multiple: false,
checkStrictly: true,
emitPath: false,
children: 'subAgencyList',
label: 'agencyName',
value: 'agencyId'
},
neighborhoodList: [],
levelOptions: [
{
value: '0',
label: '市级'
},
{
value: '1',
label: '区级'
},
{
value: '2',
label: '街道级'
}
],
categoryOptions: []
};
},
components: {},
// computed: {
// dataRule() {
// return ;
// }
// },
watch: {},
async mounted() {
console.log('ddd', this.formId);
this.initForm();
},
async mounted() {
console.log('ddd', this.formId);
this.initForm();
},
methods: {
jj(){
this.$forceUpdate()
},
async initForm() {
if (this.formType != 'add') {
this.getInfo();
}
this.getOrgTreeList();
},
getOrgTreeList() {
const { user } = this.$store.state;
this.$http
.post('gov/org/customeragency/staffinagencylist', {})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
} else {
console.log('获取组织树成功', res.data);
let { agencyList, subAgencyList } = res.data;
const _arr = [{ ...agencyList, subAgencyList: [...subAgencyList] }];
this.orgOptions = this.deepTree(_arr);
}
})
.catch(() => {
return this.$message.error('网络错误');
});
},
deepTree(arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: (item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList)) || null
};
});
}
},
handleChangeAgency(val) {
let obj = this.$refs['myCascader'].getCheckedNodes()[0].data;
methods: {
jj() {
this.$forceUpdate()
},
async initForm() {
if (this.formType != 'add') {
this.getInfo();
}
this.getOrgTreeList();
this.getNeighborhood();
},
async getNeighborhood() {
let url = '/gov/org/icneighborhood/neighborhood-options-yantai';
let params = {
agencyId: this.fmData.agencyId
};
const { data, code, msg } = await requestPost(url, params);
},
getOrgTreeList() {
const { user } = this.$store.state;
this.$http
.post('gov/org/customeragency/staffinagencylist', {})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
} else {
console.log('获取组织树成功', res.data);
let { agencyList, subAgencyList } = res.data;
const _arr = [{ ...agencyList, subAgencyList: [...subAgencyList] }];
this.orgOptions = this.deepTree(_arr);
}
})
.catch(() => {
return this.$message.error('网络错误');
});
},
deepTree(arr) {
if (Array.isArray(arr)) {
return arr.map(item => {
return {
...item,
subAgencyList: (item.subAgencyList.length > 0 && this.deepTree(item.subAgencyList)) || null
};
});
}
},
handleChangeAgency(val) {
let obj = this.$refs['myCascader'].getCheckedNodes()[0].data;
if (code === 0) {
console.log(data);
this.neighborhoodList = data;
} else {
}
},
this.getNeighborhood();
},
async getNeighborhood() {
let url = '/gov/org/icneighborhood/neighborhood-options-yantai';
let params = {
agencyId: this.fmData.agencyId
};
const { data, code, msg } = await requestPost(url, params);
async getInfo() {
let url = '/gov/org/propertymanagement/detail/' + this.formId;
let params = {
agencyId: this.fmData.agencyId
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
console.log(data);
this.neighborhoodList = data;
} else {
}
},
if (code === 0) {
this.fmData = data;
async getInfo() {
let url = '/gov/org/propertymanagement/detail/' + this.formId;
let params = {
agencyId: this.fmData.agencyId
};
const { data, code, msg } = await requestPost(url, params);
this.neighborhoodList = this.fmData.neighborHoodList.map(item => {
return {
value: item.id,
label: item.neighborHoodName
};
});
this.fmData.neighborHoodIdList = this.fmData.neighborHoodList.map(item => {
return item.id
});
console.log(this.fmData.neighborHoodList,this.neighborhoodList)
} else {
}
},
if (code === 0) {
this.fmData = data;
async handleComfirm() {
this.btnDisable = true;
setTimeout(() => {
this.btnDisable = false;
}, 10000);
this.$refs['ref_form'].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
this.btnDisable = false;
} else {
this.submit();
}
});
},
this.neighborhoodList = this.fmData.neighborHoodList.map(item => {
return {
value: item.id,
label: item.neighborHoodName
};
});
this.fmData.neighborHoodIdList = this.fmData.neighborHoodList.map(item => {
return item.id
});
console.log(this.fmData.neighborHoodList, this.neighborhoodList)
} else {
}
},
async submit() {
let url = '';
let params = { ...this.fmData };
if (this.formType === 'add') {
url = '/gov/org/propertymanagement/add';
} else {
url = '/gov/org/propertymanagement/update';
this.$set(params, 'id', this.villageList.id);
}
const { data, code, msg } = await requestPost(url, params);
async handleComfirm() {
this.btnDisable = true;
setTimeout(() => {
this.btnDisable = false;
}, 10000);
this.$refs['ref_form'].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
this.btnDisable = false;
} else {
this.submit();
}
});
},
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
});
this.$emit('afterEdit');
this.btnDisable = false;
} else {
this.btnDisable = false;
this.$message.error(msg);
}
},
async submit() {
let url = '';
let params = { ...this.fmData };
if (this.formType === 'add') {
url = '/gov/org/propertymanagement/add';
} else {
url = '/gov/org/propertymanagement/update';
this.$set(params, 'id', this.villageList.id);
}
const { data, code, msg } = await requestPost(url, params);
handleCancle() {
this.$emit('close');
}
}
if (code === 0) {
this.$message({
type: 'success',
message: '操作成功'
});
this.$emit('afterEdit');
this.btnDisable = false;
} else {
this.btnDisable = false;
this.$message.error(msg);
}
},
handleCancle() {
this.$emit('close');
}
}
};
</script>
<style lang="scss" scoped>
.item_width_1 {
width: 500px;
width: 500px;
}
.item_width_2 {
width: 400px;
width: 400px;
}
.item_width_3 {
margin-left: 10px;
width: 200px;
margin-left: 10px;
width: 200px;
}
.item_width_4 {
width: 200px;
width: 200px;
}
.div_map {
margin-top: 10px;
margin-top: 10px;
}
.div_btn {
// display: flex;
// justify-content: flex-end;
// display: flex;
// justify-content: flex-end;
}
.el-tabs {
margin: 0 20px;
margin: 0 20px;
}
.el-upload__tip {
color: rgb(155, 155, 155);
margin: 0;
color: rgb(155, 155, 155);
margin: 0;
}
.form {
margin-top: 30px;
margin-top: 30px;
}
.attachement-list {

1127
src/views/modules/housemaster/cpts/edit.vue

File diff suppressed because it is too large
Loading…
Cancel
Save