<template>
  <div>
    <div
      style="display: flex; justify-content: space-between; margin-bottom: 10px"
    >
      <div>
        <el-select
          size="small"
          v-model="item_type"
          placeholder="请选择"
          style="width: 150px; margin-left: 10px"
          @change="changeItem"
        >
          <el-option label="全部" value="0"> </el-option>
          <el-option
            v-for="(item, index) in items"
            :key="index"
            :label="item.name"
            :value="item.id"
          >
          </el-option>
        </el-select>

        <el-input
          size="small"
          style="width: 150px"
          v-model="keywords"
          class="filter-item"
          placeholder="请输入项目名称"
        />
        <el-button
          size="small"
          style="margin: 0 10px"
          class="filter-item"
          type="primary"
          @click="searchAction"
          >搜索
        </el-button>
        <el-date-picker
          v-model="chargeDate"
          type="daterange"
          value-format="yyyy-MM-dd"
          range-separator="至"
          start-placeholder="开始日期"
          @change="changeDate"
          end-placeholder="结束日期"
        >
        </el-date-picker>
        <el-button type="primary" size="small" @click="toPrint">打印</el-button>
        <el-button type="primary" size="small" @click="toPrintInvoice"
          >发票打印</el-button
        >
      </div>
      <div></div>
    </div>
    <el-table
      :data="tableList"
      border
      :row-style="{ color: '#303133' }"
      ref="table"
      :header-cell-style="{
        backgroundColor: 'rgb(245, 247, 250)',
        color: '#606266',
      }"
      max-height="600"
      show-summary
      v-loading="detail_loading"
      highlight-current-row
    >
      <el-table-column type="index" label="序号" width="60px" align="center">
        <template slot-scope="scope">
          {{ scope.$index + 1 }}
        </template>
      </el-table-column>
      <el-table-column align="center" label="处方日期">
        <template slot-scope="scope">
          <span v-if="scope.row.record_date > 0"
            >{{ getTimes(scope.row.record_date) }}
          </span>
        </template>
      </el-table-column>
      <el-table-column align="center" label="费用分类">
        <template slot-scope="scope">
          <span v-if="scope.row.type == 1">
            {{ scope.row.cost_type }}
          </span>
          <span v-if="scope.row.type == 2">
            {{ scope.row.cost_type }}
          </span>
          <span v-if="scope.row.type == 3"> 材料费 </span>
        </template>
      </el-table-column>
      <el-table-column align="center" label="项目名称">
        <template slot-scope="scope">
          <span>{{ scope.row.name }}</span>
        </template>
      </el-table-column>
      <el-table-column align="center" label="规格型号">
        <template slot-scope="scope">
          {{ scope.row.spec }}
        </template>
      </el-table-column>
      <el-table-column align="center" label="数量">
        <template slot-scope="scope">
          {{ scope.row.count_number }}
          {{ scope.row.unit }}
        </template>
      </el-table-column>
      <el-table-column align="center" label="单价">
        <template slot-scope="scope">
          {{ scope.row.pric }}
        </template>
      </el-table-column>
      <el-table-column align="center" label="金额" prop="total_all">
        <template slot-scope="scope">
          <!-- <span v-if="scope.row.is_total == 1">{{ scope.row.total }}</span>  
          <span v-if="scope.row.is_total == 2">{{ (scope.row.price * scope.row.count).toFixed(2) }}</span>   -->
          <span>{{
            (scope.row.count_number * scope.row.pric).toFixed(2)
          }}</span>
        </template>
      </el-table-column>
      <el-table-column align="center" label="医保类别">
        <template slot-scope="scope">
          {{ getChrgitmLv(scope.row.medical_insurance_level) }}

          <!-- <span v-if="balanceAccountsType == 2">{{getChrgitmLv(scope.row.chrgitm_lv)}}</span>

         <span v-if="balanceAccountsType != 2">
           <span v-if="scope.row.type == 1">
              {{getAdviceMedChrgintmLv(scope.row.advice_id)}}
           </span>
           <span v-if="scope.row.type == 2">
             {{getProjectMedChrgintmLv(scope.row.project_id)}}
           </span>
          <span v-if="scope.row.type == 3">
              {{getProjectMedChrgintmLv(scope.row.project_id)}}
           </span>
         </span> -->
        </template>
      </el-table-column>
    </el-table>
    <div style="margin-top: 25px">
      <div class="listInfo">
        <div>西药：{{ getWesternMedicineCostTotal() }}</div>
        <div>中成药：{{ getChineseTraditionalMedicineCostTotal() }}</div>
        <div>中草药：{{ getChineseTotal() }}</div>
      </div>
      <div class="listInfo">
        <div>检查费：{{ getCheckCostTotal() }}</div>
        <div>输氧费：{{ getOxygen() }}</div>
        <div>手术费：{{ getOperation() }}</div>
      </div>
      <div class="listInfo">
        <div>化验费：{{ getLaboratoryCostTotal() }}</div>
        <div>输血费：{{ getBlood() }}</div>
        <div>诊断费：{{ getZhenChaCostTotal() }}</div>
      </div>
      <div class="listInfo">
        <div>治疗费：{{ getTreatement() }}</div>
        <div>护理费：{{ getNursing() }}</div>
        <div>床位费：{{ getBedCostTotal() }}</div>
      </div>
      <div class="listInfo" style="margin-bottom: 20px">
        <div>麻醉费：{{ getAnesthesia() }}</div>
        <div>材料费：{{ getMaterialCostTotal() }}</div>
        <div>其他：{{ getOtherCostTotal() }}</div>
      </div>
    </div>
  </div>
