Browse Source

居民导出

shibei_master
dai 3 years ago
parent
commit
933625fbde
  1. 25
      src/views/modules/communityService/fuwuzuzhi/cpts/edit.vue
  2. 272
      src/views/modules/communityService/sqzzz/cpts/edit.vue
  3. 101
      src/views/modules/shequzhili/tuceng/zhonghe/base.vue

25
src/views/modules/communityService/fuwuzuzhi/cpts/edit.vue

@ -67,7 +67,9 @@
placeholder="请输入服务内容,不超过1000字"
v-model="fmData.orgDescribe"
></el-input>
<div style="width:610px" v-else>{{ fmData.orgDescribe || "--" }}</div>
<div style="width: 610px" v-else>
{{ fmData.orgDescribe || "--" }}
</div>
</el-form-item>
<el-form-item
@ -84,7 +86,9 @@
placeholder="请输入负责人姓名"
v-model="fmData.principalName"
></el-input>
<div style="width:610px" v-else>{{ fmData.principalName || "--" }}</div>
<div style="width: 610px" v-else>
{{ fmData.principalName || "--" }}
</div>
</el-form-item>
<el-form-item
@ -101,7 +105,9 @@
placeholder="请输入联系方式"
v-model="fmData.principalMobile"
></el-input>
<div style="width:610px" v-else>{{ fmData.principalMobile || "--" }}</div>
<div style="width: 610px" v-else>
{{ fmData.principalMobile || "--" }}
</div>
</el-form-item>
<el-form-item
@ -188,6 +194,7 @@
import { mapGetters } from "vuex";
import { requestPost } from "@/js/dai/request";
import formVltHelper from "dai-js/tools/formVltHelper";
import nextTick from "dai-js/tools/nextTick";
var map;
var search;
@ -288,8 +295,8 @@ export default {
geocoder = new TMap.service.Geocoder(); //
//
map.on("panend", () => {
this.handleMoveCenter();
map.on("panend", (e) => {
this.handleMoveCenter(e);
});
this.handleMoveCenter();
},
@ -336,7 +343,7 @@ export default {
});
},
handleMoveCenter() {
handleMoveCenter(e) {
//
const center = map.getCenter();
const lat = center.getLat();
@ -345,11 +352,13 @@ export default {
this.fmData.longitude = lng;
this.setMarker(lat, lng);
if (e && e.originalEvent) {
geocoder
.getAddress({ location: new TMap.LatLng(lat, lng) }) //
.then((result) => {
this.fmData.address = result.result.address;
});
}
},
async getInfo() {
@ -366,7 +375,11 @@ export default {
...data,
serviceTypeArr: data.serviceType.split(","),
};
await nextTick(800);
if (map) {
map.setCenter(new TMap.LatLng(data.latitude, data.longitude));
}
} else {
this.$message.error(msg);
}

272
src/views/modules/communityService/sqzzz/cpts/edit.vue

@ -1,185 +1,246 @@
<template>
<div>
<div class="dialog-h-content scroll-h">
<el-form ref="ref_form"
<el-form
ref="ref_form"
:inline="true"
:model="dataForm"
:rules="dataRule"
:disabled="formType === 'detail'"
class="form">
<el-form-item label="组织名称 "
class="form"
>
<el-form-item
label="组织名称 "
prop="organizationName"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入组织名称 "
v-model="dataForm.organizationName">
v-model="dataForm.organizationName"
>
</el-input>
</el-form-item>
<el-form-item label="分类名称 "
<el-form-item
label="分类名称 "
prop="categoryCode"
label-width="150px"
style="display: block">
<el-select v-model="dataForm.categoryCode"
style="display: block"
>
<el-select
v-model="dataForm.categoryCode"
placeholder="请选择"
clearable>
<el-option v-for="item in categoryList"
clearable
>
<el-option
v-for="item in categoryList"
:key="item.value"
:label="item.label"
:value="item.value">
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="组织人数 "
<el-form-item
label="组织人数 "
prop="organizationPersonCount"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
type="number"
maxlength="50"
show-word-limit
placeholder="请输入组织人数 "
v-model="dataForm.organizationPersonCount">
v-model="dataForm.organizationPersonCount"
>
</el-input>
</el-form-item>
<el-form-item label="组织成员 "
<el-form-item
label="组织成员 "
prop="organizationPersonnel"
label-width="150px"
style="display: block">
style="display: block"
>
<div class="m-staffs">
<div class="item"
<div
class="item"
:key="'staff' + index"
v-for="(item, index) in dataForm.organizationPersonnel">
<el-input class="item_width_1"
maxlength="50"
show-word-limit
v-for="(item, index) in dataForm.organizationPersonnel"
>
<el-autocomplete
class="item_width_1"
v-model="item.personName"
:fetch-suggestions="querySearchVolunteer"
placeholder="成员姓名"
v-model="item.personName" />
:maxlength="50"
show-word-limit
@select="(vItem) => handleSelectVolunteer(index, vItem)"
:disabled="item.icResiUserId != ''"
></el-autocomplete>
<el-input style="margin-left: 10px"
<el-input
style="margin-left: 10px"
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="联系电话"
v-model="item.personPhone" />
:disabled="item.icResiUserId != ''"
v-model="item.personPhone"
/>
<el-button style="margin-left: 10px"
<el-button
style="margin-left: 10px"
size="small"
@click="handleDelStaff(index)">删除</el-button>
@click="handleDelStaff(index)"
>删除</el-button
>
</div>
<div class="item-add">
<el-button size="small"
@click="handleAddStaff">添加</el-button>
<el-button size="small" @click="handleAddStaff">添加</el-button>
</div>
</div>
</el-form-item>
<el-form-item label="服务事项"
<el-form-item
label="服务事项"
prop="serviceItem"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
type="textarea"
maxlength="1000"
show-word-limit
:rows="3"
placeholder="请输入服务事项,不超过1000字"
v-model="dataForm.serviceItem"></el-input>
v-model="dataForm.serviceItem"
></el-input>
</el-form-item>
<el-form-item label="负责人 "
<el-form-item
label="负责人 "
prop="principalName"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入负责人 "
v-model="dataForm.principalName">
v-model="dataForm.principalName"
>
</el-input>
</el-form-item>
<el-form-item label="联系电话 "
<el-form-item
label="联系电话 "
prop="principalPhone"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
maxlength="50"
show-word-limit
placeholder="请输入联系电话 "
v-model="dataForm.principalPhone">
v-model="dataForm.principalPhone"
>
</el-input>
</el-form-item>
<el-form-item label="创建时间"
<el-form-item
label="创建时间"
prop="organizationCreatedTime"
label-width="150px"
style="display: block">
<el-date-picker v-model="dataForm.organizationCreatedTime"
style="display: block"
>
<el-date-picker
v-model="dataForm.organizationCreatedTime"
placeholder="创建时间"
value-format="yyyy-MM-dd">
value-format="yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item label="位置坐标"
<el-form-item
label="位置坐标"
prop="longitude"
label-width="150px"
style="display: block">
style="display: block"
>
<div style="width: 500px">
<el-input class="item_width_4"
<el-input
class="item_width_4"
maxlength="50"
placeholder="请输入关键字"
v-model="dataForm.address">
v-model="dataForm.address"
>
</el-input>
<el-button style="margin-left: 10px"
<el-button
style="margin-left: 10px"
type="primary"
size="small"
@click="handleSearchMap">查询</el-button>
<div id="app"
class="div_map"></div>
@click="handleSearchMap"
>查询</el-button
>
<div id="app" class="div_map"></div>
<div style="margin-top: 10px">
<span>经度</span>
<el-input class="item_width_3"
<el-input
class="item_width_3"
maxlength="50"
placeholder="请输入经度"
v-model="dataForm.longitude">
v-model="dataForm.longitude"
>
</el-input>
<span style="margin-left: 20px">纬度</span>
<el-input class="item_width_3"
<el-input
class="item_width_3"
maxlength="50"
placeholder="请输入纬度"
v-model="dataForm.latitude">
v-model="dataForm.latitude"
>
</el-input>
</div>
</div>
</el-form-item>
<el-form-item label="备注"
<el-form-item
label="备注"
prop="remark"
label-width="150px"
style="display: block">
<el-input class="item_width_1"
style="display: block"
>
<el-input
class="item_width_1"
type="textarea"
maxlength="500"
show-word-limit
:rows="3"
placeholder="请输入备注,不超过500字"
v-model="dataForm.remark"></el-input>
v-model="dataForm.remark"
></el-input>
</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 != 'detail'"
<el-button size="small" @click="handleCancle"> </el-button>
<el-button
v-if="formType != 'detail'"
type="primary"
size="small"
:disabled="btnDisable"
@click="handleComfirm"> </el-button>
@click="handleComfirm"
> </el-button
>
</div>
</div>
</template>
@ -189,14 +250,18 @@ import { mapGetters } from "vuex";
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import formVltHelper from "dai-js/tools/formVltHelper";
import nextTick from "dai-js/tools/nextTick";
var map;
var search;
var markers;
var infoWindowList;
let loading; //
var geocoder; //
export default {
components: {},
props: {},
data() {
return {
formType: "add", // addeditdetail
@ -219,9 +284,9 @@ export default {
organizationPersonnel: [],
},
categoryList: [],
volunteerList: [],
};
},
components: {},
computed: {
dataRule() {
return {
@ -255,17 +320,52 @@ export default {
};
},
},
props: {},
watch: {},
async created () {
this.getCategoryList();
},
async mounted() {
this.getCategoryList();
this.getVolunteerList();
this.initMap();
},
methods: {
querySearchVolunteer(queryString, cb) {
const { volunteerList } = this;
var results = queryString
? volunteerList.filter((item) => {
return item.value.indexOf(queryString) !== -1;
})
: volunteerList;
// callback
cb(results);
},
handleSelectVolunteer(index, vItem) {
this.dataForm.organizationPersonnel[index] = {
personName: vItem.name,
personPhone: vItem.mobile,
icResiUserId: vItem.icResiUserId,
};
},
async getVolunteerList() {
const url = "/epmetuser/icresiuser/volunteer-list";
const params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.volunteerList = data.map((item) => {
return {
name: item.name,
value: item.label,
mobile: item.mobile,
icResiUserId: item.icResiUserId,
};
});
} else {
this.$message.error(msg);
}
},
async getCategoryList() {
const url = "/sys/dict/data/dictlist";
const params = {
@ -281,7 +381,7 @@ export default {
handleAddStaff() {
this.dataForm.organizationPersonnel = [
...this.dataForm.organizationPersonnel,
{ personName: "", personPhone: "" },
{ personName: "", personPhone: "", icResiUserId: "" },
];
},
handleDelStaff(index) {
@ -309,9 +409,11 @@ export default {
});
infoWindowList = Array(10);
geocoder = new TMap.service.Geocoder(); //
//
map.on("panend", () => {
this.handleMoveCenter();
map.on("panend", (e) => {
this.handleMoveCenter(e);
});
this.handleMoveCenter();
},
@ -358,7 +460,8 @@ export default {
});
},
handleMoveCenter () {
handleMoveCenter(e) {
console.log(e);
//
const center = map.getCenter();
const lat = center.getLat();
@ -366,6 +469,14 @@ export default {
this.dataForm.latitude = lat;
this.dataForm.longitude = lng;
this.setMarker(lat, lng);
if (e && e.originalEvent) {
geocoder
.getAddress({ location: new TMap.LatLng(lat, lng) }) //
.then((result) => {
this.dataForm.address = result.result.address;
});
}
},
async initForm(type, row) {
@ -376,8 +487,12 @@ export default {
if (row) {
this.dataForm = { ...this.dataForm, ...row };
this.orgId = this.dataForm.orgId;
await nextTick(800);
if (map) {
map.setCenter(new TMap.LatLng(row.latitude, row.longitude));
}
}
},
async handleComfirm() {
@ -400,10 +515,7 @@ export default {
dataForm: { organizationPersonnel },
} = this;
let vlt = organizationPersonnel.every((item) => {
return (
item.personName &&
item.personPhone
);
return item.personName && item.personPhone;
});
if (!vlt) {
return this.$message({

101
src/views/modules/shequzhili/tuceng/zhonghe/base.vue

@ -277,6 +277,23 @@
:gridName="currentPepeleGridName"
@close="showedPeopleMoreInfo = false"
/>
<el-dialog
:visible.sync="diyDialog"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="1150px"
top="5vh"
class="dialog-h"
>
<diy-info
v-if="diyDialog"
ref="ref_diy"
:list="exportList"
:search="computeQueryParams()"
@close="diyDialog = false"
></diy-info>
</el-dialog>
</div>
</template>
@ -285,6 +302,7 @@ import { requestPost } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import peopleMore from "@/views/modules/shequ/cpts/people-more";
import diyInfo from "@/views/modules/base/diyInfo.vue";
export default {
props: {
@ -294,7 +312,7 @@ export default {
},
},
components: { peopleMore },
components: { peopleMore, diyInfo },
data() {
return {
openSearch: false,
@ -345,6 +363,9 @@ export default {
currentPepeleId: "",
currentPepeleGridName: "",
diyDialog: false,
exportList: [],
};
},
computed: {
@ -620,64 +641,32 @@ export default {
},
async handleChu() {
const url = "/epmetuser/icMoveIn/export";
const { pageSize, pageNo } = this;
await this.$http({
method: "POST",
url,
responseType: "blob",
data: {
pageSize,
pageNo,
...this.computeQueryParams(),
this.getExportList();
},
})
.then((res) => {
console.log("res----dddd", res);
this.formatData(res);
})
.catch((err) => {
console.log("err", err);
this.exportLoading = false;
return this.$message.error("网络错误");
async getExportList() {
const url = "/oper/customize//icformitemgroup/list";
let params = {
formCode: "resi_base_info",
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
data.forEach((item) => {
(async (id) => {
// item.queryItemList = await this.getExportChildList(id)
item.queryItemList = [];
})(item.id);
});
},
formatData(res) {
const fileReader = new FileReader();
fileReader.onloadend = () => {
try {
const jsonData = JSON.parse(fileReader.result); //
//
console.log("jsonData---1", jsonData);
return this.$message.error(jsonData.msg);
} catch (err) {
//
//
console.log("errr-----", err, this);
this.downloadFile(res);
this.exportList = [...data];
this.$nextTick(() => {
this.diyDialog = true;
});
console.log("获取详情成功getExportList----", this.exportList);
} else {
this.$message.error(msg);
}
};
fileReader.readAsText(res.data);
},
downloadFile(res) {
if (res.headers["content-disposition"]) {
let fileName = window.decodeURI(
res.headers["content-disposition"].split(";")[1].split("=")[1]
);
console.log("filename", fileName);
let blob = new Blob([res.data], { type: "application/vnd.ms-excel" });
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", fileName);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink); //
window.URL.revokeObjectURL(url); //blob
this.$message.success("导出成功");
this.$emit("close");
} else this.$message.error("下载失败");
},
async getTableData() {

Loading…
Cancel
Save