|  |  |  | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | 
|---|
|  |  |  | </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> | 
|---|
|  |  |  | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | 
|---|
|  |  |  | </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"> | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | 
|---|
|  |  |  | </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 | 
|---|
|  |  |  | 
|---|
|  |  |  | show5:false, | 
|---|
|  |  |  | show6:false, | 
|---|
|  |  |  | show7:false, | 
|---|
|  |  |  | show8:false, | 
|---|
|  |  |  | actionFlag:null, | 
|---|
|  |  |  | timeInfo:'00:00:00', | 
|---|
|  |  |  | timeInfo1:'00:00:00', | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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, | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 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} | 
|---|
|  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 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!=''){ | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | //订单状态: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 '请尽快完成支付,发布订单' | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 '订单已取消' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | //运货单 按天数 | 
|---|
|  |  |  | 
|---|
|  |  |  | font-weight: 500; | 
|---|
|  |  |  | font-size: 32rpx; | 
|---|
|  |  |  | color: #666666; | 
|---|
|  |  |  | margin-right: 2rpx; | 
|---|
|  |  |  | border-radius: 44rpx; | 
|---|
|  |  |  | border: 1rpx solid #B2B2B2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|