<template>
  <div id="prescriptionPrint">
    <div v-for="(item, index) in advicePrint" :key="index">
      <div
        id="prescription-print"
        class="prescription-print"
        style="page-break-after: always"
      >
        <div class="printTitle" v-if="prescriptions[index].med_type == '1111'">
          {{ orgname }}第一类精神处方笺
        </div>
        <div class="printTitle" v-if="prescriptions[index].med_type == '1112'">
          {{ orgname }}第二类精神处方笺
        </div>
        <div
          class="printTitle"
          v-if="
            prescriptions[index].med_type != '1111' &&
            prescriptions[index].med_type != '1112'
          "
        >
          {{ orgname }}处方笺
        </div>
        <!--<div class="printTitle">{{orgname}}处方笺</div>-->
        <div class="infoTitle">
          <p>姓名：{{ item.patient.name ? item.patient.name : "" }}</p>
          <p>
            性别：
            <span v-if="item.patient.gender == 1">男</span>
            <span v-if="item.patient.gender == 2">女</span>
          </p>
          <p>年龄：{{ getAge(item.patient) ? getAge(item.patient) : "" }}岁</p>
        </div>
        <div class="infoMain">
          <div style="margin-bottom: 10px">
            门诊号：{{ hisPatient.number ? hisPatient.number : "" }}
          </div>
          <div style="margin-bottom: 10px">
            科室：{{ item.info ? getDepart(item.info.departments) : "" }}
          </div>
          <div style="margin-bottom: 10px">
            医保卡号：{{ item.hisPatient.number ? item.hisPatient.number : "" }}
          </div>
          <div style="margin-bottom: 10px" v-if="org_id != 10188">
            电话：{{ item.patient.phone }}
          </div>
          <div style="margin-bottom: 10px" v-else>
            日期：{{ getTime(item.ctime) ? getTime(item.ctime) : "" }}
          </div>
          <div>地址：{{ item.patient.home_address }}</div>
          <div style="display: flex; width: 50%">
            临床诊断：{{ getDiagnosis(item.info.diagnosis) }}
          </div>
        </div>
        <div class="prescriptionBox">
          <div class="Rp">Rp:</div>
          <div
            class="drugsBox"
            v-for="(it, index) in item.advices"
            :key="index"
          >
            <!-- <div class="drugsOne"><span style="font-weight:bold;">{{ index+1 + '.' }}</span>{{it.advice_name?it.advice_name:""}}&nbsp;&nbsp;{{it.single_dose}}{{it.single_dose_unit}}&nbsp;×&nbsp; {{it.prescribing_number}}{{it.prescribing_number_unit}}</div> -->
            <div class="drugsOne">
              <span style="font-weight: bold">{{ index + 1 + "." }}</span
              >{{ it.advice_name ? it.advice_name : "" }}&nbsp;&nbsp;<span
                v-if="it.drug.min_unit != it.drug.dose_unit"
                >{{ it.drug.dose }}{{ it.drug.dose_unit }}&nbsp;* &nbsp;</span
              >{{ it.drug.min_number }}{{ it.drug.min_unit }}/{{
                it.drug.max_unit
              }}&nbsp;×&nbsp; {{ it.prescribing_number
              }}{{ it.prescribing_number_unit }}
            </div>
            <div style="margin-left: 100px">
              <span>用法：{{ it.single_dose }}{{ it.single_dose_unit }}</span
              >&nbsp;&nbsp;<span
                >{{ it.execution_frequency }}&nbsp;{{
                  it.delivery_way
                }}&nbsp;</span
              >&nbsp;&nbsp;<span>{{ it.advice_desc }}</span>
            </div>
          </div>
          <div
            class="drugsBox"
            v-for="(it, i) in item.additionalcharge"
            :key="i"
          >
            <div class="drugsOne">
              {{ it.item_name ? it.item_name : "" }}:&nbsp;{{ it.price }}元/{{
                it.count
              }}次
            </div>
          </div>

          <div
            class="drugsBox"
            v-for="(it, index) in item.project"
            :key="index"
          >
            <div class="drugsOne">
              <span style="font-weight: bold">{{ index + 1 + "." }}</span
              >{{
                it.type == 2
                  ? getProjectName(it.project_id)
                    ? getProjectName(it.project_id)
                    : ""
                  : it.good_info.good_name
              }}&nbsp;&nbsp;{{ it.single_dose
              }}{{ it.single_dose_unit }}&nbsp;×&nbsp; {{ it.count }}{{ unit }}
            </div>
            <div style="margin-left: 100px">
              <span>用法：{{ it.single_dose }}{{ it.single_dose_unit }}</span
              >&nbsp;&nbsp;<span>{{ it.delivery_way }}</span
              >&nbsp;&nbsp;<span>{{ it.advice_desc }}</span>
            </div>
          </div>
          <div
            class="drugsBox"
            v-for="(it, i) in item.additionalcharge"
            :key="i"
          >
            <div class="drugsOne">
              {{ it.project_id ? it.project_id : "" }}:&nbsp;{{
                it.price.toFixed(2)
              }}元/{{ it.count }}次
            </div>
          </div>
          <div style="text-align: center">(以下空白)</div>
        </div>
        <div class="doctorBox" v-if="org_id != 10188">
          <p>
            医师：
            <!-- {{ item.doctor ? item.doctor : "" }} -->
            <span
              style="width: 100px; display: inline-block"
              v-if="item.creator == ''"
            >
              {{ item.doctor }}
            </span>
            <span
              style="width: 100px; display: inline-block"
              v-else-if="doc_name != ''"
            >
              {{ doc_name }}
            </span>
            <img
              style="height: 30px"
              :src="setAdminUserES(item.creator,item.doctor)"
              alt=""
              srcset=""
              v-else
            />
          </p>
          <p>日期：{{ getTime(item.ctime) ? getTime(item.ctime) : "" }}</p>
        </div>
        <div class="doctorBox" v-else>
          <p>药师：</p>
          <p>医师：{{ item.doctor ? item.doctor : "" }}</p>
        </div>
        <div class="actionBar" v-if="org_id != 10188">
          <!-- <p>审核：{{getDoctor(item.advices[0].checker)?getDoctor(item.advices[0].checker):""}}</p>
                 <p>配对：</p>
                 <p>核对：{{getDoctor(item.advices[0].checker)?getDoctor(item.advices[0].checker):""}}</p>
                 <p>发药：{{getDoctor(item.advices[0].execution_staff)?getDoctor(item.advices[0].execution_staff):""}}</p>
                 <p>药费：{{getTotalOne(item.id)?getTotalOne(item.id):0}}元</p> -->

          <p>审核：</p>
          <p>配对：</p>
          <p>核对：</p>
          <p>发药：</p>
          <p>
            药费：{{
              getTotalOne(item.id).toFixed(2)
                ? getTotalOne(item.id).toFixed(2)
                : 0
            }}元
          </p>
          <!--            <p>药费：466.2元</p>-->
        </div>
        <div class="actionBar" v-else>
          <p style="visibility: hidden">审核：</p>
          <p style="visibility: hidden">配对：</p>
          <p style="visibility: hidden">核对：</p>
          <p style="visibility: hidden">发药：</p>
          <p>
            药费：{{
              getTotalOne(item.id).toFixed(2)
                ? getTotalOne(item.id).toFixed(2)
                : 0
            }}元
          </p>
          <!--            <p>药费：551.2元</p>-->
          <!--            <p>药费：466.2元</p>-->
        </div>
        <div style="page-break-after: always"></div>
      </div>
    </div>
  </div>
