数字督察一体化平台-前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1727 lines
43 KiB

<template>
<el-scrollbar height="100vh">
<div class="wrapper">
<datav-header/>
<main>
<el-row :gutter="16">
<el-col :span="6">
<datav-card title="调查情况" style="height: 156px">
<el-row class="mb-32">
<el-col :span="5">
<div class="descriptions_cell text-center margin-top-30">
<div class="descriptions_content">
{{ reviewOk.State2 }}
</div>
<div class="descriptions_label">
调查总量
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center margin-top-30">
<div class="descriptions_content">
{{ reviewOk.State3 }}
</div>
<div class="descriptions_label">
有效回复
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center margin-top-30">
<div class="descriptions_content">
{{ reviewOk.State3 - reviewOk.bmys }}
</div>
<div class="descriptions_label">
满意
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center margin-top-30">
<div class="descriptions_content">
{{ 0 }}
</div>
<div class="descriptions_label">
基本满意
</div>
</div>
</el-col>
<el-col :span="4">
<div class="descriptions_cell text-center margin-top-30">
<div class="descriptions_content">
{{ reviewOk.bmys }}
</div>
<div class="descriptions_label">
不满意数
</div>
</div>
</el-col>
</el-row>
</datav-card>
<datav-card title="调查滿意度">
<div style="height: 226px">
<el-container>
<el-aside width="100px">
<el-col>
<div class="descriptions_cell text-center height-118">
<div class="descriptions_content margin-top-30 ">
{{ dcmyd.length > 0 && dcmyd[2] && dcmyd[2].FinalRP !== undefined ? dcmyd[2].FinalRP : '0' }}
</div>
<div class="descriptions_label">
上期满意度
</div>
</div>
<div class="descriptions_cell text-center height-118">
<div class="descriptions_content">
{{ dcmyd.length > 0 && dcmyd[0] && dcmyd[0].FinalRP !== undefined ? dcmyd[0].FinalRP : '0' }}
</div>
<div class="descriptions_label">
当前调查满意度
</div>
</div>
</el-col>
</el-aside>
<el-main>
<v-charts
:option="option1"
autoresize
/>
</el-main>
</el-container>
</div>
</datav-card>
<div style="background-color:#04144E; ">
<h3 style="color: white">业务满意率</h3>
<el-table
:data="tableData"
height="300"
:summary-cell-style="summaryCellStyle"
:summary-method="getSummaries"
:style="{ width: '100%', marginTop: '20px', fontSize: fontSize + 'px' }"
:header-cell-style="headerCellStyle"
:row-style="tableRowStyle"
:show-summary='true'
:highlight-current-row="false"
>
<el-table-column prop="Name" label="单项业务" width="82px"/>
<el-table-column prop="sdcl" label="有效数" width="72px"/>
<el-table-column label="基本满意数" width="72px">
<template v-slot="scope">
<span>{{ calculateSatisfaction(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column prop="sbmys" label="不满意数" width="72px"/>
<el-table-column prop="smyl" label="满意率" width="72px"/>
<el-table-column prop="smyltb" label="同比" width="86px"/>
</el-table>
</div>
</el-col>
<el-col :span="12">
<div class="datav-col">
<el-row :gutter="6">
<el-col :span="4">
<!-- <datav-select></datav-select>-->
</el-col>
</el-row>
</div>
<v-charts
style="height: 450px"
:option="option"
autoresize
/>
<datav-card title="综合滿意度排名">
<div class="common-layout">
<el-container>
<el-container>
<el-header>
<div style="background-color:#04144E; ">
<el-table
:data="tableData1"
height="106"
:summary-cell-style="summaryCellStyle"
:summary-method="getSummaries"
:style="{ width: '100%', marginTop: '20px', fontSize: fontSize + 'px' }"
:header-cell-style="headerCellStyle"
:row-style="tableRowStyle"
:show-summary='false'
:highlight-current-row='false'
>
<el-table-column prop="SetName" label="排名" width="76"/>
<el-table-column prop="OrganizeName" label="市州考评" width="149"/>
<el-table-column prop="FinalRP" label="滿意度" width="65"/>
<el-table-column prop="TBRp" label="上期满意度" width="65"/>
<el-table-column prop="TBRpts" label="同比上期" width="65"/>
</el-table>
</div>
</el-header>
<el-main>
<div style="background-color:#04144E; ">
<el-table
:data="tableData2"
height="215"
:summary-cell-style="summaryCellStyle"
:summary-method="getSummaries"
:style="{ width: '100%', marginTop: '70px', fontSize: fontSize + 'px' }"
:header-cell-style="headerCellStyle"
:row-style="tableRowStyle"
:show-summary='false'
:highlight-current-row='false'
>
<el-table-column prop="MydRanking" label="排名"/>
<el-table-column prop="OrganizeName" label="县市考评"/>
<el-table-column prop="FinalRP" label="滿意度"/>
<el-table-column prop="TBRp" label="上期满意度"/>
<el-table-column prop="TBRpts" label="同比上期"/>
</el-table>
</div>
</el-main>
</el-container>
<el-aside width="445px">
<div style="background-color:#04144E; height: 360px ">
<el-table
:data="tableData3"
height="360"
:summary-cell-style="summaryCellStyle"
:summary-method="getSummaries"
:style="{ width: '100%', marginTop: '20px', fontSize: fontSize + 'px' }"
:header-cell-style="headerCellStyle"
:row-style="tableRowStyle"
:show-summary='false'
>
<el-table-column prop="MydRanking" label="排名"/>
<el-table-column prop="OrganizeName" label="区"/>
<el-table-column prop="FinalRP" label="滿意度"/>
<el-table-column prop="TBRp" label="上期满意度"/>
<el-table-column prop="TBRpts" label="同比上期"/>
</el-table>
</div>
</el-aside>
</el-container>
</div>
</datav-card>
</el-col>
<el-col :span="6">
<datav-card title="不满意样本趋势" sub-title="不满意样本" style="height: 156px">
<div style="height: 150px">
<v-charts
:option="option2"
autoresize
/>
</div>
</datav-card>
<datav-card title="单项分析">
<div style="height: 226px">
<v-charts
:option="option3"
autoresize
/>
</div>
</datav-card>
<div style="background-color:#04144E; ">
<h3 style="color: white">单项调查情况 <span style="font-size: 14px; color: #597AE9">昨日数据下发</span>
</h3>
<el-table
:data="tableData4"
height="300"
:summary-cell-style="summaryCellStyle"
:summary-method="getSummaries"
:style="{ width: '100%', marginTop: '20px', fontSize: fontSize + 'px' }"
:header-cell-style="headerCellStyle"
:row-style="tableRowStyle"
:show-summary='true'
>
<el-table-column prop="Name" label="单项业务"/>
<el-table-column prop="sdcl" label="有效数"/>
<el-table-column prop="bmyzs" label="省不满意数"/>
<el-table-column prop="LastDayQACount" label="新增调查数"/>
</el-table>
</div>
</el-col>
</el-row>
</main>
</div>
</el-scrollbar>
</template>
<script setup>
import vCharts from "vue-echarts";
import changshaMap from "@/assets/data/changsha.json";
import * as echarts from "echarts/core";
import {GetBMYYBQS, GetDCQK, GetDITU, GetDXFX, GetGLFW, GetRCSQQK, GetZHMYLPM, GetZRSJXF} from "@/api/screen/jwpy.ts";
// region 左边
// 调查情况
const reviewOk = ref({
LevelType: "湖南",
State2: 164279,
State3: 104659,
bmys: "1615",
dczl: 392902,
jtl: "68.45%",
yxhf: "104659",
yxl: "38.92%"
});
// 调查滿意度
const dcmyd = ref([]);
// endregion
// region 右边
const bmyybqs = ref([]);
const dxfx = ref([]);
// endregion
echarts.registerMap("changsha", changshaMap);
let mapDataList = reactive([
{name: '长沙县', value: 500},
{name: '浏阳市', value: 400},
{name: '开福区', value: 300},
{name: '浏阳市', value: 400},
{name: '望城区', value: 400},
{name: '芙蓉区', value: 400},
{name: '天心区', value: 400},
{name: '雨花区', value: 400},
{name: '岳麓区', value: 400},
{name: '宁乡市', value: 400},
]);
const option = {
geo: {
// 是上面注册时的名字哦,registerMap('名字保持一致')
map: "changsha",
itemStyle: {
normal: {
areaColor: "#02215E", // 这里将地图区域的颜色修改为红色
},
},
},
tooltip: {
show: true,
trigger: "item",
position: "right",
formatter: function (params) {
if (typeof params.data === "undefined") {
console.log(params);
} else {
console.log(params);
return `<div class="tooltip">
<div class="tooltip-title">${params.name}</div>
<div class="tooltip-content">
<ul class="tooltip-ul">
<li>信访总件数 <span>${params.data.todaysum}</span></li>
<li>国家信访 <span>${params.data.allsum}</span>
</li>
<li>公安部信访 <span>${params.data.completed}</span>
</li>
<li>局长信箱 <span>${params.data.completedrate}</span></li>
<li>12337信访 <span>${params.data.resolvedrate}</span></li>
</ul>
</div>
</div>`;
}
},
backgroundColor: "#031577", //
borderColor: "#0A2F86",
borderWidth: 0, // 设置边框宽度为1像素
borderRadius: 3, // 设置边框半径为3像素
shadowBlur: 0, // 设置阴影模糊程度为8像素
shadowOffsetX: 0, // 设置水平阴影位移量为0像素
shadowOffsetY: 0, // 设置垂直阴影位移量为6像素
},
visualMap: {
type: "piecewise",
bottom: 10,
pieces: [
{gte: 85, lte: 100, label: "信访总件数>300"},
{gte: 65, lte: 85, label: "信访总件数>200"},
{gte: 0, lte: 65, label: "信访总件数0-200"},
],
right: 10, // 右边距
realtime: false,
orient: "horizontal", // 水平显示
textStyle: {
color: "#fff", // 文字颜色
},
calculable: true,
inRange: {
color: ["#D34343", "#F6A149", "#4987F6"],
},
},
series: [
{
name: "长沙",
type: "map",
map: "changsha",
hoverAnimation: true,
label: {
show: true,
color: "white",
},
data: mapDataList,
},
],
};
const option1 = ref({
xAxis: {
type: "category",
boundaryGap: false,
data: [],
},
yAxis: {
type: "value",
splitLine: {
show: true,
lineStyle: {
color: "#193775",
},
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line',
label: {
backgroundColor: '#6a7985'
}
}
},
series: [
{
type: "line",
smooth: true,
label: {
show: false
},
lineStyle: {
color: "#28E6FF",
width: 4,
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(40,230,255,0.47)", // 渐变起始颜色
},
{
offset: 1,
color: "rgba(40,230,255,0)", // 渐变结束颜色
},
]),
},
data: [],
},
],
grid: {left: '10%', right: '10%', top: '10%', bottom: '20%', containLabel: true},
})
const option2 = ref({
xAxis: {
type: "category",
boundaryGap: false,
data: [
"9/10",
"9/11",
"9/12",
"9/13",
"9/13",
"9/13",
],
},
yAxis: {
type: "value",
splitLine: {
show: true,
lineStyle: {
color: "#193775",
},
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line',
label: {
backgroundColor: '#6a7985'
}
}
},
series: [
{
type: "line",
smooth: true,
label: {
show: false
},
lineStyle: {
color: "#6FDBA0",
width: 4,
},
areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(109, 221, 159, 0.47)'
}, {offset: 1, color: 'rgba(109, 221, 159, 0)'}])
},
data: [
79,
88,
82,
77,
69,
90,
],
},
],
grid: {left: '10%', right: '10%', top: '10%', bottom: '20%', containLabel: true},
})
const option3 = ref({
tooltip: {},
legend: {
data: ['本期', '上一期', '去年同期'],
textStyle: {
color: '#fff',
},
},
grid: {
left: '10%',
right: '10%', top: '10%', bottom: '10%'
},
xAxis: {
type: 'category',
data: []
},
yAxis: {
type: 'value'
},
series: [
{
name: '本期',
type: 'bar',
data: [],
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(40,230,255,0.63)'
}, {offset: 1, color: 'rgba(40,230,255,0)'}])
},
},
{
name: '上一期',
type: 'bar',
data: [],
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1,
[{offset: 0, color: 'rgba(255,218,51,0.52)'},
{offset: 1, color: 'rgba(255,219,49,0)'}])
}
},
{
name: '去年同期',
type: 'line',
data: [],
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#6FDBA0'
}, {offset: 1, color: '#6FDBA0'}])
}
}
]
});
// region 表格数据
const tableData = ref([])
const tableData1 = ref([])
const tableData2 = ref([])
const tableData3 = ref([])
const tableData4 = ref([])
// endregion
onMounted(() => {
getData();
});
function getData() {
GetDCQK().then((res) => {
reviewOk.value = res
});
GetGLFW().then((res) => {
dcmyd.value = res.lstson
option1.value.xAxis.data = dcmyd.value[0].lstson.map(item => item.SonPeriodName);
option1.value.series[0].data = dcmyd.value[0].lstson.map(item => item.FinalRP);
});
GetZRSJXF().then((res) => {
let tempTable = res.lstShen
tempTable = tempTable.filter(item => item.Name !== null)
tableData.value = tempTable;
});
// 综合满意度排名
GetZHMYLPM().then((res) => {
tableData1.value = res.lstCity
let temp = res.lstSheng;
const group2 = temp.filter(item => item.SetName === "(省)县市考评");
const group3 = temp.filter(item => item.SetName === "(省)区");
tableData2.value = group2
tableData3.value = group3
});
// 不满意样本趋势
GetBMYYBQS().then((res) => {
bmyybqs.value = res
});
// 单项分析
GetDXFX().then((res) => {
dxfx.value = res.lstson
});
// GetRCSQQK().then((res) => { });
// GetZRSJXF().then((res) => { });
// GetDITU().then((res) => { });
}
setTimeout(() => {
reviewOk.value = {
LevelType: "省",
dczl: 1410919,
jtl: "67.84%",
yxhf: "490980",
yxl: "51.3%",
mys: "462939",
jbmys: "21688",
bmys: "6353",
State2: 466175,
State3: 490980
}
// 调查满意度
dcmyd.value = [
{
Bak: "满意度",
FinalRP: 95.3,
lstson: [
{
"State3": 43486,
"FinalRP": 94.37,
"PeriodSonID": "37",
"SonSerialNo": 1,
"SonPeriodName": "1月"
},
{
"State3": 28974,
"FinalRP": 94.12,
"PeriodSonID": "38",
"SonSerialNo": 2,
"SonPeriodName": "2月"
},
{
"State3": 36326,
"FinalRP": 94.68,
"PeriodSonID": "39",
"SonSerialNo": 3,
"SonPeriodName": "3月"
},
{
"State3": 47753,
"FinalRP": 96.11,
"PeriodSonID": "40",
"SonSerialNo": 4,
"SonPeriodName": "4月"
},
{
"State3": 55153,
"FinalRP": 95.89,
"PeriodSonID": "41",
"SonSerialNo": 5,
"SonPeriodName": "5月"
},
{
"State3": 50433,
"FinalRP": 95.29,
"PeriodSonID": "42",
"SonSerialNo": 6,
"SonPeriodName": "6月"
},
{
"State3": 63952,
"FinalRP": 95.77,
"PeriodSonID": "43",
"SonSerialNo": 7,
"SonPeriodName": "7月"
},
{
"State3": 53520,
"FinalRP": 94.94,
"PeriodSonID": "44",
"SonSerialNo": 8,
"SonPeriodName": "8月"
},
{
"State3": 48500,
"FinalRP": 95.81,
"PeriodSonID": "45",
"SonSerialNo": 9,
"SonPeriodName": "9月"
},
{
"State3": 45397,
"FinalRP": 95.64,
"PeriodSonID": "46",
"SonSerialNo": 10,
"SonPeriodName": "10月"
},
{
"State3": 17486,
"FinalRP": 95.77,
"PeriodSonID": "47",
"SonSerialNo": 11,
"SonPeriodName": "11月"
},
{
"State3": 0,
"FinalRP": 0,
"PeriodSonID": "48",
"SonSerialNo": 12,
"SonPeriodName": "12月"
}
]
},
{
"Bak": "去年同期",
"FinalRP": 97.23,
"lstson": [
{
"State3": 43486,
"FinalRP": 96.46,
"PeriodSonID": "37",
"SonSerialNo": 1,
"SonPeriodName": "1月"
},
{
"State3": 28974,
"FinalRP": 97.27,
"PeriodSonID": "38",
"SonSerialNo": 2,
"SonPeriodName": "2月"
},
{
"State3": 36326,
"FinalRP": 97.15,
"PeriodSonID": "39",
"SonSerialNo": 3,
"SonPeriodName": "3月"
},
{
"State3": 47753,
"FinalRP": 97.26,
"PeriodSonID": "40",
"SonSerialNo": 4,
"SonPeriodName": "4月"
},
{
"State3": 55153,
"FinalRP": 97.18,
"PeriodSonID": "41",
"SonSerialNo": 5,
"SonPeriodName": "5月"
},
{
"State3": 50433,
"FinalRP": 97.4,
"PeriodSonID": "42",
"SonSerialNo": 6,
"SonPeriodName": "6月"
},
{
"State3": 63952,
"FinalRP": 97.07,
"PeriodSonID": "43",
"SonSerialNo": 7,
"SonPeriodName": "7月"
},
{
"State3": 53520,
"FinalRP": 97.19,
"PeriodSonID": "44",
"SonSerialNo": 8,
"SonPeriodName": "8月"
},
{
"State3": 48500,
"FinalRP": 97.36,
"PeriodSonID": "45",
"SonSerialNo": 9,
"SonPeriodName": "9月"
},
{
"State3": 45397,
"FinalRP": 97.2,
"PeriodSonID": "46",
"SonSerialNo": 10,
"SonPeriodName": "10月"
},
{
"State3": 17486,
"FinalRP": 97.49,
"PeriodSonID": "47",
"SonSerialNo": 11,
"SonPeriodName": "11月"
},
{
"State3": 0,
"FinalRP": 97.83,
"PeriodSonID": "48",
"SonSerialNo": 12,
"SonPeriodName": "12月"
}
]
},
{
Bak: "上一期",
FinalRP: 0,
lstson: [
{
"State3": 43486,
"FinalRP": 0,
"PeriodSonID": "37",
"SonSerialNo": 1,
"SonPeriodName": "1月"
},
{
"State3": 28974,
"FinalRP": 94.37,
"PeriodSonID": "38",
"SonSerialNo": 2,
"SonPeriodName": "2月"
},
{
"State3": 36326,
"FinalRP": 94.12,
"PeriodSonID": "39",
"SonSerialNo": 3,
"SonPeriodName": "3月"
},
{
"State3": 47753,
"FinalRP": 94.68,
"PeriodSonID": "40",
"SonSerialNo": 4,
"SonPeriodName": "4月"
},
{
"State3": 55153,
"FinalRP": 96.11,
"PeriodSonID": "41",
"SonSerialNo": 5,
"SonPeriodName": "5月"
},
{
"State3": 50433,
"FinalRP": 95.89,
"PeriodSonID": "42",
"SonSerialNo": 6,
"SonPeriodName": "6月"
},
{
"State3": 63952,
"FinalRP": 95.29,
"PeriodSonID": "43",
"SonSerialNo": 7,
"SonPeriodName": "7月"
},
{
"State3": 53520,
"FinalRP": 95.77,
"PeriodSonID": "44",
"SonSerialNo": 8,
"SonPeriodName": "8月"
},
{
"State3": 48500,
"FinalRP": 94.94,
"PeriodSonID": "45",
"SonSerialNo": 9,
"SonPeriodName": "9月"
},
{
"State3": 45397,
"FinalRP": 95.81,
"PeriodSonID": "46",
"SonSerialNo": 10,
"SonPeriodName": "10月"
},
{
"State3": 17486,
"FinalRP": 95.64,
"PeriodSonID": "47",
"SonSerialNo": 11,
"SonPeriodName": "11月"
},
{
"State3": 0,
"FinalRP": 95.77,
"PeriodSonID": "48",
"SonSerialNo": 12,
"SonPeriodName": "12月"
}
]
}]
option1.value.xAxis.data = dcmyd.value[0].lstson.map(item => item.SonPeriodName);
option1.value.series[0].data = dcmyd.value[0].lstson.map(item => item.FinalRP);
// 不满意趋势
bmyybqs.value = [
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "37",
"SonSerialNo": 1,
"SonPeriodName": "1月",
"QACount": 956,
"State3": "43486"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "38",
"SonSerialNo": 2,
"SonPeriodName": "2月",
"QACount": 531,
"State3": "28974"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "39",
"SonSerialNo": 3,
"SonPeriodName": "3月",
"QACount": 692,
"State3": "36326"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "40",
"SonSerialNo": 4,
"SonPeriodName": "4月",
"QACount": 483,
"State3": "47753"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "41",
"SonSerialNo": 5,
"SonPeriodName": "5月",
"QACount": 606,
"State3": "55153"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "42",
"SonSerialNo": 6,
"SonPeriodName": "6月",
"QACount": 606,
"State3": "50433"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "43",
"SonSerialNo": 7,
"SonPeriodName": "7月",
"QACount": 650,
"State3": "63952"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "44",
"SonSerialNo": 8,
"SonPeriodName": "8月",
"QACount": 605,
"State3": "53520"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "45",
"SonSerialNo": 9,
"SonPeriodName": "9月",
"QACount": 511,
"State3": "48500"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "46",
"SonSerialNo": 10,
"SonPeriodName": "10月",
"QACount": 557,
"State3": "45397"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "47",
"SonSerialNo": 11,
"SonPeriodName": "11月",
"QACount": 156,
"State3": "17486"
},
{
"PeriodID": "6",
"PeriodName": "2024年全年",
"PeriodSonID": "48",
"SonSerialNo": 12,
"SonPeriodName": "12月",
"QACount": 0,
"State3": "0"
}
];
option2.value.xAxis.data = bmyybqs.value.map(item => item.SonPeriodName);
option2.value.series[0].data = bmyybqs.value.map(item => item.QACount);
// 单项分析
dxfx.value = [
{
"Bak": "本周期",
"lstson": [
{
"MasterID": "33",
"MasterName": "省驾考(自动)",
"FinalRP": "9.9536"
},
{
"MasterID": "35",
"MasterName": "省车辆上户(自动)",
"FinalRP": "9.9301"
},
{
"MasterID": "36",
"MasterName": "省身份证办理(自动)",
"FinalRP": "9.9502"
},
{
"MasterID": "37",
"MasterName": "省110接处警(自动)",
"FinalRP": "18.7852"
},
{
"MasterID": "38",
"MasterName": "省122接处警(自动)",
"FinalRP": "14.4708"
},
{
"MasterID": "92",
"MasterName": "省户政(自动)",
"FinalRP": "9.9580"
},
{
"MasterID": "93",
"MasterName": "省案件当事人2020(自动)",
"FinalRP": "22.2535"
}
]
},
{
"Bak": "上一期",
"lstson": [
{
"MasterID": "33",
"MasterName": "省驾考(自动)",
"FinalRP": "0.0000"
},
{
"MasterID": "35",
"MasterName": "省车辆上户(自动)",
"FinalRP": "0.0000"
},
{
"MasterID": "36",
"MasterName": "省身份证办理(自动)",
"FinalRP": "0.0000"
},
{
"MasterID": "37",
"MasterName": "省110接处警(自动)",
"FinalRP": "0.0000"
},
{
"MasterID": "38",
"MasterName": "省122接处警(自动)",
"FinalRP": "0.0000"
},
{
"MasterID": "92",
"MasterName": "省户政(自动)",
"FinalRP": "0.0000"
},
{
"MasterID": "93",
"MasterName": "省案件当事人2020(自动)",
"FinalRP": "0.0000"
}
]
},
{
"Bak": "去年同期",
"lstson": [
{
"MasterID": "33",
"MasterName": "省驾考(自动)",
"FinalRP": "9.9366"
},
{
"MasterID": "35",
"MasterName": "省车辆上户(自动)",
"FinalRP": "9.9212"
},
{
"MasterID": "36",
"MasterName": "省身份证办理(自动)",
"FinalRP": "9.9483"
},
{
"MasterID": "37",
"MasterName": "省110接处警(自动)",
"FinalRP": "19.3654"
},
{
"MasterID": "38",
"MasterName": "省122接处警(自动)",
"FinalRP": "14.6298"
},
{
"MasterID": "92",
"MasterName": "省户政(自动)",
"FinalRP": "9.9482"
},
{
"MasterID": "93",
"MasterName": "省案件当事人2020(自动)",
"FinalRP": "23.4803"
}
]
}
];
option3.value.xAxis.data = dxfx.value[0].lstson.map(item => item.MasterName);
option3.value.series[0].data = dxfx.value[0].lstson.map(item => item.FinalRP);
option3.value.series[1].data = dxfx.value[1].lstson.map(item => item.FinalRP);
option3.value.series[2].data = dxfx.value[2].lstson.map(item => item.FinalRP);
// 业务满意度
let tempTable = [
{
"MasterID": "37",
"Name": "110",
"MasterName": "省110接处警(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "108317",
"sbmys": "1308",
"smyl": "18.79",
"smyltb": "-0.58",
"State3": 35920,
"DissatisfiedNum": 1308,
"SatisfiedNum": 31117,
"BasicallySatisfiedNum": 3495
},
{
"MasterID": "38",
"Name": "122",
"MasterName": "省122接处警(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "520208",
"sbmys": "3425",
"smyl": "14.47",
"smyltb": "-0.16",
"State3": 188505,
"DissatisfiedNum": 3425,
"SatisfiedNum": 172181,
"BasicallySatisfiedNum": 12899
},
{
"MasterID": "93",
"Name": "案件",
"MasterName": "省案件当事人2020(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "46383",
"sbmys": "1044",
"smyl": "22.25",
"smyltb": "-1.23",
"State3": 14336,
"DissatisfiedNum": 1044,
"SatisfiedNum": 11168,
"BasicallySatisfiedNum": 2124
},
{
"MasterID": "35",
"Name": "车辆上户",
"MasterName": "省车辆上户(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "285177",
"sbmys": "261",
"smyl": "9.93",
"smyltb": "0.01",
"State3": 85379,
"DissatisfiedNum": 261,
"SatisfiedNum": 83776,
"BasicallySatisfiedNum": 1342
},
{
"MasterID": "33",
"Name": "驾考",
"MasterName": "省驾考(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "194532",
"sbmys": "141",
"smyl": "9.95",
"smyltb": "0.02",
"State3": 83910,
"DissatisfiedNum": 141,
"SatisfiedNum": 82775,
"BasicallySatisfiedNum": 994
},
{
"MasterID": "92",
"Name": "户口",
"MasterName": "省户政(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "119882",
"sbmys": "97",
"smyl": "9.96",
"smyltb": "0.01",
"State3": 38943,
"DissatisfiedNum": 97,
"SatisfiedNum": 38580,
"BasicallySatisfiedNum": 266
},
{
"MasterID": "36",
"Name": "身份证",
"MasterName": "省身份证办理(自动)",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "136420",
"sbmys": "77",
"smyl": "9.95",
"smyltb": "0.00",
"State3": 43987,
"DissatisfiedNum": 77,
"SatisfiedNum": 43342,
"BasicallySatisfiedNum": 568
},
{
"MasterID": "0",
"Name": null,
"MasterName": "(省)全市",
"zMasterID": null,
"zMasterName": null,
"zdcl": null,
"Allzdcl": null,
"zbmys": null,
"Allzbmys": null,
"Allyzh": null,
"yzh": null,
"Allwzh": null,
"wzh": null,
"sdcl": "1410919",
"sbmys": "6353",
"smyl": "95.30",
"smyltb": "-1.93",
"State3": 490980,
"DissatisfiedNum": 6353,
"SatisfiedNum": 462939,
"BasicallySatisfiedNum": 21688
}
]
tempTable = tempTable.filter(item => item.Name !== null)
tableData.value =tempTable
let temp = [
{
"OrganizeID": null,
"OrganizeName": "(省)县市考评",
"FinalRP": "满意度",
"TBRp": null,
"TBRpts": null,
"SetName": null,
"MydRanking": "排名",
"State3": 0
},
{
"OrganizeID": "430124",
"OrganizeName": "宁乡市公安局",
"FinalRP": "95.94",
"TBRp": "97.64",
"TBRpts": "-1.70",
"SetName": "(省)县市考评",
"MydRanking": "1",
"State3": 25511
},
{
"OrganizeID": "430112",
"OrganizeName": "望城分局",
"FinalRP": "95.54",
"TBRp": "97.55",
"TBRpts": "-2.01",
"SetName": "(省)县市考评",
"MydRanking": "2",
"State3": 22472
},
{
"OrganizeID": "430181",
"OrganizeName": "浏阳市公安局",
"FinalRP": "95.11",
"TBRp": "97.32",
"TBRpts": "-2.21",
"SetName": "(省)县市考评",
"MydRanking": "3",
"State3": 29790
},
{
"OrganizeID": "430121",
"OrganizeName": "长沙县公安局",
"FinalRP": "94.59",
"TBRp": "96.87",
"TBRpts": "-2.28",
"SetName": "(省)县市考评",
"MydRanking": "4",
"State3": 38369
},
{
"OrganizeID": null,
"OrganizeName": "(省)区",
"FinalRP": "满意度",
"TBRp": null,
"TBRpts": null,
"SetName": null,
"MydRanking": "排名",
"State3": 0
},
{
"OrganizeID": "430197",
"OrganizeName": "公共交通治安管理分局",
"FinalRP": "95.45",
"TBRp": "93.18",
"TBRpts": "2.27",
"SetName": "(省)区",
"MydRanking": "1",
"State3": 301
},
{
"OrganizeID": "430102",
"OrganizeName": "芙蓉分局",
"FinalRP": "94.64",
"TBRp": "97.31",
"TBRpts": "-2.67",
"SetName": "(省)区",
"MydRanking": "2",
"State3": 7543
},
{
"OrganizeID": "430199",
"OrganizeName": "高新区分局",
"FinalRP": "94.35",
"TBRp": "97.10",
"TBRpts": "-2.75",
"SetName": "(省)区",
"MydRanking": "3",
"State3": 5267
},
{
"OrganizeID": "430105",
"OrganizeName": "开福分局",
"FinalRP": "94.15",
"TBRp": "97.05",
"TBRpts": "-2.90",
"SetName": "(省)区",
"MydRanking": "4",
"State3": 10019
},
{
"OrganizeID": "430103",
"OrganizeName": "天心分局",
"FinalRP": "93.93",
"TBRp": "97.55",
"TBRpts": "-3.62",
"SetName": "(省)区",
"MydRanking": "5",
"State3": 16279
},
{
"OrganizeID": "430111",
"OrganizeName": "雨花分局",
"FinalRP": "93.43",
"TBRp": "95.78",
"TBRpts": "-2.35",
"SetName": "(省)区",
"MydRanking": "6",
"State3": 20850
},
{
"OrganizeID": "430104",
"OrganizeName": "岳麓分局",
"FinalRP": "92.92",
"TBRp": "95.96",
"TBRpts": "-3.04",
"SetName": "(省)区",
"MydRanking": "7",
"State3": 27422
},
{
"OrganizeID": "430100",
"OrganizeName": "长沙市直属",
"FinalRP": "91.05",
"TBRp": "97.17",
"TBRpts": "-6.12",
"SetName": "(省)区",
"MydRanking": "8",
"State3": 674
}
]
const group2 = temp.filter(item => item.SetName === "(省)县市考评");
const group3 = temp.filter(item => item.SetName === "(省)区");
tableData1.value = [
{
"OrganizeID": "4301",
"OrganizeName": "湖南省长沙市公安局",
"FinalRP": "95.30",
"TBRp": "97.23",
"TBRpts": "-1.93",
"SetName": "(省)全市",
"MydRanking": "1",
"State3": 490980
}
]
tableData2.value = group2
tableData3.value = group3
let text = [
{
"Name": "110",
"MasterID": "37",
"dxyw": null,
"sdcl": "108317",
"bmyzs": "1308",
"rcmzs": "0",
"tgs": "0",
"wsqs": "1347",
"LastDayVisitCount": 0,
"LastDayQACount": 3,
"State3": 35920
},
{
"Name": "122",
"MasterID": "38",
"dxyw": null,
"sdcl": "520208",
"bmyzs": "3425",
"rcmzs": "0",
"tgs": "0",
"wsqs": "3360",
"LastDayVisitCount": 0,
"LastDayQACount": 8,
"State3": 188505
},
{
"Name": "案件",
"MasterID": "93",
"dxyw": null,
"sdcl": "46383",
"bmyzs": "1044",
"rcmzs": "0",
"tgs": "0",
"wsqs": "1000",
"LastDayVisitCount": 0,
"LastDayQACount": 3,
"State3": 14336
},
{
"Name": "车辆上户",
"MasterID": "35",
"dxyw": null,
"sdcl": "285177",
"bmyzs": "261",
"rcmzs": "0",
"tgs": "0",
"wsqs": "243",
"LastDayVisitCount": 0,
"LastDayQACount": 0,
"State3": 85379
},
{
"Name": "驾考",
"MasterID": "33",
"dxyw": null,
"sdcl": "194532",
"bmyzs": "141",
"rcmzs": "0",
"tgs": "0",
"wsqs": "332",
"LastDayVisitCount": 0,
"LastDayQACount": 0,
"State3": 83910
},
{
"Name": "户口",
"MasterID": "92",
"dxyw": null,
"sdcl": "119882",
"bmyzs": "97",
"rcmzs": "0",
"tgs": "0",
"wsqs": "89",
"LastDayVisitCount": 0,
"LastDayQACount": 0,
"State3": 38943
},
{
"Name": "身份证",
"MasterID": "36",
"dxyw": null,
"sdcl": "136420",
"bmyzs": "77",
"rcmzs": "0",
"tgs": "0",
"wsqs": "76",
"LastDayVisitCount": 0,
"LastDayQACount": 0,
"State3": 43987
},
{
"Name": null,
"MasterID": "0",
"dxyw": null,
"sdcl": "1410919",
"bmyzs": "6353",
"rcmzs": "0",
"tgs": "0",
"wsqs": "6447",
"LastDayVisitCount": 0,
"LastDayQACount": 14,
"State3": 490980
}
]
text = text.filter(item => item.Name !== null)
tableData4.value =text
}, 2000)
// region 表格样式
const fontSize = ref(11)
const headerCellStyle = ref({
fontSize: '11px', /* 设置表头字体大小 */
color: '#24D2EE', /* 设置表头字体颜色 */
backgroundColor: '#04144E', /* 设置表头背景颜色 */
height: '60px', /* 设置表头高度 */
padding: '0 0 0 0', /* 设置表头内边距 */
lineHeight: '60px',
});
const tableRowStyle = (row) => {
return {
backgroundColor: '#04144E',
color: "#FFFFFF"
};
};
// 自定义总合行样式
const summaryCellStyle = () => {
return {
backgroundColor: '#04144E',
color: "#FFFFFF"
};
};
// 定义汇总方法
const getSummaries = (param) => {
const {columns, data} = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '总计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += '';
} else {
sums[index] = 'N/A';
}
});
return sums;
};
const calculateSatisfaction = (row) => {
const validCount = row.sdcl || 0 // 有效数
const dissatisfiedCount = row.sbmys || 0 // 不满意数
return validCount - dissatisfiedCount // 返回基本满意数
}
// endregion
</script>
<style lang="scss" scoped>
@import "@/style/datav.scss";
:deep() {
.el-table__footer-wrapper tfoot td.el-table__cell {
background-color: #09256D;
}
.el-scrollbar__wrap--hidden-default {
background-color: #03154D;
}
.el-table .cell {
padding: 0;
text-align: center;
}
}
.dropdown-container {
position: absolute;
right: 30px;
top: 65px;
}
.datav-tab-item {
display: flex;
justify-content: center;
align-items: center;
}
.descriptions_content {
font-size: 22px;
font-weight: 700;
}
.margin-top-30 {
margin-top: 30px;
}
.height-118 {
height: 118px;
}
.custom-footer-row {
background-color: #FB3131;
font-weight: bold;
color: #333;
}
.custom-footer-cell {
text-align: center;
padding: 10px;
}
h3 span {
float: right;
}
h3 {
line-height: 50px;
margin-top: 10px;
margin-bottom: 0px;
}
</style>