Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Warnier-zhang/Vuetify3-Plus

A useful complement and improvement to Vuetify 3
https://github.com/Warnier-zhang/Vuetify3-Plus

Last synced: 6 days ago
JSON representation

A useful complement and improvement to Vuetify 3

Awesome Lists containing this project

README

        

# Vuetify3 Plus

顾名思义,Vuetify3 Plus,不是一套全新的UI框架,而是对Vuetify 3的补充和加强。

在我们把Vuetify从v2升级到v3的时候,Vuetify的最新版本是3.3.x,此时的组件库还不够完备,`VDataTable`、`VDatePicker`等尚在Labs积极开发中,`VTimePicker`、`VTreeView`等还不见踪影,而上述组件对To B应用来说是不可或缺的,加上部分组件不匹配我们的使用习惯,为了:

* 进一步扩大组件库;
* 补位尚在规划、开发中的组件;
* 提升组件的可用性、易用性;

我们只好自己动手寻找合适的替代品、扩展现有的组件库,最终的成果就是——Vuetify3 Plus,后期基于Vuetify 3.4.0+,部分组价(或灵感)来自于Element Plus和Quasar。

组件名称前缀——“C”,可以解释成“Core”、“Common”;

## 安装方法

1. 克隆Vuetify3-Plus项目源码:

```
git clone https://github.com/Warnier-zhang/Vuetify3-Plus.git
```

2. 编译、打包项目:

```
npm install && npm run build
```

3. 在新项目中,编辑`package.json`文件,引入Vuetify3 Plus,并安装:

```
package.json
---
"dependencies": {
...
"vuetify3-plus": "file:../Vuetify3-Plus",
...
}

npm install
```

### 运行示例

在克隆下来的项目源码中,执行`npm run dev`脚本,然后,访问http://localhost:5173

## 使用指南
### 表格(3)

#### 增删改查表格(CCrudTable)

扩展自`VDataTableServer`组件,在保留`VDataTableServer`用法、优点的基础上,参考**EasyUI**、**miniUI**时代的`DataGrid`,进一步封装查询、新增、更新、删除、过滤、刷新、导出Excel等操作逻辑。

```

...


...


...


...


...

```

[完整的示例参考Table1.vue](./src/demos/Table1.vue)

效果图:

![CCrudTable](./images/c-crud-table1.png)

![CCrudTable](./images/c-crud-table2.png)

![CCrudTable](./images/c-crud-table3.png)

