export default {
    bill: null,
    param: null,
    execute: function (bill, param) {
        this.bill = bill
        this.param  = param
        if (GMS && GMS.showDetailAction) {//查看详情,则直接关闭弹出
            GMS.vbus.$emit('closeModal');
            return;
        }
        if (param) {
            bill.setControlsSate(param["_control_name_"], 'enable',false);
            bill.runFormulaCheckData(param.param, function (msg) {
                if (msg.length == 0) {//缓存数据
                    let obj = bill.getBuillData();
                    obj.billDefine = param.define;
                    this.execuFormula(obj, param);//点击确定,执行公式
                } else {
                    GMS.$http.post(`/baseData/data/list`, {
                        pagination: false,
                        tableName: "MD_BILLSTATE_AUDIT",
                        code: '1',
                    }).then((res) => {
                        bill.setControlsSate(param["_control_name_"], 'enable',true);
                        if (res.data.rs.code == 0) {
                            // 给单据赋新的状态值
                            bill.getMasterData().setValue('BILLSTATEAUDIT',res.data.rows[0]);
                        }
                    });
                    GAMS.Common.messagePrompt(msg);
                }
                GMS.$hideContainer.$Spin.hide();
            }.bind(this));
        } else {
            GAMS.Common.messagePrompt('缺少参数');
        }
    },
    execuFormula(buidData, param) {
        let postData = {
            data: buidData
        }
        if (!param.param.actions) {
            return
        }
        let url = `/gms/bill/executed/${param.define}/${param.param.actions}?transmission=total`;
        GMS.$http.post(url, JSON.stringify(postData), {
            headers: {
                post: {
                    "Content-Type": "application/json",
                }
            }
        }).then(response => {
            // bill.setControlsSate(param["_control_name_"], 'enable',true);
            let data = response.data;
            if (data.code == 0) {
                GMS.vbus.$emit('cacheEcho', buidData);//正常情况回去给子表赋值
            }else if(data.code == -1 && data.message){
                let stringOne = data.message.split(':')[1];
                let stringResult = stringOne.split(';')[0]
                let msg = stringResult.split('@');
                // TODO 仍需解决 包含'@'字符的非CheckBudgetControl公示报错msg 以及else分支的按钮状态问题
                if(stringResult.indexOf('@') === -1){
                   GAMS.Common.messagePrompt(stringResult)
                    if (this.bill&&this.param) {
                        this.bill.setControlsSate(this.param["_control_name_"], 'enable',true);
                    }
                }else{
                    if(msg[0]== 1 ){
                       GAMS.Common.messagePrompt(msg[1]);
                    }else{
                        GMS.$hideContainer.$Modal.confirm({
                            title: '信息提示',
                            content: msg[1],
                            onOk: () => {
                                GMS.vbus.$emit('cacheEcho', buidData);//正常情况回去给子表赋值
                            },
                            onCancel: () => {}
                        });
                    }
                }
            }
        }).catch(resp=>{
            // bill.setControlsSate(param["_control_name_"], 'enable',true);
            console.error("cacheSaveAction:接口调用失败 resp:"+ resp)
            GAMS.Common.messagePrompt('单据保存失败..');
        })
    }
}