首页 前端知识 关于avue-crud的一些使用和配置

关于avue-crud的一些使用和配置

2024-03-08 10:03:28 前端知识 前端哥 188 645 我要收藏

avue是将elemenui封装了一遍,主要是一些增删改查的封装,用起来非常便捷,但是不熟悉其中的配置的话还没直接使用elementui开发来的快.使用avue开发的话特别是一些需要自定义的内容,感觉挺坑,文档也不友好。最近一个项目使用avue开发的,记录一下使用心得

下面是具体的参数配置:

主要需要注意的是分组表单里面的字段联动control是不生效的,tree下拉框的话可以使用nodeClick方法来通过dispaly字段进行控制 选中的话是checked事件

获取对应字段的ref属性可以使用:this.$refs.crud.getPropRef('deptId');

获取对应字段的所有数据和属性:this.findObject(this.option.group, "roleId");

字段联动的时候可以使用watch来监听 比较方便

tree树形下拉框的全选和反选可以通过setChecked来实现,下面是一个例子

<avue-crud :option="option"
                   :search.sync="search"
                   :table-loading="loading"
                   :data="data"
                   node-key="id"
                   ref="crud"
                   v-model="form"
                   :permission="permissionList"//这个是按钮权限控制 也可以直接在option里面单独配置
                   @row-del="rowDel"//删除行回调
                   @row-update="rowUpdate"//更新时回调
                   @row-save="rowSave"//保存时回调
                   :before-open="beforeOpen"//弹框表单打开时的回调
                   :page.sync="page"
                   @search-change="searchChange"//查询按钮回调函数,默认有两个参数 form与done, form为搜索框的值,done为关闭搜索的刷新状态回调函数
                   @search-reset="searchReset"
                   @selection-change="selectionChange"//当表格选择项勾选发生变化时会触发该回调函数
                   @current-change="currentChange"//表格页码发生变化时触发,第一个参数为当前页码
                   @size-change="sizeChange"//每页显示数量变化时回调 参数页面展示数量pageSize
                   @refresh-change="refreshChange"//刷新
                   :row-class-name="customRowClass"
                   @on-load="onLoad">
    //表格顶部左侧菜单配置
    <template slot="menuLeft">
        <el-button type="info"
                       size="small"
                       icon="el-icon-user">
            角色配置
         </el-button>
    </template>
    //表格字段展示自定义
    <template slot-scope="{row}"
                    slot="name">
            <el-tag>{{row.name}}</el-tag>
          </template>
//弹框表单字段自定义  字段名+From
<template slot-scope="{type,disabled}" slot="nameForm">
            <el-tag v-if="type=='add'">新增</el-tag>
            <el-tag v-else-if="type=='edit'">修改</el-tag>
            <el-tag v-else-if="type=='view'">查看</el-tag>
            <el-input :disabled="disabled" v-model="form.name"></el-input>
       </template>
//弹框表单字段标题自定义  字段名+Label
<template slot-scope="scope" slot="nameLabel">
     <span>姓名&nbsp;&nbsp;</span>
     <el-tooltip class="item" effect="dark" content="文字提示" placement="top-start">
      <i class="el-icon-warning"></i>
    </el-tooltip>
  </template>
