vol-vue框架基本使用

vol框架官方链接:vol-vue (volcore.xyz)

展示一个由代码生成的页面。vue文件如下:

<template>
    <div>
        <view-grid :columns="columns"
                   :detail="detail"
                   :editFormFileds="editFormFileds"
                   :editFormOptions="editFormOptions"
                   :searchFormFileds="searchFormFileds"
                   :searchFormOptions="searchFormOptions"
                   :table="table"
                   :extend="extend">
        </view-grid>
    </div>
</template>

<script>
    import gridExtend from "../doc_viewGrid/doc_viewGirdExtension.js";
    import ViewGrid from "@/components/basic/ViewGrid.vue";
    var vueParam = {
        components: {
            ViewGrid
        },
        data() {
            return {
                table: {
                    key: 'Order_Id', //排序字段
                    footer: "Foots",
                    cnName: '主从表ViewGird组件使用',//表中文名
                    name: 'SellOrder',//表名(代码生码的别名)
                    url: "/SellOrder/",//后台控制名
                    sortName: "CreateDate" //后台排序字段
                },
                //所以自定义扩展对象,包括:方法、属性、自定义vue组件
                extend: gridExtend,
                //编辑字段
                editFormFileds: {"OrderType":"","TranNo":"","Qty":"","SellNo":"","Remark":"","Creator":"","CreateDate":"","ModifyDate":""},
                //编辑配置
                editFormOptions: [[{"dataKey":"ordertype","title":"订单类型","required":true,"field":"OrderType","type":"select"},
                               {"type":"text","title":"运单号","required":true,"field":"TranNo"},
                               {"type":"number","title":"销售数量","required":true,"field":"Qty"}],
                              [ {"type":"text","title":"销售订单号","required":true,"field":"SellNo"},{"type":"text","title":"创建人","field":"Creator","disabled":true},
                               {"type":"datetime","title":"创建时间","field":"CreateDate","disabled":true}
                             ],
                              [{"title":"备注","field":"Remark","colSize":12,"type":"textarea"}
                              ]],
                //查询字段,第一个字段为快捷查询字段
                searchFormFileds: {"OrderType":"","TranNo":"","SellNo":"","AuditStatus":"","AuditDate":"","Auditor":"","Creator":"","CreateDate":"","ModifyDate":""},
                //查询配置
                searchFormOptions: [
                    [
                        {"title":"运单号","field":"TranNo"},
                        {"type":"text","title":"销售订单号","field":"SellNo"},
                        {"dataKey":"ordertype","title":"订单类型","field":"OrderType","type":"select"}
                    ],
                    [
                        {"columnType":"int","dataKey":"audit","title":"审核状态","field":"AuditStatus","type":"select"},
                        {"title":"审核时间","field":"AuditDate","type":"datetime"},
                        {"type":"text","title":"审核人","field":"Auditor"}
                    ],
                    [
                        {"type":"text","title":"创建人","field":"Creator"},
                        {"title":"创建时间","field":"CreateDate","type":"datetime"},
                        {"title":"修改时间","field":"ModifyDate","type":"datetime"}
                    ]
                ],
                //主表table配置
                columns: [ //列参数为voltable组件的配置
                       {field:'Order_Id',title:'Id',type:'string',width:90,hidden:true,readonly:true,require:true},
                       {field:'OrderType',title:'订单类型',type:'int',bind:{ key:'ordertype',data:[]},width:90,require:true,sortable:true},
                       {field:'TranNo',title:'运单号(点击可弹出框)',type:'string',link:true,width:140,require:true},
                       {field:'SellNo',title:'销售订单号',type:'string',width:140,require:true},
                       {field:'Qty',title:'销售数量',type:'int',width:90,require:true},
                       {field:'Remark',title:'备注',type:'string',width:170},
                       {field:'Creator',title:'创建人',type:'string',width:100,readonly:true},
                       {field:'CreateDate',title:'创建时间',type:'datetime',width:90,readonly:true,sortable:true},
                       {field:'ModifyID',title:'ModifyID',type:'int',width:80,hidden:true}
                    ],
                //从表明细表配置
                detail: {
                    cnName:"订单明细",//明细表中文名
                    //明细表table配置
                    columns: [
                        {field:'OrderList_Id',title:'OrderList_Id',type:'string',width:90,hidden:true,require:true},
                       {field:'Order_Id',title:'订单Id',type:'string',width:90,hidden:true,readonly:true,require:true},
                       {field:'ProductName',title:'商品名称',type:'string',bind:{ key:'pn',data:[]},width:150,edit:{type:'select'},require:true,sortable:true},
                       {field:'MO',title:'批次',type:'string',width:100,edit:{type:''},require:true},
                       {field:'Qty',title:'数量',type:'int',width:90,edit:{type:'drop'},require:true},
                       {field:'Weight',title:'重量',type:'decimal',width:90,edit:{type:''}},
                       {field:'Remark',title:'备注',type:'string',width:120,edit:{type:''}},
                       {field:'CreateID',title:'CreateID',type:'int',width:80,hidden:true},
                       {field:'Creator',title:'创建人',type:'string',width:130},
                       {field:'CreateDate',title:'创建时间',type:'datetime',width:90,sortable:true},
                       {field:'ModifyID',title:'ModifyID',type:'int',width:80,hidden:true},
                       {field:'Modifier',title:'修改人',type:'string',width:100},
                       {field:'ModifyDate',title:'修改时间',type:'datetime',width:90,sortable:true}
                    ],
                    //明细表排序字段
                    sortName: "CreateDate",
                    //明细表主键
                    key:"OrderList_Id"
                }
            };
        }
    };
    export default vueParam;
</script>

对应的js文件,代码:

let extension = {
    components: {//动态扩充组件或组件路径
        gridHeader: '',//自定义扩展查询界面header部份
        gridBody: "",//扩展同上
        gridFooter: "",//扩展同上
        modelHeader: '',//扩展同上
        modelBody: "",//自定义扩展弹出框界面body部份
        modelFooter: ''//扩展同上
    },
    tableAction:'SellOrder',//设置获取指定表的权限按钮
    text: "此处为主从表扩展示例,doc_viewGird.vue与doc_viewGirdExtension.js可由代码生成,其他两个文件自己写的扩展", //查询界面文字描述
    buttons: { //扩展的按钮
        //查询界面的按钮
        view: [],
        //弹出框的按钮,配置同上
        box: [],
        //弹出框的明细table按钮,配置同上
        detail: []
    },
    methods: {
        //事件扩展 拿到vue文件中editFormOptions下的所有属性
        getFormOption(field) {
            let option;
            this.editFormOptions.forEach(x => {
              x.forEach(item => {
                if (item.field == field) {
                  option = item;
                }
              });
            });
            return option;
          },
        onInit() {
            // 获取editFormOptions中的某一属性
            let OrderType = this.getFormOption("OrderType") // 拿到了 订单类型 就可以对他进行一系列操作
            // 给select类型的添加change事件 进行监听 可进行一系列操作
            OrderType.onChange = (val,item) => {
                console.log(val,item)
            }
        },
        onInited() {},
        //其他可以在此处定义的事件,全部事件可参照serviceFilter.js或SellOrder.js
        mounted() {
            console.log('mounted');
        },
        searchBefore(param) { //查询ViewGird表数据前,param查询参数
            console.log('表' + this.table.cnName + '触发loadTableBefore');
            return true;
        },
        searchAfter(param, result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
            console.log('表' + this.table.cnName + '触发loadTableAfter');
            return true;
        },
        searchDetailBefore(param) {//查询从表表数据前,param查询参数
            console.log(this.detailOptions.cnName + '触发loadDetailTableBefore');
            return true;
        },
        searchDetailAfter(param, data) {//查询从表后param查询参数,result回返查询的结果
            console.log(this.detailOptions.cnName + '触发loadDetailTableAfter');
            return true;
        },
        delBefore(ids, rows) { //查询界面的表删除前 ids为删除的id数组,,rows删除的行
            return true;
        },
        delAfter(result) {//查询界面的表删除后
            return true;
        },
         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 + ",你可以在此处编写逻辑,如,从后台获取数据"); 常用
    },
};
export default extension;

根据js中的扩展方法getFormOption()对vue文件中的变量进行选中,从而实现js的编写。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值