Skip to content

TIP

crud组件文件位于src/components/lycrud.vue中,由于作者只整理封装了自己经常用到的组件和属性,如果遇到缺少属性或组件的完全可以参考lycrud.vue文件模式自行添加DIY,上手简单

crudConfig 属性(选项式)

crudConfig:{
    //crud请求方法配置
    crudRequest:{
    },
    //搜索栏目配置
    searchBar:{
    },
    //显示分页
    showPagination:true,
    //分页配置
    pageparams: {
    },
    //crud按钮配置
    rowHandle:{
    },
    //crud弹窗属性
    formOptions: {
    },
    //crud表格属性
    tableOptions:{
    },
    showSelectable:true,//表格显示复选项框
    //table表头列
    tableColumns:[
    ],
},

crudRequest 增删改查网络请求

crudRequest:{
    add:UsersUsersAdd,
    del:UsersUsersDelete,
    edit:UsersUsersEdit,
    search:UsersUsers,
},
属性名说明
add新增请求API
del删除请求API
edit编辑请求API
search查询/列表请求API

searchBar 搜索栏目配置

searchBar:{
    showSearchBar:true,//显示搜索栏目
    searchColums:[
        {label:'用户名',type:'input',prop:'username',width:200,maxlength:60,placeholder:'请输入用户名'},
        {label:'手机号',type:'input',prop:'mobile',width:200,maxlength:60,placeholder:'请输入手机号'},
        {label:'状态',type:'select',prop:'is_active',width:100,placeholder:'请选择',
            options:[
                {value:1,label:'正常'},
                {value:0,label:'禁用'}
            ]
        },
        {label:'创建时间',type:'datepicker-datetimerange',prop:'timers'},
    ]
},
属性名说明
showSearchBar是否显示搜索栏目(true\false)
searchColums配置搜索内容

searchColums 配置搜索内容

属性名说明
label标题名
type类型:input/select/datepicker-datetimerange(日期范围)
prop字段名
width宽度
maxlengthinput类型时的最大长度
placeholder输入框占位文本
optionsselect类型时的数据(value:选项的值、label:选项的标签)

pageparams 分页配置

pageparams: {
    limit: 10,//每页显示的条数(默认每页显示10条)//非必填
    //pageSizes:[10,20,30,40,50,200],//非必填
    // layout:'total, sizes, prev, pager, next, jumper',//非必填
},
属性名说明必填
limit每页显示的条数(默认每页显示10条)非必填
pageSizes每页显示个数选择器的选项设置(同官方组件)非必填
layout组件布局,子组件名用逗号分隔(同官方组件)非必填

rowHandle crud按钮配置

rowHandle:{
    width: 180,//操作列宽度
    fixed:"right",//固定操作列在右侧
    permission:{//增删改查按钮权限控制(是否显示)
        add:this.hasPermission(this.$options.name,'Create'),//bool型 this.$options.name获取当前组件的name本例为userManageCrud
        del:this.hasPermission(this.$options.name,'Delete'),
        edit:this.hasPermission(this.$options.name,'Update'),
        search:this.hasPermission(this.$options.name,'Search'),
        detail:this.hasPermission(this.$options.name,'Retrieve'),
    }
},
属性名说明
widthtable表格操作列宽度
fixed固定操作列(同官方table组件属性)
permission增删改查按钮权限控制(是否显示)

permission 增删改查按钮权限控制(是否显示)

属性名说明
add新增按钮 (值类型bool)
del删除按钮 (值类型bool)
edit编辑按钮 (值类型bool)
search搜索按钮 (值类型bool)
detail详情按钮 (值类型bool)

formOptions crud弹窗dialog属性

formOptions: {
    width:'45%',//dialog弹窗宽度:类型:百分比或字符串
    gutter: 20, // Layout布局栅格间隔
},
属性名说明
widthdialog弹窗宽度:类型:百分比或字符串
gutterLayout布局栅格间隔(同官方layout布局属性)

tableOptions crud表格属性

tableOptions:{
    border:true,
    showHeader:true,
},
属性名说明
border是否带有纵向边框
showHeader是否显示表头

tableColumns table表头列

