|
@@ -23,7 +23,7 @@ import ColSticky from '@/components/col-sticky'
|
|
import { moneyFormat } from '@/helpers/utils'
|
|
import { moneyFormat } from '@/helpers/utils'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import deepClone from '@/helpers/deep-clone'
|
|
import deepClone from '@/helpers/deep-clone'
|
|
-import { memberSimpleType, memberType } from '@/constant'
|
|
|
|
|
|
+import { memberSimpleType, memberType, studyCardType } from '@/constant'
|
|
import dayjs from 'dayjs'
|
|
import dayjs from 'dayjs'
|
|
import { orderStatus } from '../order-detail/orderStatus'
|
|
import { orderStatus } from '../order-detail/orderStatus'
|
|
import TheNoticeBar from '@/components/the-noticeBar'
|
|
import TheNoticeBar from '@/components/the-noticeBar'
|
|
@@ -58,6 +58,20 @@ export default defineComponent({
|
|
memberShowList: [] // 购买商品信息
|
|
memberShowList: [] // 购买商品信息
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+ // 活动数据
|
|
|
|
+ const activitData = reactive({
|
|
|
|
+ activityId: undefined,
|
|
|
|
+ activityStart: '',
|
|
|
|
+ activityEnd: '',
|
|
|
|
+ registrationPrice: 0,
|
|
|
|
+ buyCount: 0, //buyCount 小于1的时候 代表能无限购买
|
|
|
|
+ buyNum: 0,
|
|
|
|
+ vipCardId: 0,
|
|
|
|
+ activityList: [],
|
|
|
|
+ extConfig: {} as Record<string, any>,
|
|
|
|
+ vipType: 'VIP'
|
|
|
|
+ })
|
|
|
|
+
|
|
const userInfo = computed(() => {
|
|
const userInfo = computed(() => {
|
|
const users = baseState.user.data
|
|
const users = baseState.user.data
|
|
return {
|
|
return {
|
|
@@ -65,7 +79,9 @@ export default defineComponent({
|
|
phone: users?.phone,
|
|
phone: users?.phone,
|
|
avatar: users?.heardUrl,
|
|
avatar: users?.heardUrl,
|
|
id: users?.userId,
|
|
id: users?.userId,
|
|
- userVip: users?.userVip
|
|
|
|
|
|
+ userVip: users?.userVip,
|
|
|
|
+ discountEndTime: users?.discountEndTime,
|
|
|
|
+ discountStartTime: users?.discountStartTime
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
|
|
@@ -193,6 +209,10 @@ export default defineComponent({
|
|
}
|
|
}
|
|
|
|
|
|
const calcSalePrice = (item: any) => {
|
|
const calcSalePrice = (item: any) => {
|
|
|
|
+ // 有活动 以活动价格为准
|
|
|
|
+ if (item.id === activitData.vipCardId) {
|
|
|
|
+ return activitData.registrationPrice
|
|
|
|
+ }
|
|
// discount
|
|
// discount
|
|
if (item.discount === 1) {
|
|
if (item.discount === 1) {
|
|
const tempPrice = Number(
|
|
const tempPrice = Number(
|
|
@@ -278,28 +298,36 @@ export default defineComponent({
|
|
orderStatus.orderObject.orderDesc = `小酷Ai ${state.tabActive} ${member.title}`
|
|
orderStatus.orderObject.orderDesc = `小酷Ai ${state.tabActive} ${member.title}`
|
|
orderStatus.orderObject.actualPrice = calcSalePrice(member)
|
|
orderStatus.orderObject.actualPrice = calcSalePrice(member)
|
|
orderStatus.orderObject.recomUserId = state.recomUserId
|
|
orderStatus.orderObject.recomUserId = state.recomUserId
|
|
- orderStatus.orderObject.activityId = state.activityId
|
|
|
|
|
|
+ orderStatus.orderObject.activityId = activitData.activityId || state.activityId
|
|
orderStatus.orderObject.orderNo = ''
|
|
orderStatus.orderObject.orderNo = ''
|
|
|
|
|
|
- orderStatus.orderObject.orderList = [
|
|
|
|
- {
|
|
|
|
- orderType: state.tabActive,
|
|
|
|
- goodsName: `小酷Ai ${state.tabActive} ${member.title}`,
|
|
|
|
- id: member.id,
|
|
|
|
- title: member.title,
|
|
|
|
- num: 1, // 购买个数
|
|
|
|
- salePrice: member.salePrice,
|
|
|
|
- period: member.period,
|
|
|
|
- vipEndDays: userInfo.value.userVip?.vipEndDays || 0, // 会员剩余天数
|
|
|
|
- svipEndDays: userInfo.value.userVip?.svipEndDays || 0,
|
|
|
|
- discount: member.discount, // 是否有折扣
|
|
|
|
- discountPrice: member.discountPrice, // 折扣金额
|
|
|
|
- price: calcSalePrice(member),
|
|
|
|
- startTime: dayjs(startTime).format('YYYY-MM-DD'),
|
|
|
|
- endTime: dayjs(endTime).format('YYYY-MM-DD'),
|
|
|
|
- recomUserId: state.recomUserId
|
|
|
|
- }
|
|
|
|
- ]
|
|
|
|
|
|
+ const orderData = {
|
|
|
|
+ orderType: state.tabActive,
|
|
|
|
+ goodsName: `小酷Ai ${state.tabActive} ${member.title}`,
|
|
|
|
+ id: member.id,
|
|
|
|
+ title: member.title,
|
|
|
|
+ num: 1, // 购买个数
|
|
|
|
+ salePrice: member.salePrice,
|
|
|
|
+ period: member.period,
|
|
|
|
+ vipEndDays: userInfo.value.userVip?.vipEndDays || 0, // 会员剩余天数
|
|
|
|
+ svipEndDays: userInfo.value.userVip?.svipEndDays || 0,
|
|
|
|
+ discount: member.discount, // 是否有折扣
|
|
|
|
+ discountPrice: member.discountPrice, // 折扣金额
|
|
|
|
+ price: calcSalePrice(member),
|
|
|
|
+ startTime: dayjs(startTime).format('YYYY-MM-DD'),
|
|
|
|
+ endTime: dayjs(endTime).format('YYYY-MM-DD'),
|
|
|
|
+ recomUserId: state.recomUserId,
|
|
|
|
+ activityBuyCount: 0, // 活动购买限制次数
|
|
|
|
+ activityList: [], // 活动赠送的东西
|
|
|
|
+ discountEndTime: userInfo.value.discountEndTime, // 畅学卡结束时间
|
|
|
|
+ discountStartTime: userInfo.value.discountStartTime // 畅学卡开始时间
|
|
|
|
+ }
|
|
|
|
+ const canBuyNum = activitData.buyCount - activitData.buyNum
|
|
|
|
+ if (canBuyNum > 0) {
|
|
|
|
+ orderData.activityBuyCount = canBuyNum
|
|
|
|
+ orderData.activityList = activitData.activityList
|
|
|
|
+ }
|
|
|
|
+ orderStatus.orderObject.orderList = [orderData]
|
|
router.push({
|
|
router.push({
|
|
path: '/orderDetail',
|
|
path: '/orderDetail',
|
|
query: {
|
|
query: {
|
|
@@ -382,6 +410,70 @@ export default defineComponent({
|
|
}
|
|
}
|
|
)
|
|
)
|
|
const { list, ...more } = data
|
|
const { list, ...more } = data
|
|
|
|
+
|
|
|
|
+ // 学生端 活动
|
|
|
|
+ if (baseState.platformType === 'STUDENT') {
|
|
|
|
+ const activitRes = await request.post(
|
|
|
|
+ `api-student/memberPriceSettings/getMemberBuyGift`
|
|
|
|
+ )
|
|
|
|
+ if (activitRes.code === 200 && activitRes.data) {
|
|
|
|
+ const {
|
|
|
|
+ activityStart,
|
|
|
|
+ activityEnd,
|
|
|
|
+ registrationPrice,
|
|
|
|
+ buyCount,
|
|
|
|
+ buyNum,
|
|
|
|
+ vipCardId,
|
|
|
|
+ activityRewardList,
|
|
|
|
+ extConfig,
|
|
|
|
+ id
|
|
|
|
+ } = activitRes.data || {}
|
|
|
|
+ // 匹配当前的 会员
|
|
|
|
+ const vipData = list.find(item => {
|
|
|
|
+ return item.id === vipCardId
|
|
|
|
+ })
|
|
|
|
+ // 当匹配上会员 并且没有达到购买限制的时候才有活动
|
|
|
|
+ if (vipData && (buyCount < 1 || buyCount > buyNum)) {
|
|
|
|
+ activitData.activityId = id
|
|
|
|
+ activitData.vipType = vipData.vipType
|
|
|
|
+ activitData.activityStart = activityStart
|
|
|
|
+ activitData.activityEnd = activityEnd
|
|
|
|
+ activitData.registrationPrice = registrationPrice
|
|
|
|
+ activitData.buyCount = buyCount < 1 ? 99999 : buyCount //buyCount 小于1的时候 代表能无限购买
|
|
|
|
+ activitData.buyNum = buyNum
|
|
|
|
+ activitData.vipCardId = vipCardId
|
|
|
|
+ extConfig && (activitData.extConfig = JSON.parse(extConfig))
|
|
|
|
+ activitData.activityList = (activityRewardList || []).map(
|
|
|
|
+ item => {
|
|
|
|
+ const { rewardType, vipCardId, unit } = item.activityReward
|
|
|
|
+ if (rewardType === 'DISCOUNT') {
|
|
|
|
+ return {
|
|
|
|
+ goodType: rewardType,
|
|
|
|
+ goodName: `畅学卡 ${studyCardType[unit]}`,
|
|
|
|
+ goodNum: 1,
|
|
|
|
+ bizContent: vipCardId,
|
|
|
|
+ giftFlag: true,
|
|
|
|
+ vipEndDays: null,
|
|
|
|
+ goodsNum: 1,
|
|
|
|
+ unit
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return {
|
|
|
|
+ goodType: rewardType,
|
|
|
|
+ goodName: `小酷Ai SVIP ${memberType[unit]}`,
|
|
|
|
+ goodNum: 1,
|
|
|
|
+ bizContent: vipCardId,
|
|
|
|
+ giftFlag: true,
|
|
|
|
+ vipEndDays: null,
|
|
|
|
+ goodsNum: 1,
|
|
|
|
+ unit
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
state.discountTeacher = {
|
|
state.discountTeacher = {
|
|
...more
|
|
...more
|
|
}
|
|
}
|
|
@@ -513,6 +605,15 @@ export default defineComponent({
|
|
<i class={[styles.icon_member]}></i>
|
|
<i class={[styles.icon_member]}></i>
|
|
<span class={styles.icon_text}>
|
|
<span class={styles.icon_text}>
|
|
<i class={styles.bottom_line}></i>
|
|
<i class={styles.bottom_line}></i>
|
|
|
|
+ {/* 活动显示 */}
|
|
|
|
+ {activitData.vipCardId &&
|
|
|
|
+ activitData.vipType === 'VIP' &&
|
|
|
|
+ activitData.extConfig?.title1 && (
|
|
|
|
+ <div class={styles.activitTip}>
|
|
|
|
+ {activitData.extConfig?.title1}
|
|
|
|
+ </div>
|
|
|
|
+ )}
|
|
|
|
+ <div class={styles}></div>
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class={styles.vip_member_tip}></div>
|
|
<div class={styles.vip_member_tip}></div>
|
|
@@ -528,6 +629,14 @@ export default defineComponent({
|
|
<i class={[styles.icon_member]}></i>
|
|
<i class={[styles.icon_member]}></i>
|
|
<span class={styles.icon_text}>
|
|
<span class={styles.icon_text}>
|
|
<i class={styles.bottom_line}></i>
|
|
<i class={styles.bottom_line}></i>
|
|
|
|
+ {/* 活动显示 */}
|
|
|
|
+ {activitData.vipCardId &&
|
|
|
|
+ activitData.vipType === 'SVIP' &&
|
|
|
|
+ activitData.extConfig?.title1 && (
|
|
|
|
+ <div class={styles.activitTip}>
|
|
|
|
+ {activitData.extConfig?.title1}
|
|
|
|
+ </div>
|
|
|
|
+ )}
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class={styles.svip_member_tip}></div>
|
|
<div class={styles.svip_member_tip}></div>
|
|
@@ -621,9 +730,17 @@ export default defineComponent({
|
|
state.selectMember = member
|
|
state.selectMember = member
|
|
}}
|
|
}}
|
|
>
|
|
>
|
|
- {/* 只有永久才会有数量提示 */}
|
|
|
|
- {member.period === 'PERPETUAL' && (
|
|
|
|
- <span class={[styles.iconPermanent]}></span>
|
|
|
|
|
|
+ {/* 有活动优先展示活动 */}
|
|
|
|
+ {activitData.vipCardId === member.id &&
|
|
|
|
+ activitData.extConfig?.title2 ? (
|
|
|
|
+ <div class={styles.activitTip1}>
|
|
|
|
+ {activitData.extConfig?.title2}
|
|
|
|
+ </div>
|
|
|
|
+ ) : (
|
|
|
|
+ /* 只有永久才会有数量提示 */
|
|
|
|
+ member.period === 'PERPETUAL' && (
|
|
|
|
+ <span class={[styles.iconPermanent]}></span>
|
|
|
|
+ )
|
|
)}
|
|
)}
|
|
|
|
|
|
<p class={styles.s_title}>
|
|
<p class={styles.s_title}>
|
|
@@ -660,9 +777,17 @@ export default defineComponent({
|
|
{/* 一条数据的样式 */}
|
|
{/* 一条数据的样式 */}
|
|
{state.memberShowList.map((member: any) => (
|
|
{state.memberShowList.map((member: any) => (
|
|
<div class={[styles['system-item']]}>
|
|
<div class={[styles['system-item']]}>
|
|
- {/* 只有永久才会有数量提示 */}
|
|
|
|
- {member.period === 'PERPETUAL' && (
|
|
|
|
- <span class={[styles.iconPermanent]}></span>
|
|
|
|
|
|
+ {/* 有活动优先展示活动 */}
|
|
|
|
+ {activitData.vipCardId === member.id &&
|
|
|
|
+ activitData.extConfig?.title2 ? (
|
|
|
|
+ <div class={styles.activitTip1}>
|
|
|
|
+ {activitData.extConfig?.title2}
|
|
|
|
+ </div>
|
|
|
|
+ ) : (
|
|
|
|
+ /* 只有永久才会有数量提示 */
|
|
|
|
+ member.period === 'PERPETUAL' && (
|
|
|
|
+ <span class={[styles.iconPermanent]}></span>
|
|
|
|
+ )
|
|
)}
|
|
)}
|
|
|
|
|
|
{member.discount === 1 && (
|
|
{member.discount === 1 && (
|