Browse Source

Merge remote-tracking branch 'origin/master'

main
kami 1 year ago
parent
commit
2c1f18983d
  1. 2
      package.json
  2. 38
      src/api/data/basicScreen.ts
  3. BIN
      src/assets/images/defaultPhoto.jpg
  4. 8
      src/components/datav/header.vue
  5. 6
      src/router/routes.ts
  6. 29
      src/views/datav/Gobal.vue
  7. 138
      src/views/datav/Jwpy.vue
  8. 2
      src/views/datav/SceneInsp.vue
  9. 46
      src/views/sensitivePerception/RiskPersonnel.vue

2
package.json

@ -35,7 +35,7 @@
"baidu-map-vue3": "^0.4.9", "baidu-map-vue3": "^0.4.9",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
"echarts": "^5.4.3", "echarts": "^5.4.3",
"element-plus": "^2.5.1", "element-plus": "^2.8.8",
"install": "^0.13.0", "install": "^0.13.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.30.1", "moment": "^2.30.1",

38
src/api/data/basicScreen.ts

@ -26,9 +26,47 @@ export function getGobalRecentlyTrendByMonth(year) {
} }
/**
*
* @param year
*/
export function getOrganizationRank(times) {
return request.get({
url: `/datav/dataGobalScreen/getOrganizationRank?beginTime=${times[0]}&endTime=${times[1]}`
});
}
/**
*
* @param year
*/
export function getBusinessRate(times) {
return request.get({
url: `/datav/dataGobalScreen/getBusinessRate?beginTime=${times[0]}&endTime=${times[1]}`
});
}
/**
*
* @param year
*/
export function getStrongProblemRate(times) {
return request.get({
url: `/datav/dataGobalScreen/getStrongProblemRate?beginTime=${times[0]}&endTime=${times[1]}`
});
}
/**
*
* @param year
*/
export function getProblemBusinessRate(times) {
return request.get({
url: `/datav/dataGobalScreen/getProblemBusinessRate?beginTime=${times[0]}&endTime=${times[1]}`
});
}

BIN
src/assets/images/defaultPhoto.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

8
src/components/datav/header.vue

@ -14,14 +14,10 @@
<span>案件核查</span> <span>案件核查</span>
<img :src="isActive ? Img2 : Img1" alt=""/> <img :src="isActive ? Img2 : Img1" alt=""/>
</router-link> </router-link>
<!-- <router-link to="/datav/jwpy" v-slot="{ isActive }">--> <router-link to="/datav/jwpy" v-slot="{ isActive }">
<div @click="goToBaidu">
<router-link to="" v-slot="{ isActive }">
<span>民意感知</span> <span>民意感知</span>
<img :src="Img1" alt=""/> <img :src="isActive ? Img2 : Img1" alt=""/>
</router-link> </router-link>
</div>
</nav> </nav>
<h1> <h1>
<router-link to="/datav/gobal"> <router-link to="/datav/gobal">

6
src/router/routes.ts

