|  | @@ -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 && (
 |