Browse Source

居民画像剩余查看功能

V1.0
mk 2 years ago
parent
commit
91c01ec36e
  1. 4
      src/assets/scss/modules/management/list-main.scss
  2. 4
      src/assets/scss/pages/huaxiang.scss
  3. 104
      src/views/modules/jumin/cpts/pointsRecord.vue
  4. 26
      src/views/modules/jumin/cpts/rightBto.vue
  5. 499
      src/views/modules/jumin/cpts/rightTop.vue
  6. 31
      src/views/modules/jumin/cpts/table/complain.vue
  7. 50
      src/views/modules/jumin/cpts/table/shequ.vue
  8. 139
      src/views/modules/jumin/cpts/xiangshoufuwu.vue
  9. 24
      src/views/modules/jumin/huaxiang.vue

4
src/assets/scss/modules/management/list-main.scss

@ -130,7 +130,9 @@
flex-flow: column;
overflow: hidden;
}
.f-w50 {
width: 50% !important;
}
.f-flex1 {
flex: 1;
}

4
src/assets/scss/pages/huaxiang.scss

@ -17,7 +17,6 @@
.right{
flex: 1;
overflow-y: scroll;
}
}
.bottom{
@ -34,7 +33,8 @@
.right{
flex: 1;
overflow-y: scroll;
display: flex;
justify-content: space-between;
}
}

104
src/views/modules/jumin/cpts/pointsRecord.vue

@ -0,0 +1,104 @@
<template>
<div class="enjoy-service">
<div class="enjoy-service-item" v-for="(item, index) in data">
<div class="num">+{{ item.classificationNum }}</div>
<div class="info">
<div class="title">{{ item.classification }}</div>
<div class="time">{{ item.recordTime }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
//
data() {
return {
data: [],
};
},
//
created() {
this.getData();
},
props: {
resiId: {
type: String,
default: ''
}
},
//
methods: {
getData() {
this.data = [];
this.$http
.get("/actual/base/peopleRoomOverview/recorHistory")
.then(({ data: res }) => {
if (res.code == 0) {
this.data = res.data;
}
});
},
},
//
components: {},
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
.enjoy-service {
padding-left: 26px;
margin-top: 12px;
height: 100%;
overflow-y: scroll;
}
.enjoy-service-item {
color: #333333;
display: flex;
padding: 14px 16px 14px;
margin-bottom: 8px;
background: #fff;
&:hover {
background: #f5f7fa !important;
color: #0056D6 !important;
*,
*::before,
*::after {
//
color: #0056D6 !important;
}
}
.num {
font-size: 24px;
font-weight: 500;
line-height: 22px;
color: #000000;
display: flex;
align-items: center;
}
.info {
font-size: 14px;
margin-left: 40px;
.title {
font-weight: 500;
margin-bottom: 10px;
}
.time {
font-weight: 400;
color: #000000;
opacity: 0.65;
}
}
}
</style>

26
src/views/modules/jumin/cpts/rightBto.vue

@ -0,0 +1,26 @@
<!-- 房屋模块用 -->
<template>
<div class=''>
</div>
</template>
<!-- -->
<script>
export default{
data(){
return{};
},
//
created(){},
//
methods:{},
//
components:{},
//
computed:{},
//
watch:{},
}
</script>
<style lang="less" scoped>
</style>

499
src/views/modules/jumin/cpts/rightTop.vue

@ -160,69 +160,70 @@ export default {
pageSize: this.pageSize
}
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
const statusArr = {
processing: "处理中",
closed_case: "已办结",
};
const marktypes = ["普通事件", "难点读点", "矛盾纠纷", "自身问题"];
//
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", parm).then(({ data: res }) => {
this.complainList = [{
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}, {
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
this.complainTotal = this.complainList.length;
this.$http.post("/actual/base/peopleRoomOverview/eventPageList", parm).then(({ data: res }) => {
// this.complainList = [{
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "使",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// }, {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "使",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// }]
this.complainList = res.data.list.map((item) => {
return {
...item,
status: item.status ? statusArr[item.status] : null,
marktype: marktypes[item.marktype],
};
});
this.complainTotal = res.data.total;
this.complainLabel = `12345投诉(${this.complainTotal}`
});
},
@ -232,53 +233,40 @@ export default {
pageNo: this.pageNo,
pageSize: this.pageSize
}
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http.post("/actual/base/peopleRoomOverview/provincialSatisfactionPageList", parm).then(({ data: res }) => {
this.shengList = [{
scope: "服务态度",
problemDesc: "服务员的态度冷淡,没有微笑",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "在前台等待时间超过30分钟",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "环境问题",
problemDesc: "餐厅内部太吵,无法正常交流",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "食品质量",
problemDesc: "点的咖啡味道太苦,不如以前",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "洗手间没有纸巾",
completeFlag: "已办理",
isReturn: "是"
}]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
this.shengTotal = this.shengList.length;
// this.shengList = [{
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "30",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// }]
this.shengList = res.data;
this.shengTotal = res.data.length;
this.shengLabel = `省满意度调查(${this.shengTotal}`
});
},
@ -296,48 +284,47 @@ export default {
1: "已回访",
};
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", parm).then(({ data: res }) => {
this.shequList = [{
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}, {
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
}]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
// this.shequList = [{
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "使",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// }, {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "",
// completeFlag: "",
// isReturn: ""
// },
// {
// scope: "",
// problemDesc: "使",
// completeFlag: "",
// isReturn: ""
// }]
this.shequList = res.data.map((item) => {
return {
...item,
completeFlag: completeFlags[item.completeFlag],
};
});
this.shequTotal = this.shequList.length;
this.shequLabel = `社区满意度自查(${this.shequTotal}`
});
@ -348,45 +335,39 @@ export default {
pageNo: this.pageNo,
pageSize: this.pageSize
}
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
const marktypes = ["普通事件", "难点读点", "矛盾纠纷", "自身问题"];
this.$http.post("/actual/base/peopleRoomOverview/eventPageList", parm).then(({ data: res }) => {
this.shijianList = [{
categorycode: "设备故障",
eventcontent: "东侧出入口的闸机无法正常工作",
status: "处理中",
happentime: "2023-10-21 14:25:45"
},
{
categorycode: "安全事故",
eventcontent: "西侧楼梯有脚手架工具掉落",
status: "已完成",
happentime: "2023-10-20 09:10:32"
},
{
categorycode: "投诉",
eventcontent: "前台服务员态度不佳",
status: "未处理",
happentime: "2023-10-19 16:45:30"
},
{
categorycode: "环境问题",
eventcontent: "会议室的空调太冷",
status: "处理中",
happentime: "2023-10-18 11:05:25"
},]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
// this.shijianList = [{
// categorycode: "",
// eventcontent: "",
// status: "",
// happentime: "2023-10-21 14:25:45"
// },
// {
// categorycode: "",
// eventcontent: "西",
// status: "",
// happentime: "2023-10-20 09:10:32"
// },
// {
// categorycode: "",
// eventcontent: "",
// status: "",
// happentime: "2023-10-19 16:45:30"
// },
// {
// categorycode: "",
// eventcontent: "",
// status: "",
// happentime: "2023-10-18 11:05:25"
// },]
this.shijianList = res.data.list.map((item) => {
return {
...item,
status: item.status ? statusArr[item.status] : null,
marktype: marktypes[item.marktype],
};
});
this.shijianTotal = this.shijianList.length;
this.shijianLabel = `上报事件(${this.shijianTotal}`
});
@ -397,52 +378,43 @@ export default {
pageNo: this.pageNo,
pageSize: this.pageSize
}
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http.post("/actual/base/peopleRoomOverview/demandOfResidentsPageList", parm).then(({ data: res }) => {
this.xuqiuList = [{
categoryName: "软件功能",
content: "希望增加导出 Excel 的功能",
status: "评估中",
reportTime: "2023-10-24 10:15:32"
},
{
categoryName: "硬件升级",
content: "需要更高配置的服务器来支撑业务",
status: "已批准",
reportTime: "2023-10-23 14:05:50"
},
{
categoryName: "界面优化",
content: "前台页面加载速度较慢,希望优化",
status: "处理中",
reportTime: "2023-10-22 11:30:15"
},
{
categoryName: "新功能",
content: "需要一个新的数据可视化面板",
status: "未开始",
reportTime: "2023-10-21 09:45:10"
},
{
categoryName: "其他",
content: "希望增加夜间模式,减少眼睛疲劳",
status: "评估中",
reportTime: "2023-10-20 16:20:45"
}]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
// this.xuqiuList = [{
// categoryName: "",
// content: " Excel ",
// status: "",
// reportTime: "2023-10-24 10:15:32"
// },
// {
// categoryName: "",
// content: "",
// status: "",
// reportTime: "2023-10-23 14:05:50"
// },
// {
// categoryName: "",
// content: "",
// status: "",
// reportTime: "2023-10-22 11:30:15"
// },
// {
// categoryName: "",
// content: "",
// status: "",
// reportTime: "2023-10-21 09:45:10"
// },
// {
// categoryName: "",
// content: "",
// status: "",
// reportTime: "2023-10-20 16:20:45"
// }]
this.xuqiuList = res.data.map((item) => {
return {
...item,
};
});
this.xuqiuTotal = this.xuqiuList.length;
this.xuqiuLabel = `居民需求(${this.xuqiuTotal}`
});
@ -453,45 +425,36 @@ export default {
pageNo: this.pageNo,
pageSize: this.pageSize
}
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
this.$http.post("/actual/base/peopleRoomOverview/communityServicePageList", parm).then(({ data: res }) => {
this.fuwuList = [ {
serviceCategoryKey: "系统故障",
serviceName: "登录功能无法使用",
state: "处理中",
serviceTimeStart: "2023-10-25 09:20:15"
},
{
serviceCategoryKey: "新功能请求",
serviceName: "添加多语言支持",
state: "已完成",
serviceTimeStart: "2023-10-24 15:10:45"
},
{
serviceCategoryKey: "优化建议",
serviceName: "改进搜索算法,提高搜索速度",
state: "未开始",
serviceTimeStart: "2023-10-23 14:05:20"
},
{
serviceCategoryKey: "界面问题",
serviceName: "移动端页面布局错乱",
state: "处理中",
serviceTimeStart: "2023-10-22 10:40:25"
},]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
// this.fuwuList = [{
// serviceCategoryKey: "",
// serviceName: "使",
// state: "",
// serviceTimeStart: "2023-10-25 09:20:15"
// },
// {
// serviceCategoryKey: "",
// serviceName: "",
// state: "",
// serviceTimeStart: "2023-10-24 15:10:45"
// },
// {
// serviceCategoryKey: "",
// serviceName: "",
// state: "",
// serviceTimeStart: "2023-10-23 14:05:20"
// },
// {
// serviceCategoryKey: "",
// serviceName: "",
// state: "",
// serviceTimeStart: "2023-10-22 10:40:25"
// },]
this.fuwuList = res.data.map((item) => {
return {
...item,
};
});
this.fuwuTotal = this.fuwuList.length;
this.fuwuLabel = `社区服务(${this.fuwuTotal}`
});

