avue-crud 表格编辑属性框于框联动
起因:
最近用了一个很好用的搬砖神器,叫Avue;他的表格是真的太好用了;封装了很多很多功能;什么行列拖拽,修改弹窗,编辑弹窗,查看弹窗,等待加载等等。。。
用的时候爽的很,但是要修改一些特殊功能时,就很头大。然后就遇到了一个联动功能,比如我正常框架写的编辑弹窗,要表单的一个下拉属性控制另外一个属性的显隐;很简单,一个v-if=“某个值的判定条件”就可以实现了。但是Avue却很麻烦,我查了很多文档都没有关于表单编辑属性控制相关的;因为它把所有的控制都囊括到option里面去了,导致完全没法用插槽之类的去控制;不过还好,我在它官方文档反复徘徊,终究拿下了解决方案。
解决:
在它本身对表单操作里面有个方法叫做control,用这个方法得注意的是Avue2.8.6之后;因为在这之前是没有这个方法的,只能很繁琐的去监听,而现在一个control就可以达到我们联动效果。话不多说,上代码:
{
label: "参数类型",
prop: "type",
type: "select",
// 前端默认数据
dicData: [ // 下拉内容, 格式数组对象, label: 显示内容 value: 值
{ label: '参数分组', value: 0 },
{ label: '参数选项', value: 1 },
],
control: (val, form) => {
console.log(val, form, '编辑表单属性控制');
if (val == 0) {
return {
groupName: {
display: true
},
id: {
display: false
}
}
} else {
return {
groupName: {
display: false
},
id: {
display: true
}
}
}
},
search: true,
rules: [{
required: true,
message: "请进行参数类型",
trigger: "blur"
}],
/* formatter: (row) => {
console.log(row, 'row');
} */
},
{
label: "分组名称",
prop: "groupName",
hide: true,
display: true,
rules: [{
required: true,
message: "请输入分类ID",
trigger: "blur"
}]
},
{
label: "分组",
prop: "id",
hide: true,
type: "select",
display: true,
dicUrl: "/api/thunder/paras/list?current=1&size=10",
props: {
label: "groupName",
value: "id"
},
// editDisplay: false,//表单编辑是否可见
rules: [{
required: true,
message: "请选择分组",
trigger: "blur"
}]
},