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