// 给当前单据指定基础数据类型字段设置默认值，默认指定code基础数据项（当前版本）
export default {
    execute: function () {
        console.log("进入到SetMDFieldValue前端公式");
        if (arguments && arguments[0] && arguments[0][0] && arguments[0][1] && arguments[0][2] && arguments[1]) {
            let selectFileObject = arguments[0][0];
            if (selectFileObject instanceof BillDataNode //判断是否为单据字段（双击选择的参数）
                && selectFileObject.FieldDataType == 10) { // 判断配置字段是否为关联基础数据类型

                let linkId = '';
                if (selectFileObject) {
                    linkId = selectFileObject.FieldTableCode + '.' + selectFileObject.FieldCode;
                }
                let
                    tablename = arguments[0][1].StaticValue//基础数据表名
                    , mdcode = arguments[0][2]//基础数据code
                    , context = arguments[1],
                    fieldName = arguments[0][3].StaticValue
                if (mdcode instanceof StaticDataNode) {
                    mdcode = arguments[0][2].StaticValue
                } else if (mdcode instanceof BillDataNode) {
                    let itemLink = mdcode.FieldTableCode + "." + mdcode.FieldCode
                    mdcode = arguments[0][2].dynamicNodeFactory.methodJson.GetFieldData('', itemLink, '')
                }

                let mdObject = '';
                this.getMDObject(tablename, mdcode, fieldName, function (data) {
                    for (const iterator of data.rows) {
                        mdObject = iterator;
                        if (selectFileObject && selectFileObject.dynamicNodeFactory && selectFileObject.dynamicNodeFactory.methodJson) {
                            selectFileObject.dynamicNodeFactory.methodJson.SetFieldData('', linkId, mdObject, '');
                        }
                        return mdObject;
                    }
                }, function () {
                    GAMS.Common.messagePrompt('SetMDFieldValue公式：获取基础数据错误');
                });

                return mdObject;
            } else {
                GAMS.Common.messagePrompt('第一个参数需要配置关联基础数据的字段');
                return '';
            }

        } else {
            GAMS.Common.messagePrompt('SetMDFieldValue公式：参数配置有误');
            // this.$Message({
            //     message:"error",
            //     type:'error'//type 取值 ‘success’(成功) /warning(警告)/info(消息)/error(错误)/;
            //     })
            return '';
        }
    },
    getResultType: function () {
        return FMR.ConstDataTypes.General;
    },



    getMDObject(name, code, fieldName, callback, errorCallBack) {
        let param={}
        if (fieldName == null) {
             param = {
                "limit": 1,
                "offset": 0,
                "pagination": true,
                "tableName": name,
                "searchKey": code,//按code和name过滤
                "queryDataStructure": "ALL"//返回的接口类型
            }
        } else {
            param = {
                "limit": 1,
                "offset": 0,
                "pagination": true,
                "tableName": name,
                 fieldName: code,
                "queryDataStructure": "ALL"//返回的接口类型
            }
        }
        GMS.$http.post("/baseData/data/list", param).then(data => {

            callback(data.data);
        }).catch((response) => {
            errorCallBack();
        });

    }
}