<template>
  <el-dialog
    title="接诊评估"
    class="newDialog"
    :modal-append-to-body="false"
    :visible.sync="isVisibility"
    width="854px"
  >
    <div class="warnTxt" v-if="showTxt != ''">{{ showTxt }}</div>
    <el-form :model="receiveTreatmentAsses" label-width="80px">
      <el-form-item label="入室方式 : " v-if="isShow('入室方式')">
        <!--<el-radio-group v-model="receiveTreatmentAsses.way">-->
        <el-radio
          v-for="(item, index) in way_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.way"
          >{{ item.name }}
        </el-radio>
        <!--</el-radio-group>-->
      </el-form-item>
      <el-form-item label="病人意识 : " v-if="isShow('病人意识')">
        <!--<el-radio-group v-model="receiveTreatmentAsses.consciousness">-->
        <el-radio
          v-for="(item, index) in consciousness_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.consciousness"
          >{{ item.name }}
        </el-radio>
        <!--</el-radio-group>-->

        <!--<el-radio v-model="receiveTreatmentAsses.consciousness" label="1">清醒</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.consciousness" label="2">嗜睡</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.consciousness" label="3">昏迷</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.consciousness" label="4">模糊</el-radio>-->
      </el-form-item>
      <el-form-item label="病人食欲 : " v-if="isShow('病人食欲')">
        <el-radio
          v-for="(item, index) in appetite_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.appetite"
          >{{ item.name }}
        </el-radio>

        <!--<el-radio v-model="receiveTreatmentAsses.appetite" label="1">正常</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.appetite" label="2">减退</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.appetite" label="3">恶心</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.appetite" label="4">呕吐</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.appetite" label="5">腹泻</el-radio>-->
      </el-form-item>
      <el-form-item label="病人情况 : " v-if="isShow('病人情况')">
        <el-radio v-model="receiveTreatmentAsses.condition" label="1"
          >住院</el-radio
        >
        <el-radio v-model="receiveTreatmentAsses.condition" label="2"
          >门诊</el-radio
        >
        <el-radio v-model="receiveTreatmentAsses.condition" label="3"
          >手术期</el-radio
        >
        <el-radio v-model="receiveTreatmentAsses.condition" label="4"
          >急诊</el-radio
        >
      </el-form-item>

      <el-form-item
        label="住院号 : "
        v-if="this.receiveTreatmentAsses.condition == '1'"
      >
        <el-input v-model="receiveTreatmentAsses.admission_number"></el-input>
      </el-form-item>

      <el-form-item
        label="诊断:" v-if="isShow('诊断') && this.receiveTreatmentAsses.condition == '1'"
      >
        <el-input v-model="receiveTreatmentAsses.diacrisis"></el-input>
      </el-form-item>

      <el-form-item label="体位 : " v-if="isShow('体位')">
        <el-radio
          v-for="(item, index) in posture_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.posture"
          >{{ item.name }}
        </el-radio>
        <!--<el-radio v-model="receiveTreatmentAsses.posture" label="1">自动体位</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.posture" label="2">平卧位</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.posture" label="3">半卧位</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.posture" label="4">端坐位</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.posture" label="5">躁动不安</el-radio>-->
      </el-form-item>

      <el-form-item label="病情: " v-if="isShow('病情')">
        <el-radio
          v-for="(item, index) in sick_condition_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.sick_condition"
          >{{ item.name }}
        </el-radio>
        <!--<el-radio v-model="receiveTreatmentAsses.sick_condition" label="1">一般</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.sick_condition" label="2">严重</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.sick_condition" label="3">危</el-radio>-->
      </el-form-item>

      <el-form-item
        label-width="100px"
        label="其他病情 : "
        v-if="isShow('其他病情')"
      >
        <el-input
          v-model="receiveTreatmentAsses.sick_condition_other"
        ></el-input>
      </el-form-item>

      <el-form-item
        label-width="150px"
        label="跌倒风险评估评分 : "
        v-if="isShow('跌倒风险评估评分')"
      >
        <el-input
          v-model="receiveTreatmentAsses.score"
          style="width: 100px"
        ></el-input>
      </el-form-item>

      <el-form-item label="风险程度: " v-if="isShow('风险程度')">
        <el-radio v-model="receiveTreatmentAsses.danger_level" label="1"
          >无</el-radio
        >
        <el-radio v-model="receiveTreatmentAsses.danger_level" label="2"
          >低风险</el-radio
        >
        <el-radio v-model="receiveTreatmentAsses.danger_level" label="3"
          >中度风险</el-radio
        >
        <el-radio v-model="receiveTreatmentAsses.danger_level" label="4"
          >高风险</el-radio
        >
      </el-form-item>

      <el-form-item
        label-width="150px"
        label="跌倒风险预防措施: "
        v-if="isShow('跌倒风险预防措施')"
      >
        <!--        <el-radio-->
        <!--          v-for="(item, index) in precaution_arr"-->
        <!--          :key="index"-->
        <!--          :label="item.id"-->
        <!--          v-model="receiveTreatmentAsses.precaution"-->
        <!--          >{{ item.name }}-->
        <!--        </el-radio>-->
        <el-checkbox-group v-model="precautionTwo">
          <el-checkbox
            v-for="item in precaution_arr"
            :label="item.name"
            :key="item.id"
            >{{ item.name }}</el-checkbox
          >
        </el-checkbox-group>
      </el-form-item>
      <el-form-item
        label-width="200px"
        label="其他跌倒风险预防措施 : "
        v-if="isShow('其他跌倒风险预防措施')"
      >
        <el-input v-model="receiveTreatmentAsses.precaution_other"></el-input>
      </el-form-item>

      <el-form-item label="摄入量: " v-if="isShow('摄入量')">
        <!--<el-radio v-model="receiveTreatmentAsses.intake" label="1">正常</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.intake" label="2">减少</el-radio>-->

        <el-radio
          v-for="(item, index) in intake_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.intake"
          >{{ item.name }}
        </el-radio>
      </el-form-item>
      <el-form-item label="营养状况: " v-if="isShow('营养状况')">
        <!--<el-radio v-model="receiveTreatmentAsses.nutrition" label="1">正常</el-radio>-->
        <!--<el-radio v-model="receiveTreatmentAsses.nutrition" label="2">营养不良</el-radio>-->

        <el-radio
          v-for="(item, index) in nutrition_arr"
          :key="index"
          :label="item.id"
          v-model="receiveTreatmentAsses.nutrition"
          >{{ item.name }}
        </el-radio>
      </el-form-item>
      <el-form-item label="心理评估: " v-if="isShow('心理评估')">
        <el-radio
          v-model="receiveTreatmentAsses.psychological_assessment"
          label="1"
          >正常</el-radio
        >
        <el-radio
          v-model="receiveTreatmentAsses.psychological_assessment"
          label="2"
          >异常</el-radio
        >
      </el-form-item>
      <el-form-item
        label-width="150px"
        label="心理评估异常情况 : "
        v-if="
          isShow('心理评估异常情况') &&
            receiveTreatmentAsses.psychological_assessment == 2
        "
      >
        <el-input
          v-model="receiveTreatmentAsses.psychological_assessment_other"
        ></el-input>
      </el-form-item>

      <el-form-item
        label-width="150px"
        label="其他心理评估 : "
        v-if="isShow('其他心理评估')"
      >
        <el-input
          v-model="receiveTreatmentAsses.psychological_other"
        ></el-input>
      </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
      <el-button @click="handleCancle">取 消</el-button>
      <el-button type="primary" v-if="hasPermission" @click="handleComfirm"
        >保 存</el-button
      >
    </div>
  </el-dialog>
