0.1.1 • Published 10 months ago

loong3-dv v0.1.1

Weekly downloads
-
License
MIT
Repository
-
Last release
10 months ago

简介

基于 ant-desgin-vue 二次封装组件库。

  • 与 ant-desgin-vue ConfigProvider 搭配自定义主题
  • typescript
  • 国际化

安装

yarn add loong3-dv 或 npm install loong3-dv

lg-table

import { lgTable } from "loong3-dv"
import type { TableProps } from "loong3-dv"

//template
<lg-table
  :tableSource="tableData"
  :columns="columns"
  @onload="getList"
  @add="handleOpen"
  :initParam="{}"
>

</lg-table>

// script

const tableData = ref<TableProps['tableSource']>()

const getList = async (params:any)=>{
  // axios 请求
  const {data:{current,total,pageSize,list}} = await fetchApi.sysUserList(params)
  tableData.value = {
    current,total,pageSize,list
  }
}

// 点击新增按钮触发方法
const handleOpen = ()=> {}

// 列配置项 配置参数参考下方
const columns:TableProps['columns'] = [{
    title: "tanStar",
    search: true,
    dataIndex: "name",
  },]

组件参数

属性描述参数
columns表格列设置 object[] 参考下表参考下表
pagination使用分页boolean 默认 true 开启
initParam表格请求额外参数默认 {}
hiddenRule隐藏某筛选条件默认 {} 参数为 表格项 dataIndex:((params // 当前筛选条件数据)=> boolean) 返回boolean值 true或不写则展示 可参考表单示例
border使用边框默认 false 不使用
childrenName树形时子列表 key默认 'children'
useSelection使用多选使用多选默认 false 关闭
tableSource表格数据[]
shouldEdit是否使用新增按钮默认 true 开启
draggle表格拖拽默认 false 关闭
merge合并列默认 [] 关闭合并列 可传入数组开启例 :merge="'name'"
mergeRow合并行合并行接收二维数组并传入列号 例 [1,2,3] 表示 1,2,3 列的同行数据合并

column 列参数

属性描述参数
dataIndex表格字段唯一标识string
ellipsis超出省略已默认开启boolean
title单元格标题string
width列宽number
fixed固定列'left'或'right'
search是否为搜索项boolean
searchType搜索项类型见下表 SearchType
searchProps搜索项参数继承 antdv 文档{ key: string: any }
searchInitParam搜索项初始值any
enumselect checkbox 等可选列表{ 见下表 EnumProps[]
align文字对齐'center' 或 'left'
resizable开启表格列拖拽boolean
minWidth表格列拖拽最小值number
maxWidth表格列拖拽最大值number

SearchType 表格搜索项参数

'text'
'select'
'number'
'switch'
'slider'
'radio'
'checkbox'
'rate'
'date'
'rangeDate'
'time'
'treeSelect'
'textarea'

EnumProps

属性描述参数
label选项框显示的文字string
value选项框值any
disabled是否禁用此选项boolean
children为树形选择[]
locale多语言切换当前使用语言文字{ch:"中文",en:"English"}

事件

名称描述回调参数
changeSelectedRowKeys多选时触发当前选中的 id
onload页面加载完成时或点击搜索等当前搜索项内容
add页面新增按钮void
changeSortIndex拖拽排序时返回变化的下标number,number

插槽

名称描述
title表格标题 和 筛选条件标题
bodyCell表格内容
// 示例
<template #title="item">
  <div v-if="item.dataIndex == 'index'">hahah</div>
  <div v-else>{{ item.title }}</div>
</template>

lg-form

import { lgForm } from 'loong3-dv';
import type { FormProps, FormInstance } from 'loong3-dv';

// template

<lg-form
  ref="lgformRef"
  :initParam="{}"
  :configure="configure"
  :validate="validate"
  :hiddenRule="hiddenRule"
  :colNum="1"
  @onFinish="onFinish"
  @onFinishFailed="onFinishFailed"
>
  <template #title="item">
    {{ item.label }}
  </template>
  <template #d="{ searchParam, item }">
    <a-upload
      v-model:fileList="searchParam[item.prop]"
      v-bind="item.searchProps"
      name="files"
    >
      <a-button>
        <template #icon>
          <UploadOutlined />
        </template>
        中英文
      </a-button>
    </a-upload>
  </template>
</lg-form>

// script
const lgformRef = ref<FormInstance>()
const configure: FormProps['configure'] = [
  {
    label: '名称',
    prop: 'a',
    searchInitParam: '1',
    searchProps: {},
  }
]

const validate: FormProps['validate'] = {
  a: [
    {
      type: 'string',
      required: true,
      max: 6,
      min: 3,
      message: '请输入3-6个字符的名称',
      trigger: ['change', 'blur'],
    },
     {
    type: 'date',
    prop: 'b',
    label: '时间',
    searchInitParam: '2023-04-03',
  },
  {
    type: 'select',
    prop: 'c',
    label: '下拉选择',
    enum: [
      { label: '男', value: 1 },
      { label: '女', value: 2 },
      { label: '中立', value: 3 },
    ],
  },
  {
    type: 'upload',
    prop: 'd',
    label: '上传',
  },
  {
    type: 'textarea',
    prop: 'e',
    label: '描述',
  },
  {
    type: 'checkbox',
    prop: 'f',
    label: '复选框',
    enum: [
      { label: '男', value: 1 },
      { label: '女', value: 2 },
      { label: '中立', value: 3 },
    ],
    searchInitParam: [1],
  },
  {
    type: 'number',
    prop: 'h',
    label: '数字输入',
    searchProps: { max: 10, min: 0, precision: 2, step: 0.1 },
  },
  {
    type: 'radio',
    prop: 'i',
    label: '单选',
    enum: [
      { label: '男', value: 1 },
      { label: '女', value: 2 },
      { label: '中立', value: 3 },
    ],
  },
  {
    type: 'rangeDate',
    prop: 'j',
    label: '时间段',
  },
  {
    type: 'treeSelect',
    prop: 'k',
    label: '树菜单',
    enum: [
      { label: '男', value: 1, locale: { ch: '男', en: 'man' } },
      { label: '女', value: 2, locale: { ch: '女', en: 'woman' } },
      { label: '中立', value: 3, locale: { ch: '中立', en: 'other' } },
    ],
  },
  ],
};

// 表单项是否展示
const hiddenRule = {
  d: ({ c }: { c: number }) => c === 1,
  f: ({ c }: { c: number }) => c === 1,
};

const onFinish = (params)=>{}
const onFinishFailed = (error)=>{error}

组件参数

属性描述参数
configure表单设置设置 object[] 参考下表参考下表
initParam表单额外参数Object
layout表单标题与内容布局比例 遵循24列默认 6, 14
showButton展示底部默认提交重置按钮默认 true
colNum表单列数默认 1
isvalidate是否使用表单验证默认 true
validate表单验证规则 参考 async-validatorObject
hiddenRule表单隐藏项见下表默认 {} 参数为 表格项 dataIndex:((params // 当前筛选条件数据)=> boolean) 返回boolean值 true或不写则展示

configure 参数

属性描述参数
type表单类型InputType 见下表
label表单名称string
prop表单keystring
searchProps表单其他参数可参考antdv 表单参数string
searchInitParam搜索项初始值any
enumselect checkbox 等可选列表{ 见下表 EnumProps[]

SearchType 表格搜索项参数

'text'
'select'
'number'
'switch'
'slider'
'radio'
'checkbox'
'rate'
'date'
'rangeDate'
'time'
'treeSelect'
'textarea'
'upload'

EnumProps

属性描述参数
label选项框显示的文字string
value选项框值any
disabled是否禁用此选项boolean
children为树形选择[]

事件

名称描述回调参数
onFinish表单通过验证触发参数表单值
onFinishFailed表单验证失败触发error

插槽

名称描述
title表单标题
prop表单插槽将覆盖默认对应表单
// 示例
  <template #upload="{searchParam,item}">
    <a-upload
      v-model:fileList="searchParam[item.prop!]"
      v-bind="item.searchProps"
      name="files"
      >
      <a-button>
        <template #icon>
          <UploadOutlined />
        </template>
        中英文
      </a-button>
    </a-upload>
  </template>