根据学历层次更改

This commit is contained in:
张宁 2024-06-28 15:51:37 +08:00
parent 0a351689d7
commit 25c187186f
9 changed files with 99 additions and 56 deletions

View File

@ -36,8 +36,10 @@ export const useDataStore = defineStore("data", () => {
// 当日预报到报到率
const forecastRate = computed(() => {
forecast.value.reported / forecast.value.total;
(forecast.value.reported / forecast.value.total) * 100;
});
console.log('预报到=====>',forecastRate);
// 当日预报到总人数报到率
const totalRate = computed(() => {
totalDto.value.reportNumber / totalDto.value.totalNumber;

View File

@ -51,6 +51,7 @@ const getAdminPCIndex = (params: any) => {
*/
const payData = () => {
let params: any = {
"CandidateCategory":0,
"EducationalLevel": 3,
"Year": myDate.value.year || void 0,
"Month": myDate.value.month || void 0,
@ -63,7 +64,7 @@ const payData = () => {
dataStore.setBkPay(bk)
dataStore.setZkPay(zk)
dataStore.setZsbPay(zsb)
dataStore.setTotalPay(res.data.todayPayDto.batchTodayPays?.payNum)
dataStore.setTotalPay(res.data.todayPayDto?.payNum)
})
}
@ -87,6 +88,7 @@ const getDate = (val: any) => {
timeStore.setMounths(val.month)
timeStore.setDays(val.day)
let params = {
"CandidateCategory":0,
"Year": val.year || void 0,
"Month": val.month || void 0,
"Day": val.day || void 0,

View File

@ -9,9 +9,9 @@ import chinaJson from "@/utils/china.json";
import * as echarts from 'echarts';
const myChart = ref()
const getMapChart = (data) => {
// data.forEach((item) => {
// item.value = item.num1 + item.num2 + item.num3
// })
data.forEach((item) => {
item.value = item?.num1 + item?.num2 + item?.num3
})
myChart.value = echarts.init(document.getElementById("mapChart"));
// jsonchina
echarts.registerMap("china", chinaJson);
@ -27,11 +27,11 @@ const getMapChart = (data) => {
formatter: function (params) { // tooltip
var html = '<div style="width:180px;background:rgba(0, 0, 0, .5); font-size: 20px;">';
html += '<span style="display:block;width:100%;text-align:left;padding:10px 10px 5px 14px; color: #ffffff;border-bottom:1px solid #fff;">' + (params.name) + '</span>'; //
html += '<span style="margin:3px 0 0 0;padding:20px 0 5px 14px ;display:block;width:100%;color: rgba(255, 255, 255, 0.68);font-size: 16px;">' + '统招本科:' + (params.num3 || 0) + '</span>'; //
html += '<span style="margin:0;padding:5px 0 5px 14px ;display:block;width:100%;padding-left:14px;color: rgba(255, 255, 255, 0.68);font-size: 16px;">' + '统招专科:' + (params.num1 || 0) + '</span>'; //
html += '<span style="margin:3px 0 0 0;padding:20px 0 5px 14px ;display:block;width:100%;color: rgba(255, 255, 255, 0.68);font-size: 16px;">' + '统招本科:' + (params.data?.num3 || 0) + '</span>'; //
html += '<span style="margin:0;padding:5px 0 5px 14px ;display:block;width:100%;padding-left:14px;color: rgba(255, 255, 255, 0.68);font-size: 16px;">' + '统招专科:' + (params.data?.num1 || 0) + '</span>'; //
// html += '<span style="margin:0;padding:0;display:block;width:100%;padding-left:14px;color: #fff;font-size: 12px;">'+'' + (params.data.num2 || 0) + '</span>'; //
// if (params.num2) {
html += '<span style="margin:0;padding:5px 0 20px 14px;display:block;width:100%;color: rgba(255, 255, 255, 0.68);font-size: 16px;">' + '统招专升本:' + (params.num2 || 0) + '</span>';
html += '<span style="margin:0;padding:5px 0 20px 14px;display:block;width:100%;color: rgba(255, 255, 255, 0.68);font-size: 16px;">' + '统招专升本:' + (params.data?.num2 || 0) + '</span>';
// }
html += '</div>';
return html;
@ -81,12 +81,13 @@ const getMapChart = (data) => {
lt: 40,
label: "20 - 40人",
color: "#81b1ff"
}, {
},{
gte: 0,
lt: 20,
label: "0 - 20人",
color: "#b3d0ff"
}],
}
],
show: true
},
geo: {

View File

@ -5,8 +5,7 @@ const { computDate } = storeToRefs(timeStore)
import { ElMessage } from "element-plus";
import { useDataStore } from "@/stores/index";
const dataStore = useDataStore();
const { today, forecastRate, totalRate } = storeToRefs(dataStore)
const { today, forecastRate, totalRate,forecast } = storeToRefs(dataStore)
</script>
<template>
@ -30,7 +29,7 @@ const { today, forecastRate, totalRate } = storeToRefs(dataStore)
<div class="top-item-content">{{ today.forecastStuden ?? '0' }}</div>
</div>
</div>
<div class="top-item-img">
<!-- <div class="top-item-img">
<div class="top-item-icon">
<img src="@/assets/img/zheke/center_top2.png">
</div>
@ -38,7 +37,7 @@ const { today, forecastRate, totalRate } = storeToRefs(dataStore)
<div class="top-item-title">{{ computDate }}预报到报到率</div>
<div class="top-item-content"> {{ forecastRate ?? '0' }}% </div>
</div>
</div>
</div> -->
<!-- <div class="top-item-img">
@ -57,12 +56,17 @@ const { today, forecastRate, totalRate } = storeToRefs(dataStore)
.center-top {
width: 100%;
display: flex;
justify-content: space-between;
//justify-content: space-between;
justify-content: center;
.top-item-img {
display: flex;
flex-direction: row;
}
.top-item-img:first-child{
margin-right: 120px;
}
.top-item {
display: flex;

View File

@ -24,6 +24,8 @@ const { allData, rankingDto, collageId, professionRank } = storeToRefs(dataStore
const rightCenterRef: any = ref(null)
const mapRef: any = ref(null)
const rbRef: any = ref(null)
const tableData = ref()
const showRight = ref(true)
const changeRight = () => {
@ -44,19 +46,25 @@ const dealMapData = (data: any) => {
tableData.value = data.provinceDto?.map((item: any) => {
return {
name: item.provinceName,
zk: item.degreesDto[0].paymentCompleted + item.degreesDto[0].nonPayment,
// zk: item.degreesDto[0].paymentCompleted + item.degreesDto[0].nonPayment,
// zsb:item.degreesDto[1].paymentCompleted+ '/'+(item.degreesDto[1].paymentCompleted+item.degreesDto[1].nonPayment),
bk: item.degreesDto[2].paymentCompleted + item.degreesDto[2].nonPayment,
zkrate: divideAndFormat(item.degreesDto[0].paymentCompleted, item.degreesDto[0].paymentCompleted + item.degreesDto[0].nonPayment),
bkrate: divideAndFormat(item.degreesDto[2].paymentCompleted, item.degreesDto[2].paymentCompleted + item.degreesDto[2].nonPayment),
zbdrate: divideAndFormat(item.degreesDto[0].paymentCompleted + item.degreesDto[2].paymentCompleted, item.degreesDto[0].paymentCompleted + item.degreesDto[0].nonPayment + item.degreesDto[2].paymentCompleted + item.degreesDto[2].nonPayment),
num1: item.degreesDto[0].paymentCompleted,
num2: item.degreesDto[1].paymentCompleted,
num3: item.degreesDto[2].paymentCompleted,
reported: item.degreesDto[0].paymentCompleted + item.degreesDto[2].paymentCompleted,
AdmissionNum: item.degreesDto[0].paymentCompleted + item.degreesDto[0].nonPayment + item.degreesDto[2].paymentCompleted + item.degreesDto[2].nonPayment
// bk: item.degreesDto[2].paymentCompleted + item.degreesDto[2].nonPayment,
zk: findDegree(item.degreesDto, '统招专科').paymentCompleted + findDegree(item.degreesDto, '统招专科').nonPayment,
zsb: findDegree(item.degreesDto, '统招专升本').paymentCompleted + findDegree(item.degreesDto, '统招专升本').nonPayment,
bk: findDegree(item.degreesDto, '统招本科').paymentCompleted + findDegree(item.degreesDto, '统招本科').nonPayment,
zkrate: divideAndFormat(findDegree(item.degreesDto, '统招专科').paymentCompleted, findDegree(item.degreesDto, '统招专科').paymentCompleted + findDegree(item.degreesDto, '统招专科').nonPayment),
bkrate: divideAndFormat(findDegree(item.degreesDto, '统招本科').paymentCompleted, findDegree(item.degreesDto, '统招本科').paymentCompleted + findDegree(item.degreesDto, '统招本科').nonPayment),
zbdrate: divideAndFormat(findDegree(item.degreesDto, '统招专科').paymentCompleted + findDegree(item.degreesDto, '统招本科').paymentCompleted, findDegree(item.degreesDto, '统招专科').paymentCompleted + findDegree(item.degreesDto, '统招专科').nonPayment + findDegree(item.degreesDto, '统招本科').paymentCompleted + findDegree(item.degreesDto, '统招本科').nonPayment),
num1: findDegree(item.degreesDto, '统招专科')?.paymentCompleted,
num2: findDegree(item.degreesDto, '统招专升本')?.paymentCompleted,
num3: findDegree(item.degreesDto, '统招本科')?.paymentCompleted,
reported: findDegree(item.degreesDto, '统招专科')?.paymentCompleted + findDegree(item.degreesDto, '统招专升本')?.paymentCompleted + findDegree(item.degreesDto, '统招本科')?.paymentCompleted,
AdmissionNum: findDegree(item.degreesDto, '统招专科').paymentCompleted + findDegree(item.degreesDto, '统招专科').nonPayment + findDegree(item.degreesDto, '统招本科').paymentCompleted + findDegree(item.degreesDto, '统招本科').nonPayment
}
})
tableData.value?.sort((a: any, b: any) => {
return b.reported - a.reported
})
tableData.value?.forEach((item: any, index: any) => {
item.sort = index + 1
item.sort = item.sort < 10 ? "0" + item.sort : item.sort;
@ -64,11 +72,9 @@ const dealMapData = (data: any) => {
item.zbdrate = '0%'
}
})
tableData.value.sort((a: any, b: any) => {
return a.zbdrate - b.zbdrate
})
}
const divideAndFormat = (divisor: any, dividend: any) => {
if (dividend === 0) {
return "0.0%";
@ -77,6 +83,12 @@ const divideAndFormat = (divisor: any, dividend: any) => {
let result = (divisor / dividend) * 100;
return result.toFixed(1) + "%";
}
const findDegree = (degreesDto: any, degree: string) => {
return degreesDto.find(d => d.degreesName === degree)
}
const rbtwoRef: any = ref(null)
const getProfession = () => {
let params = {
@ -103,6 +115,7 @@ watch(collageId, () => {
*/
const getAdminPCIndex = () => {
let params = {
"CandidateCategory": 0,
"Year": years.value,
"Month": months.value || null,
"Day": days.value || null
@ -115,6 +128,9 @@ const getAdminPCIndex = () => {
if (mapRef) {
mapRef.value.getMapChart(tableData.value)
}
if (rbRef) {
rbRef.value.rankProvince(tableData.value)
}
});
})
};
@ -161,6 +177,7 @@ const getAdminPCIndex = () => {
*/
const payData = () => {
let params: any = {
"CandidateCategory": 0,
"EducationalLevel": 3,
"Year": years.value,
"Month": months.value || void 0,
@ -173,7 +190,7 @@ const payData = () => {
dataStore.setBkPay(bk)
dataStore.setZkPay(zk)
dataStore.setZsbPay(zsb)
dataStore.setTotalPay(res.data.todayPayDto.batchTodayPays?.payNum)
dataStore.setTotalPay(res.data.todayPayDto?.payNum)
setTimeout(() => {
if (rightCenterRef) {
rightCenterRef.value.getData()
@ -226,7 +243,7 @@ onMounted(() => {
<RightCenter ref="rightCenterRef" />
</zkItem>
<zkItem class="contetn_left-bottom contetn_rb-item" title="报到人数区域排名 ">
<RightBottom />
<RightBottom ref="rbRef"/>
</zkItem>
</div>
<div class="contetn_right" v-if="!showRight">

View File

@ -1,13 +1,15 @@
<script setup lang="ts">
import { useDataStore } from "@/stores/index";
import { useDataStore,useTimeStore } from "@/stores/index";
const dataStore = useDataStore();
const { degreeDto } = storeToRefs(dataStore)
const timeStore = useTimeStore()
const { nowTitle } = storeToRefs(timeStore)
const rate = (total: any, registers: any) => {
return ((registers / total) * 100).toFixed(1)
}
const bkRate = computed(() => {
if (degreeDto.value?.length ) {
const datas = degreeDto.value.filter((item:any) => item.degree === "统招本科");
const datas = degreeDto.value.filter((item:any) => item.degree === "统招本科")[0];
return rate(datas.studentNumber, datas.reportNumber)
} else {
return 0
@ -15,7 +17,7 @@ const bkRate = computed(() => {
})
const zkRate = computed(() => {
if (degreeDto.value?.length) {
const datas = degreeDto.value.filter((item:any) => item.degree === "统招专科");
const datas = degreeDto.value.filter((item:any) => item.degree === "统招专科")[0];
return rate(datas.studentNumber, datas.reportNumber)
} else {
return 0
@ -24,7 +26,7 @@ const zkRate = computed(() => {
const zsbRate = computed(() => {
if (degreeDto.value?.length) {
const datas = degreeDto.value.filter((item:any) => item.degree === "统招专升本");
const datas = degreeDto.value.filter((item:any) => item.degree === "统招专升本")[0];
return rate(datas.studentNumber, datas.reportNumber)
} else {
return 0
@ -49,7 +51,7 @@ const zsbRate = computed(() => {
<div class="right-title title-top item-title">报到率
<span class="title-num numBlue">{{ isNaN(bkRate) ? '0' : bkRate }}%</span>
</div>
<p class="item-title">今日报到人数</p>
<p class="item-title">{{nowTitle}}报到人数</p>
<p class="item-content numBlue">{{ degreeDto[2]?degreeDto[2].reportNumber:'0' }}</p>
</div>
</div>
@ -69,7 +71,7 @@ const zsbRate = computed(() => {
<div class="right-title title-top item-title">报到率
<span class="title-num numGreen">{{ isNaN(zkRate) ? '0' : zkRate }}%</span>
</div>
<p class="item-title">今日报到人数</p>
<p class="item-title">{{nowTitle}}报到人数</p>
<p class="item-content numGreen">{{ degreeDto[0]?degreeDto[0].reportNumber:'0' }}</p>
</div>
</div>
@ -89,7 +91,7 @@ const zsbRate = computed(() => {
<div class="right-title title-top item-title">报到率
<span class="title-num numGrey">{{ isNaN(zsbRate) ? '0' : zsbRate }}%</span>
</div>
<p class="item-title">今日报到人数</p>
<p class="item-title">{{nowTitle}}报到人数</p>
<p class="item-content numGrey">{{ degreeDto[1]?degreeDto[1].reportNumber:'0' }}</p>
</div>
</div>

View File

@ -1,14 +1,12 @@
<script setup lang="ts">
import { useDataStore } from "@/stores/index";
const dataStore = useDataStore();
const { totalDto } = storeToRefs(dataStore)
// +
const totalReport = computed(() => {
return (totalDto.value.reportNumber + totalDto.value.notReportNumber)
})
const { totalDto,forecast } = storeToRefs(dataStore)
// forecast.total
// /
const progress = computed(() => {
return ((totalDto.value.reportNumber / totalReport.value) * 100).toFixed(1)
return ((totalDto.value.reportNumber / totalDto.value.totalNumber) * 100).toFixed(1)
});
@ -39,7 +37,7 @@ const progress = computed(() => {
<div class="left-bottom">
<div class="bottom-item">
<div class="bottom-item-title">预报到总人数</div>
<div class="bottom-item-content"> {{ isNaN(totalReport) ? '0' : totalReport }} </div>
<div class="bottom-item-content"> {{ forecast.total ?? '0' }} </div>
</div>
<div class="bottom-item">
<div class="bottom-item-title">录取总人数</div>

View File

@ -46,7 +46,7 @@ const option = reactive({
data: yData,
type: "bar",
smooth: false,
name: "缴费人数",
name: "已报到人数",
color: "#2265ff",
label: {
show: true, //

View File

@ -13,6 +13,15 @@ import { useDataStore } from "@/stores/index";
const dataStore = useDataStore();
const { provinceDto } = storeToRefs(dataStore)
const rankProvinceData:any = ref([])
const rankProvince = (data: any) => {
console.log('data=====>', data);
rankProvinceData.value = data
}
const findDegree = (degree: any, name: string) => {
return degree.find((i: any) => i.degreesName == name)
}
const state = reactive<any>({
list: [],
@ -21,11 +30,12 @@ const state = reactive<any>({
singleHeight: 205, //
limitScrollNum: 3,
// singleWaitTime:3000, //
step:1 //
step: 1 //
},
scroll: true,
});
const comName = computed(() => {
if (indexConfig.value.rightBottomSwiper) {
return SeamlessScroll;
@ -33,6 +43,8 @@ const comName = computed(() => {
return EmptyCom;
}
});
defineExpose({ rankProvince })
</script>
<template>
@ -41,20 +53,23 @@ const comName = computed(() => {
<div class="table-title">
<div class="title-item">排名</div>
<div class="title-item">省份/地市 </div>
<div class="title-item">本科</div>
<div class="title-item">专科</div>
<div class="title-item">专升本</div>
<div class="title-item">统招本科</div>
<div class="title-item">统招专科</div>
<div class="title-item">统招专升本</div>
</div>
<div class="right_bottom_wrap" :class="{ 'overflow-y-auto': true }">
<!-- <component :is="comName" :list="state.list" v-model="state.scroll"
:singleHeight="state.defaultOption.singleHeight" :step="state.defaultOption.step"
:limitScrollNum="state.defaultOption.limitScrollNum" :hover="state.defaultOption.hover"
:singleWaitTime="state.defaultOption.singleWaitTime" :wheel="state.defaultOption.wheel"> -->
<div class="table-row" v-for="(item, i) in provinceDto">
<div class="row-item">{{ i + 1 }}</div>
<div class="row-item">{{ item.provinceName }}</div>
<div class="row-item" v-for="(peo) in item.degreesDto">{{ peo.paymentCompleted }}</div>
</div>
<div class="table-row" v-for="(item, i) in rankProvinceData">
<div class="row-item">{{ item.sort }}</div>
<div class="row-item">{{ item.name }}</div>
<div class="row-item">{{ item.num3 }}</div>
<div class="row-item">{{ item.num1 }}</div>
<div class="row-item">{{ item.num2 }}</div>
</div>
<!-- </component> -->
</div>
</div>
@ -92,8 +107,9 @@ const comName = computed(() => {
border-top: 1px solid #33343F;
line-height: 50px;
margin-bottom: 2px;
color:#E6E6FB;
&:hover{
color: #E6E6FB;
&:hover {
background: repeating-linear-gradient(0deg, #0042b3 0%, #0049ca 50%, #0042b3 100%);
}
@ -110,6 +126,7 @@ const comName = computed(() => {
.overflow-y-auto {
overflow-y: auto;
}
::-webkit-scrollbar {
width: 0px;
}