@ -52,11 +52,11 @@ export const routes = [
}, },
{ {
path: '/datav/jwpy', path: '/datav/jwpy',
// component: () => import('@/views/datav/Jwpy.vue'), component: () => import('@/views/datav/Jwpy.vue'),
beforeEnter: (to, from, next) => { /* beforeEnter: (to, from, next) => {
window.open('www.baidu.com', '_blank'); window.open('www.baidu.com', '_blank');
next(false); // 阻止路由的正常内部跳转 next(false); // 阻止路由的正常内部跳转
} }*/
}, },
{ {
path: '/datav/lmgz', path: '/datav/lmgz',

29
src/views/datav/Gobal.vue

@ -141,7 +141,12 @@ import changshaMap from "@/assets/data/changsha.json";
import * as echarts from "echarts/core"; import * as echarts from "echarts/core";
import moment from "moment/moment"; import moment from "moment/moment";
import {getCaseVerifData} from "@/api/datav"; import {getCaseVerifData} from "@/api/datav";
import {getAllGobalCount, getGobalRecentlyTrendByMonth} from "@/api/data/basicScreen.ts"; import {
getAllGobalCount,
getBusinessRate,
getGobalRecentlyTrendByMonth,
getOrganizationRank, getProblemBusinessRate, getStrongProblemRate
} from "@/api/data/basicScreen.ts";
// region // region
const activeOrgTab = ref("1"); const activeOrgTab = ref("1");
const fxsjlist = ref([]); // const fxsjlist = ref([]); //
@ -396,28 +401,36 @@ const time = ref([
]); ]);
function getData() { function getData() {
getAllGobalCount(time.value).then((res) => { getOrganizationRank(time.value).then((res) => {
overview.value = res.overview;
fxsjlist.value = res.fxsjlist; fxsjlist.value = res.fxsjlist;
jsdwlist.value = res.jsdwlist; jsdwlist.value = res.jsdwlist;
});
getBusinessRate(time.value).then((res) => {
ywzblist.value = res.ywzblist; ywzblist.value = res.ywzblist;
wtlxlist.value = res.wtlxlist; });
tcwtlist.value = res.tcwtlist; getAllGobalCount(time.value).then((res) => {
overview.value = res.overview;
gobalTempMapVoList = res.gobalTempMapVoList; gobalTempMapVoList = res.gobalTempMapVoList;
}); });
getGobalRecentlyTrendByMonth(new Date().getFullYear()).then((res) => { getGobalRecentlyTrendByMonth(new Date().getFullYear()).then((res) => {
proTrend.value.xAxis.data = res.monthList; proTrend.value.xAxis.data = res.monthList;
proTrend.value.series[0].data = res.totalList; proTrend.value.series[0].data = res.totalList;
}); });
getStrongProblemRate(time.value).then((res) => {
tcwtlist.value = res.tcwtlist;
});
getProblemBusinessRate(time.value).then((res) => {
wtlxlist.value = res.wtlxlist;
});
} }
watch(time, () => { onMounted(() => {
getData(); getData();
}); });
onMounted(() => { watch(time, () => {
getData(); getData();
}); });
const colors = [ const colors = [
{ {
color: "linear-gradient( 270deg, #FB002D 0%, #822232 100%)", color: "linear-gradient( 270deg, #FB002D 0%, #822232 100%)",

138
src/views/datav/Jwpy.vue

@ -93,7 +93,27 @@
</el-container> </el-container>
</div> </div>
</datav-card> </datav-card>
<datav-card title="业务满意率"></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'
>
<el-table-column prop="id" label="单项业务"/>
<el-table-column prop="name" label="有效数"/>
<el-table-column prop="amount1" label="基本满意数"/>
<el-table-column prop="amount2" label="不满意数"/>
<el-table-column prop="amount3" label="满意率"/>
<el-table-column prop="amount3" label="同比"/>
</el-table>
</div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -405,6 +425,61 @@ const option3 = {
} }
}] }]
}; };
const fontSize = ref(11)
const headerCellStyle = ref({
fontSize: '11px', /* 设置表头字体大小 */
color: '#24D2EE', /* 设置表头字体颜色 */
backgroundColor: '#04144E', /* 设置表头背景颜色 */
height: '15px', /* 设置表头高度 */
padding: '0 0 0 0', /* 设置表头内边距 */
});
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;
};
// region // region
const overview = ref({ const overview = ref({
total: 0, total: 0,
@ -485,7 +560,51 @@ const colors = [
}, },
]; ];
const tableData = [
{
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
}, {
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
}, {
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
}, {
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
}, {
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
}, {
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
}, {
id: '12987122',
name: 'Tom',
amount1: '234',
amount2: '3.2',
amount3: 10,
},
]
</script> </script>
@ -519,5 +638,20 @@ const colors = [
height: 118px; height: 118px;
} }
.custom-footer-row {
background-color:#FB3131;
font-weight: bold;
color: #333;
}
.custom-footer-cell {
text-align: center;
padding: 10px;
}
</style> </style>

