Browse Source

居民接口对接

feature
SongZhen 2 years ago
parent
commit
6045bc9643
  1. 1
      src/components/Dialog/index.vue
  2. 1
      src/components/GridTree/nodeWrap.vue
  3. 376
      src/views/dataBoard/organizational/microgrid/components/popDetails.vue
  4. 204
      src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue
  5. 12
      src/views/dataBoard/organizational/microgrid/index.vue

1
src/components/Dialog/index.vue

@ -71,6 +71,7 @@ export default {
box-shadow: inset 0px 0px 40px 0px rgba(26, 149, 255, 0.45);
border-radius: 4px;
border: 1px solid #1a95ff;
height: auto !important;
.cnt {
overflow-y: auto;

1
src/components/GridTree/nodeWrap.vue

@ -154,6 +154,7 @@ export default {
margin-top: -12px;
background-image: url(~@/assets/images/home/dyzxhTree.png);
background-size: 100%;
cursor: pointer;
}
.lxjt {
@include spanLevel;

376
src/views/dataBoard/organizational/microgrid/components/popDetails.vue

@ -11,22 +11,18 @@
<div class="item">
<div class="field">所属网格</div>
<div class="value">
<span v-if="info.community">{{ info.community }}</span>
<span v-if="info.grid"> - {{ info.grid }}</span>
{{ info.houseInfo.gridName }}
</div>
</div>
<div class="item">
<div class="field">所属房屋</div>
<div class="value">
<span v-if="info.village">{{ info.village }}</span>
<span v-if="info.building"> - {{ info.building }}</span>
<span v-if="info.unit"> - {{ info.unit }}</span>
<span v-if="info.room"> - {{ info.room }}</span>
{{ info.houseInfo.homeName }}
</div>
</div>
<div class="item">
<div class="field">本地户籍</div>
<div class="value">{{ info.census_type }}</div>
<div class="value">{{ info.localResidenceFlag == 1 ? "是" : "否" }}</div>
</div>
</div>
<div class="row">
@ -40,23 +36,23 @@
</div>
<div class="item">
<div class="field">性别</div>
<div class="value">{{ info.gender }}</div>
<div class="value">{{ info.genderName }}</div>
</div>
<div class="item">
<div class="field">民族</div>
<div class="value">{{ info.ethnic }}</div>
<div class="value">{{ info.nationName }}</div>
</div>
<div class="item">
<div class="field">联系电话</div>
<div class="value">{{ info.telephone }}</div>
<div class="value">{{ info.mobile }}</div>
</div>
<div class="item">
<div class="field">证件号</div>
<div class="value">{{ info.idcard }}</div>
<div class="value">{{ info.idNum }}</div>
</div>
<div class="item">
<div class="field">备注</div>
<div class="value">{{ info.resident_remark }}</div>
<div class="value">{{ info.remark }}</div>
</div>
</div>
@ -71,26 +67,7 @@
<div class="field">居民分类</div>
<div class="value">
<div class="u-categorys">
<span v-if="info.crowd">党员</span>
<span v-if="info.mlsp">低保人员</span>
<span v-if="info.srs">保障房人员</span>
<span v-if="info.unemployed">失业人员</span>
<span v-if="info.woca">育龄妇女</span>
<span v-if="info.exs">退役军人</span>
<span v-if="info.ufs">统战人员</span>
<span v-if="info.petitioner">信访人员</span>
<span v-if="info.volunteer">志愿者</span>
<span v-if="info.in_person">特扶人员</span>
<span v-if="info.tenant">租户</span>
<span v-if="info.float_popu">流动人口</span>
<span v-if="info.special_popu">特殊人群</span>
<span v-if="info.aaaa">独居老人</span>
<span v-if="info.empty_nest">空巢老人</span>
<span v-if="info.disability">失能老人</span>
<span v-if="info.dementia">失智老人</span>
<span v-if="info.adisability">残疾</span>
<span v-if="info.ser_ill">大病</span>
<span v-if="info.ncd">慢病</span>
<span v-for="item in peopleTypesArr" :key="item">{{ item }}</span>
</div>
</div>
</div>
@ -647,6 +624,7 @@
<script>
import popup from "@/views/dataBoard/cpts/popup";
import { requestPostBi } from "@/js/dai/request-bipass";
export default {
name: "residentDetails",
@ -661,150 +639,7 @@ export default {
data() {
return {
info: {
woca: true,
exs: false,
srs: true,
household: "--",
holdingrel: "--",
ethnic: "--",
community: "--",
user_id: "--",
census_type: "--",
aged: true,
spouse: "--",
mlsp: false,
ncp: true,
disable_idcard: "--",
volunteer: false,
village: "--",
disable_degree: "--",
marital: "--",
native_place: "--",
disable_type: "--",
building: "--",
disable_remark: "--",
skill: "--",
petitioner: true,
unemployed: true,
needs_group: "--",
hobby: "--",
unit: "--",
gender: "--",
retire_income: "--",
workunit: "--",
ufs: false,
birthday: "--",
in_person: false,
adisability: false,
household_remark: "--",
belief: "--",
education_remark: "--",
education: "--",
residence_current: "--",
career: "--",
empty_nest: false,
idcard: "--",
room: "--",
guardian: "--",
tenant: true,
residence: "--",
supporters: "--",
ser_ill: false,
ncd: true,
belief_remark: "--",
dementia: false,
disability: true,
telephone: "--",
income: "--",
native: "--",
crowd: false,
resident_remark: "--",
hobby_remark: "--",
retire_remark: "--",
special_popu: true,
street: "--",
float_popu: true,
supporters_relation: "--",
name: "--",
grid: "--",
retire_date: "--",
joinTime: "--",
positiveTime: "--",
branchId: "--",
flowFlag: "--",
flowActNum: "--",
partyJob: "--",
retiredFlag: "--",
centerFlag: "--",
joinBranchName: "--",
joinCommunityTime: "--",
longHolidayFlag: "--",
ensure_house_id: "--",
housingNature: "--",
securityType: "--",
certificateDate: "--",
subsidyNum: "--",
subsidyAmount: "--",
unemployed_id: "--",
originWorkUnit: "--",
unemploymentTime: "--",
unemploymentNum: "--",
employmentNum: "--",
specialSkill: "--",
unemploymentReason: "--",
employmentHardFlag: "--",
employmentWish: "--",
veteran_id: "--",
joinArmyTime: "--",
leaveArmyTime: "--",
serviceUnit: "--",
receiveUnit: "--",
settlementAmount: "--",
trainDesc: "--",
joinWarStartTime: "--",
joinWarEndTime: "--",
employmentSituation: "--",
pubWelfareJobFlag: "--",
united_front_id: "--",
duty: "--",
visitation: "--",
volunteer_id: "--",
volunteerCategory: "--",
volunteerRemark: "--",
old_people_id: "--",
oldSubsidy: "--",
special_id: "--",
specialCategoryCode: "--",
birth_record_id: "--",
birthplace: "--",
father: "--",
mother: "--",
count: "--",
reportDate: "--",
death_record_id: "--",
deathDate: "--",
deathReason: "--",
removeDate: "--",
removeReason: "--",
move_out_record_id: "--",
outOfTime: "--",
type: "--",
reason: "--",
deptId: "--",
villageId: "--",
villageName: "--",
buildId: "--",
buildName: "--",
unitId: "--",
unitName: "--",
homeId: "--",
homeName: "--",
address: "--",
residence_current: "--",
},
info: {},
currentTabIndex: 0,
startTabIndex: 0,
BaseTabList: ["教育信息", "兴趣爱好", "宗教", "健康", "工作", "经济状况", "居住", "家庭"],
@ -812,9 +647,23 @@ export default {
};
},
computed: {},
watch: {
resiId: {
handler(val) {
if (val) {
this.getInfo(val);
this.getInfoBase(val);
}
},
immediate: true,
},
},
mounted() {},
computed: {
currentTab() {
return this.tabList[this.currentTabIndex];
},
},
methods: {
addStartTabIndex() {
@ -834,8 +683,177 @@ export default {
}
},
async getInfoBase(val) {
const url = "resident_info";
const { data, code } = await requestPostBi(url, {
queryParam: {
resident_id: 1001001,
},
});
if (code === 0) {
this.info = { ...this.info, ...data[0] };
}
},
handleClose() {
this.$emit("close", false);
this.$emit("close");
},
// id
getInfo(val) {
this.$http.post(`/actual/base/residentBaseInfo/detail/1001001`).then((res) => {
const { code, data } = res.data;
if (code === 0) {
this.info = data;
const { info } = this;
let tabList = this.BaseTabList;
info.crowd && tabList.push("党员");
info.srs && tabList.push("保障房");
info.unemployed && tabList.push("失业");
info.exs && tabList.push("退役军人");
info.ufs && tabList.push("统战人员");
info.volunteer && tabList.push("志愿者");
info.aged && tabList.push("老年人");
info.special_popu && tabList.push("特殊人群");
tabList.push("出生信息");
tabList.push("死亡信息");
tabList.push("迁出");
this.tabList = tabList;
this.getHomeTypes(info.categoryInfo);
} else {
this.$message.error(msg);
}
});
},
// id
handlePageNoChange(page_num) {
this.page_num = page_num;
this.getList();
},
handleSizeChange(page_size) {
localStorage.setItem("dataBoard_page_size", page_size);
this.page_size = page_size;
this.getList();
},
async getList() {
const { org_id, listType, page_num, page_size, searchDate } = this;
const start_date = searchDate[0];
const end_date = searchDate[1];
let peop_type = this.type2;
this.loading = true;
const url = "person_resour_list";
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
page_num,
page_size,
start_date,
end_date,
org_id,
peop_type,
},
},
{
// mockId: 60068051,
}
);
this.loading = false;
if (code === 0) {
this.srcTableData = data;
console.log("this.srcTableData ", this.srcTableData);
// this.total = data.total;
// service_num avg_satisfaction
this.list = data.map((item, index) => {
return [
index + 1,
item.peop_name ? item.peop_name : "--",
// item.peop_id ? item.peop_id : '--',
item.peop_child_type ? item.peop_child_type : "--",
item.service_num ? item.service_num : "--",
item.service_ratio ? item.service_ratio : "--",
item.avg_satisfaction ? item.avg_satisfaction : "--",
item.sum_point ? item.sum_point : "--",
{ type: "operate", list: ["查看"] },
];
});
console.log("this.list", this.list);
} else {
this.$message.error(msg);
}
this.list = [];
},
async getCount() {
const { org_id, listType, page_num, page_size, searchDate } = this;
const start_date = searchDate[0];
const end_date = searchDate[1];
const url = "person_resour_list_num";
let peop_type = this.type2;
const { data, code, msg } = await requestPostBi(
url,
{
queryParam: {
org_id,
start_date,
end_date,
peop_type,
},
},
{
// mockId: 63070189,
}
);
if (code === 0) {
this.total = parseInt(data[0].total);
} else {
this.$message.error(msg);
}
},
getHomeTypesMap(item) {
const homeTypeMap = new Map([
["partyFlag", { name: "党员", icon: "dy" }],
["subsistenceAllowanceFlag", { name: "低保人员", icon: "dbry" }],
["ensureHouseFlag", { name: "保障房人员", icon: "bzfry" }],
["unemployedFlag", { name: "失业人员", icon: "syry" }],
["fertileWomanFlag", { name: "育龄妇女", icon: "ylfn" }],
["veteranFlag", { name: "退役军人", icon: "tyjr" }],
["unitedFrontFlag", { name: "统战人员", icon: "tzry" }],
["petitionOfficerFlag", { name: "信访人员", icon: "xfry" }],
["volunteerFlag", { name: "志愿者", icon: "zyz" }],
["oldPeopleFlag", { name: "老年人", icon: "lnr" }],
["emptyNesterFlag", { name: "空巢老人", icon: "kclr" }],
["specialSupportFlag", { name: "特扶人员", icon: "tfry" }],
["disabledFlag", { name: "失能人员", icon: "snry" }],
["dementedFlag", { name: "失智人员", icon: "szry" }],
["disabilityFlag", { name: "残疾人", icon: "cjr" }],
["seriousIllnessFlag", { name: "大病人员", icon: "dbry" }],
["chronicDiseaseFlag", { name: "慢性病人员", icon: "mxbry" }],
["specialCrowdFlag", { name: "特殊人群", icon: "tsry" }],
["tenantFlag", { name: "租户", icon: "zh" }],
["floatingFlag", { name: "流动人员", icon: "ldry" }],
["liveAloneFlag", { name: "独居老人", icon: "kclr" }],
["publicWelfareFlag", { name: "公益岗人员", icon: "gyg" }],
]);
return homeTypeMap.get(item).name;
},
getHomeTypes(newItem) {
let arr = [];
const itemNumOne = Object.keys(newItem).filter((key) => newItem[key] === 1);
itemNumOne.forEach((item) => {
arr.push(this.getHomeTypesMap(item));
this.peopleTypesArr = arr;
});
},
},
};

204
src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue

@ -1,74 +1,137 @@
<template>
<Dialog title="事件详情" @close="handleClose">
<template>
<div class="eventWrap">
<div class="eventWrap" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)">
<el-row :gutter="32">
<el-col :span="13" style="padding-left: 40px">
<div class="leftEvent">
<div class="eventDetails">事件详情</div>
<div class="eventItem">
<span>所属组织</span>
<span>海伦路社区</span>
<span>{{ item.gridName }}</span>
</div>
<div class="eventItem">
<span>上报渠道</span>
<span>12345</span>
<span>{{ item.sourceTypeName }}</span>
</div>
<div class="eventItem">
<span>接受时间</span>
<span>2023-05-15 14:11:32</span>
<span>{{ item.happenTime }}</span>
</div>
<!-- <div class="eventItem">
<div class="eventItem">
<span>工单号</span>
<span>{{ item.workOrderNum }}</span>
</div>
<div class="eventItem">
<div>问题描述</div>
<div>空间的规划宽带山东快书嘉豪个客户时刻见风使舵和高科技皇上高考结束后高考结束后给沙发快接电话个空间里都是高科技时代合格的考生嘉豪收到反馈各家各户的沙发空间规划上宽带价格好恐惧的沙发和高科技手段和高科技手段好是空间的规划k</div>
</div> -->
<div style="margin-top: 20px">{{ item.eventContent }}</div>
</div>
<div class="eventItem">
<div>图片</div>
<div style="margin-top: 20px; display: flex">
<img style="width: 100px; height: 100px; margin-right: 5px" v-for="src in item.imageList" :key="src" :src="src" alt="/" @click="openImg(src)" />
</div>
</div>
<div class="eventItem">
<span>联系人</span>
<span>王先生</span>
<span>{{ item.name }}</span>
</div>
<div class="eventItem">
<span>联系电话</span>
<span>12323434567</span>
<span>{{ item.mobile }}</span>
</div>
<div class="eventItem">
<span>详细地址</span>
<span>的经典款亟待解决宽带</span>
<span>{{ item.address }}</span>
</div>
<div class="eventItem">
<span>办结时限</span>
<span>2023-3-45 12:12:12</span>
<span>{{ item.gridName }}</span>
</div>
<div class="eventItem">
<span>满意度评价</span>
<span>基本满意</span>
<span>{{ item.satisfactionName }}</span>
</div>
</div>
</el-col>
<el-col :span="11">
<div class="rightEvent m-info">
<div class="eventDetails">办理进展</div>
<!-- <el-timeline>
<el-timeline-item v-for="(activity, index) in activities" :key="index" :timestamp="activity.timestamp">
{{ activity.content }}
</el-timeline-item>
</el-timeline> -->
<el-timeline class="timeline" :reverse="true">
<!-- <el-timeline class="timeline" :reverse="true">
<el-timeline-item v-for="(item, index) in activities" :key="index" :class="index == activities.length - 1 ? 'sucess' : ''">
<div class="status-box">
<div class="status1" v-if="index == activities.length - 1">回复</div>
<div class="status2" v-else>完成并回复</div>
<div class="timestamp">{{ item.reply_time }}</div>
<div class="timestamp">{{ item.timeLimit ? $moment(item.timeLimit).format("YYYY-MM-DD hh:mm:ss") : "" }}</div>
</div>
<div class="content">
<div class="field">回复人</div>
<div class="value">{{ item.user_show_name }}</div>
<div class="value">{{ item.departmentName }}</div>
</div>
<div class="content">
<div class="field">回复内容</div>
<div class="value">{{ item.reply_content }}</div>
<div class="value">{{ item.publicReply }}</div>
</div>
</el-timeline-item>
</el-timeline>
</el-timeline> -->
<div v-if="activities.length > 0">
<!-- <el-card :class="{ 'box-card': source === 'visiual' }" style="min-height: calc(88vh - 50px); overflow: auto"> -->
<div class="m-process">
<div class="list">
<div class="item" :class="[index === 0 ? 'z-on' : '']" :key="item.processId" v-for="(item, index) in activities">
<div class="item-row">
<template v-if="item.agencyId">
<div class="name">指派</div>
</template>
<template v-if="!item.timeLimit">
<div class="name">完成并回复</div>
</template>
<template v-if="!item.agencyId && item.timeLimit">
<div class="name">{{ item.processName }}</div>
</template>
<div class="date">
{{ item.processTime ? getTrueTime(item.processTime) : "" }}
</div>
</div>
<div v-if="item.type === 'event'">
<template v-if="item.agencyId">
<div class="detail">
<div class="detail-field">指派人</div>
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail">
<div class="detail-field">指派部门</div>
<div class="detail-value">{{ item.agencyName }}</div>
</div>
<div class="detail">
<div class="detail-field">转办意见</div>
<div class="detail-value">{{ item.publicReply }}</div>
</div>
<div class="detail">
<div class="detail-field">办结时限</div>
<div class="detail-value">{{ formTimeLimit(item.timeLimit) }}</div>
</div>
</template>
<template v-else>
<div class="detail">
<div class="detail-field">回复人</div>
<div class="detail-value">{{ item.departmentName }}</div>
</div>
<div class="detail">
<div class="detail-field">回复内容</div>
<div class="detail-value">{{ item.publicReply }}</div>
</div>
<div class="detail" v-if="item.timeLimit">
<div class="detail-field">办结时限</div>
<div class="detail-value">{{ getTrueTime(item.timeLimit) }}</div>
</div>
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
@ -92,23 +155,9 @@ export default {
data() {
return {
activities: [
{
reply_content: "活动按期开始",
reply_time: "2018-04-15",
user_show_name: "qqqq",
},
{
reply_content: "活动按期开始",
reply_time: "2018-04-15",
user_show_name: "qqqq",
},
{
reply_content: "活动按期开始",
reply_time: "2018-04-15",
user_show_name: "qqqq",
},
],
item: {},
loading: false,
activities: [],
};
},
@ -129,18 +178,45 @@ export default {
methods: {
handleClose() {
this.$emit("close", false);
this.item = {};
},
openImg(src) {
window.open(src);
},
getTrueTime(time) {
return this.$moment(time * 1000).format("YYYY-MM-DD hh:mm");
},
getDetailsData(id) {
this.$http.post("/governance/icEvent/detail", { icEventId: id }).then((res) => {
console.log(res);
});
this.loading = true;
this.$http
.post("/governance/icEvent/detail", { icEventId: id })
.then((res) => {
const { code, data } = res.data;
if (code === 0) {
this.item = data;
}
})
.catch((res) => {
this.loading = false;
});
},
getProcessData(id) {
this.$http.post("/governance/icEvent/process", { icEventId: id }).then((res) => {
console.log(res);
});
this.$http
.post("/governance/icEvent/process", { icEventId: id })
.then((res) => {
const { code, data } = res.data;
if (code === 0) {
this.activities = data;
this.loading = false;
}
})
.catch((err) => {
this.loading = false;
});
},
// /governance/icEvent/detail
@ -150,7 +226,13 @@ export default {
</script>
<style lang="scss" src="@/assets/scss/dataBoard/popup-info.scss" scoped></style>
<style lang="scss" scoped>
@import "@/assets/scss/modules/shequzhili/event-info.scss";
@mixin fontStyle {
color: #fff !important;
font-size: 14px !important;
}
.eventWrap {
height: 500px;
overflow-y: auto;
@ -161,28 +243,18 @@ export default {
}
.m-info {
padding: 0px !important;
.timeline {
padding: 0px !important;
.content {
.field {
font-size: 14px;
text-align: left;
opacity: 1;
color: #fff;
}
.value {
font-size: 14px;
}
.m-process {
margin: 0 !important;
.name {
@include fontStyle;
}
.status-box {
.timestamp {
color: #fff;
opacity: 1;
font-size: 14px;
}
.status2 {
width: 90px !important;
border-radius: 0 !important;
.date {
@include fontStyle;
}
.detail {
@include fontStyle;
.detail-field {
flex: none !important;
}
}
}

12
src/views/dataBoard/organizational/microgrid/index.vue

@ -56,7 +56,7 @@
</el-table>
</div>
<div v-if="showDialog">
<same-dialog @close="close" />
<same-dialog :resiId="this.rowId" @close="close" />
</div>
<div v-if="showDialogEvent">
<report-an-event :id="rowId" @close="closeEvent" />
@ -99,11 +99,11 @@ export default {
ifActive: false,
key: 3,
},
{
name: "安全隐患",
ifActive: false,
key: 4,
},
// {
// name: "",
// ifActive: false,
// key: 4,
// },
],
breadcrumbList: [
{

Loading…
Cancel
Save