0.0.53 • Published 2 years ago

@lllgn/arco-crud v0.0.53

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

image

image

介绍

arco-crud 是基于现有的 arco-design 库进行的二次封装,从而简化一些繁琐的操作,核心理念为数据驱动视图,主要的组件库针对 table 表格和 form 表单场景,同时衍生出更多企业常用的组件,达到高复用,容易维护和扩展的框架,同时内置了丰富了数据展示组件,让开发变得更加容易.

浏览器兼容性

支持所有符合 ES5 标准的浏览器(不支持 IE8 及以下版本).

安装

通过 npm 安装

# 安装
npm  i @lllgn/arco-crud -S

# 引入
import ArcoCrud from '@lllgn/arco-crud';
// 引入CRUD样式
import '@lllgn/arco-crud/dist/style.css';
Vue.use(ArcoCrud);

Example

<template>
  <div>
    <arco-crud
      :loading="loading"
      :option="option"
      :columns="columns"
      :table-data="tableData"
      @refresh="onRefresh"
      @row-update="onUpdate"
      @row-save="onSave"
      @row-del="onDel"
    >
      <template #roadSearch>
        <a-button type="primary">插槽1</a-button>
      </template>
    </arco-crud>
  </div>
</template>

<script lang="ts" setup>
import { onMounted, reactive, ref, toRefs } from "vue";

// 声明表单对象
const searchFormRef = ref(null);

const datas = reactive<{
  // 加载状态
  loading: boolean;
  // 加载状态
  option: any;
  // crud列表项
  columns: Array<any>;
  // 表格数据
  tableData: Array<any>;
}>({
  loading: false,
  option: {},
  columns: [
    {
      label: "姓名",
      prop: "name",
      fixed: "left",
      width: 140,
      type: "input",
      searchFormShow: true,
      formItemWidth: "500px",
      showWordLimit: true,
      placeholder: "请输入姓名",
      rules: [
        {
          required: true,
          message: "请输入姓名",
          trigger: "blur",
        },
      ],
      maxLength: 10,
    },
    {
      label: "用户信息",
      children: [
        {
          label: "生日",
          prop: "birthday",
        },
        {
          label: "性别",
          prop: "sex",
          type: "radio",
          radioType: "button",
          width: 140,
          formItemWidth: "none",
          showWordLimit: true,
          dictData: [
            {
              label: "男",
              value: "1",
            },
            {
              label: "女",
              value: "0",
            },
            {
              label: "未知",
              value: "2",
            },
          ],
        },
        {
          label: "爱好",
          prop: "hobby",
          type: "select",
          width: 140,
          showWordLimit: true,
          dictData: [
            {
              label: "足球",
              value: "1",
            },
            {
              label: "舞蹈",
              value: "0",
            },
            {
              label: "音乐",
              value: "2",
            },
          ],
        },
        {
          label: "地址",
          children: [
            {
              label: "城市",
            },
            {
              label: "街道",
              prop: "road",
            },
            {
              label: "门牌",
              prop: "no",
            },
          ],
        },
        {
          label: "街道",
          prop: "road",
          type: "input",
          searchFormShow: true,
          searchSlot: true,
        },
      ],
    },
    {
      label: "信息",
      children: [
        {
          label: "电子邮箱",
          prop: "email",
        },
        {
          label: "电话",
          prop: "phone",
        },
      ],
    },
    {
      label: "薪资",
      type: "input",
      prop: "salary",
      width: 120,
      formItemWidth: "300px",
    },
  ],
  tableData: [
    {
      key: "1",
      name: "Jane Doe",
      salary: 2300,
      birthday: "1994-04-21",
      city: "London",
      road: "Park",
      hobby: "1",
      sex: "1",
      no: "34",
      phone: "12345678",
      email: "jane.doe@example.com",
    },
    {
      key: "2",
      name: "Alisa Ross",
      salary: 2500,
      birthday: "1994-05-21",
      city: "London",
      road: "Park",
      sex: "0",
      hobby: "0",
      no: "37",
      phone: "12345678",
      email: "alisa.ross@example.com",
    },
    {
      key: "3",
      name: "Kevin Sandra",
      salary: 2200,
      birthday: "1992-02-11",
      city: "Paris",
      road: "Arco",
      sex: "0",
      hobby: "0",
      no: "67",
      phone: "12345678",
      email: "kevin.sandra@example.com",
    },
    {
      key: "4",
      name: "Ed Hellen",
      salary: 1700,
      birthday: "1991-06-21",
      city: "London",
      road: "Park",
      no: "317",
      sex: "1",
      hobby: "1",
      phone: "12345678",
      email: "ed.hellen@example.com",
    },
    {
      key: "5",
      name: "William Smith",
      salary: 2700,
      birthday: "1996-08-21",
      city: "Paris",
      road: "Park",
      sex: "1",
      no: "114",
      phone: "12345678",
      email: "william.smith@example.com",
    },
  ],
});
// 抛出数据到渲染层
const { loading, option, columns, tableData } = toRefs(datas);

