<template>
  <div>
    <div class="Dialog" v-show="!selecting">
      <div class="DialogTit">
        <span @click="close()" class="iconfont">&#xe6e9;</span>
        <h1 class="name">透析下机</h1>

        <span
          class="success"
          v-if="
            this.record.state == 1 ||
              this.$store.getters.user.user.id != this.creator
          "
        ></span>
        <span
          class="success"
          @click="modify()"
          v-if="isPremission || this.$store.getters.user.user.id == this.creator"
          >修改</span
        >
      </div>

      <div class="DialogContent">
        <div class="item" @click="select_nurse">
          <h2 class="name">下机护士</h2>
          <div class="content">
            <span class="text" style="width: 100px">{{
              nurse_id == 0 ? "" : admin_map[nurse_id].name
            }}</span>

            <span class="iconfont">&#xe6f9;</span>
          </div>
        </div>

        <div class="item">
          <h2 class="name">下机时间</h2>
          <div class="content">
            <span
              class="text"
              style="width: 100px"
              @click="selectStartTimeAction"
              >{{ end_time_str }}</span
            >

            <span class="iconfont">&#xe6f9;</span>
          </div>
        </div>

        <div class="perform">
          <button
            @click="commitInfo"
            v-show="record != null && record.id != '' && record.stage == 1"
          >
            执行下机
          </button>
          <button
            :disabled="true"
            style="background-color:lightgray;"
            v-show="record != null && record.id != '' && record.stage == 2"
          >
            已下机
          </button>
          <button
            :disabled="true"
            style="background-color:lightgray;"
            v-show="record == null || record.id == ''"
          >
            未上机
          </button>
        </div>
      </div>
    </div>
    <two-menu ref="selector"></two-menu>
    <mt-datetime-picker
      ref="start_time_picker"
      type="datetime"
      @confirm="didSelectStartTime"
      v-model="end_time"
    ></mt-datetime-picker>
  </div>
</template>

<script>
import { finish, PostModifyEndDialysis } from "@/api/dialysis";
import { Toast } from "vant";
import TwoMenu from "./TwoMenu";
import { parseTime } from "@/utils";

