|
@@ -12,13 +12,16 @@
|
|
|
</template>
|
|
|
|
|
|
<el-row style="flex-wrap: wrap; ">
|
|
|
- <el-col v-for="(item, index) in projects" :key="`card-${index}`" :xs="24" :sm="8"
|
|
|
+ <el-col
|
|
|
+v-for="(item, index) in projects" :key="`card-${index}`" :xs="24" :sm="8"
|
|
|
:md="8" :lg="8" :xl="8">
|
|
|
- <el-card class="mr-10px mt-5px ml-10px "
|
|
|
+ <el-card
|
|
|
+class="mr-10px mt-5px ml-10px "
|
|
|
:style="{ backgroundColor: item.cardBgColor }">
|
|
|
<div class="flex items-center h-120px ">
|
|
|
<!-- <Icon :icon="item.icon" :size="25" class="mr-8px" /> -->
|
|
|
- <Icon :icon="item.icon" :size="80"
|
|
|
+ <Icon
|
|
|
+:icon="item.icon" :size="80"
|
|
|
:style="{ backgroundColor: item.iconBgColor, color: item. iconColor, borderRadius: '50%' }"
|
|
|
class="circle-icon"/>
|
|
|
<span class="text-30px c-black ">{{ item.name }}</span>
|
|
@@ -40,31 +43,36 @@
|
|
|
<span>实时出勤统计</span>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <el-card class="pr-5px mt-10px"
|
|
|
+ <el-card
|
|
|
+class="pr-5px mt-10px"
|
|
|
style="background-color:#56adfc ;opacity: 0.8; width: 90%; margin: auto;border-radius:10px">
|
|
|
<div class="h-35px flex items-center justify-center flex-wrap mt-0px c-white mb-15px">
|
|
|
<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"
|
|
|
+ <CountTo
|
|
|
+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"
|
|
|
+ <CountTo
|
|
|
+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"
|
|
|
+ <CountTo
|
|
|
+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 ="
|
|
|
+ <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">
|
|
|
<template #header >
|
|
|
<div class="h-7 flex justify-between fw-800 text-22px ">
|
|
@@ -93,24 +101,30 @@
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <vue3ScrollSeamless class="scroll-wrap text-color " :classOptions="classOptions"
|
|
|
+ <vue3ScrollSeamless
|
|
|
+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"
|
|
|
+ <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">
|
|
|
- <el-col :span="6" class="center"
|
|
|
+ <el-col
|
|
|
+: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"
|
|
|
+ <el-col
|
|
|
+: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"
|
|
|
+ <el-col
|
|
|
+:span="6" class="center"
|
|
|
style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
<div>{{ item.daptName }}</div>
|
|
|
</el-col>
|
|
|
- <el-col :span="6" class="center"
|
|
|
+ <el-col
|
|
|
+:span="6" class="center"
|
|
|
style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
<div>{{ formatDate(item.clockInTime) }}</div>
|
|
|
</el-col>
|
|
@@ -121,7 +135,8 @@
|
|
|
暂无预测记录
|
|
|
</div> -->
|
|
|
</vue3ScrollSeamless>
|
|
|
- <div v-if="list.length == 0"
|
|
|
+ <div
|
|
|
+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>
|
|
@@ -129,7 +144,8 @@
|
|
|
</el-card>
|
|
|
</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 "
|
|
|
+ <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">
|
|
|
<!-- 移除 el-card 的边框 -->
|
|
|
<template #header>
|
|
@@ -161,10 +177,12 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <vue3ScrollSeamless class="scroll-wraps text-color" :classOptions="class2Options"
|
|
|
+ <vue3ScrollSeamless
|
|
|
+class="scroll-wraps text-color" :classOptions="class2Options"
|
|
|
:dataList="list2">
|
|
|
<div v-if="list2.length > 0">
|
|
|
- <el-row v-for="(item, i) of list2" :key="i" class="shouye"
|
|
|
+ <el-row
|
|
|
+v-for="(item, i) of list2" :key="i" class="shouye"
|
|
|
style="margin-bottom: 5px; display: flex; justify-content: center;background :rgba(147,208,255,0.18);padding:2px">
|
|
|
<!-- <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
<div>{{ item.ID }}</div>
|
|
@@ -188,7 +206,8 @@
|
|
|
暂无预测记录
|
|
|
</div> -->
|
|
|
</vue3ScrollSeamless>
|
|
|
- <div v-if="list2.length == 0"
|
|
|
+ <div
|
|
|
+v-if="list2.length == 0"
|
|
|
style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; margin-top: -230px;">
|
|
|
<el-empty description="暂无数据"/>
|
|
|
</div>
|
|
@@ -196,7 +215,8 @@
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="8">
|
|
|
- <el-card class=" mb-27px h-465px mt-40px "
|
|
|
+ <el-card
|
|
|
+class=" mb-27px h-465px mt-40px "
|
|
|
style="border: 4px solid rgba(109,181,255,0.42);border-radius:15px">
|
|
|
<template #header>
|
|
|
<div class="h-7 flex justify-between fw-800 text-20px">
|
|
@@ -243,20 +263,24 @@
|
|
|
<div class="demoss">
|
|
|
<div class="header">
|
|
|
<el-row class="shouye h-40px" style="border: none;">
|
|
|
- <el-col :span="12" class="center text-18px"
|
|
|
+ <el-col
|
|
|
+:span="12" class="center text-18px"
|
|
|
style="border: none;padding: 8px;margin-left: 5px; margin-top: -5px;">
|
|
|
<div style="font-weight:550">工作间</div>
|
|
|
</el-col>
|
|
|
- <el-col :span="12" class="center text-18px"
|
|
|
+ <el-col
|
|
|
+:span="12" class="center text-18px"
|
|
|
style="border: none;padding: 8px;margin-left: -15px; margin-top: -5px;">
|
|
|
<div style="font-weight:550">达成率</div>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
- <vue3ScrollSeamless class="scroll-wrapss text-color" :classOptions="list1Options"
|
|
|
+ <vue3ScrollSeamless
|
|
|
+class="scroll-wrapss text-color" :classOptions="list1Options"
|
|
|
:dataList="list1">
|
|
|
<div v-if="list1.length > 0">
|
|
|
- <el-row v-for="(item, i) of list1" :key="i" class="shouye"
|
|
|
+ <el-row
|
|
|
+v-for="(item, i) of list1" :key="i" class="shouye"
|
|
|
style="margin-bottom: 10px ; display: flex; justify-content: center;background: rgba(138,193,248,0.17);padding: 2px">
|
|
|
<!-- 增加行与行之间的间距 -->
|
|
|
<el-col :span="12" class="center" style="padding: 15px;"> <!-- 增加内边距 -->
|
|
@@ -267,7 +291,8 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
- <div v-if="list1.length == 0"
|
|
|
+ <div
|
|
|
+v-if="list1.length == 0"
|
|
|
style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; color: white; font-size: 18px;">
|
|
|
暂无预测记录
|
|
|
</div>
|