|
@@ -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>
|