import commonFunctions from '~/mixin/commonFunctions.js';
import buildFn from './buildCommons.js';
import Utils from "~/utils"
import Pts from '~/components/business/commonModel/Pts';
import Api from '~/service/Api';
import { cloneDeep } from "lodash";
export default {
  mixins: [commonFunctions],
  methods: {
    qicujeGet() {
      if (!this.model.dnfmod.yewudh) {
        this.$message.warning("请先点击查询按钮,再进行操作!");
        return;
      }
      let params = {
        DATA: {
          "yewudh": this.model.dnfmod.yewudh
        },
        header: {
          "jiaoym": "C017"
        }
      };
      const loading = this.loading('正在请求数据');
      Api.post(`/public/jk/C017`, params).then(res => {
        if (res.header.code == 'AAAAAAA') {
          console.log(res.DATA);
          this.model.dnfmod.qicuje = '0';
          if (res.DATA.lstC017.length > 0) {
            this.model.dnfmod.qicuje = res.DATA.lstC017[0].qcunje;
          }
        } else {
          this.$notify.error({
            title: '错误',
            message: '起存金额Get失败,原因:' + res.header.description
          });
        }
        loading.close();
      });
    },
    ccvpanCurrentChange(params) {
      this.resetDnfmod();
			if(params) {
				this.model.dnfmod.kehuzh = params.acc;
        this.model.dnfmod.cur = params.cur;
        this.handleOperationList();
			}
			this.delZhruzh();
    },
    resetDnfmod(){
      this.model.dnfmod.ccvtyp= ""; //  操作类型		.dnfmod.ccvtyp
      this.model.dnfmod.kehuzh= ""; //  保证金账户		.dnfmod.kehuzh
      this.model.dnfmod.zhruzh= ""; //  本金转入账户		.dnfmod.zhruzh
      this.model.dnfmod.zhqtyp= ""; //  支取类型		.dnfmod.zhqtyp
      this.model.dnfmod.tizamt= ""; //  部分提支金额		.dnfmod.tizamt
      this.model.dnfmod.zhhuye= ""; //  账户余额		.dnfmod.zhhuye
      this.model.dnfmod.zhqucs= ""; //  支取次数		.dnfmod.zhqucs
      this.model.dnfmod.lxzyzh= ""; //  利息转入账户		.dnfmod.lxzyzh
      this.model.dnfmod.yewudh= ""; //  业务代号		.dnfmod.yewudh
      this.model.dnfmod.qicuje= ""; //  起存金额		.dnfmod.qicuje
      this.model.dnfmod.intdsp= ""; //  利息转入账户		.dnfmod.intdsp
      this.model.dnfmod.pridsp= ""; //  本金转入账户		.dnfmod.pridsp
      this.model.dnfmod.qixirq= "";//  起息日     			.dnfmod.qixirq
      this.model.dnfmod.jiluzt= "";//  记录状态
      this.model.dnfmod.cur="";//币种
      this.model.dnfmod.kehzwm="";//客户中文名
      this.model.dnfmod.zhngjg="";//账务机构号
      this.model.dnfmod.jixiff="";//计息方法
      this.model.dnfmod.lilvbh="";//利率编号
      this.model.dnfmod.jishuu="";//积数
      this.model.dnfmod.zuidje="";//最低金额
      this.model.dnfmod.zuigje="";//最高金额
      this.model.dnfmod.kaihrq="";//开户日期
      this.model.dnfmod.lilvll="";//利率
      this.model.dnfmod.kemucc="";//科目存储
      this.model.dnfmod.huobdh="";//货币代号
      this.model.dnfmod.xiohrq="";//销户日期
      this.model.dnfmod.ljzqje="";//累计支取金额
      this.model.dnfmod.kaihje="";//开户金额
      this.model.dnfmod.cunkzl="";//存款种类
      this.model.dnfmod.cunqii="";//存期
      this.model.dnfmod.daoqrq="";//到期日
      this.model.dnfmod.youhll="";//优惠利率
      this.model.dnfmod.zdzczh="";//自动转存账户this.model.dnfmod.
      this.$set(this.codes, 'tableDataList', []);
    },
    // 定期转活期
    addZhruzh(){
      let currentZH = {};
      let currentIndex = -1;
      // 选中的定期保证金原始行
      for(var i = 0;i<this.model.liaccv.liaccvg.length;i++){
        if(this.model.liaccv.liaccvg[i].ccdflg == 'X'){
          currentZH = this.model.liaccv.liaccvg[i];
          currentIndex = i;
          break;
        }
      }
      // model.dnfmod.ccvtyp 操作类型 定期转活期-C
      // model.dnfmod.zhqtyp 支取类型  B-部分提支  C-存款销户
      // model.dnfmod.tizamt 部分提支金额 B时,>0  C时,不用判断,
      // model.dnfmod.pridsp 本金转入账户 2149	国结暂收款项
      // model.dnfmod.zhruzh 具体账户 有值
      this.model.liaccv.liaccvg[currentIndex].bflg = 'N';
      this.model.liaccv.liaccvg[currentIndex].amt = 0;
      this.model.liaccv.liaccvg = this.model.liaccv.liaccvg.filter(item => item.bflg != 'Y');
      if(this.model.dnfmod.ccvtyp == 'C'){
        // B-部分提支
        if(this.model.dnfmod.zhqtyp == 'B' && this.model.dnfmod.pridsp == '2149' && this.model.dnfmod.zhruzh != '' 
        && this.model.dnfmod.tizamt != '' && this.model.dnfmod.tizamt > 0){
          this.model.liaccv.liaccvg[currentIndex].bflg = 'N';
          this.model.liaccv.liaccvg[currentIndex].amt = -this.model.dnfmod.tizamt;
          let newRow = {
            bflg: "Y", 
            cur: currentZH.cur, // 币种
            oldamt: 0, // 初始余额
            amt: this.model.dnfmod.tizamt, // 变动金额
            acc: this.model.dnfmod.zhruzh, // 保证金账号
            bid: currentZH.bid,
            newFlag:'Y',
          };
          this.model.liaccv.liaccvg.push(newRow);
        }
        // C-存款销户
        if(this.model.dnfmod.zhqtyp == 'C' && this.model.dnfmod.pridsp == '2149' && this.model.dnfmod.zhruzh != '' 
        && this.model.dnfmod.tizamt == ''){
          this.model.liaccv.liaccvg[currentIndex].bflg = 'N';
          this.model.liaccv.liaccvg[currentIndex].amt = -this.model.liaccv.liaccvg[currentIndex].oldamt;
          let newRow = {
            bflg: "Y", 
            cur: currentZH.cur, // 币种
            oldamt: 0, // 初始余额
            amt: this.model.dnfmod.zhhuye, // 账户余额
            acc: this.model.dnfmod.zhruzh, // 保证金账号
            bid: currentZH.bid,
            newFlag:'Y',
          };
          this.model.liaccv.liaccvg.push(newRow);
        }
      }
    },
    delZhruzh(){
      this.model.liaccv.liaccvg = this.model.liaccv.liaccvg.filter(item => item.bflg != 'Y');
      for(var i = 0;i<this.model.liaccv.liaccvg.length;i++){
        if(this.model.liaccv.liaccvg[i].bflg == 'N'){
          this.model.liaccv.liaccvg[i].amt = 0;
          this.model.liaccv.liaccvg[i].bflg= "";
        }
      }
    },

    //账户change触发方法
    changeKehuzh() {
      // this.model.dnfmod.ccvtyp = '';
      // this.changeCcvtyp(isInit);
      // this.operationsList = [];
      // this.tableDataList = [];
      // if (this.model.dnfmod.kehuzh) {
      //   for (var i = 0; i < this.accountList.length; i++) {
      //     if (this.accountList[i].value == this.model.dnfmod.kehuzh) {
      //       this.model.dnfmod.cur = this.accountList[i].cur;
      //     }
      //   }
      //   let dflg = this.calcDflg(this.model.dnfmod.kehuzh);
      //   this.operationsList.push({ label:"保证金账户冻结",value: "A"});
      //   this.operationsList.push({ label:"保证金账户解冻",value: "B"});
      //   if ('81' == dflg) {
      //     this.operationsList.push({ label:"定期转活期",value: "C"});
      //   }
      // }
    },

    //调用核心8023接口
    onDnfmodGet() {
      let params = {
        DATA: {
          "zhangh": this.model.dnfmod.kehuzh //"35000124690005001"
          // "zhangh": 35000124690005001 //"35000124690005001"
        },
        header: {
          "jiaoym": "8023"
        }
      };
     let dataList = [];
      // const loading = this.loading('正在请求数据');
      Api.post(`/public/jk/8023`, params).then(res => {
        if (res.header.code == 'AAAAAAA') {
          console.log(res.DATA);
          this.model.dnfmod.yewudh = res.DATA.yewudh;
          this.model.dnfmod.zhqucs = res.DATA.zhqucs;
          this.model.dnfmod.zhhuye = res.DATA.zhhuye;
          this.model.dnfmod.qixirq = res.DATA.qixirq;
          this.model.dnfmod.jiluzt = res.DATA.jiluzt;
          this.model.dnfmod.kehzwm = res.DATA.kehzwm; //客户中文名
          this.model.dnfmod.zhngjg = res.DATA.zhngjg; //账务机构号
          this.model.dnfmod.jixiff = res.DATA.jixiff; //计息方法
          this.model.dnfmod.lilvbh = res.DATA.lilvbh; //利率编号
          this.model.dnfmod.jishuu = res.DATA.jishuu; //积数
          this.model.dnfmod.zuidje = res.DATA.zuidje; //最低金额
          this.model.dnfmod.zuigje = res.DATA.zuigje; //最高金额
          this.model.dnfmod.kaihrq = res.DATA.kaihrq; //开户日期
          this.model.dnfmod.lilvll = res.DATA.lilvll; //利率
          this.model.dnfmod.kemucc = res.DATA.kemucc; //科目存储
          this.model.dnfmod.huobdh = res.DATA.huobdh; //货币代号
          this.model.dnfmod.xiohrq = res.DATA.xiohrq; //销户日期
          this.model.dnfmod.ljzqje = res.DATA.ljzqje; //累计支取金额
          this.model.dnfmod.kaihje = res.DATA.kaihje; //开户金额
          this.model.dnfmod.cunkzl = res.DATA.cunkzl; //存款种类
          this.model.dnfmod.cunqii = res.DATA.cunqii; //存期
          this.model.dnfmod.daoqrq = res.DATA.daoqrq; //到期日
          this.model.dnfmod.youhll = res.DATA.youhll; //优惠利率
          this.model.dnfmod.zdzczh = res.DATA.zdzczh; //自动转存账户
          dataList.push(this.transTableData(this.model.dnfmod));
          this.$set(this.codes, 'tableDataList', dataList);
        } else {
          this.$notify.error({
            title: '错误',
            message: '保证金账户查询失败,原因:' + res.header.description
          });
        }
      });

    },

    //本金转入账户
    changePridsp() {
      this.model.dnfmod.zhruzh = '';
      this.zhruzhList = [];
      if (!this.model.dnfmod.pridsp || !this.model.dnfmod.kehuzh) {
        return;
      }
      let params = {
        ptyinr: this.model.nidgrp.apl.pts.ptyinr,
        cur: this.model.dnfmod.cur,
        pridsp: this.model.dnfmod.pridsp,
        wrkbchinr: this.model.nidgrp.rec.branchinr,
        transName: "niteng",
        userId: window.sessionStorage.userId ? window.sessionStorage.userId : '742549'
      };
      const loading = this.loading('正在请求数据');
      Api.post(`/business/niteng/rulePridspN1000`, params).then(res => {
        if (res.respCode == SUCCESS) {
          console.log(res.data);
          if (res.data.length == 1 && res.data[0].indexOf('\r\n') !== -1) {
            let tempList = res.data[0].split('\r\n')
            for (let i = 0; i < tempList.length; i++) {
              this.zhruzhList.push({
                value: tempList[i],
                label: tempList[i]
              });
            }
          } else {
            for (let i = 0; i < res.data.length; i++) {
              this.zhruzhList.push({
                value: res.data[i],
                label: res.data[i]
              });
            }
          }
          if (this.zhruzhList.length > 0 && !this.model.dnfmod.zhruzh) {
            this.model.dnfmod.zhruzh = this.zhruzhList[0].value;
          }
        } else {
          this.$message.error("本金转入账户查询异常:" + res.respMsg);
        }
        loading.close();
      });
    },

    //利息转入账户
    changeIntdsp() {
      this.lxzyzhList = [];
      this.model.dnfmod.lxzyzh = '';
      if (!this.model.dnfmod.intdsp || !this.model.dnfmod.kehuzh) {
        return;
      }
      let params = {
        ptyinr: this.model.nidgrp.apl.pts.ptyinr,
        cur: this.model.dnfmod.cur,
        intdsp: this.model.dnfmod.intdsp,
        wrkbchinr: this.model.nidgrp.rec.branchinr,
        transName: "niteng",
        userId: window.sessionStorage.userId ? window.sessionStorage.userId : '742549'
      };
      const loading = this.loading('正在请求数据');
      Api.post(`/business/niteng/ruleIntdspN1000`, params).then(res => {
        if (res.respCode == SUCCESS) {
          console.log(res.data);
          if (res.data.length == 1 && res.data[0].indexOf('\r\n') !== -1) {
            let tempList = res.data[0].split('\r\n')
            for (let i = 0; i < tempList.length; i++) {
              this.lxzyzhList.push({
                value: tempList[i],
                label: tempList[i]
              });
            }
          } else {
            for (let i = 0; i < res.data.length; i++) {
              this.lxzyzhList.push({
                value: res.data[i],
                label: res.data[i]
              });
            }
          }
          if (this.lxzyzhList.length > 0 && !this.model.dnfmod.lxzyzh) {
            this.model.dnfmod.lxzyzh = this.lxzyzhList[0].value;
          }
        } else {
          this.$message.error("利息转入账户查询异常:" + res.respMsg);
        }
        loading.close();
      });
    },
    //操作类型赋值
    handleOperationList(){
      let dflg;
      let len = this.model.dnfmod.kehuzh.trim().length;
      if (len == 17) {
        dflg = this.model.dnfmod.kehuzh.slice(6, 8)
      }
      if (len == 21) {
        dflg = this.model.dnfmod.kehuzh.slice(10, 12)
      }
      if (this.model.dnfmod.kehuzh.slice(0, 3) == "ZMQ" || this.model.dnfmod.kehuzh.slice(0, 3) == "NRA") {
        dflg = this.model.dnfmod.kehuzh.slice(9, 11)
      }
      let operationsList = [];
      switch (dflg) {
        case "81":
          operationsList.push({
            label: "保证金账户冻结",
            value: "A"
          });
          operationsList.push({
            label: "保证金账户解冻",
            value: "B"
          });
          operationsList.push({
            label: "定期转活期",
            value: "C"
          });
          break;
        default:
          operationsList.push({
            label: "保证金账户冻结",
            value: "A"
          });
          operationsList.push({
            label: "保证金账户解冻",
            value: "B"
          });
      }
      this.$set(this.codes, 'operationsList', operationsList);
    },
    // 是否SWIFT格式修改--联动保函开立类型
    handleChangeSwiftflg() {
      // this.queryHndtypCodeTableList(this.root.trnName);
    },
    // 支出目的修改--联动保函开立类型
    handleChangePurpos(purposOld) {
      // DNGDEV 1770
      if (this.model.nidgrp.rec.purpos != "") {
        // read previous value of purpos
        // previous value = with Seq. C fields
        if ("ISCO ICCO".indexOf(purposOld) > -1) {
          // new value ?
          if (this.model.nidgrp.rec.purpos.substr(3, 2) == "CO") {
            // ok, Seq. C fields still allowed
          } else {
            // DNGDEV 1770 clear fields in Sequence C
            this.model.nidgrp.rec.accc = "";
            this.model.nidgrp.rec.deloric = "";
            this.model.nidgrp.rec.deloritxtc = "";
            this.model.nidgrp.rec.deltoc = "";
            this.model.nidgrp.rec.demandc = "";
            this.model.nidgrp.rec.gartypc = "";
            // DNGDEV.003055
            this.model.gitp.covgodsrvcmodflg = "";
            this.model.gitp.liatxtcmodflg = "";
            this.model.gitp.prepercmodflg = "";
            this.model.gitp.gidtxtmodflgc = "";
            this.model.nidgrp.rec.gtxinrc = "";
            this.model.nidgrp.rec.jurlawc = "";
            this.model.nidgrp.rec.jurlawtxtc = "";
            this.model.nidgrp.rec.jurplcc = "";
            this.model.nidgrp.rec.legfrmc = "";
            this.model.nidgrp.rec.liadat = "";
            this.model.nidgrp.rec.opndatc = "";
            this.model.nidgrp.rec.orcamtc = "0";
            this.model.nidgrp.rec.orccurc = "";
            this.model.nidgrp.rec.orcdatc = "";
            this.model.nidgrp.rec.orcratc = "";
            this.model.nidgrp.rec.orcrefc = "";
            this.model.nidgrp.rec.stdwrduilc = "";
            this.model.nidgrp.rec.tenclsdatc = "";
            this.model.nidgrp.rec.tendatc = "";
            this.model.nidgrp.rec.tenrefc = "";
            this.model.nidgrp.rec.trmdatc = "";
            this.model.nidgrp.blk.addamtcovc = "";
            this.model.nidgrp.blk.addinfc = "";
            this.model.nidgrp.blk.atxliatxtc = "";
            this.model.nidgrp.blk.atxcovgodsrvc = "";
            this.model.nidgrp.blk.apprulc = "";
            this.model.nidgrp.blk.covgodsrvc = "";
            this.model.nidgrp.blk.feetxtc = "";
            this.model.nidgrp.blk.gartyptxtc = "";
            this.model.nidgrp.blk.gtxgidtxtc = "";
            this.model.nidgrp.blk.liatxtc = "";
            this.model.nidgrp.blk.orcplcc = "";
            this.model.nidgrp.blk.preperc = "";
            this.model.nidgrp.cbs.mac.cur = "";
            this.model.nidgrp.cbs.mac.amt = '0.00';
            this.model.nidgrp.cbs.mac2.cur = "";
            this.model.nidgrp.cbs.mac2.amt = '0.00';
            this.model.gitp.aacp.aacmod.addamtflg = "";

            let pts = new Pts().data;
            Utils.copyValueFromVO(this.model.nidgrp.apc.pts, pts);
            Utils.copyValueFromVO(this.model.nidgrp.ctc.pts, pts);
            Utils.copyValueFromVO(this.model.nidgrp.iss.pts, pts);
            Utils.copyValueFromVO(this.model.nidgrp.bec.pts, pts);
          }
        }
      }
    },
    // 保函开立类型
    handleChangeHndtyp() {
      //文青姐说先不改,概率不大
      //改完对应前段model无对应字段  空跑
    },
    handleChangeFingua() {
      if (this.model.nidgrp.cbs.max.cur == "CNY") {
        if (this.model.nidgrp.rec.fingua == "Y") {
          this.model.nidgrp.rec.cmtflg = "X"
        } else {
          this.model.nidgrp.rec.cmtflg = ""
        }
        this.defaultVouflgN1000();
      }
    },
    defaultVouflgN1000() {
      //2122
      //--暂时只有保函开立交易用--
      //2017-4人行 要求2122对保函开立交易开放外币申报
      if (this.model.nidgrp.cbs.max.cur == "CNY") {
        if (this.model.nidgrp.rec.cmtflg != "") {
          this.model.cnybop.vouflg = ""
        } else {
          this.model.cnybop.vouflg = "2"
        }
      } else {
        if (this.model.nidgrp.rec.fingua == "Y") {
          this.model.cnybop.vouflg = "1"
        } else {
          this.model.cnybop.vouflg = "2"
        }
      }
    },
    transTableData(tableData) {
      if (!tableData) {
        return;
      }
      let result = cloneDeep(tableData);
      if (tableData.jiluzt) {
        result.jiluzt = this.tranSta(tableData.jiluzt);
      }
      if (tableData.kemucc) {
        result.kemucc = this.tranKemucc(tableData.kemucc);
      }
      if (tableData.lilvbh) {
        result.lilvbh = this.tranLilvbh(tableData.lilvbh);
      }
      if (tableData.cunqii) {
        result.cunqii = this.tranCunq(tableData.cunqii);
      }
      if (tableData.cunkzl) {
        result.cunkzl = this.tranCunkzl(tableData.cunkzl);
      }
      return result;
    },
    tranSta(jiluzt) {
      switch (jiluzt) {
        case "0":
          return "正常";
        case "1":
          return "销户";
        case "2":
          return "只收不付冻结";
        case "3":
          return "封闭冻结";
        case "4":
          return "删除";
        case "5":
          return "未使用";
        case "6":
          return "结清";
        case "7":
          return "打印";
        case "8":
          return "碰库";
        case "9":
          return "不动户";
        case "A":
          return "不动户转收益";
        case "B":
          return "死亡户";
        case "C":
          return "报案户";
        case "D":
          return "请与开户行接洽";
        case "E":
          return "不能在他行销记户";
        case "F":
          return "准客户";
        case "G":
          return "未复核";
        case "R":
          return "被当日冲正";
        case "S":
          return "被隔日冲正";
        case "J":
          return "禁用";
        case "Y":
          return "预销户";
        case "Z":
          return "质押冻结";
        case "T":
          return "凭证在途";
        default:
          return "";
      }
    },
    tranKemucc(kemucc) {
      switch (kemucc) {
        case "S":
          return "对私活期";
        case "C":
          return "对公活期";
        case "F":
          return "对私定期";
        case "E":
          return "对公定期";
        case "V":
          return "贷款";
        case "Q":
          return "欠息";
        case "I":
          return "内部账";
        case "O":
          return "表外账";
        case "T":
          return "拆借贴现投资账";
        case "Y":
          return "存放同业主文件";
        default:
          return "";
      }
    },
    tranLilvbh(lilvbh) {
      switch (lilvbh) {
        case "100":
          return "定活两便";
        case "101":
          return "活期储蓄存款";
        case "102":
          return "整存整取定期存款";
        case "103":
          return "零存整取";
        case "105":
          return "存本取息";
        case "106":
          return "通知存款";
        case "107":
          return "大面额定期";
        case "108":
          return "活期对公存款";
        case "109":
          return "公积金存款";
        default:
          return "";
      }
    },
    tranCunq(cunqii) {
      switch (cunqii) {
        case "200":
          return "活期";
        case "201":
          return "一天";
        case "207":
          return "七天";
        case "101":
          return "一月";
        case "103":
          return "三月";
        case "106":
          return "六月";
        case "109":
          return "九月";
        case "001":
          return "一年";
        case "002":
          return "二年";
        case "003":
          return "三年";
        case "005":
          return "五年";
        case "006":
          return "六年";
        case "008":
          return "八年";
        case "010":
          return "十年";
        case "020":
          return "二十年";
        case "000":
          return "自定义";
        default:
          return "";
      }
    },
    tranCunkzl(cunkzl) {
      switch (cunkzl) {
        case "00":
          return "普通活期";
        case "01":
          return "整存整取";
        case "02":
          return "定活两便";
        case "03":
          return "存本取息";
        case "04":
          return "零存整取";
        case "05":
          return "通知存款";
        case "06":
          return "教育储蓄";
        case "07":
          return "整存零取";
        case "08":
          return "凭证式国债";
        case "09":
          return "理财通";
        case "10":
          return "对公活期";
        case "11":
          return "对公整存整取";
        case "12":
          return "对公大额存款";
        case "15":
          return "对公通知存款";
        case "16":
          return "对公大额通知存款";
        case "17":
          return "储寿保";
        case "18":
          return "理财产品";
        case "19":
          return "购汇保证金";
        case "20":
          return "对公结构性存款";
        case "21":
          return "对公存款周计划";
        case "28":
          return "储蓄国债";
        case "29":
          return "黄金理财";
        case "30":
          return "活期宝";
        default:
          return "";
      }
    },


    changeLimitbody(emitParams) {
      let limitbodyRequest = buildFn.buildLimitbody(this.model, this.trnName);
      switch (emitParams.code) {
        case 'trial':
          this.trialLimitbody(limitbodyRequest);
          break;
        case 'query':
          this.queryLimitbody(limitbodyRequest);
          break;
        default:
          return
      }

    },
  },
};