Browse Source

统计和导出本院门特备案

lighter 3 years ago
parent
commit
272b4b8b61

+ 11 - 3
src/api/medical-insurance/si-psn-rcd.js

@@ -12,7 +12,7 @@ export function getAllSpcChrRcdsByPsnNo(psnNo) {
   return request({
     url: '/siPsnRcd/getAllSpcChrRcdsByPsnNo',
     method: 'get',
-    params: { psnNo }
+    params: { psnNo },
   })
 }
 
@@ -36,7 +36,7 @@ export function getAllTrsHospRcdByPsnNo(psnNo) {
   return request({
     url: '/siPsnRcd/getAllTrsHospRcdByPsnNo',
     method: 'get',
-    params: { psnNo }
+    params: { psnNo },
   })
 }
 
@@ -60,7 +60,7 @@ export function getAllPsnAsgnmtRcdByPsnNo(psnNo) {
   return request({
     url: '/siPsnRcd/getAllPsnAsgnmtRcdByPsnNo',
     method: 'get',
-    params: { psnNo }
+    params: { psnNo },
   })
 }
 
@@ -71,3 +71,11 @@ export function revokePersonnelAssignmentRecord(data) {
     data,
   })
 }
+
+export function selectAllSpcSlwRcds(begntime, endtime) {
+  return request({
+    url: '/siPsnRcd/selectAllSpcSlwRcds',
+    method: 'get',
+    params: { begntime, endtime },
+  })
+}

+ 9 - 0
src/api/messages/index.js

@@ -0,0 +1,9 @@
+import request from '../../utils/request'
+
+export function onPageRefresh(data) {
+  return request({
+    url: '/socketMessage/onPageRefresh',
+    method: 'post',
+    data,
+  })
+}

+ 45 - 46
src/utils/excel.js

@@ -1,61 +1,60 @@
 import axios from 'axios'
 import XLSX from 'xlsx'
 import store from '@/store'
