Vuetify3 Plus

December 3, 2024 · View on GitHub

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

在我们把Vuetify从v2升级到v3的时候,Vuetify的最新版本是3.3.x,此时的组件库还不够完备,VDataTableVDatePicker等尚在Labs积极开发中,VTimePickerVTreeView等还不见踪影,而上述组件对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用法、优点的基础上,参考EasyUIminiUI时代的DataGrid,进一步封装查询、新增、更新、删除、过滤、刷新、导出Excel等操作逻辑。

<CCrudTable
    title="文件资源管理器"
    :columns="columns"
    fixed-index
    load-items-url="/api/file-explorer/files/search"
    add-item-url="/api/file-explorer/files/save"
    update-item-url="/api/file-explorer/files/save"
    remove-item-url="/api/file-explorer/files/delete"
    show-refresh-btn
    show-export-btn
    show-icon-btn
    row-key="id"
    row-title="name">
	...

    <template v-slot:filter="{ conditions }">
		...
    </template>
    
    ...
    
    <template v-slot:editor="{ editedItem, type }">
		...
    </template>
    
    ...
</CCrudTable>

完整的示例参考Table1.vue

效果图:

CCrudTable

CCrudTable

CCrudTable

CCrudTable

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      columns表头列,同VDataTableServerheaders属性array[]
      total数据集总数,同VDataTableServeritems-length属性array0
      data数据集记录,同VDataTableServeritems属性array[]
      showIndex是否显示序号列booleantrue
      fixedIndex是否固定序号列booleanfalse
      showOperation是否显示操作列booleantrue
      showIconBtn是否显示图标按钮booleanfalse
      showAddBtn是否显示新增按钮booleantrue
      showRefreshBtn是否显示刷新按钮booleanfalse
      showFilterBtn是否显示过滤按钮booleantrue
      showExportBtn是否显示导出按钮booleanfalse
      exportType导出类型,可选值有excelimagestringexcel
      showUpdateBtn是否显示更新按钮booleantrue
      showDeleteBtn是否显示删除按钮booleantrue
      loadItemsUrl加载记录API地址,返回值必须包含totalitems属性,例如:{total: 10, items: [{...}, ...]}stringnull
      loadItemsImmediate是否立即加载booleantrue
      filterCondition默认的过滤条件object{}
      addItemUrl新增记录API地址stringnull
      updateItemUrl更新记录API地址stringnull
      removeItemUrl删除记录API地址stringnull
      removeItemTip删除记录提示functionnull
      rowKey记录ID对应的属性stringnull
      rowTitle记录名称对应的属性stringnull
      sortMode排序模式,可选值有clientserver,支持客户端、服务端排序stringserver
      sortKey默认的排序属性stringnull
      sortOrder默认的排序顺序stringnull
      disablePagination是否禁用分页booleanfalse
      pages页数,适用于CCrudTablestring、numbernull
      pageSize每页记录数,适用于CCrudTablestring、number10
      widthPadding多余的宽度,用于计算表格宽度,实现宽度自适应number-1
      heightPadding多余的高度,用于计算表格高度,实现高度自适应number-1
      editorWidth编辑记录弹窗宽度number600
    • 其中,columns属性:

      • VDataTableServerheaders属性;

      • 名称描述类型默认值
        type列类型,配合format属性一起使用,可以对列的原始值进行转换、格式化。type的可选值有
        (1)code:代码,代码列的最终显示由codesRefcodes,或url加载到代码集确定
        (2)index:序号(组件内置)
        (3)operation:操作(组件内置)
        (4)number:数字,可以是整数,也可以是小数
        (5)integer:整数
        (6)decimal:小数
        (7)percent:百分比
        (8)currency:货币
        (9)datetime:日期时间
        (10)longtext:长文本
        stringnull
        format列类型格式化参数,具体内容参考组合式函数useFormatanynull
        codes代码集array[]
        url代码集API地址,若codes的值不为空,则以codes的值为主stringnull
        codesRef与其他代码列共享代码集,值同属性keystringnull
        codeName代码名称对应的属性stringnull
        codeValue代码值对应的属性stringnull
        children子表头array[]
        renderable是否允许自定义列显示效果,需要配合item.${string}插槽一起使用booleanfalse
        hidden列是否隐藏booleanfalse
        editable列是否允许编辑booleantrue
        default列的默认值,支持异步用于新增functionundefined
        converter列的值转换器,支持异步用于新增、更新functionundefined
        exportable列是否允许导出booleantrue
        excelValue列的值转换器,用于导出functionundefined
  • 事件

    • 名称描述参数
      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}{items: 所有记录, index: 索引, item: 当前记录, raw-value: 原始值, value: 格式化后的值}
      item.more-operations记录行除了更新、删除额外的操作{item: 当前记录}
      filter过滤表单{conditions: 过滤条件}
      editor编辑表单{editorType: add(新增) / update(更新), editedItem: 编辑的记录}
      bottom表格下方区域{total: 总数, items: 记录, page: 页数, size: 每页数目}
  • 方法

    • 名称描述参数返回值
      reload重新加载记录
      loadByCondition根据过滤条件加载记录additions:附加条件
      onAddClick打开新增弹窗title: 标题
      onUpdateClick打开编辑弹窗item: 编辑的记录
      title: 标题
      saveAsImage把表格内容另存为图片Base64编码格式的图片

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

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

