浏览代码

病案复印/封存/借阅导出

lighter 1 年之前
父节点
当前提交
31c0e6b30b

+ 8 - 0
src/api/case-front-sheet/index.js

@@ -320,4 +320,12 @@ export function returnLendOutSheet(id) {
         method: 'get',
         params: {id},
     })
+}
+
+export function getExportableDclData(data) {
+    return request({
+        url: '/frontSheetExport/getExportableDclData',
+        method: 'post',
+        data
+    })
 }

+ 89 - 0
src/components/inpatient/frontsheet-printpage/ExportDclExcel.vue

@@ -0,0 +1,89 @@
+<template>
+  <CyDialog title="复印/封存/借阅导出" body-width="300px"
+            body-height="max-content" ignore-error
+            confirm-text="导出"
+            :confirm-click="executeExport">
+    <div>请选择要导出的数据:</div>
+    <div class="input_area">
+      <el-select v-model="exportRequest.type" style="width: 220px">
+        <el-option label="复印" value="DUPLICATE"></el-option>
+        <el-option label="封存" value="CLOSEDOWN"></el-option>
+        <el-option label="借阅" value="LENDOUT"></el-option>
+      </el-select>
+    </div>
+
+    <div style="margin-top: 24px">请选择数据时间范围:</div>
+    <div class="input_area">
+      <CyDateRange />
+    </div>
+  </CyDialog>
+</template>
+
+<script setup>
+
+import useDateRange from "@/utils/cy-use/useDateRange";
+import CyDialog from "@/components/cy/dialog/src/CyDialog.vue";
+import {Export} from "@/utils/ExportExcel";
+import {getExportableDclData} from "@/api/case-front-sheet";
+
+const exportRequest = reactive({
+  type: 'DUPLICATE',
+  begin: '',
+  end: ''
+})
+
+const {CyDateRange, dateRange} = useDateRange({shortcutsIndex: 5, clearable: false})
+
+function executeExport(next) {
+  exportRequest.begin = dateRange.value.start;
+  exportRequest.end = dateRange.value.end
+  let label = getLabel()
+  getExportableDclData(exportRequest).then(res => {
+    Export(res, generateField(label), label + '记录')
+    next()
+  })
+}
+
+function generateField(label) {
+  const field = {
+    bah: '住院号',
+    times: '住院次数',
+    patName: '患者姓名',
+    admissDate: '入院时间',
+    disDate: '出院时间',
+    disDept: '出院科室',
+    doctor: '管床医生',
+    visitStaff: label + '人员',
+    opTime: label + '时间',
+    remark: '备注',
+    opStaff: '病案管理员',
+  }
+  if (exportRequest.type === 'LENDOUT') {
+    field.lendStaffPhone = '借阅人员电话'
+    field.state = '状态'
+    field.returnTime = '归还时间'
+  }
+  return field
+}
+
+function getLabel() {
+  switch (exportRequest.type) {
+    case 'DUPLICATE':
+      return '复印'
+    case 'CLOSEDOWN':
+      return '封存'
+    case 'LENDOUT':
+      return '借阅'
+    default :
+      return ''
+  }
+}
+
+
+</script>
+
+<style scoped>
+.input_area {
+  padding: 8px 24px 0 24px;
+}
+</style>

+ 1 - 2
src/components/inpatient/frontsheet-printpage/LendOut.vue

@@ -87,7 +87,7 @@
       </el-dialog>
     </el-tab-pane>
     <el-tab-pane label="借阅归还">
-      <el-table :data="lendOutSheets">
+      <el-table :data="lendOutSheets" height="380">
         <el-table-column prop="bah" label="住院号" width="70"></el-table-column>
         <el-table-column prop="times" label="住院次数" width="40"></el-table-column>
         <el-table-column prop="patName" label="姓名" width="80"></el-table-column>
@@ -99,7 +99,6 @@
           </template>
         </el-table-column>
       </el-table>
-
     </el-tab-pane>
   </el-tabs>
 </template>

+ 16 - 7
src/views/hospitalization/case-front-sheet/AllCaseFrontSheet.vue