tableColumns:[
     // {label:'用户头像',type:'image',prop:'avatar',minWidth:'60',sortable: false,hidden:false,render:(row)=>{
     //     let elImage = resolveComponent('el-image')//全局组件需要先resolveComponent解析该组件再render渲染,不然该标签会出现原样输出
     //     return h(elImage,{
     //          src:row.avatar ? row.avatar : this.defaultImg,
     //          previewSrcList:[row.avatar ? row.avatar : this.defaultImg],//开启预览,原preview-src-list属性在h渲染方法中,-后字母大写代替即可:previewSrcList
     //          previewTeleported:true,//插入至body元素上
     //          style:"width: 30px;height: 30px",
     //     },)
     //  }
     // },
    {label:'ID',prop:'id',type:'input',minWidth:'100',sortable: false,hidden:true,
        form:{
             //表单属性
             span:24,
             hidden:true,//编辑时隐藏,添加时去除
         }
    },
    {label:'用户头像',type:'image-avatar',prop:'avatar',minWidth:'60',sortable: false,hidden:false,
        render:(row)=>{
            //jsx语法
            return <el-image src={row.avatar ? row.avatar : this.defaultImg} style="width: 30px;height: 30px" preview-teleported={true} preview-srcList={[row.avatar ? row.avatar : this.defaultImg]}></el-image>
        },
        form:{
            //表单属性
            span:24,
            // width:80,头像大小默认80px
        }

     },
     {label:'用户名',prop:'username',type:'input',minWidth:'110',sortable: false,hidden:false,
        form:{
            //表单属性
            span:12,
            rules: [{ required: true, message: '用户名必填项' }],
            placeholder: '请输入用户名',
        }
     },
     {label:'用户昵称',prop:'nickname',type:'input',minWidth:'110',sortable: false,hidden:false,
        form:{
            //表单属性
            span:12,
            placeholder: '请输入用户昵称',
        }
     },
    {label:'密码',prop:'password',type:'input',minWidth:'110',sortable: false,hidden:true,
        form:{
            //表单属性
            span:12,
            rules: [{ required: true, message: '密码必填项' }],
            placeholder: '请输入密码',
            showPassword:true,
        }
     },
     {label:'手机号',prop:'mobile',type:'input',minWidth:'100',sortable: false,hidden:false,
        form:{
            //表单属性
            span:12,
            rules: [{ required: true, message: '手机号必填项' }],
            placeholder: '请输入手机号',
            editDisabled:false,//编辑时是否禁用
        }
     },
     {label:'状态',prop:'is_active',type:'radio',minWidth:'100',sortable: false,hidden:false,
         render: (row) =>{
            let elTag = resolveComponent('el-tag')//全局组件需要先resolveComponent解析该组件再render渲染,不然该标签会出现原样输出
            if(!row.is_active){
                return h(elTag, {
                  type:'warning'
                },()=>'禁用');//用()=>函数方式返回文本值,避免出现console警告:默认槽位遇到非函数值
            }else {
                return h(elTag, {
                  type:'success'
                },()=>'正常');
            }
          },
         form:{
             //表单属性
             span:24,
             options:templateData.STATUS_BOOL,//radio选项属性值
             defaultValue:true,//新增时的默认值
             // valueChange(e){//值变化回调事件
             //     console.log(e,'---变化的值')
             // },
         }
     },
     {label:'创建时间',prop:'create_datetime',minWidth:'150',sortable: false,hidden:false},
],
属性名说明
label显示的标题
prop字段名
typeform中item类型:input/textarea/number/price/switch/select/image-avatar图片上传/radio/date/datetime/
minWidthtable的最小宽度
sortabletable当前列是否排序(bool)
hiddentable当前列是否隐藏(bool)
rendertable当前列值得显示自定义
formform表单属性

说明:其中type为lycrud目前支持的组件,如若发现没有需要的组件可以在gitee提交issue

form 表单

属性名说明
spanlayout布局栅格占据的列数
rules校验规则(同官方form校验)
hidden编辑时隐藏,添加时去除(bool)
placeholder占位提示
editDisabled编辑时是否禁用(bool型、默认false)
optionsradio/select类型的数据(同官方组件option属性)
defaultValueradio/select类型的新增时的默认值
valueChange(e)方法值变化回调事件e为变化的值}

Released under the Apache License 2.0