<template>
    <div class="patient-container">
        <patient-sidebar :id="patientID" defaultActive="1-4" v-on:tran-patient="onTranPatient"></patient-sidebar>
        <div class="patient-app-container advice-container app-container">
            <div class="cellButton" style="float:right;">
              <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" size="small"   @click="openNew" type="primary" icon="el-icon-circle-plus-outline" >新增</el-button>
                <el-button size="small"  @click="printThisInfo()" :type="adviceType==1 || adviceType == 3?'primary':'warning'" icon="el-icon-printer" >打印</el-button>            
            </div>
            <div class="cell clearfix">
                <el-input   style="width: 400px;" v-model="listQuery.keywords" class="filter-item" size="small" />
                <el-button   size="small" type="primary" icon="el-icon-search" @click="changeKey" >搜索</el-button>
            </div>
            <div class="cell clearfix">
                <label class="title"><span class="name">医嘱类型</span> : </label>
                <div class="time ">
                    <ul class="">
                    <li :class="item.value==adviceType?'active':''" @click='selectAdviceType(item.value)' v-for="item in adviceTypeArr" :key="item.value" >{{item.label}}</li>
                    </ul>
                </div>
            </div>
            <div class="cell clearfix">
                <label class="title"><span class="name">显示范围</span> : </label>
                <div class="time ">
                    <ul class="">
                    <li :class="item.value==stopType?'active':''" @click='selectStopType(item.value)' v-for="item in stopTypeArr" :key="item.value" >{{item.label}}</li>
                    </ul>
                </div>
            </div>
            <div class="cell clearfix">
                <label class="title"><span class="name">日期查询</span> : </label>
                <el-date-picker size="small" v-model="listQuery.start_time"  prefix-icon="el-icon-date" @change="changeTime" :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"  format="yyyy-MM-dd" value-format="yyyy-MM-dd" > </el-date-picker>
                <span class="cellLine"> - </span>
                <el-date-picker size="small" v-model="listQuery.end_time"  prefix-icon="el-icon-date" @change="changeTime" :editable="false" style="width: 196px;" type="date" placeholder="选择日期时间" align="right" :picker-options="pickerOptions"  format="yyyy-MM-dd" value-format="yyyy-MM-dd"> </el-date-picker>
            </div>
            <el-table @cell-click="clickuseradvicecell" :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"  row-class-name="user-advice-table-row" :span-method="mergeSpan" ref="multipleTable" :data="adviceTableData" border fit highlight-current-row @select="selectAdvice" @selection-change="changeAdvice" style="width: 100%;margin-top: 10px;" :cell-class-name="adviceNameShow" >

                <el-table-column align="center" label="全选" width="60px" type="selection" fixed></el-table-column>
                <!--<el-table-column type="index" :index="indexMethod"  label="序号" width="60px" align="center"></el-table-column>-->
                <el-table-column  label="期效" width="60px" property="advice_type" align="center" fixed>
                    <template slot-scope="scope">
                        <span v-if="scope.row.advice_type==1">长嘱</span>
                        <span v-else-if="scope.row.advice_type==3">临嘱</span>
                        <span v-else></span>
                    </template>
                </el-table-column>
                <el-table-column  label="开始时间" width="180" property="start_time" align="center">
                <template slot-scope="scope">
                    <span v-if="isShowStartTime(scope.$index, scope.row)">{{scope.row.start_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                    <span v-else></span>
                </template>
                </el-table-column>
                <el-table-column  label="医嘱内容" property="advice_name" width="180" align="center" style="word-break: keep-all;white-space:nowrap;">
                    <template slot-scope="scope">
                    <el-dropdown trigger="click" v-if="scope.row.parent_id == 0">
                        <span class="el-dropdown-link" v-if="scope.row.parent_id == 0">
                            {{ scope.row.advice_name }}<i class="el-icon-arrow-down el-icon--right"></i>
                        </span>

                        <el-dropdown-menu slot="dropdown">
                            <el-dropdown-item :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openEdit(scope.$index, scope.row)">修改医嘱</el-dropdown-item>
                            <el-dropdown-item v-if="scope.row.advice_type == 1" :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openStop(scope.$index, scope.row)">停止医嘱</el-dropdown-item>
                            <el-dropdown-item v-if="scope.row.advice_type == 3" :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openExec(scope.$index, scope.row)">执行医嘱</el-dropdown-item>
                            <el-dropdown-item v-if="scope.row.advice_type == 3" :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openCheck(scope.$index, scope.row)">核对医嘱</el-dropdown-item>
                            <el-dropdown-item :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openDelete(scope.$index, scope.row)">删除医嘱</el-dropdown-item>
                            <el-dropdown-item :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openNewChild(scope.$index, scope.row)">新增子药</el-dropdown-item>
                        </el-dropdown-menu>
                    </el-dropdown>
                      <el-dropdown trigger="click" v-if="scope.row.parent_id > 0">
                            <span class="el-dropdown-link" >
                                &emsp;&emsp;{{ scope.row.advice_name }}<i class="el-icon-arrow-down el-icon--right"></i>
                            </span>
                        <el-dropdown-menu slot="dropdown">
                          <el-dropdown-item :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openEdit(scope.$index, scope.row)">修改医嘱</el-dropdown-item>
                          <el-dropdown-item :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click.native="openDelete(scope.$index, scope.row)">删除医嘱</el-dropdown-item>
                        </el-dropdown-menu>
                      </el-dropdown>
                    </template>

                </el-table-column>
                <!-- <el-table-column  label="药品规格*数量" width="180"  property="drug_spec" align="center">
                    <template slot-scope="scope" >
                        <span v-if="scope.row.drug_spec!=0">
                          {{scope.row.drug_spec}}{{scope.row.drug_spec_unit}}
                          </span>
                          <span v-if="scope.row.prescribing_number!=0">*{{scope.row.prescribing_number}}{{scope.row.prescribing_number_unit}}</span>

                    </template>
                </el-table-column> -->
                <el-table-column  label="规格" width="180"  property="advice_desc" align="center">
                </el-table-column>
                <el-table-column  label="开药数量" width="180"  property="prescribing_number" align="center">
                    <template slot-scope="scope" >
                        <span v-if="scope.row.prescribing_number!=0">{{scope.row.prescribing_number}}{{scope.row.prescribing_number_unit}}</span>
                    </template>
                </el-table-column>
                <el-table-column  label="单次用量" width="180"  property="single_dose" align="center">
                    <template slot-scope="scope" >
                        <span v-if="scope.row.single_dose!=0">{{scope.row.single_dose}}{{scope.row.single_dose_unit}}</span>
                    </template>
                </el-table-column>
                <el-table-column  label="频率" width="180"  property="execution_frequency" align="center">
                    <template slot-scope="scope">
                        <span v-if="scope.row.parent_id==0">{{scope.row.execution_frequency}}</span>
                    </template>
                </el-table-column>
                <el-table-column  label="用法" width="180"  property="delivery_way" align="center">
                    <template slot-scope="scope">
                        <span v-if="scope.row.parent_id==0">{{scope.row.delivery_way}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="执行时间" width="180"  property="execution_time" align="center">
                    <template slot-scope="scope">
                        <span v-if="scope.row.execution_state==1"> {{scope.row.execution_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="终止时间" width="180"  property="stop_time" align="center">
                    <template slot-scope="scope">
                        <span v-if="scope.row.stop_state==1"> {{scope.row.stop_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="执行护士" width="180"  property="execution_staff" v-show="adviceType==3" align="center">
                    <template slot-scope="scope">
                        <span v-if="scope.row.parent_id==0">{{getXuserName(scope.row.execution_staff)}}</span>
                    </template>
                </el-table-column>

                <el-table-column label="开嘱医生" width="180"  property="advice_doctor" align="center">
                    <template slot-scope="scope">
                        {{getXuserName(scope.row.advice_doctor)}}
                    </template>
                </el-table-column>

                <el-table-column label="开嘱时间" width="180"  property="created_time" align="center">
                    <template slot-scope="scope">
                        {{scope.row.created_time | parseTime("{y}-{m}-{d} {h}:{i}")}}
                    </template>
                </el-table-column>

                    <el-table-column label="校对护士" width="180"  property="checker"  align="center">
                        <template slot-scope="scope">
                            <span v-if="scope.row.parent_id==0">{{getXuserName(scope.row.checker)}}</span>
                        </template>
                    </el-table-column>

                    <el-table-column label="校对时间" width="180"  property="check_time" align="center">
                        <template slot-scope="scope">
                            <span v-if="scope.row.check_state==1">{{scope.row.created_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                        </template>
                    </el-table-column>

                <!-- <template v-if="adviceType==3">
                    <el-table-column key="advice_doctor_3" label="开嘱医生" min-width="80"  property="advice_doctor" align="center">
                        <template slot-scope="scope">
                            {{getXuserName(scope.row.advice_doctor)}}
                        </template>
                     </el-table-column>
                    <el-table-column key="execution_time_3" label="执行时间" min-width="80"  property="execution_time" v-show="adviceType==3" align="center">
                        <template slot-scope="scope">
                            <span v-if="scope.row.execution_state==1&&scope.row.parent_id==0"> {{scope.row.execution_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column key="execution_staff_3" label="执行人员" min-width="80"  property="execution_staff" v-show="adviceType==3" align="center">
                        <template slot-scope="scope">
                            <span v-if="scope.row.parent_id==0">{{getXuserName(scope.row.execution_staff)}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column key="checker_3" label="核对人员" min-width="80"  property="checker" v-show="adviceType==3" align="center">
                        <template slot-scope="scope">
                            <span v-if="scope.row.parent_id==0">{{getXuserName(scope.row.checker)}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column  key="remark_3" label="备注" min-width="80"  property="remark"  align="center"> </el-table-column>
                </template>
                <template v-if="adviceType==1">
                    <el-table-column key="advice_doctor_1" label="开嘱医生" min-width="80"  property="advice_doctor" align="center">
                        <template slot-scope="scope">
                            {{getXuserName(scope.row.advice_doctor)}}
                        </template>
                    </el-table-column>
                     <el-table-column key="advice_affirm_1" label="开嘱确认" min-width="80"  property="advice_affirm" v-show="adviceType==0" align="center"> </el-table-column>
                    <el-table-column key="stop_time_1" label="停止时间" min-width="80"  property="stop_time" v-show="adviceType==1" align="center">
                        <template slot-scope="scope">
                           <span v-if="scope.row.stop_state==1&&scope.row.parent_id==0"> {{scope.row.stop_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                        </template>
                    </el-table-column>

                    <el-table-column key="stop_doctor_1" label="停嘱医生" min-width="80"  property="stop_doctor" v-show="adviceType==1" align="center">
                        <template slot-scope="scope">
                            <span v-if="scope.row.stop_state==1&&scope.row.parent_id==0">  {{getXuserName(scope.row.stop_doctor)}}</span>
                        </template>
                    </el-table-column>
                </template> -->
                  <el-table-column  label="操作" width="180" align="center"  fixed="right">
                      <template slot-scope="scope">
                        <!-- <el-button-group> -->
                          <el-tooltip  class="item" effect="dark" content="编辑" placement="top">
                            <el-button icon="el-icon-edit-outline" type="primary"  size="small" :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click="scope.row.groupno>0?openEditGroupAdvice(scope.row.groupno):openEdit(scope.$index, scope.row)" v-if="isShowStartTime(scope.$index, scope.row)"></el-button>
                          </el-tooltip>
                          <el-tooltip class="item" effect="dark" content="删除" placement="top">
                            <el-button icon="el-icon-delete" type="danger" size="small" :disabled="$store.getters.xt_user.subscibe.state==3?true:false" @click="scope.row.groupno>0?DeleteGroupAdvice(scope.row.groupno):openDelete(scope.$index, scope.row)" v-if="isShowStartTime(scope.$index, scope.row)"></el-button>
                          </el-tooltip>
                      <!-- </el-button-group> -->
                      </template>
                  </el-table-column>
            </el-table>

            <el-dialog title="新增医嘱" :visible.sync="groupFormVisible" width="700px">
                <el-form ref="groupForm" :rules="groupRules" :model="groupForm" label-width="90px">
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="医嘱类型 :" required prop="advice_type">
                                <el-select v-model="groupForm.advice_type"  placeholder="请选择">
                                <el-option :label="item.label" :key="item.value"  :value="item.value" v-for="item in adviceTypeOptions"></el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="开始时间 :" required prop="start_time" style="width:100%;">
                                <el-date-picker style="width:100%;" type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"  placeholder="选择时间" v-model="groupForm.start_time" ></el-date-picker>
                            </el-form-item>
                        </el-col>
                    </el-row>

                    <el-form-item label="备注 :">
                        <el-input type="textarea" v-model="groupForm.remark"></el-input>
                    </el-form-item>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="开嘱医生 :" >
                                <span>{{adminusername}} </span>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="开嘱时间 :" >
                                <span>{{groupForm.advice_date}} </span>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="2">
                           &nbsp;
                        </el-col>
                        <el-col :span="5">
                            <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" round  @click="openAdviceTemplate()">选择医嘱模板</el-button>
                        </el-col>
                        <el-col :span="5">
                            <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" round  @click="openGroupAdvice(0)">新增医嘱内容</el-button>
                        </el-col>
                        <el-col :span="5">
                            <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" round @click="openDeleteGroupAdvice()">删除医嘱内容</el-button>
                        </el-col>
                        <el-col :span="5">
                            <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" round  @click="openGroupAdvice(1)">修改医嘱内容</el-button>
                        </el-col>
                        
                    </el-row>
                    <el-row>
                      <el-col :span="24">
                      <el-table :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}" id="user-advice-name-table" :data="groupForm.adviceNames" border fit highlight-current-row :row-class-name="groupClassName" @current-change="selectGroupAdvice" style="width: 100%;margin-top: 10px;margin-bottom: 10px;" :row-key="getRowKey" ref="advicenametable" :expand-row-keys="expandRowKeys" type="expand" default-expand-all>
                        <el-table-column  label="医嘱内容" property="advice_name" style="word-break: keep-all;white-space:nowrap;">

                        </el-table-column>
                        <!-- <el-table-column  label="药品规格*数量" min-width="80"  property="drug_spec" align="center">
                            <template slot-scope="scope" >
                                <span v-if="scope.row.drug_spec!=0">{{scope.row.drug_spec}}{{scope.row.drug_spec_unit}}</span>
                                <span v-if="scope.row.prescribing_number!=0">*{{scope.row.prescribing_number}}{{scope.row.prescribing_number_unit}}</span>
                            </template>
                        </el-table-column> -->
                        <el-table-column  label="规格" min-width="80"  property="advice_desc" align="center">
                        </el-table-column>
                        <el-table-column  label="开药数量" min-width="80"  property="prescribing_number" align="center">
                            <template slot-scope="scope" >
                                <span v-if="scope.row.prescribing_number!=0">{{scope.row.prescribing_number}}{{scope.row.prescribing_number_unit}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column  label="单次用量" min-width="80"  property="single_dose" align="center">
                            <template slot-scope="scope" >
                                <span v-if="scope.row.single_dose!=0">{{scope.row.single_dose}}{{scope.row.single_dose_unit}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column  label="给药途径" min-width="80"  property="delivery_way" align="center">
                            <template slot-scope="scope">
                                <span v-if="scope.row.parent_row==0">{{scope.row.delivery_way}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column  label="执行频率" min-width="80"  property="execution_frequency" align="center">
                            <template slot-scope="scope">
                                <span v-if="scope.row.parent_row==0">{{scope.row.execution_frequency}}</span>
                            </template>
                        </el-table-column>

                    </el-table>
                      </el-col>
                    </el-row>

                </el-form>
                <div slot="footer" class="dialog-footer">
                        <el-button :disabled="$store.getters.xt_user.subscibe.state==3 || groupForm.adviceNames.length == 0?true:false" type="primary" @click="submitgroupAdvice('groupForm')">保 存</el-button>
                </div>
            </el-dialog>

            <el-dialog title="选择医嘱模板"  :close-on-click-modal="false" :visible.sync="templateFormVisible" width="72%">
                <el-row :gutter="20">
                    <el-col :span="8">
                    <el-table
                        :data="adviceTemplates"
                        ref="templatetable"
                        border
                        :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
                        highlight-current-row
                        @current-change="templateTableChange"
                        style="width: 100%">
                        <el-table-column
                        prop="name"
                        label="模板名称">
                        </el-table-column>
                    </el-table>
                    </el-col>
                    <el-col :span="16">
                        <el-table
                        :header-cell-style="{ backgroundColor: 'rgb(245, 247, 250)'}"
                        id='user-advice-select-template-table'
                        :data="selectedTemp.list"
                        border
                        :span-method="spanselecttable"
                        @select="selectTemplateAdvice"
                        @selection-change="changeTemplateAdvice"
                        @select-all="selectAllTemplateAdvice"
                        row-key="row_key"
                        ref="selecttemplatetable"
                        style="width: 100%"
                        >
                        <el-table-column
                            type="selection"
                            width="55">
                        </el-table-column>
                        <el-table-column
                            label="医嘱内容"
                            property="advice_name"
                            style="word-break: keep-all;white-space:nowrap;"
                        ></el-table-column>
                        <el-table-column
                            label="规格"
                            property="advice_desc"
                        ></el-table-column>
                        <el-table-column label="开药数量" min-width="80" property="prescribing_number" align="center">
                            <template slot-scope="scope">
                            <span
                                v-if="scope.row.prescribing_number!=0"
                            >{{scope.row.prescribing_number}}{{scope.row.prescribing_number_unit}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column label="单次用量" min-width="80" property="single_dose" align="center">
                            <template slot-scope="scope">
                            <span
                                v-if="scope.row.single_dose!=0"
                            >{{scope.row.single_dose}}{{scope.row.single_dose_unit}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column label="给药途径" min-width="80" property="delivery_way" align="center">
                            <template slot-scope="scope">
                            <span v-if="scope.row.parent_row==0">{{scope.row.delivery_way}}</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                            label="执行频率"
                            min-width="80"
                            property="execution_frequency"
                            align="center"
                        >
                            <template slot-scope="scope">
                            <span v-if="scope.row.parent_row==0">{{scope.row.execution_frequency}}</span>
                            </template>
                        </el-table-column>
                        </el-table>
                    </el-col>
                </el-row>

                <div slot="footer" class="dialog-footer">
                    <el-button @click="cancleDialog()">取 消</el-button>
                    <el-button
                    :disabled="$store.getters.xt_user.subscibe.state==3?true:false"
                    type="primary"
                    @click="newAddTempForm()"
                    >保 存</el-button>
                </div>
            </el-dialog>

            <el-dialog title="选择医嘱模板" :visible.sync="oldTemplateFormVisible" width="700px">
                <el-form ref="templateForm" :rules="templateRules" :model="templateForm" >
                    <el-row>
                        <el-col :span="24">
                            <el-form-item prop="id" >
                                <el-select v-model="templateForm.id"  filterable clearable  placeholder="请选择(输入可搜索)" style="width:100%" >
                                <el-option
                                v-for="item in adviceTemplates"
                                :key="item.id"
                                :label="item.name"
                                :value="item.id" >
                                </el-option>
                            </el-select>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </el-form>
                <div slot="footer" class="dialog-footer">
                        <el-button  @click="templateFormVisible = false">取 消</el-button>
                        <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="addTempForm('templateForm')">保 存</el-button>
                </div>
            </el-dialog>

            <el-dialog :title="nameFormTitle" :visible.sync="nameFormVisible" width="700px">
                <el-form ref="nameForm" :rules="nameRules" :model="nameForm" label-width="90px">
                    <el-row>
                        <el-col :span="12">
                          <el-form-item label="医嘱内容 :" required prop="advice_name">
                            <el-input v-model="nameForm.advice_name"  ></el-input>
                          </el-form-item>
                        </el-col>
                        <el-col :span="12">
                          <el-form-item label="规格 :"  prop="advice_desc">
                            <el-input v-model="nameForm.advice_desc"  ></el-input>
                          </el-form-item>
                        </el-col>
                        <!-- <el-col :span="12">
                            <el-form-item label="药品规格 :" prop="drug_spec" >
                                <el-col :span="8">
                                    <el-input v-model="nameForm.drug_spec"></el-input>
                                </el-col>
                                 <el-col class="line" :span="2">&nbsp;</el-col>
                                <el-col :span="14">
                                    <el-select v-model="nameForm.drug_spec_unit"  filterable clearable allow-create  placeholder="选择" >
                                        <el-option v-for="item in unitsOption" :key="item.id" :label="item.name " :value="item.name">
                                        </el-option>
                                    </el-select>

                                </el-col>
                            </el-form-item>
                        </el-col> -->
                    </el-row>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="单次用量 :" prop="single_dose" >
                                <el-col :span="8">
                                    <el-input v-model="nameForm.single_dose"></el-input>
                                </el-col>
                                 <el-col class="line" :span="2">&nbsp;</el-col>
                                <el-col :span="14">
                                    <el-select v-model="nameForm.single_dose_unit"  filterable clearable allow-create  placeholder="选择" >
                                        <el-option v-for="item in unitsOption" :key="item.id" :label="item.name " :value="item.name">
                                        </el-option>
                                    </el-select>

                                </el-col>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="开药数量 :" prop="prescribing_number">
                                <el-col :span="8">
                                    <el-input v-model="nameForm.prescribing_number"></el-input>
                                </el-col>
                                 <el-col class="line" :span="2">&nbsp;</el-col>
                                <el-col :span="14">
                                    <el-select v-model="nameForm.prescribing_number_unit"  filterable clearable allow-create  placeholder="选择" >
                                        <el-option v-for="item in unitsOption" :key="item.id" :label="item.name " :value="item.name">
                                        </el-option>
                                    </el-select>
                                </el-col>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="给药途径 :" prop="delivery_way">
                                <el-select v-model="nameForm.delivery_way"  filterable clearable allow-create  :disabled='isChild' placeholder="请选择(输入可搜索)" style="width:100%" >
                                    <el-option
                                    v-for="item in deliveryWayOptions"
                                    :key="item.id"
                                    :label="item.name "
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="执行频率 :" prop="execution_frequency">
                                 <el-select v-model="nameForm.execution_frequency"  filterable clearable allow-create :disabled='isChild' placeholder="请选择(输入可搜索)" style="width:100%" >
                                    <el-option
                                    v-for="item in executionFrequencyOptions"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </el-form>
                <div slot="footer" class="dialog-footer">
                        <el-button  @click="nameFormVisible = false">取消</el-button>
                        <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="submitNameForm('nameForm')">保 存</el-button>
                </div>
            </el-dialog>

            <edit-group-advice :adviceTemplates="adviceTemplates" :groupFormVisible="groupEditFormVisible" :groupForm="groupForm" :adviceTypeOptions="adviceTypeOptions" :executionFrequencyOptions="executionFrequencyOptions" :adminusername="adminusername" :unitsOption="unitsOption" :deliveryWayOptions="deliveryWayOptions" :rowKey="rowKey" :adviceTemplateMaps="adviceTemplateMaps" :patientID="patientID" :adviceType="adviceType" :adviceTableData="adviceTableData" ref="editGroupForm"></edit-group-advice>

            <el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible" width="700px">
                <el-form ref="adviceForm" :rules="adviceRules" :model="adviceForm" label-width="90px">
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="医嘱类型 :" required prop="advice_type">
                                <el-select v-model="adviceForm.advice_type" :disabled="isEdit||adviceForm.parent_id>0?true:false"  placeholder="请选择">
                                <el-option :label="item.label" :key="item.value"  :value="item.value" v-for="item in adviceTypeOptions"></el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="开嘱时间 :" required prop="advice_date" >
                                <el-date-picker type="date" readonly format="yyyy-MM-dd" value-format="yyyy-MM-dd" placeholder="选择日期" v-model="adviceForm.advice_date"  style="width: 100%;"></el-date-picker>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-form-item label="开始时间 :" required prop="start_time">
                        <el-date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"  placeholder="选择时间" v-model="adviceForm.start_time" style="width:50%" :disabled="adviceForm.parent_id==0?false:true" ></el-date-picker>
                    </el-form-item>
                    <el-row>
                        <el-col :span="12">
                          <el-form-item label="医嘱内容 :" required prop="advice_name">
                            <el-input v-model="adviceForm.advice_name" ></el-input>
                            <!--<el-select v-model="adviceForm.advice_name" @change="changeAdviceName" filterable clearable allow-create placeholder="请选择(输入可搜索)" style="width:50%" >-->
                                <!--<el-option-->
                                <!--v-for="item in adviceTemplates"-->
                                <!--:key="item.id"-->
                                <!--:label="item.advice_name"-->
                                <!--:value="item.id"-->
                                <!--&gt;-->
                                <!--<span >{{ item.advice_name }}</span>-->
                                <!--<span >{{ item.advice_spec }}</span>-->
                                <!--</el-option>-->
                            <!--</el-select>-->
                        </el-form-item>
                      </el-col>

                        <el-col :span="12">
                            <el-form-item label="药品规格 :" prop="drug_spec" >
                                <el-col :span="8">
                                    <el-input v-model="adviceForm.drug_spec"></el-input>
                                </el-col>
                                 <el-col class="line" :span="2">&nbsp;</el-col>
                                <el-col :span="14">
                                    <el-select v-model="adviceForm.drug_spec_unit"  filterable clearable allow-create  placeholder="选择" >
                                        <el-option v-for="item in unitsOption" :key="item.id" :label="item.name " :value="item.name">
                                        </el-option>
                                    </el-select>

                                </el-col>
                            </el-form-item>
                        </el-col>
                    </el-row>

                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="单次用量 :" prop="single_dose" >
                                <el-col :span="8">
                                    <el-input v-model="adviceForm.single_dose"></el-input>
                                </el-col>
                                 <el-col class="line" :span="2">&nbsp;</el-col>
                                <el-col :span="14">
                                    <!-- <el-input v-model="adviceForm.single_dose_unit" ></el-input> -->

                                    <el-select v-model="adviceForm.single_dose_unit"  filterable clearable allow-create  placeholder="选择" >
                                        <el-option v-for="item in unitsOption" :key="item.id" :label="item.name " :value="item.name">
                                        </el-option>
                                    </el-select>

                                </el-col>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="开药数量 :" prop="prescribing_number">
                                <el-col :span="8">
                                    <el-input v-model="adviceForm.prescribing_number"></el-input>
                                </el-col>
                                 <el-col class="line" :span="2">&nbsp;</el-col>
                                <el-col :span="14">
                                    <el-select v-model="adviceForm.prescribing_number_unit"  filterable clearable allow-create  placeholder="选择" >
                                        <el-option v-for="item in unitsOption" :key="item.id" :label="item.name " :value="item.name">
                                        </el-option>
                                    </el-select>

                                    <!-- <el-input v-model="adviceForm.prescribing_number_unit" ></el-input> -->
                                </el-col>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="给药途径 :" prop="delivery_way">
                                <el-select v-model="adviceForm.delivery_way" :disabled="adviceForm.parent_id==0?false:true" filterable clearable allow-create  placeholder="请选择(输入可搜索)" style="width:90%" >
                                    <el-option
                                    v-for="item in deliveryWayOptions"
                                    :key="item.id"
                                    :label="item.name "
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="执行频率 :" prop="execution_frequency">
                                 <el-select v-model="adviceForm.execution_frequency" :disabled="adviceForm.parent_id==0?false:true" filterable clearable allow-create  placeholder="请选择(输入可搜索)" style="width:90%" >
                                    <el-option
                                    v-for="item in executionFrequencyOptions"
                                    :key="item.id"
                                    :label="item.name"
                                    :value="item.name">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </el-col>
                    </el-row>
                    <el-form-item label="备注 :">
                        <el-input type="textarea" v-model="adviceForm.remark"></el-input>
                    </el-form-item>

                    <el-form-item label="开嘱医生 :" >
                        <span>{{adminusername}} </span>
                    </el-form-item>
                </el-form>
                <div slot="footer" class="dialog-footer">
                    <template v-if="isEdit">
                        <el-button  @click="dialogFormVisible = false">取消</el-button>
                        <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="submitEditAdvice('adviceForm')">保 存</el-button>
                    </template>
                    <template v-else>
                        <el-button  @click="dialogFormVisible = false" v-if="adviceForm.parent_id>0">取 消</el-button>
                        <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="submitNewAdvice('adviceForm', 're')" v-if="adviceForm.parent_id==0">继 续</el-button>
                        <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="submitNewAdvice('adviceForm', 'on')">保 存</el-button>

                    </template>
                </div>
            </el-dialog>
            <el-dialog title="停止医嘱" :visible.sync="dialogStopFormVisible" width="600px">
                <el-form ref="stopForm" :model="stopForm" :rules="stopRules" label-width="90px">
                    <el-form-item label="停止时间 :" required prop="stop_time">
                        <el-date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"  placeholder="选择时间" v-model="stopForm.stop_time" style="width:50%"  ></el-date-picker>
                    </el-form-item>

                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="submitStopAdvice('stopForm')">保 存</el-button>
                    <el-button type="primary" @click="dialogStopFormVisible = false">取消</el-button>
                </div>
            </el-dialog>

            <el-dialog title="执行医嘱" :visible.sync="execTimeDialogVisible" width="600px">
                <el-form ref="execForm" :model="execForm" :rules="execRules" label-width="90px">
                    <el-form-item label="执行时间 :" required prop="exec_time">
                        <el-date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"  placeholder="选择时间" v-model="execForm.exec_time" style="width:50%"  ></el-date-picker>
                    </el-form-item>

                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button :disabled="$store.getters.xt_user.subscibe.state==3?true:false" type="primary" @click="submitExecAdvice('execForm')">保 存</el-button>
                    <el-button type="primary" @click="execTimeDialogVisible = false">取消</el-button>
                </div>
            </el-dialog>
        </div>

        <div style="display:none">
            <div class="printForm" id="printCQadvice">
                <h2 class="hospital_title">{{orgname}}</h2>
                <h1 class="title">长期医嘱单  </h1>
                <div class="info">
                    <ul>
                        <li>
                            <span class="name" >姓名：</span>
                            <!-- <input type="text" class="InputBox" v-model="currentPatient.name"> -->
                            <span class="InputBox" >&nbsp;{{currentPatient.name}}</span>
                        </li>
                         <li>
                            <span class="name" >性别：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;{{tranSex(currentPatient.gender)}}</span>
                        </li>
                         <li>
                            <span class="name" >年龄：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;{{tranAge(currentPatient.birthday)}}岁</span>
                        </li>
                         <li>
                            <span class="name" >科别：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        </li>
                         <li>
                            <span class="name" >透析号：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;&nbsp;&nbsp;{{currentPatient.dialysis_no}}&nbsp;&nbsp;</span>
                        </li>

                    </ul>
                </div>
                <table border="1" style="border:1px #999 solid;margin-top:20px;" bordercolorlight="#fff" bordercolordark="#fff" width="100%" cellpadding="0" cellspacing="0" class="printTable" >
                  <tbody>
                    <tr align="center">
                        <th style="width:20%;" colspan="2" align="center" >起始</th>
                        <th style="width:20%;" rowspan="2" align="">医嘱</th>
                        <th style="width:8%;"  rowspan="2" align="center" >医师签名</th>
                        <th style="width:6%;" rowspan="2" align="center" >执行护士签名</th>
                        <th style="width:42%;" colspan="4" align="center" >停止</th>
                    </tr>
                    <tr align="center">
                        <th  align="center">日期</th>
                        <th  align="center">时间</th>
                        <th style="width:10%;" align="center">日期</th>
                        <th style="width:10%;" align="center">时间</th>
                        <th style="width:10%;" align="center">医师签名</th>
                        <th style="width:6%;" align="center">执行护士签名</th>
                    </tr>
                    <tr align="center" v-for="(advice, index) in cqtableData" :key="advice.id">
                        <td>
                            <span v-if="isShowCQStartTime(index, advice)">{{advice.start_time | parseTime("{y}-{m}-{d}")}}</span>
                        </td>
                        <td>
                            <span v-if="isShowCQStartTime(index, advice)">{{advice.start_time | parseTime("{h}:{i}")}}</span>
                        </td>
                        <td style="text-align:left">
                                <span v-if="advice.parent_id>0">▲</span>
                                <span >{{advice.advice_name }}</span>
                                <span >{{advice.advice_desc}}</span>
                                <!-- <span v-if="advice.drug_spec">{{advice.drug_spec}}{{advice.drug_spec_unit}}</span> -->
                                <span v-if="advice.prescribing_number">*{{advice.prescribing_number}}{{advice.prescribing_number_unit}}</span>
                                <span v-if="advice.single_dose != 0"> 单次用量 {{advice.single_dose}}{{advice.single_dose_unit}}</span>
                                <span >{{advice.delivery_way}}</span>
                                <span >{{advice.execution_frequency}}</span>
                        </td>
                        <td>
                            <div v-if="isShowCQStartTime(index, advice)">
                                <span v-if="setAdminUserES(advice.advice_doctor) == ''">{{getXuserName(advice.advice_doctor)}}</span>
                                <img class="es-img" :src="setAdminUserES(advice.advice_doctor)" alt="" srcset="" v-else>
                            </div>
                         </td>
                        <td>
                        </td>
                        <td>
                            <span v-if="advice.stop_state==1&&isShowCQStartTime(index, advice)">{{advice.stop_time | parseTime("{y}-{m}-{d}")}}</span>
                        </td>
                        <td>
                            <span v-if="advice.stop_state==1&&isShowCQStartTime(index, advice)">{{advice.stop_time | parseTime("{h}:{i}")}}</span>
                        </td>
                        <td>
                            <div v-if="isShowCQStartTime(index, advice)">
                                <span v-if="setAdminUserES(advice.stop_doctor) == ''">{{getXuserName(advice.stop_doctor)}}</span>
                                <img class="es-img" :src="setAdminUserES(advice.stop_doctor)" alt="" srcset="" v-else>
                            </div>
                        </td>
                        <td></td>
                    </tr>

                  </tbody>
                </table>
            </div>
        </div>
        <div style="display:none">
            <div class="printForm" id="printLSadvice">
                <h2 class="hospital_title">{{orgname}}</h2>
                <h1 class="title">临时医嘱单</h1>
                <div class="info">
                    <ul>
                        <li>
                            <span class="name" style="width:50px;" >姓名：</span>
                            <!-- <input type="text" class="InputBox" v-model="currentPatient.name"> -->
                            <span class="InputBox" >&nbsp;{{currentPatient.name}}</span>
                        </li>
                         <li>
                            <span class="name" style="width:50px;" >性别：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;{{tranSex(currentPatient.gender)}}</span>
                        </li>
                         <li>
                            <span class="name" style="width:50px;" >年龄：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;{{tranAge(currentPatient.birthday)}}岁</span>
                        </li>
                         <li>
                            <span class="name" style="width:30px;" >科：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        </li>
                         <li>
                            <span class="name" style="width:30px;" >区：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        </li>
                        <li>
                            <span class="name" style="width:30px;" >房：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        </li>
                        <li>
                            <span class="name" style="width:30px;" >床：</span>
                            <!-- <input type="text" class="InputBox"> -->
                            <span class="InputBox" >&nbsp;&nbsp;&nbsp;&nbsp;</span>
                        </li>
                        <li>
                            <span class="name" style="width:70px;" >透析号：</span>
                            <span class="InputBox" >&nbsp;{{currentPatient.dialysis_no}}&nbsp;&nbsp;&nbsp;</span>

                            <!-- <input type="text" class="InputBox"> -->
                        </li>
                    </ul>
                </div>
                <table border="1" style="border:1px #999 solid;margin-top:20px;" bordercolorlight="#fff" bordercolordark="#fff" width="100%" cellpadding="0" cellspacing="0" class="printTable" >
                  <tbody>
                    <tr align="center">
                        <th style="width:10%;" align="center">日期</th>
                        <th style="width:10%;" align="center">时间</th>
                        <th style="width:10%;" align="center">医生签名</th>
                        <th style="width:40%;" align="" >医嘱内容</th>
                        <th style="width:10%;" align="center">执行时间</th>
                        <th style="width:10%;" align="center">护士签名</th>
                    </tr>
                    <tr align="center" v-for="advice in lstableData" :key="advice.id">
                        <td>
                            <span v-if="advice.parent_id==0">{{advice.start_time | parseTime("{y}-{m}-{d}")}}</span>
                        </td>
                        <td>
                            <span v-if="advice.parent_id==0">{{advice.start_time | parseTime("{h}:{i}")}}</span>
                        </td>
                        <td>
                            <div v-if="isShowCQStartTime(index, advice)">
                                <span v-if="setAdminUserES(advice.advice_doctor) == ''">{{getXuserName(advice.advice_doctor)}}</span>
                                <img class="es-img" :src="setAdminUserES(advice.advice_doctor)" alt="" srcset="" v-else>
                            </div>
                         </td>
                        <td style="text-align:left">
                            <span v-if="advice.parent_id>0">▲</span>
                                <span >{{advice.advice_name }}</span>
                                <span >{{advice.advice_desc}}</span>
                                <!-- <span v-if="advice.drug_spec">{{advice.drug_spec}}{{advice.drug_spec_unit}}</span> -->
                                <span v-if="advice.prescribing_number">*{{advice.prescribing_number}}{{advice.prescribing_number_unit}}</span>
                                <span v-if="advice.single_dose != 0">单次用量 {{advice.single_dose}}{{advice.single_dose_unit}}</span>
                                <span >{{advice.delivery_way}}</span>
                                <span >{{advice.execution_frequency}}</span>
                        </td>
                        <td>
                            <span v-if="advice.execution_time!=0" >{{advice.execution_time| parseTime('{y}-{m}-{d} {h}:{i}:{s}')}}</span>
                        </td>
                        <td>

                            <div v-if="isShowCQStartTime(index, advice)">
                                <span v-if="setAdminUserES(advice.execution_staff) == ''">{{getXuserName(advice.execution_staff)}}</span>
                                <img class="es-img" :src="setAdminUserES(advice.execution_staff)" alt="" srcset="" v-else>
                            </div>
                        </td>


                    </tr>

                  </tbody>
                </table>
            </div>
        </div>

        <div style="display:none;">
            <div id="printCQadvice_fq" class="advice-order">
                <div class="ls-title">{{orgname}}</div>
                <div class="ls-type">长期医嘱单</div>
                <div class="ls-name">
                    <div>姓名：<span class="item-value">{{currentPatient.name}}</span></div>
                    <div>透析号：<span class="item-value">{{currentPatient.dialysis_no}}</span></div>
                </div>
                <table cellspacing="0" cellpadding="0" border="1" class="el-table__body" style="width: 100%;">
                    <tbody>
                        <tr style="text-align:center;">
                            <td colspan="3">
                                开始
                            </td>
                            <td colspan="2">
                                停止
                            </td>
                            <td rowspan="2">
                                备注
                            </td>
                        </tr>
                        <tr style="text-align:center;">
                            <td>时间</td>
                            <td style="max-width:50%">医嘱</td>
                            <td>医生</td>
                            <td>时间</td>
                            <td>医生</td>
                        </tr>
                        <tr v-for="(advice, index) in cqtableData" :key="advice.id">
                            <td>
                                <span v-if="isShowCQStartTime(index, advice)">{{advice.start_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                                <span v-else></span>
                            </td>
                            <td>

                                <span >{{advice.advice_name }}</span>
                                <span >{{advice.advice_desc}}</span>
                                <span v-if="advice.single_dose">{{advice.single_dose}}{{advice.single_dose_unit}}</span>
                                <span v-if="advice.prescribing_number">*{{advice.prescribing_number}}{{advice.prescribing_number_unit}}</span>
                                <span >{{advice.delivery_way}}</span>
                                <span >{{advice.execution_frequency}}</span>
                            </td>
                            <td><span v-if="advice.parent_id==0" >{{getXuserName(advice.advice_doctor)}}</span>
                            </td>
                            <td>
                                <span v-if="advice.stop_state==1&&advice.parent_id==0">{{advice.stop_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                                <span v-else></span>
                            </td>
                            <td>
                                <span v-if="advice.stop_state==1&&advice.parent_id==0">{{getXuserName(advice.stop_doctor)}}</span>
                                <span v-else></span>
                            </td>
                            <td>
                                {{advice.remark}}
                            </td>
                        </tr>

                    </tbody>
                </table>

            </div>
        </div>
        <div style="display:none;">
            <div id="printLSadvice_fq" class="advice-order">
                <div class="ls-title">{{orgname}}</div>
                <div class="ls-type">临时医嘱单</div>
                <div class="ls-name">
                    <div>姓名：<span class="item-value">{{currentPatient.name}}</span></div>
                    <div>透析号：<span class="item-value">{{currentPatient.dialysis_no}}</span></div>
                </div>
                <table cellspacing="0" cellpadding="0" border="1" class="el-table__body" style="width: 100%;">
                    <thead>
                        <th>时间</th>
                        <th>医嘱</th>
                        <th>医生</th>
                        <th>执行护士</th>
                        <th>执行时间</th>
                    </thead>
                    <tbody>
                        <tr v-for="(advice, index) in lstableData" :key="advice.id">
                            <td>
                                <span v-if="isShowLSStartTime(index, advice)">{{advice.start_time | parseTime("{y}-{m}-{d} {h}:{i}")}}</span>
                                <span v-else></span>
                            </td>
                            <td>

                                <span >{{advice.advice_name }}</span>
                                <span >{{advice.advice_desc}}</span>
                                <span v-if="advice.single_dose">{{advice.single_dose}}{{advice.single_dose_unit}}</span>
                                <span v-if="advice.drug_spec">{{advice.drug_spec}}{{advice.drug_spec_unit}}</span>
                                <span v-if="advice.prescribing_number">*{{advice.prescribing_number}}{{advice.prescribing_number_unit}}</span>
                                <span >{{advice.delivery_way}}</span>
                                <span >{{advice.execution_frequency}}</span>
                            </td>
                            <td><span v-if="advice.parent_id==0" >{{getXuserName(advice.advice_doctor)}}</span>
                            </td>
                            <td><span v-if="advice.parent_id==0" >{{getXuserName(advice.execution_staff)}}</span>
                            </td>
                            <td><span v-if="advice.execution_time!=0" >{{advice.execution_time| parseTime('{y}-{m}-{d} {h}:{i}:{s}')}}</span>
                            </td>
                        </tr>

                    </tbody>
                </table>

            </div>
        </div>
    </div>
</template>
<script>
import PatientSidebar from "./components/PatientSidebar";
import EditGroupAdvice from "./components/EditGroupAdvice";
import { fetchAllDoctorAndNurse, fetchAllAdminUsers } from "@/api/doctor";
import {
  getAdviceConfig,
  CreateDoctorAdvice,
  getDoctorAdviceList,
  EditDoctorAdvice,
  StopDoctorAdvice,
  StopGroupAdvice,
  ExecGroupAdvice,
  CheckGroupAdvice,
  DeleteDoctorAdvice,
  CreateGroupAdvice,
  DeleteGroupAdvice
} from "@/api/advice";
import { uParseTime, jsGetAge } from "@/utils/tools";
import print from "print-js";
import { getDataConfig } from "@/utils/data";

let rowIndex = 1;
let rowKey = 0;

export default {
  name: "doctorAdvice",

  data() {
    return {
      rowKey: 0,
      nameFormTitle: "",
      adminusername: "",
      aminuserid: 0,
      orgname: "",
      tempArr: [],
      currentPatient: {},
      currentIndex: -1,
      dialogTitle: "新增",
      dialogFormVisible: false,
      groupEditFormVisible: false,
      nameFormVisible: false,
      templateFormVisible: false,
      oldTemplateFormVisible: false,
      dialogStopFormVisible: false,
      execTimeDialogVisible: false,
      groupFormVisible: false,
      isEdit: false,
      isChild: false,
      searchKey: "",
      pickerOptions: {
        shortcuts: [
          {
            text: "今天",
            onClick(picker) {
              picker.$emit("pick", new Date());
            }
          },
          {
            text: "昨天",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24);
              picker.$emit("pick", date);
            }
          },
          {
            text: "一周前",
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", date);
            }
          },
          {
            text: "清空",
            onClick(picker) {
              picker.$emit("pick");
            }
          }
        ]
      },
      adviceType: 0,
      adviceTypeArr: [
        { value: 0, label: "全部" },
        { value: 1, label: "长期" },
        { value: 3, label: "临时" }
      ],
      adviceTypeOptions: [
        { value: 1, label: "长期" },
        { value: 3, label: "临时" }
      ],
      stopType: 0,
      stopTypeArr: [
        { value: 0, label: "全部" },
        { value: 2, label: "未停止" },
        { value: 1, label: "已停止" }
      ],
      adviceTableData: [],
      doctorOptions: [],
      adminUserOptions: null,
      adviceTemplates: [],
      adviceTemplateMaps: {},
      drugOptions: [],
      deliveryWayOptions: [],
      executionFrequencyOptions: [],
      unitsOption: [],
      templateForm: { id: "" },
      adviceForm: {
        advice_type: "",
        advice_date: "",
        start_time: "",
        advice_name: "",
        advice_desc: "",
        single_dose: "",
        single_dose_unit: "",
        prescribing_number: "",
        prescribing_number_unit: "",
        delivery_way: "",
        execution_frequency: "",
        advice_doctor: "",
        remark: "",
        parent_id: 0
      },
      nameForm: {
        advice_name: "",
        single_dose: "",
        single_dose_unit: "",
        drug_spec: "",
        drug_spec_unit: "",
        prescribing_number: "",
        prescribing_number_unit: "",
        delivery_way: "",
        execution_frequency: "",
        isEdit: 0,
        index: 0,
        id: 0,
        children: []
      },
      groupForm: {
        advice_type: "",
        advice_date: "",
        start_time: "",
        adviceNames: [],
        advice_doctor: "",
        remark: "",
        parent_id: 0
      },
      stopForm: {
        id: 0,
        stop_time: "",
        stop_reason: ""
      },
      execForm: {
        exec_time: "",
        groupno: ""
      },
      templateRules: {
        id: [{ required: true, message: "请选择医嘱模板" }]
      },
      adviceRules: {
        advice_type: [{ required: true, message: "请选择医嘱类型" }],
        advice_date: [{ required: true, message: "请选择开嘱时间" }],
        start_time: [{ required: true, message: "请选择开始时间" }],
        advice_name: [{ required: true, message: "请填写医嘱内容" }],
        advice_doctor: [{ required: true, message: "请选择开嘱医生" }]
      },
      nameRules: {
        advice_name: [{ required: true, message: "请填写医嘱内容" }]
      },
      groupRules: {
        advice_type: [{ required: true, message: "请选择医嘱类型" }],
        advice_date: [{ required: true, message: "请选择开嘱时间" }],
        start_time: [{ required: true, message: "请选择开始时间" }],
        advice_name: [{ required: true, message: "请填写医嘱内容" }],
        advice_doctor: [{ required: true, message: "请选择开嘱医生" }]
      },
      stopRules: {
        stop_time: [{ required: true, message: "请选择停止时间" }]
      },
      execRules: {
        exec_time: [{ required: true, message: "请选择时间" }]
      },
      listQuery: {
        start_time: "",
        end_time: "",
        advice_type: 0,
        stop_state: "",
        keywords: "",
        id: 0
      },
      lstableData: [],
      cqtableData: [],
      groupSelectRow: null,
      expandRowKeys: [],
      operators: [],
      operatorMaps: {},
      selectedTemp: { id: 0, name: "", org_id: 0, list: [], rows: [] },
      selectedTemplate: [],
      allSelectedTemplate: []
    };
  },
  methods: {
    clickuseradvicecell(row, column, cell, event) {},
    onTranPatient: function(tranPatient) {
      this.currentPatient = tranPatient;
    },
    adviceNameShow({row, column, rowIndex, columnIndex}){
      if(columnIndex==3) {
        return 'advicenamedisplay';
      }else {
        return '';
      }
    },
    submitEditAdvice(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          EditDoctorAdvice(
            this.patientID,
            this.adviceForm.id,
            this.adviceForm
          ).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              return false;
            } else {
              this.$notify({
                title: "成功",
                message: "修改医嘱成功",
                type: "success",
                duration: 2000
              });
              this.dialogFormVisible = false;
              this.resetForm(formName);
              var advice = response.data.data.advice;
              this.adviceTableData[this.currentIndex].drug_spec =
                advice.drug_spec;
              this.adviceTableData[this.currentIndex].drug_spec_unit =
                advice.drug_spec_unit;
              this.adviceTableData[this.currentIndex].start_time =
                advice.start_time;
              this.adviceTableData[this.currentIndex].advice_name =
                advice.advice_name;
              this.adviceTableData[this.currentIndex].advice_desc =
                advice.advice_desc;
              this.adviceTableData[this.currentIndex].single_dose =
                advice.single_dose;
              this.adviceTableData[this.currentIndex].single_dose_unit =
                advice.single_dose_unit;
              this.adviceTableData[this.currentIndex].delivery_way =
                advice.delivery_way;
              this.adviceTableData[this.currentIndex].execution_frequency =
                advice.execution_frequency;
              this.adviceTableData[this.currentIndex].prescribing_number =
                advice.prescribing_number;
              this.adviceTableData[this.currentIndex].prescribing_number_unit =
                advice.prescribing_number_unit;
              this.adviceTableData[this.currentIndex].advice_doctor =
                advice.advice_doctor;
              this.adviceTableData[this.currentIndex].remark = advice.remark;
              this.currentIndex = -1;
              return false;
            }
          });
        }
      });
    },
    submitgroupAdvice(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          var submitForm = {
            advice_type: this.groupForm.advice_type,
            advice_date: this.groupForm.advice_date,
            start_time: this.groupForm.start_time,
            adviceNames: [],
            advice_doctor: this.groupForm.advice_doctor,
            remark: this.groupForm.remark,
            parent_id: this.groupForm.parent_id
          };

          var adviceNames = [];
          for (const index in this.groupForm.adviceNames) {
            adviceNames.unshift(this.groupForm.adviceNames[index]);
          }
          submitForm.adviceNames = adviceNames;
          CreateGroupAdvice(this.patientID, 0, submitForm).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              return false;
            } else {
              this.$notify({
                title: "成功",
                message: "新增成功",
                type: "success",
                duration: 2000
              });

              if (
                this.adviceType == this.groupForm.advice_type ||
                this.adviceType == 0
              ) {
                var childMap = {};
                for (const index in response.data.data.advices) {
                  if (response.data.data.advices[index].parent_id == 0) {
                    continue;
                  }
                  if (
                    false ===
                    response.data.data.advices[index].parent_id in childMap
                  ) {
                    childMap[response.data.data.advices[index].parent_id] = [];
                  }
                  childMap[response.data.data.advices[index].parent_id].unshift(
                    response.data.data.advices[index]
                  );
                }
                var parentArr = [];
                for (const index in response.data.data.advices) {
                  if (response.data.data.advices[index].parent_id > 0) {
                    continue;
                  }
                  parentArr.push(response.data.data.advices[index]);
                }

                for (const index in parentArr) {
                  if (parentArr[index].id in childMap) {
                    for (const j in childMap[parentArr[index].id]) {
                      this.adviceTableData.unshift(
                        childMap[parentArr[index].id][j]
                      );
                    }
                  }
                  this.adviceTableData.unshift(parentArr[index]);
                }
              }

              this.resetForm(formName);
              this.groupFormVisible = false;
              return false;
            }
          });
        }
      });
    },
    submitNewAdvice(formName, action) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          CreateDoctorAdvice(this.patientID, this.adviceForm).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              return false;
            } else {
              this.$notify({
                title: "成功",
                message: "新增医嘱成功",
                type: "success",
                duration: 2000
              });
              if (action != "re") {
                this.dialogFormVisible = false;
              }
              if (
                this.adviceType == this.adviceForm.advice_type ||
                this.adviceType == 0
              ) {
                if (this.adviceForm.parent_id > 0) {
                  var spliceIndex = -1;
                  for (let index = this.adviceTableData.length - 1; ; index--) {
                    if (
                      this.adviceTableData[index].parent_id ===
                      this.adviceForm.parent_id
                    ) {
                      spliceIndex = index;
                      break;
                    } else if (
                      this.adviceTableData[index].id ===
                      this.adviceForm.parent_id
                    ) {
                      spliceIndex = index;
                      break;
                    }
                  }

                  if (spliceIndex > -1) {
                    spliceIndex += 1;
                    if (spliceIndex === this.adviceTableData.length) {
                      this.adviceTableData.push(response.data.data.advice);
                    } else {
                      var swapData = this.adviceTableData.splice(spliceIndex);
                      this.adviceTableData.push(response.data.data.advice);
                      this.adviceTableData = this.adviceTableData.concat(
                        swapData
                      );
                    }
                  }
                } else {
                  this.adviceTableData.unshift(response.data.data.advice);
                }
              }
              this.resetForm(formName);
              this.currentIndex = -1;
              return false;
            }
          });
        }
      });
    },
    submitStopAdvice(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          // StopDoctorAdvice(this.stopForm.id, this.stopForm).then(response=>{
          StopGroupAdvice(this.stopForm.groupno, this.stopForm).then(
            response => {
              if (response.data.state == 0) {
                this.$message.error(response.data.msg);
                return false;
              } else {
                this.$notify({
                  title: "成功",
                  message: "医嘱已经停止",
                  type: "success",
                  duration: 2000
                });
                // this.stopResetData(this.stopForm.id);
                var atlen = this.adviceTableData.length;
                for (let index = atlen - 1; index >= 0; index--) {
                  if (
                    this.adviceTableData[index].groupno == this.stopForm.groupno
                  ) {
                    this.adviceTableData.splice(index, 1);
                  }
                }
                this.dialogStopFormVisible = false;
              }
            }
          );
        }
      });
    },

    submitExecAdvice(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          ExecGroupAdvice(this.execForm.groupno, this.execForm.exec_time).then(
            response => {
              if (response.data.state == 0) {
                this.$message.error(response.data.msg);
                return false;
              } else {
                this.$notify({
                  title: "成功",
                  message: "医嘱已经执行",
                  type: "success",
                  duration: 2000
                });
                var atlen = this.adviceTableData.length;
                for (const index in this.adviceTableData) {
                  if (
                    this.adviceTableData[index].groupno == this.execForm.groupno
                  ) {
                    this.adviceTableData[index].execution_time =
                      response.data.data.advice.execution_time;
                    this.adviceTableData[index].execution_staff =
                      response.data.data.advice.execution_staff;
                    this.adviceTableData[index].execution_state = 1;
                  }
                }
                this.execTimeDialogVisible = false;
              }
            }
          );
        }
      });
    },
    openAdviceTemplate() {
      this.templateForm = { id: "" };
      this.selectedTemp = { id: 0, name: "", org_id: 0, list: [], rows: [] };
      this.selectedTemplate = [];
      if (typeof this.$refs.templatetable != "undefined") {
        this.$refs.templatetable.setCurrentRow(null);
      }
      this.templateFormVisible = true;
    },
    openGroupChild() {
      if (this.groupSelectRow === null) {

        this.$message.error("未选择医嘱内容,无法添加子药")

        return;
      } else if (this.groupSelectRow.parent_row > 0) {

        this.$message.error("子药不能添加子药")

        return;
      }
      this.nameForm = {
        advice_name: "",
        single_dose: "",
        single_dose_unit: "",
        drug_spec: "",
        drug_spec_unit: "",
        prescribing_number: "",
        prescribing_number_unit: "",
        delivery_way: this.groupSelectRow.delivery_way,
        execution_frequency: this.groupSelectRow.execution_frequency,
        isEdit: 0,
        index: 0,
        children: [],
        parent_row: this.groupSelectRow.row_key,
        id: 0
      };
      this.isChild = true;
      this.nameFormVisible = true;
      this.nameFormTitle = "添加子药内容";
    },
    openGroupAdvice(isEdit) {
      this.isChild = false;
      if (isEdit) {
        if (this.groupSelectRow === null) {

          this.$message.error("未选择要修改的医嘱内容")

          return;

        }
        if (this.groupSelectRow.parent_row) {
          this.isChild = true;
        }

        this.nameForm = {
          advice_name: this.groupSelectRow.advice_name,
          advice_desc: this.groupSelectRow.advice_desc,
          single_dose: this.groupSelectRow.single_dose,
          single_dose_unit: this.groupSelectRow.single_dose_unit,
          drug_spec: this.groupSelectRow.drug_spec,
          drug_spec_unit: this.groupSelectRow.drug_spec_unit,
          prescribing_number: this.groupSelectRow.prescribing_number,
          prescribing_number_unit: this.groupSelectRow.prescribing_number_unit,
          delivery_way: this.isChild ? "" : this.groupSelectRow.delivery_way,
          execution_frequency: this.isChild
            ? ""
            : this.groupSelectRow.execution_frequency,
          isEdit: 1,
          index: this.groupSelectRow.index,
          id: this.groupSelectRow.id,
          children: [],
          parent_row: this.groupSelectRow.parent_row
          // row_key:this.groupSelectRow.row_key,
        };
        this.nameFormTitle = "修改医嘱内容";
      } else {
        this.nameForm = {
          advice_name: "",
          advice_desc: "",
          single_dose: "",
          single_dose_unit: "",
          drug_spec: "",
          drug_spec_unit: "",
          prescribing_number: "",
          prescribing_number_unit: "",
          delivery_way: "",
          execution_frequency: "",
          isEdit: 0,
          index: 0,
          id: 0,
          children: [],
          parent_row: 0
        };
        this.nameFormTitle = "添加医嘱内容";
      }
      this.nameFormVisible = true;
    },
    openDeleteGroupAdvice() {
      if (this.groupSelectRow === null) {
        this.$message.error("未选择要删除的医嘱内容")
        return;
      }
      var content = "";
      if (this.groupSelectRow.children.length > 0) {
        content = "确认删除此医嘱内容,包括它的子药？";
      } else {
        content = "确认删除此医嘱内容？";
      }

      var isChild = this.groupSelectRow.parent_row ? true : false;
      var title = isChild ? "删除子药内容" : "删除医嘱内容";
      var msg = isChild ? "确认删除此子药内容？" : content;
      this.$confirm(msg, title, {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          if (isChild) {
            for (const index in this.groupForm.adviceNames) {
              if (
                this.groupForm.adviceNames[index].row_key ==
                this.groupSelectRow.parent_row
              ) {
                for (const j in this.groupForm.adviceNames[index].children) {
                  if (
                    this.groupForm.adviceNames[index].children[j].row_key ==
                    this.groupSelectRow.row_key
                  ) {
                    this.groupForm.adviceNames[index].children.splice(j, 1);
                    this.$set(
                      this.groupForm.adviceNames,
                      index,
                      this.groupForm.adviceNames[index]
                    );
                    this.toggleRowExpansion();
                    break;
                  }
                }
              }
            }
          } else {
            for (const index in this.groupForm.adviceNames) {
              if (
                this.groupForm.adviceNames[index].row_key ==
                this.groupSelectRow.row_key
              ) {
                this.groupForm.adviceNames.splice(index, 1);
                this.toggleRowExpansion();
                break;
              }
            }
          }
        })
        .catch(() => {});
    },
    DeleteGroupAdvice(groupno) {
      this.$confirm("确认删除这组医嘱?", "医嘱删除", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          DeleteGroupAdvice(groupno).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              return false;
            } else {
              this.$notify({
                title: "成功",
                message: "医嘱已经删除",
                type: "success",
                duration: 2000
              });

              var resetTableData = this.adviceTableData;
              this.adviceTableData = [];
              var that = this;
              for (const key in resetTableData) {
                if (resetTableData[key].groupno != groupno) {
                  that.adviceTableData.push(resetTableData[key]);
                }
              }
            }
          });
        })
        .catch(() => {});
    },
    openDelete(index, row) {
      this.$confirm("确认删除此条医嘱?", "医嘱删除", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          DeleteDoctorAdvice(row.id).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              return false;
            } else {
              this.$notify({
                title: "成功",
                message: "医嘱已经删除",
                type: "success",
                duration: 2000
              });
              this.deleteResetData(index, row);
            }
          });
        })
        .catch(() => {});
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    changeTime() {
      this.getList();
    },
    changeKey() {
      this.getList();
    },

    openExec(index, row) {
      if (row.stop_state == 1 || row.execution_state == 1) {
        this.$message.error("所选医嘱已停止或执行");
        return false;
      }

      this.execForm = {
        exec_time: "",
        groupno: row.groupno
      };
      this.execTimeDialogVisible = true;
      this.currentIndex = index;
    },
    openCheck(index, row) {
      if (row.check_state == 1) {
        this.$message.error("所选医嘱已核对");
        return false;
      }
      if (row.execution_state != 1) {
        this.$message.error("所选医嘱未执行，无法核对");
        return false;
      }
      if (
        row.execution_staff > 0 &&
        row.execution_staff == this.$store.getters.xt_user.user.id
      ) {
        this.$message.error("核对与执行不能是同一人");
        return false;
      }

      this.$confirm("确认提交核对?", "医嘱核对", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        closeOnClickModal: false,
        type: "warning"
      })
        .then(() => {
          this.deleLoading = true;
          CheckGroupAdvice(row.groupno).then(response => {
            if (response.data.state == 0) {
              this.$message.error(response.data.msg);
              return false;
            } else {
              this.$notify({
                title: "成功",
                message: "核对成功",
                type: "success",
                duration: 2000
              });

              var atlen = this.adviceTableData.length;
              for (const index in this.adviceTableData) {
                if (this.adviceTableData[index].groupno == row.groupno) {
                  this.adviceTableData[index].checker =
                    response.data.data.advice.checker;
                  this.adviceTableData[index].check_time =
                    response.data.data.advice.check_time;
                  this.adviceTableData[index].check_state = 1;
                }
              }
            }
          });
        })
        .catch(() => {});
    },
    openStop(index, row) {
      if (row.stop_state == 1 || row.execution_state == 1) {
        this.$message.error("所选医嘱已停止！");
        return false;
      }

      this.stopForm = {
        id: row.parent_id > 0 ? row.parent_id : row.id,
        stop_time: "",
        stop_reason: "",
        groupno: row.groupno
      };
      this.currentIndex = index;
      this.dialogStopFormVisible = true;
    },
    openNew() {
      var theDate = new Date();
      var year = theDate.getFullYear();
      var month = theDate.getMonth() + 1;
      var dat = theDate.getDate();
      month = month < 10 ? "0" + month : month;
      dat = dat < 10 ? "0" + dat : dat;
      var adviceDate = year + "-" + month + "-" + dat;
      // this.groupForm.advice_date = adviceDate;
      this.groupForm = {
        advice_type: "",
        advice_date: adviceDate,
        start_time: "",
        adviceNames: [],
        advice_doctor: "",
        remark: "",
        parent_id: 0
      };
      this.rowKey = 0;
      this.groupFormVisible = true;
    },
    openEditGroupAdvice(groupno) {
      var groups = [];
      this.rowKey = 0;
      for (const index in this.adviceTableData) {
        if (groupno == this.adviceTableData[index].groupno) {
          groups.push(this.adviceTableData[index]);
        }
      }
      if (groups.length == 0) {
        return false;
      }
      this.groupForm = {
        advice_type: groups[0].advice_type,
        advice_date: uParseTime(groups[0].advice_date, "{y}-{m}-{d}"),
        start_time: uParseTime(groups[0].start_time, "{y}-{m}-{d} {h}:{i}:{s}"),
        adviceNames: [],
        advice_doctor: "",
        remark: groups[0].remark,
        groupno: groupno
      };

      var childMap = {};
      for (const index in groups) {
        if (groups[index].parent_id == 0) {
          continue;
        }
        if (false === groups[index].parent_id in childMap) {
          childMap[groups[index].parent_id] = [];
        }
        childMap[groups[index].parent_id].push(groups[index]);
      }

      for (const index in groups) {
        if (groups[index].parent_id > 0) {
          continue;
        }
        this.rowKey++;
        var item = {
          advice_name: groups[index].advice_name,
          advice_desc: groups[index].advice_desc,
          single_dose: "" + groups[index].single_dose,
          single_dose_unit: groups[index].single_dose_unit,
          drug_spec: "" + groups[index].drug_spec,
          drug_spec_unit: groups[index].drug_spec_unit,
          prescribing_number: "" + groups[index].prescribing_number,
          prescribing_number_unit: groups[index].prescribing_number_unit,
          delivery_way: groups[index].delivery_way,
          execution_frequency: groups[index].execution_frequency,
          isEdit: 0,
          index: 0,
          id: groups[index].id,
          children: [],
          parent_row: 0,
          row_key: this.rowKey
        };
        if (item.id in childMap) {
          for (const key in childMap[item.id]) {
            this.rowKey++;
            var child = {
              advice_name: childMap[item.id][key].advice_name,
              advice_desc: childMap[item.id][key].advice_desc,
              single_dose: "" + childMap[item.id][key].single_dose,
              single_dose_unit: childMap[item.id][key].single_dose_unit,
              drug_spec: "" + childMap[item.id][key].drug_spec,
              drug_spec_unit: childMap[item.id][key].drug_spec_unit,
              prescribing_number:
                "" + childMap[item.id][key].prescribing_number,
              prescribing_number_unit:
                childMap[item.id][key].prescribing_number_unit,
              delivery_way: childMap[item.id][key].delivery_way,
              execution_frequency: childMap[item.id][key].execution_frequency,
              isEdit: 0,
              index: 0,
              id: childMap[item.id][key].id,
              children: [],
              parent_row: item.row_key,
              row_key: this.rowKey
            };
            item.children.push(child);
          }
          this.$set(item, "children", item.children);
        }
        this.groupForm.adviceNames.push(item);
      }

      this.$refs.editGroupForm.open();
    },

    openEdit(index, row) {
      this.currentIndex = index;
      (this.dialogTitle = "修改医嘱"), (this.isEdit = true);

      if (row.stop_state == 1 || row.execution_state == 1) {
        this.$message.error("所选医嘱已停止,不能修改！");
        return false;
      }
      // if (row.advice_doctor != this.aminuserid) {
      //     this.$message.error("不能修改非本人添加的医嘱！");
      //     return false;
      // }

      this.setAdviceForm(row);
      this.dialogFormVisible = true;
    },
    openNewChild(index, row) {
      this.currentIndex = index;
      this.dialogTitle = "新增子药";
      this.isEdit = false;
      if (row.stop_state == 1 || row.execution_state == 1) {
        this.$message.error("所选医嘱已停止");
        return false;
      }
      this.adviceForm = {
        advice_type: row.advice_type,
        advice_date: uParseTime(row.advice_date, "{y}-{m}-{d}"),
        start_time: uParseTime(row.start_time, "{y}-{m}-{d} {h}:{i}:{s}"),
        advice_name: "",
        advice_desc: "",
        single_dose: "",
        single_dose_unit: "",
        drug_spec: "",
        drug_spec_unit: "",
        prescribing_number: "",
        prescribing_number_unit: "",
        delivery_way: row.delivery_way,
        execution_frequency: row.execution_frequency,
        advice_doctor: row.advice_doctor,
        remark: "",
        parent_id: row.parent_id > 0 ? row.parent_id : row.id
      };
      this.dialogFormVisible = true;
    },
    changeAdviceName(key) {
      if (key in this.adviceTemplateMaps) {
        this.adviceForm.advice_name = this.adviceTemplateMaps[key].advice_name;
        this.adviceForm.advice_desc = this.adviceTemplateMaps[key].advice_desc;
        this.adviceForm.single_dose_unit = this.adviceTemplateMaps[
          key
        ].single_dose_unit;
        this.adviceForm.single_dose =
          this.adviceTemplateMaps[key].single_dose + "";
        this.adviceForm.prescribing_number_unit = this.adviceTemplateMaps[
          key
        ].prescribing_number_unit;
        this.adviceForm.prescribing_number =
          this.adviceTemplateMaps[key].prescribing_number + "";
        this.adviceForm.delivery_way = this.adviceTemplateMaps[
          key
        ].delivery_way;
        this.adviceForm.execution_frequency = this.adviceTemplateMaps[
          key
        ].execution_frequency;
      }
    },
    indexMethod(index) {
      if (index === 0) {
        rowIndex = 1;
      }
      var row = this.adviceTableData[index];
      if (row.parent_id > 0) {
        return "";
      } else if (
        index > 0 &&
        row.groupno > 0 &&
        row.groupno == this.adviceTableData[index - 1].groupno
      ) {
        return "";
      }
      return rowIndex++;
    },
    isShowStartTime(index, row) {
      if (row.parent_id > 0) {
        return false;
      } else if (
        index > 0 &&
        row.groupno > 0 &&
        row.groupno == this.adviceTableData[index - 1].groupno
      ) {
        return false;
      }
      return true;
    },
    isShowCQStartTime(index, row) {
      if (row.parent_id > 0) {
        return false;
      } else if (
        index > 0 &&
        row.groupno > 0 &&
        row.groupno == this.cqtableData[index - 1].groupno
      ) {
        return false;
      }
      return true;
    },
    isShowLSStartTime(index, row) {
      if (row.parent_id > 0) {
        return false;
      } else if (
        index > 0 &&
        row.groupno > 0 &&
        row.groupno == this.lstableData[index - 1].groupno
      ) {
        return false;
      }
      return true;
    },
    selectAdviceType(type) {
      this.adviceType = type;
      this.listQuery.advice_type = type;
      this.getList();
    },
    selectStopType(type) {
      this.stopType = type;
      this.listQuery.stop_state = type;
      this.getList();
    },
    deleteResetData(index, row) {
      if (row.parent_id > 0) {
        this.adviceTableData.splice(index, 1);
      } else {
        var resetTableData = this.adviceTableData;
        this.adviceTableData = [];
        var that = this;
        resetTableData.forEach(function(item, itemindex) {
          if (item.id != row.id && item.parent_id != row.id) {
            that.adviceTableData.push(item);
          }
        });
      }
    },
    stopResetData(id) {
      var resetTableData = this.adviceTableData;
      this.adviceTableData = [];
      var that = this;
      resetTableData.forEach(function(item, index) {
        if (item.id != id && item.parent_id != id) {
          that.adviceTableData.push(item);
        }
      });
    },
    fetchAllDoctorAndNurse() {
      fetchAllDoctorAndNurse().then(response => {
        if (response.data.state == 1) {
          this.doctorOptions = response.data.data.doctors;
        }
      });
    },
    fetchAllAdminUsers() {
      fetchAllAdminUsers().then(response => {
        if (response.data.state == 1) {
          this.adminUserOptions = response.data.data.users;
          var alen = this.adminUserOptions.length;
          for (let index = 0; index < alen; index++) {
            if (this.adminUserOptions[index].user_type == 2) {
              this.doctorOptions.push(this.adminUserOptions[index]);
            }
          }
        }
      });
    },

    getAdviceConfig() {
      getAdviceConfig().then(response => {
        if (response.data.state == 1) {
          this.deliveryWayOptions =
            response.data.data.drugways === null
              ? []
              : response.data.data.drugways;
          this.executionFrequencyOptions =
            response.data.data.efs === null ? [] : response.data.data.efs;
          this.adviceTemplates =
            response.data.data.advice_templates === null
              ? []
              : response.data.data.advice_templates;

          var templateLen = this.adviceTemplates.length;
          for (let index = 0; index < templateLen; index++) {
            if (!this.adviceTemplates[index].DoctorAdviceTemplate) {
              continue;
            }

            var DoctorAdviceTemplate = this.adviceTemplates[index]
              .DoctorAdviceTemplate;
            for (let i = 0; i < DoctorAdviceTemplate.length; i++) {
              DoctorAdviceTemplate[i].selection = false;
            }

            var item = this.adviceTemplates[index];
            item.DoctorAdviceTemplate = [];
            var datMap = {};
            for (const key in DoctorAdviceTemplate) {
              if (DoctorAdviceTemplate[key].parent_id == 0) {
                datMap[DoctorAdviceTemplate[key].id] =
                  DoctorAdviceTemplate[key];
              }
            }

            for (const key in DoctorAdviceTemplate) {
              if (DoctorAdviceTemplate[key].parent_id in datMap) {
                if ("children" in datMap[DoctorAdviceTemplate[key].parent_id]) {
                  datMap[DoctorAdviceTemplate[key].parent_id].children.push(
                    DoctorAdviceTemplate[key]
                  );
                } else {
                  datMap[DoctorAdviceTemplate[key].parent_id].children = [];
                  datMap[DoctorAdviceTemplate[key].parent_id].children.push(
                    DoctorAdviceTemplate[key]
                  );
                }
              }
            }
            for (const key in datMap) {
              item.DoctorAdviceTemplate.push(datMap[key]);
            }

            this.$set(
              this.adviceTemplateMaps,
              this.adviceTemplates[index].id,
              item
            );
          }
        }
      });
    },
    getDoctorName(doctorid) {
      if (doctorid <= 0) {
        return "";
      }
      var name = "";
      if (
        this.doctorOptions == null ||
        typeof this.doctorOptions.length == "undefined"
      ) {
        return name;
      }
      var leng = this.doctorOptions.length;
      if (leng == 0) {
        return name;
      }
      for (let index = 0; index < leng; index++) {
        if (this.doctorOptions[index].id == doctorid) {
          name = this.doctorOptions[index].name;
          break;
        }
      }
      return name;
    },
    getXuserName(id) {
      if (id <= 0) {
        return "";
      }
      var name = "";
      if (
        this.adminUserOptions == null ||
        typeof this.adminUserOptions.length == "undefined"
      ) {
        return name;
      }
      var leng = this.adminUserOptions.length;
      if (leng == 0) {
        return name;
      }
      for (let index = 0; index < leng; index++) {
        if (this.adminUserOptions[index].id == id) {
          name = this.adminUserOptions[index].name;
          break;
        }
      }
      return name;
    },
    setAdviceForm(row) {
      this.adviceForm = {
        advice_type: row.advice_type,
        advice_date: uParseTime(row.advice_date, "{y}-{m}-{d}"),
        start_time: uParseTime(row.start_time, "{y}-{m}-{d} {h}:{i}:{s}"),
        advice_name: row.advice_name,
        advice_desc: row.advice_desc,
        drug_spec: row.drug_spec != 0 ? row.drug_spec : "",
        drug_spec_unit: row.drug_spec_unit,
        single_dose: row.single_dose != 0 ? row.single_dose : "",
        single_dose_unit: row.single_dose_unit,
        prescribing_number:
          row.prescribing_number != 0 ? row.prescribing_number : "",
        prescribing_number_unit: row.prescribing_number_unit,
        delivery_way: row.delivery_way,
        execution_frequency: row.execution_frequency,
        advice_doctor: row.advice_doctor,
        remark: row.remark,
        id: row.id,
        parent_id: row.parent_id
      };
    },
    getList() {
      getDoctorAdviceList(this.listQuery).then(response => {
        if (response.data.state == 1) {
          this.adviceTableData = response.data.data.advices;
          this.operators = response.data.data.operators;
          if (this.operators.length > 0) {
            var operatorsLen = this.operators.length;
            for (var index = 0; index < operatorsLen; index++) {
              this.$set(
                this.operatorMaps,
                this.operators[index].creator,
                this.operators[index]
              );
            }
          }
        } else {
          this.adviceTableData = [];
        }

        this.handleSpanTempArr();
      });
    },
    changeAdvice(selection) {
      if (this.adviceType == 3) {
        this.lstableData = selection;
      } else if (this.adviceType == 1) {
        this.cqtableData = selection;
      }
    },
    groupClassName({ row, rowIndex }) {
      row.index = rowIndex;
      // row.row_key = rowIndex+1;
    },
    getRowKey(row) {
      return row.row_key;
    },
    getMaxRowKey() {
      return this.rowKey;
    },
    selectGroupAdvice(row) {
      this.groupSelectRow = row;
    },
    selectAdvice(selection, row) {
      if (this.adviceType != 3) {
        this.lstableData = [];
      } else if (this.adviceType != 1) {
        this.cqtableData = [];
      }
      this.$refs.multipleTable.toggleRowSelection(row);
      var dlen = this.adviceTableData.length;
      if (row.parent_id > 0) {
        for (let index = 0; index < dlen; index++) {
          if (
            this.adviceTableData[index].id == row.parent_id ||
            this.adviceTableData[index].parent_id == row.parent_id
          ) {
            this.$refs.multipleTable.toggleRowSelection(
              this.adviceTableData[index]
            );
          }
        }
      } else {
        for (let index = 0; index < dlen; index++) {
          if (
            this.adviceTableData[index].parent_id == row.id ||
            this.adviceTableData[index].id == row.id ||
            this.adviceTableData[index].groupno == row.groupno
          ) {
            this.$refs.multipleTable.toggleRowSelection(
              this.adviceTableData[index]
            );
          }
        }
      }
    },
    printThisInfo() {
      if (this.adviceType == 1) {
        if (this.cqtableData.length == 0) {
          this.$message.error("请勾选需要打印的医嘱!");
          return false;
        }
        const style =
          "@media print {.printForm{width:960px}  .printForm .hospital_title{font-size:20px;font-weight:400;text-align:center;letter-spacing:5px}.printForm .title{font-size:30px;font-weight:500;text-align:center}.printForm .title{font-size:30px;font-weight:500;text-align:center}.printForm .info ul{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;align-items:center;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-justify-content:space-around;-moz-justify-content:space-around;-ms-justify-content:space-around;-o-justify-content:space-around;justify-content:space-around}.printForm .info ul li{display:flex;box-sizing:border-box;justify-content:space-around}.printForm .info ul li .InputBox{padding:0;border:0;border-bottom:1px #e5e5e5 solid;outline:0;width: 80px;}.printForm .printTable tr{padding:2px}.printForm .printTable tr>th{padding:6px 4px}.printForm .printTable tr>td{padding:6px 4px} .es-img {height: 25px;}";

        setTimeout(() => {
          printJS({
            printable: "printCQadvice",
            type: "html",
            style: style,
            scanStyles: false
          });
        }, 1);
      } else if (this.adviceType == 3) {
        if (this.lstableData.length == 0) {
          this.$message.error("请勾选需要打印的医嘱!");
          return false;
        }
        const style =
          "@media print {.printForm{width:960px} .printForm .hospital_title{font-size:20px;font-weight:400;text-align:center;letter-spacing:5px}.printForm .title{font-size:30px;font-weight:500;text-align:center}.printForm .title{font-size:30px;font-weight:500;text-align:center}.printForm .info ul{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;align-items:center;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-justify-content:space-around;-moz-justify-content:space-around;-ms-justify-content:space-around;-o-justify-content:space-around;justify-content:space-around}.printForm .info ul li{display:flex;box-sizing:border-box;justify-content:space-around}.printForm .info ul li .InputBox{padding:0;border:0;border-bottom:1px #e5e5e5 solid;outline:0;width: 80px;}.printForm .printTable tr{padding:2px}.printForm .printTable tr>th{padding:6px 4px}.printForm .printTable tr>td{padding:6px 4px} .es-img {height: 25px;}";

        setTimeout(() => {
          printJS({
            printable: "printLSadvice",
            type: "html",
            style: style,
            scanStyles: false
          });
        }, 1);
      } else {
        this.$message.error(
          "请先将医嘱类型切换到长期或临时，将勾选需要打印的医嘱!"
        );
        return false;
      }
    },
    cellClassName({ row, column, rowIndex, columnIndex }) {
      return "ls-table-row";
    },
    tranAge(birthday) {
      var birth = uParseTime(birthday, "{y}-{m}-{d}");
      return jsGetAge(birth, "-");
    },
    changeTemplateAdvice(selection) {
      this.selectedTemplate = selection;
    },
    selectAllTemplateAdvice(selection) {
      var adviceArray = this.adviceTemplateMaps[this.selectedTemp.id]
        .DoctorAdviceTemplate;
      for (let y = 0; y < adviceArray.length; y++) {
        adviceArray[y].selection = false;
      }
      if (selection.length > 0) {
        for (let y = 0; y < adviceArray.length; y++) {
          for (let i = 0; i < selection.length; i++) {
            if (adviceArray[y].id == selection[i].advice_id) {
              adviceArray[y].selection = true;
            }
          }
        }
      }
    },
    selectTemplateAdvice(selection, row) {
      var adviceArray = this.adviceTemplateMaps[this.selectedTemp.id]
        .DoctorAdviceTemplate;
      for (let y = 0; y < adviceArray.length; y++) {
        adviceArray[y].selection = false;
      }
      if (selection.length > 0) {
        for (let y = 0; y < adviceArray.length; y++) {
          for (let i = 0; i < selection.length; i++) {
            if (adviceArray[y].id == selection[i].advice_id) {
              adviceArray[y].selection = true;
            }
          }
        }
      }

      if (row.children.length > 0) {
        for (const index in row.children) {
          this.$refs.selecttemplatetable.toggleRowSelection(
            row.children[index]
          );
        }
      }

      //下面两步的作用是为了上选中的数据的输出顺序不变
      for (const index in this.selectedTemp.list) {
        this.$refs.selecttemplatetable.toggleRowSelection(
          this.selectedTemp.list[index]
        );
        if (this.selectedTemp.list[index].children.length > 0) {
          for (const j in this.selectedTemp.list[index].children) {
            this.$refs.selecttemplatetable.toggleRowSelection(
              this.selectedTemp.list[index].children[j]
            );
          }
        }
      }

      for (const index in this.selectedTemp.list) {
        this.$refs.selecttemplatetable.toggleRowSelection(
          this.selectedTemp.list[index]
        );
        if (this.selectedTemp.list[index].children.length > 0) {
          for (const j in this.selectedTemp.list[index].children) {
            this.$refs.selecttemplatetable.toggleRowSelection(
              this.selectedTemp.list[index].children[j]
            );
          }
        }
      }
    },
    spanselecttable({ row, column, rowIndex, columnIndex }) {
      if (columnIndex == 0) {
        const _row = this.selectedTemp.rows[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        };
      }
    },
    calcselectedTemp() {
      var rowKeys = 0;
      for (const index in this.selectedTemp.list) {
        var pkey = rowKeys;
        this.selectedTemp.rows[rowKeys] = 1;
        if (this.selectedTemp.list[index].children.length > 0) {
          for (const childindex in this.selectedTemp.list[index].children) {
            rowKeys++;
            this.selectedTemp.rows[pkey] += 1;
            this.selectedTemp.rows[rowKeys] = 0;
          }
        }
        rowKeys++;
        this.$nextTick(function() {
          if (this.selectedTemp.list[index].selection) {
            this.$refs.selecttemplatetable.toggleRowSelection(
              this.selectedTemp.list[index]
            );
          }
        });
      }
    },
    templateTableChange(currentRow, oldCurrentRow) {
      this.selectedTemp = { id: 0, name: "", org_id: 0, list: [], rows: [] };
      if (currentRow == null) {
        return false;
      }

      this.selectedTemp.id = currentRow.id;
      this.selectedTemp.name = currentRow.name;
      this.selectedTemp.org_id = currentRow.org_id;
      if (this.selectedTemp.id in this.adviceTemplateMaps) {
        var mapid = this.selectedTemp.id;
        var thisRowKey = 0;
        for (const index in this.adviceTemplateMaps[mapid]
          .DoctorAdviceTemplate) {
          thisRowKey++;
          var item = {
            advice_name: this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].advice_name,
            advice_desc: this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].advice_desc,
            single_dose:
              "" +
              this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                .single_dose,
            single_dose_unit: this.adviceTemplateMaps[mapid]
              .DoctorAdviceTemplate[index].single_dose_unit,
            drug_spec:
              "" +
              this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                .drug_spec,
            drug_spec_unit: this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].drug_spec_unit,
            prescribing_number:
              "" +
              this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                .prescribing_number,
            prescribing_number_unit: this.adviceTemplateMaps[mapid]
              .DoctorAdviceTemplate[index].prescribing_number_unit,
            delivery_way: this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].delivery_way,
            execution_frequency: this.adviceTemplateMaps[mapid]
              .DoctorAdviceTemplate[index].execution_frequency,
            advice_id: this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].id,
            selection: this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].selection,
            isEdit: 0,
            id: 0,
            children: [],
            parent_row: 0,
            row_key: thisRowKey
          };
          if (
            "children" in
              this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index] &&
            this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index].children
              .length > 0
          ) {
            var parentRow = thisRowKey;
            var children = this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[
              index
            ].children;
            for (const key in children) {
              thisRowKey++;
              var child = {
                advice_id: children[key].id,
                advice_name: children[key].advice_name,
                advice_desc: children[key].advice_desc,
                single_dose: "" + children[key].single_dose,
                single_dose_unit: children[key].single_dose_unit,
                drug_spec: "" + children[key].drug_spec,
                drug_spec_unit: children[key].drug_spec_unit,
                prescribing_number: "" + children[key].prescribing_number,
                prescribing_number_unit: children[key].prescribing_number_unit,
                delivery_way: children[key].delivery_way,
                execution_frequency: children[key].execution_frequency,
                isEdit: 0,
                id: 0,
                children: [],
                parent_row: parentRow,
                row_key: thisRowKey
              };
              item.children.push(child);
            }
            this.$set(item, "children", item.children);
          }

          this.selectedTemp.list.unshift(item);
        }
      }
    },
    newAddTempForm() {
      this.allSelectedTemplate = [];
      var thisRowKey = 0;
      for (const indexs in this.adviceTemplateMaps) {
        let adviceTemplate = this.adviceTemplateMaps[indexs];
        for (const index in adviceTemplate.DoctorAdviceTemplate) {
          if (adviceTemplate.DoctorAdviceTemplate[index].selection) {
            thisRowKey++;
            var item = {
              advice_name:
                adviceTemplate.DoctorAdviceTemplate[index].advice_name,
              advice_desc:
                adviceTemplate.DoctorAdviceTemplate[index].advice_desc,
              single_dose:
                "" + adviceTemplate.DoctorAdviceTemplate[index].single_dose,
              single_dose_unit:
                adviceTemplate.DoctorAdviceTemplate[index].single_dose_unit,
              drug_spec:
                "" + adviceTemplate.DoctorAdviceTemplate[index].drug_spec,
              drug_spec_unit:
                adviceTemplate.DoctorAdviceTemplate[index].drug_spec_unit,
              prescribing_number:
                "" +
                adviceTemplate.DoctorAdviceTemplate[index].prescribing_number,
              prescribing_number_unit:
                adviceTemplate.DoctorAdviceTemplate[index]
                  .prescribing_number_unit,
              delivery_way:
                adviceTemplate.DoctorAdviceTemplate[index].delivery_way,
              execution_frequency:
                adviceTemplate.DoctorAdviceTemplate[index].execution_frequency,
              advice_id: adviceTemplate.DoctorAdviceTemplate[index].id,
              selection: adviceTemplate.DoctorAdviceTemplate[index].selection,
              isEdit: 0,
              id: 0,
              children: [],
              parent_row: 0,
              row_key: thisRowKey
            };
            if (
              "children" in adviceTemplate.DoctorAdviceTemplate[index] &&
              adviceTemplate.DoctorAdviceTemplate[index].children.length > 0
            ) {
              var parentRow = thisRowKey;
              var children =
                adviceTemplate.DoctorAdviceTemplate[index].children;
              for (const key in children) {
                thisRowKey++;
                var child = {
                  advice_id: children[key].id,
                  advice_name: children[key].advice_name,
                  advice_desc: children[key].advice_desc,
                  single_dose: "" + children[key].single_dose,
                  single_dose_unit: children[key].single_dose_unit,
                  drug_spec: "" + children[key].drug_spec,
                  drug_spec_unit: children[key].drug_spec_unit,
                  prescribing_number: "" + children[key].prescribing_number,
                  prescribing_number_unit:
                    children[key].prescribing_number_unit,
                  delivery_way: children[key].delivery_way,
                  execution_frequency: children[key].execution_frequency,
                  isEdit: 0,
                  id: 0,
                  children: [],
                  parent_row: parentRow,
                  row_key: thisRowKey
                };
                item.children.push(child);
                this.allSelectedTemplate.unshift(child);
              }
              this.$set(item, "children", item.children);
            }
            this.allSelectedTemplate.unshift(item);
            adviceTemplate.DoctorAdviceTemplate[index].selection = false;
          }
        }
      }

      var childMap = {};
      for (const index in this.allSelectedTemplate) {
        if (this.allSelectedTemplate[index].parent_row > 0) {
          if (!(this.allSelectedTemplate[index].parent_row in childMap)) {
            childMap[this.allSelectedTemplate[index].parent_row] = [];
          }
          childMap[this.allSelectedTemplate[index].parent_row].push(
            this.allSelectedTemplate[index]
          );
        }
      }

      for (const index in this.allSelectedTemplate) {
        if (this.allSelectedTemplate[index].parent_row > 0) {
          continue;
        }
        this.rowKey++;
        var item = {
          advice_name: this.allSelectedTemplate[index].advice_name,
          advice_desc: this.allSelectedTemplate[index].advice_desc,
          single_dose: "" + this.allSelectedTemplate[index].single_dose,
          single_dose_unit: this.allSelectedTemplate[index].single_dose_unit,
          drug_spec: "" + this.allSelectedTemplate[index].drug_spec,
          drug_spec_unit: this.allSelectedTemplate[index].drug_spec_unit,
          prescribing_number:
            "" + this.allSelectedTemplate[index].prescribing_number,
          prescribing_number_unit: this.allSelectedTemplate[index]
            .prescribing_number_unit,
          delivery_way: this.allSelectedTemplate[index].delivery_way,
          execution_frequency: this.allSelectedTemplate[index]
            .execution_frequency,
          isEdit: 0,
          id: 0,
          children: [],
          parent_row: 0,
          row_key: this.rowKey
        };

        if (this.allSelectedTemplate[index].children.length > 0) {
          if (this.allSelectedTemplate[index].row_key in childMap) {
            var parentRow = this.rowKey;
            var children = childMap[this.allSelectedTemplate[index].row_key];
            for (const key in children) {
              this.rowKey++;
              var child = {
                advice_name: children[key].advice_name,
                advice_desc: children[key].advice_desc,
                single_dose: "" + children[key].single_dose,
                single_dose_unit: children[key].single_dose_unit,
                drug_spec: "" + children[key].drug_spec,
                drug_spec_unit: children[key].drug_spec_unit,
                prescribing_number: "" + children[key].prescribing_number,
                prescribing_number_unit: children[key].prescribing_number_unit,
                delivery_way: children[key].delivery_way,
                execution_frequency: children[key].execution_frequency,
                isEdit: 0,
                id: 0,
                children: [],
                parent_row: parentRow,
                row_key: this.rowKey
              };
              item.children.push(child);
            }
            this.$set(item, "children", item.children);
          }
        }
        this.groupForm.adviceNames.push(item);
      }
      this.templateFormVisible = false;
      //清除数据源的选中记录
    },
    addTempForm(formName) {
      var _this = this;
      this.$refs[formName].validate(valid => {
        if (valid) {
          if (_this.templateForm.id in _this.adviceTemplateMaps) {
            var mapid = _this.templateForm.id;
            for (const index in _this.adviceTemplateMaps[mapid]
              .DoctorAdviceTemplate) {
              this.rowKey++;
              var item = {
                advice_name:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .advice_name,
                advice_desc:
                  "" +
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .advice_desc,
                single_dose:
                  "" +
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .single_dose,
                single_dose_unit:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .single_dose_unit,
                drug_spec:
                  "" +
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .drug_spec,
                drug_spec_unit:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .drug_spec_unit,
                prescribing_number:
                  "" +
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .prescribing_number,
                prescribing_number_unit:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .prescribing_number_unit,
                delivery_way:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .delivery_way,
                execution_frequency:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .execution_frequency,
                parent_id:
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .parent_id,
                isEdit: 0,
                id: 0,
                children: [],
                parent_row: 0,
                row_key: this.rowKey
              };
              if (
                "children" in
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index] &&
                _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                  .children
              ) {
                var parentRow = this.rowKey;
                var children =
                  _this.adviceTemplateMaps[mapid].DoctorAdviceTemplate[index]
                    .children;
                for (const key in children) {
                  this.rowKey++;
                  var child = {
                    advice_name: children[key].advice_name,
                    advice_desc: children[key].advice_desc,
                    single_dose: "" + children[key].single_dose,
                    single_dose_unit: children[key].single_dose_unit,
                    drug_spec: "" + children[key].drug_spec,
                    drug_spec_unit: children[key].drug_spec_unit,
                    prescribing_number: "" + children[key].prescribing_number,
                    prescribing_number_unit:
                      children[key].prescribing_number_unit,
                    delivery_way: children[key].delivery_way,
                    execution_frequency: children[key].execution_frequency,
                    isEdit: 0,
                    id: 0,
                    children: [],
                    parent_row: parentRow,
                    row_key: this.rowKey
                  };
                  item.children.push(child);
                }
                _this.$set(item, "children", item.children);
              }

              _this.groupForm.adviceNames.unshift(item);

              // _this.groupForm.adviceNames.unshift(item);

              _this.toggleRowExpansion();
            }
          }
          _this.templateFormVisible = false;
        }
      });
    },
    submitNameForm(formName) {
      var _this = this;
      this.$refs[formName].validate(valid => {
        if (valid) {
          if (_this.nameForm.isEdit) {
            var ale = _this.groupForm.adviceNames.length;
            if (_this.isChild) {
              for (let index = 0; index < ale; index++) {
                if (
                  _this.groupSelectRow.parent_row ==
                  _this.groupForm.adviceNames[index].row_key
                ) {
                  var cle = _this.groupForm.adviceNames[index].children.length;
                  var children = _this.groupForm.adviceNames[index].children;
                  for (let j = 0; j < ale; j++) {
                    if (_this.groupSelectRow.row_key == children[j].row_key) {
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].advice_name =
                        _this.nameForm.advice_name;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].advice_desc =
                        _this.nameForm.advice_desc;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].single_dose =
                        "" + _this.nameForm.single_dose;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].single_dose_unit =
                        _this.nameForm.single_dose_unit;
                      _this.groupForm.adviceNames[index].children[j].drug_spec =
                        "" + _this.nameForm.drug_spec;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].drug_spec_unit =
                        _this.nameForm.drug_spec_unit;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].prescribing_number =
                        "" + _this.nameForm.prescribing_number;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].prescribing_number_unit =
                        _this.nameForm.prescribing_number_unit;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].delivery_way =
                        _this.nameForm.delivery_way;
                      _this.groupForm.adviceNames[index].children[
                        j
                      ].execution_frequency =
                        _this.nameForm.execution_frequency;

                      _this.$set(
                        _this.groupForm.adviceNames[index].children,
                        j,
                        _this.groupForm.adviceNames[index].children[j]
                      );
                      _this.toggleRowExpansion();
                      break;
                    }
                  }
                }
              }
            } else {
              for (let index = 0; index < ale; index++) {
                if (
                  _this.groupSelectRow.row_key ==
                  _this.groupForm.adviceNames[index].row_key
                ) {
                  _this.groupForm.adviceNames[index].advice_name =
                    _this.nameForm.advice_name;
                  _this.groupForm.adviceNames[index].advice_desc =
                    _this.nameForm.advice_desc;
                  _this.groupForm.adviceNames[index].single_dose =
                    "" + _this.nameForm.single_dose;
                  _this.groupForm.adviceNames[index].single_dose_unit =
                    _this.nameForm.single_dose_unit;
                  _this.groupForm.adviceNames[index].drug_spec =
                    "" + _this.nameForm.drug_spec;
                  _this.groupForm.adviceNames[index].drug_spec_unit =
                    _this.nameForm.drug_spec_unit;
                  _this.groupForm.adviceNames[index].prescribing_number =
                    "" + _this.nameForm.prescribing_number;
                  _this.groupForm.adviceNames[index].prescribing_number_unit =
                    _this.nameForm.prescribing_number_unit;
                  _this.groupForm.adviceNames[index].delivery_way =
                    _this.nameForm.delivery_way;
                  _this.groupForm.adviceNames[index].execution_frequency =
                    _this.nameForm.execution_frequency;

                  _this.$set(
                    _this.groupForm.adviceNames,
                    index,
                    _this.groupForm.adviceNames[index]
                  );
                  _this.toggleRowExpansion();
                  break;
                }
              }
            }
          } else {
            if (_this.isChild) {
              _this.rowKey++;
              _this.nameForm.row_key = _this.rowKey;

              var ale = _this.groupForm.adviceNames.length;
              for (let index = 0; index < ale; index++) {
                if (
                  _this.nameForm.parent_row ==
                  _this.groupForm.adviceNames[index].row_key
                ) {
                  _this.groupForm.adviceNames[index].children.push(
                    _this.nameForm
                  );
                  _this.$set(
                    _this.groupForm.adviceNames,
                    index,
                    _this.groupForm.adviceNames[index]
                  );
                  // _this.$refs.advicenametable.doLayout();

                  _this.toggleRowExpansion();
                  break;
                }
              }
            } else {
              _this.rowKey++;
              _this.nameForm.row_key = _this.rowKey;
              _this.groupForm.adviceNames.push(_this.nameForm);
              _this.toggleRowExpansion();
            }
          }
          _this.nameFormVisible = false;
        }
      });
    },

    setAdminUserES(id) {
      if (id == 0) {
        return "";
      }
      if (id in this.operatorMaps) {
        return this.operatorMaps[id].url;
      } else {
        return "";
      }
    },
    tranSex(gender) {
      var sex = "未知";
      switch (gender) {
        case 1:
          sex = "男";
          break;
        case 2:
          sex = "女";
          break;
        default:
          break;
      }
      return sex;
    },
    load(tree, treeNode, resolve) {},
    toggleRowExpansion() {
      for (const index in this.groupForm.adviceNames) {
        this.$refs.advicenametable.toggleRowExpansion(
          this.groupForm.adviceNames[index],
          true
        );
      }
    },
    handleSpanTempArr() {
      this.tempArr = [];

      for (let i = 0; i < this.adviceTableData.length; i++) {
        if (i === 0) {
          this.tempArr.push(1);
          this.pos = 0;
        } else {
          // 判断当前元素与上一个元素是否相同
          if (
            this.adviceTableData[i].groupno ===
            this.adviceTableData[i - 1].groupno
          ) {
            this.tempArr[this.pos] += 1;
            this.tempArr.push(0);
          } else {
            this.tempArr.push(1);
            this.pos = i;
          }
        }
      }

      // let sameRowArr = [], sIdx = 0;
      // this.adviceTemplates.forEach((item, index) => {
      //   item.index = index
      //   if (index === 0) {
      //     sameRowArr.push([index])
      //   } else {
      //     if (item.template_id === this.adviceTemplates[index - 1].template_id) {
      //       sameRowArr[sIdx].push(index)
      //     } else {
      //       sIdx = sIdx + 1;
      //       sameRowArr.push([index])
      //     }
      //   }
      // })
      // this.sameRowArr = sameRowArr;
    },
    mergeSpan({ row, column, rowIndex, columnIndex }) {
      if (
        columnIndex === 0 ||
        columnIndex === 1 ||
        columnIndex === 2 ||
        columnIndex >= 9
      ) {
        const _row = this.tempArr[rowIndex];
        const _col = _row > 0 ? 1 : 0;
        return {
          rowspan: _row,
          colspan: _col
        };
      }
    },
    cancleDialog() {
      this.templateFormVisible = false;

      for (const indexs in this.adviceTemplateMaps) {
        let adviceTemplate = this.adviceTemplateMaps[indexs];
        for (const index in adviceTemplate.DoctorAdviceTemplate) {
          adviceTemplate.DoctorAdviceTemplate[index].selection = false;
        }
      }
    }
  },
  watch: {
    adviceTableData: function() {
      this.handleSpanTempArr();
    },
    "selectedTemp.list": function() {
      this.calcselectedTemp();
    }
  },
  components: {
    PatientSidebar,
    EditGroupAdvice
  },
  created() {
    const id = this.$route.params && this.$route.params.id;
    this.patientID = parseInt(id);
    if (isNaN(this.patientID) || this.patientID <= 0) {
      this.$notify.error({
        title: "错误",
        message: "无效的id"
      });
      this.$router.push("/patients/patients");
    }
    this.listQuery.id = this.patientID;

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

    this.listQuery.end_time =
      nowYear +
      "-" +
      (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
      "-" +
      (nowDay < 10 ? "0" + nowDay : nowDay);

    nowDate.setMonth(nowDate.getMonth() - 1);
    nowYear = nowDate.getFullYear();
    nowMonth = nowDate.getMonth() + 1;
    nowDay = nowDate.getDate();

    this.listQuery.start_time =
      nowYear +
      "-" +
      (nowMonth < 10 ? "0" + nowMonth : nowMonth) +
      "-" +
      (nowDay < 10 ? "0" + nowDay : nowDay);

    // this.fetchAllDoctorAndNurse();
    this.fetchAllAdminUsers();
    this.getAdviceConfig();
    this.getList();

    var xtuser = this.$store.getters.xt_user;
    this.orgname = xtuser.org.org_name;
    this.adminusername = xtuser.user.user_name;
    this.aminuserid = xtuser.user.id;
    this.unitsOption = getDataConfig("hemodialysis", "units");
  }
};
</script>


<style rel="stylesheet/scss" lang="scss" scoped>

.printForm {
  width: 960px;
}
.printForm .hospital_title {
  font-size: 20px;
  font-weight: 400;
  text-align: center;
  letter-spacing: 5px;
}
.printForm .title {
  font-size: 30px;
  font-weight: 500;
  text-align: center;
}

.printForm .title {
  font-size: 30px;
  font-weight: 500;
  text-align: center;
}

.printForm .info ul {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  align-items: center;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -o-box-sizing: border-box;
  -ms-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-justify-content: space-around;
  -moz-justify-content: space-around;
  -ms-justify-content: space-around;
  -o-justify-content: space-around;
  justify-content: space-around;
}
.printForm .info ul li {
  display: flex;
  box-sizing: border-box;
  justify-content: space-around;
}
.printForm .info ul li .InputBox {
  padding: 0;
  border: none;
  border-bottom: 1px #e5e5e5 solid;
  outline: none;
  width: 80px;
}
.printForm .printTable tr {
  padding: 2px;
}
.printForm .printTable tr > th {
  padding: 6px 4px;
}
.printForm .printTable tr > td {
  padding: 6px 4px;
}

.es-img {
  height: 25px;
}

.advice-container {
  font-size: 15px;
  .filter-container {
    padding-bottom: 5px;
  }
  .search-component {
    width: 500px;
    .searchBox {
      width: 300px;
      height: 36px;
      line-height: 36px;
      padding-left: 15px;
      border: 1px #dcdfe6 solid;
      border-right: none;
      outline: none;
      float: left;
      border-radius: 6px 0 0 6px;
      font-size: 14px;
      color: #333;
      background: #fff;
      box-shadow: 3px 3px 4px rgba(135, 135, 135, 0.05);
    }
    .searchBtn {
      background-color: #409eff;
      color: #fff;
      font-size: 15px;
      text-align: center;
      height: 36px;
      line-height: 36px;
      float: left;
      outline: none;
      width: 70px;
      border: none;
      border-radius: 0 6px 6px 0;
      font-family: "Microsoft Yahei";
      cursor: pointer;
    }
  }
  .amount {
    font-weight: normal;
    padding: 10px 0 0 0;
    color: #606266;
    font-size: 14px;
    span {
      color: #ef2525;
      font-family: "Arial";
      padding: 0 2px;
    }
  }
  .el-dropdown-link {
    cursor: pointer;
  }
}

.advice-order .ls-title {
  text-align: center;
  font-weight: 600;
  font-size: 30px;
  line-height: 80px;
  margin-bottom: 20px;
}
.advice-order .ls-type {
  text-align: center;
  margin-bottom: 20px;
}
.advice-order .ls-name {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 30px 2em;
}
</style>
<style>
.advice-order .el-table__body {
  border: 1px solid #333;
}
.advice-order .el-table__body td {
  border: 1px solid #333;
}
.advice-order .item-value {
  flex: 1;
  border-bottom: 1px solid #333;
}
.advice-order th,
.advice-order td {
  padding: 5px 10px;
}
#user-advice-name-table .expanded {
  display: table-row !important;
}
#user-advice-name-table .el-table__expand-icon {
  -webkit-transform: rotate(90deg) !important;
  transform: rotate(90deg) !important;
}

.user-advice-table-row:hover > td {
  background: #fff !important;
}
.user-advice-table-row td:hover {
  background: #fff !important;
}
#user-advice-select-template-table .el-table__row {
  display: table-row !important;
}
#user-advice-select-template-table .el-table__expand-icon {
  -webkit-transform: rotate(90deg) !important;
  transform: rotate(90deg) !important;
}
.advicenamedisplay .cell {
    float: left;
    text-align: left;
}
</style>

