<template> <view class="pad-x120"> <!-- 头部 --> <status-nav :ifReturn="false" navBarTitle="工地加班"></status-nav> <view class="content" :style="{'padding-top':statusHeight+50+'px'}"> <!-- 导航 --> <view class="pull-nav" :style="{'top':statusHeight+50+'px'}"> <sub-nav @changeEv="changeEv"></sub-nav> </view> <!-- 全选 --> <view class="choose-all-bg"> <view class="choose-all font26" v-if="status==0 && overtimeList.length>0"> <view class="radio" :class="isAll?'checked':''" @tap="chooseAll"></view> <view class="title">全选</view> <view class="choose-all-btns font24" v-if="ids!==''"> <view class="btn color-blue" @tap="submitAll(1)">一键确认</view> <view class="btn color-99 btn-no" @tap="submitAll(0)">退回</view> </view> </view> </view> <!-- 加班列表 --> <view class="sign-record sign-record-other bg-white"> <view class="item font26" v-for="(item,index) in overtimeList" :key="index"> <view class="radio" :class="item.ifcheck?'checked':''" @tap="chooseEv(index)" v-if="status==0"></view> <view class="info" :class="status==0?'hide':''"> <text>工地:{{item.worksite_name}}</text> <text>姓名:{{item.worker_name}}</text> <text>加班时长:{{item.time}}小时</text> <text>提交时间:{{item.create_time}}</text> <text>备注:{{item.remarks}}</text> </view> <!-- 待确认 --> <view class="examine-btns font24" v-if="item.status==0"> <view class="btn color-blue" @tap="submitEv(item.id,1)">确认</view> <view class="btn color-99" @tap="submitEv(item.id,0)">退回</view> </view> <!-- 已确认 --> <view class="state" :class="item.status==-1?'color-red':''" v-if="item.status==1 || item.status==-1">{{item.status_text}}</view> </view> </view> <!-- 加载更多 --> <view class="more-tips font24">{{overtimeList.length==total?'没有更多数据了':'下滑获取更多'}}</view> </view> <!-- 尾部 --> <tabbar :userType="userType" current="3"></tabbar> </view> </template> <script> import subNav from '@/components/sub-nav/sub-nav.vue'; import tabbar from '@/components/tabbar/tabbar'; export default { components:{ subNav, tabbar }, data() { return { statusHeight:uni.getSystemInfoSync().statusBarHeight, //状态栏高度 userType:'director', //账户类型 工人:worker 负责人:director overtimeList:[], //打卡列表 page:1, size:10, status:0, total:0, isAll:false, //是否全选 ids:'', //选中的id } }, onLoad() { }, onShow() { // 获取加班列表 this.getOvertimeList(); }, onReachBottom() { if(this.overtimeList.length<this.total){ this.page++; // 获取加班列表 this.getOvertimeList(); } }, onPullDownRefresh() { this.page = 1; // 获取加班列表 this.getOvertimeList(); // 关闭下拉刷新 uni.stopPullDownRefresh(); }, onShareAppMessage(res) { let shareObj = { title:'工地打卡', path: '/pages/pagehome/pagehome', imageUrl:'/static/share-logo.jpg', } // 返回shareObj return shareObj; }, methods: { // 选择栏目 changeEv(index){ this.status = index; this.page = 1; // 获取加班列表 this.getOvertimeList(); }, // 选中事件 chooseEv(index) { this.overtimeList[index].ifcheck = !this.overtimeList[index].ifcheck; let exit = this.overtimeList.filter(item=>item.ifcheck==false); if(exit.length>0){ this.isAll = false; } else { this.isAll = true; } let idsTemparr = this.overtimeList.filter(item=>{return item.ifcheck==true}) let idsArr = []; idsTemparr.forEach(item=>{ idsArr.push(item.id) }) // 选中的id this.ids = idsArr.join(','); }, // 全选事件 chooseAll(){ let exit = this.overtimeList.filter(item=>item.ifcheck==false); if(exit.length>0){ this.isAll = true; this.overtimeList.forEach(item=>item.ifcheck = true); } else { this.isAll = false; this.overtimeList.forEach(item=>{item.ifcheck = false}); } let idsTemparr = this.overtimeList.filter(item=>{return item.ifcheck==true}) let idsArr = []; idsTemparr.forEach(item=>{ idsArr.push(item.id) }) // 选中的id this.ids = idsArr.join(','); }, // 确认&退回事件 submitEv(id,type){ let params = { id:id, type:type } this.$requst.post('/api/v1/manager/check-overtime',params).then(res=>{ if(res.code==0){ if(type==0){ this.$toolAll.tools.showToast('已退回'); }else{ this.$toolAll.tools.showToast('已确认'); } // 获取加班列表 this.getOvertimeList(); } }) }, // 批量确认&退回事件 submitAll(type){ let params = { id:this.ids, type:type } this.$requst.post('/api/v1/manager/check-overtime',params).then(res=>{ if(res.code==0){ if(type==0){ this.$toolAll.tools.showToast('已退回'); }else{ this.$toolAll.tools.showToast('已确认'); } // 获取加班列表 this.getOvertimeList(); } }) }, // 获取加班列表 getOvertimeList(){ let params = { page:this.page, size:this.size, status:this.status } if(this.page==1) this.overtimeList = []; this.$requst.post('/api/v1/manager/overtime-list',params).then(res=>{ if(res.code==0){ console.log(res,'打卡列表'); this.total = res.data.total; let overtimeArr = []; res.data.list.forEach(item=>{ let obj = { id: item.id, worksite_name:item.worksite_name, worker_name:item.worker_name, time:item.time, create_time: item.create_time, status:item.status, status_text:item.status_text, remarks:item.remarks, ifcheck:false, } overtimeArr.push(obj); }) this.overtimeList = this.overtimeList.concat(overtimeArr); } }) }, } } </script> <style scoped> </style>