新页面编辑说明
新页面编辑说明
- 此页面文档仅限于【代码生成器编辑模式选择新页面编辑时生效】
- 同样自动生成代码,支持一对多、多对多功能,根据业务自定义扩展
- 业务实现文件位置:views->类库名(代码生成器选择的类库)->文件夹名(代码生成器输入的文件夹名)->表名->edit.vue

组件属性 (Props)
| 属性 | 说明 | 类型 | 默认 |
|---|---|---|---|
| value | 编辑的主键ID值 | null | null |
| showTabs | 一对多明细表是否显示tab标签,false时会从上往下顺序显示 | Boolean | true |
| editChange | 新建数据后,变更为编辑状态 | Boolean | false |
| sortable | 明细表拖动排序 | Boolean | false |
| keyField | 主键字段 | String | "" |
| tableName | 表名 | String | "" |
| tableCNName | 表中文名 | String | "表名" |
| labelPosition | 标签显示位置 | String | "" |
| labelWidth | 表单标签宽度 | Number | 100 |
| formFields | 表单字段数据对象 | Object | {} |
| formOptions | 表单配置数组 | Array | [] |
| detail | 主从明细表配置对象{cnName:"",table:"",columns:[],url:"",paginationHide:false,pagination:{size:100,sortName:""},height:0} | Object | {} |
| details | 一对多明细表配置数组 | Array | [] |
| columnIndex | 明细表是否显示行号 | Boolean | false |
| ck | 明细表复选框 | Boolean | true |
| textInline | 明细表不换行显示 | Boolean | true |
| loadFormBefore | 表单加载前方法loadFormBefore(params, callback) | Function | (params, callback) => { callback(true) } |
| loadFormAfter | 表单加载后方法loadFormAfter(result, callback) | Function | (result, callback) => { callback(true) } |
| loadTableBefore | 明细表加载前方法loadTableBefore(params, callback, table, item) | Function | (params, callback, table, item) => { callback(true) } |
| loadTableAfter | 明细表加载后方法loadTableAfter(params, result, callback, table, item) | Function | (params, result, callback, table, item) => { callback(true) } |
| addBefore | 新建前方法addBefore(formData, callback) | Function | (formData, callback) => { callback(true) } |
| addAfter | 新建后方法addAfter(formData, callback) | Function | (formData, callback) => { callback(true) } |
| updateBefore | 更新前方法updateBefore(formData, callback) | Function | (formData, callback) => { callback(true) } |
| updateAfter | 更新后方法updateAfter(params, callback) | Function | (params, callback) => { callback(true) } |
| delRow | 删除行前方法delRow(rows) | Function | (rows) => { return true } |
| addRow | 明细表添加行方法addRow(table, ops),返回要添加的行数据对象 | Function | () => { return {} } |
| detailHeight | 明细表高度 | Number | 240 |
| submitChangeRows | 只提交变化的数据 | Boolean | true |
| select2Count | 超出数量显示select2组件 | Number | 5000 |
| printBefore | 打印前方法printBefore(rows) | Function | (rows) => { return true } |
| selectable | 行是否可选方法selectable(rows) | Function | (rows) => { return true } |
| rowClick | 行点击事件rowClick({row, column, event, index}) | Function | ({ row, column, event, index }) => { return true } |
组件方法 (Methods)
组件方法使用方式,可参照上面示例,如:<template><vol-edit ref="editRef"></vol-edit></template><script setup> const editRef=ref(); const save=()=>{editRef.value.save()}</script>
| 方法 | 说明 | 参数 |
|---|---|---|
| focus | 表单字段获取焦点focus(field) | field:字段名 |
| getData | 编辑页面加载表单数据getData() | 无 |
| save | 保存表单数据save() | 无 |
| reset | 重置表单reset() | 无 |
| getTable | 获取明细表对象getTable(tableName) | tableName:明细表表名,返回表格组件实例 |
| getDetailData | 获取明细表数据getDetailData(item, row) | item:明细表配置对象(可选),row:行数据(可选) |
| loadDetail | 刷新指定明细表数据loadDetail(table) | table:明细表表名 |
| detailAddRow | 明细表添加行detailAddRow(item, isSub) | item:明细表配置对象,isSub:是否为三级表(可选) |
| delRow | 删除明细表行delRow(rows, item) | rows:要删除的行数组,item:明细表配置对象(可选) |
| tabsClick | 一对多明细表切换事件tabsClick(table) | table:切换到的表名 |
| detailRowOnChange | 明细表行选择变化事件detailRowOnChange(row, item) | row:选中的行数据,item:明细表配置对象 |
| onSortEnd | 明细表拖动排序结束事件onSortEnd(rows, newIndex, oldIndex) | rows:排序后的行数组,newIndex:新索引,oldIndex:旧索引 |
| dicInited | 字典数据加载完成事件dicInited(dicData, table) | dicData:字典数据,table:表名(可选) |
| btnClick | 按钮点击事件btnClick(item) | item:按钮配置对象 |
| saveAudit | 保存审核saveAudit(params, rows, callback) | params:审核参数,rows:审核的行数组,callback:回调函数 |
| beginEdit | 明细表开始编辑beginEdit(row, column, index) | row:行数据,column:列配置,index:行索引 |
| endEditBefore | 明细表结束编辑前endEditBefore(row, column, index) | row:行数据,column:列配置,index:行索引 |
只读属性
| 属性 | 说明 | 类型 |
|---|---|---|
| id | 当前编辑的主键ID值 | ref |
| dicInfo | 字典数据信息对象 | reactive |
| buttons | 主表按钮数组 | reactive |
| detailButtons | 明细表按钮数组 | reactive |
| currentRow | 当前操作的行数据 | reactive |
| workFlowSteps | 工作流步骤数组 | reactive |
| form | 表单组件实例 | ref |
| table | 主从明细表组件实例 | ref |
| detailsRef | 一对多明细表组件实例 | ref |
| subDetails | 三级明细表配置数组 | ref |
| subDetailsRef | 三级明细表组件实例 | ref |
| stateName | 状态名称(新建/编辑) | computed |
| autitTableOptions | 审核表格配置对象 | reactive |
| audit | 审核组件实例 | ref |
组件事件 (Events)
| 事件 | 说明 | 参数 |
|---|---|---|
| dicInited | 字典数据加载完成事件 | dicData:字典数据,table:表名(可选) |
| beginEdit | 明细表开始编辑事件 | row:行数据,column:列配置,index:行索引 |
| endEditBefore | 明细表结束编辑前事件 | row:行数据,column:列配置,index:行索引 |
| loadFormAfter | 表单数据加载后事件 | result:加载的数据结果 |
| initButtons | 初始化主表按钮事件 | buttons:按钮数组 |
| initDetailButtons | 初始化明细表按钮事件 | detailButtons:明细表按钮数组 |
| initDetailColumns | 初始化一对多二级表格配置事件 | detailColumns:二级明细表配置数组 |
| initSubDetailColumns | 初始化一对多三级表格配置事件 | subDetailColumns:三级明细表配置数组 |
| detailRowChange | 明细表行选择变化事件 | row:选中的行数据,item:明细表配置对象 |
| onSortEnd | 明细表拖动排序结束事件 | rows:排序后的行数组,newIndex:新索引,oldIndex:旧索引 |
| tabsClick | 一对多明细表切换事件 | table:切换到的表名 |
| tabClick | 表单分组点击事件 | name:分组名称 |
自定义按钮
自定义按钮
- 在生成的vue文件直接配置表单、明细表按钮

