<template>
    <div class="main-contain new-main-contain">

        <div style="height: calc(100% - 0px);display: flex;flex-direction: column;">
            <div style="display:flex;justify-content: space-between;align-items:center;margin:10px 0;padding:0 10px;color:#606266;">
                <div style="font-size:14px;">姓名：{{ $route.query.patient_name }}</div>
                <el-button size="small" @click="save" type="primary">保存</el-button>
            </div>

            <div class="mainCenter" style="padding:0 10px;" v-loading="loading">
                <div class="centerLeft">
                    <el-form :model="tempForm" ref="tempForm" label-width="80px"
                             style="display: flex;flex-wrap: wrap;justify-content: space-between;">
                        <el-form-item label="模版名称:" prop="name" label-position="right">
                            <el-input v-model="tempForm.name" placeholder=""></el-input>
                        </el-form-item>

                        <el-form-item label="透析模式: " prop="mode_id" label-position="right">
                            <el-select v-model="tempForm.mode_id" style="width:100%;" placeholder="请选择"
                                       :disabled="this.$route.query.id > 0 ?true:false" v-if="this.$route.query.id == 0">
                                <el-option
                                        v-for="item in modeOptions"
                                        :key="item.id"
                                        :label="item.name"
                                        :value="item.id"
                                ></el-option>
                            </el-select>
                            <el-select v-model="tempForm.mode_id" style="width:100%;" placeholder="请选择"
                                       :disabled="this.$route.query.id > 0 ?true:false" v-if="this.$route.query.id > 0">
                                <el-option
                                        v-for="item in modeOptionsTwo"
                                        :key="item.id"
                                        :label="item.name"
                                        :value="item.id"
                                ></el-option>
                            </el-select>
                        </el-form-item>
                    </el-form>
                    <div class="tabsBox">
                        <el-tabs class="preTabs" v-model="editableTabsValue" type="border-card"
                                 closable
                                 @tab-remove="removeTab"
                                 :before-leave="moreState" @tab-click="tabclickEvent">
                            <el-tab-pane
                                    v-for="(item, index) in prescriptions"
                                    :key="index"
                                    :label="item.name"
                                    :name="item.name"
                            >

                                <!--<el-select style="width:50%;" v-model="item.med_type" placeholder="医疗类型"  v-if="($store.getters.xt_user.org_id == 10028 || $store.getters.xt_user.org_id == 9504 || $store.getters.xt_user.org_id == 10138)" @change="changevalue" >-->
                                <!--<el-option-->
                                <!--v-for="(item,index) in medical_care"-->
                                <!--:key="index"-->
                                <!--:label="item.label"-->
                                <!--:value="item.value">-->
                                <!--</el-option>-->
                                <!--</el-select>-->
                                <el-select style="width:50%;" v-model="item.med_type" placeholder="医疗类型"
                                           @change="changevalue">
                                    <el-option
                                            v-for="(item,index) in register"
                                            :key="index"
                                            :label="item.label"
                                            :value="item.value">
                                    </el-option>
                                </el-select>
                            </el-tab-pane>

                            <el-tab-pane name="more" closable><span slot="label"><i
                                    class="el-icon-plus"
                                    @click="addTab"></i></span>
                            </el-tab-pane>

                            <!--<prescription-table ref="prescription_tables"-->
                            <!--:prescription="curPrescriptions"-->
                            <!--:preDrugs="preDrugs"-->
                            <!--:activeType="customTabIndex"></prescription-table>-->

                            <prescription-template-table ref="prescription_tables"
                                                         :prescription="curPrescriptions"
                                                         :preDrugs="preDrugs"
                                                         :activeType="customTabIndex"></prescription-template-table>
                        </el-tabs>
                    </div>
                </div>
                <div class='centerRight'>
                    <el-tabs class="borderCard" type="border-card" v-model="rightTab" @tab-click="clickTab"
                             :before-leave='beforeLeave'>
                        <el-tab-pane label="药品" :name="1">

                        </el-tab-pane>
                        <el-tab-pane label="项目" :name="2">

                        </el-tab-pane>
                        <div style="height:100%;" v-show="showOne">
                            <el-tabs class="rightTabs" v-model="drug_activeName">
                                <el-tab-pane label="药品列表" name="1">
                                    <div style="margin-bottom:5px;display:flex;">
                                        <el-input style="width:50%;" @input="searchAction"
                                                  @keyup.enter.native='searchAction'
                                                  v-model.trim="search_keyword"
                                                  placeholder="请输入药品名字"></el-input>
                                        <el-select style="margin-left:5px;width:50%;" v-model="value" placeholder=""
                                                   @change="changeKind">
                                            <el-option
                                                    label="全部"
                                                    value="0">
                                            </el-option>
                                            <el-option
                                                    v-for="(item,index) in getDictionaryDataConfig('system','drug_type')"
                                                    :key="index"
                                                    :label="item.name"
                                                    :value="item.id">
                                            </el-option>
                                        </el-select>
                                    </div>
                                    <div style="width: 100%;flex:1;overflow: hidden;" ref="rightTable">
                                        <el-table ref="multipleTable"
                                                  :height="multipleTableHeight != '' ? multipleTableHeight : '200'"
                                                  :data="drugs" border @select='selectDrugs'
                                                  :row-style="{ color: '#303133' }"
                                                  @select-all="changeAllGoodInfoTableData"
                                                  :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
                                                  highlight-current-row>
                                            <el-table-column type="selection" width="40"
                                                             align="center"></el-table-column>
                                            <el-table-column label="名称">
                                                <template slot-scope="scope">{{ scope.row.drug_name }}</template>
                                            </el-table-column>
                                            <el-table-column label="规格" width="60">
                                                <template slot-scope="scope">
                                                  <!-- {{ scope.row.drug_spec }} -->
                                                   <span
                                                       v-if="scope.row.min_unit != scope.row.dose_unit">{{ scope.row.dose }}{{ scope.row.dose_unit }}&nbsp;* &nbsp;</span>
                                                       {{ scope.row.min_number }}{{ scope.row.min_unit }}/{{ scope.row.max_unit }}
                                                  </template>
                                            </el-table-column>
                                            <el-table-column label="单价" width="40">
                                                <template slot-scope="scope">{{ scope.row.retail_price }}</template>
                                            </el-table-column>
                                        </el-table>
                                    </div>

                                </el-tab-pane>

                            </el-tabs>
                        </div>
                        <div style="height:100%;" v-show="showTwo">
                            <div style="height:100%;" v-show="showTwo">
                                <el-tabs class="rightTabs" v-model="activeName">
                                    <el-tab-pane label="项目列表" name="1">
                                        <div style="margin-bottom:5px;">
                                            <!--<el-input style="width:50%;" v-model="input" placeholder=""></el-input>-->
                                            <el-input style="width:50%;" @input="searchProjectAction"
                                                      @keyup.enter.native='searchProjectAction'
                                                      v-model.trim="search_project_keyword"
                                                      placeholder="请输入项目名称"></el-input>
                                            <el-select style="float: right;width: 49%;" v-model="value" placeholder=""
                                                       @change="changeClass">
                                                <el-option
                                                        label="全部"
                                                        value="0">
                                                </el-option>
                                                <el-option
                                                        v-for="(item, index) in getDictionaryDataConfig('system','cost_classify')"
                                                        :key="index"
                                                        :label="item.name"
                                                        :value="item.id">
                                                </el-option>
                                            </el-select>
                                        </div>
                                        <div style="width: 100%;flex:1;overflow-y: auto;">
                                            <el-table ref="tables"
                                                      :height="multipleTableHeight != '' ? multipleTableHeight : '200'"
                                                      :data="tabProject" border @select='selectChange'
                                                      :row-style="{ color: '#303133' }"
                                                      @select-all="changeAllGoodInfoTableDataTwo"
                                                      :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
                                                      highlight-current-row>
                                                <el-table-column type="selection" width="40"
                                                                 align="center"></el-table-column>
                                                <el-table-column prop="name" label="名称">
                                                    <template slot-scope="scope">{{ scope.row.project_name }}</template>
                                                </el-table-column>
                                                <el-table-column label="规格" width="60">
                                                    <template slot-scope="scope">{{ scope.row.single_dose }}</template>
                                                </el-table-column>
                                                <el-table-column label="单价" width="40">
                                                    <template slot-scope="scope">{{ scope.row.price }}</template>
                                                </el-table-column>
                                            </el-table>
                                        </div>
                                    </el-tab-pane>
                                    <el-tab-pane label="项目组套" name="2">
                                        <div style="width: 100%;flex:1;overflow-y: auto;">
                                            <el-table :data="tabPrjectTeam" border ref="tabProjectTeam"
                                                      :height="multipleTableHeight != '' ? multipleTableHeight : '200'"
                                                      :row-style="{ color: '#303133' }"
                                                      :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)',color: '#606266'}"
                                                      highlight-current-row
                                                      @select='selectTeam'>
                                                <el-table-column type="selection" width="40"
                                                                 align="center"></el-table-column>
                                                <el-table-column prop="name" label="名称">
                                                    <template slot-scope="scope">{{scope.row.project_team}}</template>
                                                </el-table-column>
                                            </el-table>
                                        </div>
                                    </el-tab-pane>
                                </el-tabs>
                            </div>
                        </div>
                    </el-tabs>


                    <template>


                        <div class="comfirmBox">
                            <el-button type="primary" style="width:100%;" @click="comfirm">确定添加</el-button>
                        </div>
                    </template>
                </div>
            </div>
        </div>
    </div>
</template>


<script>
  import { createdTemplate, delHisPrescriptionInfoTemplate, getPrescriptionTemplateInfo } from '@/api/his/his_config'
  import {
    createHisPrescription,
    delHisPrescription,
    editHisPrescription,
    getCallHisPrescription,
    getDayOrMonthHisPrescription,
    getInitData,
    getNextOrLastHisPrescription,
    getPatientInfo,
    getSchedulePatientList
  } from '@/api/his/his'
  import { getDictionaryDataConfig } from '@/utils/data'
  import prescriptionTable from './components/prescriptionTable'
  import {
    addProjectTeam,
    getAllProjectList,
    getAllProjectTeam,
    getHisProject,
    getPojectListById
  } from '@/api/project/project'

  import { uParseTime } from '@/utils/tools'
  import PrescriptionTemplateTable from './components/prescriptionTemplateTable'
  import BreadCrumb from '@/xt_pages/components/bread-crumb'

  const moment = require('moment')
  export default {
    props: {
      patientInfo: Object,
      hisPatientInfo: Object,
      prescriptions: Array,
      record_date: String,
      search_keyword: '',
      month_prescriptions: Array,
      isloading: false,
      loading: false,
      other_sick: {
        type: Array,
        default: function() {
          return []
        }
      }
    },
    components: {
      PrescriptionTemplateTable,
      prescriptionTable,
      BreadCrumb
    },
    data() {
      return {
        medical_care: [
          { value: 11, label: '普通门诊' },
          { value: 12, label: '家庭通道' },
          { value: 13, label: '门诊大病' },
          { value: 14, label: '重疾特药' },
          { value: 15, label: '门诊慢病' },
          { value: 16, label: '门诊特检' },
          { value: 17, label: '健康体检' },
          { value: 18, label: '预防接种' },
          { value: 19, label: '门诊输血' },
          { value: 91, label: '新冠肺炎门诊' }
        ],

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

        ],
        crumbs: [
          { path: false, name: '门诊医生站' },
          { path: false, name: '处方模版' },
          { path: false, name: '模版详情' }
        ],
        tempForm: {
          name: '',
          mode_id: ''
        },
        modeOptions:{},
        modeOptionsTwo: {},

        start_time: moment(new Date()).subtract(30, 'days').format('YYYY-MM-DD'),
        end_time: moment(new Date()).add('year', 0).format('YYYY-MM-DD'),
        isLastOrNextVisible: false,
        multipleTableHeight: '',
        register_type: 1,
        value: '0',
        search_project_keyword: '',

        drugs: [],
        allDrugs: [],
        advices_template: [],
        additions: [],
        editableTabsValueTwo: '处方1',
        editableTabsValue: '处方1',
        editableTabs: [{
          title: '处方1',
          name: '1'
        }],
        curDayPrescriptions: null,
        dayPrescriptions: [],
        currenet_inedx: 0,
        rightTab: 1,
        activeName: '1',
        drug_activeName: '1',
        curPrescriptions: null,
        drugTableData: [],
        preDrugs: [],
        curDrugs: [],
        doctorOptions: [],
        doctorValue: '',
        departmentOptions: [],
        departmentValue: '',
        total: 0,
        request_record_date: '',
        state2: '',
        customTabIndex: 1,
        options: [],
        tabProject: [],
        allProject: [],
        strids: '',
        showOne: true,
        showTwo: false,
        tableData: [],
        tabPrjectTeam: [],
        teamList: [],
        doctors: [],
        departMent: [],
        curStatus: 0,
        isShowDayPrescription: false,
        monthCustomTabIndex: 1,
        order_status: '',
        register_types: [
          { id: 1, name: '医保' },
          { id: 2, name: '自费' }

        ],

        pickerOptions: {
          disabledDate(time) {
            let threeMonths = new Date(new Date().setFullYear(new Date().getFullYear() - 1)).getTime() - 24 * 3600 * 1000
            return time.getTime() > Date.now() || time.getTime() < threeMonths

          }
        },
        department: [],
        sick: [],
        diagnoses: [],
        diagnose: 1,
        state1: 1,
        curTotal: 0,
        prescription_id: 0,
        tempDrugs: [],
        dayorMonth: 'day',

        hisList: []

      }
    },
    methods: {
      save() {
        if (this.prescriptions[0].advices.length == 0 && this.prescriptions[0].project.length == 0) {
          this.$message.error('请先开处方')
          return
        }

        if (this.tempForm.name.length <= 0) {
          this.$message.error('模版名称不能为空')
          return
        }

        if (this.tempForm.mode_id <= 0) {
          this.$message.error('透析模式不能为空')
          return
        }

        for (let i = 0; i < this.prescriptions.length; i++) {
          console.log(this.prescriptions[i].med_type)
          if (this.prescriptions[i].med_type == 0 || this.prescriptions[i].med_type == '') {
            this.$message.error('处方医疗类型不能为空')
            return
          }
        }

        for (let i = 0; i < this.prescriptions.length; i++) {
          for (let b = 0; b < this.prescriptions[i].advices.length; b++) {
            if (this.prescriptions[i].med_type == 14 && this.prescriptions[i].advices[b].drug.is_special_diseases != 1) {
              this.$message.error('处方' + (i + 1).toString() + '属于特病类型处方，不能开非特病类型的药')


              return
            }

          }

          for (let c = 0; c < this.prescriptions[i].project.length; c++) {
            if (this.prescriptions[i].med_type == 14 && this.prescriptions[i].project[c].type == 2 && this.prescriptions[i].project[c].project.disease_directory != 1) {
              this.$message.error('处方' + (i + 1).toString() + '属于特病类型处方，请开特病类型的项目')
              return
            }

            if (this.prescriptions[i].med_type == 14 && this.prescriptions[i].project[c].type == 3 && this.prescriptions[i].project[c].good_info.is_special_diseases != 1) {
              this.$message.error('处方' + (i + 1).toString() + '属于特病类型处方，请开特病类型的耗材')
              return
            }
          }
        }

        let params = {
          name: this.tempForm.name,
          mode_id: this.tempForm.mode_id,
          patient_id: this.$route.query.patient_id,
          id: this.$route.query.id

        }

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

          this.prescriptions[i].med_type = parseInt(this.prescriptions[i].med_type)

          if (this.prescriptions[i].advices.length > 0 && this.prescriptions[i].project.length == 0) {
            this.prescriptions[i]['type'] = 1
          }
          if (this.prescriptions[i].advices.length == 0 && this.prescriptions[i].project.length > 0) {
            this.prescriptions[i]['type'] = 2
          }

          for (let b = 0; b < this.prescriptions[i].advices.length; b++) {
            this.prescriptions[i].advices[b].single_dose = this.prescriptions[i].advices[b].single_dose.toString()
            this.prescriptions[i].advices[b].prescribing_number = this.prescriptions[i].advices[b].prescribing_number.toString()
            this.prescriptions[i].advices[b].retail_price = this.prescriptions[i].advices[b].retail_price.toString()
            this.prescriptions[i].advices[b].day = parseInt(this.prescriptions[i].advices[b].day)
            this.prescriptions[i].advices[b].groupno = parseInt(this.prescriptions[i].advices[b].groupno)

            this.prescriptions[i].advices[b].day_count = parseInt(this.prescriptions[i].advices[b].day_count)
            this.prescriptions[i].advices[b].frequency_type = parseInt(this.prescriptions[i].advices[b].frequency_type)
            this.prescriptions[i].advices[b].week_day = this.prescriptions[i].advices[b].week_day.toString()

          }

          for (let b = 0; b < this.prescriptions[i].project.length; b++) {
            this.prescriptions[i].project[b].price = this.prescriptions[i].project[b].price.toString()
            this.prescriptions[i].project[b].total = this.prescriptions[i].project[b].total.toString()
            this.prescriptions[i].project[b].delivery_way = this.prescriptions[i].project[b].delivery_way.toString()

            this.prescriptions[i].project[b].day_count = parseInt(this.prescriptions[i].project[b].day_count)
            this.prescriptions[i].project[b].frequency_type = parseInt(this.prescriptions[i].project[b].frequency_type)
            this.prescriptions[i].project[b].week_day = this.prescriptions[i].project[b].week_day.toString()

          }
        }
        let data = {
          'prescriptions': this.prescriptions
        }
        createdTemplate(params, data).then(response => {
          if (response.data.state == 1) {
            this.$message.success('保存成功')
            this.$emit('save',this.$route.query.patient_name)
            for (const mkey in this.modeOptions) {
              if (mkey == this.tempForm.mode_id) {
                delete this.modeOptions[mkey]
              }
            }
            this.$router.go(-1)
          } else {
            this.$message.error(response.data.msg)
          }
        })

      },
      changeClass(id) {
        this.tabProject = []
        if (id == 0) {
          this.tabProject = this.allProject
        } else {
          for (let i = 0; i < this.allProject.length; i++) {
            if (this.allProject[i].cost_classify == id) {
              this.tabProject.push(this.allProject[i])
            }
          }
        }
      },

      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)
      },

      setValue(val) {
        this.prescriptions = []
        this.prescriptions = val
        this.$refs.next_or_last_prescription.close()
        var nowDate = new Date()
        var nowYear = nowDate.getFullYear()
        var nowMonth = nowDate.getMonth() + 1
        var nowDay = nowDate.getDate()

        var hours = nowDate.getHours()
        var min = nowDate.getMinutes()

        var nowTime =
          nowYear +
          '-' +
          (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
          '-' +
          (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (hours < 10 ? '0' + hours : hours) +
          ':' + (min < 10 ? '0' + min : min)
        for (let i = 0; i < this.prescriptions.length; i++) {
          this.prescriptions[i].name = '处方' + (i + 1)
          this.prescriptions[i]['pre_time'] = nowTime
          if (i == 0) {
            if (this.prescriptions[0].advices.length > 0 && this.prescriptions[0].project.length == 0) {
              this.customTabIndex = 1
              this.curStatus = 1
              this.rightTab = 1
              this.showOne = true
              this.showTwo = false
            }

            if (this.prescriptions[0].advices.length == 0 && this.prescriptions[0].project.length > 0) {
              this.customTabIndex = 2
              this.curStatus = 2
              this.rightTab = 2
              this.showTwo = true
              this.showOne = false
            }
          }
        }

        this.curPrescriptions = this.prescriptions[0]
        this.request_record_date = this.record_date
        this.$emit('setData', this.prescriptions)

      },
      GetNextOrLastHisPrescription(params) {
        getNextOrLastHisPrescription(params).then(response => {
          if (response.data.state == 1) {
            if (this.dayorMonth == 'day') {
              this.$refs.next_or_last_prescription.show(response.data.data.prescriptions, this.patientInfo.name, this.patientInfo.id, this.prescriptions)
              this.request_record_date = uParseTime(response.data.data.prescriptions[0].record_date, '{y}-{m}-{d}')
            } else {
              this.$message.error('当前处于月结，无法使用上一方或下一方功能')

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

          }
        })

      },

      selectTemplate(selection, row) {
        this.tempDrugs = selection

      }, changeTemplateData(selection) {
        this.tempDrugs = selection
      },

      searchProjectAction() {

        if (this.search_project_keyword.length == 0) {
          this.tabProject = this.allProject

        } else {
          let arr = []
          for (let i = 0; i < this.allProject.length; i++) {
            if (this.allProject[i].project_name.indexOf(this.search_project_keyword) != -1) {
              arr = arr.concat(this.allProject[i])
            }
          }
          this.tabProject = arr

        }

      },
      searchAction() {
        if (this.search_keyword.length == 0) {
          this.drugs = this.allDrugs
        } else {
          let arr = []
          for (let i = 0; i < this.drugs.length; i++) {
            if (this.drugs[i].drug_name.indexOf(this.search_keyword) != -1 || this.drugs[i].wubi.indexOf(this.search_keyword) != -1 || this.drugs[i].pinyin.indexOf(this.search_keyword) != -1) {
              arr = arr.concat(this.drugs[i])
            }
          }
          this.drugs = arr

        }

      },
      createFilter(queryString) {
        return (restaurant) => {
          return (restaurant.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0)
        }
      },

      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)
      },
      changeKind(val) {
        this.drugs = []

        if (val == 0) {
          this.drugs = this.allDrugs
        } else {
          for (let i = 0; i < this.allDrugs.length; i++) {
            if (this.allDrugs[i].drug_type == val) {
              this.drugs.push(this.allDrugs[i])
            }
          }
        }
      },
      getDictionaryDataConfig(module, filed_name) {
        return getDictionaryDataConfig(module, filed_name)

      },
      getInitData() {
        getInitData().then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg)
            return false
          } else {
            this.drugs = response.data.data.drugs
            this.allDrugs = response.data.data.drugs
            this.advices_template = response.data.data.advices_template
            this.doctors = response.data.data.doctors
            for (let i = 0; i < this.doctors.length; i++) {
              if (this.doctors[i].user_type == 1) {
                this.doctors.splice(i, 1)
              }
            }
            this.department = response.data.data.department
            this.sick = response.data.data.sick
            this.diagnoses = response.data.data.diagnose
            this.additions = response.data.data.additions

          }
        })

      },

      tabclickEvent(val) {
        for (let i = 0; i < this.prescriptions.length; i++) {
          if (this.prescriptions[i].name == val.name) {
            this.prescription_id = this.prescriptions[i].id
            this.$emit('event1', this.prescription_id)
            this.curPrescriptions = this.prescriptions[i]

            this.teamList = []
            this.curDrugs = []
            this.$refs.multipleTable.clearSelection()
            this.$refs.tables.clearSelection()

            //用来区分处方属于项目还是药品
            if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
              this.customTabIndex = 1
              this.curStatus = 1
              this.rightTab = 1
              this.showOne = true
              this.showTwo = false
            }
            if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {

              this.customTabIndex = 2
              this.curStatus = 2
              this.rightTab = 2

              this.showTwo = true
              this.showOne = false
            }

            if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0) {
              this.customTabIndex = this.rightTab
              this.curStatus = 0
            }

          }

        }
        if (this.curPrescriptions.order_status == 0) {
          this.order_status = ''
        }

        if (this.curPrescriptions.order_status == 1) {
          this.order_status = '未收费'
        }
        if (this.curPrescriptions.order_status == 2) {
          this.order_status = '已结算'
        }

        if (this.curPrescriptions.order_status == 3) {
          this.order_status = '已退费'
        }

      },
      clearData() {
        this.curPrescriptions = []
        this.curStatus = 0
        this.curDrugs = []
        this.preDrugs = []
        this.teamList = []

      },
      setData(data, info, admin_info, doctors, department, hisPatientInfo, month_data) {

        for (let i = 0; i < doctors.length; i++) {
          if (doctors[i].user_type == 1) {
            doctors.splice(i, 1)
          }
        }

        this.curMonthPrescriptions = {}
        this.curPrescriptions = {}

        this.prescription_id = data[0].id
        this.editableTabsValue = '处方1'
        this.dayorMonth = 'day'
        this.$emit('event1', this.prescription_id)
        this.curStatus = 0
        this.curPrescriptions = {}
        this.curMonthPrescriptions = {}
        if (month_data && month_data.length > 0) {

          this.curMonthPrescriptions = month_data[0]

        } else {
          this.curMonthPrescriptions = {}

        }

        if (data && data.length > 0) {
          this.curPrescriptions = data[0]

        } else {
          this.curPrescriptions = {}
        }

        this.diagnose = info.diagnosis
        if (this.diagnose == 0) {
          for (let i = 0; i < this.diagnoses.length; i++) {
            this.diagnose = this.diagnoses[0].id
          }

        }
        if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
          this.curStatus = 1
          this.customTabIndex = 1
          this.rightTab = 1
          this.showOne = true
          this.showTwo = false
        }

        if (this.curPrescriptions.project.length > 0 && this.curPrescriptions.advices.length == 0) {
          this.curStatus = 2
          this.customTabIndex = 2
          this.rightTab = 2
          this.showOne = false
          this.showTwo = true
        }

        this.state1 = info.sick_type
        if (this.state1 == 0) {
          this.state1 = ''
          for (let i = 0; i < this.sick.length; i++) {
            this.state1 = this.sick[0].id
          }

        }
        this.state2 = info.sick_history
        if (this.state2 == 0) {
          this.state2 = ''
        }

        if (info.prescription_status == 0) {
          this.order_status = ''
        }

        if (this.curPrescriptions.order_status == 1) {
          this.order_status = '未收费'
        }
        if (this.curPrescriptions.order_status == 2) {
          this.order_status = '已结算'
        }

        if (this.curPrescriptions.order_status == 3) {
          this.order_status = '已退费'
        }

        if (info.id > 0) {
          this.doctorValue = info.doctor_id
          this.departmentValue = info.departments
        } else {
          if (hisPatientInfo.doctor != 0 && hisPatientInfo.department != 0) {
            this.doctorValue = hisPatientInfo.doctor
            this.departmentValue = hisPatientInfo.department
          } else {
            if (admin_info.user_type == 2 || admin_info.user_type == 1) {
              this.doctorValue = admin_info.admin_user_id
              if (admin_info.department_id == 0) {
                if (this.department.length > 0) {
                  if (department && department.length > 0) {
                    this.departmentValue = department[0].id

                  } else {

                    this.departmentValue = ''

                  }
                } else {
                  this.departmentValue = ''
                }
              } else {
                this.departmentValue = admin_info.department_id
              }
            } else {
              this.doctorValue = doctors[0].admin_user_id
            }
            if (this.doctorValue == 0) {
              this.doctorValue = ''
            }
          }
        }
        if (info.register_type == 0) {
          for (let i = 0; i < this.register.length; i++) {
            this.register_type = this.register[0].value
          }
        } else {
          this.register_type = info.register_type
        }
      },
      moreState(tab, event) {
        if (tab == 'more') {
          return false
        }
      }, open_three() {
        this.$refs.saveTemplate.show(this.prescriptions)
      }, open_two() {
        if (this.dayorMonth == 'day') {
          if (this.patientInfo == null || this.patientInfo.id == 0) {
            this.$message.error('请选择患者')
            return
          }
          let params = {
            end_time: this.record_date,
            start_time: moment(new Date()).subtract(30, 'days').format('YYYY-MM-DD'),
            patient_id: this.patientInfo.id,
            p_type: 2
          }
          getCallHisPrescription(params).then(response => {
            if (response.data.state == 1) {
              this.$refs.call_prescription.show(this.patientInfo.name, this.patientInfo.id, params.end_time, params.start_time, this.prescriptions, response.data.data.prescriptions)
            } else {
              this.$message.error(response.data.msg)

            }
          })
        } else {
          this.$message.error('当前属于月结状态,无法试用处方调用')

        }
      },
      open(index, isLoading) {
        if (this.dayorMonth == 'day') {

          if (this.prescriptions[0].advices.length == 0 && this.prescriptions[0].project.length == 0) {
            this.$message.error('请先开处方')
            return
          }
        }

        if (this.dayorMonth == 'day') {

          if (this.doctorValue.length <= 0) {
            this.$message.error('医生不能为空')
            return
          }

          if (this.departmentValue.length <= 0) {
            this.$message.error('科室不能为空')
            return
          }

          if (this.state1 <= 0) {
            this.$message.error('疾病类型不能为空')
            return
          }

          if (index == 1) {
            let params = {
              p_type: 2,
              patient_id: this.patientInfo.id,
              diagnose: this.diagnose,
              sick_type: this.state1,
              sick_history: this.state2,
              doctor: this.doctorValue,
              department: this.departmentValue,
              record_date: this.record_date,
              his_patient_id: this.hisPatientInfo.id,
              reg_type: this.register_type,
            }

            for (let i = 0; i < this.prescriptions.length; i++) {
              if (this.prescriptions[i].advices.length > 0 && this.prescriptions[i].project.length == 0) {
                this.prescriptions[i]['type'] = 1
              }
              if (this.prescriptions[i].advices.length == 0 && this.prescriptions[i].project.length > 0) {
                this.prescriptions[i]['type'] = 2
              }

              for (let b = 0; b < this.prescriptions[i].advices.length; b++) {
                this.prescriptions[i].advices[b].single_dose = this.prescriptions[i].advices[b].single_dose.toString()
                this.prescriptions[i].advices[b].prescribing_number = this.prescriptions[i].advices[b].prescribing_number.toString()
                this.prescriptions[i].advices[b].retail_price = this.prescriptions[i].advices[b].retail_price.toString()
                this.prescriptions[i].advices[b].day = parseInt(this.prescriptions[i].advices[b].day)

                this.prescriptions[i].advices[b].day_count = parseInt(this.prescriptions[i].advices[b].day_count)
                this.prescriptions[i].advices[b].frequency_type = parseInt(this.prescriptions[i].advices[b].frequency_type)
                this.prescriptions[i].advices[b].week_day = this.prescriptions[i].advices[b].week_day.toString()

              }

              for (let b = 0; b < this.prescriptions[i].project.length; b++) {
                this.prescriptions[i].project[b].price = this.prescriptions[i].project[b].price.toString()
                this.prescriptions[i].project[b].total = this.prescriptions[i].project[b].total.toString()
                this.prescriptions[i].project[b].delivery_way = this.prescriptions[i].project[b].delivery_way.toString()

                this.prescriptions[i].project[b].day_count = parseInt(this.prescriptions[i].project[b].day_count)
                this.prescriptions[i].project[b].frequency_type = parseInt(this.prescriptions[i].project[b].frequency_type)
                this.prescriptions[i].project[b].week_day = this.prescriptions[i].project[b].week_day.toString()

              }

              for (let b = 0; b < this.prescriptions[i].addition.length; b++) {
                this.prescriptions[i].addition[b].id = parseInt(this.prescriptions[i].addition[b].id)
                this.prescriptions[i].addition[b].item_id = parseInt(this.prescriptions[i].addition[b].item_id)
                this.prescriptions[i].addition[b].price = this.prescriptions[i].addition[b].price.toString()
                this.prescriptions[i].addition[b].count = this.prescriptions[i].addition[b].count.toString()
              }
            }
            
            let data = {
              'prescriptions': this.prescriptions
            }
            isLoading = true

            createHisPrescription(data, params).then(response => {
              if (response.data.state == 1) {
                this.$emit('change', this.patientInfo.id)
                this.$message.success('保存成功')
              }
            })
          } else if (index == 2) {
            this.$router.push('/outpatientDoctorStation/print')
          } else if (index == 4) {

          } else if (index == 5) {
            this.$refs.saveTemplate.show()
          }
        } else if (this.dayorMonth == 'month') {
          if (this.isShowDayPrescription) {
            // if (this.curDayPrescriptions.order_status == 2) {
            //   this.$message.error('当前处方已经结算,无法保存')
            //   return
            // }
            if (this.doctorValue.length <= 0) {
              this.$message.error('医生不能为空')
              return
            }

            if (this.departmentValue.length <= 0) {
              this.$message.error('科室不能为空')
              return
            }

            if (index == 1) {
              let params = {
                patient_id: this.patientInfo.id,
                diagnose: this.diagnose,
                sick_type: this.state1,
                sick_history: this.state2,
                doctor: this.doctorValue,
                department: this.departmentValue,
                record_date: this.end_time,
                his_patient_id: this.hisPatientInfo.id,
                reg_type: this.register_type,
                p_type: 2
              }

              var month_prescriptions = this.deepClone(this.month_prescriptions)

              for (let i = 0; i < month_prescriptions.length; i++) {
                if (month_prescriptions[i].advices.length > 0 && month_prescriptions[i].project.length == 0) {
                  month_prescriptions[i]['type'] = 1
                }
                if (month_prescriptions[i].advices.length == 0 && month_prescriptions[i].project.length > 0) {
                  month_prescriptions[i]['type'] = 2
                }

                for (let b = 0; b < month_prescriptions[i].advices.length; b++) {
                  month_prescriptions[i].advices[b].single_dose = month_prescriptions[i].advices[b].single_dose.toString()
                  month_prescriptions[i].advices[b].prescribing_number = month_prescriptions[i].advices[b].prescribing_number.toString()
                  month_prescriptions[i].advices[b].retail_price = month_prescriptions[i].advices[b].retail_price.toString()
                  month_prescriptions[i].advices[b].day = parseInt(month_prescriptions[i].advices[b].day)

                }

                for (let b = 0; b < month_prescriptions[i].project.length; b++) {
                  console.log('~~~~~~~')
                  month_prescriptions[i].project[b].price = month_prescriptions[i].project[b].price.toString()
                  month_prescriptions[i].project[b].total = month_prescriptions[i].project[b].total.toString()
                  month_prescriptions[i].project[b].delivery_way = month_prescriptions[i].project[b].delivery_way.toString()

                }

                for (let b = 0; b < month_prescriptions[i].addition.length; b++) {
                  month_prescriptions[i].addition[b].id = parseInt(month_prescriptions[i].addition[b].id)
                  month_prescriptions[i].addition[b].item_id = parseInt(month_prescriptions[i].addition[b].item_id)
                  month_prescriptions[i].addition[b].price = month_prescriptions[i].addition[b].price.toString()
                  month_prescriptions[i].addition[b].count = month_prescriptions[i].addition[b].count.toString()
                }
              }

              let data = {
                'prescriptions': month_prescriptions
              }
              editHisPrescription(data, params).then(response => {
                if (response.data.state == 1) {
                  this.month_prescriptions = month_prescriptions
                  this.$message.success('编辑成功')
                }
              })

            }
          }
        }
      },
      addTab(targetName) {
        // if (this.curPrescriptions.order_status == 2) {
        //   this.$message.error('该处方已经结算或者退费，无法继续添加处方')
        //   return
        // }
        if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0) {
          this.$message.error('当前处方无数据，新增数据后才能新增处方')
          return
        }

        this.tabIndex = this.prescriptions.length

        ++this.tabIndex
        let newTabName = '处方' + this.tabIndex

        var nowDate = new Date()
        var nowYear = nowDate.getFullYear()
        var nowMonth = nowDate.getMonth() + 1
        var nowDay = nowDate.getDate()

        var hours = nowDate.getHours()
        var min = nowDate.getMinutes()

        var nowTime =
          nowYear +
          '-' +
          (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
          '-' +
          (nowDay < 10 ? '0' + nowDay : nowDay) + ' ' + (hours < 10 ? '0' + hours : hours) +
          ':' + (min < 10 ? '0' + min : min)

        let obj = {
          id: 0,
          name: newTabName,
          order_status: 0,
          advices: [],
          project: [],
          addition: [],
          pre_time: this.prescriptions[0].pre_time

          // pre_time: nowTime

        }

        obj.med_type = 14

        this.prescriptions.push(obj)

        this.editableTabsValue = newTabName
        this.curPrescriptions = this.prescriptions[this.prescriptions.length - 1]
        this.curStatus = 0

        if (this.curPrescriptions.order_status == 0) {
          this.order_status = '未收费'
        }

        if (this.curPrescriptions.order_status == 1) {
          this.order_status = '未收费'
        }
        if (this.curPrescriptions.order_status == 2) {
          this.order_status = '已结算'
        }

        if (this.curPrescriptions.order_status == 3) {
          this.order_status = '已退费'
        }

      },
      removeTab(targetName) {
        if (targetName == '处方1') {
          this.$message.error('该处方无法删除')
          return
        }
        this.$confirm('处方删除后不可恢复，是否确认删除', '删除', {
          confirmButtonText: '确 定',
          cancelButtonText: '取 消',
          type: 'warning'
        }).then(() => {
          let id = 0
          for (let i = 0; i < this.prescriptions.length; i++) {
            if (this.prescriptions[i].name == targetName) {
              id = this.prescriptions[i].id
            }
          }

          if (id == 0) {
            let tabs = this.prescriptions
            let activeName = this.editableTabsValue
            if (activeName === targetName) {
              tabs.forEach((tab, index) => {
                if (tab.name === targetName) {
                  let nextTab = tabs[index + 1] || tabs[index - 1]
                  if (nextTab) {
                    activeName = nextTab.name

                  }
                }
              })
            }
            this.editableTabsValue = activeName
            this.prescriptions = tabs.filter(tab => tab.name !== targetName)

            for (let i = 0; i < this.prescriptions.length; i++) {
              if (activeName == this.prescriptions[i].name) {
                this.curPrescriptions = this.prescriptions[i]
                if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
                  this.curStatus = 1
                }
                if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
                  this.curStatus = 2
                }
              }
            }
            if (this.prescriptions.length == 0) {
              this.curPrescriptions = []
              this.curStatus = 0
            }
          } else {
            let params = {
              'id': id
            }
            delHisPrescriptionInfoTemplate(params).then(response => {
              if (response.data.state == 1) {
                this.$message.success('删除成功')
                let tabs = this.prescriptions
                let activeName = this.editableTabsValue
                if (activeName === targetName) {
                  tabs.forEach((tab, index) => {
                    if (tab.name === targetName) {
                      let nextTab = tabs[index + 1] || tabs[index - 1]
                      if (nextTab) {
                        activeName = nextTab.name

                      }
                    }
                  })
                }
                this.editableTabsValue = activeName
                this.prescriptions = tabs.filter(tab => tab.name !== targetName)

                for (let i = 0; i < this.prescriptions.length; i++) {
                  if (activeName == this.prescriptions[i].name) {
                    this.curPrescriptions = this.prescriptions[i]
                    if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
                      this.curStatus = 1
                    }
                    if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
                      this.curStatus = 2
                    }
                  }
                }
                if (this.prescriptions.length == 0) {
                  this.curPrescriptions = []
                  this.curStatus = 0
                }
              } else {
                this.$message.success(response.data.msg)
              }
            })
          }

        }).catch(() => {

        })

      },
      beforeLeave(activeName, oldActiveName) {
        let index = activeName
        if (index == 1) {
          if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
            return false
          }
        } else {
          if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
            return false
          }

        }
      },
      clickTab(tab) {
        let index = parseInt(tab.name)
        if (index == 1) {
          if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
            this.$message.error('当前处方为项目，无法切换为药品，需要新开处方')
            return
          }
        } else {
          if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
            this.$message.error('当前处方为药品，无法切换为项目，需要新开处方')
            return
          }

        }

        if (index == 1) {

          this.teamList = []
          this.$refs.tables.clearSelection()

          this.showOne = true
          this.showTwo = false
          this.$nextTick(() => {
            this.$refs.prescription_tables.setNewData(this.prescriptions[this.prescriptions.length - 1])
          })
          this.customTabIndex = 1
        }
        if (index == 2) {
          this.curDrugs = []
          this.$refs.multipleTable.clearSelection()

          this.showTwo = true
          this.showOne = false
          this.$nextTick(() => {
            this.$refs.prescription_tables.setNewData(this.prescriptions[this.prescriptions.length - 1])
          })
          this.customTabIndex = 2
        }
        this.rightTab = index

        //用来区分处方属于项目还是药品
        if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
          this.customTabIndex = 1
          this.curStatus = 1

        }
        if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length > 0) {
          this.customTabIndex = 2
          this.curStatus = 2
        }
        if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0) {
          // this.customTabIndex = this.rightTab
          this.customTabIndex = index
          this.curStatus = 0

        }

      }, changeAllGoodInfoTableData: function(selection) {
        this.curDrugs = selection
      }, addCharges() {
        this.$refs.additionalCharges.show()
      },
      selectDrugs(selection, row) {
        this.curDrugs = selection
      },

      comfirm() {
        console.log('222222222222', this.teamList)

        // if (this.curPrescriptions.order_status == 2) {
        //   this.$message.error('该处方已经结算，无法继续添加药品或者项目')
        //   this.teamList = []
        //   this.curDrugs = []
        //   this.tempDrugs = []
        //   this.$refs.tables.clearSelection()
        //   this.$refs.multipleTableTwo.clearSelection()
        //   this.$refs.multipleTable.clearSelection()
        //   return
        // }
        //  if (this.curPrescriptions.advices.length > 0 && this.curPrescriptions.project.length == 0) {
        //     if (this.$store.getters.xt_user.org_id == 10138) {
        //       for (let i = 0; i < this.curDrugs.length; i++) {
        //         if (this.curPrescriptions.med_type == 14 && this.curDrugs[i].is_special_diseases != 1) {
        //           this.$message.error('该处方属于特病类型处方，开非特病类型的药')
        //           return
        //         }

        //       }
        //     }
        //   }

        //   if (this.curPrescriptions.advices.length == 0 && this.curPrescriptions.project.length == 0) {
        //     if (this.$store.getters.xt_user.org_id == 10138) {
        //       for (let i = 0; i < this.curDrugs.length; i++) {
        //         if (this.curPrescriptions.med_type == 14 && this.curDrugs[i].is_special_diseases != 1) {
        //           this.$message.error('该处方属于特病类型处方，开非特病类型的药')
        //           return
        //         }

        //       }
        //     }
        //   }
        if (this.curDrugs.length > 0) {
          for (let i = 0; i < this.curDrugs.length; i++) {
            if (this.curPrescriptions.med_type == 14 && this.curDrugs[i].is_special_diseases != 1) {
              this.$message.error('该处方属于特病类型处方，开非特病类型的药')
              return
            }

          }
        }
        if (this.teamList.length > 0) {
          for (let i = 0; i < this.teamList.length; i++) {
            if (this.curPrescriptions.med_type == 14 && this.teamList[i].is_special_diseases != 1) {
              setTimeout(() => {
                this.$message.error('该处方属于特病类型处方，请开特病类型的项目')
              }, 100)
              // return
            }

          }

          let arr = this.teamList
          let newArr = []
          arr.map(item => {
            if (this.curPrescriptions.med_type != 14) {
              newArr.push(item)
            }
            if (this.curPrescriptions.med_type == 14 && item.is_special_diseases == 1) {
              newArr.push(item)
            }
          })
          this.teamList = newArr
        }

        if (this.curDrugs.length == 0) {
          for (let i = 0; i < this.curDrugs.length; i++) {
            if (this.curPrescriptions.med_type == 14 && this.curDrugs[i].is_special_diseases != 1) {
              this.$message.error('该处方属于特病类型处方，开非特病类型的药')
              return
            }

          }
        }
        if (this.curStatus == 1 && this.rightTab == 2) {
          this.$message.error('改处方是药品，无法添加项目')
          this.teamList = []
          this.$refs.tables.clearSelection()

          return
        }

        if (this.curStatus == 2 && this.rightTab == 1) {
          this.$message.error('改处方是项目，无法添加药品')
          this.curDrugs = []
          this.tempDrugs = []
          this.$refs.multipleTable.clearSelection()
          this.$refs.multipleTableTwo.clearSelection()

          return
        }

        for (let i = 0; i < this.teamList.length; i++) {
          for (let a = 0; a < this.curPrescriptions.project.length; a++) {
            if (this.teamList[i].id == this.curPrescriptions.project[a].project_id) {
              this.$message.error('当前处方存在相同的药品，无法添加相同的项目')
              return
            }
          }
        }

        for (let i = 0; i < this.curDrugs.length; i++) {
          for (let a = 0; a < this.curPrescriptions.advices.length; a++) {
            if (this.curDrugs[i].id == this.curPrescriptions.advices[a].id) {
              this.$message.error('当前处方存在相同的药品，无法添加相同的药品')
              return

            }
          }
        }
        let templateDrugs = []

        for (let i = 0; i < this.tempDrugs.length; i++) {
          for (let a = 0; a < this.tempDrugs[i].advices.length; a++) {
            templateDrugs.push(this.tempDrugs[i].advices[a])
          }
        }

        // for (let i = 0; i < templateDrugs.length; i++) {
        //   for (let a = 0; a < this.curPrescriptions.advices.length; a++) {
        //     if (this.templateDrugs[i].drug_id == this.curPrescriptions.advices[i].id) {
        //       this.$message.error('改处方存在相同的药品，无法添加相同的药品')
        //       return
        //
        //     }
        //   }
        // }

        for (let i = 0; i < this.prescriptions.length; i++) {
          if (this.prescriptions[i].name == this.editableTabsValue) {
            var temp = this.deepClone(this.curDrugs)
            var temp2 = this.deepClone(this.teamList)

            var temp3 = this.deepClone(templateDrugs)

            if (temp3.length > 0) {
              for (let b = 0; b < temp3.length; b++) {
                let obj = {
                  advice_id: 0,
                  id: temp3[b].id,
                  drug_name: temp3[b].advice_name,
                  single_dose: temp3[b].single_dose,
                  delivery_way: temp3[b].delivery_way,
                  execution_frequency: temp3[b].execution_frequency,
                  retail_price: temp3[b].drug.retail_price.toString(),
                  remark: '',
                  day: 1,
                  prescribing_number: temp3[b].prescribing_number,
                  single_dose_unit: temp3[b].drug.min_unit,
                  prescribing_number_unit: temp3[b].drug.max_unit,
                  medical_insurance_number: temp3[b].drug.medical_insurance_number

                }

                if (obj.prescribing_number == 0 || obj.prescribing_number.length == 0) {
                  obj.prescribing_number = 1
                }
                this.prescriptions[i].advices.push(obj)
              }
              this.curStatus = 1
            }

            let index = 0

            if (this.prescriptions[i].advices.length > 0) {
              index = this.prescriptions[i].advices.length
            }

            if (temp.length > 0) {
              for (let b = 0; b < temp.length; b++) {
                let temp_index = b + 1
                let obj = {
                  advice_id: 0,
                  id: temp[b].id,
                  drug_name: temp[b].drug_name,
                  single_dose: temp[b].single_dose,
                  delivery_way: temp[b].delivery_way,
                  execution_frequency: temp[b].execution_frequency,
                  retail_price: temp[b].prescribing_number_unit == temp[b].max_unit ? temp[b].retail_price.toString() : temp[b].min_price.toString(),
                  remark: '',
                  day: 1,
                  prescribing_number: temp[b].prescribing_number,
                  single_dose_unit: temp[b].dose_unit,
                  prescribing_number_unit: temp[b].prescribing_number_unit,
                  medical_insurance_number: temp[b].medical_insurance_number,
                  drug: temp[b],
                  groupno: index + temp_index,
                  frequency_type: 1,
                  day_count: 0,
                  week_day: ''
                }

                if (obj.prescribing_number == 0 || obj.prescribing_number.length == 0) {
                  obj.prescribing_number = 1
                }
                this.prescriptions[i].advices.push(obj)
              }
              this.curStatus = 1
            }

            if (temp2.length > 0) {
              for (let b = 0; b < temp2.length; b++) {
                let obj = {
                  id: 0,
                  project_id: temp2[b].id,
                  project_name: temp2[b].project_name,
                  statistical_classification: temp2[b].statistical_classification,
                  single_dose: temp2[b].single_dose,
                  delivery_way: temp2[b].delivery_way,
                  execution_frequency: temp2[b].execution_frequency,
                  number_days: temp2[b].number_days,
                  total: temp2[b].total,
                  price: temp2[b].price,
                  remark: '',
                  medical_code: temp2[b].medical_code,
                  unit: temp2[b].unit,
                  type: temp2[b].type,
                  frequency_type: 1,
                  day_count: 0,
                  week_day: ''
                }
                if (temp2[b].type == 2) {
                  obj['project'] = temp2[b].project

                } else if (temp2[b].type == 3) {

                  obj['good_info'] = temp2[b].good_info

                }
                if (obj.total == 0 || obj.total == undefined) {
                  obj.total = 1
                }
                if (obj.type == 3) {
                  obj.single_dose = 1
                }

                this.prescriptions[i].project.push(obj)
              }
              this.curStatus = 2
            }

            this.curPrescriptions = this.prescriptions[i]
            this.$refs.multipleTable.clearSelection()
            this.$refs.tables.clearSelection()

          }
        }
        this.curDrugs = []
        this.preDrugs = []
        this.teamList = []

      }, changeAllGoodInfoTableDataTwo(row) {
        this.teamList = row
      },
      selectChange(row) {
        this.teamList = row
      }, getPrescriptionTemplateInfo() {
        let params = {
          id: this.$route.query.id
        }
        getPrescriptionTemplateInfo(params).then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg)
            return false
          } else {
            this.prescriptions = []
            // console.log(this.tempForm)

            if (response.data.data.template.id > 0) {

              this.tempForm.name = response.data.data.template.name
              this.tempForm.mode_id = response.data.data.template.mode

              for (let i = 0; i < response.data.data.prescriptions.length; i++) {
                var prescription = response.data.data.prescriptions[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,
                    id: prescription.advices[b].drug_id,
                    drug: prescription.advices[b].drug,
                    groupno: prescription.advices[b].groupno,
                    frequency_type: prescription.advices[b].frequency_type,
                    day_count: prescription.advices[b].day_count,
                    week_day: prescription.advices[b].week_day

                  }
                  tempAdvice.push(obj)
                }

                //项目
                for (let b = 0; b < prescription.project.length; b++) {
                  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,
                    type: prescription.project[b].type,
                    frequency_type: prescription.project[b].frequency_type,
                    day_count: prescription.project[b].day_count,
                    week_day: prescription.project[b].week_day

                  }

                  if (prescription.project[b].type == 2) {
                    obj['statistical_classification'] = prescription.project[b].project.statistical_classification
                    obj['medical_code'] = prescription.project[b].project.medical_code
                    obj['project_name'] = prescription.project[b].project.project_name
                    obj['project'] = prescription.project[b].project

                  } else if (prescription.project[b].type == 3) {
                    obj['statistical_classification'] = ''
                    obj['medical_code'] = prescription.project[b].good_info.medical_insurance_number
                    obj['project_name'] = prescription.project[b].good_info.good_name
                    obj['good_info'] = prescription.project[b].good_info

                  }
                  tempProject.push(obj)
                }

                // var preTime = nowTime

                let index = i + 1
                let obj = {
                  id: prescription.id,
                  name: '处方' + index,
                  advices: tempAdvice,
                  project: tempProject,
                  addition: tempAddition,
                  order_status: 1
                  // pre_time: preTime
                }

                if (prescription.med_type == '' || prescription.med_type == 0) {

                  obj['med_type'] = ''
                } else {

                  obj['med_type'] = parseInt(prescription.med_type)

                }

                this.prescriptions.push(obj)
              }
              this.curPrescriptions = this.prescriptions[0]

            } else {
              let obj = {
                id: 0,
                name: '处方1',
                advices: [],
                project: [],
                addition: [],
                order_status: 0,
                med_type: ''
              }

              obj.med_type = 14

              this.prescriptions.push(obj)
              this.curPrescriptions = this.prescriptions[0]
            }

          }

        })

      },
      getlist() {
        this.tabProject = []
        getHisProject().then(response => {
          if (response.data.state == 1) {
            var project = response.data.data.project
            for (let i = 0; i < project.length; i++) {
              let obj = {
                id: project[i].id,
                project_name: project[i].project_name,
                statistical_classification: project[i].statistical_classification,
                single_dose: project[i].single_dose,
                delivery_way: project[i].delivery_way,
                execution_frequency: project[i].execution_frequency,
                number_days: project[i].number_days,
                price: project[i].price,
                medical_code: project[i].medical_code,
                unit: project[i].unit,
                type: 2,
                is_special_diseases: project[i].disease_directory,
                project: project[i]
              }

              this.tabProject.push(obj)
            }

            var good_info = response.data.data.good_info

            for (let i = 0; i < good_info.length; i++) {
              let obj = {
                id: good_info[i].id,
                project_name: good_info[i].good_name,
                statistical_classification: 0,
                single_dose:  good_info[i].specification_name,
                delivery_way: '',
                execution_frequency: '',
                number_days: 1,
                price: good_info[i].retail_price,
                medical_code: good_info[i].medical_insurance_number,
                unit: this.getGoodUnit(good_info[i].good_unit),
                type: 3,
                is_special_diseases: good_info[i].is_special_diseases,
                good_info: good_info[i]
              }
              this.tabProject.push(obj)
            }

            this.allProject = this.tabProject

          }
        })
      }, 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
      }, getGoodUnit(id) {
        var goodUnit = this.$store.getters.good_unit
        for (let i = 0; i < goodUnit.length; i++) {
          if (goodUnit[i].id == id) {
            return goodUnit[i].name
          }
        }
      },
      getAllProjectTeam() {
        getAllProjectTeam().then(response => {
          if (response.data.state == 1) {
            var team = response.data.data.team
            console.log('team2222', team)
            this.tabPrjectTeam = team
            this.projectList = team
          }
        })
      },
      changevalue(val) {

        this.$forceUpdate()

      },
      selectTeam(row) {
        console.log('row', row)
        var arr = []
        for (let i = 0; i < row.length; i++) {
          arr.push(row[i].item_id)
        }
        var ids = arr.join(',')
        var strArr = ids.split(',')
        var res = []//接收不重复的数据

        for (var i = 0; i < strArr.length; i++) {
          var flag = true

          for (var j = 0; j < i; j++) {
            if (strArr[i] === strArr[j]) {
              flag = false
              break
            }
          }
          if (flag) {
            res.push(strArr[i])
          }
        }
        var idstr = res.join(',')
        const params = {
          project_id: idstr
        }
        getPojectListById(params).then(response => {
          if (response.data.state == 1) {
            this.teamList = []
            var project = response.data.data.project
            for (let i = 0; i < project.length; i++) {
              if (project[i].type == 2) {

                let obj = {
                  id: project[i].project_id,
                  project_name: project[i].project.project_name,
                  statistical_classification: project[i].project.statistical_classification,
                  single_dose: project[i].project.single_dose,
                  delivery_way: project[i].project.delivery_way,
                  execution_frequency: project[i].project.execution_frequency,
                  number_days: project[i].project.number_days,
                  total: project[i].number,
                  price: project[i].project.price,
                  remark: '',
                  medical_code: project[i].project.medical_code,
                  unit: project[i].project.unit,
                  type: project[i].type,
                  is_special_diseases: project[i].project.disease_directory,
                  project: project[i].project
                }
                if (obj.total == 0 || obj.total == undefined) {
                  obj.total = 1
                }

                this.teamList.push(obj)
              } else if (project[i].type == 3) {
                let obj = {
                  id: project[i].project_id,
                  project_name: project[i].good_info.good_name,
                  statistical_classification: '',
                  single_dose: '',
                  delivery_way: '',
                  execution_frequency: '',
                  number_days: '',
                  total: project[i].number,
                  price: project[i].good_info.retail_price,
                  remark: '',
                  medical_code: project[i].good_info.medical_insurance_number,
                  unit: project[i].good_info.unit,
                  type: project[i].type,
                  is_special_diseases: project[i].good_info.is_special_diseases,
                  good_info: project[i].good_info
                }
                if (obj.total == 0 || obj.total == undefined) {
                  obj.total = 1
                }
                this.teamList.push(obj)

                console.log(this.teamList)

              }
            }

          }
        })
      }, changeDoctor(val) {
        for (let i = 0; i < this.doctors.length; i++) {
          if (this.doctors[i].admin_user_id == this.doctorValue) {
            this.departmentValue = this.doctors[i].department_id
          }
        }

        if (this.departmentValue == 0) {
          this.departmentValue = ''
        }
      },
      changeDayOrMonth(tab) {
        if (this.dayorMonth == 'day') {

        } else if (this.dayorMonth == 'month') {

        }

      },
      getAllProjectList() {
        getAllProjectList().then(response => {
          if (response.data.state == 1) {
            var hisprojectlist = response.data.data.hisprojectlist
            console.log('hisprojectlist', hisprojectlist)
            this.hisList = hisprojectlist
          }
        })
      },
      clearSelection() {
        this.$refs.tabProjectTeam.clearSelection()
      }
    }, created() {
      for(let key in this.$store.getters.treatment_mode){
        this.modeOptions[key] = this.$store.getters.treatment_mode[key]
        this.modeOptionsTwo[key]=  this.$store.getters.treatment_mode[key]

      }
      var modes = this.$route.query.modes.split(',')
      console.log('~~~~~~~~~~')

      console.log(modes)

      for (const mkey in this.modeOptions) {
        console.log(mkey)
        for (let b = 0; b < modes.length; b++) {
          if (mkey == parseInt(modes[b])) {
            delete this.modeOptions[mkey]
          }
        }
      }

      this.getPrescriptionTemplateInfo()
      this.getInitData()
      //获取所有项目
      this.getlist()
      //获取所以项目组套
      this.getAllProjectTeam()

      this.getAllProjectList()
      this.$nextTick(() => {
        this.multipleTableHeight = parseInt(this.$refs.rightTable.offsetHeight)
      })
    }
  }