</template>


<script>
import BreadCrumb from "@/xt_pages/components/bread-crumb";
import { getGatherDetailList } from "@/api/his/his_tools";
import { uParseTime } from "@/utils/tools";
const moment = require("moment");
export default {
  components: {
    BreadCrumb,
  },
  props: {
    patient_id: {
      type: Number,
      default: 0,
    },
  },

  data() {
    return {
      detail_loading: false,
      tempArr: [],
      pos: 0,
      search_input: "",

      sameRowArr: [],
      keywords: "",
      tableData: [],
      chargeDate: [
        moment(new Date()).add("year", 0).format("YYYY-MM-DD"),
        moment(new Date()).add("year", 0).format("YYYY-MM-DD"),
      ],
      item_type: "0",
      items: [
        { id: 1, name: "药品" },
        { id: 2, name: "项目" },
        { id: 3, name: "耗材" },
      ],
      list: [],
      patient: {},
      his_patient: {},
      hisDepatment: [],
      westernMedicineCostTotal: 0,
      chineseTraditionalMedicineCostTotal: 0,
      checkCostTotal: 0,
      laboratoryCostTotal: 0,
      zhenChaCostTotal: 0,
      bedCostTotal: 0,
      materialCostTotal: 0,
      otherCostTotal: 0,
      tableList: [],
      order_info_list: [],
      balanceAccountsType: 0,
      medicalInsuranceLevelList: [],
      drugTypeList: [],
      costClassifyList: [],
      id: 0,
      start_time: "",
      end_time: "",
      his_record_patient: {},
      orderList: [],
    };
  },
  methods: {
    searchAction() {
      let table_id = this.$store.getters.pagedata.list.table_id;
      if (table_id == undefined) {
        this.$store.commit("SET_PAGEDATA", {
          table_id: 0,
          type_id: this.id,
          keywords: this.keywords,
          start_time: this.chargeDate[0],
          end_time: this.chargeDate[1],
          patient_id: this.patient_id,
        });
      } else {
        this.$store.commit("SET_PAGEDATA", {
          table_id: table_id,
          type_id: this.id,
          keywords: this.keywords,
          start_time: this.chargeDate[0],
          end_time: this.chargeDate[1],
          patient_id: this.patient_id,
        });
      }
      this.tableList = [];
      this.getGatherDetailList();
      // console.log(this.tableList, "查看条约");
    },
    getPrice(val) {
      var total_price = 0;
      for (let i = 0; i < val.length; i++) {
        total_price += val[i].count * val[i].price;
      }
      return total_price.toFixed(2);
    },
    changeDate() {
      this.start_time = this.chargeDate[0];
      this.end_time = this.chargeDate[1];
      this.getGatherDetailList();
    },
    changeItem(id) {
      this.id = id;
      let table_id = this.$store.getters.pagedata.list.table_id;
      if (table_id == undefined) {
        this.$store.commit("SET_PAGEDATA", {
          table_id: 0,
          type_id: this.id,
          keywords: this.keywords,
          start_time: this.chargeDate[0],
          end_time: this.chargeDate[1],
          patient_id: this.patient_id,
        });
      } else {
        this.$store.commit("SET_PAGEDATA", {
          table_id: table_id,
          type_id: this.id,
          keywords: this.keywords,
          start_time: this.chargeDate[0],
          end_time: this.chargeDate[1],
          patient_id: this.patient_id,
        });
      }
      this.tableList = [];
      this.getGatherDetailList();
    },
    getGatherDetailList() {
      let start_time = this.chargeDate[0];
      let end_time = this.chargeDate[1];
      let params = {
        patient_id: this.patient_id,
        start_time: start_time,
        end_time: end_time,
        type: this.item_type,
        keyword: this.keywords,
      };
      getGatherDetailList(params).then((response) => {
        if (response.data.state == 0) {
          this.$message.error(response.data.msg);
          return false;
        } else {
          this.drugTypeList = response.data.data.drugTypeList;
          this.costClassifyList = response.data.data.costClassifyList;
          var list = response.data.data.list;

          var new_arr = [];

          for (let i = 0; i < list.length; i++) {
            for (let j = 0; j < list[i].orders.length; j++) {
              new_arr.push(list[i].orders[j]);
            }
          }

          var order_info = [];
          for (let i = 0; i < new_arr.length; i++) {
            for (let j = 0; j < new_arr[i].order_info.length; j++) {
              order_info.push(new_arr[i].order_info[j]);
            }
          }

          for (let i = 0; i < order_info.length; i++) {
            if (order_info[i].advice_id > 0) {
              order_info[i].item_id =
                order_info[i].advice.drug.id + "_" + order_info[i].pric;
            }
            if (order_info[i].project_id > 0) {
              if (order_info[i].project.type == 2) {
                order_info[i].item_id =
                  order_info[i].project.project.id + "_" + order_info[i].pric;
              }
              if (order_info[i].project.type == 3) {
                order_info[i].item_id =
                  order_info[i].project.good_info.id + "_" + order_info[i].pric;
              }
            }
          }

          //合并，相同的合并在一起

          let dataInfo = {};
          order_info.forEach((item, index) => {
            let { item_id } = item;
            if (!dataInfo[item_id]) {
              dataInfo[item_id] = {
                item_id,
                child: [],
                count_number: 0,
                record_date: "",
                cost_type: "",
                name: "",
                pric: item.pric,
                chrgitm_lv: "",
                advice_id: item.advice_id,
                project_id: item.project_id,
                type: 0,
                spec: "",
                unit: "",
                medical_insurance_level: "",
                cost_type: "",
                total_all: 0,
              };
            }
            dataInfo[item_id].child.push(item);
          });
          let arr = Object.values(dataInfo);

          for (let i = 0; i < arr.length; i++) {
            for (let j = 0; j < arr[i].child.length; j++) {
              if (arr[i].advice_id > 0) {
                arr[i].record_date = arr[i].child[0].advice.advice_date;
                arr[i].type = 1;
                arr[i].name = arr[i].child[0].advice.advice_name;
                arr[i].spec =
                  arr[i].child[0].advice.drug.dose +
                  arr[i].child[0].advice.drug.dose_unit +
                  "*" +
                  arr[i].child[0].advice.drug.min_number +
                  arr[i].child[0].advice.drug.min_unit +
                  "/" +
                  arr[i].child[0].advice.drug.max_unit;
                arr[i].unit = arr[i].child[0].advice.prescribing_number_unit;
                arr[i].cost_type = arr[i].child[0].advice.drug.drug_type;
                arr[i].medical_insurance_level =
                  arr[i].child[0].advice.drug.medical_insurance_level;
              }
              if (arr[i].project_id > 0) {
                arr[i].record_date = arr[i].child[0].project.record_date;
                arr[i].type = arr[i].child[0].project.type;
                if (arr[i].child[0].project.type == 2) {
                  arr[i].name = arr[i].child[0].project.project.project_name;
                  arr[i].spec = arr[i].child[0].project.project.project_name;
                  arr[i].unit = arr[i].child[0].project.project.unit;
                  arr[i].medical_insurance_level =
                    arr[i].child[0].project.project.medical_coverage;
                  arr[i].cost_type =
                    arr[i].child[0].project.project.cost_classify;
                }
                if (arr[i].child[0].project.type == 3) {
                  arr[i].name = arr[i].child[0].project.good_info.good_name;
                  arr[i].spec =
                    arr[i].child[0].project.good_info.specification_name;
                  arr[i].unit = arr[i].child[0].project.good_info.packing_unit;
                  arr[i].medical_insurance_level =
                    arr[i].child[0].project.good_info.medical_insurance_level;
                  arr[i].cost_type = "材料费";
                }
              }
              arr[i].count_number += arr[i].child[j].cnt;
            }
          }

          for (let i = 0; i < arr.length; i++) {
            if (arr[i].advice_id > 0) {
              arr[i].cost_type = this.getDrugType(arr[i].cost_type);
            }
            if (arr[i].type == 2) {
              arr[i].cost_type = this.getCostType(arr[i].cost_type);
            }
            arr[i].total_all = (arr[i].count_number * arr[i].pric).toFixed(2);
          }
          this.tableList = arr;

          this.patient = response.data.data.patient;

          this.his_patient = response.data.data.his_patient;
          this.hisDepatment = response.data.data.hisDepatment;
          this.order = response.data.data.order;
          this.his_record_patient = response.data.data.his_record_patient;
          this.medicalInsuranceLevelList =
            response.data.data.medicalInsuranceLevelList;

          let list_1 = this.$store.getters.pagedata.list;
          if (list_1.keywords == undefined) {
            this.keywords = "";
          } else {
            this.keywords = list_1.keywords;
          }
          this.id = list_1.type_id;
          this.item_type = this.id;
          if(this.item_type == undefined){
            this.item_type = "0"
          }else{
            this.item_type = this.id;
          }
          console.log(this.item_type,'this.item_type')
          

          if (this.keywords != "") {
            for (let i = 0; i < this.tableList.length; i++) {
              if (this.tableList[i].name.indexOf(this.keywords) > -1) {
                new_arr.push(this.tableList[i]);
              }
            }
            var obj = { index: "合计", is_total: 1, total: 0 };
            obj.total = this.getPrice(new_arr);
            this.tableList = [];
            this.tableList = new_arr;
          }
          if (this.id == 1) {
            var new_arr = [];
            for (let i = 0; i < this.tableList.length; i++) {
              if (this.tableList[i].type == 1) {
                new_arr.push(this.tableList[i]);
              }
            }
            this.tableList = [];
            this.tableList = new_arr;
          }
          if (this.id == 2) {
            var new_arr = [];
            for (let i = 0; i < this.tableList.length; i++) {
              if (this.tableList[i].type == 2) {
                new_arr.push(this.tableList[i]);
              }
            }
            this.tableList = [];
            this.tableList = new_arr;
          }
          if (this.id == 3) {
            var new_arr = [];
            for (let i = 0; i < this.tableList.length; i++) {
              if (this.tableList[i].type == 3) {
                new_arr.push(this.tableList[i]);
              }
            }
            this.tableList = [];
            this.tableList = new_arr;
          }
        }
      });
    },
    getAdviceName(id) {
      var drug_name = "";
      for (let i = 0; i < this.tableData.length; i++) {
        if (id == this.tableData[i].advice_id) {
          drug_name = this.tableData[i].advice.advice_name;
        }
      }
      return drug_name;
    },
    getProjectName(id) {
      var project_name = "";
      for (let i = 0; i < this.tableData.length; i++) {
        if (id == this.tableData[i].project_id) {
          project_name = this.tableData[i].project.project.project_name;
        }
      }
      return project_name;
    },
    setNewData(details) {
      let drug_ids = [];
      let project_ids = [];

      for (let i = 0; i < details.length; i++) {
        if (
          details[i].advice &&
          details[i].advice.id > 0 &&
          details[i].advice.prescription &&
          details[i].advice.prescription.type == 1
        ) {
          //药品

          let obj = {
            id: details[i].advice.drug_id,
            price: details[i].advice.price,
            record_date: details[i].advice.advice_date,
          };
          drug_ids.push(obj);
        } else if (
          details[i].project &&
          details[i].project.id > 0 &&
          details[i].project.prescription &&
          details[i].project.prescription.type == 2
        ) {
          //项目
          let obj = {
            id: details[i].project.project_id,
            price: details[i].project.price,
            record_date: details[i].project.record_date,
          };
          project_ids.push(obj);
        }
      }

      let new_drug_ids = this.unique(drug_ids);
      let new_project_ids = this.unique(project_ids);
      let list = [];

      if (new_drug_ids.length > 0 && new_project_ids.length == 0) {
        for (let i = 0; i < new_drug_ids.length; i++) {
          let obj = {};
          let count = 0;
          for (let a = 0; a < details.length; a++) {
            if (
              new_drug_ids[i].id == details[a].advice.drug_id &&
              new_drug_ids[i].price == details[a].advice.price
            ) {
              obj["name"] = details[a].advice.advice_name;
              obj["spec"] =
                details[a].advice.drug.dose +
                details[a].advice.drug.dose_unit +
                "*" +
                details[a].advice.drug.min_number +
                details[a].advice.drug.min_unit +
                "/" +
                details[a].advice.drug.max_unit;
              obj["unit"] = details[a].advice.drug.min_unit;
              obj["medicine_insurance_kind"] = this.getMedicineInsuranceType(
                details[a].chrgitm_lv
              );
              obj["med_chrgitm_type"] = this.getType(
                details[a].med_chrgitm_type
              );
              obj["price"] = parseFloat(details[a].pric);
              obj["is_total"] = 2;
              obj["record_date"] = details[a].advice.record_date;
              obj["chrgitm_lv"] = details[a].chrgitm_lv;
              count = count + details[a].cnt;
            }
          }
          obj["count"] = count;
          list.push(obj);
        }
      }
      if (new_drug_ids.length == 0 && new_project_ids.length > 0) {
        for (let i = 0; i < new_project_ids.length; i++) {
          let obj = {};
          let count = 0;
          for (let a = 0; a < details.length; a++) {
            if (
              new_project_ids[i].id == details[a].project.project_id &&
              new_project_ids[i].price == details[a].project.price
            ) {
              if (details[a].project.type == 2) {
                obj["name"] = details[a].project.project.project_name;
                obj["spec"] = details[a].project.project.project_name;
                obj["unit"] = details[a].project.project.unit;
                obj["record_date"] = details[a].project.record_date;
              } else if (details[a].project.type == 3) {
                obj["name"] = details[a].project.good_info.good_name;
                obj["spec"] = details[a].project.good_info.specification_name;
                obj["unit"] = details[a].project.good_info.packing_unit;
                obj["record_date"] = details[a].project.record_date;
              }
              obj["medicine_insurance_kind"] = this.getMedicineInsuranceType(
                details[a].chrgitm_lv
              );
              obj["med_chrgitm_type"] = this.getType(
                details[a].med_chrgitm_type
              );
              obj["price"] = parseFloat(details[a].pric);
              obj["chrgitm_lv"] = details[a].chrgitm_lv;
              obj["is_total"] = 2;

              count = count + details[a].cnt;
            }
          }
          obj["count"] = count;
          list.push(obj);
        }
      }

      if (new_drug_ids.length > 0 && new_project_ids.length > 0) {
        for (let i = 0; i < new_drug_ids.length; i++) {
          let obj = {};
          let count = 0;
          for (let a = 0; a < details.length; a++) {
            if (
              new_drug_ids[i].id == details[a].advice.drug_id &&
              new_drug_ids[i].price == details[a].advice.price
            ) {
              obj["name"] = details[a].advice.advice_name;
              obj["spec"] =
                details[a].advice.drug.dose +
                details[a].advice.drug.dose_unit +
                "*" +
                details[a].advice.drug.min_number +
                details[a].advice.drug.min_unit +
                "/" +
                details[a].advice.drug.max_unit;
              obj["unit"] = details[a].advice.drug.min_unit;
              obj["medicine_insurance_kind"] = this.getMedicineInsuranceType(
                details[a].chrgitm_lv
              );
              obj["med_chrgitm_type"] = this.getType(
                details[a].med_chrgitm_type
              );
              obj["price"] = parseFloat(details[a].pric);
              obj["is_total"] = 2;
              obj["record_date"] = details[a].advice.record_date;
              obj["chrgitm_lv"] = details[a].chrgitm_lv;
              count = count + details[a].cnt;
            }
          }
          obj["count"] = count;
          list.push(obj);
        }

        for (let i = 0; i < new_project_ids.length; i++) {
          let obj = {};
          let count = 0;
          for (let a = 0; a < details.length; a++) {
            if (
              new_project_ids[i].id == details[a].project.project_id &&
              new_project_ids[i].price == details[a].project.price
            ) {
              if (details[a].project.type == 2) {
                obj["name"] = details[a].project.project.project_name;
                obj["spec"] = "";
                obj["unit"] = details[a].project.project.unit;
              } else if (details[a].project.type == 3) {
                obj["name"] = details[a].project.good_info.good_name;
                obj["spec"] = "";
                obj["unit"] = details[a].project.good_info.packing_unit;
              }
              obj["medicine_insurance_kind"] = this.getMedicineInsuranceType(
                details[a].chrgitm_lv
              );
              obj["med_chrgitm_type"] = this.getType(
                details[a].med_chrgitm_type
              );
              obj["price"] = parseFloat(details[a].pric);
              obj["is_total"] = 2;
              obj["record_date"] = details[a].project.record_date;
              obj["chrgitm_lv"] = details[a].chrgitm_lv;
              count = count + details[a].cnt;
            }
          }
          obj["count"] = count;
          list.push(obj);
        }
      }

      return list;
    },

    getMedicineInsuranceType(type) {
      switch (type) {
        case "01":
          return "甲类";
          break;
        case "02":
          return "乙类";

          break;
        case "03":
          return "自费";
          break;
      }
    },
    getType(med_chrgitm_type) {
      switch (med_chrgitm_type) {
        case "01":
          return "床位费";
          break;
        case "02":
          return "诊察费";

          break;
        case "03":
          return "检查费";

          break;
        case "04":
          return "化验费";
          break;
        case "05":
          return "治疗费";

          break;
        case "06":
          return "手术费";

          break;
        case "07":
          return "护理费";

          break;
        case "08":
          return "材料费";

          break;
        case "09":
          return "西药费";

          break;
        case "10":
          return "中药饮片费";

          break;
        case "11":
          return "中成药费";

          break;
        case "12":
          return "一般诊疗费";

          break;
        case "13":
          return "挂号费";

          break;
        case "14":
          return "其他费";

          break;
      }
    },
    unique(array) {
      // res用来存储结果
      var res = [];
      for (var i = 0, arrayLen = array.length; i < arrayLen; i++) {
        for (var j = 0, resLen = res.length; j < resLen; j++) {
          if (array[i].id === res[j].id && array[i].price === res[j].price) {
            break;
          }
        }
        // 如果array[i]是唯一的，那么执行完循环，j等于resLen
        if (j === resLen) {
          res.push(array[i]);
        }
      }
      return res;
    },
    getTotal: function (items) {
      let total = 0;
      for (let i = 0; i < items.length; i++) {
        total =
          Number(total) +
          Number(
            (parseFloat(items[i].count) * parseFloat(items[i].price)).toFixed(2)
          );
      }
      return total.toFixed(2);
    },
    getTimes(time) {
      if (time < 0) {
        return "";
      } else {
        return uParseTime(time, "{y}-{m}-{d}");
      }
    },
    toPrint() {
      this.$router.push({
        path:
          "/hisTool/gatherPrint?patient_id=" +
          this.patient_id +
          "&start_time=" +
          this.start_time +
          "&end_time=" +
          this.end_time +
          "&type=" +
          this.item_type +
          "&keyword=" +
          this.keywords +
          "&id=" +
          this.id,
      });
      let table_id = this.$store.getters.pagedata.list.table_id;
      if (table_id == undefined) {
        this.$store.commit("SET_PAGEDATA", {
          table_id: 0,
          type_id: this.id,
          keywords: this.keywords,
          start_time: this.chargeDate[0],
          end_time: this.chargeDate[1],
          patient_id: this.patient_id,
        });
      } else {
        this.$store.commit("SET_PAGEDATA", {
          table_id: table_id,
          type_id: this.id,
          keywords: this.keywords,
          start_time: this.chargeDate[0],
          end_time: this.chargeDate[1],
          patient_id: this.patient_id,
        });
      }
    },
    toPrintInvoice() {
      this.$router.push({
        path:
          "/hisTool/gatherPrintInvoice?patient_id=" +
          this.patient_id +
          "&start_time=" +
          this.start_time +
          "&end_time=" +
          this.end_time +
          "&type=" +
          this.item_type +
          "&keyword=" +
          this.keywords,
      });
    },
    setMonthPrescription(month_prescriptions) {
      let drug_month_prescriptions = {
        advices: [],
      };
      let drug_ids = [];
      let project_month_prescriptions = {
        project: [],
      };
      let project_ids = [];

      for (let i = 0; i < month_prescriptions.length; i++) {
        if (month_prescriptions[i].type == 1) {
          //药品
          for (let a = 0; a < month_prescriptions[i].advices.length; a++) {
            let obj = {
              id: month_prescriptions[i].advices[a].drug_id,
              price: month_prescriptions[i].advices[a].price,
            };
            drug_ids.push(obj);
            drug_month_prescriptions.advices.push(
              month_prescriptions[i].advices[a]
            );
          }
        } else if (month_prescriptions[i].type == 2) {
          //项目
          for (let a = 0; a < month_prescriptions[i].project.length; a++) {
            let obj = {
              id: month_prescriptions[i].project[a].project_id,
              price: month_prescriptions[i].project[a].price,
            };
            project_ids.push(obj);
            project_month_prescriptions.project.push(
              month_prescriptions[i].project[a]
            );
          }
        }
      }

      drug_ids = this.unique(drug_ids);
      project_ids = this.unique(project_ids);

      for (let i = 0; i < drug_ids.length; i++) {
        let obj = {};
        let count = 0;
        for (let a = 0; a < drug_month_prescriptions.advices.length; a++) {
          if (
            drug_ids[i].price == drug_month_prescriptions.advices[a].price &&
            drug_ids[i].id == drug_month_prescriptions.advices[a].drug_id
          ) {
            obj["advice_id"] = drug_month_prescriptions.advices[a].id;
            obj["name"] = drug_month_prescriptions.advices[a].advice_name;
            obj["statistical_classification"] = "";
            obj["type"] = 1;
            obj["single_dose"] =
              drug_month_prescriptions.advices[a].single_dose;
            obj["delivery_way"] =
              drug_month_prescriptions.advices[a].delivery_way;
            obj["execution_frequency"] =
              drug_month_prescriptions.advices[a].execution_frequency;
            obj["day"] = drug_month_prescriptions.advices[a].day;
            obj["prescribing_number_unit"] =
              drug_month_prescriptions.advices[a].prescribing_number_unit;
            obj["remark"] = drug_month_prescriptions.advices[a].remark;
            obj["price"] = parseFloat(
              drug_month_prescriptions.advices[a].price
            );
            obj["record_date"] =
              drug_month_prescriptions.advices[a].advice_date;
            obj["spec"] =
              drug_month_prescriptions.advices[a].drug.dose +
              drug_month_prescriptions.advices[a].drug.dose_unit +
              "*" +
              drug_month_prescriptions.advices[a].drug.min_number +
              drug_month_prescriptions.advices[a].drug.min_unit +
              "/" +
              drug_month_prescriptions.advices[a].drug.max_unit;
            obj["is_total"] = 2;
            obj["chrgitm_lv"] =
              drug_month_prescriptions.advices[a].drug.medical_insurance_level;
            obj["unit"] =
              drug_month_prescriptions.advices[a].prescribing_number_unit;
            obj["item_id"] = drug_ids[i].id + "/" + drug_ids[i].price;
            count =
              count + drug_month_prescriptions.advices[a].prescribing_number;
          }
        }
        obj["count"] = count;
        this.tableList.push(obj);
      }
      for (let i = 0; i < project_ids.length; i++) {
        let obj = {};
        let count = 0;
        for (let a = 0; a < project_month_prescriptions.project.length; a++) {
          if (
            project_ids[i].price ==
              project_month_prescriptions.project[a].price &&
            project_ids[i].id ==
              project_month_prescriptions.project[a].project_id
          ) {
            if (project_month_prescriptions.project[a].type == 2) {
              obj["project_id"] = project_month_prescriptions.project[a].id;
              obj["name"] =
                project_month_prescriptions.project[a].project.project_name;
              obj["statistical_classification"] = "";
              obj["project_type"] = 2;
              obj["spec"] =
                project_month_prescriptions.project[a].project.project_name;
              obj["unit"] = project_month_prescriptions.project[a].unit;
              obj["chrgitm_lv"] =
                project_month_prescriptions.project[a].project.medical_coverage;
              obj["item_id"] = project_ids[i].id + "/" + project_ids[i].price;
            } else if (project_month_prescriptions.project[a].type == 3) {
              obj["project_id"] = project_month_prescriptions.project[a].id;
              obj["name"] =
                project_month_prescriptions.project[a].good_info.good_name;
              obj["statistical_classification"] = "";
              obj["project_type"] = 3;
              obj["spec"] =
                project_month_prescriptions.project[
                  a
                ].good_info.specification_name;
              obj["unit"] =
                project_month_prescriptions.project[a].good_info.packing_unit;
              obj["chrgitm_lv"] =
                project_month_prescriptions.project[
                  a
                ].good_info.medical_insurance_level;
              obj["item_id"] = project_ids[i].id + "/" + project_ids[i].price;
            }
            obj["single_dose"] =
              project_month_prescriptions.project[a].single_dose;
            obj["delivery_way"] =
              project_month_prescriptions.project[a].delivery_way;
            obj["execution_frequency"] =
              project_month_prescriptions.project[a].execution_frequency;
            obj["day"] = project_month_prescriptions.project[a].day;
            obj["single_dose_unit"] =
              project_month_prescriptions.project[a].unit;
            obj["prescribing_number_unit"] =
              project_month_prescriptions.project[a].unit;

            count =
              count + parseFloat(project_month_prescriptions.project[a].count);
            obj["price"] = parseFloat(
              project_month_prescriptions.project[a].price
            );
            obj["remark"] = project_month_prescriptions.project[a].remark;
            obj["type"] = 3;
            obj["record_date"] =
              project_month_prescriptions.project[a].record_date;
            obj["is_total"] = 2;
          }
        }
        obj["count"] = count;
        this.tableList.push(obj);
      }

      var objOne = { index: "合计", is_total: 1, total: 0 };
      objOne.total = this.getTotalPrice(this.tableList);
      for (let i = 0; i < this.tableList.length; i++) {
        this.tableList[i].index = i + 1;
        this.tableList[i].total_all = (
          this.tableList[i].count * this.tableList[i].price
        ).toFixed(2);
      }
    },

    getTotalPrice(val) {
      var total_price = 0;
      for (let i = 0; i < val.length; i++) {
        total_price += val[i].count * val[i].price;
      }
      return total_price.toFixed(2);
    },
    getAdviceMedChrgintmType(name) {
      var med_chrgitm_type = "";
      for (let i = 0; i < this.order_info_list.length; i++) {
        if (name == this.order_info_list[i].advice.advice_name) {
          med_chrgitm_type = this.order_info_list[i].med_chrgitm_type;
        }
      }
      return med_chrgitm_type;
    },
    getProjectMedChrgintmType(project_id) {
      var med_chrgitm_type = "";
      for (let i = 0; i < this.order_info_list.length; i++) {
        if (project_id == this.order_info_list[i].project_id) {
          med_chrgitm_type = this.order_info_list[i].med_chrgitm_type;
        }
      }
      return med_chrgitm_type;
    },
    getChrgitmLv(value) {
      var name = "";
      for (let i = 0; i < this.medicalInsuranceLevelList.length; i++) {
        if (value == this.medicalInsuranceLevelList[i].value) {
          name = this.medicalInsuranceLevelList[i].name;
        }
      }
      return name;
    },
    getAdviceMedChrgintmLv(advice_id) {
      var chrgitm_lv = "";
      for (let i = 0; i < this.order_info_list.length; i++) {
        if (advice_id == this.order_info_list[i].advice_id) {
          chrgitm_lv = this.order_info_list[i].chrgitm_lv;
        }
      }
      return chrgitm_lv;
    },
    getProjectMedChrgintmLv(advice_id) {
      var chrgitm_lv = "";
      for (let i = 0; i < this.order_info_list.length; i++) {
        if (advice_id == this.order_info_list[i].advice_id) {
          chrgitm_lv = this.order_info_list[i].chrgitm_lv;
        }
      }
      return chrgitm_lv;
    },
    getWesternMedicineCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "西药") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }

      return total_price.toFixed(2);
    },
    getChineseTraditionalMedicineCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "中成药") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getChineseTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "中草药") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getCheckCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "检验费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getOxygen() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "输氧费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getOperation() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "手术费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getLaboratoryCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "化验费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getBlood() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "输血费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getZhenChaCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "诊断费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getTreatement() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "治疗费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getNursing() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "护理费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getBedCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "床位费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getAnesthesia() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "麻醉费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getMaterialCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "材料费") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getOtherCostTotal() {
      var total_price = 0;
      for (let i = 0; i < this.tableList.length; i++) {
        if (this.tableList[i].cost_type == "其他") {
          total_price +=
            this.tableList[i].count_number * this.tableList[i].pric;
        }
      }
      return total_price.toFixed(2);
    },
    getDrugType(id) {
      var name = "";
      for (let i = 0; i < this.drugTypeList.length; i++) {
        if (id == this.drugTypeList[i].value) {
          name = this.drugTypeList[i].name;
        }
      }
      return name;
    },
    getCostType(id) {
      var name = "";
      for (let i = 0; i < this.costClassifyList.length; i++) {
        if (id == this.costClassifyList[i].value) {
          name = this.costClassifyList[i].name;
        }
      }
      return name;
    },
  },
  created() {
    let list_1 = this.$store.getters.pagedata.list;
    if (!list_1.start_time || list_1.start_time == "") {
      this.chargeDate[0] = moment(new Date())
        .add("year", 0)
        .format("YYYY-MM-DD");
    } else {
      this.chargeDate[0] = list_1.start_time;
    }
    if (!list_1.end_time || list_1.end_time == "") {
      this.chargeDate[1] = moment(new Date())
        .add("year", 0)
        .format("YYYY-MM-DD");
    } else {
      this.chargeDate[1] = list_1.end_time;
    }

    this.start_time = this.chargeDate[0];
    this.end_time = this.chargeDate[1];
    this.tableList = [];
    this.getGatherDetailList();
  },
  watch: {
    patient_id: function () {
      this.patient_id = this.patient_id;
      this.tableList = [];
      this.getGatherDetailList();
    },
  },
};
</script>
<style lang="scss" scoped>
.listInfo {
  display: flex;
  justify-content: space-around;
  div {
    width: 200px;
  }
}
</style>
