<template>
  <el-form
    ref="activateProjectForm"
    :model="form"
    size="small"
    label-width="120px"
    style="width: 500px; padding: 30px 0 0 30px"
  >
    <div class="base-dialog-body">
      <p>{{ $t("trials:trials-list:activate:message:authorizationMsg") }}</p>
      <!-- 购买时长 -->
      <el-form-item label="项目码">
        <el-input v-model="data.AuthorizationCode" />
        <input
          type="file"
          id="uploadFile"
          ref="uploadFile"
          @change="fileChange"
          style="display: none"
        />
        <label for="uploadFile" class="copy">上传</label>
      </el-form-item>
      <!-- 单位名称 -->
      <el-form-item :label="$t('trials:trials-list:activate:organizationName')">
        <span>{{ data.HospitalName }}</span>
      </el-form-item>
      <!-- 项目编号 -->
      <el-form-item :label="$t('trials:trials-list:table:trialId')">
        <span>{{ data.TrialCode }}</span>
      </el-form-item>
      <!-- 评估标准 -->
      <el-form-item
        :label="$t('trials:trials-list:activate:evaluationCriteria')"
      >
        <span
          >{{
            data.CriterionTypeList.map((item) =>
              $fd("CriterionType", Number(item))
            ).join(",")
          }}
        </span>
      </el-form-item>
      <!-- 购买时长 -->
      <el-form-item :label="$t('trials:trials-list:activate:purchaseDuration')">
        <span>{{ data.PurchaseDuration }}</span>
      </el-form-item>
      <p>{{ $t("trials:trials-list:activate:message:activateMsg") }}</p>
      <!-- 单位名称 -->
      <el-form-item :label="$t('trials:trials-list:activate:organizationName')">
        <span>{{ data.HospitalName }}</span>
      </el-form-item>
      <!-- 项目编号 -->
      <el-form-item :label="$t('trials:trials-list:table:trialId')">
        <span>{{ data.TrialCode }}</span>
      </el-form-item>
      <!-- 评估标准 -->
      <el-form-item
        :label="$t('trials:trials-list:activate:evaluationCriteria')"
      >
        <span
          >{{
            data.CriterionTypeList.map((item) =>
              $fd("CriterionType", Number(item))
            ).join(",")
          }}
        </span>
      </el-form-item>
      <!-- 授权时长 -->
      <el-form-item
        :label="$t('trials:trials-list:activate:activateTime')"
        prop="Activate"
      >
        <el-input-number
          v-model="form.PurchaseDuration"
          :min="0"
          :max="100"
        ></el-input-number>
      </el-form-item>
      <!-- 激活码 -->
      <el-form-item :label="$t('trials:trials-list:activate:code')">
        <el-input v-model="form.code" />
      </el-form-item>
    </div>
    <div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
      <el-form-item>
        <!-- 取消 -->
        <el-button
          size="small"
          type="primary"
          @click.stop="getTrialActivationCode"
        >
          {{ $t("trials:trials-list:activate:button:create") }}
        </el-button>
        <!-- 保存 -->
        <el-button size="small" type="primary" @click.stop="copy">
          {{ $t("trials:trials-list:activate:button:copy") }}
        </el-button>
        <el-button size="small" type="primary" @click.stop="downloadXmlFile">
          {{ $t("trials:trials-list:activate:button:downLoad") }}
        </el-button>
      </el-form-item>
    </div>
  </el-form>
</template>
<script>
import { fileDownload } from "@/utils/uploadZip.js";
import {
  getAuthorizationCodeInfo,
  getTrialActivationCode,
} from "@/api/trials.js";
export default {
  name: "activatePage",
  data() {
    return {
      form: {
        code: null,
        PurchaseDuration: 0,
      },
      data: {
        AuthorizationCode: null,
        AuthorizationDeadLineDate: null,
        CreateUserId: null,
        CriterionTypeList: [],
        HospitalName: null,
        PurchaseDuration: null,
        TrialCode: null,
        TrialId: null,
        HospitalCode: null,
      },
    };
  },
  watch: {
    "data.AuthorizationCode": {
      handler() {
        if (!this.data.AuthorizationCode) return;
        this.getAuthorizationCodeInfo();
      },
    },
  },
  methods: {
    // 复制
    copy() {
      this.$copyText(this.form.code)
        .then((res) => {
          // 复制成功
          this.$message.success(
            this.$t("trials:researchRecord:message:copySuccessfully")
          );
        })
        .catch(() => {
          // 复制失败
          this.$alert(this.$t("trials:researchRecord:message:copyFailed"));
        });
    },
    // 生成激活码
    async getTrialActivationCode() {
      try {
        let params = {
          TrialId: this.data.TrialId,
          TrialCode: this.data.TrialCode,
          PurchaseDuration: this.form.PurchaseDuration,
          HospitalName: this.data.HospitalName,
          CriterionTypeList: this.data.CriterionTypeList,
          CreateUserId: this.data.CreateUserId,
          AuthorizationDeadLineDate: null,
          HospitalCode: this.data.HospitalCode,
        };
        let res = await getTrialActivationCode(params);
        if (res.IsSuccess) {
          this.form.code = res.Result;
        }
      } catch (err) {
        console.log(err);
      }
    },
    // 获取项目码信息
    async getAuthorizationCodeInfo() {
      try {
        let params = {
          AuthorizationCode: this.data.AuthorizationCode,
        };
        let res = await getAuthorizationCodeInfo(params);
        if (res.IsSuccess) {
          Object.keys(res.Result).forEach((key) => {
            this.data[key] = res.Result[key];
          });
          this.form.PurchaseDuration = this.data.PurchaseDuration * 12;
        }
      } catch (err) {
        console.log(err);
      }
    },
    fileChange(data) {
      let input = data.target;
      const reader = new FileReader();
      reader.readAsText(input.files[0], "utf8"); // input.files[0]为第一个文件
      reader.onload = () => {
        this.data.AuthorizationCode = reader.result; // reader.result为获取结果
        input.value = null;
      };
    },
    funDownload(content, filename) {
      const eleLink = document.createElement("a");
      eleLink.download = filename;
      eleLink.style.display = "none";
      const blob = new Blob([content]);
      eleLink.href = URL.createObjectURL(blob);
      document.body.appendChild(eleLink);
      eleLink.click();
      document.body.removeChild(eleLink);
    },
    downloadXmlFile() {
      fileDownload(
        this.form.code,
        this.data.TrialCode + "_Activation_Code.lic"
      );
    },
  },
};
</script>
<style lang="scss" scoped>
.copy {
  cursor: pointer;
  color: #409eff;
  margin-left: 20px;
}
.el-form-item__content {
  .el-input {
    width: 60%;
  }
}
</style>