MrShi
2025-09-12 f222a7fbe8f5a9f279467f986a1e4ca9a86217e6
small-program/pages/order-details/order-details.vue
@@ -55,7 +55,8 @@
            <text v-if="info.type===2">订餐单</text>
            
         </view>
         <view v-if="info.type===0" class="order-info-wz">{{info.categoryName || ''}}|{{info.priceNum1 || '' }}{{info.workType === 0?'斤':'人'}}</view>
         <view v-if="info.type===0" class="order-info-wz">
         {{info.categoryName || ''}}|{{info.priceNum1 || '' }}{{feeFrom.priceParam1.unit}}{{feeFrom.priceParam2.name!=null?(' | '+info.priceNum2+feeFrom.priceParam2.unit):''}}</view>
         <view v-if="info.type===1" class="order-info-wz">{{info.carUnit || ''}}{{' | '}}{{info.transportTypeName || ''}}{{' | '}}{{info.transportNum || '' }}{{info.transportUnit||''}}{{' | '}}需{{info.priceNum2 || '' }}辆</view> 
         <view class="order-info-address">
            <image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image>
@@ -111,16 +112,10 @@
            </view>
            <view class="price-row">
               <view class="price-row-label">预估总费用(元)</view>
               <view class="price-row-val" :style="{color: userInfo.id !== info.acceptMemberId ? '#FF0000' : ''}">
               <view class="price-row-val" :style="{color: (!isPushlishor&&info.status!=4&&info.status!=5) || (isPushlishor&&info.type!=2 &&info.status!=4&&info.status!=5) ? '#FF0000' : ''}">
                  ¥{{((info.originEstimatedAccount||0)/100).toFixed(2) }}
               </view>
            </view>
            <view class="price-row"   v-if="isAcceptor&&(info.type==2 || (info.status!=5&& info.status!=4))">
               <view class="price-row-label">实际到账(元)</view>
               <view class="price-row-val" style="color: #FF0000;">
                  ¥{{((info.receiveAccount || 0) / 100).toFixed(2) }}
               </view>
            </view>
            </view>
         </view>
         <template v-if="info.type!=2&&(info.status==5|| info.status==4)">
            <view class="order-info-x"></view>
@@ -142,7 +137,7 @@
               </view>
               <view class="price-row">
                  <view class="price-row-label">实际总费用(元)</view>
                  <view class="price-row-val" style="color:  #FF0000">
                  <view class="price-row-val" :style="{color: info.status !=4 ? '#FF0000' : ''}">
                     ¥{{((info.estimatedAccount||0)/100).toFixed(2) }}
                  </view>
               </view>
@@ -160,12 +155,12 @@
               <view class="order-info-supplement-title">实际费用</view>
            </view>
            <view class="order-info-price">
               <view class="price-row">
                  <view class="price-row-label" v-if="isPushlishor">实际支付</view>
               <view class="price-row" v-if="isPushlishor">
                  <view class="price-row-label" >实际支付(元)</view>
                  <view class="price-row-val" style="color: #FF0000;">¥{{((info.payAccount||0)/100).toFixed(2) }} </view>
               </view>
               <view class="price-row" v-if="isAcceptor && info.status==4" >
                  <view class="price-row-label">实际到账</view>
                  <view class="price-row-label">实际到账(元)</view>
                  <view class="price-row-val" style="color: #FF0000;">¥{{((info.receiveAccount||0)/100).toFixed(2) }} </view>
               </view>
                
@@ -242,13 +237,16 @@
      <view style="width: 100%; height: calc(108rpx + env(safe-area-inset-bottom));" v-if="![99].includes(info.status)"></view>
      <view class="order-footer" v-if="![99].includes(info.status)">
         <template v-if="isPushlishor && info.isUpdate!=1 &&info.status ===2">
            <sunui-mverify hint="开始作业" @change="getaccept($event)"></sunui-mverify>
            <sunui-mverify v-if="1==2" hint="开始作业" @change="getaccept($event)"></sunui-mverify>
            <view class="order-footer-btn"  >
               <view class="order-footer-btn-b" @click="show8 = true">开始作业</view>
            </view>
         </template>
         <view class="order-footer-btn" v-else>
         <view class="order-footer-btn" v-else >
            <view class="order-footer-btn-a" @click="show = true" v-if="1==2&& isAcceptor && info.status ===2">取消订单</view>
            <view class="order-footer-btn-a" @click="show = true" v-if="isPushlishor && (info.status ===0 ||  info.status ===1|| info.status ===2)">取消订单</view>
            <view class="order-footer-btn-b" @click="show2=true" v-if="isPushlishor && (info.status ===4 && info.commentStatus!=1)">去评价</view>
            <view class="order-footer-btn-b" v-if="isPushlishor&&((info.status ===5 && info.type !==2)|| (info.status ===0 && info.type===2))" @click="show1 = true">{{info.type === 2 ? '继续支付' : '立即支付'}}</view>
            <view class="order-footer-btn-b" v-if="isPushlishor&&((info.status ===5 && info.type !==2)|| (info.status ===0 && info.type===2))" @click="show1 = true">{{info.type === 2 ? '继续支付' : '完成并支付'}}</view>
            <view class="order-footer-btn-b" @click="show7 = true" v-if=" info.type!==2 &&isAcceptor && info.status ===3">确认费用</view>
            <view class="order-footer-btn-b" v-if="isPushlishor && ((info.status ===3 && info.type===2))" @click="payment1">完成作业</view>
            <view class="order-footer-btn-b" v-if="info.type !=2 && info.isUpdate!=1&& isPushlishor && (info.status ===0 ||  info.status ===1|| info.status ===2)" @click="jumpEdit()">修改订单</view>
