Ext.js—常用函数方法

//Ext.js--常用函数方法

//自定义表单单据编辑页面初始化 
function allReadyEdit() {

}

//系统表单单据编辑页面初始化
function AllReady() {

}

//自定义表单单据列表页面初始化
function allReadyList() {

}

//获取容器 获取表头容器并用对像mstform表示
var mstform = Ext.getCmp('p_form0000000007_m');

//列表界面查询模块容器获取
function AllReadyList() {//自定义表单单据列表页面初始化
    var viewPort = Ext.getCmp('viewPort');
    var print = curToolbar.get('print');
    var list = viewPort.items.items[1];
    //print.setText('打印/导出');
    //获取查询容器内的字段
    list.queryById('u_u_itjfbm_b').hide();
    list.queryById('u_u_itjfbm_b').setValue(itjfbm);
    list.queryById('u_u_itjfbm_b').setRawValue(itjfbm_name);
    list.searchEvent(curGrid.store);
    //刷新按钮点击事件
    list.dockedItems.items[0].items.get('query').on('click', function () {
        list.queryById('u_u_itjfbm_b').setValue(itjfbm);
        list.queryById('u_u_itjfbm_b').setRawValue(itjfbm_name);
    });
}

//获取菜单栏并用对像Toolbar表示
var Toolbar = Ext.getCmp('toolbar');

//单据引用按钮中表头和表体按钮的获取
Toolbar.get('imp') //单据引用按钮
Toolbar.get('impform') //表头引用按钮
Toolbar.get('impgrid') //表头引用按钮

{ //当单据引用带有表体和表头时需要改变按钮名字时用
    //判断单据引用按钮是否存在
    if (Toolbar.get('imp') != null) {
        //判断表头表体按钮是否存在
        if (Toolbar.get('impform') && Toolbar.get('impgrid')) {
            Toolbar.get('imp').addListener('click', function() {
                Toolbar.get('impform').textEl.dom.innerHTML = '引用合同';
                Toolbar.get('impgrid').textEl.dom.innerHTML = '引用结算单';
            });
        }
    }
}

//获取表体容器并用对像dgrid表示
var dgrid = Ext.getCmp('p_form0000000007_dgrid');
var dstore = dgrid.store;

{
    //获取表体的列表名数据
    dgrid.getColumn('u_phid_company_name');
    //变改表体列表的原名称
    dgrid.getColumn('u_phid_company_name').textEl.dom.innerText = '单位11';
}

{//获取列表界面容器和元素 
//方法一:5.1版本自定义表单可用
var dgrid = Ext.getCmp('p_form0000000066_mgrid'); //获取当前整体列表
var data = dgrid.getSelectionModel().getSelection(); //获取当前选中行
data[0].get('sgjd'); //获取当前选中行某个字段值
data[0].set('sgjd', '11111'); //给当前选中行某个字段值赋值

//方法二:适用于5.1和5.2版本的系统表单和自定义表单
var listId = Ext.getCmp('viewPort').items.items[2].id;//找出列表容器的id,items[2]每个单据的索引不同
var dgrid = Ext.getCmp(listId); //获取当前整体列表
var data = dgrid.getSelectionModel().getSelection(); //获取当前选中行
data[0].get('sgjd'); //获取当前选中行某个字段值
data[0].set('sgjd', '11111'); //给当前选中行某个字段值赋值

}

var dgrid = Ext.getCmp('p_form0000000007_dgrid'); //获取当前表体
var data = dgrid.getSelectionModel().getSelection(); //获取当前选中行
data[0].get('sgjd'); //获取当前选中行某个字段值
data[0].set('sgjd', '111'); //给当前选中行某个字段值赋值

//循环遍历选中行的数据 并给批量置空数组的值
{
    var dgrid = Ext.getCmp('p_form0000000007_dgrid'); //获取当前表体
    var data = dgrid.getSelectionModel().getSelection(); //获取当前选中行
    //获取到选中行的数据,并定义一个数组对象
    var arrDatas = data[0].data;

    //循环遍历并输出数组的key value
    for (var key in arrDatas) {
        console.log(key, arrDatas[key]);
        //输出
        //name programmer
        //age 22
        //height 180
    }

    //批量给数组对象置空或赋值
    for (var key in arrDatas) {
        arrDatas[key] = '1111';
        arrDatas[key] = '';
    }
    console.log(arrDatas) //{name: "1111", age: "1111", height: "1111"}  //{name: "", age: "", height: ""}
}

{
    //获取当前选中行某个字段值
    var data = dgrid.getSelectionModel().getSelection();
    //获取表体序号
    var xh = data[0].internalId;//方法1
    var xh = data[0].index + 1;//方法2
}
//=================================================================================================


{ //获取系统数据
    y.queryById('PhidYsfl').setValue(14);
}

{ //获取tab页容器--数据
    var dgrid11 = Ext.getCmp('cntitemtab').items.items[0].items.items[0];
    var dstore11 = dgrid11.store;
}

{
    //多个tab页时,默认显示某一个
    var tabPanel = Ext.getCmp('tabPanel');
    tabPanel.setActiveTab(0);
}

{
    var tabPanel = Ext.getCmp('tabPanel'); //获取当前所在tab页
    var tab = tabPanel.getActiveTab(); //多个tab页时获取正在编辑状态的tab页
}

{
    //tab页依次激活
    var tabs = tabPanel.items.items;
    for (var i = 1; i < tabs.length; i++) {
        tabPanel.setActiveTab(i);
    }
    // 默认打开第一个tab页
    tabPanel.setActiveTab(0);

}

{ //tab页的显示与隐藏
    //隐藏tab页 
    var tabPanel = Ext.getCmp('tabPanel');
    var tab1 = tabPanel.items.items[0];
    tabPanel.remove(tab1); //方法1
    tabPanel.hide(tab1); //方法2

    //显示tab页
    tabPanel.show(tab1); //方法2

    //上面失效的话可能是如下方法
    tab1.tab.onHide();//隐藏
    tab1.tab.onShow();//显示

}

{//隐藏imp的统计项
    var customfieldset = mstform.up('container').down('[itemId=customfieldset][xtype=fieldset]');
    if (customfieldset) {
        customfieldset.setVisible(false);
    }
}

{ //数据加载完成触发
    mstform.on('dataready', function() {

    });

    //单据引用加载后
    mstform.on('impdataready', function() {

    });

    //页面数据加载定时器(自动调用并停止)
    var cnt = 0;
    var timer = setInterval(function() {
        //加载内容start

        //加载内容end
        if (++cnt == 2) {
            clearInterval(timer);
        }
    }, 500);

    //页面数据加载定时器(每次只调用一次)
    setTimeout(function() {
        //加载内容start

        //加载内容end
    }, 1000);

    //页面数据加载定时器(每隔一段时间调用一次)
    setInterval(function() {
        //加载内容start

        //加载内容end
    }, 1000);
}
//=================================================================================================

{ // 列表界面查询条件默认隐藏
    function AllReadyList() {
        //列表界面查询模块容器获取
        var viewPort = Ext.getCmp('viewPort');
        var list = viewPort.items.items[1];
        var hidden_Query = curToolbar.get('hidden_Query');
        list.setVisible(false);
        hidden_Query.setText('显示');
        hidden_Query.setIconCls('iconfont iconunfold');

        //列表页grid加载前,增加过滤条件,合同页面类型为‘合同评审’
        //列表加载前
        liststore.on("beforeload", function (me, operation, eOpts) {
            if (me.proxy.extraParams.hasOwnProperty("queryfilter")) {
                var qeryObj = JSON.parse(me.proxy.extraParams.queryfilter);
                console.log(qeryObj);
                qeryObj["user_htymlx"] = '1';
                me.proxy.extraParams.queryfilter = JSON.stringify(qeryObj);
            }
            else {
                me.proxy.extraParams.queryfilter = JSON.stringfy({ "user_htymlx": '1' });
            }
        });
        liststore.load();//重新加载

    }
}

{ //页面数据加载框升级版
    Ext.Msg.wait('数据加载中...', '提示信息', {
        interval: 300, //进度条移动速度!循环定时间隔
        duration: 1500, //总时长
        increment: 5, //执行进度条的次数
        text: '数据加载中...', //进度条的文字
        scope: this,
        width: 300, //宽 可调节
        // height: 120, //高  可调节
        animate: true, //进度条动画效果
        buttons: Ext.Msg.YESNO, //按钮   YESNOCANCEL 显示Yes, No 和 Cancel 按钮的配置
        icon: Ext.Msg.QUESTION, //提示标记   WARNING警告   QUESTION疑问  INFO提示  ERROR错误
        fn: function() {
            Ext.Msg.alert({
                msg: '加载成功', //提示信息
                width: 50, //宽 可调节
                height: 20, //高 可调节
                icon: Ext.Msg.INFO //提示标记   WARNING警告   QUESTION疑问  INFO提示  ERROR错误
            });
            //.5s后自动关闭提示框和加载框
            setTimeout(function() {
                //加载内容start
                Ext.Msg.hide(); //进度弹窗加载后自动隐藏
                //加载内容end
            }, 500);

        }
    });

    //提示框
    Ext.Msg.alert('提示', '请先选择【工程项目】');

    // 自定义弹窗/提示框
    Ext.Msg.alert({
        title: '提示', //标题
        msg: '【整改明细】表体不能为空,请点击【单据引用】按钮,引入表体数据。', //提示信息
        width: 490, //宽 可调节
        height: 120, //高 可调节
        buttons: Ext.Msg.OKCANCEL, //按钮   YESNOCANCEL 显示Yes, No 和 Cancel 按钮的配置
        multiline: false,
        icon: Ext.Msg.WARNING //提示标记   WARNING警告   QUESTION疑问  INFO提示  ERROR错误
    });

    //自定义提示框
    Ext.Msg.show({
        title: '标题',
        msg: '提示内容',
        width: 300, //宽 可调节
        height: 120, //高 可调节
        buttons: Ext.Msg.OKCANCEL, //按钮   YESNOCANCEL 显示Yes, No 和 Cancel 按钮的配置
        multiline: false, //输入框 默认false不显示 
        icon: Ext.window.MessageBox.INFO //提示标记   WARNING警告   QUESTION疑问  INFO提示  ERROR错误
    });
}
// =================================================================================================

//通过obj参数,带出通用帮助中的字段值
mstform.getItem('cght').addListener('helpselected', function(obj) {
    mstform.getItem('jfdw').setValue(obj.data.phid_reccomp);; //甲方单位phid_reccomp
    mstform.getItem('yfdw').setValue(obj.data.phid_sencomp);; //乙方单位phid_sencomp
    //将ID转换成名称
    BatchBindCombox([mstform.queryById('jfdw')]);
    BatchBindCombox([mstform.queryById('yfdw')]);
});

//表头通用帮助过滤 (点击通用帮助1,通用过滤帮助2)
mstform.getItem('yxxmmc').addListener('helpselected', function() { //通用帮助1
    var pc = mstform.getItem('yxxmmc').getValue();
    var yxmmbh_val = '';
    var jydw1 = '';
    var jydw2 = '';
    var jydw3 = '';
    callServer('xmmc', [{
        'pc': pc
    }], function(res) {
        mstform.getItem('yxmmbh').setValue(res.record[0].bill_no);
        yxmmbh_val = res.record[0].bill_no;
    });

    // 获取出通用帮助2的主键
    callServer('jydw', [{
        'bll': yxmmbh_val
    }], function(res) {

        jydw1 = res.record[0].uj1;
        jydw2 = res.record[0].uj2;
        jydw3 = res.record[0].uj3;

    });

    // 通用帮助2   //phid字段是通用帮助中的字段
    mstform.getItem('scdw').setClientSqlFilter('phid = \'' + jydw1 + '\' or phid = \'' + jydw2 + '\'or phid = \'' + jydw3 + '\'');
});

// 表体通用帮助过滤 表体帮助过滤
dgrid.getColumn('u_cbs_name').getEditor().addListener('beforetriggerclick', function() {
    //获取表体当前选中行
    var data = dgrid.getSelectionModel().getSelection();
    var pc = mstform.getItem('u_gcxm').getValue();
    // dgrid.getColumn('u_cbs_name').getEditor().setOutFilter({
    //     c_no: $appinfo.userID
    // });
    if (pc != '' || pc != null || data.length > 0) {
        dgrid.getColumn('u_cbs_name').getEditor().setClientSqlFilter('pcid =' + pc);
        //dgrid.getColumn('u_cbs_name').getEditor().setClientSqlFilter('bd_cbs.pcid =' + pc);
        //dgrid.getColumn('u_cbs_name').getEditor().setClientSqlFilter('pcid in (142211118000091,142211118000092)');
    }

});

//收付款节点根据合同过滤 通用帮助点击前过滤
mstform.queryById('user_fkjd').addListener('beforetriggerclick', function() {
    var PhidCnt_val = mstform.queryById('PhidCnt').getValue();
    if (PhidCnt_val == 0) {
        NGMsg.Error('请先选择合同');
        return false
    } else {
        mstform.queryById('user_fkjd').setOutFilter({
            phid_cnt: PhidCnt_val //phid_cnt字段是通用帮助中的字段
        });
    }
});

//==================================================================================================

{ //单据状态为新增、修改或查看 
    if (otype == $Otype.ADD || otype == $Otype.EDIT || otype == $Otype.VIEW || otype == $Otype.COPY) {

    }
    if (otype === 'add' || otype === 'edit' || otype === 'view' || otype === 'copy') {

    }
}

{ //表头帮助窗口选择后触发 
    mstform.getItem('pc').addListener('helpselected', function() {

    });
}

{ //字段监听事件 表头焦点离开后触发 
    mstform.getItem('remarks').addListener('itemchanged', function() {

    });
}

{ //表头值发生变化后立即触发 
    mstform.getItem('checkboxcol_1').addListener('change', function() {

    });
}

{ // 表体数据插入
    callServer('zyhd', [{
        'pc': pc,
    }], function(res) {
        dstore.removeAll(); //清除单据体内所有数据
        dstore.insert(dstore.getCount(), res.record); //将服务端获取的数组内容插入到单据体
    });


    // 表体数据插入(有通用帮助的情况 注意通用帮助的中文名称要联查通用帮助的数据库表)
    mstform.getItem('u_gcxm').addListener('helpselected', function(obj) {
        var gcxm_val = mstform.getItem('u_gcxm').getValue();
        //收入清单
        callServer('srboq', [{
            'pc': gcxm_val
        }], function(res) {
            if (res.count > 0) {
                var arr = new Array();
                for (i = 0; i < res.record.length; i++) {
                    arr.push({
                        u_ysxbm: res.record[i].u_ysxbm,
                        u_ysxbt: res.record[i].u_ysxbt,
                        u_dwgc: res.record[i].u_dwgc,
                        u_dwgc_name: res.record[i].u_dwgc_name,
                        u_cbs: res.record[i].u_cbs,
                        u_cbs_name: res.record[i].u_cbs_name,
                        u_dw: res.record[i].u_dw,
                        u_dw_name: res.record[i].u_dw_name,
                    })
                }
                dstore.removeAll(); //清除单据体内所有数据
                dstore.insert(dstore.getCount(), arr); //将服务端获取的数组内容插入到单据体   
            } else {
                dstore1.removeAll(); //清除单据体内所有数据
            }
        });


    });

}

{ //表体默认增行事件
    if (otype == $Otype.ADD) {
        // 表体默认新增四行
        var arr = new Array();
        for (var i = 0; i < 4; i++) {
            arr.push({
                jd: str,
                tzzy: '',
                jszy: '',
                ts: '',
                rq: '',
                remarks: '',
            })
        }
        dstore.removeAll(); //清除单据体内所有数据
        dstore.insert(dstore.getCount(), arr); //将服务端获取的数组内容插入到单据体
    }
}

{
    // 方法1
    //获取表体当前选中行
    var data = dgrid.getSelectionModel().getSelection();
    //获取当前选中行某个字段值
    data[0].get('sgjd');

    // 方法2
    var dgrid = Ext.getCmp('CntPayDOld1');
    dgrid.addListener('cellclick', function(editor, e) { //监听单据体编辑状态,edit-编辑,add-增行,remove-删行,cellclick-点击,update-值变化
        //获取表体当前选中行
        var data = dgrid.getSelectionModel().getSelection();
        //获取当前选中行某个字段值
        data[0].data.ItemNo;
    });
}

{ //表体字段变化 
    dgrid.addListener('edit', function(editor, e) { //监听单据体编辑状态,edit-编辑,add-增行,remove-删行,cellclick-点击,update-值变化
        if (e.originalValue == e.value) {
            return;
        } //判断原值与新值是否相同
        if (e.field == 'qty' || e.field == 'prc') { //监听qty、prc字段变化
            var record = e.record;
            record.set('amt', Ext.Number.from(record.get('prc'), 0) * Ext.Number.from(record.get('qty'), 0)); //计算amt值  
        };
    });

    //表体字段变化后触发
    dstore1.addListener('update', function(store, record, operation, modifiedFieldNames) {
        if (operation !== Ext.data.Model.EDIT) {
            return
        };
        if (modifiedFieldNames[0] == 'bywcjd') {
            var bywcjd = "'" + record.get('bywcjd') + "'";
            callServer('bywcjd', [{
                'bywcjd': bywcjd
            }], function(res) {
                if (res.count > 0) {
                    record.set('qty', res.record[0].c_descript)
                }
            })
        }
        if (modifiedFieldNames[0] == 'bywcjd' || modifiedFieldNames[0] == 'amt' || modifiedFieldNames[0] == 'qty') {
            var sumwccz = 0;
            record.set('bywccz', Ext.Number.from(record.get('qty'), 0) * Ext.Number.from(record.get('amt'), 0));

            for (i = 0; i < dstore1.getCount(); i++) {
                sumwccz += Ext.Number.from(dstore1.getAt(i).get('bywccz'), 0)
            }
            mstform.getItem('bywccz').setValue(sumwccz)
        }
    })

}

{ //表体单行金额或数量字段累加计算(可根据业务需要进行加减乘除计算)
    dgrid.addListener('edit', function(editor, e) { //监听单据体字段编辑状态 *edit 为编辑事件(据体汇总更新表头字段)
        if (e.originalValue == e.value) {
            return;
        } //判断原值与新值是否相同,如果相同则返回
        if (e.field == 'fs') { //监听表体amt字段变化
            var sumamt = 0; //变量sumamt初始值为0
            for (i = 0; i < dstore.getCount(); i++) { //for循坏 *dstore.getCount()表示单据体总行数
                sumamt += Ext.Number.from(dstore.getAt(i).get('fs'), 0); //变量sumamt累加
                mstform.getItem('zpzf').setValue(sumamt); //变量sumamt值赋值给表头 amt
            } //for循环事件结束 }

        }; //监听表体amt字段变化事件结束
    });

    //表体多行计算
    // 表体导入或增加多行时自动计算表体数据(可根据业务需要进行加减乘除计算)
    //页面数据加载定时器(每隔一段时间调用一次)
    setInterval(function() {
        //加载内容start
        console.log("表体字段计算中...");
        //获取表体的所有行的数据
        var arr = dgrid.getStore().getRange(0, dstore.getCount() - 1); // 0代表第一行  getCount() - 1表示最后一行
        for (i = 0; i < arr.length; i++) {
            var dj = Ext.Number.from(arr[i].get('dj'), 0); //单价
            var sl = Ext.Number.from(arr[i].get('sl'), 0); //数量
            var sum = dj * sl; //合计
            arr[i].set('amt', sum); //赋值表体数组arr第i行 amt字段的值 
            // arr[i].get('amt'); //获取表体数组arr第i行 amt字段的值 
        }
        //加载内容end
    }, 100);

}

{
    // [新增] [修改] [复制] 添加按钮 方法调用
    if (otype == $Otype.ADD || otype == $Otype.EDIT || otype == $Otype.COPY) {
        AddNewToolbar('p_form_design_deliver_d');
    }

    // [增行] [删行] 按钮 方法定义
    function AddNewToolbar(tablename) {
        var tb = Ext.getCmp(tablename + '_bar');
        tb.insert(1, {
            xtype: 'button',
            text: '增行',
            iconCls: 'icon-AddRow',
            handler: function () {
                var Mstform = Ext.getCmp('p_form_wm_m');
                if (Ext.isEmpty(Mstform.getItem('pc').getValue())) {
                    Ext.Msg.alert('提示', '请先选择项目名称!');
                } else {
                    var dgrid = Ext.getCmp(tablename);
                    var data = dgrid.getSelectionModel();
                    dgrid.getStore().insert(dgrid.getStore().getCount(), data);
                }
            }
        })
        tb.insert(2, {
            xtype: 'button',
            text: '删行',
            iconCls: 'icon-DeleteRow',
            handler: function () {
                var dgrid = Ext.getCmp(tablename);
                var dstore = dgrid.getStore();
                var data = dgrid.getSelectionModel().getSelection();
                if (data.length > 0) {
                    var index = dstore.indexOf(data[0]);
                    Ext.Array.each(data, function (record) {
                        dstore.remove(record);
                    });
                    if (dstore.getCount() > 0) {
                        if (index >= dstore.getCount()) {
                            index--;
                        }
                        dgrid.getSelectionModel().select(index);
                    }
                }
            }
        })
    }

}

{ // 表体字段编辑事件触发
    dgrid.on('beforeedit', function(editor, e, eOpts) {
        var record = e.record;
        if (e.field == '' || e.field == '') {

        }
    });
}

{ //表体增行删行事件
    //表体增行事件触发
    dstore.on('add', function(store, records, index, eOpts) {

    });

    //表体删行事件触发
    dstore.on('remove', function(store, records, index, eOpts) {

    });
}

{ //表体增行并给字段赋值
    dstore.on('add', function(store, records, index, eOpts) {
        for (i = 0; i < records.length; i++) {
            records[i].set('Edt', '2022-01-06 13:18:55');
        }
    });
}


{ //菜单栏按钮单击事件 
    Toolbar.get('myadd').on('click', function() {

    });
}

{ //虚拟点击事件
    mstform.getItem('lyzj').addListener('change', function() {
        dstore.removeAll(); //清除单据体内所有数据
        Toolbar.get('impgrid').fireEvent('click'); //虚拟鼠标单击事件

    });
}

{ //按钮置灰
    Toolbar.get('imp').disable();

    Toolbar.get('imp').enable();

    //按钮隐藏
    Toolbar.get('imp').hide();
}



{ //增加按钮
    //在最后放按钮
    var toolbar = Ext.getCmp('toolbar');
    yoolbar.add({ itemId: "myadd", text: "新增", width: this.itemWidth, iconCls: "icon-New" });

    //指定位置插入按钮
    var toolbar = Ext.getCmp('toolbar');
    toolbar.insert(3, { itemId: "myadd", text: "新增", width: this.itemWidth, iconCls: "icon-New" });

    //增加按钮组
    var buttomGroup = {
        xtype: 'splitbutton',
        text: '增行',
        menu: [
            { itemId: "htxz", text: "引用合同", iconCls: 'icon-New' },
            { itemId: "addrow", text: "直接增行", iconCls: 'icon-AddRow' }
        ],
        iconCls: 'icon-AddRow'
    };
    toolbar.insert(1, buttomGroup);
}
//==================================================================================================

{ //循环带出字段
    callServer('get_xmxx', [{
        'phid': pc_phid
    }], function(res) {
        for (var rskey in res.record[0]) {
            if (rskey != 'project_name') {
                mstform.getItem(rskey).setValue(res.record[0][rskey]);
                BatchBindCombox([mstform.getItem(rskey)]);
            }
        }
    });
}

{ //自定义表单SQL数据注册取值赋值 
    callServer('bbhtje', [{
        'ccy': pc
    }], function(res) {
        mstform.getItem('jbr').setValue(res.record[0].jbr);
    });
}

{ //系统表单SQL功能扩展取值赋值 
    execServer('bbhtje', {
        'ccy': pc
    }, function(res) {
        mstform.getItem('jbr').setValue(res.data[0].jbr);
    });
}
//==================================================================================================
{
    //按钮监听 表头控件设为只读 
    mstform.getItem('textcol_1').userSetReadOnly(true); //true-只读   false-不只读
    //字段控件设置 表头控件设为必输 
    mstform.getItem('textcol_1').userSetMustInput(true); // true-必输   false-不必输
    //表头控件设为可见 
    mstform.getItem('textcol_1').setVisible(true); //true-可见   false-隐藏
    //表头控件设为显示掩码
    mstform.getItem('textcol_1').userSetMask();
}

{ //表体控件设为只读
    dgrid.setReadOnlyCol('textcol_1', true); //帮助字段设置  字段名_name  true-只读   false-不只读
    //表体控件设为必输 
    dgrid.setMustInputCol('textcol_1', true); // 通用帮助加_name true-必输   false-不必输
    //表体控件设为隐藏 
    dgrid.hideColumn('textcol_1', true); // 通用帮助加_name   true-隐藏   false-可见
    //表体控件设为显示掩码 
    dgrid.setMaskCol('textcol_1');
}

{ //通用帮助改为单击打开
    //所有帮助选择字段,不可编辑
    var fields = mstform.getForm().getFields().items;
    for (var i = 0; i < fields.length; i++) {
        var fld_xtype_val = fields[i].xtype;
        var fld_key = fields[i].name;

        if (fld_xtype_val.indexOf("Help") != -1) {
            mstform.getItem(fld_key).setEditable(false);
        }
    }
}

{//自定义通用帮助
    // 定义通用帮助
    var help = Ext.create('Ext.ng.MultiRichHelp', {
        helpid: 'sjjd_help', // 帮助ID
        valueField: 'u_packet_segment', // 主键列
        displayField: 'u_packet_segment_no', // 名称列
        listFields: 'bams', // 输出列
        ORMMode: false,
        clientSqlFilter: 'pc = ' + Pc + ' AND type = ' + JDnr // 过滤条件
    })
    help.showHelp(); // 显示
    help.on('helpselected', function (obj) {
        var array = new Array();
        for (var i = 0; i < obj.data.length; i++) {
            var objItem = obj.data[i].data; // 选中数据插入数组
            // 判断是否有相同数据
            var isAdd = false;
            Ext.Array.each(dgrid.getStore().data.items, function (record) {
                if (record.get('u_bill_phid') == objItem.phid) {
                    isAdd = true;
                }
            })
            if (dgrid.getStore().data.length <= 0 || !isAdd) {
                array.push({
                    u_packet_segment_no: objItem.u_packet_segment_no, // 包案
                    u_packet_segment: objItem.u_packet_segment, // 包案名称PHI
                    u_packet_segment_name: objItem.bams, // 包案名称
                    u_monomer: objItem.u_monomer, // 建筑物PHID
                    u_monomer_name: objItem.jzw_name, // 建筑物
                    u_design_parameter: objItem.u_design_parameter, // 设计参
                    u_specification: objItem.u_specification, // 详细参数
                    u_bill_phid: objItem.phid // 引用单据PHID
                })
            }
        }
        // 提示已存在数据
        if (array.length != obj.data.length) {
            Ext.Msg.alert('提示', '已存在相同数据!');
        }
        dstore.insert(dstore.getCount(), array); // 数据插入
    })
}

{ //隐藏容器 
    CntProjBalList1.hide(); //hide()为隐藏设置,可通用于字段、容器
}
//==================================================================================================

{ // 分组默认展开或折叠
    mstform.items.items["0"].collapse(); //“基本信息”默认关
    mstform.items.items["0"].expand(); //“基本信息”默认展开
}
// =================================================================================================

{ //容器控制设置 
    $appinfo.logid; //获取当前登录信息 
    $appinfo.logid //登录用户名;
    $appinfo.ocode //登录组织编号;
    $appinfo.orgID //登录组织phid;
    $appinfo.userID //登录用户phid;
    $appinfo.username //登录用户姓名;
}

{
    if (otype == $Otype.ADD) {
        mstform.getItem('yfdw').setValue($appinfo.orgID);
    }
}

{ //获取值 获取当前登录用户phid 
    $appinfo.userID;
    //获取当前登录用户姓名
    $appinfo.username;
    //获取当前登录组织编号 
    $appinfo.ocode;
    //获取当前登录组织phid
    $appinfo.orgID;
}

{ //获取表体的数据赋值给数组arr
    var arr = dgrid.getStore().getRange(0, dstore.getCount() - 1); // 0代表第一行  getCount() - 1表示最后一行
    arr[0].get('amt'); //获取表体数组arr第一行 amt 字段的值 
    arr[0].set('amt', 999); //给表体数组arr 第一行 amt 字段赋值

    //获取表体总行数的数据(动态获取行数据以及赋值)
    var arr = dgrid.getStore().getRange(0, dstore.getCount() - 1); // 0代表第一行  getCount() - 1表示最后一行
    for (var i = 0; i < arr.length; i++) {
        arr[0].get('amt'); //获取表体数组arr第i行 amt 字段的值 
        arr[0].set('amt', 999); //给表体数组arr 第i行 amt 字段赋值
    }
}

{ //获取表头字段的值
    mstform.getItem('pc').getValue(); //getValue()代表控件的值
}

{ //变量赋值
    var a = 100; //变量 a 赋值 100
    //表头字段赋值 
    mstform.getItem('jzmj_1').setValue('');
    mstform.queryById('PhidYsfl').setValue('');
}

{ //表体字段赋值
    record.set('amt', Ext.Number.from(record.get('prc'), 0));
}

{ //表体帮助字段赋值 
    record.set('jldw', 001);
    record.set('jldw_name', 个); //赋值给字段名编码值,及字段名_name 名称值
}

{ //表头帮助字段代码转名称 
    BatchBindCombox([mstform.getItem('user_xmlx')]); //可同时转换多个帮助字段用,隔开
    BatchBindCombox([mstform.getItem('user_xmlx'), mstform.getItem('user_xmmc')]); //可同时转换多个帮助字段用,隔开
}

{ //字段值转换 将值转换为数值型 
    Ext.Number.from(dstore.getAt(i).get('mbz_1'), 0);
}

{ //弹出选择框
    Ext.MessageBox.confirm('提示', '是否删除单据体现有记录?', function(e) {
        //if判断 如果选择是的选项则执行,否则弹出选择框事件结束
        if (e == yes) {

        } else {

        }
    });
}

{ //表头按钮触发超链接 
    mstform.getItem('dwgc').el.down('input').on('dblclick', function() {
        var phid = mstform.getItem('dwgc').getValue();
        if (phid) {
            var url = C_ROOT + 'SUP/CustomIntegrate/CustomIntegrateEdit?otype=view&hastitle=1&id=' + phid + '&customBusCode=EFORM0000700240&Authorization=null&AppTitle=%E5%88%86%E5%8C%85%E6%9C%88%E6%8B%9B%E6%A0%87%E8%AE%A1%E5%88%92-%E6%9F%A5%E7%9C%8B';
            $OpenTab('分包月招标计划', url);
        } else {
            Ext.Msg.alert('提示', '未找到对应单据!');
        }
    });
}

{
 //超链接
    dgrid.getColumn('u_xmbh').renderer = function (val, m) {
        return "<a href='javascript:void(0)' onclick='getData(" + m.record.data.phid + ")'>" + val + "</a>"
    }
	
    function getData(id) {
        var Mstform = Ext.getCmp('p_form_projectsetmanagement');
        var dgrid = Ext.getCmp('p_form_projectguanli');
        var dstore = dgrid.store;

        if(!Ext.isEmpty(id)){
            $OpenTab('项目详情-查看', C_ROOT + 'SUP/CustomPC/CustomPCEdit?otype=view&hastitle=1&issso=0&customBusCode=EFORM9000000043&id=' + id);
        }
    }
}

{ // 表体按钮触发超链接 
    //表体字段变化 
    var dgrid = Ext.getCmp('CntPayD1');
    // 记录点击次数用  判断点击间隔
    var st = 0;
    var ed = 0;
    var times = Array();
    var num = 0;
    // 判断是否点击同一行数据
    var arr = new Array();
    dgrid.addListener('cellclick', function(editor, e) { //监听单据体编辑状态,edit-编辑,add-增行,remove-删行,cellclick-点击,update-值变化
        var record = e.record;
        //获取表体当前选中行
        var data = grid_f.getSelectionModel().getSelection();
        //获取当前选中行某个字段值
        var url = data[0].data.c_path;
        var same = data[0].internalId;

        // 获取当前时间戳
        var ti = new Date().getTime()
        times.push(ti);
        for (let index = 0; index < times.length; index++) {
            var te = times.length - 1;
            var ed = times[te];
            var st = times[te - 1];
            var timer = ed - st;
        }

        // 把行号插入数组 用于比较两次点击是否一行
        arr.push(same);
        for (let index = 0; index < arr.length; index++) {
            var le = arr.length - 1;
            var isSame = arr[le];
            var same = arr[le - 1];
        }

        num++;
        // 双击跳转超链接
        if (num % 2 == 0 && isSame == same && timer <= 500) {
            window.open('https://www.baidu.com/?tn=sitehao123&H123Tmp=nunew11&ts=637948800284735803');
        }
    });
}

{ // 防止链接重复点击
    var isClick = true;
    $("button").on("click", function() {
        if (isClick) {
            isClick = false;
            //事件
            console.log('我被点击了');
            //事件end

            //定时器
            setTimeout(function() {
                isClick = true;
            }, 1000); //一秒内不能重复点击
        } else {
            Ext.Msg.alert('提示', '请勿过快点击');
        }
    });
}

{ // 页面跳转
    mstform.getItem('BillNo').el.down('input').on('dblclick', function() {
        // 当前窗口打开
        location.href = 'https://www.baidu.com/?tn=sitehao123&H123Tmp=nunew11&ts=637948800284735803';
        // 新窗口打开
        window.open('https://www.baidu.com/?tn=sitehao123&H123Tmp=nunew11&ts=637948800284735803');
    });
}

{ //单选框/复选框操作
    //单选框取值:
    mstform.getItem('rbcol_1_code').getChecked()[0].inputValue;
    //赋值:——i表示第几项
    mstform.getItem('rbcol_1_code').items.get(i).setValue(true);

    //单选/复选框隐藏(可见用show())
    mstform.getItem('rbcol_1_code').hide();
}
//--------------------------------------------------------------

{ //隐藏tab页
    var tabPanel = Ext.getCmp('tabPanel');
    tabPanel.hide();
}

{ //tab切换触发 
    var tabPanel = Ext.getCmp('tabPanel'); //TAB页    
    //Tab页2 
    var changetab = tabPanel.getComponent('p_form0000700020_d1grid');
    tabPanel.setActiveTab(changetab);
    //切回Tab页1
    var cntintab = tabPanel.getComponent('p_form0000700020_dgrid');
    tabPanel.setActiveTab(cntintab);

    tabPanel.on('tabchange', function(tabchange, newCard, oldCard, eOpts) {
        if (newCard.id == 'cntpaydChgtab') {
            var dgrid = Ext.getCmp('CntPayDChg7');
            dgrid.addListener('edit', function(editor, e) {
                if (e.originalValue == e.value) {
                    return;
                }
                if (e.field == 'AppAmtVatFc') {
                    var record = e.record;
                    record.set('user_spbbje', Ext.Number.from(record.get('AppAmtVatFc'), 0) * Ext.Number.from(record.get('ExchRate'), 0));
                }
            });
        }
    });
}
//-------------------------------------------------------------------

{ //打开帮助链接 
    var url = C_ROOT + 'SUP/NG0001pform0000000117Edit?otype=add&issso=' + IsSso;
    url += '&treeorgid=' + Ext.getCmp('ocode').getValue();
    url += '&treeprojid=' + Ext.getCmp('pc').getValue();
    $OpenTab('开工报告-新增', url);
}

{ //保存前检测 系统表单可用
    var startdt = mstform.queryById('StartDate').getValue();
    var enddt = mstform.queryById('EndDate').getValue();
    if (startdt == null || enddt == null) {
        mstform.queryById('LimitTime').setValue(0);
        return;
    }
}

{ //时间转换
    var sd = Date.parse(startdt);
    var ed = Date.parse(enddt);
    var date = (ed - sd) / 1000 / 3600 / 24;
    date = date + 1;
}

{ //系统表单表体方案编写表体帮助字段监听
    dgrid.getColumn('PhidCbs_EXName').getEditor().addListener('helpselected', function() {

    });
}

{ //单据检测事件 单据编辑页面保存前检测 
    function beforeSaveEdit() {
        var mstform = Ext.getCmp('表明');
        var flag = mstform.getItem('asr_flg').getValue();
        if (flag) {
            return true;
        } else {
            NGMsg.Info('请先上传附件');
            return false
        }
    }
}

{ //保存检测事件
    function beforeSaveEdit() {}
}

{ //单据列表页面删除前检测 
    function beforeDeleteList() {}
}

{ //单据编辑页面审核前检测
    function beforeVerifyEdit() {}
}

{ //单据列表页面审核前检测
    function beforeVerifyList() {}
}

{ //单据编辑页面去审核前检测 
    function beforeUnVerifyEdit() {}
}

{ //单据列表页面去审核前检测 
    function beforeUnVerifyList() {}
}

{ //单据编辑页面保存更新数据 
    function getSaveDataEdit(type) {
        if (type == 'Save') {}
    }
}

{ //单据更新事件 单据编辑页面审核更新数据
    function getSaveDataEdit(type) {
        if (type == 'Verify') {}
    }
}

{ //单据编辑页面去审核更新数据
    function getSaveDataEdit(type) {
        if (type == 'UnVerify') {}
    }
}

{ //单据列表页面审核更新数据 
    function getSaveDataList(type) {
        if (type == 'Verify') {}
    }
}

{ //单据列表页面去审核更新数据 
    function getSaveDataList(type) {
        if (type == 'UnVerify') {}
    }
}

{ //工作流经过审批节点更新数据
    function getSaveDataEdit(type) {
        if (type == 'Approve') {}
    }
}

{
    // 百分数四舍五入后失去精度处理
    function beforeSaveEdit() {
        var mstform = Ext.getCmp('p_form0000700011_m');
        var yqlrl = mstform.getItem('yqlrl').getValue();
        var lrl = parseFloat(yqlrl);
        mstform.getItem('yqlrl').setValue(lrl);
        if (1 == 1) {
            return true;
        } else {
            return false
        }
    }

    //数据库里取数,出现四舍五入的处理
    execServer('zbjbl', {
        'htbm': phidcnt_val
    }, function(res1) {
        if (res1.count > 0) {
            var bzjbl1 = parseFloat(res1.data[0].bp);
            var bzjbl2 = (Math.round(bzjbl1 * 100) / 100).toFixed(2);
            bzjbl += bzjbl2;
        }
    });

}

//-----------------------------------------------------------------------------------------------------------
//数字金额大写转换(可以处理整数,小数,负数)
//金额转大写
mstform.getItem('atm').addListener('change', function() {
    var atm = mstform.getItem('atm').getValue();
    mstform.getItem('at').setValue(dealBigMoney(atm));
});

function dealBigMoney(n) {
    var fraction = ['角', '分'];
    var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
    var unit = [
        ['元', '万', '亿'],
        ['', '拾', '佰', '仟']
    ];
    var head = n < 0 ? '欠' : '';
    n = Math.abs(n);

    var s = '';

    for (var i = 0; i < fraction.length; i++) {
        s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
    }
    s = s || '整';
    n = Math.floor(n);

    for (var i = 0; i < unit[0].length && n > 0; i++) {
        var p = '';
        for (var j = 0; j < unit[1].length && n > 0; j++) {
            p = digit[n % 10] + unit[1][j] + p;
            n = Math.floor(n / 10);
        }
        s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
    }
    return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
}

//--------------------------------------------------------------------------------------------------------
format(e.value, 'yyyy-MM-dd') // 调用
    // 转换时间格式
function format(time, format) {
    var t = new Date(time);
    var tf = function(i) {
        return (i < 10 ? '0' : '') + i
    };
    return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function(a) {
        switch (a) {
            case 'yyyy':
                return tf(t.getFullYear());
                break;
            case 'MM':
                return tf(t.getMonth() + 1);
                break;
            case 'mm':
                return tf(t.getMinutes());
                break;
            case 'dd':
                return tf(t.getDate());
                break;
            case 'HH':
                return tf(t.getHours());
                break;
            case 'ss':
                return tf(t.getSeconds());
                break;
        }
    })
}

//-----------------------------------------------------
//附件监听
function attachReturnExt(key, value) {
    var Mstform = Ext.getCmp('p_form_pre_tb_m');
    if (key == 'closeNG3Container') {

        var res = Ext.decode(value);
        var fj_flg = 0;
        if (res.length > 0) {
            for (i = 0; i < res.length; i++) {
                if (res[i].asr_name.indexOf('TB报告') != -1) {
                    fj_flg = fj_flg + 1
                }
            };
        }
        //console.log(fj_flg);
        Mstform.getItem('u_tb_report').setValue(fj_flg);
    } else {
        return;
    }
}

//表体字段变色(改变具体某些字段)
function changeSomeGridColor(mstform, Toolbar, dgrid, colors, type) {//mstform表头,Toolbar菜单栏,dgrid表体, colors颜色, type改变字体还是背景textcolor字体 bgcolor背景
    //颜色不生效可以试试RGB类型的颜色例如rgb(255, 190, 200)
    var dstore = dgrid.store;
    //数据加载完成触发
    mstform.on('dataready', function () {
        changeSomeColor(dgrid, colors, type);
        //改变颜色,并解决点击通用帮助时颜色被清除
        var statusArr = ['edit', 'add', 'remove', 'cellclick', 'update', 'change'];///定义监听单据体编辑状态数组
        for (var j = 0; j < statusArr.length; j++) {
            dgrid.addListener(statusArr[j], function (editor, e) { //监听单据体编辑状态,edit-编辑,add-增行,remove-删行,cellclick-点击,update-值变化
                changeSomeColor(dgrid, colors, type);//dgrid表体, colors颜色, type改变字体还是背景
            });
        }
        var statusArr_1 = ['add', 'remove'];///定义监听单据体编辑状态数组
        for (var k = 0; k < statusArr_1.length; k++) {//监听单据体编辑状态add-增行,remove-删行
            dstore.on(statusArr_1[k], function (store, records, index, eOpts) {
                changeSomeColor(dgrid, colors, type);//dgrid表体, colors颜色, type改变字体还是背景
            });
        }
        Toolbar.get('deleterow').on('click', function () {
            changeSomeColor(dgrid, colors, type);//dgrid表体, colors颜色, type改变字体还是背景
        });
    });

    function changeSomeColor(dgrid, colors, type) {
        var gridCount = dgrid.getStore().getRange(0, dstore.getCount() - 1);
        for (var i = 0; i < gridCount.length; i++) {
            //判断变色条件(根据业务需求变更)
            //var flg = gridCount[i].get('amt');
            var flg = '1';
            if (flg == '1') {
                //旧方法已弃用
                //var trs = document.getElementsByClassName('x-grid-data-row');
                // for (var h = 0; h < aa; h++) {
                //     trs[i].children[13].children[0].style.backgroundColor = 'rgb(50, 205, 50)';
                //     trs[i].children[16].children[0].style.backgroundColor = 'rgb(255, 190, 200)';
                //     // trs[i].style.backgroundColor = "rgb(255, 190, 200)";
                // }

                //定义元素每行的字段元素	
                var corlorChange = document.getElementById(dgrid.view.el.id + '-record-' + dstore.data.items[i].internalId).getElementsByTagName("div");
                if (type == 'textcolor') {
                    //改变字体颜色      
                    corlorChange[3].style.color = colors;//具体第几个字段需要变色(根据需求进行变更)
                    corlorChange[7].style.color = colors;//具体第几个字段需要变色(根据需求进行变更)
                } else if (type = 'bgcolor') {
                    //改变背景颜色      
                    corlorChange[7].style.backgroundColor = colors;//具体第几个字段需要变色(根据需求进行变更)
                    corlorChange[10].style.backgroundColor = colors;//具体第几个字段需要变色(根据需求进行变更)
                }
            }
        }
    }

}