自定义按钮1
<template>
// 在生成的edit.vue文件vol-edit标签添加@initButtons="initButtons"方法
<vol-edit ref="edit" @initButtons="initButtons"></vol-edit>
</template>
<script setup lang="jsx">
//初始化表单按钮
const initButtons = (buttons) => {
//splice在第三个按钮后面添加一个按钮,也可使用buttons.push或者unshift添加按钮到最后或最前
buttons.splice(3, 0, ...[{
name: '测试按钮', //按钮名称
icon: 'el-icon-edit-outline', //按钮图标http://doc.volcore.xyz/icon/
type: 'success', //type类型见:https://element-plus.org/zh-CN/component/button.html
plain: true,
onClick: () => {
proxy.$message.success('点击了按钮')
}
}]) //数据可以传多个按钮配置
}
</script>
自定义按钮2
<template>
// 在生成的edit.vue文件vol-edit标签添加@initDetailButtons="detailButtons"三个方法
<vol-edit ref="edit"
@initDetailButtons="initDetailButtons"
@initDetailColumns="initDetailColumns"
@initSubDetailColumns="initSubDetailColumns"
></vol-edit>
</template>
<script setup lang="jsx">
//初始化主从表按钮(注意不是一对多,只是主从表,一对多的看下面)
const initDetailButtons = (detailButtons) => {
// 配置同上(自定义按钮1),detailButtons.splice()
}
//初始化主从表按钮(注意不是一对多,只是主从表)
// detail.columns.forEach((col) => {
// if (col.field == 'Remark') {
// col.edit = null
// col.render = (h, { row, column, index }) => {
// return (
// <div>
// <el-button link
// onClick={($e) => {proxy.$message.success('点击了图标1') }}
// class="el-icon-search"
// style="color: #2196F3;cursor: pointer;"
// ></el-button>
// <el-button link
// onClick={($e) => {proxy.$message.success('点击了图标2') }}
// class="el-icon-date"
// style="margin-left:1px;color: #2196F3;cursor: pointer;"
// ></el-button>
// <span style="margin-left:5px">{row.Remark}</span>
// </div>
// )
// }
// }
// })
//初始化一对多二级表格与按钮
const initDetailColumns = (detailColumns) => {
detailColumns[0].buttons.push({
name: '按钮', //按钮名称
icon: 'el-icon-edit-outline', //按钮图标http://doc.volcore.xyz/icon/
type: 'primary',
plain: true,
onClick: () => {
proxy.$message.success('点击了二级明细按钮')
}
})
//初始化表格按钮
detailColumns[0].columns.forEach((col) => {
if (col.field == 'Remark') {
col.edit = null
col.render = (h, { row, column, index }) => {
return (
<div>
<el-button link
onClick={($e) => {proxy.$message.success('点击了图标1') }}
class="el-icon-search"
style="color: #2196F3;cursor: pointer;"
></el-button>
<el-button link
onClick={($e) => {proxy.$message.success('点击了图标2') }}
class="el-icon-date"
style="margin-left:1px;color: #2196F3;cursor: pointer;"
></el-button>
<span style="margin-left:5px">{row.Remark}</span>
</div>
)
}
}
})
//初始化一对多三级表格与按钮
const initSubDetailColumns = (subDetailColumns) => {
//操作同上initDetailColumns
}
</script>
自定义按钮3
<template>
// 在生成的edit.vue文件vol-edit标签添加@detailButtons="detailButtons"三个方法
<vol-edit ref="edit"
@initDetailColumns="initDetailColumns"
@initSubDetailColumns="initSubDetailColumns"
></vol-edit>
</template>
<script setup lang="jsx">
//主从表添加按钮(注意不是一对多)
// detail.columns.push({title:"操作"})//其他配置同下
//初始化一对多二级表格与按钮
const initDetailColumns = (detailColumns) => {
//明细表单独添加一列按钮,将示例:http://doc.volcore.xyz/web/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8C%89%E9%92%AE.html
detailColumns[0].columns.push({
title: '操作',
field: '操作',
width: 80,
align: 'center', // 'center',
render: (h, { row, column, index }) => {
return (
<div>
<el-button
onClick={($e) => { proxy.$message.success('点击了表格按钮') }}
type="primary" plain
style="height:26px; padding: 10px !important;">
查看
</el-button>
</div>
)
}
})
}
}
//初始化一对多三级表格与按钮
const initSubDetailColumns = (subDetailColumns) => {
//操作同上initDetailColumns
}
</script>
主表表单配置
主表表单配置
- 在生成vue文件中配置表单属性
获取表单值
<script setup lang="jsx">
//表单值对象
editFormFields
</script>
表单设置值
<script setup lang="jsx">
editFormFields.字段=值
</script>
设置明细表高度
<script setup lang="jsx">
const detailHeight = 100
</script>
判断是否为新建
<script setup lang="jsx">
if(isAdd){
}
</script>
获取编辑主键id值
<script setup lang="jsx">
//只有编辑时才有值
const id= route.query.id;
</script>
http调用接口请求
<script setup lang="jsx">
//生成的edit已经内置了,直接使用即可
const { proxy } = getCurrentInstance()
proxy.http.post("url",参数,true).then(res=>{
})
</script>
提示信息
<script setup lang="jsx">
//生成的edit已经内置了,直接使用即可
const { proxy } = getCurrentInstance()
proxy.$message.success("提示信息")
proxy.$message.error("提示信息")
</script>
自定义显示内容(数据槽)
见上面【新页面编辑说明】截图效果,生成的edit.vue文件已内置,在文件中提示的【自定义数据槽显示】位置即自定义数据槽
表单数据加载前
//编辑时才会执行
<template>
// 在生成的edit.vue文件vol-edit标签添加@loadFormBefore="loadFormBefore"方法
<vol-edit ref="edit"
:loadFormBefore="loadFormBefore"
></vol-edit>
</template>
<script setup lang="jsx">
//页面加载时获取表单字典数据
const loadFormBefore = (params,callback) => {
//params为查询条件参数
callback(true)//返回false不会加载数据
}
</script>
表单数据加载后
//编辑时才会执行
<template>
// 在生成的edit.vue文件vol-edit标签添加@loadFormBefore="loadFormBefore"方法
<vol-edit ref="edit"
:loadFormBefore="loadFormBefore"
></vol-edit>
</template>
<script setup lang="jsx">
//页面加载时获取表单字典数据
const loadFormAfter = (result) => {
//result后台返回的表单数据
//formFields为当前表单数据,在此方法也可以直接设置值
}
</script>
重置(刷新)表单
edit.value.reset();
//重置表单也可以设置一些默认值
//edit.value.reset({字段:值});
数据源(数据字典)加载事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@dicInited="dicInited"方法
<vol-edit ref="edit"
@dicInited="dicInited"
></vol-edit>
</template>
<script setup lang="jsx">
//页面加载时获取表单字典数据
//dicData返回的字典数据
//table,对应明细表的字典,table没有值时为表单加载的数据
const dicInited = (dicData,table) => {
}
</script>
addBefore 新建前
//新建时点保存按钮事件
<template>
// 在生成的edit.vue文件vol-edit标签添加:addBefore="addBefore"方法
<vol-edit ref="edit"
:addBefore="addBefore"
></vol-edit>
</template>
<script setup lang="jsx">
//页面加载时获取表单字典数据
const addBefore = (formData,callback) => {
//formData提交的表单数据
callback(true);//返回false不会执行保存
}
</script>
addAfter 新建后
//新建时点保存按钮事件,后台接口返回事件
<template>
// 在生成的edit.vue文件vol-edit标签添加:addAfter="addAfter"方法
<vol-edit ref="edit"
:addAfter="addAfter"
></vol-edit>
</template>
<script setup lang="jsx">
const addAfter = (result,callback) => {
//formData提交的表单数据
callback(true);//返回false不会执行保存
}
</script>
updateBefore 编辑前
//编辑时点保存按钮事件
<template>
// 在生成的edit.vue文件vol-edit标签添加:updateBefore="updateBefore"方法
<vol-edit ref="edit"
:updateBefore="updateBefore"
></vol-edit>
</template>
<script setup lang="jsx">
const updateBefore = (formData,callback) => {
//formData提交的表单数据
callback(true);//返回false不会执行保存
}
</script>
updateAfter 编辑后
//编辑时点保存按钮事件,后台接口返回事件
<template>
// 在生成的edit.vue文件vol-edit标签添加:updateAfter="updateAfter"方法
<vol-edit ref="edit"
:updateAfter="updateAfter"
></vol-edit>
</template>
<script setup lang="jsx">
//页面加载时获取表单字典数据
const updateAfter = (result,callback) => {
//formData提交的表单数据
callback(true);//返回false不会执行保存
}
</script>
提交表格所有数据
//默认只会提交修改的明细表数据,设置为true会提交所有加载的明细表数据
<template>
// 在生成的edit.vue文件vol-edit标签添加:submitChangeRows="true"方法
<vol-edit ref="edit" :submitChangeRows="true"></vol-edit>
</template>
表单自定义按钮
<template>
//在生成的edit.vue文件中操作
<vol-edit ref="edit" ></vol-edit>
</template>
<script setup lang="jsx">
editFormOptions.forEach((option) => {
option.forEach((item) => {
if (item.field == '字段') {
item.extra = {
btnValue: '发送短信',
render: (h, {}) => {
return (
<div>
<el-button
type="primary"
link
onClick={() => {
proxy.$message.success('点击了按钮')
}}
>
<i class="el-icon-search">选择</i>
</el-button>
<el-button
type="primary"
style="margin-left:0"
link
onClick={() => {
//设置倒计时
var timer = setInterval(function () {
if (countdown > 0) {
item.extra.btnValue=countdown+'(秒)'
countdown--
} else {
//给倒计时按钮设置值
item.extra.btnValue='发送短信';
countdown=10;
clearInterval(timer)
}
}, 1000)
}}
>
<i class="el-icon-message">{item.extra.btnValue}</i>
</el-button>
</div>
)
}
}
}
})
})
</script>
表单分组显示
<template>
//在生成的edit.vue文件中操作
<vol-edit ref="edit" ></vol-edit>
</template>
<script setup lang="jsx">
editFormOptions.forEach((ops) => {
ops.forEach((x) => {
if (['字段1','字段2'].includes(x.field)) {
x.group = "基础信息";
} else if (['字段3','字段4'].includes(x.field)) {
x.group = "供应商资质";
} else {
x.group = "供应商信息";
}
});
});
</script>
弹出框选择数据
见上面[表单自定义按钮]配置按钮及触发事件,再接着在当前页面加一个弹出框组件显示
明细表配置
明细表配置
- 在生成的vue可对明细表配置编辑、数据加载、合计等操作

