zhangwei
2025-01-16 e3f6581c48b1dfb65c55e8a1a6ce1761a7dc26b4
src/pages/checkin/checkin.vue
@@ -1,27 +1,44 @@
<template>
   <view>
      <view class='chuany-flex camera-fill chuany-justify-center chuany-align-center'>
         <fui-upload immediate :url="`${apiBaseUrl}api/UpFile/UpdateFile`" ref="uploadB" max='1' @success="success"
            @error="error" @complete="complete" width="280" height="280">
            <image v-if="checkPhoto" :src="checkPhoto" mode="widthFix" style="width: 280rpx;height: 280rpx;">
            </image>
         <tem-upload-fui immediate :url="`${apiBaseUrl}/api/UpFile/UpdateFile`" ref="uploadE" max='1'
            @success="success" cameraType='back' :sizeType='sizeType' :sourceType='sourceType' @error="error"
            @complete="complete" width="280" :mediaType='mediaType' height="280">
            <view class="" v-if="checkPhoto">
               <image :src="checkPhoto" mode="aspectFill" style="width: 280rpx;height: 280rpx;">
               </image>
            </view>
            <view class=" chuany-flex chuany-flex-direction chuany-align-center" v-else>
               <fui-icon name="camera-fill"></fui-icon>
               <view class="chuany-font20">拍摄环境照片</view>
            </view>
         </fui-upload>
         <fui-upload ref="uploadB" max='1' @error="error" @complete="completePerson" width="280" height="280">
            <image v-if="src" :src="src" mode="widthFix" style="width: 280rpx;height: 280rpx;"></image>
         </tem-upload-fui>
         <tem-upload-fui ref="uploadP" max='1' @error="error" @complete="completePerson" width="280" height="280"
            :sizeType='sizeType' :sourceType='sourceType' :mediaType='mediaType' :isFace='true'>
            <view class="" v-if="faceImg">
               <image :src="faceImg" mode="aspectFill" style="width: 280rpx;height: 280rpx;"></image>
            </view>
            <view class=" chuany-flex chuany-flex-direction chuany-align-center" v-else>
               <fui-icon name="addfriends-fill"></fui-icon>
               <view class="chuany-font20">拍摄人脸照片</view>
            </view>
         </fui-upload>
         </tem-upload-fui>
         <!-- <view class="fui-upload__item fui-upload__noborder"
            style="width:280rpx;height:280rpx;background:#eee;" @tap.stop="openCamera">
            <view class="" v-if="faceImg">
               <image :src="faceImg" mode="aspectFill" style="width: 280rpx;height: 280rpx;"></image>
            </view>
            <view class=" chuany-flex chuany-flex-direction chuany-align-center" v-else>
               <fui-icon name="addfriends-fill"></fui-icon>
               <view class="chuany-font20">拍摄人脸照片</view>
            </view>
         </view> -->
      </view>
      <view class="c-m-20 chuany-font24">
         为了保证打卡的正确性,‌建议在公司门口或进入办公室的门口再打卡。‌同时,‌确保照片的清晰、‌明亮,‌面部可见。
      </view>
      <view>
      <view v-if='dakaList&&dakaList.length>0'>
         <view class="chuany-flex chuany-justify-evenly chuany-flex-wrap c-p-t-20">
            <view
               class="chuany-flex chuany-flex-direction chuany-align-center chuany-justify-around textclo chuany-font24 c-p-b-30 daka"
@@ -42,7 +59,8 @@
         </view>
      </view>
      <view class="tabbtns">
         <up-button color='#fece01' class="text-69" text="确认打卡" @click="enroll"></up-button>
         <up-button color='#fece01' class="text-69" text="确认打卡" :loading='isLoading' loadingText="打卡中"
            @click="enroll"></up-button>
      </view>
   </view>
