<template>
    <div class="main-contain outpatientChargesManagement">
        <div class="position">
            <bread-crumb :crumbs='crumbs'></bread-crumb>
        </div>
        <div class="app-container" style="display:flex;flex: 1;padding: 10px 20px 0px 20px;">
            <div class="mainLeft">

                <!-- <div class="mainCell" style="justify-content: space-between;font-size:14px;">
                 <p >未收费：<span style="color: red">{{cal_one}}</span>人</p>
                 <p>已收费：<span  style="color: red">{{cal_two}}</span>人</p>
                 <p>已退费：<span  style="color: red">{{cal_three}}</span>人</p>
               </div> -->
                <div class="mainCell">
                    <el-radio-group v-model="radio" @change="changeRadio">
                        <!-- <el-radio :label=1>未收费</el-radio>
                        <el-radio :label=2>已收费</el-radio>
                        <el-radio :label=3>已退费</el-radio>
                        <el-radio :label=4>全部</el-radio> -->
                        <el-radio :label=1>未收费<span style="color: red;margin-bottom:10px;display: inline-block;">{{cal_one}}</span>人
                        </el-radio>
                        <el-radio :label=2>已收费<span style="color: red;margin-bottom:10px;display: inline-block;">{{cal_two}}</span>人
                        </el-radio>
                        <!--<el-radio :label=3>已退费<span-->
                        <!--style="color: red;margin-bottom:10px;display: inline-block;">{{cal_three}}</span>人-->
                        <!--</el-radio>-->
                        <el-radio :label=4>全部</el-radio>

                    </el-radio-group>
                </div>
                <div class="mainCell" style="margin-bottom:10px;">
                    <el-input size="small" @keyup.enter.native='searchAction' v-model.trim="search_input"
                              class="filter-item"/>
                    <el-button size="small" style="margin-left:10px;" class="filter-item" type="primary"
                               @click="searchAction">
                        搜索
                    </el-button>
                </div>
                <div>
                    <el-table :data="patientTableData" :height="tableHeight" border style="width: 100%;"
                              :row-style="{ color: '#303133' }"

                              :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
                              highlight-current-row ref="tab"
                              @current-change="handleCurrentChange">
                        <el-table-column align="center" prop="name" label="姓名" wdith='89'>
                            <template slot-scope="scope">{{scope.row.name}}</template>
                        </el-table-column>
                        <el-table-column align="center" prop="name" label="就诊号" width="110">
                            <template slot-scope="scope">{{ scope.row.his_patient ?scope.row.his_patient.number:''}}
                            </template>
                        </el-table-column>
                    </el-table>
                </div>
            </div>

            <div class="mainRight">

                <div class="mainCell fixedCell" style="margin-bottom:10px;">
                    <div v-if="this.$store.getters.xt_user.org_id == 9504 || this.$store.getters.xt_user.org_id == 10028">
                        <el-button v-loading="loadingone" size="small"
                                   @click="sz_open(1)"
                                   type="primary">挂号

                        </el-button>

                        <el-button
                                v-if="(this.hisPatientInfo.id > 0 && this.order.id == 0) || this.order.order_status == 1"
                                size="small"
                                @click="sz_open(3)"
                                type="primary">收费
                        </el-button>

                        <el-button size="small" @click="sz_open(11)" type="primary"
                                   v-if="this.hisPatientInfo.id > 0 "
                        >
                            退号
                        </el-button>


                        <el-button size="small" @click="sz_open(5)" type="primary"
                                   v-if="this.order.order_status == 2"
                        >
                            退费
                        </el-button>
                        <el-button size="small" @click="sz_open(10)" type="primary">打印</el-button>

                        <!--<el-button-->
                        <!--size="small" @click="sz_open(7)" type="primary"-->
                        <!--&gt;撤销明细-->
                        <!--</el-button>-->
                    </div>


                    <!--<el-button size="small" @click="sz_open(8)" type="primary"-->
                    <!--&gt;-->
                    <!--跨月退费-->
                    <!--</el-button>-->

                    <!--<el-button  size="small" @click="sz_open(6)" type="primary"-->
                    <!--v-if="this.order.order_status == 2"-->
                    <!--&gt;打印-->
                    <!--</el-button>-->


                    <!-- <el-button size="small" @click="open(1)" type="primary" style="margin-left:10px;">打印处置单</el-button>
                    <el-button size="small" @click="open(2)" type="primary">打印治疗单</el-button> -->


                    <div v-if="this.$store.getters.xt_user.org_id != 9504 && this.$store.getters.xt_user.org_id != 10028">
                        <el-button size="small" @click="open(3)" type="primary">打印</el-button>
                        <el-button v-loading="loadingone" size="small"
                                   @click="open(6)"
                                   type="primary">挂号
                        </el-button>


                        <el-button v-loading="loadingtwo"
                                   v-if="(this.hisPatientInfo.id > 0 && this.order.id == 0) || this.order.order_status == 1 ||  this.order.order_status == 3"
                                   size="small"
                                   @click="open(4)"
                                   type="primary">收费
                        </el-button>

                        <el-button size="small" @click="open(5)" type="primary"
                                   v-if="this.hisPatientInfo.id > 0 && this.order.id > 0 &&  this.order.order_status == 2">
                            退费
                        </el-button>


                        <el-button v-if="this.order.order_status == 2" size="small" @click="open(9)" type="primary"
                        >结算单
                        </el-button>

                        <el-button
                                v-if="this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4  || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 9671 || this.$store.getters.xt_user.org_id == 9674 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990"
                                size="small" @click="open(10)" type="primary"
                        >退号
                        </el-button>

                        <!--<el-button-->
                        <!--v-if="$store.getters.xt_user.org_id == 4 || this.$store.getters.xt_user.org_id == 9919  || this.$store.getters.xt_user.org_id == 9671 || this.$store.getters.xt_user.org_id == 9674   || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990"-->
                        <!--size="small" @click="open(11)" type="primary"-->
                        <!--&gt;撤销明细-->
                        <!--</el-button>-->

                    </div>
                    <!--<el-button size="small" @click="query" type="primary"-->
                    <!--&gt;查询-->
                    <!--</el-button>-->


                </div>


                <div class="mainCenter" v-loading="loading">
                    <el-tabs class="settlementTabs" v-model="activeName" @tab-click="handleClick">
                        <el-tab-pane label="日结" name="first">
                            <div style="display:flex;height:100%;">
                                <div class="centerLeft">
                                    <div class="tabsBox">
                                        <!--<el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button>-->
                                        <el-tabs class="preTabs" v-model="editableTabsValue" type="border-card"
                                                 @tab-click="tabclickEvent">
                                            <el-tab-pane
                                                    v-for="(item, index) in prescriptions"
                                                    :key="index"
                                                    :label="item.name"
                                                    :name="item.name"
                                            >
                                            </el-tab-pane>

                                            <!--<div class="RP">-->
                                            <!--Rp-->
                                            <!--<el-date-picker-->
                                            <!--v-model="record_date"-->
                                            <!--type="date"-->
                                            <!--:clearable="false"-->
                                            <!--@change="changeDate"-->
                                            <!--format="yyyy-MM-dd"-->
                                            <!--value-format="yyyy-MM-dd"-->
                                            <!--placeholder="选择日期">-->
                                            <!--</el-date-picker>-->
                                            <!--</div>-->
                                            <prescription-table ref="prescription_tables"
                                                                :prescription="curPrescriptions"></prescription-table>

                                        </el-tabs>

                                    </div>
                                    <div class="costBox">
                                        <span>当前处方总费用：<span style="color:red;">{{ total}}元</span></span>
                                        <span v-if="this.curPrescriptions.order_status  == 1">待结算</span>
                                        <span v-if="this.curPrescriptions.order_status  == 2">已结算</span>
                                        <span v-if="this.curPrescriptions.order_status  == 3">已退费</span>
                                    </div>
                                </div>
                                <div class="centerRight">
                                    <p class="centerRightTitle">人员信息</p>
                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
                                        <span style="font-size:14px;">人员编码:{{patientInfo.dialysis_no}}</span>
                                        <span style="font-size:14px;">日期:{{record_date}}</span>
                                    </div>
                                    <ul class="basicUl">
                                        <li style="width:50%;">姓名：{{patientInfo.name}}</li>
                                        <li style="width:50%;">性别：{{patientInfo.gender == 1 ? '男' : '女' }}</li>
                                        <li style="width:50%;">年龄：{{getAge(patientInfo.id_card_no)}}</li>
                                        <li style="width:50%;">电话：{{patientInfo.phone}}</li>

                                        <!--<span>过敏病史:</span>-->
                                        <!--<el-autocomplete-->
                                        <!--style="width:100%;"-->
                                        <!--class="inline-input"-->
                                        <!--v-model="sick_history"-->
                                        <!--:fetch-suggestions="querySearch2"-->
                                        <!--placeholder="请输入内容"-->
                                        <!--&gt;</el-autocomplete>-->
                                        <!--<li style="width:100%;">地址：{{patientInfo.home_address}}</li>-->
                                        <!--<li style="width:100%;">过敏史及其他病史：{{info.sick_history}}</li>-->
                                    </ul>
                                    <p class="centerRightTitle" style="padding-top: 10px;">诊断信息</p>
                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
                                        <span style="font-size:14px;">门诊编号:{{ hisPatientInfo.number}}</span>
                                    </div>
                                    <ul class="basicUl">
                                        <li style="width:50%;">医生：{{ info.doctor }}</li>
                                        <li style="width:50%;">科室：{{ info.departments }}</li>
                                        <li style="width:100%;">总费用：{{ getTotal() }}</li>

                                        <li style="width:100%;">判断结果：{{info.diagnosis}}</li>
                                        <li style="width:100%;">是否有传染病：</li>
                                        <li style="width:100%;">血压：</li>
                                    </ul>
                                </div>
                            </div>
                        </el-tab-pane>
                        <el-tab-pane label="月结" name="second">
                            <div style="display:flex;height:100%;">
                                <div class="centerLeft">
                                    <div class="tabsBox">
                                        <!-- <el-button type="text" class="addTab" @click="addCharges" icon="el-icon-circle-plus">附加收费</el-button> -->
                                        <el-tabs class="preTabs" v-model="editableTabsValue" type="border-card"
                                                 @tab-click="tabclickEventTwo">

                                            <el-tab-pane
                                                    v-for="(item, index) in month_prescriptions"
                                                    :key="index"
                                                    :label="item.name"
                                                    :name="item.name">
                                            </el-tab-pane>

                                            <div class="RP">
                                                Rp
                                                <el-date-picker
                                                        v-model="other_start_time"
                                                        prefix-icon="el-icon-date"
                                                        @change="changeTime"
                                                        :editable="false"
                                                        style="width: 150px;"
                                                        type="date"
                                                        :picker-options="pickerOptions"
                                                        placeholder="选择开始时间"
                                                        align="right"
                                                        format="yyyy-MM-dd"
                                                        value-format="yyyy-MM-dd">
                                                </el-date-picker>
                                                <span class>-</span>
                                                <el-date-picker
                                                        v-model="other_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>
                                            <!--<prescription-table :preTableData='preTableData'></prescription-table>-->
                                            <!--<month-prescription-table ref="prescription_tables"-->
                                            <!--:activeType="activeType"  :prescription="curMonthPrescriptions"></month-prescription-table>-->
                                            <charge-month-prescription-table
                                                    :prescription="curMonthPrescriptions"></charge-month-prescription-table>

                                        </el-tabs>

                                    </div>
                                    <div class="costBox">
                                        <span>当前处方总费用：<span style="color:red;">{{ month_total }}元</span></span>
                                        <!--<span>{{ state }}</span>-->
                                    </div>
                                </div>
                                <div class="centerRight">
                                    <p class="centerRightTitle">人员信息</p>
                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
                                        <span style="font-size:14px;">人员编码:{{patientInfo.dialysis_no}}</span>
                                        <span style="font-size:14px;">日期:{{record_date}}</span>
                                    </div>

                                    <ul class="basicUl">
                                        <li style="width:50%;">姓名：{{patientInfo.name}}</li>
                                        <li style="width:50%;">性别：{{patientInfo.gender == 1 ? '男' : '女' }}</li>
                                        <li style="width:50%;">年龄：{{patientInfo.age }}</li>
                                        <li style="width:50%;">电话：{{patientInfo.phone}}</li>
                                        <li style="width:100%;">过敏史及其他病史：{{info.sick_history}}</li>

                                    </ul>
                                    <p class="centerRightTitle" style="padding-top: 10px;">诊断信息</p>
                                    <div style="display:flex;justify-content: space-between;line-height:30px;">
                                        <span style="font-size:14px;">门诊编号:{{ hisPatientInfo.number}}</span>
                                    </div>
                                    <ul class="basicUl">
                                        <li style="width:50%;">医生：{{ info.doctor }}</li>
                                        <li style="width:50%;">科室：{{ getDepartment(info.departments) }}</li>
                                        <li style="width:100%;" v-if="activeName == 'first'">总费用：{{ getTotal() }}</li>
                                        <li style="width:100%;" v-if="activeName == 'second'">总费用：{{ getTotalTwo() }}
                                        </li>

                                        <li style="width:100%;">判断结果：{{info.diagnosis}}</li>
                                        <!--<li style="width:100%;">是否有传染病：</li>-->
                                        <!--<li style="width:100%;">血压：</li>-->
                                    </ul>
                                </div>
                            </div>
                        </el-tab-pane>
                    </el-tabs>


                </div>
            </div>
        </div>
        <additionalCharges ref='additionalCharges' @click="addCharges"
                           :addtions_charge="addtions_charge"></additionalCharges>

        <register-dialog ref='register' :doctors="doctors" :department="department" :sick="sick" :diagnoses="diagnoses"
                         v-on:confirm="confirm" v-on:cancel="cancel"></register-dialog>

        <register-dialog9504 ref='register9504' :doctors="doctors" :departments="department" :sick="sick"
                             :diagnoses="diagnoses"
                             v-on:confirm="registerConfirm" v-on:cancel="registerCancel"></register-dialog9504>

        <charge-dialog ref='charge' v-on:confirm="chargeConfirm" v-on:cancel="chargeCancel"></charge-dialog>
        <el-dialog
                class="centerDialog"
                width="900px"
                title="打印"
                :visible.sync="treatVisible">
            <treatPrint :paramsObj='paramsObj'></treatPrint>
        </el-dialog>
        <el-dialog
                class="centerDialog"
                width="1200px"
                title="打印"
                :visible.sync="statementVisible">
            <statementPrint ref="print" :paramsObj='orderObj'></statementPrint>
        </el-dialog>

        <el-dialog
                class="centerDialog"
                width="1200px"
                title="打印"
                :visible.sync="newStatementVisible">
            <new-statement-print-two :params-obj="newOrderObj"></new-statement-print-two>
            <!--<newStatementPrint ref="print" :paramsObj='newOrderObj'></newStatementPrint>-->
        </el-dialog>
    </div>