</template>

<script>
import { postAccepts } from "@/api/dialysis";
import { uParseTime } from "@/utils/tools";
import store from "@/store";
import { getDataConfig } from "@/utils/data";

import request from "@/utils/request";

export default {
  name: "acceptsTreatmentDialog",
  data() {
    return {
      showTxt: "",
      hasPermission: true,
      isVisibility: false,
      record_date: "",
      way_arr: [],
      consciousness_arr: [],
      appetite_arr: [],
      posture_arr: [],
      sick_condition_arr: [],
      precaution_arr: [],
      intake_arr: [],
      nutrition_arr: [],
      receiveTreatmentAsses: {
        way: "1",
        consciousness: "1",
        appetite: "1",
        condition: "1",
        posture: "1",
        sick_condition: "1",
        danger_level: "1",
        intake: "1",
        nutrition: "1",
        psychological_assessment: "1",
        psychological_assessment_other: "",
        sick_condition_other: "",
        score: "",
        psychological_other: "",
        precaution: "",
        precaution_other: "",
        admission_number: "",
        diacrisis:""
      },
      precautionTwo: []
    };
  },
  methods: {
    isShow(name) {
      var filedList = store.getters.xt_user.fileds;
      for (let i = 0; i < filedList.length; i++) {
        if (
          filedList[i].module == 2 &&
          filedList[i].filed_name_cn == name &&
          filedList[i].is_show == 1
        ) {
          return true;
        }
      }
      return false;
    },
    show(accepts) {
      this.accepts = accepts;
      // console.log("accepts", accepts);
      var arr = [];
      if (this.accepts.precaution) {
        var precaution = this.accepts.precaution.split(",");
        // console.log("precaution", precaution);
        // console.log("hhh", this.precaution_arr);
        for (let i = 0; i < precaution.length; i++) {
          for (let j = 0; j < this.precaution_arr.length; j++) {
            if (parseInt(precaution[i]) == this.precaution_arr[j].id) {
              // console.log("aaaa");
              arr.push(this.precaution_arr[j].name);
            }
          }
        }
        this.precautionTwo = arr;
        // console.log("arr", arr);
      }

      this.getPermission();
      for (var index in this.receiveTreatmentAsses) {
        if (
          index == "condition" ||
          index == "danger_level" ||
          index == "psychological_assessment"
        ) {
          this.receiveTreatmentAsses[index] =
            this.receiver_treatment_access[index] + "";
        } else {
          this.receiveTreatmentAsses[index] = this.receiver_treatment_access[
            index
          ];
        }
      }
      this.isVisibility = true;
    },
    hide() {
      this.isVisibility = false;
    },
    handleCancle: function() {
      this.isVisibility = false;
    },
    handleComfirm: function() {
      var arr = [];
      for (let i = 0; i < this.precaution_arr.length; i++) {
        for (let j = 0; j < this.precautionTwo.length; j++) {
          if (this.precaution_arr[i].name == this.precautionTwo[j]) {
            arr.push(this.precaution_arr[i].id);
          }
        }
      }
      // console.log("arr", arr);
      var obj = arr.join(",");
      this.receiveTreatmentAsses.precaution = obj;
      let ParamsQuery = this.receiveTreatmentAsses;
      // console.log("ParamsQuery", ParamsQuery);
      ParamsQuery["patient"] = this.patient.id;
      ParamsQuery["record_date"] = this.record_date;
      //console.log(this.receiver_treatment_access);
      ParamsQuery["mode"] = "1";
      if (this.receiver_treatment_access.id > 0) {
        ParamsQuery["mode"] = "2";
        if (
          this.$store.getters.xt_user.user.id !=
          this.receiver_treatment_access.creater
        ) {
          ParamsQuery["mode"] = "3";
        }
      }
      // console.log("数据", this.precautionTwo);
      postAccepts(ParamsQuery).then(response => {
        if (response.data.state == 0) {
          this.$message.error(response.data.msg);
          return false;
        } else {
          this.$notify({
            title: "成功",
            message: "提交成功",
            type: "success",
            duration: 2000
          });

          let receive_treatment_asses_resp =
            response.data.data.receiveTreatmentAsses;

          //pror
          var receiver_treatment_access = this.receiver_treatment_access;
          for (var index in receive_treatment_asses_resp) {
            // receiver_treatment_access[index] = receive_treatment_asses_resp[index];
            this.$set(
              receiver_treatment_access,
              index,
              receive_treatment_asses_resp[index]
            );
          }
          this.hide();
        }
      });
    },
    getPermission() {
      request
        .get("/api/func_per/get", {
          params: {
            create_url: "/api/dialysis/accepts?mode=1",
            modify_url: "/api/dialysis/accepts?mode=2",
            modify_other_url: "/api/dialysis/accepts?mode=3",
            module: 2
          }
        })
        .then(res => {
          // console.log(res);
          //console.log("接诊", this.accepts);
          if (res.data.state == 0) {
            this.hasPermission = false;
          } else if (res.data.state == 1) {
            if (this.accepts.id != "" && this.accepts.creater != 0) {
              //有数据
              if (this.accepts.creater == this.$store.getters.xt_user.user.id) {
                //创建人是自己
                if (res.data.data.is_has_modify == false) {
                  this.hasPermission = false;
                  this.showTxt = "你没有修改接诊评估权限";
                }
              } else {
                //创建人不是自己
                if (res.data.data.is_has_modify_other == false) {
                  this.hasPermission = false;
                  this.showTxt = "你没有修改他人接诊评估权限";
                }
              }
            } else if (this.accepts.id == "" || this.accepts.creater == 0) {
              if (res.data.data.is_has_create == false) {
                this.hasPermission = false;
                this.showTxt = "你没有新增接诊评估权限";
              }
            }
          }
        });
    }
  },
  props: {
    receiver_treatment_access: {
      // 双人核对
      type: Object,
      default: () => {
        return { id: 0 };
      }
    },
    patient: {
      // 患者信息
      type: Object,
      default: () => {
        return { id: 0 };
      }
    }
  },
  watch: {
    isVisibility(val) {},
    "receiver_treatment_access.id": function() {
      if (this.receiver_treatment_access.id > 0) {
        for (var index in this.receiveTreatmentAsses) {
          this.receiveTreatmentAsses[index] = this.receiver_treatment_access[
            index
          ];
        }
      }
    }
  },
  created() {
    // console.log("接诊评估", this.receiver_treatment_access);
    var date = this.$route.query && this.$route.query.date;
    this.record_date = uParseTime(date, "{y}-{m}-{d}");

    this.way_arr = getDataConfig("hemodialysis", "way");
    this.consciousness_arr = getDataConfig("hemodialysis", "consciousness");
    this.appetite_arr = getDataConfig("hemodialysis", "appetite");
    this.posture_arr = getDataConfig("hemodialysis", "posture");
    this.sick_condition_arr = getDataConfig("hemodialysis", "sick_condition");
    this.precaution_arr = getDataConfig("hemodialysis", "precaution");
    // console.log("风险", this.precaution_arr);
    this.intake_arr = getDataConfig("hemodialysis", "intake");
    this.nutrition_arr = getDataConfig("hemodialysis", "nutrition");
  }
};
</script>

<style scoped>
.warnTxt {
  text-align: center;
  margin: 0 auto;
  background: #faa331;
  max-width: 240px;
  padding: 10px 20px;
  border-radius: 4px;
  margin-bottom: 10px;
  color: #fff;
}
</style>
<style lang="scss">
.newDialog {
  .el-dialog__body {
    padding: 10px 20px 30px;
  }
}
</style>
