-
zhangwei
2025-03-06 8c047f7da19d7e59136a322e1a851d4b6b0eab97
src/pages/checkin/checkin.vue
@@ -1,31 +1,43 @@
<template>
   <view>
      <view class='chuany-flex camera-fill chuany-justify-center chuany-align-center'>
         <fui-upload immediate :url="`${apiBaseUrl}/api/UpFile/UpdateFile`" ref="uploadE" max='1' @success="success"
            :sizeType='sizeType' :sourceType='sourceType' @error="error" @complete="complete" width="280"
            height="280">
         <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="widthFix" style="width: 280rpx;height: 280rpx;">
               <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="uploadP" max='1' @error="error" @complete="completePerson" width="280" height="280"
            :sizeType='sizeType' :sourceType='sourceType'>
         </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="widthFix" style="width: 280rpx;height: 280rpx;"></image>
               <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">
         为了保证打卡的正确性,‌建议在公司门口或进入办公室的门口再打卡。‌同时,‌确保照片的清晰、‌明亮,‌面部可见。
         打卡计时以小时为单位进行核算。员工每次打卡记录的时间差将精确到小时。例如,员工上班打卡9点,下班打卡12点30分,计为4小时工作时长。
      </view>
      <view v-if='dakaList&&dakaList.length>0'>
         <view class="chuany-flex chuany-justify-evenly chuany-flex-wrap c-p-t-20">
@@ -48,7 +60,7 @@
         </view>
      </view>
      <view class="tabbtns">
         <up-button color='#fece01' class="text-69" text="确认打卡" :loading='isLoading' loadingText="打卡中"
         <up-button color='#fece01' text="确认打卡" :loading='isLoading' loadingText="打卡中"
            @click="enroll"></up-button>
      </view>
   </view>
@@ -69,6 +81,7 @@
            dakaList: [],
            sourceType: ["camera"],
            sizeType: ['compressed'],
            mediaType: ['image'],
            isLoading: false
         }
      },
@@ -77,6 +90,19 @@
         let id = option.orderid
         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) {
@@ -100,18 +126,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) {
@@ -140,6 +170,8 @@
         },
         completePerson(e) {
            if (e.action == 'delete') {
               this.faceImg = ''
               this.$db.del('faceImg')
               // 删除处理
               return
            }
@@ -181,6 +213,7 @@
                  })
                  this.checkPhoto = '' //打卡照片
                  this.faceImg = ''
                  this.$db.del('faceImg')
                  this.$refs.uploadP.deleteImage()
                  this.$refs.uploadE.deleteImage()
                  this.getDaka(this.orderBiddingId)
@@ -197,6 +230,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;