31
src/views/modules/jumin/cpts/table/complain.vue

@ -2,10 +2,11 @@
<div class="table">
<el-table v-if="tableData.length > 0" :data="tableData" 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="事件类型" prop="categorycode" width="" />
<el-table-column label="事件描述" prop="eventcontent" width="" />
<el-table-column label="办理状态" prop="status" width="" />
<el-table-column label="接收时间" prop="happentime" width="180" />
<el-table-column label="标记" prop="marktype" width="" />
<el-table-column label="操作" width="90" align="center">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
@ -17,7 +18,7 @@
<img width="268px" height="128px" src="~@/assets/images/overview/zanwu.png" />
<div style="color: #fff">暂无数据</div>
</div>
</div>
</template>
@ -42,11 +43,11 @@ export default {
activated() {
},
watch: {
},
mounted() { },
props: {
tableData: {
type: Array,
default: []
@ -118,15 +119,15 @@ export default {
completeFlag: "已办理",
isReturn: "是"
}]
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
// this.list = res.data.list.map((item) => {
// return {
// ...item,
// status: item.status ? statusArr[item.status] : null,
// marktype: marktypes[item.marktype],
// };
// });
this.total = this.list.length;
this.$emit("changeTotal", { name: 2, total: this.total });
this.$emit("changeTotal", { name: 2, total: this.total });
});
},
handleView(item) {

50
src/views/modules/jumin/cpts/table/shequ.vue

@ -26,9 +26,6 @@ export default {
},
data() {
return {
queryParams: {
residList: [],
},
list: [],
total: 0,
rowId: null,
@ -36,12 +33,9 @@ export default {
};
},
activated() {
// this.getList();
},
watch: {
"$route.query"(newVal, oldVal) {
// this.getList();
},
},
mounted() { },
props: {
@ -51,48 +45,6 @@ export default {
}
},
methods: {
getList() {
let residList = [this.resiId]
this.list = [];
this.total = 0;
// this.$emit("changeTotal", { name: 2, total: 0 });
// (-2-1访0访/访1访)
const completeFlags = {
"-2": "未知",
"-1": "不接受回访",
0: "接受回访/待回访",
1: "已回访",
};
//
this.$http.post("/actual/base/peopleRoomOverview/communitySatisfactionPageList", { residList }).then(({ data: res }) => {
this.list = [{
scope: "服务态度",
problemDesc: "服务人员态度不好",
completeFlag: "未办理",
isReturn: "否"
},
{
scope: "处理速度",
problemDesc: "等待时间过长",
completeFlag: "已办理",
isReturn: "是"
},
{
scope: "设备问题",
problemDesc: "使用的机器经常故障",
completeFlag: "办理中",
isReturn: "否"
},
{
scope: "其他",
problemDesc: "场地不够干净",
completeFlag: "已办理",
isReturn: "是"
}]
this.total = res.data.length;
// this.$emit("changeTotal", { name: 2, total: this.total });
});
},
handleView(item) {
this.rowId = item.id;
this.showDialog = true;

139
src/views/modules/jumin/cpts/xiangshoufuwu.vue

@ -0,0 +1,139 @@
<template>
<div class="cnt-right">
<div class="list">
<div class="item f-hflex" :key="index" v-for="(item, index) in list">
<el-row type="flex" class="row">
<el-col :span="12" align="left">{{item.classification}}</el-col>
<el-col :span="12" align="right">{{item.classificationNum || 0}}</el-col>
</el-row>
<div class="item-progress">
<b :style="{
width: item.per + '%',
}"></b>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
//
data() {
return {
list: [],
};
},
//
created() {
this.getData();
},
props: {
resiId: {
type: String,
default: ''
}
},
//
methods: {
getData() {
this.$http
.get("/actual/base/peopleRoomOverview/serviceNumber?resid=" + this.resiId)
.then(({ data: res }) => {
// res.data = [
// {
// "classification": "",
// "classificationNum": '12'
// },
// {
// "classification": "",
// "classificationNum": '15'
// },
// {
// "classification": "",
// "classificationNum": '20'
// },
// {
// "classification": "",
// "classificationNum": '40'
// }
// ]
let total = res.data.reduce((sum, item) => sum + Number(item.classificationNum), 0);
res.data = res.data.map(item => ({
...item,
per: (Number(item.classificationNum) / total * 100).toFixed(2) //
}));
this.list = res.data
console.log( res.data);
});
},
},
//
components: {},
//
computed: {},
//
watch: {},
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/modules/management/list-main.scss";
.cnt-right {
.list {
.item {
margin-top: 20px;
display: flex;
align-items: center;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: rgba(44, 53, 66, 0.85);
line-height: 24px;
cursor: pointer;
.row{
width: 100%;
margin: 0 0 10px;
padding: 0 10px 0 0;
}
.item-name {
margin-left: 5px;
width: 80px;
flex-shrink: 0;
}
.item-div {
width: 1px;
height: 12px;
background: #d8d8d8;
border-radius: 1px;
}
.item-count {
width: 90px;
flex-shrink: 0;
}
.item-per {
min-width: 70px;
}
.item-progress {
margin-right: 15px;
width: 100%;
height: 24px;
background: #e6f0ff;
border-radius: 1px;
overflow: hidden;
b {
display: block;
height: 24px;
background: #7ba6e6;
}
}
}
}
}
</style>

24
src/views/modules/jumin/huaxiang.vue

@ -36,8 +36,21 @@
</div>
</div>
<div class="right">
<div class="card">
<div class="title"></div>
<div class="card f-w50 right16">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-xsfw.png" alt="">享受服务次数统计</div>
</div>
<div>
<xiangshoufuwu />
</div>
</div>
<div class="card" style="width: calc(50% - 16px);">
<div class="title">
<div><img src="../../../assets/images/index/title-icon-jfjl.png" alt="">积分记录</div>
</div>
<div class="card">
<pointsRecord :resiId="userInfo.resiId" />
</div>
</div>
</div>
</div>
@ -49,8 +62,11 @@ import { requestPost, requestGet } from '@/js/dai/request'
import leftTop from "./cpts/leftTop";
import leftBto from "./cpts/leftBto";
import rightTop from "./cpts/rightTop";
import rightBto from "./cpts/rightBto";
import resiInfo from "@/views/modules/cpts/resi/info";
import nextTick from "dai-js/tools/nextTick";
import pointsRecord from "./cpts/pointsRecord";
import xiangshoufuwu from "./cpts/xiangshoufuwu";
export default {
@ -59,7 +75,7 @@ export default {
return {
userInfo: {},
showedResiInfo: false,
};
},
//
@ -92,7 +108,7 @@ export default {
},
},
//
components: { leftTop, leftBto, resiInfo,rightTop },
components: { leftTop, leftBto, resiInfo, rightTop, pointsRecord, rightBto, xiangshoufuwu },
//
computed: {},
//

Loading…
Cancel
Save