<template>
    <view class="member-wrapper">
        <!-- 成员基本信息 -->
        <view class="member-item">
            <view class="member-avatar">
                <image :src="member.avatar" mode="aspectFill" />
            </view>
            <view class="member-info">
                <text class="member-name">{{ member.name }}</text>
            </view>
            <view class="check-food-btn" @click="toggleExpand">
                <text>{{ isExpanded ? '收起餐点' : '查看餐点' }}</text>
                <uv-icon :name="isExpanded ? 'arrow-up' : 'arrow-down'" color="#019245" size="30rpx"></uv-icon>
            </view>
        </view>

        <!-- 餐点列表展开区域 - 使用v-if替代uv-transition -->
        <view class="food-detail" v-if="isExpanded">
            <view class="fold-handle" @click="toggleExpand">
                <uv-icon name="arrow-up" color="#999" size="24rpx"></uv-icon>
                <text class="fold-text">点击收起</text>
            </view>
            <view class="food-list">
                <view class="food-item" v-for="(food, index) in member.food" :key="index">
                    <view class="food-left">
                        <image class="food-image" :src="food.image" mode="aspectFill"></image>
                        <view class="food-info">
                            <text class="food-name">{{ food.name }}</text>
                            <view class="food-sold">
                                <uv-icon name="checkmark-circle" color="#ccc" size="24rpx"></uv-icon>
                                <text>已售出 {{ food.sold }}单</text>
                            </view>
                        </view>
                    </view>
                    <view class="food-right">
                        <text class="food-price">¥{{ food.price.toFixed(2) }}</text>
                        <text class="food-quantity">×{{ food.quantity }}</text>
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>

<script>
export default {
    name: 'MemberFoodItem',
    props: {
        // 成员信息，包含头像、姓名和餐点列表
        member: {
            type: Object,
            required: true
        },
        // 是否默认展开
        defaultExpanded: {
            type: Boolean,
            default: false
        }
    },
    data() {
        return {
            isExpanded: false
        }
    },
    created() {
        // 初始化展开状态
        this.isExpanded = this.defaultExpanded;
    },
    methods: {
        // 切换展开/收起状态
        toggleExpand() {
            this.isExpanded = !this.isExpanded;
            // 触发事件，通知父组件状态变化
            this.$emit('toggle', {
                member: this.member,
                expanded: this.isExpanded
            });
        }
    }
}
</script>

<style lang="scss" scoped>
.member-wrapper {
    margin-bottom: 20rpx;
    border-radius: 10rpx;
    overflow: hidden;

    .member-item {
        display: flex;
        align-items: center;
        background-color: #fff;
        padding: 30rpx 20rpx;

        .member-avatar {
            width: 70rpx;
            height: 70rpx;
            margin-right: 20rpx;

            image {
                width: 100%;
                height: 100%;
                border-radius: 10rpx;
            }
        }

        .member-info {
            flex: 1;

            .member-name {
                font-size: 30rpx;
                font-weight: 500;
            }
        }

        .check-food-btn {
            border: 2rpx solid $uni-color;
            border-radius: 30rpx;
            display: flex;
            align-items: center;
            color: $uni-color;
            font-size: 28rpx;
            padding: 10rpx 20rpx;
            gap: 10rpx;
            transition: all 0.3s;

            &:active {
                opacity: 0.8;
                transform: scale(0.98);
            }
        }
    }

    .food-detail {
        background-color: #fff;
        padding: 20rpx;
        box-shadow: inset 0 4rpx 8rpx rgba(0, 0, 0, 0.05);

        .fold-handle {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 10rpx 0;
            margin-bottom: 10rpx;
            border-bottom: 1px dashed #eeeeee;

            .fold-text {
                font-size: 24rpx;
                color: #999;
                margin-left: 10rpx;
            }

            &:active {
                opacity: 0.8;
            }
        }

        .food-list {
            .food-item {
                display: flex;
                justify-content: space-between;
                align-items: center;
                padding: 15rpx 0;
                border-bottom: 1px solid #f5f5f5;

                &:last-child {
                    border-bottom: none;
                }

                .food-left {
                    display: flex;
                    align-items: center;

                    .food-image {
                        width: 100rpx;
                        height: 100rpx;
                        border-radius: 8rpx;
                        margin-right: 15rpx;
                    }

                    .food-info {
                        .food-name {
                            font-size: 28rpx;
                            color: #333;
                            margin-bottom: 10rpx;
                            display: block;
                        }

                        .food-sold {
                            display: flex;
                            align-items: center;
                            font-size: 24rpx;
                            color: #999;

                            text {
                                margin-left: 4rpx;
                            }
                        }
                    }
                }

                .food-right {
                    text-align: right;

                    .food-price {
                        font-size: 28rpx;
                        color: #f00;
                        display: block;
                        margin-bottom: 10rpx;
                    }

                    .food-quantity {
                        font-size: 24rpx;
                        color: #333;
                        display: block;
                    }
                }
            }
        }
    }
}
</style>