Browse Source

合并dev代码

feature
SongZhen 2 years ago
parent
commit
7dd915e29f
  1. BIN
      src/assets/images/overview/dia_con.png
  2. BIN
      src/assets/images/overview/dia_foot.png
  3. BIN
      src/assets/images/overview/dia_head.png
  4. BIN
      src/assets/images/overview/zanwu.png
  5. 16
      src/assets/scss/dataBoard/overview/index.scss
  6. 1
      src/assets/scss/dataBoard/table.scss
  7. 6
      src/router/index.js
  8. 129
      src/views/dataBoard/cpts/details/jmxq.vue
  9. 129
      src/views/dataBoard/cpts/details/smyd.vue
  10. 129
      src/views/dataBoard/cpts/details/xqwmz.vue
  11. 61
      src/views/dataBoard/cpts/details/yxwxfw.vue
  12. 9
      src/views/dataBoard/cpts/family/modules/EnjoyService.vue
  13. 116
      src/views/dataBoard/cpts/family/modules/Family.vue
  14. 20
      src/views/dataBoard/cpts/family/modules/MatterDetails.vue
  15. 119
      src/views/dataBoard/cpts/family/modules/businessTables copy/economize.vue
  16. 2
      src/views/dataBoard/cpts/homeDetails/index.vue
  17. 30
      src/views/dataBoard/cpts/map/index.vue
  18. 12
      src/views/dataBoard/cpts/personnel/modules/EnjoyService.vue
  19. 110
      src/views/dataBoard/cpts/personnel/modules/Family.vue
  20. 16
      src/views/dataBoard/cpts/personnel/modules/MatterDetails.vue
  21. 14
      src/views/dataBoard/cpts/personnel/modules/PointsRecord.vue
  22. 14
      src/views/dataBoard/cpts/personnel/modules/businessTables/community.vue
  23. 20
      src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue
  24. 19
      src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue
  25. 14
      src/views/dataBoard/cpts/personnel/modules/businessTables/give-service.vue
  26. 14
      src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue
  27. 16
      src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue
  28. 55
      src/views/dataBoard/overview/components/DynamicHumanRoomData.vue
  29. 44
      src/views/dataBoard/overview/components/GridUpdateRanking.vue
  30. 48
      src/views/dataBoard/overview/components/RankingGridData.vue
  31. 11
      src/views/dataBoard/overview/components/jdwgy.vue
  32. 2
      src/views/dataBoard/overview/components/map-top.vue
  33. 53
      src/views/dataBoard/overview/components/sqrfph.vue
  34. 2
      src/views/dataBoard/overview/familyPortrait/index.vue
  35. 164
      src/views/dataBoard/overview/index.vue
  36. 4
      src/views/dataBoard/overview/resident/index.vue
  37. 2
      src/views/dataBoard/renfang/index.vue
  38. 10
      src/views/dataBoard/renfang/resi/classNew.vue
  39. 2
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue
  40. 4
      src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue
  41. 15
      src/views/dataBoard/satisfactionEval/modules/EventStatistics/index.vue
  42. 115
      src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue
  43. 309
      src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue
  44. 2
      src/views/modules/base/residentManagement/unemployment/unemployment.vue
  45. 92
      src/views/modules/satisfaction/detail/eventInfo.vue

BIN
src/assets/images/overview/dia_con.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/assets/images/overview/dia_foot.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
src/assets/images/overview/dia_head.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
src/assets/images/overview/zanwu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

16
src/assets/scss/dataBoard/overview/index.scss

@ -3,7 +3,7 @@
@import '../c/common';
.g-row {
padding: 0 6px 24px;
padding: 0 6px 6px;
display: flex;
justify-content: space-between;
@ -13,12 +13,12 @@
.g-center {
position: relative;
width: 884px;
width: 910px;
}
.g-center-open {
position: relative;
width: 884px;
width: 910px;
.m-map {
position: relative;
@ -176,7 +176,7 @@
&-top {
display: flex;
justify-content: space-between;
padding-top: 20px;
//padding-top: 20px;
}
&-card {
@ -209,7 +209,7 @@
}
&-content {
margin-top: 15px;
margin-top: 10px;
&-item {
display: flex;
@ -357,7 +357,7 @@
}
.m-jdwgy {
height: 220px;
height: auto!important;
padding: 12px 16px;
}
@ -578,7 +578,7 @@
}
.m-sqrfph {
padding: 24px 16px;
padding: 12px 16px;
.table {
.tr {
@ -653,7 +653,7 @@
}
.m-sq12345 {
padding: 24px 16px;
padding: 12px 16px;
.table {
.tr {

1
src/assets/scss/dataBoard/table.scss

@ -16,6 +16,7 @@
}
/deep/ .el-table tr {
background: url("@/assets/images/manyidu/table_line.png") no-repeat bottom center!important;
background-size: 100%!important;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}

6
src/router/index.js

@ -403,7 +403,7 @@ export const dataBoardRoutes = {
path: "overview/resident",
props: true,
component: () => import("@/views/dataBoard/overview/resident/index"),
name: "dataBoard-renfang-resident",
name: "dataBoard-overview-resident",
meta: {
title: "居民画像",
isTab: false,
@ -517,7 +517,7 @@ export const dataBoardRoutes = {
component: () => import("@/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index"),
name: "dataBoard-satisfactionEval-dissatisfiedPersonnel",
meta: {
title: "画像匹配同类不满意人员",
title: "画像匹配同类潜在不满意人员 ",
isTab: false,
},
},
@ -527,7 +527,7 @@ export const dataBoardRoutes = {
component: () => import("@/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail"),
name: "dataBoard-satisfactionEval-dissatisfiedPersonnel-detail",
meta: {
title: "画像匹配同类不满意人员",
title: "画像匹配同类潜在不满意人员 ",
isTab: false,
},
},

129
src/views/dataBoard/cpts/details/jmxq.vue

@ -1,6 +1,6 @@
<template>
<el-dialog
width="1118px"
width="818px"
:modal="true"
:modal-append-to-body="false"
:destroy-on-close="true"
@ -13,7 +13,7 @@
<title-box text="居民需求详情" />
</el-col>
<el-col
:span="13"
:span="23"
style="padding-left: 40px"
v-loading="loading"
element-loading-text="加载中"
@ -70,129 +70,6 @@
</div>
</div>
</el-col>
<el-col
:span="11"
v-loading="loading1"
element-loading-text="加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 21, 64, 0.3)"
>
<div class="rightEvent m-info">
<div class="eventDetails">
<img
:width="18"
:height="18"
src="@/assets/images/manyidu/tc-title-icon.png"
/>
</div>
<div v-if="item.logList && item.logList.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 item.logList"
>
<div class="item-row">
<template>
<div class="name">
{{
item.actionCode === "create"
? "创建需求"
: item.actionCode === "update"
? "更新需求"
: item.actionCode === "cancel"
? "撤销需求"
: item.actionCode === "assign"
? "指派"
: item.actionCode === "take_order"
? "接单"
: item.actionCode === "finish"
? "完成"
: item.actionCode === "evaluate"
? "评价"
: ""
}}
</div>
</template>
<div class="date">
{{ item.oprateTime }}
</div>
</div>
<div>
<template v-if="item.actionCode === 'create'">
<div class="detail">
<div class="detail-field">上报人</div>
<div class="detail-value">
{{ item.reportUserName }} {{ item.roleName }}
</div>
</div>
</template>
<template v-if="item.actionCode === 'assign'">
<div class="detail">
<div class="detail-field">办理人</div>
<div class="detail-value">
{{ item.assignUser }}
</div>
</div>
<div class="detail">
<div class="detail-field">指派给服务方</div>
<div class="detail-value">
{{ item.serverName }} {{
item.serviceType === "volunteer"
? "志愿者"
: item.serviceType === "social_org"
? "社会组织"
: item.serviceType === "community_org"
? "社区自组织"
: item.serviceType === "party_unit"
? "区域党建单位"
: item.serviceType === "enterprise"
? "企业,商家"
: ""
}}
</div>
</div>
</template>
<template v-if="item.actionCode === 'finish'">
<div class="detail">
<div class="detail-field">服务方</div>
<div class="detail-value">
{{ item.serverName }} {{
item.serviceType === "volunteer"
? "志愿者"
: item.serviceType === "social_org"
? "社会组织"
: item.serviceType === "community_org"
? "社区自组织"
: item.serviceType === "party_unit"
? "区域党建单位"
: item.serviceType === "enterprise"
? "企业,商家"
: ""
}}
</div>
</div>
<!-- <div class="detail">
<div class="detail-field">完成时间</div>
<div class="detail-value">
{{ item.assignUser }}
</div>
</div>-->
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
</div>
</el-dialog>
@ -285,7 +162,7 @@ export default {
/deep/ .el-dialog {
background: url(~@/assets/images/manyidu/dialog-bg.png);
background-size: 100% 100%;
width: 1118px;
width: 818px;
height: 822px;
}

129
src/views/dataBoard/cpts/details/smyd.vue

@ -1,6 +1,6 @@
<template>
<el-dialog
width="1118px"
width="818px"
:modal="true"
:modal-append-to-body="false"
:destroy-on-close="true"
@ -13,7 +13,7 @@
<title-box text="省满意度调查不满意事项详情" />
</el-col>
<el-col
:span="13"
:span="23"
style="padding-left: 40px"
v-loading="loading"
element-loading-text="加载中"
@ -64,129 +64,6 @@
</div>
</div>
</el-col>
<el-col
:span="11"
v-loading="loading1"
element-loading-text="加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 21, 64, 0.3)"
>
<div class="rightEvent m-info">
<div class="eventDetails">
<img
:width="18"
:height="18"
src="@/assets/images/manyidu/tc-title-icon.png"
/>
</div>
<div v-if="item.logList && item.logList.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 item.logList"
>
<div class="item-row">
<template>
<div class="name">
{{
item.actionCode === "create"
? "创建需求"
: item.actionCode === "update"
? "更新需求"
: item.actionCode === "cancel"
? "撤销需求"
: item.actionCode === "assign"
? "指派"
: item.actionCode === "take_order"
? "接单"
: item.actionCode === "finish"
? "完成"
: item.actionCode === "evaluate"
? "评价"
: ""
}}
</div>
</template>
<div class="date">
{{ item.oprateTime }}
</div>
</div>
<div>
<template v-if="item.actionCode === 'create'">
<div class="detail">
<div class="detail-field">上报人</div>
<div class="detail-value">
{{ item.reportUserName }} {{ item.roleName }}
</div>
</div>
</template>
<template v-if="item.actionCode === 'assign'">
<div class="detail">
<div class="detail-field">办理人</div>
<div class="detail-value">
{{ item.assignUser }}
</div>
</div>
<div class="detail">
<div class="detail-field">指派给服务方</div>
<div class="detail-value">
{{ item.serverName }} {{
item.serviceType === "volunteer"
? "志愿者"
: item.serviceType === "social_org"
? "社会组织"
: item.serviceType === "community_org"
? "社区自组织"
: item.serviceType === "party_unit"
? "区域党建单位"
: item.serviceType === "enterprise"
? "企业,商家"
: ""
}}
</div>
</div>
</template>
<template v-if="item.actionCode === 'finish'">
<div class="detail">
<div class="detail-field">服务方</div>
<div class="detail-value">
{{ item.serverName }} {{
item.serviceType === "volunteer"
? "志愿者"
: item.serviceType === "social_org"
? "社会组织"
: item.serviceType === "community_org"
? "社区自组织"
: item.serviceType === "party_unit"
? "区域党建单位"
: item.serviceType === "enterprise"
? "企业,商家"
: ""
}}
</div>
</div>
<!-- <div class="detail">
<div class="detail-field">完成时间</div>
<div class="detail-value">
{{ item.assignUser }}
</div>
</div>-->
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
</div>
</el-dialog>
@ -302,7 +179,7 @@ export default {
/deep/ .el-dialog {
background: url(~@/assets/images/manyidu/dialog-bg.png);
background-size: 100% 100%;
width: 1118px;
width: 818px;
max-height: 822px;
}

129
src/views/dataBoard/cpts/details/xqwmz.vue

@ -1,6 +1,6 @@
<template>
<el-dialog
width="1118px"
width="818px"
:modal="true"
:modal-append-to-body="false"
:destroy-on-close="true"
@ -13,7 +13,7 @@
<title-box text="社区满意度自查不满意事项详情" />
</el-col>
<el-col
:span="13"
:span="23"
style="padding-left: 40px"
v-loading="loading"
element-loading-text="加载中"
@ -64,129 +64,6 @@
</div>
</div>
</el-col>
<el-col
:span="11"
v-loading="loading1"
element-loading-text="加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 21, 64, 0.3)"
>
<div class="rightEvent m-info">
<div class="eventDetails">
<img
:width="18"
:height="18"
src="@/assets/images/manyidu/tc-title-icon.png"
/>
</div>
<div v-if="item.logList && item.logList.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 item.logList"
>
<div class="item-row">
<template>
<div class="name">
{{
item.actionCode === "create"
? "创建需求"
: item.actionCode === "update"
? "更新需求"
: item.actionCode === "cancel"
? "撤销需求"
: item.actionCode === "assign"
? "指派"
: item.actionCode === "take_order"
? "接单"
: item.actionCode === "finish"
? "完成"
: item.actionCode === "evaluate"
? "评价"
: ""
}}
</div>
</template>
<div class="date">
{{ item.oprateTime }}
</div>
</div>
<div>
<template v-if="item.actionCode === 'create'">
<div class="detail">
<div class="detail-field">上报人</div>
<div class="detail-value">
{{ item.reportUserName }} {{ item.roleName }}
</div>
</div>
</template>
<template v-if="item.actionCode === 'assign'">
<div class="detail">
<div class="detail-field">办理人</div>
<div class="detail-value">
{{ item.assignUser }}
</div>
</div>
<div class="detail">
<div class="detail-field">指派给服务方</div>
<div class="detail-value">
{{ item.serverName }} {{
item.serviceType === "volunteer"
? "志愿者"
: item.serviceType === "social_org"
? "社会组织"
: item.serviceType === "community_org"
? "社区自组织"
: item.serviceType === "party_unit"
? "区域党建单位"
: item.serviceType === "enterprise"
? "企业,商家"
: ""
}}
</div>
</div>
</template>
<template v-if="item.actionCode === 'finish'">
<div class="detail">
<div class="detail-field">服务方</div>
<div class="detail-value">
{{ item.serverName }} {{
item.serviceType === "volunteer"
? "志愿者"
: item.serviceType === "social_org"
? "社会组织"
: item.serviceType === "community_org"
? "社区自组织"
: item.serviceType === "party_unit"
? "区域党建单位"
: item.serviceType === "enterprise"
? "企业,商家"
: ""
}}
</div>
</div>
<!-- <div class="detail">
<div class="detail-field">完成时间</div>
<div class="detail-value">
{{ item.assignUser }}
</div>
</div>-->
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
</div>
</el-dialog>
@ -316,7 +193,7 @@ export default {
/deep/ .el-dialog {
background: url(~@/assets/images/manyidu/dialog-bg.png);
background-size: 100% 100%;
width: 1118px;
width: 818px;
max-height: 822px;
}

61
src/views/dataBoard/cpts/details/yxwxfw.vue

@ -1,6 +1,6 @@
<template>
<el-dialog
width="1118px"
width="818px"
:modal="true"
:modal-append-to-body="false"
:destroy-on-close="true"
@ -13,7 +13,7 @@
<title-box text="社区服务详情" />
</el-col>
<el-col
:span="13"
:span="23"
style="padding-left: 40px"
v-loading="loading"
element-loading-text="加载中"
@ -71,60 +71,6 @@
</div>
</div>
</el-col>
<el-col
:span="11"
v-loading="loading1"
element-loading-text="加载中"
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0, 21, 64, 0.3)"
>
<div class="rightEvent m-info">
<div class="eventDetails">
<img
:width="18"
:height="18"
src="@/assets/images/manyidu/tc-title-icon.png"
/>
</div>
<div v-if="formData.gridIdList.length > 0">
<div class="m-process">
<div class="list">
<div
class="item"
:class="[index === 0 ? 'z-on' : '']"
v-for="(item, index) in formData.gridIdList"
>
<div class="item-row">
<div class="name">{{ item.serviceStatus }}</div>
<div class="date">
{{ item.createdTime }}
</div>
</div>
<div>
<template v-if="item.serviceStatus === '创建服务'">
<div class="detail">
<div class="detail-field">创建人</div>
<div class="detail-value">
{{ item.createdBy }} {{ item.agencyName }}
</div>
</div>
</template>
<template v-else>
<div class="detail">
<div class="detail-field">服务方</div>
<div class="detail-value">
{{ item.objectName }}
</div>
</div>
</template>
</div>
</div>
</div>
</div>
<!-- </el-card> -->
</div>
</div>
</el-col>
</el-row>
</div>
</el-dialog>
@ -189,7 +135,6 @@ export default {
return this.$message.error(res.msg);
} else {
this.serviceTypesLevel1 = res.data;
console.log("this.serviceTypesLevel1::", this.serviceTypesLevel1);
}
})
.catch(() => {
@ -258,7 +203,7 @@ export default {
/deep/ .el-dialog {
background: url(~@/assets/images/manyidu/dialog-bg.png);
background-size: 100% 100%;
width: 1118px;
width: 818px;
max-height: 822px;
}
/deep/ .el-dialog__body {

9
src/views/dataBoard/cpts/family/modules/EnjoyService.vue

@ -29,12 +29,17 @@ export default {
};
},
created() {
const query = this.$route.query;
this.houseId = query.houseId;
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
methods: {
getList() {
const query = this.$route.query;
this.houseId = query.houseId;
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",

116
src/views/dataBoard/cpts/family/modules/Family.vue

@ -1,16 +1,19 @@
<template>
<div class="family">
<div class="tag" v-for="item in data" :key="item.id">
<div
class="tag"
@click="cheackCrrent(item)"
v-for="item in data"
:key="item.id"
>
<div>
{{ item.name }}
<span v-if="item.houseHolderRel"
>({{ item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel }})
</span>
</div>
<div v-if="item.householdSituation">
入户状态{{ item.householdSituation }}
<div v-if="item.houseHolderRel">
关系{{
item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel
}}
</div>
<div>居民分类{{ getType(item.classificationOfInhabitantsList) }}</div>
</div>
<div style="padding-top: 220px; margin-left: 148px">
<div class="user-name">{{ hzData.name }}</div>
@ -25,50 +28,66 @@ export default {
data() {
return {
data: [],
queryParam: {
type: "1",
},
info: {},
};
},
computed: {
getType() {
return (arr) => {
if (arr.length > 0) {
let txt = "";
arr.forEach((item, index) => {
if (arr.length == index + 1) {
txt = txt + item;
} else {
txt = txt + item + ",";
}
});
return txt;
} else {
return "暂无";
}
};
computed: {},
watch: {
"$route.query"(newVal, oldVal) {
this.getDatas();
},
},
created() {
const query = this.$route.query;
this.queryParam.resid = query.houseId;
this.getDatas();
},
methods: {
getParams(params) {
let paramStr = "";
Object.keys(params).forEach((item) => {
if (paramStr === "") {
paramStr = `${item}=${params[item]}`;
} else {
paramStr = `${paramStr}&${item}=${params[item]}`;
}
});
return paramStr;
},
cheackCrrent(item) {
const params = { ...this.$route.query, houseId: item.homeId };
this.$router.push(this.$route.path + "?" + this.getParams(params));
},
getDatas() {
this.data = [];
this.info = {};
const query = this.$route.query;
this.$http
.post(
"/actual/base/peopleRoomOverview/getFamilyRelationshipList?type=1&resid=" +
this.queryParam.resid
query.houseId
)
.then(({ data: res }) => {
const data = res.data;
this.data = data;
this.hzData = data.filter((item) => item.houseHolderRel == "本人")[0];
const arr = data.filter((item) => item.houseHolderRel == "本人");
this.hzData = arr.length > 0 ? arr[0] : {};
this.$emit("setJuminData", data);
});
},
getType(arr) {
if (arr.length > 0) {
let txt = "";
arr.forEach((item, index) => {
if (arr.length == index + 1) {
txt = txt + item;
} else {
txt = txt + item + ",";
}
});
return txt;
} else {
return "暂无";
}
},
// getUserInfo() {
// this.$http
// .post(
@ -105,37 +124,56 @@ export default {
width: 180px;
min-height: 80px;
&:nth-of-type(1) {
left: -24px;
left: -14px;
top: -24px;
}
&:nth-of-type(2) {
right: -24px;
right: -14px;
top: -24px;
}
&:nth-of-type(3) {
left: -24px;
bottom: -20px;
bottom: -40px;
}
&:nth-of-type(4) {
right: -24px;
top: 274px;
top: 294px;
}
&:nth-of-type(5) {
left: -94px;
top: 74px;
top: 58px;
}
&:nth-of-type(6) {
right: -94px;
top: 74px;
top: 58px;
}
&:nth-of-type(7) {
left: -124px;
top: 174px;
top: 134px;
}
&:nth-of-type(8) {
right: -124px;
top: 174px;
top: 134px;
}
&:nth-of-type(9) {
left: -104px;
top: 214px;
}
&:nth-of-type(10) {
right: -104px;
top: 214px;
}
&:nth-of-type(11) {
right: 144px;
bottom: -60px;
}
&:nth-of-type(12) {
right: 144px;
top: -44px;
}
}
.tag:hover {
cursor: pointer;
}
.user-name {
width: 174px;

20
src/views/dataBoard/cpts/family/modules/MatterDetails.vue

@ -15,7 +15,7 @@
{{ item.tagName }}
</div>
</div>
<!-- <div class="jtxxdz">四季景园1号楼1单元101</div>-->
<!-- <div class="jtxxdz">四季景园1号楼1单元101</div>-->
</div>
</template>
@ -31,19 +31,25 @@ export default {
},
created() {
const query = this.$route.query;
this.queryParams.houseId = query.houseId;
this.getDatas();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getDatas();
},
},
methods: {
getDatas() {
this.data = [];
const query = this.$route.query;
this.$http
.get(
"/actual/base/peopleRoomOverview/getHouseTag?houseId=" +
this.queryParams.houseId
"/actual/base/peopleRoomOverview/getHouseTag?houseId=" + query.houseId
)
.then(({ data: res }) => {
this.data = res.data;
if (res.code == 0) {
this.data = res.data;
}
});
},
},
@ -61,7 +67,7 @@ export default {
color: #ffffff !important;
line-height: 32px;
position: absolute;
top:370px;
top: 370px;
left: 0;
}
.matter-details {

119
src/views/dataBoard/cpts/family/modules/businessTables copy/economize.vue

@ -1,119 +0,0 @@
<template>
<div class="table">
<el-table :data="list" max-height="363px" height="363px">
<el-table-column label="序号" type="index" width="80" />
<el-table-column label="不满意事项类型" prop="scope" width="190" />
<el-table-column label="不满意事项描述" prop="problemDesc" width="" />
<el-table-column label="办理状态" prop="completeFlag" width="120" />
<el-table-column label="是否回访" prop="isReturn" width="120" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<smyd :showDialog="showDialog" :id="rowId" @close="close" />
</div>
</template>
<script>
import smyd from "@/views/dataBoard/cpts/details/smyd.vue";
export default {
name: "economize",
components: {
smyd,
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
showDialog: false,
};
},
created() {},
mounted() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.getList();
},
methods: {
handleView(row) {
this.rowId = row.id;
this.showDialog = true;
},
close() {
this.showDialog = false;
},
getList() {
//
this.$http
.post("/actual/base/peopleRoomOverview/provincialSatisfactionPageList", this.queryParams)
.then(({ data: res }) => {
this.list = res.data;
this.total = res.data.length;
this.$emit("changeTotal", { name: 1, total: this.total });
});
},
},
};
</script>
<style scoped lang="scss">
.business-records {
margin-bottom: 25px;
}
.table {
/deep/ .el-table td,
/deep/ .el-table th,
/deep/ .el-table tr {
padding: 14px !important;
border: none !important;
min-height: 52px;
}
/deep/ .el-table td,
/deep/ .el-table th {
background: none !important;
}
/deep/ .el-table td {
font-size: 14px;
font-weight: 400;
color: #ffffff;
text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51);
}
/deep/ .el-table tr {
background: none;
&:hover {
background-color: rgba(26, 149, 255, 0.3) !important;
}
}
/deep/ .el-table__body-wrapper tr:nth-of-type(odd) {
background: rgba(14, 56, 115, 0.4);
}
/deep/ .el-table {
background: none !important;
&:before {
background: none;
}
}
/deep/ .el-table__header-wrapper tr {
color: #a3b9da !important;
font-size: 14px;
font-weight: 400;
opacity: 0.76;
background: none;
&:hover {
background: none !important;
}
}
/deep/ .el-table__header-wrapper {
background: none !important;
}
}
</style>

2
src/views/dataBoard/cpts/homeDetails/index.vue

@ -69,7 +69,7 @@
</el-table-column>
<el-table-column label="操作" width="90" align="center">
<template slot-scope="{ row }">
<el-button type="text" @click="$router.push('/dataBoard/overview/familyPortrait/?name=' + row.doorName + '&user_id=' + row.resiId + '&id=' + $route.query.id + '&name2=' + (homeText ? homeText : ''))">查看</el-button>
<el-button type="text" @click="$router.push('/dataBoard/overview/familyPortrait/?name=' + row.doorName + '&houseId=' + row.id + '&id=' + $route.query.id + '&name2=' + (homeText ? homeText : ''))">查看</el-button>
</template>
</el-table-column>
</el-table>

30
src/views/dataBoard/cpts/map/index.vue

@ -987,8 +987,32 @@ export default {
opacity: 0.9;
border-radius: 5px;
color: #fff;
box-shadow: 0 0 20px 3px inset rgba(#22f, 0.1);
//box-shadow: 0 0 20px 3px inset rgba(#22f, 0.1);
width: 416px;
padding: 0 20px !important;
background: url('@/assets/images/overview/dia_con.png');
&:before {
content: '';
display: block;
background: url('@/assets/images/overview/dia_head.png');
height: 29px;
width: 100%;
position: absolute;
top: -27.5px;
left: 0;
}
&:after {
content: '';
display: block;
background: url('@/assets/images/overview/dia_foot.png');
height: 26px;
width: 100%;
left: 0;
position: absolute;
bottom: -24px;
}
}
/deep/ .l7-popup-close-button {
@ -1116,8 +1140,8 @@ export default {
flex-wrap: wrap;
& > div {
flex: 0 0 131px;
width: 131px;
flex: 0 0 33%;
width: 33%;
height: 14px;
font-size: 14px;
font-weight: 400;

12
src/views/dataBoard/cpts/personnel/modules/EnjoyService.vue

@ -25,14 +25,22 @@ export default {
nameArr: ["岗位找人", "技能找人", "温暖找人", "服务找人"],
};
},
created() {
activated() {
this.getData();
},
watch: {
"$route.query"(newVal, oldVal) {
if (newVal.user_id != oldVal.user_id) {
this.getDatas();
}
},
},
mounted() {},
methods: {
getData() {
const id = this.$route.query.user_id;
this.$http
.get("/actual/base/peopleRoomOverview/serviceNumber")
.get("/actual/base/peopleRoomOverview/serviceNumber?resid=" + id)
.then(({ data: res }) => {
this.dataArr = dataFormatter(res.data);
this.nameArr = dataFormatter1(res.data);

110
src/views/dataBoard/cpts/personnel/modules/Family.vue

@ -1,21 +1,22 @@
<template>
<div class="family">
<div class="tag" v-for="item in data" :key="item.id">
<div
class="tag"
@click="cheackCrrent(item)"
v-for="item in data"
:key="item.id"
>
<div>
{{ item.name }}
<span v-if="item.houseHolderRel"
>({{ item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel }})
</span>
</div>
<div v-if="item.householdSituation">
入户状态{{ item.householdSituation }}
<div v-if="item.houseHolderRel">
关系{{ item.houseHolderRel == "本人" ? "户主" : item.houseHolderRel }}
</div>
<div>居民分类{{ getType(item.classificationOfInhabitantsList) }}</div>
</div>
<div style="padding-top: 220px; margin-left: 148px">
<div class="user-name">{{ info.name }}</div>
<div class="user-gx" v-if="info.houseHolderRel">
{{ info.houseHolderRel == "本人" ? "户主" : info.houseHolderRel }}
户主
</div>
</div>
</div>
@ -48,13 +49,38 @@ export default {
};
},
},
created() {
activated() {
const query = this.$route.query;
this.queryParam.resid = query.user_id;
this.data = [];
this.getDatas();
this.getUserInfo();
},
watch: {
"$route.query"(newVal, oldVal) {
const query = this.$route.query;
this.queryParam.resid = query.user_id;
this.data = [];
this.info = {};
this.getDatas();
},
},
// this.$route.query.path
methods: {
getParams(params) {
let paramStr = "";
Object.keys(params).forEach((item) => {
if (paramStr === "") {
paramStr = `${item}=${params[item]}`;
} else {
paramStr = `${paramStr}&${item}=${params[item]}`;
}
});
return paramStr;
},
cheackCrrent(item) {
const params = { ...this.$route.query, user_id: item.id };
this.$router.push(this.$route.path + "?" + this.getParams(params));
},
getDatas() {
this.$http
.post(
@ -63,20 +89,25 @@ export default {
this.queryParam
)
.then(({ data: res }) => {
this.data = res.data;
});
},
getUserInfo() {
this.$http
.post(
"/actual/base/peopleRoomOverview/getPersonalFile?resid=" +
this.queryParam.resid,
this.queryParam
)
.then(({ data: res }) => {
this.info = res.data;
if (res.code == 0) {
const data = res.data;
this.data = data;
const arr = data.filter((item) => item.houseHolderRel == "本人");
this.info = arr.length > 0 ? arr[0] : {};
}
});
},
// getUserInfo() {
// this.$http
// .post(
// "/actual/base/peopleRoomOverview/getPersonalFile?resid=" +
// this.queryParam.resid,
// this.queryParam
// )
// .then(({ data: res }) => {
// this.info = res.data;
// });
// },
},
};
</script>
@ -102,37 +133,56 @@ export default {
width: 180px;
min-height: 80px;
&:nth-of-type(1) {
left: -24px;
left: -14px;
top: -24px;
}
&:nth-of-type(2) {
right: -24px;
right: -14px;
top: -24px;
}
&:nth-of-type(3) {
left: -24px;
bottom: -20px;
bottom: -40px;
}
&:nth-of-type(4) {
right: -24px;
top: 274px;
top: 294px;
}
&:nth-of-type(5) {
left: -94px;
top: 74px;
top: 58px;
}
&:nth-of-type(6) {
right: -94px;
top: 74px;
top: 58px;
}
&:nth-of-type(7) {
left: -124px;
top: 174px;
top: 134px;
}
&:nth-of-type(8) {
right: -124px;
top: 174px;
top: 134px;
}
&:nth-of-type(9) {
left: -104px;
top: 214px;
}
&:nth-of-type(10) {
right: -104px;
top: 214px;
}
&:nth-of-type(11) {
right: 144px;
bottom: -60px;
}
&:nth-of-type(12) {
right: 144px;
top: -44px;
}
}
.tag:hover {
cursor: pointer;
}
.user-name {
width: 174px;

16
src/views/dataBoard/cpts/personnel/modules/MatterDetails.vue

@ -38,10 +38,18 @@ export default {
genderArr: ["未知", "男", "女"],
};
},
created() {
watch: {
"$route.query"(newVal, oldVal) {
const query = this.$route.query;
this.queryParams.resid = query.user_id;
this.data = {};
this.getDatas();
},
},
activated() {
const query = this.$route.query;
this.queryParams.resid = query.user_id;
this.data = {};
this.getDatas();
},
methods: {
@ -53,7 +61,9 @@ export default {
this.queryParams
)
.then(({ data: res }) => {
this.data = res.data;
if (res.code == 0) {
this.data = res.data;
}
});
},
},

14
src/views/dataBoard/cpts/personnel/modules/PointsRecord.vue

@ -17,18 +17,26 @@ export default {
name: "PointsRecord",
data() {
return {
data:[],
data: [],
};
},
created() {
activated() {
this.getData();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getDatas();
},
},
methods: {
getData() {
this.data = [];
this.$http
.get("/actual/base/peopleRoomOverview/recorHistory")
.then(({ data: res }) => {
this.data = res.data;
if (res.code == 0) {
this.data = res.data;
}
});
},
},

14
src/views/dataBoard/cpts/personnel/modules/businessTables/community.vue

@ -34,14 +34,22 @@ export default {
showDialog: false,
};
},
created() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
activated() {
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
mounted() {},
methods: {
getList() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.list = [];
this.total = 0;
this.$emit("changeTotal", { name: 2, total: 0 });
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",

20
src/views/dataBoard/cpts/personnel/modules/businessTables/complaint.vue

@ -13,11 +13,7 @@
</template>
</el-table-column>
</el-table>
<eventDetails
:showDialog="showDialog"
:id="this.rowId"
@close="close"
/>
<eventDetails :showDialog="showDialog" :id="this.rowId" @close="close" />
<Pagination
v-show="total > 0"
:total="total"
@ -50,11 +46,14 @@ export default {
};
},
created() {},
mounted() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
activated() {
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
methods: {
handleView(row) {
this.rowId = row.id;
@ -64,6 +63,11 @@ export default {
this.showDialog = false;
},
getList() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.list = [];
this.total = 0;
this.$emit("changeTotal", { name: 0, total: 0 });
//
const statusArr = {
processing: "处理中",

19
src/views/dataBoard/cpts/personnel/modules/businessTables/economize.vue

@ -35,11 +35,14 @@ export default {
};
},
created() {},
mounted() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
activated() {
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
methods: {
handleView(row) {
this.rowId = row.id;
@ -49,9 +52,17 @@ export default {
this.showDialog = false;
},
getList() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.list = [];
this.total = 0;
this.$emit("changeTotal", { name: 1, total: 0 });
//
this.$http
.post("/actual/base/peopleRoomOverview/provincialSatisfactionPageList", this.queryParams)
.post(
"/actual/base/peopleRoomOverview/provincialSatisfactionPageList",
this.queryParams
)
.then(({ data: res }) => {
this.list = res.data;
this.total = res.data.length;

14
src/views/dataBoard/cpts/personnel/modules/businessTables/give-service.vue

@ -35,13 +35,21 @@ export default {
};
},
created() {},
mounted() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
activated() {
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
methods: {
getList() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.list = [];
this.total = 0;
this.$emit("changeTotal", { name: 5, total: 0 });
//
this.$http
.post(

14
src/views/dataBoard/cpts/personnel/modules/businessTables/reporting-events.vue

@ -44,11 +44,14 @@ export default {
};
},
created() {},
mounted() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
activated() {
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
methods: {
handleView(row) {
this.rowId = row.id;
@ -58,6 +61,11 @@ export default {
this.showDialog = false;
},
getList() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.list = [];
this.total = 0;
this.$emit("changeTotal", { name: 3, total: 0 });
//
const statusArr = {
processing: "处理中",

16
src/views/dataBoard/cpts/personnel/modules/businessTables/resident.vue

@ -20,7 +20,7 @@
import jmxq from "@/views/dataBoard/cpts/details/jmxq.vue";
export default {
name: "complaint",
components:{
components: {
jmxq,
},
data() {
@ -34,11 +34,14 @@ export default {
showDialog: false,
};
},
created() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
activated() {
this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
this.getList();
},
},
mounted() {},
methods: {
handleView(row) {
@ -49,6 +52,11 @@ export default {
this.showDialog = false;
},
getList() {
const query = this.$route.query;
this.queryParams.residList[0] = query.user_id;
this.list = [];
this.total = 0;
this.$emit("changeTotal", { name: 4, total: 0 });
//
this.$http
.post(

55
src/views/dataBoard/overview/components/DynamicHumanRoomData.vue

@ -1,6 +1,6 @@
<template>
<div class="dhrd">
<div class="dhrd-list">
<div v-if="list.length > 0" class="dhrd-list">
<!-- <div class="dhrd-item">
<div class="time blue">
刚刚
@ -11,15 +11,37 @@
修改了新苑小区**的居民信息的居民信息的居民信息
</div>
</div>-->
<div class="dhrd-item" v-for="(item, index) in list" :key="index">
<div class="time">
{{ $moment(item.changeTime).format("HH:mm") }}
<div style="overflow: hidden">
<div ref="animation">
<div class="dhrd-item" v-for="(item, index) in list" :key="index">
<div class="time">
{{ $moment(item.changeTime).format("HH:mm") }}
</div>
<div class="title">{{ item.orgName }}</div>
<!-- <div class="name">{{item.orgName}}</div>-->
<div class="address">{{ item.content }}</div>
</div>
<div v-if="list.length > 4">
<div class="dhrd-item" v-for="(item, index) in list" :key="index">
<div class="time">
{{ $moment(item.changeTime).format("HH:mm") }}
</div>
<div class="title">{{ item.orgName }}</div>
<!-- <div class="name">{{item.orgName}}</div>-->
<div class="address">{{ item.content }}</div>
</div>
</div>
</div>
<div class="title">{{ item.orgName }}</div>
<!-- <div class="name">{{item.orgName}}</div>-->
<div class="address">{{ item.content }}</div>
</div>
</div>
<div v-else style="width: 100%; height: 100%; text-align: center;padding-top: 20px;">
<img
width="268px"
height="128px"
src="~@/assets/images/overview/zanwu.png"
/>
<div class="zanwuText">近3日暂无更新</div>
</div>
</div>
</template>
@ -61,6 +83,18 @@ export default {
)
.then(({ data: { data } }) => {
this.list = data;
if (this.list.length > 4) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
}
});
},
},
@ -72,6 +106,13 @@ export default {
.dhrd {
padding: 0 16px 20px;
}
.zanwuText {
margin-top: -34px;
font-size: 14px;
font-family: PingFang SC;
font-weight: 500;
color: #a3b9da;
}
.dhrd-list {
height: 140px;
overflow-y: auto;

44
src/views/dataBoard/overview/components/GridUpdateRanking.vue

@ -8,14 +8,32 @@
<div class="th">人口更新数</div>
<div class="th">人房更新总数</div>
</div>
<div class="tr" v-for="(item, index) in pmList" :key="index">
<div :class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'">
{{ index - 0 + 1 }}
<div style="overflow: hidden">
<div ref="animation">
<div class="tr" v-for="(item, index) in pmList" :key="index">
<div :class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'">
{{ index - 0 + 1 }}
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
<!-- 无缝滚动 -->
<div v-if="pmList.length > 3">
<div class="tr" v-for="(item, index) in pmList" :key="index">
<div
:class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'"
>
{{ index - 0 + 1 }}
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
</div>
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
</div>
</div>
@ -65,6 +83,18 @@ export default {
)
.then(({ data: { data } }) => {
this.pmList = data;
if (this.pmList.length > 3) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
}
});
},
},

48
src/views/dataBoard/overview/components/RankingGridData.vue

@ -15,14 +15,32 @@
<div class="th">人口更新数</div>
<div class="th">人房更新总数</div>
</div>
<div class="tr" v-for="item in pmList" :key="item.rank">
<div :class="item.rank < 4 ? `td tdbg${item.rank}` : 'td'">
{{ item.rank }}
<div style="overflow: hidden">
<div ref="animation">
<div class="tr" v-for="item in pmList" :key="item.rank">
<div :class="item.rank < 4 ? `td tdbg${item.rank}` : 'td'">
{{ item.rank }}
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
<!-- 无缝滚动 -->
<div v-if="pmList.length > 9">
<div class="tr" v-for="(item, index) in pmList" :key="index">
<div
:class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'"
>
{{ index - 0 + 1 }}
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
</div>
</div>
<div class="td">{{ item.orgName }}</div>
<div class="td">{{ item.houseNum }}</div>
<div class="td">{{ item.residentNum }}</div>
<div class="td">{{ item.sumNum }}</div>
</div>
</div>
</div>
@ -80,6 +98,19 @@ export default {
if (self) {
this.self = self;
}
if (this.pmList.length > 9) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation =
"move 10s linear infinite";
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
}
}
});
},
@ -89,6 +120,9 @@ export default {
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped />
<style scoped lang="scss">
.m-sqrfph {
height: 500px !important;
}
.rank {
font-size: 16px;
font-weight: 400;

11
src/views/dataBoard/overview/components/jdwgy.vue

@ -151,13 +151,16 @@ export default {
<style lang="scss" scoped>
/deep/ .table {
.el-table {
&:before {
display: none!important;
}
td {
padding: 0 !important;
padding: 9px 14px !important;
}
th {
padding: 6px 0 4px !important;
}
// th {
// padding: 6px 0 4px !important;
// }
}
}
</style>

2
src/views/dataBoard/overview/components/map-top.vue

@ -69,7 +69,7 @@
</template>
<template v-else>
<div class="item" :class="selectIndex === 'unit' ? 'xz' : ''" @click="selectIcon('unit')">
<div class="item-info" >
<div class="item-info">
<div>
<img src="~@/assets/images/overview/icon_wg.png"/>
微网格

53
src/views/dataBoard/overview/components/sqrfph.vue

@ -22,7 +22,9 @@
<!-- 无缝滚动 -->
<div v-if="pmList.length > 7">
<div class="tr" v-for="(item, index) in pmList" :key="index">
<div :class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'">
<div
:class="index - 0 + 1 < 4 ? `td tdbg${index - 0 + 1}` : 'td'"
>
{{ index - 0 + 1 }}
</div>
<div class="td">{{ item.orgName }}</div>
@ -72,28 +74,37 @@ export default {
},
methods: {
getList(item) {
this.$http.get("/actual/base/streetOverview/residentHouseUpdateGroup?month=" + this.date + "&level=" + item.orgLevel + "&orgId=" + item.orgId).then(({ data: { data } }) => {
this.pmList = data;
if (this.pmList.length > 7) {
this.$nextTick(() => {
const aniHeight = this.$refs.animation.querySelector(".tr").offsetHeight * this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
document.styleSheets[0].insertRule(
`@keyframes move{0% {
transform: translateY(0px);
}
100% {
transform: translateY(-${aniHeight}px);
}`,
0
);
});
}
});
this.$http
.get(
"/actual/base/streetOverview/residentHouseUpdateGroup?month=" +
this.date +
"&level=" +
item.orgLevel +
"&orgId=" +
item.orgId
)
.then(({ data: { data } }) => {
this.pmList = data;
if (this.pmList.length > 7) {
this.$nextTick(() => {
const aniHeight =
this.$refs.animation.querySelector(".tr").offsetHeight *
this.pmList.length;
this.$refs.animation.style.animation = "move 10s linear infinite";
document.styleSheets[0].insertRule(
`@keyframes move{0% {transform: translateY(0px);}100% {transform: translateY(-${aniHeight}px);}`,
0
);
});
}
});
},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped></style>
<style
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>

2
src/views/dataBoard/overview/familyPortrait/index.vue

@ -23,7 +23,7 @@ export default {
name: '概览'
}, {
path: '/homeDetails/index',
name: '画像匹配同类不满意人员'
name: '画像匹配同类潜在不满意人员 '
}, {
path: '',
name: ''

164
src/views/dataBoard/overview/index.vue

@ -8,12 +8,36 @@
<div class="g-row">
<div class="g-left">
<div class="m-box">
<title-box :text="`${currentLevel === 'district' ? '区' : currentLevel === 'street' ? '街道' : currentLevel === 'community' ? '社区' : currentLevel === 'grid' ? '网格' : ''}介绍`" />
<title-box
:text="`${
currentLevel === 'district'
? '区'
: currentLevel === 'street'
? '街道'
: currentLevel === 'community'
? '社区'
: currentLevel === 'grid'
? '网格'
: ''
}介绍`"
/>
<jdjs :currentLevelData="currentLevelData" />
</div>
<div class="m-box">
<title-box :text="`${currentLevel === 'district' ? '区' : currentLevel === 'street' ? '街道' : currentLevel === 'community' ? '社区' : currentLevel === 'grid' ? '网格' : ''}图谱画像`" />
<title-box
:text="`${
currentLevel === 'district'
? '区'
: currentLevel === 'street'
? '街道'
: currentLevel === 'community'
? '社区'
: currentLevel === 'grid'
? '网格'
: ''
}图谱画像`"
/>
<jdtphx :currentLevelData="currentLevelData" :id="orgId" />
</div>
</div>
@ -37,57 +61,136 @@
<rfsjtj :currentLevelData="currentLevelData" />
</div>
<!-- 街道概览 -->
<div v-if="currentLevel === 'street' || currentLevel === 'district'" class="m-box">
<div
v-if="currentLevel === 'street' || currentLevel === 'district'"
class="m-box"
>
<title-box text="各社区人房数据更新排行">
<span class="date-span">
<el-date-picker v-model="rfphDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月"> </el-date-picker>
<el-date-picker
v-model="rfphDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
>
</el-date-picker>
</span>
</title-box>
<sqrfph :currentLevelData="currentLevelData" :date="rfphDate" />
</div>
<div v-if="currentLevel === 'street' || currentLevel === 'district'" class="m-box">
<div
v-if="currentLevel === 'street' || currentLevel === 'district'"
class="m-box"
>
<title-box text="各社区12345投诉事件统计">
<span class="date-span">
<el-date-picker v-model="sq12345Date" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" />
<el-date-picker
v-model="sq12345Date"
format="yyyy-MM"
value-format="yyyy-MM"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<sq12345 :currentLevelData="currentLevelData" :date="sq12345Date" />
</div>
<!-- 社区&网格-->
<div v-if="currentLevel === 'community' || currentLevel === 'grid'" class="m-box">
<div
v-if="currentLevel === 'community' || currentLevel === 'grid'"
class="m-box"
>
<title-box text="人房数据动态更新" />
<Tabs v-model="dynamicType" :list="dynamicTypeList" v-if="currentLevel === 'community'" @changeVal="dynamicTypeChange" />
<DynamicHumanRoomData :currentLevelData="currentLevelData" v-if="dynamicType === 1" />
<GridUpdateRanking :currentLevelData="currentLevelData" v-if="dynamicType === 2" />
<Tabs
v-model="dynamicType"
:list="dynamicTypeList"
v-if="currentLevel === 'community'"
@changeVal="dynamicTypeChange"
/>
<DynamicHumanRoomData
:currentLevelData="currentLevelData"
:currentLevel="currentLevel"
v-if="dynamicType === 1"
/>
<GridUpdateRanking
:currentLevelData="currentLevelData"
:currentLevel="currentLevel"
v-if="dynamicType === 2"
/>
</div>
<!-- 社区概览-->
<div v-if="currentLevel === 'community'" class="m-box">
<title-box text="社区满意度自查结果">
<span class="date-span">
<el-date-picker v-model="sqzcDate" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" />
<el-date-picker
v-model="sqzcDate"
format="yyyy-MM"
value-format="yyyy-MM"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<CommunityResult :currentLevelData="currentLevelData" :date="sqzcDate" />
<CommunityResult
:currentLevelData="currentLevelData"
:date="sqzcDate"
/>
</div>
<div v-if="currentLevel === 'community'" class="m-box">
<title-box text="事件&回访">
<span class="date-span">
<el-date-picker v-model="sjhfDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" />
<el-date-picker
v-model="sjhfDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<Tabs v-model="eventType" :list="eventTypeList" @changeVal="eventTypeChange" />
<EventAndFollowUp :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 1" />
<FollowUp :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 2" />
<Tabs
v-model="eventType"
:list="eventTypeList"
@changeVal="eventTypeChange"
/>
<EventAndFollowUp
:currentLevelData="currentLevelData"
:date="sjhfDate"
v-if="eventType === 1"
/>
<FollowUp
:currentLevelData="currentLevelData"
:date="sjhfDate"
v-if="eventType === 2"
/>
</div>
<!-- 网格 -->
<div v-if="currentLevel === 'grid'" class="m-box">
<title-box text="社区网格数据更新情况排行">
<span class="date-span">
<el-date-picker v-model="sqwggxDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" />
<el-date-picker
v-model="sqwggxDate"
format="yyyy-MM"
value-format="yyyy-MM"
@change="changeDate"
type="month"
:clearable="false"
placeholder="选择月"
/>
</span>
</title-box>
<RankingGridData :currentLevelData="currentLevelData" :date="sqwggxDate" />
<RankingGridData
:currentLevelData="currentLevelData"
:date="sqwggxDate"
/>
</div>
</div>
</div>
@ -147,11 +250,11 @@ export default {
data() {
return {
loading: false,
rfphDate: this.$moment().format("YYYY-MM"),
sq12345Date: this.$moment().format("YYYY-MM"),
sqzcDate: this.$moment().format("YYYY-MM"),
sjhfDate: this.$moment().format("YYYY-MM"),
sqwggxDate: this.$moment().format("YYYY-MM"),
rfphDate: this.$moment().subtract(1, "month").format("YYYY-MM"),
sq12345Date: this.$moment().subtract(1, "month").format("YYYY-MM"),
sqzcDate: this.$moment().subtract(1, "month").format("YYYY-MM"),
sjhfDate: this.$moment().subtract(1, "month").format("YYYY-MM"),
sqwggxDate: this.$moment().subtract(1, "month").format("YYYY-MM"),
orgData: {
children: [],
}, //
@ -235,7 +338,8 @@ export default {
methods: {
changeCustomerName() {
this.customerName = localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台";
this.customerName =
localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台";
},
changeType(e) {
this.peopleType = e;
@ -286,7 +390,8 @@ export default {
orgLevel: item.level,
};
} else {
this.customerName = localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台";
this.customerName =
localStorage.getItem("customerNameDataBoard") || "数据分析可视化平台";
this.currentLevelData = {
...this.$store.state.chooseArea.chooseName,
orgLevel: this.$store.state.chooseArea.chooseName.level,
@ -364,7 +469,7 @@ export default {
orgId: this.orgId,
orgLevel: this.currentLevel,
};
// this.peopleType = this.currentLevel === 'grid'?'unit':'staffAgency';
this.peopleType = this.currentLevel === 'grid'?'unit':'staffAgency';
});
},
@ -455,12 +560,15 @@ export default {
cursor: pointer;
}
}
.date-current-weiyi {
background: #000;
}
</style>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped></style>
<style
lang="scss"
src="@/assets/scss/dataBoard/overview/index.scss"
scoped
></style>
<style lang="scss" scoped>
.tabs {

4
src/views/dataBoard/overview/resident/index.vue

@ -14,7 +14,7 @@ import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import personnel from "@/views/dataBoard/cpts/personnel";
export default {
name: "renfang",
name: "resident",
components: {
cptBread,
@ -31,7 +31,6 @@ export default {
},
},
{
path: "/dataBoard/renfang/resident",
meta: {
title: "居民画像",
},
@ -39,7 +38,6 @@ export default {
],
};
},
mounted() {},
watch: {},
methods: {

2
src/views/dataBoard/renfang/index.vue

@ -104,7 +104,7 @@
</div>
</div>
</div>
<div class="item" @click="jumpPath('normal', 'aged', '月更新率')">
<div class="item">
<div class="item-info">
<div>
<img

10
src/views/dataBoard/renfang/resi/classNew.vue

@ -542,9 +542,9 @@ export default {
this.pageNo = 1;
},
watch: {
$route(to, from) {
// this.$router.go(0);
},
// $route(to, from) {
// this.$router.go(0);
// },
oldVal: {
handler(newVal, oldVal) {
this.pageNo = 1;
@ -630,8 +630,8 @@ export default {
item.name ? item.name : "--",
item.gridName ? item.gridName : "--",
item.fullName ? item.fullName : "--",
item.mobile ? item.mobile : "--",
item.idNum ? item.idNum : "--",
item.mobile ? $sensitive(item.mobile, 3, 7) : "--",
item.idNum ? $sensitive(item.idNum, 6, 16) : "--",
item.gender ? gender[item.gender] : "--",
item.birthday ? item.birthday : "--",
{ type: "operate", list: ["查看"] },

2
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue

@ -23,7 +23,7 @@ export default {
name: '满意度评价'
}, {
path: '/dataBoard/satisfactionEval/dissatisfiedPersonnel',
name: '画像匹配同类不满意人员'
name: '画像匹配同类潜在不满意人员 '
}, {
path: '',
name: ''

4
src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue

@ -2,7 +2,7 @@
<div>
<Breadcrumb :list="breadcrumbList"/>
<!-- <div class="main-title">
<Title :text="`“${title}”画像匹配同类不满意人员`" noBg/>
<Title :text="`“${title}”画像匹配同类潜在不满意人员 `" noBg/>
</div>-->
<div class="table">
<el-table :data="list"
@ -74,7 +74,7 @@ export default {
},
{
path: "",
name: "画像匹配同类不满意人员",
name: "画像匹配同类潜在不满意人员 ",
},
],
monthOptions: new Array(12).fill(0).map((_, index) => {

15
src/views/dataBoard/satisfactionEval/modules/EventStatistics/index.vue

@ -147,6 +147,18 @@ export default {
return res;
},
},
dataZoom: [
{
"type": "slider",
"start": 0,
"end": 18,
"height": 10,
"bottom": 0,
"showDetail": false,
"showDataShadow": false,
"borderColor": "transparent"
}
],
legend: {
// icon: 'circle',
data: series.map(item => item.name),
@ -184,6 +196,7 @@ export default {
},
axisLabel: {
align: 'center',
interval: 0,
textStyle: {
fontSize: 12,
color: '#A3B9DA'
@ -240,7 +253,7 @@ export default {
name: '',
type: 'bar',
barWidth: 100,
barWidth: 80,
barGap: '-60%',
data: barArray,
itemStyle: {

115
src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue

@ -1,26 +1,37 @@
<template>
<div class="personnel-portrait"
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)">
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/>
<div
class="personnel-portrait"
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)"
>
<Tabs
v-model="resultType"
:list="resultTypeList"
@changeVal="resultTypeChange"
/>
<div class="screen">
<div class="txt">不满意人员画像</div>
<!-- <el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass">
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>-->
<el-select
v-if="resultType == 'provinceAndSelf'"
v-model="typeCondition"
@change="getData"
placeholder="请选择"
class="select"
popper-class="selectPopClass"
>
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div
class="portrait">
<div class="portrait">
<div class="tag yellow" v-if="gridName">
<div class="text">{{ gridName }}</div>
</div>
@ -40,7 +51,17 @@
<div class="text">{{ marriageName }}</div>
</div>
<div class="tag purple" v-if="gender">
<div class="text">{{ gender === "1" ? "男" : gender === "2" ? "女" : gender === "0" ? "未知" : "" }}</div>
<div class="text">
{{
gender === "1"
? "男"
: gender === "2"
? "女"
: gender === "0"
? "未知"
: ""
}}
</div>
</div>
</div>
@ -49,7 +70,7 @@
按画像匹配到同类<span>
<b>{{ matchPeopleNum ? matchPeopleNum : 0 }}</b
></span
>
>
</div>
<i class="el-icon-arrow-right"></i>
</div>
@ -61,7 +82,7 @@ import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
export default {
name: "PersonnelPortrait",
components: {Tabs},
components: { Tabs },
data() {
return {
resultType: "provinceAndSelf",
@ -86,7 +107,7 @@ export default {
residentTagName: "",
matchPeopleNum: 0,
searchParams: "",
loading: true
loading: true,
};
},
watch: {
@ -99,7 +120,7 @@ export default {
},
mounted() {
if (this.$store.state.chooseArea.chooseName.orgId) {
// this.getDisKey()
this.getDisKey();
this.getData();
}
},
@ -109,34 +130,44 @@ export default {
this.getData();
},
gotopage() {
this.$router.push("/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=" + this.searchParams);
this.$router.push(
"/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=" +
this.searchParams
);
},
getDisKey() {
this.$http.post("/sys/dict/data/dictlist", {dictType: "satisfaction_category"}).then(({data: {data}}) => {
this.typeCondition = data[0].value;
this.typeConditionList = data;
});
this.$http
.post("/sys/dict/data/dictlist", { dictType: "satisfaction_category" })
.then(({ data: { data } }) => {
this.typeCondition = data[0].value;
this.typeConditionList = data;
});
},
getData() {
this.loading = true
this.loading = true;
let params = {
level: this.$store.state.chooseArea.chooseName.level,
orgId: this.$store.state.chooseArea.chooseName.orgId,
queryType: this.resultType,
category: this.typeCondition,
category: this.resultType == "provinceAndSelf" ? this.typeCondition : null,
};
this.$http.get("/governance/satisfactionOverview/satisfactionCrowdPortrait?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.gender = data.gender;
this.marriageName = data.marriageName;
this.ageClassification = data.ageClassification;
this.cultureName = data.cultureName;
this.gridName = data.gridName;
this.monthIncomeLevel = data.monthIncomeLevel;
this.residentTagName = data.residentTagName;
this.matchPeopleNum = data.matchPeopleNum;
this.loading = false
this.searchParams = JSON.stringify({...data, ...params});
});
this.$http
.get(
"/governance/satisfactionOverview/satisfactionCrowdPortrait?" +
this.$paramsFormat(params)
)
.then(({ data: { data } }) => {
this.gender = data.gender;
this.marriageName = data.marriageName;
this.ageClassification = data.ageClassification;
this.cultureName = data.cultureName;
this.gridName = data.gridName;
this.monthIncomeLevel = data.monthIncomeLevel;
this.residentTagName = data.residentTagName;
this.matchPeopleNum = data.matchPeopleNum;
this.loading = false;
this.searchParams = JSON.stringify({ ...data, ...params });
});
},
},
};

309
src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue

@ -1,26 +1,34 @@
<template>
<div class="types-dissatisfaction"
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)"
<div
class="types-dissatisfaction"
v-loading="loading"
element-loading-text="加载中..."
element-loading-spinner="el-icon-loading"
element-loading-background="rgba(0,0,0,0.5)"
>
<div class="screen">
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/>
<el-select v-model="typeCondition"
popper-class="selectPopClass"
placeholder="请选择"
class="select"
@change="timeChange">
<Tabs
v-model="resultType"
:list="resultTypeList"
@changeVal="resultTypeChange"
/>
<el-select
v-model="typeCondition"
popper-class="selectPopClass"
placeholder="请选择"
class="select"
@change="timeChange"
>
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value">
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
<div id="typeConditionChart" style="height: 542px;"></div>
<div id="typeConditionChart" style="height: 542px"></div>
</div>
</template>
@ -30,47 +38,52 @@ import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
export default {
name: "TypesOfDissatisfaction",
components: {Tabs},
components: { Tabs },
data() {
return {
resultType: 1,
resultTypeList: [{
label: ' 按省调查/社区自查结果',
value: 1
}, {
label: '按12345热线投诉结果',
value: 2
}],
resultTypeList: [
{
label: " 按省调查/社区自查结果",
value: 1,
},
{
label: "按12345热线投诉结果",
value: 2,
},
],
typeCondition: 1,
typeConditionList: [
{
label: '本月',
value: 1
}, {
label: '上月',
value: 2
}, {
label: '近三月',
value: 3
}, {
label: '近半年',
value: 4
}, {
label: '近一年',
value: 5
label: "本月",
value: 1,
},
{
label: "上月",
value: 2,
},
{
label: "近三月",
value: 3,
},
{
label: "近半年",
value: 4,
},
{
label: "近一年",
value: 5,
},
],
loading: true
}
loading: true,
};
},
watch: {
"$store.state.chooseArea.chooseName"(val) {
if (val.orgId) {
this.getData();
}
}
},
},
mounted() {
if (this.$store.state.chooseArea.chooseName.orgId) {
@ -80,99 +93,124 @@ export default {
methods: {
resultTypeChange(val) {
if (val !== this.resultType) {
this.resultType = val
this.getData()
this.resultType = val;
this.getData();
}
},
timeChange() {
let startTime = '', endTime = ''
let startTime = "",
endTime = "";
if (this.typeCondition === 1) {
startTime = this.$moment().startOf('month').format('YYYY-MM-DD')
startTime = this.$moment().startOf("month").format("YYYY-MM-DD");
}
if (this.typeCondition === 2) {
startTime = this.$moment().subtract(1, 'months').startOf('month').format('YYYY-MM-DD')
startTime = this.$moment()
.subtract(1, "months")
.startOf("month")
.format("YYYY-MM-DD");
}
if (this.typeCondition === 3) {
startTime = this.$moment().subtract(2, 'months').startOf('month').format('YYYY-MM-DD')
startTime = this.$moment()
.subtract(2, "months")
.startOf("month")
.format("YYYY-MM-DD");
}
if (this.typeCondition === 4) {
startTime = this.$moment().subtract(5, 'months').startOf('month').format('YYYY-MM-DD')
startTime = this.$moment()
.subtract(5, "months")
.startOf("month")
.format("YYYY-MM-DD");
}
if (this.typeCondition === 5) {
startTime = this.$moment().subtract(11, 'months').startOf('month').format('YYYY-MM-DD')
startTime = this.$moment()
.subtract(11, "months")
.startOf("month")
.format("YYYY-MM-DD");
}
if (this.typeCondition === 2) {
endTime = this.$moment().subtract(1, 'months').endOf('month').format('YYYY-MM-DD')
endTime = this.$moment()
.subtract(1, "months")
.endOf("month")
.format("YYYY-MM-DD");
} else {
endTime = this.$moment().endOf('month').format('YYYY-MM-DD')
endTime = this.$moment().endOf("month").format("YYYY-MM-DD");
}
this.getData(startTime, endTime)
this.$emit('timeChange', {startTime, endTime})
this.getData(startTime, endTime);
this.$emit("timeChange", { startTime, endTime });
},
getData(startTime, endTime) {
this.loading = true
this.loading = true;
let params = {
level: this.$store.state.chooseArea.chooseName.level,
orgId: this.$store.state.chooseArea.chooseName.orgId,
startTime,
endTime
}
endTime,
};
params = this.$paramsFormat(params)
let url = '/governance/satisfactionOverview/satisfactionGroup'
params = this.$paramsFormat(params);
let url = "/governance/satisfactionOverview/satisfactionGroup";
if (this.resultType === 2) {
url = '/governance/satisfactionOverview/event12345Group'
url = "/governance/satisfactionOverview/event12345Group";
}
this.$http.get(url + '?' + params).then(({data: {data}}) => {
this.initCharts(data)
})
this.$http.get(url + "?" + params).then(({ data: { data } }) => {
this.initCharts(data);
});
},
initCharts(data) {
let div = document.getElementById('typeConditionChart');
let div = document.getElementById("typeConditionChart");
this.myChart = echarts.init(div);
var dataname = data.map(item => item.name)
var datavaule = data.map(item => item.blueNum ? item.blueNum : 0)
var datavaule2 = data.map(item => item.yellowNum ? item.yellowNum : 0)
var indicator = []
let max = Math.max(...datavaule, ...datavaule2)
console.log(max)
var datamax = new Array(datavaule.length).fill(max)
var dataname = data.map((item) => item.name);
var datavaule = data.map((item) => (item.blueNum ? item.blueNum : 0));
var datavaule2 = data.map((item) =>
item.yellowNum ? item.yellowNum : 0
);
var indicator = [];
let max = Math.max(...datavaule, ...datavaule2);
console.log(max);
var datamax = new Array(datavaule.length).fill(max);
for (var i = 0; i < dataname.length; i++) {
indicator.push({
name: dataname[i],
max: datamax[i],
})
});
}
let legendName = ['省满意度调查\n各项不满意人数', '社区满意度自查\n各项不满意人数']
let series = [{
name: this.resultType === 2 ? '12345热线\n事件上报人数' : "省满意度调查\n各项不满意人数",
type: "radar",
symbol: "circle",
symbolSize: 7,
areaStyle: {
normal: {
color: 'rgba(58,128,231,0.36)',
}
},
itemStyle: {
color: '#3A80E7',
borderColor: '#3AB7FF',
borderWidth: 1,
},
lineStyle: {
normal: {
color: "#3AB7FF",
width: 2
}
let legendName = [
"省满意度调查\n各项不满意人数",
"社区满意度自查\n各项不满意人数",
];
let series = [
{
name:
this.resultType === 2
? "12345热线\n事件上报人数"
: "省满意度调查\n各项不满意人数",
type: "radar",
symbol: "circle",
symbolSize: 7,
areaStyle: {
normal: {
color: "rgba(58,128,231,0.36)",
},
},
itemStyle: {
color: "#3A80E7",
borderColor: "#3AB7FF",
borderWidth: 1,
},
lineStyle: {
normal: {
color: "#3AB7FF",
width: 2,
},
},
data: [datavaule],
},
data: [datavaule]
}]
];
if (this.resultType === 2) {
legendName = ['12345热线\n事件上报人数']
legendName = ["12345热线\n事件上报人数"];
} else {
series.push({
name: "社区满意度自查\n各项不满意人数",
@ -181,46 +219,51 @@ export default {
symbolSize: 7,
areaStyle: {
normal: {
color: 'rgba(170, 216, 255, 0)',
}
color: "rgba(170, 216, 255, 0)",
},
},
itemStyle: {
color: '#EB8E16',
borderColor: '#EF9700',
color: "#EB8E16",
borderColor: "#EF9700",
borderWidth: 1,
},
lineStyle: {
normal: {
color: "#EF9700",
width: 2
}
width: 2,
},
},
data: [datavaule2]
})
data: [datavaule2],
});
}
var option = {
tooltip: {
show: false,
trigger: "item",
backgroundColor: 'rgba(13,33,71,0.5)',
borderColor: 'rgba(143,174,252,0.6)',
padding: 8,
textStyle: {
color: '#fff',
},
},
legend: {
show: true,
textStyle: {
color: '#ffffff',
color: "#ffffff",
rich: {
name: {
fontSize: 14,
lineHeight: 22,
padding: [24, 0, 0, 0]
padding: [24, 0, 0, 0],
},
}
},
},
itemWidth: 6,
itemHeight: 6,
y: 0,
x: 'right',
formatter: name => {
return `{name|${name}}`
x: "right",
formatter: (name) => {
return `{name|${name}}`;
},
data: legendName,
},
@ -231,8 +274,8 @@ export default {
splitNumber: 5,
splitArea: {
areaStyle: {
color: 'transparent'
}
color: "transparent",
},
},
axisLabel: {
show: false,
@ -240,33 +283,33 @@ export default {
axisLine: {
show: true,
lineStyle: {
color: "transparent"
}
color: "transparent",
},
},
splitLine: {
show: true,
lineStyle: {
color: "#527AA8"
}
color: "#527AA8",
},
},
name: {
textStyle: {
color: '#ffffff',
fontSize: '16',
color: "#ffffff",
fontSize: "16",
borderRadius: 3,
padding: [3, 5]
}
padding: [3, 5],
},
},
indicator: indicator
indicator: indicator,
},
series
series,
};
this.myChart.setOption(option, true);
window.addEventListener("resize", () => this.myChart.resize());
this.loading = false
this.loading = false;
},
}
}
},
};
</script>
<style scoped lang="scss">
@ -281,15 +324,15 @@ export default {
/deep/ .el-input__inner {
width: 90px !important;
height: 24px !important;
background: #021C49 !important;
border: 1px solid #125AAA !important;
background: #021c49 !important;
border: 1px solid #125aaa !important;
border-radius: 12px !important;
color: #A0CDFF;
color: #a0cdff;
}
/deep/ .el-input__icon {
line-height: 24px !important;
color: #A0CDFF;
color: #a0cdff;
}
}
</style>
</style>

2
src/views/modules/base/residentManagement/unemployment/unemployment.vue

@ -497,7 +497,7 @@
>
</el-table-column>
<el-table-column
prop="residentialAddress"
prop="currentResidence"
align="center"
width="100"
label="居住地址"

92
src/views/modules/satisfaction/detail/eventInfo.vue

@ -90,22 +90,45 @@
align="center" />
<el-table-column label="回访方式" prop="followUpWay" :formatter="formatterFollowUpWay" header-align="center"
align="center" />
<el-table-column label="文化设施" prop="evaCulturalFacility" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="体育设施" prop="evaSportsFacility" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="生态环境" prop="evaEcologicalEnv" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="社会治安" prop="evaSocialSecurity" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="社会救助" prop="evaSocialAssistance" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="老有所养" prop="evaOldPeopleProvide" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="基础教育" prop="evaBasicEducation" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="病有所医" prop="evaMedical" :formatter="formatter" header-align="center"
align="center" />
<el-table-column label="文化设施" prop="evaCulturalFacility" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaCulturalFacility') }}
</template>
</el-table-column>
<el-table-column label="体育设施" prop="evaSportsFacility" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaSportsFacility') }}
</template>
</el-table-column>
<el-table-column label="生态环境" prop="evaEcologicalEnv" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaEcologicalEnv') }}
</template>
</el-table-column>
<el-table-column label="社会治安" prop="evaSocialSecurity" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaSocialSecurity') }}
</template>
</el-table-column>
<el-table-column label="社会救助" prop="evaSocialAssistance" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaSocialAssistance') }}
</template>
</el-table-column>
<el-table-column label="老有所养" prop="evaOldPeopleProvide" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaOldPeopleProvide') }}
</template></el-table-column>
<el-table-column label="基础教育" prop="evaBasicEducation" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaBasicEducation') }}
</template>
</el-table-column>
<el-table-column label="病有所医" prop="evaMedical" header-align="center" align="center">
<template slot-scope="scope">
{{ satisfactionCategory(scope.row, 'evaMedical') }}
</template>
</el-table-column>
<el-table-column label="回访状态" prop="followUpStatus" :formatter="formatterFollowUpStatus"
header-align="center" align="center" />
</el-table>
@ -151,12 +174,16 @@ export default {
name: '',
region: '',
type: ''
},
dicts: {
satisfaction_level: []
}
}
},
async created() {
this.getResiDetail();
await this.loadEvent();
this.getDicts()
},
computed: {
maxTableHeight() {
@ -204,6 +231,32 @@ export default {
this.$message.error(msg);
}
},
async getDicts() {
try {
const requests = [
this.$http.post("sys/dict/data/dictlist", {
dictType: "satisfaction_level",
}),
];
const dictKeys = ['satisfaction_level']; //
const results = await Promise.all(requests);
results.forEach((result, index) => {
if (result.data.code === 0) {
this.dicts[dictKeys[index]].push(...result.data.data);
} else {
console.log(`获取${dictKeys[index]}失败: ${result.data.msg}`);
}
});
} catch (error) {
console.log("获取字典失败: ", error);
}
},
satisfactionCategory(row, name) {
if (row[name]) {
let text = this.dicts.satisfaction_level.find(item => item.value === row[name]).label
return text
}
},
async getResiDetail() {
this.$http
.post(`/actual/base/residentBaseInfo/detail/${this.resiId}`)
@ -280,7 +333,8 @@ export default {
this.loadCommunity();
}
},
formatter: function (row) {
formatter(row) {
let value = '';
if (row.evaCulturalFacility) {
value = row.evaCulturalFacility
@ -299,6 +353,7 @@ export default {
} else if (row.evaMedical) {
value = row.evaMedical
}
console.log(value);
return value === 'veryGood' ? '满意' : value === 'good' ? '基本满意' : value === 'bad' ? '不满意' : '';
},
formatterFollowUpWay: function (row) {
@ -326,4 +381,5 @@ export default {
.f-font-color {
color: #000;
font-weight: 400;
}</style>
}
</style>
Loading…
Cancel
Save