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 |  116 ++++++++++++----------------------------------------------
 1 files changed, 24 insertions(+), 92 deletions(-)

diff --git a/src/views/classAttendance/index.vue b/src/views/classAttendance/index.vue
index ec1c844..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" @expand-change="expandChange"
-                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>
@@ -40,7 +39,7 @@
 </template>
 
 <script>
-import { getData } from "@/api/attendance";
+import { findClassAttendance } from "@/api/class";
 
 export default {
     filters: {
@@ -72,7 +71,7 @@
                     index: 0, //蹇呴��
                     size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20
                     sorts: {
-                        name: "p.name,CONVERT(s.begin_time,date)", //鎺掑簭瀛楁鍚嶇О
+                        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() {
@@ -157,89 +154,24 @@
             this.listLoading = true;
             this.data.beginDate = this.dateRange[0].replaceAll("-", "/");
             this.data.endDate = this.dateRange[1].replaceAll("-", "/");
-            this.list = [{ "className": "涓�鐝�", "A1": "90%", "A2": 1, "A3": 0, "A4": 0 },
-            { "className": "浜岀彮", "A1": "90%", "A2": 1, "A3": 0, "A4": 0 },
-            { "className": "涓夌彮", "A1": "90%", "A2": 1, "A3": 0, "A4": 0 },
-            { "className": "鍥涚彮", "A1": "90%", "A2": 1, "A3": 0, "A4": 0 }
-            ]
-            this.listLoading = false;
-            // getData(this.data).then((response) => {
-            //     this.list = response.data.findPlayerAttendanceSummary.ls;
-            //     this.total = response.data.findPlayerAttendanceSummary.pageOut.total;
-            //     this.listLoading = false;
-            // });
+            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;
+            });
         },
         handleSizeChange(val) {
             this.data.pageIn.size = val;
-            this.handleClick();
+            this.fetchData();
         },
         handleCurrentChange(val) {
             this.data.pageIn.index = val - 1;
-            this.handleClick();
+            this.fetchData();
         },
-        handleClick(tab, event) {
-            this.data.staffId = JSON.parse(localStorage.getItem("selectStaff")).id;
-            if (this.activeName == "pendingFees") {
-                this.listLoading = true;
-                getRenew(this.data).then((response) => {
-                    this.list = response.data.findRenewPlayerAcc.ls;
-                    this.total = response.data.findRenewPlayerAcc.pageOut.total;
-                    this.listLoading = false;
-                });
-            } else if (this.activeName == "expired") {
-                this.listLoading = true;
-                getExpire(this.data).then((response) => {
-                    this.list = response.data.findPlayerExpire.ls;
-                    this.total = response.data.findPlayerExpire.pageOut.total;
-                    this.listLoading = false;
-                });
-            } else if (this.activeName == "all") {
-                this.fetchData();
-            } else if (this.activeName == "deactivated") {
-                this.listLoading = true;
-                let data = {
-                    itemType: "PLAYER",
-                    staffId: JSON.parse(localStorage.getItem("selectStaff")).id,
-                    keyword: this.data.keyword,
-                    pageIn: { ...this.data.pageIn },
-                };
-                getDeleted(data).then((response) => {
-                    this.list = response.data.findDeletedItem.ls;
-                    this.total = response.data.findDeletedItem.pageOut.total;
-                    this.listLoading = false;
-                });
-            }
-        },
-        goDetails(row) {
-            this.$router.push({
-                name: "StudentDetails",
-                query: {
-                    id: row.id,
-                },
-            });
-        },
-        showCreate() {
-            this.$refs.studentCreate.showDialog();
-        },
-        changeType(type) {
-            switch (type) {
-                case 0:
-                    return "鐝";
-                case 1:
-                    return "绾﹁";
-                case 2:
-                    return "鍦哄湴";
-                default:
-                    return "-";
-            }
-        },
-        expandChange(row, expandedRows, expanded) {
-            this.studentList = [{ "studentName": "瀛﹀憳", "a1": "90%", "a2": 1, "a3": 0, "a4": 0 },
-            { "studentName": "瀛﹀憳", "a1": "90%", "a2": 1, "a3": 0, "a4": 0 },
-            { "studentName": "瀛﹀憳", "a1": "90%", "a2": 1, "a3": 0, "a4": 0 }
-            ]
-            this.studentLoading = false
-        }
     },
 };
 </script>
\ No newline at end of file

--
Gitblit v1.8.0