完善一下

This commit is contained in:
张宁 2024-06-04 09:36:00 +08:00
parent 0efc8516d1
commit 95b98b5fa1
12 changed files with 332 additions and 292 deletions

View File

@ -1,6 +1,14 @@
/*
* @Author: 18339727226@163.com
* @Date: 2024-05-22 08:40:55
* @LastEditors: 18339727226@163.com
* @LastEditTime: 2024-06-03 13:59:14
* @FilePath: \welcome-system-screen\src\api\api.ts
* @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
/* /*
* @LastEditors: 18339727226@163.com * @LastEditors: 18339727226@163.com
* @LastEditTime: 2024-05-30 09:15:55 * @LastEditTime: 2024-06-03 11:39:31
*/ */
import axios from "axios"; import axios from "axios";
import type { AxiosRequestConfig, AxiosResponse } from "axios"; import type { AxiosRequestConfig, AxiosResponse } from "axios";
@ -51,19 +59,30 @@ axios.interceptors.response.use(
if (response.status !== 200) { if (response.status !== 200) {
return Promise.reject(response); return Promise.reject(response);
} }
/** /**
* @code token验证失败 * @code token验证失败 -----
*/ */
if (response.data.code == UtilVar.code) { /* if (response.data.code == UtilVar.code) {
// router.push("/login") // router.push("/login")
// window.location.href = 'http://nclg.yx.zheke.com/#/login'; window.location.href = 'http://nclg.yx.zheke.com/#/login';
return Promise.resolve(response); return Promise.resolve(response);
} } */
return Promise.resolve(response); return Promise.resolve(response);
}, },
(error: any) => { (error: any) => {
console.log("error", error); console.log("error", error);
/**
* @code token验证失败
*/
if (error.response.status == UtilVar.code) {
// router.push("/login")
// 目前放测试地址 发布后放到正是地址---待修改
window.location.href = 'http://nclg.yx.zheke.com/#/login';
return Promise.resolve(response);
}
let err = { let err = {
success: false, success: false,
msg: "未知异常,请联系管理员!", msg: "未知异常,请联系管理员!",

View File

@ -2,49 +2,43 @@
<div id="chart" style="width: 150%;height: 150%;"> <div id="chart" style="width: 150%;height: 150%;">
</div> </div>
<!-- <v-chart class="chart" :option="option" /> -->
</template> </template>
<script> <script setup lang="ts" name="chart">
import * as echarts from 'echarts'; import * as echarts from 'echarts';
export default {
name: 'chart',
data() { const myChart = ref(null)
return { const chartMax = ref(null)
myChart: null, const chartValues = ref(null)
}; const chartRate = ref(null)
},
mounted() { onMounted(() => {
// window.addEventListener('resize',()=>{this.resize();getRem(1920,100)}) // window.addEventListener('resize',()=>{this.resize();getRem(1920,100)})
this.init() // init()
},
beforeDestroy() {
// window.removeEventListener('resize',this.resize)
},
methods: {
// resize(){
// this.myChart.resize();
// },
init(max, value) {
var max = max?max:100;
var value = value?value:0;
var rate = 0
if (max && value) {
rate = (value / max * 100).toFixed(1)
}
if (rate === "100.0") {
rate = "100"; // 100
}
var chartDom = document.getElementById('chart'); var chartDom = document.getElementById('chart');
this.myChart = echarts.init(chartDom); myChart.value = echarts.init(chartDom);
// window.onresize = this.myChart.resize; })
var option; onBeforeUnmount(() => {
// window.removeEventListener('resize',this.resize)
option = { })
const resize = () => {
myChart.resize();
}
const init = (max, value) => {
chartMax.value = max ? max : 100;
chartValues.value = value ? value : 0;
chartRate.value = 0
if (chartMax && chartValues) {
chartRate.value = (chartValues.value / chartMax.value * 100).toFixed(1)
}
if (chartRate.value === "100.0") {
chartRate.value = "100"; // 100
}
let option = {
title: { title: {
text: (rate || '0.0') + '%', text: (chartRate.value || '0.0') + '%',
x: 'center', x: 'center',
y: '20%', y: '20%',
textStyle: { textStyle: {
@ -71,7 +65,7 @@ export default {
show: false, show: false,
}, },
min: 0, min: 0,
max: max, max: chartMax.value,
startAngle: 60, startAngle: 60,
}, },
radiusAxis: { radiusAxis: {
@ -94,7 +88,7 @@ export default {
series: [ series: [
{ {
type: 'bar', type: 'bar',
data: [{ name: '预报到填写报到人数', value: value }], data: [{ name: '预报到填写报到人数', value: chartValues.value }],
startAngle: 225, startAngle: 225,
z: 1, z: 1,
coordinateSystem: 'polar', coordinateSystem: 'polar',
@ -116,7 +110,7 @@ export default {
}, },
{ {
type: 'bar', type: 'bar',
data: [max], data: [chartMax.value],
z: 0, z: 0,
silent: true, silent: true,
coordinateSystem: 'polar', coordinateSystem: 'polar',
@ -126,11 +120,12 @@ export default {
barGap: '-100%', barGap: '-100%',
}, },
], ],
};
option && this.myChart.setOption(option);
} }
}, myChart.value.setOption(option);
}; }
defineExpose({ init })
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View File

@ -4,48 +4,35 @@
</div> </div>
</template> </template>
<script> <script setup lang="ts" name="pieChart">
import * as echarts from 'echarts'; import * as echarts from 'echarts';
export default { const myChart = ref(null)
name: 'pieChart', const chartMax = ref(null)
const chartValues = ref(null)
const chartRate = ref(null)
data() { onMounted(() => {
return {
myChart: null,
};
},
mounted() {
// window.addEventListener('resize',()=>{this.resize();getRem(1920,100)}) // window.addEventListener('resize',()=>{this.resize();getRem(1920,100)})
this.init()
},
beforeDestroy() {
// window.removeEventListener('resize',this.resize)
},
methods: {
// resize(){
// this.myChart.resize();
// },
init(max, value) {
var max = max?max:100;
var value = value?value:0;
var rate = 0
if (max && value) {
rate = (value / max * 100).toFixed(1)
}
if (rate === "100.0") {
rate = "100"; // 100
}
var chartDom = document.getElementById('pieChart'); var chartDom = document.getElementById('pieChart');
this.myChart = echarts.init(chartDom); myChart.value = echarts.init(chartDom);
// window.onresize = this.myChart.resize; })
var option; // resize(){
// this.myChart.resize();
// },
const init=(max, value) =>{
option = { chartMax.value = max ? max : 100;
chartValues.value = value ? value : 0;
if (chartMax && chartValues) {
chartRate.value = (chartValues.value / chartMax.value * 100).toFixed(1)
}
if (chartRate.value === "100.0") {
chartRate.value = "100"; // 100
}
let option = {
title: { title: {
text: (rate || '0.0') + '%', text: (chartRate.value || '0.0') + '%',
x: 'center', x: 'center',
y: '20%', y: '20%',
textStyle: { textStyle: {
@ -72,7 +59,7 @@ export default {
show: false, show: false,
}, },
min: 0, min: 0,
max: max, max: chartMax.value,
startAngle: 60, startAngle: 60,
}, },
radiusAxis: { radiusAxis: {
@ -95,7 +82,7 @@ export default {
series: [ series: [
{ {
type: 'bar', type: 'bar',
data: [{ name: '预报到填写人数', value: value }], data: [{ name: '预报到填写报到人数', value: chartValues.value }],
startAngle: 225, startAngle: 225,
z: 1, z: 1,
coordinateSystem: 'polar', coordinateSystem: 'polar',
@ -117,7 +104,7 @@ export default {
}, },
{ {
type: 'bar', type: 'bar',
data: [max], data: [chartMax.value],
z: 0, z: 0,
silent: true, silent: true,
coordinateSystem: 'polar', coordinateSystem: 'polar',
@ -127,11 +114,10 @@ export default {
barGap: '-100%', barGap: '-100%',
}, },
], ],
};
option && this.myChart.setOption(option);
} }
}, option && myChart.value.setOption(option);
}; }
defineExpose({init})
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View File

@ -3,13 +3,18 @@ interface UtilVarType {
code:string|number, code:string|number,
noContentCode:number, noContentCode:number,
ENC:boolean,//是否进行加密 ENC:boolean,//是否进行加密
errCode:string|number,
notAllow:string|number
} }
// 这里放的是测试地址,发布后改为正式地址 ---- 待修改
const UtilVar:UtilVarType = { const UtilVar:UtilVarType = {
baseUrl:"http://api.nclg.yx.zheke.com", baseUrl:"http://api.nclg.yx.zheke.com",
code:401, //登陆过期 code:401, //登陆过期
noContentCode:204, //请求成功但没有内容 noContentCode:204, //请求成功但没有内容
ENC:false, ENC:false,
errCode:'ERR_BAD_REQUEST',
notAllow:403
} }
const runtimeType:any = { const runtimeType:any = {

View File

@ -2,7 +2,7 @@
* @Author: 18339727226@163.com * @Author: 18339727226@163.com
* @Date: 2024-05-27 08:45:53 * @Date: 2024-05-27 08:45:53
* @LastEditors: 18339727226@163.com * @LastEditors: 18339727226@163.com
* @LastEditTime: 2024-05-31 16:39:38 * @LastEditTime: 2024-06-04 09:34:13
* @FilePath: \welcome-system-screen\src\stores\time\time.ts * @FilePath: \welcome-system-screen\src\stores\time\time.ts
* @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@ -34,6 +34,14 @@ export const useDataStore = defineStore("data", () => {
const today=computed(() => allData.value.today); const today=computed(() => allData.value.today);
const totalDto=computed(() => allData.value.totalDto); const totalDto=computed(() => allData.value.totalDto);
// 当日预报到报到率
const forecastRate = computed(() => {
forecast.value.reported / forecast.value.total
});
// 当日预报到总人数报到率
const totalRate = computed(() => {
totalDto.value.reportNumber / totalDto.value.totalNumber
});
// 选中的学院id // 选中的学院id
const collageId = ref() const collageId = ref()
@ -70,5 +78,5 @@ export const useDataStore = defineStore("data", () => {
}; };
return { allData,degreeDto,forecast,forecastFill,nationStudent,payDto,provinceDto,rankingDto,sexDto,today,totalDto,setData,bkPay,zkPay,zsbPay,setBkPay,setZkPay,setZsbPay,setCollageId,collageId,professionRank,setProfessionRank}; return { allData,degreeDto,forecast,forecastFill,nationStudent,payDto,provinceDto,rankingDto,sexDto,today,totalDto,setData,bkPay,zkPay,zsbPay,setBkPay,setZkPay,setZsbPay,setCollageId,collageId,professionRank,setProfessionRank,forecastRate,totalRate};
}); });

View File

@ -2,7 +2,7 @@
* @Author: 18339727226@163.com * @Author: 18339727226@163.com
* @Date: 2024-05-27 08:45:53 * @Date: 2024-05-27 08:45:53
* @LastEditors: 18339727226@163.com * @LastEditors: 18339727226@163.com
* @LastEditTime: 2024-05-31 15:32:52 * @LastEditTime: 2024-06-03 09:15:30
* @FilePath: \welcome-system-screen\src\stores\time\time.ts * @FilePath: \welcome-system-screen\src\stores\time\time.ts
* @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: ,`customMade`, koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@ -35,14 +35,14 @@ export const useTimeStore = defineStore("time", () => {
} }
// 根据年、月、日的切换,展示不同的标题 --- 具体问问产品怎么展示 -----待修改 // 根据年、月、日的切换,展示不同的标题 --- 具体问问产品怎么展示 -----待修改
const computDate = computed(() => { const computDate = computed(() => {
let dates = '日' let dates = '日'
if (years.value) { if (years.value) {
dates = years.value + '年' dates = years.value + '年'
if (months.value) { if (months.value) {
dates += months.value + '月' dates += months.value + '月'
}if (days.value) {
dates = '当日'
} }
} else {
dates = '今日'
} }
return dates return dates
}) })
@ -52,10 +52,10 @@ export const useTimeStore = defineStore("time", () => {
titles = '当年' titles = '当年'
if(months.value) { if(months.value) {
titles = '当月' titles = '当月'
} }if (days.value) {
}else{
titles = '当日' titles = '当日'
} }
}
return titles return titles
}) })

View File

@ -57,10 +57,10 @@ const myDate = ref({
// || || // || ||
const getDate = (val: any) => { const getDate = (val: any) => {
myDate.value = val myDate.value = val
/* // 根据年日的切换展示不同的标题 --- 具体问问产品怎么展示 -----待修 // --- -----
timeStore.setYears(val.year) timeStore.setYears(val.year)
timeStore.setMounths(val.month) timeStore.setMounths(val.month)
timeStore.setDays(val.day) */ timeStore.setDays(val.day)
let params = { let params = {
"Year":val.year || void 0, "Year":val.year || void 0,
"Month":val.month || void 0, "Month":val.month || void 0,

View File

@ -2,7 +2,7 @@
* @Author: 张宁 18339727226@163.com * @Author: 张宁 18339727226@163.com
* @Date: 2024-05-22 08:40:56 * @Date: 2024-05-22 08:40:56
* @LastEditors: 张宁 18339727226@163.com * @LastEditors: 张宁 18339727226@163.com
* @LastEditTime: 2024-05-31 14:53:27 * @LastEditTime: 2024-06-04 09:34:34
* @FilePath: \welcome-system-screen\src\views\index\center-top.vue * @FilePath: \welcome-system-screen\src\views\index\center-top.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
@ -13,7 +13,7 @@ const { computDate } = storeToRefs(timeStore)
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useDataStore } from "@/stores/index"; import { useDataStore } from "@/stores/index";
const dataStore = useDataStore(); const dataStore = useDataStore();
const { today } = storeToRefs(dataStore) const { today, forecastRate,totalRate } = storeToRefs(dataStore)
</script> </script>
@ -25,17 +25,17 @@ const { today } = storeToRefs(dataStore)
</div> </div>
<div class="top-item"> <div class="top-item">
<div class="top-item-title">{{ computDate }}迎新人数</div> <div class="top-item-title">{{ computDate }}迎新人数</div>
<div class="top-item-content">{{ today.nowStuden??'-' }}</div> <div class="top-item-content">{{ today.nowStuden ?? '0' }}</div>
</div> </div>
</div> </div>
<div class="top-item"> <div class="top-item">
<div class="top-item-title">{{ computDate }}预报到人数</div> <div class="top-item-title">{{ computDate }}预报到人数</div>
<div class="top-item-content">{{ today.forecastStuden??'-' }}</div> <div class="top-item-content">{{ today.forecastStuden ?? '0' }}</div>
</div> </div>
<div class="top-item"> <div class="top-item">
<div class="top-item-title">{{ computDate }}预报到报到率</div> <div class="top-item-title">{{ computDate }}预报到报到率</div>
<div class="top-item-content"> 95% </div> <div class="top-item-content"> {{ forecastRate ?? '0' }}% </div>
</div> </div>
<div class="top-item-img"> <div class="top-item-img">
<div class="top-item-icon"> <div class="top-item-icon">
@ -43,7 +43,7 @@ const { today } = storeToRefs(dataStore)
</div> </div>
<div class="top-item"> <div class="top-item">
<div class="top-item-title">预报到总人数报到率</div> <div class="top-item-title">预报到总人数报到率</div>
<div class="top-item-content"> 95% </div> <div class="top-item-content"> {{totalRate ?? '0'}}% </div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -21,15 +21,15 @@ import { useDataStore } from "@/stores/index";
const dataStore = useDataStore(); const dataStore = useDataStore();
const { allData, rankingDto, collageId, professionRank } = storeToRefs(dataStore) const { allData, rankingDto, collageId, professionRank } = storeToRefs(dataStore)
const rightCenterRef = ref(null) const rightCenterRef: any = ref(null)
const mapRef = ref(null) const mapRef: any = ref(null)
const tableData = ref() const tableData = ref()
const showRight = ref(true) const showRight = ref(true)
const changeRight = () => { const changeRight = () => {
showRight.value = !showRight.value showRight.value = !showRight.value
if (!showRight.value && rbtwoRef) { if (!showRight.value && rbtwoRef) {
setTimeout(()=>{ setTimeout(() => {
rbtwoRef.value.getData(professionRank.value) rbtwoRef.value.getData(professionRank.value)
}) })
@ -77,7 +77,7 @@ const divideAndFormat = (divisor: any, dividend: any) => {
let result = (divisor / dividend) * 100; let result = (divisor / dividend) * 100;
return result.toFixed(1) + "%"; return result.toFixed(1) + "%";
} }
const rbtwoRef = ref(null) const rbtwoRef: any = ref(null)
const getProfession = () => { const getProfession = () => {
let params = { let params = {
"id": collageId.value "id": collageId.value
@ -102,7 +102,12 @@ watch(collageId, () => {
* @return {*} * @return {*}
*/ */
const getAdminPCIndex = () => { const getAdminPCIndex = () => {
AdminPCIndex().then((res: any) => { let params = {
"Year": years.value,
"Month": months.value,
"Day": days.value
}
AdminPCIndex(params).then((res: any) => {
dataStore.setData(res.data); dataStore.setData(res.data);
dataStore.setCollageId(res.data.rankingDto[0].collegeId) dataStore.setCollageId(res.data.rankingDto[0].collegeId)
dealMapData(res.data) dealMapData(res.data)
@ -151,11 +156,21 @@ const payData = () => {
}); });
} }
const timer: any = ref(null)
const startTimer = () => {
timer.value = setInterval(() => {
getAdminPCIndex();
payData();
}, 60000)
}
const clearTimer = () => {
clearInterval(timer.value)
}
onMounted(() => { onMounted(() => {
getAdminPCIndex(); getAdminPCIndex();
payData(); payData();
startTimer()
}); });
</script> </script>

View File

@ -2,7 +2,7 @@
* @Author: 张宁 18339727226@163.com * @Author: 张宁 18339727226@163.com
* @Date: 2024-05-23 20:42:55 * @Date: 2024-05-23 20:42:55
* @LastEditors: 张宁 18339727226@163.com * @LastEditors: 张宁 18339727226@163.com
* @LastEditTime: 2024-05-30 13:49:47 * @LastEditTime: 2024-06-03 15:28:11
* @FilePath: \welcome-system-screen\src\views\index\left-bottom.vue * @FilePath: \welcome-system-screen\src\views\index\left-bottom.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
@ -13,14 +13,26 @@ const {forecast,forecastFill} = storeToRefs(dataStore)
const chartRef = ref(null) const chartRef = ref(null)
const pieChartRef = ref(null) const pieChartRef = ref(null)
onMounted(()=>{ watch(forecast,()=>{
if (chartRef) { if (chartRef) {
chartRef.value.init(forecast.value.total,forecast.value.reported) chartRef.value.init(forecast.value.total,forecast.value.reported)
} }
},{
deep:true,
})
watch(forecastFill,()=>{
if (pieChartRef) { if (pieChartRef) {
pieChartRef.value.init(forecastFill.value.total,forecastFill.value.reported) pieChartRef.value.init(forecastFill.value.total,forecastFill.value.reported)
} }
}) })
onMounted(()=>{
// if (chartRef) {
// chartRef.value.init(forecast.value.total,forecast.value.reported)
// }
// if (pieChartRef) {
// pieChartRef.value.init(forecastFill.value.total,forecastFill.value.reported)
// }
})
</script> </script>
<template> <template>
@ -43,7 +55,7 @@ onMounted(()=>{
<div class="content"> <div class="content">
<div class="title">预报到填写率</div> <div class="title">预报到填写率</div>
<div class="right-content"> <div class="right-content">
<pieChart ref="pieChartRef"></pieChart> <PieChart ref="pieChartRef"></PieChart>
</div> </div>
<div class="bottom-title"> <div class="bottom-title">
<div class="icons"></div> <div class="icons"></div>

View File

@ -39,14 +39,14 @@ const zsbRate = computed(() => {
<div class="content-left"> <div class="content-left">
<div class="content-title title-top">统招本科</div> <div class="content-title title-top">统招本科</div>
<p class="item-title">统招本科总人数</p> <p class="item-title">统招本科总人数</p>
<p class="item-content">{{ degreeDto[2]?degreeDto[2].studentNumber:'-' }}</p> <p class="item-content">{{ degreeDto[2]?degreeDto[2].studentNumber:'0' }}</p>
</div> </div>
<div class="content-right"> <div class="content-right">
<div class="right-title title-top item-title">报到率 <div class="right-title title-top item-title">报到率
<span class="title-num numBlue">{{ isNaN(bkRate) ? '-' : bkRate }}%</span> <span class="title-num numBlue">{{ isNaN(bkRate) ? '0' : bkRate }}%</span>
</div> </div>
<p class="item-title">今日报到人数</p> <p class="item-title">今日报到人数</p>
<p class="item-content numBlue">{{ degreeDto[2]?degreeDto[2].reportNumber:'-' }}</p> <p class="item-content numBlue">{{ degreeDto[2]?degreeDto[2].reportNumber:'0' }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -59,14 +59,14 @@ const zsbRate = computed(() => {
<div class="content-left"> <div class="content-left">
<div class="content-title title-top tGreen">统招专科</div> <div class="content-title title-top tGreen">统招专科</div>
<p class="item-title">统招专科总人数</p> <p class="item-title">统招专科总人数</p>
<p class="item-content">{{ degreeDto[0]?degreeDto[0].studentNumber:'-' }}</p> <p class="item-content">{{ degreeDto[0]?degreeDto[0].studentNumber:'0' }}</p>
</div> </div>
<div class="content-right"> <div class="content-right">
<div class="right-title title-top item-title">报到率 <div class="right-title title-top item-title">报到率
<span class="title-num numGreen">{{ isNaN(zkRate) ? '-' : zkRate }}%</span> <span class="title-num numGreen">{{ isNaN(zkRate) ? '0' : zkRate }}%</span>
</div> </div>
<p class="item-title">今日报到人数</p> <p class="item-title">今日报到人数</p>
<p class="item-content numGreen">{{ degreeDto[0]?degreeDto[0].reportNumber:'-' }}</p> <p class="item-content numGreen">{{ degreeDto[0]?degreeDto[0].reportNumber:'0' }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -79,14 +79,14 @@ const zsbRate = computed(() => {
<div class="content-left"> <div class="content-left">
<div class="content-title title-top tGray">统招专升本</div> <div class="content-title title-top tGray">统招专升本</div>
<p class="item-title">统招专升本总人数</p> <p class="item-title">统招专升本总人数</p>
<p class="item-content">{{ degreeDto[1]?degreeDto[1].studentNumber:'-' }}</p> <p class="item-content">{{ degreeDto[1]?degreeDto[1].studentNumber:'0' }}</p>
</div> </div>
<div class="content-right"> <div class="content-right">
<div class="right-title title-top item-title">报到率 <div class="right-title title-top item-title">报到率
<span class="title-num numGrey">{{ isNaN(zsbRate) ? '-' : zsbRate }}%</span> <span class="title-num numGrey">{{ isNaN(zsbRate) ? '0' : zsbRate }}%</span>
</div> </div>
<p class="item-title">今日报到人数</p> <p class="item-title">今日报到人数</p>
<p class="item-content numGrey">{{ degreeDto[1]?degreeDto[1].reportNumber:'-' }}</p> <p class="item-content numGrey">{{ degreeDto[1]?degreeDto[1].reportNumber:'0' }}</p>
</div> </div>
</div> </div>
</div> </div>

View File

@ -23,7 +23,7 @@ const progress = computed(() => {
</div> </div>
<div class="top-item"> <div class="top-item">
<div class="top-item-title">已报到人数</div> <div class="top-item-title">已报到人数</div>
<div class="top-item-content">{{ totalDto.reportNumber ?? '-' }}</div> <div class="top-item-content">{{ totalDto.reportNumber ?? '0' }}</div>
</div> </div>
</div> </div>
<div class="top-item-img"> <div class="top-item-img">
@ -32,22 +32,22 @@ const progress = computed(() => {
</div> </div>
<div class="top-item"> <div class="top-item">
<div class="top-item-title title-red">未报到人数</div> <div class="top-item-title title-red">未报到人数</div>
<div class="top-item-content content-red"> {{ totalDto.notReportNumber ?? '-' }} </div> <div class="top-item-content content-red"> {{ totalDto.notReportNumber ?? '0' }} </div>
</div> </div>
</div> </div>
</div> </div>
<div class="left-bottom"> <div class="left-bottom">
<div class="bottom-item"> <div class="bottom-item">
<div class="bottom-item-title">预报到总人数</div> <div class="bottom-item-title">预报到总人数</div>
<div class="bottom-item-content"> {{ isNaN(totalReport) ? '-' : totalReport }} </div> <div class="bottom-item-content"> {{ isNaN(totalReport) ? '0' : totalReport }} </div>
</div> </div>
<div class="bottom-item"> <div class="bottom-item">
<div class="bottom-item-title">录取总人数</div> <div class="bottom-item-title">录取总人数</div>
<div class="bottom-item-content"> {{ totalDto.totalNumber ?? '-' }} </div> <div class="bottom-item-content"> {{ totalDto.totalNumber ?? '0' }} </div>
</div> </div>
<div class="bottom-item"> <div class="bottom-item">
<div class="bottom-item-title">迎新总进度</div> <div class="bottom-item-title">迎新总进度</div>
<div class="bottom-item-content"> {{ isNaN(progress) ? '-' : progress}}% </div> <div class="bottom-item-content"> {{ isNaN(progress) ? '0' : progress}}% </div>
</div> </div>
</div> </div>
</template> </template>