更新记录

1.0.0(2025-11-15) 下载此版本

首次发布


平台兼容性

uni-app(3.6.14)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Chrome插件版本 Safari Safari插件版本 app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本
√ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 5.0 1.0.0 12 1.0.0 √ 1.0.0
微信小程序 微信小程序插件版本 支付宝小程序 支付宝小程序插件版本 抖音小程序 抖音小程序插件版本 百度小程序 百度小程序插件版本 快手小程序 快手小程序插件版本 京东小程序 京东小程序插件版本 鸿蒙元服务 鸿蒙元服务插件版本 QQ小程序 QQ小程序插件版本 飞书小程序 飞书小程序插件版本 小红书小程序 快应用-华为 快应用-华为插件版本 快应用-联盟 快应用-联盟插件版本
√ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 √ 1.0.0 - √ 1.0.0 √ 1.0.0

uni-app x(3.6.14)

Chrome Chrome插件版本 Safari Safari插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 鸿蒙插件版本 微信小程序 微信小程序插件版本
√ 1.0.0 √ 1.0.0 5.0 1.0.0 12 1.0.0 √ 1.0.0 √ 1.0.0

其他

多语言 暗黑模式 宽屏模式
√ √ √

hy-cascade-select

外卖级联选择组件,基于UTS开发,支持左右分类选择,适用于外卖、电商等场景。

基本用法

<template>
    <hy-cascade-select
        :categories="categories"
        :products="products"
        :cartItems="cartItems"
        @categoryChange="onCategoryChange"
        @productClick="onProductClick"
        @addToCart="onAddToCart"
        @removeFromCart="onRemoveFromCart"
    />
</template>

<script>
export default {
    data() {
        return {
            categories: [
                { id: 1, name: "分类1" },
                { id: 2, name: "分类2" }
            ],
            products: [
                { id: 1, name: "商品1", price: 10, categoryId: 1 }
            ],
            cartItems: []
        }
    },
    methods: {
        onCategoryChange(category) {
            console.log('分类切换:', category)
        },
        onProductClick(product) {
            console.log('商品点击:', product)
        },
        onAddToCart(product) {
            console.log('添加到购物车:', product)
        },
        onRemoveFromCart(product) {
            console.log('从购物车移除:', product)
        }
    }
}
</script>

## 自定义插槽示例

```vue
<template>
    <hy-cascade-select
        :categories="categories"
        :products="products"
        :cart-items="cartItems"
    >
        <!-- 自定义分类项 -->
        <template #category="{ category, active }">
            <view class="custom-category">
                <text :class="{ active }">{{ category.name }}</text>
                <text v-if="category.badge" class="badge">{{ category.badge }}</text>
            </view>
        </template>

        <!-- 自定义商品项 -->
        <template #product="{ product, cartCount }">
            <view class="custom-product">
                <image :src="product.image" class="thumb" />
                <view class="info">
                    <text class="name">{{ product.name }}</text>
                    <text class="price">¥{{ product.price }}</text>
                </view>
                <text v-if="cartCount > 0" class="count">{{ cartCount }}</text>
            </view>
        </template>

        <!-- 自定义空状态 -->
        <template #empty-product>
            <view class="custom-empty">
                <image src="/static/empty.png" />
                <text>暂时没有商品哦~</text>
            </view>
        </template>
    </hy-cascade-select>
</template>

## API

### Props

| 参数 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| categories | Array<CategoryItem> | [] | 分类数据 |
| products | Array<ProductItem> | [] | 商品数据 |
| cartItems | Array<ProductItem> | [] | 购物车数据(用于统计数量/库存) |
| leftWidth | String | `200rpx` | 左侧分类区域宽度 |
| rightColumns | Number | `2` | 右侧商品栅格列数 |
| showCount | Boolean | `false` | 是否展示分类下商品数量 |
| emptyCategoryText | String | `暂无分类` | 分类为空时的提示文案 |
| emptyProductText | String | `暂无商品` | 商品为空时的提示文案 |
| currencySymbol | String | `¥` | 价格符号(支持自定义货币) |
| autoCount | Boolean | `true` | 是否根据商品列表自动计算分类数量 |
| enableStockCheck | Boolean | `true` | 是否启用库存校验并限制加购 |
| productImageMode | String | `aspectFill` | 商品图片 `mode` 值 |
| categoryItemClass | String | `''` | 分类项自定义类名 |
| categoryItemStyle | String/Object | `''` | 分类项自定义样式 |
| productItemClass | String | `''` | 商品项自定义类名 |
| productItemStyle | String/Object | `''` | 商品项自定义样式 |
| activeColor | String | `#007aff` | 激活态颜色 |
| priceColor | String | `#ff6b35` | 价格颜色 |

### Events

| 事件名 | 参数 | 说明 |
| --- | --- | --- |
| categoryChange | category | 分类切换事件 |
| productClick | product | 商品点击事件 |
| addToCart | product | 添加到购物车 |
| removeFromCart | product | 从购物车移除 |
| stockLimit | product | 触发库存上限提示(`enableStockCheck` 为 `true` 时生效) |

### Slots

| 插槽名 | 参数 | 说明 |
| --- | --- | --- |
| category | `{ category, index, active }` | 自定义分类项内容 |
| product | `{ product, index, soldOut, cartCount }` | 自定义商品项内容 |
| empty-category | - | 自定义分类为空时的内容 |
| empty-product | - | 自定义商品为空时的内容 |

### 数据结构

```CategoryItem

interface CategoryItem {
    id: string | number
    name: string
    count?: number
    active?: boolean
}

interface ProductItem {
    id: string | number
    name: string
    price: number
    image?: string
    description?: string
    categoryId: string | number
    count?: number
    stock?: number
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。