import Api from '~/service/Api';
import commonFunctions from '~/mixin/commonFunctions.js';
import Utils from "~/utils"
import BigNumber from "bignumber.js";

export default {
  mixins: [commonFunctions],
  methods: {

    async tabClick (tab) {
      if (this.isInDisplay) {
        return;
      }
      let name = tab.name;
      if('ovwp|detp|goods|docs|adcptab|invchkpan'.indexOf(name) >= 0){
        this.$store.commit("setMode", "display")
      }else{
        this.$store.commit("setMode", "normal")
      }
      switch (name) {
        case 'liacombo':
         this.queryCbbByCcvData();
         this.querylialist();
          break;
        case 'cbsp':
          this.getCbsTyp();
          this.queryCbbData();
          break;
        case 'cbep':
          this.queryCbeData();
          break;
        case 'fep':
          this.queryFepData();
          this.queryFcpData();
          break;
        case 'trnp':
          this.queryTrnData();
          break;
        case 'smhp':
          this.querySmhData();
        default:
          return;
      }
    },
   //保证金数据查询
    async queryCbbByCcvData(){
      let rtnmsg = await Api.post('/public/xxdinf/queryCbbByCcv', { objtyp: this.obj.objtyp, objinr: this.obj.objinr});
      if(rtnmsg.respCode  == SUCCESS){
        if(rtnmsg.data.ccvamt){
        this.model.infcon.ccvamt = rtnmsg.data.ccvamt;
       }
       if(rtnmsg.data.ccvresamt){
        this.model.infcon.ccvresamt = rtnmsg.data.ccvresamt;
      }
      if(rtnmsg.data.ccvtotalamt){
        this.model.infcon.ccvtotamt = rtnmsg.data.ccvtotalamt.amt;
      }
      this.ccvtableData = rtnmsg.data.ccvlst;
      }
    },
    //查询表外数据
    async querylialist(){
      let rtnmsg = await Api.post('/public/xxdinf/queryLiasum', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,pntinr:this.obj.pntinr,pnttyp:this.obj.pnttyp});
      if(rtnmsg.respCode  == SUCCESS){
        this.liatableData = rtnmsg.data
      }
    },
    //余额信息记录类型初始化
    async getCbsTyp() {
      let rtnmsg = await Api.post('/public/xxdinf/getCbbTyp', {objtyp: this.obj.objtyp,objinr: this.obj.objinr});    
      if (rtnmsg.respCode === SUCCESS) {
        this.cbbtyp = rtnmsg.data;
      }
    },
    //余额信息查询
    async queryCbbData(){
      let rtnmsg = await Api.post('/public/xxdinf/queryCbbByCbc', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,cbc:this.model.infcon.cbctxt});
      if(rtnmsg.respCode == SUCCESS){
        this.cbstableData = rtnmsg.data
      }
    },

    changeCbsData(cbsData){
      this.cbstableData = cbsData
    },
    //发生额信息查询
    async queryCbeData(){
     
      let rtnmsg = await Api.post('/public/xxdinf/queryCbe', {objtyp:this.obj.objtyp,objinr:this.obj.objinr});
      if(rtnmsg.respCode  == SUCCESS){
        this.cbetableData = rtnmsg.data
      }
     
    },
    async queryCbbDataInCbb(){
      let rtnmsg = await Api.post('/public/xxdinf/queryCbbByCbc', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,cbc:this.model.infcon.cbctxt});
      if(rtnmsg.respCode == SUCCESS){
        this.$emit("changeCbsData",rtnmsg.data)
      }
     
    },

  
    //费用信息查询
    async queryFepData(){
     
      let rtnmsg = await Api.post('/public/xxdinf/queryFep', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,feecod:this.model.infcon.fepfeecod,fepdsp:this.model.infcon.fepdsp});
      if(rtnmsg.respCode  == SUCCESS){
        this.feptableData = rtnmsg.data
      }
    
    },
    async queryFepDataInFep(){
     
      let rtnmsg = await Api.post('/public/xxdinf/queryFep', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,feecod:this.model.infcon.fepfeecod,fepdsp:this.model.infcon.fepdsp});
      if(rtnmsg.respCode  == SUCCESS){
        this.$emit("changeFepData",rtnmsg.data)
      }
    
    },
    changeFepData(fepData){
      this.feptableData = fepData
    },

    async queryFcpData(){
      let rtnmsg = await Api.post('/public/xxdinf/queryFcp', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,fcpdsp:this.model.infcon.fcpdsp});
      if(rtnmsg.respCode  == SUCCESS){
        this.fcptableData = rtnmsg.data
      }
    },
    async queryFcpDataInFcp(){
      let rtnmsg = await Api.post('/public/xxdinf/queryFcp', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,fcpdsp:this.model.infcon.fcpdsp});
      if(rtnmsg.respCode  == SUCCESS){
        this.$emit("changeFcpData",rtnmsg.data)
      }
      
    },
    changeFcpData(fcpData){
      this.fcptableData = fcpData
    },

    async queryTrnData(){
      let rtnmsg = await Api.post('/public/xxdinf/queryTrn', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,subobjtyp:this.obj.subobjtyp,chksubcon:this.model.infcon.chksubcon,chktrnsta:this.model.infcon.chktrnsta});
      if(rtnmsg.respCode  == SUCCESS){
        this.trntableData = rtnmsg.data
      }
    },

    async queryTrnDataInTrn(){
      let rtnmsg = await Api.post('/public/xxdinf/queryTrn', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,subobjtyp:this.obj.subobjtyp,chksubcon:this.model.infcon.chksubcon,chktrnsta:this.model.infcon.chktrnsta});
      if(rtnmsg.respCode  == SUCCESS){
        this.$emit("changeTrnData",rtnmsg.data) 
      }

    },

    changeTrnData(trnData){
      this.trntableData = trnData
    },
    calcName() {
			this.model.gidgrp.cbs.mac.amt = this.model.gidgrp.cbs.max.amt;
			this.model.gidgrp.cbs.opn1.cur = this.model.gidgrp.cbs.max.cur;
			this.model.gidgrp.cbs.mac.cur = this.model.gidgrp.cbs.max.cur;
			this.model.gidgrp.cbs.max2.cur = this.model.gidgrp.cbs.max.cur;
			this.model.gidgrp.cbs.opn2.cur = this.model.gidgrp.cbs.max.cur;
			this.model.gidgrp.cbs.total2.cur = this.model.gidgrp.cbs.max.cur;
			this.model.gidgrp.cbs.total.cur = this.model.gidgrp.cbs.max.cur;
			// if (this.model.gitp.aamp.addamtflg === "X") {
			//     this.model.gidgrp.cbs.opn1.amt = parseFloat(this.model.gidgrp.cbs.max.amt) + parseFloat(this.model.gidgrp.cbs.max2.amt);

			// } else {
			this.model.gidgrp.cbs.opn1.amt = this.model.gidgrp.cbs.max.amt
			// }
			if (this.model.gidgrp.cbs.max2.amt == "") {
				this.model.gidgrp.cbs.total.amt = parseFloat(this.model.gidgrp.cbs.max.amt);
			} else {
				this.model.gidgrp.cbs.total.amt = parseFloat(this.model.gidgrp.cbs.max.amt) + parseFloat(this.model.gidgrp.cbs.max2.amt);
			}
			let model = this.model;
			this.model.gidgrp.rec.nam = model.gidgrp.cbs.max.cur + " " +
				model.gidgrp.cbs.max.amt + " " +
				(model.gidgrp.rec.stacty || "") + "." +
				model.gidgrp.apl.pts.nam
			// this.onCfaCurDate()
		},
    async getXxdDataByInr(obj){
      let trnUrl = ''
      switch (obj.objtyp){
        case 'LID':
        case 'BRD':
        case 'LED':
        case 'BED':
        case 'LTD':
        case 'BTD':
          trnUrl = '/Lc/litsel'
          break;
        case 'DID':
        case 'BDD':
        case 'DED':
        case 'BFD':
          trnUrl = '/Domlc/ditsel'
          break;
        case 'TRD':
        case 'BPD':
        case 'DFD':
          trnUrl = '/Financing/trtsel'
          break;
        case 'BCD':
        case 'BOD':
        case 'CCD':
          trnUrl = '/Collection/bctsel'
          break;
        case 'CPD':
          trnUrl = '/Remittance/cptsel'
          break;
        case 'JSD':
        case 'MCD':
          trnUrl = '/Derivative/mctsel'
          break;
        default:
          break;
      }
      let res = await Api.post( trnUrl + '/selectXxdByPrimaryKey', {...obj});
      if (res.respCode === SUCCESS) {
       Utils.copyValueFromVoData(this.model,res.data)
       let ignoreModFlg = !this.isInDisplay && res.data.trnInfo && res.data.trnInfo.sptHldflg;
       if (this.model.setmod) {
        Utils.copyValueFromVoData(this.model.setmod, res.data, ignoreModFlg);
        Utils.copyValueFromVoData(this.model.setmod, res.data.setmod, ignoreModFlg);
        }
       this.model.limpan.gjownref = this.model.limmod.ownref ? this.model.limmod.ownref : this.model[obj.objtyp.toLowerCase() + 'grp'].rec.ownref;
       this.model.limpan.branch = this.model[obj.objtyp.toLowerCase() + 'grp'].rec.bchkeyinr;
       this.model.cshpct = this.model[obj.objtyp.toLowerCase() + 'grp'].rec.cshpct
       this.smallToBig();
      if(this.model[obj.objtyp.substr(0,2).toLowerCase() + 'tp'].usr){
       this.model[obj.objtyp.substr(0,2).toLowerCase() + 'tp'].usr.extkey = this.model[obj.objtyp.toLowerCase() + 'grp'].rec.ownusr;
      }
       if(obj.objtyp == 'TRD'){
          this.model.bcdgrp.rec.ownref = this.model.trdgrp.rec.pntref
          this.model.brdgrp.rec.ownref = this.model.trdgrp.rec.pntref
        }
       }  
     },  


     changeVal(tabVal){
       this.tabVal = tabVal
     },

    //  async queryTrnDetail(row){
      
    //   let rtnmsg = await Api.post('/business/gitsel/queryTrnDetail', {trninr:row.inr});
    //   if(rtnmsg.respCode  == SUCCESS){
    //     this.model.infcon.trn = rtnmsg.data.trn
    //     this.model.infcon.trs = rtnmsg.data.trs
    //     this.smhtableDataT = rtnmsg.data.smhLst
    //     this.trstableData = rtnmsg.data.trsLst
    //   }     
    //  },

     async  trnTableDblRow(row){
      let rtnmsg = await Api.post('/public/xxdinf/queryTrnDetail', {trninr:row.inr});
      if(rtnmsg.respCode  == SUCCESS){
        this.model.infcon.trn = rtnmsg.data.trn
        this.model.infcon.trs = rtnmsg.data.trs
        this.$emit("changeData",rtnmsg.data.smhLst,rtnmsg.data.trsLst)
      } 
      this.model.trnShow = true;
      this.$emit("changeVal",'trnp0')
    },

    changeData(smhtableDataT,trstableData){
      this.smhtableDataT = smhtableDataT;
      this.trstableData = trstableData;
    },
    
    async querySmhData(){
      let rtnmsg = await Api.post('/public/xxdinf/querySmh', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,cortyp:this.model.infcon.smhcortyp,datfrom:this.model.infcon.smhdatfrom,datto:this.model.infcon.smhdatto,dir:this.model.infcon.smhdir,chktrn:this.model.infcon.chktrn});
      if(rtnmsg.respCode  == SUCCESS){
        this.smhtableData = rtnmsg.data
      }
    },

    async querySmhDataInSmh(){
      let rtnmsg = await Api.post('/public/xxdinf/querySmh', {objtyp:this.obj.objtyp,objinr:this.obj.objinr,cortyp:this.model.infcon.smhcortyp,datfrom:this.model.infcon.smhdatfrom,datto:this.model.infcon.smhdatto,dir:this.model.infcon.smhdir,chktrn:this.model.infcon.chktrn});
      if(rtnmsg.respCode  == SUCCESS){
        this.$emit("changeSmhData",rtnmsg.data) 
      }

    },

    changeSmhData(smhData){
      this.smhtableData = smhData
    },

   

    async showMsg(row){
      this.$refs.msgView.fileViewDispaly(-1,{smhinr:row.inr})
    },

    async getdbCode(codeType, uil, codeNam) {
      let params = {
        codeType: codeType,
        uil: uil ? uil : 'EN'
      }
      let rtnmsg = await Api.post("/manager/dic/listDicInfo", params)
      if (rtnmsg.respCode === SUCCESS) {
        let curList = rtnmsg.data.map(item => ({
          value: item.codeValue,
          label: item.codeName
        }));
        this.model.dbCodes[codeNam] = curList
      }
    },
    getCodelabel(value,codenam) {
      const codeobj = this.model.dbCodes[codenam].find(obj => obj.value === value)
			return codeobj ? codeobj.label : value;
    },
    async handleSearch1() {
   
      const loading = this.loading();
      Api.post("/business/inflsb/queryInflsb1", {
        ...this.model
      }).then(rtnmsg => {
        loading.close();
      if (rtnmsg.respCode == SUCCESS) {
        this.feptableData1 = rtnmsg.data;
      }
    })
  
    },

    // 将数字金额转换为大写金额
		smallToBig() {
			var money = this.model.didgrp.cbs.nom1.amt;
			if(isNaN(new BigNumber(money)) ){
				return
			}
			var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字
			var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
			var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
			var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
			var cnInteger = "整"; //整数金额时后面跟的字符
			var cnIntLast = "元"; //整数完以后的单位
			var integerNum; //金额整数部分
			var decimalNum; //金额小数部分
			//输出的中文金额字符串
			var chineseStr = "";
			var parts; //分离金额后用的数组,预定义
			if (money == "") {
				this.model.ditp.amt = "";
				return;
			}

			if (new BigNumber(money) == 0) {
				chineseStr = cnNums[0] + cnIntLast + cnInteger;
				this.model.ditp.amt = "人民币" + chineseStr;
				return;
			}
			//转换为字符串
			integerNum = money.substr(0, money.length - 3);
			decimalNum = money.substr(money.length - 2);
			//获取整型部分转换
			if (parseInt(integerNum, 10) > 0) {
				var zeroCount = 0;
				var IntLen = integerNum.length;
				for (var i = 0; i < IntLen; i++) {
					var n = integerNum.substr(i, 1);
					var p = IntLen - i - 1;
					var q = p / 4;
					var m = p % 4;
					if (n == "0") {
						zeroCount++;
					} else {
						if (zeroCount > 0) {
							chineseStr += cnNums[0];
						}
						//归零
						zeroCount = 0;
						chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
					}
					if (m == 0 && zeroCount < 4) {
						chineseStr += cnIntUnits[q];
					}
				}
				chineseStr += cnIntLast;
			}
			//小数部分
			if (decimalNum != "") {
				var decLen = decimalNum.length;
				for (var i = 0; i < decLen; i++) {
					var n = decimalNum.substr(i, 1);
					if (n != "0") {
						chineseStr += cnNums[Number(n)] + cnDecUnits[i];
					}
				}
			}
			if (chineseStr == "") {
				chineseStr += cnNums[0] + cnIntLast + cnInteger;
			} else if (decimalNum == "" || /^0*$/.test(decimalNum)) {
				chineseStr += cnInteger;
			}
			this.model.ditp.amt = "人民币" + chineseStr;
			this.defaultMaxamt();
		},

  },
};