| | |
| | | <view class="index-j-head"> |
| | | <view :style="{ width: '100%', height: statusbarHeight + 'px' }"></view> |
| | | <view class="index-c-title" :style="{ height: navHeight + 'px' }"> |
| | | <text>近快</text> |
| | | <text>接单大厅</text> |
| | | </view> |
| | | </view> |
| | | <view class="search" :style="{ top: statusbarHeight + navHeight + 'px' }"> |
| | | <view class="index-j-cate"> |
| | | <view class="index-j-cate-item"> |
| | | <text>全部</text> |
| | | <view class="index-j-cate-item-x"></view> |
| | | </view> |
| | | <view class="index-j-cate-item"> |
| | | <text>用工</text> |
| | | </view> |
| | | <view class="index-j-cate-item"> |
| | | <text>运货</text> |
| | | </view> |
| | | <view class="index-j-cate-item"> |
| | | <text>订餐</text> |
| | | <view class="index-j-cate-item" v-for="(item, index) in searchType" :key="index" @click="clickCate(item.id)"> |
| | | <text :style="{ color: typeVal === item.id ? '#222222' : '', fontSize: typeVal === item.id ? '36rpx' : '', fontWeight: typeVal === item.id ? '600' : '' }">{{item.name}}</text> |
| | | <view class="index-j-cate-item-x" v-if="typeVal === item.id"></view> |
| | | </view> |
| | | </view> |
| | | <view class="index-j-search"> |
| | | <view class="index-j-search-item active">最新发布</view> |
| | | <view class="index-j-search-item">距离优先</view> |
| | | <view class="index-j-search-item">价格从高到低</view> |
| | | <view :class="sortType === item.id ? 'index-j-search-item active' : 'index-j-search-item'" v-for="(item, index) in sortList" :key="index" @click="clickSort(item.id)">{{item.name}}</view> |
| | | </view> |
| | | </view> |
| | | <view class="index-j-list"> |
| | | <view class="index-list-item"> |
| | | <view class="index-list-item" v-for="(item, index) in orderList" :key="index"> |
| | | <view class="index-list-item-head"> |
| | | <view class="index-list-item-head-l"> |
| | | <view class="xoam"></view> |
| | | <text>订餐单</text> |
| | | <text v-if="item.type === 0 && item.workType === 0">用工单 - 采摘工</text> |
| | | <text v-else-if="item.type === 0 && item.workType === 1">用工单 - 分拣工</text> |
| | | <text v-else-if="item.type === 0 && item.workType === 2">用工单 - 包装工</text> |
| | | |
| | | <text v-else-if="item.type === 1">运货单-{{item.categoryName}}-{{item.carUnit}}</text> |
| | | |
| | | <text v-else-if="item.type === 2">订餐单</text> |
| | | </view> |
| | | <view class="index-list-item-head-r">距离 1.3km</view> |
| | | <view class="index-list-item-head-r">距离 {{item.distance}}km</view> |
| | | </view> |
| | | <view class="index-list-item-info"> |
| | | 午餐5元(30份)|晚餐8元(20份) |
| | | <view class="index-list-item-info" v-if="item.type === 0 && item.workType === 0"> |
| | | {{item.categoryName}}|{{item.priceNum1}}斤 |
| | | </view> |
| | | <view class="index-list-item-dz"> |
| | | <image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image> |
| | | <text>长江西路大蜀山森林公园西门保安室</text> |
| | | <view class="index-list-item-info" v-if="item.type === 0 && item.workType === 1"> |
| | | {{item.categoryName}}|{{item.priceNum1}}人 |
| | | </view> |
| | | <view class="index-list-item-dz"> |
| | | <image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image> |
| | | <text>07-26 至 07-27(2天)</text> |
| | | <view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2"> |
| | | {{item.categoryName}}|{{item.priceNum1}}人 |
| | | </view> |
| | | <view class="index-list-item-price"> |
| | | <text>预估:</text> |
| | | <text>¥1000.00</text> |
| | | <view class="index-list-item-info" v-if="item.type === 1"> |
| | | {{item.transportTypeName}} | {{item.transportNum}}{{item.transportUnit}}|用车{{item.priceNum1}}天 |
| | | </view> |
| | | <view class="eidt"> |
| | | <sunui-mverify @change="mverify"></sunui-mverify> |
| | | <view class="index-list-item-info" v-if="item.type === 2"> |
| | | {{item.wayInfoCopy}} |
| | | </view> |
| | | </view> |
| | | <view class="index-list-item"> |
| | | <view class="index-list-item-head"> |
| | | <view class="index-list-item-head-l"> |
| | | <view class="xoam"></view> |
| | | <text>运货单-小货车-厢式</text> |
| | | </view> |
| | | <view class="index-list-item-head-r">待接单方接单</view> |
| | | </view> |
| | | <view class="index-list-item-info"> |
| | | 葡萄|20000斤|需2辆 |
| | | </view> |
| | | <view class="index-list-item-date"> |
| | | <image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image> |
| | | <text>07-26 至 07-27(2天)</text> |
| | | </view> |
| | | <view class="address"> |
| | | |
| | | <view class="address" v-if="item.type === 1"> |
| | | <view class="address-xian"></view> |
| | | <view class="address-row"> |
| | | <image src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image> |
| | | <text>长江西路大蜀山森林公园西门保安室</text> |
| | | </view> |
| | | <view class="address-row"> |
| | | <image src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image> |
| | | <text>长江西路大蜀山森林公园东门保安室</text> |
| | | </view> |
| | | <view class="address-row"> |
| | | <image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image> |
| | | <text>安徽莲花科技产业园豆米科技有限公司</text> |
| | | <view class="address-row" v-for="(address, i) in item.wayInfo" :key="i"> |
| | | <image src="/static/icon/ic_qidian@2x.png" mode="widthFix" v-if="i === 0"></image> |
| | | <image src="/static/icon/ic_jingguo@2x.png" mode="widthFix" v-else-if="i !== 0 && i !== item.wayInfo.length - 1"></image> |
| | | <image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix" v-else-if="i === item.wayInfo.length - 1"></image> |
| | | <text>{{item.location}}</text> |
| | | </view> |
| | | </view> |
| | | <template v-if="[0, 2].includes(item.type)"> |
| | | <view class="index-list-item-dz"> |
| | | <image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image> |
| | | <text>{{item.location}}</text> |
| | | </view> |
| | | <view class="index-list-item-dz"> |
| | | <image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image> |
| | | <text>{{item.startDate}} 至 {{item.endDate}}({{item.priceNum1}}天)</text> |
| | | </view> |
| | | </template> |
| | | <view class="index-list-item-price"> |
| | | <text>预估:</text> |
| | | <text>¥1000.00</text> |
| | | <text>¥{{item.estimatedAccount / 100}}</text> |
| | | </view> |
| | | <view class="eidt"> |
| | | <sunui-mverify @change="mverify"></sunui-mverify> |
| | | </view> |
| | | </view> |
| | | <view class="index-list-item"> |
| | | <view class="index-list-item-head"> |
| | | <view class="index-list-item-head-l"> |
| | | <view class="xoam"></view> |
| | | <text>用工单-采摘工</text> |
| | | </view> |
| | | <view class="index-list-item-head-r">待接单</view> |
| | | </view> |
| | | <view class="index-list-item-info"> |
| | | 葡萄|2000斤 |
| | | </view> |
| | | <view class="index-list-item-dz"> |
| | | <image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image> |
| | | <text>长江西路大蜀山森林公园西门保安室</text> |
| | | </view> |
| | | <view class="index-list-item-dz"> |
| | | <image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image> |
| | | <text>07-26 至 07-27(2天)</text> |
| | | </view> |
| | | <view class="index-list-item-price"> |
| | | <text>预估:</text> |
| | | <text>¥1000.00</text> |
| | | </view> |
| | | <view class="eidt"> |
| | | <sunui-mverify @change="mverify"></sunui-mverify> |
| | | <sunui-mverify @change="getaccept($event, item.id, index)"></sunui-mverify> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- 订餐 --> |
| | | <template v-if="typeId === 2"> |
| | | <view class="list"> |
| | | <view class="list-item"> |
| | | <view class="list-item-label">时间地点</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.days + '天)' : '请选择'}}</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-radio"> |
| | | <view class="radio-item"> |
| | | <view class="radio-item-label">早餐</view> |
| | | <view class="radio-item" v-for="(item, index) in orderFood" :key="index"> |
| | | <view class="radio-item-label">{{item.name}}</view> |
| | | <view class="radio-item-list"> |
| | | <view class="radio-item-list-l"> |
| | | <view class="radio-item-list-item active">5元</view> |
| | | <view class="radio-item-list-item">8元</view> |
| | | <view class="radio-item-list-item">10元</view> |
| | | <view :class="child.active ? 'radio-item-list-item active' : 'radio-item-list-item'" v-for="(child, childIndex) in item.list" :key="childIndex" @click="selectMenu(index, childIndex)">{{child.price}}元</view> |
| | | </view> |
| | | <view class="radio-item-list-data"> |
| | | <text>份数:</text> |
| | | <input type="number" placeholder="0"> |
| | | <text style="color: #999999;">份</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="radio-item"> |
| | | <view class="radio-item-label">午餐</view> |
| | | <view class="radio-item-list"> |
| | | <view class="radio-item-list-l"> |
| | | <view class="radio-item-list-item active">5元</view> |
| | | <view class="radio-item-list-item">8元</view> |
| | | <view class="radio-item-list-item">10元</view> |
| | | </view> |
| | | <view class="radio-item-list-data"> |
| | | <text>份数:</text> |
| | | <input type="number" placeholder="0"> |
| | | <text style="color: #999999;">份</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="radio-item"> |
| | | <view class="radio-item-label">晚餐</view> |
| | | <view class="radio-item-list"> |
| | | <view class="radio-item-list-l"> |
| | | <view class="radio-item-list-item active">5元</view> |
| | | <view class="radio-item-list-item">8元</view> |
| | | <view class="radio-item-list-item">10元</view> |
| | | </view> |
| | | <view class="radio-item-list-data"> |
| | | <text>份数:</text> |
| | | <input type="number" placeholder="0"> |
| | | <input type="number" v-model="item.num" placeholder="请输入"> |
| | | <text style="color: #999999;">份</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="list-item-row"> |
| | | <view class="list-item-row" @click="selectAddress(1)"> |
| | | <view class="list-item-row-label">用餐地点<b>*</b></view> |
| | | <view class="list-item-row-val"> |
| | | <text>请选择</text> |
| | | <text>{{form.address ? form.address : '请选择'}}</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"> |
| | | <view class="list-item-label">需求</view> |
| | | <view class="list-item-row"> |
| | | <view class="list-item-row-label">用餐人数<b>*</b></view> |
| | | <view class="list-item-row-user"> |
| | | <view class="user-item"> |
| | | <text>早餐</text> |
| | | <input type="text" placeholder="请输入" /> |
| | | <text>份</text> |
| | | </view> |
| | | <view class="user-item"> |
| | | <text>午餐</text> |
| | | <input type="text" placeholder="请输入" /> |
| | | <text>份</text> |
| | | </view> |
| | | </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"> |
| | |
| | | <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.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="number" placeholder="请输入" maxlength="11" /> |
| | | <input type="number" v-model="form.linkPhone" placeholder="请输入" maxlength="11" /> |
| | | </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"> |
| | | <view class="footer-bottom-kf"> |
| | | <image src="/static/logo.png" mode="widthFix"></image> |
| | | <text>客服</text> |
| | | </view> |
| | | <div class="footer-bottom-btn"> |
| | | <text>立即下单</text> |
| | | <text>(服务完成后付款)</text> |
| | | </div> |
| | | <view class="box-hz-btn" :style="{ backgroundImage: 'url(' + btn + ')' }"> |
| | | <view class="box-hz-btn-kf">客服</view> |
| | | <view class="box-hz-btn-next" @click="submit">下一步</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | |
| | | </view> |
| | | <view class="box-hz-list-item" @click="selectAddress(1)"> |
| | | <view class="box-hz-list-item-label"><text>用工地点:</text></view> |
| | | <view :class="form.address ? 'box-hz-list-item-val active' :'box-hz-list-item-val'"> |
| | | <view :class="form.location ? 'box-hz-list-item-val active' :'box-hz-list-item-val'"> |
| | | <view class="box-hz-list-item-val-left"> |
| | | <image class="icon" src="/static/icon/ic_location@2x.png" mode="widthFix"></image> |
| | | <text>{{form.address ? form.address : '请选择用工地点'}}</text> |
| | | <text>{{form.location ? form.location : '请选择用工地点'}}</text> |
| | | </view> |
| | | <u-icon name="arrow-right" color="#111111" size="16"></u-icon> |
| | | </view> |
| | |
| | | <!-- 运货 --> |
| | | <template v-if="typeId === 1"> |
| | | <view class="box-hz-cate"> |
| | | <view :class="carId === item.id ? 'box-hz-cate-item active' : 'box-hz-cate-item'" v-for="(item, index) in car" :key="index" @click="clickCar(item.id)"> |
| | | <view :class="form.categoryId === item.id ? 'box-hz-cate-item active' : 'box-hz-cate-item'" v-for="(item, index) in car" :key="index" @click="clickCar(item)"> |
| | | <text>{{item.name}}</text> |
| | | <view class="box-hz-cate-item-x" v-if="carId === item.id"></view> |
| | | <view class="box-hz-cate-item-x" v-if="form.categoryId === item.id"></view> |
| | | </view> |
| | | </view> |
| | | <view class="box-hz-car"> |
| | | <view class="box-hz-car-image"> |
| | | <image src="/static/image/ic_sanlunche@2x.png" mode="widthFix" v-if="carId === 1"></image> |
| | | <image src="/static/image/ic_xiaohuoche@2x.png" mode="widthFix" v-else-if="carId === 2"></image> |
| | | <image :src="carImage" mode="widthFix"></image> |
| | | </view> |
| | | <view class="box-hz-car-info" v-if="carId === 1"> |
| | | 厢长3.8~4.0米 载重1.5~2.0吨 载方12.3~18.4方 |
| | | </view> |
| | | <view class="box-hz-car-info" v-else-if="carId === 2"> |
| | | 厢长3.8~4.0米 载重1.5~2.0吨 载方12.3~18.4方 |
| | | <view class="box-hz-car-info" v-if="carRemark"> |
| | | {{carRemark || ''}} |
| | | </view> |
| | | </view> |
| | | <view class="box-hz-list"> |
| | | <view class="box-hz-list-item"> |
| | | <view class="box-hz-list-item" @click="show = true"> |
| | | <view class="box-hz-list-item-label"><text>用车时间:</text></view> |
| | | <view class="box-hz-list-item-val"> |
| | | <view :class="form.startDate ? 'box-hz-list-item-val active' : 'box-hz-list-item-val'"> |
| | | <view class="box-hz-list-item-val-left"> |
| | | <image class="icon" src="/static/icon/ic_time@2x.png" mode="widthFix"></image> |
| | | <text>请选择用车时间</text> |
| | | <text>{{ form.startDate ? form.startDate + ' 至 ' + form.endDate : '请选择用工时间'}}</text> |
| | | </view> |
| | | <image class="icon1" src="/static/icon/home_ar_next@2x.png" mode="widthFix"></image> |
| | | <u-icon name="arrow-right" color="#111111" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="box-hz-list-item"> |
| | | <view class="box-hz-list-item-label"> |
| | | <text>用车时间:</text> |
| | | <text>+增加途经点</text> |
| | | <text @click="addAddr">+增加途经点</text> |
| | | </view> |
| | | <view class="item-d"> |
| | | <view class="item-d-row"> |
| | | <view class="item-d-row" @click="selectAddress(2)"> |
| | | <view class="item-d-row-icon"> |
| | | <image src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image> |
| | | </view> |
| | | <view class="item-d-row-val"> |
| | | <text>请选择用车起点</text> |
| | | <image src="/static/icon/home_ar_next@2x.png" mode="widthFix"></image> |
| | | <text>{{form.address ? form.address : '请选择用车起点'}}</text> |
| | | <u-icon name="arrow-right" color="#111111" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="item-d-row"> |
| | | <view class="item-d-row" v-for="(item, index) in form.wayInfoDTOList" :key="index" @click="selectAddress(4, index)"> |
| | | <view class="item-d-row-icon"> |
| | | <image src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image> |
| | | </view> |
| | | <view class="item-d-row-val"> |
| | | <text style="color: #999999;">请选择途经地点</text> |
| | | <image src="/static/icon/home_ar_next@2x.png" mode="widthFix"></image> |
| | | <text>{{item.location ? item.location : '请选择途经地点'}}</text> |
| | | <view style="display: flex; align-items: center; flex-shrink: 0;"> |
| | | <image src="/static/icon/ic_delete@2x.png" style="margin-right: 22rpx; width: 32rpx; height: 32rpx;" @click.stop="form.wayInfoDTOList.splice(index, 1)" mode="widthFix"></image> |
| | | <u-icon name="arrow-right" color="#111111" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item-d-row"> |
| | | <view class="item-d-row" @click="selectAddress(3)"> |
| | | <view class="item-d-row-icon"> |
| | | <image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image> |
| | | </view> |
| | | <view class="item-d-row-val"> |
| | | <text>请选择用车终点</text> |
| | | <image src="/static/icon/home_ar_next@2x.png" mode="widthFix"></image> |
| | | <text>{{form.locationEnd ? form.locationEnd : '请选择用车终点'}}</text> |
| | | <u-icon name="arrow-right" color="#111111" size="16"></u-icon> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | |
| | | <!-- 选择日期范围 --> |
| | | <u-calendar :show="show" color="#00BC12" mode="range" @close="show = false" @confirm="confirmDate"></u-calendar> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | export default { |
| | | components: { sunuiMverify }, |
| | | computed: { |
| | | ...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid']) |
| | | ...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid', 'latitude', 'longitude']), |
| | | totalPrice() { |
| | | return this.form.estimatedAccount / 100 |
| | | } |
| | | }, |
| | | onShow(options){ |
| | | onShow(options) { |
| | | this.typeViewId = 0 |
| | | if(this.token &&this.token!='' && this.userInfo && JSON.stringify(this.userInfo) != '{}'){ |
| | | this.isLogin=true |
| | | if(this.token && this.token != '' && this.userInfo && JSON.stringify(this.userInfo) != '{}'){ |
| | | this.isLogin = true |
| | | } |
| | | if (this.userInfo && this.userInfo.useIdentity == 1) { |
| | | this.typeViewId = 1 |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | show: false, |
| | | isLogin: false, |
| | | typeId: 0, |
| | | carId: 1, |
| | | type: [ |
| | | { name: '用工', id: 0 }, |
| | | { name: '运货', id: 1 }, |
| | | { name: '订餐', id: 2 } |
| | | ], |
| | | searchType: [ |
| | | { name: '全部', id: '' }, |
| | | { name: '用工', id: 0 }, |
| | | { name: '运货', id: 1 }, |
| | | { name: '订餐', id: 2 } |
| | |
| | | { name: '分拣工', id: 1 }, |
| | | { name: '包装工', id: 2 } |
| | | ], |
| | | car: [ |
| | | { name: '三轮车', id: 1 }, |
| | | { name: '小货车', id: 2 } |
| | | sortList: [ |
| | | { name: '最新发布', id: 0 }, |
| | | { name: '距离优先', id: 1 }, |
| | | { name: '价格从高到低', id: 2 } |
| | | ], |
| | | car: [], |
| | | btn: require('@/static/image/btn.png'), |
| | | typeViewId: 0, |
| | | carImage: '', |
| | | carRemark: '', |
| | | |
| | | orderFood: [], |
| | | viewStatus: false, |
| | | |
| | | form: { |
| | | startDate: '', |
| | | endDate: '', |
| | | latitude: '', |
| | | longitude: '', |
| | | address: '', |
| | | location: '', |
| | | locationEnd: '', |
| | | wayInfoDTOList: [], |
| | | workType: 0, |
| | | days: '' |
| | | categoryId: '', |
| | | categoryName: '', |
| | | days: '', |
| | | locationRemark: '', |
| | | supplement: '', |
| | | multifileList: [], |
| | | linkName: '', |
| | | linkPhone: '', |
| | | estimatedAccount: '', |
| | | price: '' |
| | | }, |
| | | sortType: 0, |
| | | orderList: [], |
| | | typeVal: '', |
| | | page: 1, |
| | | next: true |
| | | } |
| | | }, |
| | | async onLoad() { |
| | | await this.$onLaunched; |
| | | this.getCategoryLists() |
| | | this.getOrderList() |
| | | this.form.linkPhone = this.userInfo.telephone |
| | | }, |
| | | watch: { |
| | | typeId: { |
| | | handler(news, old) { |
| | | this.form.startDate = '' |
| | | |
| | | this.form.endDate = '' |
| | | this.form.latitude = '' |
| | | this.form.longitude = '' |
| | | this.form.location = '' |
| | | this.form.locationEnd = '' |
| | | this.form.wayInfoDTOList = '' |
| | | this.form.workType = '' |
| | | this.form.days = '' |
| | | this.form.locationRemark = '' |
| | | this.form.supplement = '' |
| | | this.form.multifileList = [] |
| | | this.form.linkName = '' |
| | | this.form.estimatedAccount = '' |
| | | this.form.price = '' |
| | | this.viewStatus = false |
| | | } |
| | | }, |
| | | orderFood: { |
| | | deep: true, |
| | | handler(news, old) { |
| | | let price = 0 |
| | | news.forEach(item => { |
| | | let num = 0 |
| | | item.list.forEach(child => { |
| | | if (child.active) { |
| | | num = Number(child.price) |
| | | } |
| | | }) |
| | | if (item.num && num > 0) { |
| | | price += num * item.num |
| | | } |
| | | }) |
| | | this.form.price = price |
| | | } |
| | | }, |
| | | 'form.price': { |
| | | handler(news, old) { |
| | | if (news > 0) { |
| | | this.getPrice() |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | onReachBottom() { |
| | | this.getOrderList() |
| | | }, |
| | | methods: { |
| | | // 手动接单 |
| | | getaccept(e, orderId, index) { |
| | | this.$u.api.accept({ orderId }) |
| | | .then(res => { |
| | | uni.showToast({ title: '抢单成功!', icon: 'success', duration: 2000 }) |
| | | setTimeout(() => { |
| | | this.page = 1 |
| | | this.next = true |
| | | this.orderList = [] |
| | | this.getOrderList() |
| | | }, 2000) |
| | | }) |
| | | }, |
| | | clickSort(id) { |
| | | this.sortType = id |
| | | this.page = 1 |
| | | this.next = true |
| | | this.orderList = [] |
| | | this.getOrderList() |
| | | }, |
| | | clickCate(id) { |
| | | this.typeVal = id |
| | | this.page = 1 |
| | | this.next = true |
| | | this.orderList = [] |
| | | this.getOrderList() |
| | | }, |
| | | // 订单分页 |
| | | getOrderList() { |
| | | if (!this.next) return; |
| | | this.$u.api.orderPage({ |
| | | capacity: 10, |
| | | page: this.page, |
| | | model: { |
| | | queryMyOrderType: 2, |
| | | type: this.typeVal, |
| | | sortType: this.sortType, |
| | | queryLat: this.latitude, |
| | | queryLgt: this.longitude |
| | | } |
| | | }).then(res => { |
| | | res.data.records.forEach(item => { |
| | | // 订餐单 |
| | | if (item.type === 2) { |
| | | item.wayInfoCopy = JSON.parse(item.wayInfo).map(item => { |
| | | return `${item.name}${item.price / 100}元(${item.num}份)` |
| | | }).join(' | ') |
| | | // 运货 |
| | | } else if (item.type === 1) { |
| | | item.wayInfo = JSON.parse(item.wayInfo) |
| | | } |
| | | }) |
| | | this.orderList = [...this.orderList, ...res.data.records] |
| | | |
| | | if (this.orderList.length === res.data.total) { |
| | | this.next = false |
| | | } |
| | | }) |
| | | }, |
| | | // 提交订单 |
| | | submit() { |
| | | if (!this.form.startDate) { |
| | | return uni.showToast({ title: '请选择用餐时间', icon: 'none' }) |
| | | } |
| | | if (this.form.price === 0) { |
| | | return uni.showToast({ title: '请选择用餐时间', icon: 'none' }) |
| | | } |
| | | if (!this.form.address) { |
| | | return uni.showToast({ title: '请选择用餐地点', icon: 'none' }) |
| | | } |
| | | if (!this.form.linkPhone) { |
| | | return uni.showToast({ title: '请输入联系电话', icon: 'none' }) |
| | | } |
| | | let cateringDTOList = [] |
| | | this.orderFood.forEach(item => { |
| | | item.list.forEach(child => { |
| | | if (child.active) { |
| | | cateringDTOList.push({ |
| | | name: item.name, |
| | | num: item.num, |
| | | price: (Number(child.price) * Number(item.num)) * 100 |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | this.$u.api.release({ |
| | | ...this.form, |
| | | type: 2, |
| | | price: Number(this.form.price) * 100, |
| | | priceNum1: this.form.days, |
| | | location: this.form.address, |
| | | lat: this.form.latitude, |
| | | lgt: this.form.longitude, |
| | | cateringDTOList |
| | | }).then(res => { |
| | | if (res.code == 200) { |
| | | wx.requestPayment({ |
| | | timeStamp: res.data.object.timeStamp, |
| | | nonceStr: res.data.object.nonceStr, |
| | | package: res.data.object.packageVal, |
| | | signType: res.data.object.signType, |
| | | paySign: res.data.object.paySign, |
| | | success (res1) { |
| | | if (res1.errMsg = 'requestPayment:ok') { |
| | | uni.showToast({ title: '支付成功', icon: 'success', duration: 2000 }); |
| | | setTimeout(() => { |
| | | uni.navigateTo({ |
| | | url: `/pages/success/success?orderId=${res.data.id}` |
| | | }) |
| | | }, 1500) |
| | | } |
| | | }, |
| | | fail(err) { |
| | | console.log(err) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | console.log(cateringDTOList) |
| | | }, |
| | | 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 |
| | | }) |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | // 计算金额 |
| | | getPrice() { |
| | | var that = this |
| | | if (that.form.price && that.form.days) { |
| | | that.$u.api.getTotal({ |
| | | price: Number(that.form.price) * 100, |
| | | priceNum1: that.form.days, |
| | | type: 2 |
| | | }).then(res => { |
| | | that.form.estimatedAccount = res.data |
| | | }) |
| | | } |
| | | }, |
| | | addAddr() { |
| | | this.form.wayInfoDTOList.push({ |
| | | lat: '', |
| | | lgt: '', |
| | | location: '' |
| | | }) |
| | | }, |
| | | confirmDate(e) { |
| | | this.form.startDate = e[0] |
| | | this.form.endDate = e[e.length - 1] |
| | | this.form.days = e.length; |
| | | this.show = false |
| | | if (this.typeId === 2) { |
| | | this.getPrice() |
| | | } |
| | | }, |
| | | selectAddress(type) { |
| | | selectAddress(type, index) { |
| | | uni.chooseLocation({ |
| | | success: (res) => { |
| | | if (type === 1) { |
| | | if ([1,2].includes(type)) { |
| | | this.form.latitude = res.latitude |
| | | this.form.longitude = res.longitude |
| | | this.form.address = res.address |
| | | } else if (type === 3) { |
| | | this.form.locationEnd = res.address |
| | | this.form.latEnd = res.latitude |
| | | this.form.lgtEnd = res.longitude |
| | | } else if (type === 4) { |
| | | this.form.wayInfoDTOList[0].lat = res.latitude |
| | | this.form.wayInfoDTOList[0].lgt = res.longitude |
| | | this.form.wayInfoDTOList[0].location = res.address |
| | | } |
| | | } |
| | | }); |
| | | // uni.getLocation({ |
| | | // type: 'gcj02', |
| | | // success: function (res) { |
| | | // console.log(res) |
| | | // } |
| | | // }); |
| | | }, |
| | | clickType(e) { |
| | | this.typeId = e |
| | | if (e === 2) { |
| | | this.form.categoryId = this.car[0].id |
| | | this.form.categoryName = this.car[0].name |
| | | this.carRemark = this.car[0].remark |
| | | this.carImage = this.car[0].iconFull |
| | | } |
| | | }, |
| | | clickTypeWork(e) { |
| | | this.form.workType = e |
| | | }, |
| | | clickCar(e) { |
| | | this.carId = e |
| | | clickCar(item) { |
| | | this.form.categoryId = item.id |
| | | this.form.categoryName = item.name |
| | | this.carImage = item.iconFull |
| | | this.carRemark = item.remark |
| | | }, |
| | | jump() { |
| | | if(!this.userInfo || !this.token){ |
| | |
| | | |
| | | const { form } = this; |
| | | |
| | | if (!form.startDate || !form.endDate) { |
| | | return uni.showToast({ title: '请选择用工时间', icon: 'none' }) |
| | | } else if (!form.latitude || !form.longitude) { |
| | | return uni.showToast({ title: '请选择用工地点', icon: 'none' }) |
| | | } |
| | | |
| | | // 采摘工 |
| | | if (this.form.workType === 0) { |
| | | // 用工 |
| | | if (this.typeId === 0) { |
| | | |
| | | if (!form.startDate || !form.endDate) { |
| | | return uni.showToast({ title: '请选择用工时间', icon: 'none' }) |
| | | } else if (!form.latitude || !form.longitude) { |
| | | return uni.showToast({ title: '请选择用工地点', icon: 'none' }) |
| | | } |
| | | |
| | | // 采摘工 |
| | | if (this.form.workType === 0) { |
| | | uni.navigateTo({ |
| | | url: `/pages/using-workers/using-workers?days=${form.days}&startDate=${form.startDate}&endDate=${form.endDate}&latitude=${form.latitude}&longitude=${form.longitude}&address=${form.location}&workType=${form.workType}` |
| | | }) |
| | | // 分拣工 |
| | | } else if (this.form.workType === 1) { |
| | | uni.navigateTo({ |
| | | url: `/pages/sorting/sorting?days=${form.days}&startDate=${form.startDate}&endDate=${form.endDate}&latitude=${form.latitude}&longitude=${form.longitude}&address=${form.location}&workType=${form.workType}` |
| | | }) |
| | | // 包装工 |
| | | } else if (this.form.workType === 2) { |
| | | uni.navigateTo({ |
| | | url: `/pages/packaging-worker/packaging-worker?days=${form.days}&startDate=${form.startDate}&endDate=${form.endDate}&latitude=${form.latitude}&longitude=${form.longitude}&address=${form.location}&workType=${form.workType}` |
| | | }) |
| | | } |
| | | // 运货 |
| | | } else if (this.typeId === 1) { |
| | | |
| | | if (!form.startDate || !form.endDate) { |
| | | return uni.showToast({ title: '请选择用车时间', icon: 'none' }) |
| | | } else if (!form.latitude || !form.longitude) { |
| | | return uni.showToast({ title: '请选择用车起点', icon: 'none' }) |
| | | } else if (!form.latEnd || !form.lgtEnd) { |
| | | return uni.showToast({ title: '请选择用车终点', icon: 'none' }) |
| | | } |
| | | |
| | | let carData = { |
| | | startDate: form.startDate, |
| | | endDate: form.endDate, |
| | | lat: form.latitude, |
| | | lgt: form.longitude, |
| | | location: form.address, |
| | | latEnd: form.latEnd, |
| | | lgtEnd: form.lgtEnd, |
| | | locationEnd: form.locationEnd, |
| | | wayInfoDTOList: form.wayInfoDTOList, |
| | | categoryId: form.categoryId, |
| | | categoryName: form.categoryName, |
| | | days: form.days |
| | | } |
| | | |
| | | uni.setStorageSync('carData', carData); |
| | | |
| | | uni.navigateTo({ |
| | | url: `/pages/using-workers/using-workers?days=${form.days}&startDate=${form.startDate}&endDate=${form.endDate}&latitude=${form.latitude}&longitude=${form.longitude}&address=${form.address}&workType=${form.workType}` |
| | | }) |
| | | // 分拣工 |
| | | } else if (this.form.workType === 1) { |
| | | uni.navigateTo({ |
| | | url: `/pages/sorting/sorting?days=${form.days}&startDate=${form.startDate}&endDate=${form.endDate}&latitude=${form.latitude}&longitude=${form.longitude}&address=${form.address}&workType=${form.workType}` |
| | | }) |
| | | // 包装工 |
| | | } else if (this.form.workType === 2) { |
| | | uni.navigateTo({ |
| | | url: `/pages/packaging-worker/packaging-worker?days=${form.days}&startDate=${form.startDate}&endDate=${form.endDate}&latitude=${form.latitude}&longitude=${form.longitude}&address=${form.address}&workType=${form.workType}` |
| | | url: `/pages/freight/freight` |
| | | }) |
| | | } |
| | | }, |
| | | mverify(e){ |
| | | console.log('验证结果:',e); |
| | | // 选择套餐 |
| | | selectMenu(a, b) { |
| | | this.orderFood.forEach((item, index) => { |
| | | if (index === a) { |
| | | item.list.forEach((child, childIndex) => { |
| | | child.active = b === childIndex |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | getCategoryLists() { |
| | | this.$u.api.getCategoryList({ type: 1 }) |
| | | .then(res => { |
| | | this.car = res.data |
| | | this.form.categoryId = res.data[0].id |
| | | this.form.categoryName = res.data[0].name |
| | | this.carRemark = res.data[0].remark |
| | | this.carImage = res.data[0].iconFull |
| | | }) |
| | | this.$u.api.getCategoryList({ type: 2 }) |
| | | .then(res => { |
| | | res.data.forEach(item => { |
| | | item.num = '' |
| | | item.list = item.detailList.map(child => { |
| | | return { |
| | | active: false, |
| | | price: child |
| | | } |
| | | }) |
| | | }) |
| | | this.orderFood = res.data |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | .radio-item { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | align-items: self-end; |
| | | margin-bottom: 30rpx; |
| | | &:last-child { |
| | | margin: 0 !important; |
| | |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | flex-wrap: wrap; |
| | | .active { |
| | | background: #00BC12 !important; |
| | | color: #ffffff !important; |
| | |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #111111; |
| | | margin-right: 30rpx; |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | margin-top: 30rpx; |
| | | &:nth-child(1) { |
| | | margin-top: 0 !important; |
| | | } |
| | | &:nth-child(2) { |
| | | margin-top: 0 !important; |
| | | } |
| | | &:nth-child(3) { |
| | | margin-top: 0 !important; |
| | | } |
| | | } |
| | | } |
| | |
| | | color: #222222; |
| | | text-align: right; |
| | | margin: 0 30rpx; |
| | | &::-webkit-input-placeholder { |
| | | color: #999999; |
| | | font-weight: 400; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | border-radius: 8rpx; |
| | | margin-right: 20rpx; |
| | | border: 2rpx solid #EEEEEE; |
| | | position: relative; |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | |
| | | font-size: 26rpx; |
| | | color: #666666; |
| | | margin-top: 16rpx; |
| | | } |
| | | .upload-item-dele { |
| | | position: absolute; |
| | | top: -20rpx; |
| | | right: -20rpx; |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | z-index: 9; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | .footer-bottom { |
| | | .box-hz-btn { |
| | | width: 100%; |
| | | height: 88rpx; |
| | | background-repeat: no-repeat; |
| | | background-size: 100% 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .footer-bottom-kf { |
| | | .box-hz-btn-kf { |
| | | flex-shrink: 0; |
| | | margin-right: 40rpx; |
| | | width: 188rpx; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | image { |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | } |
| | | text { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #222222; |
| | | margin-top: 8rpx; |
| | | } |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #8B2300; |
| | | } |
| | | .footer-bottom-btn { |
| | | .box-hz-btn-next { |
| | | flex: 1; |
| | | height: 88rpx; |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | background: #00BC12; |
| | | box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16); |
| | | border-radius: 44rpx; |
| | | text { |
| | | &:nth-child(1) { |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #FFFFFF; |
| | | } |
| | | &:nth-child(2) { |
| | | font-weight: 500; |
| | | font-size: 26rpx; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #FFFFFF; |
| | | } |
| | | } |
| | | // .footer-bottom { |
| | | // width: 100%; |
| | | // display: flex; |
| | | // align-items: center; |
| | | // justify-content: space-between; |
| | | // .footer-bottom-kf { |
| | | // flex-shrink: 0; |
| | | // margin-right: 40rpx; |
| | | // display: flex; |
| | | // flex-direction: column; |
| | | // align-items: center; |
| | | // justify-content: center; |
| | | // image { |
| | | // width: 36rpx; |
| | | // height: 36rpx; |
| | | // } |
| | | // text { |
| | | // font-weight: 400; |
| | | // font-size: 24rpx; |
| | | // color: #222222; |
| | | // margin-top: 8rpx; |
| | | // } |
| | | // } |
| | | // .footer-bottom-btn { |
| | | // flex: 1; |
| | | // height: 88rpx; |
| | | // display: flex; |
| | | // align-items: center; |
| | | // justify-content: center; |
| | | // background: #00BC12; |
| | | // box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16); |
| | | // border-radius: 44rpx; |
| | | // text { |
| | | // &:nth-child(1) { |
| | | // font-weight: 500; |
| | | // font-size: 32rpx; |
| | | // color: #FFFFFF; |
| | | // } |
| | | // &:nth-child(2) { |
| | | // font-weight: 500; |
| | | // font-size: 26rpx; |
| | | // color: #FFFFFF; |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | .box { |
| | | width: 100%; |
| | |
| | | .box-hz-car-image { |
| | | width: 432rpx; |
| | | height: 200rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | overflow: hidden; |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | .box-hz-car-info { |
| | |
| | | border: 2rpx solid #FD9E24; |
| | | .item-d-row { |
| | | width: 100%; |
| | | height: 100rpx; |
| | | // height: 100rpx; |
| | | height: auto; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | |
| | | } |
| | | .item-d-row-val { |
| | | flex: 1; |
| | | height: 100%; |
| | | // height: 100%; |
| | | padding: 30rpx 0; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |