表单data属性

在扩展组件、方法可直接使用这些属性,前端扩展业务代码编写参照vue项目中extension->order->SellOrder.js文件,根据实际需要添加扩展方法

data() {
    return {
      _inited: false,
      const: _const, //增删改查导入导出等对应的action
      boxInit: false, //新建或编辑的弹出框初化状态,默认不做初始化,点击新建或编辑才初始化弹出框
      searchBoxShow: false, //高级查询(界面查询后的下拉框点击触发)
      singleSearch: "", //快速查询字段
      exportHref: "",
      currentAction: _const.ADD, //当新建或编辑时,记录当前的状态:如当前操作是新建
      hasKeyField: {}, //当前操作的行数据(新建、编辑、查看)
      closable: false,
      boxModel: false, //弹出新建、编辑框
      width: 700,
      viewModel: false, //查看表结构的弹出框
      viewColumns: [], //查看表结构的列数据
      viewData: [], //查看表结构信息
      maxBtnLength: 3, //界面按钮最多显示的个数,超过的数量都显示在更多中
      buttons: [], //查询界面按钮  如需要其他操作按钮,可在表对应的.js中添加(如:Sys_User.js中buttons添加其他按钮)
      boxButtons: [], //弹出框按钮 如需要其他操作按钮,可在表对应的.js中添加
      dicKeys: [], //当前界面所有的下拉框字典编号
      hasKeyField: [], //有字典数据源的字段
      url: "", //界面表查询的数据源的url
      hasDetail: false, //是否有从表(明细)表格数据
      initActivated: false,
      // detailUrl: "",
      detailOptions: {
        //弹出框从表(明细)对象
        //从表配置
        buttons: [], //弹出框从表表格操作按钮,目前有删除行,添加行,刷新操作,如需要其他操作按钮,可在表对应的.js中添加
        cnName: "", //从表名称
        key: "", //从表主键名
        data: [], //数据源
        columns: [], //从表列信息
        edit: true, //明细是否可以编辑
        delKeys: [], //当编辑时删除当前明细的行主键值
        url: "", //从表加载数据的url
        pagination: { total: 0, size: 100, sortName: "" }, //从表分页配置数据
        height: 250 //默认从表高度
      },
      auditParam: {
        //审核对象
        rows: 0, //当前选中审核的行数
        model: false, //审核弹出框
        status: -1, //审核结果
        reason: "", //审核原因
        //审核选项(可自行再添加)
        data: [{ text: "通过", status: 1 }, { text: "拒绝", status: 2 }]
      },
      upload: {
        //导入上传excel对象
        excel: false, //导入的弹出框是否显示
        url: "", //导入的路径,如果没有值,则不渲染导入功能
        template: {
          //下载模板对象
          url: "", //下载模板路径
          fileName: "" //模板下载的中文名
        },
        init: false //是否有导入权限,有才渲染导入组件
      },
      height: 0, //表高度

      pagination: { total: 0, size: 30, sortName: "" }, //从分页配置数据
      boxOptions: { height: 0, width: 0 }//弹出框的高度、宽度
    };
  }

 

表单props属性

table表的原始传入信息,这些信息由代码生成器生成,Demo:SellOrder.vue文件

let props = {
  columns: {//当前表的配置信息
    type: Array,
    default: () => {
      return [];
    }
  },
  detail: {//从表明细配置
    type: Object,
    default: () => {
      return {
        columns: [],//从表列
        sortName: ""//从表排序字段
      };
    }
  },
  editFormFields: {//新建、编辑字段(key/value)
    type: Object,
    default: () => {
      return {};
    }
  },
  editFormOptions: {//新建、编辑配置信息
    type: Array,
    default: () => {
      return [];
    }
  },
  searchFormFields: {//查询字段(key/value)
    type: Object,
    default: () => {
      return {};
    }
  },
  searchFormOptions: {//查询配置信息(key/value)
    type: Array,
    default: () => {
      return [];
    }
  },
  table: {//表的配置信息:主键、排序等
    type: Object,
    default: () => {
      return {};
    }
  },
  extend: {//表的扩展方法与组件都合并到此属性中
    type: Object,
    default: () => {
      return {};
    }
  }
}

export default props;

 

 

表单扩展方法

此处列出的是主要基础业务的扩展方法,全部由ViewGridConfig路径下的文件调用,可选择性实现方法,这些方法与components扩展组件中你可以任意操作编写其他方法。Demo参照:vue项目中extension->order->SellOrder.js文件

