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