<template>
  <div class="eibs">
    <c-col :span="24">
      <c-col :span="12" style="padding-right: 20px">
        <c-col :span="24">
          <el-form-item label="Additional Conditions" prop="ltdgrp.blk.adlcnd">
            <c-fullbox>
              <c-mul-row-input
                type="textarea"
                :rows="65"
                :cols="800"
                :autosize="{minRows: 8,	maxRows: 8}"
                v-model="model.ltdgrp.blk.adlcnd"
                :charmod="3"
                show-word-limit
                placeholder="请输入附加条款"
                @change="handleAdlcndChanged"
                :disabled="isAdlcndDisabled"></c-mul-row-input>
            </c-fullbox>
          </el-form-item>
        </c-col>
        <c-col :span="24">
          <c-ptap-commons
            :cols="65"
            :rows="800"
            :minRows="12"
            :maxRows="12"
            :model="model"
            :disabledButton="isUsrblkDisabled"
            :extCodes="['lttamep', 'adlcndamep']"
            lastModel="adlcnd"
            :charmod="3"
            title="Adding/Deleting Text in Current Amendment">
          </c-ptap-commons>
        </c-col>

        <c-col :span="24">
          <el-form-item label="Charges Condition" prop="ltdgrp.rec.chato">
            <c-select v-model="model.ltdgrp.rec.chato" dbCode="chadet" placeholder="请选择"></c-select>
          </el-form-item>
        </c-col>
        <c-col :span="24">
          <c-ptap-commons
            :cols="35"
            :rows="6"
            :minRows="7"
            :maxRows="7"
            :model="model"
            :extCodes="['ltdgrp', 'blk']"
            lastModel="feetxt"
            :charmod="3"
            title="Details of Charges">
          </c-ptap-commons>
        </c-col>

        <c-col :span="24">
          <c-ptap-commons
            :cols="65"
            :rows="5"
            :minRows="5"
            :maxRows="5"
            :model="model"
            :extCodes="['ltdgrp', 'blk']"
            lastModel="insbnk"
            :charmod="2"
            title="Instructions to Pay.,Accept., Negot. Bank">
          </c-ptap-commons>
        </c-col>

      </c-col>
      <c-col :span="12" style="padding-right: 20px" >

        <c-col :span="24">
          <el-form-item label="Historic Overview" prop="ltdgrp.blk.adlcndame">
            <c-fullbox>
              <c-input
                      disabled
                      type="textarea"
                      maxlength="52000"
                      v-model="model.ltdgrp.blk.adlcndame"
                      :rows="20"
                      show-word-limit
                      placeholder="历史修改信息"></c-input>
            </c-fullbox>
          </el-form-item>
        </c-col>

        <c-col :span="24" class="">
          <el-form-item label=" " prop="lttamep.adlcndamep.modflg" label-width="180px" style="float: left">
            <c-checkbox
              v-model="model.lttamep.adlcndamep.modflg"
              class="checkbox-left"
              true-label="X"
              false-label=""
              :disabled="this.model.lttamep.adlcndamep.modmanflg == 'X'"
              @change="onModflgChange"
              >Modify Text to Replace</c-checkbox
            >
          </el-form-item>
        </c-col>

        <c-col :span="24" class="">
          <el-form-item label=" " prop="lttamep.adlcndamep.modmanflg" label-width="180px" style="float: left">
            <c-checkbox
              v-model="model.lttamep.adlcndamep.modmanflg"
              class="checkbox-left"
              true-label="X"
              false-label=""
              :disabled="this.model.lttamep.adlcndamep.modflg == 'X'"
              @change="onModmanflgChange"
              >Modify Text Internally</c-checkbox
            >
          </el-form-item>
        </c-col>

        <c-col :span="24">
          <el-form-item label-width="160px" style="float: left">
            <text-diff
              :leftText="model.oldltdgrp.blk.adlcnd"
              :rightText="model.ltdgrp.blk.adlcnd"
              :isShowScale="false"
              :disabled="model.ltdgrp.blk.adlcnd === model.oldltdgrp.blk.adlcnd" />
          </el-form-item>
        </c-col>

        <c-col :span="24">
          <el-form-item label-width="180px" style="float: left">
            <c-button
              type="primary"
              @click="onAddClick"
              :disabled="this.model.lttamep.adlcndamep.adlcnd == null || this.model.lttamep.adlcndamep.adlcnd == ''">
              Add
            </c-button>
          </el-form-item>
        </c-col>

        <c-col :span="24">
          <el-form-item label-width="180px" style="float: left">
            <c-button
              type="primary"
              @click="onDeleteClick"
              :disabled="this.model.lttamep.adlcndamep.adlcnd == null || this.model.lttamep.adlcndamep.adlcnd == ''">
              Delete
            </c-button>
          </el-form-item>
        </c-col>

        <c-col :span="24">
          <el-form-item label="" class="checkbox-left" prop="ltdgrp.rec.spcbenflg">
            <c-checkbox
              v-model="model.ltdgrp.rec.spcbenflg"
              true-label="X"
              false-label=""
              :disabled="this.model.ltdgrp.blk.spcben != null && this.model.ltdgrp.blk.spcben != ''"
              >Special Payment Cond.for Beneficiary</c-checkbox
            >
          </el-form-item>
        </c-col>
        <c-col :span="24">
          <el-form-item label="" class="checkbox-left" prop="ltdgrp.rec.spcrcbflg">
            <c-checkbox
              v-model="model.ltdgrp.rec.spcrcbflg"
              true-label="X"
              false-label=""
              :disabled="this.model.ltdgrp.blk.spcrcb != null && this.model.ltdgrp.blk.spcrcb != ''"
              >Special Payment Cond.for Bank Only</c-checkbox
            >
          </el-form-item>
        </c-col>

      </c-col>

    </c-col>

  </div>
</template>
<script>
import Api from "~/service/Api";
import CodeTable from "~/config/CodeTable";
import event from "../event";
import moment from 'moment';
import commonDepend from "~/mixin/commonDepend";
import TextDiff from "~/components/business/TextDiff";

export default {
  components: { TextDiff },
  inject: ["root"],
  props: ["model", "codes"],
  mixins: [event, commonDepend],
  data() {
    return {
      isAdlcndDisabled: true,
      isUsrblkDisabled: false,
      tempLcradc: "",
    };
  },
  methods: {
      onAddClick() {
        if (this.model.lttamep.adlcndamep.adlcnd != null && this.model.lttamep.adlcndamep.adlcnd != "") {
          this.model.ltdgrp.blk.adlcnd = this.model.ltdgrp.blk.adlcnd + "\n" + this.model.lttamep.adlcndamep.adlcnd;

          this.model.ltdgrp.blk.adlcndame = this.model.ltdgrp.blk.adlcndame+"\n"
                  +"*** Amendment "+this.model.lttamep.amenbr+ " Date:"+ moment(new Date()).format("MM/DD/YY")+":"+"\n"
                  +"/ADD/"+"\n"
                  +this.model.lttamep.adlcndamep.adlcnd+"\n";

          //设置adlcnd被修改过
          this.setAdlcndModified();
          if (this.model.adcAddDelRep === "") {
            this.model.adcAddDelRep = "/ADD/\n" + this.model.lttamep.adlcndamep.adlcnd;
          } else {
            this.model.adcAddDelRep = this.model.adcAddDelRep + "\n/ADD/\n" + this.model.lttamep.adlcndamep.adlcnd;
          }
          this.model.lttamep.adlcndamep.adlcnd = "";
        }
      },
      onDeleteClick() {
        if (this.model.ltdgrp.blk.adlcnd != null && this.model.ltdgrp.blk.adlcnd != "") {
          let adlcnd = this.model.ltdgrp.blk.adlcnd;
          let realMatchText = this.specialCharactersProcess(this.model.lttamep.adlcndamep.adlcnd);
          // 使用正则表达式,匹配usrblk文本框中的内容
          // 正则表达式,开启匹配多行 flag: 'g',开启多行模式 flag:'m'
          let usrblkRegExp = new RegExp("^"+realMatchText+"$","gm");
          let matchArray = adlcnd.match(usrblkRegExp);
          // 未找到匹配字符串
          if(matchArray == null || matchArray.length<=0){
            this.$alert('Text to delete not found in original text and thus cannot be deleted', "提示", {
              confirmButtonText: "OK",
            });
            return;
          }

          // 匹配到多个 字符串
          if(matchArray!=null&&matchArray.length>1){
            this.$alert('Text to delete found more than once in original text and thus cannot be deleted. \n'+
                    'Please extend portion to delete or use modify to replace.', "提示", {
              confirmButtonText: "OK",
            });
            return;
          }

          // 匹配到正好1个字符串
          if(matchArray!=null&&matchArray.length==1){
            this.model.ltdgrp.blk.adlcnd = this.model.ltdgrp.blk.adlcnd.replace(usrblkRegExp,"");

            this.model.ltdgrp.blk.adlcndame = this.model.ltdgrp.blk.adlcndame+"\n"
                    +"*** Amendment "+this.model.lttamep.amenbr+ " Date:"+ moment(new Date()).format("MM/DD/YY")+":"+"\n"
                    +"/DEL/"+"\n"
                    +this.model.lttamep.adlcndamep.adlcnd+"\n";

            //设置adlcnd被修改过
            this.setAdlcndModified();
            if (this.model.adcAddDelRep === "") {
              this.model.adcAddDelRep = "/DELETE/\n" + this.model.lttamep.adlcndamep.adlcnd;
            } else {
              this.model.adcAddDelRep = this.model.adcAddDelRep + "\n/DELETE/\n" + this.model.lttamep.adlcndamep.adlcnd;
            }
            this.model.lttamep.adlcndamep.adlcnd = "";
            return;
          }
        }
      },
      onModflgChange() {
        if (this.model.lttamep.adlcndamep.modflg == "X") {

          // 如果blk.adlcnd的值被修改过,则给出提示
          if(this.isAdlcndModified()){
            this.$confirm('Do you really want to change to modification of the complete text?\n' +
                    'The information about single added and deleted lines will be lost.', '提示', {
              confirmButtonText: 'OK',
              cancelButtonText: 'Cancel',
              type: 'warning',
              showClose: false
            }).then(() => {//yes的执行在这里写
              this.model.lttamep.adlcndamep.modflg ="X"

              this.isAdlcndDisabled = false;
              this.isUsrblkDisabled = true;
              this.model.lttamep.adlcndamep.adlcnd = "";
              this.model.ltdgrp.blk.adlcnd = this.model.oldltdgrp.blk.adlcnd;
              // 值恢复,删除adlcnd的modify记录
              this.resetAdlcndNotModified();
              // 清空add/delete内容
              this.model.adcAddDelRep = "";
            }).catch(() => {//No的功能在这里写
              this.model.lttamep.adlcndamep.modflg = ""

              this.isAdlcndDisabled = true;
              this.isUsrblkDisabled = false;
            });
          }else{
            this.isAdlcndDisabled = false;
            this.isUsrblkDisabled = true;
          }
        } else {

          // 如果blk.adlcnd的值被修改过,则给出reset提示
          if(this.isAdlcndModified()){
            this.$confirm('Do you really want to reset your manual modifications?', '提示', {
              confirmButtonText: 'OK',
              cancelButtonText: 'Cancel',
              type: 'warning',
              showClose: false
            }).then(() => {//yes的执行在这里写,执行reset,将blk.adlcnd恢复到原值
              this.model.lttamep.adlcndamep.modflg = ""

              this.isAdlcndDisabled = true;
              this.isUsrblkDisabled = false;
              this.model.lttamep.adlcndamep.adlcnd = "";
              this.model.ltdgrp.blk.adlcnd = this.model.oldltdgrp.blk.adlcnd;
              // 值恢复,删除adlcnd的modify记录
              this.resetAdlcndNotModified();

            }).catch(() => {//No的功能在这里写,不执行rest,将modflg的继续选中
              this.model.lttamep.adlcndamep.modflg = "X"

            });

          }else{
            this.isAdlcndDisabled = true;
            this.isUsrblkDisabled = false;
          }
        }
      },
      onModmanflgChange() {
        if (this.model.lttamep.adlcndamep.modmanflg == "X") {
          this.isAdlcndDisabled = false;
          this.isUsrblkDisabled = true;
          this.model.lttamep.adlcndamep.adlcnd = "";
          this.tempLcradc = this.model.ltdgrp.blk.adlcnd;
        } else {
          if (this.tempLcradc !== this.model.ltdgrp.blk.adlcnd) {
            // 如果有修改过,则需提示
            this.$confirm("Do you really want to reset your manual modifications?", "提示", {
              confirmButtonText: "OK",
              cancelButtonText: "Cancel",
              type: "warning",
              showClose: false,
            })
              .then(() => {
                // 确认取消勾选
                this.isAdlcndDisabled = true;
                this.isUsrblkDisabled = false;
                // 将blk的值还原成手动修改前的值
                this.model.ltdgrp.blk.adlcnd = this.tempLcradc;
              })
              .catch(() => {
                // 不取消勾选
                this.model.lttamep.adlcndamep.modmanflg = "X";
              });
          } else {
            // 没做过手动修改
            this.isAdlcndDisabled = true;
            this.isUsrblkDisabled = false;
          }
        }
      },

      setAdlcndModified() {
        this.customAddModify(this.model.ltdgrp.blk, "adlcnd");
      },

      resetAdlcndNotModified() {
        this.customRemoveModify(this.model.ltdgrp.blk, "adlcnd");
      },

      isAdlcndModified(){
        if(!this.model.ltdgrp.blk.modifySet){
          return false;
        }else{
          if (this.model.ltdgrp.blk.modifySet.includes("adlcnd")) {
            return true;
          }
        }
        return false;
      },

      handleAdlcndChanged(){
        // 设置修改标记
        this.setAdlcndModified();


        let changedText = "*** Amendment "+this.model.lttamep.amenbr+ " Date:"+ moment(new Date()).format("MM/DD/YY")+":"+"\n";

        if(this.model.lttamep.adlcndamep.modflg==='X'){
          changedText = changedText+"/REPALL/"+"\n";
        }else{
          changedText = changedText+"Documents Required changed as follows:"
        }

        changedText = changedText+this.model.ltdgrp.blk.adlcnd+"\n";

        this.model.ltdgrp.blk.adlcndame = this.model.ltdgrp.blk.adlcndame+"\n"+changedText;


      },


    },
};
</script>
<style>
.marginLable {
  padding-left: 160px;
}
</style>