</template>


<script>
  import axios from 'axios'
  import { jsGetAge, uParseTime } from '@/utils/tools'
  import BreadCrumb from '@/xt_pages/components/bread-crumb'
  import noCharge from './components/noCharge'
  import charged from './components/charged'
  import medicalInsuranceRefund from './components/medicalInsuranceRefund'
  import prescriptionTable from './components/prescriptionTable'
  import additionalCharges from './components/additionalCharges'
  import { getPatientInformation, getPatientList } from '@/api/project/project'
  import {
    getChargeHisPatientInfo,
    getChargeHisPatientList,
    getDayOrMonthHisPrescription,
    getInitData,
    getSchedulePatientList,
    Refund,
    register,
    upload
  } from '@/api/his/his'
  import RegisterDialog from './components/registerDialog'
  import treatPrint from './treatPrint'
  import statementPrint from './statementPrint'
  import ChargeDialog from './components/chargeDialog'
  import MonthPrescriptionTable from './components/monthPrescriptionTable'
  import ChargeMonthPrescriptionTable from './components/chargeMonthPrescriptionTable'
  import NewStatementPrintTwo from './newStatementPrintTwo'
  import RegisterDialog9504 from './components/registerDialog9504'

  const moment = require('moment');
  export default {
    components: {
      RegisterDialog9504,
      NewStatementPrintTwo,
      ChargeMonthPrescriptionTable,
      MonthPrescriptionTable,
      ChargeDialog,
      RegisterDialog,
      BreadCrumb,
      noCharge,
      charged,
      medicalInsuranceRefund,
      prescriptionTable,
      additionalCharges,
      treatPrint,
      statementPrint

    },
    data() {
      return {
        register: [
          { value: 11, label: '普通门诊' },
          { value: 12, label: '门诊挂号' },
          { value: 13, label: '急诊' },
          { value: 14, label: '门诊特殊病' },
          { value: 15, label: '门诊统筹' },
          { value: 16, label: '门诊慢性病' },
          { value: 21, label: '普通住院' }

        ],
        loading: false,
        dise_loading: false,

        sick_history: '',
        p_type: '',
        sick_type: '',
        diagnosis: '',

        month_p_type: '',
        month_sick_type: '',
        month_diagnosis: '',
        key: '',
        other_start_time: moment(new Date()).subtract(30, 'days').format('YYYY-MM-DD'),
        other_end_time: moment(new Date()).add('year', 0).format('YYYY-MM-DD'),
        curMonthPrescriptions: null,
        month_total: 0,
        crumbs: [
          { path: false, name: '门诊收费' },
          { path: false, name: '门诊收费管理' }
        ],
        current_index: 0,
        cal_one: '',
        cal_two: '',
        cal_three: '',
        tableHeight: '',
        fullHeight: document.documentElement.clientHeight,
        activeName: 'first',
        info: {},
        curPrescriptions: {},
        prescriptions: [],
        month_prescriptions: [],

        record_date: '',
        tableData: [],
        editableTabsValue: '处方1',
        loadingone: false,
        editableTabs: [{
          title: '处方1',
          name: '1'
        }],
        tabIndex: 1,
        hisPatientInfo: {},
        loadingtwo: false,
        patientTableData: [{
          name: '杨美英',
          mdtrt_id: '1709946'
        }],
        patientInfo: { id: 0 },
        doctor: {},
        total: 0,
        state: '未收费',
        radio: 1,
        radioStatus: 1,
        search_input: '',
        start_time: moment().locale('zh-cn').format('YYYY-MM-DD'),
        patient_id: 0,
        prescription_id: 0,
        all_table_data: [],
        hisPatientDatas: [],
        order: {},
        addtions_charge: [],
        treatVisible: false,
        orderObj: {},
        paramsObj: {},
        newOrderObj: {},
        statementVisible: false,
        newStatementVisible: false,

        sick: [],
        diagnoses: [],

        department: []

      }
    },
    created() {
      let tableHeight = document.body.clientHeight - 243;
      this.tableHeight = tableHeight;
      var nowDate = new Date();
      var nowYear = nowDate.getFullYear();
      var nowMonth = nowDate.getMonth() + 1;
      var nowDay = nowDate.getDate();
      this.record_date =
        nowYear +
        '-' +
        (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
        '-' +
        (nowDay < 10 ? '0' + nowDay : nowDay);

      this.getInitData();
      //获取患者信息
      this.getPatientList()
    },
    methods: {
      getAge(id_card_no){
        if (id_card_no){

          var thisLen = id_card_no.length;
          var birth = '';
          if (thisLen == 15) {
            birth = '19' + id_card_no.substr(6, 6)
          } else {
            birth = id_card_no.substr(6, 8)
          }
          var births =
            birth.substr(0, 4) +
            '-' +
            birth.substr(4, 2) +
            '-' +
            birth.substr(6, 2);
          return jsGetAge(births, '-')

        }else{

          return 0

        }


      },
      query() {
        if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4 || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990 ) {
          var that = this;
          axios.get('http://127.0.0.1:9532/api/org/info', {
            params: {}
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                return false
              } else {

              }
            })
            .catch(function(error) {

            })
        }
      },
      getDepartment(department_id) {
        for (let i = 0; i < this.department.length; i++) {
          if (this.department[i].id == department_id) {
            return this.department[i].name
          }
        }
      },
      querySearch2(queryString, cb) {
        var restaurants = this.other_sick;
        restaurants.map(item => {
          item.value = item.name
        });
        var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
        // 调用 callback 返回建议列表的数据
        cb(results)
      },
      changeTime(val) {
        let params = {
          patient_id: this.patientInfo.id,
          start_time: val,
          end_time: this.other_end_time,
          p_type:2

        };
        getDayOrMonthHisPrescription(params).then(response => {
          if (response.data.state == 1) {
            this.month_prescriptions = [];
            this.setMonthPrescription(response.data.data.day_prescription);
            this.curMonthPrescriptions = this.month_prescriptions[0]

          } else {
            this.$message.error(response.data.msg)
          }
        })

      }, changeEndTime(val) {
        let params = {
          patient_id: this.patientInfo.id,
          start_time: this.other_start_time,
          end_time: val,
          p_type:2

        };
        getDayOrMonthHisPrescription(params).then(response => {
          if (response.data.state == 1) {
            this.month_prescriptions = [];
            this.setMonthPrescription(response.data.data.day_prescription);
            this.curMonthPrescriptions = this.month_prescriptions[0]

          } else {
            this.$message.error(response.data.msg)
          }
        })

      }, chargeConfirm(form) {

        form['id'] = this.patientInfo.id;
        form['record_time'] = this.record_date;
        form['admin_user_id'] = this.$store.getters.xt_user.user.id;
        form['order_id'] = this.order.id;
        form['org_id'] = this.$store.getters.xt_user.org_id;

        if (this.activeName == 'first') {
          form['settle_accounts_type'] = 1

        } else {
          form['start_time'] = this.other_start_time;
          form['end_time'] = this.other_end_time;
          form['settle_accounts_type'] = 2

        }

        if (this.$store.getters.xt_user.org_id == 10028 || this.$store.getters.xt_user.org_id == 9504) {
          var that = this;
          axios.get('http://127.0.0.1:9532/sz/api/settle/get', {
            params: form
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.$refs.charge.hide();
                return false
              } else {
                if (response.data.data.failed_code == -10) {

                  that.$confirm(response.data.data.msg, '医保错误信息', {
                    confirmButtonText: '确 定',
                    type: 'warning'
                  }).then(() => {

                  }).catch(() => {
                  })


                } else {
                  that.changeRadioAndPatient(2);
                  that.radio = 2;
                  that.$refs.charge.hide();
                  that.state = '已收费';
                  that.$message({ message: '收费成功', type: 'success' });
                  that.loadingtwo = false;
                  that.cal_one = this.cal_one - 1;
                  that.cal_two = this.cal_two + 1;
                  that.patientTableData.splice(this.current_index, 1)
                }
              }
            })
            .catch(function(error) {

            })

        } else if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4 || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 9671 || this.$store.getters.xt_user.org_id == 9674 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990  ) {
          var that = this;
          axios.get('http://127.0.0.1:9532/api/upload/get', {
            params: form,
            headers: {
              'Permission': 5
            }
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingtwo = false;
                that.$refs.charge.hide();
                return false
              } else {
                if (response.data.data.failed_code == -10) {
                  that.$confirm(response.data.data.msg, '医保错误信息', {
                    confirmButtonText: '确 定',
                    type: 'warning'
                  }).then(() => {

                  }).catch(() => {
                  })


                } else {
                  that.changeRadioAndPatient(2);
                  that.radio = 2;
                  that.$refs.charge.hide();
                  that.loadingtwo = false;
                  that.state = '已收费';
                  that.$message({ message: '收费成功', type: 'success', duration: 5000 });
                  that.loadingtwo = false;
                  that.cal_one = this.cal_one - 1;
                  that.cal_two = this.cal_two + 1;
                  // that.patientTableData.splice(this.current_index, 1)


                }
              }
            })
            .catch(function(error) {

            })
        } else {
          upload(form).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              this.loadingtwo = false;
              this.$refs.charge.hide();
              return false
            } else {
              this.$refs.charge.hide();
              this.changeRadioAndPatient(2);
              this.radio = 2;

              this.loadingtwo = false;
              this.state = '已收费';
              this.$message({ message: '收费成功', type: 'success' });
              this.$refs.charge.hide();
              this.loadingtwo = false
            }
          })
        }
      }, chargeCancel() {
        this.$refs.charge.hide()
      }, registerCancel() {
        this.$refs.register9504.hide()

      }, registerConfirm(forms) {
        forms['record_time'] = this.record_date;
        forms['admin_user_id'] = this.$store.getters.xt_user.user.id;
        forms['org_id'] = this.$store.getters.xt_user.org_id;

        this.loadingone = true;

        var that = this;
        if (this.$store.getters.xt_user.org_id == 9504 || this.$store.getters.xt_user.org_id == 10028) {
          axios.get('http://127.0.0.1:9532/sz/api/register/get', {
            params: forms,
            headers: {
              'Permission': 5
            }
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingone = false;
                that.$refs.register9504.hide();
                return false
              } else {
                if (response.data.data.failed_code == -10) {
                  that.$confirm(response.data.data.msg, '医保错误信息', {
                    confirmButtonText: '确 定',
                    type: 'warning'
                  }).then(() => {

                  }).catch(() => {
                  })


                } else {
                  that.$refs.register9504.hide();
                  that.$message({ message: '挂号成功', type: 'success' });

                  let params = {
                    'record_date': that.record_date
                  };
                  getChargeHisPatientList(params).then(response => {
                    if (response.data.state == 0) {
                      that.$message.error(response.data.msg);
                      return false
                    } else {
                      that.loadingone = false;
                      that.patientTableData = [];
                      that.all_table_data = [];
                      that.hisPatientDatas = [];
                      let one_count = 0;
                      let two_count = 0;
                      let three_count = 0;
                      for (let i = 0; i < response.data.data.list.length; i++) {
                        that.all_table_data.push(response.data.data.list[i]);
                        if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                          one_count = one_count + 1;
                          that.patientTableData.push(response.data.data.list[i])
                        }
                        if (response.data.data.list[i].order.order_status == 2) {
                          two_count = two_count + 1;
                          that.patientTableData.push(response.data.data.list[i])
                        }
                      }
                      that.hisPatientDatas = response.data.data.list_two;
                      that.cal_one = one_count;
                      that.cal_two = two_count;
                      that.cal_three = three_count;
                      that.current_index = 0;

                      for (let i = 0; i < that.patientTableData.length; i++) {
                        if (this.patientTableData[i].id == this.patientInfo.id) {
                          that.$refs.tab.setCurrentRow(that.patientTableData[i]);
                          that.getPatientInformation(that.patientTableData[i].id, that.patientTableData[i].order.number,that.patientTableData[i].his_patient.id)
                        }
                      }
                      that.loadingone = false;
                      var his_info = response.data.data.his_info;
                      that.hisPatientInfo = his_info
                    }
                  })
                }
              }
            })
            .catch(function(error) {

            })

        }
      },
      confirm(forms) {
        console.log(forms);

        forms['record_time'] = this.record_date;
        forms['admin_user_id'] = this.$store.getters.xt_user.user.id;
        forms['org_id'] = this.$store.getters.xt_user.org_id;

        this.loadingone = true;

        var that = this;

        if (this.$store.getters.xt_user.org_id == 10028 || this.$store.getters.xt_user.org_id == 9504) {

          axios.get('http://127.0.0.1:9532/sz/api/register/get', {
            params: forms,
            headers: {
              'Permission': 5
            }
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingone = false;
                that.$refs.register.hide();
                return false
              } else {
                if (response.data.data.failed_code == -10) {
                  // that.$message.error(response.data.data.msg);
                  that.$confirm(response.data.data.msg, '医保错误信息', {
                    confirmButtonText: '确 定',
                    type: 'warning'
                  }).then(() => {

                  }).catch(() => {
                  })

                } else {
                  that.$refs.register.hide();
                  let params = {
                    'record_date': that.record_date
                  };
                  getChargeHisPatientList(params).then(response => {
                    if (response.data.state == 0) {
                      that.$message.error(response.data.msg);
                      return false
                    } else {
                      that.loadingone = false;

                      that.patientTableData = [];
                      that.all_table_data = [];
                      that.hisPatientDatas = [];

                      let one_count = 0;
                      let two_count = 0;
                      let three_count = 0;
                      for (let i = 0; i < response.data.data.list.length; i++) {
                        that.all_table_data.push(response.data.data.list[i]);
                        if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                          one_count = one_count + 1;
                          that.patientTableData.push(response.data.data.list[i])
                        }
                        if (response.data.data.list[i].order.order_status == 2) {
                          two_count = two_count + 1;
                          that.patientTableData.push(response.data.data.list[i])
                        }
                      }
                      that.hisPatientDatas = response.data.data.list_two;
                      that.cal_one = one_count;
                      that.cal_two = two_count;
                      that.cal_three = three_count;
                      that.current_index = 0;

                      for (let i = 0; i < that.patientTableData.length; i++) {
                        if (this.patientTableData[i].id == this.patientInfo.id) {
                          that.$refs.tab.setCurrentRow(that.patientTableData[i]);
                          that.getPatientInformation(that.patientTableData[i].id, that.patientTableData[i].order.number,that.patientTableData[i].his_patient.id)
                        }
                      }
                      that.$message({ message: '挂号成功', type: 'success' });
                      that.loadingone = false;
                      var his_info = response.data.data.his_info;
                      that.hisPatientInfo = his_info
                    }
                  })
                }
              }
            })
            .catch(function(error) {

            })

        } else if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4 || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 9671  || this.$store.getters.xt_user.org_id == 9674 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990) {

          axios.get('http://127.0.0.1:9532/api/register/get', {
            params: forms,
            headers: {
              'Permission': 5
            }
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingone = false;
                that.$refs.register.hide();
                return false
              } else {
                if (response.data.data.failed_code == -10) {
                  // that.$message.error(response.data.data.msg);
                  that.$confirm(response.data.data.msg, '医保错误信息', {
                    confirmButtonText: '确 定',
                    type: 'warning'
                  }).then(() => {

                  }).catch(() => {
                  })

                } else {
                  that.$refs.register.hide();
                  let params = {
                    'record_date': that.record_date
                  };
                  getChargeHisPatientList(params).then(response => {
                    if (response.data.state == 0) {
                      that.$message.error(response.data.msg);
                      return false
                    } else {

                      that.loadingone = false;
                      that.$message({ message: '挂号成功', type: 'success' });

                      that.patientTableData = [];
                      that.all_table_data = [];
                      that.hisPatientDatas = [];
                      let one_count = 0;
                      let two_count = 0;
                      let three_count = 0;
                      for (let i = 0; i < response.data.data.list.length; i++) {
                        that.all_table_data.push(response.data.data.list[i]);
                        if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                          one_count = one_count + 1;
                          that.patientTableData.push(response.data.data.list[i])
                        }
                        if (response.data.data.list[i].order.order_status == 2) {
                          two_count = two_count + 1;
                          that.patientTableData.push(response.data.data.list[i])
                        }
                      }
                      that.hisPatientDatas = response.data.data.list_two;
                      that.cal_one = one_count;
                      that.cal_two = two_count;
                      that.cal_three = three_count;
                      that.current_index = 0;
                      for (let i = 0; i < that.patientTableData.length; i++) {
                        if (this.patientTableData[i].id == this.patientInfo.id) {
                          that.$refs.tab.setCurrentRow(that.patientTableData[i]);
                          that.getPatientInformation(that.patientTableData[i].id, that.patientTableData[i].order.number,that.patientTableData[i].his_patient.id)
                        }
                      }
                      var his_info = response.data.data.his_info;
                      that.hisPatientInfo = his_info

                    }

                  })
                }
              }
            })
            .catch(function(error) {

            })
        } else {
          register(forms).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              this.loadingone = false;
              // this.$refs.register.hide()
              return false
            } else {
              this.getPatientList();
              this.$message({ message: '挂号成功', type: 'success', duration: 5000 });
              this.$refs.register.hide();
              this.loadingone = false;
              var his_info = response.data.data.his_info;
              this.hisPatientInfo = his_info
            }
          })
        }

      }, cancel() {
        this.$refs.register.hide()
      },
      addCharges() {
        this.$refs.additionalCharges.show()
      },
      changeDate(val) {
        if (this.patientInfo.id == 0) {
          this.$message.error('请先选择患者');
          return
        }

        let params = {
          'record_date': val,
          'patient_id': this.patientInfo.id,
          'type': this.radio,
          'p_type':2,
          'his_patient_id':this.hisPatientInfo.id
        };
        getChargeHisPatientInfo(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.prescriptions = [];
            this.month_prescriptions = [];
            this.curPrescriptions = {};
            this.month_prescriptions = {};

            this.patientInfo = response.data.data.xt_info;
            this.hisPatientInfo = response.data.data.his_info;
            this.info = response.data.data.info;
            this.order = response.data.data.order;

            this.addtions_charge = response.data.data.addtions_charge;

            // this.setMonthPrescription(response.data.data.month_prescriptions)

            for (let i = 0; i < response.data.data.prescription.length; i++) {
              var prescription = response.data.data.prescription[i];

              let tempAdvice = [];
              let tempProject = [];

              for (let b = 0; b < prescription.advices.length; b++) {
                let obj = {
                  advice_id: prescription.advices[b].id,
                  drug_name: prescription.advices[b].advice_name,
                  single_dose: prescription.advices[b].single_dose,
                  delivery_way: prescription.advices[b].delivery_way,
                  execution_frequency: prescription.advices[b].execution_frequency,
                  retail_price: prescription.advices[b].price,
                  remark: prescription.advices[b].remark,
                  day: prescription.advices[b].day,
                  prescribing_number: prescription.advices[b].prescribing_number.toString(),
                  single_dose_unit: prescription.advices[b].single_dose_unit,
                  prescribing_number_unit: prescription.advices[b].prescribing_number_unit,
                  medical_insurance_number: prescription.advices[b].med_list_codg

                };
                tempAdvice.push(obj)
              }

              for (let b = 0; b < prescription.project.length; b++) {
                console.log(prescription.project[b].project.project_name);
                let obj = {
                  id: prescription.project[b].id,
                  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.toString(),
                  price: prescription.project[b].price,
                  remark: prescription.project[b].remark,
                  medical_code: prescription.project[b].project.medical_code,
                  unit: prescription.project[b].unit
                };

                tempProject.push(obj)
              }
              let index = i + 1;
              let obj = {
                id: prescription.id,
                name: '处方' + index,
                advices: tempAdvice,
                project: tempProject,
                type: prescription.type,
                order_status: prescription.order_status
              };
              this.prescriptions.push(obj)
            }
            this.curPrescriptions = this.prescriptions[0];
            this.total = 0;
            this.total = this.getTotalOne();
            this.month_total = 0;
            this.month_total = this.getMonthTotalOne()
          }
        })
      },
      getInitData() {
        getInitData().then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.doctors = response.data.data.doctors;
            this.department = response.data.data.department;
            this.sick = response.data.data.sick;
            this.diagnoses = response.data.data.diagnose

          }
        })

      },
      getDayPatientList() {

        let params = {
          'record_date': this.record_date
        };
        getChargeHisPatientList(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.patientTableData = [];
            this.all_table_data = [];
            this.hisPatientDatas = [];

            let one_count = 0;
            let two_count = 0;
            let three_count = 0;
            for (let i = 0; i < response.data.data.list.length; i++) {
              this.all_table_data.push(response.data.data.list[i]);
              if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                one_count = one_count + 1
              }

              if (response.data.data.list[i].order.order_status == 2) {
                two_count = two_count + 1
              }

              // if (response.data.data.list[i].order.order_status == 3) {
              //   three_count = three_count + 1
              // }
            }

            switch (this.radio) {

              case 1:
                this.patientTableData = [];

                for (let i = 0; i < this.all_table_data.length; i++) {
                  if (this.all_table_data[i].order.order_status == 0 || this.all_table_data[i].order.order_status == 1) {
                    this.patientTableData.push(this.all_table_data[i])
                  }

                }
                break;
              case 2:
                this.patientTableData = [];
                for (let i = 0; i < this.all_table_data.length; i++) {
                  if (this.all_table_data[i].order.order_status == 2) {
                    this.patientTableData.push(this.all_table_data[i])
                  }

                }
                break;
              case 3:
                this.patientTableData = [];

                for (let i = 0; i < this.all_table_data.length; i++) {

                  if (this.all_table_data[i].order.order_status == 3) {
                    this.patientTableData.push(this.all_table_data[i])
                  }

                }
                break;
              case 4:
                this.patientTableData = [];
                this.patientTableData = this.all_table_data;
                break

            }

            this.hisPatientDatas = response.data.data.list_two;
            this.cal_one = one_count;
            this.cal_two = two_count;
            this.cal_three = three_count;
            this.current_index = 0;

            if (this.patientTableData.length > 0) {
              for (let i = 0; i < this.patientTableData.length; i++) {
                if (this.patientTableData[i].id == this.patientInfo.id) {
                  this.$refs.tab.setCurrentRow(this.patientTableData[i]);
                  this.getPatientInformation(this.patientTableData[i].id, this.patientTableData[i].order.number,this.patientTableData[i].his_patient.id)
                }
              }
            }

          }
        })

      },
      getMonthPatientList() {

        let params = {
          'record_date': this.record_date
        };
        getChargeHisPatientList(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.patientTableData = [];
            this.all_table_data = [];
            this.hisPatientDatas = [];

            let one_count = 0;
            let two_count = 0;
            let three_count = 0;

            for (let i = 0; i < response.data.data.list_two.length; i++) {
              this.hisPatientDatas.push(response.data.data.list_two[i]);
              if (response.data.data.list_two[i].order.order_status == 0 || response.data.data.list_two[i].order.order_status == 1 || response.data.data.list_two[i].order.order_status == 3) {
                one_count = one_count + 1
              }

              if (response.data.data.list_two[i].order.order_status == 2) {
                two_count = two_count + 1
              }

              // if (response.data.data.list_two[i].order.order_status == 3) {
              //   three_count = three_count + 1
              // }
            }
            switch (this.radio) {
              case 1:
                this.patientTableData = [];

                for (let i = 0; i < this.hisPatientDatas.length; i++) {
                  if (this.hisPatientDatas[i].order.order_status == 0 || this.hisPatientDatas[i].order.order_status == 1 || this.hisPatientDatas[i].order.order_status == 3) {
                    this.patientTableData.push(this.hisPatientDatas[i])
                  }

                }
                break;
              case 2:
                this.patientTableData = [];
                for (let i = 0; i < this.hisPatientDatas.length; i++) {
                  if (this.hisPatientDatas[i].order.order_status == 2) {
                    this.patientTableData.push(this.hisPatientDatas[i])
                  }

                }
                break;
              // case 3:
              //   this.patientTableData = []
              //   for (let i = 0; i < this.hisPatientDatas.length; i++) {
              //     if (this.hisPatientDatas[i].order.order_status == 3) {
              //       this.patientTableData.push(this.hisPatientDatas[i])
              //     }
              //   }
              //   break
              case 4:
                this.patientTableData = [];
                this.patientTableData = this.hisPatientDatas;
                break

            }

            this.cal_one = one_count;
            this.cal_two = two_count;
            this.cal_three = three_count;
            this.current_index = 0;

            if (this.patientTableData.length > 0) {
              for (let i = 0; i < this.patientTableData.length; i++) {
                if (this.patientTableData[i].id == this.patientInfo.id) {
                  this.$refs.tab.setCurrentRow(this.patientTableData[i]);
                  this.getPatientInformation(this.patientTableData[i].id, this.patientTableData[i].order.number,this.patientTableData[i].his_patient.id)
                }
              }
            }

          }
        })

      },

      handleClick() {
        if (this.activeName == 'first') {
          // this.patientTableData = this.all_table_data
          this.getDayPatientList()

        } else if (this.activeName == 'second') {
          this.getMonthPatientList()

          // if (this.patientTableData.length > 0) {
          //   this.$refs.tab.setCurrentRow(this.patientTableData[0])
          //   this.getPatientInformation(this.patientTableData[0].id, this.patientTableData[0].order.number)
          // }

        }

      },
      searchAction() {

      }, tabclickEventTwo(val) {
        for (let i = 0; i < this.month_prescriptions.length; i++) {
          if (this.month_prescriptions[i].name == val.name) {

            this.curMonthPrescriptions = {};
            var temp = this.deepClone(this.month_prescriptions[i]);
            this.curMonthPrescriptions = temp
          }
        }
        this.prescription_id = this.month_prescriptions.id;
        this.month_total = 0;
        this.month_total = this.getMonthTotalOne()

      },
      tabclickEvent(val) {
        console.log('val', val.name);
        for (let i = 0; i < this.prescriptions.length; i++) {
          if (this.prescriptions[i].name == val.name) {

            this.curPrescriptions = {};
            var temp = this.deepClone(this.prescriptions[i]);
            this.curPrescriptions = temp
          }
        }
        console.log('9999', this.curPrescriptions);
        this.prescription_id = this.curPrescriptions.id;
        this.total = 0;
        this.total = this.getTotalOne()

      }, deepClone(source) {
        if (!source && typeof source !== 'object') {
          throw new Error('error arguments', 'shallowClone')
        }
        const targetObj = source.constructor === Array ? [] : {};
        Object.keys(source).forEach((keys) => {
          if (source[keys] && typeof source[keys] === 'object') {
            targetObj[keys] = this.deepClone(source[keys])
          } else {
            targetObj[keys] = source[keys]
          }
        });
        return targetObj
      }, getTotalOne() {
        var total = 0;
        if (this.curPrescriptions.type == 1) {
          if (this.curPrescriptions.advices != null) {
            for (let a = 0; a < this.curPrescriptions.advices.length; a++) {
              total = parseFloat(total) + parseFloat(this.curPrescriptions.advices[a].retail_price * this.curPrescriptions.advices[a].prescribing_number)

            }
          }
        } else {
          if (this.curPrescriptions.project != null) {
            for (let b = 0; b < this.curPrescriptions.project.length; b++) {
              total = parseFloat(total) + parseFloat(this.curPrescriptions.project[b].price * this.curPrescriptions.project[b].total)

            }
          }
        }

        if (this.curPrescriptions.addition != null) {
          for (let b = 0; b < this.curPrescriptions.addition.length; b++) {
            total = parseFloat(total) + parseFloat(this.curPrescriptions.addition[b].price * this.curPrescriptions.addition[b].count)
          }
        }
        return total.toFixed(2)

      }, getMonthTotalOne() {
        var total = 0;
        if (this.curMonthPrescriptions.type == 1) {
          if (this.curMonthPrescriptions.advices != null) {
            for (let a = 0; a < this.curMonthPrescriptions.advices.length; a++) {
              total = parseFloat(total) + parseFloat(this.curMonthPrescriptions.advices[a].retail_price * this.curMonthPrescriptions.advices[a].prescribing_number)

            }
          }
        } else {
          if (this.curMonthPrescriptions.project != null) {
            for (let b = 0; b < this.curMonthPrescriptions.project.length; b++) {
              total = parseFloat(total) + parseFloat(this.curMonthPrescriptions.project[b].price * this.curMonthPrescriptions.project[b].total)

            }
          }
        }

        if (this.curMonthPrescriptions.addition != null) {
          for (let b = 0; b < this.curMonthPrescriptions.addition.length; b++) {
            total = parseFloat(total) + parseFloat(this.curMonthPrescriptions.addition[b].price * this.curMonthPrescriptions.addition[b].count)
          }
        }
        return total.toFixed(2)

      },
      getTotal() {
        var total = 0;
        for (let i = 0; i < this.prescriptions.length; i++) {
          if (this.prescriptions[i].advices != null) {
            for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
              total = parseFloat(total) + parseFloat(this.prescriptions[i].advices[a].retail_price * this.prescriptions[i].advices[a].prescribing_number)
            }
          }
          if (this.prescriptions[i].project != null) {
            for (let b = 0; b < this.prescriptions[i].project.length; b++) {

              total = parseFloat(total) + parseFloat(this.prescriptions[i].project[b].price * this.prescriptions[i].project[b].total)
            }
          }
          if (this.prescriptions[i].addition != null) {
            for (let b = 0; b < this.prescriptions[i].addition.length; b++) {
              total = parseFloat(total) + parseFloat(this.prescriptions[i].addition[b].price * this.prescriptions[i].addition[b].count)
            }
          }
        }
        return total.toFixed(2)

      }, getTotalTwo() {
        var total = 0;
        for (let i = 0; i < this.month_prescriptions.length; i++) {
          if (this.month_prescriptions[i].advices != null) {
            for (let a = 0; a < this.month_prescriptions[i].advices.length; a++) {
              total = parseFloat(total) + parseFloat(this.month_prescriptions[i].advices[a].retail_price * this.month_prescriptions[i].advices[a].prescribing_number)
            }
          }
          if (this.month_prescriptions[i].project != null) {
            for (let a = 0; a < this.month_prescriptions[i].project.length; a++) {

              total = parseFloat(total) + parseFloat(this.month_prescriptions[i].project[a].price * this.month_prescriptions[i].project[a].total)
            }
          }

          if (this.month_prescriptions[i].addition != null) {
            for (let b = 0; b < this.month_prescriptions[i].addition.length; b++) {
              total = parseFloat(total) + parseFloat(this.month_prescriptions[i].addition[a].price * this.month_prescriptions[i].addition[b].count)
            }
          }
        }
        return total.toFixed(2)

      },
      moreState(tab, event) {
        if (tab == 'more') {
          return false
        }
      },
      open(index) {

        if (index == 1) {

        } else if (index == 2) {

          this.$router.push('/outpatientDoctorStation/printtwo?record=' + this.record_date)

        } else if (index == 3) {
          let obj = {
            record_date: this.record_date,
            patient_id: this.patient_id,
            prescription_id: this.prescription_id,
            order_id: this.order.id

          };
          this.paramsObj = obj;
          this.treatVisible = true
          // this.$router.push('/outpatientCharges/treatPrint?record_date=' + this.record_date + '&patient_id=' + this.patient_id + '&prescription_id=' + this.prescription_id)
        } else if (index == 4) {

          if (this.patientInfo.id == 0) {
            this.$message({ message: '该选择要收费的患者', type: 'error' });
            return
          }

          if (this.hisPatientInfo.id == 0) {
            this.$message({ message: '该患者尚未挂号,请先挂号', type: 'error' });
            return
          }

          let ids = [];
          if (this.activeName == 'first') {

            for (let i = 0; i < this.prescriptions.length; i++) {
              for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
                ids.push(this.prescriptions[i].advices[a].id)
              }
              for (let a = 0; a < this.prescriptions[i].addition.length; a++) {
                ids.push(this.prescriptions[i].addition[a].id)
              }

              for (let a = 0; a < this.prescriptions[i].project.length; a++) {
                ids.push(this.prescriptions[i].project[a].id)
              }
            }
            if (ids.length == 0) {
              this.$message.error('请先到医生工作站开处方再来结算');
              return
            }

          } else {
            console.log(this.month_prescriptions);
            for (let i = 0; i < this.month_prescriptions.length; i++) {
              for (let a = 0; a < this.month_prescriptions[i].advices.length; a++) {
                ids.push(this.month_prescriptions[i].advices[a].id)
              }

              for (let a = 0; a < this.month_prescriptions[i].addition.length; a++) {
                ids.push(this.month_prescriptions[i].addition[a].id)
              }

              for (let a = 0; a < this.month_prescriptions[i].project.length; a++) {
                ids.push(this.month_prescriptions[i].project[a].id)
              }
            }
            if (ids.length == 0) {
              this.$message.error('请先到医生工作站开处方再来结算');
              return
            }
          }

          if (this.activeName == 'first') {

            this.$refs.charge.show(this.getTotal())

          } else {
            this.$refs.charge.show(this.getTotalTwo())

          }

        } else if (index == 5) {
          if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4 || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 9671 || this.$store.getters.xt_user.org_id == 9674 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990 ) {

            var that = this;
            this.$confirm('是否退费', '退费', {
              confirmButtonText: '确 定',
              cancelButtonText: '取 消',
              type: 'warning'
            }).then(() => {
              let params = {
                'order_id': this.order.id,
                'number': this.order.number,
                'patient_id': this.patientInfo.id,
                'record_time': this.record_date,
                'admin_user_id': this.$store.getters.xt_user.user.id,
                'org_id': this.$store.getters.xt_user.org_id

              };
              axios.get('http://127.0.0.1:9532/api/refund/post', {
                params: params
              })
                .then(function(response) {
                  if (response.data.state == 0) {
                    that.$message.error(response.data.msg);
                    that.loadingtwo = false;
                    return false
                  } else {
                    if (response.data.data.failed_code == -10) {
                      // that.$message.error(response.data.data.msg)
                      that.$confirm(response.data.data.msg, '医保错误信息', {
                        confirmButtonText: '确 定',
                        type: 'warning'
                      }).then(() => {

                      }).catch(() => {
                      })

                    } else {
                      that.changeRadioAndPatient(1);
                      that.$message({ message: '退费成功', type: 'success', duration: 5000 });
                      that.loadingtwo = false
                    }

                  }
                })
                .catch(function(error) {

                })

            }).catch(() => {

            })

          } else {

            this.$confirm('是否退费', '退费', {
              confirmButtonText: '确 定',
              cancelButtonText: '取 消',
              type: 'warning'
            }).then(() => {
              let params = {
                'order_id': this.order.id,
                'number': this.order.number,
                'patient_id': this.patientInfo.id,
                'record_time': this.record_date

              };
              Refund(params).then(response => {
                if (response.data.state == 0) {
                  this.$message.error(response.data.msg);
                  this.loadingtwo = false;
                  return false
                } else {
                  this.radio = 1;
                  this.changeRadioAndPatient(1);
                  this.$message({ message: '退费成功', type: 'success' });
                  this.loadingtwo = false

                }
              })

            }).catch(() => {

            })

          }

        } else if (index == 6) {

          // if (this.patientInfo.id == 0) {
          //   this.$message.error('请先选择要挂号的病人')
          //   return
          // }

          this.$refs.register.show()

        } else if (index == 7) {
          let params = {
            start_time: '2020-12-28',
            end_time: '2020-12-30',
            insutype: '390',
            clr_type: '11',
            org_id: this.$store.getters.xt_user.org_id

          };

          var that = this;

          if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990) {
            axios.get('http://127.0.0.1:9532/api/checkaccount/get', {
              params: params
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  // that.loadingtwo = false
                  return false
                } else {

                }
              })
              .catch(function(error) {

              })

          }

        } else if (index == 8) {
          let params = {
            start_time: '2020-12-28',
            end_time: '2020-12-30'
          };
          var that = this;
          axios.get('http://127.0.0.1:9532/api/checkdetailaccount/get', {
            params: params
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingtwo = false;
                return false
              } else {

              }
            })
            .catch(function(error) {

            })

        } else if (index == 9) {
          this.statementVisible = true;
          let obj = {
            order_id: this.order.id
          };
          this.orderObj = obj
          // this.$refs.print.getInfo(this.order.id)

        } else if (index == 10) {
          var that = this;
          this.$confirm('是否退号', '退号', {
            confirmButtonText: '确 定',
            cancelButtonText: '取 消',
            type: 'warning'
          }).then(() => {
            let params = {
              'patient_id': this.patientInfo.id,
              'record_time': this.record_date,
              'org_id': this.$store.getters.xt_user.org_id,
              'admin_user_id': this.$store.getters.xt_user.user.id
            };
            axios.get('http://127.0.0.1:9532/api/refundnumber/post', {
              params: params
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  return false
                } else {
                  if (response.data.data.failed_code == -10) {
                    // that.$message.error(response.data.data.msg)
                    that.$confirm(response.data.data.msg, '医保错误信息', {
                      confirmButtonText: '确 定',
                      type: 'warning'
                    }).then(() => {

                    }).catch(() => {
                    })

                  } else {
                    that.radio = 1;
                    that.changeRadioAndPatient(1);
                    that.$message({ message: '退号成功', type: 'success', duration: 5000 })
                  }

                }
              })
              .catch(function(error) {
              })
          }).catch(() => {
          })
        } else if (index == 11) {
          let params = {
            'order_id': this.order.id,
            'number': this.order.number,
            'patient_id': this.patientInfo.id,
            'record_time': this.record_date,
            'org_id': this.$store.getters.xt_user.org_id
          };
          axios.get('http://127.0.0.1:9532/api/refunddetail/post', {
            params: params
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingtwo = false;
                return false
              } else {
                // that.$message({ message: '退号成功', type: 'success' })
                that.$message({ message: '退明细成功', type: 'success', duration: 5000 });
                that.loadingtwo = false
              }
            })
            .catch(function(error) {
            })

        } else if (index == 12) {
          let params = {
            'name': '琥珀酸亚铁片',
            'codg': 'XB03AAH026A001010104942'
          };
          axios.get('http://127.0.0.1:9532/api/code/get', {
            params: params
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingtwo = false;
                return false
              } else {

                that.loadingtwo = false
              }
            })
            .catch(function(error) {
            })

        } else if (index == 13) {
          let params = {
            'id': this.patientInfo.id,
            'record_time': this.record_date
          };
          axios.get('http://127.0.0.1:9532/api/record/put', {
            params: params
          })
            .then(function(response) {
              if (response.data.state == 0) {
                that.$message.error(response.data.msg);
                that.loadingtwo = false;
                return false
              } else {
                that.loadingtwo = false
              }
            })
            .catch(function(error) {
            })
        } else if (index == 15) {
          var that = this;
          if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 4 || this.$store.getters.xt_user.org_id == 9538 || this.$store.getters.xt_user.org_id == 10106 ||   this.$store.getters.xt_user.org_id == 9990) {

            if (this.diagnosis.length || this.diagnosis == 0) {
              that.$message.error('诊断不能为空,请选择诊断内容');
              return
            }

            if (this.sick_type.length || this.sick_type == 0) {

              that.$message.error('疾病类型不能为空,请选择疾病类型');
              return
            }

            if (this.reg_type.length || this.reg_type == 0) {
              that.$message.error('处方类型不能为空,请选择处方类型');
              return
            }

            let params = {
              'id': that.patientInfo.id,
              'record_time': that.record_date,
              'diagnosis': that.diagnosis,
              'sick_type': that.sick_type,
              'reg_type': that.p_type
            };
            this.dise_loading = true;
            axios.get('http://127.0.0.1:9532/api/diag/upload', {
              params: params
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  that.dise_loading = false;
                  return false
                } else {
                  that.dise_loading = false;
                  that.$message.success('上传成功')
                }
              })
              .catch(function(error) {
              })

          }

        } else if (index == 20) {
          if (this.patientInfo.id == 0) {
            this.$message({ message: '该选择要收费的患者', type: 'error' });
            return
          }

          if (this.hisPatientInfo.id == 0) {
            this.$message({ message: '该患者尚未挂号,请先挂号', type: 'error' });
            return
          }

          let ids = [];
          if (this.activeName == 'first') {
            for (let i = 0; i < this.prescriptions.length; i++) {
              for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
                ids.push(this.prescriptions[i].advices[a].id)
              }
              for (let a = 0; a < this.prescriptions[i].addition.length; a++) {
                ids.push(this.prescriptions[i].addition[a].id)
              }

              for (let a = 0; a < this.prescriptions[i].project.length; a++) {
                ids.push(this.prescriptions[i].project[a].id)
              }
            }
            if (ids.length == 0) {
              this.$message.error('请先到医生工作站开处方再来结算');
              return
            }
          } else {
            for (let i = 0; i < this.month_prescriptions.length; i++) {
              for (let a = 0; a < this.month_prescriptions[i].advices.length; a++) {
                ids.push(this.month_prescriptions[i].advices[a].id)
              }

              for (let a = 0; a < this.month_prescriptions[i].addition.length; a++) {
                ids.push(this.month_prescriptions[i].addition[a].id)
              }

              for (let a = 0; a < this.month_prescriptions[i].project.length; a++) {
                ids.push(this.month_prescriptions[i].project[a].id)
              }
            }
            if (ids.length == 0) {
              this.$message.error('请先到医生工作站开处方再来结算');
              return
            }
          }

          var form = {};
          form['id'] = this.patientInfo.id;
          form['record_time'] = this.record_date;
          form['admin_user_id'] = this.$store.getters.xt_user.user.id;
          form['org_id'] = this.$store.getters.xt_user.org_id;

          if (this.activeName == 'first') {
            form['settle_accounts_type'] = 1

          } else {
            form['start_time'] = this.other_start_time;
            form['end_time'] = this.other_end_time;
            form['settle_accounts_type'] = 2

          }
          this.loadingtwo = true;
          if (this.$store.getters.xt_user.org_id == 9919 || this.$store.getters.xt_user.org_id == 10106 || this.$store.getters.xt_user.org_id == 9990) {
            var that = this;
            axios.get('http://127.0.0.1:9532/api/pre_upload/get', {
              params: form
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  that.loadingtwo = false;
                  that.$refs.charge.hide();
                  return false
                } else {
                  that.loadingtwo = false;
                  that.state = '预结算';

                  that.$message({ message: '预结算成功', type: 'success' })
                }
              })
              .catch(function(error) {

              })
          } else {

          }
        } else if (index == 21) {

          if (this.patientInfo.id == 0) {
            this.$message({ message: '该选择要收费的患者', type: 'error' });
            return
          }

          if (this.hisPatientInfo.id == 0) {
            this.$message({ message: '该患者尚未挂号,请先挂号', type: 'error' });
            return
          }

          let ids = [];
          if (this.activeName == 'first') {
            for (let i = 0; i < this.prescriptions.length; i++) {
              for (let a = 0; a < this.prescriptions[i].advices.length; a++) {
                ids.push(this.prescriptions[i].advices[a].id)
              }
              for (let a = 0; a < this.prescriptions[i].addition.length; a++) {
                ids.push(this.prescriptions[i].addition[a].id)
              }

              for (let a = 0; a < this.prescriptions[i].project.length; a++) {
                ids.push(this.prescriptions[i].project[a].id)
              }
            }
            if (ids.length == 0) {
              this.$message.error('请先到医生工作站开处方再来结算');
              return
            }

          } else {
            for (let i = 0; i < this.month_prescriptions.length; i++) {
              for (let a = 0; a < this.month_prescriptions[i].advices.length; a++) {
                ids.push(this.month_prescriptions[i].advices[a].id)
              }

              for (let a = 0; a < this.month_prescriptions[i].addition.length; a++) {
                ids.push(this.month_prescriptions[i].addition[a].id)
              }

              for (let a = 0; a < this.month_prescriptions[i].project.length; a++) {
                ids.push(this.month_prescriptions[i].project[a].id)
              }
            }
            if (ids.length == 0) {
              this.$message.error('请先到医生工作站开处方再来结算');
              return
            }
          }
          if (this.activeName == 'first') {
            this.$refs.charge.show(this.getTotal())
          } else {
            this.$refs.charge.show(this.getTotalTwo())
          }
        }
      },

      choosePatient() {
        console.log(id);
        this.radioStatus = id;
        this.getPatientList()
      },   changeRadioAndPatient(id) {
        // console.log(id)
        // this.radioStatus = id
        // this.getPatientList()
        let temp_id = id;

        let params = {
          'record_date': this.record_date
        };
        getChargeHisPatientList(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.patientTableData = [];
            this.hisPatientDatas = [];
            this.all_table_data = [];
            let one_count = 0;
            let two_count = 0;
            let three_count = 0;

            if (this.activeName == 'first') { //日结

              for (let i = 0; i < response.data.data.list.length; i++) {
                this.all_table_data.push(response.data.data.list[i]);
                if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                  one_count = one_count + 1
                }

                if (response.data.data.list[i].order.order_status == 2) {
                  two_count = two_count + 1
                }

                // if (response.data.data.list[i].order.order_status == 3) {
                //   three_count = three_count + 1
                // }
              }

            } else { //月结

              for (let i = 0; i < response.data.data.list_two.length; i++) {
                this.hisPatientDatas.push(response.data.data.list_two[i]);
                if (response.data.data.list_two[i].order.order_status == 0 || response.data.data.list_two[i].order.order_status == 1) {
                  one_count = one_count + 1
                }

                if (response.data.data.list_two[i].order.order_status == 2) {
                  two_count = two_count + 1
                }

                if (response.data.data.list_two[i].order.order_status == 3) {
                  three_count = three_count + 1
                }
              }

            }

            this.cal_one = one_count;
            this.cal_two = two_count;
            this.cal_three = three_count;

            switch (temp_id) {

              case 1:
                this.patientTableData = [];
                if (this.activeName == 'first') {

                  for (let i = 0; i < this.all_table_data.length; i++) {
                    if ((this.all_table_data[i].order && this.all_table_data[i].order.order_status == 0) || (this.all_table_data[i].order && this.all_table_data[i].order.order_status == 1)) {
                      this.patientTableData.push(this.all_table_data[i])
                    }

                  }

                } else {
                  for (let i = 0; i < this.hisPatientDatas.length; i++) {
                    if (this.hisPatientDatas[i].order.order_status == 0 || this.hisPatientDatas[i].order.order_status == 1) {
                      this.patientTableData.push(this.hisPatientDatas[i])
                    }

                  }

                }

                break;
              case 2:
                this.patientTableData = [];
                if (this.activeName == 'first') {

                  for (let i = 0; i < this.all_table_data.length; i++) {
                    if (this.all_table_data[i].order.order_status == 2) {
                      this.patientTableData.push(this.all_table_data[i])
                    }

                  }
                } else {
                  for (let i = 0; i < this.hisPatientDatas.length; i++) {
                    if (this.hisPatientDatas[i].order.order_status == 2) {
                      this.patientTableData.push(this.hisPatientDatas[i])
                    }
                  }

                }
                break;
              case 3:
                this.patientTableData = [];

                if (this.activeName == 'first') {

                  for (let i = 0; i < this.all_table_data.length; i++) {

                    if (this.all_table_data[i].order.order_status == 3) {
                      this.patientTableData.push(this.all_table_data[i])
                    }

                  }
                } else {

                  for (let i = 0; i < this.hisPatientDatas.length; i++) {

                    if (this.hisPatientDatas[i].order.order_status == 3) {
                      this.patientTableData.push(this.hisPatientDatas[i])
                    }

                  }

                }
                break;
              case 4:
                this.patientTableData = [];
                if (this.activeName == 'first') {

                  this.patientTableData = this.all_table_data
                } else {

                  this.patientTableData = this.hisPatientDatas
                }
                break

            }

            this.current_index = 0;

            for (let i = 0; i < this.patientTableData.length; i++){
              if(this.patientInfo.id == this.patientTableData[i].id)
              this.$refs.tab.setCurrentRow(this.patientTableData[i]);
              this.getPatientInformation(this.patientTableData[i].id, this.patientTableData[i].order.number,this.patientTableData[i].his_patient.id)
            }

          }
        })

      },

      changeRadio(id) {
        // console.log(id)
        // this.radioStatus = id
        // this.getPatientList()
        let temp_id = id;

        let params = {
          'record_date': this.record_date
        };
        getChargeHisPatientList(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.patientTableData = [];
            this.hisPatientDatas = [];
            this.all_table_data = [];
            let one_count = 0;
            let two_count = 0;
            let three_count = 0;

            if (this.activeName == 'first') { //日结

              for (let i = 0; i < response.data.data.list.length; i++) {
                this.all_table_data.push(response.data.data.list[i]);
                if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                  one_count = one_count + 1
                }

                if (response.data.data.list[i].order.order_status == 2) {
                  two_count = two_count + 1
                }

                // if (response.data.data.list[i].order.order_status == 3) {
                //   three_count = three_count + 1
                // }
              }

            } else { //月结

              for (let i = 0; i < response.data.data.list_two.length; i++) {
                this.hisPatientDatas.push(response.data.data.list_two[i]);
                if (response.data.data.list_two[i].order.order_status == 0 || response.data.data.list_two[i].order.order_status == 1) {
                  one_count = one_count + 1
                }

                if (response.data.data.list_two[i].order.order_status == 2) {
                  two_count = two_count + 1
                }

                if (response.data.data.list_two[i].order.order_status == 3) {
                  three_count = three_count + 1
                }
              }

            }

            this.cal_one = one_count;
            this.cal_two = two_count;
            this.cal_three = three_count;

            switch (temp_id) {

              case 1:
                this.patientTableData = [];
                if (this.activeName == 'first') {

                  for (let i = 0; i < this.all_table_data.length; i++) {
                    if ((this.all_table_data[i].order && this.all_table_data[i].order.order_status == 0) || (this.all_table_data[i].order && this.all_table_data[i].order.order_status == 1)) {
                      this.patientTableData.push(this.all_table_data[i])
                    }

                  }

                } else {
                  for (let i = 0; i < this.hisPatientDatas.length; i++) {
                    if (this.hisPatientDatas[i].order.order_status == 0 || this.hisPatientDatas[i].order.order_status == 1) {
                      this.patientTableData.push(this.hisPatientDatas[i])
                    }

                  }

                }

                break;
              case 2:
                this.patientTableData = [];
                if (this.activeName == 'first') {

                  for (let i = 0; i < this.all_table_data.length; i++) {
                    if (this.all_table_data[i].order.order_status == 2) {
                      this.patientTableData.push(this.all_table_data[i])
                    }

                  }
                } else {
                  for (let i = 0; i < this.hisPatientDatas.length; i++) {
                    if (this.hisPatientDatas[i].order.order_status == 2) {
                      this.patientTableData.push(this.hisPatientDatas[i])
                    }
                  }

                }
                break;
              case 3:
                this.patientTableData = [];

                if (this.activeName == 'first') {

                  for (let i = 0; i < this.all_table_data.length; i++) {

                    if (this.all_table_data[i].order.order_status == 3) {
                      this.patientTableData.push(this.all_table_data[i])
                    }

                  }
                } else {

                  for (let i = 0; i < this.hisPatientDatas.length; i++) {

                    if (this.hisPatientDatas[i].order.order_status == 3) {
                      this.patientTableData.push(this.hisPatientDatas[i])
                    }

                  }

                }
                break;
              case 4:
                this.patientTableData = [];
                if (this.activeName == 'first') {

                  this.patientTableData = this.all_table_data
                } else {

                  this.patientTableData = this.hisPatientDatas
                }
                break

            }

            this.current_index = 0;

            for (let i = 0; i < this.patientTableData.length; i++){
                this.$refs.tab.setCurrentRow(this.patientTableData[0]);
                this.getPatientInformation(this.patientTableData[0].id, this.patientTableData[0].order.number,this.patientTableData[0].his_patient.id)
            }

          }
        })

      },
      formatDecimal(num, decimal) {
        num = num.toString();
        let index = num.indexOf('.');
        if (index !== -1) {
          num = num.substring(0, decimal + index + 1)
        } else {
          num = num.substring(0)
        }
        return parseFloat(num).toFixed(decimal)
      },
      //患者列表
      getPatientList() {
        let params = {
          'record_date': this.record_date
        };
        getChargeHisPatientList(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.patientTableData = [];
            this.all_table_data = [];
            this.hisPatientDatas = [];

            let one_count = 0;
            let two_count = 0;
            let three_count = 0;
            for (let i = 0; i < response.data.data.list.length; i++) {
              this.all_table_data.push(response.data.data.list[i]);
              if (response.data.data.list[i].order.order_status == 0 || response.data.data.list[i].order.order_status == 1 || response.data.data.list[i].order.order_status == 3) {
                one_count = one_count + 1
              }

              if (response.data.data.list[i].order.order_status == 2) {
                two_count = two_count + 1
              }

              // if (response.data.data.list[i].order.order_status == 3) {
              //   three_count = three_count + 1
              // }
            }

            switch (this.radio) {

              case 1:
                this.patientTableData = [];

                for (let i = 0; i < this.all_table_data.length; i++) {
                  if (this.all_table_data[i].order.order_status == 0 || this.all_table_data[i].order.order_status == 1 || this.all_table_data[i].order.order_status == 3) {
                    this.patientTableData.push(this.all_table_data[i])
                  }

                }
                break;
              case 2:
                this.patientTableData = [];
                for (let i = 0; i < this.all_table_data.length; i++) {
                  if (this.all_table_data[i].order.order_status == 2) {
                    this.patientTableData.push(this.all_table_data[i])
                  }

                }
                break;
              case 3:
                this.patientTableData = [];

                for (let i = 0; i < this.all_table_data.length; i++) {

                  if (this.all_table_data[i].order.order_status == 3) {
                    this.patientTableData.push(this.all_table_data[i])
                  }

                }
                break;
              case 4:
                this.patientTableData = [];
                this.patientTableData = this.all_table_data;
                break

            }

            this.hisPatientDatas = response.data.data.list_two;
            this.cal_one = one_count;
            this.cal_two = two_count;
            this.cal_three = three_count;
            this.current_index = 0;
            this.$refs.tab.setCurrentRow(this.patientTableData[0]);
            this.getPatientInformation(this.patientTableData[0].id, this.patientTableData[0].order.number,this.patientTableData[0].his_patient.id)

          }
        })
      },
      setMonthPrescription(month_prescriptions) {
        this.month_prescriptions = [];

        let drug_month_prescriptions = {
          advices: []
        };
        let drug_ids = [];
        let project_month_prescriptions = {
          project: []

        };
        let project_ids = [];

        let addition_month_prescriptions = {
          addition: []

        };
        let additions_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_ids.push(month_prescriptions[i].advices[a].drug_id)

              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])
            }
          }
          //附加收费
          for (let a = 0; a < month_prescriptions[i].addition.length; a++) {
            let obj = {
              id: month_prescriptions[i].addition[a].item_id,
              price: month_prescriptions[i].addition[a].price

            };
            additions_ids.push(obj);
            addition_month_prescriptions.addition.push(month_prescriptions[i].addition[a])

          }

        }

        drug_ids = this.unique_two(drug_ids);
        project_ids = this.unique_two(project_ids);
        additions_ids = this.unique_two(additions_ids);

        let drugs = [];
        let projects = [];
        let additions = [];

        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['drug_name'] = drug_month_prescriptions.advices[a].advice_name;
              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'] =  obj['prescribing_number']  + drug_month_prescriptions.advices[a].prescribing_number
              obj['prescribing_number_unit'] = drug_month_prescriptions.advices[a].prescribing_number_unit;
              obj['medical_insurance_number'] = drug_month_prescriptions.advices[a].drug.medical_insurance_number;
              obj['id'] = drug_month_prescriptions.advices[a].drug_id;
              // obj['retail_price'] = obj['retail_price'] +  drug_month_prescriptions.advices[a].drug.retail_price
              obj['retail_price'] = parseFloat(drug_month_prescriptions.advices[a].price);
              count = count + drug_month_prescriptions.advices[a].prescribing_number

            }
          }
          obj['prescribing_number'] = count;
          drugs.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) {
              obj['project_name'] = project_month_prescriptions.project[a].project.project_name;
              obj['statistical_classification'] = project_month_prescriptions.project[a].project.statistical_classification;
              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['number_days'] = project_month_prescriptions.project[a].day;
              obj['medical_code'] = project_month_prescriptions.project[a].project.medical_code;
              obj['unit'] = project_month_prescriptions.project[a].unit;
              obj['project_id'] = project_month_prescriptions.project[a].project_id;
              count = count + project_month_prescriptions.project[a].count;
              // price = price + project_month_prescriptions.project[a].price
              obj['price'] = parseFloat(project_month_prescriptions.project[a].price)

            }
          }
          obj['total'] = count;
          projects.push(obj)
        }

        for (let i = 0; i < additions_ids.length; i++) {
          let obj = {};
          let count = 0;
          if (addition_month_prescriptions.addition) {
            for (let a = 0; a < addition_month_prescriptions.addition.length; a++) {
              if (additions_ids[i].price == addition_month_prescriptions.addition[a].price && additions_ids[i].id == addition_month_prescriptions.addition[a].item_id) {
                obj['item_name'] = addition_month_prescriptions.addition[a].item_name;
                obj['id'] = addition_month_prescriptions.addition[a].id;
                obj['item_id'] = addition_month_prescriptions.addition[a].item_id;
                count = count + addition_month_prescriptions.addition[a].count;
                obj['price'] = parseFloat(addition_month_prescriptions.addition[a].price)
              }
            }
            obj['count'] = count;
            additions.push(obj)
          }
        }

        let p1 = {
          name: '处方' + 1,
          advices: drugs,
          project: [],
          type: 1,
          addition: additions
        };
        let p2 = {
          name: '处方' + 2,
          type: 2,
          project: projects,
          advices: [],
          addition: []
        };

        this.month_prescriptions.push(p1);
        this.month_prescriptions.push(p2);

        this.curMonthPrescriptions = this.month_prescriptions[0]

      }, unique_two(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
      },

      unique(arr) {
        const res = new Map();
        return arr.filter((arr) => !res.has(arr.id_card_no) && res.set(arr.id_card_no, 1))
      },
      handleCurrentChange(val) {
        this.curPrescriptions = {};
        this.curMonthPrescriptions = {};
        this.prescriptions = [];
        this.month_prescriptions = [];

        this.getPatientInformation(val.id, val.order.number,val.his_patient.id);
        this.patient_id = val.id;

        for (let i = 0; i < this.patientTableData.length; i++) {
          if (this.patientTableData[i].id == val.id) {
            this.current_index = i
          }

        }

      },

      //获取患者的基本信息
      getPatientInformation(id, batch_number,his_patient_id) {

        let params = {
          'record_date': this.record_date,
          'patient_id': id,
          'number': batch_number,
          'start_time': this.other_start_time,
          'end_time': this.other_end_time,
          'type': this.radio,
          'p_type':2,
          'his_patient_id':his_patient_id
        };
        this.loading = true;

        getChargeHisPatientInfo(params).then(response => {
          if (response.data.state == 0) {
            this.loading = false;

            this.$message.error(response.data.msg);
            return false
          } else {
            this.prescriptions = [];
            this.month_prescriptions = [];
            this.curPrescriptions = {};
            this.curMonthPrescriptions = {};

            this.loading = false;
            this.patientInfo = response.data.data.xt_info;
            this.hisPatientInfo = response.data.data.his_info;
            this.info = response.data.data.info;
            this.order = response.data.data.order;

            this.p_type = '';
            this.sick_type = '';
            this.diagnosis = '';
            this.sick_history = '';

            if (this.info.id > 0) {
              this.p_type = this.info.register_type;
              this.sick_type = this.info.sick_type;
              this.diagnosis = this.info.diagnosis;
              this.sick_history = this.info.sick_history;

              if (this.info.register_type == 0) {
                this.p_type = ''
              }

              if (this.info.sick_type == 0) {
                this.sick_type = ''
              }

              if (this.info.diagnosis == 0) {
                this.diagnosis = ''
              }

            } else {
              this.p_type = '';
              this.sick_type = '';
              this.diagnosis = '';
              this.sick_history = ''

            }
            this.addtions_charge = response.data.data.addtions_charge;
            this.setMonthPrescription(response.data.data.month_prescriptions);
            if (response.data.data.prescription.length > 0 && response.data.data.prescription[0].advices.length > 0) {
              this.prescription_id = response.data.data.prescription[0].advices[0].prescription_id
            } else {
              this.prescription_id = 0
            }

            for (let i = 0; i < response.data.data.prescription.length; i++) {
              var prescription = response.data.data.prescription[i];
              let tempAdvice = [];
              let tempProject = [];
              let tempAddition = [];
              for (let b = 0; b < prescription.advices.length; b++) {
                let obj = {
                  advice_id: prescription.advices[b].id,
                  drug_name: prescription.advices[b].advice_name,
                  single_dose: prescription.advices[b].single_dose,
                  delivery_way: prescription.advices[b].delivery_way,
                  execution_frequency: prescription.advices[b].execution_frequency,
                  retail_price: prescription.advices[b].price.toString(),
                  remark: prescription.advices[b].remark,
                  day: prescription.advices[b].day,
                  prescribing_number: prescription.advices[b].prescribing_number.toString(),
                  single_dose_unit: prescription.advices[b].single_dose_unit,
                  prescribing_number_unit: prescription.advices[b].prescribing_number_unit,
                  medical_insurance_number: prescription.advices[b].med_list_codg

                };
                tempAdvice.push(obj)
              }

              for (let b = 0; b < prescription.project.length; b++) {
                console.log(prescription.project[b].project.project_name);
                let obj = {
                  id: prescription.project[b].id,
                  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.toString(),
                  price: prescription.project[b].price,
                  remark: prescription.project[b].remark,
                  medical_code: prescription.project[b].project.medical_code,
                  unit: prescription.project[b].project.unit
                };
                tempProject.push(obj)
              }

              for (let b = 0; b < prescription.addition.length; b++) {
                let obj = {
                  id: prescription.addition[b].id,
                  item_name: prescription.addition[b].item_name,
                  price: prescription.addition[b].price,
                  count: prescription.addition[b].count,
                  item_id: prescription.addition[b].item_id
                };
                tempAddition.push(obj)
              }
              let index = i + 1;
              let obj = {
                id: prescription.id,
                name: '处方' + index,
                advices: tempAdvice,
                project: tempProject,
                addition: tempAddition,
                order_status: prescription.order_status,
                type: prescription.type
              };
              this.prescriptions.push(obj)

            }

            if (this.prescriptions.length > 0) {
              this.curPrescriptions = this.prescriptions[0]
            } else {
              this.curPrescriptions = {}
            }
            if (this.month_prescriptions.length > 0) {
              this.curMonthPrescriptions = this.month_prescriptions[0]
            } else {
              this.curMonthPrescriptions = {}
            }
            this.total = 0;
            this.total = this.getTotalOne();
            this.month_total = this.getMonthTotalOne()

          }
        })
      },
      sz_open(index) {
        switch (index) {
          case 1:
            this.$refs.register9504.show();
            break;
          case 2:
            var that = this;
            if (this.activeName == 'first') {
              this.settle_accounts_type = 1

            } else {
              this.settle_accounts_type = 2;
              this.start_time = this.other_start_time;
              this.end_time = this.other_end_time;
              this.settle_accounts_type = 2

            }
            let params = {
              'patient_id': this.patientInfo.id,
              'record_time': this.record_date,
              'settle_accounts_type': this.settle_accounts_type,
              'admin_user_id': this.$store.getters.xt_user.user.id
            };
            axios.get('http://127.0.0.1:9532/sz/api/upload/get', {
              params: params,
              headers: {
                'Permission': 5
              }
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  return false
                } else {

                  if (response.data.data.failed_code == -10) {

                    that.$confirm(response.data.data.msg, '医保错误信息', {
                      confirmButtonText: '确 定',
                      type: 'warning'
                    }).then(() => {

                    }).catch(() => {
                    })

                  } else {
                    that.changeRadioAndPatient(1);
                    that.$message({ message: '预结算成功', type: 'success' })
                  }

                }
              })
              .catch(function(error) {
              });
            break;
          case 3:
            if (this.activeName == 'first') {
              this.$refs.charge.show(this.getTotal())
            } else {
              this.$refs.charge.show(this.getTotalTwo())
            }
            break;
          case 4:
            break;
          case 5:
            var that = this;
            this.$confirm('是否退费', '退费', {
              confirmButtonText: '确 定',
              cancelButtonText: '取 消',
              type: 'warning'
            }).then(() => {
              axios.get('http://127.0.0.1:9532/sz/api/refund/get', {
                params: {
                  order_id: this.order.id,
                  record_time: this.record_date,
                  admin_user_id: this.$store.getters.xt_user.user.id,
                  patient_id: this.patientInfo.id
                }
              })
                .then(function(response) {
                  if (response.data.state == 0) {
                    that.$message.error(response.data.msg);
                    return false
                  } else {
                    if (response.data.data.failed_code == -10) {
                      that.$confirm(response.data.data.msg, '医保错误信息', {
                        confirmButtonText: '确 定',
                        type: 'warning'
                      }).then(() => {

                      }).catch(() => {
                      })

                    } else {
                      that.changeRadioAndPatient(1);
                      that.$message({ message: '退费成功', type: 'success' })
                    }
                  }
                })
                .catch(function(error) {
                })
            }).catch(() => {
            });
            break;
          case 6:
            var that = this;
            axios.get('http://127.0.0.1:9532/sz/api/settle/query', {
              params: {
                order_id: this.order.id,
                record_time: this.record_date,
                admin_user_id: this.$store.getters.xt_user.user.id,
                patient_id: this.patientInfo.id
              }
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  return false
                } else {
                  if (response.data.data.failed_code == -10) {
                    that.$confirm(response.data.data.msg, '医保错误信息', {
                      confirmButtonText: '确 定',
                      type: 'warning'
                    }).then(() => {

                    }).catch(() => {
                    })

                  } else {
                    that.$message({ message: '查询成功', type: 'success' })
                  }
                }
              })
              .catch(function(error) {
              });
            break;
          case 7:
            var that = this;
            axios.get('http://127.0.0.1:9532/sz/api/detail/cancel', {
              params: {
                order_id: this.order.id,
                record_time: this.record_date,
                admin_user_id: this.$store.getters.xt_user.user.id,
                patient_id: this.patientInfo.id

              }
            })
              .then(function(response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  return false
                } else {
                  if (response.data.data.failed_code == -10) {

                    that.$confirm(response.data.data.msg, '医保错误信息', {
                      confirmButtonText: '确 定',
                      type: 'warning'
                    }).then(() => {

                    }).catch(() => {
                    })


                  } else {

                    that.$message({ message: '明细撤销成功', type: 'success' })

                  }
                }
              })
              .catch(function(error) {
              });

            break;
          case 10:
            this.newStatementVisible = true;
            let obj = {
              record_time: this.record_date,
              patient_id: this.patient_id,
              prescription_id: this.prescription_id,
              order_id: this.order.id,
              admin_user_id: this.$store.getters.xt_user.user.id

            };
            this.newOrderObj = obj;
            // this.$refs.print.getInfo(this.order.id)
            break;
          case 11:
            var that = this;
            this.$confirm('是否退号', '退号', {
              confirmButtonText: '确 定',
              cancelButtonText: '取 消',
              type: 'warning'
            }).then(() => {
              axios.get('http://127.0.0.1:9532/sz/api/refundnumber/get', {
                params: {
                  order_id: this.order.id,
                  record_time: this.record_date,
                  admin_user_id: this.$store.getters.xt_user.user.id,
                  patient_id: this.patientInfo.id
                }
              })
                .then(function(response) {
                  if (response.data.state == 0) {
                    that.$message.error(response.data.msg);
                    return false
                  } else {
                    if (response.data.data.failed_code == -10) {
                      that.$confirm(response.data.data.msg, '医保错误信息', {
                        confirmButtonText: '确 定',
                        type: 'warning'
                      }).then(() => {

                      }).catch(() => {
                      })


                    } else {
                      that.changeRadioAndPatient(1);
                      that.$message({ message: '退号成功', type: 'success' })
                    }
                  }
                })
                .catch(function(error) {
                })
            }).catch(() => {
            });
            break

        }

      }
    },
    mounted() {
      const that = this;
      window.onresize = () => {
        return (() => {
          window.fullHeight = document.documentElement.clientHeight;
          that.fullHeight = window.fullHeight
        })()
      }
    },
    watch: {
      fullHeight(val) {
        if (!this.timer) {
          this.fullHeight = val;
          let tableHeight = val - 243;
          this.tableHeight = tableHeight;
          this.timer = true;
          let that = this;
          setTimeout(function() {
            that.timer = false
          }, 400)
        }
      }
    }
  }
