building-sign/pagesA/signRecord/signRecord.vue

210 lines
6.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="pad-x120">
<!-- 头部 -->
<status-nav navBarTitle="打卡记录"></status-nav>
<view class="content" :style="{'padding-top':statusHeight+50+'px'}">
<!-- 筛选 -->
<view class="screen-box screen-box-other">
<view class="item">
<picker class="font24" mode="selector" :range="worksiteList" @change="bindWorksiteChange" :value="worksiteIndex" :range-key="'name'">
<view class="name">
<text class="clips1" :class="worksiteIndex==-1?'color-99':''">{{worksiteIndex!==-1?worksiteList[worksiteIndex].name:'请选择工地'}}</text>
<image src="/static/icon/icon-arrow-02.png" mode="aspectFit"></image>
</view>
</picker>
</view>
<view class="item font26 color-blue" @tap="showCard=true">
<view class="name" style="justify-content: center;">补卡操作</view>
</view>
</view>
<!-- 打卡日历 -->
<view class="sign-calendar">
<sign-calendar ref="signCalendar" @getDate="getDate"></sign-calendar>
</view>
<!-- 时间 -->
<view class="sign-record-date font26">{{curDate.substr(0,4)+'年'+curDate.substr(5,2)+'月'+curDate.substr(8,2)+'日'}} 打卡情况</view>
<!-- 打卡记录 -->
<view class="sign-record sign-record-other bg-white">
<view class="item font26" v-for="(item,index) in signList" :key="index">
<view class="info">
<text>{{item.type_text}}打卡:{{item.created_at.substr(item.created_at.length-8)}}</text>
<text>打卡工地:{{item.worksite_name}}</text>
</view>
<view class="state color-red" v-if="item.status==-1">{{item.status_text}}</view>
<view class="state color-blue" v-if="item.status==0">{{item.status_text}}</view>
<view class="state" v-if="item.status==1">{{item.status_text}}</view>
</view>
</view>
<!-- 加载更多 -->
<view class="more-tips font24">{{signList.length==total?'没有更多数据了':'下滑获取更多'}}</view>
</view>
<!-- 补卡弹窗 -->
<view class="pop-up-bg" v-if="showCard">
<view class="sign-cate bg-white">
<view class="title font34">请选择补卡时间</view>
<view class="txt font28">
<view class="radio-item" @tap="changeSignType(index)" v-for="(item,index) in radioList" :key="index">
<view :class="radioIndex==index?'checked':''"></view>
<view>{{item.title}}</view>
</view>
</view>
<!-- 审核按钮 -->
<view class="sign-cate-btns color-white font30">
<view class="btn" @tap="showCard=false,radioIndex=0"></view>
<view class="btn" @tap="submitEv"></view>
</view>
</view>
</view>
<!-- -->
<tabbar :userType="userType" current="2"></tabbar>
</view>
</template>
<script>
import signCalendar from '@/components/sign-calendar/sign-calendar';
import tabbar from '@/components/tabbar/tabbar';
export default {
components:{
signCalendar,
tabbar
},
data() {
return {
statusHeight:uni.getSystemInfoSync().statusBarHeight, //状态栏高度
userType:'', //账户类型 工人worker 负责人director
signList:[], //打卡列表
radioList:[
{title:'上午上班',type:'morning_on'},
{title:'上午下班',type:'morning_off'},
{title:'下午上班',type:'afternoon_on'},
{title:'下午下班',type:'afternoon_off'}
],//打卡类型
radioIndex:0, //当前选择
curDate:'', //当前日期
page:1,
size:10,
total:0,
worksiteList:[], //工地列表
worksiteIndex:-1, //当前选择
showCard:false, //是否显示补卡
}
},
onLoad(op) {
if(op.userType){
this.userType = op.userType;
}
if(op.date){
// 获取选择日期
this.curDate = op.date;
}else{
let year = new Date().getFullYear();
let month = new Date().getMonth() + 1;
let day = new Date().getDate();
this.curDate = `${year}-${month<10?'0'+month:month}-${day<10?'0'+day:day}`;
}
//
this.getWorksiteList();
},
onShow() {
//
this.getSignList();
},
onReachBottom() {
if(this.signList.length<this.total){
this.page++;
//
this.getSignList();
}
},
onPullDownRefresh() {
this.page = 1;
//
this.getSignList();
//
uni.stopPullDownRefresh();
},
onShareAppMessage(res) {
let shareObj = {
title:'工地打卡',
path: '/pages/pagehome/pagehome',
imageUrl:'/static/share-logo.jpg',
}
// shareObj
return shareObj;
},
methods: {
//
getWorksiteList(){
this.$requst.get('/api/v1/common/worksite-list').then(res=>{
if(res.code==0){
this.worksiteList = res.data.list;
if(uni.getStorageSync('worksite_id')){
this.worksiteIndex = this.worksiteList.findIndex(item=> item.id === uni.getStorageSync('worksite_id'));
}else{
this.worksiteIndex = this.worksiteList.findIndex(item=> item.id === uni.getStorageSync('baseWorksiteId'));
}
this.isLoding = true;
}
})
},
// 改变上下班打卡
changeSignType(index){
if(this.radioIndex !== index){
this.radioIndex = index;
}
},
// 获取选择时间
getDate(date){
console.log(date,'当前选择时间')
},
// 确认补卡
submitEv(){
let params = {
day:this.curDate,
worksite_id:this.worksiteList[this.worksiteIndex].id,
type:this.radioList[this.radioIndex].type
}
this.$requst.post('/api/v1/worker/replenish',params).then(res=>{
if(res.code==0){
this.$toolAll.tools.showToast('补卡成功');
this.showCard = false;
// 获取状态列表
this.$refs.signCalendar.getStatusObj();
}
})
},
// 获取打卡列表
getSignList(){
let params = {
page:this.page,
size:this.size,
worksite_id:this.worksiteIndex==-1?'':this.worksiteList[this.worksiteIndex].id,
begin_at:this.beginDate,
end_at:this.endDate
}
if(this.page==1) this.signList = [];
this.$requst.post('/api/v1/worker/clock-list',params).then(res=>{
if(res.code==0){
console.log(res,'打卡记录');
this.total = res.data.total;
this.signList = this.signList.concat(res.data.list);
}
})
},
// 选择工地
bindWorksiteChange(e) {
this.worksiteIndex = e.detail.value;
this.page = 1;
// 获取打卡列表
this.getSignList();
},
}
}
</script>
<style scoped>
</style>