</script>

<style lang="scss" scoped>
    .new-main-contain {
        height: 100%;
        display: flex;
        flex-direction: column;
    }

    .app-container {
        height: 100%;
    }

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

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

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

    }
    .mainRight {
        margin-left: 20px;
        flex: 1;
        height: 100%;
        display: flex;
        flex-direction: column;

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

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

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

    .el-form-item {
        width: 33%;
        margin-bottom: 14px;
    }

    .el-form-item__label {
        text-align: left;
    }

    }
    .backColor {
        background: #f6f8f9;
        height: 5px;
        margin-bottom: 5px;
    }

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

    .tabsBox {
        position: relative;

        flex: 1;
        overflow-y: auto;
        margin-bottom: 60px;

    /*/ / margin-top: 4 px;*/

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

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

    .el-tabs__content {
        flex: 1;
        overflow-y: auto;
    }

    }

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

    .statusRed {
        color: red;
    }

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

    .centerRight {
        width: 300px;
        margin-left: 10px;
        display: flex;
        flex-direction: column;
        position: relative;
    }

    .rightTab {
        height: 40px;
        width: 100%;
        border: 1px solid #d2d2d2;
        box-sizing: border-box;

    p {
        width: 50%;
        height: 40px;
        line-height: 40px;
        text-align: center;
        background: #eee;
        float: left;
    }

    > p:last-child {
        border-left: 1px solid #d2d2d2;
        float: right;
    }

    .activeP {
        background: #409EFF;
        color: #fff;
    }

    }
    .rightTabs {
        display: flex;
        flex-direction: column;
    }

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

    .borderCard {
        height: 100%;
        display: flex;
        flex-direction: column;
        margin-bottom: 60px;

    .el-tabs--border-card > .el-tabs__content {
        padding: 0;
    }

    }
