Browse Source

核酸检测

bugfix/member_move_out
jiangyy 4 years ago
parent
commit
7552765aa3
  1. 32
      src/assets/scss/modules/management/epidemic.scss
  2. 339
      src/views/modules/base/epidemic/natInfo/natForm.vue
  3. 283
      src/views/modules/base/epidemic/natInfo/natList.vue
  4. 105
      src/views/modules/base/epidemic/veroFocus/veroFocusList.vue
  5. 35
      src/views/modules/base/epidemic/veroFocus/vfSendNotice.vue

32
src/assets/scss/modules/management/epidemic.scss

@ -1,20 +1,22 @@
.item_width_1 { .epidemic-form {
width: 560px; .item_width_1 {
} width: 560px;
.item_width_2 { }
width: 220px; .item_width_2 {
} width: 220px;
.item_width_3 { }
width: 180px; .item_width_3 {
} width: 180px;
}
.btn-selperson { .btn-selperson {
margin-left: 20px; margin-left: 20px;
} }
.form_div_btn { .form_div_btn {
margin-top: 20px; margin-top: 20px;
text-align: center; text-align: center;
}
} }
.main_tab { .main_tab {

339
src/views/modules/base/epidemic/natInfo/natForm.vue

@ -1,14 +1,15 @@
<template> <template>
<div> <div class="epidemic-form">
<div class="dialog-h-content scroll-h"> <div class="dialog-h-content scroll-h">
<el-form ref="ref_form" <el-form ref="ref_form"
:inline="true" :inline="true"
:model="formData" :model="formData"
:rules="dataRule" :rules="dataRule"
:disabled="formType==='look'" :disabled="formType==='detail'"
class="form"> class="form">
<el-form-item label="录入方式" <el-form-item v-if="formType==='add'"
label="录入方式"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-radio-group v-model="enterType" <el-radio-group v-model="enterType"
@ -21,7 +22,8 @@
</el-form-item> </el-form-item>
<el-form-item label="所属网格" <el-form-item v-if="formType==='add'"
label="所属网格"
style="display: block" style="display: block"
label-width="150px"> label-width="150px">
<el-select class="item_width_2" <el-select class="item_width_2"
@ -37,12 +39,13 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="居民" <el-form-item v-if="formType==='add'"
prop="personId" label="居民"
prop="userId"
style="display: block" style="display: block"
label-width="150px"> label-width="150px">
<el-select class="item_width_2" <el-select class="item_width_2"
v-model.trim="formData.personId" v-model.trim="formData.userId"
placeholder="请选择" placeholder="请选择"
filterable filterable
:disabled="!isFromResi" :disabled="!isFromResi"
@ -70,14 +73,14 @@
</el-form-item> </el-form-item>
<el-form-item label="手机号" <el-form-item label="手机号"
prop="phone" prop="mobile"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_2" <el-input class="item_width_2"
placeholder="请输入手机号" placeholder="请输入手机号"
clearable clearable
:disabled="isFromResi" :disabled="isFromResi"
v-model="formData.phone"> v-model="formData.mobile">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="身份证号" <el-form-item label="身份证号"
@ -94,10 +97,10 @@
<el-form-item label="检测时间" <el-form-item label="检测时间"
style="display: block" style="display: block"
prop="checkTime" prop="natTime"
label-width="150px"> label-width="150px">
<el-date-picker class="item_width_2" <el-date-picker class="item_width_2"
v-model="formData.checkTime" v-model="formData.natTime"
format="yyyy-MM-dd HH:mm" format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm"
type="datetime" type="datetime"
@ -107,13 +110,13 @@
</el-form-item> </el-form-item>
<el-form-item label="检测地点" <el-form-item label="检测地点"
prop="address" prop="natAddress"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
placeholder="请输入检测地点" placeholder="请输入检测地点"
clearable clearable
v-model="formData.address"> v-model="formData.natAddress">
</el-input> </el-input>
</el-form-item> </el-form-item>
@ -121,10 +124,10 @@
prop="type" prop="type"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-radio-group v-model="formData.result"> <el-radio-group v-model="formData.natResult">
<el-radio :label="'1'">阴性</el-radio> <el-radio :label="'0'">阴性</el-radio>
<el-radio :label="'2'">阳性</el-radio> <el-radio :label="'1'">阳性</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
@ -132,41 +135,42 @@
<el-form-item class="block" <el-form-item class="block"
label-width="150px" label-width="150px"
style="display: block" style="display: block"
label="添加附件" label="添加图片"
prop="attach"> prop="attach">
<el-upload class="upload-demo" <el-upload :action="uploadUlr"
:action="uploadUlr" list-type="picture-card"
accept=".doc,.pdf,.xls,.docx,.xlsx" :limit="limitNum"
:class="{hide:hideUploadEdit}"
accept=".jpg,.png,.gif"
:on-preview="handlePictureCardPreview"
:on-success="handleFileSuccess" :on-success="handleFileSuccess"
:on-remove="handleFileRemove" :on-remove="handleRemove"
:on-preview="handleFileDownload"
:limit="3"
:before-upload="beforeUpload" :before-upload="beforeUpload"
:on-change="handleEditChange"
:file-list="fileList"> :file-list="fileList">
<el-button size="small" <i class="el-icon-plus"></i>
:disabled="fileList.length==3"
type="primary">点击上传</el-button>
<div slot="tip" <div slot="tip"
class="el-upload__tip">最多三个附件只能上传wordexcelpdf文件</div> class="el-upload__tip">请选择1张图片只能上传jpgpnggif格式</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="通知渠道" <el-form-item label="通知渠道"
prop="noticeWay" prop="channel"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-checkbox-group v-model="formData.noticeWay"> <el-checkbox-group v-model="formData.channel">
<el-checkbox key="0"
label="0">小程序通知</el-checkbox>
<el-checkbox key="1" <el-checkbox key="1"
label="1">小程序通知</el-checkbox> label="1">短信通知</el-checkbox>
<el-checkbox key="2"
label="2">短信通知</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="通知内容" <el-form-item label="通知内容"
prop="noticeContent" prop="content"
label-width="150px" label-width="150px"
style="display: block"> style="display: block">
<el-input class="item_width_1" <el-input class="item_width_1"
@ -176,22 +180,31 @@
:autosize="{ minRows: 4, maxRows: 10 }" :autosize="{ minRows: 4, maxRows: 10 }"
clearable clearable
placeholder="请输入通知内容" placeholder="请输入通知内容"
v-model="formData.noticeContent"></el-input> v-model="formData.content"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="div_btn"> <div class="form_div_btn">
<el-button size="small" <el-button size="small"
@click="handleCancle"> </el-button> @click="handleCancle"> </el-button>
<el-button v-if="formType != 'look'" <el-button v-if="formType != 'detail'"
size="small" size="small"
type="primary" type="primary"
:disabled="btnDisable" :disabled="btnDisable"
@click="handleComfirm"> </el-button> @click="handleComfirm"> </el-button>
</div> </div>
<el-dialog :visible.sync="dialogVisible"
width="550px"
top="5vh"
append-to-body>
<img width="100%"
:src="dialogImageUrl"
alt="">
</el-dialog>
</div> </div>
</template> </template>
@ -207,6 +220,8 @@ export default {
data () { data () {
return { return {
formType: 'add', // addeditdetail formType: 'add', // addeditdetail
hideUploadEdit: false, // ''
limitNum: 1,
enterType: '1',//1 2 enterType: '1',//1 2
isFromResi: false,// isFromResi: false,//
@ -215,46 +230,54 @@ export default {
btnDisable: false, btnDisable: false,
natId: '', icNatId: '',
formData: { formData: {
icNatId: '',
agencyId: '',//Id
userId: '',//idicResiUserId
userType: 'icresi',//resi;icresi;import;synchro
name: '', name: '',
idCard: '', idCard: '',
phone: '', mobile: '',
checkTime: '', natTime: '',
address: '', natAddress: '',
result: '', natResult: '',
noticeWay: [], channel: [],
noticeContent: '', content: '',
attachmentList: []
fileName: '',//
attachmentType: '',// - image - video - voice - doc
attachmentUrl: '',//
}, },
fileList: [], fileList: [],
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile',
dialogImageUrl: '', dialogImageUrl: '',
dialogVisible: false, dialogVisible: false,
} }
}, },
components: {}, components: {},
async mounted () { async mounted () {
const { user } = this.$store.state const { user } = this.$store.state
this.agencyId = user.agencyId this.agencyId = user.agencyId
this.formData.agencyId = user.agencyId
// //
await this.loadGrid() await this.loadGrid()
}, },
methods: { methods: {
async initForm (type, natId) { async initForm (type, icNatId) {
this.startLoading() this.startLoading()
this.$refs['ref_form'].resetFields(); this.$refs['ref_form'].resetFields();
this.formType = type this.formType = type
if (natId) {
this.natId = natId if (icNatId) {
this.formData.id = natId this.icNatId = icNatId
this.formData.icNatId = icNatId
this.isFromResi = false
await this.loadFormData() await this.loadFormData()
} }
this.endLoading() this.endLoading()
@ -263,10 +286,10 @@ export default {
handleChangeEnterType (value) { handleChangeEnterType (value) {
this.formData.name = '' this.formData.name = ''
this.formData.phone = '' this.formData.mobile = ''
this.formData.idCard = '' this.formData.idCard = ''
this.formData.gridId = '' this.formData.gridId = ''
this.formData.personId = '' this.formData.userId = ''
if (value === '2') { if (value === '2') {
this.isFromResi = true this.isFromResi = true
} else { } else {
@ -312,72 +335,52 @@ export default {
}, },
async handleSelPerson (personItem) { async handleSelPerson (personItem) {
this.formData.userId = personItem.demandUserId
this.formData.name = personItem.demandUserName this.formData.name = personItem.demandUserName
this.formData.phone = personItem.demandUserMobile this.formData.mobile = personItem.demandUserMobile
this.formData.idCard = personItem.idCard this.formData.idCard = personItem.idCard
}, },
handleTime () {
if (!this.formData.remindTime) return
var startAt = new Date(this.formData.remindTime) * 1000 / 1000;
if (startAt < Date.now()) {
this.formData.remindTime = dateFormats('YYYY-mm-dd HH:MM', new Date());
}
},
async loadFormData () { async loadFormData () {
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern' // const url = 'http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/detail'
const url = '/gov/project/memoConcern' const url = '/epmetuser/icNat/detail'
let params = { let params = {
id: this.natId, icNatId: this.icNatId,
readFlag: '0',
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
if (code === 0) { if (code === 0) {
this.formData = data this.formData = data
this.formData.icNatId = this.icNatId
if (data.attachmentList) { this.fileList = []
data.attachmentList.forEach(element => { if (data.fileName) {
element.name = element.fileName let obj = {
element.type = element.attachmentType name: data.fileName,
element.size = element.attachmentSize type: data.attachmentType,
}); url: data.attachmentUrl,
this.fileList = data.attachmentList }
// data.attachmentList.forEach(element => {
// element.name = element.fileName
// element.type = element.attachmentType
// element.size = element.attachmentSize
// });
this.fileList.push(obj)
} }
this.hideUploadEdit = this.fileList.length >= this.limitNum;
} else { } else {
this.$message.error(msg) this.$message.error(msg)
} }
}, },
async handleComfirm () {
async handleComfirm () {
this.btnDisable = true this.btnDisable = true
setTimeout(() => { setTimeout(() => {
this.btnDisable = false this.btnDisable = false
}, 5000) }, 5000)
this.$refs['ref_form'].validate(async (valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj)
this.btnDisable = false
} else {
await this.addNat()
}
})
},
async addNat () {
console.log(this.formData)
return false
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; // const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
// if (regPhone.test(this.formData.mobile) === false) { // if (regPhone.test(this.formData.mobile) === false) {
@ -387,21 +390,26 @@ export default {
// message: '' // message: ''
// }) // })
// return false; // return false;
// } // }
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //1518151817X
if (this.fileList.length > 0) { // if (regCard.test(this.formData.idCard) === false) {
this.formData.attachmentList = this.fileList // this.btnDisable = false
} // this.$message({
// type: 'warning',
// message: ''
// })
// return false;
// }
let url = '' let url = ''
if (this.formType === 'add') { if (this.formType === 'add') {
url = '/gov/project/memoConcern/save' url = '/epmetuser/icNat/add'
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save" // url = "http://yapi.elinkservice.cn/mock/102/epmetuser/icNat/add"
this.formData.id = '' this.formData.icNatId = ''
} else { } else {
url = '/gov/project/memoConcern/update' url = '/epmetuser/icNat/edit'
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/update" // url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/edit"
} }
@ -415,8 +423,7 @@ export default {
this.resetData() this.resetData()
this.$emit('dialogOk') this.$emit('dialogOk')
this.btnDisable = false this.btnDisable = false
this.$store.dispatch('setTipsList')
this.$store.dispatch('setTipsTime')
} else { } else {
this.btnDisable = false this.btnDisable = false
this.$message.error(msg) this.$message.error(msg)
@ -425,81 +432,85 @@ export default {
}, },
handleCancle () { handleCancle () {
this.resetData() this.resetData()
this.$emit('dialogCancle') this.$emit('dialogCancle')
}, },
handleRemove (file, fileList) {
this.hideUploadEdit = fileList.length >= this.limitNum;
this.formData.fileName = ''
this.formData.attachmentUrl = ''
this.formData.attachmentType = ''
this.fileList = []
},
handlePictureCardPreview (file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
handleEditChange (file, fileList) {
this.hideUploadEdit = fileList.length >= this.limitNum;
},
beforeUpload (file) { beforeUpload (file) {
const array = file.name.split('.') const array = file.name.split('.')
const extension = array[array.length - 1] const extension = array[array.length - 1]
const isLt1M = (file.size / 1024 / 1024) < 5 // const isLt1M = (file.size / 1024 / 1024) < 5
if (extension !== 'xls' if (extension !== 'jpg'
&& extension !== 'xlsx' && extension !== 'png'
&& extension !== 'doc' && extension !== 'gif'
&& extension !== 'docx' ) {
&& extension !== 'pdf') { this.$message.error('只能上传jpg、png、gif文件!')
this.$message.error('只能上传word、excel、pdf文件!')
return false return false
} }
if (!isLt1M) { // if (!isLt1M) {
this.$message.error('上传文件大小不能超过 5MB!') // this.$message.error(' 5MB!')
} // }
return isLt1M return isLt1M
}, },
handleFileRemove (file) {
if (file && file.status === "success") {
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1)
}
},
handleFileSuccess (res, file) { handleFileSuccess (res, file) {
if (res.code === 0 && res.msg === 'success') { if (res.code === 0 && res.msg === 'success') {
const array = file.name.split('.') const array = file.name.split('.')
const fileType = array[array.length - 1] const fileType = array[array.length - 1]
file.fileName = file.name this.formData.fileName = file.name
file.attachmentUrl = res.data.url this.formData.attachmentUrl = res.data.url
file.attachmentSize = file.size this.formData.attachmentType = 'image'
file.attachmentType = 'doc'
file.attachmentFormat = fileType file.attachmentFormat = fileType
file.attachmentSize = file.size
this.fileList.push(file)
console.log(this.fileList)
} else this.$message.error(res.msg) } else this.$message.error(res.msg)
}, },
//
handleFileDownload (file) {
var a = document.createElement('a');
var event = new MouseEvent('click');
a.download = file.fileName;
console.log(a)
a.href = file.attachmentUrl;
a.dispatchEvent(event);
},
resetData () { resetData () {
this.natId = '' this.icNatId = ''
this.fileList = []
this.hideUploadEdit = false
this.formData = { this.formData = {
icNatId: '',
agencyId: '',//Id
userId: '',//idicResiUserId
userType: 'icresi',//resi;icresi;import;synchro
name: '', name: '',
idCard: '', idCard: '',
phone: '', mobile: '',
checkTime: '', natTime: '',
address: '', natAddress: '',
result: '', natResult: '',
noticeWay: [], channel: [],
noticeContent: '', content: '',
attachmentList: []
fileName: '',//
attachmentType: '',// - image - video - voice - doc
attachmentUrl: '',//
} }
}, },
@ -528,26 +539,26 @@ export default {
idCard: [ idCard: [
{ required: true, message: '身份证号不能为空', trigger: 'blur' } { required: true, message: '身份证号不能为空', trigger: 'blur' }
], ],
phone: [ mobile: [
{ required: true, message: '手机号不能为空', trigger: 'blur' }, { required: true, message: '手机号不能为空', trigger: 'blur' },
], ],
checkTime: [ natTime: [
{ required: true, message: '检测时间不能为空', trigger: 'blur' }, { required: true, message: '检测时间不能为空', trigger: 'blur' },
], ],
address: [ natAddress: [
{ required: false }, { required: false },
], ],
result: [ natResult: [
{ required: true }, { required: true },
], ],
address: [ natAddress: [
{ required: false }, { required: false },
], ],
noticeWay: [ channel: [
{ required: false }, { required: false },
], ],
noticeContent: [ content: [
{ required: false }, { required: false },
], ],
@ -572,4 +583,16 @@ export default {
@import "@/assets/scss/modules/management/epidemic.scss"; @import "@/assets/scss/modules/management/epidemic.scss";
</style> </style>
<style lang='scss'>
//
.hide .el-upload--picture-card {
display: none;
}
// /
.el-upload-list__item {
transition: none !important;
}
</style>

283
src/views/modules/base/epidemic/natInfo/natList.vue

@ -6,10 +6,22 @@
ref="ref_searchform" ref="ref_searchform"
:label-width="'90px'"> :label-width="'90px'">
<div> <div>
<el-form-item label="信息范围">
<el-select class="list_item_width_1"
size="small"
v-model.trim="formData.orgType"
placeholder="请选择">
<el-option v-for="item in orgTypeList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="姓名" <el-form-item label="姓名"
prop="personInCharge"> prop="name">
<el-input v-model="formData.personInCharge" <el-input v-model="formData.name"
size="small" size="small"
class="list_item_width_1" class="list_item_width_1"
clearable clearable
@ -18,39 +30,52 @@
</el-form-item> </el-form-item>
<el-form-item label="身份证" <el-form-item label="手机号"
prop="mobile"> prop="mobile">
<el-input v-model="formData.mobile" <el-input v-model="formData.mobile"
size="small" size="small"
class="list_item_width_1" class="list_item_width_1"
clearable clearable
placeholder="请输入身份证"> placeholder="请输入手机号">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="身份证"
<el-form-item label="接种时间" prop="idCard">
prop="scheduledStartTime"> <el-input v-model="formData.idCard"
<el-date-picker v-model="timeRange" size="small"
size="small" class="list_item_width_1"
type="daterange" clearable
value-format="yyyy-MM-dd" placeholder="请输入身份证">
@change="handleScheduledTimeChange" </el-input>
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item> </el-form-item>
<div>
<el-button style="margin-left:30px"
size="small" <el-form-item label="接种时间"
class="diy-button--search" prop="startTime">
@click="handleSearch">查询</el-button> <el-date-picker v-model="timeRange"
<el-button style="margin-left:10px" size="small"
size="small" type="datetimerange"
class="diy-button--reset" @change="handleTimeChange"
@click="resetSearch">重置</el-button> format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
<el-button style="margin-left:30px"
size="small"
class="diy-button--search"
@click="handleSearch">查询</el-button>
<el-button style="margin-left:10px"
size="small"
class="diy-button--reset"
@click="resetSearch">重置</el-button>
</div>
</div> </div>
</el-form> </el-form>
</div> </div>
@ -97,11 +122,11 @@
type="index" type="index"
width="50"></el-table-column> width="50"></el-table-column>
<el-table-column prop="personInCharge" <el-table-column prop="name"
header-align="center" header-align="center"
align="center" align="center"
label="姓名" label="姓名"
width="90"> width="100">
</el-table-column> </el-table-column>
<el-table-column prop="mobile" <el-table-column prop="mobile"
header-align="center" header-align="center"
@ -109,31 +134,31 @@
label="手机号" label="手机号"
width="110"> width="110">
</el-table-column> </el-table-column>
<el-table-column prop="gridNames" <el-table-column prop="idCard"
header-align="center" header-align="center"
align="center" align="center"
label="身份证" label="身份证"
min-width="170"> width="170">
</el-table-column> </el-table-column>
<el-table-column prop="time" <el-table-column prop="natTime"
header-align="center" header-align="center"
align="center" align="center"
label="检测时间" label="检测时间"
width="120"> width="170">
</el-table-column> </el-table-column>
<el-table-column prop="ninePlaceNames" <el-table-column prop="natAddress"
header-align="center" header-align="center"
align="center" align="center"
show-overflow-tooltip show-overflow-tooltip
label="检测机构" label="检测机构"
min-width="230"> min-width="230">
</el-table-column> </el-table-column>
<el-table-column prop="ninePlaceNames" <el-table-column prop="natResultShow"
header-align="center" header-align="center"
align="center" align="center"
show-overflow-tooltip show-overflow-tooltip
label="检测结果" label="检测结果"
min-width="80"> width="100">
</el-table-column> </el-table-column>
<el-table-column label="操作" <el-table-column label="操作"
@ -148,16 +173,49 @@
class="div-table-button--detail" class="div-table-button--detail"
size="small" size="small"
@click="handleDetail(scope.row)">查看</el-button> @click="handleDetail(scope.row)">查看</el-button>
<el-button type="text"
<el-button v-if="scope.row.userType==='resi'||scope.row.userType==='icresi'"
type="text"
class="div-table-button--edit"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button v-if="scope.row.userType==='resi'||scope.row.userType==='icresi'"
type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'delete')">删除</el-button>
<el-button v-if="scope.row.userType==='import'&&scope.row.agencyId!==agencyId"
type="text"
class="div-table-button--edit"
size="small"
@click="handleAttention(scope.row)">关注</el-button>
<el-button v-if="scope.row.userType==='synchro'&&scope.row.agencyId===agencyId"
type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'attention')">取消关注</el-button>
<!-- <el-button type="text"
class="div-table-button--edit" class="div-table-button--edit"
size="small" size="small"
@click="handleEdit(scope.row)">修改</el-button> @click="handleEdit(scope.row)">修改</el-button>
<el-button type="text" <el-button type="text"
class="div-table-button--delete--noline " class="div-table-button--delete "
size="small" size="small"
@click="handleDelete(scope.row)">删除</el-button> @click="handleDelete(scope.row,'delete')">删除</el-button>
<el-button type="text"
class="div-table-button--edit"
size="small"
@click="handleAttention(scope.row)">关注</el-button>
<el-button type="text"
class="div-table-button--delete "
size="small"
@click="handleDelete(scope.row,'attention')">取消关注</el-button> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -183,7 +241,7 @@
class="dialog-h" class="dialog-h"
@closed="diaClose"> @closed="diaClose">
<nat-form ref="ref_form" <nat-form ref="ref_form"
@dialogCancle="addFormCancle" @dialogCancle="diaClose"
@dialogOk="addFormOk"></nat-form> @dialogOk="addFormOk"></nat-form>
</el-dialog> </el-dialog>
@ -204,19 +262,31 @@ export default {
return { return {
loading: false, loading: false,
total: 0, total: 0,
pageSize: 10, pageSize: 20,
pageNo: 0, pageNo: 0,
tableLoading: false, tableLoading: false,
agencyId: '', agencyId: '',
orgTypeList: [
{
value: 'current',
label: '本辖区居民检测记录'
},
{
value: 'all',
label: '全部检测记录'
},
],
timeRange: [], timeRange: [],
formData: { formData: {
personInCharge: '',// orgType: 'current',//:current all
mobile: '',// name: '',//
gridId: '',//Id mobile: '',//
ninePlaceVal: '',//Value idCard: '',//
isPage: true,//(:true :false) startTime: '',//yyyy-MM-dd HH:mm
endTime: '',//yyyy-MM-dd HH:mm
}, },
tableData: [], tableData: [],
@ -249,14 +319,11 @@ export default {
this.loadTable() this.loadTable()
}, },
async loadTable () { async loadTable () {
this.tableLoading = true this.tableLoading = true
const url = "/gov/org/placepatrolteam/getlist" const url = "/epmetuser/icNat/natlist"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/getlist" // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/natlist"
let params = { let params = {
pageSize: this.pageSize, pageSize: this.pageSize,
pageNo: this.pageNo, pageNo: this.pageNo,
@ -270,10 +337,7 @@ export default {
this.tableData = data.list this.tableData = data.list
this.tableData.forEach(item => { this.tableData.forEach(item => {
if (item.time) { item.natResultShow = item.natResult === '1' ? '阳性' : '阴性'
let timeArray = item.time.split(' ')
item.time = timeArray[0]
}
}); });
} else { } else {
@ -282,14 +346,14 @@ export default {
this.tableLoading = false this.tableLoading = false
}, },
handleScheduledTimeChange (time) { handleTimeChange (time) {
if (time) { if (time) {
this.formData.scheduledStartTime = time[0] this.formData.startTime = time[0]
this.formData.scheduledEndTime = time[1] this.formData.endTime = time[1]
} else { } else {
this.formData.scheduledStartTime = '' this.formData.startTime = ''
this.formData.scheduledEndTime = '' this.formData.endTime = ''
} }
@ -298,13 +362,14 @@ export default {
diaClose () { diaClose () {
this.$refs.ref_form.resetData() this.$refs.ref_form.resetData()
this.formShow = false this.formShow = false
}, },
handleDetail (row) { handleDetail (row) {
this.formTitle = '详情' this.formTitle = '详情'
this.formShow = true this.formShow = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_form.initForm('detail', row.natId, this.agencyId) this.$refs.ref_form.initForm('detail', row.icNatId)
}) })
}, },
@ -312,7 +377,7 @@ export default {
this.formTitle = '新增' this.formTitle = '新增'
this.formShow = true this.formShow = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_form.initForm('add', null, this.agencyId) this.$refs.ref_form.initForm('add', null)
}) })
}, },
@ -320,22 +385,20 @@ export default {
this.formTitle = '修改' this.formTitle = '修改'
this.formShow = true this.formShow = true
this.$nextTick(() => { 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 () { addFormOk () {
this.formShow = false this.formShow = false
this.loadTable() this.loadTable()
}, },
async handleDelete (row) { async handleDelete (row, type) {
let message = type === 'delete' ? '确认删除?' : '确认取消关注?'
this.$confirm("确认删除?", "提示", { this.$confirm(message, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning" type: "warning"
@ -343,6 +406,43 @@ export default {
.then(() => { .then(() => {
this.deleteNat(row) 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 handleAttention (row) {
this.$confirm("确认同步该条信息?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.attentionNat(row)
})
.catch(err => { .catch(err => {
if (err == "cancel") { if (err == "cancel") {
@ -351,12 +451,12 @@ export default {
}); });
}, },
async deleteNat (row) { async attentionNat (row) {
const url = "/gov/org/placepatrolteam/del" const url = "/epmetuser/icNat/synchro"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/del" // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNat/synchro"
let params = { let params = {
natId: row.natId icNatId: row.icNatId
} }
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
@ -364,7 +464,7 @@ export default {
if (code === 0) { if (code === 0) {
this.$message({ this.$message({
type: "success", type: "success",
message: "删除成功" message: "操作成功"
}); });
this.loadTable() this.loadTable()
@ -373,18 +473,21 @@ export default {
} }
}, },
// //
resetSearch () { resetSearch () {
this.formData = { this.formData = {
personInCharge: '',// orgType: 'current',//:current all
mobile: '',// name: '',//
gridId: '',//Id mobile: '',//
ninePlaceVal: '',//Value idCard: '',//
isPage: true,//(:true :false) startTime: '',//yyyy-MM-dd HH:mm
endTime: '',//yyyy-MM-dd HH:mm
} }
this.pageSize = 10 this.timeRange = []
this.pageNo = 0 this.pageNo = 0
this.loadTable() // this.loadTable()
}, },
@ -400,19 +503,13 @@ export default {
// //
async handleExport () { async handleExport () {
let title = this.agencyObj.label let title = '核酸检测信息'
title = title + '—房屋列表'
const url = "/gov/org/house/exporthouseinfo" const url = "/epmetuser/icNat/export"
let params = {
ownerName: this.ownerName,
ownerPhone: this.ownerPhone,
buildingId: this.agencyObj.id
}
app.ajax.exportFilePost( app.ajax.exportFilePost(
url, url,
params, this.formData,
(data, rspMsg) => { (data, rspMsg) => {
this.download(data, title + '.xls') this.download(data, title + '.xls')
@ -451,10 +548,9 @@ export default {
}, },
handleExportModule () { handleExportModule () {
let title = '' let title = '核酸检测信息导入模板'
title = '房屋模板'
const url = "/gov/org/house/exporttemplate" const url = "/epmetuser/icNat/import-template-download"
let params = {} let params = {}
app.ajax.exportFilePost( app.ajax.exportFilePost(
@ -506,12 +602,11 @@ export default {
// //
this.$refs['upload'].clearFiles() this.$refs['upload'].clearFiles()
var url = '/gov/org/house/houseimport' var url = '/epmetuser/icNat/import'
let fileFormData = new FormData(); let fileFormData = new FormData();
fileFormData.append('file', this.files);//filenamefiletest.zip fileFormData.append('file', this.files);//filenamefiletest.zip
fileFormData.append('orgId', this.agencyObj.id);//filenamefiletest.zip
fileFormData.append('orgType', this.agencyObj.level);//filenamefiletest.zip
this.importRoomLoading = true this.importRoomLoading = true
window.app.ajax.post2(url, fileFormData, window.app.ajax.post2(url, fileFormData,
@ -559,7 +654,7 @@ export default {
computed: { computed: {
tableHeight () { tableHeight () {
return this.$store.state.inIframe ? this.clientHeight - 360 + this.iframeHeight : this.clientHeight - 360 return this.$store.state.inIframe ? this.clientHeight - 420 + this.iframeHeight : this.clientHeight - 420
}, },

105
src/views/modules/base/epidemic/veroFocus/veroFocusList.vue

@ -18,8 +18,8 @@
</el-form-item> </el-form-item>
<el-form-item label="手机号" <el-form-item label="手机号"
prop="phone"> prop="mobile">
<el-input v-model="formData.phone" <el-input v-model="formData.mobile"
size="small" size="small"
class="list_item_width_1" class="list_item_width_1"
clearable clearable
@ -40,9 +40,9 @@
</el-form-item> </el-form-item>
<el-form-item label="接种针次" <el-form-item label="接种针次"
prop="veroNum"> prop="vaccinationCount">
<el-select class="list_item_width_1" <el-select class="list_item_width_1"
v-model.trim="formData.veroNum" v-model.trim="formData.vaccinationCount"
placeholder="请选择" placeholder="请选择"
clearable> clearable>
<el-option v-for="item in veroNumList" <el-option v-for="item in veroNumList"
@ -98,6 +98,10 @@
class="diy-button--more" class="diy-button--more"
size="small" size="small"
@click="handleSendNotice">发送通知</el-button> @click="handleSendNotice">发送通知</el-button>
<el-button style="margin-left:15px"
class="diy-button--more"
size="small"
@click="handleDelete">取消关注</el-button>
</div> </div>
<el-table ref="ref_table" <el-table ref="ref_table"
@ -119,7 +123,7 @@
type="index" type="index"
width="50"></el-table-column> width="50"></el-table-column>
<el-table-column prop="personInCharge" <el-table-column prop="name"
header-align="center" header-align="center"
align="center" align="center"
label="姓名" label="姓名"
@ -131,31 +135,31 @@
label="手机号" label="手机号"
width="110"> width="110">
</el-table-column> </el-table-column>
<el-table-column prop="gridNames" <el-table-column prop="idCard"
header-align="center" header-align="center"
align="center" align="center"
label="身份证" label="身份证"
min-width="170"> min-width="170">
</el-table-column> </el-table-column>
<el-table-column prop="time" <el-table-column prop="vaccinationCount"
header-align="center" header-align="center"
align="center" align="center"
label="检测时间" label="接种针次"
width="120"> width="100">
</el-table-column> </el-table-column>
<el-table-column prop="ninePlaceNames" <el-table-column prop="remark"
header-align="center" header-align="center"
align="center" align="center"
show-overflow-tooltip show-overflow-tooltip
label="检测机构" label="备注"
min-width="230"> min-width="230">
</el-table-column> </el-table-column>
<el-table-column prop="ninePlaceNames" <el-table-column prop="lastInformTime"
header-align="center" header-align="center"
align="center" align="center"
show-overflow-tooltip show-overflow-tooltip
label="检测结果" label="最后一次通知时间"
min-width="80"> min-width="120">
</el-table-column> </el-table-column>
<el-table-column label="操作" <el-table-column label="操作"
@ -184,20 +188,14 @@
<el-button type="text" <el-button type="text"
class="div-table-button--detail--noline" class="div-table-button--detail--noline"
size="small" size="small"
@click="handleDelete(scope.row)">通知记录</el-button> @click="handleNoticeList(scope.row)">通知记录</el-button>
</div> </div>
<div class="more-btn"> <div class="more-btn">
<el-button type="text" <el-button type="text"
class="div-table-button--detail--noline" class="div-table-button--detail--noline"
size="small" size="small"
@click="handleDelete(scope.row) ">随访记录</el-button> @click="handleVisiteList(scope.row) ">随访记录</el-button>
</div>
<div class="more-btn">
<el-button type="text"
class="div-table-button--delete--noline "
size="small"
@click="handleDelete(scope.row)">取消关注</el-button>
</div> </div>
<el-button type="text" <el-button type="text"
@ -258,8 +256,7 @@
class="dialog-h" class="dialog-h"
@closed="diaClose"> @closed="diaClose">
<vf-send-notice ref="ref_sendnotice" <vf-send-notice ref="ref_sendnotice"
@dialogCancle="diaClose" @dialogCancle="diaClose"></vf-send-notice>
@dialogOk="addFormOk"></vf-send-notice>
</el-dialog> </el-dialog>
<!-- 随访记录弹出框 --> <!-- 随访记录弹出框 -->
<el-dialog :visible.sync="noticeListFormShow" <el-dialog :visible.sync="noticeListFormShow"
@ -271,8 +268,7 @@
class="dialog-h" class="dialog-h"
@closed="diaClose"> @closed="diaClose">
<vf-notice-list ref="ref_visitelist" <vf-notice-list ref="ref_visitelist"
@dialogCancle="diaClose" @dialogCancle="diaClose"></vf-notice-list>
@dialogOk="addFormOk"></vf-notice-list>
</el-dialog> </el-dialog>
<!-- 通知记录弹出框 --> <!-- 通知记录弹出框 -->
<el-dialog :visible.sync="visiteListFormShow" <el-dialog :visible.sync="visiteListFormShow"
@ -308,21 +304,20 @@ export default {
return { return {
loading: false, loading: false,
total: 0, total: 0,
pageSize: 10, pageSize: 20,
pageNo: 0, pageNo: 0,
tableLoading: false, tableLoading: false,
selAllFlag: false,
isIndeterminate: false,//
selection: [], selection: [],
showDeletBtn: false,
agencyId: '', agencyId: '',
formData: { formData: {
attentionType: 1,//21
name: '', name: '',
phone: '', mobile: '',
idCard: '', idCard: '',
veroNum: '', vaccinationCount: '',
}, },
veroNumList: [], veroNumList: [],
@ -365,8 +360,8 @@ export default {
async loadTable () { async loadTable () {
this.tableLoading = true this.tableLoading = true
const url = "/gov/org/placepatrolteam/getlist" const url = "/epmetuser/icEpidemicSpecialAttention/list"
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/getlist" // const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icEpidemicSpecialAttention/list"
let params = { let params = {
pageSize: this.pageSize, pageSize: this.pageSize,
pageNo: this.pageNo, pageNo: this.pageNo,
@ -463,14 +458,15 @@ export default {
}, },
diaClose () { diaClose () {
this.addFormShow = false
this.editFormShow = false
this.sendNoticeFormShow = false
this.noticeListFormShow = false
this.visiteListFormShow = false
this.formShow = false
}, },
handleAdd () { handleAdd () {
this.addFormShow = true this.addFormShow = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_form_add.initForm(null, this.agencyId) this.$refs.ref_form_add.initForm(null, this.agencyId)
@ -478,7 +474,6 @@ export default {
}, },
handleEdit (row) { handleEdit (row) {
this.editFormShow = true this.editFormShow = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ref_form_edit.initForm('edit', row.veroFocusId) this.$refs.ref_form_edit.initForm('edit', row.veroFocusId)
@ -492,7 +487,6 @@ export default {
}) })
}, },
handleSendNotice () { handleSendNotice () {
if (this.selectionAll.length === 0) { if (this.selectionAll.length === 0) {
this.$message.info('请选择要通知的人员') this.$message.info('请选择要通知的人员')
@ -505,9 +499,26 @@ export default {
}, },
handleNoticeList (row) {
this.noticeListFormShow = true
this.$nextTick(() => {
this.$refs.ref_visitelist.initForm(row)
})
},
handleVisiteList (row) {
this.visiteListFormShow = true
this.$nextTick(() => {
this.$refs.ref_noticelist.initForm(row)
})
},
addFormOk () { addFormOk () {
this.formShow = false this.addFormShow = false
this.editFormShow = false
this.loadTable() this.loadTable()
}, },
@ -555,13 +566,13 @@ export default {
// //
resetSearch () { resetSearch () {
this.formData = { this.formData = {
personInCharge: '',// attentionType: 1,//21
mobile: '',// name: '',
gridId: '',//Id mobile: '',
ninePlaceVal: '',//Value idCard: '',
isPage: true,//(:true :false) vaccinationCount: '',
} }
this.pageSize = 10
this.pageNo = 0 this.pageNo = 0
this.loadTable() this.loadTable()
}, },

35
src/views/modules/base/epidemic/veroFocus/vfSendNotice.vue

@ -75,6 +75,7 @@ export default {
noticeContent: '', noticeContent: '',
}, },
selectionAll: []
@ -88,13 +89,11 @@ export default {
methods: { methods: {
async initForm () { async initForm (selectionAll) {
this.startLoading()
this.$refs['ref_form1'].resetFields();
this.$refs['ref_form1'].resetFields();
this.selectionAll = selectionAll
this.endLoading()
}, },
@ -112,27 +111,10 @@ export default {
console.log(this.formData) console.log(this.formData)
return false return false
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //
// if (regPhone.test(this.formData.mobile) === false) {
// this.btnDisable = false
// this.$message({
// type: 'warning',
// message: ''
// })
// return false;
// }
let url = '' let url = ''
if (this.formType === 'add') {
url = '/gov/project/memoConcern/save'
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save"
this.formData.id = ''
} else { url = '/gov/project/memoConcern/update'
url = '/gov/project/memoConcern/update' // url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/update"
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/update"
}
const { data, code, msg } = await requestPost(url, this.formData) const { data, code, msg } = await requestPost(url, this.formData)
@ -143,10 +125,9 @@ export default {
message: '操作成功' message: '操作成功'
}) })
this.resetData() this.resetData()
this.$emit('dialogOk') this.$emit('dialogCancle')
this.btnDisable = false this.btnDisable = false
this.$store.dispatch('setTipsList')
this.$store.dispatch('setTipsTime')
} else { } else {
this.btnDisable = false this.btnDisable = false
this.$message.error(msg) this.$message.error(msg)

Loading…
Cancel
Save