<template>
  <el-container>
    <el-header height="50px">
      <el-tag effect="dark">患者姓名: {{ patient.name }}</el-tag>
      <el-tag effect="dark">住院号: {{ patient.inpatientNo }}</el-tag>
      <el-tag effect="dark">床号: {{ patient.bedNo }}</el-tag>
      <el-tag effect="dark">住院次数: {{ patient.admissTimes }}</el-tag>
      <el-tag effect="dark">性别: {{ cptSex(patient.sex) }}</el-tag>
      住院号： <el-input v-model="inpatientNo" size="mini" style="width: 100px" clearable placeholder="住院号"></el-input>
      <el-button size="mini" type="primary" icon="el-icon-search" @click="chaXunHuanZheXinXi">查询患者信息</el-button>
      <el-button size="mini" type="warning" style="margin-left: 20px" icon="el-icon-close" @click="guanBiDialog">关闭</el-button>
    </el-header>
    <el-container>
      <el-main>
        <el-tabs v-model="xmlrTabs" style="margin-top: 11px">
          <el-tab-pane label="已录入项目" name="ylrxm">
            项目名称：<el-select
              v-model="patient.chargeCode"
              size="mini"
              remote
              filterable
              clearable
              @blur="patient.chargeCode = $event.target.value.trim()"
              :remote-method="remoteMethodChargeCode"
            >
              <el-option v-for="item in chargeCodeNameData" :key="item.code" :label="item.name" :value="item.code">
                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                <el-divider direction="vertical"></el-divider>
                <span>{{ item.name }}</span>
              </el-option>
            </el-select>
            录入日期：<el-date-picker
              type="daterange"
              v-model="dateRange"
              placeholder="选择日期"
              size="mini"
              style="width: 280px"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              :shortcuts="shortcuts"
            ></el-date-picker>
            <el-button
              size="mini"
              @click="riQiPaiXu === 'DESC' ? (riQiPaiXu = 'ASC') : (riQiPaiXu = 'DESC')"
              type="success"
              :icon="riQiPaiXu === 'DESC' ? 'el-icon-caret-bottom' : 'el-icon-caret-top'"
              >{{ riQiPaiXu === 'DESC' ? '日期降序' : '日期升序' }}</el-button
            >
            <el-select style="width: 100px" size="mini" v-model="feiYongLeiXingCode">
              <el-option v-for="item in feiYongLeiXing" :key="item.code" :label="item.name" :value="item.code">
                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                <el-divider direction="vertical"></el-divider>
                <span>{{ item.name }}</span>
              </el-option>
            </el-select>
            <el-select v-model="patient.orderNo" style="width: 120px" size="mini" @change="queryFeiYong">
              <el-option v-for="item in yiZhuTuiFeiLeiXing" :key="item.code" :label="item.name" :value="item.code">
                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                <el-divider direction="vertical"></el-divider>
                <span>{{ item.name }}</span>
              </el-option>
            </el-select>
            <el-button size="mini" type="primary" @click="queryFeiYong" icon="el-icon-search">查询</el-button>
            <el-button size="mini" type="danger" @click="xiangMuTuiFeiClick" icon="el-icon-delete-solid">退费</el-button>
            <el-table :height="tableHeight" @selection-change="handleSelectionChange" :data="cptTableDataHuanZheFeiYong" stripe highlight-current-row class="eltable">
              <el-table-column type="selection" style="width: 100px"> </el-table-column>
              <el-table-column label="流水号" prop="detailSn" width="70px"></el-table-column>
              <el-table-column prop="chargeDate" label="录入日期" width="80px"></el-table-column>
              <el-table-column prop="chargeCodeMx" label="项目编码"></el-table-column>
              <el-table-column prop="chargeName" label="项目名称"></el-table-column>
              <el-table-column prop="drugname" label="药品名称"></el-table-column>
              <el-table-column prop="execDept" label="执行科室"></el-table-column>
              <el-table-column prop="deptCode" label="申请科室"></el-table-column>
              <el-table-column prop="chargeFee" label="金额"></el-table-column>
              <el-table-column label="数量" prop="chargeAmount"></el-table-column>
              <el-table-column label="状态" prop="chargeStatus">
                <template #default="scope">
                  {{ costState(scope.row.chargeStatus) }}
                </template>
              </el-table-column>
              <el-table-column label="录入人" prop="opName"></el-table-column>
              <el-table-column label="账单码" prop="billItemName"></el-table-column>
              <el-table-column label="是否退费" prop="tuiFeiFlag">
                <template #default="scope">
                  <span v-if="scope.row.tuiFeiFlag === 1" style="color: red"
                    >已退费 <br />
                    <span v-if="scope.row.oriDetailSn !== null" style="color: teal"
                      >原流水号 <br />
                      【{{ scope.row.oriDetailSn }}】</span
                    >
                  </span>
                </template>
              </el-table-column>
            </el-table>
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="patient.currentPage"
              :page-sizes="[20, 30, 40, 50, 100]"
              :page-size="patient.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="patient.total"
              style="margin-top: 5px"
            ></el-pagination>
          </el-tab-pane>
          <!-- 项目录入 -->
          <el-tab-pane label="项目录入" name="xmlr" v-if="panDuanSFTongGuoBingShiJinRu">
            <el-row>
              <el-col :span="3">
                <HuoQuMuBan @selectionFeiYong="xuanZeXiangMuTable"></HuoQuMuBan>
              </el-col>
              <el-col :span="20" :offset="1">
                <el-row>
                  <el-col :span="24" style="margin-top: 10px">
                    <el-button type="warning" size="mini" icon="el-icon-star-off" @click="baoCunMuBanDialog = true">存模板</el-button>
                    <el-button type="primary" size="mini" @click="shangChuanXiangMu" icon="el-icon-upload">保存</el-button>
                    <el-button type="success" size="mini" icon="el-icon-plus" @click="xinZhengXiangMuDialog = true">新增</el-button>
                    <el-select style="width: 180px; margin: 0px 10px 0px 10px" v-model="zhiXingKeShi" size="mini" filterable>
                      <el-option v-for="item in deptData" :key="item.code" :label="item.name" :value="item.code">
                        <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                        <el-divider direction="vertical"></el-divider>
                        <span>{{ item.name }}</span></el-option
                      >
                    </el-select>
                    <el-button type="warning" size="mini" icon="el-icon-edit" @click="xieGaiZhiXingKeShi">修改执行科室</el-button>
                  </el-col>
                  <el-col :span="24">
                    <!-- 这个下面查看录入的项目 -->
                    <el-table :data="muBanNeiRongData" :height="tableHeight - 27" class="eltable" style="margin-top: 10px" stripe highlight-current-row>
                      <el-table-column label="录入信息">
                        <el-table-column label="录入时间">
                          <template #default>
                            {{ getDatetime(new Date()) }}
                          </template>
                        </el-table-column>
                        <el-table-column label="项目编码" prop="chargeCodeMx"></el-table-column>
                        <el-table-column label="名称" prop="chargeName"></el-table-column>
                        <el-table-column label="执行科室" prop="deptCode">
                          <template #default="scope">
                            <el-select style="width: 90%" size="mini" v-model="scope.row.deptCode" filterable>
                              <el-option v-for="item in deptData" :key="item.code" :label="item.name" :value="item.code">
                                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                                <el-divider direction="vertical"></el-divider>
                                <span>{{ item.name }}</span></el-option
                              >
                            </el-select>
                          </template>
                        </el-table-column>
                        <el-table-column label="单价" prop="chargeAmount"></el-table-column>
                        <el-table-column label="数量" prop="amount">
                          <template #default="scope">
                            <!--precision 限制输入的精度 0 就是不带任何一位小数点  -->
                            <el-input-number v-model="scope.row.amount" size="mini" :min="0" :precision="1"></el-input-number>
                          </template>
                        </el-table-column>
                      </el-table-column>
                      <el-table-column label="金额">
                        <template #default="scope">
                          {{ (scope.row.chargeAmount * scope.row.amount).toFixed(2) }}
                        </template>
                      </el-table-column>
                      <el-table-column label="账单码" prop="billItemName"></el-table-column>
                      <el-table-column label="操作">
                        <template #default="scope">
                          <el-button size="mini" type="danger" @click="shanChuXiangMuClick(scope.$index)">删除</el-button>
                        </template>
                      </el-table-column>
                    </el-table>
                    <el-tag> 项目总价：{{ xiangMuZongJia }}</el-tag>
                  </el-col>
                </el-row>
              </el-col>
            </el-row>
          </el-tab-pane>
        </el-tabs>
        <el-dialog title="新增项目" v-model="xinZhengXiangMuDialog" :width="1500">
          <el-row>
            <el-col :span="24">
              搜索：
              <el-select v-model="chargePyCode" size="mini" remote filterable clearable @change="getDanGeXiangMu" default-first-option :remote-method="rmChargePyCode">
                <el-option
                  v-for="item in xiangMuData.slice((danGeXiangMuCurrentPage - 1) * 20, danGeXiangMuCurrentPage * 20)"
                  :key="item.chargeCode"
                  :label="item.chargeName"
                  :value="item.chargeCode"
                >
                  <span style="color: #8492a6; font-size: 12px">{{ item.chargeCode }}</span>
                  <el-divider direction="vertical"></el-divider>
                  <span> {{ item.chargeName }}</span>
                  <el-divider direction="vertical"></el-divider>
                  <span style="color: red"> {{ item.ybComment }}</span>
                  <el-divider direction="vertical"></el-divider>
                  <span style="color: #e6a23c"> {{ item.chargeAmount }} 元</span>
                </el-option>
                <el-pagination
                  @current-change="danGeXiangMuCurrentChange"
                  :current-page="danGeXiangMuCurrentPage"
                  :page-size="20"
                  layout=" prev, pager, next,total"
                  :total="xiangMuData.length"
                  style="margin-top: 5px"
                  :pager-count="5"
                  small
                ></el-pagination>
              </el-select>
              <el-button size="mini" type="success" @click="danGeXiangMuBaoCun">保存</el-button>
            </el-col>
            <el-col :span="24">
              <el-table :data="danGeLuRuXiangMu" class="eltable">
                <el-table-column label="项目代码" prop="chargeCodeMx"></el-table-column>
                <el-table-column label="项目名称" prop="chargeName"></el-table-column>
                <el-table-column label="规格" prop="spec"></el-table-column>
                <el-table-column label="执行科室" prop="deptCode">
                  <template #default="scope">
                    <el-select style="width: 90%" size="mini" v-model="scope.row.deptCode" filterable>
                      <el-option v-for="item in deptData" :key="item.code" :label="item.name" :value="item.code">
                        <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
                        <el-divider direction="vertical"></el-divider>
                        <span>{{ item.name }}</span></el-option
                      >
                    </el-select>
                  </template></el-table-column
                >
                <el-table-column label="单价" prop="chargeAmount"></el-table-column>
                <el-table-column label="数量" prop="amount">
                  <template #default="scope">
                    <el-input-number v-model="scope.row.amount" size="mini" :min="1" :precision="1"></el-input-number>
                  </template>
                </el-table-column>
                <el-table-column label="金额">
                  <template #default="scope">
                    {{ (scope.row.chargeAmount * scope.row.amount).toFixed(2) }}
                  </template>
                </el-table-column>
                <el-table-column label="账单码" prop="billItemName"></el-table-column>
              </el-table>
            </el-col>
          </el-row>
        </el-dialog>
        <el-dialog title="保存模板" v-model="baoCunMuBanDialog">
          <el-row>
            <el-col :span="24"> 模板名称：<el-input size="mini" v-model="cunMuBanPojo.name" maxlength="15" @blur="zhuanPinYin" show-word-limit></el-input> </el-col>
            <el-col :span="12"> 拼音码：<el-input size="mini" v-model="cunMuBanPojo.pyCode" maxlength="8" show-word-limit></el-input> </el-col>
            <el-col :span="12"> 五笔码：<el-input size="mini" v-model="cunMuBanPojo.dcode" maxlength="8" show-word-limit></el-input> </el-col>
            <el-col :span="12"> 创建科室：<el-input size="mini" v-model="cunMuBanPojo.dept" disabled></el-input> </el-col>
            <el-col :span="12">
              <el-button size="mini" style="margin-top: 10px" icon="el-icon-upload" type="primary" @click="baoCunMuBan">保存</el-button>
            </el-col>
          </el-row>
        </el-dialog>
      </el-main>
    </el-container>
  </el-container>