@@ -297,7 +295,21 @@
         </view>
         <view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
            <view class="btn1" @click="show6 = false">我再想想</view>
            <view class="btn2" @click="acceptDo">确认接单</view>
            <view class="btn2" @click="acceptDo()">确认接单</view>
         </view>
      </u-modal>
      <u-modal
         title="温馨提示"
         :show="show8"
         closeOnClickOverlay
         showCancelButton
      >
         <view class="slot-content">
            开始作业吗?
         </view>
         <view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
            <view class="btn1" @click="show8 = false">我再想想</view>
            <view class="btn2" @click="beginDo()">确认开始</view>
         </view>
      </u-modal>
      <u-modal
@@ -351,23 +363,23 @@
               <viem class="money">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</viem>
            </view>
            <view class="querenfee-c" >                
               <view class="querenfee-c-info1"><text style="color: red;">*</text>实际{{feeFrom.priceParam1.name}}</view>
               <view class="querenfee-c-info1"><text style="color: red;">*</text>实际{{feeFrom.priceParam1.name}}:</view>
               <view class="querenfee-c-input"> 
                  <input type="number" placeholder-style="color: #999999; font-size: 56rpx; font-weight: 500;" @input="getTotal" v-model="feeFrom.priceNum1"   placeholder="请输入" />
                  <input type="number" placeholder-style="color: #999999; font-size: 50rpx; font-weight: 500;" @input="getTotal" v-model="feeFrom.priceNum1"   placeholder="0" />
               </view>
               <text class="querenfee-c-danw">{{feeFrom.priceParam1.unit}}</text>
            </view>
            <view class="querenfee-c" v-if="feeFrom.priceParam2.name !=null">
               <view class="querenfee-c-info1"><text style="color: red;">*</text>实际{{feeFrom.priceParam2.name}}:</view>
               <view class="querenfee-c-input"> 
                  <input type="number" v-model="feeFrom.priceNum2" placeholder-style="color: #999999; font-size: 56rpx; font-weight: 500;" @input="getTotal" placeholder="请输入" />
                  <input type="number" v-model="feeFrom.priceNum2" placeholder-style="color: #999999; font-size: 50rpx; font-weight: 500;" @input="getTotal" placeholder="0" />
               </view>
               <text class="querenfee-c-info1" >{{feeFrom.priceParam2.unit}}</text>
               <text class="querenfee-c-danw" >{{feeFrom.priceParam2.unit}}</text>
            </view>
            <view class="querenfee-c">
               <view class="querenfee-c-info1">其他费用:</view>
               <view class="querenfee-c-input">
                  <input type="digit" v-model="feeFrom.confirmOtherFee" placeholder-style="color: #999999; font-size: 56rpx; font-weight: 500;" placeholder="请输入" />
                  <input type="digit" v-model="feeFrom.confirmOtherFee" placeholder-style="color: #999999; font-size: 50rpx; font-weight: 500;"  @input="getTotal" placeholder="0" />
               </view>
               <text class="querenfee-c-danw">元</text>
            </view>
@@ -439,6 +451,7 @@
            show5:false,
            show6:false,
            show7:false,
            show8:false,
            actionFlag:null,
            timeInfo:'00:00:00',
            timeInfo1:'00:00:00',