<CCrudTableV2
    title="文件资源管理器"
    :columns="columns"
    fixed-index
    load-items-url="/api/file-explorer/files/search"
    add-item-url="/api/file-explorer/files/save"
    update-item-url="/api/file-explorer/files/save"
    remove-item-url="/api/file-explorer/files/delete"
    show-refresh-btn
    show-export-btn
    show-icon-btn
    row-key="id"
    row-title="name">
    ...
</CCrudTableV2>

完整的示例参考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.alertwindow.confirmwindow.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
    v-model="password"
    variant="outlined"
    density="compact"
    clearable>
</CPassword>

效果图:

CPassword

  • 属性
    • VTextField
  • 事件
    • VTextField
  • 插槽
    • 无;
  • 方法
    • 无;

验证码(CCaptcha)

<CCaptcha
    v-model="captcha"
    url="/demos/captcha.jpg"
    variant="outlined"
    density="compact"
    clearable>
</CCaptcha>

效果图:

CCaptcha

  • 属性

    • VTextField

    • 名称描述类型默认值
      url验证码图片地址stringnull
  • 事件

    • VTextField
  • 插槽

    • 无;
  • 方法

    • 无;

邮件(CEmail)

邮件地址输入自动补全。

<CEmail
    v-model="email"
    variant="outlined"
    density="compact"
    clearable>
</CEmail>

效果图:

CEmail

  • 属性

    • 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
    v-model="date"
    label="日期"
    variant="outlined"
    density="compact"
    clearable>
</CDatePicker>

效果图:

CDatePicker

  • 属性
    • VTextField
  • 事件
    • VTextField
  • 插槽
    • 无;
  • 方法
    • 无;

日期时间选择(CDatetimePicker)

<CDatetimePicker
    v-model="time"
    pick-second
    label="日期时间"
    variant="outlined"
    density="compact"
    clearable>
</CDatetimePicker>

效果图:

CDatetimePicker

  • 属性

    • VTextField

    • 名称描述类型默认值
      pickSecond是否允许选择秒booleanfalse
      dateFormat日期格式stringyyyy-MM-dd
      timeFormat时间格式,值可由用户自定义,或者根据pickSecond的值变化stringHH:mm
  • 事件

    • VTextField
  • 插槽

    • 无;
  • 方法

    • 无;

级联选择(CCascader)

<CCascader
    v-model="productId1"
    label="商品"
    url="/demos/products1.json"
    variant="outlined"
    density="compact"
    multiple
    clearable>
</CCascader>

效果图:

CCascader

  • 属性

    • VTextField

    • 名称描述类型默认值
      items数据集array[]
      url数据集API地址,若items的值不为空,则以items的值为主stringnull
      itemId数据项的值对应属性stringid
      itemTitle数据项名称对应属性stringtitle
      itemChildren数据项子集对应属性stringchildren
      multiple是否允许多选booleanfalse
  • 事件

    • VTextField
  • 插槽

    • 无;
  • 方法

    • 无;

树形选择(CTree)

<CTree
    v-model="productId"
    label="商品"
    url="/demos/products1.json"
    variant="outlined"
    density="compact"
    multiple
    clearable>
</CTree>

效果图:

CTree

  • 属性

    • CCascader

    • 名称描述类型默认值
      simple是否支持简单数据格式,例如:[{id: 1, title: "蔬菜"}, {id: 11, pid: 1, title: "白菜"}...]booleanfalse
      itemParent数据项父记录对应属性stringpid
  • 事件

    • CCascader
  • 插槽

    • 无;
  • 方法

    • 无;

下拉选择(CSelect)

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