</template>

<script>
import { computed, onMounted, ref, watch } from 'vue'
import store from '@/store'
import { cptSex } from '@/utils/computed'
import { shortcuts } from '@/data/shortcuts'
import {
  getChargeCode,
  getHuanZheFeiYong,
  getMuBan,
  getMuBanXinXi,
  xiangMuTuiFei,
  queryDanGeXiangMu,
  xiangMuFeiYongShangChuan,
  shangChuanMuBan,
  shanChuMuBan,
  getDept,
  getPyCode,
} from '@/api/yibao/xiang-mu-lu-ru'
import { ElMessage, ElMessageBox } from 'element-plus'
import { costState } from '@/utils/computed'
import Cookie from 'js-cookie'
import { getDatetime } from '@/utils/date'
import { clone } from '@/utils/clone'
import { getPatientInfo } from '@/api/yibao/patient'
import { yiZhuTuiFeiLeiXing, feiYongLeiXing } from '@/data/index'
import HuoQuMuBan from '@/components/med-tec-mod/HuoQuMuBan.vue'
import { getDateRangeFormatDate } from '@/utils/date'
import { baseinfo } from '@/data/inpatient'
export default {
  components: { HuoQuMuBan },
  props: {
    init: {
      type: Number,
      default: -1,
    },
  },
  setup(props, ctx) {
    const windowSize = store.state.app.windowSize
    const tableHeight = windowSize.h - 170
    // 默认选中已录入项目
    const xmlrTabs = ref('ylrxm')
    const inpatientNo = ref('')
    const zhiXingKeShi = ref('')
    const dateRange = ref(shortcuts[2].value)
    // DESC 降 ASC 升
    const riQiPaiXu = ref('DESC')

    const feiYongLeiXingCode = ref(0)

    /**
     * 录入费用 表格
     */
    const tableDataHuanZheFeiYong = ref([])

    // 项目录入模板数据
    const muBanData = ref([])
    // 获取全部科室
    const deptData = ref([])

    //
    const patient = ref({})
    /**
     * 监听 xmlrTabs 如果变化了 就加载 模板数据 如果模板数据已经存在了就不加载
     */
    watch(xmlrTabs, (newProps, oldProps) => {
      if (muBanData.value.length === 0) {
        getMuBan(Cookie.get('dept')).then((res) => {
          muBanData.value = res
        })
        getDept().then((res) => {
          deptData.value = res
        })
      }
      // 在这里只是获取科室的姓名
      setTimeout(() => {
        deptData.value.forEach((item) => {
          if (item.code === Cookie.get('dept')) {
            cunMuBanPojo.value.dept = item.name
          }
        })
      }, 100)
    })

    /**
     * 判断这个操作员是否可以退费
     */
    const panDuanSFTongGuoBingShiJinRu = ref(false)

    // 弹框 输入住院号
    const jinRuPanDuanSFXieDaiHuanZheXinXi = () => {
      ElMessageBox.prompt('请输入患者住院号', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        inputPattern: /\S/,
        inputErrorMessage: '患者住院号不能为空 (∩•̀ω•́)⊃-*⋆',
        type: 'warning',
      })
        .then(({ value }) => {
          inpatientNo.value = value
          chaXunHuanZheXinXi()
        })
        .catch(() => {
          guanBiDialog()
        })
    }

    const chaXunHuanZheXinXi = () => {
      getPatientInfo(inpatientNo.value)
        .then((res) => {
          patient.value = res
          patient.value.currentPage = 1
          patient.value.pageSize = 40
          patient.value.total = 0
          patient.value.orderNo = 0
          patient.value.deptCode = Cookie.get('dept')
          queryFeiYong()
          if (patient.value.ward === Cookie.get('dept')) {
            panDuanSFTongGuoBingShiJinRu.value = true
          } else {
            xmlrTabs.value = 'ylrxm'
            panDuanSFTongGuoBingShiJinRu.value = false
          }
        })
        .catch(() => {
          patient.value = {}
          jinRuPanDuanSFXieDaiHuanZheXinXi()
        })
    }
    /**
     * 查询
     */
    const queryFeiYong = () => {
      let dateR = getDateRangeFormatDate(dateRange.value)
      patient.value.startTime = dateR.stratTime
      patient.value.endTime = dateR.endTime
      patient.value.riQiPaiXu = riQiPaiXu.value
      patient.value.feiYongLeiXingCode = feiYongLeiXingCode.value
      patient.value.currentPage = 1
      getHuanZheFeiYong(patient.value)
        .then((res) => {
          tableDataHuanZheFeiYong.value = res
          cptTableDataHuanZheFeiYong.value = res.records
          patient.value.total = res.total
          if (patient.value.admissWard === Cookie.get('dept')) {
            panDuanSFTongGuoBingShiJinRu.value = true
          }
        })
        .catch(() => {
          tableDataHuanZheFeiYong.value = []
          cptTableDataHuanZheFeiYong.value = []
          patient.value.total = 0
        })
    }

    const handleQueryFeiYong = () => {
      let dateR = getDateRangeFormatDate(dateRange.value)
      patient.value.startTime = dateR.stratTime
      patient.value.endTime = dateR.endTime
      patient.value.riQiPaiXu = riQiPaiXu.value
      patient.value.feiYongLeiXingCode = feiYongLeiXingCode.value
      getHuanZheFeiYong(patient.value)
        .then((res) => {
          tableDataHuanZheFeiYong.value = res
          cptTableDataHuanZheFeiYong.value = res.records
          patient.value.total = res.total
          if (patient.value.admissWard === Cookie.get('dept')) {
            panDuanSFTongGuoBingShiJinRu.value = true
          }
        })
        .catch(() => {
          tableDataHuanZheFeiYong.value = []
          cptTableDataHuanZheFeiYong.value = []
          patient.value.total = 0
        })
    }

    /**
     * 刷新费用信息
     */
    const shuaXinFeiYong = () => {
      let query = {
        inpatientNo: patient.value.inpatientNo,
        admissTimes: patient.value.admissTimes,
        orderNo: patient.value.orderNo,
      }
      getHuanZheFeiYong(query).then((res) => {
        tableDataHuanZheFeiYong.value = res
        cptTableDataHuanZheFeiYong.value = res
        patient.value.total = cptTableDataHuanZheFeiYong.value.length
      })
    }
    /**
     * 分页
     */
    const handleSizeChange = (val) => {
      patient.value.pageSize = val
      handleQueryFeiYong()
    }

    const handleCurrentChange = (val) => {
      patient.value.currentPage = val
      handleQueryFeiYong()
    }
    /**
     * 获取项目名称
     */
    const chargeCodeNameData = ref([])

    /**
     * 远程搜索
     */
    const remoteMethodChargeCode = (val) => {
      if (val.length >= 2) {
        getChargeCode(val).then((res) => {
          chargeCodeNameData.value = res
        })
      }
    }
    /**
     * 获取多选框的值
     */
    const handleSelectionChange = (val) => {
      patient.value.list = val
    }

    /** */
    const cptTableDataHuanZheFeiYong = ref([])

    /**
     *  项目退费
     */
    const xiangMuTuiFeiClick = () => {
      if (typeof patient.value.list !== 'undefined') {
        let chargeFee = 0
        let chargeAmount = 0
        for (let i = 0; i < patient.value.list.length; i++) {
          chargeAmount += patient.value.list[i].chargeAmount
          chargeFee += patient.value.list[i].chargeFee
        }
        if (patient.value.list.length > 0) {
          ElMessageBox.confirm(
            `退费数量为：<span style='color:red'>【${chargeAmount}】</span> ，总价格为：<span style='color:#E6A23C'>【${chargeFee.toFixed(2)}】</span>`,
            '请认真核对',
            {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning',
              dangerouslyUseHTMLString: true,
            }
          )
            .then(() => {
              xiangMuTuiFei(patient.value).then((res) => {
                queryFeiYong()
              })
            })
            .catch(() => {})
        } else {
          ElMessage.warning({
            message: '请先选择退费数据',
            showClose: true,
          })
        }
      } else {
        ElMessage.warning({
          message: '请先选择退费数据',
          showClose: true,
        })
      }
    }

    /**
     * 点击获取模板信息
     */
    const muBanXiangQing = ref([])
    const getMuBanXinXiClick = (row) => {
      getMuBanXinXi(row.name, row.opIdCode).then((res) => {
        muBanXiangQing.value = res
      })
    }

    /**
     * 获取项目模板详情的数据
     */
    const muBanNeiRongData = ref([])
    // 保存 code 不要重复添加
    let muBanCode = []
    const xuanZeXiangMuTable = (param) => {
      let val = param.val
      for (let i = 0; i < val.length; i++) {
        let code = val[i].chargeCodeMx
        if (muBanCode.indexOf(code) === -1) {
          muBanCode.push(code)
          val[i].deptCode = patient.value.zkWard
          muBanNeiRongData.value.push(val[i])
        }
      }
    }

    const muBanCurrentPage = ref(1)
    const muBanPageSize = ref(10)

    const muBanHandleCurrentChange = (val) => {
      muBanCurrentPage.value = val
    }

    /**
     * 删除项目
     */
    const shanChuXiangMuClick = (index) => {
      muBanNeiRongData.value.splice(index, 1)
      muBanCode.splice(index, 1)
    }
    /**
     * 获取项目的总价
     */
    const xiangMuZongJia = computed(() => {
      let sum = 0
      for (let i = 0; i < muBanNeiRongData.value.length; i++) {
        sum += muBanNeiRongData.value[i].chargeAmount * muBanNeiRongData.value[i].amount
      }
      return sum.toFixed(2)
    })

    //以下全部是  新增项目 对话框功能

    /**
     * 新增项目
     */
    const xinZhengXiangMuDialog = ref(false)

    // 项目拼音的code
    const chargePyCode = ref('')
    // 项目数据
    const xiangMuData = ref([])

    /**
     * 远程搜索
     */
    const rmChargePyCode = (val) => {
      if (val.length >= 2) {
        queryDanGeXiangMu(val, 0).then((res) => {
          xiangMuData.value = res
        })
      }
    }
    const danGeXiangMuCurrentPage = ref(1)

    const danGeXiangMuCurrentChange = (val) => {
      danGeXiangMuCurrentPage.value = val
    }
    /**
     * 用来获取新增对画框中选择的项目
     */
    const danGeLuRuXiangMu = ref()

    const getDanGeXiangMu = () => {
      xiangMuData.value.filter((item) => {
        if (item.chargeCode === chargePyCode.value) {
          if (item.deptCode === '' || item.deptCode === null) {
            item.deptCode = patient.value.zkWard
          }
          let i = []
          i.push(item)
          danGeLuRuXiangMu.value = i
        }
      })
    }

    /**
     * 单个项目保存
     */
    const danGeXiangMuBaoCun = () => {
      for (let i = 0; i < muBanNeiRongData.value.length; i++) {
        if (muBanNeiRongData.value[i].chargeCodeMx === danGeLuRuXiangMu.value[0].chargeCodeMx) {
          ElMessage.error({
            message: '已存在相同项目请勿重复添加',
            showClose: true,
          })
          return
        }
      }
      muBanCode.push(clone(danGeLuRuXiangMu.value[0].chargeCodeMx))
      muBanNeiRongData.value.push(clone(danGeLuRuXiangMu.value[0]))
      danGeLuRuXiangMu.value = []
      chargePyCode.value = ''
    }
    //以上全部是  新增项目 对话框功能

    // 下面就是上传 项目
    const shangChuanXiangMu = () => {
      if (muBanNeiRongData.value.length === 0) {
        ElMessage.error({
          message: '请先选择需要上传的费用',
          showClose: true,
        })
        return
      }
      for (let i = 0; i < muBanNeiRongData.value.length; i++) {
        if (muBanNeiRongData.value[i].deptCode === '') {
          ElMessage.error({
            message: '【' + muBanNeiRongData.value[i].chargeName + '】的执行科室为空',
            showClose: true,
          })
          return
        }
      }
      let shangChuanFeiYong = {
        inpatientNo: patient.value.inpatientNo,
        admissTimes: patient.value.admissTimes,
        ledgerSn: patient.value.ledgerSn,
        dept: patient.value.admissDept,
        zySerialNo: patient.value.zySerialNo,
        ward: patient.value.zkWard,
        referPhysician: patient.value.referPhysician,
        list: muBanNeiRongData.value,
        orderNo: 0,
      }
      // 在此处上传
      ElMessageBox.confirm('共上传【' + muBanNeiRongData.value.length + '】条', '请认真核对', {
        cancelButtonText: '取消',
        confirmButtonText: '确定',
      })
        .then(() => {
          xiangMuFeiYongShangChuan(shangChuanFeiYong).then(() => {
            muBanNeiRongData.value = []
            muBanCode = []
          })
        })
        .catch(() => {})
    }

    // 上面就是上传 项目

    // 下面就是保存的模板信息
    const cunMuBanPojo = ref({
      pyCode: '',
      dcode: '',
      name: '',
      paiXu: '',
      dept: '',
      deptCode: Cookie.get('dept'),
      list: [],
    })

    const baoCunMuBanDialog = ref(false)
    const baoCunMuBan = () => {
      if (muBanNeiRongData.value.length === 0) {
        ElMessage.error({
          message: '请先选择项目',
          showClose: true,
        })
        return
      }
      if (cunMuBanPojo.value.name === '' || cunMuBanPojo.value.pyCode === '' || cunMuBanPojo.value.dcode === '') {
        ElMessage.error({
          message: '模板名称，拼音码，五笔码不能为空',
          showClose: true,
        })
        return
      }
      cunMuBanPojo.value.list = clone(muBanNeiRongData.value)
      // 开始上传
      shangChuanMuBan(cunMuBanPojo.value).then(() => {
        cunMuBanPojo.value = {}
      })
    }

    // 获取到保存模板的拼音码和五笔码
    const zhuanPinYin = () => {
      getPyCode(cunMuBanPojo.value.name).then((res) => {
        cunMuBanPojo.value.pyCode = res.pyCode
        cunMuBanPojo.value.dcode = res.wbCode
      })
    }

    // 上面就是保存的模板信息

    /** 关闭 对话框 */
    const guanBiDialog = () => {
      ctx.emit('close-xmlr')
    }

    watch(
      () => props.init,
      () => {
        if (!baseinfo().inpatientNo) {
          jinRuPanDuanSFXieDaiHuanZheXinXi()
        } else {
          patient.value = clone(baseinfo())
          patient.value.currentPage = 1
          patient.value.pageSize = 40
          patient.value.total = 0
          patient.value.orderNo = 0
          patient.value.deptCode = Cookie.get('dept')
          zhiXingKeShi.value = patient.value.zkWard
          panDuanSFTongGuoBingShiJinRu.value = true
          queryFeiYong()
        }
      }
    )

    onMounted(() => {
      if (Cookie.get('code') === '02453') {
        ElMessage.success({
          message: '阳哥，hello  (*^▽^*)',
          showClose: true,
        })
      }
      if (!baseinfo().inpatientNo) {
        patient.value.currentPage = 1
        patient.value.pageSize = 40
        patient.value.total = 0
        patient.value.orderNo = 0
        patient.value.deptCode = Cookie.get('dept')
        zhiXingKeShi.value = patient.value.zkWard
        jinRuPanDuanSFXieDaiHuanZheXinXi()
      } else {
        patient.value = clone(baseinfo())
        patient.value.currentPage = 1
        patient.value.pageSize = 40
        patient.value.total = 0
        patient.value.orderNo = 0
        patient.value.deptCode = Cookie.get('dept')
        panDuanSFTongGuoBingShiJinRu.value = true
        zhiXingKeShi.value = patient.value.zkWard
        queryFeiYong()
      }
    })

    const shanChuMuBanClick = (index, data) => {
      if (data.opIdCode !== Cookie.get('code')) {
        ElMessageBox.confirm('该模板非本人创建是否强制删除', '提示', {
          type: 'warning',
        })
          .then(() => {
            shanChuMuBan(data.name, data.opIdCode).then((res) => {
              muBanData.value.splice(index, 1)
            })
          })
          .catch(() => {})
      } else {
        shanChuMuBan(data.name, data.opIdCode).then((res) => {
          muBanData.value.splice(index, 1)
        })
      }
    }

    const xieGaiZhiXingKeShi = () => {
      for (let i = 0; i < muBanNeiRongData.value.length; i++) {
        muBanNeiRongData.value[i].deptCode = zhiXingKeShi.value
      }
    }

    return {
      patient,
      cptSex,
      xmlrTabs,
      tableHeight,
      tableDataHuanZheFeiYong,
      handleSizeChange,
      handleCurrentChange,
      chargeCodeNameData,
      remoteMethodChargeCode,
      handleSelectionChange,
      xiangMuTuiFeiClick,
      costState,
      muBanData,
      getMuBanXinXiClick,
      muBanXiangQing,
      xuanZeXiangMuTable,
      muBanNeiRongData,
      getDatetime,
      shanChuXiangMuClick,
      deptData,
      xinZhengXiangMuDialog,
      chargePyCode,
      rmChargePyCode,
      xiangMuData,
      xiangMuZongJia,
      danGeLuRuXiangMu,
      getDanGeXiangMu,
      danGeXiangMuBaoCun,
      shangChuanXiangMu,
      baoCunMuBan,
      baoCunMuBanDialog,
      cunMuBanPojo,
      zhuanPinYin,
      muBanCurrentPage,
      muBanPageSize,
      muBanHandleCurrentChange,
      cptTableDataHuanZheFeiYong,
      guanBiDialog,
      danGeXiangMuCurrentPage,
      danGeXiangMuCurrentChange,
      inpatientNo,
      chaXunHuanZheXinXi,
      shuaXinFeiYong,
      panDuanSFTongGuoBingShiJinRu,
      queryFeiYong,
      shanChuMuBanClick,
      yiZhuTuiFeiLeiXing,
      zhiXingKeShi,
      xieGaiZhiXingKeShi,
      dateRange,
      shortcuts,
      riQiPaiXu,
      feiYongLeiXingCode,
      feiYongLeiXing,
    }
  },
}
</script>

<style></style>
