0.0.17 • Published 2 years ago

arco-crud v0.0.17

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';
Vue.use(ArcoCrud);

Example

<template>
  <div>
    <acroCrud
      :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>
    </acroCrud>
  </div>
</template>

<script lang="ts" setup>
import { onMounted, reactive, ref, toRefs } from "vue";
import acroCrud from "../../components/crud/index.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: "薪资",
      prop: "salary",
      width: 120,
      type: "slider",
      formItemWidth: "300px",
      showInput: true,
      maxLength: 10000,
    },
  ],
  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

CrudOption (CRUD配置)

参数名描述类型默认值版本
addBtn添加按钮booleantrue
addBtnText添加按钮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"是否删除选中项"

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

参数名描述类型默认值版本
searchFormShow显示在搜索表单中boolean-
searchSlot搜索插槽boolean-
formSlotcrud表单插槽boolean-
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-
disabled是否禁用boolean-
disabled是否隐藏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栅格占位格数number-
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-
defaultInputValue输入框的默认值(非受控模式string-
valueFormatpicker 值的格式string-
disabledDatepicker不可选取的日期any-
disabledTimepicker不可选取的时间any-
showTimepicker是否增加时间选择boolean-
formatpicker 格式string-
disabledHourstime 禁用的部分小时选项any-
disabledMinutestime 禁用的部分秒数选项any-
disabledMinutestime 禁用的部分秒数选项any-
use12Hourstime 12 小时制boolean-

DictProps (字典属性)

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

Record (Record属性)

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

Event(事件)

Crud Event

事件名描述参数版本
refresh点击刷新按钮时触发--
searchChange搜索参数改变时触发searchForm:any-
rowUpdate修改时触发done,form-
rowSave修改时触发done,form-
rowDel修改时触发done,form-

Slots(插槽)

Crud Slots

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

License

Ths project is MIT licensed.

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.0

2 years ago