|
@@ -49,358 +49,244 @@
|
|
|
</el-link> -->
|
|
|
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <el-row :gutter="8">
|
|
|
- <!-- 第一部分 -->
|
|
|
- <el-col :xs="24" :sm="24" :md="10" :lg="10" :xl="10">
|
|
|
- <el-card style="height: 99%;">
|
|
|
- <el-card shadow="never" class="h-100% ">
|
|
|
-
|
|
|
- <template #header>
|
|
|
- <div class="h-7 flex justify-between fw-800 text-20px">
|
|
|
- <span>基本信息</span>
|
|
|
+ <el-skeleton :loading="loading" animated>
|
|
|
+ <el-row :gutter="8">
|
|
|
+ <!-- 第一部分 -->
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="10" :xl="10">
|
|
|
+ <el-card style="height: 99%;">
|
|
|
+ <el-card shadow="never" class="h-100% ">
|
|
|
+
|
|
|
+ <template #header>
|
|
|
+ <div class="h-7 flex justify-between fw-800 text-20px">
|
|
|
+ <span>基本信息</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <el-row style="flex-wrap: wrap; ">
|
|
|
+ <el-col v-for="(item, index) in projects" :key="`card-${index}`" :xs="24" :sm="24" :md="24" :lg="8" :xl="8">
|
|
|
+ <el-card shadow="hover" class="mr-5px mt-5px " style="background-color:#2585a6 ">
|
|
|
+ <div class="flex items-center h-90px ">
|
|
|
+ <!-- <Icon :icon="item.icon" :size="25" class="mr-8px" /> -->
|
|
|
+ <Icon :icon="item.icon" :size="38" class="mr-8px " />
|
|
|
+
|
|
|
+ <span class="text-17px c-white">{{ item.name }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="mb-18px text-32px c-white ml-20px text-center">{{ t(item.message) }}</div>
|
|
|
+ <!-- <div class="mt-12px flex justify-between text-12px text-gray-400">
|
|
|
+
|
|
|
+ <span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
|
|
+ </div> -->
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card shadow="never" class=" h-100% mt-20px ">
|
|
|
+ <template #header>
|
|
|
+ <div class="h-5 flex justify-between fw-800 text-20px">
|
|
|
+ <span>出勤统计</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-card shadow="never" class="ml-2px pr-10px mt-10px" style="background-color:#33a3dc ;opacity: 0.8; ">
|
|
|
+ <div class="h-70px flex items-center justify-center flex-wrap mt-10px c-white">
|
|
|
+ <div class="px-8px text-right">
|
|
|
+ <div class="mb-10px text-20px text-white ">当日出勤情况</div>
|
|
|
</div>
|
|
|
- </template>
|
|
|
-
|
|
|
- <el-row style="flex-wrap: wrap; ">
|
|
|
- <el-col v-for="(item, index) in projects" :key="`card-${index}`" :xs="24" :sm="24" :md="24" :lg="8"
|
|
|
- :xl="8">
|
|
|
- <el-card shadow="hover" class="mr-5px mt-5px " style="background-color:#2585a6 ">
|
|
|
- <div class="flex items-center h-90px ">
|
|
|
- <!-- <Icon :icon="item.icon" :size="25" class="mr-8px" /> -->
|
|
|
- <Icon :icon="item.icon" :size="38" class="mr-8px " />
|
|
|
-
|
|
|
- <span class="text-17px c-white">{{ item.name }}</span>
|
|
|
- </div>
|
|
|
- <div class="mb-18px text-32px c-white ml-20px text-center">{{ t(item.message) }}</div>
|
|
|
- <!-- <div class="mt-12px flex justify-between text-12px text-gray-400">
|
|
|
-
|
|
|
- <span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
|
|
- </div> -->
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <el-divider direction="vertical" style="border-left-black" />
|
|
|
+ <div class="px-25px text-center">
|
|
|
+ <div class="mb-16px text-18px text-white ">正常人数</div>
|
|
|
+ <CountTo class="text-20px" :start-val="0" :end-val="totalSate.normal" :duration="2600" />
|
|
|
+ </div>
|
|
|
+ <el-divider direction="vertical" border-style="dashed" />
|
|
|
+ <div class="px-8px text-center">
|
|
|
+ <div class="mb-16px text-18px text-white ">异常人数</div>
|
|
|
+ <CountTo class="text-20px" :start-val="0" :end-val="totalSate.unusual" :duration="2600" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</el-card>
|
|
|
-
|
|
|
- <el-card shadow="never" class=" h-100% mt-20px ">
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card shadow="hover" class="mb-8px mt-30px">
|
|
|
+ <template #header>
|
|
|
+ <div class="h-5 flex justify-between fw-800 text-20px">
|
|
|
+ <span>实时人数统计</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-skeleton :loading="loading" animated>
|
|
|
+ <Echart :options="pieOptionsData" :height="250" />
|
|
|
+ </el-skeleton>
|
|
|
+ </el-card>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <!-- 第二部分 -->
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="14" :xl="10">
|
|
|
+ <!-- 第一个el-row -->
|
|
|
+ <el-row :gutter="15">
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
+ <el-card shadow="never" class="ml-10px h-480px ">
|
|
|
<template #header>
|
|
|
<div class="h-5 flex justify-between fw-800 text-20px">
|
|
|
- <span>出勤统计</span>
|
|
|
+ <span>周出勤情况</span>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <el-card shadow="never" class="ml-2px pr-10px mt-10px" style="background-color:#33a3dc ;opacity: 0.8; ">
|
|
|
- <div class="h-70px flex items-center justify-center flex-wrap mt-10px c-white">
|
|
|
- <div class="px-8px text-right">
|
|
|
- <div class="mb-10px text-20px text-white ">当日出勤情况</div>
|
|
|
- </div>
|
|
|
- <el-divider direction="vertical" style="border-left-black" />
|
|
|
- <div class="px-25px text-center">
|
|
|
- <div class="mb-16px text-18px text-white ">正常人数</div>
|
|
|
- <CountTo class="text-20px" :start-val="0" :end-val="totalSate.normal" :duration="2600" />
|
|
|
- </div>
|
|
|
- <el-divider direction="vertical" border-style="dashed" />
|
|
|
- <div class="px-8px text-center">
|
|
|
- <div class="mb-16px text-18px text-white ">异常人数</div>
|
|
|
- <CountTo class="text-20px" :start-val="0" :end-val="totalSate.unusual" :duration="2600" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <el-card shadow="hover" class="mt-1px h-380px ">
|
|
|
+ <el-skeleton :loading="loading" animated>
|
|
|
+ <Echart :options="barOptionsData" :height="350" />
|
|
|
+ </el-skeleton>
|
|
|
</el-card>
|
|
|
</el-card>
|
|
|
-
|
|
|
- <el-card shadow="hover" class="mb-8px mt-30px">
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="10">
|
|
|
+ <el-card shadow="never">
|
|
|
<template #header>
|
|
|
<div class="h-5 flex justify-between fw-800 text-20px">
|
|
|
- <span>实时人数统计</span>
|
|
|
+ <span>实时打卡状态</span>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <Echart :options="pieOptionsData" :height="250" />
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- <!-- 第二部分 -->
|
|
|
- <el-col :xs="24" :sm="24" :md="10" :lg="14" :xl="10">
|
|
|
- <!-- 第一个el-row -->
|
|
|
- <el-row :gutter="15">
|
|
|
- <el-col :xs="24" :sm="24" :md="10" :lg="12" :xl="12">
|
|
|
- <el-card shadow="never" class="ml-10px h-480px ">
|
|
|
- <template #header>
|
|
|
- <div class="h-5 flex justify-between fw-800 text-20px">
|
|
|
- <span>周出勤情况</span>
|
|
|
+ <div class="demo">
|
|
|
+ <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"
|
|
|
+ style="margin-bottom: 10px; display: flex; justify-content: center;">
|
|
|
+ <el-col :span="7" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ <div>{{ item.trainNumber }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ <div>{{ item.destination }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ <div>{{ item.departureTime }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="5" class="center"
|
|
|
+ style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
+ <div>{{ item.status }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <el-card shadow="hover" class="mt-1px h-380px ">
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <Echart :options="barOptionsData" :height="350" />
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :xs="24" :sm="24" :md="10" :lg="12" :xl="10">
|
|
|
- <el-card shadow="never">
|
|
|
- <template #header>
|
|
|
- <div class="h-5 flex justify-between fw-800 text-20px">
|
|
|
- <span>实时打卡状态</span>
|
|
|
+ <div v-if="list.length == 0"
|
|
|
+ style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; color: white; font-size: 18px;">
|
|
|
+ 暂无预测记录
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <div class="demo">
|
|
|
- <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"
|
|
|
- style="margin-bottom: 10px; display: flex; justify-content: center;">
|
|
|
- <el-col :span="7" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
- <div>{{ item.trainNumber }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
- <div>{{ item.destination }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
- <div>{{ item.departureTime }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="5" class="center"
|
|
|
- style="display: flex; justify-content: center; align-items: center; padding: 6px;">
|
|
|
- <div>{{ item.status }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="list.length == 0"
|
|
|
- style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; color: white; font-size: 18px;">
|
|
|
- 暂无预测记录
|
|
|
- </div>
|
|
|
- </vue3ScrollSeamless>
|
|
|
+ </vue3ScrollSeamless>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <!-- 第二个el-row -->
|
|
|
+ <el-row class="mt-12px" :gutter="15" align="center">
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="13" :xl="7">
|
|
|
+ <el-card shadow="never" class="mt-1px h-480px ml-10px" style="border: none;"> <!-- 移除 el-card 的边框 -->
|
|
|
+ <template #header>
|
|
|
+ <div class="h-7 flex justify-between fw-800 text-20px">
|
|
|
+ <span>缺勤预警</span>
|
|
|
</div>
|
|
|
- </el-card>
|
|
|
-
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <!-- 第二个el-row -->
|
|
|
- <el-row class="mt-12px" :gutter="15" align="center">
|
|
|
- <el-col :xs="24" :sm="24" :md="12" :lg="13" :xl="7">
|
|
|
- <el-card shadow="never" class="mt-1px h-480px ml-10px" style="border: none;"> <!-- 移除 el-card 的边框 -->
|
|
|
- <template #header>
|
|
|
- <div class="h-7 flex justify-between fw-800 text-20px">
|
|
|
- <span>缺勤预警</span>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="demos">
|
|
|
+ <!-- <div class="table-header">
|
|
|
+ <div class="header">
|
|
|
+ <el-row class="shouye" style="border: none;">
|
|
|
+ <el-col :span="8" class="center text-18px" style="border: none;">
|
|
|
+ <div>学生学号</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="10" class="center text-18px" style="border: none;">
|
|
|
+ <div>工作间</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" class="center text-18px" style="border: none;">
|
|
|
+ <div>导师</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="10" class="center text-18px" style="border: none;">
|
|
|
+ <div>缺勤时间段</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div> -->
|
|
|
+
|
|
|
+ <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-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
+ <div>{{ item.ID }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
+ <div>{{ item.destination }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
+ <div>{{ item.trainNumber }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
+ <div>{{ item.departureTime }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
- </template>
|
|
|
-
|
|
|
- <div class="demos">
|
|
|
- <!-- <div class="table-header">
|
|
|
- <div class="header">
|
|
|
- <el-row class="shouye" style="border: none;">
|
|
|
- <el-col :span="8" class="center text-18px" style="border: none;">
|
|
|
- <div>学生学号</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="10" class="center text-18px" style="border: none;">
|
|
|
- <div>工作间</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" class="center text-18px" style="border: none;">
|
|
|
- <div>导师</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="10" class="center text-18px" style="border: none;">
|
|
|
- <div>缺勤时间段</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
-
|
|
|
- <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-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
- <div>{{ item.ID }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
- <div>{{ item.destination }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
- <div>{{ item.trainNumber }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="6" class="center" style="padding: 10px; border: none;">
|
|
|
- <div>{{ item.departureTime }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <div v-if="list2.length == 0"
|
|
|
- style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; color: white; font-size: 18px;">
|
|
|
- 暂无预测记录
|
|
|
- </div>
|
|
|
- </vue3ScrollSeamless>
|
|
|
- </div>
|
|
|
- </el-card>
|
|
|
-
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :xs="24" :sm="24" :md="9" :lg="11" :xl="7">
|
|
|
- <el-card shadow="never" class="mr-8px mt-1px h-480px ">
|
|
|
- <template #header>
|
|
|
- <div class="h-7 flex justify-between fw-800 text-20px">
|
|
|
- <span>学生毕业条件达成率</span>
|
|
|
+ <div v-if="list2.length == 0"
|
|
|
+ style="width: 100%; height: 100px; display: flex; justify-content: center; align-items: center; color: white; font-size: 18px;">
|
|
|
+ 暂无预测记录
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <div class="demoss">
|
|
|
- <!-- <div class="table-header">
|
|
|
- <div class="header">
|
|
|
- <el-row class="shouye">
|
|
|
- <el-col :span="12" class="center text-18px">
|
|
|
- <div>工作间</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="15" class="center text-18px ">
|
|
|
- <div>学生毕业条件达成率</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
-
|
|
|
- <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" :style="{ marginBottom: '10px' }">
|
|
|
- <!-- 增加行与行之间的间距 -->
|
|
|
- <el-col :span="12" class="center" style="padding: 8px;"> <!-- 增加内边距 -->
|
|
|
- <div>{{ item.destination }}</div>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12" class="center" style="padding: 8px;">
|
|
|
- <div>{{ item.departureNumber }}</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <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>
|
|
|
- </vue3ScrollSeamless>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- </el-row>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-skeleton>
|
|
|
- </div>
|
|
|
-
|
|
|
- <el-row class="mt-8px" :gutter="8" justify="space-between">
|
|
|
- <el-col :xl="16" :lg="16" :md="24" :sm="24" :xs="24" class="mb-8px">
|
|
|
- <el-card shadow="never">
|
|
|
- <template #header>
|
|
|
- <div class="h-3 flex justify-between">
|
|
|
- <span>{{ t('workplace.project') }}</span>
|
|
|
- <el-link
|
|
|
- type="primary"
|
|
|
- :underline="false"
|
|
|
- href="https://github.com/yudaocode"
|
|
|
- target="_blank"
|
|
|
- >
|
|
|
- {{ t('action.more') }}
|
|
|
- </el-link>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <el-row>
|
|
|
- <el-col
|
|
|
- v-for="(item, index) in projects"
|
|
|
- :key="`card-${index}`"
|
|
|
- :xl="8"
|
|
|
- :lg="8"
|
|
|
- :md="8"
|
|
|
- :sm="24"
|
|
|
- :xs="24"
|
|
|
- >
|
|
|
- <el-card shadow="hover" class="mr-5px mt-5px">
|
|
|
- <div class="flex items-center">
|
|
|
- <Icon :icon="item.icon" :size="25" class="mr-8px" />
|
|
|
- <span class="text-16px">{{ item.name }}</span>
|
|
|
- </div>
|
|
|
- <div class="mt-12px text-9px text-gray-400">{{ t(item.message) }}</div>
|
|
|
- <div class="mt-12px flex justify-between text-12px text-gray-400">
|
|
|
- <span>{{ item.personal }}</span>
|
|
|
- <span>{{ formatTime(item.time, 'yyyy-MM-dd') }}</span>
|
|
|
- </div>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- <el-card shadow="never" class="mt-8px">
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <el-row :gutter="20" justify="space-between">
|
|
|
- <el-col :xl="10" :lg="10" :md="24" :sm="24" :xs="24">
|
|
|
- <el-card shadow="hover" class="mb-8px">
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <Echart :options="pieOptionsData" :height="280" />
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- <el-col :xl="14" :lg="14" :md="24" :sm="24" :xs="24">
|
|
|
- <el-card shadow="hover" class="mb-8px">
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <Echart :options="barOptionsData" :height="280" />
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- <el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" class="mb-8px">
|
|
|
- <el-card shadow="never">
|
|
|
- <template #header>
|
|
|
- <div class="h-3 flex justify-between">
|
|
|
- <span>{{ t('workplace.shortcutOperation') }}</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <el-row>
|
|
|
- <el-col v-for="item in shortcut" :key="`team-${item.name}`" :span="8" class="mb-8px">
|
|
|
- <div class="flex items-center">
|
|
|
- <Icon :icon="item.icon" class="mr-8px" />
|
|
|
- <el-link type="default" :underline="false" @click="setWatermark(item.name)">
|
|
|
- {{ item.name }}
|
|
|
- </el-link>
|
|
|
+ </vue3ScrollSeamless>
|
|
|
</div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- <el-card shadow="never" class="mt-8px">
|
|
|
- <template #header>
|
|
|
- <div class="h-3 flex justify-between">
|
|
|
- <span>{{ t('workplace.notice') }}</span>
|
|
|
- <el-link type="primary" :underline="false">{{ t('action.more') }}</el-link>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <el-skeleton :loading="loading" animated>
|
|
|
- <div v-for="(item, index) in notice" :key="`dynamics-${index}`">
|
|
|
- <div class="flex items-center">
|
|
|
- <el-avatar :src="avatar" :size="35" class="mr-16px">
|
|
|
- <img src="@/assets/imgs/avatar.gif" alt="" />
|
|
|
- </el-avatar>
|
|
|
- <div>
|
|
|
- <div class="text-14px">
|
|
|
- <Highlight :keys="item.keys.map((v) => t(v))">
|
|
|
- {{ item.type }} : {{ item.title }}
|
|
|
- </Highlight>
|
|
|
- </div>
|
|
|
- <div class="mt-16px text-12px text-gray-400">
|
|
|
- {{ formatTime(item.date, 'yyyy-MM-dd') }}
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="11" :xl="7">
|
|
|
+ <el-card shadow="never" class="mr-8px mt-1px h-480px ">
|
|
|
+ <template #header>
|
|
|
+ <div class="h-7 flex justify-between fw-800 text-20px">
|
|
|
+ <span>学生毕业条件达成率</span>
|
|
|
</div>
|
|
|
+ </template>
|
|
|
+ <div class="demoss">
|
|
|
+ <!-- <div class="table-header">
|
|
|
+ <div class="header">
|
|
|
+ <el-row class="shouye">
|
|
|
+ <el-col :span="12" class="center text-18px">
|
|
|
+ <div>工作间</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="15" class="center text-18px ">
|
|
|
+ <div>学生毕业条件达成率</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div> -->
|
|
|
+
|
|
|
+ <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" :style="{ marginBottom: '10px' }">
|
|
|
+ <!-- 增加行与行之间的间距 -->
|
|
|
+ <el-col :span="12" class="center" style="padding: 8px;"> <!-- 增加内边距 -->
|
|
|
+ <div>{{ item.destination }}</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" class="center" style="padding: 8px;">
|
|
|
+ <div>{{ item.departureNumber }}</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <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>
|
|
|
+ </vue3ScrollSeamless>
|
|
|
+
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <el-divider />
|
|
|
- </div>
|
|
|
- </el-skeleton>
|
|
|
- </el-card>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
->>>>>>> c6f00b261b83e3eedb2918f7c41cf0d99d2b0052
|
|
|
+
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-skeleton>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
@@ -620,7 +506,7 @@ const getUserAccessSource = async () => {
|
|
|
{
|
|
|
type: 'pie',
|
|
|
radius: ['120px', '70px'], // 设定内圈和外圈半径
|
|
|
- center: ['50%', '90%'], // 中心位置
|
|
|
+ center: ['50%', '85%'], // 中心位置
|
|
|
startAngle: 180,
|
|
|
endAngle: 360,
|
|
|
data: data.map(v => ({
|
|
@@ -797,10 +683,10 @@ const class2Options = reactive({
|
|
|
const getDetail = async () => {
|
|
|
loading.value = true
|
|
|
try {
|
|
|
- const D = await UserApi.getDetail();
|
|
|
- detail.deptNum = D.deptNum
|
|
|
- detail.studentNum = D.studentNum
|
|
|
- detail.teacherNum = D.teacherNum
|
|
|
+ // const D = await UserApi.getDetail();
|
|
|
+ // detail.deptNum = D.deptNum
|
|
|
+ // detail.studentNum = D.studentNum
|
|
|
+ // detail.teacherNum = D.teacherNum
|
|
|
|
|
|
|
|
|
} finally {
|
|
@@ -934,7 +820,7 @@ getAllApi()
|
|
|
}
|
|
|
|
|
|
/* .text-color {
|
|
|
- color: rgb(15, 131, 233);
|
|
|
+ color: rgb(15, 131, 233);
|
|
|
} */
|
|
|
|
|
|
|