// 保存
const onSave = (done: any, row: any) => {
  setTimeout(() => {
    done();
  }, 2000);
};

// 删除
const onDel = (done: any, row: any) => {
  setTimeout(() => {
    done();
  }, 2000);
};
// 更新
const onUpdate = (done: any, row: any) => {
  setTimeout(() => {
    done();
  }, 2000);
};

// 刷新
const onRefresh = () => {};
</script>

API

Props

CrudProp (CRUD属性)

参数名描述类型默认值版本
option配置CrudOption
columns表格项Array<CrudColumnsOption>
tableData表格数据Array<any>
loading加载状态boolean
formData表单数据any
pagination分页参数PaginationProps0.0.41
searchOption搜索表单配置FormOptions0.0.52
formOption表单配置FormOptions0.0.52
beforeAddModalOpen打开新增表单前Function0.0.52
beforeEditModalOpen打开编辑表单前Function0.0.52
beforeCloseModalOpen打开关闭表单前Function0.0.52

CrudOption (CRUD配置)

参数名描述类型默认值版本
addBtn添加按钮booleantrue
addBtnText添加按钮文本string"新增"
editBtn编辑按钮booleantrue
editBtnText编辑按钮文本string"编辑"
delBtn删除按钮booleantrue
delBtnText删除按钮文本string"删除"
headerBtn选择表头按钮booleantrue
refreshBtn刷新按钮booleantrue
handleMenu操作菜单booleantrue
handleMenuWidth操作菜单宽度number200
handleMenuAlign操作菜单对齐string"center"
modalWidth对话框宽度string"50%"
modalTop对话框高度string"20%"
modalAddTitle添加对话框标题string"新增"
modalEditTitle编辑对话框标题string"编辑"
modalAlignCenter对话框是否居中显示booleanfalse
modalAddOkText对话框确认按钮的内容-新增string"确定新增"
modalEditOkText对话框确认按钮的内容-编辑string"确定修改"
modalCanceText对话框取消按钮的内容string"取消"
delModalText删除对话框内容string"是否删除选中项"
defaultSort默认排序number99
defaultAlign默认排列"left" , "center" , "right""center"
defaultWidth默认宽度number"150"

CrudColumnsOption extends FormColumns (CRUD项配置继承自FormColumns)

参数名描述类型默认值版本
searchFormShow显示在搜索表单中boolean-
searchSlot搜索插槽boolean-
searchSort搜索栏排序number-
formSlotcrud表单插槽boolean-
formSort表单排序number-
addFormHide添加表单隐藏boolean-
addDisabled添加表单不可用boolean-
editFormHide编辑表单隐藏boolean-
editDisabled编辑表单不可用boolean-
children子集Array<CrudColumnsOption>-
slotName设置当前列的渲染插槽的名字。插槽参数同#cellArray<CrudColumnsOption>-
titleSlotName设置当前列的标题的渲染插槽的名字string-
fixed固定位置'left' , 'right'-
align对齐方向'left' , 'center' , 'right'-
width表格列宽number-

FormColumns (表单项配置)