![CCrudTable](./images/c-crud-table4.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| -------------------- | ------------------------------------------------------------ | --------- | -------- |
| `title` | 标题 | `string` | `null` |
| `columns` | 表头列,同`VDataTableServer`的`headers`属性 | `array` | `[]` |
| `total` | 数据集总数,同`VDataTableServer`的`items-length`属性 | `array` | `0` |
| `data` | 数据集记录,同`VDataTableServer`的`items`属性 | `array` | `[]` |
| `showIndex` | 是否显示序号列 | `boolean` | `true` |
| `fixedIndex` | 是否固定序号列 | `boolean` | `false` |
| `showOperation` | 是否显示操作列 | `boolean` | `true` |
| `showIconBtn` | 是否显示图标按钮 | `boolean` | `false` |
| `showAddBtn` | 是否显示新增按钮 | `boolean` | `true` |
| `showRefreshBtn` | 是否显示刷新按钮 | `boolean` | `false` |
| `showFilterBtn` | 是否显示过滤按钮 | `boolean` | `true` |
| `showExportBtn` | 是否显示导出按钮 | `boolean` | `false` |
| `exportExcel` | 是否以Excel形式导出 | `boolean` | `true` |
| `showUpdateBtn` | 是否显示更新按钮 | `boolean` | `true` |
| `showDeleteBtn` | 是否显示删除按钮 | `boolean` | `true` |
| `loadItemsUrl` | 加载记录API地址,返回值必须包含`total`、`items`属性,例如:`{total: 10, items: [{...}, ...]}` | `string` | `null` |
| `loadItemsImmediate` | 是否立即加载 | `boolean` | `true` |
| `filterCondition` | 默认的过滤条件 | `object` | `{}` |
| `addItemUrl` | 新增记录API地址 | `string` | `null` |
| `updateItemUrl` | 更新记录API地址 | `string` | `null` |
| `removeItemUrl` | 删除记录API地址 | `string` | `null` |
| `rowKey` | 记录ID对应的属性 | `string` | `null` |
| `rowTitle` | 记录名称对应的属性 | `string` | `null` |
| `sortMode` | 排序模式,可选值有`client`、`server`,支持客户端、服务端排序 | `string` | `server` |
| `sortKey` | 默认的排序属性 | `string` | `null` |
| `sortOrder` | 默认的排序顺序 | `string` | `null` |
| `disablePagination` | 是否禁用分页 | `boolean` | `false` |
| `widthPadding` | 多余的宽度,用于计算表格宽度,实现宽度自适应 | `number` | `-1` |
| `heightPadding` | 多余的高度,用于计算表格高度,实现高度自适应 | `number` | `-1` |

* 其中,`columns`属性:

* 同`VDataTableServer`的`headers`属性;

* | 名称 | 描述 | 类型 | 默认值 |
| ------------ | ------------------------------------------------------------ | ---------- | ----------- |
| `type` | 列类型,若值为`code`,则是代码类型,代码列的最终显示由`codes`,或`url`加载到代码集确定 | `string` | `null` |
| `codes` | 代码集 | `array` | `[]` |
| `url` | 代码集API地址,若`codes`的值不为空,则以`codes`的值为主 | `string` | `null` |
| `codesRef` | 与其他代码列共享代码集,值同属性`key` | `string` | `null` |
| `codeName` | 代码名称对应的属性 | `string` | `null` |
| `codeValue` | 代码值对应的属性 | `string` | `null` |
| `renderable` | 是否允许自定义列显示效果,需要配合`item.${string}`插槽一起使用 | `boolean` | `false` |
| `hidden` | 列是否隐藏 | `boolean` | `false` |
| `editable` | 列是否允许编辑 | `boolean` | `true` |
| `default` | 列的默认值,**用于新增** | `function` | `undefined` |
| `converter` | 列的值转换器,**用于新增、更新** | `function` | `undefined` |
| `exportable` | 列是否允许导出 | `boolean` | `true` |
| `excelValue` | 列的值转换器,**用于导出** | `function` | `undefined` |

* 事件

* | 名称 | 描述 | 参数 |
| -------------- | -------------------- | ------------------------------------------------------------ |
| `load` | 在加载记录**时**触发 | `{conditions: 过滤条件, sortState: 排序方式, page: 页码, size: 每页条数}` |
| `after-load` | 在加载记录**后**触发 | `{total: 总数, items: 记录,conditions: 过滤条件, sortState: 排序方式, page: 页码, size: 每页条数}` |
| `add` | 在新增记录**时**触发 | `{editedItem: 编辑的记录, conditions: 过滤条件, sortState: 排序方式}` |
| `after-add` | 在新增记录**后**触发 | |
| `update` | 在更新记录**时**触发 | `{editedItem: 编辑的记录, conditions: 过滤条件, sortState: 排序方式}` |
| `after-update` | 在更新记录**后**触发 | |
| `remove` | 在删除记录**时**触发 | `{id: 记录ID, conditions: 过滤条件, sortState: 排序方式}` |
| `after-remove` | 在删除记录**后**触发 | |
| `export` | 在导出记录**时**触发 | `{items: 记录,conditions: 过滤条件}` |

* 插槽

* | 名称 | 描述 | 作用域 |
| ---------------------- | ------------------------------------------ | ------------------------------------------------------------ |
| `title` | 表格名称 | |
| `more-operations` | 标题栏除了新增、刷新、导出额外的操作 | `{items: 记录}` |
| `top` | 表格上方区域 | |
| `item.${string}` | 同`VDataTableServer`的插槽`item.${string}` | `{item: 当前记录, value: 值}` |
| `item.more-operations` | 记录行除了更新、删除额外的操作 | `{item: 当前记录}` |
| `filter` | 过滤表单 | `{conditions: 过滤条件}` |
| `editor` | 编辑表单 | `{editorType: add(新增) / update(更新), editedItem: 编辑的记录}` |
| `bottom` | 表格下方区域 | `{total: 总数, items: 记录, page: 页数, size: 每页数目}` |

* 方法

* | 名称 | 描述 | 参数 | 返回值 |
| --------------- | ------------ | ------------------------------------- | ------ |
| `reload` | 重新加载记录 | | |
| `onAddClick` | 打开新增弹窗 | `title: 标题` | |
| `onUpdateClick` | 打开编辑弹窗 | `item: 编辑的记录`
`title: 标题` | |

#### (虚拟滚动)增删改查表格(CCrudTableV2)

扩展自`VDataTableVirtual`组件,扩展内容同`CCrudTable`。

```

...

```

[完整的示例参考Table2.vue](./src/demos/Table2.vue)

* 属性
* 同`CCrudTable`;
* 事件

* 同`CCrudTable`;
* 插槽

* 同`CCrudTable`;
* 方法
* 同`CCrudTable`;

### 交互(3)

#### 消息框(CMessage)

```
import {CMessage} from 'vuetify3-plus';

CMessage.success('Hello, World');
CMessage.info('Hello, World');
CMessage.warning('Hello, World');
CMessage.error('Hello, World');
```

* 属性

* 无;

* 事件

* 无;

* 插槽

* 无;

* 方法

| 名称 | 描述 | 参数 | 返回值 |
| --------- | --------------------- | ---------- | ------ |
| `success` | 显示`success`类型消息 | `[string]` | 无 |
| `info` | 显示`info`类型消息 | `[string]` | 无 |
| `warning` | 显示`warning`类型消息 | `[string]` | 无 |
| `error` | 显示`error`类型消息 | `[string]` | 无 |

#### 弹出框(CModal)

用于替代`window.alert`、`window.confirm`和`window.prompt`。

```
import {CModal} from 'vuetify3-plus';

CModal.alert({
title: 'Alert',
message: 'Hello, World',
});

CModal.confirm({
title: 'Confirm',
message: 'Are you OK?',
onOkClick() {
CMessage.success('Yes');
},
onCancelClick() {
CMessage.error('No');
},
});

CModal.prompt({
title: 'Prompt',
message: 'Please input numbers:',
onOkClick(input) {
CMessage.success(`Numbers are ${input}`);
},
onCancelClick() {
CMessage.error('Cancel');
},
});
```

* 属性

* 无;

* 事件

* 无;

* 插槽

* 无;

* 方法

| 名称 | 描述 | 参数 | 返回值 |
| --------- |-------------| ---------- | ------ |
| `alert` | 显示警告弹窗,并等待用户关闭 | `[object]` | 无 |
| `confirm` | 显示确认弹窗,并等待用户确定 | `[object]` | 无 |
| `prompt` | 显示输入弹窗,并返回用户输入结果 | `[object]` | 无 |

参数说明:

```
{
title: 标题,
message: 消息,
onOkClick: 回调函数,当用户点击确定按钮时触发,
onCancelClick: 回调函数,当用户点击取消按钮时触发,
}
```

#### 加载(CLoading)

```
import {CLoading} from 'vuetify3-plus';

CLoading.open();
CLoading.close();
```

* 属性

* 无;

* 事件

* 无;

* 插槽

* 无;

* 方法

| 名称 | 描述 | 参数 | 返回值 |
| ------- | -------- | ---- | ------ |
| `open` | 显示加载 | 无 | 无 |
| `close` | 关闭加载 | 无 | 无 |

### 表单(11)

#### 密码(CPassword)

```

```
效果图:

![CPassword](./images/c-password.png)

* 属性
* 同`VTextField`;
* 事件
* 同`VTextField`;
* 插槽
* 无;
* 方法
* 无;

#### 验证码(CCaptcha)
```

```
效果图:

![CCaptcha](./images/c-captcha.png)

* 属性

* 同`VTextField`;

* | 名称 | 描述 | 类型 | 默认值 |
| ----- | -------------- | -------- | ------ |
| `url` | 验证码图片地址 | `string` | `null` |

* 事件
* 同`VTextField`;

* 插槽
* 无;

* 方法
* 无;

#### 邮件(CEmail)
邮件地址输入自动补全。
```

```
效果图:

![CEmail](./images/c-email.png)

* 属性

* 同`VTextField`;

* | 名称 | 描述 | 类型 | 默认值 |
| --------- | ---------- | ------- | ------------------------------------------------------------ |
| `servers` | 邮件服务器 | `array` | `['gmail.com', 'qq.com', '163.com', 'vip.163.com', '126.com', 'vip.126.com', 'outlook.com', 'hotmail.com', 'foxmail.com', '139.com', '188.com']` |

* 事件
* 同`VTextField`;

* 插槽
* 无;

* 方法
* 无;

#### 日期选择(CDatePicker)
```

```
效果图:

![CDatePicker](./images/c-datepicker.png)

* 属性
* 同`VTextField`;
* 事件
* 同`VTextField`;
* 插槽
* 无;
* 方法
* 无;

#### 日期时间选择(CDatetimePicker)
```

```
效果图:

![CDatetimePicker](./images/c-datetimepicker.png)

* 属性

* 同`VTextField`;

* | 名称 | 描述 | 类型 | 默认值 |
| ------------ | -------------------------------------------------------- | --------- | ------------ |
| `pickSecond` | 是否允许选择秒 | `boolean` | `false` |
| `dateFormat` | 日期格式 | `string` | `yyyy-MM-dd` |
| `timeFormat` | 时间格式,值可由用户自定义,或者根据`pickSecond`的值变化 | `string` | `HH:mm` |

* 事件
* 同`VTextField`;

* 插槽
* 无;

* 方法
* 无;

#### 级联选择(CCascader)
```

```
效果图:

![CCascader](./images/c-cascader.png)

* 属性

* 同`VTextField`;

* | 名称 | 描述 | 类型 | 默认值 |
| -------------- | ------------------------------------------------------- | --------- | ---------- |
| `items` | 数据集 | `array` | `[]` |
| `url` | 数据集API地址,若`items`的值不为空,则以`items`的值为主 | `string` | `null` |
| `itemId` | 数据项的值对应属性 | `string` | `id` |
| `itemTitle` | 数据项名称对应属性 | `string` | `title` |
| `itemChildren` | 数据项子集对应属性 | `string` | `children` |
| `multiple` | 是否允许多选 | `boolean` | `false` |

* 事件
* 同`VTextField`;

* 插槽
* 无;

* 方法
* 无;

#### 树形选择(CTree)

```

```

效果图:

![CTree](./images/c-tree.png)

* 属性

* 同`CCascader`;

* | 名称 | 描述 | 类型 | 默认值 |
| ------------ | ------------------------------------------------------------ | --------- | ------- |
| `simple` | 是否支持简单数据格式,例如:`[{id: 1, title: "蔬菜"}, {id: 11, pid: 1, title: "白菜"}...]` | `boolean` | `false` |
| `itemParent` | 数据项父记录对应属性 | `string` | `pid` |

* 事件

* 同`CCascader`;

* 插槽

* 无;

* 方法

* 无;

#### 下拉选择(CSelect)

> 选择类的组件,如VSelect、VAutocomplete等,鉴于它们的属性、数据结构类似,并且,对它们有部分相同的扩展需求——比如通过URL加载数据,返回选中项的名称等,因此,创建了一个无渲染组件——BaseSelect来达到上述目的。

```

```

* 属性

* 同`VSelect`;

* | 名称 | 描述 | 类型 | 默认值 |
| ----------- | ------------------------------------------------------- | -------- | ------- |
| `items` | 数据集 | `array` | `[]` |
| `url` | 数据集API地址,若`items`的值不为空,则以`items`的值为主 | `string` | `null` |
| `itemValue` | 数据项的值对应属性 | `string` | `value` |
| `itemTitle` | 数据项名称对应属性 | `string` | `title` |

* 事件

* 同`VSelect`;

* 插槽

* 无;

* 方法

* 无;

#### 自动补全(CAutocomplete)

```

```

* 属性
* 同`VAutocomplete`和`CSelect`;
* 事件
* 同`VAutocomplete`;
* 插槽
* 无;
* 方法
* 无;

#### 纸片组(CChipGroup)

```

```

效果图:

![CChipGroup](./images/c-chipgroup.png)

* 属性
* 同`VChipGroup`和`CSelect`;
* 前缀是`chip-`的属性同`VChip`;
* 事件
* 同`VChipGroup`;
* 插槽
* 无;
* 方法
* 无;

#### 上传文件(CFileUpload)

与`VFileInput`仅是一个输入框不同,`CFileUpload`能够识别文件类型,若文件是图片,则允许预览,否则支持下载。

```

```

效果图:

![CFileUpload](./images/c-fileupload1.png)

![CFileUpload](./images/c-fileupload2.png)

![CFileUpload](./images/c-fileupload3.png)

* 属性

* 同`VFileInput`;

* | 名称 | 描述 | 类型 | 默认值 |
| --------------- | ------------------------------------------------------------ | -------- | ------ |
| `uploadFileUrl` | 文件上传地址,该API需要接收参数`upload`,返回文件信息,文件信息包含名称、缩略图、类型等。文件类型同MIME。 | `string` | `null` |
| `browseFileUrl` | 文件预览、下载地址,该API需要接收参数`id`(文件ID),并且支持`HEAD`方法,响应头中包含文件信息`file-info`。 | `string` | `null` |

* 事件

* 同`VFileInput`;

* 插槽

* 无;

* 方法

* 无;

### 图表(8)

> 图表类的组件,如CLineChart、CPieChart等,鉴于它们的属性、数据结构类似,并且,对它们有部分相同的扩展需求——比如通过URL加载数据,锁定宽高比、本地化等,因此,创建了一个公共的组件——BaseChart来达到上述目的。

#### 折线图(CLineChart)

```

```

效果图:

![CLineChart](./images/c-line-chart.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| --------------- | ------------------------------------------------------------ | ------------------ | ----------- |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `xAxisType` | X轴类型,值同ECharts的`xAxis. type`属性 | `string` | `category` |
| `xAxisTitle` | X轴名称 | `string` | `null` |
| `xAxisScale` | X轴是否不从0开始 | `boolean` | `false` |
| `yAxisType` | Y轴类型,值同ECharts的`yAxis. type`属性 | `string` | `value` |
| `yAxisTitle` | Y轴名称 | `string` | `null` |
| `yAxisScale` | Y轴是否不从0开始 | `boolean` | `false` |
| `yAxisUnit` | Y轴单位 | `string` | `null` |
| `yAxisMin` | Y轴最小值 | `string`、`number` | `null` |
| `yAxisMax` | Y轴最大值 | `string`、`number` | `null` |
| `series` | 数据集,`key-value`方式 | `array` | `[]` |
| `url` | 数据集API访问地址,若`series`的值不为空,则以`series`的值为主 | `string` | `null` |
| `itemSerieName` | 序列名称对应的属性 | `string` | `serieName` |
| `itemName` | 点名称对应的属性 | `string` | `name` |
| `nameTitle` | 点名称的标题,**适用于气泡图** | `string` | `''` |
| `itemX` | X轴对应的属性 | `string` | `x` |
| `itemY` | Y轴对应的属性 | `string` | `y` |
| `itemZ` | Z轴对应的属性,配合`pointSize`属性,用于确定气泡大小,**适用于气泡图** | `string` | `null` |
| `pointSize` | 气泡大小 | `number` | `10` |
| `aspectRatio` | 宽高比 | `string`、`number` | `auto` |
| `multiple` | 是否支持多个序列 | `boolean` | `false` |
| `showPoint` | 是否显示点 | `boolean` | `true` |
| `showLegend` | 是否显示图例 | `boolean` | `false` |
| `lines` | 划线 | `array` | `[]` |
| `smooth` | 是否显示平滑曲线,**适用于折线图、面积图** | `boolean` | `false` |
| `steped` | 是否显示梯形折线,**适用于折线图、面积图** | `boolean` | `false` |
| `stacked` | 是否折叠,**适用于柱形图** | `boolean` | `false` |
| `exponent` | 数量级,**适用于气泡图**。气泡图中气泡的大小由`itemY`的值决定,`10^exponent`用于缩放 | `string`、`number` | `1` |

* 事件

* 无;

* 插槽

* 无;

* 方法

* 无;

#### 面积图(CAreaChart)

```

```

效果图:

![CAreaChart](./images/c-area-chart.png)

* 属性

* 同`CLineChart`;
* 事件

* 无;
* 插槽

* 无;
* 方法

* 无;

#### 柱形图(CColumnChart)

```

```

效果图:

![CColumnChart](./images/c-column-chart.png)

* 属性

* 同`CLineChart`;
* 事件

* 无;
* 插槽

* 无;
* 方法

* 无;

#### 气泡图(CBubbleChart)

```

```

效果图:

![CBubbleChart](./images/c-bubble-chart.png)

* 属性

* 同`CLineChart`;
* 事件

* 无;
* 插槽

* 无;
* 方法

* 无;

#### 饼图(CPieChart)

```

```

效果图:

![CPieChart](./images/c-pie-chart.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ------------- | ------------------------------------------------------------ | ------------------ | ------- |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `series` | 数据集,`key-value`方式 | `array` | `[]` |
| `url` | 数据集API访问地址,若`series`的值不为空,则以`series`的值为主 | `string` | `null` |
| `itemName` | 名称对应的属性 | `string` | `name` |
| `itemValue` | 值对应的属性 | `string` | `value` |
| `valueUnit` | 值的单位 | `string` | `''` |
| `aspectRatio` | 宽高比 | `string`、`number` | `auto` |
| `showLegend` | 是否显示图例 | `boolean` | `false` |
| `rounded` | 是否显示圆角分割 | `boolean` | `false` |

* 事件

* 无;

* 插槽

* 无;

* 方法

* 无;

#### 环形图(CDonutChart)

```

```

效果图:

![CDonutChart](./images/c-donut-chart.png)

* 属性

* 同`CPieChart`;
* 事件

* 无;
* 插槽

* 无;
* 方法

* 无;

#### 半环形图(CHalfDonutChart)

```

```

效果图:

![CHalfDonutChart](./images/c-half-donut-chart.png)

* 属性

* 同`CPieChart`;
* 事件

* 无;
* 插槽

* 无;
* 方法

* 无;

#### 鸡冠花图(CCoxcombChart)

```

```

效果图:

![CCoxcombChart](./images/c-coxcomb-chart.png)

* 属性

* 同`CPieChart`;
* 事件

* 无;
* 插槽

* 无;
* 方法

* 无;

### 统计(7)

#### v1(CStat1)

```

```

效果图:

![CStat1](./images/c-stat1.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | ------ | -------- | ------ |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `text` | 文本 | `string` | `null` |

* 事件

* 无;

* 插槽

* | 名称 | 描述 | 作用域 |
| ---------- | ------ | ------ |
| `title` | 标题 | 无 |
| `subtitle` | 副标题 | 无 |
| `text` | 文本 | 无 |

* 方法

* 无;

#### v2(CStat2)

```

```

效果图:

![CStat2](./images/c-stat2.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | ------------ | -------- | ------ |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `text` | 文本 | `string` | `null` |
| `icon` | 图标 | `string` | `null` |
| `color` | 颜色(图标) | `string` | `null` |

* 事件

* 无;

* 插槽

* | 名称 | 描述 | 作用域 |
| ------- | ---- | ------ |
| `title` | 标题 | 无 |
| `icon` | 图标 | 无 |
| `text` | 文本 | 无 |

* 方法

* 无;

#### v3(CStat3)

```

```

效果图:

![CStat3](./images/c-stat3.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | -------------- | ------------------ | ------ |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `color` | 颜色(进度条) | `string` | `null` |
| `actual` | 实际值 | `string`、`number` | `null` |
| `expected` | 预期值 | `string`、`number` | `null` |

* 事件

* 无;

* 插槽

* | 名称 | 描述 | 作用域 |
| ---------- | ------ | ------ |
| `title` | 标题 | 无 |
| `subtitle` | 副标题 | 无 |

* 方法

* 无;

#### v4(CStat4)

```

```

效果图:

![CStat4](./images/c-stat4.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | ------------------ | -------- | ------ |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `text` | 文本 | `string` | `null` |
| `emphasis` | 强调 | `string` | `null` |
| `color` | 颜色(标记、强调) | `string` | `null` |

* 事件

* 无;

* 插槽

* | 名称 | 描述 | 作用域 |
| ---------- | ------ | ------ |
| `title` | 标题 | 无 |
| `subtitle` | 副标题 | 无 |
| `text` | 文本 | 无 |
| `emphasis` | 强调 | 无 |

* 方法

* 无;

#### v5(CStat5)

```

```

效果图:

![CStat5](./images/c-stat5.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | ------------ | -------- | ------ |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `text` | 文本 | `string` | `null` |
| `icon` | 图标 | `string` | `null` |
| `color` | 颜色(图标) | `string` | `null` |

* 事件

* 无;

* 插槽

* 暂无;

* 方法

* 无;

#### v6(CStat6)

```

```

效果图:

![CStat6](./images/c-stat6.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | ------------------------------------------------------------ | --------- | ---------- |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `icon` | 图标 | `string` | `null` |
| `color` | 颜色(图标) | `string` | `null` |
| `rounded` | 形状是否是圆角矩形,默认圆形 | `boolean` | `true` |
| `variant` | 变体,可选值有`flat`、`text`、`elevated`、`tonal`、`outlined`、`plain`等 | `string` | `elevated` |

* 事件

* 无;

* 插槽

* | 名称 | 描述 | 作用域 |
| ---------- | ------ | ------ |
| `title` | 标题 | 无 |
| `subtitle` | 副标题 | 无 |
| `icon` | 图标 | 无 |

* 方法

* 无;

#### v7(CStat7)

```

```

效果图:

![CStat7](./images/c-stat7.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | ------------------ | --------- | ------- |
| `title` | 标题 | `string` | `null` |
| `subtitle` | 副标题 | `string` | `null` |
| `avatar` | 是否显示头像 | `boolean` | `false` |
| `icon` | 图标 | `string` | `null` |
| `color` | 颜色(头像、图标) | `string` | `null` |
| `btnText` | 按钮文本 | `string` | `null` |
| `btnColor` | 按钮颜色 | `string` | `null` |

* 事件

* 无;

* 插槽

* 暂无;

* 方法

* 无;

### 其他(5)

#### 图片(CImg)

结合`VImg`和`v-viewer`,支持放大缩小、旋转、翻转图片等。

```

```

效果图:

![CImg](./images/c-img1.png)

![CPassword](./images/c-img2.png)

* 属性
* 同`VImg`;
* 事件
* 同`VImg`;
* 插槽
* 无;
* 方法
* 无;

#### 链接(CAnchor)

```

```

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ---------- | -------- | --------- | ------- |
| `text` | 名称 | `string` | `null` |
| `href` | 链接 | `string` | `null` |
| `disabled` | 是否禁用 | `boolean` | `false` |
| `hint` | 提示 | `string` | `null` |

* 事件

* 无;

* 插槽

* 无;

* 方法

* 无;

#### 标签(CLabel)

```

```

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ----------- | ------------------------------------------------------- | -------- | ------- |
| `value` | 值 | `any` | `null` |
| `items` | 数据集 | `array` | `[]` |
| `url` | 数据集API地址,若`items`的值不为空,则以`items`的值为主 | `string` | `null` |
| `itemTitle` | 数据项的值对应属性 | `string` | `title` |
| `itemValue` | 数据项名称对应属性 | `string` | `value` |

* 事件

* 无;

* 插槽

* 无;

* 方法

* 无;

#### 旋转器(CSpinner)

参考Quasar框架实现。

```


```

效果图:

![CSpinner](./images/c-spinner.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| ----------- | -------- | ------------------ | --------- |
| `color` | 颜色 | `string` | `primary` |
| `size` | 尺寸大小 | `string`、`number` | `1em` |
| `thickness` | 粗细程度 | `number` | `5` |

* 事件

* 无;

* 插槽

* 无;

* 方法

* 无;

#### 富文本编辑器(CCKEditor5)

```

```

效果图:

![CCKEditor5](./images/c-ckeditor5.png)

* 属性

* | 名称 | 描述 | 类型 | 默认值 |
| --------------- | ------------------------------------------------------------ | -------- | ----------- |
| `modelValue` | 值 | `string` | `null` |
| `adapter` | 文件上传适配器,可选的值有`simple`,`ckeditor5`。若值为`simple`时,则使用CKEditor 5内置的`SimpleUploadAdapter`。 | `string` | `ckeditor5` |
| `uploadFileUrl` | 文件上传地址,当`adapter`的值为`ckeditor5`时,该API需要接收参数`upload`,返回文件信息。 | `string` | `null` |
| `browseFileUrl` | 文件预览、下载地址,当`adapter`的值为`ckeditor5`时,该API需要接收参数`id`(文件ID)。 | `string` | `null` |

* 事件

* 无;

* 插槽

* 无;

* 方法

* | 名称 | 描述 | 参数 | 返回值 |
| --------- | ------------------------------ | ---- | -------- |
| `getHtml` | 获取HTML,同属性`modelValue`。 | 无 | `string` |
| `getText` | 获取纯文本。 | 无 | `string` |