jeecg 使用 antd 封装成 j- 开头的组件,如果 j- 组件功能没有实现 a- 组件的功能的,可以修改 j- 组件来实现。
JEditableTab
可以自动增加一行的 table
- columns 定义显示的列数
在 columns 中,不能使用 this,只能使用自带函数返回的变量,如
validateRules: [
{
// 自定义函数校验 handler
handler(type, value, row, column, callback, target) {
//target 行编辑的实例对象,可直接调用该实例内的方法
}
}
]
- FormTypes.slot 的事件传值 props
methods: {
/* a 标签的点击事件,删除当前选中的行 */
handleDelete(props) {
// 参数解释
// props.index :当前行的下标
// props.text :当前值,可能是defaultValue定义的值,也可能是从dataSource中取出的值
// props.rowId :当前选中行的id,如果是新增行则是临时id
// props.column :当前操作的列
// props.getValue :这是一个function,执行后可以获取当前行的所有值(禁止在template中使用)
// 例:const value = props.getValue()
// props.target :触发当前事件的实例,可直接调用该实例内的方法(禁止在template中使用)
//例:target.add()
}
}
- 使用 getValuesSync 获取 ‘rowId1’, ‘rowId2’ 这两行的值
let { error, values } = this.$refs.editableTable.getValuesSync({ validate: false, rowIds: ['rowId1', 'rowId2'] })
if (error === 0) {
console.log('表单验证通过,数据:', values);
} else {
console.log('未通过表单验证,数据:', values);
}
- 利用 target 改变值
setValues([
{
rowKey: id1, // 行的id
values: { // 在这里 values 中的 name 是你 columns 中配置的 key
'name': 'zhangsan'
}
}
])
- 多个 table 验证
import { validateTables, VALIDATE_NO_PASSED } from '@/utils/JEditableTableUtil'
// 封装cases
let cases = []
cases.push(this.$refs.editableTable1)
cases.push(this.$refs.editableTable2)
cases.push(this.$refs.editableTable3)
cases.push(this.$refs.editableTable4)
cases.push(this.$refs.editableTable5)
// 同时验证并获取多个实例的值
validateTables(cases).then((all) => {
// all 是一个数组,每项都对应传入cases的下标,包含values和deleteIds
console.log('所有实例的值:', all)
}).catch((e = {}) => {
// 判断表单验证是否未通过
if (e.error === VALIDATE_NO_PASSED) {
console.log('未通过验证的实例下标:', e.index)
} else {
console.error('发生异常:', e)
}
})
- 有一个字段改变时,同步改变同行的其它字段,在 table 上使用 valueChange
@valueChange="fnChange"
传的参数 { type, row, column, value, target } Event对象
JDictSelectTag
针对字典的使用,实现下拉和radio组件
<j-dict-select-tag v-model="queryParam.sex" placeholder="请输入用户性别" dictCode="sex"/>
<j-dict-select-tag v-model="queryParam.username" placeholder="请选择用户名称" dictCode="sys_user,realname,id,sex = '2'"/>
JSearchSelectTag
字典表的搜索组件
<j-search-select-tag
placeholder="选择字典"
v-model="selectValue"
:dictOptions="dictOptions">
</j-search-select-tag>
<j-search-select-tag
placeholder="选择数据表"
v-model="asyncSelectValue"
dict="sys_depart,depart_name,id"
:async="true">
</j-search-select-tag>
下拉选项遮挡、错位问题
增加 getPopupContainer 属性
<a-select
placeholder="请选择"
:options="dicts.displayTemplate"
:getPopupContainer="node => node.parentNode"
/>
如果遇到 a-select 标签层级过深的情况,可能仍然会显示异常,只需要多加几个.parentNode (例:node => node.parentNode.parentNode.parentNode)
table 的封装
获取数据时候的排序,默认按 createTime,要修改需要看封装的组件是怎么写排序的
用了 isorter,这时给 isorter 传值,改变默认选项
{
column: 'updateTime',
order: 'desc',
}