</template>
@@ -59,7 +77,11 @@
            orderBiddingId: '', //招工明细OrderBiddingId
            checkPhoto: '', //打卡照片
            faceImg: '', //人脸图片
            dakaList: null
            dakaList: [],
            sourceType: ["camera"],
            sizeType: ['compressed'],
            mediaType: ['image'],
            isLoading: false
         }
      },
      onLoad(option) {
@@ -68,18 +90,33 @@
         this.orderBiddingId = id
         this.getDaka(id)
      },
      onShow(){
         if(this.$db.get('faceImg')){
            let faceImgPath = this.$db.get('faceImg')
            this.$refs.uploadP.urls = [faceImgPath]
            this.$refs.uploadP.status = ['success']
            this.$util.pathToBase64(faceImgPath).then(res => {
               this.faceImg = res
            })
         }
      },
      onUnload(){
         this.$db.del('faceImg')
      },
      methods: {
         getDaka(id) {
            this.$api.getDaka({
               orderId: id
            }).then(res => {
               if(res.code==1){
                  this.dakaList = res.data.orderBiddingDetailCheck
                  this.dakaList.length = 3
               if (res.code == 1) {
                  this.dakaList = res.data ? res.data.orderBiddingDetailCheck : []
                  if (this.dakaList.length > 6) {
                     this.dakaList.length = 6
                  }
                  if (this.dakaList.length % 2 !== 0) {
                     this.dakaList.push({})
                  }
               }else{
               } else {
                  this.$util.showToast({
                     title: res.error
                  })
@@ -88,18 +125,22 @@
         },
         openCamera() {
            // 拍照和相册
            uni.chooseImage({
               count: 1,
               sizeType: ["original", "compressed"],
               sourceType: ["camera"],
               success: (res) => {
                  const {
                     tempFilePaths
                  } = res;
                  console.log(tempFilePaths);
               },
            });
            // uni.chooseMedia({
            //    count: 1,
            //    mediaType: ['image'],
            //    sizeType: ["compressed"],
            //    sourceType: ["camera"],
            //    camera: 'front',
            //    success: (res) => {
            //       const {
            //          tempFiles
            //       } = res;
            //       this.$util.pathToBase64(tempFiles[0].tempFilePath).then(res => {
            //          this.faceImg = res
            //       })
            //    },
            // });
         },
         success(e) {
@@ -127,6 +168,12 @@
            console.log(e, '删除')
         },
         completePerson(e) {
            if (e.action == 'delete') {
               this.faceImg = ''
               this.$db.del('faceImg')
               // 删除处理
               return
            }
            this.$util.pathToBase64(e.urls[0]).then(res => {
               this.faceImg = res
            })
@@ -151,6 +198,7 @@
               })
               return
            }
            this.isLoading = true
            let obj = {
               OrderId: this.orderBiddingId, //招工明细OrderBiddingId
               checkPhoto: this.checkPhoto, //打卡照片
@@ -162,12 +210,18 @@
                     title: "打卡成功!",
                     icon: "success"
                  })
                  this.checkPhoto = '' //打卡照片
                  this.faceImg = ''
                  this.$db.del('faceImg')
                  this.$refs.uploadP.deleteImage()
                  this.$refs.uploadE.deleteImage()
                  this.getDaka(this.orderBiddingId)
               } else {
                  this.$util.showToast({
                     title: res.data,
                     title: res.error,
                  })
               }
               this.isLoading = false
            })
         }
      }
@@ -175,6 +229,28 @@
</script>
<style lang="scss">
   .fui-upload__item {
      /* #ifndef APP-NVUE */
      display: flex;
      /* #endif */
      align-items: center;
      justify-content: center;
      margin-right: 20rpx;
      margin-bottom: 20rpx;
      /* #ifdef H5 */
      cursor: pointer;
      /* #endif */
      position: relative;
      /* #ifndef APP-NVUE */
      box-sizing: border-box;
      /* #endif */
   }
   .fui-upload__noborder {
      border-width: 0;
   }
   .camera-fill {
      // width: 400rpx;
      // height: 400rpx;