loadTableBefore明细表查询前
<template>
// 在生成的edit.vue文件vol-edit标签添加:loadTableBefore="loadTableBefore"两个方法
<vol-edit ref="edit" :loadTableBefore="loadTableBefore"></vol-edit>
</template>
<script setup lang="jsx">
//明细表加载前方法
const loadTableBefore = (params, callback,table,item) => {
//params明细表查询参数
//table查询的明细表(一对多的明细表时才有值)
//item明细表配置(一对多的明细表时才有值)
callback(true);//返回false不会加载明细表数据
}
</script>
loadTableAfter明细表查询后
<template>
// 在生成的edit.vue文件vol-edit标签添加:loadTableAfter="loadTableAfter"两个方法
<vol-edit ref="edit" :loadTableAfter="loadTableAfter"></vol-edit>
</template>
<script setup lang="jsx">
//明细表从数据库加载后方法,可以给明细重新设置值
const loadTableBefore = (rows,result, callback,table,item) => {
//rows返回的明细表数据
//result接口返回的完整数据
//table查询的明细表(一对多的明细表时才有值)
//item明细表配置(一对多的明细表时才有值)
callback(true);//返回false不会加载明细表数据
}
</script>
获取明细表格配置(主从表)
detail.columns
获取明细表格配置(一对多)
<template>
// 在生成的edit.vue文件vol-edit标签添加@initDetailColumns="initDetailColumns"两个方法
<vol-edit ref="edit"
@initDetailColumns="initDetailColumns"
@initSubDetailColumns="initSubDetailColumns"
></vol-edit>
</template>
<script setup lang="jsx">
//初始化一对多二级表格配置
const initDetailColumns = (detailColumns) => {
//detailColumns里面包括多张明细表按钮、表格等配置信息
}
//初始化一对多三级表格与按钮
const initSubDetailColumns = (subDetailColumns) => {
//操作同上initDetailColumns
}
//一对多二级表格配置可直接使用details对象
details[0].columns;
details.foEach(item=>{})
</script>
明设置添加值设置默认值
<template>
// 在生成的edit.vue文件vol-edit标签添加
<vol-edit ref="edit" :addRow="addRow"
></vol-edit>
</template>
<script setup lang="jsx">
const addRow=(table,ops)=>{
//判断表,如果是一对一主从明细表不需要if判断
if(table==='表名'){
return {字段1:值2,字段2:值2}
}
}
</script>
获取明细对象
edit.value.getTable('明细表表名')
获取明细表所有行数据
const rows= edit.value.getTable('明细表表名').rowData;
明细表添加行数据
const rows= edit.value.getTable('明细表表名').rowData;
//添加到最后一行
rows.push(...[{字段:"值"},{字段:"值"}])
//添加到第一行
rows.unshift(...[{字段:"值"},{字段:"值"}])
获取明细表选中的行
const rows= edit.value.getTable('明细表表名').getSelected();
设置明细表默认选中行
edit.value.getTable('明细表表名').toggleRowSelection(row);//row为需要选中的行
刷新明细表
edit.value.loadDetail('表名');//刷新指定明细表数据
组件属性 (Props)
| 属性 | 说明 | 类型 | 默认 |
|---|---|---|---|
| value | 编辑的主键ID值 | null | null |
| showTabs | 一对多明细表是否显示tab标签,false时会从上往下顺序显示 | Boolean | true |
| editChange | 新建数据后,变更为编辑状态 | Boolean | false |
| sortable | 明细表拖动排序 | Boolean | false |
| keyField | 主键字段 | String | "" |
| tableName | 表名 | String | "" |
| tableCNName | 表中文名 | String | "表名" |
| labelPosition | 标签显示位置 | String | "" |
| labelWidth | 表单标签宽度 | Number | 100 |
| formFields | 表单字段数据对象 | Object | {} |
| formOptions | 表单配置数组 | Array | [] |
| detail | 主从明细表配置对象{cnName:"",table:"",columns:[],url:"",paginationHide:false,pagination:{size:100,sortName:""},height:0} | Object | {} |
| details | 一对多明细表配置数组 | Array | [] |
| columnIndex | 明细表是否显示行号 | Boolean | false |
| ck | 明细表复选框 | Boolean | true |
| textInline | 明细表不换行显示 | Boolean | true |
| loadFormBefore | 表单加载前方法loadFormBefore(params, callback) | Function | (params, callback) => { callback(true) } |
| loadFormAfter | 表单加载后方法loadFormAfter(result, callback) | Function | (result, callback) => { callback(true) } |
| loadTableBefore | 明细表加载前方法loadTableBefore(params, callback, table, item) | Function | (params, callback, table, item) => { callback(true) } |
| loadTableAfter | 明细表加载后方法loadTableAfter(params, result, callback, table, item) | Function | (params, result, callback, table, item) => { callback(true) } |
| addBefore | 新建前方法addBefore(formData, callback) | Function | (formData, callback) => { callback(true) } |
| addAfter | 新建后方法addAfter(formData, callback) | Function | (formData, callback) => { callback(true) } |
| updateBefore | 更新前方法updateBefore(formData, callback) | Function | (formData, callback) => { callback(true) } |
| updateAfter | 更新后方法updateAfter(params, callback) | Function | (params, callback) => { callback(true) } |
| delRow | 删除行前方法delRow(rows) | Function | (rows) => { return true } |
| addRow | 明细表添加行方法addRow(table, ops),返回要添加的行数据对象 | Function | () => { return {} } |
| detailHeight | 明细表高度 | Number | 240 |
| submitChangeRows | 只提交变化的数据 | Boolean | true |
| select2Count | 超出数量显示select2组件 | Number | 5000 |
| printBefore | 打印前方法printBefore(rows) | Function | (rows) => { return true } |
| selectable | 行是否可选方法selectable(rows) | Function | (rows) => { return true } |
| rowClick | 行点击事件rowClick({row, column, event, index}) | Function | ({ row, column, event, index }) => { return true } |
组件方法 (Methods)
组件方法使用方式,可参照上面示例,如:<template><vol-edit ref="editRef"></vol-edit></template><script setup> const editRef=ref(); const save=()=>{editRef.value.save()}</script>
| 方法 | 说明 | 参数 |
|---|---|---|
| focus | 表单字段获取焦点focus(field) | field:字段名 |
| getData | 编辑页面加载表单数据getData() | 无 |
| save | 保存表单数据save() | 无 |
| reset | 重置表单reset() | 无 |
| getTable | 获取明细表对象getTable(tableName) | tableName:明细表表名,返回表格组件实例 |
| getDetailData | 获取明细表数据getDetailData(item, row) | item:明细表配置对象(可选),row:行数据(可选) |
| loadDetail | 刷新指定明细表数据loadDetail(table) | table:明细表表名 |
| detailAddRow | 明细表添加行detailAddRow(item, isSub) | item:明细表配置对象,isSub:是否为三级表(可选) |
| delRow | 删除明细表行delRow(rows, item) | rows:要删除的行数组,item:明细表配置对象(可选) |
| tabsClick | 一对多明细表切换事件tabsClick(table) | table:切换到的表名 |
| detailRowOnChange | 明细表行选择变化事件detailRowOnChange(row, item) | row:选中的行数据,item:明细表配置对象 |
| onSortEnd | 明细表拖动排序结束事件onSortEnd(rows, newIndex, oldIndex) | rows:排序后的行数组,newIndex:新索引,oldIndex:旧索引 |
| dicInited | 字典数据加载完成事件dicInited(dicData, table) | dicData:字典数据,table:表名(可选) |
| btnClick | 按钮点击事件btnClick(item) | item:按钮配置对象 |
| saveAudit | 保存审核saveAudit(params, rows, callback) | params:审核参数,rows:审核的行数组,callback:回调函数 |
| beginEdit | 明细表开始编辑beginEdit(row, column, index) | row:行数据,column:列配置,index:行索引 |
| endEditBefore | 明细表结束编辑前endEditBefore(row, column, index) | row:行数据,column:列配置,index:行索引 |
组件事件 (Events)
| 事件 | 说明 | 参数 |
|---|---|---|
| dicInited | 字典数据加载完成事件 | dicData:字典数据,table:表名(可选) |
| beginEdit | 明细表开始编辑事件 | row:行数据,column:列配置,index:行索引 |
| endEditBefore | 明细表结束编辑前事件 | row:行数据,column:列配置,index:行索引 |
| loadFormAfter | 表单数据加载后事件 | result:加载的数据结果 |
| initButtons | 初始化主表按钮事件 | buttons:按钮数组 |
| initDetailButtons | 初始化明细表按钮事件 | detailButtons:明细表按钮数组 |
| initDetailColumns | 初始化一对多二级表格配置事件 | detailColumns:二级明细表配置数组 |
| initSubDetailColumns | 初始化一对多三级表格配置事件 | subDetailColumns:三级明细表配置数组 |
| detailRowChange | 明细表行选择变化事件 | row:选中的行数据,item:明细表配置对象 |
| onSortEnd | 明细表拖动排序结束事件 | rows:排序后的行数组,newIndex:新索引,oldIndex:旧索引 |
| tabsClick | 一对多明细表切换事件 | table:切换到的表名 |
| tabClick | 表单分组点击事件 | name:分组名称 |
dicInited 字典数据加载完成事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@dicInited="dicInited"方法
<vol-edit ref="edit"
@dicInited="dicInited"
></vol-edit>
</template>
<script setup lang="jsx">
//页面加载时获取表单字典数据
//dicData返回的字典数据
//table,对应明细表的字典,table没有值时为表单加载的数据
const dicInited = (dicData, table) => {
//dicData:字典数据对象
//table:表名(可选),对应明细表的字典,table没有值时为表单加载的数据
console.log('字典数据加载完成', dicData, table)
}
</script>
beginEdit 明细表开始编辑事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@beginEdit="beginEdit"方法
<vol-edit ref="edit"
@beginEdit="beginEdit"
></vol-edit>
</template>
<script setup lang="jsx">
//明细表开始编辑事件
const beginEdit = (row, column, index) => {
//row:行数据
//column:列配置
//index:行索引
console.log('开始编辑', row, column, index)
return true //返回false可以阻止编辑
}
</script>
endEditBefore 明细表结束编辑前事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@endEditBefore="endEditBefore"方法
<vol-edit ref="edit"
@endEditBefore="endEditBefore"
></vol-edit>
</template>
<script setup lang="jsx">
//明细表结束编辑前事件
const endEditBefore = (row, column, index) => {
//row:行数据
//column:列配置
//index:行索引
console.log('结束编辑前', row, column, index)
//可以在这里进行数据验证
if (!row.字段) {
proxy.$message.error('字段不能为空')
return false //返回false可以阻止结束编辑
}
return true
}
</script>
loadFormAfter 表单数据加载后事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@loadFormAfter="loadFormAfter"方法
<vol-edit ref="edit"
@loadFormAfter="loadFormAfter"
></vol-edit>
</template>
<script setup lang="jsx">
//表单数据加载后事件
const loadFormAfter = (result) => {
//result:后台返回的表单数据
console.log('表单数据加载完成', result)
//可以在这里对表单数据进行处理
//editFormFields为当前表单数据,在此方法也可以直接设置值
//editFormFields.字段 = result.字段
}
</script>
initButtons 初始化主表按钮事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@initButtons="initButtons"方法
<vol-edit ref="edit"
@initButtons="initButtons"
></vol-edit>
</template>
<script setup lang="jsx">
//初始化主表按钮事件
const initButtons = (buttons) => {
//buttons:按钮数组
//splice在第三个按钮后面添加一个按钮,也可使用buttons.push或者unshift添加按钮到最后或最前
buttons.splice(3, 0, ...[{
name: '测试按钮', //按钮名称
icon: 'el-icon-edit-outline', //按钮图标
type: 'success', //type类型
plain: true,
onClick: () => {
proxy.$message.success('点击了按钮')
}
}])
}
</script>
initDetailButtons 初始化明细表按钮事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@initDetailButtons="initDetailButtons"方法
<vol-edit ref="edit"
@initDetailButtons="initDetailButtons"
></vol-edit>
</template>
<script setup lang="jsx">
//初始化明细表按钮事件(主从表)
const initDetailButtons = (detailButtons) => {
//detailButtons:明细表按钮数组
//可以添加、删除或修改按钮
detailButtons.push({
name: '自定义按钮',
icon: 'el-icon-edit-outline',
type: 'primary',
plain: true,
onClick: () => {
proxy.$message.success('点击了明细表按钮')
}
})
}
</script>
initDetailColumns 初始化一对多二级表格配置事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@initDetailColumns="initDetailColumns"方法
<vol-edit ref="edit"
@initDetailColumns="initDetailColumns"
></vol-edit>
</template>
<script setup lang="jsx">
//初始化一对多二级表格配置事件
const initDetailColumns = (detailColumns) => {
//detailColumns:二级明细表配置数组
//detailColumns里面包括多张明细表按钮、表格等配置信息
detailColumns.forEach((detail) => {
//添加按钮
detail.buttons.push({
name: '二级表按钮',
icon: 'el-icon-edit-outline',
type: 'primary',
onClick: () => {
proxy.$message.success('点击了二级明细按钮')
}
})
//修改表格列配置
detail.columns.forEach((col) => {
if (col.field == 'Remark') {
col.edit = null
col.render = (h, { row, column, index }) => {
return (
<div>
<el-button link
onClick={($e) => {proxy.$message.success('点击了图标') }}
class="el-icon-search"
style="color: #2196F3;cursor: pointer;"
></el-button>
<span style="margin-left:5px">{row.Remark}</span>
</div>
)
}
}
})
})
}
</script>
initSubDetailColumns 初始化一对多三级表格配置事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@initSubDetailColumns="initSubDetailColumns"方法
<vol-edit ref="edit"
@initSubDetailColumns="initSubDetailColumns"
></vol-edit>
</template>
<script setup lang="jsx">
//初始化一对多三级表格配置事件
const initSubDetailColumns = (subDetailColumns) => {
//subDetailColumns:三级明细表配置数组
//操作同上initDetailColumns
subDetailColumns.forEach((detail) => {
//添加按钮
detail.buttons.push({
name: '三级表按钮',
icon: 'el-icon-edit-outline',
type: 'primary',
onClick: () => {
proxy.$message.success('点击了三级明细按钮')
}
})
//修改表格列配置
detail.columns.forEach((col) => {
if (col.field == 'Remark') {
//自定义列渲染
col.render = (h, { row, column, index }) => {
return <span>{row.Remark}</span>
}
}
})
})
}
</script>
detailRowChange 明细表行选择变化事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@detailRowChange="detailRowChange"方法
<vol-edit ref="edit"
@detailRowChange="detailRowChange"
></vol-edit>
</template>
<script setup lang="jsx">
//明细表行选择变化事件
const detailRowChange = (row, item) => {
//row:选中的行数据
//item:明细表配置对象
console.log('明细表行选择变化', row, item)
//可以在这里根据选中的行数据加载三级明细表数据
if (item && item.detail) {
//加载三级明细表数据
const tableRef = edit.value.getTable(item.detail.table)
if (tableRef) {
tableRef.load({ value: row[item.key] })
}
}
}
</script>
onSortEnd 明细表拖动排序结束事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@onSortEnd="onSortEnd"方法
<vol-edit ref="edit"
@onSortEnd="onSortEnd"
></vol-edit>
</template>
<script setup lang="jsx">
//明细表拖动排序结束事件
const onSortEnd = (rows, newIndex, oldIndex) => {
//rows:排序后的行数组
//newIndex:新索引
//oldIndex:旧索引
console.log('拖动排序结束', rows, newIndex, oldIndex)
//可以在这里更新排序字段的值
rows.forEach((row, index) => {
row.SortNo = index + 1 //更新排序号
})
}
</script>
tabsClick 一对多明细表切换事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@tabsClick="tabsClick"方法
<vol-edit ref="edit"
@tabsClick="tabsClick"
></vol-edit>
</template>
<script setup lang="jsx">
//一对多明细表切换事件
const tabsClick = (table) => {
//table:切换到的表名
console.log('切换明细表', table)
//可以在这里根据切换的表名执行相应操作
if (table === '表名1') {
//执行表名1相关操作
} else if (table === '表名2') {
//执行表名2相关操作
}
}
</script>
tabClick 表单分组点击事件
<template>
// 在生成的edit.vue文件vol-edit标签添加@tabClick="tabClick"方法
<vol-edit ref="edit"
@tabClick="tabClick"
></vol-edit>
</template>
<script setup lang="jsx">
//表单分组点击事件
const tabClick = (name) => {
//name:分组名称
console.log('表单分组点击', name)
//可以在这里根据分组名称执行相应操作
if (name === '基础信息') {
//执行基础信息相关操作
} else if (name === '供应商信息') {
//执行供应商信息相关操作
}
}
</script>


