Parcourir la source

考勤功能-修复分页不显示总页数

zhonghuizhen il y a 1 an
Parent
commit
70739c65c0

+ 6 - 4
src/views/business/attendance/attendanceDetails.vue

@@ -102,7 +102,8 @@ export default {
             height: document.clientHeight,
             listData: [],
             pagination: {
-                currentPage: 1,
+                totalCount: 0,
+                page: 1,
                 limit: 15
             },
             sorts: {},
@@ -145,7 +146,7 @@ export default {
                     item.userName = this.getUserLabel(item.yong_hu_id_)
                     item.deptName = this.getDeptLabel(item.bu_men_)
                 })
-                // this.pagination.total = res.totalCount
+                this.pagination.totalCount = this.listData[0].total_count
             }).finally(() => {
                 this.loading = false
             })
@@ -168,8 +169,9 @@ export default {
             return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
         },
         getSearchSql () {
-            let sql = `select * FROM t_attendance_detail`
             const params = this.getSearchFormData()
+            const { first, second } = this.$store.getters.level || {}
+            let sql = `select t.*, (select COUNT(*) FROM t_attendance_detail WHERE di_dian_ = '${second || first}') AS total_count FROM t_attendance_detail t`
             // 定义操作符映射
             const operatorMap = {
                 'S': '=',
@@ -204,7 +206,7 @@ export default {
                 }
             }
             // 添加分页
-            sql += ` LIMIT ${this.pagination.limit} OFFSET ${(this.pagination.currentPage - 1) * this.pagination.limit}`
+            sql += ` LIMIT ${this.pagination.limit} OFFSET ${(this.pagination.page - 1) * this.pagination.limit}`
             return sql
         },
         // 分页/排序处理

+ 58 - 48
src/views/business/attendance/attendanceOverview.vue

@@ -93,6 +93,7 @@ export default {
             height: document.clientHeight,
             listData: [],
             pagination: {
+                totalCount: 0,
                 currentPage: 1,
                 limit: 15
             },
@@ -135,7 +136,7 @@ export default {
                     item.userName = this.getUserLabel(item.yong_hu_id_)
                     item.deptName = this.getDeptLabel(item.bu_men_)
                 })
-                // this.pagination.total = res.totalCount
+                this.pagination.totalCount = this.listData[0].total_count
             }).finally(() => {
                 this.loading = false
             })
