262 lines
7.2 KiB
Vue
262 lines
7.2 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="main">
|
|||
|
|
<HMfilterDropdown
|
|||
|
|
:filterData="filterData"
|
|||
|
|
:defaultSelected ="defaultSelected"
|
|||
|
|
@confirm="confirm">
|
|||
|
|
</HMfilterDropdown>
|
|||
|
|
<view style="height: 100rpx;"></view>
|
|||
|
|
<view class="flex flex-align-center search">
|
|||
|
|
<text class="iconfont icon"></text>
|
|||
|
|
<input type="text" v-model="keyName" @confirm="getList" confirm-type="done" placeholder="昵称/推荐码" class="flex-grow input" />
|
|||
|
|
<text class="iconfont del" v-if="keyName" @click="keyName=''"></text>
|
|||
|
|
</view>
|
|||
|
|
<view class="list">
|
|||
|
|
<view class="list-item" v-for="(item, i) in list" :key="i">
|
|||
|
|
<view class="flex" @tap="viewUser(item, 2)">
|
|||
|
|
<view class="img-box">
|
|||
|
|
<image :src="item.headPortrait" mode="" class="avatar"></image>
|
|||
|
|
<text class="status" style="background-color: #0488a9;" v-if="item.distributorWorkStatus === 2">已开工</text>
|
|||
|
|
<text class="status" style="background-color: #ffa800;" v-else-if="item.distributorWorkStatus === 3">工作中</text>
|
|||
|
|
<text class="status" v-else>休息中</text>
|
|||
|
|
</view>
|
|||
|
|
<view class="flex-grow">
|
|||
|
|
<view class="flex flex-align-center">
|
|||
|
|
<view class="six" :class="{'woman':item.gender === 3}">
|
|||
|
|
<text class="iconfont icon" v-if="item.gender === 2"></text>
|
|||
|
|
<text class="iconfont icon" v-if="item.gender === 3"></text>
|
|||
|
|
<text>{{item.age}}</text>
|
|||
|
|
</view>
|
|||
|
|
<text class="line font32">{{item.nickname}}</text>
|
|||
|
|
</view>
|
|||
|
|
<!-- <text class="font30" style="margin: 6rpx 0;display: block;">Ta的酒量:{{item.alcoholConsumption}}</text> -->
|
|||
|
|
<view class="flex flex-between font28 color-b6" style="margin-top: 10rpx;">
|
|||
|
|
<text>评分:{{item.distributorScore || '0'}}</text>
|
|||
|
|
<text>接单:{{item.distributorTurnover || '0'}}</text>
|
|||
|
|
<text>距离:{{item.distance}}m</text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="flex flex-center" style="margin-top: 0rpx;">
|
|||
|
|
<button type="primary" class="bg-base" size="mini" @click="onSelect(item)">为我配送</button>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<uni-load-more :status="loading"></uni-load-more>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import url from "@/common/http/url.js"
|
|||
|
|
import imMix from "./imMix.js"
|
|||
|
|
import HMfilterDropdown from './components/HM-filterDropdown/HM-filterDropdown.vue';
|
|||
|
|
import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue"
|
|||
|
|
import mix from "@/pages/interaction/modules/mix.js"
|
|||
|
|
export default{
|
|||
|
|
mixins: [imMix,mix],
|
|||
|
|
components:{
|
|||
|
|
HMfilterDropdown, uniLoadMore
|
|||
|
|
},
|
|||
|
|
data(){
|
|||
|
|
return {
|
|||
|
|
filterData: [
|
|||
|
|
{
|
|||
|
|
name: "状态",
|
|||
|
|
type: "hierarchy",
|
|||
|
|
submenu: [
|
|||
|
|
{name: "全部", value: 0},
|
|||
|
|
{name: "休息中", value: 1},
|
|||
|
|
{name: "已开工", value: 2},
|
|||
|
|
{name: "工作中", value: 3}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "性别",
|
|||
|
|
type: "hierarchy",
|
|||
|
|
submenu: [
|
|||
|
|
{name: "性别不限", value: 0},
|
|||
|
|
{name: "男", value: 2},
|
|||
|
|
{name: "女", value: 3}
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "年龄",
|
|||
|
|
type: "hierarchy",
|
|||
|
|
submenu: [
|
|||
|
|
{name: "年龄不限", value: 0},
|
|||
|
|
{name: "18-25", value: "18-25"},
|
|||
|
|
{name: "25-30", value: "25-30"},
|
|||
|
|
{name: "30以上", value: "30-999"}
|
|||
|
|
|
|||
|
|
]
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
defaultSelected: null,
|
|||
|
|
selectedValue: null,
|
|||
|
|
id: "",
|
|||
|
|
list: [],
|
|||
|
|
loading: "nomore",
|
|||
|
|
keyName: "",
|
|||
|
|
optData: {}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
onLoad(opt) {
|
|||
|
|
let data = uni.getStorageSync("agentData")
|
|||
|
|
if (data){
|
|||
|
|
this.optData = data
|
|||
|
|
this.id = data.orderId
|
|||
|
|
this.getList()
|
|||
|
|
uni.removeStorageSync("agentData")
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
onPullDownRefresh() {
|
|||
|
|
this.list = []
|
|||
|
|
this.defaultSelected = null
|
|||
|
|
this.selectedValue = null
|
|||
|
|
this.keyName = ""
|
|||
|
|
this.getList()
|
|||
|
|
},
|
|||
|
|
onReachBottom() {
|
|||
|
|
this.getList()
|
|||
|
|
},
|
|||
|
|
methods:{
|
|||
|
|
getList(){
|
|||
|
|
let params = {
|
|||
|
|
orderId: this.id,
|
|||
|
|
pageNum: this.list.length,
|
|||
|
|
status: this.selectedValue?(this.selectedValue[0][0]||0):0,
|
|||
|
|
gender: this.selectedValue?(this.selectedValue[1][0]||0):0,
|
|||
|
|
ageRange: this.selectedValue?(this.selectedValue[2][0]||0):0,
|
|||
|
|
wordKey: this.keyName
|
|||
|
|
}
|
|||
|
|
this.$http("GET", url.distributor.choiceDistributorList, params).then(res =>{
|
|||
|
|
this.list = this.list.concat(res.data)
|
|||
|
|
this.loading = res.data.length < 12 ? 'nomore' : 'more'
|
|||
|
|
uni.stopPullDownRefresh()
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
onSelect(item){
|
|||
|
|
let _this = this
|
|||
|
|
this.sessionOperation(item.imAccount, 2)
|
|||
|
|
this.$showModal("是否选择该配送员为我配送", "提示", res=>{
|
|||
|
|
if (res.confirm) {
|
|||
|
|
_this.$http("POST", url.distributor.choiceDistributor, {orderId: _this.id, distributorUserId: item.id}).then(res =>{
|
|||
|
|
_this.$msg(res.data)
|
|||
|
|
|
|||
|
|
// #ifdef APP-PLUS
|
|||
|
|
// 发送一条消息,判断对方是否在线
|
|||
|
|
this.isOtherOnline(item.imAccount, "selectAgent")
|
|||
|
|
// 发送消息给对方,邀请对方接单
|
|||
|
|
let goodsInfo = {
|
|||
|
|
orderId: _this.id,
|
|||
|
|
goodsId: _this.optData.goodsId,
|
|||
|
|
goodsImage: _this.optData.goodsImage,
|
|||
|
|
goodsName: _this.optData.goodsName,
|
|||
|
|
skuName: _this.optData.skuName,
|
|||
|
|
price: _this.optData.price,
|
|||
|
|
number: _this.optData.number,
|
|||
|
|
status: 1 ,// 1-邀请对方接单,用户和配送员都可操作取消 2-用户取消配送 3-配送员取消接单 4-配送员接单
|
|||
|
|
identity: item.imAccount, // 配送配送员的imAccount
|
|||
|
|
}
|
|||
|
|
_this.sendMsgToOther(item.imAccount, goodsInfo, 6, 2, ()=>{
|
|||
|
|
_this.editDBData(goodsInfo.orderId, goodsInfo.status)
|
|||
|
|
})
|
|||
|
|
// #endif
|
|||
|
|
|
|||
|
|
_this.$navigateBack()
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
confirm(e){
|
|||
|
|
this.defaultSelected = e.index
|
|||
|
|
this.selectedValue = e.value
|
|||
|
|
this.list = []
|
|||
|
|
this.getList()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.main{
|
|||
|
|
min-height: 100vh;
|
|||
|
|
.search{
|
|||
|
|
width: 600rpx;
|
|||
|
|
background-color: #eff1f8;
|
|||
|
|
height: 80rpx;
|
|||
|
|
border-radius: 50rpx;
|
|||
|
|
padding: 0rpx 20rpx;
|
|||
|
|
margin-left: 55rpx;
|
|||
|
|
.icon{
|
|||
|
|
font-size: 48rpx;
|
|||
|
|
margin-right: 10rpx;
|
|||
|
|
color: #b2b6bb;
|
|||
|
|
}
|
|||
|
|
.del{
|
|||
|
|
margin-left: 10rpx;
|
|||
|
|
color: #999999;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.list{
|
|||
|
|
background-color: white;
|
|||
|
|
padding: 0 30rpx;
|
|||
|
|
margin-top: 20rpx;
|
|||
|
|
&-item{
|
|||
|
|
margin-bottom: 20rpx;
|
|||
|
|
border-bottom: 2rpx solid #EEEEEE;
|
|||
|
|
padding: 20rpx 0;
|
|||
|
|
.img-box{
|
|||
|
|
width: 140rpx;
|
|||
|
|
height: 140rpx;
|
|||
|
|
margin-right: 10rpx;
|
|||
|
|
position: relative;
|
|||
|
|
border-radius: 10rpx;
|
|||
|
|
overflow: hidden;
|
|||
|
|
.avatar{
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
}
|
|||
|
|
.status{
|
|||
|
|
position: absolute;
|
|||
|
|
right: 0;
|
|||
|
|
top: 0;
|
|||
|
|
color: #FFFFFF;
|
|||
|
|
background-color: #7c7d7e;
|
|||
|
|
font-size: 26rpx;
|
|||
|
|
padding: 4rpx 16rpx;
|
|||
|
|
border-radius: 26rpx 0rpx 0rpx 26rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.six{
|
|||
|
|
background-color: #1995fc;
|
|||
|
|
border-radius: 20rpx;
|
|||
|
|
padding: 0rpx 10rpx;
|
|||
|
|
display: flex;
|
|||
|
|
flex-direction: row;
|
|||
|
|
align-items: center;
|
|||
|
|
justify-content: center;
|
|||
|
|
font-size: 24rpx;
|
|||
|
|
margin-right: 6rpx;
|
|||
|
|
color: white;
|
|||
|
|
.icon{
|
|||
|
|
margin-right: 6rpx;
|
|||
|
|
font-size: 24rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.woman{
|
|||
|
|
background-color: #ff4d94;
|
|||
|
|
}
|
|||
|
|
.btn{
|
|||
|
|
// border-radius: 50rpx;
|
|||
|
|
// border: 2rpx solid #F8D247;
|
|||
|
|
// color: #F8D247;
|
|||
|
|
// font-size: 24rpx;
|
|||
|
|
// padding: 4rpx 20rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</style>
|