<template>
  <el-dialog
    :title="name"
    :visible.sync="isLastOrNextVisible"
    @close="hide"
    width="1010px"
    class="callPrescription"
    :modal-append-to-body="false"
  >
    <el-date-picker
      v-model="start_time"
      prefix-icon="el-icon-date"
      @change="changeTime"
      :editable="false"
      style="width: 150px;"
      type="date"
      placeholder="选择日期时间"
      align="right"
      format="yyyy-MM-dd"
      value-format="yyyy-MM-dd"
    ></el-date-picker>
    <span class>-</span>
    <el-date-picker
      v-model="end_time"
      prefix-icon="el-icon-date"
      @change="changeEndTime"
      :editable="false"
      style="width: 150px;"
      type="date"
      placeholder="选择日期时间"
      align="right"
      format="yyyy-MM-dd"
      value-format="yyyy-MM-dd"
    ></el-date-picker>


    <div v-for="(item,index) in allPrescription" :key="index">
      <div class="quote" v-if="item.prescriptions.length > 0">引用 {{getTime(item.record_date, '{y}年{m}月{d}日')}} 的处方</div>
      <el-checkbox-group v-model="item.check_group">
        <div v-for="(subItem,index2) in item.prescriptions" :key="index2">
          <el-checkbox style="margin:10px 0;" :label="subItem.id">{{'处方' + (index2+ 1)}}</el-checkbox>
          <el-table v-if="subItem.type  == 1" :data="subItem.doctor_advice" border style="width: 99%;"
                    :row-style="{ color: '#303133' }"
                    :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
            <el-table-column align="center" type="index" width="60" label="序号"></el-table-column>
            <el-table-column align="center" prop="drug_name"  width="160" label="名称">
              <template slot-scope="scope">
                <span>{{ scope.row.advice_name }}</span>
              </template>
            </el-table-column>

            <el-table-column align="center" prop="single_dose" width="90" label="单次用量">
              <template slot-scope="scope">
                <div>{{scope.row.single_dose}}{{scope.row.single_dose_unit}}</div>
              </template>
            </el-table-column>
            <el-table-column align="center" prop="delivery_way" width="100" label="用法">
              <template slot-scope="scope">
                {{scope.row.delivery_way}}
              </template>
            </el-table-column>
            <el-table-column align="center" prop="execution_frequency" width="100" label="频率">
              <template slot-scope="scope">
                {{scope.row.execution_frequency}}
              </template>
            </el-table-column>

            <el-table-column align="center" prop="day" width="60" label="天数">
              <template slot-scope="scope">
                {{scope.row.day}}
              </template>
            </el-table-column>

            <el-table-column align="center" prop="prescribing_number" width="100" label="总量">
              <template slot-scope="scope">
                <div>{{scope.row.prescribing_number}} {{scope.row.prescribing_number_unit}}</div>
              </template>
            </el-table-column>
            <el-table-column align="center" prop="retail_price" width="80" label="单价">
              <template slot-scope="scope">
                <div>{{scope.row.price}}元</div>
              </template>
            </el-table-column>
            <el-table-column align="center" prop="remark" label="备注">
              <template slot-scope="scope">
                <div>{{scope.row.remark}}</div>
              </template>
            </el-table-column>
          </el-table>
          <el-table v-if="subItem.type == 2" :data="subItem.project" border style="width: 99%;"
                    :row-style="{ color: '#303133' }"
                    :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}" highlight-current-row>
            <el-table-column align="center" type="index" width="60" label="序号"></el-table-column>
            <el-table-column align="center" prop="project_name" width="160" label="名称">
              <template slot-scope="scope">
                <span>{{ scope.row.type == 2?scope.row.project.project_name:scope.row.good_info.good_name}}</span>
              </template>
            </el-table-column>
            <el-table-column align="center" prop="statistical_classification" width="100" label="组">
              <template slot-scope="scope">{{scope.row.type == 2 ?getGroup(scope.row.statistical_classification):"耗材"}}</template>
            </el-table-column>
            <el-table-column align="center" prop="single_dose" width="90" label="单次用量">
              <template slot-scope="scope">
                <!--<el-input v-model="scope.row.single_dose" placeholder=""></el-input>-->
                <span>{{ scope.row.single_dose }}</span>

              </template>
            </el-table-column>
            <el-table-column align="center" prop="delivery_way" width="100" label="用法">
              <template slot-scope="scope">
                <!--<el-input v-model="scope.row.delivery_way" placeholder=""></el-input>-->
                <span>{{ scope.row.delivery_way }}</span>

              </template>
            </el-table-column>
            <el-table-column align="center" prop="execution_frequency" width="100" label="频率">
              <template slot-scope="scope">
                <!--<el-input v-model="scope.row.execution_frequency" placeholder=""></el-input>-->
                <span>{{ scope.row.execution_frequency }}</span>

              </template>
            </el-table-column>
            <el-table-column align="center" prop="number_days" width="70" label="天数">
              <template slot-scope="scope">
                <!--<el-input v-model="scope.row.number_days" placeholder=""></el-input>-->
                <span>{{ scope.row.number_days }}</span>

              </template>
            </el-table-column>
            <el-table-column align="center" prop="total" width="70" label="总量">
              <template slot-scope="scope">
                <div>{{ scope.row.count }}{{scope.row.unit}}</div>
              </template>
            </el-table-column>
            <el-table-column align="center" prop="name" width="60" label="单价">
              <template slot-scope="scope">
                <!--<el-input v-model="scope.row.price" placeholder="" readonly></el-input>-->
                <span>{{ scope.row.price }}</span>

              </template>
            </el-table-column>
            <el-table-column align="center" prop="name" label="备注">
              <template slot-scope="scope">
                <!--<el-input v-model="scope.row.remark" :title="scope.row.remark"></el-input>-->
                <span>{{ scope.row.remark }}</span>

              </template>
            </el-table-column>
          </el-table>
        </div>
      </el-checkbox-group>

    </div>


    <div slot="footer" class="dialog-footer">
      <el-button @click="isLastOrNextVisible = false">取 消</el-button>
      <el-button type="primary" @click="save">保存</el-button>
    </div>
  </el-dialog>


