Files
Gao xiaosong 728deeaa35 1、购买选择规格属性点不了
2、购物车列表点击管理 点击收藏功能去掉
3、下单点击积分抵扣没反应
4、待收货 列表查看物流点击没反应,详情查看物流可以点
5、添加地址选择地区无效
6、个人中心我的余额点进去点击账单记录一直正在加载中,点击下全部就出来了,应该你没带默认参数
8、订单点击评价没反应
9、小程序订单核销没上 你那边先根据路径判断隐藏下
10、我的推广,里面样式有问题,点击海报里面空白
11、分类点击 会分类Tab页分类一级比一级低
12、拼团详情客服功能隐藏去掉,其他地方有客服功能的都去掉
2020-04-11 01:44:10 +08:00

597 lines
17 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="order-submission">
<view class="allAddress">
<view class="nav acea-row">
<view class="item font-color-red" :class="shipping_type === 0 ? 'on' : 'on2'" @click="addressType(0)"></view>
<view class="item font-color-red" :class="shipping_type === 1 ? 'on' : 'on2'" @click="addressType(1)" v-if="storeSelfMention"></view>
</view>
<view class="address acea-row row-between-wrapper" v-if="shipping_type === 0" @click="addressTap">
<view class="addressCon" v-if="addressInfo.realName">
<view class="name">
{{ addressInfo.realName }}
<text class="phone">{{ addressInfo.phone }}</text>
</view>
<view>
<text class="default font-color-red" v-if="addressInfo.isDefault">[默认]</text>
{{ addressInfo.province }}{{ addressInfo.city
}}{{ addressInfo.district }}{{ addressInfo.detail }}
</view>
</view>
<view class="addressCon" v-else>
<view class="setaddress">设置收货地址</view>
</view>
<view class="iconfont icon-jiantou"></view>
</view>
<!--<view class="address acea-row row-between-wrapper" v-else>-->
<!--<view class="addressCon">-->
<!--<view class="name">-->
<!--{{ systemStore.name }}-->
<!--<text class="phone">{{ systemStore.phone }}</text>-->
<!--</view>-->
<!--<view>-->
<!--{{ systemStore._detailed_address }}-->
<!--</view>-->
<!--</view>-->
<!--</view>-->
<view class="line">
<image src="@/static/images/line.jpg" />
</view>
</view>
<OrderGoods :evaluate="0" :cartInfo="orderGroupInfo.cartInfo"></OrderGoods>
<view class="wrapper">
<view class="item acea-row row-between-wrapper" @click="couponTap" v-if="deduction === false">
<view>优惠券</view>
<view class="discount">
{{ usableCoupon.couponTitle || "请选择" }}
<text class="iconfont icon-jiantou"></text>
</view>
</view>
<view class="item acea-row row-between-wrapper" v-if="deduction === false">
<view>积分抵扣</view>
<view class="discount">
<view class="select-btn">
<view class="checkbox-wrapper">
<!-- <input type="checkbox" v-model="useIntegral" @click="changeUseIntegral"/> -->
<checkbox-group @change="changeUseIntegral">
<label class="well-check">
<text class="integral">
当前积分
<text class="num font-color-red">{{ userInfo.integral || 0 }}</text>
</text>
<checkbox value="true" :checked="useIntegral ? true : false"></checkbox>
</label>
</checkbox-group>
</view>
</view>
</view>
</view>
<view class="item acea-row row-between-wrapper" v-if="shipping_type === 0">
<view>快递费用</view>
<view class="discount">
{{
orderGroupInfo.priceGroup.storePostage > 0
? orderGroupInfo.priceGroup.storePostage
: "免运费"
}}
</view>
</view>
<view v-else>
<view class="item acea-row row-between-wrapper">
<view>联系人</view>
<view class="discount">
<input type="text" placeholder="请填写您的联系姓名" v-model="contacts" />
</view>
</view>
<view class="item acea-row row-between-wrapper">
<view>联系电话</view>
<view class="discount">
<input type="text" placeholder="请填写您的联系电话" v-model="contactsTel" />
</view>
</view>
</view>
<view class="item">
<view>备注信息</view>
<textarea placeholder="请添加备注150字以内" v-model="mark"></textarea>
</view>
</view>
<view class="wrapper">
<view class="item">
<view>支付方式</view>
<view class="list">
<view class="payItem acea-row row-middle" :class="active === 'weixin' ? 'on' : ''" @click="payItem('weixin')"
v-show="isWeixin">
<view class="name acea-row row-center-wrapper">
<view class="iconfont icon-weixin2" :class="active === 'weixin' ? 'bounceIn' : ''"></view>微信支付
</view>
<view class="tip">微信快捷支付</view>
</view>
<view class="payItem acea-row row-middle" :class="active === 'weixin' ? 'on' : ''" @click="payItem('weixin')"
v-show="!isWeixin">
<view class="name acea-row row-center-wrapper">
<view class="iconfont icon-weixin2" :class="active === 'weixin' ? 'bounceIn' : ''"></view>微信支付
</view>
<view class="tip">微信快捷支付</view>
</view>
<view class="payItem acea-row row-middle" :class="active === 'yue' ? 'on' : ''" @click="payItem('yue')">
<view class="name acea-row row-center-wrapper">
<view class="iconfont icon-icon-test" :class="active === 'yue' ? 'bounceIn' : ''"></view>余额支付
</view>
<view class="tip">可用余额{{ userInfo.nowMoney || 0 }}</view>
</view>
</view>
</view>
</view>
<view class="moneyList">
<view class="item acea-row row-between-wrapper" v-if="orderPrice.totalPrice !== undefined">
<view>商品总价</view>
<view class="money">{{ orderPrice.totalPrice }}</view>
</view>
<view class="item acea-row row-between-wrapper" v-if="orderPrice.payPostage > 0">
<view>运费</view>
<view class="money">{{ orderPrice.payPostage }}</view>
</view>
<view class="item acea-row row-between-wrapper" v-if="orderPrice.couponPrice > 0">
<view>优惠券抵扣</view>
<view class="money">-{{ orderPrice.couponPrice }}</view>
</view>
<view class="item acea-row row-between-wrapper" v-if="orderPrice.deductionPrice > 0">
<view>积分抵扣</view>
<view class="money">-{{ orderPrice.deductionPrice }}</view>
</view>
</view>
<view style="height:120rpx"></view>
<view class="footer acea-row row-between-wrapper">
<view>
合计:
<text class="font-color-red">{{ orderPrice.payPrice }}</text>
</view>
<view class="settlement" @click="createOrder">立即结算</view>
</view>
<CouponListWindow v-on:couponchange="changecoupon($event)" v-model="showCoupon" :price="orderPrice.totalPrice"
:checked="usableCoupon.id" @checked="changeCoupon"></CouponListWindow>
<AddressWindow @checked="changeAddress" @redirect="addressRedirect" v-model="showAddress" :checked="addressInfo.id"
ref="mychild"></AddressWindow>
</view>
</template>
<style scoped lang="less">
.order-submission .wrapper .shipping select {
color: #999;
padding-right: 0.15*100rpx;
}
.order-submission .wrapper .shipping .iconfont {
font-size: 0.3*100rpx;
color: #515151;
}
.order-submission .allAddress {
width: 100%;
background-image: linear-gradient(to bottom, #e93323 0%, #f5f5f5 100%);
background-image: -webkit-linear-gradient(to bottom,
#e93323 0%,
#f5f5f5 100%);
background-image: -moz-linear-gradient(to bottom, #e93323 0%, #f5f5f5 100%);
padding-top: 0.2*100rpx;
}
.order-submission .allAddress .nav {
width: 7.1*100rpx;
margin: 0 auto;
}
.order-submission .allAddress .nav .item {
width: 3.55*100rpx;
}
.order-submission .allAddress .nav .item.on {
position: relative;
width: 2.5*100rpx;
}
.order-submission .allAddress .nav .item.on:before {
position: absolute;
bottom: 0;
/*content: "快递配送";*/
font-size: 0.28*100rpx;
display: block;
height: 0;
width: 3.55*100rpx;
border-width: 0 0.2*100rpx 0.8*100rpx 0;
border-style: none solid solid;
border-color: transparent transparent #fff;
z-index: 9;
border-radius: 0.07*100rpx 0.3*100rpx 0 0;
text-align: center;
line-height: 0.8*100rpx;
}
.order-submission .allAddress .nav .item:nth-of-type(2).on:before {
content: "到店自提";
border-width: 0 0 0.8*100rpx 0.2*100rpx;
border-radius: 0.3*100rpx 0.07*100rpx 0 0;
}
.order-submission .allAddress .nav .item.on2 {
position: relative;
}
.order-submission .allAddress .nav .item.on2:before {
position: absolute;
bottom: 0;
content: "到店自提";
font-size: 0.28*100rpx;
display: block;
height: 0;
width: 4.6*100rpx;
border-width: 0 0 0.6*100rpx 0.6*100rpx;
border-style: none solid solid;
border-color: transparent transparent #f7c1bd;
border-radius: 0.4*100rpx 0.06*100rpx 0 0;
text-align: center;
line-height: 0.6*100rpx;
}
.order-submission .allAddress .nav .item:nth-of-type(1).on2:before {
content: "快递配送";
border-width: 0 0.6*100rpx 0.6*100rpx 0;
border-radius: 0.06*100rpx 0.4*100rpx 0 0;
}
.order-submission .allAddress .address {
box-sizing: border-box;
width: 100%;
height: 1.5*100rpx;
margin: 0 auto;
}
.order-submission .allAddress .line {
box-sizing: border-box;
width: 100%;
margin: 0 auto;
}
.order-submission .wrapper .item .discount input::placeholder {
color: #ccc;
}
</style>
<script>
import OrderGoods from "@/components/OrderGoods";
import CouponListWindow from "@/components/CouponListWindow";
import AddressWindow from "@/components/AddressWindow";
import {
postOrderConfirm,
postOrderComputed,
createOrder
} from "@/api/order";
import {
mapGetters
} from "vuex";
import {
weappPay
} from "@/libs/wechat";
import {
isWeixin
} from "@/utils";
const NAME = "OrderSubmission",
_isWeixin = isWeixin();
export default {
name: NAME,
components: {
OrderGoods,
CouponListWindow,
AddressWindow
},
props: {},
data: function() {
return {
offlinePayStatus: 2,
from: "routine",
// from: _isWeixin ? "weixin" : "weixinh5",
deduction: true,
isWeixin: _isWeixin,
pinkId: 0,
active: "weixin",
showCoupon: false,
showAddress: false,
addressInfo: {},
couponId: 0,
orderGroupInfo: {
priceGroup: {}
},
usableCoupon: {},
addressLoaded: false,
useIntegral: false,
orderPrice: {
payPrice: "计算中"
},
mark: "",
system_store: {},
shipping_type: 0,
contacts: "",
contactsTel: "",
store_self_mention: 0
};
},
computed: mapGetters(["userInfo"]),
watch: {
useIntegral() {
this.computedPrice();
},
$yroute(n) {
if (n.name === NAME) this.getCartInfo();
},
shipping_type() {
this.computedPrice();
}
},
mounted: function() {
let that = this;
that.getCartInfo();
if (that.$yroute.query.pinkid !== undefined)
that.pinkId = that.$yroute.query.pinkid;
},
methods: {
addressType: function(index) {
if (index && !this.system_store.id) {
uni.showToast({
title: "暂无门店信息,您无法选择到店自提!",
icon: 'none',
duration: 2000
});
return
}
this.shipping_type = index;
},
changeUseIntegral: function(e) {
// this.computedPrice();
console.log(e)
this.useIntegral = e.mp.detail.value[0];
},
computedPrice() {
let shipping_type = this.shipping_type;
postOrderComputed(this.orderGroupInfo.orderKey, {
addressId: this.addressInfo.id,
useIntegral: this.useIntegral ? 1 : 0,
couponId: this.usableCoupon.id || 0,
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
}
});
} else {
this.orderPrice = data.result;
}
});
},
getCartInfo() {
const cartIds = this.$yroute.query.id;
if (!cartIds) {
uni.showToast({
title: "参数有误",
icon: 'none',
duration: 2000
});
return this.$yrouter.back();
}
postOrderConfirm(cartIds)
.then(res => {
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.system_store = res.data.system_store || {};
this.store_self_mention = res.data.store_self_mention;
this.computedPrice();
})
.catch(() => {
uni.showToast({
title: "加载订单数据失败",
icon: 'none',
duration: 2000
});
});
},
addressTap: function() {
this.showAddress = true;
if (!this.addressLoaded) {
this.addressLoaded = true;
this.$refs.mychild.getAddressList();
}
},
addressRedirect() {
this.addressLoaded = false;
this.showAddress = false;
},
couponTap: function() {
this.showCoupon = true;
},
changeCoupon: function(coupon) {
if (!coupon) {
this.usableCoupon = {
couponTitle: "不使用优惠券",
id: 0
};
} else {
this.usableCoupon = coupon;
}
this.computedPrice();
},
payItem: function(index) {
this.active = index;
},
changeAddress(addressInfo) {
this.addressInfo = addressInfo;
},
createOrder() {
let shipping_type = this.shipping_type;
if (!this.active) {
uni.showToast({
title: "请选择支付方式",
icon: 'none',
duration: 2000
});
return
}
if (!this.addressInfo.id && !this.shipping_type) {
uni.showToast({
title: "请选择收货地址",
icon: 'none',
duration: 2000
});
return
}
if (this.shipping_type) {
if (
(this.contacts === "" || this.contactsTel === "") &&
this.shipping_type
) {
uni.showToast({
title: "请填写联系人或联系人电话",
icon: 'none',
duration: 2000
});
return
}
if (!/^1(3|4|5|7|8|9|6)\d{9}$/.test(this.contactsTel)) {
uni.showToast({
title: "请填写正确的手机号",
icon: 'none',
duration: 2000
});
return
}
if (!/^[\u4e00-\u9fa5\w]{2,16}$/.test(this.contacts)) {
uni.showToast({
title: "请填写您的真实姓名",
icon: 'none',
duration: 2000
});
return
}
}
uni.showLoading({
title: "生成订单中"
});
let form = {}
if (this.$deviceType == 'app') {
form.form = 'app'
}
console.log(this.orderGroupInfo.orderKey, {
realName: this.contacts,
phone: this.contactsTel,
addressId: this.addressInfo.id,
useIntegral: this.useIntegral ? 1 : 0,
couponId: this.usableCoupon.id || 0,
payType: this.active,
pinkId: this.pinkId,
seckillId: this.orderGroupInfo.seckill_id,
combinationId: this.orderGroupInfo.combination_id,
bargainId: this.orderGroupInfo.bargain_id,
from: this.from,
mark: this.mark || "",
shippingType: parseInt(shipping_type) + 1,
...form
})
createOrder(this.orderGroupInfo.orderKey, {
realName: this.contacts,
phone: this.contactsTel,
addressId: this.addressInfo.id,
useIntegral: this.useIntegral ? 1 : 0,
couponId: this.usableCoupon.id || 0,
payType: this.active,
pinkId: this.pinkId,
seckillId: this.orderGroupInfo.seckill_id,
combinationId: this.orderGroupInfo.combination_id,
bargainId: this.orderGroupInfo.bargain_id,
from: this.from,
mark: this.mark || "",
shippingType: parseInt(shipping_type) + 1,
...form
})
.then(res => {
console.log(res)
uni.hideLoading();
const data = res.data;
switch (data.status) {
case "ORDER_EXIST":
case "EXTEND_ORDER":
case "PAY_DEFICIENCY":
case "PAY_ERROR":
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
});
break;
case "SUCCESS":
uni.showToast({
title: res.msg,
icon: "none",
duration: 2000
});
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
});
break;
case "WECHAT_H5_PAY":
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
});
setTimeout(() => {
// location.href = data.result.jsConfig.mweb_url;
}, 100);
break;
case "WECHAT_PAY":
weappPay(data.result.jsConfig).then(res => {
console.log(res)
this.$yrouter.replace({
path: "/pages/order/OrderDetails/index",
query: {
id: data.result.orderId
}
});
});
// 下面为原先微信支付方式,
// pay(data.result.jsConfig).finally(() => {
// this.$yrouter.replace({
// path: "/pages/order/OrderDetails/index" ,query: { id: data.result.orderId}
// });
// });
}
})
.catch(err => {
uni.hideLoading();
uni.showToast({
title: err.response.data.msg || "创建订单失败",
icon: 'none',
duration: 2000
});
});
}
}
};
</script>