/* eslint-disable */
<template>
  <el-form
    ref="taskAllocationRuleDataForm"
    v-loading="loading"
    :model="form"
    size="small"
    :rules="rules"
    label-width="170px"
  >
    <div class="base-dialog-body">
      <!-- 访视数 -->
      <el-form-item
        :label="$t('trials:consistencyAnalysisRule:table:visitNum')"
        prop="PlanVisitCount"
      >
        <el-input-number
          v-model="form.PlanVisitCount"
          :disabled="isDisable"
          :min="1"
          controls-position="right"
        />
      </el-form-item>
      <!-- 所选访视是否有阅片期 -->
      <el-form-item
        :label="$t('trials:consistencyAnalysisRule:table:isReadingPeriod')"
        prop="IsHaveReadingPeriod"
      >
        <el-radio-group
          v-model="form.IsHaveReadingPeriod"
          :disabled="isDisable || ruleOtherInfo.IsReadingTaskViewInOrder !== 1"
          @change="form.IsGenerateGlobalTask = form.IsHaveReadingPeriod"
        >
          <el-radio
            v-for="item of $d.YesOrNo"
            :key="'form.IsHaveReadingPeriod' + item.value"
            :label="item.value"
            >{{ item.label }}</el-radio
          >
        </el-radio-group>
      </el-form-item>
      <!-- 间隔周期（周） -->
      <el-form-item
        v-if="isSelfAnalysis"
        :label="$t('trials:consistencyAnalysisRule:table:intervalPeriod')"
        prop="IntervalWeeks"
      >
        <el-input-number
          v-model="form.IntervalWeeks"
          :min="0"
          :disabled="isDisable"
          controls-position="right"
        />
      </el-form-item>
      <!-- 计划病例数 -->
      <el-form-item
        :label="$t('trials:consistencyAnalysisRule:table:plannedNum')"
        prop="PlanSubjectCount"
      >
        <el-input-number
          v-model="form.PlanSubjectCount"
          :min="0"
          :disabled="isDisable"
          controls-position="right"
        />
      </el-form-item>
      <!-- 虚拟中心编号 -->
      <el-form-item
        :label="$t('trials:consistencyAnalysisRule:table:siteCode')"
        prop="BlindTrialSiteCode"
      >
        <el-input
          v-model="form.BlindTrialSiteCode"
          maxlength="10"
          style="width: 140px"
          :disabled="!!Result.BlindTrialSiteCode || !!OtherInfo.VitrualSiteCode"
          @input="
            (v) =>
              (form.BlindTrialSiteCode = v.replace(/[^\a-\z\A-\Z0-9]/g, ''))
          "
        />
      </el-form-item>
      <!-- 虚拟受试者位数 -->
      <el-form-item
        :label="$t('trials:consistencyAnalysisRule:table:subjectNum')"
        prop="BlindSubjectNumberOfPlaces"
      >
        <el-input-number
          v-model="form.BlindSubjectNumberOfPlaces"
          :min="1"
          :disabled="isDisable"
          :max="5"
          controls-position="right"
        />
      </el-form-item>
      <!-- 是否生成全局阅片任务 -->
      <el-form-item
        :label="$t('trials:consistencyAnalysisRule:table:isGenerateGlobalTask')"
        prop="IsGenerateGlobalTask"
      >
        <el-radio-group v-model="form.IsGenerateGlobalTask" disabled>
          <el-radio
            v-for="item of $d.YesOrNo"
            :key="'form.IsGenerateGlobalTask' + item.value"
            :label="item.value"
            >{{ item.label }}</el-radio
          >
        </el-radio-group>
      </el-form-item>
    </div>
    <div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
      <el-form-item>
        <!-- 取消 -->
        <el-button
          :disabled="btnLoading"
          size="small"
          type="primary"
          @click="close"
        >
          {{ $t("common:button:cancel") }}
        </el-button>
        <!-- 保存 -->
        <el-button
          size="small"
          type="primary"
          :loading="btnLoading"
          :disabled="isDisable"
          @click="save"
        >
          {{ $t("common:button:save") }}
        </el-button>
      </el-form-item>
    </div>
  </el-form>
</template>
<script>
import {
  getConsistentRule,
  addOrUpdateTaskConsistentRule,
} from "@/api/trials/reading";