@@ -160,49 +161,7 @@ export default {
             return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
         },
         getSearchSql () {
-            let sql = `select 
-                        USER_ID_,
-                        ri_qi_,
-                        user_name_,
-		                pos_name_,
-		                gong_hao_,
-                        MIN(da_ka_shi_jian_1_) AS zui_zao,
-                        MAX(da_ka_shi_jian_2_) AS zui_wan,
-
-                        SUM(CASE WHEN da_ka_shi_jian_1_ IS NOT NULL AND da_ka_shi_jian_1_ != '' THEN 1 ELSE 0 END) +
-                        SUM(CASE WHEN da_ka_shi_jian_2_ IS NOT NULL AND da_ka_shi_jian_2_ != '' THEN 1 ELSE 0 END) AS da_ka_ci_shu_,
-                        SUM(ban_ci_shi_chang_) AS total_ban_ci_shi_chang,
-                        SUM(gong_zuo_shi_chan) AS total_gong_zuo_shi_chan,
-
-                        SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
-                        SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END) AS chi_dao_ci_shu,
-                        SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
-                        SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END) AS que_qin_ci_shu,
-
-                        CASE 
-                            WHEN SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END) > 0 
-                                AND SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
-                                    SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END) > 0 
-                            THEN CONCAT('迟到', 
-                                SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END), '次,缺勤',
-                                SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END), '次')
-                            WHEN SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END) > 0 
-                            THEN CONCAT('迟到', 
-                                SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END), '次')
-                            WHEN SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END) > 0 
-                            THEN CONCAT('缺勤', 
-                                SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
-                                SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END), '次')
-                            ELSE '正常'
-                        END AS kao_qin_zhuang_tai
-                    FROM 
-                        v_attendance_statistics `
+            let sql = ``
             const params = this.getSearchFormData()
             // 定义操作符映射
             const operatorMap = {
@@ -234,12 +193,63 @@ export default {
                 })
 
                 if (conditions.length > 0) {
-                    sql += ' WHERE ' + conditions.join(' AND ')
-                    sql += ' GROUP BY USER_ID_, ri_qi_ ORDER BY ri_qi_ DESC,USER_ID_ '
+                    const wherestr = ' WHERE ' + conditions.join(' AND ')
+                    sql = `select 
+                            t.*,
+                            (select COUNT(DISTINCT USER_ID_) 
+                            FROM v_attendance_statistics
+                            ${wherestr}
+                            ) AS total_count
+                        FROM (
+                            select 
+                                USER_ID_,
+                                ri_qi_,
+                                user_name_,
+                                pos_name_,
+                                gong_hao_,
+                                MIN(da_ka_shi_jian_1_) AS zui_zao,
+                                MAX(da_ka_shi_jian_2_) AS zui_wan,
+                                SUM(CASE WHEN da_ka_shi_jian_1_ IS NOT NULL AND da_ka_shi_jian_1_ != '' THEN 1 ELSE 0 END) +
+                                SUM(CASE WHEN da_ka_shi_jian_2_ IS NOT NULL AND da_ka_shi_jian_2_ != '' THEN 1 ELSE 0 END) AS da_ka_ci_shu_,
+                                SUM(ban_ci_shi_chang_) AS total_ban_ci_shi_chang,
+                                SUM(gong_zuo_shi_chan) AS total_gong_zuo_shi_chan,
+                                SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
+                                SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END) AS chi_dao_ci_shu,
+                                SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
+                                SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END) AS que_qin_ci_shu,
+                                CASE 
+                                    WHEN SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END) > 0 
+                                        AND SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
+                                            SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END) > 0 
+                                    THEN CONCAT('迟到', 
+                                        SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END), '次,缺勤',
+                                        SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END), '次')
+                                    WHEN SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END) > 0 
+                                    THEN CONCAT('迟到', 
+                                        SUM(CASE WHEN zhuang_tai_1_ = '迟到' THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '迟到' THEN 1 ELSE 0 END), '次')
+                                    WHEN SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END) > 0 
+                                    THEN CONCAT('缺勤', 
+                                        SUM(CASE WHEN zhuang_tai_1_ = '缺勤' OR zhuang_tai_1_ IS NULL THEN 1 ELSE 0 END) + 
+                                        SUM(CASE WHEN zhuang_tai_2_ = '缺勤' OR zhuang_tai_2_ IS NULL THEN 1 ELSE 0 END), '次')
+                                    ELSE '正常'
+                                END AS kao_qin_zhuang_tai
+                            FROM 
+                                v_attendance_statistics
+                            ${wherestr}
+                            GROUP BY 
+                                USER_ID_, ri_qi_
+                            ORDER BY 
+                                USER_ID_, ri_qi_
+                            LIMIT ${this.pagination.limit} OFFSET ${(this.pagination.currentPage - 1) * this.pagination.limit}
+                        ) t `
                 }
             }
-            // 添加分页
-            sql += ` LIMIT ${this.pagination.limit} OFFSET ${(this.pagination.currentPage - 1) * this.pagination.limit}`
             return sql
         },
         // 分页/排序处理

+ 3 - 1
src/views/business/attendance/attendanceStatistics.vue

@@ -121,6 +121,7 @@ export default {
             height: document.clientHeight,
             listData: [],
             pagination: {
+                totalCount: 0,
                 currentPage: 1,
                 limit: 15
             },
@@ -163,7 +164,7 @@ export default {
                     item.userName = this.getUserLabel(item.yong_hu_id_)
                     item.deptName = this.getDeptLabel(item.bu_men_)
                 })
-                // this.pagination.total = res.totalCount
+                this.pagination.totalCount = this.listData[0].total_count
             }).finally(() => {
                 this.loading = false
             })
