123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- import { fetchProductDetail } from '@/services/api/goods.js'
- import { fetchCouponListByProductId } from '@/services/api/coupon.js'
- import store from '@/store/index.js'
- /* 获取产品活动类型 (拼团 活动价 限时特价) */
- export function generateActivityType(productData) {
- const { collageStatus = 0, activeStatus = 0, discountStatus = 0 } = productData
- // 拼团价
- if (collageStatus > 0) {
- return 'group' // 拼团价
- }
- // 限时活动
- else if (discountStatus > 0) {
- return 'time-limit'
- }
- // 普通活动价
- else if (activeStatus > 0) {
- return 'activity'
- }
- // 普通商品
- return 'normal' // 普通价
- }
- /* 获取产品价格类型 */
- export function generatePriceType(productData) {
- const { couponStatus = 0, collageStatus = 0, activeStatus = 0, discountStatus = 0, couponId } = productData
- // 拼团价
- if (collageStatus > 0) {
- if (couponStatus === 1 && couponId) {
- return 'groupWithCoupon' // 拼团券后价
- } else {
- return 'group' // 拼团价
- }
- }
- // 限时活动
- else if (discountStatus > 0 || activeStatus > 0) {
- if (couponStatus === 1 && couponId) {
- return 'activityWithCoupon' // 券后价
- } else {
- return 'normal' // 限时活动价格
- }
- }
- // 无活动价
- else {
- if (couponStatus === 1 && couponId) {
- return 'normalWithCoupon' // 普通券后价
- } else {
- return 'normal' // 普通价
- }
- }
- }
- /* 导航栏按钮类别 */
- const navbarButtonGroup = {
- // 仅拼团
- group: {
- left: ['单独购买', '¥1000.00'],
- right: ['拼团购买', '¥1000.00']
- },
- // 拼团 + 优惠券
- groupWithCoupon: {
- left: ['领券单独购买', '¥1000.00'],
- right: ['领券拼团购买', '¥1000.00']
- },
- // 限时活动 / 活动价 + 优惠券
- activityWithCoupon: {
- left: ['加入购物车'],
- right: ['领券购买', '¥1000.00']
- },
- // 限时活动 / 活动价 + 优惠券
- normalWithCoupon: {
- left: ['加入购物车'],
- right: ['领券购买', '¥1000.00']
- },
- // 普通方式 不使用优惠券
- normal: {
- left: ['加入购物车'],
- right: ['立即购买']
- }
- }
- /* 导航按钮文本 */
- export function generateNavbarButtonText(productData) {
- const { priceType } = productData
- const navbarButton = navbarButtonGroup[priceType]
- // 拼团券后价购买
- if (priceType === 'groupWithCoupon') {
- navbarButton.left[1] = `¥${productData.normalCouponPrice.toFixed(2)}`
- navbarButton.right[1] = `¥${productData.couponPrice.toFixed(2)}`
- }
- // 拼团价购买
- else if (priceType === 'group') {
- navbarButton.left[1] = `¥${productData.normalPrice.toFixed(2)}`
- navbarButton.right[1] = `¥${productData.price.toFixed(2)}`
- }
- // 活动价券后价购买(限时特价|普通活动)
- else if (priceType === 'activityWithCoupon') {
- navbarButton.right[1] = `¥${productData.couponPrice.toFixed(2)}`
- }
- // 普通价券后价购买
- else if (priceType === 'normalWithCoupon') {
- navbarButton.right[1] = `¥${productData.couponPrice.toFixed(2)}`
- } else {
- navbarButton.right[1] = ''
- }
- return navbarButton
- }
- /* 生成导航菜单类型 */
- export function generateNavbarType(productInfo) {
- const { couponStatus = 0, collageStatus = 0, activeStatus = 0, discountStatus = 0 } = productInfo
- // 拼团价
- if (collageStatus > 0) {
- if (couponStatus === 1) {
- return 'groupWithCoupon' // 拼团券后价
- } else {
- return 'group' // 拼团价
- }
- }
- // 限时活动
- else if (discountStatus > 0 || activeStatus > 0) {
- if (couponStatus === 1) {
- return 'activityWithCoupon' // 券后价
- } else {
- return 'normal' // 限时活动价格
- }
- }
- // 无活动价
- else {
- if (couponStatus === 1) {
- return 'normalWithCoupon' // 普通券后价
- } else {
- return 'normal' // 普通价
- }
- }
- }
- /* 处理商品信息 */
- function generateProductInfo(product) {
- if (!product) return product
- // 商品活动类型
- product.activityType = generateActivityType(product)
- product.priceType = generatePriceType(product)
- product.skus = product.skus.map(sku => {
- sku.activityType = generateActivityType(sku)
- sku.priceType = generatePriceType(sku)
- return sku
- })
- return product
- }
- /* 创建优惠券 */
- function generateCoupon(coupon) {
- const obj = Object.assign({}, coupon)
- // 添加标题
- if (coupon.noThresholdFlag > 0) {
- obj.couponTitle = `减¥${coupon.couponAmount}元`
- } else {
- obj.couponTitle = `满¥${coupon.touchPrice}元减¥${coupon.couponAmount}元`
- }
- // 添加优惠券状态
- if (obj.useStatus === 0) {
- obj.controlType = 'receive'
- } else if (obj.useStatus === 1) {
- obj.couponStatus = 'received'
- obj.controlType = 'search'
- }
- return obj
- }
- /* 获取商品详情 */
- export async function fetchPorductInfo(productId) {
- try {
- const userId = store.getters.userId
- const res = await fetchProductDetail({ productId, userId })
- return generateProductInfo(res.data)
- } catch (e) {
- console.log(e)
- }
- }
- /* 获取商品可用优惠券 */
- export async function fetchCouponListByProduct(productId) {
- try {
- const userId = store.getters.userId
- const res = await fetchCouponListByProductId({ productId, userId })
- return res.data.map(coupon => generateCoupon(coupon))
- } catch (e) {
- console.log(e)
- }
- }
|