export default {
  name: "AddOrUpdateTaskAllocationRuleData",
  props: {
    TrialReadingCriterionId: {
      type: String,
      default() {
        return "";
      },
    },
    OtherInfo: {
      type: Object,
      default() {
        return {};
      },
    },
    trialCriterionList: {
      type: Array,
      default() {
        return [];
      },
    },
    data: {
      type: Object,
      default() {
        return {};
      },
    },
    isDisable: {
      type: Boolean,
      default() {
        return true;
      },
    },
    isSelfAnalysis: {
      type: Boolean,
      default() {
        return true;
      },
    },
    doctorUserList: {
      type: Array,
      default() {
        return [];
      },
    },
  },
  data() {
    return {
      form: {
        Id: null,
        TrialId: this.$route.query.trialId,
        PlanSubjectCount: 10,
        PlanVisitCount: 3,
        IntervalWeeks: 3,
        IsHaveReadingPeriod: null,
        IsGenerateGlobalTask: null,
        BlindTrialSiteCode: "",
        BlindSubjectNumberOfPlaces: 3,
        IsEnable: true,
        Note: "",
      },
      Result: {}, // 接口返回弹窗数据，用于虚拟中心可编辑校验
      rules: {
        IsHaveReadingPeriod: [
          {
            required: true,
            message: this.$t("common:ruleMessage:select"),
            trigger: "blur",
          },
        ],
        IsGenerateGlobalTask: [
          {
            required: true,
            message: this.$t("common:ruleMessage:select"),
            trigger: "blur",
          },
        ],
        PlanSubjectCount: [
          {
            required: true,
            message: this.$t("common:ruleMessage:specify"),
            trigger: "blur",
          },
        ],
        IntervalWeeks: [
          {
            required: true,
            message: this.$t("common:ruleMessage:specify"),
            trigger: "blur",
          },
        ],
        PlanVisitCount: [
          {
            required: true,
            message: this.$t("common:ruleMessage:specify"),
            trigger: "blur",
          },
        ],
        BlindTrialSiteCode: [
          {
            required: true,
            message: this.$t("common:ruleMessage:specify"),
            trigger: "blur",
          },
        ],
        BlindSubjectNumberOfPlaces: [
          {
            required: true,
            message: this.$t("common:ruleMessage:specify"),
            trigger: "blur",
          },
        ],
      },
      loading: false,
      btnLoading: false,
      ruleOtherInfo: {},
    };
  },
  mounted() {
    // this.form.TrialId = this.$route.query.trialId
    // if (Object.keys(this.data).length && this.data.Id) {
    //   this.form = { ...this.data }
    // }
    this.getFrom();
  },
  watch: {
    "OtherInfo.VitrualSiteCode": {
      handler() {
        this.form.BlindTrialSiteCode = this.OtherInfo.VitrualSiteCode;
      },
    },
  },
  methods: {
    getFrom() {
      getConsistentRule({
        TrialId: this.$route.query.trialId,
        IsSelfAnalysis: this.isSelfAnalysis,
        TrialReadingCriterionId: this.TrialReadingCriterionId,
      }).then((res) => {
        this.ruleOtherInfo =
          { IsReadingTaskViewInOrder: res.Result.IsReadingTaskViewInOrder } ||
          {};
        if (res.Result.ConsistentRuleBasic) {
          this.form = res.Result.ConsistentRuleBasic;
          this.Result = JSON.parse(
            JSON.stringify(res.Result.ConsistentRuleBasic)
          );
        } else {
          let o = this.trialCriterionList.find((v) => {
            return v.TrialReadingCriterionId === this.TrialReadingCriterionId;
          });
          this.form.IsHaveReadingPeriod = o.IsReadingPeriod;
          this.form.IsGenerateGlobalTask = o.IsReadingPeriod;
        }
        this.form.BlindTrialSiteCode = this.OtherInfo.VitrualSiteCode;
      });
    },
    save() {
      this.$refs.taskAllocationRuleDataForm.validate((valid) => {
        if (!valid) return;
        this.btnLoading = true;
        this.loading = true;
        this.form.IsSelfAnalysis = this.isSelfAnalysis;
        this.form.TrialReadingCriterionId = this.TrialReadingCriterionId;
        addOrUpdateTaskConsistentRule(this.form)
          .then((res) => {
            this.loading = false;
            this.btnLoading = false;
            this.$message.success(this.$t("common:message:savedSuccessfully"));
            this.$emit("close");
            this.$emit("getList");
          })
          .catch(() => {
            this.loading = false;
            this.btnLoading = false;
          });
      });
    },
    close() {
      this.$emit("close");
    },
  },
};
</script>
<style lang="scss" scoped>
</style>
