-
zhangwei
2025-03-04 aaa8b1b2fca572d6a989179d568991ce4bd48cfb
src/pages/order/detail.vue
@@ -1,62 +1,115 @@
<template>
   <view class="">
      <scroll-view enable-flex="true">
         <view class="list chuany-flex chuany-flex-direction chuany-align-center c-p-b-30">
            <view class="content ">
               <view class="bgblue c-p-18 chuany-flex chuany-justify-between chuany-font30">
         <view class="list chuany-flex chuany-flex-direction chuany-align-center c-p-b-30" @click='toEdit'>
            <view class="content c-p-b-18">
               <view
                  class="bgblue c-p-l-18 c-p-r-18 c-p-b-10 c-p-t-10 chuany-flex chuany-justify-between chuany-font30">
                  <view class="chuany-flex chuany-flex-direction">
                     <text class=''>
                        {{$util.formatDate(detailItem.wordStartTime,true)}}
                        {{$util.formatDate(detailItem.startTime)}}
                     </text>
                     <text>{{$util.formatDate(detailItem.wordEndTime,true)}}</text>
                  </view>
                  <text>
                     招{{detailItem.worderCounted}}/{{detailItem.worderCount}}人
                  </text>
               </view>
               <view class="c-p-18 chuany-font34">
               <view class="c-p-l-18 c-p-t-5 c-p-r-18 chuany-font32">
                  {{detailItem.orderName}}
               </view>
               <!-- <view class="chuany-flex c-p-l-18">
                  <up-tag class='c-p-r-14' :text="item" plain v-for="(item,index) in item.tags" :key="index">
                  </up-tag>
               </view> -->
               <view class="chuany-flex chuany-flex-direction">
                  <text class='c-p-18'>
               <view class="chuany-flex chuany-flex-direction chuany-font28">
                  <text class='c-p-l-18 c-p-r-18 text-69'>
                     日期:{{detailItem.wordStartTimeName}} 至 {{detailItem.wordEndTimeName}}
                  </text>
                  <view class="c-p-l-18 c-p-r-18 text-69" v-if="detailItem.zixinganpai">
                     时间:{{detailItem.zixinganpaiName}}
                  </view>
                  <view class="c-p-l-18 c-p-r-18 text-69" v-else>
                     时间:{{detailItem.startTimeName}} 至 {{detailItem.endTimeName}}
                  </view>
               </view>
               <view class="chuany-flex chuany-flex-direction chuany-font28">
                  <text class='c-p-l-18 c-p-r-18 text-69'>
                     要求:{{detailItem.demand}}
                  </text>
                  <text class='c-p-l-18 c-p-b-16'>
                  <text class='c-p-l-18 c-p-r-18 text-69'>
                     地址:{{detailItem.worderAddress}}
                  </text>
               </view>
               <view class='chuany-flex chuany-justify-between c-p-l-18 c-p-r-18'>
               <view class='chuany-flex chuany-justify-between c-p-l-18 c-p-r-18 c-p-t-6 chuany-align-center'>
                  <view class="redcla">
                     <text class="chuany-font40 chuany-text-bold">
                        {{detailItem.workPrice}}
                     <text class="chuany-font40">
                        {{detailItem.workPrice}}<template
                           v-if="detailItem.workPriceMax">~{{detailItem.workPriceMax}}</template>
                     </text>
                     <text class='chuany-font20'>
                        {{detailItem.workerType==0?'元/小时':'元/件'}}
                     </text>
                     <!-- <text class="chuany-font40">
                        {{detailItem.workPrice}}
                     </text>
                     <text class='chuany-font20'>
                        {{detailItem.workerType==0?'元/小时':'元/件'}}
                     </text> -->
                  </view>
                  <!-- <up-tag text="去抢活" type="warning" shape="circle"></up-tag> -->
                  <!-- <up-tag text="去抢活" type="warning" shape="circle"></up-tag> -->
                  <view class="" @click.stop="manageOrder(detailItem)">
                     <!-- <up-tag class='c-m-r-10' text="下架" shape="circle" type="error" size='mini'
                     v-if="detailItem.orderStatus==0" @click.stop="deleteOrder(detailItem)"></up-tag> -->
                     <up-button class='c-m-r-10' :text="detailItem.isEn?'下架':'上架'" shape="circle"
                        :loading='isLoading' :loadingText="detailItem.isEn?'下架中':'上架中'"
                        v-if="detailItem.orderStatus==0" :type="detailItem.isEn?'error':'primary'"
                        size='mini'></up-button>
                     <!-- <up-tag text="去抢活" type="warning" shape="circle"></up-tag> -->
                     <!-- <up-tag text="去抢活" type="warning" shape="circle"></up-tag> -->
                  </view>
               </view>
            </view>
         </view>
         <view class="coreshop-ff" v-if="detailItem.orderBidding&&detailItem.orderBidding.length>0">
            <up-list>
               <up-list-item v-for="(item,index) in detailItem.orderBidding" :key="item.id" @click.stop="toWorkDetail">
                  <up-cell :title="item.workerName">
         <view class="coreshop-ff" v-if="detailItem.orderBidding">
            <up-list v-if="detailItem.orderBidding.length>0">
               <up-list-item v-for="(item,index) in detailItem.orderBidding" :key="item.id"
                  @click.stop="toWorkDetail">
                  <up-cell :title="item.workerName" :border='false'>
                     <template #icon>
                        <up-avatar shape="square" size="35" :src="item.workerAvatar"
                           customStyle="margin: -3px 5px -3px 0"></up-avatar>
                           @click='toWorkerDetail(item)' customStyle="margin: -3px 5px -3px 0"></up-avatar>
                     </template>
                     <template #right-icon v-if="item.isSelected">
                        <up-button class="button-layout__item" text="查看" size="mini" type="primary" @click="toView"></up-button>
                     <!-- <template #right-icon v-if="item.isSelected">
                        <up-button class="button-layout__item" text="查看" size="mini" type="primary" @click="toView(item)"></up-button>
                     </template> -->
                     <template #right-icon v-if="!item.isSelected" class="chuany-flex">
                        <up-tag class="button-layout__item" text="录用" size="mini" type="success"
                           @click="selectBtn(item,true)"></up-tag>
                        <up-tag class="button-layout__item c-m-l-18" text="拒绝" size="mini" type="error"
                           @click="selectBtn(item,false)"></up-tag>
                     </template>
                     <template #right-icon v-else>
                        <up-button class="button-layout__item" text="确认" size="mini" type="success"
                           @click="selectBtn(item)"></up-button>
                     <template #right-icon v-else class="chuany-flex">
                        <template class="" v-if="item.workPrice&&!item.showEdit">
                           <up-text type="error"
                              :text="detailItem.workerType==0?`${item.workPrice}元/小时`:`${item.workPrice}元/件` "
                              size='14'></up-text>
                           <up-icon name="edit-pen" @click='isShow(item)'></up-icon>
                           <up-icon name="trash" @click='deleteWorker(item)'></up-icon>
                        </template>
                        <up-input v-model="item.workPrice" border="none" v-else type="digit">
                           <template #suffix>
                              <up-button @tap="saveWorkPrice(item)" text="保存" type="success"
                                 form-type="submit" size="mini"></up-button>
                           </template>
                           <!-- <template #suffix v-else>
                              <up-icon name="edit-pen" @click='isShow'></up-icon>
                           </template> -->
                        </up-input>
                        <!-- <up-text type="error" v-else text="已拒绝" size='14'></up-text> -->
                        <!-- <up-tag class="button-layout__item" text="录用" size="mini" type="success"
                           @click="selectBtn(item,true)"></up-tag>
                        <up-tag class="button-layout__item c-m-l-18" text="拒绝" size="mini" type="error"
                           @click="selectBtn(item,false)"></up-tag> -->
                     </template>
                  </up-cell>
               </up-list-item>