@@ -38,11 +38,14 @@
             <el-dropdown-item command="exportUnsignedData" icon="Files">导出未签收病案</el-dropdown-item>
             <el-dropdown-item command="print1" divided icon="Printer">打印正面</el-dropdown-item>
             <el-dropdown-item command="print2" icon="Printer">打印反面</el-dropdown-item>
-            <el-dropdown-item command="print3" icon="Printer">导出PDF</el-dropdown-item>
+            <el-dropdown-item command="print3" icon="Download">存为PDF</el-dropdown-item>
             <el-dropdown-item command="quality" divided icon="DataLine">病案质控</el-dropdown-item>
             <el-dropdown-item command="duplicate" divided icon="MessageBox">标记已复印</el-dropdown-item>
             <el-dropdown-item command="closedown" icon="Paperclip">标记已封存</el-dropdown-item>
             <el-dropdown-item command="lendout" divided icon="Document">借阅管理</el-dropdown-item>
+            <el-dropdown-item command="beforeExportdcl" divided icon="Download">
+              导出<span style="color: black; font-weight: bold">复印/封存/借阅</span>记录
+            </el-dropdown-item>
           </el-dropdown-menu>
         </template>
       </el-dropdown>
@@ -275,7 +278,7 @@
           <el-button icon="ArrowRight" @click="dateOffset(1)"></el-button>
         </div>
         <div style="margin: 12px 0; border-top: 1px solid lightgray"></div>
-        <div >
+        <div>
           <div style="display: flex; margin-bottom: 12px">
             <div style="flex: 1">签收人</div>
             <div style="flex: 1">签收数量</div>
@@ -284,10 +287,10 @@
           <div v-for="(val, key) in signData">
             <div style="display: flex; line-height: 32px; color: #0079ff; font-weight: bold">
               <div style="flex: 1">
-                {{key}}
+                {{ key }}
               </div>
               <div style="flex: 1">
-                {{val.length}}
+                {{ val.length }}
               </div>
               <div style="width: 35px">
                 <el-button icon="Pointer" circle @click="clickSignStaff(key)"></el-button>
@@ -327,7 +330,7 @@
         </div>
         <div style="margin-top: 12px;display: flex">
           <div style="width: 90px">
-            {{markStateTitle}}时间:
+            {{ markStateTitle }}时间:
           </div>
           <el-input style="width: 300px" v-model="markStateRequest.markTime" disabled></el-input>
         </div>
@@ -401,7 +404,7 @@
       </el-dialog>
 
       <el-dialog v-model="showLendOut" title="借阅管理" style="width: 600px">
-        <LendOut :lend-time="currentTime" :user-name="userName" />
+        <LendOut :lend-time="currentTime" :user-name="userName"/>
       </el-dialog>
     </template>
   </page-layer>
@@ -441,6 +444,8 @@ import baduplicated from '@/assets/case-frontsheet/ba-duplicated.png'
 import balendout from '@/assets/case-frontsheet/ba-lendout.png'
 import baclosedown from '@/assets/case-frontsheet/ba-closedown.png'
 import LendOut from "@/components/inpatient/frontsheet-printpage/LendOut.vue";
+import ExportDclExcel from "@/components/inpatient/frontsheet-printpage/ExportDclExcel.vue";
+import useDialogToJs from "@/components/js-dialog-comp/useDialogToJs";
 
 const showSheetQuality = ref(false)
 const currentPage = ref(1)
@@ -675,6 +680,9 @@ const handleCommand = (val) => {
       currentTime.value = formatDatetime(new Date())
       showLendOut.value = true
       break
+    case 'beforeExportdcl':
+      useDialogToJs(ExportDclExcel, {})
+      break;
   }
 }
 
@@ -992,6 +1000,7 @@ function showMarkStateDetail(type) {
 
 const lendOutDetail = ref({})
 const lendOutDetailVisible = ref(false)
+
 function showLendOutDetail() {
   getLendOutDetail(sheet.value.bah, sheet.value.admissTimes).then(res => {
     lendOutDetail.value = res
@@ -1003,7 +1012,7 @@ onActivated(() => {
   initLodop()
 })
 
-  onMounted(() => {
+onMounted(() => {
   getAllDictionary().then((res) => {
     res.getOperations = operations
     res.getYesOrNo = yesOrNo