2
src/views/datav/SceneInsp.vue

@ -472,7 +472,7 @@ const option = ref({
<li>整改中 <span>${dataItem.changing}</span></li> <li>整改中 <span>${dataItem.changing}</span></li>
<li>已整改 <span>${dataItem.changed}</span></li> <li>已整改 <span>${dataItem.changed}</span></li>
<li>涉及单位数 <span>${dataItem.relationOrg}</span></li> <li>涉及单位数 <span>${dataItem.relationOrg}</span></li>
<li>整改率 <span>${dataItem.changedRate}</span></li> <li>整改率 <span>${dataItem.changedRate}%</span></li>
</ul> </ul>
</div> </div>
</div>`; </div>`;

46
src/views/sensitivePerception/RiskPersonnel.vue

@ -146,11 +146,20 @@
</div> </div>
<el-dialog title="风险人员详情" v-model="show" width="80vw" top="2vh"> <el-dialog title="风险人员详情" v-model="show" width="80vw" top="2vh">
<h5>风险人员基本情况</h5>
<el-row> <el-row>
<el-col :span="5"></el-col> <el-col :span="1"></el-col>
<el-col :span="12"> <el-col :span="18">
<div class="row" style="--label-width: 60px">
<div class="col col-8">
<el-col :span="18">
<div class="col col-20">
<div class="person-photo">
<img src="@/assets/images/defaultPhoto.jpg" />
</div>
<div class="row" style="height: 100%">
<div class="col col-6">
<label>姓名</label> <label>姓名</label>
<span>{{ activeRow.name }}</span> <span>{{ activeRow.name }}</span>
</div> </div>
@ -158,15 +167,27 @@
<label>性别</label> <label>性别</label>
<span>{{ getGender(activeRow.gender) }}</span> <span>{{ getGender(activeRow.gender) }}</span>
</div> </div>
<div class="col col-8"> <div class="col col-10">
<label>身份证号</label> <label>身份证号</label>
<span>{{ activeRow.idCode }}</span> <span>{{ activeRow.idCode }}</span>
</div> </div>
<div class="col col-8"> <div class="row" style="width: 100%">
<div class="col col-6">
<label>年龄</label> <label>年龄</label>
<span>{{ activeRow.age }}</span> <span>{{ activeRow.age }}</span>
</div> </div>
<div class="col col-8">
<label>管控单位</label>
<span>{{ activeRow.controlDepartName }}</span>
</div>
<div class="col col-10">
<label>电话</label>
<span>{{ activeRow.mobileNumber }}</span>
</div>
</div> </div>
</div>
</div>
</el-col>
</el-col> </el-col>
<el-col :span="5"> <el-col :span="5">
<div class="flex center column text-center"> <div class="flex center column text-center">
@ -179,9 +200,7 @@
</el-row> </el-row>
<div style="min-height: 50vh"> <div style="min-height: 50vh">
<div v-for="(item, index) in personal.riskClueList" :key="index"> <div v-for="(item, index) in personal.riskClueList" :key="index">
<div> <h5>{{ item.riskName }}</h5>
<span class="text-primary">{{ item.riskName }}</span>
</div>
<el-table :data="item.clues" max-height="300"> <el-table :data="item.clues" max-height="300">
<el-table-column <el-table-column
label="发生时间" label="发生时间"
@ -468,4 +487,13 @@ function getGender(val) {
font-size: 124px; font-size: 124px;
color: #fff; color: #fff;
} }
.person-photo {
text-align: center;
margin-bottom: 10px;
}
.person-photo img {
max-height: 100%;
width: 200px;
}
</style> </style>

Loading…
Cancel
Save