import Api from '~/service/Api';
import Utils from "~/utils";
import Pts from '~/components/business/commonModel/Pts';
import commonFunctions from '~/mixin/commonFunctions.js';
import buildFn from "../event/buildCommons.js";
import BigNumber from "bignumber.js";
import commonDepend from "~/mixin/commonDepend";


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

        //获取信用证编号
        async onLetpButgetref(transName) {
            let params = {
                businessType: "LC",
                lettyp: "LC",
                transName:transName,
                ptainr: this.model.ledgrp.ben.pts.ptainr,
                ownref: this.model.ledgrp.rec.ownref,
            };
            const loading = this.loading();
            let res = await Api.post("/Lc/ref/led", params);
            if (res.respCode == SUCCESS) {
                loading.close();
                this.model.ledgrp.rec.ownref = res.data;
            } else {
                loading.close();
            }
        },

        apprulChange(v) {
            if (v !== 'OTHR') {
                this.model.ledgrp.rec.apprultxt = ''
            }
        },

        //指定银行
        async avbwthFlg() {
            switch (this.model.ledgrp.rec.avbwth) {
                // Advising bank,adv
                case "A":
                    // Utils.copyValueFromVoData(this.model.ledgrp.avb.pts, this.model.ledgrp.adv.pts);
                    let ptsptaList = Utils.formatPtspta(this.model.ledgrp, this.buildPtspta);

                    let data = {
                        ptsList:ptsptaList,
                        avbwth: this.model.ledgrp.rec.avbwth,
                    };
                    const loading = this.loading();
                    let res = await Api.post("/Lc/letopn/avbwth", data);
                    loading.close();
                    if (res.respCode === SUCCESS) {
                        Utils.copyValueFromVoData(this.model.ledgrp.avb.pts, res.data.pts);
                    }
                    break;

                // Confirming Bank,con
                case "C":
                    Utils.copyValueFromVoData(this.model.ledgrp.avb.pts, this.model.ledgrp.con.pts);
                    break;

                // Issuing Bank,iss
                case "I":
                    Utils.copyValueFromVoData(this.model.ledgrp.avb.pts, this.model.ledgrp.iss.pts);
                    break;

                //Reimbursing Bank,rmb
                case "R":
                    Utils.copyValueFromVoData(this.model.ledgrp.avb.pts, this.model.ledgrp.rmb.pts);
                    break;

                //Specified Bank,
                case "S":
                    this.model.ledgrp.avb.pts = new Pts().data;
                    break;

                //Transferring Bank, trb
                case "T":
                    Utils.copyValueFromVoData(this.model.ledgrp.avb.pts, this.model.ledgrp.trb.pts);
                    break;

                //Any Bank, no role
                case "O":
                    // if any bank is empty or is not modified, then default value is 'Any Bank'
                    if(this.model.ledgrp.blk.avbwthtxt ===''||(this.model.ledgrp.blk.modifySet && !this.model.ledgrp.blk.modifySet.includes('avbwthtxt'))){
                        this.model.ledgrp.blk.avbwthtxt = 'Any Bank';
                    }

                    break;
                default:
                    this.model.ledgrp.avb.pts = new Pts().data;
                    break;


            }


            // 如果avb被赋值的话,设置avb角色为AVB
            if(this.model.ledgrp.avb.pts.ptainr!==''){
                this.model.ledgrp.avb.pts.rol ="AVB";
            }
        },

        openAddAmount(val) {
            if (val === '' && !((new BigNumber(this.model.ledgrp.cbs.max2.amt).comparedTo(new BigNumber("0"))==0) && this.model.ledgrp.blk.addamtcov === '')) {
                this.$confirm('是否确定要删除此合同的附加金额?', '提示', {
                    confirmButtonText: '是',
                    cancelButtonText: '否',
                    type: 'warning',
                    showClose: false
                }).then(() => {//yes的执行在这里写
                    this.model.letp.addamtflg = ''

                    this.model.ledgrp.cbs.max2.amt ='0.00';
                    this.model.ledgrp.blk.addamtcov = '';
                    this.customRemoveModify(this.model.ledgrp.blk,"addamtcov");
                    this.$message({
                        type: 'success',
                        message: '删除成功!'
                    });
                }).catch(() => {//No的功能在这里写
                    this.model.letp.addamtflg = 'X'
                    this.$message({
                        type: 'info',
                        message: '已取消'
                    });
                });
            }
        },

        async avbbyChange() {

            // mixdet为disable时,清除其内容
            if(this.model.ledgrp.rec.avbby != 'M'){
                this.model.ledgrp.blk.mixdet = '';
            }

            // draft at为disable时,清除draftat内容,同时清除drawee
            if(  this.model.ledgrp.rec.avbby == 'D' ||
                this.model.ledgrp.rec.avbby == 'M' ||
                this.model.ledgrp.rec.avbby == ''){
                this.model.ledgrp.blk.dftat = '';

                // 清除drawee的内容
                this.model.ledgrp.drw.pts = new Pts().data;
            }

            // defdet 为disable时,清除其内容
            if(this.model.ledgrp.rec.avbby != 'D' &&
                this.model.ledgrp.rec.avbby != 'N'){
                this.model.ledgrp.blk.defdet = '';
            }

            // by payment时,tenor day为disable,清空tenor day
            if(this.model.ledgrp.rec.avbby == 'P'){
                this.model.ledgrp.rec.tenmaxday=0;
            }
        },

        nom1curChange(){
            this.changeBlkAddamtcov();
        },


        // 当max2 amt改变时,同时拼接addamtcov的值
        changeBlkAddamtcov(){

            // if addmatcov not modified, then automatic connect it.
            if(!this.model.ledgrp.blk.modifySet
                || !(this.model.ledgrp.blk.modifySet!=null&&this.model.ledgrp.blk.modifySet.includes("addamtcov"))){

                if(new BigNumber(this.model.ledgrp.cbs.max2.amt).comparedTo(new BigNumber("0"))>0){
                    this.model.ledgrp.cbs.max2.cur = this.model.ledgrp.cbs.nom1.cur;

                    let _currency = this.model.ledgrp.cbs.max2.cur;
                    let _opn2amt =  this.model.ledgrp.cbs.max2.amt;
                    if (_currency === "KRW" || _currency === "JPY") {
                        _opn2amt = new BigNumber(_opn2amt).toFixed(0);
                    }else {
                        _opn2amt = new BigNumber(_opn2amt).toFixed(2);
                    }
                    this.model.ledgrp.blk.addamtcov = _currency + " " +_opn2amt;
                }
            }
        },

        // 如果adv,con,iss,rmb,trb的值有变动,同时更新avb的值
        async bankChanged(){
            this.avbwthFlg();
        },


        // 如果a2b的值被清空,则清空cnfins的值
        async a2bBankChange(){
            if(this.model.ledgrp.a2b.pts.extkey===''){
                this.model.ledgrp.rec.cnfins = ''
            }
        },

        calculateMaxamt(){
            if(this.model.ledgrp.rec.nomtop==null || this.model.ledgrp.rec.nomtop===''){
                this.model.ledgrp.rec.nomtop = 0;
            }

            if(this.model.ledgrp.rec.nomtop==null || this.model.ledgrp.rec.nomtop===''){
                this.model.ledgrp.rec.nomtop = 0;
            }
            let _maxamt =new BigNumber(this.model.ledgrp.cbs.nom1.amt).multipliedBy(new BigNumber(1).plus(new BigNumber(this.model.ledgrp.rec.nomtop).dividedBy(new BigNumber(100))) ) ;
            let _currency = this.model.ledgrp.cbs.max.cur;
            // 如果是 韩元或者日元,小数位不保留,其它保留两位小数
            // TD上,nom1:611.23,tolerance-top:2,maxamt 623.4546,letnot最后是623.46,letopn 最后是623.45,暂时以letopn为准
            if (_currency === "KRW" || _currency === "JPY") {
                _maxamt = _maxamt.toFixed(0);
            }else {
                _maxamt = _maxamt.toFixed(2);
            }
            this.model.ledgrp.cbs.max.amt = _maxamt;

            // 默认将将max的值赋值给opn1
            this.model.ledgrp.cbs.opn1.amt = this.model.ledgrp.cbs.max.amt;
        },

        nomtopChange(){
            let exp=/^\d+$/;
            if(!exp.test(this.model.ledgrp.rec.nomtop)){
                this.model.ledgrp.rec.nomtop = 0;
            }else{
                this.model.ledgrp.rec.nomtop = Number(this.model.ledgrp.rec.nomtop);
            }
            this.calculateMaxamt();
        },

        nomtonChange(){
            let exp=/^\d+$/;
            if(!exp.test(this.model.ledgrp.rec.nomton)){
                this.model.ledgrp.rec.nomton = 0;
            }else{
                this.model.ledgrp.rec.nomton = Number(this.model.ledgrp.rec.nomton);
            }
            //this.calculateMaxamt();
        },


        // 当iss改变时,如果stacty没有哦被修改过,则默认将iss所在地区的赋值给stacty字段
        changeStacty() {
            // ledgrp.rec.stacty not modified, when change iss, change the stacty.
            if (!(this.model.ledgrp.rec.modifySet != null && this.model.ledgrp.rec.modifySet.includes("stacty"))) {
                Api.post('/Lc/adr/getloccty', this.model.ledgrp.iss.pts.ptainr).then(res => {
                    if (res.respCode == SUCCESS) {
                        this.model.ledgrp.rec.stacty = res.data;
                    }
                })
            }
            // 同时改变avb的值
            this.bankChanged();
        },

        prepers18Change(){
            let exp=/^\d+$/;
            if(!exp.test(this.model.ledgrp.rec.prepers18)){
                this.model.ledgrp.rec.prepers18 = 0;
            }else{
                this.model.ledgrp.rec.prepers18 = Number(this.model.ledgrp.rec.prepers18);
            }
        },


    },
};