|
@@ -51,30 +51,30 @@ class="pr-5px mt-10px"
|
|
|
<div class="px-25px text-center" style="margin: auto;">
|
|
|
<div class="mb-5px text-20px text-white fw-550">打卡人数</div>
|
|
|
<CountTo
|
|
|
-class="text-28px" :start-val="0" :end-val="totalSate.normalNum"
|
|
|
- :duration="2600"/>
|
|
|
+ class="text-28px" :start-val="0" :end-val="totalSate.normalNum"
|
|
|
+ :duration="2600"/>
|
|
|
</div>
|
|
|
<el-divider direction="vertical" border-style="dashed"/>
|
|
|
<div class="px-8px text-center " style="margin: auto;">
|
|
|
<div class="mb-5px text-20px text-white fw-550">未打卡人数</div>
|
|
|
<CountTo
|
|
|
-class="text-28px" :start-val="0" :end-val="totalSate.errorNum"
|
|
|
- :duration="2600"/>
|
|
|
+ class="text-28px" :start-val="0" :end-val="totalSate.errorNum"
|
|
|
+ :duration="2600"/>
|
|
|
</div>
|
|
|
<el-divider direction="vertical" border-style="dashed"/>
|
|
|
<div class="px-8px text-center" style="margin: auto;">
|
|
|
<div class=" text-20px text-white fw-550">请假人数</div>
|
|
|
<CountTo
|
|
|
-class="text-28px" :start-val="0" :end-val="totalSate.excuseNum"
|
|
|
- :duration="2600"/>
|
|
|
+ class="text-28px" :start-val="0" :end-val="totalSate.excuseNum"
|
|
|
+ :duration="2600"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
<el-row :gutter="8">
|
|
|
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
|
|
|
<el-card
|
|
|
-class="mb-27px h-465px mt-40px mr-15px ="
|
|
|
- style="min-width: 250px ;background-color: rgb(255,255,255);border: 4px solid rgba(109,181,255,0.42);border-radius:15px">
|
|
|
+ class="mb-27px h-465px mt-40px mr-15px ="
|
|
|
+ style="min-width: 250px ;background-color: rgb(255,255,255);border: 4px solid rgba(109,181,255,0.42);border-radius:15px">
|
|
|
<template #header >
|
|
|
<div class="h-7 flex justify-between fw-800 text-22px ">
|
|
|
<span style="color: rgba(4,53,103,0.89)">实时打卡状态</span>
|
|
@@ -103,30 +103,30 @@ class="mb-27px h-465px mt-40px mr-15px ="
|
|
|
</div>
|
|
|
</div>
|
|
|
<vue3ScrollSeamless
|
|
|
-class="scroll-wrap text-color " :classOptions="classOptions"
|
|
|
- :dataList="list">
|
|
|
+ class="scroll-wrap text-color " :classOptions="classOptions"
|
|
|
+ :dataList="list">
|
|
|
<div v-if="list.length > 0">
|
|
|
<el-row
|
|
|
-v-for="(item, i) of list" :key="i" class="shouye"
|
|
|
- style="margin-bottom: 5px; display: flex; justify-content: center;background :rgba(147,208,255,0.18);padding: 5px">
|
|
|
+ v-for="(item, i) of list" :key="i" class="shouye"
|
|
|
+ style="margin-bottom: 5px; display: flex; justify-content: center;background :rgba(147,208,255,0.18);padding: 5px">
|
|
|
<el-col
|
|
|
-:span="6" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ :span="6" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
<div style="font-weight: 900">{{ item.studentName }}</div>
|
|
|
</el-col>
|
|
|
<el-col
|
|
|
-:span="6" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ :span="6" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
<div>{{ item.userNumber }}</div>
|
|
|
</el-col>
|
|
|
<el-col
|
|
|
-:span="6" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
- <div>{{ item.daptName }}</div>
|
|
|
+ :span="6" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ <div>{{ item.deptName }}</div>
|
|
|
</el-col>
|
|
|
<el-col
|
|
|
-:span="6" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ :span="6" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
<div>{{ formatDate(item.clockInTime) }}</div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -137,8 +137,8 @@ v-for="(item, i) of list" :key="i" class="shouye"
|
|
|
</div> -->
|
|
|
</vue3ScrollSeamless>
|
|
|
<div
|
|
|
-v-if="list.length == 0"
|
|
|
- style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; margin-top: -230px;">
|
|
|
+ v-if="list.length == 0"
|
|
|
+ style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; margin-top: -230px;">
|
|
|
<el-empty description="暂无数据"/>
|
|
|
</div>
|
|
|
<!-- </div>-->
|
|
@@ -146,8 +146,8 @@ v-if="list.length == 0"
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
|
|
|
<el-card
|
|
|
-class=" h-465px mb-10px mt-40px mr-15px "
|
|
|
- style="min-width: 250px ;background-color: rgb(255,255,255);border: 4px solid rgba(109,181,255,0.42);border-radius:15px">
|
|
|
+ class=" h-465px mb-10px mt-40px mr-15px "
|
|
|
+ style="min-width: 250px ;background-color: rgb(255,255,255);border: 4px solid rgba(109,181,255,0.42);border-radius:15px">
|
|
|
<!-- 移除 el-card 的边框 -->
|
|
|
<template #header>
|
|
|
<div class="h-7 flex justify-between fw-800 text-22px">
|
|
@@ -608,7 +608,7 @@ const class2Options = reactive({
|
|
|
const list = reactive([]);
|
|
|
const getStudentAttendance = async () => {
|
|
|
const data = await StudentAttendanceApi.getDayStudentAttendance()
|
|
|
- // console.log("打卡列表", data);
|
|
|
+ console.log("打卡列表", data);
|
|
|
list.splice(0, list.length, ...data);
|
|
|
}
|
|
|
const classOptions = reactive({
|