|
|
- <template>
- <view class="item" @click="$emit('click')">
- <!-- 商品图片 -->
- <view class="item-image">
- <!-- <image :src="item.image &&
- item.image.split(',')[0]" mode="aspectFill">
- </image> -->
- <image :src="item.image" mode="aspectFill" class="item-image-img">
- </image>
- </view>
-
- <!-- 商品信息 -->
- <view class="info">
- <!-- 商品标题 -->
- <view class="title">
- {{ item.title }}
- </view>
-
- <!-- 价格 -->
- <!-- <view class="price">
- <view class="money">
- ¥<text>{{ getPriceByRole(item) }}</text>
- <text class="unit">/元每件</text>
- </view>
- <view class="price-imgs">
- <image v-if="userInfo.role == 1" :src="configList.vip_money_one" mode="aspectFill" class="price-img">
- </image>
- <image v-if="userInfo.role == 2" :src="configList.vip_money_two" mode="aspectFill" class="price-img">
- </image>
- <image v-if="userInfo.role == 3" :src="configList.vip_money_three" mode="aspectFill"
- class="price-img"></image>
- </view>
- </view> -->
-
- <!-- 价格区 -->
- <!-- <view class="price-section">
- <view class="price">
- <view class="money">
- ¥<text>{{ item.price }}</text>
- <text class="unit">/元每件</text>
- </view>
- <view class="oldPrice">
- ¥<text>{{ item.oldPrice }}</text>
- <text class="unit">/元</text>
- </view>
- </view>
-
- <view class="oldPrice">
- <view class="money">
- ¥<text>{{ item.oldPrice }}</text>
- <text class="unit">/元每件</text>
- </view>
- <view class="price-imgs">
- </view>
- </view>
-
- <view class="member-price">
- <view class="price">
- <view class="money">
- ¥<text>{{ item.silverPrice }}</text>
- <text class="unit">/元每件</text>
- </view>
- <view class="price-imgs">
- <image :src="configList.vip_money_one" mode="aspectFill" class="price-img">
- </image>
- </view>
- </view>
-
- <view class="price">
- <view class="money">
- ¥<text>{{ item.goldPrice }}</text>
- <text class="unit">/元每件</text>
- </view>
- <view class="price-imgs">
- <image :src="configList.vip_money_two" mode="aspectFill"
- class="price-img"></image>
- </view>
- </view>
-
- <view class="price">
- <view class="money">
- ¥<text>{{ item.diamondPrice }}</text>
- <text class="unit">/元每件</text>
- </view>
- <view class="price-imgs">
- <image :src="configList.vip_money_three" mode="aspectFill" class="price-img">
- </image>
- </view>
- </view>
- </view>
- </view> -->
-
- <!-- 销量 -->
- <view class="sales-volume">
- <view class="sales-volume-imgbox">
- <image src="@/static/image/category/sales-volume-icon.png" mode="widthFix" class="sales-volume-img">
- </image>
- </view>
-
- <view class="sales-volume-number">
- 已售出{{ item.sales }}单
- </view>
- </view>
-
- <!-- 价格 -->
- <view :style="{ color: '#FF2A2A'}">
- <text style="font-size: 18rpx;">¥</text><text style="font-size: 30rpx;">{{ item.price }}</text>
- </view>
-
- <!-- 购买按钮 -->
- <view class="" style="display: flex;justify-content: space-between;">
- <view @click.stop="purchase(item.id)" class="buy-btn buy-order">
- 立即下单
- </view>
-
- <view @click.stop="addCart(item)" class="buy-btn">
- <uv-badge type="error" max="9" :value="1" absolute :offset="[-10, 1]" bg-color="#FF2A2A"></uv-badge>
- 加购物车
- </view>
- </view>
- </view>
- </view>
- </template>
-
- <script>
- import {
- mapState
- } from 'vuex'
-
- export default {
- props: {
- item: {
- default: {}
- }
- },
- computed: {
- ...mapState(['userInfo'])
- },
- data() {
- return {
- }
- },
- mounted() {
- console.log('商品项数据:', this.item);
- },
- methods: {
- // 购买商品(创建订单)
- purchase(id) {
- this.$api('getRiceProductDetail', {
- id
- }, res => {
- if (res.code == 200) {
- res.result.num = 1
- this.$store.commit('setPayOrderProduct', [
- res.result
- ])
- this.$utils.navigateTo('/pages_order/order/createOrder')
- }
- })
- },
- // 加入购物车
- addCart(item){
- uni.showLoading({
- title: '加载中...'
- })
- this.$api('addShopcar', {
- goodsId : item.id,
- num : 1,
- }, res => {
- uni.hideLoading()
- if(res.code == 200){
- uni.showToast({
- title: '加入购物车成功',
- icon: 'none',
- duration: 1000
- })
- }
- })
- },
-
- //根据角色获取对应价格
- getPriceByRole(item) {
- let priceFiledList = ['goldPrice','silverPrice','diamondPrice']
- let price = item[priceFiledList[this.userInfo.role - 1]]
-
- return price >= 0 ? price : item.price
- }
- },
- onload() {
- console.log(props.item);
- }
- }
- </script>
-
- <style scoped lang="scss">
- .item {
- width: 92%;
- margin: 20rpx auto;
- padding: 20rpx 10rpx;
- align-items: center;
- display: flex;
- box-sizing: border-box;
- border-bottom: 1rpx solid #00000012;
- background: white;
- border-radius: 10rpx;
- // margin-bottom: 20rpx;
- // box-shadow: 0 2rpx 10rpx rgba(0,0,0,0.05);
-
- // 商品图片
- .item-image {
- width: 200rpx;
- height: 200rpx;
-
- overflow: hidden;
-
- image {
- height: 100%;
- width: 100%;
- }
- }
-
- // 商品信息
- .info {
- // height: 220rpx;
- padding: 15rpx 0rpx 15rpx 15rpx;
- color: #555;
- width: calc(100% - 200rpx);
- box-sizing: border-box;
- overflow: hidden;
- display: flex;
- flex-direction: column;
- gap: 4rpx;
- // 商品标题
- .title {
- font-size: 30rpx;
- font-weight: bold;
- overflow: hidden; //超出的文本隐藏
- text-overflow: ellipsis; //溢出用省略号显示
- white-space: nowrap; //溢出不换行
- color: #333;
- margin-bottom: 5rpx;
- }
- .price-section {
- display: flex;
- flex-direction: column;
- gap: 6rpx;
- }
-
- // 价格
- .price {
- display: flex;
- align-items: center;
- color: #f40;
- font-size: 24rpx;
- align-items: flex-end;
-
- .money {
- font-size: 30rpx;
- font-weight: 600;
-
- .unit {
- font-size: 18rpx;
- font-weight: normal;
- margin-left: 2rpx;
- }
- }
-
- .price-imgs {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
-
- .price-img {
- width: 70rpx;
- height: 26rpx;
- margin-left: 8rpx;
- }
- }
- }
- .oldPrice{
- color: #999;
- font-size: 20rpx;
- text-decoration: line-through;
- margin-left: 8rpx;
- }
- .member-price {
- display: flex;
- flex-direction: column;
- gap: 4rpx;
- margin-top: 4rpx;
- padding-top: 6rpx;
- border-top: 1rpx dashed #eee;
- .money {
- font-size: 26rpx;
-
- .unit {
- font-size: 18rpx;
- }
- }
-
- .price-imgs {
- display: flex;
- flex-wrap: wrap;
-
- .price-img {
- width: 70rpx;
- height: 26rpx;
- margin-left: 8rpx;
- }
- }
- }
-
- // 销量
- .sales-volume {
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- margin-top: 2rpx;
-
- .sales-volume-imgbox {
- width: 18rpx;
-
- .sales-volume-img {
- width: 100%;
- }
- }
-
- .sales-volume-number {
- color: #999;
- font-size: 24rpx;
- padding-left: 8rpx;
- }
- }
-
- // 购买按钮
- .buy-btn {
- background: $uni-color;
- color: white;
- display: inline-block;
- padding: 10rpx 24rpx;
- border-radius: 10rpx;
- width: fit-content;
- font-size: 23rpx;
- font-weight: 500;
- box-shadow: 0 2rpx 6rpx rgba(255,68,0,0.2);
- transition: all 0.3s;
- margin-top: 4rpx;
- position: relative;
- }
-
- .buy-order{
- background: inherit;
- border: 3rpx solid $uni-color;
- color: $uni-color;
- }
- }
- }
- </style>
|