参数名描述类型默认值版本
value默认值(非受控模式)any-
type类型string-
label文本string-
prop字段名string-
slot插槽boolean-
sort排序number-
disabled是否禁用boolean-
hide是否隐藏boolean-
dictProps字典属性DictProps-
dictData字典数据Array<any>-
help帮助文案string-
extra额外显示的文案string-
required是否必须填写boolean-
rules表单项校验规则Array<any>-
hideLabel是否隐藏标签boolean-
hideAsterisk是否隐藏星号boolean-
formItemWidth项宽度number ,string-
flex布局属性number , string , "initial" , "auto", "none"-span
maxLength最大长度number-
minLength最小长度number-
showWordLimitinput-是否显示字数统计boolean-
placeholder提示文字string-
modeinput-number模式(embed:按钮内嵌模式,button:左右按钮模式"embed","button"-
precisioninput-number 数字精度number-
stepinput-number 数字变化步长number-
formatterinput-number 定义输入框展示值any-
directionradio-group 单选框组的方向"horizontal","vertical"-
radioTyperadio-group 单选框组的类型"radio" , "button"-
marksslider设置显示的标签Array<Record>-
showTicksslider是否显示刻度线boolean-
showInputslider是否显示输入框boolean-
rangeslider是否开启范围选择boolean-
multipleselect是否开启多选模式boolean-
cascadercascader是否开启严格选择模式boolean0.0.47
defaultInputValue输入框的默认值(非受控模式string-
valueFormatpicker 值的格式string-
disabledDatepicker不可选取的日期any-
disabledTimepicker不可选取的时间any-
showTimepicker是否增加时间选择boolean-
formatpicker 格式string-
disabledHourstime 禁用的部分小时选项any-
disabledMinutestime 禁用的部分秒数选项any-
disabledMinutestime 禁用的部分秒数选项any-
use12Hourstime 12 小时制boolean-

FormOptions (表单配置)

参数名描述类型默认值版本
layout表单的布局方式,包括水平、垂直、多列"horizontal" , "vertical" , "inline"-
size表单控件的尺寸"mini" , "small" , "medium" , "large"-
labelColProps标签元素布局选项。参数同'col'组件一致object-
wrapperColProps表单控件布局选项。参数同'col'组件一致object-
labelAlign标签的对齐方向"left" , "right"-
disabled是否禁用表单boolean-
autoLabelWidth是否开启自动标签宽度,仅在 layout="horizontal" 下生效boolean-
width表单宽度string-
showColon是否显示冒号boolean-
padding间距string-
showButton显示按钮boolean-
submitButtonText提交按钮文本string-
resetButtonText重置按钮文本string-
itemWidth默认项宽string-

DictProps (字典属性)

参数名描述类型默认值版本
label文本string-
valuestring-

Record (Record属性)

参数名描述类型默认值版本
label文本string-
valuenumber-

Event(事件)

Crud Event

事件名描述参数版本
refresh点击刷新按钮时触发--
search点击搜按钮时触发searchForm:any-
rowUpdate修改时触发done,form-
rowSave修改时触发done,form-
rowDel修改时触发done,form-
expand点击展开行时触发rowKey: string0.0.41
expanded-change已展开的数据行发生改变时触发rowKeys: string[]0.0.41
select点击行选择器时触发rowKeys: string[],rowKey: string0.0.41
select-all点击全选选择器时触发checked: boolean0.0.41
selection-change已选择的数据行发生改变时触发rowKeys: string[]0.0.41
sorter-change排序规则发生改变时触发dataIndex: string,direction: string0.0.41
filter-change过滤选项发生改变时触发dataIndex: string,filteredValues: string[]0.0.41
page-change表格分页发生改变时触发page: number0.0.41
page-size-change表格每页数据数量发生改变时触发pageSize: number0.0.41
change表格数据发生变化时触发data: TableData[],extra: TableChangeExtra0.0.41
cell-click点击单元格时触发record: TableData,column: TableColumnData0.0.41
row-click点击行数据时触发record: TableData0.0.41
header-click点击表头数据时触发column: TableColumnData0.0.41
form-column-input表单项input值改变时触发prop:string,val: any,index:number,item:any0.0.43
form-column-focus表单项获得焦点时触发prop:string,val: any,index:number,item:any0.0.43
form-column-blur表单项失去焦点时触发prop:string,val: any,index:number,item:any0.0.43
form-column-change表单项值改变prop:string,val: any,index:number,item:any0.0.43

Slots(插槽)

Crud Slots

插槽名描述参数版本
propSearch搜索栏插槽 插槽名:prop+'Search'scope:{column}-
menuLeftStart菜单左侧前插槽--
menuLeftEnd菜单左侧后插槽--
menuRightStart菜单右侧前插槽--
menuRightEnd菜单右侧后插槽--
handleMenu操作栏后插槽scope:{ record }-
handleMenuMiddle操作栏中间插槽scope:{ record }-
handleMenuBefore操作栏前插槽scope:{ record }-
prop表格Cell插槽 插槽名同propscope:{ record, column, rowIndex}-

License

Ths project is MIT licensed.

0.0.40

2 years ago

0.0.41

2 years ago

0.0.42

2 years ago

0.0.43

2 years ago

0.0.44

2 years ago

0.0.45

2 years ago

0.0.46

2 years ago

0.0.47

2 years ago

0.0.37

2 years ago

0.0.38

2 years ago

0.0.39

2 years ago

0.0.51

2 years ago

0.0.52

2 years ago

0.0.53

2 years ago

0.0.31

2 years ago

0.0.33

2 years ago

0.0.34

2 years ago

0.0.35

2 years ago

0.0.36

2 years ago

0.0.50

2 years ago

0.0.48

2 years ago

0.0.49

2 years ago

0.0.30

2 years ago

0.0.29

2 years ago

0.0.28

2 years ago

0.0.27

2 years ago

0.0.26

2 years ago

0.0.25

2 years ago

0.0.24

2 years ago

0.0.23

2 years ago

0.0.22

2 years ago

0.0.21

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago