新页面编辑说明

新页面编辑说明

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

自定义按钮

自定义按钮

  1. 在生成的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>



主表表单配置

主表表单配置

  1. 在生成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>

表单自定义按钮

An image

<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>

表单分组显示

An image

<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>

弹出框选择数据

见上面[表单自定义按钮]配置按钮及触发事件,再接着在当前页面加一个弹出框组件显示

明细表配置

明细表配置

  1. 在生成的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('表名');//刷新指定明细表数据
Last Updated 2025/3/31 23:23:40