<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(){
     var new_arr = []
     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
      }else{
        this.tableList = []
        this.getGatherDetailList()
      }
    },
    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
      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  
         
          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
            }
        }
     })
    },
    // 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.order = response.data.data.order
    //         this.patient = response.data.data.patient
    //         this.admin = response.data.data.admin_info
    //         this.his_hospital = response.data.data.his_hospital

    //         var order_info = response.data.data.order_info

    //         if(order_info!=null){
    //           for(let i=0;i<order_info.length;i++){
    //             order_info[i].med_chrgitm_type = this.getType(order_info[i].med_chrgitm_type)
    //             order_info[i].chrgitm_lv  = this.getMedicineInsuranceType(order_info[i].chrgitm_lv)
    //          }
    //          var prescription = response.data.data.prescription
            
    //           this.setMonthPrescription(prescription)
    //         }
           
    //         this.order_info_list = order_info
             
    //         this.balanceAccountsType = response.data.data.balanceAccountsType

    //         this.medicalInsuranceLevelList = response.data.data.medicalInsuranceLevelList
    //         if(order_info!=undefined&&order_info ==null){
    //            this.list = []
    //            return
    //         }
    //         this.his_patient = response.data.data.his_patient
    //         this.hisDepatment = response.data.data.hisDepatment
    //         this.list = []
    //         this.westernMedicineCostTotal = response.data.data.westernMedicineCostTotal
    //         this.chineseTraditionalMedicineCostTotal = response.data.data.chineseTraditionalMedicineCostTotal
    //         this.checkCostTotal = response.data.data.checkCostTotal
    //         this.laboratoryCostTotal = response.data.data.laboratoryCostTotal
    //         this.zhenChaCostTotal = response.data.data.zhenChaCostTotal
    //         this.bedCostTotal = response.data.data.bedCostTotal
    //         this.otherCostTotal = response.data.data.otherCostTotal
    //         this.materialCostTotal = response.data.data.materialCostTotal
    //         if(this.$store.getters.xt_user.org_id == 10215 || this.$store.getters.xt_user.org_id == 0){
    //           //获取所有项目类型进行去重
    //           let med_chrgitm_types = []
    //           for (let i = 0; i < order_info.length; i++) {
    //             med_chrgitm_types.push(order_info[i].med_chrgitm_type)
    //           }
    //           const obj = {}
    //           med_chrgitm_types = med_chrgitm_types.reduce((cur, next) => {
    //             obj[next] ? '' : obj[next] = true && cur.push(next)
    //             return cur
    //           }, []) // 设置cur默认类型为数组，并且初始值为空的数组

    //           let tempOrderInfo = []
            
    //           for (let i = 0; i < med_chrgitm_types.length; i++) {
    //             let obj = {
    //               total: 0,
    //               details: [],
    //               is_total:0,
    //             }
    //             let tempDetails = []
    //             for (let b = 0; b < order_info.length; b++) {
    //               if (med_chrgitm_types[i] == order_info[b].med_chrgitm_type) {
    //                 tempDetails.push(order_info[b])
    //               }
    //             }
    //             obj.details = this.setNewData(tempDetails)
    //             this.list = []
    //             this.list =  this.list.concat(obj.details)
    //             for(let i=0;i<this.list.length;i++){
    //               if(this.list[i].is_total == 1){
    //                  this.list[i].index = "合计"
    //               }else{
    //                 this.list[i].index = i+1
    //               }
                 
    //             }
    //           }
    //           let newobj = {}
    //           newobj['total'] = this.order.medfee_sumamt
    //           newobj['is_total'] = 1
    //           this.list = []
    //           this.list.push(newobj)
    //           var new_arr = []
    //            if(this.keywords!=""){
    //              for(let i=0;i<this.list.length;i++){
    //                if(this.list[i].is_total == 2){
    //                   if(this.list[i].name.indexOf(this.keywords)>-1){
    //                        new_arr.push(this.list[i])
    //                    }
    //                  }
                   
    //               }
    //               var new_arr_two = []
                 
    //               for(let i=0;i<tempDetails.length;i++){
    //                 if(tempDetails[i].advice_id >0){
    //                    tempDetails[i].name = tempDetails[i].advice.advice_name
    //                 }
    //                 if(tempDetails[i].project_id > 0){
    //                    if(tempDetails[i].type == 2 ){
    //                      tempDetails[i].name = tempDetails[i].project.project_name
    //                    }
    //                    if(tempDetails[i].type == 3){
    //                      tempDetails[i].name = tempDetails[i].good_info.good_name
    //                    }
    //                 }
    //                 if(tempDetails[i].name.indexOf(this.keywords) > -1){
    //                    new_arr_two.push(tempDetails[i])
    //                 }
    //               }
    //                this.list = []
                
    //                this.list = new_arr
    //                 obj.details = []
    //                 obj.details = this.setNewData(new_arr_two)

    //                 obj.total = this.getTotal(obj.details)
    //                 obj.details.push({
    //                   total: obj.total,
    //                   is_total: 1,
    //                 })
    //                 for(let i=0;i<obj.details.length;i++){
    //                    if(obj.details[i].is_total == 1){
    //                       obj.details[i].index = "合计"
    //                    }else{
    //                      obj.details[i].index = i+1
    //                    }
    //                 }
    //                 this.list = obj.details
    //             }
    //         }else{
    //           //获取所有项目类型进行去重
    //           let med_chrgitm_types = []
    //           if(order_info!=undefined && order_info.length > 0){
    //             for (let i = 0; i < order_info.length; i++) {
    //              med_chrgitm_types.push(order_info[i].med_chrgitm_type)
    //            }
    //           }
             
    //           const obj = {}
    //           med_chrgitm_types = med_chrgitm_types.reduce((cur, next) => {
    //             obj[next] ? '' : obj[next] = true && cur.push(next)
    //             return cur
    //           }, []) // 设置cur默认类型为数组，并且初始值为空的数组
    //           let tempOrderInfo = []
            
    //           for (let i = 0; i < med_chrgitm_types.length; i++) {
    //             let obj = {
    //               total: 0,
    //               details: []
    //             }
    //             let tempDetails = []
    //             for (let b = 0; b < order_info.length; b++) {
    //               if (med_chrgitm_types[i] == order_info[b].med_chrgitm_type) {
    //                 tempDetails.push(order_info[b])
    //               }
    //             }
                
              
    //             obj.details = this.setNewData(tempDetails)
               
    //             obj.total = this.getTotal(obj.details)

    //             obj.details.push({
    //               total: obj.total,
    //               is_total: 1,
    //             })
    //             this.list = []
    //             this.list =  this.list.concat(obj.details)
    //             for(let i=0;i<this.list.length;i++){
    //               if(this.list[i].is_total == 1){
    //                  this.list[i].index = "合计"
    //               }else{
    //                 this.list[i].index = i+1
    //               }
                 
    //             }
               
    //          }

             
    
    //       }
 
    //        if(this.id == 1){
    //          var new_arr = []
    //          for(let i=0;i<this.tableList.length;i++){
    //           if(this.tableList[i].is_total != 1){
    //             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].is_total != 1){
    //             if(this.tableList[i].project_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].is_total != 1){
    //             if(this.tableList[i].project_type == 3){
    //               new_arr.push(this.tableList[i])
    //             }  
    //           }
    //          }
    //          console.log("this.tableist2332323223323223",this.tableList)
    //          this.tableList = []
    //          this.tableList = new_arr
    //         }
          
    //         var new_arr_two = []
    //         for(let i=0;i<this.tableList.length;i++){
    //             if(this.tableList[i].advice_id > 0){
    //               this.tableList[i].const_type = this.getAdviceMedChrgintmType(this.tableList[i].name)
    //             }
    //             if(this.tableList[i].project_id > 0){
    //               this.tableList[i].const_type = this.getProjectMedChrgintmType(this.tableList[i].project_id)
    //             }
               
    //            if(this.tableList[i].const_type!=''){
    //               new_arr_two.push(this.tableList[i])
    //            }

    //          }
           
    //         this.tableList = []
    //         this.tableList = new_arr_two
          
    //         console.log("分解死23232332332323223322332323232",this.tableList)
    //         let dataInfo = {}
    //         this.tableList.forEach((item, index) => {
    //           let { item_id } = item
    //           if (!dataInfo[item_id]) {
    //             dataInfo[item_id] = {
    //               item_id,
    //               child: [],
    //               count_number:0,
    //               name:item.name,
    //               price:item.price,
    //               record_date:item.record_date,
    //             }
    //           }
    //           dataInfo[item_id].child.push(item)
    //         })
            
    //         let list = Object.values(dataInfo)
            

    //         list.forEach((it,index)=>{
    //           for(let i=0;i<this.tableList.length;i++){
    //             if(it.item_id == this.tableList[i].item_id){
    //                 it.child.push(this.tableList[i])
    //             }
    //           }
    //         })
    //        console.log("list23232332323223322323",list)
    //        for(let i=0;i<list.length;i++){
    //         for(let j=0;j<list[i].child.length;j++){
    //             list[i].count_number += list[i].child[j].count
    //         }
    //        }

    //         console.log("我的list23223233223322323",list)
             
    //     }
    //  })
    // },
    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})
     },
     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() {
    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>
