From 59d30d49f2a37c294ee98e495de9bc42dcdfe6ce Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期二, 11 二月 2025 18:06:31 +0800 Subject: [PATCH] 优化 --- src/views/attendance/index.vue | 418 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 214 insertions(+), 204 deletions(-) diff --git a/src/views/attendance/index.vue b/src/views/attendance/index.vue index 94ca335..996f058 100644 --- a/src/views/attendance/index.vue +++ b/src/views/attendance/index.vue @@ -1,221 +1,231 @@ <template> - <div class="app-container"> - <div style="display: flex"> - <div> - <el-date-picker - v-model="dateRange" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" - value-format="yyyy-MM-dd" - style="margin-right: 10px" - @change="dateChange" - > - </el-date-picker> - </div> - <div style="margin: auto; margin-left: 30px !important"> - <el-button type="primary" size="small" @click="handleExport" - >瀵煎嚭鎶ヨ〃</el-button - > - </div> + <div class="app-container"> + <div style="display: flex"> + <div> + <el-date-picker + v-model="dateRange" + type="daterange" + range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + value-format="yyyy-MM-dd" + style="margin-right: 10px" + @change="dateChange" + > + </el-date-picker> + </div> + <div style="margin: auto; margin-left: 30px !important"> + <el-button type="primary" size="small" @click="handleExport" + >瀵煎嚭鎶ヨ〃</el-button + > + </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="playerName" width="180"> + </el-table-column> + <el-table-column label="鍑哄嫟鎯呭喌" prop="state" width="180"> + </el-table-column> + <el-table-column + label="璇惧寘/浼氬憳鍗�" + min-width="200" + prop="voucherName" + > + </el-table-column> + <el-table-column label="璇炬椂娑堣��" prop="qty" min-width="100"> + </el-table-column> + <el-table-column label="璇捐垂娑堣��" prop="amt" min-width="100"> + </el-table-column> + <el-table-column label="璇剧▼鎬ц川" min-width="100"> + <template slot-scope="scope"> + {{ changeType(scope.row.sessionType) }} + </template> + </el-table-column> + <el-table-column label="鏁欏笀" prop="staffName" min-width="100"> + </el-table-column> + <el-table-column label="鏁欏" prop="placeName" min-width="100"> + </el-table-column> + </el-table> + </div> + <div> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="data.pageIn.index + 1" + :page-sizes="[10, 20, 30, 40]" + :page-size="data.pageIn.size" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + > + </el-pagination> + </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="playerName" width="180"> - </el-table-column> - <el-table-column label="鍑哄嫟鎯呭喌" prop="state" width="180"> - </el-table-column> - <el-table-column label="璇惧寘/浼氬憳鍗�" min-width="200" prop="voucherName"> - </el-table-column> - <el-table-column label="璇炬椂娑堣��" prop="qty" min-width="100"> - </el-table-column> - <el-table-column label="璇捐垂娑堣��" prop="amt" min-width="100"> - </el-table-column> - <el-table-column label="璇剧▼鎬ц川" min-width="100"> - <template slot-scope="scope"> - {{ changeType(scope.row.sessionType) }} - </template> - </el-table-column> - <el-table-column label="鏁欏笀" prop="staffName" min-width="100"> - </el-table-column> - <el-table-column label="鏁欏" prop="placeName" min-width="100"> - </el-table-column> - </el-table> - </div> - <div> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="data.pageIn.index + 1" - :page-sizes="[10, 20, 30, 40]" - :page-size="data.pageIn.size" - layout="total, sizes, prev, pager, next, jumper" - :total="total" - > - </el-pagination> - </div> - </div> </template> <script> import { getData } from "@/api/attendance"; export default { - filters: { - statusFilter(status) { - const statusMap = { - published: "success", - draft: "gray", - deleted: "danger", - }; - return statusMap[status]; - }, - }, - components: {}, - data() { - return { - dateRange: [], - list: null, - listLoading: true, - activeName: "all", - total: 0, - data: { - staffId: JSON.parse(localStorage.getItem("selectStaff")).id, - keyword: "", - pageIn: { - //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿�� - index: 0, //蹇呴�� - size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20 - sorts: { - name: "p.name", //鎺掑簭瀛楁鍚嶇О - direction: "ASC", //鎺掑簭鏂瑰悜 - }, + filters: { + statusFilter(status) { + const statusMap = { + published: "success", + draft: "gray", + deleted: "danger", + }; + return statusMap[status]; }, - }, - dialogVisible: false, - }; - }, - created() { - this.setDate(); - this.fetchData(); - }, - methods: { - /** 灏嗘椂闂撮�夋嫨鍣ㄩ粯璁ら�変负褰撳ぉ鐨勬棩鏈� */ - setDate() { - let currentDate = new Date(); - - let year = currentDate.getFullYear(); - let month = String(currentDate.getMonth() + 1).padStart(2, "0"); - let day = String(currentDate.getDate()).padStart(2, "0"); - - let formattedDate = `${year}/${month}/${day}`; - this.dateRange.push(formattedDate); - this.dateRange.push(formattedDate); }, - handleExport() { - if (this.dateRange.length == 0) { - this.$message.warning("璇烽�夋嫨鏃ユ湡鑼冨洿"); - return; - } - this.download( - "exportAttendanceReport?staffId="+this.data.staffId+"&startDate=" + - this.dateRange[0] + - "&endDate=" + - this.dateRange[1], - {}, - `瀛﹀憳鑰冨嫟鏃ユ姤琛ㄥ鍑篲${new Date().getTime()}.xlsx` - ); - }, - handleImport() { - this.dialogVisible = true; - }, - dateChange() { - this.data.pageIn.index = 0; - this.fetchData(); - }, - fetchData() { - this.listLoading = true; - this.data.beginDate = this.dateRange[0].replaceAll("-", "/"); - this.data.endDate = this.dateRange[1].replaceAll("-", "/"); - - getData(this.data).then((response) => { - this.list = response.data.findPlayerAttendanceSummary.ls; - this.total = response.data.findPlayerAttendanceSummary.pageOut.total; - this.listLoading = false; - }); - }, - handleSizeChange(val) { - this.data.pageIn.size = val; - this.handleClick(); - }, - handleCurrentChange(val) { - this.data.pageIn.index = val - 1; - this.handleClick(); - }, - 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.findPlayerRenew.ls; - this.total = response.data.findPlayerRenew.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 }, + components: {}, + data() { + return { + dateRange: [], + list: null, + listLoading: true, + activeName: "all", + total: 0, + data: { + staffId: JSON.parse(localStorage.getItem("selectStaff")).id, + keyword: "", + pageIn: { + //鍙�夛紝濡傛灉鏄垎椤垫煡璇紝闇�瑕佸姞涓娿�� + index: 0, //蹇呴�� + size: 10, //姣忛〉鐨勫ぇ灏忋�傞粯璁�20 + sorts: { + name: "p.name", //鎺掑簭瀛楁鍚嶇О + direction: "ASC", //鎺掑簭鏂瑰悜 + }, + }, + }, + dialogVisible: false, }; - 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, + created() { + this.setDate(); + this.fetchData(); + }, + methods: { + /** 灏嗘椂闂撮�夋嫨鍣ㄩ粯璁ら�変负褰撳ぉ鐨勬棩鏈� */ + setDate() { + const today = new Date() + const yesterday = new Date(today) + + yesterday.setDate(yesterday.getDate() - 1) + + let year = yesterday.getFullYear(); + let month = String(yesterday.getMonth() + 1).padStart(2, "0"); + let day = String(yesterday.getDate()).padStart(2, "0"); + + let formattedDate = `${year}-${month}-${day}`; + this.dateRange.push(formattedDate); + this.dateRange.push(formattedDate); }, - }); + setFormattedDate(selfdate) { + + }, + handleExport() { + if (this.dateRange.length == 0) { + this.$message.warning("璇烽�夋嫨鏃ユ湡鑼冨洿"); + return; + } + this.download( + "exportAttendanceReport?staffId=" + this.data.staffId + "&startDate=" + + this.dateRange[0] + + "&endDate=" + + this.dateRange[1], + {}, + `瀛﹀憳鑰冨嫟鎶ヨ〃瀵煎嚭_${new Date().getTime()}.xlsx` + ); + }, + handleImport() { + this.dialogVisible = true; + }, + dateChange() { + this.data.pageIn.index = 0; + this.fetchData(); + }, + fetchData() { + this.listLoading = true; + this.data.beginDate = this.dateRange[0].replaceAll("-", "/"); + this.data.endDate = this.dateRange[1].replaceAll("-", "/"); + + getData(this.data).then((response) => { + this.list = response.data.findPlayerAttendanceSummary.ls; + this.total = response.data.findPlayerAttendanceSummary.pageOut.total; + this.listLoading = false; + }); + }, + handleSizeChange(val) { + this.data.pageIn.size = val; + this.handleClick(); + }, + handleCurrentChange(val) { + this.data.pageIn.index = val - 1; + this.handleClick(); + }, + 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.findPlayerRenew.ls; + this.total = response.data.findPlayerRenew.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 "-"; + } + }, }, - showCreate() { - this.$refs.studentCreate.showDialog(); - }, - changeType(type) { - switch (type) { - case 0: - return "鐝"; - case 1: - return "绾﹁"; - case 2: - return "鍦哄湴"; - default: - return "-"; - } - }, - }, }; </script> \ No newline at end of file -- Gitblit v1.8.0