uni-app 求助大佬开发类似奶茶点餐组件 左侧商品分类右侧分类下商品 支持二级分类

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app 求助大佬开发类似奶茶点餐组件 左侧商品分类右侧分类下商品 支持二级分类

求助大佬,开发一个类似奶茶点餐的组件,左侧为商品分类,右测是分类下的商品(如果是二级,那右侧应该是 上边是二级的分类,下边对应商品),酬谢, 或者各位大佬有没现成可以用的,推荐一下。这个有奶茶点餐系统,但是因为我这边的商品很多,要分页加载

1 回复

了解你的需求后,以下是一个简单的示例代码,用于在 uni-app 中创建一个类似奶茶点餐的组件,左侧显示商品分类,右侧显示分类下的商品,并支持二级分类。这个示例使用了 uni-app 的基础组件和样式,你可以根据需要进行进一步的自定义和扩展。

1. 数据结构

首先,定义数据结构,包括分类和商品信息:

data() {
    return {
        categories: [
            {
                id: 1,
                name: '奶茶',
                subCategories: [
                    {
                        id: 11,
                        name: '原味奶茶',
                        products: [
                            { id: 111, name: '小杯原味奶茶', price: 10 },
                            { id: 112, name: '大杯原味奶茶', price: 15 }
                        ]
                    },
                    {
                        id: 12,
                        name: '珍珠奶茶',
                        products: [
                            { id: 121, name: '小杯珍珠奶茶', price: 12 },
                            { id: 122, name: '大杯珍珠奶茶', price: 17 }
                        ]
                    }
                ]
            },
            // 更多分类...
        ],
        selectedCategoryId: null,
        selectedSubCategoryId: null
    };
}

2. 模板

接下来,在模板中渲染分类和商品:

<view class="container">
    <view class="categories">
        <view
            v-for="category in categories"
            :key="category.id"
            class="category"
            @click="selectCategory(category.id)"
        >
            {{ category.name }}
        </view>
    </view>
    <view class="products" v-if="selectedCategoryId">
        <view
            v-for="subCategory in getSelectedSubCategories"
            :key="subCategory.id"
            class="sub-category"
            @click="selectSubCategory(subCategory.id)"
        >
            {{ subCategory.name }}
        </view>
        <view class="product-list" v-if="selectedSubCategoryId">
            <view
                v-for="product in getSelectedProducts"
                :key="product.id"
                class="product"
            >
                {{ product.name }} - ¥{{ product.price }}
            </view>
        </view>
    </view>
</view>

3. 方法

在方法中实现分类和子分类的选择逻辑:

methods: {
    selectCategory(id) {
        this.selectedCategoryId = id;
        this.selectedSubCategoryId = null;
    },
    selectSubCategory(id) {
        this.selectedSubCategoryId = id;
    },
    getSelectedSubCategories() {
        return this.categories.find(c => c.id === this.selectedCategoryId).subCategories;
    },
    getSelectedProducts() {
        return this.getSelectedSubCategories.find(sc => sc.id === this.selectedSubCategoryId).products;
    }
}

4. 样式

最后,添加一些基础样式:

<style>
.container {
    display: flex;
}
.categories, .products {
    width: 50%;
    padding: 10px;
}
.category, .sub-category {
    margin: 5px 0;
    padding: 10px;
    background-color: #f0f0f0;
    border-radius: 5px;
}
.product {
    margin: 5px 0;
}
</style>

这个示例提供了一个基础框架,你可以根据实际需求进行扩展和美化。

回到顶部