</template>

<script>
  import { uParseTime } from '@/utils/tools'
  import { getDictionaryDataConfig} from "@/utils/data";

  import {
    getCallHisPrescription
  } from '@/api/his/his'
  export default {
    name: "callPrescription",
    data() {
      return {
        start_time:"",
        end_time:"",
        srcPrescriptions:[],
        name:"",
        request_record_date:'',
        patient_id:0,
        allPrescription: [],
        isLastOrNextVisible: false,

      }
    }, methods: {
      changeTime(){
        let params={
          patient_id:this.patient_id,
          start_time: this.start_time,
          end_time:this.end_time,
          p_type:2,
        };
        this.GetCallHisPrescription(params)
      },changeEndTime(){
        let params={
          patient_id:this.patient_id,
          start_time: this.start_time,
          end_time:this.end_time,
          p_type:2,

        };
        this.GetCallHisPrescription(params)
      },
      GetCallHisPrescription(params){
        getCallHisPrescription(params).then(response => {
          if (response.data.state == 1) {
            this.allPrescription = response.data.data.prescriptions;
            for (let i = 0; i < this.allPrescription.length; i++){
              this.allPrescription[i].check_group = []
            }
            this.request_record_date = uParseTime(response.data.data.prescriptions[0].record_date, '{y}-{m}-{d}')
          } else {
            this.$message.error(response.data.msg)

          }
        })
      },
      save() {
        let replace_one = [];
        let replace_two = [];

        let checkGroup = [];
        let allPrescriptions = [];
        let targetPrescriptions = [];
        let prescriptions = [];






        for (let i = 0; i < this.allPrescription.length; i++) {
          for (let a = 0; a < this.allPrescription[i].check_group.length; a++) {
            checkGroup.push(this.allPrescription[i].check_group[a])
          }
          for (let a = 0; a < this.allPrescription[i].prescriptions.length; a++) {
            allPrescriptions.push(this.allPrescription[i].prescriptions[a])
          }
        }
        for (let i = 0; i < allPrescriptions.length; i++){
          for (let a = 0; a < checkGroup.length; a++){
            if(allPrescriptions[i].id == checkGroup[a]){
              targetPrescriptions.push(allPrescriptions[i])
            }
          }
        }

        for (let i = 0; i < targetPrescriptions.length; i++) {
          var prescription = targetPrescriptions[i];
          for (let b = 0; b < prescription.doctor_advice.length; b++) {
            console.log(prescription.doctor_advice[b].drug.is_special_diseases)
            if (prescription.med_type == "14" && prescription.doctor_advice[b].drug.is_special_diseases != 1) {
              prescription.doctor_advice.splice(b--,1)
            }
          }
          for (let b = 0; b < prescription.project.length; b++) {
            if(prescription.project[b].type == 2){
              if (prescription.med_type == "14" && prescription.project[b].project.disease_directory != 1) {
                prescription.project.splice(b--,1)
              }
            }else if(prescription.project[b].type == 3){
              if (prescription.med_type == "14" && prescription.project[b].good_info.is_special_diseases != 1) {
                prescription.project.splice(b--,1)
              }
            }
          }
        }



        if (targetPrescriptions.length > 0) {
          for (let i = 0; i < targetPrescriptions.length; i++) {
            var prescription = targetPrescriptions[i];
            let tempAdvice = [];
            let tempProject = [];
            let tempAddition = [];
            for (let b = 0; b < prescription.doctor_advice.length; b++) {
              let index = b + 1
              let obj = {
                advice_id: 0,
                drug_name: prescription.doctor_advice[b].advice_name,
                single_dose: prescription.doctor_advice[b].single_dose,
                delivery_way: prescription.doctor_advice[b].delivery_way,
                execution_frequency: prescription.doctor_advice[b].execution_frequency,
                // retail_price: prescription.doctor_advice[b].price.toString(),
                remark: prescription.doctor_advice[b].remark,
                day:prescription.doctor_advice[b].day,
                prescribing_number:prescription.doctor_advice[b].prescribing_number.toString(),
                single_dose_unit:prescription.doctor_advice[b].single_dose_unit,
                prescribing_number_unit:prescription.doctor_advice[b].prescribing_number_unit,
                medical_insurance_number:prescription.doctor_advice[b].med_list_codg,
                id:prescription.doctor_advice[b].drug_id,
                drug:prescription.doctor_advice[b].drug,
                groupno: index,
                hosp_appr_flag:"1",
              };
              if (obj.prescribing_number_unit == prescription.doctor_advice[b].drug.min_unit){
                obj['retail_price'] =  prescription.doctor_advice[b].drug.min_price
              } else if(obj.prescribing_number_unit == prescription.doctor_advice[b].drug.max_unit){
                obj['retail_price'] =  prescription.doctor_advice[b].drug.retail_price
              } else {
                obj['retail_price'] =  prescription.doctor_advice[b].drug.min_price
              }

              tempAdvice.push(obj)

            }



            for (let b = 0; b < prescription.project.length; b++) {
              let obj = {
                id: 0,
                project_id: prescription.project[b].project_id,
                project_name: prescription.project[b].project.project_name,
                statistical_classification: prescription.project[b].project.statistical_classification,
                single_dose: prescription.project[b].single_dose,
                delivery_way: prescription.project[b].delivery_way,
                execution_frequency: prescription.project[b].execution_frequency,
                number_days: prescription.project[b].day,
                total:prescription.project[b].count,
                remark:prescription.project[b].remark,
                unit: prescription.project[b].unit,
                type: prescription.project[b].type
                // medical_code:prescription.project[b].project.medical_code,
              };
              if(prescription.project[b].type == 2){
                obj['statistical_classification'] =  prescription.project[b].project.statistical_classification
                obj['medical_code'] =  prescription.project[b].project.medical_code
                obj['project_name'] =  prescription.project[b].project.project_name
                obj['price'] = prescription.project[b].project.price
              }else if(prescription.project[b].type == 3){
                obj['statistical_classification'] = ""
                obj['medical_code'] =  prescription.project[b].good_info.medical_insurance_number
                obj['project_name'] =  prescription.project[b].good_info.good_name
                obj['price'] = prescription.project[b].good_info.packing_price
              }

              tempProject.push(obj)
            }
            let obj = {
              id: 0,
              advices: tempAdvice,
              project: tempProject,
              addition:tempAddition,
              type:prescription.type,
              order_status:0,
            };
            prescriptions.push(obj)
          }
        }

        if(this.srcPrescriptions.length == 1){
          if(this.srcPrescriptions[0].advices.length == 0 && this.srcPrescriptions[0].project.length == 0){
            this.srcPrescriptions = [];
            this.srcPrescriptions = prescriptions;
            this.$emit('call', this.srcPrescriptions)
          }else{

            this.srcPrescriptions =  this.srcPrescriptions.concat(prescriptions);
            this.$emit('call', this.srcPrescriptions)
          }
        }else{
          this.srcPrescriptions =  this.srcPrescriptions.concat(prescriptions);
          this.$emit('call', this.srcPrescriptions)
        }
      },show(name,id,end_time, start_time,srcPrescriptions,prescriptions){
        this.srcPrescriptions = srcPrescriptions;
        this.start_time  = start_time;
        this.end_time = end_time;
        this.patient_id = id;
        this.name = '处方调用' + '('+name +')';
        this.allPrescription = prescriptions;
        for (let i = 0; i < this.allPrescription.length; i++){
          this.allPrescription[i].check_group = []
        }
        this.isLastOrNextVisible = true
      },close(){
        this.isLastOrNextVisible = false
      },hide(){
        this.$emit('callCancel')

      },getTime(time, template){
        return uParseTime(time,template)

      }, getGroup(id){
        var name = "";
        var statistics_category =  getDictionaryDataConfig('system','statistics_category');
        for(let i=0;i<statistics_category.length;i++){
          if(id == statistics_category[i].id){
            name = statistics_category[i].name
          }
        }
        return name
      },   getDictionaryDataConfig(module, filed_name) {
        return getDictionaryDataConfig(module, filed_name)
      },
    }
  }
</script>

<style lang="scss">
.callPrescription{
  .el-dialog__body{
    padding:0px 20px 30px;
  }
  .quote{
    margin-top: 10px;
    font-size: 14px;
  }
}
</style>