</script>

<style lang="scss" scoped>
    .app-container {
        height: 100%;
    }

    .outpatientChargesManagement {
        height: 100%;
        display: flex;
        flex-direction: column;

    .mainLeft {
        width: 200px;
        height: 100%;
        display: flex;
        flex-direction: column;
        padding-top: 20px;

    .el-radio {
        margin-right: 5px;
    }

    }
    .mainCell {
        height: 36px;
        display: flex;
        align-items: center;
    }

    .fixedCell {
        position: fixed;
        z-index: 99;
        right: 42px;
        background: #fff;
        display: flex;
        justify-content: space-between;
    }

    .mainRight {
        margin-left: 10px;
        flex: 1;
        height: 100%;
        display: flex;
        flex-direction: column;
        overflow-y: auto;

    .cellSpan {
        min-width: 80px;
        display: inline-block;
        margin-right: 10px;
    }

    }
    .tabsBox {
        position: relative;
        height: 90%;
        overflow-y: auto;
        margin-bottom: 60px;

    .el-tabs__item {
        padding: 0 10px;
    }

    }
    .addTab {
        position: absolute;
        right: 6px;
        top: 3px;
        z-index: 20;
    }

    .mainCenter {
        display: flex;
        flex: 1;
        height: 100%;
    }

    .costBox {
        width: 100%;
        height: 60px;
        background: #fff;
        position: absolute;
        bottom: 0;
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .centerLeft {
        flex: 1;
        display: flex;
        flex-direction: column;
        position: relative;
    }

    .preTabs {
        height: 100%;
        display: flex;
        flex-direction: column;

    .el-tab-pane {
        height: auto !important;
    }

    }

    .settlementTabs {
        flex: 1;

    .el-tab-pane {
        height: 100%;
    }

    .el-tabs__content {
        height: 100%;
    }

    }
    .centerRight {
        width: 300px;
        margin-left: 10px;
        display: flex;
        flex-direction: column;
        overflow-y: auto;
    }

    .RP {
        color: #409EFF;
        font-size: 20px;
        margin-bottom: 5px;
    }

    .centerRightTitle {
        color: #409EFF;
    }

    .basicUl {
        border-top: 1px solid #e5e5e5;
        border-left: 1px solid #e5e5e5;
        display: flex;
        flex-wrap: wrap;

    li {
        border-bottom: 1px solid #e5e5e5;
        border-right: 1px solid #e5e5e5;
        width: 100%;
        min-height: 38px;
        /* line-height: 38px;
        text-indent: 5px; */
        font-size: 14px;
        display: flex;
        align-items: center;
        padding: 5px;
        box-sizing: border-box;
    }

    }
    }
</style>

<style lang="scss">
    #tab-more {

    .el-icon-close {
        display: none;
    }

    }
    .settlementTabs {

    .el-tabs__content {
        height: 90%;
    }

    }
    .preTabs {

    .el-tabs__content {
        flex: 1;
        overflow-y: auto;
        padding: 5px 0 5px 5px;
    }

    }
    .centerDialog {

    .el-dialog__body {
        max-height: calc(100vh - 100px) !important;
        padding: 0 20px;
    }

    }
</style>

