|
|
@@ -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
|
|
|
},
|
|
|
// 分页/排序处理
|