jiangping
2024-08-27 3a992a2be8c1cc815719ac76cd7242dd7a2f7c2d
h5/pages/driver/reserved.vue
@@ -5,9 +5,19 @@
         <view class="line">
            <view class="label">
               <text>*</text>
               <text>入园原因</text>
            </view>
            <view class="value" @click="showReason = true">
               <text class="mr6" :style="{ color: param.inReason ? '#000000' : '#999999' }">{{ param.inReason ? param.inReason : '请选择' }}</text>
               <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon>
            </view>
         </view>
         <view class="line">
            <view class="label">
               <text>*</text>
               <text>合同号</text>
            </view>
            <view class="value"><input type="text" placeholder="请输入您的合同号" v-model="param.receptMemberName" placeholder-style="color: #999999;" /></view>
            <view class="value"><input type="text" placeholder="请输入您的合同号" v-model="param.contractNum" placeholder-style="color: #999999;" /></view>
         </view>
         <!--  -->
         <view class="line">
@@ -16,7 +26,7 @@
               <text>到场时间</text>
            </view>
            <view class="value" @click="showDatetime = true">
               <text class="mr6" :style="{ color: param.area ? '#000000' : '#999999' }">{{ param.area ? param.area : '请选择' }}</text>
               <text class="mr6" :style="{ color: param.arriveDate ? '#000000' : '#999999' }">{{ param.arriveDate ? param.arriveDate : '请选择' }}</text>
               <u-icon name="arrow-right" color="#CCCCCC" size="16"></u-icon>
            </view>
         </view>
@@ -27,8 +37,8 @@
            </view>
            <view class="value">
               <view class="btns">
                  <view class="btn active">整托盘</view>
                  <view class="btn">件烟</view>
                  <view @click="inTypeClick(0)" :class="{ active: param.inType == 0 }" class="btn">整托盘</view>
                  <view @click="inTypeClick(1)" :class="{ active: param.inType == 1 }" class="btn">件烟</view>
               </view>
            </view>
         </view>
@@ -38,7 +48,7 @@
               <text>总运输量</text>
            </view>
            <view class="value">
               <input type="text" placeholder="请输入总运输量" v-model="param.receptMemberName" placeholder-style="color: #999999;" />
               <input type="number" placeholder="请输入总运输量" v-model="param.totalNum" placeholder-style="color: #999999;" />
               <text class="unit">万支</text>
            </view>
         </view>
@@ -47,8 +57,9 @@
               <text>*</text>
               <text>准运证照片</text>
            </view>
            <view class="value">
               <view class="upload_wrap"><u-icon name="plus" size="20" color="#999999"></u-icon></view>
            <view class="value" @click="handleUpload">
               <image v-if="param.transportImgFull" class="upload_wrap" :src="param.transportImgFull" alt="">
               <view v-else class="upload_wrap"><u-icon name="plus" size="20" color="#999999"></u-icon></view>
            </view>
         </view>
         <view class="empty"></view>
@@ -58,14 +69,14 @@
               <text>*</text>
               <text>司机姓名</text>
            </view>
            <view class="value"><input type="text" placeholder="请输入您的真实姓名" v-model="param.receptMemberName" placeholder-style="color: #999999;" /></view>
            <view class="value"><input type="text" placeholder="请输入您的真实姓名" v-model="param.driverName" placeholder-style="color: #999999;" /></view>
         </view>
         <view class="line">
            <view class="label">
               <text>*</text>
               <text>手机号</text>
            </view>
            <view class="value"><input type="text" placeholder="请输入您的手机号" v-model="param.receptMemberName" placeholder-style="color: #999999;" /></view>
            <view class="value"><input type="number" placeholder="请输入您的手机号" v-model="param.driverPhone" placeholder-style="color: #999999;" /></view>
         </view>
         <!--  -->
         <view class="line">
@@ -74,7 +85,7 @@
               <text>车前牌照号</text>
            </view>
            <view class="value" @click="openInput(1)">
               <text :style="{ color: param.carNos ? '#000000' : '' }">{{ param.carNos ? param.carNos : '请输入车牌号码' }}</text>
               <text :style="{ color: param.carCodeFront ? '#000000' : '#999999' }">{{ param.carCodeFront ? param.carCodeFront : '请输入车牌号码' }}</text>
            </view>
         </view>
         <view class="line">
@@ -82,18 +93,19 @@
               <text>*</text>
               <text>车后牌照号</text>
            </view>
            <view class="value" @click="openInput(1)">
               <text :style="{ color: param.carNos ? '#000000' : '' }">{{ param.carNos ? param.carNos : '请输入车牌号码' }}</text>
            <view class="value" @click="openInput(2)">
               <text :style="{ color: param.carCodeBack    ? '#000000' : '#999999' }">{{ param.carCodeBack    ? param.carCodeBack    : '请输入车牌号码' }}</text>
            </view>
         </view>
         <view class="copy" @click="copy">复制车前牌照号</view>
         <view class="perch"></view>
         <view class="handle_sub">
         <view class="handle_sub" @click="onSubmit">
            提交
         </view>
         <!--  -->
      </view>
      <!--  -->
      <u-picker :show="showReason" keyName="reason" :columns="reasonList" @confirm="reasonConfirm"></u-picker>
      <u-datetime-picker
         :show="showDatetime"
         closeOnClickOverlay