let extension = {
    components: {//动态扩充组件或组件路径
        //表单header、content、footer对应位置扩充的组件
        gridHeader: () => import("./SellOrderComponents/GridHeaderExtend.vue"),//{ template: "<div>扩展组xx件</div>" },
        gridBody: () => import("./SellOrderComponents/GridBodyExtend.vue"),
        gridFooter: () => import("./SellOrderComponents/GridFooterExtend.vue"),
        //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
        modelHeader: "",
        modelBody: { template: '<Alert type="error">你可以在此处添加业务相关内容</Alert>' },
        modelFooter: () => import("./SellOrderComponents/ModelFooter.vue"),
    },
    text: "示例覆盖全部可扩展方法,前台扩展文件SellOrder.js,后台Partial->SellOrdeService.cs",
    buttons: { //扩展按钮
        view: [//ViewGrid查询界面按钮
            {
                name: "点我",
                icon: 'md-create',
                value: 'Edit',
                class: '',
                type: 'error',
                index: 1,//显示的位置
                onClick: function () { //扩展按钮执行事件
                    //this可以获取所有属性,包括this.$refs.gridHeader/gridBody等获取扩展组件对象
                    // this.$message("测试扩展按钮");
                    this.$refs.gridHeader.model = true;
                }
            }, {
                name: "调用后台",
                icon: 'md-create',
                value: 'Edit',
                class: '',
                type: 'error',
                index: 1,//显示的位置
                onClick: function () { //扩展按钮执行事件
                    this.getServiceDate();
                }
            }],
        box: //新建、编辑弹出框按钮
            [//ViewGrid查询界面按钮
                {
                    name: "点我1",
                    icon: 'md-create',
                    value: 'Edit',
                    class: '',
                    type: 'success',
                    index: 1,//显示的位置
                    onClick: function () {
                        this.$message.error("扩展的明细Box按钮,可设置index值指定显示位置,可使用this.$refs拿到包括自定义扩展的所有组件");
                    }
                }],
        detail: //新建、编辑弹出框明细表table表按钮
            [//ViewGrid查询界面按钮
                {
                    name: "点我2",
                    icon: 'md-create',
                    value: 'Edit',
                    class: '',
                    type: 'success',
                    index: 1,//显示的位置
                    onClick: function () {
                        this.$message.error("扩展的明细table按钮,可设置index值指定显示位置");
                    }
                }]
    },//扩展的按钮
    methods: {//方法扩展
        getServiceDate() {
            this.http.post("/api/SellOrder/getServiceDate", {}, '正在调用后台数据').then(date => {
                this.$message.error("从后台获取的服务器时间是:" + date);
            })
        },
        mounted() {
            this.$Notice.success({ title: '执行mounted方法' });
        },
        onInit() {
            this.$Notice.success({ title: 'create方法执行时,你可以此处编写业务逻辑' });
        },
        onInited() {
            //添加扩展属性gridHeader/body/footer后,可以自定再设置表格高度
            this.height = this.height - 140;
            this.$Notice.success({ title: 'create方法执行后', desc: '你可以SellOrder.js中编写业务逻辑,其他方法同样适用' });
        },
        searchBefore(param) { //查询ViewGird表数据前,param查询参数
            //你可以指定param查询的参数,处如果返回false,则不会执行查询
            this.$Notice.success({ title: this.table.cnName + ',查询前' });
            // console.log("扩展的"this.detailOptions.cnName + '触发loadDetailTableBefore');
            return true;
        },
        searchAfter(result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
            this.$Notice.success({ title: this.table.cnName + ',查询结果', desc: '返回的对象:' + JSON.stringify(result) });
            return true;
        },
        searchDetailBefore(param) {//查询从表表数据前,param查询参数
            this.$Notice.success({ title: this.detailOptions.cnName + '查询前' });
            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;
        },
        delDetailRow(rows) { //弹出框删除明细表的行数据(只是对table操作,并没有操作后台)
            console.log(rows)
            return true;
        },
        addBefore(formData) { //新建保存前formData为对象,包括明细表

            this.$Notice.success({ title: this.detailOptions.cnName + '新建前:', desc: '提前的数据:' + JSON.stringify(formData) });
            return true;
        },
        addAfter(result) {//新建保存后result返回的状态及表单对象
            this.$Notice.success({ title: this.detailOptions.cnName + '新建完成后:', desc: '返回的数据' + JSON.stringify(result) });
            return true;
        },
        updateBefore(formData) { //编辑保存前formData为对象,包括明细表、删除行的Id
            this.$Notice.success({ title: this.detailOptions.cnName + '编辑前:', desc: '提前的数据:' + JSON.stringify(formData) });
            //获取扩展的modelFooter属性text
            console.log(this.$refs.modelFooter.text)
            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;
        },
        importAfter(data) { //导入excel后刷新table表格数据
            this.search(); //刷新table
        },
        modelOpenAfter(row) {  //点击编辑/新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
            this.$message.error("此处是打开弹出框后事件,当前操作:" + this.currentAction + ",你可以在此处编写逻辑,如,从后台获取数据");
        }
    }
};
export default extension;

其他内部属性、扩展方法、基础组件文档编写中(点击Demo或组件里面有属性介绍)....