// 获取单据关联基础数据的指定属性值
export default {
    execute:async function(){
        console.log("进入到基础数据前端公式");
        if(arguments&&arguments[0]&&arguments[0][0]&&arguments[1]){
            let selectFileObject = arguments[0][0],//选择的字段
            _key = arguments[0][0].FieldCode//字段标识
            ,table = arguments[0][0].FieldTableCode//字段所在表
            ,mdFieldName = arguments[0][1].StaticValue//基础数据表中属性标识
            ,context = arguments[1];
            
            if( selectFileObject instanceof BillDataNode //判断是否为单据字段（双击选择的参数）
                && selectFileObject.FieldDataType == 10){ // 判断配置字段是否为关联基础数据类型
   
                let table_Obj = context.getTableType(table);
                let _data = '';
                if(table_Obj && table_Obj.type == "master"){//如果是主表字段
                     //获取字段对应值
                    _data =context.getMasterData().getValue(_key);
                }else{//如果是子表字段
                    //怎样获取光标所在的子表行
                }

                let ret = '';
                // 当字段值中无该属性，调用接口获取完整基础数据
                if(_data){
                    if (!(mdFieldName in _data) && _data.code && _data._type && _data._type.indexOf("datamodel") != -1) {
                        _data = await this.getMDObject(_data._type.split(".")[1], _data.code)
                    }
                    // 二次校验
                    if(!(mdFieldName in _data)){
                        GAMS.Common.messagePrompt('第二个参数配置的标识在基础数据中未找到对应字段');
                    }else{
                        ret = _data[mdFieldName];
                    }
                }
                return ret;   
            }else{
                GAMS.Common.messagePrompt('第一个参数需要配置关联基础数据的字段');
                return '';
            }
            
        }else{
            GAMS.Common.messagePrompt('GetMDValue公式：参数配置有误');
            // this.$Message({
            //     message:"error",
            //     type:'error'//type 取值 ‘success’(成功) /warning(警告)/info(消息)/error(错误)/;
            //     })
            return '';
        }
    },
    getResultType:function(){
        return FMR.ConstDataTypes.General;
    },
    // 获取基础数据
    getMDObject(name, code) {
        let param = {
            "limit": 1,
            "offset": 0,
            "pagination": true,
            "tableName": name,
            "searchKey": code,//按code和name过滤
            "queryDataStructure": "ALL"//返回的接口类型
        }
        return new Promise((resolve, reject) => {
            let promise = GMS.$http.post("/baseData/data/list", param);
            promise
                .then((data) => {
                    if (data.data && data.data.rows && data.data.rows.length > 0) {
                        resolve(data.data.rows[0]);
                    } else {
                        resolve([]);
                    }
                })
                .catch((error) => {
                    resolve([]);
                });
        });
    }
}