Files
dtx_store/components/foods/index.vue
唐明明 1c6091371e init
2022-06-07 16:37:03 +08:00

227 lines
6.7 KiB
Vue

<!--
* @Description:是添加早中晚餐时候用的视频列表
* @Author: Aimee·Zhang
* @Date: 2022-01-11 12:08:34
* @LastEditors: Aimee·Zhang
* @LastEditTime: 2022-01-20 10:03:43
-->
<template>
<view class="foods--lists">
<view
class="foods-lists"
v-for="foodsItem in lists"
:key="foodsItem.food_id"
>
<view class="lists-left">
<u-image
:src="foodsItem.cover?foodsItem.cover:require('../../static/imgs/apple.png')"
:lazy-load="true"
radius="10rpx"
width="100rpx"
height="100rpx"
class="goods-img"
/>
<!-- 只有'点' 点击食物列表-->
<view
class="lists-right"
v-if="type === 'dian'"
@click="addGoods(foodsItem)"
>
<view class="lists-title">
{{foodsItem.name}}
<view class="des"><span>{{foodsItem.calory}}</span> 千卡/100</view>
</view>
<view :class="['dian', foodsItem.color === 'high'?'dian2':foodsItem.color === 'low'?'dian3':'dian1']"></view>
</view>
<!-- '点''右箭头' -->
<view
class="lists-right"
v-else-if="type==='dian-right'"
@click="tabGoodsInfo(foodsItem)"
>
<view class="lists-title">
{{foodsItem.name}}
<view class="des"><span>{{foodsItem.calory}}</span> 千卡/100</view>
</view>
<view class="dianlists">
<view :class="['dian', foodsItem.color === 'high'?'dian2':foodsItem.color === 'low'?'dian3':'dian1']"></view>
<u-icon
name="arrow-right"
color="#ddd"
size="13"
:bold="true"
/>
</view>
</view>
<!-- 没有'点' 显示总值 -->
<view
class="lists-right"
v-else-if="type==='no-dian'"
@click.stop="editGoods(foodsItem)"
@longpress.stop="longClickGoods(foodsItem)"
>
<view class="lists-title">
{{foodsItem.name}}
<view class="des">{{foodsItem.weight}}</view>
</view>
<view class="lists-right1">
{{foodsItem.calory}}<span class="dw">千卡</span>
<u-icon
name="arrow-right"
color="#ddd"
size="13"
:bold="true"
/>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
props: {
/** type
* 'dian'就是结尾处是点;
* 没有点'no-dian'是默认值没有任何点
* dian-right是有点和右箭头
* ***********************
* lists 传过来的列表
*
**/
lists: {
type: Array,
default: [],
},
type: {
type: String,
default: "no-dian",
},
},
methods: {
// 跳转到食品详情页面
addGoods(item) {
this.$emit("addGoods", item);
},
// 跳转到食品详情
tabGoodsInfo(item) {
this.$emit("tabGoodsInfo", { title: item.name, id: item.food_id });
},
// 编辑食品
editGoods(item) {
this.$emit("editGoods", item);
},
// 长按删除
longClickGoods(item) {
this.$emit("longClickGoods", item);
},
},
};
</script>
<style lang="scss" scoped>
// 列表
.foods-lists {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
margin-top: $margin;
.lists-right {
flex: 1;
font-size: $title-size-m - 6;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
color: $text-gray-m;
border-bottom: solid 1rpx #f7f7f7;
margin-left: $margin * 0.8;
padding: $padding 0;
.dw {
margin: 0 $margin * 0.6 0 $margin * 0.4;
}
.lists-right1 {
font-size: $title-size-m - 6;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
box-sizing: border-box;
color: $text-gray-m;
font-weight: normal;
.dw {
margin: 0 $margin * 0.6 0 $margin * 0.4;
}
}
}
.goods-img {
box-shadow: 0 0 10rpx 4rpx rgba($color: $main-color, $alpha: 0.1);
border-radius: 20rpx;
}
.lists-left {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
box-sizing: border-box;
font-size: $title-size - 2;
color: $text-color;
font-weight: bold;
flex: 1;
.lists-title {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
box-sizing: border-box;
font-size: $title-size-m;
color: $text-color;
.des {
margin-top: 10rpx;
}
span {
color: $text-price;
font-size: $title-size-m - 6;
font-weight: normal;
padding-right: $padding * 0.3;
}
.des {
color: $text-gray-m;
font-size: $title-size-m - 6;
font-weight: normal;
}
}
}
.dian {
width: 20rpx;
height: 20rpx;
border-radius: 50%;
margin-right: $margin;
}
.dian1 {
background: #fbbf0f;
}
.dian2 {
background: #fa624d;
}
.dian3 {
background: #02c7bd;
}
.dianlists {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-end;
box-sizing: border-box;
}
}
</style>