</avue-crud>
<script>
  export default {
    data() {
    return {
        form:{},
        option:{
            size:'', // 组件尺寸
            maxHeight:'', // 表格的最大高度
            index:'', // 是否有序号
            indexWidth:'', // 序号列宽度
            indexFixed:'', // 序号列是否冻结列
            menu:'', // 是否有操作栏
            menuWidth:'', // 操作栏宽度
            menuTitle:'', // 操作栏标题
            menuFixed:'', // 操作栏列冻结列
            menuType:'', // 操作栏按钮样式
            menuHeaderAlign:'', // 操作栏表头的对齐方式
            title:'', // 表格标题
            addBtn:'', // 表格新增按钮;edit(修改)、del(删除)、view(查看)、update(修改)、save(保存)、cancel(取消)、search(查询)、empty(清空)
            addBtnText:'', // 表格新增按钮文案
            addBtnIcon:'', // 表格新增按钮图标
            printBtn:'', // 表格打印按钮
            excelBtn:'', // 表格导出按钮
            filterBtn:'', // 表格自定义过滤按钮
            refreshBtn:'', // 表格刷新数据按钮
            columnBtn:'', // 表格列操作按钮
            searchShowBtn:'', // 表格搜索显隐按钮
            copyBtn:'', // 表格复制数据按钮
            addTitle:'', // 表格新增弹窗标题 edit(修改)、view(查看)
            dialogDrag:'', // 表格弹窗是否可以拖拽
            searchIndex:'', // 表格搜索半收缩个数
            searchPlaceholder:'', // 搜索项辅助文字
            searchSpan:'', // 搜索项框栅列
            searchGutter:'', // 搜索项框间距
            searchLabelWidth:'', // 搜索项标题宽度
            searchLabelPosition:'', // 搜索项标题位置
            column:[//表格字段和弹框表单字段定义
               {
                label:'', // 列标题
                prop:'', // 列标题的内容属性名称
                type:'', // 
                width:'', // 对应列的宽度
                minWidth:'', // 对应列的最小宽度
                fixed:'', // 列固定
                hide: false, // 隐藏列是否在列表展示
                sortable:'', // 对应列是否可以排序,监听 sort-change 回调,true, false, 'custom'
                formatter:'', // 格式化列内容,(row, value, row, column)
                overHidden:'', // 当内容过长被隐藏时显示 tooltip
                align:'', // 对齐方式
                headerAlign:'', // 表头对齐方式
                filters:'', // 数据过滤的选项
                search:'', // 是否为搜索项
                searchValue:'', // 搜索项初始化值
                searchPlaceholder:'', // 搜索项辅助文字
                searchSpan:'', // 搜索项框栅列
                searchOrder:'', // 搜索项位置排序,序号越大越靠前
                searchLabelWidth:'', // 搜索项标题宽度
                searchClearable:'', // 搜索项清除
                searchMultiple:'', // 搜索项是否多选
                searchTags:'', // 搜索项将选中值按文字的形式展示
                display:'', // 弹出表单是否显示
                disabled:'', // 弹出表单是否禁止
                addDisabled:'', // 表单新增时项是否禁止,edit(编辑)、view(查看)
                addDisplay:'', // 表单新增时项是否显示,edit(编辑)、view(查看)
                resizable:'', // 对应列是否可以通过拖动改变宽度(需要在option中border属性为真)
                searchClearable:'', // 搜索项清除
                searchClearable:'', // 搜索项清除
                searchClearable:'', // 搜索项清除
                dicData:[ // 下拉项字典枚举
                    {label:'A',value: 'a'},
                ],
                control:(val,form)=>{//这个是和其他字段互动的配置 但是分组表单里面这个不生效
                      if(val===0){//控制text2 和text3这个字段的显示和隐藏
                        return {
                          text2:{
                            display:true
                          },
                          text3:{
                            label:'内容3'
                          }
                    }
                  }
                },

                rules:[ // 表单字段校验规则
                    {equired: true,message: "请输入姓名",trigger: "blur"},
                ],
                

                }
                
            ],
            group:[//表单分组配置 字段配置和上面列表的配置是一样的
                {
                     label: '基础信息',
                      prop: 'baseInfo',
                      icon: 'el-icon-user-solid',
                      column:[
                        {
                            label: '类型',
                            prop: 'baseInfo',
                             multiple: false,//是否多选控制
                              type: "tree",
                              dicData: [],
                              nodeClick:(data)=>{//点击下拉元素时的事件
                                    this.handleSelectRole(JSON.stringify(data))
                              },
                               checked:(checkedNodes, checkedKeys)=>{//选中下拉款元素事件
                                }
                        }
                        ]
                }
            ]
        }
    }
}
}
</script>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/3455.html
标签
评论
发布的文章

JQuery对象操作

2024-04-01 10:04:46

jQuery 事件

2024-04-01 10:04:28

jQuery实现二级菜单

2024-04-01 10:04:16

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!