Browse Source

可以导出新冠流调。

lighter 3 years ago
parent
commit
c6c4c512c7
3 changed files with 15243 additions and 52 deletions
  1. 15153 1
      package-lock.json
  2. 10 3
      src/views/dashboard/index.vue
  3. 80 48
      src/views/examination/CovidExamResult.vue

File diff suppressed because it is too large
+ 15153 - 1
package-lock.json


+ 10 - 3
src/views/dashboard/index.vue

@@ -20,6 +20,9 @@
               <MyClock :show-logo="false" size="small" />
             </div>
           </div>
+          <!-- <div style="display: flex; flex-wrap: wrap; height: 480px; overflow-y: auto">
+            <Inpatient />
+          </div> -->
         </div>
         <!-- 右边部分 -->
         <div class="right-pane">
@@ -46,11 +49,13 @@ import { formatDate } from '../../utils/date'
 import { getUserInfo } from '@/api/settings/user-settings'
 import { genTextPortrait } from '@/utils/portrait'
 import MyClock from '@/components/MyClock.vue'
+import Inpatient from '@/components/dashboard/Inpatient.vue'
 
 export default {
   name: 'Dashboard',
   components: {
     MyClock,
+    Inpatient,
   },
   setup() {
     const store = useStore()
@@ -88,9 +93,11 @@ export default {
     }
 
     onActivated(() => {
-      selectSystemMessages('latest').then((res) => {
-        messages.value = res
-      })
+      setTimeout(() => {
+        selectSystemMessages('latest').then((res) => {
+          messages.value = res
+        })
+      }, 500)
     })
 
     onMounted(() => {

+ 80 - 48
src/views/examination/CovidExamResult.vue

@@ -1,53 +1,67 @@
 <template>
   <el-container>
     <el-header height="36px" style="margin-top: 8px">
-      <el-date-picker
-          v-model="dateRange"
-          :shortcuts="shortcuts"
-          end-placeholder="结束日期"
-          range-separator="至"
-          start-placeholder="开始日期"
-          type="datetimerange"
-      ></el-date-picker>
+      <el-date-picker v-model="dateRange" :shortcuts="shortcuts" end-placeholder="结束日期" range-separator="至" start-placeholder="开始日期" type="datetimerange"></el-date-picker>
       <span></span>
-      <el-select v-model="type" style="width: 130px">
+      <el-select v-model="type" style="width: 130px" @change=";(list = []), (totalSize = 0)">
         <el-option v-for="item in types" :key="item.code" :label="item.name" :value="item.code"></el-option>
       </el-select>
-      <span></span>
+      <el-divider direction="vertical"></el-divider>
       <el-button icon="el-icon-search" type="primary" @click="fetchResult">查询</el-button>
       <el-button icon="el-icon-upload" type="primary" @click="exportExcel">导出Excel</el-button>
     </el-header>
     <el-main>
-      <el-table :data="list" :height="tableHeight" stripe>
-        <el-table-column type="index"></el-table-column>
-        <el-table-column label="姓名" prop="ptntName"></el-table-column>
-        <el-table-column label="身份证" prop="idCard"></el-table-column>
-        <el-table-column label="检测结果" prop="itmStrValue"></el-table-column>
-        <el-table-column label="送检时间" prop="ordrCreateDate"></el-table-column>
-      </el-table>
+      <div v-if="type !== 3">
+        <el-table :data="list" :height="tableHeight" stripe>
+          <el-table-column type="index"></el-table-column>
+          <el-table-column label="姓名" prop="ptntName"></el-table-column>
+          <el-table-column label="身份证" prop="idCard"></el-table-column>
+          <el-table-column label="检测结果" prop="itmStrValue"></el-table-column>
+          <el-table-column label="送检时间" prop="ordrCreateDate"></el-table-column>
+        </el-table>
+      </div>
+      <div v-else>
+        <el-table :data="list" :height="tableHeight" stripe>
+          <el-table-column type="index"></el-table-column>
+          <el-table-column label="姓名" prop="ptntName"></el-table-column>
+          <el-table-column label="身份证" prop="idCard"></el-table-column>
+          <el-table-column label="电话" prop="phone"></el-table-column>
+          <el-table-column label="问卷日期" prop="date"></el-table-column>
+          <el-table-column label="住址" prop="address"></el-table-column>
+          <el-table-column label="体温" prop="temperature"></el-table-column>
+          <el-table-column label="发烧温度" prop="feverNumber"></el-table-column>
+          <el-table-column label="14天内行程" prop="item1"></el-table-column>
+          <el-table-column label="14天内接触风险地区人群" prop="item2"></el-table-column>
+          <el-table-column label="14天内接触确诊患者" prop="item3"></el-table-column>
+          <el-table-column label="14天内接触有症状人群" prop="item4"></el-table-column>
+          <el-table-column label="14天内是否出现症状" prop="item5"></el-table-column>
+          <el-table-column label="14天内出现症状详情" prop="symptomsString"></el-table-column>
+          <el-table-column label="健康码颜色" prop="item6"></el-table-column>
+        </el-table>
+      </div>
       <el-pagination
-          :current-page="currentPage"
-          :page-size="pageSize"
-          :page-sizes="[15, 30, 45, 70, 100]"
-          :total="totalSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          style="margin-top: 5px"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
+        :current-page="currentPage"
+        :page-size="pageSize"
+        :page-sizes="[15, 30, 45, 70, 100]"
+        :total="totalSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        style="margin-top: 5px"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
       ></el-pagination>
     </el-main>
   </el-container>
 </template>
 
 <script>
-import {ref} from 'vue'
-import {formatDate, formatDatetime} from '@/utils/date'
-import {shortcuts} from '@/data/shortcuts'
-import {fetchCovidExamData} from '@/api/inspections'
+import { ref } from 'vue'
+import { formatDatetime } from '@/utils/date'
+import { shortcuts } from '@/data/shortcuts'
+import { fetchCovidExamData } from '@/api/inspections'
 import store from '@/store'
-import {createWorkSheet, writeExcelFile} from '@/utils/excel'
-import {ElMessage} from 'element-plus'
-import {stringNotBlank} from "@/utils/blank-utils";
+import { Export } from '@/utils/ExportExcel'
+import { ElMessage } from 'element-plus'
+import { stringNotBlank } from '@/utils/blank-utils'
 
 export default {
   setup() {
@@ -109,31 +123,48 @@ export default {
       store.commit('app/setLoading', true)
 
       const param = {
-        start: formatDate(dateRange.value[0]),
-        end: formatDate(dateRange.value[1]),
+        start: formatDatetime(dateRange.value[0]),
+        end: formatDatetime(dateRange.value[1]),
         currentPage: 1,
         pageSize: -1,
         type: type.value,
       }
       fetchCovidExamData(param).then((res) => {
-        res.list.forEach((item) => {
-          if (stringNotBlank(item.ordrCreateDate)) {
-            item.ordrCreateDate = item.ordrCreateDate.substring(0, 16)
+        let fileName
+        let title
+        if (type.value === 3) {
+          fileName = '新冠流调问卷.xlsx'
+          title = {
+            ptntName: '姓名',
+            idCard: '身份证',
+            phone: '电话',
+            date: '问卷日期',
+            address: '住址',
+            temperature: '体温',
+            feverNumber: '发烧温度',
+            item1: '14天内行程',
+            item2: '14天内接触风险地区人群',
+            item3: '14天内接触确诊患者',
+            item4: '14天内接触有症状人群',
+            item5: '14天内是否出现症状',
+            symptomsString: '14天内出现症状详情',
+            item6: '健康码颜色',
           }
-        })
-        const titName = type.value === 1 ? '新冠核酸检测' : '新冠抗体检测'
-        const fileName = titName + '(' + formatDate(dateRange.value[0]) + ' - ' + formatDate(dateRange.value[1]) + ').xlsx'
-        setTimeout(() => {
-          const title = {
+        } else {
+          res.list.forEach((item) => {
+            if (stringNotBlank(item.ordrCreateDate)) {
+              item.ordrCreateDate = item.ordrCreateDate.substring(0, 16)
+            }
+          })
+          fileName = type.value === 1 ? '新冠核酸检测.xlsx' : '新冠抗体检测.xlsx'
+          title = {
             ptntName: '姓名',
             idCard: '身份证',
             itmStrValue: '检测结果',
             ordrCreateDate: '送检时间',
           }
-          const fields = ['ptntName', 'idCard', 'itmStrValue', 'ordrCreateDate']
-          const workSheet = createWorkSheet(res.list, fields, title)
-          writeExcelFile(workSheet, fileName)
-        }, 50)
+        }
+        Export(res.list, title, fileName)
       })
     }
 
@@ -157,8 +188,9 @@ export default {
 
 function initTypes() {
   return [
-    {code: 1, name: '核酸检测'},
-    {code: 2, name: '抗体检测'},
+    { code: 1, name: '核酸检测' },
+    { code: 2, name: '抗体检测' },
+    { code: 3, name: '流调报告' },
   ]
 }
 </script>

Some files were not shown because too many files changed in this diff