<template>
  <div class="eibs">
    <c-col :span="24" style="margin-top: 20px">
      <!-- 左边 -->
      <c-col :span="12" style="padding-right: 20px">
        <c-col :span="24">
          <c-fullbox>
            <el-form-item label="Special Payment Conditions for Bank Only(49N)" prop="lidgrp.blk.spcrcb">
              <c-mul-row-input
                type="textarea"
                v-model="model.lidgrp.blk.spcrcb"
                :rows="800"
                :cols="65"
                :autosize="{ minRows: 14, maxRows: 14 }"
                show-word-limit
                :charmod="3"
                @change="handleSpcrcbChanged"
                :disabled="isSpcrcbDisabled"
                placeholder="请输入仅适用于指定银行的特殊付款条款"></c-mul-row-input>
            </el-form-item>
          </c-fullbox>
        </c-col>
        <c-col :span="24">
          <c-ptap-commons
            :cols="65"
            :rows="800"
            :minRows="12"
            :maxRows="12"
            :model="model"
            :isRules="false"
            :disabledButton="isUsrblkDisabled"
            :extCodes="['litamep', 'spcrcbamep']"
            lastModel="spcrcb"
            :charmod="3"
            title="Adding/Deleting Text in Current Amendment">
          </c-ptap-commons>
        </c-col>
      </c-col>
      <!-- 右边 -->
      <c-col :span="12" style="padding-left: 20px">
        <c-col :span="24">
          <c-fullbox>
            <el-form-item label="Historic Overview" prop="lidgrp.blk.spcrcbame">
              <c-mul-row-input
                disabled
                type="textarea"
                :rows="800"
                :cols="65"
                :autosize="{ minRows: 14, maxRows: 14 }"
                v-model="model.lidgrp.blk.spcrcbame"
                show-word-limit
                placeholder="历史修改信息"></c-mul-row-input>
            </el-form-item>
          </c-fullbox>
        </c-col>
        <c-col :span="24">
          <c-col :span="24" class="">
            <el-form-item label=" " prop="litamep.spcrcbamep.modflg" label-width="180px" style="float: left">
              <c-checkbox
                v-model="model.litamep.spcrcbamep.modflg"
                class="checkbox-left"
                true-label="X"
                false-label=""
                :disabled="this.model.litamep.spcrcbamep.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="litamep.spcrcbamep.modmanflg" label-width="180px" style="float: left">
              <c-checkbox
                v-model="model.litamep.spcrcbamep.modmanflg"
                class="checkbox-left"
                true-label="X"
                false-label=""
                :disabled="this.model.litamep.spcrcbamep.modflg == 'X'"
                @change="onModmanflgChange"
                >Modify Text Internally</c-checkbox
              >
            </el-form-item>
          </c-col>
        </c-col>
        <c-col :span="24">
          <el-form-item label-width="160px" style="float: left">
            <text-diff
              :leftText="model.oldlidgrp.blk.spcrcb"
              :rightText="model.lidgrp.blk.spcrcb"
              :isShowScale="false"
              :disabled="model.lidgrp.blk.spcrcb === model.oldlidgrp.blk.spcrcb" />
          </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.litamep.spcrcbamep.spcrcb == null || this.model.litamep.spcrcbamep.spcrcb == ''">
              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.litamep.spcrcbamep.spcrcb == null || this.model.litamep.spcrcbamep.spcrcb == ''">
              Delete
            </c-button>
          </el-form-item>
        </c-col>
      </c-col>
    </c-col>
  </div>
</template>
<script>
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 {
      isSpcrcbDisabled: true,
      isUsrblkDisabled: false,
      tempLcrbnk: "",
    };
  },
  methods: {
    onAddClick() {
      if (this.model.litamep.spcrcbamep.spcrcb != null && this.model.litamep.spcrcbamep.spcrcb != "") {
        if (this.model.lidgrp.blk.spcrcb === "") {
          this.model.lidgrp.blk.spcrcb = this.model.lidgrp.blk.spcrcb + this.model.litamep.spcrcbamep.spcrcb;
        } else {
          this.model.lidgrp.blk.spcrcb = this.model.lidgrp.blk.spcrcb + "\n" + this.model.litamep.spcrcbamep.spcrcb;
        }

        this.model.lidgrp.blk.spcrcbame =
          this.model.lidgrp.blk.spcrcbame +
          "\n" +
          "*** Amendment " +
          this.model.litamep.amenbr +
          " Date:" +
          moment(new Date()).format("MM/DD/YY") +
          ":" +
          "\n" +
          "/ADD/" +
          "\n" +
          this.model.litamep.spcrcbamep.spcrcb +
          "\n";

        //设置spcrcb被修改过
        this.setSpcrcbModified();
        if (this.model.bnkAddDelRep === "") {
          this.model.bnkAddDelRep = "/ADD/\n" + this.model.litamep.spcrcbamep.spcrcb;
        } else {
          this.model.bnkAddDelRep = this.model.bnkAddDelRep + "\n/ADD/\n" + this.model.litamep.spcrcbamep.spcrcb;
        }
        this.model.litamep.spcrcbamep.spcrcb = "";
      }
    },
    onDeleteClick() {
      if (this.model.lidgrp.blk.spcrcb != null && this.model.lidgrp.blk.spcrcb != "") {
        let spcrcb = this.model.lidgrp.blk.spcrcb;
        let realMatchText = this.specialCharactersProcess(this.model.litamep.spcrcbamep.spcrcb);
        // 使用正则表达式,匹配usrblk文本框中的内容
        // 正则表达式,开启匹配多行 flag: 'g',开启多行模式 flag:'m'
        let usrblkRegExp = new RegExp("^" + realMatchText + "$", "gm");
        let matchArray = spcrcb.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.lidgrp.blk.spcrcb = this.model.lidgrp.blk.spcrcb.replace("\n" + realMatchText, "");
          this.model.lidgrp.blk.spcrcb = this.model.lidgrp.blk.spcrcb.replace(realMatchText + "\n", "");
          this.model.lidgrp.blk.spcrcb = this.model.lidgrp.blk.spcrcb.replace(realMatchText, "");

          this.model.lidgrp.blk.spcrcbame =
            this.model.lidgrp.blk.spcrcbame +
            "\n" +
            "*** Amendment " +
            this.model.litamep.amenbr +
            " Date:" +
            moment(new Date()).format("MM/DD/YY") +
            ":" +
            "\n" +
            "/DEL/" +
            "\n" +
            this.model.litamep.spcrcbamep.spcrcb +
            "\n";

          //设置spcrcb被修改过
          this.setSpcrcbModified();
          if (this.model.bnkAddDelRep === "") {
            this.model.bnkAddDelRep = "/DELETE/\n" + this.model.litamep.spcrcbamep.spcrcb;
          } else {
            this.model.bnkAddDelRep = this.model.bnkAddDelRep + "\n/DELETE/\n" + this.model.litamep.spcrcbamep.spcrcb;
          }
          this.model.litamep.spcrcbamep.spcrcb = "";
          return;
        }
      }
    },
    onModflgChange() {
      if (this.model.litamep.spcrcbamep.modflg == "X") {
        // 如果blk.spcrcb的值被修改过,则给出提示
        if (this.isSpcrcbModified()) {
          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.litamep.spcrcbamep.modflg = "X";

              this.isSpcrcbDisabled = false;
              this.isUsrblkDisabled = true;
              this.model.litamep.spcrcbamep.spcrcb = "";
              this.model.lidgrp.blk.spcrcb = this.model.oldlidgrp.blk.spcrcb;
              // 值恢复,删除spcrcb的modify记录
              this.resetSpcrcbNotModified();
              // 清空add/delete内容
              this.model.bnkAddDelRep = "";
            })
            .catch(() => {
              //No的功能在这里写
              this.model.litamep.spcrcbamep.modflg = "";

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

              this.isSpcrcbDisabled = true;
              this.isUsrblkDisabled = false;
              this.model.litamep.spcrcbamep.spcrcb = "";
              this.model.lidgrp.blk.spcrcb = this.model.oldlidgrp.blk.spcrcb;
              // 值恢复,删除spcrcb的modify记录
              this.resetSpcrcbNotModified();
            })
            .catch(() => {
              //No的功能在这里写,不执行rest,将modflg的继续选中
              this.model.litamep.spcrcbamep.modflg = "X";
            });
        } else {
          this.isSpcrcbDisabled = true;
          this.isUsrblkDisabled = false;
        }
      }
    },
    onModmanflgChange() {
      if (this.model.litamep.spcrcbamep.modmanflg == "X") {
        this.isSpcrcbDisabled = false;
        this.isUsrblkDisabled = true;
        this.model.litamep.spcrcbamep.spcrcb = "";
        this.tempLcrbnk = this.model.lidgrp.blk.spcrcb;
      } else {
        if (this.tempLcrbnk !== this.model.lidgrp.blk.spcrcb) {
          // 如果有修改过,则需提示
          this.$confirm("Do you really want to reset your manual modifications?", "提示", {
            confirmButtonText: "OK",
            cancelButtonText: "Cancel",
            type: "warning",
            showClose: false,
          })
            .then(() => {
              // 确认取消勾选
              this.isSpcrcbDisabled = true;
              this.isUsrblkDisabled = false;
              // 将blk的值还原成手动修改前的值
              this.model.lidgrp.blk.spcrcb = this.tempLcrbnk;
            })
            .catch(() => {
              // 不取消勾选
              this.model.litamep.spcrcbamep.modmanflg = "X";
            });
        } else {
          // 没做过手动修改
          this.isSpcrcbDisabled = true;
          this.isUsrblkDisabled = false;
        }
      }
    },

    setSpcrcbModified() {
      this.customAddModify(this.model.lidgrp.blk, "spcrcb");
    },

    resetSpcrcbNotModified() {
      this.customRemoveModify(this.model.lidgrp.blk, "spcrcb");
    },

    isSpcrcbModified() {
      if (!this.model.lidgrp.blk.modifySet) {
        return false;
      } else {
        if (this.model.lidgrp.blk.modifySet.includes("spcrcb")) {
          return true;
        }
      }
      return false;
    },

    handleSpcrcbChanged() {
      // 设置修改标记
      this.setSpcrcbModified();

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

      if (this.model.litamep.spcrcbamep.modflg === "X") {
        changedText = changedText + "/REPALL/" + "\n";
      } else {
        changedText = changedText + "Special Payment Conditions for Bank only changed as follows:";
      }

      changedText = changedText + this.model.lidgrp.blk.spcrcb + "\n";

      this.model.lidgrp.blk.spcrcbame = this.model.lidgrp.blk.spcrcbame + "\n" + changedText;
    },
  },
};
</script>
<style></style>