export default {
  name: "PlaneDialog",
  components: {
    TwoMenu
  },
  data() {
    return {
      selecting: false,
      end_time_str: "",
      end_time: new Date(),
      nurse_id: 0,
      isPremission: false,
      creator: 0
    };
  },
  props: {
    prescription_prop: {
      type: Object
    },
    patient_prop: {
      type: Object
    },
    record: {
      type: Object
    },
    admins: {
      type: Array
    },
    admin_map: {
      type: Object
    },
    special_premission: {
      type: Array
    },
    last_monitor_record: {
      type: Object
    }
  },
  mounted() {
    if (this.record.id == "") {
      //没有上下机记录
      this.end_time_str =
        parseTime(Date.parse(new Date()) / 1000, "{y}-{m}-{d} {h}:{i}") + ":00";
    } else {
      if (this.record.start_time > 0) {
        if (this.prescription_prop.id != "") {
          let endTime = 0;
          endTime =
            this.record.start_time +
            this.prescription_prop.dialysis_duration_hour * 3600 +
            this.prescription_prop.dialysis_duration_minute * 60;
          this.end_time_str = parseTime(endTime, "{y}-{m}-{d} {h}:{i}") + ":00";
        } else {
          this.end_time_str =
            parseTime(Date.parse(new Date()) / 1000, "{y}-{m}-{d} {h}:{i}") +
            ":00";
        }
        if (this.record.end_time > 0) {
          this.end_time_str =
            parseTime(this.record.end_time, "{y}-{m}-{d} {h}:{i}") + ":00";
        }
      } else {
        this.end_time_str =
          parseTime(Date.parse(new Date()) / 1000, "{y}-{m}-{d} {h}:{i}") +
          ":00";
      }
    }
    this.end_time = this.end_time_str;

    // if(this.record.idthis.record.end_time == 0)

    // if(this.last_monitor_record.id == 0){
    //
    //   this.end_time_str = parseTime(this.last_monitor_record.operate_time, "{y}-{m}-{d} {h}:{i}") + ":00";
    // }else{
    //   this.end_time_str = parseTime(this.end_time, "{y}-{m}-{d} {h}:{i}") + ":00";
    //
    // }
  },
  created() {
    var date = this.$route.query && this.$route.query.date;
    date *= 1000;
    var newDate = new Date(date);
    var y = newDate.getFullYear();
    var m = newDate.getMonth() + 1;
    var d = newDate.getDate();
    if (isNaN(y) || isNaN(m) || isNaN(d)) {
      newDate = new Date();
      y = newDate.getFullYear();
      m = newDate.getMonth() + 1;
      d = newDate.getDate();
    }
    this.record_date =
      y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d);

    if (this.record == null || this.record.id == "") {
      this.nurse_id = 0;
    } else if (this.record.stage == 1) {
      this.nurse_id = this.$store.getters.user.user.id;
    } else {
      this.nurse_id = this.record.finish_nurse;
    }

    if (this.record.id > 0) {
      for (let i = 0; i < this.special_premission.length; i++) {
        if (
          this.$store.getters.user.user.id ==
          this.special_premission[i].admin_user_id
        ) {
          this.isPremission = true;
        }
      }
    }

    if (this.record.id > 0) {
      if (this.record.finish_creator == 0) {
        this.creator = this.record.finish_nurse;
      } else {
        this.creator = this.record.finish_creator;
      }
    }
  },
  methods: {
    set_last_monitor_record(monitor) {
      this.last_monitor_record = monitor;
      this.end_time_str =
        parseTime(
          this.last_monitor_record.operate_time,
          "{y}-{m}-{d} {h}:{i}"
        ) + ":00";
    },
    modify() {
      let ParamsQuery = {};
      ParamsQuery["id"] = this.record.id;
      ParamsQuery["nurse"] = this.nurse_id;
      ParamsQuery["end_time"] = this.end_time_str;
      PostModifyEndDialysis(ParamsQuery).then(response => {
        if (response.data.state == 0) {
          Toast.fail(response.data.msg);
          return false;
        } else {
          Toast.success("修改成功");
          this.$emit("did_off", response.data.data.dialysis_order);
          var record = this.record;
          for (const key in response.data.data.dialysis_order) {
            this.$set(record, key, response.data.data.dialysis_order[key]);
          }
        }
      }).catch(err => {
        Toast.fail(err)
      });
    },
    didSelectStartTime: function(time) {
      this.end_time_str = parseTime(time, "{y}-{m}-{d} {h}:{i}") + ":00";
    },
    selectStartTimeAction: function() {
      if (this.record.id != 0) {
        if (this.record.end_time > 0) {
          var creator = 0;
          if (this.record.finish_creator == 0) {
            creator = this.record.finish_nurse;
          } else {
            creator = this.record.finish_creator;
          }
          if (
            this.$store.getters.user.user.id == creator ||
            this.isPremission
          ) {
            this.$refs.start_time_picker.open();
          } else {
            return;
          }
        } else {
          this.$refs.start_time_picker.open();
        }
      } else {
        this.$refs.start_time_picker.open();
      }
    },
    commitInfo: function() {
      Toast.loading({ forbidClick: true, duration: 0 });
      let ParamsQuery = {};
      ParamsQuery["patient"] = this.patient_prop.id;
      ParamsQuery["record_date"] = this.record_date;
      ParamsQuery["nurse"] = this.nurse_id;
      ParamsQuery["end_time"] = this.end_time_str;

      finish(ParamsQuery).then(response => {
        if (response.data.state == 0) {
          Toast.fail(response.data.msg);
          return false;
        } else {
          Toast.success("下机成功");
          this.$emit("did_off", response.data.data.assessmentAfterDislysis);
          var record = this.record;
          for (const key in response.data.data.dialysisOrder) {
            this.$set(record, key, response.data.data.dialysisOrder[key]);
            // record[key] = response.data.data.dialysisOrder[key]
          }
          // console.log(this.record)
        }
      }).catch(err => {
        Toast.fail(err)
      });
    },
    close: function() {
      this.$emit("close");
    },
    select_nurse: function() {
      if (this.record != null && this.record.id != "") {
        if (this.record.stage == 1) {
          this.selecting = true;
          var t = this;
          this.$refs.selector.showSingleSelect(
            this.admins,
            this.nurse_id,
            "选择下机护士",
            "name",
            "id",
            function(select_id) {
              console.log("nurse id: ", select_id);
              t.nurse_id = select_id;
            },
            function() {
              t.selecting = false;
            }
          );
        } else {
          var creator = 0;
          if (this.record.finish_creator == 0) {
            creator = this.record.finish_nurse;
          } else {
            creator = this.record.finish_creator;
          }
          if (
            this.$store.getters.user.user.id == creator ||
            this.isPremission
          ) {
            this.selecting = true;
            var t = this;
            this.$refs.selector.showSingleSelect(
              this.admins,
              this.nurse_id,
              "选择下机护士",
              "name",
              "id",
              function(select_id) {
                console.log("nurse id: ", select_id);
                t.nurse_id = select_id;
              },
              function() {
                t.selecting = false;
              }
            );
          } else {
            return;
          }
        }
      }
    },
    open: function() {
      this.selecting = false;
      this.$refs.selector.hide();
    }
  },
  watch: {
    "record.stage": function(val) {
      if (val == 2) {
        for (let i = 0; i < this.special_premission.length; i++) {
          if (
            this.$store.getters.user.user.id ==
            this.special_premission[i].admin_user_id
          ) {
            this.isPremission = true;
          }
        }
        if (this.record.finish_nurse == 0) {
          this.creator = this.record.finish_nurse;
        } else {
          this.creator = this.record.finish_creator;
        }
      }

      console.log(this.creator);
      console.log(this.$store.getters.user.user.id);
    }
  }
};
</script>

<style style="stylesheet/scss" lang="scss" scoped>
.perform {
  text-align: center;
  font-size: 0.3rem;
  padding-top: 2rem;
  .crew {
    color: $pgh-color;
  }
  button {
    background: $main-color;
    color: #fff;
    font-size: 0.45rem;
    text-align: center;
    width: 3rem;
    height: 1.2rem;
    line-height: 1.2rem;
    border-radius: 4px;
    margin-top: 10px;
  }
}
</style>