@@ -189,6 +190,7 @@ export default {
         },
         getSearchSql () {
             let sql = `select 
+                        COUNT(*) AS total_count,
                         USER_ID_,
                         ri_qi_,
                         user_name_,

+ 3 - 1
src/views/business/attendance/makeUPVerify.vue

@@ -51,6 +51,7 @@ export default {
             height: document.clientHeight,
             listData: [],
             pagination: {
+                totalCount: 0,
                 currentPage: 1,
                 limit: 15
             },
@@ -137,7 +138,8 @@ export default {
             return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
         },
         getSearchSql () {
-            let sql = `select * FROM t_attendance_reissue`
+            const { first, second } = this.$store.getters.level || {}
+            let sql = `select t.*, (select COUNT(*) FROM t_attendance_reissue WHERE di_dian_ = '${second || first}' and shen_he_ren_ = '${this.$store.getters.userId}' ) AS total_count FROM t_attendance_reissue t`
             const params = this.getSearchFormData()
             // 定义操作符映射
             const operatorMap = {

+ 2 - 2
src/views/business/attendance/makeUpEdit.vue

@@ -94,10 +94,10 @@ import { queryAttendanceDetail, saveAttendanceReissue } from '@/api/business/att
 import IbpsAttachment from '@/business/platform/file/attachment/selector'
 import ActionUtils from '@/utils/action'
 export default {
+    name: 'makeupedit',
     components: {
         IbpsAttachment
     },
-    name: 'MakeUpEdit',
     props: {
         visible: Boolean,
         params: {
@@ -243,7 +243,7 @@ export default {
                 // 补卡关联的考勤数据
                 const updateObj = self.buKaBanCiOptions.filter(obj => obj.value === self.formData.buKaBanCi)
                 const updateId = updateObj[0].id
-                let updateData = self.yichangdata.filter(obj => obj.id === updateId)
+                const updateData = self.yichangdata.filter(obj => obj.id === updateId)
 
                 // 获得补卡审批人
                 const sql = `select USER_ID_ FROM t_schedule_detail WHERE id_ = '${updateData[0].paiBanJiLuId}'`

+ 4 - 2
src/views/business/attendance/makeUpRecords.vue

@@ -52,6 +52,7 @@ export default {
             height: document.clientHeight,
             listData: [],
             pagination: {
+                totalCount: 0,
                 currentPage: 1,
                 limit: 15
             },
@@ -114,7 +115,7 @@ export default {
                     item.userName = this.getUserLabel(item.yong_hu_id_)
                     item.deptName = this.getDeptLabel(item.bu_men_)
                 })
-                // this.pagination.total = res.totalCount
+                this.pagination.totalCount = this.listData[0].total_count
             }).finally(() => {
                 this.loading = false
             })
@@ -137,7 +138,8 @@ export default {
             return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
         },
         getSearchSql () {
-            let sql = `select * FROM t_attendance_reissue`
+            const { first, second } = this.$store.getters.level || {}
+            let sql = `select t.*, (select COUNT(*) FROM t_attendance_reissue WHERE di_dian_ = '${second || first}' ) AS total_count FROM t_attendance_reissue t`
             const params = this.getSearchFormData()
             // 定义操作符映射
             const operatorMap = {

+ 4 - 2
src/views/business/attendance/personAttendanceDetails.vue

@@ -102,6 +102,7 @@ export default {
             height: document.clientHeight,
             listData: [],
             pagination: {
+                totalCount: 0,
                 currentPage: 1,
                 limit: 15
             },
@@ -143,7 +144,7 @@ export default {
                     item.userName = this.getUserLabel(item.yong_hu_id_)
                     item.deptName = this.getDeptLabel(item.bu_men_)
                 })
-                // this.pagination.total = res.totalCount
+                this.pagination.totalCount = this.listData[0].total_count
             }).finally(() => {
                 this.loading = false
             })
@@ -168,7 +169,8 @@ export default {
             return ActionUtils.formatParams(searchParam, this.pagination, this.sorts)
         },
         getSearchSql () {
-            let sql = `select * FROM t_attendance_detail`
+            const { first, second } = this.$store.getters.level || {}
+            let sql = `select t.*, (select COUNT(*) FROM t_attendance_detail WHERE di_dian_ = '${second || first}' AND yong_hu_id_ = '${this.$store.getters.userId}' ) AS total_count FROM t_attendance_detail t `
             const params = this.getSearchFormData()
             // 定义操作符映射
             const operatorMap = {