This commit is contained in:
Gao xiaosong
2020-08-10 07:12:36 +08:00
parent c498644b37
commit 12f15fbc62
5 changed files with 316 additions and 307 deletions

View File

@ -4,9 +4,7 @@
<view class="header bg-color-red acea-row row-middle" :class="refundOrder ? 'on' : ''">
<view class="data" :class="refundOrder ? 'on' : ''">
<view class="state">{{ orderInfo._status._msg }}</view>
<view>
{{ orderInfo.createTime }}
</view>
<view>{{ orderInfo.createTime }}</view>
</view>
</view>
<template v-if="!refundOrder">
@ -41,20 +39,12 @@
></view>
<view
class="line"
:class="{
'bg-color-red':
status.type > 1 && status.type != 6 && status.type != 9
}"
:class="{'bg-color-red':status.type > 1 && status.type != 6 && status.type != 9}"
v-if="orderInfo.shippingType === 1"
></view>
<view
class="iconfont"
:class="[
status.type === 2 ? 'icon-webicon318' : 'icon-yuandianxiao',
status.type >= 2 && status.type != 6 && status.type != 9
? 'font-color-red'
: ''
]"
:class="[status.type === 2 ? 'icon-webicon318' : 'icon-yuandianxiao',status.type >= 2 && status.type != 6 && status.type != 9? 'font-color-red': '']"
v-if="orderInfo.shippingType === 1"
></view>
<view
@ -125,7 +115,10 @@
v-if="orderInfo.shippingType === 2 && orderInfo.paid === 1"
>
<div>自提地址信息</div>
<div class="place cart-color acea-row row-center-wrapper" @click="showChang(orderInfo.systemStore)">
<div
class="place cart-color acea-row row-center-wrapper"
@click="showChang(orderInfo.systemStore)"
>
<span class="iconfont icon-weizhi"></span>查看位置
</div>
</div>
@ -160,9 +153,7 @@
</view>
<view class="item acea-row row-between">
<view>下单时间</view>
<view class="conter">
{{ orderInfo.createTime }}
</view>
<view class="conter">{{ orderInfo.createTime }}</view>
</view>
<view class="item acea-row row-between">
<view>订单类型</view>
@ -262,22 +253,21 @@
<template v-if="status.type == 1">
<view class="bnt cancel" @click="goGoodsReturn(orderInfo)">申请退款</view>
</template>
<template v-if="status.type == 2">
<!-- -->
<template v-if="orderInfo.shippingType == 1 && status.type == 2">
<view
class="bnt default"
@click="$yrouter.push({ path: '/pages/order/Logistics/index' ,query:{id:orderInfo.orderId }})"
>查看物流</view>
<view class="bnt bg-color-red" @click="takeOrder">确认收货</view>
</template>
<template v-if="status.type == 3 && orderInfo.deliveryType == 'express'">
<template v-if="orderInfo.shippingType == 1 && status.type == 3 && orderInfo.deliveryType == 'express'">
<view
class="bnt default"
@click="
$yrouter.push({ path: '/pages/order/Logistics/index' ,query:{id:orderInfo.orderId }})
"
@click="$yrouter.push({ path: '/pages/order/Logistics/index' ,query:{id:orderInfo.orderId }})"
>查看物流</view>
</template>
<template v-if="status.type == 4">
<template v-if="orderInfo.shippingType == 1 && status.type == 4">
<view class="bnt cancel" @click="delOrder">删除订单</view>
<view
class="bnt default"
@ -302,6 +292,224 @@
</view>
</view>
</template>
<script>
import OrderGoods from "@/components/OrderGoods";
import { orderDetail } from "@/api/order";
import Payment from "@/components/Payment";
import { isWeixin, copyClipboard } from "@/utils";
import { mapGetters } from "vuex";
import {
cancelOrderHandle,
takeOrderHandle,
delOrderHandle,
payOrderHandle,
} from "@/libs/order";
// import { wechatEvevt } from "@/libs/wechat";
const NAME = "OrderDetails";
export default {
name: NAME,
components: {
OrderGoods,
Payment,
},
data: function () {
return {
offlinePayStatus: 2,
orderTypeName: "普通订单",
orderTypeNameStatus: true,
offlineStatus: true,
id: "",
orderInfo: {
_status: {},
},
status: {},
pay: false,
payType: ["yue", "weixin"],
from: this.$deviceType,
system_store: {},
mapKay: "",
mapShow: false,
};
},
computed: {
refundOrder() {
return this.orderInfo.refund_status > 0;
},
...mapGetters(["userInfo"]),
},
onShow() {
this.id = this.$yroute.query.id;
this.getDetail();
},
mounted: function () {
this.id = this.$yroute.query.id;
// this.getDetail();
},
methods: {
copyClipboard,
goGoodsReturn(orderInfo) {
this.$yrouter.push({
path: "/pages/order/GoodsReturn/index",
query: {
id: orderInfo.orderId,
},
});
},
goGroupRule(orderInfo) {
this.$yrouter.push({
path: "/pages/activity/GroupRule/index",
query: {
id: orderInfo.pinkId,
},
});
},
showChang: function (data) {
// 这里判断是不是微信小程序
this.$yrouter.push({
path: "/pages/map/index",
query: data,
});
// if (isWeixin()) {
// let config = {
// latitude: this.system_store.latitude,
// longitude: this.system_store.longitude,
// name: this.system_store.name,
// address: this.system_store.address
// };
// } else {
// if (!this.mapKey)
// uni.showToast({
// title: "暂无法使用查看地图请配置您的腾讯地图key",
// icon: "none",
// duration: 2000
// });
// return;
// this.mapShow = true;
// }
},
goBack() {
if (this.name === "MyOrder") {
this.$yrouter.back();
return;
} else {
console.log(this);
this.$yrouter.replace({
path: "/pages/order/MyOrder/index",
});
return;
}
},
cancelOrder() {
cancelOrderHandle(this.orderInfo.orderId)
.then(() => {
setTimeout(() => this.goBack(), 300);
})
.catch(() => {
this.getDetail();
});
},
takeOrder() {
takeOrderHandle(this.orderInfo.orderId).finally(() => {
this.getDetail();
});
},
delOrder() {
delOrderHandle(this.orderInfo.orderId).then(() => {
setTimeout(() => this.goBack(), 300);
});
},
setOfflinePayStatus: function (status) {
var that = this;
that.offlinePayStatus = status;
if (status === 1 && that.orderTypeNameStatus === true) {
that.payType.push("offline");
}
},
getOrderStatus: function () {
let orderInfo = this.orderInfo || {},
_status = orderInfo._status || { _type: 0 },
status = {};
let type = parseInt(_status._type),
delivery_type = orderInfo.deliveryType,
seckill_id = orderInfo.seckillId ? parseInt(orderInfo.seckillId) : 0,
bargain_id = orderInfo.bargainId ? parseInt(orderInfo.bargainId) : 0,
combination_id = orderInfo.combinationId
? parseInt(orderInfo.combinationId)
: 0;
status = {
type: type,
class_status: 0,
};
if (type == 1 && combination_id > 0) {
status.type = 6;
status.class_status = 1;
} //查看拼团
if (type == 2 && delivery_type == "express") status.class_status = 2; //查看物流
if (type == 2) status.class_status = 3; //确认收货
if (type == 4 || type === 0) status.class_status = 4; //删除订单
if (
!seckill_id &&
!bargain_id &&
!combination_id &&
(type == 3 || type == 4)
)
status.class_status = 5; //再次购买
if (type == 9) {
//线下付款
status.class_status = 0;
this.offlineStatus = false;
}
this.status = status;
},
getDetail() {
const id = this.id;
if (!id) {
uni.showToast({
title: "订单不存在",
icon: "none",
duration: 2000,
});
return;
}
orderDetail(id)
.then((res) => {
this.orderInfo = res.data;
this.getOrderStatus();
if (this.orderInfo.combinationId > 0) {
this.orderTypeName = "拼团订单";
this.orderTypeNameStatus = false;
} else if (this.orderInfo.bargainId > 0) {
this.orderTypeName = "砍价订单";
this.orderTypeNameStatus = false;
} else if (this.orderInfo.seckillId > 0) {
this.orderTypeName = "秒杀订单";
this.orderTypeNameStatus = false;
}
this.system_store = res.data.systemStore || {};
this.mapKey = res.data.mapKay;
this.setOfflinePayStatus(this.orderInfo.offlinePayStatus);
})
.catch((err) => {
uni.showToast({
title: err.response.data.msg,
icon: "none",
duration: 2000,
});
});
},
async toPay(type) {
var that = this;
console.log(type, "支付方式");
await payOrderHandle(this.orderInfo.orderId, type, that.from);
that.getDetail();
},
},
};
</script>
<style scoped lang="less">
.geoPage {
position: fixed;
@ -417,223 +625,3 @@
margin-left: 0.1 * 100rpx;
}
</style>
<script>
import OrderGoods from "@/components/OrderGoods";
import { orderDetail } from "@/api/order";
import Payment from "@/components/Payment";
import DataFormat from "@/components/DataFormat";
import { isWeixin, copyClipboard } from "@/utils";
import { mapGetters } from "vuex";
import {
cancelOrderHandle,
takeOrderHandle,
delOrderHandle,
payOrderHandle
} from "@/libs/order";
// import { wechatEvevt } from "@/libs/wechat";
const NAME = "OrderDetails";
export default {
name: NAME,
components: {
OrderGoods,
Payment,
DataFormat
},
props: {},
data: function() {
return {
offlinePayStatus: 2,
orderTypeName: "普通订单",
orderTypeNameStatus: true,
offlineStatus: true,
id: "",
orderInfo: {
_status: {}
},
status: {},
pay: false,
payType: ["yue", "weixin"],
from: this.$deviceType,
system_store: {},
mapKay: "",
mapShow: false
};
},
computed: {
refundOrder() {
return this.orderInfo.refund_status > 0;
},
...mapGetters(["userInfo"])
},
onShow() {
this.id = this.$yroute.query.id;
this.getDetail();
},
inject: ["app"],
mounted: function() {
this.id = this.$yroute.query.id;
// this.getDetail();
},
methods: {
copyClipboard,
goGoodsReturn(orderInfo) {
this.$yrouter.push({
path: "/pages/order/GoodsReturn/index",
query: {
id: orderInfo.orderId
}
});
},
goGroupRule(orderInfo) {
this.$yrouter.push({
path: "/pages/activity/GroupRule/index",
query: {
id: orderInfo.pinkId
}
});
},
showChang: function(data) {
// 这里判断是不是微信小程序
this.$yrouter.push({
path: "/pages/map/index",
query: data
});
// if (isWeixin()) {
// let config = {
// latitude: this.system_store.latitude,
// longitude: this.system_store.longitude,
// name: this.system_store.name,
// address: this.system_store.address
// };
// } else {
// if (!this.mapKey)
// uni.showToast({
// title: "暂无法使用查看地图请配置您的腾讯地图key",
// icon: "none",
// duration: 2000
// });
// return;
// this.mapShow = true;
// }
},
goBack() {
if (this.name === "MyOrder") {
this.$yrouter.back();
return;
} else {
console.log(this);
this.$yrouter.replace({
path: "/pages/order/MyOrder/index"
});
return;
}
},
cancelOrder() {
cancelOrderHandle(this.orderInfo.orderId)
.then(() => {
setTimeout(() => this.goBack(), 300);
})
.catch(() => {
this.getDetail();
});
},
takeOrder() {
takeOrderHandle(this.orderInfo.orderId).finally(() => {
this.getDetail();
});
},
delOrder() {
delOrderHandle(this.orderInfo.orderId).then(() => {
setTimeout(() => this.goBack(), 300);
});
},
setOfflinePayStatus: function(status) {
var that = this;
that.offlinePayStatus = status;
if (status === 1 && that.orderTypeNameStatus === true) {
that.payType.push("offline");
}
},
getOrderStatus: function() {
let orderInfo = this.orderInfo || {},
_status = orderInfo._status || { _type: 0 },
status = {};
let type = parseInt(_status._type),
delivery_type = orderInfo.deliveryType,
seckill_id = orderInfo.seckillId ? parseInt(orderInfo.seckillId) : 0,
bargain_id = orderInfo.bargainId ? parseInt(orderInfo.bargainId) : 0,
combination_id = orderInfo.combinationId
? parseInt(orderInfo.combinationId)
: 0;
status = {
type: type,
class_status: 0
};
if (type == 1 && combination_id > 0) {
status.type = 6;
status.class_status = 1;
} //查看拼团
if (type == 2 && delivery_type == "express") status.class_status = 2; //查看物流
if (type == 2) status.class_status = 3; //确认收货
if (type == 4 || type === 0) status.class_status = 4; //删除订单
if (
!seckill_id &&
!bargain_id &&
!combination_id &&
(type == 3 || type == 4)
)
status.class_status = 5; //再次购买
if (type == 9) {
//线下付款
status.class_status = 0;
this.offlineStatus = false;
}
this.status = status;
},
getDetail() {
const id = this.id;
if (!id) {
uni.showToast({
title: "订单不存在",
icon: "none",
duration: 2000
});
return;
}
orderDetail(id)
.then(res => {
this.orderInfo = res.data;
this.getOrderStatus();
if (this.orderInfo.combinationId > 0) {
this.orderTypeName = "拼团订单";
this.orderTypeNameStatus = false;
} else if (this.orderInfo.bargainId > 0) {
this.orderTypeName = "砍价订单";
this.orderTypeNameStatus = false;
} else if (this.orderInfo.seckillId > 0) {
this.orderTypeName = "秒杀订单";
this.orderTypeNameStatus = false;
}
this.system_store = res.data.systemStore || {};
this.mapKey = res.data.mapKay;
this.setOfflinePayStatus(this.orderInfo.offlinePayStatus);
})
.catch(err => {
uni.showToast({
title: err.response.data.msg,
icon: "none",
duration: 2000
});
});
},
async toPay(type) {
var that = this;
console.log(type, "支付方式");
await payOrderHandle(this.orderInfo.orderId, type, that.from);
that.getDetail();
}
}
};
</script>

