Browse Source

问题清单模块,重点关注人群接口错误

feature
mk 2 years ago
parent
commit
ca68a02b9d
  1. 1
      package.json
  2. 4
      src/assets/scss/dataBoard/overview/index.scss
  3. 39
      src/views/dataBoard/overview/components/jdjs.vue
  4. 292
      src/views/dataBoard/overview/components/wtqd.vue
  5. 36
      src/views/dataBoard/overview/index.vue

1
package.json

@ -55,6 +55,7 @@
"turf": "^3.0.14", "turf": "^3.0.14",
"v-distpicker": "^1.2.2", "v-distpicker": "^1.2.2",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-awesome-swiper": "^3.1.3",
"vue-baidu-map": "^0.21.22", "vue-baidu-map": "^0.21.22",
"vue-i18n": "^8.12.0", "vue-i18n": "^8.12.0",
"vue-quill-editor": "^3.0.6", "vue-quill-editor": "^3.0.6",

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

@ -293,7 +293,9 @@
} }
} }
.m-wtqd{
padding: 0 16px;
}
@keyframes move { @keyframes move {
from { from {

39
src/views/dataBoard/overview/components/jdjs.vue

@ -146,7 +146,7 @@ export default {
getChartData() { getChartData() {
this.loading = true this.loading = true
this.$http.get('/actual/base/resiCategory/intelligentPredictioncategoryCountList').then(({data: {data}}) => { this.$http.get('/actual/base/resiCategory/categoryCountList').then(({data: {data}}) => {
this.initCharts(data) this.initCharts(data)
}) })
}, },
@ -156,12 +156,11 @@ export default {
let chartData = data.categoryList.map((item) => { let chartData = data.categoryList.map((item) => {
return { return {
name: resiCategoryMap[item.categoryName] || "", name: resiCategoryMap[item.categoryName] || "",
count: item.categoryCountNext, count: item.categoryCount,
}; };
}); }).slice(0,8);
let xData = chartData.map(item=>item.name); let xData = chartData.map(item=>item.name);
let yData = chartData.map(item=>item.count) let yData = chartData.map(item=>item.count)
console.log(yData,xData);
let color = [[ let color = [[
{ {
offset: 0, offset: 0,
@ -172,25 +171,6 @@ export default {
color: 'rgba(38, 244, 248, 1)' // 100% color: 'rgba(38, 244, 248, 1)' // 100%
} }
]] ]]
// let seriesArray = series.map((item, index) => {
// return {
// name: item.name,
// type: 'bar',
// barWidth: 14,
// itemStyle: {
// opacity: 1,
// color: new echarts.graphic.LinearGradient(
// 0,
// 1,
// 0,
// 0,
// color[0],
// false
// )
// },
// data: item.data,
// }
// })
let num = yData let num = yData
const max = Math.max(...num) const max = Math.max(...num)
let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100) let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100)
@ -219,7 +199,18 @@ export default {
return res; return res;
}, },
}, },
dataZoom: [
{
"type": "slider",
"start": 0,
"end": parseInt((5 / xData.length) * 10) / 10 * 100,
"height": 10,
"bottom": 0,
"showDetail": false,
"showDataShadow": false,
"borderColor": "transparent"
}
],
grid: { grid: {
top: '18%', top: '18%',
left: '2%', left: '2%',

292
src/views/dataBoard/overview/components/wtqd.vue

@ -0,0 +1,292 @@
<template>
<div class="m-wtqd">
<title-small text="难点赌点" />
<div class="t-list f-hflex">
<swiper ref="orderSwiper" :options="swiperOptions">
<swiper-slide v-for="(items, index) in tableData" :key="index" class="swiper-slide">
<div
:class="['item', 'f-flex']"
v-for="(item, index) in items"
:key="index"
>
<span>{{ item.time }}</span>
<span>{{ item.title }}</span>
</div>
</swiper-slide>
</swiper>
</div>
<title-small text="矛盾纠纷" />
<div class="t-list f-hflex">
<swiper ref="orderSwiper" :options="swiperOptions">
<swiper-slide v-for="(items, index) in tableData" :key="index" class="swiper-slide">
<div
:class="['item', 'f-flex']"
v-for="(item, index) in items"
:key="index"
>
<span>{{ item.time }}</span>
<span>{{ item.title }}</span>
</div>
</swiper-slide>
</swiper>
</div>
<title-small text="自身问题" />
<div class="t-list f-hflex">
<swiper ref="orderSwiper" :options="swiperOptions">
<swiper-slide v-for="(items, index) in tableData" :key="index" class="swiper-slide">
<div
:class="['item', 'f-flex']"
v-for="(item, index) in items"
:key="index"
>
<span>{{ item.time }}</span>
<span>{{ item.title }}</span>
</div>
</swiper-slide>
</swiper>
</div>
<title-small text="超出服务范围" />
<div class="t-list f-hflex">
<swiper ref="orderSwiper" :options="swiperOptions">
<swiper-slide v-for="(items, index) in tableData" :key="index" class="swiper-slide">
<div
:class="['item', 'f-flex']"
v-for="(item, index) in items"
:key="index"
>
<span>{{ item.time }}</span>
<span>{{ item.title }}</span>
</div>
</swiper-slide>
</swiper>
</div>
<title-small text="不满意问题数" />
<div class="f-flex white f-mean">
<div
class="f-hflex"
@click="
$router.push(
'/dataBoard/satisfactionEval/potentialPeople?type=shuji&countType=service&satisfactionSource=satisfaction_12345'
)
"
>
<div><span class="f-pingfang">12345热线不满意数</span></div>
<div class="f-darkGray">
<b class="f-font34 f-yellow">0</b
>
</div>
</div>
<div
class="f-hflex"
@click="
$router.push(
'/dataBoard/satisfactionEval/potentialPeople?type=shuji&countType=service&satisfactionSource=satisfaction_province'
)
"
>
<div><span class="f-pingfang">满意度调查不满意数</span></div>
<div class="f-darkGray">
<b class="f-font34 f-green">0</b
>
</div>
</div>
<div
class="f-hflex"
@click="
$router.push(
'/dataBoard/satisfactionEval/potentialPeople?type=shuji&countType=service&satisfactionSource=satisfaction_community'
)
"
>
<div><span class="f-pingfang">社区自评不满意数</span></div>
<div class="f-darkGray">
<b class="f-font34 f-skyBlue">0</b
>
</div>
</div>
</div>
</div>
</template>
<script>
import titleSmall from "@/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue";
import "swiper/dist/css/swiper.css";
import { swiper, swiperSlide } from "vue-awesome-swiper";
export default {
name: "wtqd",
props: {
currentLevelData: {
type: Object,
default: {},
},
},
data() {
return {
orgId: this.$store.state.chooseArea.chooseName,
report: "",
overview: "",
loading: false,
rffxDate: "",
event12345Num: "",
provinceSatisfactionNum: "",
selfInspectNum: "",
endTime: "",
startTime: "",
tableData: [
{
time: "今天",
title: "小区进行老旧小区改造后,1号楼1单元楼下出现1单元楼下出现",
},
{
time: "今天",
title: "小区进行老旧小区改造后,1号楼1单元楼下出现1单元楼下出现",
},
{
time: "今天",
title: "小区进行老旧小区改造后,1号楼1单元楼下出现1单元楼下出现",
},
{
time: "今天",
title: "小区进行老旧小区改造后,1号楼1单元楼下出现1单元楼下出现",
},
{
time: "今天",
title: "小区进行老旧小区改造后,1号楼1单元楼下出现1单元楼下出现",
},
],
// 4
swiperOptions: {
direction: "vertical", // 'horizontal' 'vertical'
autoplay: {
delay: 6000, //
disableOnInteraction: true, //
},
loop: false, //
speed: 1000, //
},
};
},
watch: {
currentLevelData(val) {
if (val.orgId) {
this.getReport(val);
// this.getChartData();
}
},
},
mounted() {
this.getReport(this.currentLevelData);
this.getData();
this.tableData = this.groupList(this.tableData, 4);
},
components: {
titleSmall,
swiper,
swiperSlide,
},
//
methods: {
getReport({ orgId, orgLevel }) {
this.$http
.get(
"/actual/base/streetOverview/communityOverview?orgId=" +
orgId +
"&level=" +
orgLevel
)
.then(({ data: { data } }) => {
this.overview = data;
});
this.$http
.get(
"/actual/base/streetOverview/summaryReport?orgId=" +
orgId +
"&level=" +
orgLevel
)
.then(({ data: { data } }) => {
this.report = data;
});
},
groupList(array, subGroupLength) {
let index = 0;
let newArray = [];
while (index < array.length) {
newArray.push(array.slice(index, (index += subGroupLength)));
}
return newArray;
},
getData() {},
},
};
</script>
<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped />
<style lang="scss" scoped>
/deep/ .el-input__inner {
width: 90px !important;
height: 24px !important;
background: #021c49 !important;
border: 1px solid #125aaa !important;
border-radius: 12px !important;
color: #a0cdff;
}
/deep/ .el-input__icon {
line-height: 24px !important;
color: #a0cdff;
}
.f-hflex {
width: 83px;
}
.f-flex {
margin-top: 4px;
}
.f-darkGray {
margin-top: 15px;
}
.t-list {
flex: 1;
width: 100%;
.swiper-container {
height: 200px;
width: 100%;
}
.item {
align-items: center;
height: 40px;
justify-content: space-around;
background: #0a2a5c;
color: #fff;
cursor: pointer;
span {
text-align: center;
}
> :nth-child(1) {
width: 50px;
}
> :nth-child(2) {
flex: 1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
&:hover {
color: #02FCFF ;
box-shadow: 0 0 10px #38b2ff , 0 0 5px #38b2ff ;
}
}
}
.swiper-slide{
padding: 0 4px;
}
.white{
height: 100px;
}
</style>

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

@ -38,10 +38,16 @@
</div> </div>
<div class="g-right"> <div class="g-right">
<div class="m-box">
<div class="m-box">
<title-box text="问题清单"></title-box>
<wtqd :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 1" />
</div>
<!-- <div class="m-box">
<title-box text="人房数据统计" /> <title-box text="人房数据统计" />
<rfsjtj :currentLevelData="currentLevelData" /> <rfsjtj :currentLevelData="currentLevelData" />
</div> </div> -->
<!-- 街道概览 --> <!-- 街道概览 -->
<!-- <div v-if="currentLevel === 'street' || currentLevel === 'district'" class="m-box"> <!-- <div v-if="currentLevel === 'street' || currentLevel === 'district'" class="m-box">
<title-box text="各社区人房数据更新排行"> <title-box text="各社区人房数据更新排行">
@ -51,32 +57,32 @@
</title-box> </title-box>
<sqrfph :currentLevelData="currentLevelData" :date="rfphDate" /> <sqrfph :currentLevelData="currentLevelData" :date="rfphDate" />
</div> --> </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投诉事件统计"> <title-box text="各社区12345投诉事件统计">
<span class="date-span"> <span class="date-span">
<el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sq12345Date" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" /> <el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sq12345Date" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" />
</span> </span>
</title-box> </title-box>
<sq12345 :currentLevelData="currentLevelData" :date="sq12345Date" /> <sq12345 :currentLevelData="currentLevelData" :date="sq12345Date" />
</div> </div> -->
<!-- 社区&网格--> <!-- 社区&网格-->
<div v-if="currentLevel === 'community' || currentLevel === 'grid'" class="m-box"> <!-- <div v-if="currentLevel === 'community' || currentLevel === 'grid'" class="m-box">
<title-box text="人房数据动态更新" /> <title-box text="人房数据动态更新" />
<Tabs v-model="dynamicType" :list="dynamicTypeList" v-if="currentLevel === 'community'" @changeVal="dynamicTypeChange" /> <Tabs v-model="dynamicType" :list="dynamicTypeList" v-if="currentLevel === 'community'" @changeVal="dynamicTypeChange" />
<DynamicHumanRoomData :currentLevelData="currentLevelData" :currentLevel="currentLevel" v-if="dynamicType === 1" /> <DynamicHumanRoomData :currentLevelData="currentLevelData" :currentLevel="currentLevel" v-if="dynamicType === 1" />
<GridUpdateRanking :currentLevelData="currentLevelData" :currentLevel="currentLevel" v-if="dynamicType === 2" /> <GridUpdateRanking :currentLevelData="currentLevelData" :currentLevel="currentLevel" v-if="dynamicType === 2" />
</div> </div> -->
<!-- 社区概览--> <!-- 社区概览-->
<div v-if="currentLevel === 'community'" class="m-box"> <!-- <div v-if="currentLevel === 'community'" class="m-box">
<title-box text="社区满意度自查结果"> <title-box text="社区满意度自查结果">
<span class="date-span"> <span class="date-span">
<el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sqzcDate" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" /> <el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sqzcDate" format="yyyy-MM" value-format="yyyy-MM" type="month" :clearable="false" placeholder="选择月" />
</span> </span>
</title-box> </title-box>
<CommunityResult :currentLevelData="currentLevelData" :date="sqzcDate" /> <CommunityResult :currentLevelData="currentLevelData" :date="sqzcDate" />
</div> </div> -->
<div v-if="currentLevel === 'community'" class="m-box"> <!-- <div class="m-box">
<title-box text="事件&回访"> <title-box text="事件&回访">
<span class="date-span"> <span class="date-span">
<el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sjhfDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" /> <el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sjhfDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" />
@ -85,16 +91,17 @@
<Tabs v-model="eventType" :list="eventTypeList" @changeVal="eventTypeChange" /> <Tabs v-model="eventType" :list="eventTypeList" @changeVal="eventTypeChange" />
<EventAndFollowUp :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 1" /> <EventAndFollowUp :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 1" />
<FollowUp :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 2" /> <FollowUp :currentLevelData="currentLevelData" :date="sjhfDate" v-if="eventType === 2" />
</div> </div> -->
<!-- 网格 --> <!-- 网格 -->
<div v-if="currentLevel === 'grid'" class="m-box"> <!-- <div v-if="currentLevel === 'grid'" class="m-box">
<title-box text="社区网格数据更新排行"> <title-box text="社区网格数据更新排行">
<span class="date-span"> <span class="date-span">
<el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sqwggxDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" /> <el-date-picker popper-class="date-current-weiyi" :append-to-body="false" v-model="sqwggxDate" format="yyyy-MM" value-format="yyyy-MM" @change="changeDate" type="month" :clearable="false" placeholder="选择月" />
</span> </span>
</title-box> </title-box>
<RankingGridData :currentLevelData="currentLevelData" :date="sqwggxDate" /> <RankingGridData :currentLevelData="currentLevelData" :date="sqwggxDate" />
</div> </div> -->
</div> </div>
</div> </div>
@ -119,6 +126,8 @@ import DynamicHumanRoomData from "@/views/dataBoard/overview/components/DynamicH
import GridUpdateRanking from "@/views/dataBoard/overview/components/GridUpdateRanking.vue"; import GridUpdateRanking from "@/views/dataBoard/overview/components/GridUpdateRanking.vue";
import CommunityResult from "@/views/dataBoard/overview/components/CommunityResult.vue"; import CommunityResult from "@/views/dataBoard/overview/components/CommunityResult.vue";
import EventAndFollowUp from "@/views/dataBoard/overview/components/EventAndFollowUp.vue"; import EventAndFollowUp from "@/views/dataBoard/overview/components/EventAndFollowUp.vue";
import wtqd from "@/views/dataBoard/overview/components/wtqd.vue";
import RankingGridData from "@/views/dataBoard/overview/components/RankingGridData.vue"; import RankingGridData from "@/views/dataBoard/overview/components/RankingGridData.vue";
import FollowUp from "@/views/dataBoard/overview/components/FollowUp.vue"; import FollowUp from "@/views/dataBoard/overview/components/FollowUp.vue";
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue";
@ -149,6 +158,7 @@ export default {
GridUpdateRanking, GridUpdateRanking,
FollowUp, FollowUp,
Tabs, Tabs,
wtqd
}, },
data() { data() {
@ -164,7 +174,7 @@ export default {
}, // }, //
orgId: "", orgId: "",
orgLevel: "", orgLevel: "",
currentLevel: "", currentLevel: "",//level
currentLevelData: { currentLevelData: {
orgId: this.$store.state.chooseArea.chooseName.orgId, orgId: this.$store.state.chooseArea.chooseName.orgId,
orgLevel: this.$store.state.chooseArea.chooseName.level, orgLevel: this.$store.state.chooseArea.chooseName.level,

Loading…
Cancel
Save