@@ -83,11 +136,9 @@
                  </up-cell>
               </up-list-item> -->
            </up-list>
         </view>
         <view class="coreshop-ff" v-else>
            <up-list>
            <up-list v-else>
               <up-list-item>
                  <up-cell title="暂无投递" class="u-cell__title-text_wu">
                  <up-cell title="暂无投递" class="u-cell__title-text_wu" :border='false'>
                     <!-- <template #icon>
                        <up-avatar shape="square" size="35" src="https://uview-plus.jiangruyi.com/album/1.jpg"
                           customStyle="margin: -3px 5px -3px 0"></up-avatar>
@@ -100,7 +151,9 @@
            </up-list>
         </view>
      </scroll-view>
      <up-modal :show="modalShow" :asyncClose="true" showCancelButton closeOnClickOverlay :content="content"
         @confirm="modalConfirm" @cancel="modalCancel">
      </up-modal>
   </view>
</template>
@@ -122,29 +175,95 @@
      $db
   } = getCurrentInstance().appContext.config.globalProperties
   const detailItem = ref({})
   let orderid = ref('')
   const workerItem = ref({})
   let selectVal = ref(false)
   let orderIdVal = ref('')
   let isLoading = ref(false)
   let showEdit = ref(false)
   onLoad((option) => {
      console.log(option,'========');
      let {
         orderid
      } = option
      getOrder(orderid)
      orderid.value = orderid
      orderIdVal = orderid
      // detailItem.value = JSON.parse($db.get('detailItem'))
   })
   let state = reactive({
      currentIdex: 0
   onShow(() => {
      getOrder(orderIdVal)
   })
   const click = () => {
   }
   const change = (e) => {
      state.currentIdex = e.index
   const isShow = (item) => {
      item.showEdit = true
   }
   const toView = (e) => {
   const deleteWorker = (item) => {
      uni.showModal({
         title: '提示',
         content: `确认删除${item.workerName}?`,
         success: function(res) {
            if (res.confirm) {
               // 执行确认后的操作
               isLoading.value = true
               $api.saveDeltoudi({
                  orderBiddingId: item.id
               }).then(req => {
                  if (req.code == 1) {
                     $util.showToast({
                        title: '删除成功!'
                     })
                     getOrder(orderIdVal)
                  } else {
                     $util.showToast({
                        title: req.error
                     })
                  }
                  isLoading.value = false
               })
            } else {
               // 执行取消后的操作
            }
         }
      })
   }
   const saveWorkPrice = (item) => {
      let obj = {
         orderBiddingId: item.id,
         workPrice: item.workPrice
      }
      console.log(item, obj);
      if (!item.workPrice) {
         $util.showToast({
            title: "请输入工价!",
            icon: "success"
         })
         return
      }
      $api.saveWorkPrice(obj).then(res => {
         if (res.code == 1) {
            $util.showToast({
               title: "工价保存成功!",
               icon: "success"
            })
            getOrder(orderIdVal, item.id)
            item.showEdit = false
         } else {
            $util.showToast({
               title: res.error
            })
         }
      })
   }
   let modalShow = ref(false)
   let content = ref('')
   const toView = (item) => {
      uni.navigateTo({
         url: '/pages/company/index'
         url: `/pages/company/index?workerid=${item.WorkerUserId}&workname=${item.WorkerName}`
      })
   }
   const toWorkerDetail = (item) => {
      $db.set('toudiItem', item)
      uni.navigateTo({
         url: `/pages/worker/worker?workerid=${item.workerUserId}`
      })
   }
   const toWorkDetail = (e) => {
@@ -152,22 +271,127 @@
         url: '/pages/order/worker'
      })
   }
   const selectBtn = (item) => {
      $api.saveQueRen({orderBiddingId:item.id}).then(res => {
         if(res.code==1){
            $util.showToast({
               title: "确认成功!",
               icon: "success"
   const selectBtn = (item, val) => {
      workerItem.value = item
      modalShow.value = true
      selectVal.value = val
      if (val) {
         content.value = `确定录用${item.workerName}吗?`
      } else {
         content.value = `确定拒绝${item.workerName}吗?`
      }
   }
   const modalConfirm = () => {
      if (selectVal.value) {
         console.log('3333333333');
         $api.saveQueRen({
            orderBiddingId: workerItem.value.id
         }).then(res => {
            if (res.code == 1) {
               $util.showToast({
                  title: "录用成功!",
                  icon: "success"
               })
               getOrder(orderIdVal)
            } else {
               $util.showToast({
                  title: res.error ? res.error : '失败!'
               })
            }
            modalShow.value = false
         })
      } else {
         console.log('444444');
         $api.saveBuLuYong({
            orderBiddingId: workerItem.value.id
         }).then(res => {
            if (res.code == 1) {
               $util.showToast({
                  title: "拒绝成功!",
                  icon: "success"
               })
               getOrder(orderIdVal)
            } else {
               $util.showToast({
                  title: res.error ? res.error : '失败!'
               })
            }
            modalShow.value = false
         })
      }
   }
   const modalCancel = () => {
      modalShow.value = false
      workerItem.value = {}
   }
   const getOrder = (orderid, id) => {
      $api.getOrder(orderid).then(res => {
         if (res.code == 1) {
            res.data.orderBidding.forEach(item => {
               item.showEdit = false
               if (id == item.id) {
                  toWorkerDetail(item)
               }
            })
            getOrder(orderid.value)
            detailItem.value = res.data
         }
      })
   }
   const getOrder=(orderid) =>{
      $api.getOrder(orderid).then(res => {
         if (res.code == 1) {
            detailItem.value = res.data
         }
   const manageOrder = (item) => {
      let obj = {
         orderId: item.id
      }
      if (item.isEn) {
         uni.showModal({
            title: '提示',
            content: '确认下架该工作吗?下架后将删除相关数据!',
            success: function(res) {
               if (res.confirm) {
                  // 执行确认后的操作
                  isLoading.value = true
                  $api.deleteOrder(obj).then(req => {
                     if (req.code == 1) {
                        $util.showToast({
                           title: '下架成功!'
                        })
                        getOrder(orderIdVal)
                     } else {
                        $util.showToast({
                           title: req.error
                        })
                     }
                     isLoading.value = false
                  })
               } else {
                  // 执行取消后的操作
               }
            }
         })
      } else {
         item.OldId = item.id
         item.id = 0
         $api.saveOrder(item).then(res => {
            if (res.code == 1) {
               $util.showToast({
                  title: "上架成功!",
                  icon: "success"
               })
               getOrder(orderIdVal)
            } else {
               $util.showToast({
                  title: res.msg
               })
            }
            isLoading.value = false
         })
      }
   }
   const toEdit = () => {
      $db.set('editItem', detailItem.value)
      uni.navigateTo({
         url: `/pages/release/index`
      })
   }
</script>
@@ -179,7 +403,7 @@
   }
   .content {
      height: 430rpx;
      min-height: 200rpx;
      width: 100%;
      background-color: #fff;
      border-radius: 20rpx;