Commit 6664c6a8 authored by beisir's avatar beisir

Merge branch 'feat/group-buy' of git.quantgroup.cn:ui/group-buy-ui into feat/group-buy

parents f8750728 3702d879
......@@ -52,7 +52,6 @@ export default {
}
},
$route() {
console.log(isApp, isWxMp, isWechat);
store.dispatch('change_show_mini_app_guide', {
bool: !isApp && !isWxMp && !isWechat ? true : false,
pointer: this
......
......@@ -38,11 +38,11 @@ export default {
return http.get(`${talosHost}/api/kdsp/order-info/status-number`);
},
confirmOrder(data) {
return http.post(`${talosHost}/api/kdsp/shop-cart/order-confirm/page/v2`, data);
return http.post(`${talosHost}/api/kdsp/shop-cart/order-confirm/page/activity`, data);
},
orderSubmit(data) {
return http.post(`${talosHost}/api/kdsp/order-info/e/submit`, encryption(data));
return http.post(`${talosHost}/api/kdsp/order-info/e/hundredGroupSubmit`, encryption(data));
},
// 物流公司列表
companyList() {
......
......@@ -59,34 +59,18 @@
<script>
export default {
props: {
avators: {
type: Array,
default: () => [
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_01.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_02.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_03.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_04.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_05.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_06.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_07.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_09.png'
// 'https://activitystatic.lkbang.net/mall-free-ui/img/avator_10.png'
// 'https://activitystatic.lkbang.net/mall-free-ui/img/avator_10.png'
]
},
desc: {
type: String,
default: ''
},
groupPersonNum: {
type: Number,
default: 100
groupInfo: {
type: Object,
default: () => {
return {};
}
}
},
data() {
return {
isLeader: true, // 标识是不是团长
showDialogSlot: false // 查看参团人员
showDialogSlot: false, // 查看参团人员
avators: [] // 头像列表
};
},
computed: {
......
<template>
<div class="coupon-list">
<h3 class="coupon-title">选择{{ feeTitle }}</h3>
<div class="coupon-list__list">
<template v-if="list.length">
<div v-for="(info, index) in list" :key="index" @click="handleSelectCoupon(info.id)">
<div v-if="couponType == 4" class="minus-list__item">
<div class="minus-list__left">
<p>{{ info.activityDesc }}</p>
<span>活动有效期:{{ info.startDate }}-{{ info.endDate }}</span>
</div>
<div class="minus-list__right">
<cr-icon v-if="info.isSelect" type="checked" color="#ec3333" size="25px" />
<cr-icon v-else type="circle" color="#dcdcdc" size="25px" />
</div>
</div>
<div v-else class="coupon-list__item">
<img :src="info.iconUrl" class="coupon-list__tag" />
<div class="coupon-list__left">
<div class="coupon-list__amount">
<span>{{ currency }}</span>
{{ info.faceValue }}
</div>
<div class="coupon-list__limit">{{ info.limitDesc }}</div>
</div>
<div class="coupon-list__content">
<div class="coupon-list__desc">{{ info.name }}</div>
<div class="coupon-list__date">{{ info.couponValidTime }}</div>
</div>
<div class="coupon-list__right">
<cr-icon v-if="info.isSelect" type="checked" color="#ec3333" size="25px" />
<cr-icon v-else type="circle" color="#dcdcdc" size="25px" />
</div>
</div>
</div>
</template>
<div v-else class="coupon-list__empty"><empty text="暂无优惠券" /></div>
</div>
<div v-if="list.length" class="coupon-list__bottom">
<button @click="handleRadioSubmit">确定</button>
</div>
</div>
</template>
<script>
import { getCouponChooseList } from '@/api/home.api';
import { TITLE_LIST } from '@/constants/order';
import Empty from './empty';
export default {
name: 'CouponList',
components: {
Empty
},
props: {
couponId: {
type: [String, Number],
default: 0
},
couponType: [String, Number],
currency: {
type: String,
default: '¥'
},
goodsInfo: {
type: Array,
default: () => []
},
couponActivityInfoList: {
type: Array,
default: () => []
}
},
data() {
return {
list: []
};
},
computed: {
selectedCoupon() {
return this.list.filter(l => {
if (l.isSelect) return l;
});
},
feeTitle() {
return TITLE_LIST[this.couponType];
}
},
watch: {
couponId: {
handler() {
this.getCouponChooseList();
},
immediate: true
},
couponType: {
handler() {
this.getCouponChooseList();
},
immediate: true
}
},
methods: {
handleSelectCoupon(num) {
this.list.map(item => {
if (item.id == num) {
item.isSelect = !item.isSelect;
} else {
item.isSelect = false;
}
});
},
handleRadioSubmit() {
this.$emit('coupon-select', this.selectedCoupon);
},
async getCouponChooseList() {
if (!this.goodsInfo.length) return;
this.list = [];
const selectedSkuList = this.goodsInfo.map(item => {
const { skuSource, count, skuId } = item;
return {
skuNo: skuId,
skuNum: count,
skuSource
};
});
const selectedCouponActivityList = [];
this.couponActivityInfoList.forEach(item => {
selectedCouponActivityList.push({
couponActivityType: item.couponActivityType,
couponActivityUseId: item.couponActivityUseId
});
});
const [res] = await getCouponChooseList({
selectedSkuList,
couponActivityType: this.couponType,
selectedCouponActivityList
});
if ((res && res.coupons) || (res && res.activityList)) {
const data = this.couponType == 4 ? res.activityList : res.coupons;
data.forEach(u => {
u.id = this.couponType == 4 ? u.activityId : u.pickupId;
if (u.id == this.couponId) u.isSelect = true;
else u.isSelect = false;
});
this.list = data;
}
}
}
};
</script>
<style lang="less" scoped>
.coupon-title {
text-align: center;
margin: 0 auto;
margin-top: 15px;
width: 50%;
.text-18();
}
.coupon-list {
&__bottom {
padding: 10px 20px 15px 20px;
position: relative;
box-sizing: border-box;
button {
width: 100%;
background-image: linear-gradient(269deg, #ff5d00 12%, #ff1900 86%);
border-radius: 80px;
height: 40px;
.text-14();
line-height: 40px;
color: #fff;
}
}
&__list {
padding: 10px 10px 0;
overflow-y: scroll;
overflow-x: hidden;
height: 50vh;
}
&__scroll {
height: 100%;
}
&__empty {
padding-top: 50px;
}
&__item {
position: relative;
display: flex;
align-items: center;
background: #ffece6;
border-radius: 6px;
padding: 18px 10px;
margin-bottom: 10px;
&--disabled {
-webkit-filter: grayscale(100%) opacity(0.8); /* Chrome, Safari, Opera */
filter: grayscale(100%) opacity(0.8);
.cr-coupon-list__right {
display: none;
}
}
}
&__tag {
position: absolute;
top: 0;
left: 0;
width: 44px;
height: 16px;
}
&__left {
text-align: center;
color: #ec3333;
}
&__amount {
font-size: 30px;
font-weight: 500;
line-height: 36px;
margin: 0;
text {
font-size: 16px;
line-height: 22px;
}
}
&__limit {
.text-12();
color: #ec3333;
line-height: 17px;
margin: 0;
}
&__content {
padding: 0 18px;
}
&__desc {
.text-14();
line-height: 20px;
font-weight: 500;
color: #333;
margin-bottom: 3px;
}
&__date {
.text-12();
color: #666666;
line-height: 17px;
}
&__right {
margin-left: auto;
.radio {
width: 30px;
height: 30px;
display: block;
transform: scale(0.8);
background-color: red !important;
}
}
}
::v-deep .cr-icon {
line-height: 28px !important;
}
.minus-list {
&__list {
padding: 10px 10px 0;
overflow-y: scroll;
overflow-x: hidden;
height: 50vh;
}
&__item {
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
border-radius: 6px;
padding: 6px 10px;
margin-bottom: 10px;
}
&__left {
.text-14();
span {
color: @font-color-base;
.text-12();
}
}
}
</style>
<template>
<div class="success-info">
<p class="desc">已有<span>6999人</span>拼团成功</p>
<p class="desc">
已有<span>{{ groupInfo.groupBuySuccessCount || 0 }}</span>拼团成功
</p>
<avator-swiper :avator-data="avatorData" />
</div>
</template>
......@@ -10,20 +12,27 @@ export default {
components: {
avatorSwiper
},
props: {
groupInfo: {
type: Object,
default: () => {
return {};
}
}
},
data() {
return {
avatorData: [
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_01.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_02.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_03.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_04.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_05.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_06.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_07.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_09.png',
'https://activitystatic.lkbang.net/mall-free-ui/img/avator_10.png'
]
avatorData: []
};
},
created() {
if (this.groupInfo.groupBuyAllUserInfoList) {
this.avatorData = this.groupInfo.groupBuyAllUserInfoList.map(v => {
return v.avatar;
});
} else {
this.avatorData = [];
}
}
};
</script>
......
......@@ -10,6 +10,9 @@ const shenceHost = 'https://bn.xyqb.com/sa?project=default'; // 测试地址
const talosHost = 'https://talos-vcc3.liangkebang.net';
const faceHost = 'https://auth-vcc3.liangkebang.net';
const kdspHost = 'https://kdsp-api-vcc3.liangkebang.net';
// const talosHost = 'http://192.168.29.89:8098'; // 唐峰
// const talosHost = 'http://192.168.25.210:8080'; // 张超
// const talosHost = 'http://192.168.28.83:80'; // 董彪
const opapiHost = 'https://opapi-vcc3.liangkebang.net';
const VCC_CHANNEL = '';
const TERMINAL = 'H5';
......
......@@ -88,7 +88,7 @@ const mutations = {
},
[types.CHANGE_SHOW_MINI_APP_GUIDE](state, { bool, pointer }) {
state.isPrimordialBrowser = bool;
if (bool) {
if (!bool) {
// 需要取反
// 如果非app webview并且非小程序webview,直接拦截提示,到小程序操作
pointer.$dialog({
......
......@@ -32,6 +32,7 @@
import { isApp, isWxMp } from '@/service/validation.service';
import Bridge from '@qg/js-bridge';
import MpBridge from '@/service/mp';
import localStorage from '@/service/localStorage.service';
export default {
name: 'BottomNav',
props: {
......@@ -130,6 +131,7 @@ export default {
// todo
return;
}
this.$emit('buy');
}
}
};
......
......@@ -5,12 +5,28 @@
<countDown :block-no-bg="true" />
</div> -->
<div class="desc-item">
<p class="desc">还差<span>2人</span>成团,距结束还剩</p>
<countDown :block-no-bg="true" />
<template v-if="groupInfo.groupBuyStatus == 1">
<p class="desc">
还差<span>{{ groupInfo.groupBuyNeedNewUserCount }}</span>成团,距结束还剩
</p>
<countDown v-if="!!timestemp" :block-no-bg="true" :end-time="timestemp" />
</template>
<template v-if="groupInfo.groupBuyStatus == 2">
<p class="desc">
恭喜成团,等待发货!
</p>
</template>
<template v-if="groupInfo.groupBuyStatus == 3">
<p class="desc">
哎呀,拼团时间已过,尚未成团!
</p>
</template>
</div>
<div class="gourp-rules">
<p>成团条件:还需邀请2名新人</p>
<cr-image src="@/assets/images/flag.png" width="13px" />
<div v-if="groupInfo.groupBuyStatus != -1 && groupInfo.groupBuyStatus != 0" class="gourp-rules">
<template v-if="groupInfo.groupBuyStatus == 1">
<p>成团条件:{{ groupInfo.groupBuyCondition || '' }}</p>
<cr-image src="@/assets/images/flag.png" width="13px" />
</template>
</div>
<div v-if="showButtonGroup" ref="buttonArea" class="button-area">
<cr-button block shape="circle" type="primary">邀请好友</cr-button>
......@@ -28,6 +44,16 @@ export default {
showButtonGroup: {
type: Boolean,
default: false
},
timestemp: {
type: Number,
default: 0
},
groupInfo: {
type: Object,
default: () => {
return {};
}
}
},
data() {
......
......@@ -114,7 +114,7 @@
padding-left: @padding-unit * 3;
box-sizing: border-box;
&-price{
width: 253px;
width: 241px;
flex-shrink: 0;
display: flex;
justify-content: center;
......@@ -155,8 +155,7 @@
}
// 头像组、团购规则等
&-group-info{
margin-top: @padding-sm - 4;
padding:0 @padding-sd @padding-sd;
padding:@padding-sm - 4 @padding-sd @padding-sd;
background: @white;
}
&-param {
......@@ -319,6 +318,7 @@
}
&-num {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
......@@ -329,7 +329,7 @@
top: 27.5px;
.text-14();
color: @red;
width: 90px;
// width: 90px;
text-align: right;
}
......
......@@ -25,8 +25,8 @@
<p class="desc">拼团成功/失败,款项原路返回至账户</p>
</div>
<div class="goods-group-buy-info-time">
<p class="goods-group-buy-info-time-desc">距成团结束</p>
<count-down :end-time="endTime" />
<p class="goods-group-buy-info-time-desc">{{ countDownText }}</p>
<count-down v-if="!!timestemp" :end-time="timestemp" />
</div>
</div>
<!-- 商品名称/价格 -->
......@@ -34,7 +34,7 @@
<div class="goods-info-name">{{ detailInfo.goodsName }}</div>
</div>
<div class="goods-param">
<div v-if="inProgress == 1" class="goods-param">
<!-- 商品已选 -->
<goods-cell title="已选" @click.native="handleParamsClick('sku', '')">
<span class="goods-param-text">
......@@ -57,15 +57,18 @@
</goods-cell>
</div>
<div class="goods-group-info">
<avatorGroup />
<group-desc-info />
<successInfo />
<cr-divider
hairline
:style="{
borderColor: '#ECECEC'
}"
/>
<!-- {{ detailInfo.groupBuyInfo }} -->
<template v-if="inProgress == 1">
<avatorGroup :group-info="detailInfo.groupBuyInfo || {}" />
<group-desc-info :group-info="detailInfo.groupBuyInfo || {}" :timestemp="timestemp" />
<successInfo :group-info="detailInfo.groupBuyInfo || {}" />
<cr-divider
hairline
:style="{
borderColor: '#ECECEC'
}"
/>
</template>
<rules />
</div>
<span v-if="detailImgList.length" id="goodDetail" class="goods-divider">宝贝详情</span>
......@@ -88,12 +91,12 @@
<div class="popup-title">{{ currentPopupName }}</div>
<div v-if="currentPopupType === 'sku'" class="goods-popup">
<div class="goods-popup-selected">
<img :src="detailInfo.imageUrl" />
<img :src="detailInfo.thumbImageUrl" />
<div class="Gp-selected-right">
<div class="Gps-right-header">
<div class="Gpsr-header-price">
<span>¥</span>
<span>{{ detailInfo.salePrice }}</span>
<span>{{ detailInfo.price }}</span>
</div>
<div v-if="detailInfo.marketPrice" class="Gpsr-header-discount">
<span>原价:</span>
......@@ -132,15 +135,15 @@
v-model="selectedGoods.skuNum"
class="Gp-num-step"
:min="minCount"
:max="detailInfo.activityLimitCount || detailInfo.limitCount"
:max="detailInfo.limitCount"
disable-input
/>
<div v-if="detailInfo.activityLimitCount" class="goods-popup-num-limit">
仅限购买{{ detailInfo.activityLimitCount }}件
<div v-if="detailInfo.limitCount" class="goods-popup-num-limit">
仅限购买{{ detailInfo.limitCount }}件
</div>
</div>
<div class="goods-area-button">
<button class="goods-bottom-buy" @click="toOrder">确认</button>
<button class="goods-bottom-buy" @click="goVccOrDetail">确认</button>
</div>
</div>
<div v-if="currentPopupType === 'area'" class="goods-area">
......@@ -165,7 +168,7 @@
</div>
</cr-popup>
<bottom-nav
v-if="!isPrimordialBrowser && !isWeixinBrowser"
v-if="!isPrimordialBrowser && !isWeixinBrowser && inProgress == 1"
type="shoppingCar"
:disabled="false"
@buy="goVccOrDetail"
......@@ -186,6 +189,7 @@ import rules from '@/components/rules';
import groupDescInfo from './components/groupDescInfo';
import { mapState } from 'vuex';
import sharePic from '@/components/sharePic';
import localStorage from '@/service/localStorage.service';
export default {
// eslint-disable-next-line vue/name-property-casing
name: 'goodDetail',
......@@ -205,8 +209,10 @@ export default {
},
data() {
return {
endTime: 1631203200000,
timestemp: '',
showInfo: false,
inProgress: false, // 活动是否已经开始
countDownText: '',
// 以下是原有的data
detailParam: {
skuNo: '',
......@@ -244,8 +250,9 @@ export default {
})
},
created() {
this.hasLogin = window.localStorage.getItem('vccToken') != 'null' ? true : false;
this.hasLogin = localStorage.get('vccToken') != 'null' ? true : false;
this.detailParam = { ...this.$route.query };
localStorage.set('activityId', this.detailParam.templateId); // 设置活动模板id,用于下单
this.name = this.$route.params;
this.init(this.detailParam);
},
......@@ -270,10 +277,35 @@ export default {
}
this.toOrder();
},
setStartStatus(data) {
const currentTime = new Date(data.currentTime).getTime();
const activityStartTime = new Date(data.startTime).getTime();
const activityEndTime = new Date(data.endTime).getTime();
if (currentTime <= activityStartTime) {
// 当前时间小于活动开始时间
this.timestemp = activityStartTime;
this.countDownText = '距活动开始时间';
this.inProgress = -1;
return;
}
if (currentTime >= activityEndTime) {
this.timestemp = 0;
this.countDownText = '活动已结束';
this.inProgress = 0;
return;
}
if (currentTime > activityStartTime && currentTime < activityEndTime) {
this.timestemp = activityEndTime;
this.countDownText = '距成团结束';
this.inProgress = 1;
return;
}
},
async init(detailParam) {
const [res] = await goods.detailInfo(detailParam);
this.imgList = res.imageUrl || [];
this.detailInfo = res;
this.setStartStatus(res);
try {
const detailImages = await goods.getDetailPic(this.detailInfo.contentDetailUrl);
// const imgReg = new RegExp('(?<=src=").[^"]*', 'g');
......@@ -293,7 +325,7 @@ export default {
}
this.selectedGoods.skuId = this.detailInfo.skuNo;
if (res.stock === 0) {
if (res.activitySkuTotalCount === 0) {
this.detailInfo.limitCount = 1;
this.detailInfo.activityLimitCount = 0;
this.$dialog({
......@@ -355,35 +387,33 @@ export default {
return;
}
this.show = false;
console.log(this.selectedAddress);
const order = {
activityInfoId: this.detailParam.activityId,
activityTemplateId: this.detailParam.templateId,
activityTemplateDetailId: this.detailParam.templateDetailId,
addrReceiverId: this.selectedAddress.addrReceiverId || '',
selectedSkuList: [
{
skuId: this.selectedGoods.skuId,
skuNum: this.selectedGoods.skuNum,
skuSource: this.detailInfo.skuSource
}
],
defaultUseCoupon: true,
defaultUseFreightFeeCoupon: true,
defaultUseCashCoupon: true,
defaultUseActivityCoupon: true,
couponActivityUseIdList: []
selectedSku: {
skuNo: this.selectedGoods.skuId,
skuNum: this.selectedGoods.skuNum,
skuSource: this.detailInfo.skuSource
}
};
window.localStorage.setItem('orderData', JSON.stringify(order));
window.localStorage.removeItem('addressList');
localStorage.set('orderData', order);
localStorage.remove('addressList');
this.$router.push({ name: 'createOrder' });
},
changeAddress(address) {
// 选取规格需要清空,init会重新赋值
this.specSelected = [];
const detailParam = { ...this.$route.query };
this.detailParam = {
count: this.selectedGoods.skuNum,
skuNo: this.selectedGoods.skuId,
receiverId: address.addrReceiverId
receiverId: address.addrReceiverId,
...detailParam
};
this.show = false;
console.log(this.detailParam);
this.init(this.detailParam);
},
// 选择商品规格
......
......@@ -33,11 +33,7 @@
</div>
</div>
<template v-if="orderInfo.calcFeeInfo.totalSkuFee !== '0.00'">
<FeeInfo
:coupon-activity-info-list="orderInfo.couponActivityInfoList"
:calc-fee-info="orderInfo.calcFeeInfo"
@coupon-show="handleCouponShow"
/>
<FeeInfo :calc-fee-info="orderInfo.calcFeeInfo" @coupon-show="handleCouponShow" />
</template>
<!-- 底部 -->
<bottom-nav
......@@ -46,16 +42,6 @@
:info="orderInfo.calcFeeInfo"
@buy="handleBuy"
/>
<cr-popup v-model="isCoupon" closeable round position="bottom">
<coupon-list
ref="couponList"
:coupon-id="couponId"
:goods-info="orderInfo.shopSkuList"
:coupon-type="couponType"
:coupon-activity-info-list="orderInfo.couponActivityInfoList"
@coupon-select="handleSelectCoupon"
/>
</cr-popup>
</div>
</template>
......@@ -64,7 +50,6 @@ import Bridge from '@qg/js-bridge';
import MpBridge from '@/service/mp';
import order from '@/api/order.api';
import bottomNav from '@/components/bottomNav';
import couponList from '@/components/coupon-list';
// import stepper from '@/components/sample';
import localStorage from '@/service/localStorage.service';
import historyRecordMixins from '@/mixins/historyRecord.mixins';
......@@ -73,12 +58,12 @@ import { DISCOUNT, FREIGHT, CASH, REDUCTION, HAS_DISCOUNT } from '@/constants/or
import cookies from '@/service/cookieStorage.service';
import { isApp, isWxMp } from '@/service/validation.service';
import { mapState } from 'vuex';
console.log({ ...mapState });
export default {
name: 'CreateOrder',
components: {
bottomNav,
// stepper,
couponList,
FeeInfo
},
mixins: [historyRecordMixins],
......@@ -97,7 +82,6 @@ export default {
selectCoupon: [],
orderInfo: {
addrReceiverInfo: {},
couponActivityInfoList: [],
calcFeeInfo: {},
invalidSkuList: [],
shopSkuList: []
......@@ -171,49 +155,6 @@ export default {
this.couponId = data.couponActivityUseId;
this.isCoupon = true;
},
getCouponUserIdList(couponItem) {
const { couponType } = this;
const { couponActivityInfoList } = this.orderInfo;
const { activityId, pickupId, couponCategory } = couponItem || {};
const isActivity = couponType === REDUCTION;
const couponKey = isActivity ? 'activityTemplateDetailId' : 'couponActivityUseId';
const couponId = isActivity ? activityId : pickupId;
let couponList = [];
couponActivityInfoList.forEach(item => {
if (item.couponActivityType != couponCategory) {
couponList.push({
[couponKey]: item.couponActivityUseId,
couponActivityType: item.couponActivityType
});
}
});
if (couponItem) {
couponList.push({
couponActivityUseId: couponId,
couponActivityType: couponType
});
return couponList;
}
return couponList.filter(c => c.couponActivityType !== couponType);
},
handleSelectCoupon([couponItem]) {
this.isCoupon = false;
const { couponType } = this;
this.orderData.couponActivityUseIdList = this.getCouponUserIdList(couponItem);
if (couponType === DISCOUNT) {
this.orderData.defaultUseCoupon = false;
}
if (couponType === FREIGHT) {
this.orderData.defaultUseFreightFeeCoupon = false;
}
if (couponType === CASH) {
this.orderData.defaultUseCashCoupon = false;
}
if (couponType === REDUCTION) {
this.orderData.defaultUseActivityCoupon = false;
}
this.getConfirmOrderInfo();
},
// // ! 需要注意stepper的value是从接口获取的,max会受影响
// getMaxStockByCanAdd(item) {
// const { count, canAdd, activityCanBuyCount } = item;
......@@ -329,16 +270,9 @@ export default {
// ]
// };
if (data) {
const {
addrReceiverInfo,
couponActivityInfoList,
calcFeeInfo,
invalidSkuList,
shopSkuList
} = data;
const { addrReceiverInfo, calcFeeInfo, invalidSkuList, shopSkuList } = data;
const orderInfo = {
addrReceiverInfo,
couponActivityInfoList,
calcFeeInfo,
invalidSkuList,
shopSkuList: []
......@@ -371,14 +305,14 @@ export default {
const {
addrReceiverInfo: { addrReceiverId: receiverId },
calcFeeInfo: { totalFreightFee, totalPayFee: totalFee },
couponActivityInfoList,
shopSkuList
} = this.orderInfo;
const params = {
receiverId,
totalFreightFee,
totalFee,
...this.getDiscountIds(couponActivityInfoList),
activityId: localStorage.get('activityId'),
activityHundredGroupId: '',
skuList: shopSkuList.map(item => {
const { skuId: skuNo, count } = item;
return { skuNo, count };
......@@ -386,35 +320,8 @@ export default {
};
this.orderSubmit(params);
},
getDiscountIds(list) {
const freightCouponIds = [],
orderCouponIds = [],
activityId = [],
cashCouponIds = [];
list.forEach(c => {
const { couponActivityType, couponActivityUseId } = c;
if (couponActivityType === DISCOUNT) {
orderCouponIds.push(couponActivityUseId);
}
if (couponActivityType === FREIGHT) {
freightCouponIds.push(couponActivityUseId);
this.orderData.defaultUseFreightFeeCoupon = false;
}
if (couponActivityType === CASH) {
cashCouponIds.push(couponActivityUseId);
}
if (couponActivityType === REDUCTION) {
activityId.push(couponActivityUseId);
}
});
return {
freightCouponIds: freightCouponIds.join(''),
orderCouponIds: orderCouponIds.join(''),
activityId: activityId.join(''),
cashCouponIds: cashCouponIds.join('')
};
},
async orderSubmit(params) {
console.log(params);
const [data] = await order.orderSubmit(params);
if (data && data.orderNo) {
cookies.set('skuID', params.skuList[0].skuNo);
......@@ -427,12 +334,13 @@ export default {
newUrl: `/pay?orderNo=${data.orderNo}`
});
} else {
this.$dialog({
message: '请在App或小程序中参与活动~',
title: '',
showCancelButton: false,
confirmButtonText: '我知道了'
});
return; // todo 处理纯h5情况
// this.$dialog({
// message: '请在App或小程序中参与活动~',
// title: '',
// showCancelButton: false,
// confirmButtonText: '我知道了'
// });
}
}
}
......
......@@ -236,6 +236,10 @@ export default {
methods: {
/* 查询支付信息 */
async queryPayInfo() {
console.log({
orderNo: this.orderNo,
isUsedMergePayMethod: false
});
const [data, error] = await queryPayInfo({
orderNo: this.orderNo,
isUsedMergePayMethod: false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment