|  |  | 
 |  |  |                <view class="list-item-label-x"></view> | 
 |  |  |                <text>时间地点</text> | 
 |  |  |             </view> | 
 |  |  |             <view class="list-item-row"> | 
 |  |  |             <view class="list-item-row" @click="show = true"> | 
 |  |  |                <view class="list-item-row-label">用工时间<b>*</b></view> | 
 |  |  |                <view class="list-item-row-val"> | 
 |  |  |                   <text>请选择</text> | 
 |  |  |                   <text>{{form.startDate ? form.startDate + ' 至 ' + form.endDate + ' (' + form.priceNum1 + '天) ' : '请选择'}}</text> | 
 |  |  |                   <u-icon name="arrow-right" color="#111111" size="16"></u-icon> | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |             <view class="list-item-row"> | 
 |  |  |             <view class="list-item-row" @click="selectAddress()"> | 
 |  |  |                <view class="list-item-row-label">用工地点<b>*</b></view> | 
 |  |  |                <view class="list-item-row-val"> | 
 |  |  |                   <text>请选择</text> | 
 |  |  |                   <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" placeholder="请输入" /> | 
 |  |  |                   <input type="text" v-model="form.locationRemark" placeholder="请输入" /> | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  | 
 |  |  |                <view class="list-item-label-x"></view> | 
 |  |  |                <text>需求</text> | 
 |  |  |             </view> | 
 |  |  |             <view class="list-item-row"> | 
 |  |  |             <view class="list-item-row" @click="show1 = true"> | 
 |  |  |                <view class="list-item-row-label">分拣品种<b>*</b></view> | 
 |  |  |                <view class="list-item-row-val"> | 
 |  |  |                   <text>请选择</text> | 
 |  |  |                   <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"> | 
 |  |  |                   <text>请选择</text> | 
 |  |  |                   <u-icon name="arrow-right" color="#111111" size="16"></u-icon> | 
 |  |  |                   <input type="number" v-model="form.priceNum2" @blur="getPrice" placeholder="请输入" /> | 
 |  |  |                   <text>人</text> | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |             <view class="list-item-row"> | 
 |  |  |             <view class="list-item-row" v-if="viewStatus"> | 
 |  |  |                <view class="list-item-row-label">需求补充</view> | 
 |  |  |                <view class="list-item-row-val"> | 
 |  |  |                   <textarea cols="30" rows="10" placeholder="请输入" maxlength="200"></textarea> | 
 |  |  |                   <textarea v-model="form.supplement" cols="30" rows="10" placeholder="如果有特殊要求,请在此处说明" maxlength="200"></textarea> | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |             <view class="list-item-row"> | 
 |  |  |             <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"> | 
 |  |  |                      <image src="/static/logo.png" mode="widthFix"></image> | 
 |  |  |                   <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> | 
 |  |  |                   </view> | 
 |  |  |                   <view class="upload-item"> | 
 |  |  |                   <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"> | 
 |  |  |                <text>补充需求</text> | 
 |  |  |                <u-icon name="arrow-down" color="#00BC12" size="16"></u-icon> | 
 |  |  |             <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"> | 
 |  |  | 
 |  |  |                <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 type="text" placeholder="请输入" /> | 
 |  |  |                   <text>元/人*天</text> | 
 |  |  |                   <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> | 
 |  |  | 
 |  |  |          <view class="footer-price"> | 
 |  |  |             <view class="footer-price-info">预估总费用</view> | 
 |  |  |             <view class="footer-price-num"> | 
 |  |  |                <text>0</text> | 
 |  |  |                <text>{{totalPrice}}</text> | 
 |  |  |                <text>元</text> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="footer-bottom"> | 
 |  |  |             <div class="footer-bottom-btn"> | 
 |  |  |             <div class="footer-bottom-btn" @click="submit"> | 
 |  |  |                <text>立即下单</text> | 
 |  |  |                <text>(服务完成后付款)</text> | 
 |  |  |             </div> | 
 |  |  |          </view> | 
 |  |  |          <view style="width: 100%; height: env(safe-area-inset-bottom);"></view> | 
 |  |  |       </view> | 
 |  |  | 		 | 
 |  |  |       <!-- 选择日期范围 --> | 
 |  |  |       <u-calendar | 
 |  |  |          :show="show" | 
 |  |  |          color="#00BC12" | 
 |  |  |          mode="range" | 
 |  |  |          @close="show = false" | 
 |  |  |          @confirm="confirmDate" /> | 
 |  |  | 		 | 
 |  |  |       <!-- 选择品种 --> | 
 |  |  |       <u-picker | 
 |  |  |          :show="show1" | 
 |  |  |          :immediateChange="true" | 
 |  |  |          :columns="cateList" | 
 |  |  |          confirmColor="#00BC12" | 
 |  |  |          @confirm="confirmCategary" | 
 |  |  |          @cancel="show1 = false" | 
 |  |  |          keyName="name" /> | 
 |  |  |    </view> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  |    import { mapState } from 'vuex' | 
 |  |  |    export default { | 
 |  |  |       computed: { | 
 |  |  |          ...mapState(['userInfo']), | 
 |  |  |          totalPrice() { | 
 |  |  |             return this.form.estimatedAccount / 100 | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       data() { | 
 |  |  |          return { | 
 |  |  | 				 | 
 |  |  |             show: false, | 
 |  |  |             show1: false, | 
 |  |  |             form: { | 
 |  |  |                days: '', | 
 |  |  |                startDate: '', | 
 |  |  |                endDate: '', | 
 |  |  |                lat: '', | 
 |  |  |                lgt: '', | 
 |  |  |                location: '', | 
 |  |  |                workType: 0, | 
 |  |  |                locationRemark: '', | 
 |  |  |                categoryId: '', | 
 |  |  |                categoryName: '', | 
 |  |  |                priceNum1: '', | 
 |  |  |                priceNum2: '', | 
 |  |  |                price: '', | 
 |  |  |                supplement: '', | 
 |  |  |                multifileList: [], | 
 |  |  |                linkName: '', | 
 |  |  |                linkPhone: '', | 
 |  |  |                priceUnit: '元/人/天', | 
 |  |  |                estimatedAccount: '', | 
 |  |  |                type: 0 | 
 |  |  |             }, | 
 |  |  |             cateList: [], | 
 |  |  |             viewStatus: false | 
 |  |  |          }; | 
 |  |  |       }, | 
 |  |  |       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 | 
 |  |  |          this.getCateList() | 
 |  |  |       }, | 
 |  |  |       methods: { | 
 |  |  |          // 提交订单 | 
 |  |  |          submit() { | 
 |  |  |             if (!this.form.categoryId) { | 
 |  |  |                return uni.showToast({ title: '请选择分拣品种', icon: 'none' }) | 
 |  |  |             } | 
 |  |  |             if (!this.form.priceNum2) { | 
 |  |  |                return uni.showToast({ title: '请输入用工数量', icon: 'none' }) | 
 |  |  |             } | 
 |  |  |             if (!this.form.price) { | 
 |  |  |                return uni.showToast({ title: '请输入费用标准', icon: 'none' }) | 
 |  |  |             } | 
 |  |  |             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}` | 
 |  |  |                      }) | 
 |  |  |                   } | 
 |  |  |                }) | 
 |  |  |          }, | 
 |  |  |          // 计算金额 | 
 |  |  |          getPrice() { | 
 |  |  |             if (this.form.price && this.form.priceNum1 && this.form.priceNum2) { | 
 |  |  |                this.$u.api.getTotal({ | 
 |  |  |                   price: Number(this.form.price) * 100, | 
 |  |  |                   priceUnit: this.form.priceUnit, | 
 |  |  |                   priceNum1: this.form.priceNum1, | 
 |  |  |                   priceNum2: this.form.priceNum2, | 
 |  |  |                   type: this.form.type, | 
 |  |  |                   workType: this.form.workType | 
 |  |  |                }).then(res => { | 
 |  |  |                   this.form.estimatedAccount = res.data | 
 |  |  |                }) | 
 |  |  |             } | 
 |  |  |          }, | 
 |  |  |          confirmDate(e) { | 
 |  |  |             this.form.startDate = e[0] | 
 |  |  |             this.form.endDate = e[e.length - 1] | 
 |  |  |             this.form.days = e.length; | 
 |  |  |             this.show = false | 
 |  |  |          }, | 
 |  |  |          selectAddress() { | 
 |  |  |             uni.chooseLocation({ | 
 |  |  |                success: (res) => { | 
 |  |  |                   this.form.lat = res.latitude | 
 |  |  |                   this.form.lgt = res.longitude | 
 |  |  |                   this.form.address = res.address | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  |          }, | 
 |  |  |          confirmCategary(e) { | 
 |  |  |             this.form.categoryId = e.value[0].id | 
 |  |  |             this.form.categoryName = e.value[0].name | 
 |  |  |             this.show1 = false | 
 |  |  |          }, | 
 |  |  |          getCateList() { | 
 |  |  |             this.$u.api.getCategoryList({ | 
 |  |  |                type: 0 | 
 |  |  |             }).then(res => { | 
 |  |  |                this.cateList = [res.data] | 
 |  |  |             }) | 
 |  |  |          }, | 
 |  |  |          uploadImg() { | 
 |  |  |             uni.chooseImage({ | 
 |  |  |                success: (chooseImageRes) => { | 
 |  |  |                   const tempFilePaths = chooseImageRes.tempFilePaths; | 
 |  |  |                   uni.uploadFile({ | 
 |  |  |                      url: this.$baseUrl + '/web/public/upload', | 
 |  |  |                      filePath: tempFilePaths[0], | 
 |  |  |                      name: 'file', | 
 |  |  |                      formData: { | 
 |  |  |                         'folder': 'orders' | 
 |  |  |                      }, | 
 |  |  |                      success: (uploadFileRes) => { | 
 |  |  |                         const res = JSON.parse(uploadFileRes.data) | 
 |  |  |                         this.form.multifileList.push({ | 
 |  |  |                            fileurl: res.data.imgaddr, | 
 |  |  |                            name: res.data.originname, | 
 |  |  |                            url: res.data.url, | 
 |  |  |                            type: 0 | 
 |  |  |                         }) | 
 |  |  |                      } | 
 |  |  |                   }); | 
 |  |  |                } | 
 |  |  |             }); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | </script> | 
 |  |  | 
 |  |  |                   font-weight: 600; | 
 |  |  |                   font-size: 32rpx; | 
 |  |  |                   color: #222222; | 
 |  |  |                } | 
 |  |  |                .list-item-label-info { | 
 |  |  |                   font-weight: 400; | 
 |  |  |                   font-size: 26rpx; | 
 |  |  |                   color: #999999; | 
 |  |  |                   margin-left: 26rpx; | 
 |  |  |                } | 
 |  |  |                .list-item-label-x { | 
 |  |  |                   width: 6rpx; | 
 |  |  | 
 |  |  |                      border-radius: 8rpx; | 
 |  |  |                      margin-right: 20rpx; | 
 |  |  |                      border: 2rpx solid #EEEEEE; | 
 |  |  |                      position: relative; | 
 |  |  |                      &:last-child { | 
 |  |  |                         margin: 0 !important; | 
 |  |  |                      } | 
 |  |  | 
 |  |  |                         color: #666666; | 
 |  |  |                         margin-top: 16rpx; | 
 |  |  |                      } | 
 |  |  |                      .upload-item-dele { | 
 |  |  |                         position: absolute; | 
 |  |  |                         top: -20rpx; | 
 |  |  |                         right: -20rpx; | 
 |  |  |                         width: 40rpx; | 
 |  |  |                         height: 40rpx; | 
 |  |  |                         z-index: 9; | 
 |  |  |                      } | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |                .list-item-row-val { |