//表体字段变色(改变整行字段)------------st
function changeAllGridColor(mstform, Toolbar, dgrid, colors, type) {//mstform表头,Toolbar菜单栏,dgrid表体, colors颜色, type改变字体还是背景textcolor字体 bgcolor背景
    //颜色不生效可以试试RGB类型的颜色例如rgb(255, 190, 200)
    var dstore = dgrid.store;
    //数据加载完成触发
    mstform.on('dataready', function () {
        changeAllColor(dgrid, colors, type);
        //改变颜色,并解决点击通用帮助时颜色被清除
        var statusArr = ['edit', 'add', 'remove', 'cellclick', 'update', 'change'];///定义监听单据体编辑状态数组
        for (var j = 0; j < statusArr.length; j++) {
            dgrid.addListener(statusArr[j], function (editor, e) { //监听单据体编辑状态,edit-编辑,add-增行,remove-删行,cellclick-点击,update-值变化
                changeAllColor(dgrid, colors, type);//dgrid表体, colors颜色, type改变字体还是背景
            });
        }
        var statusArr_1 = ['add', 'remove'];///定义监听单据体编辑状态数组
        for (var k = 0; k < statusArr_1.length; k++) {//监听单据体编辑状态add-增行,remove-删行
            dstore.on(statusArr_1[k], function (store, records, index, eOpts) {
                changeAllColor(dgrid, colors, type);//dgrid表体, colors颜色, type改变字体还是背景
            });
        }
        Toolbar.get('deleterow').on('click', function () {
            changeAllColor(dgrid, colors, type);//dgrid表体, colors颜色, type改变字体还是背景
        });
    });
    function changeAllColor(dgrid, colors, type) {
        for (var i = 0; i < dstore.getCount(); i++) {
            判断变色条件(根据业务需求变更)    
            //var flg = dstore.getAt(i).get('u_flg');
            var flg = '1';
            if (flg == '1') {
                //定义元素每行的字段元素	
                var corlorChange = document.getElementById(dgrid.view.el.id + '-record-' + dstore.data.items[i].internalId).getElementsByTagName("div");
                //定义每行有多少字段	
                var count = document.getElementById(dgrid.view.el.id + '-record-' + dstore.data.items[i].internalId).getElementsByTagName("div").length;
                if (type == 'textcolor') {
                    //改变字体颜色      
                    for (var h = 0; h < count; h++) {
                        corlorChange[h].style.color = colors;
                    }
                } else if (type = 'bgcolor') {
                    //改变背景颜色      
                    for (var h = 0; h < count; h++) {
                        corlorChange[h].style.backgroundColor = colors;
                    }
                }
            }
        }
    }
}
//表体字段变色(改变整行字段)------------end

//----------------
//java的url链接拆分
//String params = url.substring(url.indexOf("?") + 1);
//Map<String, String> split = Splitter.on("&").withKeyValueSeparator("=").split(params);
//String wfpiid = split.get("wfpiid");


//js批量生成json数据  参考网址https://blog.csdn.net/cdming/article/details/130051542
var YearSelect = {};
var Year = 2014;
var DateOption;
for (var i = Year; i < Year + 12; i++) {
    DateOption = { 'Year': i, 'Month': i - Year + 1 };
    //alert(DateOption.Year) 
    YearSelect[i] = DateOption;
}

//屏蔽元素的点击事件,使元素变为只读 参考网址:http://www.mufengzs.cn/post/24036.html
document.getElementById('webEditorPanel-body').style.pointerEvents = 'none';

//加减乘除方法 --浮点型字段类型数据计算后可能失真
function GcDiv(arg1, arg2) {
    if (arg2 == 0) return arg2;
    var t1 = 0,
        t2 = 0,
        r1,
        r2;
    try {
        t1 = arg1.toString().split(".")[1].length;
    } catch (e) {
    }
    try {
        t2 = arg2.toString().split(".")[1].length;
    } catch (e) {
    }
    // with (Math) {
    r1 = Number(arg1 == null ? 0 : arg1.toString().replace(".", ""));
    r2 = Number(arg2 == null ? 1 : arg2.toString().replace(".", ""));
    return r1 / r2 * Math.pow(10, t2 - t1);
    // }
}

function GcMul(arg1, arg2) {
    var m = 0,
        s1 = arg1 == null ? "0" : arg1.toString(),
        s2 = arg2 == null ? "0" : arg2.toString();
    try {
        m += s1.split(".")[1].length;
    } catch (e) {
    }
    try {
        m += s2.split(".")[1].length;
    } catch (e) {
    }
    return (
        Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
    );
}


/**
 ** 加法函数,用来得到精确的加法结果
 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
 ** 调用:GcAdd(arg1,arg2)
 ** 返回值:arg1加上arg2的精确结果
 **/

function GcAdd(arg1, arg2) {
    var r1, r2, m, c;
    try {
        r1 = arg1.toString().split(".")[1].length;
    } catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    } catch (e) {
        r2 = 0;
    }
    c = Math.abs(r1 - r2);
    m = Math.pow(10, Math.max(r1, r2));
    if (c > 0) {
        var cm = Math.pow(10, c);
        if (r1 > r2) {
            arg1 = Number(arg1.toString().replace(".", ""));
            arg2 = Number(arg2.toString().replace(".", "")) * cm;
        } else {
            arg1 = Number(arg1.toString().replace(".", "")) * cm;
            arg2 = Number(arg2.toString().replace(".", ""));
        }
    } else {
        arg1 = Number(arg1 == null ? 0 : arg1.toString().replace(".", ""));
        arg2 = Number(arg2 == null ? 0 : arg2.toString().replace(".", ""));
    }
    return (arg1 + arg2) / m;
}

/**
 ** 减法函数,用来得到精确的减法结果
 ** 说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。
 ** 调用:GcSub(arg1,arg2)
 ** 返回值:arg1减去arg2的精确结果
 **/
function GcSub(arg1, arg2) {
    var r1, r2, m, n;
    try {
        r1 = arg1.toString().split(".")[1].length;
    } catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    } catch (e) {
        r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2)); //动态控制精度长度
    n = r1 >= r2 ? r1 : r2;
    return Number((((arg1 == null ? 0 : arg1) * m - (arg2 == null ? 0 : arg2) * m) / m).toFixed(n));
}

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值