</style>

<style lang="scss">
    .borderCard {

    .el-tabs__nav {
        width: 100%;
    }

    .el-tabs__item {
        width: 50%;
        text-align: center;
    }

    .el-tabs__content {
        padding: 5px;
        flex: 1;
    }

    }
    .centerLeft {

    .el-form-item__label {
        text-align: left;
    }

    }
    .tabsBox {

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

    .el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:nth-child(2), .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:nth-child(2) {
        padding: 0 10px;
    }

    .el-tabs--bottom .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--bottom.el-tabs--card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--left > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top .el-tabs--right > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--border-card > .el-tabs__header .el-tabs__item:last-child, .el-tabs--top.el-tabs--card > .el-tabs__header .el-tabs__item:last-child {
        padding: 0 10px;
    }

    .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable {
        padding: 0 10px;
    }

    }
    .centerRight {

    .el-tabs__nav-scroll {
        display: flex;
    }

    .el-tabs__nav {
        margin: 0 auto;
    }

    .el-table th .cell, .el-table td .cell {
        padding: 0 2px;
    }

    }
    .preTabs {

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

    }
    .rightTabs {
        height: 100%;

    .el-tabs__nav {
        width: auto;
    }

    .el-tabs__header {
        margin-bottom: 5px;
    }

    .el-tabs__item {
        width: auto;
        text-align: inherit;
    }

    .el-tabs__content {
        flex: 1;
        overflow-y: auto;
    }

    .el-tab-pane {
        display: flex;
        flex-direction: column;
        height: 100%;
    }

    }
    #tab-more {

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

    }
    ::-webkit-scrollbar {
        height: 15px;
    }

</style>
