MrShi
2025-07-19 e17698d3d99039b1c3532d490687f8492ca87704
small-program/pages/sorting/sorting.vue
@@ -13,102 +13,108 @@
                  <u-icon name="arrow-right" color="#111111" size="16"></u-icon>
               </view>
            </view>
            <view class="list-item-row" @click="selectAddress()">
               <view class="list-item-row-label">用工地点<b>*</b></view>
               <view class="list-item-row-val">
                  <text>{{form.location ? form.location : '请选择'}}</text>
                  <u-icon name="arrow-right" color="#111111" size="16"></u-icon>
               </view>
            </view>
            <view class="list-item-row">
               <view class="list-item-row-label">地点描述</view>
               <view class="list-item-row-val">
                  <input type="text" v-model="form.locationRemark" placeholder="请输入" />
               </view>
            </view>
         </view>
         <view class="list-item">
            <view class="list-item-label">
               <view class="list-item-label-x"></view>
               <text>需求</text>
            </view>
            <view class="list-item-row" @click="show1 = true">
               <view class="list-item-row-label">分拣品种<b>*</b></view>
               <view class="list-item-row-val">
                  <text>{{form.categoryName ? form.categoryName : '请选择'}}</text>
                  <u-icon name="arrow-right" color="#111111" size="16"></u-icon>
               </view>
            </view>
            <view class="list-item-row">
               <view class="list-item-row-label">用工数量<b>*</b></view>
               <view class="list-item-row-val">
                  <input type="number" v-model="form.priceNum2" @blur="getPrice" placeholder="请输入" />
                  <text>人</text>
               </view>
            </view>
            <view class="list-item-row" v-if="viewStatus">
               <view class="list-item-row-label">需求补充</view>
               <view class="list-item-row-val">
                  <textarea v-model="form.supplement" cols="30" rows="10" placeholder="如果有特殊要求,请在此处说明" maxlength="200"></textarea>
               </view>
            </view>
            <view class="list-item-row" v-if="viewStatus">
               <view class="list-item-row-label">图片</view>
               <view class="list-item-row-upload">
                  <view class="upload-item" v-for="(item, index) in form.multifileList" :key="index">
                     <image :src="item.url" mode="widthFix"></image>
                     <image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
            <template v-if="!(info.type !== 2 && info.status === 2)">
               <view class="list-item-row" @click="selectAddress()">
                  <view class="list-item-row-label">用工地点<b>*</b></view>
                  <view class="list-item-row-val">
                     <text>{{form.location ? form.location : '请选择'}}</text>
                     <u-icon name="arrow-right" color="#111111" size="16"></u-icon>
                  </view>
                  <view class="upload-item" @click="uploadImg">
                     <u-icon name="plus" color="#999999" size="24"></u-icon>
                     <text>点击上传</text>
               </view>
               <view class="list-item-row">
                  <view class="list-item-row-label">地点描述</view>
                  <view class="list-item-row-val">
                     <input type="text" v-model="form.locationRemark" placeholder="请输入" />
                  </view>
               </view>
            </template>
         </view>
         <template v-if="!(info.type !== 2 && info.status === 2)">
            <view class="list-item">
               <view class="list-item-label">
                  <view class="list-item-label-x"></view>
                  <text>需求</text>
               </view>
               <view class="list-item-row" @click="show1 = true">
                  <view class="list-item-row-label">分拣品种<b>*</b></view>
                  <view class="list-item-row-val">
                     <text>{{form.categoryName ? form.categoryName : '请选择'}}</text>
                     <u-icon name="arrow-right" color="#111111" size="16"></u-icon>
                  </view>
               </view>
               <view class="list-item-row">
                  <view class="list-item-row-label">用工数量<b>*</b></view>
                  <view class="list-item-row-val">
                     <input type="number" v-model="form.priceNum2" @blur="getPrice" placeholder="请输入" />
                     <text>人</text>
                  </view>
               </view>
               <view class="list-item-row" v-if="viewStatus">
                  <view class="list-item-row-label">需求补充</view>
                  <view class="list-item-row-val">
                     <textarea v-model="form.supplement" cols="30" rows="10" placeholder="如果有特殊要求,请在此处说明" maxlength="200"></textarea>
                  </view>
               </view>
               <view class="list-item-row" v-if="viewStatus">
                  <view class="list-item-row-label">图片</view>
                  <view class="list-item-row-upload">
                     <view class="upload-item" v-for="(item, index) in form.multifileList" :key="index">
                        <image :src="item.url || item.fileurlFull" mode="widthFix"></image>
                        <image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
                     </view>
                     <view class="upload-item" @click="uploadImg">
                        <u-icon name="plus" color="#999999" size="24"></u-icon>
                        <text>点击上传</text>
                     </view>
                  </view>
               </view>
               <view class="list-item-zk" @click="viewStatus = !viewStatus">
                  <text>{{viewStatus ? '收起' : '补充需求'}}</text>
                  <u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
               </view>
            </view>
            <view class="list-item">
               <view class="list-item-label">
                  <view class="list-item-label-x"></view>
                  <text>费用</text>
               </view>
               <view class="list-item-row">
                  <view class="list-item-row-label">天数</view>
                  <view class="list-item-row-val">
                     <input v-model="form.priceNum1" disabled @blur="getPrice" type="number" placeholder="请输入" />
                     <text>天</text>
                  </view>
               </view>
               <view class="list-item-row">
                  <view class="list-item-row-label">费用标准<b>*</b></view>
                  <view class="list-item-row-val">
                     <input v-model="form.price" type="number" @blur="getPrice" placeholder="请输入" />
                     <text>元/人/天</text>
                  </view>
               </view>
            </view>
            <view class="list-item-zk" @click="viewStatus = !viewStatus">
               <text>{{viewStatus ? '收起' : '补充需求'}}</text>
               <u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
            </view>
         </view>
         <view class="list-item">
            <view class="list-item-label">
               <view class="list-item-label-x"></view>
               <text>费用</text>
            </view>
            <view class="list-item-row">
               <view class="list-item-row-label">天数</view>
               <view class="list-item-row-val">
                  <input v-model="form.priceNum1" disabled @blur="getPrice" type="number" placeholder="请输入" />
                  <text>天</text>
            <view class="list-item">
               <view class="list-item-label">
                  <view class="list-item-label-x"></view>
                  <text>联系人信息</text>
                  <text class="list-item-label-info">默认发单方联系方式,可修改联系人</text>
               </view>
               <view class="list-item-row">
                  <view class="list-item-row-label">联系人姓名</view>
                  <view class="list-item-row-val">
                     <input type="text" v-model="form.linkName" placeholder="请补充" />
                  </view>
               </view>
               <view class="list-item-row">
                  <view class="list-item-row-label">联系电话<b>*</b></view>
                  <view class="list-item-row-val">
                     <input type="text" v-model="form.linkPhone" maxlength="11" placeholder="请补充" />
                  </view>
               </view>
            </view>
            <view class="list-item-row">
               <view class="list-item-row-label">费用标准<b>*</b></view>
               <view class="list-item-row-val">
                  <input v-model="form.price" type="number" @blur="getPrice" placeholder="请输入" />
                  <text>元/人/天</text>
               </view>
            </view>
         </view>
         <view class="list-item">
            <view class="list-item-label">
               <view class="list-item-label-x"></view>
               <text>联系人信息</text>
               <text class="list-item-label-info">默认发单方联系方式,可修改联系人</text>
            </view>
            <view class="list-item-row">
               <view class="list-item-row-label">联系人姓名</view>
               <view class="list-item-row-val">
                  <input type="text" v-model="form.linkName" placeholder="请补充" />
               </view>
            </view>
            <view class="list-item-row">
               <view class="list-item-row-label">联系电话<b>*</b></view>
               <view class="list-item-row-val">
                  <input type="text" v-model="form.linkPhone" maxlength="11" placeholder="请补充" />
               </view>
            </view>
         </view>
         </template>
      </view>
      <view style="width: 100%; height: calc(214rpx + env(safe-area-inset-bottom));"></view>
      <view class="footer">
