import Api from '~/service/Api';
import commonFunctions from '~/mixin/commonFunctions.js';
import commonDepend from "~/mixin/commonDepend.js";
import BigNumber from 'bignumber.js';
export default {
	mixins: [commonFunctions,commonDepend],
	methods: {
		initEngp (requestParams) {
      return new Promise(async (resolve) => {
        this.model.liaall.buildParams = requestParams
        await this.processLiaall()
        resolve();
      })
    },
		buildEngp (requestParams) {
			let params = {
				...this.model.liaall.buildParams,
        liaallg: this.model.liaall.liaallg,
        liaccvg: this.model.liaccv ? this.model.liaccv.liaccvg : [],
        oldredflg: this.model.liaall.oldredflg,
        tenorSettles: this.model.liaall.tenorSettles,
        tensetamt: this.model.liaall.tensetamt,
        tensetmatdat: this.model.liaall.tensetmatdat,
        tenset: this.model.liaall.tenset,
			};
			return params
		},
		async processLiaall(requestParams) {
      if(requestParams){
        this.model.liaall.buildParams = requestParams
      }
			const loading = this.loading('正在计算表外数据')
			let liaallRequest = this.buildEngp()
			let objtyp = liaallRequest.rec.objtyp;
			liaallRequest.sptinr = this.$route.query.businessInr || ''
			let rtnmsg = await Api.post(`/${this.moduleRouter()}/${objtyp.toLowerCase()}/liaall/assertLiaall`, liaallRequest);
			if (rtnmsg.respCode == SUCCESS) {
				this.model.liaall.liaallg = rtnmsg.data.liaallg
				this.model.liaall.concur = rtnmsg.data.concur
        this.model.liaall.misamt = rtnmsg.data.misamt
        this.model.liaall.oldredflg = rtnmsg.data.oldredflg
        this.model.liaall.acceptLines = rtnmsg.data.acceptLines
        this.model.liaall.tenorSettles = rtnmsg.data.tenorSettles
        this.model.liaall.tensetamt = rtnmsg.data.tensetamt
        this.model.liaall.tensetmatdat = rtnmsg.data.tensetmatdat
        this.model.liaall.tenset = rtnmsg.data.tenset
        this.computeDocamt();
			}
      loading.close();
      return rtnmsg;
    },
    async changeFlag() {
      const loading = this.loading('正在计算表外结算数据')
			let liaall = {
        tenorSettles: this.model.liaall.tenorSettles,
      }
			let objtyp = this.model.liaall.buildParams.rec.objtyp;
			let rtnmsg = await Api.post(`/${this.moduleRouter()}/${objtyp.toLowerCase()}/liaall/calcTenset`, liaall);
			if (rtnmsg.respCode == SUCCESS) {
        this.model.liaall.tensetamt = rtnmsg.data.tensetamt
        this.model.liaall.tensetmatdat = rtnmsg.data.tensetmatdat
        this.model.liaall.tenset = rtnmsg.data.tenset
        this.computeDocamt();
			}
      loading.close();
    },
    computeDocamt(){
      if (this.model.liaall.tenorSettles.length > 0) {
        let modified = false;
        if (this.model.setmod && this.model.setmod.modifySet && this.model.setmod.modifySet.includes('docamt')) {
          modified = true;
        }
        if (!modified && this.model.setmod) {
          this.model.setmod.docamt = this.model.liaall.tensetamt;
          this.model.setmod.doccur = this.model.liaall.concur;
        }
      }
        this.$emit('tenorChange');
    },
    onChangeMatdat(acceptLine, prop) {
      this.customAddModify(acceptLine, prop);
      let cbtpfx = acceptLine.cbtpfx;
      let pteinr = acceptLine.pteinr;
      let liaallg = this.model.liaall.liaallg;
      for (let l of liaallg) {
        if (cbtpfx === l.cbtpfx && pteinr === l.ptegrp.rec.inr) {
          l.matdat = acceptLine.matdat;
          this.customAddModify(l, prop);
        }
      }
      this.$emit('changeMatdat', acceptLine);
    },
    getMattxtflg(){
      let liaallg = this.model.liaall.liaallg;
      let count = 0;
      for (let l of liaallg) {
        if (l.ptegrp.rec.inr != '' && l.matdat !== '' && l.matdat !== null && l.cbtpfx === 'AKZ' && new BigNumber(l.amt).plus(new BigNumber(l.oldamt)) != 0) {
          count = count + 1;
        }
      }
      if (count >= 2) {
        return "X";
      } else {
        return "";
      }
    },
    getAkzMatdat(){
      let matdat;
      let liaallg = this.model.liaall.liaallg;
      for (let l of liaallg) {
        if (l.cbtpfx === 'AKZ' && l.ptegrp.rec.inr === '') {
          matdat = l.matdat;
        }
      }
      return matdat;
    },
	}
}