From 2bbd8d78ad6c901c6e42ddd58ea1f04879ab63da Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 29 十月 2025 21:52:58 +0800
Subject: [PATCH] 班级考勤汇总表

---
 src/views/classAttendance/index.vue |   30 +++++++++++++++---------------
 src/views/attendance/index.vue      |   29 ++++++++++++++++++++++++++++-
 2 files changed, 43 insertions(+), 16 deletions(-)

diff --git a/src/views/attendance/index.vue b/src/views/attendance/index.vue
index 7150ebe..827d5d1 100644
--- a/src/views/attendance/index.vue
+++ b/src/views/attendance/index.vue
@@ -10,7 +10,7 @@
                     end-placeholder="缁撴潫鏃ユ湡"
                     value-format="yyyy-MM-dd"
                     style="margin-right: 10px"
-                    @change="dateChange"
+                    @change="dateChange" :picker-options="pickerOptions"
                 >
                 </el-date-picker>
             </div>
@@ -105,6 +105,33 @@
                 },
             },
             dialogVisible: false,
+            pickerOptions: {
+                shortcuts: [{
+                    text: '鏈�杩戜竴鍛�',
+                    onClick(picker) {
+                        const end = new Date();
+                        const start = new Date();
+                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+                        picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '鏈�杩戜竴涓湀',
+                    onClick(picker) {
+                        const end = new Date();
+                        const start = new Date();
+                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+                        picker.$emit('pick', [start, end]);
+                    }
+                }, {
+                    text: '鏈�杩戜笁涓湀',
+                    onClick(picker) {
+                        const end = new Date();
+                        const start = new Date();
+                        start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+                        picker.$emit('pick', [start, end]);
+                    }
+                }]
+            },
         };
     },
     created() {
diff --git a/src/views/classAttendance/index.vue b/src/views/classAttendance/index.vue
index 4039d56..ed10fca 100644
--- a/src/views/classAttendance/index.vue
+++ b/src/views/classAttendance/index.vue
@@ -12,21 +12,20 @@
             </div>
         </div>
         <div style="height: calc(100vh - 168px)">
-            <el-table v-loading="listLoading" :data="list" element-loading-text="Loading"
-                fit height="100%">
-                <el-table-column label="鐝骇" prop="className" width="180">
+            <el-table v-loading="listLoading" :data="list" element-loading-text="Loading" fit height="100%">
+                <el-table-column label="鐝骇" prop="teamName" width="230">
                 </el-table-column>
-                <el-table-column label="璇惧寘" prop="className" width="180">
+                <el-table-column label="鍑哄嫟鐜�" prop="attendanceRate" width="150">
                 </el-table-column>
-                <el-table-column label="鍑哄嫟鐜�" prop="A1" width="180">
+                <el-table-column label="鍒拌" prop="completeCount" min-width="100">
                 </el-table-column>
-                <el-table-column label="鍒拌" prop="A2" width="180">
+                <el-table-column label="璇峰亣" min-width="100" prop="leaveCount">
                 </el-table-column>
-                <el-table-column label="璇峰亣" min-width="200" prop="A3">
+                <el-table-column label="缂哄嫟" prop="absenceCount" min-width="100">
                 </el-table-column>
-                <el-table-column label="缂哄嫟" prop="A4" min-width="100">
+                <el-table-column label="鏁欏笀" prop="staffName" width="230">
                 </el-table-column>
-                <el-table-column label="鏁欏笀" prop="className" width="180">
+                <el-table-column label="鏁欏" prop="placeName" width="200">
                 </el-table-column>
             </el-table>
         </div>
@@ -72,7 +71,7 @@
                     index: 0, //蹇呴��
                     size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
                     sorts: {
-                        name: "id, a.staff_name", //鎺掑簭瀛楁鍚嶇О
+                        name: "id", //鎺掑簭瀛楁鍚嶇О
                         direction: "ASC", //鎺掑簭鏂瑰悜
                     },
                 },
@@ -136,14 +135,12 @@
                 return;
             }
             this.download(
-                "exportAttendanceReport?staffId=" + this.data.staffId + "&startDate=" +
+                "exportClassAttendanceReport?staffId=" + this.data.staffId + "&startDate=" +
                 this.dateRange[0] +
                 "&endDate=" +
-                this.dateRange[1] +
-                "&type=" +
-                this.data.reportType,
+                this.dateRange[1],
                 {},
-                `瀛﹀憳鑰冨嫟鎶ヨ〃瀵煎嚭_${new Date().getTime()}.xlsx`
+                `鐝骇鑰冨嫟姹囨�昏〃瀵煎嚭_${new Date().getTime()}.xlsx`
             );
         },
         handleImport() {
@@ -160,6 +157,9 @@
             this.data.staffId = JSON.parse(localStorage.getItem("selectStaff")).id;
             findClassAttendance(this.data).then((response) => {
                 this.list = response.data.findClassAttendance.ls;
+                this.list.forEach(e => {
+                    e.attendanceRate = (e.completeCount / e.allCount * 100).toFixed(0) + "%"
+                });
                 this.total = response.data.findClassAttendance.pageOut.total;
                 this.listLoading = false;
             });

--
Gitblit v1.8.0