tianq 3 years ago
parent
commit
42d3e27ace
  1. 491
      src/views/modules/census/addFormHouse.vue
  2. 140
      src/views/modules/census/census-houseList.vue
  3. 28
      src/views/modules/census/census-residentList.vue

491
src/views/modules/census/addFormHouse.vue

@ -0,0 +1,491 @@
<template>
<el-dialog :visible.sync="dialogVisible" width="1370px" :before-close="handleCancle">
<span slot="title">
<span v-if="pageType == 'add'">新增</span>
<span v-if="pageType == 'edit'">修改</span>
<span v-if="pageType == 'view'">查看</span>
</span>
<div>
<div class="dialog-h-content scroll-h">
<el-form :inline="true" :model="formData" ref="form" :rules="dataRule" :label-width="'90px'" v-if="pageType != 'view'">
<el-row>
<el-col :span="6">
<el-form-item label="场所名称" prop="placeOrgName">
<el-input v-model="formData.placeOrgName" :disabled="disabled" class="u-item-width-normal" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="场所类型" prop="placeType">
<el-select class="u-item-width-normal" :disabled="disabled" v-model="formData.placeType" placeholder="全部" size="small" clearable>
<el-option v-for="item in placeTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="占地面积" prop="areaCovered">
<el-input v-model="formData.areaCovered" :disabled="disabled" class="u-item-width-normal" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="场所规模" prop="scaleTotal">
<el-input
type="number"
v-model="formData.scaleTotal"
:disabled="disabled"
class="u-item-width-normal"
size="small"
clearable
placeholder="请输入可容纳人数"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属组织" prop="gridId">
<el-select v-model="formData.gridId" class="u-item-width-normal" :disabled="disabled" placeholder="全部" size="small" clearable>
<el-option v-for="item in gridList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="场所类别" prop="placeCategory">
<el-select v-model="formData.placeCategory" :disabled="disabled" placeholder="请选择" size="small" clearable class="u-item-width-normal">
<el-option v-for="item in placeCategoryArray" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="负责人" prop="personInCharge">
<el-input v-model="formData.personInCharge" :disabled="disabled" class="u-item-width-normal" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="联系电话" prop="mobile">
<el-input v-model="formData.mobile" :disabled="disabled" class="u-item-width-normal" size="small" clearable placeholder="请输入"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="场所地址" prop="address" style="display: block">
<el-select
v-model="formData.address"
:disabled="disabled"
filterable
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>
</el-form-item>
</el-col>
</el-row>
<div id="app_event" class="div_map"></div>
</el-form>
<el-form :inline="false" :model="formData" ref="form" :label-width="'90px'" v-if="pageType == 'view'">
<el-row>
<el-col :span="12">
<el-form-item label="房屋名称" prop="fullName">{{ formData.fullName }}</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="" prop="placeCategory"></el-form-item>
<el-button size="mini" class="diy-button--search" @click="handleTuomin">显示脱敏信息</el-button>
</el-col> -->
<el-col :span="12">
<el-form-item label="单元号" prop="unitName">{{ formData.unitName ? formData.unitName : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="门牌号" prop="doorName">{{ formData.doorName }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房屋编码" prop="coding">{{ formData.coding ? formData.coding : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房屋类型" prop="houseTypeName">{{ formData.houseTypeName ? formData.houseTypeName : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房屋用途" prop="purposeName">{{ formData.purposeName ? formData.purposeName : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房屋状态" prop="rentName">{{ formData.rentName ? formData.rentName : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房主姓名" prop="ownerName">{{ formData.ownerName ? formData.ownerName : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系方式" prop="showOwnerPhone">{{ formData.showOwnerPhone ? formData.showOwnerPhone : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="房主身份证" prop="showOwnerIdCard">{{ formData.showOwnerIdCard ? formData.showOwnerIdCard : '--' }}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注" prop="remark">{{ formData.remark ? formData.remark : '--' }}</el-form-item>
</el-col>
</el-row>
<!-- <div id="app_event" class="div_map"></div> -->
</el-form>
</div>
<div class="div_btn" v-if="pageType != 'view'">
<el-button size="small" @click="handleCancle"> </el-button>
<!-- <el-button size="small" @click="resetData" v-if="pageType != 'view'">重置</el-button> -->
<el-button size="small" type="primary" :disabled="btnDisable" @click="handleComfirm"> </el-button>
</div>
<!-- <div class="recordBox"><record v-if="pageType != 'add' && detailId" :formType="pageType" :id="detailId" :info="{ agencyId: agencyId }"></record></div> -->
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancle"> </el-button>
<!-- <el-button type="primary" @click="handleComfirm"> </el-button> -->
</span>
</el-dialog>
</template>
<script>
import { isMobile } from '@/utils/validate';
import { mapGetters } from 'vuex';
import { Loading } from 'element-ui'; // Loading
import { requestPost, requestGet } from '@/js/dai/request';
import daiMap from '@/utils/dai-map';
import nextTick from 'dai-js/tools/nextTick';
import record from './record';
let loading; //
let map;
var search;
var markers;
var infoWindowList;
var geocoder; //
export default {
props: {
dialogVisible: {
type: Boolean,
default: ''
},
defaultData: {
type: Object,
default: null
},
pageType: {
type: String,
default: ''
},
detailId: {
type: String,
default: ''
},
detailData: {
type: Object,
default: null
},
disabled: {
type: Boolean,
default: false
}
},
data() {
let checkNum = (rule, value, callback) => {
if (!value) {
return callback(new Error('场所规模不能为空'));
}
setTimeout(() => {
if (!Number.isInteger(value)) {
callback(new Error('请输入数字值'));
}
}, 1000);
};
let checkMObile = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入联系电话'));
} else {
if (!isMobile(value)) {
callback(new Error('联系电话格式不正确'));
}
callback();
}
};
return {
agencyObj: {},
view_real_data: false,
btnDisable: false,
user: '',
agencyId: '',
gridList: [], //list--
placeTypeList: [], //
resultArray: [{ value: '0', label: '合格' }, { value: '1', label: '不合格' }],
placeCategoryArray: [{ value: '0', label: '九小场所' }, { value: '1', label: '企事业单位' }],
list: {},
formData: {
placeOrgName: '',
scaleTotal: '',
gridId: '',
latestResult: '',
placeCategory: '',
placeType: '',
personInCharge: '',
address: '',
mobile: '',
// result: '',
remark: ''
},
dataRule: {
placeOrgName: [{ required: true, message: '场所名称不能为空', trigger: 'bulr' }],
placeCategory: [{ required: true, message: '场所类别不能为空', trigger: 'bulr' }],
placeType: [{ required: true, message: '场所类型不能为空', trigger: 'bulr' }],
result: [{ required: true, message: '巡查结果不能为空', trigger: 'bulr' }],
scaleTotal: [{ required: true, validator: checkNum, trigger: 'bulr' }],
gridId: [{ required: true, message: '所属组织不能为空', trigger: 'bulr' }],
personInCharge: [{ required: true, message: '负责人不能为空', trigger: 'bulr' }],
mobile: [{ required: true, validator: checkMObile, trigger: 'blur' }],
address: [{ required: true, message: '场所地址不能为空', trigger: 'blur' }]
// content: [{ required: true, message: '', trigger: 'bulr' }, { max: 1000, message: '1000', trigger: 'blur' }]
},
//
loading: false,
searchValue: '',
searchOptions: []
};
},
watch: {},
components: { record },
created() {},
async mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.startLoading();
this.loadGrid();
this.loadplaceType();
if (this.pageType != 'add') {
this.getDetail();
} else {
// this.initMap();
}
await this.endLoading();
this.endLoading();
},
methods: {
async handleTuomin() {
const url = '/data/aggregator/epmetuser/detailByType';
const { data, code, msg } = await requestPost(url, {
id: this.detailId,
type: 'checkHouse'
});
if (code === 0) {
this.$set(this.formData, 'showOwnerPhone', data.mobile);
this.$set(this.formData, 'showOwnerIdCard', data.idCard);
} else {
this.$message.error(msg);
}
},
async loadGrid() {
const url = '/gov/org/customergrid/gridoption';
let params = {
agencyId: this.agencyId,
purpose: 'query'
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.gridList = data;
} else {
this.$message.error(msg);
}
},
//
async loadplaceType() {
const url = '/sys/dict/data/dictlist';
let params = {
dictType: 'ic_enterprise_place_type'
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.placeTypeList = data;
} else {
this.$message.error(msg);
}
},
async getDetail() {
const url = `/gov/org/ichouse/${this.detailId}`;
const { data, code, msg } = await requestGet(url);
if (code === 0) {
this.formData = { ...data };
this.houseType = this.formData.houseType;
this.purpose = this.formData.purpose;
this.rentFlag = parseInt(this.formData.rentFlag);
// this.initMap();
} else {
this.$message.error(msg);
}
},
handleComfirm() {
this.save();
},
async handleAdd() {
// this.btnDisable = true;
// setTimeout(() => {
// this.btnDisable = false;
// }, 10000);
// nextTick(1000);
// const form = new Promise((resolve, reject) => {
// this.$refs['form'].validate(valid => {
// if (valid) resolve();
// });
// });
// const form1 = new Promise((resolve, reject) => {
// this.$refs['form1'].validate(valid => {
// if (valid) resolve();
// });
// });
// Promise.all([form1, form])
// .then(() => {
// this.addFuwu();
// })
// .catch(() => {
// app.util.validateRule(messageObj);
// this.btnDisable = false;
// });
},
async save() {
this.formData.agencyId = this.agencyId;
var url = '';
var params = {};
url = '/gov/org/enterprise/addOrUpdate';
params = { ...this.formData };
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success('操作成功');
this.handleCancle();
// // this.resetData();
// this.$emit('handleComfirm');
} else if (code >= 8000) {
this.$message.error(msg);
}
},
handleCancle() {
// this.resetData();
this.$emit('handleClose');
},
resetData() {
this.$refs.form.resetFields();
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: '正在加载……', //
background: 'rgba(0,0,0,.7)' //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
}, // init
initMap() {
let { latitude, longitude } = this.$store.state.user;
if (this.formData.latitude && this.formData.longitude) {
latitude = this.formData.latitude;
longitude = this.formData.longitude;
}
if (!latitude || latitude == '' || latitude == '0') {
latitude = 39.9088810666821;
longitude = 116.39743841556731;
}
this.$nextTick(() => {
map = new daiMap(
document.getElementById('app_event'),
{ latitude, longitude },
{
zoom: 16.2, //
pitch: 43.5, //
rotation: 45 //
}
);
//
map.on('dragend', e => {
this.handleMoveCenter(e);
});
map.setCenter(latitude, longitude);
if (this.formData.latitude) {
map.setMarker(latitude, longitude);
}
});
},
async handleMoveCenter() {
//
const { lat, lng } = map.getCenter();
this.formData.latitude = lat;
this.formData.longitude = lng;
map.setMarker(lat, lng);
let { msg, data } = await map.getAddress(lat, lng);
if (msg == 'success') {
this.formData.address = data.address;
this.searchValue = data.address;
this.searchOptions = [];
}
},
async remoteMethod(query) {
if (query !== '') {
this.loading = true;
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.id}`, 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.formData.latitude = lonlat[1];
this.formData.longitude = lonlat[0];
this.formData.address = selPosition.address + selPosition.name;
}
}
};
</script>
<style lang="scss" scoped>
@import '@/assets/scss/modules/management/form-main.scss';
@import '@/assets/scss/modules/management/form.scss';
// @import '@/assets/scss/modules/visual/a_customize.scss';
</style>

140
src/views/modules/census/census-houseList.vue

@ -124,12 +124,16 @@
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="streetName" label="镇街" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="districtName" label="区县" align="center" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="agencyName" align="center" label="社区" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="agencyName" align="center" label="网格" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="agencyName" align="center" label="房屋名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="agencyName" align="center" label="房屋用途" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="agencyName" align="center" label="房屋状态" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="count" align="center" width="110" label="操作" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="communityName" align="center" label="社区" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="gridName" align="center" label="网格" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="houseName" align="center" label="房屋名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="purposeName" align="center" label="房屋用途" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="rentFlagName" align="center" label="房屋状态" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="count" align="center" width="110" label="操作" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button size="small" type="text" @click="show(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@ -145,20 +149,31 @@
</el-row>
</div>
</div>
<div>
<addForm
v-if="dialogVisible"
:dialogVisible="dialogVisible"
:pageType="pageType"
:disabled="disabled"
:detailId="detailId"
:detailData="detailData"
@handleClose="handleClose"
/>
</div>
</div>
</template>
<script>
import screenEchartsFrame from './chart';
import screenEchartsFrame2 from './chart';
import { requestPost } from '@/js/dai/request';
import { requestPost,requestGet } from '@/js/dai/request';
import nextTick from 'dai-js/tools/nextTick';
import { mapGetters } from 'vuex';
import addForm from './addFormHouse';
import axios from 'axios';
export default {
components: { screenEchartsFrame, screenEchartsFrame2 },
components: { screenEchartsFrame, screenEchartsFrame2,addForm },
data() {
let endDisabledDate = time => {
//datareturn
@ -176,6 +191,11 @@ export default {
return time.getTime() > nowData;
};
return {
dialogVisible: false,
detailId: '',
detailData: {},
pageType: '',
disabled:false,
tableLoading: false,
user: {},
gridList: [], //list--
@ -216,12 +236,14 @@ export default {
chartData2: [],
pieData: [],
pieData2: [],
orgId: ''
orgId: '',
purpose: '',
rentFlag: ''
};
},
computed: {
maxTableHeight() {
this.TableHeight = this.$store.state.inIframe ? this.clientHeight - 700 + this.iframeHeigh : this.clientHeight - 700;
this.TableHeight = this.$store.state.inIframe ? this.clientHeight - 675 + this.iframeHeigh : this.clientHeight - 675;
return this.TableHeight;
},
...mapGetters(['clientHeight', 'iframeHeight'])
@ -240,21 +262,39 @@ export default {
this.agencyId = this.user.agencyId;
this.orgId = this.agencyId;
this.getOrgTreeList();
// this.getTableData();
this.getTableData();
this.getsubData();
this.getsubData2();
},
methods: {
show(row) {
this.dialogVisible = true;
this.pageType = 'view';
this.detailId = row.houseId;
console.log("detailId",row)
console.log("detailId",this.detailId)
this.detailData = row;
},
handleClose() {
this.dialogVisible = false;
this.pageType = 'list';
this.detailId = '';
this.getTableData();
},
async getTableData() {
this.tableLoading = true;
// const url = '/gov/org/staffLoginLog/community-count';
const url = 'http://yapi.elinkservice.cn/mock/356/gov/org/staffLoginLog/community-count';
const url = '/gov/org/ichouse/getHousePictureList';
const { pageSize, pageNo, formData } = this;
const { data, code, msg } = await requestPost(url, {
pageSize,
pageNo,
...formData
orgIdPath: this.orgId,
timeStart: this.formData.startDate,
timeEnd: this.formData.endDate,
purpose: this.purpose,
rentFlag: this.rentFlag
});
this.tableLoading = false;
@ -353,6 +393,7 @@ export default {
return {
value: item.count,
name: type[item.type],
code: item.type,
radio: item.count == 0 ? '0' : ((item.count / this.pieData.total) * 100).toFixed(2)
};
});
@ -373,6 +414,7 @@ export default {
return {
value: item.count,
name: type[item.type],
code: item.type,
radio: item.count == 0 ? '0' : ((item.count / this.pieData2.total) * 100).toFixed(2)
};
});
@ -589,39 +631,44 @@ export default {
this.$refs.pieChart2.setOption(this.pieOption2);
},
handelClickMyPei(param) {
if (param.data.level != 'community') {
if (param.data.level == 'district') {
this.orgType = 'street';
}
if (param.data.level == 'street') {
this.orgType = 'community';
}
this.purpose = param.data.code;
this.rentFlag = '';
this.getTableData();
// if (param.data.level != 'community') {
// if (param.data.level == 'district') {
// this.orgType = 'street';
// }
// if (param.data.level == 'street') {
// this.orgType = 'community';
// }
this.orgId = param.data.id;
this.orgName = param.data.name;
this.pageNo = 1;
this.showNext();
this.dialogVisible = true;
}
// this.orgId = param.data.id;
// this.orgName = param.data.name;
// this.pageNo = 1;
// this.showNext();
// this.dialogVisible = true;
// }
},
handelClickMyPei2(param) {
if (param.data.level != 'community') {
if (param.data.level == 'district') {
this.orgType = 'street';
}
if (param.data.level == 'street') {
this.orgType = 'community';
}
this.orgId = param.data.id;
this.orgName = param.data.name;
this.pageNo = 1;
this.showNext();
this.dialogVisible = true;
}
this.purpose = '';
this.rentFlag = param.data.code;
this.getTableData();
// if (param.data.level != 'community') {
// if (param.data.level == 'district') {
// this.orgType = 'street';
// }
// if (param.data.level == 'street') {
// this.orgType = 'community';
// }
// this.orgId = param.data.id;
// this.orgName = param.data.name;
// this.pageNo = 1;
// this.showNext();
// this.dialogVisible = true;
// }
},
async handleExport() {
const url = '/gov/project/icEvent/export';
const url = '/gov/org/ichouse/export';
const { pageSize, pageNo, formData } = this;
axios({
url: window.SITE_CONFIG['apiURL'] + url,
@ -629,7 +676,11 @@ export default {
data: {
pageSize,
pageNo,
...formData
orgIdPath: this.orgId,
timeStart: this.formData.startDate,
timeEnd: this.formData.endDate,
purpose: this.purpose,
rentFlag: this.rentFlag
},
responseType: 'blob'
})
@ -674,6 +725,8 @@ export default {
},
handleSearch(val) {
this.pageNo = 1;
this.purpose="";
this.rentFlag="";
this.getTableData();
this.getsubData();
this.getsubData2();
@ -681,7 +734,6 @@ export default {
handleChangeAgency(val) {
// let obj = this.$refs['myCascader'].getCheckedNodes()[0].data;
let tmp = this.formData.orgId;
if (tmp && typeof tmp != 'undefined' && tmp != 0 && tmp != null) {
this.orgId = this.formData.orgId;

28
src/views/modules/census/census-residentList.vue

@ -315,39 +315,25 @@ export default {
},
setPieData() {
let data = [...this.pieData];
let type = {
0: '50岁以下',
1: '50-59岁',
2: '60-69岁',
3: '70-79岁',
4: '80岁以上'
};
this.chartData.name = data.map(item => type[item.code]);
this.chartData.name = data.map(item => item.codeName);
this.chartData.data = data.map(item => {
return {
value: item.totalResi,
name: type[item.code],
name: item.codeName,
code: item.code,
radio: item.totalResi == 0 ? '0' : ((item.totalResi / 100) * 100).toFixed(2)
};
});
console.log('chartData', this.chartData);
this.iniPieChart(this.chartData);
},
setPieData2() {
let data = [...this.pieData2.list];
let type = {
1: '本科',
0: '硕士',
2: '博士',
3: '博士后'
};
this.chartData2.name = data.map(item => type[item.code]);
let data = [...this.pieData2];
this.chartData2.name = data.map(item => item.codeName);
this.chartData2.data = data.map(item => {
return {
value: item.totalResi,
name: type[item.code],
name: item.codeName,
code: item.code,
radio: item.totalResi == 0 ? '0' : ((item.totalResi / this.pieData2.total) * 100).toFixed(2)
};
@ -606,7 +592,7 @@ export default {
if (!(tmp && typeof tmp != 'undefined' && tmp != 0 && tmp != null)) {
this.formData.orgId = '';
this.orgType = '';
this.code="";
this.code = '';
}
axios({
@ -617,7 +603,7 @@ export default {
pageNo,
orgId: this.orgId,
orgType: this.orgType,
code:this.code
code: this.code
},
responseType: 'blob'
})

Loading…
Cancel
Save