|
@@ -1,162 +1,103 @@
|
|
|
<template>
|
|
|
<div class="modelBlock">
|
|
|
<div class="model-title">
|
|
|
- <div class="model-title-text">投诉建议类型分布</div>
|
|
|
- <el-select v-model="mixins_query.communityId" placeholder="全部社区" clearable class="saveColumn-select">
|
|
|
+ <div class="model-title-text">投诉建议类型</div>
|
|
|
+ <el-select v-model="mixins_query.communityId" placeholder="全部社区" clearable class="saveColumn-select" @change="getData">
|
|
|
<el-option v-for="(item, index) in communityList" :label="item.communityName" :value="item.id" :key="index"></el-option>
|
|
|
</el-select>
|
|
|
+ <el-date-picker
|
|
|
+ value-format="yyyyMM"
|
|
|
+ v-model="mixins_query.date"
|
|
|
+ type="month"
|
|
|
+ placeholder="选择月"
|
|
|
+ class="saveColumn-select"
|
|
|
+ @change="getData"
|
|
|
+ >
|
|
|
+ </el-date-picker>
|
|
|
</div>
|
|
|
<div class="model-content">
|
|
|
<zz-echart :option="clientOptions" class="chart"></zz-echart>
|
|
|
<div class="totals">
|
|
|
- <span>65191</span>
|
|
|
+ <span>{{ total }}</span>
|
|
|
<span class="numbers">总人数</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
|
+import { GradualChange, ringType } from './indexOptionChart';
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
- communityList: [],
|
|
|
mixins_query: {
|
|
|
- communityId: ''
|
|
|
+ communityId: '',
|
|
|
+ date: ''
|
|
|
},
|
|
|
- clientOptions: {
|
|
|
- tooltip: {
|
|
|
- trigger: 'item'
|
|
|
- },
|
|
|
- legend: {
|
|
|
- orient: 'vertical',
|
|
|
- right: 10,
|
|
|
- top: 80,
|
|
|
- itemGap: 10,
|
|
|
- itemWidth: 12, // 图例图形宽度
|
|
|
- itemHeight: 8,
|
|
|
- formatter: (v) => {
|
|
|
- return `{a|${v}} · · · · · · {b|555}`;
|
|
|
- },
|
|
|
- textStyle: {
|
|
|
- rich: {
|
|
|
- a: {
|
|
|
- fontSize: 12,
|
|
|
- color: '#858892',
|
|
|
- padding: [0, 5, 0, 0]
|
|
|
- },
|
|
|
- b: {
|
|
|
- fontSize: 14,
|
|
|
- color: '#fff',
|
|
|
- padding: [0, 0, 0, 5]
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- type: 'pie',
|
|
|
- radius: ['40%', '50%'],
|
|
|
- avoidLabelOverlap: false,
|
|
|
- center: ['20%', '50%'],
|
|
|
- label: {
|
|
|
- show: false,
|
|
|
- position: 'center'
|
|
|
- },
|
|
|
- labelLine: {
|
|
|
- show: false
|
|
|
- },
|
|
|
- data: [
|
|
|
- { value: 1048, name: '业主' },
|
|
|
- { value: 735, name: '亲属' }
|
|
|
- ]
|
|
|
- }
|
|
|
+ total: 0,
|
|
|
+ clientOptions: ringType(
|
|
|
+ [
|
|
|
+ GradualChange('#22D8FF', '#00B2FF'),
|
|
|
+ GradualChange('#F0646C', '#F4994E'),
|
|
|
+ GradualChange('#5EEDCC ', '#24C3F1'),
|
|
|
+ GradualChange('#7178FF', '#D2A4FF'),
|
|
|
+ GradualChange('#884DD2', '#DF63CC')
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ { value: 0, name: '扰民投诉' },
|
|
|
+ { value: 0, name: '物业投诉' },
|
|
|
+ { value: 0, name: '公共卫生' },
|
|
|
+ { value: 0, name: '安全建议' },
|
|
|
+ { value: 0, name: '其他' }
|
|
|
]
|
|
|
- }
|
|
|
+ )
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ communityList() {
|
|
|
+ return this.$store.getters['getAreaSelect'];
|
|
|
+ }
|
|
|
+ },
|
|
|
methods: {
|
|
|
- communityNameList() {
|
|
|
- this.$http.get('/sc-community/assets/community/list').then(({ data, msg, status }) => {
|
|
|
+ getData() {
|
|
|
+ this.$http.get('/sc-community/statisticComplaint', this.mixins_query).then(({ data, msg, status }) => {
|
|
|
if (status == 0) {
|
|
|
- this.communityList = data;
|
|
|
+ this.clientOptions = ringType(
|
|
|
+ [
|
|
|
+ GradualChange('#22D8FF', '#00B2FF'),
|
|
|
+ GradualChange('#F0646C', '#F4994E'),
|
|
|
+ GradualChange('#5EEDCC ', '#24C3F1'),
|
|
|
+ GradualChange('#7178FF', '#D2A4FF'),
|
|
|
+ GradualChange('#884DD2', '#DF63CC')
|
|
|
+ ],
|
|
|
+ this.eachartObj(data)
|
|
|
+ );
|
|
|
}
|
|
|
});
|
|
|
+ },
|
|
|
+ eachartObj(data) {
|
|
|
+ this.total = data.total;
|
|
|
+ let typeName = {
|
|
|
+ 1: '扰民投诉',
|
|
|
+ 2: '物业投诉',
|
|
|
+ 3: '公共卫生',
|
|
|
+ 4: '安全建议',
|
|
|
+ 5: '其他'
|
|
|
+ };
|
|
|
+ let newData = [];
|
|
|
+ for (let a in data.datas) {
|
|
|
+ newData.push({
|
|
|
+ value: data.datas[a],
|
|
|
+ name: typeName[a]
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return newData;
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
- this.communityNameList();
|
|
|
- // this.mixins_dataUrl = '/sc-community/assets/garage/page';
|
|
|
- // this.mixins_query = {};
|
|
|
- // this.mixins_search();
|
|
|
+ this.getData();
|
|
|
}
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
-@import '@assets/css/public-style.scss';
|
|
|
-.modelBlock {
|
|
|
- height: 100%;
|
|
|
- padding: rem(15) rem(20) rem(20);
|
|
|
- background: #171f32;
|
|
|
- .model-title {
|
|
|
- line-height: rem(30);
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- padding-bottom: rem(15);
|
|
|
- border-bottom: 1px solid rgba(224, 225, 227, 0.2);
|
|
|
- .saveColumn-select {
|
|
|
- width: rem(120);
|
|
|
- margin-left: rem(20);
|
|
|
- /deep/ .el-input__inner {
|
|
|
- background: transparent;
|
|
|
- color: white;
|
|
|
- border-color: rgba(255, 255, 255, 0.2);
|
|
|
- }
|
|
|
- }
|
|
|
- .model-title-text {
|
|
|
- color: white;
|
|
|
- }
|
|
|
- .buttons {
|
|
|
- width: rem(120);
|
|
|
- padding-left: rem(10);
|
|
|
- box-sizing: border-box;
|
|
|
- background: rgba(0, 0, 0, 0.1);
|
|
|
- border-radius: 4px;
|
|
|
- border: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
- cursor: pointer;
|
|
|
-
|
|
|
- span.triangle {
|
|
|
- margin-top: rem(10);
|
|
|
- float: right;
|
|
|
- margin-right: rem(5);
|
|
|
- border: 4px solid transparent;
|
|
|
- border-left: 4px solid rgba(255, 255, 255, 0.5);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .model-content {
|
|
|
- height: calc(100% - #{rem(45)});
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- font-size: 12px;
|
|
|
- position: relative;
|
|
|
- .totals {
|
|
|
- position: absolute;
|
|
|
- right: rem(10);
|
|
|
- top: rem(26);
|
|
|
- width: rem(120);
|
|
|
- height: rem(40);
|
|
|
- background: linear-gradient(90deg, rgba(14, 174, 255, 0.5) 0%, rgba(14, 174, 255, 0) 100%);
|
|
|
- border-radius: 5px;
|
|
|
- font-size: 20px;
|
|
|
- padding: rem(8) rem(10);
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- .numbers {
|
|
|
- font-size: 12px;
|
|
|
- opacity: 0.5;
|
|
|
- line-height: rem(32);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
+@import './style.scss';
|
|
|
</style>
|