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>姓名 </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>
复制