@@ -478,25 +491,30 @@
      onShow(options) { 
         this.getOrderData()
      },
      methods:{
         getaccept(e) {
            if (!e.msg) return;
      methods:{
         beginDo(e) {
            var that = this
            uni.requestSubscribeMessage({
               tmplIds: ['3rOz7DAnawrkKDM8b5_XW4FLivISWYov6d7QSC4ORsg'],
               success(res) {
                  that.startJobs()
               },
               fail(err) {
                  that.startJobs()
               }
            })
         },
         startJobs(e) {
            var that = this
            this.$u.api.begin({ orderId: this.info.id })
               .then(res => {
                  if (res.code === 200) {
                     this.getOrderData()
                     that.show8=false
                     that.getOrderData()
                  }
               })
         },
         // 开始作业
         startJobs() {
            this.$u.api.begin({ orderId: this.info.id })
               .then(res => {
                  if (res.code === 200) {
                     this.getOrderData()
                  }
               })
         },
         // 修改
         jumpEdit() {
            if (this.info.type === 0 && this.info.workType === 0) {
@@ -532,8 +550,11 @@
               price: this.info.price,
               priceUnit: this.feeFrom.priceParam1.unit,
               priceNum1: this.feeFrom.priceNum1 || 0,
               priceNum2: this.feeFrom.priceNum2 || 0,
               type: this.info.type
               priceNum2: this.feeFrom.priceNum2 || 0,
               confirmOtherFee:(this.feeFrom.confirmOtherFee||0)*100,
               type: this.info.type,
               carType:this.info.carType ,
               workType: this.info.workType
            }).then(res => {
               if (res.code === 200) {
                  this.confirmPayFee = (res.data / 100) || '0'
@@ -541,6 +562,7 @@
            })
         },
         confirmFee(){
            var that =this
            if (!this.feeFrom.priceNum1) {
               return uni.showToast({
                  title: '实际' + this.feeFrom.priceParam1.name + '不能为空',
@@ -553,18 +575,6 @@
                  icon: 'none'
               })
            }
            uni.requestSubscribeMessage({
               tmplIds: ['3rOz7DAnawrkKDM8b5_XW4FLivISWYov6d7QSC4ORsg'],
               success(res) {
                  that.doConfirmFeeBiz()
               },
               fail(err) {
                  that.doConfirmFeeBiz()
               }
            })
         },
         doConfirmFeeBiz(){
            var that = this
            this.$u.api.confirmFee({
               confirmFeeRemark: this.feeFrom.confirmFeeRemark,
               confirmOtherFee: (this.feeFrom.confirmOtherFee||0)*100,
@@ -644,17 +654,6 @@
               }
            }) 
         },
         beginDo(){
            var that = this
            var param = {orderId: this.id}
            this.$u.api.begin(param).then(res =>{
               if(res.code ===200){
                  that.show3=false
                  uni.showToast({ title: '操作成功', icon: 'error', duration: 2000 });
                  that.getOrderData()
               }
            })
         },
         confirmUpdDo(status){
            var that = this
            var param = {orderId: this.id,status:status}
@@ -670,7 +669,7 @@
               }
            }) 
         },
         acceptDo(){
         acceptDoBiz(){
            var that = this
            var param = {orderId: this.id}
            this.$u.api.accept(param).then(res =>{
@@ -680,6 +679,18 @@
                  that.getOrderData()
               }
            }) 
         },
         acceptDo() {
            var that = this;
            uni.requestSubscribeMessage({
               tmplIds: ['AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8','3YSC7gouRlSjHXz4CrWOGFzPmGwEBtFj4snwdfMvKHk','tDpYImlrdv-0d3euTrHbYZ1cEZvjVHTNlqHvV0tpLHg'],
               success(res) {
                  that.acceptDoBiz()
               },
               fail(err) {
                  that.acceptDoBiz()
               }
            })
         },
         cancelDo(){
            var that = this
@@ -720,27 +731,7 @@
         },
         //订单状态:0=待支付 1=待接单;2=已接单;3=进行中;4=已完成;99=已取消
         getStatusInfo(){
            if(this.userInfo.id === this.info.acceptMemberId){
               //如果是接单方
               if(this.info.status === 0){
                  return ''
               }else if(this.info.status === 1){
                  return ''
               }else if(this.info.status === 2){
                  if(this.info.isUpdate==1){
                     return ''
                  }
                  return '您已接单,请按时完成订单任务'
               }else if(this.info.status === 5){
                  return '您已确认费用,等待发单方支付'
               }else if(this.info.status === 3){
                  return '订单进行中,请按时完成订单任务'
               }else if(this.info.status === 4){
                  return '您的订单已完成'
               }else if(this.info.status === 99){
                  return '订单已取消'
               }
            }else{
            if(this.isPushlishor){
               //如果是发布方
               if(this.info.status === 0){
                  return '请尽快完成支付,发布订单'
@@ -752,11 +743,37 @@
                  if(this.info.isUpdate==1){
                     return '订单已修改,请等待接单方确认'
                  }
                  return '订单已接单,请拖动下方“开始作业”按钮'
                  return '订单已接单,请点击下方“开始作业”按钮'
               }else if(this.info.status === 3){
                  return this.info.type!=2?'订单完成后请点击下方“完成并支付”按钮':'订单正在进行中'
                  if(this.info.type ==2){
                     return '订单作业进行中,请点击下方“完成”按钮完成作业'
                  }
                  return  '订单正在进行中,等待作业完成接单方确认费用'
               }else if(this.info.status === 5){
                  return  '接单方已确认费用,请点击下方“完成并支付”按钮'
               }else if(this.info.status === 4){
                  return this.info.commentStatus==1?'您的订单已完成,欢迎再次使用': '您的订单已完成,请及时评价'
               }else if(this.info.status === 99){
                  return '订单已取消'
               }
               //如果是接单方
            }else{
               if(this.info.status === 0){
                  return ''
               }else if(this.info.status === 1){
                  return '发单方已成功发起订单,您可以进行接单'
               }else if(this.info.status === 2){
                  if(this.info.isUpdate==1){
                     return ''
                  }
                  return '您已接单,请按时完成订单任务'
               }else if(this.info.status === 5){
                  return '您已确认费用,等待发单方支付'
               }else if(this.info.status === 3){
                  return '订单进行中,请按时完成订单任务'
               }else if(this.info.status === 4){
                  return '您的订单已完成'
               }else if(this.info.status === 99){
                  return '订单已取消'
               }
@@ -820,15 +837,8 @@
                     //如果是接单方
                     that.isAcceptor =true
                  }
                  if(that.isAcceptor ||that.isPushlishor ){
                  // if(that.isAcceptor ||that.isPushlishor ){
                     that.info = res.data
                     if(that.userInfo.id === that.info.releaseMemberId ){
                        //如果是发单方
                        that.isPushlishor =true
                     }else if(that.userInfo.id === that.info.acceptMemberId ){
                        //如果是接单方
                        that.isAcceptor =true
                     }
                     that.amount = ((that.info.estimatedAccount || 0) / 100).toFixed(2)
                     if(that.info.wayInfo){
                        that.wayList = JSON.parse(that.info.wayInfo)
@@ -840,9 +850,9 @@
                        that.updateTimeInfo1()
                     }
                     that.initPriceNumParam()
                  }else{
                     uni.showToast({ title: '订单信息不存在', icon: 'error', duration: 2000 });
                  }
                  // }else{
                  //    uni.showToast({ title: '订单信息不存在', icon: 'error', duration: 2000 });
                  // }
               }
             }) 
         },
