From f6cc602b74e7dd2aaa2da2e38dbb7df9c82307a7 Mon Sep 17 00:00:00 2001 From: 13176889840 <13176889840@163.com> Date: Thu, 7 Apr 2022 10:41:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/modules/base/epidemic/vaccin.vue | 489 +++++++++++++++------ 1 file changed, 347 insertions(+), 142 deletions(-) diff --git a/src/views/modules/base/epidemic/vaccin.vue b/src/views/modules/base/epidemic/vaccin.vue index 452751e3..4330a445 100644 --- a/src/views/modules/base/epidemic/vaccin.vue +++ b/src/views/modules/base/epidemic/vaccin.vue @@ -1,41 +1,47 @@ @@ -183,7 +235,7 @@ class="dialog-h" @closed="diaClose"> @@ -196,6 +248,7 @@ import natForm from './natInfo/natForm' import { requestPost } from "@/js/dai/request"; import { mapGetters } from 'vuex' +import { Loading } from 'element-ui' // 引入Loading服务 let loading // 加载动画 export default { @@ -203,19 +256,43 @@ export default { return { loading: false, total: 0, - pageSize: 10, + pageSize: 20, pageNo: 0, tableLoading: false, - sHeight: 0, + isResiUser: true, + agencyId: '', + orgTypeList: [ + { + value: 'current', + label: '本辖区居民检测记录' + }, + { + value: 'all', + label: '全部检测记录' + }, + ], + isResiUserList: [ + { + value: '0', + label: '否' + }, + { + value: '1', + label: '是' + }, + ], timeRange: [], formData: { - personInCharge: '',//负责人 - mobile: '',//联系电话 - gridId: '',//负责区域【网格Id】 - ninePlaceVal: '',//场所类型【九小场所Value值】 - isPage: true,//是否分页(是:true 否:false) 有这个参数是给新增巡查记录时用的,默认是 + searchType: 'current',//当前组织:current 根组织:all + name: '',//姓名 + mobile: '',//手机号 + idCard: '',//身份证号码 + startTime: '',//检测开始时间yyyy-MM-dd HH:mm + endTime: '',//检测结束时间yyyy-MM-dd HH:mm + isResiUser: ''//0:否 1:是 + }, tableData: [], @@ -241,22 +318,26 @@ export default { await this.loadTable() - this.sHeight = this.$refs.div_search.offsetHeight + 270 }, methods: { - handleSearch () { - this.loadTable() - }, + async handleSearch () { + this.isResiUser = this.formData.searchType === 'current' + await this.loadTable() + this.$nextTick(() => { + this.$refs.ref_table.doLayout() // 解决表格错位 + }) + + }, async loadTable () { this.tableLoading = true - const url = "/gov/org/placepatrolteam/getlist" - // const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/getlist" + const url = "/epmetuser/icVaccine/vaccine-list" + // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/natlist" let params = { pageSize: this.pageSize, pageNo: this.pageNo, @@ -270,26 +351,35 @@ export default { this.tableData = data.list this.tableData.forEach(item => { - if (item.time) { - let timeArray = item.time.split(' ') - item.time = timeArray[0] + + item.isResiUserShow = item.isResiUser === '0' ? '否' : '是' + if (item.natResult === '1') { + item.natResultShow = '阳性' + } else if (item.natResult === '0') { + item.natResultShow = '阴性' + } else { + item.natResultShow = '' } }); + + + + } else { this.$message.error(msg) } this.tableLoading = false }, - handleScheduledTimeChange (time) { + handleTimeChange (time) { if (time) { - this.formData.scheduledStartTime = time[0] - this.formData.scheduledEndTime = time[1] + this.formData.startTime = time[0] + this.formData.endTime = time[1] } else { - this.formData.scheduledStartTime = '' - this.formData.scheduledEndTime = '' + this.formData.startTime = '' + this.formData.endTime = '' } @@ -298,13 +388,14 @@ export default { diaClose () { this.$refs.ref_form.resetData() this.formShow = false + }, handleDetail (row) { this.formTitle = '详情' this.formShow = true this.$nextTick(() => { - this.$refs.ref_form.initForm('detail', row.natId, this.agencyId) + this.$refs.ref_form.initForm('detail', row.icNatId) }) }, @@ -312,7 +403,7 @@ export default { this.formTitle = '新增' this.formShow = true this.$nextTick(() => { - this.$refs.ref_form.initForm('add', null, this.agencyId) + this.$refs.ref_form.initForm('add', null) }) }, @@ -320,13 +411,10 @@ export default { this.formTitle = '修改' this.formShow = true this.$nextTick(() => { - this.$refs.ref_form.initForm('edit', row.natId, this.agencyId) + this.$refs.ref_form.initForm('edit', row.icNatId) }) }, - addFormCancle () { - this.formShow = false - }, addFormOk () { this.formShow = false this.loadTable() @@ -334,8 +422,9 @@ export default { }, async handleDelete (row) { + let message = '确认删除?' - this.$confirm("确认删除?", "提示", { + this.$confirm(message, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" @@ -343,6 +432,80 @@ export default { .then(() => { this.deleteNat(row) }) + .catch(err => { + + }); + }, + + async deleteNat (row) { + const url = "/epmetuser/icNat/del" + // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/del" + + let params = { + icNatId: row.icNatId + } + + const { data, code, msg } = await requestPost(url, params) + + if (code === 0) { + this.$message({ + type: "success", + message: "操作成功" + }); + + this.loadTable() + } else { + this.$message.error(msg) + } + }, + + async handleCancelAttention (row) { + let message = '取消同步后将不能在本辖区居民检测记录中查看,确认取消同步?' + + this.$confirm(message, "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + this.cancelAttention(row) + }) + .catch(err => { + + }); + }, + + async cancelAttention (row) { + const url = "/epmetuser/icVaccine/cancelsynchro" + + let params = { + vaccineId: row.vaccineId + } + + const { data, code, msg } = await requestPost(url, params) + + if (code === 0) { + this.$message({ + type: "success", + message: "操作成功" + }); + + this.loadTable() + } else { + this.$message.error(msg) + } + }, + + async handleAttention (row) { + + this.$confirm("确认将信息同步到本辖区核酸检测信息中心?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning" + }) + .then(() => { + this.attentionNat(row) + }) .catch(err => { if (err == "cancel") { @@ -351,12 +514,12 @@ export default { }); }, - async deleteNat (row) { - const url = "/gov/org/placepatrolteam/del" - // const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/del" + async attentionNat (row) { + const url = "/epmetuser/icVaccine/synchro" + // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/synchro" let params = { - natId: row.natId + vaccineId: row.vaccineId } const { data, code, msg } = await requestPost(url, params) @@ -364,7 +527,7 @@ export default { if (code === 0) { this.$message({ type: "success", - message: "删除成功" + message: "操作成功" }); this.loadTable() @@ -373,21 +536,23 @@ export default { } }, + //重置搜索条件 resetSearch () { this.formData = { - personInCharge: '',//负责人 - mobile: '',//联系电话 - gridId: '',//负责区域【网格Id】 - ninePlaceVal: '',//场所类型【九小场所Value值】 - isPage: true,//是否分页(是:true 否:false) 有这个参数是给新增巡查记录时用的,默认是 + searchType: 'current',//当前组织:current 根组织:all + name: '',//姓名 + mobile: '',//手机号 + idCard: '',//身份证号码 + startTime: '',//检测开始时间yyyy-MM-dd HH:mm + endTime: '',//检测结束时间yyyy-MM-dd HH:mm } - this.pageSize = 10 + this.timeRange = [] + this.pageNo = 0 - this.loadTable() + // this.loadTable() }, - handleSizeChange (val) { this.pageSize = val this.pageNo = 1 @@ -400,27 +565,37 @@ export default { //导出表格 async handleExport () { - let title = this.agencyObj.label - title = title + '—房屋列表' + let title = '核酸检测信息' - const url = "/gov/org/house/exporthouseinfo" - let params = { - ownerName: this.ownerName, - ownerPhone: this.ownerPhone, - buildingId: this.agencyObj.id - } + const url = "/epmetuser/icVaccine/export" - app.ajax.exportFilePost( + await this.$http({ + method: 'POST', url, - params, - (data, rspMsg) => { - - this.download(data, title + '.xls') - }, - (rspMsg, data) => { - this.$message.error(rspMsg); - } - ); + responseType: 'blob' + }) + .then(res => { + console.log('res----dddd', res) + // this.download(res.data, title + '.xls') + if (res.headers["content-disposition"]) { + let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1]) + console.log('filename', fileName) + let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }) + var url = window.URL.createObjectURL(blob) + var aLink = document.createElement('a') + aLink.style.display = 'none' + aLink.href = url + aLink.setAttribute('download', fileName) + document.body.appendChild(aLink) + aLink.click() + document.body.removeChild(aLink) //下载完成移除元素 + window.URL.revokeObjectURL(url) //释放掉blob对象 + } else this.$message.error('下载失败') + }) + .catch(err => { + console.log('err', err) + return this.$message.error('网络错误') + }) }, @@ -450,37 +625,53 @@ export default { }, - handleExportModule () { - let title = '' - title = '房屋模板' + async handleExportModule () { + let title = '核酸检测信息导入模板' - const url = "/gov/org/house/exporttemplate" + const url = "/epmetuser/icVaccine/import-template-download" let params = {} - - app.ajax.exportFilePost( + await this.$http({ + method: 'POST', url, - params, - (data, rspMsg) => { - - this.download(data, title + '.xls') - }, - (rspMsg, data) => { - this.$message.error(rspMsg); - } - ); + responseType: 'blob', + data: params + }) + .then(res => { + console.log('res----dddd', res) + // this.download(res.data, title + '.xls') + if (res.headers["content-disposition"]) { + let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1]) + console.log('filename', fileName) + let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }) + var url = window.URL.createObjectURL(blob) + var aLink = document.createElement('a') + aLink.style.display = 'none' + aLink.href = url + aLink.setAttribute('download', fileName) + document.body.appendChild(aLink) + aLink.click() + document.body.removeChild(aLink) //下载完成移除元素 + window.URL.revokeObjectURL(url) //释放掉blob对象 + } else this.$message.error('下载失败') + }) + .catch(err => { + console.log('err', err) + return this.$message.error('网络错误') + }) + this.$refs.upload.clearFiles() }, // 上传文件之前的钩子 beforeUpload (file) { - this.files = file; - const isText = file.type === 'application/vnd.ms-excel' - const isTextComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' - - if (!isText && !isTextComputer) { - this.$message.error('请选择正确格式的文件') + const array = file.name.split('.') + const extension = array[array.length - 1] + // const isLt1M = (file.size / 1024 / 1024) < 5 + if (extension !== 'xlsx') { + this.$message.error('只能上传xlsx文件!') return false } else { + this.files = file; this.fileName = file.name; return true } @@ -506,19 +697,17 @@ export default { //清空上传列表 this.$refs['upload'].clearFiles() - var url = '/gov/org/house/houseimport' + var url = '/epmetuser/icVaccine/import' let fileFormData = new FormData(); fileFormData.append('file', this.files);//filename是键,file是值,就是要传的文件,test.zip是要传的文件名 - fileFormData.append('orgId', this.agencyObj.id);//filename是键,file是值,就是要传的文件,test.zip是要传的文件名 - fileFormData.append('orgType', this.agencyObj.level);//filename是键,file是值,就是要传的文件,test.zip是要传的文件名 - this.importRoomLoading = true window.app.ajax.post2(url, fileFormData, (data, rspMsg) => { if (data.code === 0 && data.msg == 'success') { // this.$message.success('导入成功') + this.loadTable() } else { // this.$message({ // showClose: true, @@ -526,24 +715,40 @@ export default { // duration: 0, // type: "error" // }) - // this.$message.error(rspMsg) + this.$message.error(rspMsg) } - this.$emit('refreshTree') - this.loadTable() - this.importRoomLoading = false + + + }, (rspMsg, data) => { - this.importRoomLoading = false + }, { headers: { 'Content-Type': 'multipart/form-data' } }) + }, + + // 开启加载动画 + startLoading () { + loading = Loading.service({ + lock: true, // 是否锁定 + text: '正在加载……', // 加载中需要显示的文字 + background: 'rgba(0,0,0,.7)' // 背景颜色 + }) + }, + // 结束加载动画 + endLoading () { + // clearTimeout(timer); + if (loading) { + loading.close() + } } }, computed: { tableHeight () { - const h = this.clientHeight - this.sHeight + this.iframeHeigh - const _h = this.clientHeight - this.sHeight - return this.$store.state.inIframe ? h : _h + + return this.$store.state.inIframe ? this.clientHeight - 420 + this.iframeHeight : this.clientHeight - 420 + },