# 说明(必看)

下面给出的是生成页面的扩展方法,必须写在[表.js],vite前端是[表.jsx]文件中,按需要自定义实现业务逻辑
这里只是一部分生成的扩展,更多操作见:前端开发(常用示例)、后台开发、组件示例

# onInit 初始化配置

onInit() {
            //例:判断用户是否有SellOrder表有没有Add权限(2021.03.19到最后的才能使用)
            //第二个参数可选值:Add、Update、Delete、Audit、Import、Export、Search,也可以是自定的义的按钮权限值
            if (this.filterPermission("表名", 'Add')) {
                //to do...
            }

            //表格设置为单选
            // this.single=true;
            // this.detailOptions.single=true;

            //设置编辑表单数量字段的最小与最大值
            this.editFormOptions.forEach(x => {
                x.forEach(item => {
                    //设置输入的数量的最小值与最大值(默认是1)
                    if (item.field == "Qty") {
                        item.min = 10;
                        item.max = 200;
                    }
                });
            })

            //动态修改table并给列添加事件
            this.columns.forEach(x => {
                if (x.field == "Qty") {
                    x.formatter = (row) => {
                        return '<a>' + row.Qty + "(弹出框)" + '</a>'
                    }
                    x.click = (row, column, event) => {
                        this.$refs.gridHeader.model = true;
                    }
                }
            })

            //动态设置弹出框table的高度
            this.detailOptions.height = 110;
            //动态设置查询界面table高度
            this.tableHeight = 200;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# onInited 初始化配置

onInited() {  //明细表配置应该写在onInited里面
            //明细表行编辑开始、结束方法
            //明细表点击表格时触发编辑方法
            this.detailOptions.beginEdit = (row, column, index) => {
                return true;//返回false不会进行编辑
            }
            //明细表格行编辑结束方法
            this.detailOptions.endEditBefore = (row, column, index) => {
                return true;//返回false不会进行编辑
            }
            //设置弹出框宽度
            this.boxOptions.width=1000;
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# mounted

mounted() {

}
1
2
3

# onActivated

onActivated() {

}
1
2
3

# dicInited 数据源字典加载后

dicInited(result) {
 //主表与明细表的字典数据
 console.log(result)
}
1
2
3
4

# searchBefore 查询前

 searchBefore(param) { //查询ViewGird表数据前,param查询参数

        this.downloadFileName = 'a.xlsx';//自定义导出的文件名,如果是导出这里可以设置文件名
        let wheres = [{
            'name': '字段名1',
            'value': '查询的值',
            'displayType': 'like'

            //displayType查询类型可选值:
            //text        等于
            //like        模糊查询
            //selectList  多选        对应sql的where xxx in (1,2,3)
            //thanorequal 大于等于
            //gt          大于
            //thanorequal 小于等于
            //lt          小于
            //in          对应sql的where xxx in (1,2,3)
            //其他类型请在后台的查询方法设置
        },
        {
            'name': '字段名2',
            'value': 'value1,value2', //多选查询值是逗号隔开
            'displayType': 'selectList'
        }]
        param.wheres.push(...wheres);

        param.value = 'xx'//也可以自定义任何值,在后表[表service类]中重写查询getPageData方法options.value直接获取
        //见后台开发文档上http://v3.volcore.xyz/dev/%E5%90%8E%E5%8F%B0%E5%9F%BA%E7%A1%80%E4%BB%A3%E7%A0%81%E6%89%A9%E5%B1%95%E5%AE%9E%E7%8E%B0.html#%E6%9F%A5%E8%AF%A2
        return true;//返回false会中断执行
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# searchAfter 查询后

searchAfter(rows,result) {  //rows返回的行数据,result后台返回的查询完全信息

   //注意不要设置rows=xx,这样会改变数据的内存地址导致修改的值无效
   return true;//返回false,界面上不会显示
}
1
2
3
4
5

# searchDetailBefore 明细查询前

searchDetailBefore(param) {//明细表数据前,param查询参数
        // 同上searchBefore操作
        return true;
}
1
2
3
4

# searchDetailAfter 明细表查询后

searchDetailAfter(data,result) {//查询主从明细表后param查询参数,result回返查询的结果
    return true;  //同上searchAfter说明
},
1
2
3

# delBefore 删除前

delBefore(ids, rows) { //查询界面的表删除前 ids为删除的id数组,rows删除的行
   return true;//返回false,界面上不会显示
}
1
2
3

# delAfter 删除后

delAfter(result) {//查询界面的表删除后
    return true;//同上
}
1
2
3

# addRow 明细表添加行

addRow() {  //明细表添加行,设置默认值
    let obj = {};
    //给明细表添加行时,设置默认值。--onInited方法中对this.detailOptions.columns进行formatter也可以实现)
    //obj.xx=123;
    this.$refs.detail.addRow(obj);
    //明细表批量添加行this.$refs. detail.rowData.push(...[{},{}]);
}
1
2
3
4
5
6
7

# mounted

delDetailRow(rows) { //弹出框删除明细表的行数据(只是对table操作,并没有操作后台)
       //弹出框中明细表【删除】删除操作(只是对table操作,并没有操作后台)
   return true;
}
1
2
3
4

# addBefore 新建保存前

 addBefore(formData) { //新建保存前formData为对象,包括明细表
    //formData格式:
    // {
    //     mainData: { 主表字段1: 'x1', 主表字段2: 'x2' },
    //     detailData: [{ 明细表字段1: d1 }],
    //     delKeys: null //删除明细表行数据的id
    // }

    //formData.mainData.xxx="xxxx";//还可以继续手动添加值

    //如果需要同时提交其他数据到后台,请设置formData.extra=xxxx
    //后台在表xxxxService.cs中重写Add方法即可从saveDataModel参数中拿到extra提交的对象

    return true;
 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# addBeforeAsync 新建保存前

async addBeforeAsync(formData) {
    //2020.12.06增加新建前异步方法同步处理
    //功能同上,区别在于此处可以做一些异步请求处理,全:
    // var _result = await this.http.post("/api/SellOrder/getPageData", {}, true).then(result => {
    //   console.log("1、异步请求前")
    //   return result;
    // })
    // console.log("2、异步请求,同步处理结果:" + JSON.stringify(_result))
    return true;
}
1
2
3
4
5
6
7
8
9
10

# addAfter 新建保存后

addAfter(result) {//新建保存后result返回的状态及表单对象
    return true;//返回false不会关闭弹出框
}
1
2
3

# updateBefore 编辑保存前

updateBefore(formData) { //编辑保存前formData为对象,包括明细表、删除行的Id
    //formData格式:(自己调试出输看)
    // {
    //     mainData: { 主表字段1: 'x1', 主表字段2: 'x2' },
    //     detailData: [{ 明细表字段1: d1 }],
    //     delKeys: null //删除明细表行数据的id
    // }

    //formData.mainData.xxx="xxxx";//还可以继续手动添加值

    //如果需要同时提交其他数据到后台,请设置formData.extra=xxxx
    //后台在表xxxxService.cs中重写Update方法即可从saveDataModel参数中拿到extra提交的对象

    //获取扩展的modelFooter属性text
    console.log(this.$refs.modelFooter.text)
    return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# updateBeforeAsync 编辑保存前

async updateBeforeAsync(formData) {
    //2020.12.06增加修改前异步方法同步处理
    //功能同上,区别在于此处可以做一些异步请求处理,全:
    var _result = await this.http.post("/api/表/xxx", {}, true).then(result => {
        console.log("1、异步请求前")
        return result;
    })
    console.log("2、异步请求,同步处理结果:" + JSON.stringify(_result))
    return true;
}
1
2
3
4
5
6
7
8
9
10

# updateAfter 编辑保存后

updateAfter(result) {//编辑保存后result返回的状态及表单对象

    return true;//返回false不会关闭弹出框
}
1
2
3
4

# auditModelOpenBefore审核弹出框打开前

async auditModelOpenBefore( rows) {//审核前
    //rows:审批选中的行数据
     
     //打开审批弹出框时可以调用后台接口做一些处理
    // var _result = await this.http.post("/api/表/xxx", {}, true).then(result => {
    //     console.log("1、异步请求前")
    //     return result;
    // })
    // if(_result){

    // }
    return true;//返回不会打开审批弹出框
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# auditBefore审核前保存前

auditBefore(ids, rows) {//审核前
   //ids审批的id,rows审批选中的行数据
    return true;
}
1
2
3
4

# auditAfter审核前保存后

auditBefore (result, rows) {//审核前
   //同上
    return true;
}
1
2
3
4

# resetAddFormBefore重置新建弹出框表单前

resetAddFormBefore() { //重置新建表单前的内容
    return true;
}
1
2
3

# resetAddFormAfter重置弹出框表单后

resetAddFormAfter() { //重置新建表单后的内容
    //如果某些字段不需要重置,则可以重新赋值
    this.editFormFields.Remark = '新建重置默认值66666';
    //给明细表添加默认一行
    this.$refs.detail.rowData.push({ Remark: "新建666666" });
    return true;
}
1
2
3
4
5
6
7

# resetUpdateFormBefore重置编辑弹出框表单前

resetUpdateFormBefore() { //重置编辑表单前的内容
    return true;
}
1
2
3

# resetUpdateFormAfter重置编辑弹出框表单后

resetUpdateFormAfter() { //重置编辑表单后
    //this.editFormFields当前值
    console.log(this.editFormFields)
    //当前明细表的行
    console.log(this.$refs.detail.rowData)
    return true;
}
1
2
3
4
5
6
7

# importExcelBefore导入前自定义参数

importExcelBefore(formData) { //excel导入前自定义参数
    //往formData写一些其他参数提交到后台,
    // formData.append("val2", "xxx");

    //后台重写导入方法获取:http://v3.volcore.xyz/dev/后台基础代码扩展实现.html#导入
    // Core.Utilities.HttpContext.Current.Request("val2");
    return true;

    //如果需要界面上设置导入参数:http://localhost:8080/web/excel导入增加参数.html
}
1
2
3
4
5
6
7
8
9
10

# importAfter导入excel后

importAfter(data) { 
  return true;
}
1
2
3

# modelOpenBeforeAsync弹出框打开前(异步)

async modelOpenBeforeAsync(row) { //注意:只有这个方法才可以阻止弹出框打开
    //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据

    //2021.01.10增加
    if (row) {
        console.log("编辑操作")
    } else {
        console.log("新建操作")
    }
    //打开弹出框前,http请求同步执行
    // var _result = await this.http.post("url", {}, true).then(result => {

    //   _result = result;
    // })
    // console.log(result);

    //返回false不会弹出框 
    //this.$message.error("不能打开弹出框 ");
    return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# modelOpenBefore弹出框打开前

modelOpenBefore(row) { //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据
   //如果需要根据条件判断弹出框能不能打开,请在上面的modelOpenBeforeAsync实现
}
1
2
3

# modelOpenAfter弹出框打开后

modelOpenAfter(row) {  //点击编辑/新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
  //如果需要根据条件判断弹出框能不能打开,请在上面的modelOpenBeforeAsync实现
}
1
2
3

# 隐藏明细表按钮

modelOpenAfter(row) {  //点击编辑/新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
  如果需要隐藏明细表按钮,请在此方法实现
  this.detailOptions.buttons.forEach(btn=>{
      if(btn.name==条件){
         btn.hidden=true;//false 隐藏或者显示按钮
      }
  })
}
1
2
3
4
5
6
7
8

# rowChange复选框选中事件

rowChange(rows) { 
     //查询界面checkbox选中事件
}
1
2
3

# detailRowChange复选框选中事件

detailRowChange(row) { 
      //编辑弹出框明细表checkbox选中事件
}
1
2
3

# exportBefore导出excel前

exportBefore(param) { //添加自定义导出查询条件
    this.downloadFileName = 'a.xlsx';//自定义导出的文件名(2022.09.12更新前端ViewGrid.vue才能使用)
    let wheres = [{
        'name': '字段名',
        'value': '查询的值',
        'displayType': 'like' //查询条件与查询类型见上面的searchBefore方法
    }]
    param.wheres.push(...wheres);
    return true;//返回false会中断执行
}
1
2
3
4
5
6
7
8
9
10

# rowClick行点击事件

rowClick({ row, column, event }) { //查询界面table单击行事件
    //this.$refs.table.$refs.table.clearSelection(row)//清除当前选中当前行;
    let index = row.elementIndex;//点击的行
    this.$refs.table.$refs.table.toggleRowSelection(row)//单击行时选中当前行;
}
1
2
3
4
5

# 点击行事件选中复选框

rowClick({ row, column, event }) { //查询界面table单击行事件
    //this.$refs.table.$refs.table.clearSelection(row)//清除当前选中当前行;
    let index = row.elementIndex;//点击的行
    this.$refs.table.$refs.table.toggleRowSelection(row)//单击行时选中当前行;
}
1
2
3
4
5

# rowDbClick行双击事件

rowDbClick({ row, column, event }) { //查询界面table双击行事件
    let index = row.elementIndex;//点击的行
    //this.$refs.table.$refs.table.clearSelection(row)//清除当前选中当前行;
    this.$refs.table.$refs.table.toggleRowSelection(row)//单击行时选中当前行;
}
1
2
3
4
5

# destroyed页面销毁

destroyed() {
    //2021.04.11增加vue页面销毁方法,路由必须设置keepLive:false,设置方法见:前端开发-> [禁用页面缓存keepAlive]
    console.log("destroyed")
}
1
2
3
4

# onModelClose弹出框关闭事件

onModelClose(iconClick) { 
    //iconClick=true为点击左中上角X触发的关闭事件
    //如果返回 false不会关闭弹出框 
    //return false;
    this.boxModel = false;
}
```## loadTreeChildren树形table加载
```csharp
loadTreeChildren(tree, treeNode, resolve) {
    //树形结构加载子节点(2021.05.02),在onInit中设置了rowKey主键字段后才会生效
    //具体操作见:前端开发->[table树形结构]
     return resolve([]);
},
1
2
3
4
5
6
7
8
9
10
11
12
13

# selectable禁用复选框

selectable(row, index) {
    //设置界面CheckBox禁用复是否可以勾选
    //判断字段=xx的checkbox不能选中
    if (row.字段 == "值") {
        return false;
    }
    return true;
}
1
2
3
4
5
6
7
8

# detailSelectable禁用明细表复选框

detailSelectable(row, index) {
    //明细表CheckBox 是否可以勾选
    //操作同上
    return true;
}
1
2
3
4
5

# continueAddAfter连续添加

continueAddAfter(formFields, formData, result) {
     //连续添加:新建时可以多条数据不关闭弹出框连续添加

    //连续添加后方法,这是新建后执行的方法2023.07.23更新methods.js中saveExecute方法才能使用

    //formFields:界面上表单的示例
    //formData:提交到后台的数据
    //result:保存后返回 数据

    //注意:需要在上面的onInit方法设置this.continueAdd=true才会执行continueAddAfter

    //新建后可以设置一些默认值(不重置表单的数据)
    //this.editFormFields.字段=formFields.字段
 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# initDicKeys刷新字典

//某些情况下修改或编辑数据后需要刷新字典,在上面的新建、编辑后方法调用
  this.initDicKeys()
1
2

# 获取选中的行

//获取页面选中的行
 this.getSelectRows()
1
2

# spanMethod合并表格

//获取页面选中的行
spanMethod({ row, column, rowIndex, columnIndex },row) {
 // 见示例
 // http://localhost:8080/web/table%E5%90%88%E5%B9%B6%E5%8D%95%E5%85%83%E6%A0%BC.html
}
1
2
3
4
5

# 完整代码

此代码是生成页面 js 自定义实现,也是下面表格参数实现,内容较多,按需配置即可

let extension = {
    components: {//动态扩充组件或组件路径
        //表单header、content、footer对应位置扩充的组件
        gridHeader: "",//() => import("./SellOrderComponents/GridHeaderExtend.vue"),//{ template: "<div>扩展组xx件</div>" },
        gridBody: "",//() => import("./SellOrderComponents/GridBodyExtend.vue"),
        gridFooter: '',
        //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
        modelHeader: "",
        modelBody: '',
        modelRight: '',//弹出框表单右边组件配置
        modelFooter: "",
    },
    tableAction: "",//指定获取表的权限按钮,默认为当前表的权限
    text: "这里是一些描述",
    methods: {//方法扩展
        getServiceDate() {
            this.http.post("/api/SellOrder/getServiceDate", {}, '正在调用后台数据').then(date => {
                this.$message.error("从后台获取的服务器时间是:" + date);
            })
        },
        mounted() {
            // this.$Notice.success({ title: '执行mounted方法' });
        },
        onActivated() { //对应vue原生 activated方法

        },
        dicInited(params) { //数据源加载完成时的方法,2022.04.04更新method.js文件后才能使用

        },
        onInit() {
            //例:判断用户是否有SellOrder表有没有Add权限(2021.03.19到最后的才能使用)
            //第二个参数可选值:Add、Update、Delete、Audit、Import、Export、Search,也可以是自定的义的按钮权限值
            if (this.filterPermission("表名", 'Add')) {
                //to do...
            }

            //表格设置为单选
            // this.single=true;
            // this.detailOptions.single=true;

            //设置编辑表单数量字段的最小与最大值
            this.editFormOptions.forEach(x => {
                x.forEach(item => {
                    //设置输入的数量的最小值与最大值(默认是1)
                    if (item.field == "Qty") {
                        item.min = 10;
                        item.max = 200;
                    }
                });
            })

            //动态修改table并给列添加事件
            this.columns.forEach(x => {
                if (x.field == "Qty") {
                    x.formatter = (row) => {
                        return '<a>' + row.Qty + "(弹出框)" + '</a>'
                    }
                    x.click = (row, column, event) => {
                        this.$refs.gridHeader.model = true;
                    }
                }
            })

            //动态设置弹出框table的高度
            this.detailOptions.height = 110;
            //动态设置查询界面table高度
            this.tableHeight = 200;;
        },
        onInited() {

            //明细表行编辑开始、结束方法(只能写在onInited中)
            //明细表点击表格时触发编辑方法
            this.detailOptions.beginEdit = (row, column, index) => {
                return true;//返回false不会进行编辑
            }
            //明细表格行编辑结束方法
            this.detailOptions.endEditBefore = (row, column, index) => {
                return true;//返回false不会进行编辑
            }

        },
        searchBefore(param) { //查询ViewGird表数据前,param查询参数

            this.downloadFileName = 'a.xlsx';//自定义导出的文件名(2022.09.12更新前端ViewGrid.vue才能使用)
            let wheres = [{
                'name': '字段名1',
                'value': '查询的值',
                'displayType': 'like' 

                //displayType查询类型可选值:
                //text        等于
                //like        模糊查询
                //selectList  多选
                //thanorequal 大于等于
                //gt          大于
                //thanorequal 小于等于
                //lt          小于
                //in          对应sql的where xxx in (1,2,3)
                //其他类型请在后台的查询方法设置
            },
            {
                'name': '字段名2',
                'value': '查询的值', 
                'displayType': 'like' 
            }]
            param.wheres.push(...wheres);

            param.value='xx'//也可以自定义任何值,在后表[表service类]中重写查询方法options.value直接获取
            //见后台开发文档上http://v3.volcore.xyz/dev/%E5%90%8E%E5%8F%B0%E5%9F%BA%E7%A1%80%E4%BB%A3%E7%A0%81%E6%89%A9%E5%B1%95%E5%AE%9E%E7%8E%B0.html#%E6%9F%A5%E8%AF%A2
            return true;//返回false会中断执行
        },
        searchAfter(result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
            this.$Notice.success({ title: this.table.cnName + ',查询结果', desc: '返回的对象:' + JSON.stringify(result) });
            return true;
        },
        searchDetailBefore(param) {//查询主从明细表表数据前,param查询参数
            // 同上searchBefore操作
            return true;
        },
        searchDetailAfter(data) {//查询主从明细表后param查询参数,result回返查询的结果
            this.$Notice.success({ title: this.detailOptions.cnName + ',查询结果', desc: '返回的对象:' + JSON.stringify(data) });
            return true;
        },
        delBefore(ids, rows) { //查询界面的表删除前 ids为删除的id数组,rows删除的行
            let auditStatus = rows.some(x => { return x.AuditStatus > 0 });
            if (auditStatus) {
                this.$message.error('只能删除未审核的数据')
                return false;
            }
            this.$Notice.success({ title: '删除前,选择的Id:' + ids.join(',') });
            return true;
        },
        delAfter(result) {//查询界面的表删除后
            return true;
        },
        addRow() {//明细表添加行,设置默认值
            //明细表添加行,在此处可以设置添加的默认值
            let obj = {};
            //给明细表添加行时,设置默认值。--onInited方法中对this.detailOptions.columns进行formatter也可以实现)
            //obj.xx=123;
            this.$refs.detail.addRow(obj);
            //明细表批量添加行this.$refs. detail.rowData.push(...[{},{}]);
        },
        delDetailRow(rows) { //弹出框删除明细表的行数据(只是对table操作,并没有操作后台)
            console.log(rows)
            return true;
        },
        addBefore(formData) { //新建保存前formData为对象,包括明细表
            //formData格式:
            // {
            //     mainData: { 主表字段1: 'x1', 主表字段2: 'x2' },
            //     detailData: [{ 明细表字段1: d1 }],
            //     delKeys: null //删除明细表行数据的id
            // }

            //formData.mainData.xxx="xxxx";//还可以继续手动添加值

            //如果需要同时提交其他数据到后台,请设置formData.extra=xxxx
            //后台在表xxxxService.cs中重写Add方法即可从saveDataModel参数中拿到extra提交的对象
            this.$Notice.success({ title: this.detailOptions.cnName + '新建前:', desc: '提前的数据:' + JSON.stringify(formData) });
            return true;
        },
        async addBeforeAsync(formData) {
            //2020.12.06增加新建前异步方法同步处理
            //功能同上,区别在于此处可以做一些异步请求处理,全:
            // var _result = await this.http.post("/api/SellOrder/getPageData", {}, true).then(result => {
            //   console.log("1、异步请求前")
            //   return result;
            // })
            // console.log("2、异步请求,同步处理结果:" + JSON.stringify(_result))
            return true;
        },
        addAfter(result) {//新建保存后result返回的状态及表单对象
            this.$Notice.success({ title: this.detailOptions.cnName + '新建完成后:', desc: '返回的数据' + JSON.stringify(result) });
            return true;
        },
        updateBefore(formData) { //编辑保存前formData为对象,包括明细表、删除行的Id
            //formData格式:(自己调试出输看)
            // {
            //     mainData: { 主表字段1: 'x1', 主表字段2: 'x2' },
            //     detailData: [{ 明细表字段1: d1 }],
            //     delKeys: null //删除明细表行数据的id
            // }

            //formData.mainData.xxx="xxxx";//还可以继续手动添加值

            //如果需要同时提交其他数据到后台,请设置formData.extra=xxxx
            //后台在表xxxxService.cs中重写Update方法即可从saveDataModel参数中拿到extra提交的对象

            this.$Notice.success({ title: this.detailOptions.cnName + '编辑前:', desc: '提前的数据:' + JSON.stringify(formData) });
            //获取扩展的modelFooter属性text
            console.log(this.$refs.modelFooter.text)
            return true;
        },
        async updateBeforeAsync(formData) {
            //2020.12.06增加修改前异步方法同步处理
            //功能同上,区别在于此处可以做一些异步请求处理,全:
            var _result = await this.http.post("/api/SellOrder/getPageData", {}, true).then(result => {
                console.log("1、异步请求前")
                return result;
            })
            console.log("2、异步请求,同步处理结果:" + JSON.stringify(_result))
            return true;
        },
        updateAfter(result) {//编辑保存后result返回的状态及表单对象
            this.$Notice.success({ title: this.detailOptions.cnName + '编辑完成后:', desc: '返回的数据' + JSON.stringify(result) });
            return true;
        },
        auditBefore(ids, rows) {//审核前
            if (rows.length > 2) {//每次最多只能审核2条数据
                this.$message.error('最多只能选择两条数据');
                return false;
            }
            return true;
        },
        auditAfter(result, rows) {// 审核后
            if (result.status) {
                result.message = "审核成功。。。。。" + result.message;
            }
            return true;
        },
        resetAddFormBefore() { //重置新建表单前的内容
            return true;
        },
        resetAddFormAfter() { //重置新建表单后的内容
            //如果某些字段不需要重置,则可以重新赋值
            this.editFormFields.Remark = '新建重置默认值66666';
            //给明细表添加默认一行
            this.$refs.detail.rowData.push({ Remark: "新建666666" });
            return true;
        },
        resetUpdateFormBefore() { //重置编辑表单前的内容
            //this.editFormFields当前值
            console.log(this.editFormFields)
            //当前明细表的行
            console.log(this.$refs.detail.rowData)
            return true;
        },
        resetUpdateFormAfter() { //重置编辑表单后的内容
            //如果某些字段不需要重置,则可以重新赋值
            this.editFormFields.Remark = '编辑重置默认值66666';
            //给明细表添加默认一行
            this.$refs.detail.rowData.push({ Remark: "编辑666666" });
            return true;
        },
        importExcelBefore (formData) { //excel导入前自定义参数
            //往formData写一些其他参数提交到后台,
            // formData.append("val2", "xxx");
            //后台按下面方法获取请求的参数
            // Core.Utilities.HttpContext.Current.Request("val2");
            return true;
        },
        importAfter(data) { //导入excel后刷新table表格数据
            this.search(); //刷新table
        },
        async modelOpenBeforeAsync(row) { //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据
             //注意:只有这个方法才可以阻止弹出框打开

            //2021.01.10增加
            if (row) {
                console.log("编辑操作")
            } else {
                console.log("新建操作")
            }
            //打开弹出框前,http请求同步执行
            // var _result = await this.http.post("url", {}, true).then(result => {

            //   _result = result;
            // })
            // console.log(result);
            //返回false不会弹出框 
            //this.$message.error("不能打开弹出框 ");
            return true;
        },
        modelOpenBefore(row) { //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据

        },
        modelOpenAfter(row) {  //点击编辑/新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
            this.$message.error("此处是打开弹出框后事件,当前操作:" + this.currentAction + ",你可以在此处编写逻辑,如,从后台获取数据");
        },
        rowChange(row) {  //查询界面table点击行事件,只有设置了single=true单选才会生效
        },
        detailRowChange(row) {  //明细表界面table点击行事件,只有设置了single=true单选才会生效
        },
        onActivated() { //重新加载字典绑定的数据源(如果需要每次点击页面时刷新字典数据源,直接将整个方法添加到js的methods中即可使用)
            //this.initDicKeys();
        },
        exportBefore(param) { //添加自定义导出查询条件
            this.downloadFileName = 'a.xlsx';//自定义导出的文件名(2022.09.12更新前端ViewGrid.vue才能使用)
            let wheres = [{
                'name': '字段名',
                'value': '查询的值',
                'displayType': 'like' //可选类型text/like/selectList/thanorequal/lessorequal,like(模糊查询) ; selectList为多选,后台in查询,thanorequal>=,lessorequal<=
            }]
            param.wheres.push(...wheres);
            return true;//返回false会中断执行
        },
        rowClick({ row, column, event }) { //查询界面table点击行事件
            //this.$refs.table.$refs.table.clearSelection(row)//清除当前选中当前行;
            this.$refs.table.$refs.table.toggleRowSelection(row)//单击行时选中当前行;
        },

        destroyed() {
            //2021.04.11增加vue页面销毁方法,路由必须设置keepLive:false,设置方法见:前端开发文档-》[禁用页面缓存keepAlive]
            //需要更新methods.js与ViewGird.vue文件 2021.04.11
            console.log("destroyed")
        },
        onModelClose(iconClick) {

            //2021.07.11更新后才能使用

            //iconClick=true为点击左中上角X触发的关闭事件
            //如果返回 false不会关闭弹出框 
            //return false;
            this.boxModel = false;
        },
        loadTreeChildren(tree, treeNode, resolve) {//树形结构加载子节点(2021.05.02),在onInit中设置了rowKey主键字段后才会生效
            return resolve([]);
        },

        //2023.05.03更新ViewGrid.vue、serviceFilter.js、detailMethods.js后才能使用
        selectable(row, index) {
            //设置界面CheckBox是否可以勾选
            //判断字段=xx的checkbox不能选中
            if (row.字段 == "值") {
                return false;
            }
            return true;
        },
        detailSelectable(row, index) {
            //明细表CheckBox 是否可以勾选
            //操作同上
            return true;
        },
        continueAddAfter(formFields, formData, result) {
            //连续添加后方法,这是新建后执行的方法2023.07.23更新methods.js中saveExecute方法才能使用

            //formFields:界面上表单的示例
            //formData:提交到后台的数据
            //result:保存后返回 数据

            //注意:需要在上面的onInit方法设置this.continueAdd=true才会执行continueAddAfter

            //新建后可以设置一些默认值(不重置表单的数据)
            //this.editFormFields.字段=formFields.字段

        },
    }
};
export default extension;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349