@@ -853,13 +863,13 @@
            this.feeFrom.priceParam2.unit =null
            if(this.info.type==0 && this.info.workType==1){
               //分拣工
               this.feeFrom.priceParam1.name ='用工天数:'
               this.feeFrom.priceParam1.name ='用工天数'
               this.feeFrom.priceParam1.unit ='天'
               this.feeFrom.priceParam2.name ='用工人数:'
               this.feeFrom.priceParam2.name ='用工人数'
               this.feeFrom.priceParam2.unit ='人'
            }else if(this.info.type==0 && this.info.workType==0){
               //采摘工
               this.feeFrom.priceParam1.name ='采摘重量:'
               this.feeFrom.priceParam1.name ='采摘重量'
               this.feeFrom.priceParam1.unit ='斤'
               this.feeFrom.priceParam2.name =null
               this.feeFrom.priceParam2.unit =null
@@ -874,10 +884,10 @@
               }else if(this.info.carType==1){
                  //按小时
                  this.feeFrom.priceParam1.name ='工作时长'
                  this.feeFrom.priceParam1.unit ='时'
                  this.feeFrom.priceParam1.unit ='小时'
                  this.feeFrom.priceParam2.name ='用工人数'
                  this.feeFrom.priceParam2.unit ='人'
               }else if(this.info.carType==1){
               }else if(this.info.carType==2){
                  //按小时
                  this.feeFrom.priceParam1.name ='包装重量'
                  this.feeFrom.priceParam1.unit ='斤'
@@ -1220,6 +1230,7 @@
               font-weight: 500;
               font-size: 32rpx;
               color: #666666;
               margin-right: 2rpx;
               border-radius: 44rpx;
               border: 1rpx solid #B2B2B2;
            }