更新记录
1.6.7(2026-09-27)
修复
z-navbar:搜索框输入报「Assignment to constant variable.」——uni 编译下模板内联赋值 ref 会直接对 const 闭包变量赋值,改为 handler 处理z-area:H5 端报「Invalid prop: custom validator check failed for prop mode」且无选项——uni-h5 的 picker 明确不支持 region 模式(框架源码注明「暂不支持城市选择」)。H5 端自动回退为内置省市两级级联选择(内置 34 省级行政区真实数据,无网络请求),并新增dataprop 支持自定义完整区域树;小程序 / App 端原生三级不受影响z-sign-calendar:签到后日期数字被对勾图标替换导致「日期看不见」,改为蓝底白字日期 + 「已签」标记- 函数式反馈(toast / showDialog / showActionSheet):页面未放置挂载组件时不再于控制台刷「请添加
」警告,自动降级为 uni.showToast / uni.showModal / uni.showActionSheet 原生弹层,功能不受影响 - 演示页:签到日历「关闭补签」示例补绑 @sign,当天可直接签到
z-index-list:模板已使用的label-key取名 prop 此前未在 defineProps 声明,外部传入被静默忽略,现已补声明(默认label,未命中回退label/text)
演示
- 返回顶部演示重做:内容加长到可滚过阈值(此前内容太短按钮永不出现);新增阈值 / 位置实时调节(z-stepper)与插槽文字示例
- 瀑布流演示新增页面级下拉刷新与触底自动加载更多
其他
- 演示首页迁移至生成器自动产出(新增组件自动同步)
平台兼容性
uni-app(5.26)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.26)
| Chrome | Chrome插件版本 | Safari | Safari插件版本 | Android | Android插件版本 | iOS | iOS插件版本 | 鸿蒙 | 微信小程序 | 微信小程序插件版本 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | 1.6.7 | √ | 1.6.7 | √ | 1.6.7 | √ | 1.6.7 | - | √ | 1.6.7 |
ZUI 高性能跨端组件库
基于 Vue3 Composition API 的轻量级 uniapp 组件库 —— 91 个组件,覆盖基础、表单、反馈、展示、导航、布局与高级业务场景。
- 🧩 进阶业务组件:拖拽排序、下拉菜单、下拉刷新、水波球、自适应轮播、树形、表格、锚点导航、日历、颜色选择器、图片裁剪、双滑块……
- 🚀 一键使用:标准 uni_modules + easycom,导入即写标签,无需 import、无需注册
- 🎨 CSS 变量主题:一行换肤,任意容器加
zui-dark类即刻切换暗黑模式 - 📦 零外部依赖:内置 35 个矢量图标字体(base64 内嵌,无网络请求)
- 🖥 全端兼容:H5 / App(Android、iOS)/ 微信、支付宝、百度、字节跳动、QQ 等小程序
- ⚡ 函数式调用:
toast()/showDialog()/showActionSheet()随处可调 - 🧩 高级业务组件:上传、轮播图、索引列表、侧边栏、宫格、滑动单元格、倒计时、环形进度、水印、悬浮按钮……
平台兼容
| Vue3 | H5 | App(Android/iOS) | 微信小程序 | 其他小程序 |
|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓(支付宝/百度/字节/QQ 未逐一实测,欢迎反馈) |
本组件库基于
<script setup>语法,仅支持 Vue3 项目(HBuilderX 3.6+),不支持 Vue2 与 nvue 页面。
新手指南(先看这里)
组件库是怎么工作的? 每个组件就是一段封装好的界面(如按钮、弹窗)。导入本插件后,不需要任何注册代码,直接在页面模板里写标签即可:写 <z-button>点我</z-button> 就会出现一个按钮。
三步上手:
- 把插件导入到项目的
uni_modules目录; - 在
App.vue里引入一行主题样式(见下文); - 在任意页面写
<z-button>点我</z-button>,运行即可看到按钮。
看文档前需要知道的 5 个名词:
| 名词 | 意思 |
|---|---|
| v-model | 双向绑定的值。例如 <z-switch v-model="on" />,用户切换开关时变量 on 会自动变 true/false |
| rpx | 响应式单位。750rpx 恒等于屏幕宽度。文档中"数字按 rpx"表示传数字即可,组件自动补单位 |
| easycom | uniapp 的自动注册机制。符合目录规范的组件无需 import,写标签就能用 |
| 插槽(slot) | 组件预留的"自定义区域"。例如 z-card 的 #footer 插槽让你在卡片底部放自己的内容 |
| 事件(event) | 组件通知你的方式。例如 @click="fn" 表示按钮被点时执行函数 fn |
本文档每个组件都包含: 使用场景说明、可直接复制的示例(演示工程中每个组件一个独立页面、含 3 个以上实例,位于 pages/demos/)、参数表(参数 / 类型 / 默认值 / 说明)、事件表、插槽表。
快速上手
1. 导入
在插件市场点击「使用 HBuilderX 导入插件」到你的项目,或手动复制 uni_modules/zdd-zui 到项目 uni_modules/ 目录。
2. 引入主题(推荐)
在 App.vue 中引入主题文件(不引入也能用,组件内置了默认值,引入后才能定制与切换暗黑模式):
<style lang="scss">
@import 'uni_modules/zdd-zui/theme/index.scss';
page {
background: var(--z-bg);
color: var(--z-text-1);
}
</style>
⚠️ 请不要把组件库内部路径写进
uni.scss(部分 HBuilderX 版本的 sass 注入编译无法解析uni_modules路径)。组件自身已通过相对路径自包含,无需任何额外导入。
3. 直接使用
<template>
<z-button type="primary" block @click="onClick">主要按钮</z-button>
<z-cell title="昵称" value="陌上花开" arrow clickable />
<z-rate v-model="score" />
</template>
<script setup>
import { ref } from 'vue'
const score = ref(3)
const onClick = () => {}
</script>
若项目关闭了 easycom 自动扫描,请在 pages.json 中添加:
{
"easycom": {
"autoscan": true,
"custom": {
"^z-(.*)": "@/uni_modules/zdd-zui/components/z-$1/z-$1.vue"
}
}
}
4. 函数式调用(Toast / Dialog / ActionSheet)
第一步(可选):在页面模板中放置挂载组件,获得与组件库统一的皮肤样式:
<template>
<view>
<!-- 页面内容 -->
<z-toast />
<z-dialog />
<z-action-sheet />
</view>
</template>
未放置时也不会报错——调用自动降级为 uni.showToast / uni.showModal / uni.showActionSheet 原生弹层,功能完全可用,仅样式为系统默认。
第二步:任意位置调用:
import { toast, showDialog, showActionSheet } from '@/uni_modules/zdd-zui/libs/feedback'
toast('保存成功') // 纯文字
toast.success('操作成功') // 成功
toast.error('网络异常') // 失败
toast.loading('提交中...') // 加载(不自动关闭)
setTimeout(() => toast.hide(), 1500)
const ok = await showDialog.confirm('确定删除吗?') // true / false
await showDialog.alert('只有确定按钮')
const idx = await showActionSheet(['拍照', '从相册选择']) // 索引 / -1(取消)
⚠️ 命名注意:请在
<script setup>中按上面示例命名导入(showDialog/showActionSheet)。若变量名与组件标签的驼峰形式同名(如import { zDialog }),Vue 会把模板里的<z-dialog>编译为该变量,导致组件无法渲染。
组件总览
| 分类 | 组件 |
|---|---|
| 基础 | z-button 按钮 · z-icon 图标 · z-image 图片 · z-badge 徽标 · z-tag 标签 · z-avatar 头像 · z-loading 加载 |
| 表单 | z-input 输入框 · z-textarea 文本域 · z-search 搜索框 · z-checkbox 复选 · z-checkbox-group · z-radio 单选 · z-radio-group · z-switch 开关 · z-rate 评分 · z-slider 滑块 · z-stepper 步进器 |
| 反馈 | z-popup 弹层 · z-dialog 对话框 · z-toast 轻提示 · z-action-sheet 动作面板 · z-progress 进度条 · z-skeleton 骨架屏 · z-empty 空状态 |
| 展示 | z-card 卡片 · z-cell 单元格 · z-collapse 折叠面板 · z-collapse-item · z-steps 步骤条 · z-notice-bar 通知栏 |
| 导航 | z-tabs 标签页 · z-navbar 导航栏 · z-backtop 返回顶部 |
| 布局 | z-row 栅格行 · z-col 栅格列 · z-divider 分割线 |
| 高级 | z-upload 上传 · z-swiper 轮播图 · z-index-list 索引列表 · z-sidebar 侧边栏 · z-sidebar-item · z-grid 宫格 · z-grid-item · z-countdown 倒计时 · z-circle-progress 环形进度 · z-load-more 加载更多 · z-segmented 分段器 · z-count-to 数字滚动 |
| 扩展 | z-overlay 遮罩层 · z-fab 悬浮按钮 · z-swipe-cell 滑动单元格 · z-tabbar 底部标签栏 · z-tabbar-item · z-pagination 分页器 · z-popover 气泡 · z-read-more 文本展开 · z-watermark 水印 · z-highlight 高亮 · z-sticky 吸顶 · z-footer 页脚 |
基础组件
ZButton 按钮
适用场景:用于触发一个即时操作,支持类型、尺寸、图标、加载态等。
<z-button type="primary">主要按钮</z-button>
<z-button type="success" plain round>朴素圆角</z-button>
<z-button icon="search" loading loading-text="加载中" />
<z-button block size="large" color="#7b61ff">块级自定义色</z-button>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| type | String | primary | primary / success / warning / danger / info / default |
| size | String | normal | large / normal / small / mini |
| plain | Boolean | false | 朴素按钮(描边) |
| round | Boolean | false | 圆角按钮 |
| block | Boolean | false | 块级按钮 |
| disabled | Boolean | false | 禁用 |
| loading | Boolean | false | 加载状态 |
| loading-text | String | '' | 加载文案 |
| icon | String | '' | 图标名(见内置图标) |
| color | String | '' | 自定义背景色(plain 时为描边色) |
| custom-style | String/Object | '' | 自定义样式 |
事件:click(disabled/loading 时不触发)。支持透传 open-type 等原生 button 属性。
ZIcon 图标
适用场景:内置 35 个矢量图标字体,base64 内嵌无需网络请求。
<z-icon name="star" size="40" color="#ff9f18" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| name | String | '' | 图标名 |
| size | String/Number | '' | 数字按 rpx |
| color | String | '' | 颜色 |
内置图标:close check plus minus search star heart user home gear bell trash edit share location calendar clock photo eye lock phone info warning success error loading chevron-right chevron-down chevron-left chevron-up arrow-right arrow-down arrow-left arrow-up more,别名:clear refresh complete warn。
ZImage 图片
适用场景:增强版图片:加载中占位、失败提示、淡入、形状控制。
<z-image src="https://..." width="220" height="150" radius="16" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| src | String | '' | 图片地址 |
| mode | String | aspectFill | 同原生 image mode |
| width / height | String/Number | '' | 数字按 rpx |
| radius | String/Number | 0 | 圆角 |
| shape | String | square | square / circle(circle 时忽略 radius) |
| lazy-load | Boolean | true | 懒加载 |
| fade | Boolean | true | 加载完成淡入 |
| show-menu-by-longpress | Boolean | false | 长按识别小程序码 |
插槽:loading(加载占位)、error(失败占位);事件:load / error。
ZBadge 徽标
适用场景:出现在按钮、图标右上的数字或圆点标记。
<z-badge :value="120" :max="99"><z-button size="small">消息</z-button></z-badge>
<z-badge dot><z-icon name="bell" size="44" /></z-badge>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| value | String/Number | '' | 数值 |
| max | String/Number | 99 | 超出显示 max+ |
| dot | Boolean | false | 圆点模式 |
| color | String | danger | 背景色 |
| offset | Array | [] | 偏移 [x, y](rpx) |
ZTag 标签
适用场景:用于标记和分类的小标签。
<z-tag type="success" plain closable @close="onClose">标签</z-tag>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| type | String | primary | 同 button type |
| size | String | medium | large / medium / small |
| plain / round / mark | Boolean | false | 朴素 / 圆角 / 右侧半圆 |
| closable | Boolean | false | 可关闭 |
| color | String | '' | 自定义颜色 |
事件:click / close。
ZAvatar 头像
适用场景:用图片、图标或文字展示用户头像。
<z-avatar src="https://..." size="88" />
<z-avatar icon="user" shape="square" bg-color="#00b578" />
<z-avatar text="Z" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| src | String | '' | 图片地址 |
| size | String/Number | 88 | 数字按 rpx |
| shape | String | circle | circle / square |
| icon / text | String | '' | 无图片时的图标/文字 |
| bg-color | String | primary | 背景色 |
事件:click(点击头像)/ error(图片加载失败)。
ZLoading 加载
适用场景:加载动画,支持文案与颜色定制。
<z-loading text="加载中" />
<z-loading color="#00b578" text="垂直" vertical />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| size | String/Number | 44 | 尺寸(rpx) |
| color | String | primary | 颜色 |
| text | String | '' | 文案 |
| vertical | Boolean | false | 文案垂直排列 |
表单组件
ZInput 输入框
适用场景:文本输入,支持类型、图标、清空、禁用。
<z-input v-model="text" placeholder="请输入" clearable />
<z-input v-model="pwd" password prefix-icon="lock" placeholder="密码" />
<z-input v-model="tel" type="number" prefix-icon="phone" suffix-icon="info" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Number | '' | 输入值 |
| type | String | text | text / number / digit / idcard / nickname |
| password | Boolean | false | 密码框 |
| placeholder | String | 请输入 | 占位文案 |
| disabled | Boolean | false | 禁用 |
| maxlength | Number | -1 | 最大长度 |
| clearable | Boolean | false | 清空按钮 |
| border | String | outline | outline / none |
| prefix-icon / suffix-icon | String | '' | 前后图标 |
| placeholder-style | String | — | 占位符样式(对象或字符串) |
| confirm-type | String | — | 键盘确认键类型(search / send 等) |
| confirm-hold | Boolean | — | 点击确认键后键盘是否保持 |
| cursor-spacing | String | — | 光标与键盘的距离(px) |
插槽:prefix / suffix;事件:input / focus / blur / confirm / clear / click-suffix。
ZTextarea 文本域
适用场景:多行文本输入,支持字数统计与自适应高度。
<z-textarea v-model="content" :maxlength="100" show-count auto-height />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Number | '' | 输入值 |
| maxlength | Number | -1 | 最大长度 |
| show-count | Boolean | false | 显示字数统计 |
| auto-height | Boolean | false | 自适应高度 |
| disabled | Boolean | false | 禁用 |
| placeholder | String | — | 占位文字 |
| placeholder-style | String | — | 占位符样式 |
| focus | Boolean | — | 自动获取焦点 |
| confirm-type | String | — | 键盘确认键类型 |
事件:input(输入)/ focus / blur。
ZSearch 搜索框
适用场景:搜索输入框,内置搜索图标、清空与动作按钮。
<z-search v-model="keyword" action-text="搜索" @search="onSearch" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Number | '' | 关键词 |
| shape | String | round | round / square |
| clearable | Boolean | true | 清空按钮 |
| action-text | String | '' | 右侧动作文字(空则不显示) |
| placeholder | String | — | 占位文字 |
| placeholder-style | String | — | 占位符样式 |
事件:search / clear / input。
ZCheckbox / ZRadio 复选与单选
Group 参数(z-checkbox-group / z-radio-group 通用)
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Array / String/Number | [] / '' | 选中项(checkbox 为数组,radio 为单值) |
| disabled | Boolean | false | 整组禁用 |
| checked-color | String | primary | 选中颜色 |
| direction | String | horizontal | horizontal / vertical |
Item 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| name | String/Number | — | 标识(对应 group v-model) |
| shape | String | square | checkbox: square / circle;radio 固定圆形 |
| label | String | '' | 文字(也可用插槽) |
| disabled | Boolean | false | 禁用 |
| label-disabled | Boolean | false | 点击文字不切换 |
| checked-color | String | — | 单独设置选中颜色 |
事件:change。
适用场景:在一组选项中进行多选或单选。
<z-checkbox-group v-model="checked"> <z-checkbox name="apple">苹果</z-checkbox> <z-checkbox name="banana" shape="circle">香蕉</z-checkbox> <z-checkbox name="grape" disabled>禁用</z-checkbox> </z-checkbox-group>
Group:`v-model`(数组 / 值)、`disabled`、`checked-color`、`direction`(horizontal / vertical)。Item:`name`、`shape`(checkbox:square / circle)、`disabled`、`label`(也可用插槽)、`label-disabled`、`checked-color`。
### ZSwitch 开关
> **适用场景**:用于表示开/关两种状态的切换。
```html
<z-switch v-model="on" active-color="#00b578" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Boolean | false | 选中状态 |
| loading | Boolean | false | 切换中(异步场景) |
| disabled | Boolean | false | 禁用 |
| active-color / inactive-color | String | primary / border | 背景色 |
| size | String/Number | 56 | 节点高度(rpx) |
事件:change(value)。
ZRate 评分
适用场景:快速打分,支持半星与自定义图标。
<z-rate v-model="score" allow-half />
<z-rate :model-value="3" readonly icon="heart" active-color="#f5455c" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | 0 | 评分值 |
| count | Number | 5 | 星星总数 |
| allow-half | Boolean | false | 半星 |
| readonly / disabled | Boolean | false | 只读 / 禁用 |
| icon | String | star | star / heart |
| size / gutter | Number | 44 / 8 | 尺寸与间距(rpx) |
事件:change(value)。
ZSlider 滑块
适用场景:在范围内选择值,支持双滑块、垂直、刻度。
<z-slider v-model="val" show-tip :min="0" :max="100" :step="1" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number/Array | 0 | 单滑块 Number;range 模式传 [min, max] |
| range | Boolean | false | 双滑块模式 |
| vertical | Boolean | false | 垂直方向(配合 height) |
| height | String/Number | 400 | 垂直模式轨道长度(rpx) |
| marks | Object | null | 刻度 { 值: 标签 } |
| min / max / step | Number | 0 / 100 / 1 | 范围与步长 |
| show-tip | Boolean | false | 拖动时显示气泡 |
| active-color / inactive-color | String | primary / bg | 颜色 |
| disabled | Boolean | — | 禁用 |
| bar-height | String | — | 轨道高度(rpx) |
事件:change(拖动结束)/ dragging(拖动中)。
<!-- 双滑块 + 刻度 -->
<z-slider v-model="[200, 800]" range :marks="{ 0: '0', 500: '500', 1000: '1000' }" />
<!-- 垂直 -->
<z-slider v-model="vol" vertical :height="300" />
#
ZForm 表单
适用场景:schema 校验的表单容器,支持必填 / 长度 / 正则 / 自定义校验。
<z-form ref="formRef" :model="form" :rules="rules">
<z-form-item label="用户名" prop="username" required>
<z-input v-model="form.username" />
</z-form-item>
<z-button block type="primary" @click="onSubmit">提交</z-button>
</z-form>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| model | Object | {} | 表单数据对象 |
| rules | Object | {} | 校验规则(见下) |
| label-width | String/Number | 160 | label 宽度(rpx) |
| label-align | String | left | label 对齐 |
规则格式:{ 字段: [{ required, message, min, max, pattern, validator }] }。validator 为自定义异步校验函数 (value, model) => 错误信息或空。
方法:validate(props?) 返回 { valid, errors };resetFields() 清除错误提示。事件:validate(valid, errors)。
ZFormItem:label、prop(对应字段名)、required(星号);插槽 label / 默认。
ZPicker 选择器
适用场景:底部弹出的单列/多列选择器,支持对象与字符串选项。
<z-picker v-model:show="show" :columns="[cats]" title="选择分类" @confirm="onConfirm" />
<!-- 多列 -->
<z-picker v-model:show="show2" :columns="[years, months]" @confirm="onConfirm2" />
<!-- 对象选项 + 默认值 -->
<z-picker v-model:show="show3" v-model="city" :columns="[cityOptions]" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model:show | Boolean | false | 显示状态 |
| columns | Array | [] | 每列一个数组:['a','b'] 或 [{ label, value }];多列传二维数组 |
| v-model | String/Number/Array | '' | 选中值(单列为值,多列为数组) |
| title | String | '' | 顶部标题 |
| confirm-text / cancel-text | String | 确定 / 取消 | 按钮文字 |
| visible-item-count | Number | 5 | 可视区行数 |
| item-height | String/Number | 88 | 行高(rpx) |
事件:confirm(value, labels) / cancel / change(value, indices)。
ZStepper 步进器
适用场景:通过加减按钮或输入调整数值。
<z-stepper v-model="num" :min="1" :max="10" :step="0.5" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | 0 | 当前值 |
| min / max / step | Number | 1 / Infinity / 1 | 范围与步长 |
| integer | Boolean | false | 仅整数 |
| disable-input | Boolean | false | 禁止输入 |
| disabled | Boolean | — | 禁用 |
事件:change / blur / plus / minus。
反馈组件
ZPopup 弹层(核心组件)
适用场景:页面内弹出层容器,弹窗、抽屉、底部面板等交互的基础组件。
<z-popup v-model:show="show" position="bottom" round closeable> <view style="padding: 40rpx;">底部弹层内容</view> </z-popup>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model:show | Boolean | false | 显示状态 |
| position | String | center | center / top / bottom / left / right |
| round | Boolean | false | 圆角 |
| closeable | Boolean | false | 关闭按钮 |
| overlay | Boolean | true | 遮罩 |
| overlay-closable | Boolean | true | 点遮罩关闭 |
| z-index | Number | 10070 | 层级 |
| duration | Number | 300 | 动画时长(ms) |
| safe-area-inset-bottom | Boolean | true | 底部安全区 |
| custom-style | String/Object | '' | 内容区自定义样式 |
| close-icon | String | — | 是否显示右上角关闭图标 |
| overlay-style | String | — | 遮罩自定义样式 |
事件:open / opened / close / closed / click-overlay。
ZDialog 对话框(函数式)
适用场景:需要用户确认或提示的模态对话框,通过函数一行调用。
import { showDialog } from '@/uni_modules/zdd-zui/libs/feedback'
await showDialog.alert('只有确定按钮') // Promise
页面需放置 `<z-dialog />`。支持默认插槽自定义内容。
**showDialog 选项与函数**
| 参数 / 方法 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| title | String | 提示 | 标题 |
| content | String | '' | 内容文字 |
| show-cancel / show-confirm | — | 内置 | 传入 options 里的 showCancelButton / showConfirmButton 控制按钮显隐 |
| cancel-text / confirm-text | String | 取消 / 确定 | 按钮文字 |
| showDialog.alert(content, title) | Function | — | 仅确定按钮 |
| showDialog.confirm(content, title) | Function | — | 返回 Promise<boolean> |
| showDialog.resolve(result) | Function | — | 供插槽内自定义按钮关闭时调用 |
### ZToast 轻提示(函数式)
> **适用场景**:操作结果的轻量反馈提示,自动消失。
```js
import { toast } from '@/uni_modules/zdd-zui/libs/feedback'
toast('纯文字')
toast.success('成功') // toast.error / toast.warning / toast.info
toast.loading('加载中...') // duration=0 不自动关闭
setTimeout(() => toast.hide(), 1500)
toast({ message: '顶部提示', position: 'top', duration: 3000, mask: true })
页面需放置 <z-toast />。type:text / success / error / warning / loading;position:top / center / bottom。
toast 用法
| 方法 | 说明 |
|---|---|
| toast(options) 或 toast(文字) | 基础调用,options 支持 message / type / position / duration / mask |
| toast.success(文字) | 成功图标 |
| toast.error(文字) | 失败图标 |
| toast.warning(文字) | 警告图标 |
| toast.info(文字) | 纯文字 |
| toast.loading(文字) | 加载中,不自动关闭 |
| toast.hide() | 手动关闭 |
| Option | 类型 | 默认值 | 说明 |
|---|---|---|---|
| message | String | '' | 文案 |
| type | String | text | text / success / error / warning / loading |
| position | String | center | top / center / bottom |
| duration | Number | 2000 | 展示时长(ms),0 不自动关闭 |
| mask | Boolean | false | 透明遮罩防穿透 |
ZActionSheet 动作面板(函数式)
适用场景:从底部弹出的一组操作选项,如分享、上传方式选择。
import { showActionSheet } from '@/uni_modules/zdd-zui/libs/feedback'
const idx = await showActionSheet({ title: '选择上传方式', items: [{ name: '拍照' }, { name: '相册', subname: '从手机相册选择' }], cancelText: '取消' }) // idx:点击项索引;点击取消/遮罩返回 -1
页面需放置 `<z-action-sheet />`。item 支持 `name / subname / color / disabled`。
**showActionSheet 选项**
| Option | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| items | Array | [] | [{ name, subname, color, disabled }] |
| title | String | '' | 顶部说明 |
| cancel-text | String | 取消 | 取消按钮文字 |
| show-cancel | Boolean | true | 是否显示取消按钮 |
返回 Promise:选中项索引;点取消 / 遮罩返回 -1。
### ZProgress 进度条
> **适用场景**:展示操作或任务的当前进度。
```html
<z-progress :percent="60" color="#00b578" pivot-text="已完成" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| percent | Number | 0 | 进度 0-100 |
| stroke-width | String/Number | 14 | 粗细(rpx) |
| color / track-color | String | primary / bg | 颜色 |
| show-text | Boolean | true | 显示文字 |
| pivot-text | String | '' | 自定义文字 |
ZSkeleton 骨架屏
适用场景:在内容加载前展示占位图形,提升体验。
<z-skeleton :loading="loading" avatar :row="3">
<你的真实内容 />
</z-skeleton>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| loading | Boolean | true | 加载中显示骨架 |
| avatar | Boolean | false | 显示头像 |
| title | Boolean | true | 显示标题行 |
| row | Number | 3 | 段落行数 |
| row-width | Array/String | ['100%','100%','60%'] | 行宽 |
| animate | Boolean | true | 流光动画 |
ZEmpty 空状态
适用场景:列表为空时的占位提示。
<z-empty text="暂无订单" description="去逛逛看看想买的">
<z-button size="small" round>去逛逛</z-button>
</z-empty>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| icon | String | photo | 图标名 |
| text / description | String | 暂无数据 / '' | 主/副文案 |
| image-size | String/Number | 160 | 图标区域(rpx) |
展示组件
ZCard 卡片
适用场景:内容容器,支持标题、额外内容与底部区域。
<z-card title="订单信息" shadow>
<text>内容区域</text>
<template #extra><z-tag size="small">进行中</z-tag></template>
<template #footer><z-button size="mini" plain>查看详情</z-button></template>
</z-card>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| title | String | '' | 标题 |
| padding | String/Number | 28 | 内容内边距(rpx) |
| shadow / border | Boolean | true / false | 阴影 / 描边 |
插槽:title / extra / default / footer。
事件:click(点击卡片)。
ZCell 单元格
适用场景:列表行的信息展示,可组成设置页等列表。
<z-cell title="昵称" icon="edit" value="陌上花开" arrow clickable />
<z-cell title="地址" label="上海市浦东新区" arrow />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| title / value / label | String | '' | 标题/值/描述 |
| icon | String | '' | 左侧图标 |
| arrow | Boolean | false | 右箭头 |
| clickable | Boolean | false | 点击反馈 |
| center | Boolean | false | 垂直居中 |
| required | Boolean | false | 必填星号 |
插槽:icon / title / label / default(值区域)/ right-icon。
ZCollapse 折叠面板
适用场景:点击标题展开/收起内容区域。
<z-collapse v-model="opened">
<z-collapse-item title="什么是 ZUI?" name="1">内容</z-collapse-item>
<z-collapse-item title="禁用项" name="2" disabled>内容</z-collapse-item>
</z-collapse>
Collapse:v-model(数组,accordion 模式为单值)、accordion。Item:name、title、label、value(右侧附加文字)、disabled。
ZCollapse 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Array | [] | 展开项 name(accordion 为单值) |
| accordion | Boolean | false | 手风琴模式 |
ZCollapseItem 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| name | String/Number | — | 唯一标识(对应 v-model) |
| title | String | '' | 标题 |
| label | String | '' | 标题下方描述 |
| value | String | '' | 右侧附加文字 |
| disabled | Boolean | false | 禁用 |
事件:change(index) / change。
ZSteps 步骤条
适用场景:展示任务流程的当前进度。
<z-steps :items="[{ title: '下单' }, { title: '付款', desc: '已支付' }]" :current="1" />
<z-steps :items="items" :current="2" direction="vertical" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| items | Array | [] | [{ title, desc }] |
| current | Number | 0 | 当前步骤索引 |
| direction | String | horizontal | horizontal / vertical |
| active-color | String | primary | 激活色 |
ZNoticeBar 通知栏
适用场景:常用于页面顶部展示通知信息,超长自动滚动。
<z-notice-bar text="超长通知自动滚动播放" left-icon="bell" closeable />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | String | '' | 通知内容 |
| scrollable | Boolean/String | 'auto' | true / false / 'auto'(溢出才滚动) |
| speed | Number | 50 | 滚动速度 px/s |
| color / background | String | warning / #fff8ec | 颜色 |
| left-icon | String | bell | 左侧图标 |
| closeable | Boolean | false | 可关闭 |
事件:close / click。
导航组件
ZTabs 标签页
适用场景:内容分区导航,支持横向滚动。
<z-tabs v-model="tab" :list="['关注', '推荐', '热榜']" @change="onChange" />
<z-tabs v-model="tab2" :list="list" :line-width="48" active-color="#00b578" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | 0 | 当前索引 |
| list | Array | [] | ['标签'] 或 [{ title }] |
| line-width | String/Number | 'auto' | 下划线宽度('auto' 匹配文字) |
| color / active-color | String | text-2 / primary | 文字颜色 |
| item-min-width | String/Number | '' | 单项最小宽度 |
事件:change / click。激活项自动滚动到可视区。
ZNavbar 导航栏(自定义导航栏)
<!-- 透明沉浸模式:滚动后自动变实色(页面需 navigationStyle: custom) -->适用场景:自定义页面顶部导航栏,支持返回/首页/搜索/沉浸模式。
<!-- 常规 --> <z-navbar title="标题" @left="onBack" />
| Prop | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| title | String | '' | 标题 |
| search | Boolean | false | 搜索框模式(替代标题区域),confirm 触发 `search` 事件 |
| search-placeholder | String | 搜索 | 搜索框占位文案 |
| left-arrow | Boolean | true | 返回箭头(仅存在上级页面时显示) |
| show-home | Boolean | false | 无上级页面时显示首页按钮 |
| home-path | String | /pages/index/index | 首页路径 |
| fixed / placeholder | Boolean | true | 固定顶部 / 生成占位 |
| transparent | Boolean | false | 沉浸透明模式 |
| scroll-top | Number | 0 | 页面滚动距离(配合 onPageScroll) |
| auto-threshold | Number | 80 | 透明→实色阈值(px) |
| background / color | String | bg-2 / text-1 | 颜色 |
| border | Boolean | true | 底部细线(透明模式不显示) |
| z-index | String | — | 导航层层级 |
插槽:`left` / `right` / `default`(标题);事件:`left` / `home`(未监听时执行默认返回/回首页)。
页面开启自定义导航:`pages.json` 对应页面加 `"navigationStyle": "custom"`。
### ZBacktop 返回顶部
> **适用场景**:长页面滚动一定距离后出现的返回顶部按钮。
```html
<z-backtop :scroll-top="scrollTop" :threshold="300" />
页面 onPageScroll 中把 e.scrollTop 传给 scroll-top。点击自动 pageScrollTo(0)。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| scroll-top | Number | 0 | 页面滚动距离(onPageScroll 传入) |
| threshold | Number | 300 | 出现阈值(px) |
| icon | String | chevron-up | 图标名 |
| right / bottom | Number | 40 / 140 | 距右 / 距底(rpx) |
点击自动 pageScrollTo(0);默认插槽可自定义内容。
注意:页面可滚动距离必须超过
threshold按钮才会出现——页面内容太短时按钮永远不会出现;且必须在页面onPageScroll中把e.scrollTop传给scroll-top,否则组件感知不到滚动。
布局组件
ZRow / ZCol 栅格
适用场景:24 等分栅格布局,快速搭建页面的横向分栏。
<z-row gutter="16"> <z-col :span="12"><view>左</view></z-col> <z-col :span="6" :offset="6"><view>右</view></z-col> </z-row>
Row:gutter(列间距 rpx)、justify(start/center/end/space-between/space-around)、align(top/center/bottom)、wrap。Col:span(1-24)、offset。
ZRow 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| gutter | Number | 0 | 列间距(rpx),自动分配到列两侧 |
| justify | String | start | start / center / end / space-between / space-around |
| align | String | top | top / center / bottom |
| wrap | Boolean | true | 是否换行 |
ZCol 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| span | Number | 24 | 占 24 等分中的列数 |
| offset | Number | 0 | 左侧偏移列数 |
ZDivider 分割线
适用场景:分隔内容的分割线,可带文字。
<z-divider>文字</z-divider>
<z-divider dashed>虚线</z-divider>
<z-divider vertical />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| dashed | Boolean | false | 虚线样式 |
| vertical | Boolean | false | 垂直分割 |
| text-color | String | text-2 | 文字颜色 |
| border-color | String | border | 线条颜色 |
| border-width | String | — | 线宽(rpx) |
插槽:默认插槽为居中文字。
高级组件
ZUpload 上传
适用场景:图片/文件上传,支持进度、失败重试、自定义上传。
<!-- 图片上传(配置 action 后自动上传) -->
<z-upload v-model="files" accept="image" action="https://api/upload" :max-count="5" @success="onOk" />
<!-- 文件上传 -->
<z-upload v-model="docs" accept="file" :max-count="3" />
<!-- 完全自定义上传 -->
<z-upload v-model="files" :custom-upload="uploadFn" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Array | [] | 文件列表 [{ url, name, status, progress }] |
| accept | String | image | image / file |
| max-count | Number | 9 | 最大数量 |
| max-size | Number | 10 | 单文件上限(MB) |
| action | String | '' | 上传接口(空则仅本地预览) |
| name / header / formData | — | file / {} | uni.uploadFile 参数 |
| custom-upload | Function | null | (file, index) => Promise 自定义上传 |
| source-type | Array | ['album','camera'] | 图片来源 |
| deletable / preview-full-image | Boolean | true | 删除 / 大图预览 |
| disabled | Boolean | — | 禁用上传 |
事件:change / success / fail / progress / oversize / delete。文件状态:loading(含进度与重试)/ done / failed(点击重试)。
ZSwiper 轮播图
适用场景:图片轮播,支持自定义指示点与标题遮罩。
<z-swiper :list="['https://...a.jpg', { image: 'https://...b.jpg', title: '标题' }]" :height="320" :radius="16" />
<!-- 自定义 slide -->
<z-swiper indicator="line">
<swiper-item>...</swiper-item>
</z-swiper>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| list | Array | [] | ['url'] 或 [{ image, title }] |
| autoplay / circular | Boolean | true | 自动播放 / 循环 |
| interval / duration | Number | 3000 / 500 | 间隔与动画(ms) |
| indicator | String | dots | dots / line / none |
| indicator-color / indicator-active-color | String | 白色系 | 指示点颜色 |
| height / radius | String/Number | 340 / 0 | 高度与圆角(rpx) |
| image-mode | String | — | 图片裁剪模式(同 uni image mode) |
事件:change(index) / click(index, item)。
ZIndexList 索引列表
适用场景:带右侧字母导航的长列表,通讯录式交互。
<z-index-list :list="cityList" height="100vh" @select="">
<template #item="{ item }">
<text>{{ item }}</text>
</template>
</z-index-list>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| list | Array | [] | [{ letter: 'A', items: [] }],item 支持字符串或对象 |
| label-key | String | '' | item 为对象时的显示字段名 |
| index-list | Array | 取 list 的 letter | 右侧索引字母 |
| height | String/Number | 100vh | 滚动区高度 |
| active-color | String | — | 索引条与当前字母高亮色 |
内置右侧索引条(触摸滑动定位)、中央字母提示。事件:select(item)。> 说明:H5 端 cell 内容由组件内置渲染(字符串直出 / 对象取 label-key 字段);小程序与 App 端支持 #item 作用域插槽自定义行内容。
ZSidebar / ZSidebarItem 侧边栏
适用场景:电商分类页等场景的左侧垂直导航。
<view style="display: flex; height: 600rpx;"> <z-sidebar v-model="active"> <z-sidebar-item v-for="c in cats" :key="c" :title="c" :dot="c === '热卖'" /> </z-sidebar> <view style="flex: 1;">右侧内容区(随 active 切换)</view> </view>
Sidebar:v-model(索引)。Item:title、disabled、dot、badge、active-color。
ZSidebar 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | 0 | 当前选中索引 |
事件:change(index)。
ZSidebarItem 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| title | String | '' | 标题文字 |
| disabled | Boolean | false | 禁用 |
| dot | Boolean | false | 红点标记 |
| badge | String/Number | '' | 数字角标 |
| active-color | String | primary | 激活指示条颜色 |
ZGrid / ZGridItem 宫格
适用场景:功能入口、图标导航等九宫格布局。
<z-grid :columns="4"> <z-grid-item v-for="(g, i) in list" :key="i" @click="onClick(i)"> <z-icon :name="g.icon" size="40" /> <text>{{ g.name }}</text> </z-grid-item> </z-grid>
Grid:columns(列数)、border(边框,自动隐藏末列右框)。Item:clickable、事件 click(index)(index 为注册顺序)。
ZGrid 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| columns | Number | 4 | 列数 |
| border | Boolean | true | 显示边框 |
ZGridItem 参数:clickable(点击反馈);事件 click(index)(index 为注册顺序,从 0 开始);内容用默认插槽自由组合。
ZCountdown 倒计时
适用场景:实时倒计时,支持格式化与完成回调。
<z-countdown :time="7200 * 1000" format="HH:mm:ss" @finish="onFinish" />
<z-countdown :time="90000" format="mm:ss" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| time | Number | 0 | 时长(毫秒) |
| format | String | HH:mm:ss | 支持 DD / HH / mm / ss,其余字符为分隔符 |
| autostart | Boolean | true | 自动开始 |
事件:finish / change(remain);实例方法 start() / stop()。
ZCircleProgress 环形进度
适用场景:环形进度条,无 canvas 依赖全端可用。
<z-circle-progress :rate="72" :size="160" />
<z-circle-progress :rate="45" color="#00b578" text="完成" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| rate | Number | 0 | 进度 0-100 |
| size / stroke-width | Number | 200 / 16 | 直径 / 环宽(rpx) |
| color / track-color / fill | String | primary / bg / bg-2 | 颜色 |
| text | String | '' | 中心文字(默认百分比) |
基于 conic-gradient 实现,无 canvas 依赖。支持插槽自定义中心内容。
ZLoadMore 加载更多
适用场景:列表底部加载状态展示。
<z-load-more :status="status" @loadmore="loadNext" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| status | String | loadmore | loadmore / loading / nomore |
| line | Boolean | true | 两侧分割线 |
| loading-text | String | — | 加载中文案 |
| loadmore-text | String | — | 加载更多文案 |
| nomore-text | String | — | 没有更多了文案 |
| color | String | — | 文字颜色 |
| loading-color | String | — | loading 图标颜色 |
点击 loadmore 状态时触发 loadmore 事件。
ZSegmented 分段器
适用场景:互斥的一组选项,滑动指示块切换。
<z-segmented v-model="tab" :options="['日', '周', '月']" />
<z-segmented v-model="type" :options="[{ label: '全部', value: 0 }]" active-color="#00b578" />
滑动指示块动画;事件:change(value, index)。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Number | — | 当前选中值 |
| options | Array | [] | ['a'] 或 [{ label, value }] |
| active-color | String | primary | 指示块与文字颜色 |
| disabled | Boolean | false | 禁用切换 |
事件:change(value, index)。
ZCountTo 数字滚动
适用场景:数字从起始值滚动到目标值,带缓动动画。
<z-count-to :end="128450" :duration="2000" font-size="48" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| start / end | Number | 0 | 起止值 |
| duration | Number | 1500 | 动画时长(ms) |
| decimals | Number | 0 | 小数位 |
| separator | Boolean | true | 千分位 |
| color | String | — | 数字颜色 |
| autoplay | Boolean | — | 是否自动开始滚动 |
事件:end;实例方法 play() / stop()。
扩展组件
ZOverlay 遮罩层
适用场景:独立的遮罩层,可插入任意内容。
<z-overlay :show="show" @click="show = false">可插入内容</z-overlay>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| show | Boolean | false | 显示 |
| z-index | Number | 1000 | 层级 |
| opacity | String/Number | '' | 遮罩透明度 |
| duration | Number | 300 | 动画时长 |
ZFab 悬浮按钮
适用场景:固定在角落的悬浮操作按钮,可展开子动作。
<z-fab :actions="[{ icon: 'camera', text: '拍照' }, { icon: 'photo', text: '相册' }]" @select="" />
<z-fab icon="plus" @click="onClick" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| icon / color | — | plus / primary | 主按钮 |
| actions | Array | [] | 子动作 [{ icon, text }],点击主按钮展开 |
| offset | Array | [40, 140] | 位置偏移 [right, bottom](rpx) |
| direction | String | — | 展开方向 up / down / left / right |
| disabled | Boolean | — | 禁用展开 |
事件:click(主按钮)/ select(index, action)。
ZSwipeCell 滑动单元格
适用场景:左右滑动露出操作按钮,跟手带阻尼。
<z-swipe-cell>
<z-cell title="左滑显示操作" value="内容" />
<template #right>
<view class="btn" @click="del">删除</view>
</template>
</z-swipe-cell>
插槽:left / right / default。支持触摸跟手、阻尼回弹、点击内容收回;v-model(false / true / 'right')、实例方法 close()。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Boolean/String | false | false 关闭 / true 左开 / 'right' 右开 |
| disabled | Boolean | false | 禁止滑动 |
插槽:left / right(操作按钮区)/ default(内容)。事件:open / close;实例方法 close()。
ZTabbar / ZTabbarItem 底部标签栏
适用场景:固定在页面底部的标签导航栏。
<z-tabbar v-model="tab"> <z-tabbar-item title="首页" icon="home" /> <z-tabbar-item title="购物车" icon="star" :badge="6" /> <z-tabbar-item title="我的" icon="user" /> </z-tabbar>
Tabbar:v-model、fixed / placeholder(默认 true,自动安全区)、border、active-color / inactive-color。Item:title、icon、dot、badge、icon 插槽(含 active 状态)。
ZTabbar 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | 0 | 当前选中索引 |
| fixed / placeholder | Boolean | true | 固定底部 / 生成占位(自动安全区) |
| border | Boolean | true | 顶部细线 |
| active-color / inactive-color | String | primary / text-3 | 文字与图标颜色 |
ZTabbarItem 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| title | String | '' | 文字 |
| icon | String | '' | 图标名 |
| dot | Boolean | false | 红点 |
| badge | String/Number | '' | 数字角标 |
| z-index | String | — | 标签栏层级 |
事件:change(index);icon 插槽带 active 状态。
ZPagination 分页器
适用场景:数据分页导航,自动省略号。
<z-pagination v-model="page" :total-items="100" :items-per-page="10" @change="onChange" />
也支持直接传 page-count。自动生成省略号页码。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | 1 | 当前页码 |
| total-items | Number | 0 | 数据总条数 |
| items-per-page | Number | 10 | 每页条数 |
| page-count | Number | 0 | 直接指定总页数(优先) |
事件:change(page)。
ZPopover 气泡
适用场景:点击元素弹出的气泡提示。
<z-popover content="气泡内容" placement="top" theme="dark">
<z-button size="small">点击我</z-button>
</z-popover>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| content | String | '' | 内容(也可用 content 插槽) |
| placement | String | top | top / bottom |
| theme | String | dark | dark / light |
| v-model:show | Boolean | false | 显示状态 |
事件:select(item) / select。
ZReadMore 文本展开
适用场景:长文本折叠显示,点击展开/收起。
<z-read-more :lines="2">{{ 长文本 }}</z-read-more>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| lines | Number | 2 | 收起时行数 |
| expand-text / collapse-text | String | 展开 / 收起 | 按钮文字 |
| content | String | — | 文本内容(也可用插槽) |
| color | String | — | 展开 / 收起按钮颜色 |
事件:expand / collapse。
ZWatermark 水印
适用场景:在页面或容器上平铺半透明水印文字。
<z-watermark content="仅供演示" :opacity="0.06" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| content | String | '' | 水印文字 |
| opacity | Number | 0.08 | 透明度 |
| rotate | Number | -20 | 旋转角度 |
| fullscreen | Boolean | true | 覆盖全屏(false 时覆盖父容器) |
| font-size / color / z-index | — | 26 / text-1 / 9999 | 样式 |
ZHighlight 高亮
适用场景:在文本中高亮关键词。
<z-highlight text="ZUI 轻量级跨端组件库" keywords="跨端" />
<z-highlight :text="title" :keywords="['ZUI', '组件']" color="#00b578" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | String | '' | 原始文本 |
| keywords | String/Array | '' | 高亮关键词,支持多个自动合并重叠 |
| color | String | danger | 高亮颜色 |
| font-size | String | — | 关键字字号(rpx) |
ZSticky 吸顶
适用场景:滚动到顶部时吸附固定。
<z-sticky :offset-top="0">
<view>滚动到顶部时吸附</view>
</z-sticky>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| offset-top | Number | 0 | 吸附距离(px) |
| z-index | String | — | 吸顶层层级 |
ZFooter 页脚
适用场景:页面底部的版权/链接区域。
<z-footer copyright="© 2026 ZUI">
<text>关于</text>
<text>协议</text>
</z-footer>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| copyright | String | Powered by ZUI | 版权文字 |
插槽:默认插槽放链接等自定义内容。
主题定制
覆盖 CSS 变量
/* App.vue 中 theme/index.scss 之后 */
page {
--z-primary: #7b61ff;
--z-radius-md: 12rpx;
}
暗黑模式
在页面根容器加 zui-dark 类,整个子树自动切换:
<template>
<view :class="{ 'zui-dark': dark }">
<!-- 所有 ZUI 组件随之切换 -->
</view>
</template>
变量清单
颜色 --z-primary --z-success --z-warning --z-danger --z-info
文字 --z-text-1 --z-text-2 --z-text-3 --z-text-white
背景 --z-bg --z-bg-2 --z-border --z-mask
圆角 --z-radius-sm --z-radius-md --z-radius-lg --z-radius-round
阴影 --z-shadow --z-shadow-lg
进阶组件
ZSorter 拖拽排序
适用场景:长按拖动调整列表顺序,跨行自动交换。
<z-sorter v-model="list" :item-height="96">
<template #item="{ item }">
<view class="row">{{ item.label }}</view>
</template>
</z-sorter>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Array | [] | 数据列表,拖动完成回传新顺序 |
| item-height | String/Number | 100 | 单项高度(rpx),拖拽排序要求等高 |
| item-key | String | id | 唯一键字段名 |
| long-press | Boolean | true | 长按 350ms 触发拖动 |
| disabled | Boolean | — | 禁用拖拽 |
事件:sort-start(index) / sort-end(index)。
ZDropdownMenu 下拉菜单
适用场景:列表顶部的筛选下拉菜单,单开互斥。
<z-dropdown-menu v-model="openIndex">
<z-dropdown-item v-model="sort" title="排序" :options="[{ text: '默认', value: 0 }, { text: '价格', value: 1 }]" />
<z-dropdown-item v-model="type" :options="allOptions" active-color="#00b578" />
</z-dropdown-menu>
Menu:v-model(展开的 item 索引,-1 关闭)。Item:v-model(选中值)、options([{ text, value }])、title(默认取选中项文字)、disabled、active-color、max-height。事件:change(value, option)。支持默认插槽自定义面板内容。
ZDropdownMenu 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Number | -1 | 当前展开的 item 索引(-1 全关) |
| background | String | bg-2 | 菜单栏背景 |
| z-index | Number | 996 | 面板层级 |
ZDropdownItem 参数
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Number | '' | 选中值 |
| options | Array | [] | [{ text, value, disabled }] |
| title | String | 选中项文字 | 菜单栏标题 |
| active-color | String | primary | 激活颜色 |
| max-height | String/Number | 600 | 面板最大高度(rpx) |
事件:change(value, option) / close(菜单收起);插槽 default 自定义面板内容。
ZPullRefresh 下拉刷新
适用场景:下拉触发刷新,基于原生 refresher 全端可用。
<z-pull-refresh v-model="refreshing" height="100vh" @refresh="onRefresh">
<view v-for="i in 20">条目 {{ i }}</view>
</z-pull-refresh>
基于 scroll-view 原生 refresher 实现(全端可用)。v-model 为刷新状态(刷新完成后置 false);height 滚动区高度;支持 refresher 插槽自定义下拉头部。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Boolean | false | 刷新状态(完成后置 false) |
| height | String/Number | 100vh | 滚动区高度 |
| threshold | Number | 60 | 触发下拉距离(px) |
| loading-color | String | primary | 转圈颜色 |
| disabled | Boolean | false | 禁用 |
事件:refresh / scroll;插槽 refresher 自定义下拉头部。
ZLiquid 水波进度球
适用场景:水波动画展示百分比进度。
<z-liquid :rate="65" />
<z-liquid :rate="30" color="#00b578" text="30%" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| rate | Number | 0 | 水位 0-100 |
| size | String/Number | 240 | 直径(rpx) |
| color / track-color | String | primary / bg | 水色 / 边框色 |
| text | String | '' | 中心文字(默认百分比) |
| text-size | String | — | 中间文字字号(rpx) |
双层旋转波纹动画,水位变化平滑过渡。
ZFitSwiper 自适应高度轮播
适用场景:每页高度随图片比例自动变化的轮播图。
<z-fit-swiper :list="['a.jpg', 'b.jpg']" :fallback-height="300" />
每页高度随图片宽高比自动变化,切换时高度平滑过渡。参数与 z-swiper 一致(autoplay/interval/circular/indicator 等),事件 change / click / loaded(index, ratio)。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| list | Array | [] | ['url'] 或 [{ image, title }] |
| autoplay / circular | Boolean | true | 自动播放 / 循环 |
| interval / duration | Number | 3000 / 500 | 间隔与动画时长(ms) |
| indicator | String | dots | dots / line / none |
| fallback-height | String/Number | 340 | 图片未加载时的兜底高度(rpx) |
| indicator-color | String | — | 指示点颜色 |
| indicator-active-color | String | — | 当前指示点颜色 |
事件:change(index) / click(index, item) / loaded(index, ratio)。
ZTree 树形控件
适用场景:层级数据的展开与选择,支持多级嵌套。
<z-tree :data="treeData" selectable :default-expanded="['n1']" @node-click="onNodeClick" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| data | Array | [] | [{ id, label, children: [] }] |
| node-key | String | id | 唯一键字段 |
| default-expanded | Array | [] | 默认展开节点 id |
| default-expand-all | Boolean | false | 展开全部 |
| selectable | Boolean | false | 点击选中高亮 |
事件:node-click(node) / expand(node, expanded)。支持 node 插槽自定义节点内容。
子组件 z-tree-node 为递归节点渲染单元(支持 depth 层级 prop 控制缩进),z-tree 内部已自动使用,一般无需单独引入。
ZTable 表格
适用场景:列数据表格,支持横向滚动与斑马纹。
<z-table
:columns="[{ key: 'name', title: '姓名', width: 180 }, { key: 'age', title: '年龄', width: 120, align: 'center' }]"
:data="rows"
stripe
@row-click="onRow"
/>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| columns | Array | [] | [{ key, title, width, align }],width 单位 rpx |
| data | Array | [] | 行数据 |
| stripe / border | Boolean | true | 斑马纹 / 边框 |
| clickable | Boolean | — | 行可点击(带按压态) |
插槽:cell(作用域 { row, column, index })、empty;事件:row-click(row, index)。横向内容超宽自动滚动。
ZAnchor 滚动锚点
适用场景:侧边锚点导航,点击定位 + 滚动自动高亮。
<z-anchor :list="[{ id: 'a', title: '推荐' }, { id: 'b', title: '热卖' }]" height="100vh">
<template #section="{ item }">区块内容</template>
</z-anchor>
右侧锚点导航(side 可选 left/right),点击滚动定位 + 滚动 scrollspy 自动高亮。事件:change(id)。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| list | Array | [] | [{ id, title }],区块内容由 section 插槽提供 |
| side | String | right | 锚点导航条位置 |
| height | String/Number | 100vh | 滚动区高度 |
| active-color | String | primary | 高亮颜色 |
事件:change(id)(滚动高亮变化)/ select。
ZLink 超链接
适用场景:应用内跳转、拨打电话、复制、外部浏览器。
<z-link text="拨打电话" href="10086" mode="phone" />
<z-link text="复制链接" href="https://..." mode="copy" />
<z-link text="外部浏览器" href="https://..." mode="browser" />
<z-link text="应用内跳转" href="/pages/detail/detail" mode="navigate" />
mode:navigate / browser(App 外部浏览器,H5 新窗口,小程序降级复制)/ copy / phone。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| text | String | '' | 展示文字(也可用插槽) |
| href | String | '' | 链接地址 / 电话号码 |
| mode | String | navigate | navigate / browser / copy / phone |
| color | String | primary | 文字颜色 |
| underline | Boolean | false | 下划线 |
| font-size | String | — | 文字字号(rpx) |
事件:click(点击链接)。
ZArea 省市区选择
适用场景:表单中选择省 / 市 / 区,小程序与 App 为原生三级选择。
<z-area v-model="region" @change="onChange" />
小程序 / App 端基于原生 picker mode="region",v-model 为 ['省', '市', '区'] 字符串数组。
H5 端平台差异:uni-h5 的 picker 不支持 region 模式(框架源码注明「暂不支持城市选择」),组件自动回退为内置省市两级级联选择(内置 34 个省级行政区 → 地级行政区 / 直辖市下辖区,无网络请求),v-model 为 ['省', '市']。如需完整三级或自定义区域,传入 data 树形数据即可(全平台生效)。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | Array | [] | ['省', '市', '区'](H5 回退为 ['省', '市']) |
| placeholder | String | 请选择省市区 | 占位文案 |
| separator | String | 空格 | 回显分隔符 |
| disabled | Boolean | false | 禁用 |
| data | Array | 内置省市数据 | 自定义区域树 [{ label, value, children }],传入后全平台走级联选择 |
事件:change(value, detail)(H5 端为 change(value))/ cancel。
ZClipper 图片裁剪
适用场景:全屏图片裁剪器,拖动 + 双指缩放,canvas 导出。
<z-clipper v-if="show" :src="imgSrc" @confirm="onConfirm" @cancel="show = false" />
全屏裁剪器:拖动调整位置、双指缩放,确认后经 canvas 导出临时文件路径(confirm(tempFilePath))。正方形裁剪框,比例可通过 crop-ratio 调整。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| src | String | '' | 要裁剪的图片地址 |
| crop-ratio | Number | 0.8 | 裁剪框占屏幕宽比例 |
| cancel-text / confirm-text | String | 取消 / 确定 | 按钮文字 |
事件:confirm(tempFilePath)(导出 PNG)/ cancel。全屏裁剪器:拖动调整位置、双指缩放、DPR 高清导出。
ZColorPicker 颜色选择器
适用场景:SV 面板 + 色相条 + 预设色板,纯 CSS 实现。
<z-color-picker v-model="color" @change="onChange" />
饱和度/明度面板 + 色相条 + 预设色板 + HEX/RGB 实时显示,纯 CSS 渐变实现(无 canvas)。v-model 为 '#RRGGBB'。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String | #3370ff | 十六进制颜色 |
| presets | Array | 内置色板 | 预设颜色数组 |
| custom-style | String/Object | '' | 自定义样式 |
事件:change(hex, rgb)。
ZCalendar 日历
适用场景:单选 / 多选 / 范围三种模式。
<z-calendar v-model="date" mode="single" />
<z-calendar v-model="range" mode="range" />
<z-calendar v-model="dates" mode="multiple" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String/Array | '' | single: 'YYYY-MM-DD';range: [起, 止];multiple: 数组 |
| mode | String | single | single / multiple / range |
| min / max | String | '' | 可选日期范围 'YYYY-MM-DD' |
事件:change(value)。支持年月切换、今天高亮、范围中间日浅色底,选中日期带主题色光圈;day 作用域插槽可自定义日期单元格(参数含 day/dateStr/selected/disabled)。
进阶组件(二)
ZKeyboard 虚拟键盘
适用场景:数字 / 身份证 / 车牌 / 自定义四种虚拟键盘。
<z-keyboard type="number" confirm-text="确定" @input="onKey" @delete="onDel" @confirm="onOk" />
<z-keyboard type="idcard" title="请输入身份证号" />
<z-keyboard type="plate" title="请输入车牌号" />
<z-keyboard type="custom" :custom-keys="[['7', '8', '9'], ['{del}', '0', '{confirm}']]" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| type | String | number | number 数字 / idcard 身份证(带 X)/ plate 车牌(省份+字母两页)/ custom 自定义 |
| custom-keys | Array | [] | 自定义键盘按键(按行二维数组),{del} 为删除键、{confirm} 为确认键 |
| title | String | '' | 顶部说明文字 |
| confirm-text | String | 确定 | 确认键文字 |
| safe-area-inset-bottom | Boolean | true | 底部安全区 |
事件:input(key) / delete / confirm / close。
ZCodeInput 验证码输入
适用场景:验证码 / 密码分段输入框,支持明文密文与自定义样式。
<z-code-input v-model="code" :length="4" @finish="onFinish" />
<z-code-input v-model="pwd" :length="6" :plaintext="false" mask-char="●" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model | String | '' | 已输入内容 |
| length | Number | 4 | 验证码位数 |
| plaintext | Boolean | true | false 时显示 mask-char 掩码 |
| mask-char | String | '' | 掩码字符(如 ●) |
| box-width / box-height | Number | 88 / 100 | 单格尺寸(rpx) |
| gutter | Number | 20 | 格间距(rpx) |
| cursor | Boolean | true | 显示闪烁光标 |
| border-color | String | — | 输入框边框颜色 |
| active-border-color | String | — | 输入进行中的边框颜色 |
| color | String | — | 文字颜色 |
| disabled | Boolean | — | 禁用输入 |
事件:finish(code)(输入满)/ input / focus / blur。
ZSignCalendar 签到日历
适用场景:数据驱动的签到打卡日历,支持补签与连续天数统计。
<z-sign-calendar :signed-dates="signed" allow-makeup @sign="onSign" @makeup="onMakeup" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| signed-dates | Array | [] | 已签到日期 ['YYYY-MM-DD'](数据驱动) |
| allow-makeup | Boolean | false | 允许补签(点击过去未签日期) |
| show-footer | Boolean | true | 底部说明 |
内置统计栏:累计签到 / 连续签到 / 今日状态。已签日期显示为蓝底白字日期 + 「已签」标记。事件:sign(date)(今日签到)/ makeup(date)(补签)/ month-change(y, m)。组件为数据驱动:点击后由父组件把日期 push 进 signed-dates(参考演示页),allow-makeup 为 false 时仅「今天」可触发 sign。
ZSignature 签名板
适用场景:手写签名板,支持撤销 / 重做 / 清空与压感模拟。
<z-signature :height="400" pen-color="#111827" @confirm="onConfirm" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pen-color | String | text-1 | 画笔颜色 |
| pen-size | Number | 3 | 画笔粗细(px) |
| background | String | #ffffff | 画布背景(导出图底色) |
| height | String/Number | 500 | 画布高度(rpx) |
| pressure | Boolean | true | 压感模拟(随书写速度变化线宽) |
| confirm-text | String | — | 确认按钮文字 |
支持 触摸与鼠标双输入(桌面 H5 可直接用鼠标签名);画布 CSS 尺寸恒为父容器的 100%(宽度自适应、不溢出屏幕),高度由 height(rpx)控制。
事件:confirm(tempFilePath)(导出签名图片)/ clear / first-draw。实例:撤销 / 重做 / 清空由内置工具栏提供。
ZTransition 过渡动画
适用场景:元素进入 / 离开的过渡动画封装,8 种动画类型。
<z-transition v-model:show="show" anim="fade-up" :duration="400">
<view>内容</view>
</z-transition>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| v-model:show | Boolean | false | 显示状态(控制进出动画) |
| anim | String | fade | fade / fade-up / fade-down / fade-left / fade-right / zoom / slide-left / slide-right |
| duration | Number | 300 | 时长(ms) |
| timing | String | ease | 缓动曲线 |
| offset | String/Number | 40 | 位移幅度(rpx) |
事件:before-enter / after-enter / before-leave / after-leave / click。
进阶组件(三)
ZQRCode 二维码
适用场景:生成二维码,内置编码算法无外部依赖,支持导出图片。
<z-qrcode value="https://uniapp.dcloud.net.cn" :size="360" />
<z-qrcode value="ZUI" fg-color="#3370ff" bg-color="#f0f4ff" level="H" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| value | String | '' | 二维码内容(网址 / 文本) |
| size | String/Number | 400 | 尺寸(rpx) |
| level | String | M | 纠错级别 L / M / Q / H |
| fg-color / bg-color | String | #000 / #fff | 前景 / 背景色 |
| margin | Number | 2 | 静区边距(模块数) |
| show-loading | Boolean | — | 生成期间是否显示 loading |
内置 qrcode-generator 编码算法(base64 无外部请求)。事件:ready(canvasId) / click;实例方法 exportImage(cb) 导出图片。
ZBarcode 条形码
适用场景:Code39 条形码,canvas 绘制,支持底部文字。
<z-barcode value="ZUI2026" :height="140" />
<z-barcode value="HELLO" color="#3370ff" :show-text="false" />
Code39 编码,canvas 绘制。value 支持大写字母 / 数字 / - . $ / + % 空格;height 条码高度(rpx);show-text 显示底部文字;color / bg-color 定制。
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| value | String | '' | 条码内容(大写字母 / 数字 / - . $ / + % 空格) |
| height | String/Number | 140 | 条码高度(rpx) |
| color / bg-color | String | #000 / #fff | 颜色 |
| show-text | Boolean | true | 显示底部文字 |
事件:ready(canvasId) / click。
ZChart 轻量图表
适用场景:canvas 自绘轻量图表:折线 / 柱状 / 饼图,无需 echarts 依赖。
<z-chart type="line" :labels="['1月', '2月']" :series="[{ name: '销量', data: [320, 402] }]" />
<z-chart type="bar" :labels="labels" :series="series" />
<z-chart type="pie" :labels="pieLabels" :series="pieSeries" :height="420" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| type | String | line | line 折线 / bar 柱状 / pie 饼图 |
| labels | Array | [] | X 轴标签 / 扇区名 |
| series | Array | [] | [{ name, data: [] }] |
| colors | Array | 内置色板 | 系列颜色 |
| height | String/Number | 480 | 高度(rpx) |
| show-legend | Boolean | true | 图例(pie) |
canvas 自绘轻量实现,无 echarts 依赖;需要复杂交互图表时可配合 renderjs 引入 echarts。
ZWaterfall 瀑布流
适用场景:按累计高度均衡分列的瀑布流布局。
<z-waterfall :list="items" :columns="2">
<template #item="{ item }">
<view>卡片内容(图片 + 文字)</view>
</template>
</z-waterfall>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| list | Array | [] | 数据项,建议含 height 字段(高度估计值,用于均衡分列) |
| columns | Number | 2 | 列数 |
| gap | Number | 16 | 间距(rpx) |
| item-key | String | — | 数据唯一键字段(默认 id) |
| clickable | Boolean | — | 项可点击(带按压态) |
事件:item-click(item)。
ZCascader 级联选择
适用场景:多级联动的树形选择弹窗。
<z-cascader v-model:show="show" v-model="values" :options="treeOptions" title="选择地区" @finish="onFinish" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| options | Array | [] | 树形选项 [{ label, value, children }],叶子节点可无 children |
| v-model | Array | [] | 各级选中值数组 |
| title | String | '' | 标题 |
| list-height | String/Number | 600 | 列表高度(rpx) |
| active-color | String | — | 选中项与高亮颜色 |
顶部面包屑可点击回退层级。事件:finish(values, labels) / change。
事件:cancel(取消选择关闭弹层)。
ZDatetimePicker 时间选择
适用场景:表单中选择日期、时间或日期时间,底部弹窗式选择。
<z-datetime-picker v-model:show="show" v-model="dt" mode="datetime" @confirm="onOk" />
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| mode | String | datetime | date / time / datetime |
| v-model | String | '' | date: 'YYYY-MM-DD';time: 'HH:mm';datetime: 'YYYY-MM-DD HH:mm' |
| min / max | String | '' | 可选范围(与 v-model 同格式) |
| title | String | — | 弹窗标题 |
| confirm-text | String | — | 确认按钮文字 |
| cancel-text | String | — | 取消按钮文字 |
| visible-item-count | String | — | 可见选项行数 |
事件:confirm(value) / cancel / change。
ZConfetti 彩带
适用场景:canvas 粒子彩带庆祝动画,支持自定义颜色与数量。
<z-confetti ref="confetti" :particle-count="120" />
<z-button @click="$refs.confetti.fire()">放彩带</z-button>
| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
| particle-count | Number | 80 | 粒子数量 |
| colors | Array | 内置色板 | 彩带颜色 |
| fullscreen | Boolean | true | 覆盖全屏 |
| z-index | String | — | 粒子层层级 |
实例方法:fire({ x, y, particleCount, colors })(x/y 为屏幕坐标)、stop();事件:done。canvas 粒子物理动画(重力 + 旋转),自动回收。
常见问题
Q:调用 toast() 没反应?
未放置 <z-toast /> 时会自动降级为 uni.showToast 原生提示(<z-dialog /> / <z-action-sheet /> 同理,降级为 uni.showModal / uni.showActionSheet),功能不受影响;若提示一闪而过,请检查是否误传了 duration: 0 或被 toast.loading 占用未 hide。
Q:sass 报 "Can't find stylesheet to import"?
不要在 uni.scss 中 @import 'uni_modules/...'。组件已自包含;如需 SCSS 变量,请在对应文件的 <style lang="scss"> 中 @import '@/uni_modules/zdd-zui/theme/var.scss';。
Q:对话框/动作面板不显示?
检查 <script setup> 中导入的函数名是否为 showDialog / showActionSheet。若变量名与组件标签的驼峰形式同名(如 zDialog),Vue 会把 <z-dialog> 标签编译为该变量导致组件无法渲染。
Q:修改后不生效?
HBuilderX 的编译缓存可能滞后,请删除项目 unpackage 目录后重新运行。
更新日志
详见 changelog.md。
许可证
MIT,可免费商用。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 1
赞赏 0
下载 12642080
赞赏 1950
赞赏
京公网安备:11010802035340号