<template>
	<view class="product-card" @click="goDetail">
		<image class="product-card__image" :src="imgSrc()" mode="aspectFill" />
		<view class="product-card__info">
			<text class="product-card__name">{{ product.name }}({{ product.styleNo }})</text>
			<view class="product-card__bottom">
				<view class="product-card__price-tag">
					<text class="product-card__price">¥{{ product.basePrice }}</text>
				</view>
				<text class="product-card__stock">库存{{ product.stock }}</text>
			</view>
		</view>
	</view>
</template>

<script setup lang="ts">
	import type { Product } from '../types'
	import { BASE_URL } from '../utils/request'

	const props = defineProps<{ product : Product }>()

	function imgSrc() : string {
		const url = props.product.thumb || props.product.bannerImages?.[0]
		if (!url) return '/static/logo.png'
		if (url.startsWith('http')) return url
		return BASE_URL + url
	}
	function goDetail() {
		uni.navigateTo({ url: `/pages/product/detail?id=${props.product.id}` })
	}
</script>

<style scoped>
	.product-card {
		display: flex;
		flex-direction: column;
		background: #fff;
		border-radius: 16rpx;
		overflow: hidden;
		width: 100%;
	}

	.product-card__image {
		width: 100%;
		height: 340rpx;
	}

	.product-card__info {
		padding: 16rpx 20rpx 20rpx;
	}

	.product-card__name {
		font-size: 26rpx;
		color: #333;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
		display: block;
		line-height: 1.5;
	}

	.product-card__bottom {
		display: flex;
		justify-content: space-between;
		align-items: center;
		margin-top: 12rpx;
	}

	.product-card__price-tag {
		background: linear-gradient(135deg, #f5a0b8, #FF6D9B);
		border-radius: 8rpx;
		padding: 4rpx 16rpx;
	}

	.product-card__price {
		font-size: 28rpx;
		color: #fff;
		font-weight: bold;
	}

	.product-card__stock {
		font-size: 22rpx;
		color: #999;
	}
</style>