@@ -109,74 +121,130 @@
<script>
import keyboardInput from '@/components/keyboard-input/keyboard-input.vue';
import { uploadUrl } from '@/api';
import { uploadUrl, driverCarApply, driverReasonList } from '@/api';
import dayjs from 'dayjs'
export default {
   components: {
      keyboardInput
   },
   data() {
      return {
         param: {},
         param: {
            inType: 0,
            driverName: uni.getStorageSync('driverInfo').realname,
            driverPhone: uni.getStorageSync('driverInfo').username,
         },
         reasonIndex: -1,
         reasonList: [],
         showDatetime: false,
         showReason: false,
         inputType: ''
      };
   },
   created() {
      this.initData()
   },
   methods: {
      copy(){
         this.param.carNos = this.param.carNos
         uni.showToast({
            title: '复制成功',
            duration: 1000
         });
      },
      handleUpload() {
         uni.chooseImage({
            success: chooseImageRes => {
               uni.showLoading({ title: '上传中', mask: true });
               for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
                  uni.uploadFile({
                     url: `${uploadUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
                     filePath: chooseImageRes.tempFilePaths[i],
                     name: 'file',
                     formData: {
                        folderCode: 'MEMBER_IMG'
                     },
                     success: uploadFileRes => {
                        console.log('uploadFileRes', uploadFileRes);
                        let res = JSON.parse(uploadFileRes.data);
                        if (type === 'faceImg') {
                           this.param.faceImg = res.data.halfPath;
                           this.param.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath;
                        } else {
                           this.param.imgurl = res.data.halfPath;
                           this.param.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath;
                        }
                     },
                     complete() {
                        if (i === chooseImageRes.tempFilePaths.length - 1) {
                           uni.hideLoading();
                        }
                     }
                  });
               }
      onSubmit() {
         const param = { ...this.param }
         if (!param.arriveDate) return this.showToast('请选择到场时间')
         if (!param.inType && param.inType != 0) return this.showToast('请选择入库类型')
         if (!param.contractNum) return this.showToast('请输入合同号')
         if (!param.totalNum) return this.showToast('请输入总运输量')
         if (!param.driverName) return this.showToast('请输入司机姓名')
         if (!param.driverPhone) return this.showToast('请输入手机号')
         if (!param.carCodeFront) return this.showToast('请输入车前牌号')
         if (!param.carCodeBack) return this.showToast('请输入车后牌号')
         if (!param.transportImgFull) return this.showToast('请上传准运证照片')
         param.arriveDate = param.arriveDate + ':00'
         driverCarApply({...param}).then(res => {
            if(res && res.code === 200){
               uni.navigateBack()
            }
         });
         })
      },
      setinDate(e) {},
      initData(){
         driverReasonList().then(res => {
            this.reasonList = [res.data]
         })
      },
      reasonConfirm(e) {
         const reasonList = this.reasonList[0]
         const index = e.indexs[0]
         this.$set(this.param, 'inReason', reasonList[index].reason)
         this.$set(this.param, 'reasonId', reasonList[index].id)
         this.showReason = false
      },
      setinDate(e) {
         this.$set(this.param, 'arriveDate', dayjs(e.value).format('YYYY-MM-DD HH:mm'))
         this.showDatetime = false
      },
      inTypeClick(e) {
         this.param.inType = e
      },
      openInput(type) {
         this.inputType = type;
         this.$refs.keyboard.open();
      },
      setPlate(e) {
         if (this.inputType === 1) {
            this.param.carNos = e;
            this.$set(this.param, 'carCodeFront', e)
         } else if (this.inputType === 2) {
            this.param.carNos = e;
            this.$set(this.param, 'carCodeBack', e)
         }
         this.$forceUpdate();
         this.closeInput();
      },
      copy(){
         if(this.param.carCodeFront){
            this.$set(this.param, 'carCodeBack', this.param.carCodeFront)
            this.showToast('复制成功');
         }
      },
      handleUpload() {
         let token = uni.getStorageSync('token') || ''
         uni.chooseImage({
           count: 1,
           success: (chooseImageRes) => {
             uni.showLoading({ title: '上传中', mask: true })
             const tempFilePaths = chooseImageRes.tempFilePaths
             let imgs = tempFilePaths.map((value, index) => {
               return {
                 name: 'file',
                 uri: value
               }
             })
             uni.uploadFile({
               url: `${uploadUrl}`,
               files: imgs,
               name: 'file',
               formData: {
                 folder: 'PLATFORM'
               },
               header: {
                 Dm_user_token: token
               },
               success: (uploadFileRes) => {
                 let res = JSON.parse(uploadFileRes.data)
                 console.log('res', res.data)
                 if (res.data && res.data.length > 0) {
                        this.$set(this.param, 'transportImg', res.data[0].imgaddr)
                        this.$set(this.param, 'transportImgFull', res.data[0].url)
                 }
               },
               fail(err) {
                 console.log('err', err)
               },
               complete() {
                 uni.hideLoading()
               }
             })
             // }
           }
         })
      },
      closeInput() {
         this.$refs.keyboard.close();
      }