| 
					
				 | 
			
			
				@@ -1,431 +1,446 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import request from '@/helpers/request'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { browser, moneyFormat } from '@/helpers/utils'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Swipe,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SwipeItem,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Image,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  CellGroup,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Cell,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ImagePreview,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  RadioGroup,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Radio,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Tag,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Row,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Col,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Sticky,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ActionBar,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ActionBarButton,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  ActionBarIcon,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Icon,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Badge,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Toast,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Popup,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  SubmitBar,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  Card
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} from 'vant'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { defineComponent } from 'vue'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import styles from './index.module.less'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconShopCart from '../images/icon-shop-cart.png'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import AddGoodsCart from '../modal/add-goods-cart'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import ColHeader from '@/components/col-header'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import iconShare from '../images/icon-share.svg'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import ColShare from '@/components/col-share'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { state } from '@/state'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { useEventTracking } from '@/helpers/hooks'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default defineComponent({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  name: 'goods-detail',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  data() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const query = this.$route.query
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      id: query.id,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      albumPics: [] as any[],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      product: {} as Record<string | number | symbol, any>,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      radio: 0,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      skuStockListTemp: [],
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      detailMobileHtml: '',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      loading: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      addGoodsShow: false,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      selectGoodsItem: {},
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      cartCount: 0,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      showType: 'cart',
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      shareShow: false // 分享弹窗
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  computed: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    skuStockList() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 处理规格
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const product = this.product
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const skuStockList: any =
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.skuStockListTemp.length > 0
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ? this.skuStockListTemp
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          : [
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                id: -1,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                price: product.price,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                pic: product.pic,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                stock: product.stock,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                spData: null
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      skuStockList.forEach((item: any) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (item.spData) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          const spData = JSON.parse(item.spData)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          item.spDataJson = spData.reduce((spDataJson, value) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            spDataJson += value.value
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return spDataJson
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }, '')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          item.sku = spData
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .reduce((sku, value) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              sku.push(`${value.key}: ${value.value}`)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              return sku
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }, [])
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .join(',')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          item.spDataJson = '默认'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return skuStockList
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    getPrice() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let item = this.skuStockList.filter(n => n.id == this.radio) as any
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (item && Array.isArray(item) && item.length) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return item[0].price
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return 0
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    shareUrl() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 分享链接
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const productId = this.product.id as any
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (browser().isApp) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return `${location.origin}/teacher/#/shareMall?bizId=${productId}&userId=${state.user.data.userId}&userType=${state.platformType}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return `${location.origin}/teacher.html#/shareMall?bizId=${productId}&userId=${state.user.data.userId}&userType=${state.platformType}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  async mounted() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.loading = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const res = await request.get(
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        `/api-mall-portal/product/detail/${this.id}`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.loading = false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const result = res.data || {}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.albumPics = [result.product.pic]
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .concat(result.product.albumPics.split(','))
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .filter(n => n)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.product = result.product
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.skuStockListTemp = result.skuStockList || []
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (this.skuStockListTemp.length) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let len = this.skuStockListTemp.length
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (let i = 0; i < len; i++) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let item = this.skuStockListTemp[i] as any
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (item.stock >= 0) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.radio = item.id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            break
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.detailMobileHtml = result.product.detailMobileHtml
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } catch {}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    this.getCartCount()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    useEventTracking('商品详情')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  methods: {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onPreview(index: number) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 图片预览
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ImagePreview({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        images: this.albumPics,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        startPosition: index,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        closeable: true,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        className: styles.imagesOverlayWrap
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onShowImg(target: any) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const { localName } = target.srcElement
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (localName !== 'img') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let startPosition = 0
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const domList = document.querySelectorAll('.msgWrap img')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let imgList = Array.from(domList).map((item: any, index: number) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (target.srcElement == item) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          startPosition = index
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return item.src
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ImagePreview({
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        images: imgList,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        startPosition: startPosition,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        closeable: true,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        className: styles.imagesOverlayWrap
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      })
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onShowCart(type = 'cart') {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.selectGoodsItem = {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        price: this.product.pic,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        stock: this.product.stock,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        skuStockList: this.skuStockListTemp.length
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ? this.skuStockListTemp
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          : undefined,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        brandName: this.product.brandName,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        productCategoryId: this.product.productCategoryId,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        name: this.product.name,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        productSn: this.product.productSn,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        productSubTitle: this.product.subTitle,
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        id: this.product.id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.showType = type
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 打开购物弹框
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      this.addGoodsShow = true
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    onBuy() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      // 购买
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!this.radio) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return Toast('请选择规格')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      console.log(true)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    async getCartCount() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      try {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let { code, data } = await request.get('/api-mall-portal/cart/list')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (code === 200) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          this.cartCount = data.length
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } catch (err) {}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  },
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  render() {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const product = this.product
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const selectSku = this.skuStockList.find((n: any) => n.id === this.radio)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const sharePic = this.product.pic + '?v=' + Date.now()
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      <div class={styles.goodsDetail}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <ColHeader
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          v-slots={{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            right: () => (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={styles.shareBtn}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={() => (this.shareShow = true)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <Icon name={iconShare} size={14} color="#666" />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <span style={{ marginLeft: '3px' }}>分享</span>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <Swipe
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          class={styles.swipe}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          lazyRender
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          v-slots={{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            indicator: (item: any) =>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              item.total > 1 && (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles['custom-indicator']}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  {(item.active || 0) + 1} / {item.total}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          {this.albumPics.map((item: string, index: number) => (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <SwipeItem>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <Image
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                class={styles.swipeItemImg}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                src={item}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={() => this.onPreview(index)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                fit="cover"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </SwipeItem>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ))}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </Swipe>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <CellGroup border={false} class={[styles.goodsHead, 'mb12']}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <Cell
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            center
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            border={false}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            v-slots={{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              title: () => (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles.priceGroup}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <span class={styles.price}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <i>¥</i>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    {moneyFormat(this.getPrice)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </span>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  {/* <del class={styles.delPrice}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ¥{moneyFormat(product.originalPrice)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </del> */}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // default: () => <div class={styles.stock}>销量4件</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <Cell
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            center
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            border={false}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            title={product.name}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            titleClass={[styles.goodsName, 'van-ellipsis']}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </CellGroup>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <Row class={[styles.row, 'mb12']}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <Col span={4} class={styles.col}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            规格
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </Col>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <Col span={20}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            {selectSku ? (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class={styles.selectWrap}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {selectSku.stock <= 0
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  ? `当前款式暂时缺货`
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  : `已选择 ${selectSku.spDataJson}`}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ) : (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div>请选择 规格</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            )}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <RadioGroup
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles['radio-group']}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              modelValue={this.radio}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onUpdate:modelValue={val => (this.radio = val)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              {this.skuStockList.map((item: any) => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const isActive = item.id === this.radio
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const type = isActive ? 'primary' : 'default'
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <Badge
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    position="top-right"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    content={item.stock <= 0 ? '缺货' : ''}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    color={'#999999'}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    class={styles.badge}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    offset={[-20, 0]}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <Radio
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      class={styles.radio}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      name={item.id}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      disabled={item.stock <= 0}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      onClick={() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        // 判断是否有库存
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (item.stock <= 0) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                          return
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        this.radio = item.id
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      <Tag size="large" plain={isActive} type={type}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        {item.spDataJson}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      </Tag>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    </Radio>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </Badge>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              })}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </RadioGroup>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </Col>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </Row>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {this.detailMobileHtml && (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <div class={[styles.section]}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div class={styles.detail}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <span>图文详情</span>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={[styles.photoDetail, 'msgWrap']}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              onClick={this.onShowImg}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              v-html={this.detailMobileHtml}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ></div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        )}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        {!this.loading && (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <SubmitBar
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              class={styles.actionBar}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              safe-area-inset-bottom
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              v-slots={{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                button: () => (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <div class={styles.buyGroup}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <ActionBarButton
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      type="primary"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      class={styles.addCertBtn}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      text="加入购物车"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      onClick={() => this.onShowCart()}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    <ActionBarButton
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      type="primary"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      text="立即购买"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      onClick={() => this.onShowCart('cartConfirm')}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <Badge
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                content={this.cartCount}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                showZero={false}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                onClick={() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  this.$router.push('/cart')
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <Icon name={iconShopCart} size={30} />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </Badge>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </SubmitBar>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        )}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <Popup
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          show={this.addGoodsShow}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          closeable
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          position="bottom"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          round
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          onClose={() => {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.addGoodsShow = false
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <AddGoodsCart
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            show={this.addGoodsShow}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            onGetCartCount={() => this.getCartCount()}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item={this.selectGoodsItem}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            defaultRadio={this.radio}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            showType={this.showType}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          />
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </Popup>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <Popup
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          style={{ background: 'transparent' }}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          show={this.shareShow}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          onClose={() => (this.shareShow = false)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          <ColShare
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            shareUrl={this.shareUrl}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            teacherId={state.user.data.userId}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            shareType="mall"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          >
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <div class={styles.shareWrap}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class={styles.shareLeft}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <img
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  crossorigin="anonymous"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  class={styles.sharePic}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  src={sharePic}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ></img>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              <div class={styles.shareRight}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles.shareShopTitle}>{this.product.name}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                {selectSku ? (
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <div class={styles.shareShopDes}>{selectSku.sku}</div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ) : null}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                <div class={styles.shareShopValue}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  <span class={styles.shareShopPrice}>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    {moneyFormat(this.getPrice)}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  </span>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              {/* <Card
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                price={this.getPrice}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                desc={selectSku.sku}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                title={this.product.name}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                thumb={this.product.pic}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              /> */}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          </ColShare>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        </Popup>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      </div>
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    )
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import request from '@/helpers/request' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { browser, moneyFormat } from '@/helpers/utils' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Swipe, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SwipeItem, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Image, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CellGroup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Cell, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ImagePreview, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  RadioGroup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Radio, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Tag, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Row, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Col, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Sticky, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ActionBar, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ActionBarButton, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ActionBarIcon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Icon, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Badge, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Toast, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Popup, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SubmitBar, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Card 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} from 'vant' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { defineComponent } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import styles from './index.module.less' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import iconShopCart from '../images/icon-shop-cart.png' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import AddGoodsCart from '../modal/add-goods-cart' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ColHeader from '@/components/col-header' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import iconShare from '../images/icon-share.svg' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ColShare from '@/components/col-share' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { state } from '@/state' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useEventTracking } from '@/helpers/hooks' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  name: 'goods-detail', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const query = this.$route.query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      id: query.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      albumPics: [] as any[], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      product: {} as Record<string | number | symbol, any>, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      radio: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      skuStockListTemp: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      detailMobileHtml: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      loading: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      addGoodsShow: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectGoodsItem: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cartCount: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showType: 'cart', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      shareShow: false // 分享弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  computed: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    skuStockList() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 处理规格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const product = this.product 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const skuStockList: any = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.skuStockListTemp.length > 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ? this.skuStockListTemp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          : [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                id: -1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                price: product.price, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pic: product.pic, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                stock: product.stock, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                spData: null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      skuStockList.forEach((item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (item.spData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const spData = JSON.parse(item.spData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.spDataJson = spData.reduce((spDataJson, value) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            spDataJson += value.value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return spDataJson 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }, '') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.sku = spData 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .reduce((sku, value) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              sku.push(`${value.key}: ${value.value}`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              return sku 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }, []) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            .join(',') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.spDataJson = '默认' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return skuStockList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getPrice() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const item = this.skuStockList.filter(n => n.id == this.radio) as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (item && Array.isArray(item) && item.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return item[0].price 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    shareUrl() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 分享链接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const productId = this.product.id as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (browser().isApp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return `${location.origin}/teacher/#/shareMall?bizId=${productId}&userId=${state.user.data.userId}&userType=${state.platformType}&p=tenant` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return `${location.origin}/teacher.html#/shareMall?bizId=${productId}&userId=${state.user.data.userId}&userType=${state.platformType}&p=tenant` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    platformStatus() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const userInfo = state.user.data as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 是机构学生 并且 是机构老师分享 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const query = this.$route.query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return userInfo.tenantId > 0 && query.p == 'tenant' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async mounted() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loading = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const res = await request.get( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        `/api-mall-portal/product/detail/${this.id}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.loading = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const result = res.data || {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.albumPics = [result.product.pic] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .concat(result.product.albumPics.split(',')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .filter(n => n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.product = result.product 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.skuStockListTemp = result.skuStockList || [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.skuStockListTemp.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const len = this.skuStockListTemp.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (let i = 0; i < len; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const item = this.skuStockListTemp[i] as any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (item.stock >= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.radio = item.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.detailMobileHtml = result.product.detailMobileHtml 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } catch {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this.getCartCount() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    useEventTracking('商品详情') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onPreview(index: number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 图片预览 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ImagePreview({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        images: this.albumPics, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startPosition: index, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        closeable: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        className: styles.imagesOverlayWrap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onShowImg(target: any) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const { localName } = target.srcElement 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (localName !== 'img') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let startPosition = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const domList = document.querySelectorAll('.msgWrap img') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const imgList = Array.from(domList).map((item: any, index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (target.srcElement == item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          startPosition = index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return item.src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ImagePreview({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        images: imgList, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        startPosition: startPosition, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        closeable: true, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        className: styles.imagesOverlayWrap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onShowCart(type = 'cart') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.selectGoodsItem = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        price: this.product.pic, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        stock: this.product.stock, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        skuStockList: this.skuStockListTemp.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ? this.skuStockListTemp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          : undefined, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        brandName: this.product.brandName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productCategoryId: this.product.productCategoryId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        name: this.product.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productSn: this.product.productSn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        productSubTitle: this.product.subTitle, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        id: this.product.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.showType = type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 打开购物弹框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.addGoodsShow = true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    onBuy() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 购买 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!this.radio) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return Toast('请选择规格') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    async getCartCount() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const { code, data } = await request.get('/api-mall-portal/cart/list') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.cartCount = data.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } catch (err) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  render() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const product = this.product 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const selectSku = this.skuStockList.find((n: any) => n.id === this.radio) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const sharePic = this.product.pic + '?v=' + Date.now() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <div class={styles.goodsDetail}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <ColHeader 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-slots={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            right: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class={styles.shareBtn} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                onClick={() => (this.shareShow = true)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <Icon name={iconShare} size={14} color="#666" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <span style={{ marginLeft: '3px' }}>分享</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Swipe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          class={styles.swipe} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          lazyRender 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-slots={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            indicator: (item: any) => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              item.total > 1 && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class={styles['custom-indicator']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {(item.active || 0) + 1} / {item.total} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          {this.albumPics.map((item: string, index: number) => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <Image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                class={styles.swipeItemImg} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                src={item} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                onClick={() => this.onPreview(index)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                fit="cover" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </SwipeItem> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Swipe> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <CellGroup border={false} class={[styles.goodsHead, 'mb12']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Cell 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-slots={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              title: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class={styles.priceGroup}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <span class={styles.price}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <i>¥</i> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {moneyFormat(this.getPrice)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  {/* <del class={styles.delPrice}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ¥{moneyFormat(product.originalPrice)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </del> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              // default: () => <div class={styles.stock}>销量4件</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Cell 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            border={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            title={product.name} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            titleClass={[styles.goodsName, 'van-ellipsis']} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </CellGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Row class={[styles.row, 'mb12']}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Col span={4} class={styles.col}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            规格 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </Col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <Col span={20}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            {selectSku ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.selectWrap}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {selectSku.stock <= 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ? `当前款式暂时缺货` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  : `已选择 ${selectSku.spDataJson}`} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) : ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div>请选择 规格</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <RadioGroup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class={styles['radio-group']} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              modelValue={this.radio} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onUpdate:modelValue={val => (this.radio = val)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {this.skuStockList.map((item: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const isActive = item.id === this.radio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const type = isActive ? 'primary' : 'default' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <Badge 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    position="top-right" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content={item.stock <= 0 ? '缺货' : ''} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    color={'#999999'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    class={styles.badge} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    offset={[-20, 0]} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <Radio 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class={styles.radio} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      name={item.id} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      disabled={item.stock <= 0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        // 判断是否有库存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (item.stock <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        this.radio = item.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      <Tag size="large" plain={isActive} type={type}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        {item.spDataJson} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      </Tag> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    </Radio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </Badge> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              })} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </RadioGroup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </Col> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Row> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {this.detailMobileHtml && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <div class={[styles.section]}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class={styles.detail}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <span>图文详情</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class={[styles.photoDetail, 'msgWrap']} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              onClick={this.onShowImg} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-html={this.detailMobileHtml} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ></div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        {!this.loading && ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <SubmitBar 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              class={styles.actionBar} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              safe-area-inset-bottom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              v-slots={{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                button: () => ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.buyGroup}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <ActionBarButton 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      class={styles.addCertBtn} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      text="加入购物车" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      disabled={this.platformStatus} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onClick={() => this.onShowCart()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    <ActionBarButton 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      text="立即购买" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      disabled={this.platformStatus} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      onClick={() => this.onShowCart('cartConfirm')} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <Badge 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                content={this.cartCount} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                showZero={false} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                onClick={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (this.platformStatus) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  this.$router.push('/cart') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <Icon 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  name={iconShopCart} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  size={30} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class={this.platformStatus && styles.cartDisabled} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </Badge> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </SubmitBar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        )} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Popup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          show={this.addGoodsShow} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          closeable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          position="bottom" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          round 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          onClose={() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.addGoodsShow = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <AddGoodsCart 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            show={this.addGoodsShow} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            onGetCartCount={() => this.getCartCount()} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item={this.selectGoodsItem} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            defaultRadio={this.radio} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            showType={this.showType} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Popup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Popup 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          style={{ background: 'transparent' }} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          show={this.shareShow} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          onClose={() => (this.shareShow = false)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <ColShare 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            shareUrl={this.shareUrl} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherId={state.user.data.userId} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            shareType="mall" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <div class={styles.shareWrap}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.shareLeft}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  crossorigin="anonymous" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  class={styles.sharePic} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  src={sharePic} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ></img> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <div class={styles.shareRight}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class={styles.shareShopTitle}>{this.product.name}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                {selectSku ? ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <div class={styles.shareShopDes}>{selectSku.sku}</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) : null} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                <div class={styles.shareShopValue}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  <span class={styles.shareShopPrice}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    {moneyFormat(this.getPrice)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              {/* <Card 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                price={this.getPrice} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                desc={selectSku.sku} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                title={this.product.name} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                thumb={this.product.pic} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              /> */} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </ColShare> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Popup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 |