<CSelect
    v-model="productId2"
    v-model:title="productTitle2"
    v-model:selected="selectedProducts2"
    label="商品"
    url="/demos/products2.json"
    variant="outlined"
    density="compact"
    clearable>
</CSelect>
  • 属性

    • VSelect

    • 名称描述类型默认值
      items数据集array[]
      url数据集API地址,若items的值不为空,则以items的值为主stringnull
      itemValue数据项的值对应属性stringvalue
      itemTitle数据项名称对应属性stringtitle
  • 事件

    • VSelect

    • 名称描述参数
      update:selected在选中时触发选中项
      update:title在选中时触发选中项的名称
  • 插槽

    • 无;
  • 方法

    • 无;

自动补全(CAutocomplete)

<CAutocomplete
    v-model="productId2"
    v-model:title="productTitle2"
    label="商品"
    url="/demos/products2.json"
    variant="outlined"
    density="compact"
    clearable>
</CAutocomplete>
  • 属性
    • VAutocompleteCSelect
  • 事件
    • VAutocomplete
  • 插槽
    • 无;
  • 方法
    • 无;

纸片组(CChipGroup)

<CChipGroup
    v-model="productId2"
    url="/demos/products2.json"
    selected-class="text-warning"
    column
    chip-size="small"
    chip-variant="outlined"
    chip-filter>
</CChipGroup>

效果图:

CChipGroup

  • 属性
    • VChipGroupCSelect
    • 前缀是chip-的属性同VChip
  • 事件
    • VChipGroup
  • 插槽
    • 无;
  • 方法
    • 无;

上传文件(CFileUpload)

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

<CFileUpload
    v-model="fileId"
    label="上传文件"
    upload-file-url="/api/file-explorer/files/upload"
    browse-file-url="/api/file-explorer/files/download"
    variant="outlined"
    density="compact"
    clearable>
</CFileUpload>

效果图:

CFileUpload

CFileUpload

CFileUpload

  • 属性

    • VFileInput

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

    • VFileInput
  • 插槽

    • 无;
  • 方法

    • 无;

图表(8)

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

折线图(CLineChart)

<CLineChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    :smooth="true"
    :steped="false"
    :aspect-ratio="1">
</CLineChart>

<CLineChart
    url="/demos/chart-data2.json"
    title="2014、2024年浏览器份额排行榜"
    subtitle="近十年"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    show-legend
    :show-point="false"
    multiple
    :aspect-ratio="1">
</CLineChart>

效果图:

CLineChart

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      xAxisTypeX轴类型,值同ECharts的xAxis. type属性stringcategory
      xAxisTitleX轴名称stringnull
      xAxisScaleX轴是否不从0开始booleanfalse
      yAxisTypeY轴类型,值同ECharts的yAxis. type属性stringvalue
      yAxisTitleY轴名称stringnull
      yAxisScaleY轴是否不从0开始booleanfalse
      yAxisUnitY轴单位stringnull
      yAxisMinY轴最小值stringnumbernull
      yAxisMaxY轴最大值stringnumbernull
      series数据集,key-value方式array[]
      url数据集API访问地址,若series的值不为空,则以series的值为主stringnull
      itemSerieName序列名称对应的属性stringserieName
      itemName点名称对应的属性stringname
      nameTitle点名称的标题,适用于气泡图string''
      itemXX轴对应的属性stringx
      itemYY轴对应的属性stringy
      itemZZ轴对应的属性,配合minPointSizemaxPointSize属性规定的气泡大小尺寸范围,自动确定气泡大小,适用于气泡图stringnull
      maxPointSize气泡最大的尺寸,适用于气泡图number100
      minPointSize气泡最小的尺寸,适用于气泡图number10
      aspectRatio宽高比stringnumberauto
      multiple是否支持多个序列booleanfalse
      showPoint是否显示点booleantrue
      showLegend是否显示图例booleanfalse
      lines划线array[]
      smooth是否显示平滑曲线,适用于折线图、面积图booleanfalse
      steped是否显示梯形折线,适用于折线图、面积图booleanfalse
      stacked是否折叠,适用于柱形图booleanfalse
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

面积图(CAreaChart)

<CAreaChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    :aspect-ratio="1">
</CAreaChart>

<CAreaChart
    url="/demos/chart-data2.json"
    title="2014、2024年浏览器份额排行榜"
    subtitle="近十年"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    show-legend
    multiple
    :aspect-ratio="1">
</CAreaChart>

效果图:

CAreaChart

  • 属性

    • CLineChart
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

柱形图(CColumnChart)

<CColumnChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    :aspect-ratio="1">
</CColumnChart>

<CColumnChart
    url="/demos/chart-data2.json"
    title="2014、2024年浏览器份额排行榜"
    subtitle="近十年"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    show-legend
    multiple
    :stacked="false"
    :aspect-ratio="1">
</CColumnChart>

效果图:

CColumnChart

  • 属性

    • CLineChart
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

气泡图(CBubbleChart)

<CBubbleChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    :aspect-ratio="1">
</CBubbleChart>

<CBubbleChart
    url="/demos/chart-data2.json"
    title="2014、2024年浏览器份额排行榜"
    subtitle="近十年"
    x-axis-title="浏览器"
    y-axis-title="市占率"
    y-axis-unit="%"
    show-legend
    multiple
    :aspect-ratio="1">
</CBubbleChart>

效果图:

CBubbleChart

  • 属性

    • CLineChart
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

饼图(CPieChart)

<CPieChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    item-value="y"
    value-unit="%"
    :aspect-ratio="1">
</CPieChart>

效果图:

CPieChart

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      series数据集,key-value方式array[]
      url数据集API访问地址,若series的值不为空,则以series的值为主stringnull
      itemName名称对应的属性stringname
      itemValue值对应的属性stringvalue
      valueUnit值的单位string''
      aspectRatio宽高比stringnumberauto
      showLegend是否显示图例booleanfalse
      rounded是否显示圆角分割booleanfalse
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

环形图(CDonutChart)

<CDonutChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    item-value="y"
    value-unit="%"
    :rounded="false"
    :aspect-ratio="1">
</CDonutChart>

效果图:

CDonutChart

  • 属性

    • CPieChart
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

半环形图(CHalfDonutChart)

<CHalfDonutChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    item-value="y"
    value-unit="%"
    :aspect-ratio="1">
</CHalfDonutChart>

效果图:

CHalfDonutChart

  • 属性

    • CPieChart
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

鸡冠花图(CCoxcombChart)

<CCoxcombChart
    url="/demos/chart-data1.json"
    title="浏览器份额排行榜"
    subtitle="2024"
    item-value="y"
    value-unit="%"
    :aspect-ratio="1">
</CCoxcombChart>

效果图:

CCoxcombChart

  • 属性

    • CPieChart
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

统计(9)

根据标题、副标题、文本等布局的不同,把统计类组件分成2类,并创建了2个父类组件——BaseStat1、BaseStat2来简化设计、开发。

v1(CStat1)

<CStat1
    title="245k"
    subtitle="Sales"
    text="Calculated in last 7 days"
    color="red"
    variant="text">
</CStat1>

效果图:

CStat1

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      text文本stringnull
  • 事件

    • 无;
  • 插槽

    • 名称描述作用域
      title标题
      subtitle副标题
      text文本
  • 方法

    • 无;

v2(CStat2)

<CStat2
    title="245k"
    subtitle="Sales"
    icon="mdi-trending-up"
    color="red"
    text="Calculated in last 7 days"
    :chip="false"
    chip-text="+15%">
</CStat2>

效果图:

CStat2

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      text文本stringnull
      icon图标stringnull
      color颜色(图标)stringnull
      chip是否以纸片形式显示booleanfalse
      chip-text纸片内容stringnull
  • 事件

    • 无;
  • 插槽

    • 名称描述作用域
      title标题
      icon图标
      text文本
  • 方法

    • 无;

v3(CStat3)

<CStat3
    title="245k"
    subtitle="Sales"
    color="red"
    expected="999"
    actual="245">
</CStat3>

效果图:

CStat3

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      color颜色(进度条)stringnull
      actual实际值stringnumbernull
      expected预期值stringnumbernull
  • 事件

    • 无;
  • 插槽

    • 名称描述作用域
      title标题
      subtitle副标题
  • 方法

    • 无;

v4(CStat4)

<CStat4
    title="245k"
    subtitle="Sales"
    text="Calculated in last 7 days"
    hint="+15%"
    color="red">
</CStat4>

效果图:

CStat4

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      text文本stringnull
      hint提示stringnull
      color颜色(标记、强调)stringnull
  • 事件

    • 无;
  • 插槽

    • 名称描述作用域
      title标题
      subtitle副标题
      text文本
      emphasis强调
  • 方法

    • 无;

v5(CStat5)

<CStat5
    title="245k"
    subtitle="Sales"
    text="Calculated in last 7 days"
    icon="mdi-trending-up"
    color="red">
</CStat5>

效果图:

