1、生命周期

(1)、created 初始化

描述:增强型js初始化完成后执行的钩子函数

  1. created(){
  2. that.$message.success("created执行成功");
  3. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(2)、loaded 加载数据完毕

描述:数据加载完成后执行的钩子函数,不论请求成功失败都会执行

  1. //erp风格页面可能存在多个表,它们可能需要不同的loaded操作
  2. loaded(){
  3. return{
  4. //表名
  5. api_method_example0(){
  6. //当api_method_example0加载数据完毕就会执行以下代码,这里是弹出一句提示
  7. that.$message.success("api_method_example0 数据请求完成");
  8. },
  9. //表名
  10. api_method_example0_sub(){
  11. //api_method_example0_sub加载数据完毕就会执行以下代码,这里是弹出一句提示
  12. that.$message.success("api_method_example0_sub 数据请求完成")
  13. },
  14. }
  15. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(3)、loadedOnce 加载数据完毕

描述:数据加载完成后执行的钩子函数,不论请求成功失败都会执行,用法同loaded,但只会执行一次

  1. //erp风格页面可能存在多个表,它们可能需要不同的loaded操作
  2. loadedOnce(){
  3. return{
  4. //表名
  5. api_method_example0(){
  6. //当api_method_example0第一次加载数据完毕就会执行以下代码,这里是弹出一句提示
  7. that.$message.success("api_method_example0 数据请求完成");
  8. },{
  9. //表名
  10. api_method_example0_sub(){
  11. //当api_method_example0_sub第一次加载数据完毕就会执行以下代码,这里是弹出一句提示
  12. that.$message.success("api_method_example0_sub 数据请求完成")
  13. },
  14. }
  15. }

(4)、loadParams 添加请求参数

描述:向数据列表的请求中强行添加参数

  1. //erp风格页面可能存在多个表,它们可能需要不同的loadParams操作
  2. loadParams() {
  3. return {
  4. //表名,这里表示向 api_method_example0 表的请求数据方法中注入参数meaningless_field=123
  5. api_method_example0() {
  6. return {
  7. 'meaningless_field': 123
  8. }
  9. },
  10. api_method_example0_sub() {
  11. return {
  12. 'sub_meaningless_field': 456
  13. }
  14. },
  15. }
  16. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(5)、控制按钮的自定义显示和隐藏

  1. controlBtn(){
  2. return {
  3. //列按钮的自定义显示隐藏
  4. link(row){
  5. //row是当前行数据
  6. return {
  7. /**
  8. 按钮名称(){
  9. if(条件判断){
  10. return false;//不显示,不return false则默认会显示
  11. }
  12. }
  13. */
  14. testLink(){
  15. //状态为1的行不会显示testLink这个行内按钮
  16. if(row.states=='1'){
  17. return false;
  18. }
  19. }
  20. }
  21. },
  22. //表单按钮的自定义显示隐藏
  23. form(model){
  24. //model是主表数据
  25. return {
  26. /**
  27. 按钮名称(){
  28. if(条件判断){
  29. return false;//不显示,不return false则默认会显示
  30. }
  31. }
  32. */
  33. testForm(){
  34. //主表数据的状态为1时不会显示testForm这个表单按钮
  35. if(model.states=='1'){
  36. return false;//不显示,不return false则默认会显示
  37. }
  38. }
  39. }
  40. }
  41. //列表顶部按钮的自定义显示隐藏
  42. button(){
  43. return {
  44. /**
  45. 按钮名称(){
  46. if(条件判断){
  47. return false;//不显示,不return false则默认会显示
  48. }
  49. }
  50. */
  51. testButton(){
  52. //当列表没有选中记录时不会显示testButton这个列表按钮
  53. if(that.table.selectedRow.length==0){
  54. return false;
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }

2、api方法

(1)、loadData 刷新列表

  1. /**假设在某个自定义按钮(如customButtonHandle)中我们需要刷新列表数据*/
  2. customButtonHandle(){
  3. that.loadData()
  4. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2






(2)、getDictOptions 获取字典

/*
getDictOptions 返回对应的字典或空数组
@param{}name 字典名称
@param{}currentTableName 表名
*/

  1. /**假设在某个自定义按钮(如customButtonHandle)中我们需要获取某个表(如api_method_example0)中某个字段(如states)的字典*/
  2. customButtonHandle(){
  3. var dictOptions = that.getDictOptions('states','api_method_example0');
  4. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(3)、getDictText 获取字典文字

/*
getDictText 返回字典值对应的text或空字符串
@param{}text 字典值
@param{}name 字典名
@param{}currentTableName 表名
*/

  1. /**假设在某个自定义按钮(如customButtonHandle)中我们需要获取某个表(如api_method_example0)中某个字段(如states)的值为1时的文字*/
  2. customButtonHandle(){
  3. var text = that.getDictText(1,'states','api_method_example0');
  4. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(4)、changeCustomRender 改变列表内容

/*
api方法 修改某列的样式,如当状态为1时显示绿色字体,状态为2显示红色字体
@param{string} column 列名
@param{function} render 渲染什么内容的逻辑函数,注意返回的html代码以 `` 包裹,返回的html代码只能使用html自有标签
@param{string} currentTableName 要处理的表格,因为可能存在多个表格。不传则默认认为是主表
/

  1. /**列表中states字段值为1时,该单元格字体变为绿色,值为0的变为红色*/
  2. loaded(){
  3. /**loaded是列表加载完成执行的钩子函数*/
  4. return{
  5. api_method_example0(){
  6. that.changeCustomRender('states',(text,row,index)=>{
  7. let result = that.getDictText(text,'states')
  8. if(text=='1'){
  9. return `<div style='color:#10ff10;'>${result}</div>`
  10. }else if(text=='0'){
  11. return `<div style='color:#ff1111;'>${result}</div>`
  12. }else{
  13. return result;
  14. }
  15. },'api_method_example0');
  16. }
  17. }
  18. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(5)、$message 弹框提示

  1. //假设customButtonHandle是定义好的自定义按钮方法
  2. customButtonHandle(){
  3. that.$message.success("调用自定义方法成功")
  4. //更多用法参考 https://www.antdv.com/components/modal-cn/
  5. }

(6)、$confirm 弹出确认框

  1. //假设customButtonHandle是定义好的自定义按钮方法
  2. customButtonHandle(){
  3. that.$confirm({
  4. title: '确定要继续吗?',
  5. //content: '这是内容', //内容
  6. //okText: '是', //确认按钮文字
  7. //okType: 'primary', //确认按钮类型
  8. //cancelText: '否', //取消按钮文字
  9. //更多用法参考 https://www.antdv.com/components/modal-cn/
  10. onOk:()=>{
  11. console.log("that",that)
  12. that.$message.success("你选择了确定")
  13. },
  14. onCancel:()=>{
  15. that.$message.error("你选择了取消")
  16. },
  17. })
  18. }

二、表单

1、生命周期

(1)、beforeAdd 新增进入前

描述:点击新增进入弹窗时触发的钩子函数

  1. beforeAdd(){
  2. that.$message.success("打开新增弹窗时的钩子函数触发成功")
  3. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(2)、afterAdd 新增提交后

描述:新增弹窗提交表单触发的钩子函数

  1. afterAdd(){
  2. that.$message.success("新增弹窗提交表单的钩子函数触发成功")
  3. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(3)、beforeEdit 编辑进入前

描述:点击编辑进入弹窗时触发的钩子函数

  1. beforeEdit(){
  2. that.$message.success("打开编辑弹窗时的钩子函数触发成功")
  3. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(4)、afterEdit 编辑提交后

描述:编辑弹窗提交表单触发的钩子函数

  1. afterEdit(){
  2. that.$message.success("编辑弹窗提交表单的钩子函数触发成功")
  3. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(5)、onlChange 监听表单值

描述:监听表单值发生改变时触发的钩子

  1. onlChange(){
  2. return{
  3. //主表字段返回的是改变后的值
  4. gender(value){
  5. console.log("value",value)
  6. },
  7. //细表只能统一监听整个细表的变化,再根据字段判断是哪个字段触发的。返回的是一个事件对象
  8. api_method_example0_sub(event){
  9. let {type,row,column,value,target} = event
  10. if(column.key=="grade"){
  11. let level = ''
  12. if(value>=90&&value<=100){
  13. level = 'A';
  14. }else if(value>=80&&value<90){
  15. level = 'B';
  16. }else if(value>=70&&value<80){
  17. level = 'C';
  18. }else if(value>=60&&value<70){
  19. level = 'D';
  20. }else if(value>=40&&value<60){
  21. level = 'E';
  22. }else{
  23. level = 'F';
  24. }
  25. target.setValues([
  26. {
  27. rowKey: row.id, // 行的id
  28. values: {
  29. evaluate_level:level
  30. }
  31. },
  32. ])
  33. }
  34. console.log("event",event)
  35. }
  36. }
  37. }

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(6)、阻止页面删除

  1. //方法名字,固定
  2. dontDelete(){
  3. return {
  4. //表名,这里写test_all_control 代表对test_all_control表进行控制
  5. test_all_control(row){
  6. //row是删除的当前行的数据
  7. if(row.gender=='1'){
  8. //需求:当性别为1时不可删除
  9. //自定义提示,return的内容即为提示词
  10. return "自定义提示内容";
  11. }else if(row.name=='小明'){
  12. //需求:名字是小明的记录不可删除
  13. //直接return false,当前数据不可被删除,并且固定提示“不可删除该条记录”
  14. return false;
  15. }
  16. }
  17. }
  18. }

(7)、控制按钮的自定义显示和隐藏

  1. controlBtn(){
  2. return {
  3. //列按钮的自定义显示隐藏
  4. link(row){
  5. //row是当前行数据
  6. return {
  7. /**
  8. 按钮名称(){
  9. if(条件判断){
  10. return false;//不显示,不return false则默认会显示
  11. }
  12. }
  13. */
  14. testLink(){
  15. //状态为1的行不会显示testLink这个行内按钮
  16. if(row.states=='1'){
  17. return false;
  18. }
  19. }
  20. }
  21. },
  22. //表单按钮的自定义显示隐藏
  23. form(model){
  24. //model是主表数据
  25. return {
  26. /**
  27. 按钮名称(){
  28. if(条件判断){
  29. return false;//不显示,不return false则默认会显示
  30. }
  31. }
  32. */
  33. testForm(){
  34. //主表数据的状态为1时不会显示testForm这个表单按钮
  35. if(model.states=='1'){
  36. return false;//不显示,不return false则默认会显示
  37. }
  38. }
  39. }
  40. }
  41. //列表顶部按钮的自定义显示隐藏
  42. button(){
  43. return {
  44. /**
  45. 按钮名称(){
  46. if(条件判断){
  47. return false;//不显示,不return false则默认会显示
  48. }
  49. }
  50. */
  51. testButton(){
  52. //当列表没有选中记录时不会显示testButton这个列表按钮
  53. if(that.table.selectedRow.length==0){
  54. return false;
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }

2、api方法

(1)、loadData 更新列表

/*
api方法 刷新列表的方法,刷新上层表的同时会刷新下层表
@param{string} args 为’1’的时候表示将列表重置到第一页
@param{string} currentTableName 要刷新的表
*/

refreshData(){
  //刷新子表
      that.loadData('1','api_method_example0_sub') 
  //刷新主表
  that.loadData('1') 
  //刷新主表
  that.loadData('1','api_method_example0') 
 }






(2)、addSubRows 向细表插入数据

/*
api方法 向细表中插入数据
@param{string} currentTableName 细表名
@param{Array} rows 向细表插入的数据
*/

onlChange(){
    return{
      gender(value){
        that.addSubRows('api_method_example0_sub',[{
          grade: "90",
          lesson_name: "数学",
          evaluate_level: 'A'
      },{
          grade: "90",
          lesson_name: "英语",
          evaluate_level: 'A'
      }])
    }
  }
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(3)、removeSubRows 移除细表数据

/*
api方法 删除细表数据
@param{string} currentTableName 细表名
@param{Array} ids 要移除的数据的id的数组,不传则全部移除
*/

removeSubRowsByIds(){
        that.removeSubRows('api_method_example0_sub',['16190750825910'])
},
removeSubRows(){
        that.removeSubRows('api_method_example0_sub')
},

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(4)、hideFormItem 隐藏表单字段

/*
api方法 隐藏某表单项
@param{Array} fields 要隐藏的字段名的数组
@param{string} currentTableName 主表名或一对一表名,不填则默认是当前主表
*/

hideAge(){
        //that.hideFormItem(['age'])  等价于下面代码
        that.hideFormItem(['age'],'api_method_example0')
},

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(5)、showFormItem 显示表单字段

/*
api方法 显示某表单项
@param{Array} fields 要隐藏的字段名的数组
@param{string} currentTableName 主表名或一对一表名,不填则默认是当前主表
*/

showAge(){
        //that.showFormItem(['age'])  等价于下面代码
        that.showFormItem(['age'],'api_method_example0')
},

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(6)、changeOptions 设置下拉组件选项

/*
api方法 设置某下拉组件的下拉选项
@param{string} field 要设置的字段名
@param{Array} options 下拉选项数组
*/

onlChange(){
    age(value){
          let list = that.getSelectOptions('states')
        console.log("getSelectOptions",list)
    },
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(7)、getSelectOptions 获取下拉组件选项

/*
api方法 获取某下拉组件的下拉选项
@param{string} field 要获取的字段名
/

onlChange(){
    age(value){
          let result = [{
            text: "启用",
          title: "启用",
          value: "1",
        },{
            text: "失效",
          title: "失效",
          value: "0",
        }]
        if(value>'18'){
            result = [{
            text: "启用",
            title: "启用",
            value: "1",
          }]
        }
            that.changeOptions('states',result)
    },
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(8)、triggleChangeValues / setFieldsValue 改变表单值

/*
api方法 改变表单的值
@param{Object} param 要设置值的对象,键名代表字段,键值代表要赋的值
/
注意:triggleChangeValues 会过滤id。如果需要改变id的值,请使用setFieldsValue

changeModel(){
        that.triggleChangeValues({name:'小强',age:20})
        that.setFieldsValue({name:'小强',age:20,id:123456})
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(9)、simpleDateFormat 格式化日期

/*
api方法 格式化日期
@param{int} millisecond 毫秒数
@param{string} format 日期格式
*/

changeModel(){
        console.log(that.simpleDateFormat(1629620649000,'YYYY-MM-DD HH:mm:ss'))
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(10)、getFieldsValue 获取表单值

/*
api方法 获取表单项值
@param{string} field 字段名 不传则获取全部字段值并以对象形式返回结果
/

getAllValues(){
    console.log(that.getFieldsValue('age'))
    console.log(that.getFieldsValue())
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(11)、disableFields 禁用表单字段

/*
api方法 禁用字段
@param{Array}} list 字段名
/

disabledNameAndAge(){
            that.disableFields(['name','age'])
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(12)、enabledFields 解除字段禁用

/*
api方法 解除字段禁用
@param{Array}} list 字段名
/

enabledNameAndAge(){
            that.enabledFields(['name','age'])
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(13)、setFieldParams 改变组件查询参数

/*
api方法 改变下拉框、checkbox、radio、popup等组件的查询参数
@param{string}} field 字段名
@param{Object}} params 查询参数
@param{string}} currentTableName 表名,不传默认是主表单
/

changeMcodeParams(){
    that.setFieldParams('mcode',{'aaa':123123},'api_method_example0_sub')
    that.setFieldParams('mcode',{'bbb':456456})
}

参考用例:http://feixunoa.xicp.net:8000/render/render/cgformlist/873b78195be14642aca8a3cf236aece2

(14)、goRoute 跳转页面

/*
api方法 跳转页面的方法
@param{Object}
/

//跳转外链
this.goRoute({
  route:'/IframePageRouter',
  query:{
    //必须有url,且url带协议,协议如https://、http://等
    url:'http://www.baidu.com'
  }
})
//跳转自动渲染组件页面
this.goRoute({
  //  route:`/render/cgformlist/${code}`,
  route:'/render/cgformlist/a151f640c33c4e48812995448685d33f',
  query:{
    //携带的参数
    id:123
  }
})

(15)、$message 弹框提示

//假设customButtonHandle是定义好的自定义按钮方法
customButtonHandle(){
    that.$message.success("调用自定义方法成功")
  //更多用法参考 https://www.antdv.com/components/modal-cn/
}

(16)、$confirm 弹出确认框

//假设customButtonHandle是定义好的自定义按钮方法
customButtonHandle(){
    that.$confirm({
    title: '确定要继续吗?',
    //content: '这是内容',        //内容
    //okText: '是',            //确认按钮文字    
    //okType: 'primary',            //确认按钮类型        
    //cancelText: '否',  //取消按钮文字    
    //更多用法参考 https://www.antdv.com/components/modal-cn/
    onOk:()=>{
      console.log("that",that)
      that.$message.success("你选择了确定")
    },
    onCancel:()=>{
      that.$message.error("你选择了取消")
    },
  })
}

(17)、$emit(“ok”) 刷新列表

//假设customButtonHandle是定义好的自定义按钮方法,在表单页中点击这个按钮的时候刷新列表
customButtonHandle(){
    that.$emit("ok")
}

(18)、refreshData 刷新表单

//假设customButtonHandle是定义好的自定义按钮方法,在表单页中点击这个按钮的时候刷新主表和细表的数据
customButtonHandle(){
    that.refreshData()
}