-import {startLoading, endLoading} from "./loading";
-import {ElMessage} from "element-plus";
+import { startLoading, endLoading } from './loading'
+import { ElMessage } from 'element-plus'
 
 const apiUrl = import.meta.env.VITE_BASE_URL
 
 export function writeExcelFile(workSheet, fileName) {
-    const workBook = XLSX.utils.book_new()
-    XLSX.utils.book_append_sheet(workBook, workSheet, 'sheet1')
-    XLSX.writeFile(workBook, fileName)
-    store.commit('app/setLoading', false)
-    endLoading()
-
+  const workBook = XLSX.utils.book_new()
+  XLSX.utils.book_append_sheet(workBook, workSheet, 'sheet1')
+  XLSX.writeFile(workBook, fileName)
+  store.commit('app/setLoading', false)
+  endLoading()
 }
 
 export function createWorkSheet(data, fields, titles) {
-    const workSheet = XLSX.utils.json_to_sheet(data, {header: fields})
-    const range = XLSX.utils.decode_range(workSheet['!ref'])
-    for (let c = range.s.c; c <= range.e.c; c++) {
-        const header = XLSX.utils.encode_col(c) + '1'
-        workSheet[header].v = titles[workSheet[header].v]
-    }
-    return workSheet
+  const workSheet = XLSX.utils.json_to_sheet(data, { header: fields })
+  const range = XLSX.utils.decode_range(workSheet['!ref'])
+  for (let c = range.s.c; c <= range.e.c; c++) {
+    const header = XLSX.utils.encode_col(c) + '1'
+    workSheet[header].v = titles[workSheet[header].v]
+  }
+  return workSheet
 }
 
 export function downloadExcel(data) {
-    if (data.jdt) {
-        store.commit('app/setJdt', {title: '正在导出 Excel', isOpen: true, closeButton: false})
-    } else {
-        startLoading()
-    }
-    axios({
-        method: 'post',
-        url: apiUrl + data.url,
-        data: data.param,
-        responseType: 'blob',
-        headers: {
-            token: store.state.user.token,
-        },
+  if (data.jdt) {
+    store.commit('app/setJdt', { title: '正在导出 Excel', isOpen: true, closeButton: false })
+  } else {
+    startLoading()
+  }
+  axios({
+    method: 'post',
+    url: apiUrl + data.url,
+    data: data.param,
+    responseType: 'blob',
+    headers: {
+      token: store.state.user.token,
+    },
+  })
+    .then((res) => {
+      const link = document.createElement('a')
+      let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
+      link.style.display = 'none'
+      link.href = URL.createObjectURL(blob)
+      link.download = data.fileName //下载的文件名
+      document.body.appendChild(link)
+      link.click()
+      document.body.removeChild(link)
+      endLoading()
+      store.commit('app/closeJdt')
+    })
+    .catch((error) => {
+      ElMessage.error('网络连接错误', '错误')
+      console.error(error)
+      endLoading()
+      store.commit('app/closeJdt')
     })
-        .then((res) => {
-            const link = document.createElement('a')
-            let blob = new Blob([res.data], {type: 'application/vnd.ms-excel'})
-            link.style.display = 'none'
-            link.href = URL.createObjectURL(blob)
-            link.download = data.fileName //下载的文件名
-            document.body.appendChild(link)
-            link.click()
-            document.body.removeChild(link)
-            endLoading()
-            store.commit('app/closeJdt')
-        })
-        .catch((error) => {
-            ElMessage.error('网络连接错误', '错误')
-            console.error(error)
-            endLoading()
-            store.commit('app/closeJdt')
-        })
 }

+ 92 - 9
src/views/medical-insurance/outpatient/SpcChrRcd.vue

@@ -6,11 +6,12 @@
           <template #prepend>门诊ID/身份证</template>
         </el-input>
         <el-divider direction="vertical"></el-divider>
-        <el-button type="success" @click="qryPsnBscInfo">参保信息查询</el-button>
-        <el-button type="success" @click="qrySpcChrRcd"> 慢特病备案查询 </el-button>
-        <el-button type="success" @click="beforeQryMedUseRcd"> 用药记录查询 </el-button>
+        <el-button type="success" @click="qryPsnBscInfo">参保信息</el-button>
+        <el-button type="success" @click="qrySpcChrRcd"> 备案查询 </el-button>
+        <el-button type="success" @click="beforeQryMedUseRcd"> 用药记录 </el-button>
         <el-button type="primary" @click="beforeSlwSpcChrRcd"> 慢特病备案 </el-button>
         <el-button type="primary" @click="beforeRvkSlwSpcChrRcd"> 撤销备案 </el-button>
+        <el-button type="warning" @click="beforeFetchAllRcds"> 备案统计 </el-button>
       </el-header>
       <el-main>
         <el-tag type="success">人员基本信息</el-tag>
@@ -86,7 +87,6 @@
             <el-button type="primary" @click="qryMedUseRcd" icon="el-icon-check">确定</el-button>
           </div>
         </el-dialog>
-
         <el-dialog v-model="showSpcChrRcds" title="慢特病备案信息">
           <el-table :data="spcChrRcds" stripe>
             <el-table-column property="begndate" label="开始日期"></el-table-column>
@@ -96,7 +96,6 @@
             <el-table-column prop="ideFixmedinsName" label="备案机构"></el-table-column>
           </el-table>
         </el-dialog>
-
         <el-dialog v-model="showMedUseRcds" title="慢特病用药记录">
           <el-table :data="medUseRcds" stripe height="360">
             <el-table-column prop="fixmedinsCode" label="定点医药机构编号"></el-table-column>
@@ -113,7 +112,6 @@
             <el-table-column prop="dosformName" label="剂型"></el-table-column>
           </el-table>
         </el-dialog>
-
         <el-dialog v-model="showSlwSpcChrRcd" width="70%" title="人员慢特病备案申请">
           <i style="color: red">* </i>人员类别:&nbsp;&nbsp;<el-radio v-model="perstype" :label="1">职工</el-radio>
           <el-radio v-model="perstype" :label="2">居民</el-radio>
@@ -219,7 +217,6 @@
           </div>
           <div style="height: 12px"></div>
         </el-dialog>
-
         <el-dialog v-model="showAllSlwSpcChrRcds" title="请选择要撤销的备案" width="70%">
           <div style="height: 12px"></div>
           <el-table :data="allSlwSpcChrRcds" stripe highlight-current-row @row-click="handleSelctSlwSpcChrRcd">
@@ -236,6 +233,34 @@
           </div>
           <div style="height: 12px"></div>
         </el-dialog>
+        <el-dialog v-model="showFetchAllRcds" title="门特备案记录" width="70%">
+          <el-date-picker
+            v-model="fetchAllRcdsDateRange"
+            type="daterange"
+            :shortcuts="maxHalfYear"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            size="mini"
+            style="width: 240px"
+          ></el-date-picker>
+          <el-divider direction="vertical"></el-divider>
+          <el-button type="primary" icon="el-icon-check" @click="fetchAllRcds">查询</el-button>
+          <el-button type="primary" icon="el-icon-download" @click="exportExcel">导出Excel</el-button>
+          <el-table :data="allSpcSlwRcds" height="400" stripe highlight-current-row>
+            <el-table-column prop="psnName" label="人员姓名"></el-table-column>
+            <el-table-column prop="psnNo" label="人员编码"></el-table-column>
+            <el-table-column prop="socialNo" label="身份证号"></el-table-column>
+            <el-table-column prop="opspDiseCode" label="病种编码"></el-table-column>
+            <el-table-column prop="opspDiseName" label="病种名称"></el-table-column>
+            <el-table-column prop="ideFixmedinsName" label="鉴定机构"></el-table-column>
+            <el-table-column prop="hospIdeDate" label="鉴定日期"></el-table-column>
+            <el-table-column prop="diagDrName" label="诊断医师"></el-table-column>
+            <el-table-column prop="begndate" label="开始日期"></el-table-column>
+            <el-table-column prop="enddate" label="结束日期"></el-table-column>
+            <el-table-column prop="trtDclaDetlSn" label="备案流水号"></el-table-column>
+          </el-table>
+        </el-dialog>
       </el-main>
     </el-container>
   </div>
@@ -246,9 +271,10 @@ import { ref } from 'vue'
 import { maxHalfYear } from '@/data/shortcuts'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { obtainBasicPersonInfo, querySpecialChronicDiseasesAccreditation, querySpecialChronicDiseasesMedicalRecord } from '@/api/medical-insurance/si-query'
-import { getAllSpcChrRcdsByPsnNo, revokeSpecialChronicDiseasesRecord, specialChronicDiseasesRecord } from '@/api/medical-insurance/si-psn-rcd'
-import { formatDatetime } from '@/utils/date'
+import { getAllSpcChrRcdsByPsnNo, revokeSpecialChronicDiseasesRecord, specialChronicDiseasesRecord, selectAllSpcSlwRcds } from '@/api/medical-insurance/si-psn-rcd'
+import { formatDatetime, formatDate } from '@/utils/date'
 import { searchData } from '@/api/yibao/dictionary'
+import { Export } from '../../../utils/ExportExcel'
 export default {
   setup() {
     const patNo = ref('')
@@ -392,6 +418,8 @@ export default {
         return
       }
       slwSpcChrRcd.value.psnNo = baseinfo.value.psnNo
+      slwSpcChrRcd.value.psnName = baseinfo.value.psnName
+      slwSpcChrRcd.value.socialNo = baseinfo.value.certno
       slwSpcChrRcd.value.insutype = currentInsuinfo.value.insutype
       slwSpcChrRcd.value.insutypeName = currentInsuinfo.value.insutypeName
       slwSpcChrRcd.value.insuOptins = currentInsuinfo.value.insuplcAdmdvs
@@ -506,6 +534,55 @@ export default {
       slwSpcChrRcd.value.diagDrName = item.name
     }
 
+    const showFetchAllRcds = ref(false)
+    const fetchAllRcdsDateRange = ref(null)
+    const allSpcSlwRcds = ref([])
+    const beforeFetchAllRcds = () => {
+      showFetchAllRcds.value = true
+    }
+    const fetchAllRcds = () => {
+      if (!fetchAllRcdsDateRange.value) {
+        ElMessage({
+          message: '请选择日期范围!',
+          type: 'warning',
+          duration: 2000,
+          showClose: true,
+        })
+        return true
+      }
+      const begntime = formatDate(fetchAllRcdsDateRange.value[0])
+      const endtime = formatDate(fetchAllRcdsDateRange.value[1])
+      selectAllSpcSlwRcds(begntime, endtime).then((res) => {
+        allSpcSlwRcds.value = res
+      })
+    }
+
+    const exportExcel = () => {
+      if (allSpcSlwRcds.value.length === 0) {
+        ElMessage({
+          message: '没有可以导出的数据。',
+          type: 'warning',
+          duration: 2000,
+          showClose: true,
+        })
+        return true
+      }
+      const title = {
+        psnName: '人员姓名',
+        psnNo: '人员编码',
+        socialNo: '身份证号',
+        opspDiseCode: '病种编码',
+        opspDiseName: '病种名称',
+        ideFixmedinsName: '鉴定机构',
+        hospIdeDate: '鉴定日期',
+        diagDrName: '诊断医师',
+        begndate: '开始日期',
+        enddate: '结束日期',
+        trtDclaDetlSn: '备案流水号',
+      }
+      Export(allSpcSlwRcds.value, title, '门特备案详情')
+    }
+
     return {
       patNo,
       dateRange,
@@ -537,6 +614,12 @@ export default {
       handleSelectDiag,
       searchPhysician,
       handleSelectPhysician,
+      showFetchAllRcds,
+      fetchAllRcdsDateRange,
+      allSpcSlwRcds,
+      beforeFetchAllRcds,
+      fetchAllRcds,
+      exportExcel,
     }
   },
 }