View File

@ -35,15 +35,24 @@
</view>
<view class="iconfont icon-jiantou"></view>
</view>
<div class="address acea-row row-between-wrapper" v-else @click="showStoreList">
<div class="addressCon">
<div
class="address acea-row row-between-wrapper"
v-if="shipping_type === 1"
@click="showStoreList"
>
<div class="addressCon" v-if="storeItems">
<div class="name">
{{ storeItems.name || systemStore.name }}
<span
class="phone"
>{{storeItems.phone || systemStore.phone}}</span>
{{ storeItems.name }}
<span class="phone">{{storeItems.phone }}</span>
</div>
<div>{{ storeItems.address || systemStore.address }}</div>
<div>{{ storeItems.address}}</div>
</div>
<div class="addressCon" v-else>
<div class="name">
{{ systemStore.name }}
<span class="phone">{{systemStore.phone}}</span>
</div>
<div>{{ systemStore.address }}</div>
</div>
<div class="iconfont icon-jiantou"></div>
</div>
@ -92,7 +101,7 @@
}}
</view>
</view>
<view v-else>
<view v-if="shipping_type === 1">
<view class="item acea-row row-between-wrapper">
<view>联系人</view>
<view class="discount">
@ -311,10 +320,10 @@ export default {
components: {
OrderGoods,
CouponListWindow,
AddressWindow
AddressWindow,
},
props: {},
data: function() {
data: function () {
return {
offlinePayStatus: 2,
from: this.$deviceType,
@ -329,13 +338,13 @@ export default {
addressInfo: {},
couponId: 0,
orderGroupInfo: {
priceGroup: {}
priceGroup: {},
},
usableCoupon: {},
addressLoaded: false,
useIntegral: false,
orderPrice: {
payPrice: "计算中"
payPrice: "计算中",
},
mark: "",
systemStore: {},
@ -343,7 +352,7 @@ export default {
contacts: "",
contactsTel: "",
storeSelfMention: 0,
cartid: ""
cartid: "",
};
},
computed: mapGetters(["userInfo", "storeItems"]),
@ -356,9 +365,9 @@ export default {
},
shipping_type() {
this.computedPrice();
}
},
},
mounted: function() {
mounted: function () {
let that = this;
this.$store.dispatch("getUser", true);
that.getCartInfo();
@ -368,28 +377,29 @@ export default {
}
if (that.$yroute.query.id !== undefined) {
that.cartid = that.$yroute.query.id;
console.log(that.cartid)
console.log(that.cartid);
}
},
methods: {
showStoreList() {
this.$store.commit("get_to", "orders");
this.$yrouter.push({
path: "/pages/shop/StoreList/index"
path: "/pages/shop/StoreList/index",
});
},
addressType: function(index) {
addressType: function (index) {
if (index && !this.systemStore.id) {
uni.showToast({
title: "暂无门店信息,您无法选择到店自提!",
icon: "none",
duration: 2000
duration: 2000,
});
return;
}
console.log(this);
this.shipping_type = index;
},
changeUseIntegral: function(e) {
changeUseIntegral: function (e) {
// this.computedPrice();
this.useIntegral = e.mp.detail.value[0];
},
@ -399,15 +409,15 @@ export default {
addressId: this.addressInfo.id,
useIntegral: this.useIntegral ? 1 : 0,
couponId: this.usableCoupon.id || 0,
shipping_type: parseInt(shipping_type) + 1
}).then(res => {
shipping_type: parseInt(shipping_type) + 1,
}).then((res) => {
const data = res.data;
if (data.status === "EXTEND_ORDER") {
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
} else {
this.orderPrice = data.result;
@ -420,17 +430,20 @@ export default {
uni.showToast({
title: "参数有误",
icon: "none",
duration: 2000
duration: 2000,
});
return this.$yrouter.back();
}
postOrderConfirm(cartIds)
.then(res => {
.then((res) => {
console.log(res, 999999);
console.log(res.data.systemStore || {}, 999999);
this.offlinePayStatus = res.data.offline_pay_status;
this.orderGroupInfo = res.data;
this.deduction = res.data.deduction;
this.usableCoupon = res.data.usableCoupon || {};
this.addressInfo = res.data.addressInfo || {};
// 用来显示到店自提的店铺地址
this.systemStore = res.data.systemStore || {};
this.storeSelfMention = res.data.storeSelfMention;
this.computedPrice();
@ -439,11 +452,11 @@ export default {
uni.showToast({
title: "加载订单数据失败",
icon: "none",
duration: 2000
duration: 2000,
});
});
},
addressTap: function() {
addressTap: function () {
this.showAddress = true;
if (!this.addressLoaded) {
this.addressLoaded = true;
@ -454,21 +467,21 @@ export default {
this.addressLoaded = false;
this.showAddress = false;
},
couponTap: function() {
couponTap: function () {
this.showCoupon = true;
},
changeCoupon: function(coupon) {
changeCoupon: function (coupon) {
if (!coupon) {
this.usableCoupon = {
couponTitle: "不使用优惠券",
id: 0
id: 0,
};
} else {
this.usableCoupon = coupon;
}
this.computedPrice();
},
payItem: function(index) {
payItem: function (index) {
this.active = index;
},
changeAddress(addressInfo) {
@ -480,7 +493,7 @@ export default {
uni.showToast({
title: "请选择支付方式",
icon: "none",
duration: 2000
duration: 2000,
});
return;
}
@ -488,7 +501,7 @@ export default {
uni.showToast({
title: "请选择收货地址",
icon: "none",
duration: 2000
duration: 2000,
});
return;
}
@ -501,7 +514,7 @@ export default {
uni.showToast({
title: "请填写联系人或联系人电话",
icon: "none",
duration: 2000
duration: 2000,
});
return;
}
@ -510,7 +523,7 @@ export default {
uni.showToast({
title: "请填写正确的手机号",
icon: "none",
duration: 2000
duration: 2000,
});
return;
}
@ -518,14 +531,14 @@ export default {
uni.showToast({
title: "请填写您的真实姓名",
icon: "none",
duration: 2000
duration: 2000,
});
return;
}
}
uni.showLoading({
title: "生成订单中"
title: "生成订单中",
});
let from = {};
if (this.$deviceType == "app") {
@ -547,9 +560,9 @@ export default {
mark: this.mark || "",
shippingType: parseInt(shipping_type) + 1,
storeId: this.storeItems ? this.storeItems.id : this.systemStore.id,
...from
...from,
})
.then(res => {
.then((res) => {
uni.hideLoading();
const data = res.data;
switch (data.status) {
@ -558,13 +571,13 @@ export default {
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000
duration: 2000,
});
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
break;
case "PAY_DEFICIENCY":
@ -574,26 +587,26 @@ export default {
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000
duration: 2000,
});
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
break;
case "SUCCESS":
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000
duration: 2000,
});
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
break;
case "WECHAT_H5_PAY":
@ -601,8 +614,8 @@ export default {
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
setTimeout(() => {
// location.href = data.result.jsConfig.mweb_url;
@ -614,8 +627,8 @@ export default {
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
});
break;
@ -626,8 +639,8 @@ export default {
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
id: data.result.orderId,
},
});
});
break;
@ -639,7 +652,7 @@ export default {
// });
}
})
.catch(err => {
.catch((err) => {
uni.hideLoading();
uni.showToast({
title:
@ -648,10 +661,10 @@ export default {
err.response.data.message ||
"创建订单失败",
icon: "none",
duration: 2000
duration: 2000,
});
});
}
}
},
},
};
</script>