</template>
<script>
import { jsGetAge, uParseTime } from "@/utils/tools";
import {
  getAllDoctorList,
  getPrescriptionPrint,
  getHisPatientDetail,
} from "@/api/project/project";
import { getInitData } from "@/api/his/his";
export default {
  props: {
    patient_id: Number,
    record_date: String,
    prescription_id: Number,
    ids: String,
  },
  data() {
    return {
      doc_name:"",
      doctorList: [],
      advicePrint: {},
      patient: {},
      tableData: [],
      prescriptionInfo: [],
      hisPatient: {},
      department: [],
      prescriptions: [],
      projectList: [],
      orgname: "",
      diagnoses: [],
      org_id: 0,
      operatorMaps: {},
      operators: [],
      doctorList_1: [],
    };
  },
  methods: {
    // 电子签名
    setAdminUserES(id,name) {
      if (id == 0) {
        return "";
      }
      if (id in this.operatorMaps) {
        return this.operatorMaps[id].url;
      } else {
        this.doc_name = name
        return "";
      }
    },
    getAge(patient) {
      var thisLen = patient.id_card_no.length;
      var birth = "";
      if (thisLen == 15) {
        birth = "19" + patient.id_card_no.substr(6, 6);
      } else {
        birth = patient.id_card_no.substr(6, 8);
      }
      var births =
        birth.substr(0, 4) +
        "-" +
        birth.substr(4, 2) +
        "-" +
        birth.substr(6, 2);
      return jsGetAge(births, "-");
    },

    getAllDoctorList() {
      getAllDoctorList().then((response) => {
        if (response.data.state == 1) {
          var doctor = response.data.data.doctor;

          this.doctorList = doctor;
        }
      });
    },

    getDoctor(id) {
      var name = "";
      for (let i = 0; i < this.doctorList.length; i++) {
        if (id == this.doctorList[i].admin_user_id) {
          name = this.doctorList[i].user_name;
        }
      }
      return name;
    },
    getTime(value, temp) {
      if (value != undefined) {
        return uParseTime(value, temp);
      }
      return "";
    },
    getPrescriptionPrint() {
      var params = {
        // patient_id:this.patient_id,
        // record_date:this.record_date,
        // prescription_id:this.prescription_id,
        patient_id: this.patient_id,
        record_date: this.record_date,
        prescription_id: this.prescription_id,
        ids: this.ids,
        p_type: 2,
      };
      console.log("params", params);
      getPrescriptionPrint(params).then((response) => {
        if (response.data.state == 1) {
          var advicePrint = response.data.data.advicePrint;
          console.log("adviceprint9999", advicePrint);
          this.advicePrint = advicePrint;
          this.prescriptions = advicePrint;

          this.doctorList_1 = response.data.data.eles;
          console.log(this.doctorList_1, "医生列表");
          if (this.doctorList_1.length > 0) {
            var operatorsLen = this.doctorList_1.length;
            for (var index = 0; index < operatorsLen; index++) {
              this.$set(
                this.operatorMaps,
                this.doctorList_1[index].creator,
                this.doctorList_1[index]
              );
            }
          }

          console.log("处方222222", this.prescriptions);
          var hisPatient = response.data.data.hisPatient;
          console.log("hisPatient", hisPatient);
          this.hisPatient = hisPatient;
          var projectlist = response.data.data.projectlist;
          console.log("所有项目列表", projectlist);
          this.projectList = projectlist;
        }
      });
    },
    getHisPatientDetail() {
      const params = {
        patient_id: this.patient_id,
      };
      getHisPatientDetail(params).then((response) => {
        if (response.data.state == 1) {
          var hisPatient = response.data.data.hisPatient;
          console.log("挂号病人", hisPatient);
          this.hisPatient = hisPatient;
        }
      });
    },
    getInitData() {
      getInitData().then((response) => {
        if (response.data.state == 1) {
          this.department = response.data.data.department;
          this.diagnoses = response.data.data.diagnose;
          console.log("争端", this.diagnoses);
        }
      });
    },
    getDepart(id) {
      var name = "";
      for (let i = 0; i < this.department.length; i++) {
        if (id == this.department[i].id) {
          name = this.department[i].name;
        }
      }
      return name;
    },
    getTotalOne(id) {
      var total = 0;
      var addtotal = 0;
      for (let i = 0; i < this.prescriptions.length; i++) {
        if (id == this.prescriptions[i].id) {
          if (this.prescriptions[i].project != null) {
            for (let a = 0; a < this.prescriptions[i].project.length; a++) {
              total =
                total +
                this.prescriptions[i].project[a].price *
                  this.prescriptions[i].project[a].count;
            }
          }

          if (this.prescriptions[i].additionalcharge != null) {
            for (
              let a = 0;
              a < this.prescriptions[i].additionalcharge.length;
              a++
            ) {
              addtotal =
                addtotal +
                this.prescriptions[i].additionalcharge[a].price *
                  this.prescriptions[i].additionalcharge[a].count;
            }
          }
          addtotal = Math.floor(addtotal * 100) / 100;
        }
      }

      for (let i = 0; i < this.prescriptions.length; i++) {
        if (id == this.prescriptions[i].id) {
          if (this.prescriptions[i].advices != null) {
            for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
              total =
                total +
                this.prescriptions[i].advices[a].price *
                  this.prescriptions[i].advices[a].prescribing_number;
            }
          }

          if (this.prescriptions[i].additionalcharge != null) {
            for (
              let a = 0;
              a < this.prescriptions[i].additionalcharge.length;
              a++
            ) {
              addtotal =
                addtotal +
                this.prescriptions[i].additionalcharge[a].price *
                  this.prescriptions[i].additionalcharge[a].count;
            }
          }
          addtotal = Math.floor(addtotal * 100) / 100;
        }
      }

      return total + addtotal;
    },

    getProjectName(id) {
      var project_name = "";
      for (let i = 0; i < this.projectList.length; i++) {
        if (id == this.projectList[i].id) {
          project_name = this.projectList[i].project_name;
        }
      }
      return project_name;
    },

    getDiagnosis(id) {
      let arr = id.split(",");
      var name = "";
      for (let i = 0; i < this.diagnoses.length; i++) {
        if (arr.indexOf(String(this.diagnoses[i].id)) > -1) {
          name += this.diagnoses[i].class_name + " ";
        }
      }
      return name;
    },
  },
  created() {
    this.getAllDoctorList();
    this.getInitData();
    this.getPrescriptionPrint();
    this.getHisPatientDetail();
    var xtuser = this.$store.getters.xt_user;
    this.orgname = xtuser.org.org_name;
    this.org_id = xtuser.org.id;
  },
  watch: {
    ids: function (val) {
      this.ids = val;
      this.getPrescriptionPrint();
    },
  },
};
</script>


<style lang="scss" scoped>
.prescription-print {
  -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27),
    0 0 60px rgba(0, 0, 0, 0.06) inset;
  -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27),
    0 0 40px rgba(0, 0, 0, 0.06) inset;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
  margin-bottom: 20px;
  padding: 20px 10px;
}
.printTitle {
  font-size: 22px;
  text-align: center;
  font-weight: bold;
}
.infoTitle {
  display: flex;
  border-bottom: 2px solid #000;
  margin-top: 10px;
  line-height: 24px;
  padding: 0 10px;
}
.infoTitle p {
  width: 200px;
}
.infoMain {
  display: flex;
  flex-wrap: wrap;
  border-bottom: 2px solid #000;
  padding: 0 10px;
}
.infoMain div {
  width: 50%;
  line-height: 24px;
}
.prescriptionBox {
  padding: 0 10px;
  min-height: 450px;
}
.Rp {
  font-size: 22px;
  font-weight: bold;
}
.drugsBox {
  padding-left: 40px;
  margin-bottom: 10px;
}
.drugsBox div {
  line-height: 20px;
}
.drugsOne {
  line-height: 24px;
}
.drugsOne span {
  margin-right: 20px;
}
.doctorBox {
  display: flex;
  justify-content: space-between;
  padding: 0 10px;
  line-height: 24px;
  border-bottom: 2px solid #000;
}
.actionBar {
  display: flex;
  justify-content: space-between;
  line-height: 24px;
  padding: 0 10px;
}
.actionBar p {
  width: 150px;
}
</style>
