demingshangjia/pages/index/otherdetails.vue
2020-10-15 21:20:04 +08:00

474 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="details">
<view class="goods-info">
<image :src="info.goods_image"></image>
<view class="info-right">
<view class="name u-line-1">{{ info.goods_name }}</view>
<view class="info">
<view class="num">{{ info.goods_try_num }}件商品</view>
<view class="price">
实付
<span>{{ info.goods_price }}</span>
</view>
</view>
</view>
</view>
<!-- 待处理订单/已发货订单收货人信息 -->
<view class="user-info">
<view class="info-title">收件人信息</view>
<view class="info-container">
<view>
<view class="title">姓名</view>
<view class="value">{{ info.goods_try_member_name }}</view>
</view>
<view>
<view class="title">手机号</view>
<view class="value">{{ info.goods_try_member_mobile }}</view>
</view>
<view>
<view class="title">收货地址</view>
<view class="value u-line-1">{{ info.goods_try_area_info }}</view>
</view>
<view v-if="type==2">
<view class="title">派送方式</view>
<view class="value u-line-1">{{ info.goods_try_deliver_goods_type==1?"人工送达":"骑手" }}</view>
</view>
</view>
</view>
<!-- 已拒绝/已完成订单收货人信息 -->
<!-- <view class="refunds-user" v-if="type == 3 || type == 4">
<view>
<image src="/static/image/home/2.png"></image>
<view>{{ info.goods_try_member_name }}</view>
</view>
<view>
<image src="/static/image/home/3.png"></image>
<view>{{ info.goods_try_member_mobile }}</view>
</view>
<view>
<image src="/static/image/home/4.png"></image>
<view class="address u-line-1">{{ info.goods_try_area_info }}</view>
</view>
</view> -->
<!-- 待处理订单 -->
<view class="delivery" v-if="type == 1">
<view class="title">派送方式</view>
<view class="methods">
<view :class="{ active: cur == 0 }" @click="people">人工送达</view>
<view :class="{ active: cur == 1 }" @click="carer">指派外部骑手</view>
</view>
<view class="btn" @click="confirmpushstyle">确认</view>
</view>
<!-- 已发货 -->
<!-- 人工送达 -->
<view class="refunds-user" v-if="info.goods_try_deliver_goods_type==1&&type==2">
<view>
<view>人工送达,请等待,货物正在飞速与你接近!</view>
</view>
</view>
<!-- 骑手 -->
<view class="refunds-title" v-if="type==2">配送信息</view>
<view class="refunds-title" v-if="type==3||type==4">提示信息</view>
<view class="refunds-user" v-if="info.goods_try_deliver_goods_type==2&&type==2">
<view>
<image src="/static/image/home/2.png"></image>
<view>{{ info.takeawayer_name }}</view>
</view>
<view>
<image src="/static/image/home/3.png"></image>
<view>{{ info.takeawayer_mobile }}</view>
</view>
<!-- 骑手公司 -->
<!-- <view>
<image src="/static/image/home/4.png"></image>
<view class="address u-line-1">{{ info.goods_try_area_info }}</view>
</view> -->
</view>
<!-- 已经拒绝 -->
<view class="refunds-user" v-if="type==3">
<view>
<view>抱歉,商家正忙无法接单,期待下次为您服务!</view>
</view>
</view>
<!-- 已完成订单 -->
<view class="refunds-user" v-if="type==4">
<view>
<view>订单配送完成,期待下次为您服务!</view>
</view>
</view>
<u-picker mode="selector" v-model="show" :default-selector="[0]" :range="list" range-key="content" @confirm="getselect"></u-picker>
<u-toast ref="uToast" />
</view>
</template>
<script>
export default {
data() {
return {
status: 1, // 订单状态
cur: Number,
showDelivery: false, // 填写骑手信息
showExpress: false, // 填写快递单号
showRefunds: false, // 平台退货处理
show: false, // 骑手列表
name: '',
phone: '',
company: '',
express: '',
type: '',
orderid: 0,
info: {},
list: [],
selctcar: null //选择骑手ID
};
},
onLoad(option) {
this.type = option.type;
this.orderid = option.id;
this.resetinfo();
},
methods: {
// 人工配送
people() {
this.cur = 0;
},
carer() {
this.cur = 1;
this.show = true;
},
// 绑定配送方式
confirmpushstyle() {
if (this.cur == 0) {
this.$u.api.agreetest({
goods_try_id: this.orderid,
type: 1,
takeawayer_id: 0
}).then(res => {
console.log(res);
if (res.errCode != 0) {
this.$refs.uToast.show({
title: res.message,
type: 'error'
});
} else {
this.$refs.uToast.show({
title: res.message,
type: 'success'
});
uni.navigateBack({
delta: 1
});
}
});
} else {
this.$u.api.agreetest({
goods_try_id: this.orderid,
type: 2,
takeawayer_id: this.selctcar.takeawayer_id
}).then(res => {
console.log(res);
if (res.errCode != 0) {
this.$refs.uToast.show({
title: res.message,
type: 'error'
});
} else {
this.$refs.uToast.show({
title: res.message,
type: 'success'
});
uni.navigateBack({
delta: 1
});
}
});
}
},
// 选择骑手
getselect(e) {
this.selctcar = this.list[e[0]];
},
// 获取订单信息
resetinfo() {
this.$u.api.testorderdetail({
goods_try_id: this.orderid
}).then(res => {
console.log(res);
if (res.errCode != 0) {
this.$refs.uToast.show({
title: res.message,
type: 'error'
});
} else {
this.info = res.data.info;
}
});
// 获取骑手列表
this.$u.api.takeawayerlist({}).then(res => {
console.log(res);
if (res.errCode != 0) {
this.$refs.uToast.show({
title: res.message,
type: 'error'
});
} else {
let arr = res.data;
for (let index in arr) {
arr[index].content = arr[index].company_name + '——' + arr[index].contacts + '——' + arr[index].contact_number;
}
this.list = arr;
}
});
}
}
};
</script>
<style lang="scss" scoped>
.details {
display: flex;
flex-direction: column;
min-height: calc(100vh - var(--window-top));
background-color: #ececec;
.goods-info {
background-color: #ffffff;
padding: 30rpx;
display: flex;
align-items: center;
margin: 2rpx 0 20rpx;
> image {
width: 160rpx;
height: 160rpx;
border-radius: 10rpx;
flex-shrink: 0;
margin-right: 26rpx;
}
.info-right {
.name {
width: 439rpx;
font-size: 28rpx;
color: rgba(51, 51, 51, 1);
margin-bottom: 30rpx;
}
.info {
width: 100%;
display: flex;
align-items: center;
font-size: 26rpx;
color: rgba(102, 102, 102, 1);
.price {
margin-left: 10rpx;
> span {
color: #ff780f;
}
}
}
}
}
.refunds-title{
padding: 25rpx 30rpx;
font-weight: 500;
color: #333333;
background-color: #ffffff;
border-bottom: 2rpx solid #ececec;
}
.refunds-user {
padding: 25rpx 30rpx;
background-color: #ffffff;
margin-bottom: 20rpx;
> view {
display: flex;
align-items: center;
margin-bottom: 30rpx;
@mixin image-class($width, $right) {
> image {
flex-shrink: 0;
width: $width;
height: 40rpx;
margin-right: $right;
}
}
&:first-child {
@include image-class($width: 40rpx, $right: 20rpx);
}
&:nth-child(2) {
margin-left: 4rpx;
@include image-class($width: 32rpx, $right: 24rpx);
}
&:last-child {
margin-left: 2rpx;
@include image-class($width: 36rpx, $right: 22rpx);
}
> view {
font-size: 26rpx;
color: rgba(51, 51, 51, 1);
}
}
}
.user-info {
.info-title {
font-size: 30rpx;
font-weight: 500;
color: rgba(51, 51, 51, 1);
height: 88rpx;
background-color: #ffffff;
margin-bottom: 2rpx;
padding: 30rpx;
}
.info-container {
padding: 0 30rpx;
background-color: #ffffff;
margin-bottom: 20rpx;
> view {
height: 88rpx;
display: flex;
align-items: center;
color: rgba(51, 51, 51, 1);
&:not(:last-child) {
border-bottom: 2rpx solid #ececec;
}
.title {
width: 170rpx;
font-size: 30rpx;
margin-right: 10rpx;
}
.value {
font-size: 26rpx;
}
}
}
}
.delivery {
flex: 1;
background-color: #ffffff;
padding: 30rpx;
position: relative;
.title {
font-size: 30rpx;
font-weight: 500;
color: rgba(51, 51, 51, 1);
margin-bottom: 30rpx;
}
.methods {
display: flex;
flex-wrap: wrap;
> view {
font-size: 30rpx;
color: rgba(0, 0, 51, 1);
width: 335rpx;
height: 80rpx;
border: 1rpx solid rgba(236, 236, 236, 1);
background: rgba(236, 236, 236, 1);
border-radius: 6rpx;
text-align: center;
line-height: 80rpx;
margin-bottom: 20rpx;
&:nth-child(2n-1) {
margin-right: 20rpx;
}
}
.active {
border: 1rpx solid #ff780f;
color: #ff780f;
background: #fff1e6;
}
}
.btn {
position: absolute;
bottom: 40rpx;
left: 50%;
transform: translate(-50%, 0);
width: 690rpx;
height: 98rpx;
background: rgba(255, 120, 15, 1);
border-radius: 49rpx;
font-size: 36rpx;
color: rgba(255, 255, 255, 1);
text-align: center;
line-height: 98rpx;
}
}
.refunds-option {
flex: 1;
padding: 88rpx 30rpx;
background-color: #ffffff;
display: flex;
> view {
width: 335rpx;
height: 80rpx;
border: 1rpx solid rgba(236, 236, 236, 1);
background: rgba(236, 236, 236, 1);
border-radius: 6rpx;
font-size: 30rpx;
color: rgba(0, 0, 51, 1);
line-height: 80rpx;
text-align: center;
margin-right: 20rpx;
}
.active {
border: 1rpx solid #ff780f;
color: #ff780f;
background: #fff1e6;
}
}
.delivery-popup {
.title {
width: 420rpx;
font-size: 30rpx;
font-weight: 500;
color: rgba(51, 51, 51, 1);
text-align: center;
line-height: 88rpx;
border-bottom: 2rpx solid #ececec;
}
.input-info {
> input {
font-size: 26rpx;
line-height: 88rpx;
padding: 30rpx;
border-bottom: 2rpx solid #ececec;
}
}
.btn {
margin: 20rpx auto;
width: 200rpx;
height: 60rpx;
background: rgba(255, 120, 15, 1);
border-radius: 30rpx;
font-size: 28rpx;
color: rgba(255, 255, 255, 1);
line-height: 60rpx;
text-align: center;
}
}
.refunds-popup {
.popup-tips {
width: 420rpx;
text-align: center;
font-size: 28rpx;
color: rgba(102, 102, 102, 1);
line-height: 42rpx;
padding: 30rpx 0;
}
.popup-btn {
width: 420rpx;
display: flex;
border-top: 2rpx solid #ececec;
> view {
flex: 1;
height: 98rpx;
text-align: center;
line-height: 98rpx;
&:first-child {
border-right: 2rpx solid #ececec;
}
}
.determine {
color: #ff780f;
}
}
}
}
</style>