Browse Source

新增和修改页面

v1.1
战立标 2 years ago
parent
commit
a611e5d6d4
  1. 12
      src/assets/scss/dataBoard/renfang/index.scss
  2. 60
      src/router/index.js
  3. 14
      src/views/dataBoard/overview/components/Bmysxxq.vue
  4. 2
      src/views/dataBoard/overview/components/DemandSwiperList.vue
  5. 25
      src/views/dataBoard/overview/components/RequirementList.vue
  6. 31
      src/views/dataBoard/overview/components/ServiceDetails.vue
  7. 2
      src/views/dataBoard/overview/components/jdtphx.vue
  8. 2
      src/views/dataBoard/overview/components/rfsjtj.vue
  9. 4
      src/views/dataBoard/overview/index.vue
  10. 51
      src/views/dataBoard/renfang/cpts/fwPieOption.js
  11. 240
      src/views/dataBoard/renfang/cpts/fwgl.vue
  12. 77
      src/views/dataBoard/renfang/cpts/jmPieOption.js
  13. 236
      src/views/dataBoard/renfang/cpts/jmgl.vue
  14. 108
      src/views/dataBoard/renfang/cpts/rkfx.vue
  15. 24
      src/views/dataBoard/renfang/cpts/rkfxPieOption.js
  16. 174
      src/views/dataBoard/renfang/index.vue
  17. 141
      src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/detail.vue
  18. 196
      src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/list.vue
  19. 141
      src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/detail.vue
  20. 239
      src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/list.vue
  21. 140
      src/views/dataBoard/satisfactionEval/Problem/tyry/detail.vue
  22. 195
      src/views/dataBoard/satisfactionEval/Problem/tyry/list.vue
  23. 9
      src/views/dataBoard/satisfactionEval/dissatisfieReason/index.vue
  24. 14
      src/views/dataBoard/satisfactionEval/modules/DissatisfiedReason/index.vue
  25. 8
      src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue

12
src/assets/scss/dataBoard/renfang/index.scss

