|
|
|
|
@ -17,27 +17,47 @@
|
|
|
|
|
</u-navbar>
|
|
|
|
|
|
|
|
|
|
<view class="wrap">
|
|
|
|
|
<view class="site" @tap="showPop = true">
|
|
|
|
|
<view v-if="site.id" style="padding-right: 80rpx">
|
|
|
|
|
<view class="top">
|
|
|
|
|
<view class="tag" v-if="site.is_default"> 默认 </view>
|
|
|
|
|
<view class="city">{{ site.city }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="center">
|
|
|
|
|
<view class="address">{{ site.address }}</view>
|
|
|
|
|
<view>
|
|
|
|
|
<view v-if="!detail.id" class="site" @tap="showPop = true">
|
|
|
|
|
<view v-if="site.id" style="padding-right: 80rpx">
|
|
|
|
|
<view class="top">
|
|
|
|
|
<view class="tag" v-if="site.is_default"> 默认 </view>
|
|
|
|
|
<view class="city">{{ site.city }}</view>
|
|
|
|
|
|
|
|
|
|
<view class="name">{{ site.name }} {{ site.mobile }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="center">
|
|
|
|
|
<view class="address">{{ site.address }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="bottom">
|
|
|
|
|
<text>{{ site.name }} {{ site.mobile }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="bottom">
|
|
|
|
|
<text>{{ site.name }} {{ site.mobile }}</text>
|
|
|
|
|
<view class="no-site" v-else> 请选择收货地址 </view>
|
|
|
|
|
<view class="site-select">
|
|
|
|
|
<u-icon
|
|
|
|
|
name="arrow-right"
|
|
|
|
|
label="选择"
|
|
|
|
|
label-pos="left"
|
|
|
|
|
label-color="#666"
|
|
|
|
|
></u-icon>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="no-site" v-else> 请选择收货地址 </view>
|
|
|
|
|
<view class="site-select">
|
|
|
|
|
<u-icon
|
|
|
|
|
name="arrow-right"
|
|
|
|
|
label="选择"
|
|
|
|
|
label-pos="left"
|
|
|
|
|
label-color="#666"
|
|
|
|
|
></u-icon>
|
|
|
|
|
<view v-if="detail.id && detail.user_address" class="site">
|
|
|
|
|
<view>
|
|
|
|
|
<view class="top">
|
|
|
|
|
<view class="tag" v-if="detail.user_address && detail.user_address.is_default"> 默认 </view>
|
|
|
|
|
<view class="city">{{ detail.user_address.city }}</view>
|
|
|
|
|
|
|
|
|
|
<view class="name">{{ detail.user_address.name }} {{ detail.user_address.mobile }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="center">
|
|
|
|
|
<view class="address">{{ detail.user_address.address }}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="bottom">
|
|
|
|
|
<text>{{ detail.user_address.name }} {{ detail.user_address.mobile }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
@ -79,12 +99,44 @@
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view class="price">
|
|
|
|
|
<view class="price-row" v-if="detail.express_name">
|
|
|
|
|
<view class="price-row__name">
|
|
|
|
|
快递名称
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row__value">
|
|
|
|
|
<text>{{ detail.express_name }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row" v-if="detail.express_number">
|
|
|
|
|
<view class="price-row__name">
|
|
|
|
|
快递单号
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row__value">
|
|
|
|
|
<text>{{ detail.express_number }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row" v-if="detail.created_at">
|
|
|
|
|
<view class="price-row__name">
|
|
|
|
|
下单日期
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row__value">
|
|
|
|
|
<text>{{ detail.created_at }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row" v-if="detail.no">
|
|
|
|
|
<view class="price-row__name">
|
|
|
|
|
订单号
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row__value">
|
|
|
|
|
<text>{{ detail.no }}</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row">
|
|
|
|
|
<view class="price-row__name">
|
|
|
|
|
合计
|
|
|
|
|
</view>
|
|
|
|
|
<view class="price-row__value">
|
|
|
|
|
¥ {{ totalPrice }}
|
|
|
|
|
¥ {{ detail.id ? detail.price : totalPrice }}
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
@ -92,12 +144,29 @@
|
|
|
|
|
<view class="bottom">
|
|
|
|
|
<view>
|
|
|
|
|
<u-button
|
|
|
|
|
v-if="!detail.id"
|
|
|
|
|
shape="circle"
|
|
|
|
|
ripple
|
|
|
|
|
:custom-style="btnStyle"
|
|
|
|
|
@click="submit"
|
|
|
|
|
>保 存</u-button
|
|
|
|
|
>
|
|
|
|
|
<u-button
|
|
|
|
|
v-else-if="detail.id && detail.pay_status === 0"
|
|
|
|
|
shape="circle"
|
|
|
|
|
ripple
|
|
|
|
|
:custom-style="btnStyle"
|
|
|
|
|
@click="payOrder(detail)"
|
|
|
|
|
>立即支付</u-button
|
|
|
|
|
>
|
|
|
|
|
<u-button
|
|
|
|
|
v-else-if="detail.id && detail.pay_status === 1"
|
|
|
|
|
shape="circle"
|
|
|
|
|
ripple
|
|
|
|
|
:custom-style="btnStyle"
|
|
|
|
|
@click="refund"
|
|
|
|
|
>申请退款</u-button
|
|
|
|
|
>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
@ -164,6 +233,7 @@ export default {
|
|
|
|
|
site: {},
|
|
|
|
|
sites: [],
|
|
|
|
|
carts: [],
|
|
|
|
|
detail: {}
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
@ -201,18 +271,21 @@ export default {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
const res = await this.$u.api.productOrder({
|
|
|
|
|
user_addres_id: this.site.id
|
|
|
|
|
const { model } = await this.$u.api.productOrder({
|
|
|
|
|
user_address_id: this.site.id
|
|
|
|
|
});
|
|
|
|
|
if (res) {
|
|
|
|
|
if (model) {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: "下单成功",
|
|
|
|
|
content: "下单成功,是否立即支付?",
|
|
|
|
|
success: (status) => {
|
|
|
|
|
if (status.confirm) {
|
|
|
|
|
this.payOrder(res);
|
|
|
|
|
this.payOrder(model);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
this.$u.route({
|
|
|
|
|
url: '/package_sub/pages/Shop/Order',
|
|
|
|
|
type: 'reLaunch'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: () => {
|
|
|
|
|
@ -249,6 +322,10 @@ export default {
|
|
|
|
|
title: "支付成功",
|
|
|
|
|
icon: "none",
|
|
|
|
|
});
|
|
|
|
|
this.$u.route({
|
|
|
|
|
url: '/package_sub/pages/Shop/Order',
|
|
|
|
|
type: 'reLaunch'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
} catch (err) {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
@ -257,6 +334,39 @@ export default {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async getDetail(id) {
|
|
|
|
|
try {
|
|
|
|
|
const res = await this.$u.api.userOrdersDetail({ id })
|
|
|
|
|
this.detail = res
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(err)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async refund() {
|
|
|
|
|
try {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: "提示",
|
|
|
|
|
content: "确认申请退款?",
|
|
|
|
|
success: async (status) => {
|
|
|
|
|
if (status.confirm) {
|
|
|
|
|
await this.$u.api.productOrderRefund({
|
|
|
|
|
id: this.detail.id
|
|
|
|
|
})
|
|
|
|
|
await this.getDetail({
|
|
|
|
|
id: this.detail.id
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: () => {
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
} catch (err) {
|
|
|
|
|
console.error(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
computed: {
|
|
|
|
|
totalPrice() {
|
|
|
|
|
@ -266,7 +376,13 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
created() {
|
|
|
|
|
this.getSites();
|
|
|
|
|
this.getCarts();
|
|
|
|
|
},
|
|
|
|
|
onLoad(option) {
|
|
|
|
|
if (option.order_id) {
|
|
|
|
|
this.getDetail(option.order_id)
|
|
|
|
|
} else {
|
|
|
|
|
this.getCarts();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
@ -292,6 +408,11 @@ export default {
|
|
|
|
|
color: #666666;
|
|
|
|
|
margin-left: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
.name {
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
color: #999;
|
|
|
|
|
margin-left: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
.tag {
|
|
|
|
|
display: flex;
|
|
|
|
|
font-weight: normal;
|
|
|
|
|
@ -395,9 +516,21 @@ export default {
|
|
|
|
|
&-row {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
// line-height: 80rpx;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
|
|
&::before {
|
|
|
|
|
content: '';
|
|
|
|
|
background: #ccc;
|
|
|
|
|
height: 2rpx;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: -19rpx;
|
|
|
|
|
left: 10rpx;
|
|
|
|
|
right: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
&:nth-child(1):before {
|
|
|
|
|
opacity: 0;
|
|
|
|
|
}
|
|
|
|
|
&__name {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #000000;
|
|
|
|
|
@ -408,8 +541,15 @@ export default {
|
|
|
|
|
color: red;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
|
|
|
|
text {
|
|
|
|
|
color: #666;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.price-row + .price-row {
|
|
|
|
|
margin-top: 40rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.bottom {
|
|
|
|
|
position: fixed;
|
|
|
|
|
|