CStat5

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      text文本stringnull
      icon图标stringnull
      color颜色(图标)stringnull
  • 事件

    • 无;
  • 插槽

    • 暂无;
  • 方法

    • 无;

v6(CStat6)

<CStat6
    title="245k"
    subtitle="Sales"
    icon="mdi-trending-up"
    color="red">
</CStat6>

效果图:

CStat6

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      icon图标stringnull
      color颜色(图标)stringnull
      rounded形状是否是圆角矩形,默认圆形booleantrue
      variant变体,可选值有flattextelevatedtonaloutlinedplainstringelevated
  • 事件

    • 无;
  • 插槽

    • 名称描述作用域
      title标题
      subtitle副标题
      icon图标
  • 方法

    • 无;

v7(CStat7)

<CStat7
    title="Google Drive"
    subtitle="Automate your file upload workflow"
    icon="mdi-google-drive"
    avatar
    color="grey"
    btn-text="Connected"
    btn-color="red">
</CStat7>

效果图:

CStat7

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      avatar是否显示头像booleanfalse
      icon图标stringnull
      color颜色(头像、图标)stringnull
      btnText按钮文本stringnull
      btnColor按钮颜色stringnull
  • 事件

    • 无;
  • 插槽

    • 暂无;
  • 方法

    • 无;

v8(CStat8)

<CStat8
    title="245k"
    subtitle="Sales"
    color="red"
    type="trend"
    :items="[4, 2, 5, 7, 1, 6, 3]">
</CStat8>

<CStat8
    title="245k"
    subtitle="Sales"
    color="red"
    type="bar"
    :items="[4, 2, 5, 6, 17, 1, 3]">
</CStat8>

效果图:

CStat8

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      text文本stringnull
      icon图标stringnull
      color颜色stringnull
      typeSparkline类型,可选值有trendbarstringtrend
      itemsSparkline数据array[]
  • 事件

    • 无;
  • 插槽

    • 暂无;
  • 方法

    • 无;

v9(CStat9)

<CStat9
    title="245k"
    subtitle="Sales"
    color="red"
    expected="999"
    actual="245">
</CStat9>

效果图:

CStat9

  • 属性

    • 名称描述类型默认值
      title标题stringnull
      subtitle副标题stringnull
      text文本stringnull
      icon图标stringnull
      color颜色stringnull
      actual实际值string、numbernull
      expected预估值string、numbernull
  • 事件

    • 无;
  • 插槽

    • 暂无;
  • 方法

    • 无;

其他(5)

图片(CImg)

结合VImgv-viewer,支持放大缩小、旋转、翻转图片等。

<CImg src="/demos/bear.jpg"></CImg>

效果图:

CImg

CPassword

  • 属性
    • VImg
  • 事件
    • VImg
  • 插槽
    • 无;
  • 方法
    • 无;

链接(CAnchor)

<CAnchor
    text="百度"
    href="https://www.baidu.com/"
    hint="百度一下,你就知道"
    show-hint>
</CAnchor>
  • 属性

    • 名称描述类型默认值
      text名称stringnull
      href链接stringnull
      disabled是否禁用booleanfalse
      hint提示stringnull
      icon图标,若不为空,则以图标形式显示stringnull
      color颜色stringprimary
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

标签(CLabel)

<CLabel
    :value="21"
    url="/demos/products2.json">
</CLabel>
  • 属性

    • 名称描述类型默认值
      valueanynull
      items数据集array[]
      url数据集API地址,若items的值不为空,则以items的值为主stringnull
      itemTitle数据项的值对应属性stringtitle
      itemValue数据项名称对应属性stringvalue
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

旋转器(CSpinner)

参考Quasar框架实现。

<CSpinner 
    class="ml-2" 
    size="2em" 
    :thickness="2">
 </CSpinner>

效果图:

CSpinner

  • 属性

    • 名称描述类型默认值
      color颜色stringprimary
      size尺寸大小stringnumber1em
      thickness粗细程度number5
  • 事件

    • 无;
  • 插槽

    • 无;
  • 方法

    • 无;

富文本编辑器(CCKEditor5)

<CCKEditor5
    ref="ckeditor"
    v-model="html"
    upload-file-url="/api/file-explorer/files/upload"
    browse-file-url="/api/file-explorer/files/download">
</CCKEditor5>

效果图:

CCKEditor5

  • 属性

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

    • 无;
  • 插槽

    • 无;
  • 方法

    • 名称描述参数返回值
      getHtml获取HTML,同属性modelValuestring
      getText获取纯文本。string