doum
2025-09-15 82735e4d46ac7b9969facef2acc8f8e793b68f71
small-program/pages/order-details/order-details.vue
@@ -55,16 +55,17 @@
            <text v-if="info.type===2">订餐单</text>
            
         </view>
         <view v-if="info.type===0" class="order-info-wz">{{info.categoryName || ''}}|{{info.priceNum1 || '' }}{{feeFrom.priceParam1.unit}}{{info.type==0&info.workType==2&&info.carType==2?' | '+info.priceNum2+'人':''}}</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">
         <view class="order-info-address" v-if="info.type!==1" @click="openAddr({ lat: info.lat, lgt: info.lgt, location: info.location })">
            <image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image>
            <view class="order-info-address-info">
               <text>{{info.location || '' }}</text>
               <text>{{info.locationRemark || '' }}</text>
            </view>
         </view>
         <view class="order-info-address">
         <view class="order-info-address" v-if="info.type!==1">
            <image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image>
            <view class="order-info-address-info">
               <text>{{info.startDate || ''}}{{' 至 '}}{{info.endDate || ''}}({{info.totalDays||0}}天)</text>
@@ -72,11 +73,14 @@
         </view>
         <view class="address" v-if="info.type===1 && wayList && wayList.length>0">
            <view class="address-xian"></view>
            <view class="address-row"  v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="index">
            <view class="address-row"  v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="index" @click="openAddr(item)">
               <image v-if="index === 0" src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image>
               <image v-if="index >0 && index < wayList.length-1" src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image>
               <image v-if="index === wayList.length-1" src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image>
               <text>{{item.location || ''}}</text>
               <view class="address-row-info">
                  {{item.location || ''}}
                  <image class="address-row-right" src="/static/icon/ar_address@2x.png" mode="widthFix"></image>
               </view>
            </view>
         </view>
         <view class="order-info-x"></view>
@@ -84,8 +88,8 @@
            <view class="order-info-supplement-title">需求补充:</view>
            <view class="order-info-supplement-val">{{info.supplement || '' }}</view>
            <view class="order-info-supplement-list">
               <view class="order-info-supplement-list-item" v-for="(item,index) in info.multifileList" v-if="info.multifileList && info.multifileList.length>0" :key="item.imgurl">
                  <image v-if="item.fileurlFull"  :src="item.fileurlFull" @click="previemImg(item.fileurlFull)" mode="widthFix"></image>
               <view class="order-info-supplement-list-item" v-for="(item,index) in info.multifileList" v-if="info.multifileList && info.multifileList.length>0" :key="item.imgurl" @click="previemImg(index, info.multifileList)">
                  <image v-if="item.fileurlFull"  :src="item.fileurlFull" mode="widthFix"></image>
               </view>
               <view style="width: 156rpx; height: 0;"></view>
               <view style="width: 156rpx; height: 0;"></view>
@@ -235,19 +239,21 @@
      </view>
      <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>
         <template v-if="isPushlishor && info.isUpdate != 1 && info.status === 2 && canStart==1">
            <sunui-mverify v-if="1==2" hint="开始作业" @change="getaccept($event)"></sunui-mverify>
            <view class="order-footer-btn" v-if="comparisonTime(info.startDate)">
               <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>
            <view class="order-footer-btn-b" @click="show5 =true" v-if="isAcceptor&& (info.isUpdate==1 && info.status ===2)">修改确认</view>
            <!-- <view class="order-footer-btn-b" @click="startJobs()" v-if="userInfo.id === info.releaseMemberId && (info.status ===2)">开始作业</view> -->
            <view class="order-footer-btn-b"  @click="show6 =true" v-if="!isPushlishor && (info.status ===1)">抢单</view>
         </view>
         <view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
@@ -291,7 +297,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
@@ -433,6 +453,7 @@
            show5:false,
            show6:false,
            show7:false,
            show8:false,
            actionFlag:null,
            timeInfo:'00:00:00',
            timeInfo1:'00:00:00',
@@ -471,26 +492,45 @@
      },
      onShow(options) { 
         this.getOrderData()
         console.log(this.comparisonTime('2025-09-13'))
      },
      methods:{
         getaccept(e) {
            if (!e.msg) return;
      methods:{
         comparisonTime(start) {
            let startDate = new Date().getTime();
            let endDate = new Date(start).getTime();
            return startDate >= endDate;
         },
         openAddr(e) {
            uni.openLocation({
               latitude: e.lat,
               longitude: e.lgt,
               name: e.location
            })
         },
         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) {
@@ -551,18 +591,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,
@@ -642,17 +670,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}
@@ -715,11 +732,9 @@
            })
            
         },
         previemImg(src){
            uni.previewImage({
               current: src,
               urls: [src]
            });
         previemImg(current, arr) {
            let urls = arr.map(item => item.fileurlFull)
            uni.previewImage({ current, urls });
         },
         contactPhone(phone){
            if(phone !=null && phone!=''){
@@ -730,27 +745,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 '请尽快完成支付,发布订单'
@@ -762,11 +757,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 '订单已取消'
               }
@@ -881,11 +902,11 @@
                  this.feeFrom.priceParam2.name ='用工人数'
                  this.feeFrom.priceParam2.unit ='人'
               }else if(this.info.carType==2){
                  //按小时
                  //按重量
                  this.feeFrom.priceParam1.name ='包装重量'
                  this.feeFrom.priceParam1.unit ='斤'
                  this.feeFrom.priceParam2.name =null
                  this.feeFrom.priceParam2.unit =null
                  this.feeFrom.priceParam2.name ='用工人数'
                  this.feeFrom.priceParam2.unit ='人'
               }                
            }else if(this.info.type==1 && this.info.carType==0){
               //运货单 按天数
@@ -1223,6 +1244,7 @@
               font-weight: 500;
               font-size: 32rpx;
               color: #666666;
               margin-right: 2rpx;
               border-radius: 44rpx;
               border: 1rpx solid #B2B2B2;
            }
@@ -1651,8 +1673,7 @@
         z-index: 2;
         width: 100%;
         display: flex !important; 
         align-items: center;
         margin-bottom: 30rpx ;
         margin-bottom: 32rpx ;
         margin-left: 0rpx !important;
         margin-top: 0rpx !important;
         &:last-child { 
@@ -1664,10 +1685,17 @@
            flex-shrink: 0;
            margin-right: 24rpx;
         }
         text {
         .address-row-info {
            width: 100%;
            font-weight: 400;
            font-size: 28rpx;
            color: #333333;
            .address-row-right {
               width: 8rpx;
               height: 16rpx;
               margin-left: 12rpx;
               margin-top: 15rpx;
            }
         }
      }
   }