@@ -159,9 +165,11 @@
      },
      data() {
         return {
            info: {},
            show: false,
            show1: false,
            form: {
               id: null,
               days: '',
               startDate: '',
               endDate: '',
@@ -188,14 +196,31 @@
         };
      },
      onLoad(option) {
         this.form.linkPhone = this.userInfo.telephone
         this.form.priceNum1 = option.days
         this.form.startDate = option.startDate
         this.form.endDate = option.endDate
         this.form.lat = option.latitude
         this.form.lgt = option.longitude
         this.form.location = option.address
         this.form.workType = option.workType
         if (option.id) {
            this.form.id = option.id
            this.$u.api.getDetail({
               orderId: option.id
            }).then(res => {
               this.info = res.data
               for (const key in this.form) {
                  this.form[key] = res.data[key]
               }
               this.form.days = res.data.totalDays
               this.form.price = Number(this.form.price) / 100
               if (!this.form.multifileList) {
                  this.form.multifileList = []
               }
            })
         } else {
            this.form.linkPhone = this.userInfo.telephone
            this.form.priceNum1 = option.days
            this.form.startDate = option.startDate
            this.form.endDate = option.endDate
            this.form.lat = option.latitude
            this.form.lgt = option.longitude
            this.form.location = option.address
            this.form.workType = option.workType
         }
         this.getCateList()
      },
      methods: {
@@ -213,14 +238,27 @@
            if (!this.form.linkPhone) {
               return uni.showToast({ title: '请输入联系电话', icon: 'none' })
            }
            this.$u.api.release({ ...this.form, price: Number(this.form.price) * 100 })
               .then(res => {
                  if (res.code == 200) {
                     uni.navigateTo({
                        url: `/pages/success/success?orderId=${res.data.id}`
                     })
                  }
               })
            if (!this.form.id) {
               this.$u.api.release({ ...this.form, price: Number(this.form.price) * 100 })
                  .then(res => {
                     if (res.code == 200) {
                        uni.navigateTo({
                           url: `/pages/success/success?orderId=${res.data.id}`
                        })
                     }
                  })
            } else {
               this.$u.api.updateOrder({ ...this.form, price: Number(this.form.price) * 100 })
                  .then(res => {
                     if (res.code == 200) {
                        uni.showToast({ title: '编辑成功', icon: 'success', mask: true, duration: 2000 })
                        setTimeout(() => {
                           uni.navigateBack({ delta: 1 });
                           uni.$emit('refresh')
                        }, 1500)
                     }
                  })
            }
         },
         // 计算金额
         getPrice() {
@@ -240,8 +278,9 @@
         confirmDate(e) {
            this.form.startDate = e[0]
            this.form.endDate = e[e.length - 1]
            this.form.days = e.length;
            this.form.priceNum1 = e.length;
            this.show = false
            this.getPrice()
         },
         selectAddress() {
            uni.chooseLocation({