@ -333,7 +333,7 @@
}
.m-rkyj {
height: 423px;
//height: 423px;
&.z-shrink {
height: 253px;
@ -391,12 +391,12 @@
.m-cate {
.list {
@include scrollBar;
padding-right: 5px;
height: 245px;
padding: 0 24px;
height: 268px;
overflow-y: auto;
.item {
margin-top: 30px;
margin-bottom: 30px;
display: flex;
align-items: center;
font-size: 14px;
@ -597,7 +597,7 @@
.item {
margin-top: 8px;
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg.png);
background-image: url(@/assets/images/shuju/renfang/rkfx-bg.png);
background-size: cover;
flex: 0 0 117px;
height: 32px;
@ -613,7 +613,7 @@
}
.item-sel {
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg-sel.png);
background-image: url(@/assets/images/shuju/renfang/rkfx-bg-sel.png);
background-size: cover;
}
}

60
src/router/index.js

@ -654,6 +654,66 @@ export const dataBoardRoutes = {
isTab: false,
},
},
{
path: "satisfactionEval/Problem/tddtlxsj",
props: true,
component: () => import("@/views/dataBoard/satisfactionEval/Problem/tddtlxsj/list"),
name: "dataBoard-satisfactionEval-Problem-tddtlxsj-list",
meta: {
title: "同地点同类型重复投诉问题列表",
isTab: false,
},
},
{
path: "satisfactionEval/Problem/tddtlxsj/detail",
props: true,
component: () => import("@/views/dataBoard/satisfactionEval/Problem/tddtlxsj/detail"),
name: "dataBoard-satisfactionEval-Problem-tddtlxsj-detail",
meta: {
title: "同地点同类型重复投诉问题详情",
isTab: false,
},
},
{
path: "satisfactionEval/Problem/tyqybtlx",
props: true,
component: () => import("@/views/dataBoard/satisfactionEval/Problem/tyqybtlx/list"),
name: "dataBoard-satisfactionEval-Problem-tyqybtlx-list",
meta: {
title: "同一区域不同类型重复投诉问题列表",
isTab: false,
},
},
{
path: "satisfactionEval/Problem/tyqybtlx/detail",
props: true,
component: () => import("@/views/dataBoard/satisfactionEval/Problem/tyqybtlx/detail"),
name: "dataBoard-satisfactionEval-Problem-tyqybtlx-detail",
meta: {
title: "同一区域不同类型重复投诉问题详情",
isTab: false,
},
},
{
path: "satisfactionEval/Problem/tyry",
props: true,
component: () => import("@/views/dataBoard/satisfactionEval/Problem/tyry/list"),
name: "dataBoard-satisfactionEval-Problem-tyry-list",
meta: {
title: "同一人员重复投诉问题列表",
isTab: false,
},
},
{
path: "satisfactionEval/Problem/tyry/detail",
props: true,
component: () => import("@/views/dataBoard/satisfactionEval/Problem/tyry/detail"),
name: "dataBoard-satisfactionEval-Problem-xqwmz-detail",
meta: {
title: "同一人员重复投诉问题详情",
isTab: false,
},
},
{
path: "organizational/index",
props: true,

14
src/views/dataBoard/overview/components/Bmysxxq.vue

@ -19,21 +19,20 @@
<el-col :span="12">
<div class="items">
<div class="label">需求类别</div>
<div class="value">教育讲座类-健康知识专业讲座</div>
<div class="value">{{detail.commonServiceTypeName}}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">需求标题</div>
<div class="value">教育讲座类共性需求</div>
<div class="value">{{detail.title}}</div>
</div>
</el-col>
<el-col :span="24">
<div class="items">
<div class="label">详细说明</div>
<div class="value">
健康生活方式是指有益于健康的习惯化的行为方式主要表现为生活有规律没有不良嗜好讲求个人卫生环境卫生饮食卫生讲科学不迷
平时注意保健生病及时就医积极参加健康有益的文体活动和社会活动等等
{{detail.content}}
</div>
</div>
</el-col>
@ -120,7 +119,8 @@ export default {
form: {
roles: "",
user: "",
}
},
detail: {}
};
},
methods: {
@ -132,7 +132,9 @@ export default {
this.getDetail(id);
},
getDetail(id) {
this.$http.get('/governance/commonDemand/detail/'+id,{}).then(({data:{data}}) => {
this.detail = data
});
},
handleDispatch() {
this.$refs.ResourceScheduling.open()

2
src/views/dataBoard/overview/components/DemandSwiperList.vue

@ -51,7 +51,7 @@ export default {
},
methods: {
handleView(item) {
this.$emit('showDetail', item.id)
this.$emit('showDetail', item)
}
}
}

25
src/views/dataBoard/overview/components/RequirementList.vue

@ -4,9 +4,9 @@
<Tabs :list="tab" :value="tabval" @changeVal="(val) => tabval = val"/>
</div>
<DemandSwiperList v-if="tabval === 1" :list="userDemandList" @showDetail="showDetail">
<template slot-scope="item">
<span>{{ item.demandUser }}</span>
<span>{{ item.content }}</span>
<template slot-scope="{data}">
<span>{{ data.demandUserName }}</span>
<span>{{ data.content }}</span>
</template>
</DemandSwiperList>
@ -15,9 +15,9 @@
<Tabs :list="tab2" :value="tabval2" @changeVal="(val) => tabval2 = val"/>
</div>
<DemandSwiperList v-if="tabval2 === 1" :list="commonDemandList" @showDetail="showDetail2">
<template slot-scope="item">
<span>{{ item.createdTime }}</span>
<span>{{ item.title }}</span>
<template slot-scope="{data}">
<span>{{ data.createdTime }}</span>
<span>{{ data.title }}</span>
</template>
</DemandSwiperList>
<DemandCharts v-else/>
@ -69,20 +69,21 @@ export default {
this.getCommonDemandList()
},
methods: {
showDetail() {
this.$refs.ServiceDetails.open();
showDetail({demandRecId}) {
this.$refs.ServiceDetails.open(demandRecId);
},
showDetail2() {
this.$refs.Bmysxxq.open();
},
getUserDemandList() {
this.$http.post('/governance/userdemand/pagelist').then(({data}) => {
this.userDemandList = data.list || []
this.$http.post('/governance/userdemand/pagelist', {status: "pending", pageSize: 20}).then(({data: {data}}) => {
console.log(data.list, 'data.list ', data)
this.userDemandList = data ? data.list : []
})
},
getCommonDemandList() {
this.$http.get('/governance/commonDemand/list?assignFlag=0').then(({data}) => {
this.commonDemandList = data.list || []
this.$http.get('/governance/commonDemand/list?assignFlag=0&pageSize=20').then(({data: {data}}) => {
this.commonDemandList = data ? data.list : []
})
}
}

31
src/views/dataBoard/overview/components/ServiceDetails.vue

@ -20,38 +20,38 @@
<el-col :span="12">
<div class="items">
<div class="label">所属网格</div>
<div class="value">xxxx社区第一网格</div>
<div class="value">{{detail.gridName}}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">需求类型</div>
<div class="value">公益事业类-社会困难群体生活帮扶</div>
<div class="value">缺字段</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">上报类型</div>
<div class="value">社区帮办</div>
<div class="value">{{detail.reportTypeName}}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">上报人</div>
<div class="value">张俊男</div>
<div class="value">{{detail.reportUserName}}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">上报人联系电话</div>
<div class="value">182****8989</div>
<div class="value">{{detail.reportUserMobile}}</div>
<CallPhone icon="el-icon-phone"/>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">上报时间</div>
<div class="value">2023-08-22 15:20:20</div>
<div class="value">{{detail.reportTime}}</div>
</div>
</el-col>
</el-row>
@ -60,27 +60,27 @@
<el-col :span="12">
<div class="items">
<div class="label">需求人</div>
<div class="value">李兵</div>
<div class="value">{{detail.demandUserName}}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">需求人联系电话</div>
<div class="value">133****5656</div>
<div class="value">{{detail.demandUserMobile}}</div>
<CallPhone icon="el-icon-phone"/>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">服务时间</div>
<div class="value">2023-08-23 14:20:30</div>
<div class="value">{{detail.serviceStartTime}}-{{detail.serviceEndTime}}</div>
</div>
</el-col>
<el-col :span="24">
<div class="items">
<div class="label">需求内容</div>
<div class="value">
一直失业在家没有生活来源生活比较困难希望社区能给与帮助找一份稳定的工作维持生活开销
{{detail.content}}
</div>
</div>
</el-col>
@ -90,13 +90,13 @@
<el-col :span="12">
<div class="items">
<div class="label">服务方</div>
<div class="value">志愿者-王佳俊</div>
<div class="value">{{detail.serviceShowName}}</div>
</div>
</el-col>
<el-col :span="12">
<div class="items">
<div class="label">服务方联系电话</div>
<div class="value">156****5656</div>
<div class="value">缺字段</div>
<CallPhone icon="el-icon-phone"/>
</div>
</el-col>
@ -150,7 +150,8 @@ export default {
form: {
roles: "",
user: "",
}
},
detail: {}
};
},
methods: {
@ -162,7 +163,9 @@ export default {
this.getDetail(id);
},
getDetail(id) {
this.$http.post('/governance/userdemand/demandDetail', {demandRecId: id}).then(({data: {data}}) => {
this.detail = data
})
},
handleDispatch() {
this.$refs.ResourceScheduling.open()

2
src/views/dataBoard/overview/components/jdtphx.vue

@ -1,5 +1,5 @@
<template>
<div class="m-subbox m-jdhx">
<div class=" m-jdhx">
<div class="m-jdhx-top">
<div class="m-jdhx-card">
<div class="m-jdhx-card-title">

2
src/views/dataBoard/overview/components/rfsjtj.vue

@ -1,5 +1,5 @@
<template>
<div class="m-subbox m-rfsjtj">
<div class=" m-rfsjtj">
<div class="m-rfsjtj-item">
<div class="m-rfsjtj-item-des">采集房屋数</div>
<div class="m-rfsjtj-item-jian">

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

@ -648,5 +648,7 @@ export default {
}
}
.m-map {
height: 1050px;
}
</style>

51
src/views/dataBoard/renfang/cpts/fwPieOption.js

@ -2,23 +2,21 @@ import * as echarts from 'echarts'
export function pieOption() {
const center = ["50%", "170px"];
return {
color: ["#1A95FF","#FFAA00","#04C790"],
title: {
text: "0",
top: 45,
left: "center",
text: "",
subtext: '总数',
left: '45%',
top: '35%',
textAlign :'center',
textStyle: {
width: "100%",
fontSize: 24,
color: "#FFFFFF",
fontWeight: 400,
color: '#7FCEFF',
fontSize: 18,
},
subtextStyle: {
fontSize: 12,
color: '#A3B9DA'
},
itemGap: 5,
// subtext: "总数",
// subtextStyle: {
// fontSize: 20,
// color: "#fff",
// fontWeight: 400,
// },
},
tooltip: {
show: false,
@ -57,31 +55,6 @@ export function pieOption() {
},
itemStyle: {
normal: {
color: (list) => {
// 注意 !!!!! 这里的数组一定要和实际的类目长度相等或大于,不然会缺少颜色报错
var colorList = [
{
colorStart:'#00023A',
colorEnd:'#6FDEFF'
},
{
colorStart:'#00023A',
colorEnd:'#FFAA00'
},
{
colorStart:'#00023A',
colorEnd:'#1A95FF'
},
]
return new echarts.graphic.LinearGradient(1, 0, 0, 0, [{ //左、下、右、上
offset: 0,
color: colorList[list.dataIndex]['colorStart']
}, {
offset: 1,
color: colorList[list.dataIndex]['colorEnd']
}])
}
}
},

240
src/views/dataBoard/renfang/cpts/fwgl.vue

@ -4,29 +4,15 @@
<div class="m-pie">
<div class="pie-left">
<screen-echarts-frame
v-if="pandectData.homeCount"
ref="pieChart"
class=""
@myChartMethod="pieInitOk"
ref="pieChart"
v-if="pandectData.homeCount"
></screen-echarts-frame>
</div>
<div class="pie-legend">
<div class="item">
<div class="item-logo logo1"></div>
<div class="item-name">自住房屋</div>
</div>
<div class="item">
<div class="item-logo logo2"></div>
<div class="item-name">出租房屋</div>
</div>
<div class="item">
<div class="item-logo logo3"></div>
<div class="item-name">闲置房屋</div>
</div>
</div>
<div class="pie-right">
<div class="right-row">
<div class="row-item" @click="toListPage('all')">
<div class="new-number">
<!-- <div class="row-item" @click="toListPage('all')">
<div class="item-one">
<img
class="img"
@ -39,96 +25,35 @@
<div class="num">{{ pandectData.homeCount }}</div>
<div class="unit"></div>
</div>
</div>
</div>-->
<div
class="row-item marginleft10"
@click="toListPage('self', '自住')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="new-number-item" @click="toListPage('self', '自住')">
<div class="title">自住房屋</div>
</div>
<div class="item-two">
<div class="num">
<div class="numbers">
<div class="num color1">
{{ pandectData.selfStay }}
</div>
<div class="unit"></div>
</div>
</div>
</div>
<div
class="right-row margintop18"
@click="toListPage('lease', '出租')"
>
<div class="row-item">
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="new-number-item" @click="toListPage('lease', '出租')">
<div class="title">出租房屋</div>
</div>
<div class="item-two">
<div class="num"> {{pandectData.rentOut}}</div>
<div class="numbers">
<div class="num color2"> {{ pandectData.rentOut }}</div>
<div class="unit"></div>
</div>
</div>
<div
class="row-item marginleft10"
@click="toListPage('unused', '闲置')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/house-logo.png"
alt
/>
<div class="new-number-item" @click="toListPage('unused', '闲置')">
<div class="title">闲置房屋</div>
</div>
<div class="item-two">
<div class="num">{{ pandectData.vacantHouse }}</div>
<div class="numbers">
<div class="num color3">{{ pandectData.vacantHouse }}</div>
<div class="unit"></div>
</div>
</div>
</div>
</div>
</div>
<div class="m-bar">
<div class="bar-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">近一年房屋状态变化趋势图</div>
<div class="title_line"></div>
</div>
<div class="bar-legend">
<div class="item-logo logo1"></div>
<div class="item-name">自住房屋</div>
<div class="item-logo logo2 marginleft10"></div>
<div class="item-name">出租房屋</div>
<div class="item-logo logo3 marginleft10"></div>
<div class="item-name">闲置房屋</div>
</div>
<div class="bar-main">
<screen-echarts-frame
class=""
@myChartMethod="barInitOk"
ref="barChart"
></screen-echarts-frame>
</div>
</div>
<!-- <screen-nodata class="nodata"
v-if="showNoData"></screen-nodata> -->
</div>
</div>
</template>
@ -201,7 +126,7 @@ export default {
async getData() {
await this.getInfo();
this.getPie();
this.getBar();
// this.getBar();
},
getBar() {
@ -262,41 +187,16 @@ export default {
this.pieOption = pieOption();
const {pandectData} = this
//
this.pieOption.title.text =
(pandectData.homeCount != 0
? parseInt(
(100 * pandectData.selfStay) / pandectData.homeCount
)
: "--") + "%";
this.pieOption.title.text = pandectData.homeCount;
this.pieData = [
{value: pandectData.selfStay, name: "自住房屋"},
{value: pandectData.rentOut, name: "出租房屋"},
{value: pandectData.vacantHouse, name: "闲置房屋"},
];
this.pieOption.series[0].data = this.pieData;
console.log(this.pieOption, 'this.pieOption.series')
this.$refs.pieChart.setOption(this.pieOption);
// this.$refs.pieChart.hideLoading()
//
this.$refs.pieChart.myChart.on("selectchanged", (params) => {
console.log(params);
const {
fromActionPayload: { dataIndexInside },
} = params;
this.pieOption.title.text =
(pandectData.homeCount != 0
? parseInt(
(100 *
[
pandectData.selfStay,
pandectData.rentOut,
pandectData.vacantHouse,
][dataIndexInside]) /
pandectData.homeCount
)
: "--") + "%";
this.$refs.pieChart.myChart.setOption(this.pieOption);
});
},
//
@ -393,17 +293,17 @@ export default {
<style lang="scss" scoped>
.m-fwgl {
height: 100%;
width: 100%;
height: 100%;
.m-pie {
margin-top: 24px;
display: flex;
justify-content: space-around;
margin-top: 24px;
.pie-left {
height: 120px;
flex: 0 0 120px;
height: 120px;
}
.pie-legend {
@ -412,6 +312,7 @@ export default {
margin-bottom: 12px;
}
}
.pie-right {
.right-row {
display: flex;
@ -420,38 +321,36 @@ export default {
.row-item {
flex: 0 0 100px;
cursor: pointer;
.item-one {
display: flex;
.img {
width: 15px;
height: 15px;
}
.title {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-size: 14px;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
color: #fff;
//color: rgba(255, 255, 255, 0.65);
}
}
.item-two {
margin-top: 8px;
display: flex;
align-items: flex-end;
margin-left: 23px;
margin-top: 8px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
font-size: 30px;
font-weight: "bold";
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
}
@ -474,19 +373,20 @@ export default {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-size: 16px;
font-weight: 500;
color: #ffffff;
line-height: 22px;
margin-left: 8px;
color: #ffffff;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
margin-left: 8px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
@ -503,35 +403,51 @@ export default {
}
.bar-main {
margin-top: 10px;
height: 225px;
margin-top: 10px;
}
}
}
.item-name {
margin-left: 8px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-size: 12px;
font-weight: 400;
margin-left: 8px;
color: #8c8c8c;
}
.item-logo {
margin-top: 2px;
width: 8px;
height: 8px;
margin-top: 2px;
}
.logo1 {
background: #6fdeff;
}
.logo2 {
background: #ffaa00;
}
.logo3 {
background: #1a95ff;
}
.color1 {
color: #1A95FF;
}
.color2 {
color: #ffaa00;
}
.color3 {
color: #04C790;
}
.marginleft10 {
margin-left: 10px;
}
@ -539,4 +455,50 @@ export default {
.margintop18 {
margin-top: 18px;
}
.pie-right {
width: calc(100% - 200px);
}
.new-number {
display: flex;
flex-wrap: wrap;
.new-number-item:nth-of-type(odd) {
margin-right: 20px;
}
.new-number-item:nth-of-type(3) {
margin-top: 10px;
}
.new-number-item {
flex: 0 0 calc(50% - 10px);
.title {
font-size: 16px;
font-weight: 400;
margin-bottom: 5px;
color: #FFFFFF;
}
.numbers {
display: flex;
align-items: flex-end;
.num {
font-size: 30px;
font-weight: bold;
font-style: italic;
}
.unit {
font-size: 14px;
font-weight: 500;
position: relative;
top: -5px;
margin-left: 5px;
color: #A3B9DA;
}
}
}
}
</style>

77
src/views/dataBoard/renfang/cpts/jmPieOption.js

@ -1,8 +1,10 @@
import * as echarts from 'echarts'
export function pieOption() {
const center = ["50%", "170px"];
return {
title: {
color: ["#1A95FF", "#FFAA00", "#04C790"],
/* title: {
text: "0",
top: 45,
left: "center",
@ -19,7 +21,7 @@ export function pieOption() {
// color: "#fff",
// fontWeight: 400,
// },
},
},*/
tooltip: {
show: false,
},
@ -41,50 +43,53 @@ export function pieOption() {
type: 'pie',
radius: ['60%', '90%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
// emphasis: {
// label: {
// show: true,
// fontSize: 40,
// fontWeight: 'bold'
// }
// },
labelLine: {
show: false
},
itemStyle: {
normal: {
color: (list) => {
// 注意 !!!!! 这里的数组一定要和实际的类目长度相等或大于,不然会缺少颜色报错
var colorList = [
{
colorStart:'#00023A',
colorEnd:'#6FDEFF'
data: [],
label: {
show: false,
position: 'center',
formatter: data => {
console.log(data.color)
return `{c_style|${data.percent.toFixed(0)}%}\n{b_style|${data.name}}`
// '{c_style|{d}%}\n{b_style|{b}}'
},
{
colorStart:'#00023A',
colorEnd:'#FFAA00'
rich: {
b_style: {
fontSize: 12,
fontWeight: 400,
color: '#A3B9DA'
},
]
return new echarts.graphic.LinearGradient(1, 0, 0, 0, [{ //左、下、右、上
offset: 0,
color: colorList[list.dataIndex]['colorStart']
}, {
offset: 1,
color: colorList[list.dataIndex]['colorEnd']
}])
c_style: {
padding: [0, 0, 5, 0],
fontSize: 24,
fontWeight: 'bold',
color: '#fff'
}
}
},
emphasis: {
label: {
show: true,
fontSize: '14',
fontWeight: 'normal'
}
},
/* label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 40,
fontWeight: 'bold'
}
},*/
data: [
]
}
]
};
}

236
src/views/dataBoard/renfang/cpts/jmgl.vue

@ -4,25 +4,16 @@
<div class="m-pie">
<div class="pie-left">
<screen-echarts-frame
v-if="pandectData.totalResidents"
ref="pieChart"
class=""
@myChartMethod="pieInitOk"
ref="pieChart"
v-if="pandectData.totalResidents"
></screen-echarts-frame>
</div>
<div class="pie-legend">
<div class="item">
<div class="item-logo logo1"></div>
<div class="item-name">常住人口</div>
</div>
<div class="item">
<div class="item-logo logo2"></div>
<div class="item-name">流动人口</div>
</div>
</div>
<div class="pie-right">
<div class="right-row">
<div class="row-item" @click="toListPage">
<div class="new-number">
<!-- <div class="row-item" @click="toListPage">
<div class="item-one">
<img
class="img"
@ -35,42 +26,19 @@
<div class="num">{{ pandectData.totalResidents }}</div>
<div class="unit"></div>
</div>
</div>
<div
class="row-item marginleft10"
@click="toListPage('permanent', '常住人口')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt
/>
</div>-->
<div class="new-number-item" @click="toListPage('permanent', '常住人口')">
<div class="title">常住人口</div>
</div>
<div class="item-two">
<div class="num">
<div class="numbers">
<div class="num color1">
{{ pandectData.permanentResiCount }}
</div>
<div class="unit"></div>
</div>
</div>
</div>
<div class="right-row margintop18">
<div
class="row-item"
@click="toListPage('float', '流动人口')"
>
<div class="item-one">
<img
class="img"
src="@/assets/images/shuju/renfang/jm-logo.png"
alt
/>
<div class="new-number-item" @click="toListPage('float', '流动人口')">
<div class="title">流动人口</div>
</div>
<div class="item-two">
<div class="numbers color2">
<div class="num">{{ pandectData.floatingResiCount }}</div>
<div class="unit"></div>
</div>
@ -78,33 +46,6 @@
</div>
</div>
</div>
<div class="m-bar">
<div class="bar-title">
<img
class="title_img"
src="@/assets/images/index/list-logo.png"
alt
/>
<div class="tip_title">近一年人口流动变化趋势图</div>
<div class="title_line"></div>
</div>
<div class="bar-legend">
<div class="item-logo logo1"></div>
<div class="item-name">常住人口</div>
<div class="item-logo logo2 marginleft10"></div>
<div class="item-name">流动人口</div>
</div>
<div class="bar-main">
<screen-echarts-frame
class=""
@myChartMethod="barInitOk"
ref="barChart"
></screen-echarts-frame>
</div>
</div>
<!-- <screen-nodata class="nodata"
v-if="showNoData"></screen-nodata> -->
</div>
</div>
</template>
@ -236,46 +177,37 @@ export default {
//
async iniPieChart() {
this.$refs.pieChart.clear();
// this.$refs.pieChart.showLoading()
// pieChart
this.pieOption = pieOption();
const {pandectData} = this;
//
this.pieOption.title.text =
(pandectData.totalResidents != 0
? parseInt(
(100 * pandectData.permanentResiCount) / pandectData.totalResidents
)
: "--") + "%";
this.pieData = [
{value: pandectData.permanentResiCount, name: "常住人口"},
{value: pandectData.floatingResiCount, name: "流动人口"},
];
this.pieOption.series[0].data = this.pieData;
this.$refs.pieChart.setOption(this.pieOption);
// this.$refs.pieChart.hideLoading()
//
this.$refs.pieChart.myChart.on("selectchanged", (params) => {
console.log(params);
const {
fromActionPayload: { dataIndexInside },
} = params;
this.pieOption.title.text =
(pandectData.totalResidents != 0
? parseInt(
(100 *
[
pandectData.permanentResiCount,
pandectData.floatingResiCount,
][dataIndexInside]) /
pandectData.totalResidents
)
: "--") + "%";
this.$refs.pieChart.myChart.setOption(this.pieOption);
});
},
this.$refs.pieChart.myChart.on('mouseover', (params) => {
var oldIndex = currentIndex;
var currentIndex = params.dataIndex;
this.highlightPie(currentIndex, oldIndex);
})
setTimeout(() => {
this.highlightPie(0, 1);
}, 50)
},
highlightPie(currentIndex, oldIndex) {
this.$refs.pieChart.myChart.dispatchAction({
type: 'downplay',
seriesIndex: 1,
dataIndex: oldIndex
})
this.$refs.pieChart.myChart.dispatchAction({
type: 'highlight',
seriesIndex: 1,
dataIndex: currentIndex
})
},
//
async getBarData() {
const url = "resident_trend";
@ -334,17 +266,18 @@ export default {
<style lang="scss" scoped>
.m-jmgl {
height: 100%;
width: 100%;
height: 100%;
.m-pie {
margin-top: 24px;
display: flex;
justify-content: space-around;
margin-top: 24px;
align-items: center;
.pie-left {
height: 120px;
flex: 0 0 120px;
height: 120px;
}
.pie-legend {
@ -353,6 +286,7 @@ export default {
margin-bottom: 12px;
}
}
.pie-right {
.right-row {
display: flex;
@ -364,37 +298,39 @@ export default {
.item-one {
display: flex;
.img {
width: 15px;
height: 15px;
}
.title {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-size: 14px;
font-weight: 400;
margin-left: 9px;
color: rgba(255, 255, 255, 0.65);
}
}
.item-two {
margin-top: 8px;
display: flex;
align-items: flex-end;
margin-top: 8px;
margin-left: 23px;
.num {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
font-size: 24px;
font-weight: 500;
color: #ffffff;
}
.unit {
margin-left: 9px;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-size: 14px;
font-weight: 500;
margin-left: 9px;
color: #ffffff;
}
}
@ -416,19 +352,20 @@ export default {
width: 17px;
height: 17px;
}
.tip_title {
margin-left: 8px;
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-size: 16px;
font-weight: 500;
color: #ffffff;
line-height: 22px;
margin-left: 8px;
color: #ffffff;
}
.title_line {
margin-left: 8px;
width: 244px;
height: 1px;
margin-left: 8px;
background: linear-gradient(
270deg,
rgba(55, 198, 255, 0.1) 0%,
@ -445,35 +382,52 @@ export default {
}
.bar-main {
margin-top: 10px;
height: 225px;
margin-top: 10px;
}
}
}
.item-name {
margin-left: 8px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-size: 12px;
font-weight: 400;
margin-left: 8px;
color: #8c8c8c;
}
.item-logo {
margin-top: 2px;
width: 8px;
height: 8px;
margin-top: 2px;
}
.logo1 {
background: #6fdeff;
}
.logo2 {
background: #ffaa00;
}
.logo3 {
background: #1a95ff;
}
.color1 {
color: #1A95FF;
}
.color2 {
color: #ffaa00;
}
.color3 {
color: #04C790;
}
.marginleft10 {
margin-left: 10px;
}
@ -481,4 +435,52 @@ export default {
.margintop18 {
margin-top: 18px;
}
.pie-right {
width: calc(100% - 200px);
}
.new-number {
display: flex;
flex-wrap: wrap;
.new-number-item:nth-of-type(odd) {
margin-right: 20px;
}
.new-number-item:nth-of-type(3) {
margin-top: 23px;
}
.new-number-item {
flex: 0 0 calc(50% - 10px);
.title {
font-size: 16px;
font-weight: 400;
margin-bottom: 10px;
color: #FFFFFF;
}
.numbers {
display: flex;
align-items: flex-end;
.num {
font-size: 30px;
font-weight: bold;
font-style: italic;
}
.unit {
font-size: 14px;
font-weight: 500;
position: relative;
top: -5px;
margin-left: 5px;
color: #A3B9DA;
}
}
}
}
</style>

108
src/views/dataBoard/renfang/cpts/rkfx.vue

@ -1,14 +1,22 @@
<template>
<div class="m-rkyj">
<div class="list">
<!-- <div class="list">
<div v-for="item in tabList" :key="item" :class="['item', { 'item-sel': currentTab == item }]"
@click="currentTab = item">
{{ item }}
</div>
</div>
</div>-->
<Tabs :list="tabList" :value="currentTab" @changeVal="(val) => currentTab = val"/>
<div class="pie-main">
<div class="pie">
<screen-echarts-frame
ref="pieChart"
@handelClickMyPei="handelClickMyPei"
@myChartMethod="pieInitOk"
/>
</div>
<div class="legend cur">
<div class="legend-row" :key="'pie' + item.name" v-for="item in pieData" @click="handleClickItem(item)">
<div v-for="item in pieData" :key="'pie' + item.name" class="legend-row" @click="handleClickItem(item)">
<div class="name">{{ item.name }}</div>
<div class="content">
<div class="num">{{ item.value }}</div>
@ -16,9 +24,6 @@
</div>
</div>
</div>
<div class="pie">
<screen-echarts-frame @myChartMethod="pieInitOk" @handelClickMyPei="handelClickMyPei" ref="pieChart"></screen-echarts-frame>
</div>
</div>
</div>
</template>
@ -30,7 +35,12 @@
import {
requestPostBi
} from "@/js/dai/request-bipass";
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
export default {
components: {
screenEchartsFrame, Tabs
},
props: {
orgId: {
type: String,
@ -45,8 +55,29 @@
pieOption: {},
pieInitState: false,
pieData: [],
tabList: ["性别", "户籍", "人户状况", "年龄", "志愿者类别", "党员文化程度",
/* tabList: ["", "", "", "", "", "",
// "",
],*/
tabList: [
{
label: "性别",
value: "性别"
}, {
label: "户籍",
value: "户籍"
}, {
label: "人户状况",
value: "人户状况"
}, {
label: "年龄",
value: "年龄"
}, {
label: "志愿者类别",
value: "志愿者类别"
}, {
label: "党员文化程度",
value: "党员文化程度"
}
],
currentTab: "性别",
info: {
@ -82,9 +113,7 @@
},
};
},
components: {
screenEchartsFrame,
},
mounted() {
this.init();
},
@ -319,28 +348,37 @@
};
</script>
<style lang="scss" scoped>
.cur{cursor: pointer;}
/deep/ .tabs .tab {
min-width: 0 !important;
}
.cur {
cursor: pointer;
}
.m-rkyj {
padding: 10px;
.list {
margin-top: 8px;
display: flex;
flex-wrap: wrap;
margin-top: 8px;
.item {
margin-top: 8px;
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg.png);
background-size: cover;
font-family: PingFangSC-Medium, PingFang SC;
font-size: 14px;
font-weight: 500;
line-height: 32px;
align-items: center;
flex: 0 0 117px;
height: 32px;
margin-top: 8px;
margin-right: 2px;
cursor: pointer;
text-align: center;
align-items: center;
font-size: 14px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 32px;
cursor: pointer;
background-image: url(../../../../assets/images/shuju/renfang/rkfx-bg.png);
background-size: cover;
}
.item-sel {
@ -352,6 +390,7 @@
.pie-main {
display: flex;
justify-content: space-between;
align-items: center;
margin-left: 25px;
.legend {
@ -359,10 +398,10 @@
margin-top: 40px;
.legend-row {
margin-top: 15px;
display: flex;
justify-content: space-between;
align-items: center;
justify-content: space-between;
margin-top: 15px;
&:nth-child(1) .name::before {
background: #1a95ff;
@ -405,30 +444,30 @@
}
.name {
position: relative;
margin-left: 5px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-size: 12px;
font-weight: 400;
color: rgba(255, 255, 255, 0.65);
line-height: 17px;
position: relative;
margin-left: 5px;
color: rgba(255, 255, 255, 0.65);
&::before {
content: "";
position: absolute;
top: 4px;
left: -15px;
width: 8px;
height: 8px;
content: "";
}
}
.content {
margin-left: 24px;
display: flex;
align-items: flex-end;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
display: flex;
align-items: flex-end;
margin-left: 24px;
color: #ffffff;
}
@ -437,17 +476,18 @@
}
.unit {
margin-left: 5px;
font-size: 14px;
margin-left: 5px;
}
}
}
.pie {
margin-top: 32px;
flex: 0 0 280px;
height: 270px;
height: 146px;
margin-top: 32px;
}
}
}
</style>

24
src/views/dataBoard/renfang/cpts/rkfxPieOption.js

@ -21,23 +21,35 @@ export function pieOption() {
{
name: "",
type: "pie",
radius: [40, 130],
radius: ["50%", "100%"],
center: ["50%", "50%"],
roseType: "area",
itemStyle: {
borderRadius: 1,
},
avoidLabelOverlap: false,
avoidLabelOverlap: true,
labelLine: {
show: false,
show: true,
},
label: {
normal: {
position: "inner",
show: true,
formatter: "{d}%",
fontSize: 24,
color: "#FFFFFF",
formatter: '{name|{b}}\n{rate|{d}%}',
minMargin: 5,
edgeDistance: 1,
lineHeight: 15,
fontSize: 14,
// distanceToLabelLine: -60,
rich: {
name: {
padding: [0, 0, 10, 0],
},
rate: {
padding: [10, 0, 0, 0],
}
}
},
},
emphasis: {

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

@ -1,38 +1,24 @@
<template>
<div>
<cpt-bread
@tap="clickBreadItem"
v-if="breadList.length > 1"
:bread-list="breadList"
@tap="clickBreadItem"
/>
<div class="g-row">
<div class="g-left">
<div class="m-box">
<div class="box-title">
<img
src="~@/assets/images/shuju/main/card-title-bg-480.png"
class="box-title-bg"
/>
<div class="box-title-txt">房屋概览</div>
</div>
<div class="m-subbox">
<div class="bgImg">
<Title text="房屋概览"/>
<fwgl ref="fwgl" :orgId="orgData.org_id"></fwgl>
</div>
</div>
<div class="m-box">
<div class="box-title">
<img
src="~@/assets/images/shuju/main/card-title-bg-480.png"
class="box-title-bg"
/>
<div class="box-title-txt">居民概览</div>
</div>
<div class="m-subbox">
<jmgl :orgId="orgData.org_id" ref="jmgl"></jmgl>
<div class="bgImg">
<Title text="居民概览"/>
<jmgl ref="jmgl" :orgId="orgData.org_id"></jmgl>
</div>
<div class="bgImg">
<Title text="图谱画像"/>
<jdtphx :id="orgData.org_id" />
</div>
</div>
@ -138,8 +124,8 @@
<grid-map
ref="map"
@clickAgency="clickAgencyItem"
:srcGridData="orgData"
@clickAgency="clickAgencyItem"
@clickDotBtn="handleClickDotBtn"
/>
<mapRight/>
@ -148,17 +134,17 @@
<div class="m-search">
<div class="btn" @click="searchModule.displayedCard = true">
<img
src="~@/assets/images/shuju/renfang/index/search/btn-bg.png"
class="btn-bg"
src="~@/assets/images/shuju/renfang/index/search/btn-bg.png"
/>
<img
src="~@/assets/images/shuju/renfang/index/search/btn-bg-hover.png"
class="btn-bg-hover"
src="~@/assets/images/shuju/renfang/index/search/btn-bg-hover.png"
/>
<span>点击搜索</span>
</div>
<div class="card" v-show="searchModule.displayedCard">
<div v-show="searchModule.displayedCard" class="card">
<div class="card-input">
<div class="card-btn" @click="handleSearch">
<img
@ -167,10 +153,10 @@
</div>
<input
type="text"
v-model="searchModule.keyword"
placeholder="搜索本组织及下级的居民、小区、楼栋、房屋"
type="text"
@keyup.enter="handleSearch"
v-model="searchModule.keyword"
/>
<div class="i-div"></div>
@ -225,26 +211,26 @@
</div>
</div>
<div class="card-list" v-if="searchModule.result.length > 0">
<div v-if="searchModule.result.length > 0" class="card-list">
<div
class="card-item"
v-for="(item, index) in searchModule.result"
:key="item.title + index"
class="card-item"
@click="handleClickSearchItem(item)"
v-for="(item, index) in searchModule.result"
>
<span>{{ item.title }}</span>
<img
src="~@/assets/images/shuju/renfang/index/search/arrow.png"
class="i-arrow"
src="~@/assets/images/shuju/renfang/index/search/arrow.png"
/>
<img
src="~@/assets/images/shuju/renfang/index/search/arrow-on.png"
class="i-arrow z-on"
src="~@/assets/images/shuju/renfang/index/search/arrow-on.png"
/>
</div>
</div>
<div class="card-empty" v-else>
<div v-else class="card-empty">
<img src="~@/assets/images/shuju/renfang/index/empty.png"/>
<span>没有找到搜索结果</span>
</div>
@ -252,20 +238,22 @@
</div>
</div>
<div class="m-box m-cate">
<div class="bgImg m-box m-cate">
<div class="box-title">
<img
src="~@/assets/images/shuju/main/card-title-bg-800.png"
<!-- <img
class="box-title-bg"
src="~@/assets/images/shuju/main/card-title-bg-800.png"
/>
<div class="box-title-txt" v-if="!displayedForecast">
<div v-if="!displayedForecast" class="box-title-txt">
居民分类统计
</div>
<div class="box-title-txt" v-else>居民分类统计-智能预测</div>
<div v-else class="box-title-txt">居民分类统计-智能预测</div>
-->
<Title v-if="!displayedForecast" text="居民概览">
<template>
<div
class="box-title-btn"
v-if="!displayedForecast"
class="box-title-btn"
@click="displayedForecast = true"
>
<img src="~@/assets/images/shuju/renfang/index/znyc.png"/>
@ -278,10 +266,12 @@
<img src="~@/assets/images/shuju/renfang/index/i-hint.png"/>
</el-tooltip>
</div>
</template>
</Title>
<Title v-else text="居民分类统计-智能预测"/>
<div
class="box-title-btn"
v-else
class="box-title-btn"
@click="displayedForecast = false"
>
<img src="~@/assets/images/shuju/main/back-on.png"/>
@ -290,12 +280,12 @@
</div>
<div v-if="!displayedForecast">
<div class="list" v-if="resiCategoryData.length > 0">
<div v-if="resiCategoryData.length > 0" class="list">
<div
v-for="(item, index) in resiCategoryData"
:key="item.code + index"
class="item"
@click="toResiClassPage('normal', item.code, item.name)"
:key="item.code + index"
v-for="(item, index) in resiCategoryData"
>
<div>{{ ("0" + (index + 1)).substr(-2) }}.</div>
<div class="item-name">{{ item.name }}</div>
@ -321,17 +311,17 @@
</div>
</div>
<div class="empty" v-else>
<div v-else class="empty">
<img src="~@/assets/images/shuju/renfang/index/empty.png"/>
</div>
</div>
<div v-else>
<div class="list" v-if="resiCategoryForecastData.length > 0">
<div v-if="resiCategoryForecastData.length > 0" class="list">
<div
@click="toResiClassPage('ai', item.code, item.name)"
class="item"
:key="item.code + index"
v-for="(item, index) in resiCategoryForecastData"
:key="item.code + index"
class="item"
@click="toResiClassPage('ai', item.code, item.name)"
>
<div>{{ ("0" + (index + 1)).substr(-2) }}.</div>
<div class="item-name">{{ item.name }}</div>
@ -358,7 +348,7 @@
</div>
</div>
<div class="empty" v-else>
<div v-else class="empty">
<img src="~@/assets/images/shuju/renfang/index/empty.png"/>
</div>
</div>
@ -366,16 +356,16 @@
</div>
<div class="g-right">
<div
class="m-box"
<!-- <div
v-if="
orgLevel == 'district' || orgLevel == 'street' || orgLevel == 'city'
"
class="m-box"
>
<div class="box-title">
<img
src="~@/assets/images/shuju/main/card-title-bg-480.png"
class="box-title-bg"
src="~@/assets/images/shuju/main/card-title-bg-480.png"
/>
<div class="box-title-txt">数字社区</div>
</div>
@ -383,44 +373,29 @@
<div class="m-subbox m-szsq">
<szsq :orgId="orgData.org_id"></szsq>
</div>
</div>-->
<div class="bgImg">
<Title text="信息采集统计"></Title>
<rfsjtj :currentLevelData="{orgId: orgData.org_id}"/>
</div>
<div class="m-box">
<div class="box-title">
<img
src="~@/assets/images/shuju/main/card-title-bg-480.png"
class="box-title-bg"
/>
<div class="box-title-txt">人口预警</div>
</div>
<div class="bgImg">
<Title text="人口预警"></Title>
<div
class="m-subbox m-rkyj"
:class="{
'z-shrink':
orgLevel == 'district' ||
orgLevel == 'street' ||
orgLevel == 'city',
}"
class="m-subbox m-rkyj"
>
<rkyj :orgId="orgData.org_id"></rkyj>
<rkyj :orgId="orgData.org_id"/>
</div>
</div>
<div class="m-box">
<div class="box-title">
<img
src="~@/assets/images/shuju/main/card-title-bg-480.png"
class="box-title-bg"
/>
<div class="box-title-txt">人口分析</div>
</div>
<div class="m-subbox">
<rkfx
:orgId="orgData.org_id"
@handelClickRkfxPei="handelClickRkfxPei"
></rkfx>
</div>
<div class="bgImg">
<Title text="人口分析"></Title>
<rkfx :orgId="orgData.org_id" @handelClickRkfxPei="handelClickRkfxPei"/>
</div>
</div>
@ -428,15 +403,15 @@
</div>
<resi-details
@close="displayedResiId = ''"
:resi-id="displayedResiId"
v-if="displayedResiId"
:resi-id="displayedResiId"
@close="displayedResiId = ''"
/>
<house-details
@close="displayedHouseId = ''"
:house-id="displayedHouseId"
v-if="displayedHouseId"
:house-id="displayedHouseId"
@close="displayedHouseId = ''"
/>
</div>
</template>
@ -458,6 +433,9 @@ import { requestPost } from "@/js/dai/request";
import getQueryPara from "dai-js/modules/getQueryPara";
import {requestGet} from "@/js/dai/request";
import resiCategoryMap from "@/views/business/resi-category-map.js";
import Title from "@/views/dataBoard/satisfactionEval/components/Title/index.vue";
import rfsjtj from "@/views/dataBoard/overview/components/rfsjtj.vue";
import jdtphx from "@/views/dataBoard/overview/components/jdtphx.vue";
function iniGetPerInfo() {
return {
@ -474,6 +452,7 @@ export default {
name: "renfang",
components: {
Title,
gridMap,
fwgl,
jmgl,
@ -484,7 +463,9 @@ export default {
cptBread,
houseDetails,
resiDetails,
mapRight
mapRight,
rfsjtj,
jdtphx
},
data() {
@ -768,8 +749,7 @@ export default {
//
async getResiCategoryForecastData() {
const url = "/actual/base/resiCategory/intelligentPredictioncategoryCountList";
let params = {
};
let params = {};
const {data, code, msg} = await requestGet(url, params);
if (code === 0) {
this.resiCategoryForecastData = data.categoryList.map((item) => {
@ -883,9 +863,15 @@ export default {
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/renfang/index.scss";
<style
lang="scss"
src="@/assets/scss/dataBoard/renfang/index.scss"
scoped
></style>
.bgImg {
margin-top: 5px;
background: url('@/assets/images/shuju/overview/box-bg.png') no-repeat;
background-size: 100% 100%;
}
.m-box {
height: 320px;
}
</style>

141
src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/detail.vue

@ -0,0 +1,141 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="table">
<el-table
v-loading="loading"
:data="list"
element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading"
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="地点" prop="key"/>
<el-table-column label="工单号" prop="key"/>
<el-table-column label="所属社区" prop="key"></el-table-column>
<el-table-column label="事件分类" prop="key"></el-table-column>
<el-table-column label="投诉内容" prop="key"></el-table-column>
<el-table-column label="接收时间" prop="key"></el-table-column>
<el-table-column label="联系人" prop="key"></el-table-column>
<el-table-column label="联系电话" prop="key"></el-table-column>
<el-table-column label="状态" prop="key"></el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<EventDetails :id="rowId" :showDialog="showDialog" @close="showDialog = false"/>
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
</div>
</template>
<script>
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
export default {
name: "TddtlxsjDetail",
components: {Breadcrumb, Pagination, Title, EventDetails},
data() {
return {
showDialog: false,
rowId: "",
queryParams: {
pageNo: 1,
pageSize: 10,
},
total: 0,
orgOptions: [],
breadcrumbList: [
{
path: "/dataBoard/satisfactionEval/index",
name: "满意度评价",
},
{
path: "/dataBoard/satisfactionEval/Problem/tddtlxsj",
name: "同地点同类型重复投诉问题列表",
},
{
path: "",
name: "详情",
},
],
list: [{}, {}, {}],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
handleView({id}) {
this.showDialog = true;
this.rowId = id;
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
color: #fff;
border: none;
background: none;
}
}
.btn {
height: 32px;
margin-left: 46px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

196
src/views/dataBoard/satisfactionEval/Problem/tddtlxsj/list.vue

@ -0,0 +1,196 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select
v-model="typeCondition"
class="select"
placeholder="请选择"
popper-class="selectPopClass"
size="small"
@change="timeChange"
>
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button class="btn" size="small" type="primary" @click="search">查询</el-button>
</el-form>
</div>
<div class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading" element-loading-text="加载中...">
<el-table-column label="序号" type="index"/>
<el-table-column label="地点" prop="key"/>
<el-table-column label="类型" prop="gridName"/>
<el-table-column label="投诉次数" prop="restName"></el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
</div>
</template>
<script>
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
export default {
name: "tddtlxsjList",
components: {Breadcrumb, Pagination, Title},
data() {
return {
queryParams: {
month: "",
agencyId: "",
pageNo: 1,
pageSize: 10,
},
typeCondition: 5,
typeConditionList: [
{
label: "本月",
value: 1,
},
{
label: "上月",
value: 2,
},
{
label: "近三月",
value: 3,
},
{
label: "近半年",
value: 4,
},
{
label: "近一年",
value: 5,
},
],
total: 0,
orgOptions: [],
breadcrumbList: [
{
path: "/dataBoard/satisfactionEval/index",
name: "满意度评价",
},
{
path: "",
name: "同地点同类型重复投诉问题列表 ",
},
],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: index - 0 + 1 + "月", value: index - 0 + 1};
}),
list: [{}, {}, {}],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
...this.timeChange(this.typeCondition)
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
timeChange(type) {
let startTime = "",
endTime = "";
if (type == 1) {
startTime = this.$moment().startOf("month").format("YYYY-MM-DD");
}
if (type == 2) {
startTime = this.$moment().subtract(1, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 3) {
startTime = this.$moment().subtract(2, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 4) {
startTime = this.$moment().subtract(5, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 5) {
startTime = this.$moment().subtract(11, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 2) {
endTime = this.$moment().subtract(1, "months").endOf("month").format("YYYY-MM-DD");
} else {
endTime = this.$moment().endOf("month").format("YYYY-MM-DD");
}
return {startTime, endTime};
},
handleView(id) {
this.id = id;
this.$router.push('/dataBoard/satisfactionEval/Problem/tddtlxsj/detail?id='+id)
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
color: #fff;
border: none;
background: none;
}
}
.btn {
height: 32px;
margin-left: 46px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

141
src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/detail.vue

@ -0,0 +1,141 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="table">
<el-table
v-loading="loading"
:data="list"
element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading"
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="地点" prop="key"/>
<el-table-column label="工单号" prop="key"/>
<el-table-column label="所属社区" prop="key"></el-table-column>
<el-table-column label="事件分类" prop="key"></el-table-column>
<el-table-column label="投诉内容" prop="key"></el-table-column>
<el-table-column label="接收时间" prop="key"></el-table-column>
<el-table-column label="联系人" prop="key"></el-table-column>
<el-table-column label="联系电话" prop="key"></el-table-column>
<el-table-column label="状态" prop="key"></el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<EventDetails :id="rowId" :showDialog="showDialog" @close="showDialog = false"/>
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
</div>
</template>
<script>
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
export default {
name: "tyrydetail",
components: {Breadcrumb, Pagination, Title, EventDetails},
data() {
return {
showDialog: false,
rowId: "",
queryParams: {
pageNo: 1,
pageSize: 10,
},
total: 0,
orgOptions: [],
breadcrumbList: [
{
path: "/dataBoard/satisfactionEval/index",
name: "满意度评价",
},
{
path: "/dataBoard/satisfactionEval/Problem/tyqybtlx",
name: "同一区域不同类型重复投诉问题列表",
},
{
path: "",
name: "详情",
},
],
list: [{}, {}, {}],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
handleView({id}) {
this.showDialog = true;
this.rowId = id;
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
color: #fff;
border: none;
background: none;
}
}
.btn {
height: 32px;
margin-left: 46px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

239
src/views/dataBoard/satisfactionEval/Problem/tyqybtlx/list.vue

@ -0,0 +1,239 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select
v-model="typeCondition"
class="select"
placeholder="请选择"
popper-class="selectPopClass"
size="small"
@change="timeChange"
>
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button class="btn" size="small" type="primary" @click="search">查询</el-button>
</el-form>
</div>
<div class="table">
<el-table
v-loading="loading"
:data="data"
:span-method="objectSpanMethod"
element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading"
element-loading-text="加载中..."
>
<el-table-column label="序号" prop="number" width="80"/>
<el-table-column label="地点" prop="column1"/>
<el-table-column label="类型" prop="column3"/>
<el-table-column label="投诉次数" prop="column2"/>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
</div>
</template>
<script>
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
export default {
name: "tyryList",
components: {Breadcrumb, Pagination, Title},
data() {
return {
queryParams: {
month: "",
agencyId: "",
pageNo: 1,
pageSize: 10,
},
typeCondition: 5,
typeConditionList: [
{
label: "本月",
value: 1,
},
{
label: "上月",
value: 2,
},
{
label: "近三月",
value: 3,
},
{
label: "近半年",
value: 4,
},
{
label: "近一年",
value: 5,
},
],
total: 0,
orgOptions: [],
breadcrumbList: [
{
path: "/dataBoard/satisfactionEval/index",
name: "满意度评价",
},
{
path: "",
name: "同一区域不同类型重复投诉问题列表 ",
},
],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: index - 0 + 1 + "月", value: index - 0 + 1};
}),
data: [
{number: 1, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 2, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 3, column1: '市北区清江路100号', column2: '10', column3: '100'},
{number: 4, column1: '市北区清江路**号', column2: '10', column3: '100'},
{number: 5, column1: '市北区清江路**号', column2: '10', column3: '100'},
],
data1: [
"number",
"column1",
"column2",
"column3"
],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getList();
},
methods: {
objectSpanMethod({row, column, rowIndex, columnIndex}) {
if (columnIndex === 1 || columnIndex === 0 || columnIndex === 4) {
if (rowIndex > 0 && row.column1 === this.data[rowIndex - 1].column1) {
return {
rowspan: 0,
colspan: 0,
};
} else {
let rowspan = 1;
for (let i = rowIndex + 1; i < this.data.length; i++) {
if (row.column1 === this.data[i].column1) {
rowspan++;
} else {
//else "Name" 退
break;
}
}
// { rowspan, colspan: 1 } rowspan colspan: 1
return {
rowspan,
colspan: 1,
};
}
}
},
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
...this.timeChange(this.typeCondition)
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
timeChange(type) {
let startTime = "",
endTime = "";
if (type == 1) {
startTime = this.$moment().startOf("month").format("YYYY-MM-DD");
}
if (type == 2) {
startTime = this.$moment().subtract(1, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 3) {
startTime = this.$moment().subtract(2, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 4) {
startTime = this.$moment().subtract(5, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 5) {
startTime = this.$moment().subtract(11, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 2) {
endTime = this.$moment().subtract(1, "months").endOf("month").format("YYYY-MM-DD");
} else {
endTime = this.$moment().endOf("month").format("YYYY-MM-DD");
}
return {startTime, endTime};
},
handleView(id) {
this.id = id;
this.$router.push('/dataBoard/satisfactionEval/Problem/tyqybtlx/detail?id=' + id)
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table-border.scss";
.screen {
margin: 25px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
color: #fff;
border: none;
background: none;
}
}
.btn {
height: 32px;
margin-left: 46px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

140
src/views/dataBoard/satisfactionEval/Problem/tyry/detail.vue

@ -0,0 +1,140 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="table">
<el-table
v-loading="loading"
:data="list"
element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading"
element-loading-text="加载中..."
>
<el-table-column label="序号" type="index" width="80"/>
<el-table-column label="工单号" prop="key"/>
<el-table-column label="所属社区" prop="key"></el-table-column>
<el-table-column label="事件分类" prop="key"></el-table-column>
<el-table-column label="投诉内容" prop="key"></el-table-column>
<el-table-column label="接收时间" prop="key"></el-table-column>
<el-table-column label="联系人" prop="key"></el-table-column>
<el-table-column label="联系电话" prop="key"></el-table-column>
<el-table-column label="状态" prop="key"></el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<EventDetails :id="rowId" :showDialog="showDialog" @close="showDialog = false"/>
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
</div>
</template>
<script>
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
import EventDetails from "@/views/dataBoard/overview/components/EventDetail.vue";
export default {
name: "tyrydetail",
components: {Breadcrumb, Pagination, Title, EventDetails},
data() {
return {
showDialog: false,
rowId: "",
queryParams: {
pageNo: 1,
pageSize: 10,
},
total: 0,
orgOptions: [],
breadcrumbList: [
{
path: "/dataBoard/satisfactionEval/index",
name: "满意度评价",
},
{
path: "/dataBoard/satisfactionEval/Problem/tyry",
name: "同一人员重复投诉问题列表",
},
{
path: "",
name: "详情",
},
],
list: [{}, {}, {}],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
handleView({id}) {
this.showDialog = true;
this.rowId = id;
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
color: #fff;
border: none;
background: none;
}
}
.btn {
height: 32px;
margin-left: 46px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

195
src/views/dataBoard/satisfactionEval/Problem/tyry/list.vue

@ -0,0 +1,195 @@
<template>
<div>
<Breadcrumb :list="breadcrumbList"/>
<div class="screen">
<el-form :model="queryParams" inline>
<el-select
v-model="typeCondition"
class="select"
placeholder="请选择"
popper-class="selectPopClass"
size="small"
@change="timeChange"
>
<el-option
v-for="item in typeConditionList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-button class="btn" size="small" type="primary" @click="search">查询</el-button>
</el-form>
</div>
<div class="table">
<el-table v-loading="loading" :data="list" element-loading-background="rgba(0,0,0,0.5)"
element-loading-spinner="el-icon-loading" element-loading-text="加载中...">
<el-table-column label="序号" type="index"/>
<el-table-column label="联系方式" prop="key"/>
<el-table-column label="投诉次数" prop="restName"></el-table-column>
<el-table-column align="center" label="详情">
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
</div>
<Pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNo" :total="total"
@pagination="getList"/>
</div>
</template>
<script>
import Breadcrumb from "@/views/dataBoard/satisfactionEval/components/Breadcrumb";
import Pagination from "@/views/dataBoard/satisfactionEval/components/Pagination";
import Title from "@/views/dataBoard/satisfactionEval/components/Title";
export default {
name: "tyryList",
components: {Breadcrumb, Pagination, Title},
data() {
return {
queryParams: {
month: "",
agencyId: "",
pageNo: 1,
pageSize: 10,
},
typeCondition: 5,
typeConditionList: [
{
label: "本月",
value: 1,
},
{
label: "上月",
value: 2,
},
{
label: "近三月",
value: 3,
},
{
label: "近半年",
value: 4,
},
{
label: "近一年",
value: 5,
},
],
total: 0,
orgOptions: [],
breadcrumbList: [
{
path: "/dataBoard/satisfactionEval/index",
name: "满意度评价",
},
{
path: "",
name: "同一人员重复投诉问题列表 ",
},
],
monthOptions: new Array(12).fill(0).map((_, index) => {
return {label: index - 0 + 1 + "月", value: index - 0 + 1};
}),
list: [{}, {}, {}],
title: "",
loading: false,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getList();
},
methods: {
search() {
this.queryParams.pageNo = 1;
this.getList();
},
getList() {
this.loading = true;
let params = {
...this.queryParams,
...this.timeChange(this.typeCondition)
}
this.$http.get("?" + this.$paramsFormat(params)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;
});
},
timeChange(type) {
let startTime = "",
endTime = "";
if (type == 1) {
startTime = this.$moment().startOf("month").format("YYYY-MM-DD");
}
if (type == 2) {
startTime = this.$moment().subtract(1, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 3) {
startTime = this.$moment().subtract(2, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 4) {
startTime = this.$moment().subtract(5, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 5) {
startTime = this.$moment().subtract(11, "months").startOf("month").format("YYYY-MM-DD");
}
if (type == 2) {
endTime = this.$moment().subtract(1, "months").endOf("month").format("YYYY-MM-DD");
} else {
endTime = this.$moment().endOf("month").format("YYYY-MM-DD");
}
return {startTime, endTime};
},
handleView(id) {
this.id = id;
this.$router.push('/dataBoard/satisfactionEval/Problem/tyry/detail?id='+id)
},
},
};
</script>
<style lang="scss" scoped>
@import "@/assets/scss/dataBoard/table.scss";
.screen {
margin: 25px 0 40px;
.el-select,
.el-input {
width: 150px;
margin-right: 4px;
border: 1px solid #126ac5;
border-radius: 2px;
/deep/ .el-input__inner {
color: #fff;
border: none;
background: none;
}
}
.btn {
height: 32px;
margin-left: 46px;
}
}
.main-title {
margin: 25px 0 32px;
}
.table {
margin-top: 32px;
}
</style>

9
src/views/dataBoard/satisfactionEval/dissatisfieReason/index.vue

@ -40,7 +40,7 @@
<el-table-column label="姓名" prop="restName"></el-table-column>
<el-table-column label="连写电话" prop="mobile">
<el-table-column label="联系电话" prop="mobile">
<template slot-scope="scope">
{{ $sensitive(scope.row.mobile, 3, 7) }}
</template>
@ -106,16 +106,17 @@ export default {
}),
list: [{},{},{}],
title: "",
loading: false,
loading: true,
};
},
activated() {
this.title = this.$route.query.title;
let searchParams = JSON.parse(this.$route.query.searchParams);
let searchParams = this.$route.query.searchParams?JSON.parse(this.$route.query.searchParams):{};
this.queryParams = {
...this.queryParams,
...searchParams,
};
this.getOrg();
this.getList();
},
methods: {
@ -125,7 +126,7 @@ export default {
},
getList() {
this.loading = true;
this.$http.get("?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.$http.get("/governance/satisfaction/communitySelfInsp/inspResult/list?" + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => {
this.total = data.total;
this.list = data.list;
this.loading = false;

14
src/views/dataBoard/satisfactionEval/modules/DissatisfiedReason/index.vue

@ -17,21 +17,22 @@ export default {
}
},
data() {
return {
}
return {}
},
mounted() {
this.initChart();
this.$http("/governance/satisfaction/communitySelfInsp/stats/dissatisfactionReason/classification", {}).then(({data: {data}}) => {
this.initChart(data);
})
},
methods: {
timeChange() {
},
initChart() {
initChart(data) {
let div = document.getElementById('DissatisfiedReason');
this.myChart = echarts.init(div);
var getname = ['社区工作不了解', '宣传力度小', '对社区工作不满意', '其他']; //
var getNum = [8, 9, 16, 21];
var getname = data.map(item => item.dissatisfactionReasonName); //
var getNum = data.map(item => item.qty);
var data = [];
for (var i = 0; i < getname.length; i++) {
@ -133,6 +134,7 @@ export default {
display: flex;
justify-content: space-between;
padding: 32px;
#DissatisfiedReason {
flex: calc(100% - 100px);
width: calc(100% - 100px);

8
src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue

@ -9,7 +9,7 @@
</el-select>
</template>
<template v-slot:info>
<span class="infoColor">更多></span>
<span class="infoColor" @click="$router.push('/dataBoard/satisfactionEval/Problem/tddtlxsj')">更多></span>
</template>
</title-small>
<div class="t-list f-hflex">
@ -39,8 +39,8 @@
:value="item.value"></el-option>
</el-select>
</template>
<template v-slot:info>
<span class="infoColor">更多></span>
<template v-slot:info>tyqybtlx
<span class="infoColor" @click="$router.push('/dataBoard/satisfactionEval/Problem/tyry')">更多></span>
</template>
</title-small>
<div class="t-list f-hflex">
@ -69,7 +69,7 @@
</el-select>
</template>
<template v-slot:info>
<span class="infoColor">更多></span>
<span class="infoColor" @click="$router.push('/dataBoard/satisfactionEval/Problem/tyqybtlx')">更多></span>
</template>
</title-small>
<div class="table">

Loading…
Cancel
Save