<template>
  <div class="eibs-tab">
    <!-- 左边 -->
    <c-col :span="12" style="padding-right: 20px">
      <c-col :span="24">
        <c-fullbox>
          <el-form-item label="Documents Required(46B)" prop="lidgrp.blk.lcrdoc">
            <c-mul-row-input
              type="textarea"
              v-model="model.lidgrp.blk.lcrdoc"
              :rows="800"
              :cols="65"
              :autosize="{ minRows: 17, maxRows: 17 }"
              show-word-limit
              :charmod="3"
              @change="handleLcrdocChanged"
              :disabled="isLcrdocDisabled"
              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"
          :disabledButton="isUsrblkDisabled"
          :isRules="false"
          :extCodes="['litamep', 'lcrdocamep']"
          lastModel="lcrdoc"
          :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.lcrdocame">
            <c-mul-row-input
              disabled
              type="textarea"
              :rows="800"
              :cols="65"
              :autosize="{ minRows: 17, maxRows: 17 }"
              v-model="model.lidgrp.blk.lcrdocame"
              show-word-limit
              placeholder="历史修改信息"></c-mul-row-input>
          </el-form-item>
        </c-fullbox>
      </c-col>
      <c-col :span="24">
        <c-col :span="8" class="">
          <el-form-item label=" " prop="litamep.lcrdocamep.modflg" label-width="180px" style="float: left">
            <c-checkbox
              v-model="model.litamep.lcrdocamep.modflg"
              class="checkbox-left"
              true-label="X"
              false-label=""
              :disabled="this.model.litamep.lcrdocamep.modmanflg == 'X'"
              @change="onModflgChange"
              >Modify Text to Replace</c-checkbox
            >
          </el-form-item>
        </c-col>
        <c-col :span="10" class="">
          <el-form-item label=" " prop="litamep.lcrdocamep.modmanflg" label-width="180px" style="float: left">
            <c-checkbox
              v-model="model.litamep.lcrdocamep.modmanflg"
              class="checkbox-left"
              true-label="X"
              false-label=""
              :disabled="this.model.litamep.lcrdocamep.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.lcrdoc"
            :rightText="model.lidgrp.blk.lcrdoc"
            :isShowScale="false"
            :disabled="model.lidgrp.blk.lcrdoc === model.oldlidgrp.blk.lcrdoc" />
        </el-form-item>
      </c-col>
      <c-col :span="4">
        <el-form-item label-width="180px" style="float: left">
          <c-button
            type="primary"
            @click="onAddClick"
            :disabled="this.model.litamep.lcrdocamep.lcrdoc == null || this.model.litamep.lcrdocamep.lcrdoc == ''">
            Add
          </c-button>
        </el-form-item>
      </c-col>
      <c-col :span="4">
        <el-form-item label-width="180px" style="float: left">
          <c-button
            type="primary"
            @click="onDeleteClick"
            :disabled="this.model.litamep.lcrdocamep.lcrdoc == null || this.model.litamep.lcrdocamep.lcrdoc == ''">
            Delete
          </c-button>
        </el-form-item>
      </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 {
      isLcrdocDisabled: true,
      isUsrblkDisabled: false,
      tempLcrdoc: "",
    };
  },
  methods: {
    onAddClick() {
      if (this.model.litamep.lcrdocamep.lcrdoc != null && this.model.litamep.lcrdocamep.lcrdoc != "") {
        if (this.model.lidgrp.blk.lcrdoc === "") {
          this.model.lidgrp.blk.lcrdoc = this.model.lidgrp.blk.lcrdoc + this.model.litamep.lcrdocamep.lcrdoc;
        } else {
          this.model.lidgrp.blk.lcrdoc = this.model.lidgrp.blk.lcrdoc + "\n" + this.model.litamep.lcrdocamep.lcrdoc;
        }
        this.model.lidgrp.blk.lcrdocame =
          this.model.lidgrp.blk.lcrdocame +
          "\n" +
          "*** Amendment " +
          this.model.litamep.amenbr +
          " Date:" +
          moment(new Date()).format("MM/DD/YY") +
          ":" +
          "\n" +
          "/ADD/" +
          "\n" +
          this.model.litamep.lcrdocamep.lcrdoc +
          "\n";

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

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

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

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

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

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

    setLcrdocModified() {
      this.customAddModify(this.model.lidgrp.blk, "lcrdoc");
    },

    resetLcrdocNotModified() {
      this.customRemoveModify(this.model.lidgrp.blk, "lcrdoc");
    },

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

    handleLcrdocChanged() {
      // 设置修改标记
      this.setLcrdocModified();

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

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

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

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