1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { Icon, Image } from 'vant'
- import { defineComponent } from 'vue'
- import styles from './index.module.less'
- import iconAddCart from '../../images/icon-add-cart.png'
- import iconSellOut from '../../images/icon-sell-out.png'
- import { moneyFormat } from '@/helpers/utils'
- export default defineComponent({
- name: 'goods',
- props: {
- showAdd: {
- type: Boolean,
- default: true
- },
- item: {
- type: Object,
- default: {}
- },
- onItemClick: {
- type: Function,
- default: (item: any) => {}
- },
- onBuyClick: {
- type: Function,
- default: (item: any) => {}
- }
- },
- render() {
- const item = this.item
- return (
- <div class={styles.goods} onClick={() => this.onItemClick(item)}>
- <div class={styles.goodsSection}>
- <Image src={item.pic} fit="cover" class={styles.goodsImg} />
- {item.stock <= 0 && (
- <div class={styles.sellOut}>
- <Image src={iconSellOut} fit="cover" class={styles.sellOutImg} />
- </div>
- )}
- </div>
- <div class={styles.goodsInfo}>
- <div class={[styles.goodsName, 'van-ellipsis']}>{item.name}</div>
- <div class={styles.goodsBuy}>
- {/* <del class={styles.goodsSale}>
- ¥{moneyFormat(item.originalPrice)}
- </del> */}
- <p class={styles.goodsPrice}><span class={styles.pre}>¥</span>{moneyFormat(item.price)}</p>
- {this.showAdd && (
- <Icon
- class={[
- styles.addCart,
- item.stock <= 0 && styles.addCartDisabled
- ]}
- name={iconAddCart}
- size={22}
- onClick={(e: MouseEvent) => {
- e.stopPropagation()
- item.stock > 0 && this.onBuyClick(item)
- }}
- />
- )}
- </div>
- </div>
- </div>
- )
- }
- })
|