You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

306 lines
5.6 KiB

3 months ago
<template>
<view class="dispatch">
<view class="dispatchItem">
<image :src="$picUrl+'/static/news3/filter.png'" mode="aspectFill"></image>
<view class="right">
<view class="title">
{{info.server_name}}
</view>
<view class="num">
x1
</view>
<view class="price">
<text style="font-size: 26upx;">¥</text>
<text>{{info.pay_price}}</text>
</view>
</view>
</view>
<view class="selectContent">
<view class="left">
接单师傅
</view>
<view class="right" @click="openPage()">
<text>{{tabIndex>=0?list[tabIndex].real_name:'请选择接单师傅'}}</text>
<u-icon name="arrow-right" color="#C3C3C3" size="28"></u-icon>
</view>
</view>
<u-popup v-model="isShow" mode="bottom" border-radius="12" mask-close-able="false" closeable>
<view class="goods-classify">
<view class="goods-classify-hd">选择工程师</view>
<view class="goods-classify-bd">
<scroll-view scroll-y class="m">
<view class="item" v-for="(a,i) in list" @click="tabMItem(i)"><view :class="tabIndex == i?'item-on':''">{{a.real_name}}</view></view>
</scroll-view>
</view>
</view>
</u-popup>
<view class="btn" @click="toPaidan()">
确认派单
</view><addShuiyin />
</view>
</template>
<script>
import * as newFunApi from '@/api/newFun'
export default{
data(){
return{
order_id: "",
info: {},
list: [],
tabIndex: -1,
isShow: false,
isClick: true
}
},
onLoad(o) {
if(o.order_id && o.type == 'fuwuorder'){
this.type = o.type
this.order_id = o.order_id;
this.getInfo()
this.getList();
}
},
methods:{
openPage() {
this.isShow = true
},
tabMItem(i){
this.tabIndex = i;
this.isShow = false
},
/**
* 获取详情
*/
async getInfo() {
const {status, message, data} = await newFunApi.serverOrderDetails({
order_id: this.order_id
});
if(status == 200){
this.info = data.info
}
},
/**
* 获取列表
*/
async getList() {
const {status, message, data} = await newFunApi.serverGetEngineer({
order_id: this.order_id
});
if(status == 200){
this.list = data.list
}
},
/**
* 派单
*/
async toPaidan() {
if(this.isClick == false){
return ;
}
this.isClick = false
const {status, message, data} = await newFunApi.serverDispatchOrders({
order_id: this.order_id,
dealer_id: this.tabIndex <= -1?"":this.list[this.tabIndex].user_id
});
if(status == 200){
this.isClick = true
uni.showToast({
title: "派单成功"
})
setTimeout(()=>{
uni.navigateBack({
delta: 1
})
},2000)
}else{
uni.showToast({
icon: "none",
title: message
})
}
},
}
}
</script>
<style lang="scss" scoped>
page{
min-height: 100%;
background-color: #F7F8FA;
}
.goods-classify{
width: 100%;
overflow: hidden;
&-hd{
padding: 30rpx 60rpx;
position: relative;
font-size: 32rpx;
font-weight: 500;
color: #303030;
text-align: center;
.a{
display: flex;
align-items: center;
font-size: 28rpx;
font-weight: 500;
color: #FF624F;
position: absolute;
top: 30rpx;
left: 40rpx;
z-index: 2;
}
}
&-bd{
overflow: hidden;
display: flex;
align-items: flex-start;
.l{
width: 210rpx;
height: 560rpx;
background-color: #F7F8FA;
.item{
text-overflow: ellipsis;
overflow: hidden;
height: 70rpx;
font-size: 28rpx;
font-weight: 400;
color: #303030;
white-space: nowrap;
line-height: 70rpx;
padding-left: 30rpx;
box-sizing: border-box;
text-align: left;
&-on{
background-color: #fff;
font-weight: 500;
}
}
}
.m{
width: 100%;
text-align: center;
max-height: 560rpx;
.item{
text-overflow: ellipsis;
overflow: hidden;
height: 70rpx;
font-size: 28rpx;
font-weight: 400;
color: #303030;
white-space: nowrap;
line-height: 70rpx;
padding-left: 80rpx;
box-sizing: border-box;
text-align: left;
&-on{
color: #FF624F;
}
}
}
.r{
width: 540rpx;
height: 560rpx;
.item{
text-overflow: ellipsis;
overflow: hidden;
height: 70rpx;
font-size: 28rpx;
font-weight: 400;
color: #303030;
white-space: nowrap;
line-height: 70rpx;
padding-left: 80rpx;
box-sizing: border-box;
&-on{
color: #FF624F;
}
}
}
}
}
.dispatchItem{
display: flex;
align-items: center;
padding:40upx;
background-color: #fff;
border-top:1px solid #EBEBEB;
image{
width: 180upx;
height:150upx;
}
.right{
flex:1;
margin-left:40upx;
.title{
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #3B3B3B;
}
.num{
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #1E1E1E;
margin-top:44upx;
}
.price{
display: flex;
align-items: center;
justify-content: flex-end;
font-size: 32upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #F21A1C;
}
}
}
.selectContent{
padding:40upx;
background-color: #fff;
border-top:1px solid #EBEBEB;
display: flex;
align-items: center;
justify-content: space-between;
.left{
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #3B3B3B;
}
.right{
text{
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #B0B0B0;
}
}
}
.btn{
width: 80%;
height: 100upx;
background: #FFAAA4;
border-radius: 6px 6px 6px 6px;
opacity: 1;
line-height: 100upx;
text-align: center;
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #FFFFFF;
margin:66upx auto;
}
</style>