|
|
@ -1,6 +1,13 @@ |
|
|
|
<template> |
|
|
|
<div> |
|
|
|
<div class="dialog-h-content scroll-h"> |
|
|
|
|
|
|
|
<el-tabs v-model="activeName" |
|
|
|
type="card" |
|
|
|
class="main_tab" |
|
|
|
@tab-click="handleClick"> |
|
|
|
<el-tab-pane label="逐个添加" |
|
|
|
name="first"> |
|
|
|
<el-form ref="ref_form" |
|
|
|
:inline="true" |
|
|
|
:model="formData" |
|
|
@ -8,54 +15,6 @@ |
|
|
|
:disabled="formType==='look'" |
|
|
|
class="form"> |
|
|
|
|
|
|
|
<el-form-item label="录入方式" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-radio-group v-model="enterType" |
|
|
|
@change="handleChangeEnterType"> |
|
|
|
|
|
|
|
<el-radio :label="'1'">手动输入</el-radio> |
|
|
|
<el-radio :label="'2'">选择居民</el-radio> |
|
|
|
|
|
|
|
</el-radio-group> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="所属网格" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_2" |
|
|
|
v-model.trim="formData.gridId" |
|
|
|
placeholder="请选择" |
|
|
|
:disabled="!isFromResi" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in gridList" |
|
|
|
@click.native="handleSelGrid(item.value)" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="居民" |
|
|
|
prop="personId" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_2" |
|
|
|
v-model.trim="formData.personId" |
|
|
|
placeholder="请选择" |
|
|
|
filterable |
|
|
|
:disabled="!isFromResi" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in personList" |
|
|
|
@click.native="handleSelPerson(item)" |
|
|
|
:key="item.demandUserId" |
|
|
|
:label="item.demandUserName" |
|
|
|
:value="item.demandUserId"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="姓名" |
|
|
|
prop="name" |
|
|
|
label-width="150px" |
|
|
@ -64,7 +23,7 @@ |
|
|
|
placeholder="请输入姓名" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.name"> |
|
|
|
v-model="formData1.name"> |
|
|
|
</el-input> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
@ -77,7 +36,7 @@ |
|
|
|
placeholder="请输入手机号" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.phone"> |
|
|
|
v-model="formData1.phone"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="身份证号" |
|
|
@ -88,75 +47,28 @@ |
|
|
|
placeholder="请输入身份证号" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.idCard"> |
|
|
|
v-model="formData1.idCard"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="检测时间" |
|
|
|
style="display: block" |
|
|
|
prop="checkTime" |
|
|
|
label-width="150px"> |
|
|
|
<el-date-picker class="item_width_2" |
|
|
|
v-model="formData.checkTime" |
|
|
|
format="yyyy-MM-dd HH:mm" |
|
|
|
value-format="yyyy-MM-dd HH:mm" |
|
|
|
type="datetime" |
|
|
|
clearable |
|
|
|
placeholder="选择时间"> |
|
|
|
</el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="检测地点" |
|
|
|
prop="address" |
|
|
|
<el-form-item label="备注" |
|
|
|
prop="remark" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_1" |
|
|
|
placeholder="请输入检测地点" |
|
|
|
type="textarea" |
|
|
|
maxlength="500" |
|
|
|
show-word-limit |
|
|
|
:autosize="{ minRows: 2, maxRows: 5 }" |
|
|
|
clearable |
|
|
|
v-model="formData.address"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="检测结果" |
|
|
|
prop="type" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-radio-group v-model="formData.result"> |
|
|
|
|
|
|
|
<el-radio :label="'1'">阴性</el-radio> |
|
|
|
<el-radio :label="'2'">阳性</el-radio> |
|
|
|
|
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item class="block" |
|
|
|
label-width="150px" |
|
|
|
style="display: block" |
|
|
|
label="添加附件" |
|
|
|
prop="attach"> |
|
|
|
|
|
|
|
<el-upload class="upload-demo" |
|
|
|
:action="uploadUlr" |
|
|
|
accept=".doc,.pdf,.xls,.docx,.xlsx" |
|
|
|
:on-success="handleFileSuccess" |
|
|
|
:on-remove="handleFileRemove" |
|
|
|
:on-preview="handleFileDownload" |
|
|
|
:limit="3" |
|
|
|
:before-upload="beforeUpload" |
|
|
|
:file-list="fileList"> |
|
|
|
<el-button size="small" |
|
|
|
:disabled="fileList.length==3" |
|
|
|
type="primary">点击上传</el-button> |
|
|
|
<div slot="tip" |
|
|
|
class="el-upload__tip">最多三个附件,只能上传word、excel、pdf文件</div> |
|
|
|
</el-upload> |
|
|
|
placeholder="请输入通知备注" |
|
|
|
v-model="formData1.remark"></el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="通知渠道" |
|
|
|
prop="noticeWay" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-checkbox-group v-model="formData.noticeWay"> |
|
|
|
<el-checkbox-group v-model="formData1.noticeWay"> |
|
|
|
<el-checkbox key="1" |
|
|
|
label="1">小程序通知</el-checkbox> |
|
|
|
<el-checkbox key="2" |
|
|
@ -176,10 +88,100 @@ |
|
|
|
:autosize="{ minRows: 4, maxRows: 10 }" |
|
|
|
clearable |
|
|
|
placeholder="请输入通知内容" |
|
|
|
v-model="formData.noticeContent"></el-input> |
|
|
|
v-model="formData1.noticeContent"></el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
</el-tab-pane> |
|
|
|
<el-tab-pane label="批量添加" |
|
|
|
name="second"> |
|
|
|
<el-form :inline="true" |
|
|
|
:model="formData" |
|
|
|
ref="ref_searchform" |
|
|
|
:label-width="'90px'"> |
|
|
|
<el-form-item label="所属网格" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_2" |
|
|
|
v-model.trim="selGridId" |
|
|
|
placeholder="请选择" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in gridList" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="疫苗接种次数小于" |
|
|
|
label-width="150px"> |
|
|
|
<el-input-number v-model="veroNum" |
|
|
|
:min="0" |
|
|
|
:max="20" |
|
|
|
label="疫苗接种次数小于"></el-input-number> |
|
|
|
</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> |
|
|
|
|
|
|
|
</el-form> |
|
|
|
|
|
|
|
<el-table ref="ref_table" |
|
|
|
class="table" |
|
|
|
:data="tableData" |
|
|
|
border |
|
|
|
:height="tableHeight" |
|
|
|
v-loading="tableLoading" |
|
|
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
|
|
|
@select-all="selectAll" |
|
|
|
@selection-change="selectionChange" |
|
|
|
style="width: 100%"> |
|
|
|
<el-table-column type="selection" |
|
|
|
width="55"></el-table-column> |
|
|
|
<el-table-column label="序号" |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
type="index" |
|
|
|
width="50"></el-table-column> |
|
|
|
|
|
|
|
<el-table-column prop="personInCharge" |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
label="姓名" |
|
|
|
width="90"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="mobile" |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
label="手机号" |
|
|
|
width="110"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="gridNames" |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
label="身份证" |
|
|
|
min-width="170"> |
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
</el-table> |
|
|
|
<div> |
|
|
|
<el-pagination @size-change="handleSizeChange" |
|
|
|
@current-change="handleCurrentChange" |
|
|
|
:current-page.sync="pageNo" |
|
|
|
:page-sizes="[20, 50, 100, 200]" |
|
|
|
:page-size="pageSize" |
|
|
|
layout="sizes, prev, pager, next, total" |
|
|
|
:total="total"> |
|
|
|
</el-pagination> |
|
|
|
</div> |
|
|
|
|
|
|
|
</el-tab-pane> |
|
|
|
</el-tabs> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="form_div_btn"> |
|
|
@ -207,32 +209,36 @@ export default { |
|
|
|
data () { |
|
|
|
return { |
|
|
|
formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 |
|
|
|
enterType: '1',//录入方式1 手动输入 2 选择居民 |
|
|
|
isFromResi: false,//是否从已有居民信息中选择 |
|
|
|
|
|
|
|
activeName: "second", |
|
|
|
|
|
|
|
gridList: [], |
|
|
|
personList: [], |
|
|
|
selGridId: '', |
|
|
|
veroNum: null, |
|
|
|
|
|
|
|
|
|
|
|
btnDisable: false, |
|
|
|
|
|
|
|
natId: '', |
|
|
|
formData: { |
|
|
|
formData1: { |
|
|
|
name: '', |
|
|
|
idCard: '', |
|
|
|
phone: '', |
|
|
|
checkTime: '', |
|
|
|
address: '', |
|
|
|
result: '', |
|
|
|
remark: '', |
|
|
|
noticeWay: [], |
|
|
|
noticeContent: '', |
|
|
|
attachmentList: [] |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
formData2: { |
|
|
|
personList: [], |
|
|
|
remark: '', |
|
|
|
noticeWay: [], |
|
|
|
noticeContent: '', |
|
|
|
}, |
|
|
|
tableData: [], |
|
|
|
tableLoading: false, |
|
|
|
|
|
|
|
fileList: [], |
|
|
|
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/uploadvariedfile', |
|
|
|
dialogImageUrl: '', |
|
|
|
dialogVisible: false, |
|
|
|
selection: [],//选中的人员 |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
@ -261,72 +267,85 @@ export default { |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
handleChangeEnterType (value) { |
|
|
|
this.formData.name = '' |
|
|
|
this.formData.phone = '' |
|
|
|
this.formData.idCard = '' |
|
|
|
this.formData.gridId = '' |
|
|
|
this.formData.personId = '' |
|
|
|
if (value === '2') { |
|
|
|
this.isFromResi = true |
|
|
|
} else { |
|
|
|
this.isFromResi = false |
|
|
|
} |
|
|
|
|
|
|
|
handleSearch () { |
|
|
|
this.loadTable() |
|
|
|
}, |
|
|
|
|
|
|
|
async loadGrid () { |
|
|
|
const url = "/gov/org/customergrid/gridoption" |
|
|
|
async loadTable () { |
|
|
|
this.tableLoading = true |
|
|
|
|
|
|
|
const url = "/gov/org/placepatrolteam/getlist" |
|
|
|
// const url = "http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/getlist" |
|
|
|
let params = { |
|
|
|
agencyId: this.agencyId |
|
|
|
pageSize: this.pageSize, |
|
|
|
pageNo: this.pageNo, |
|
|
|
...this.formData |
|
|
|
} |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params) |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.gridList = data |
|
|
|
this.total = data.total |
|
|
|
this.tableData = data.list |
|
|
|
|
|
|
|
this.tableData.forEach(item => { |
|
|
|
if (item.time) { |
|
|
|
let timeArray = item.time.split(' ') |
|
|
|
item.time = timeArray[0] |
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
} else { |
|
|
|
this.$message.error(msg) |
|
|
|
} |
|
|
|
this.tableLoading = false |
|
|
|
}, |
|
|
|
|
|
|
|
handleSelectAll (selectAllFlag) { |
|
|
|
this.$refs.ref_table.clearSelection(); |
|
|
|
if (selectAllFlag) { |
|
|
|
this.tableData.forEach(row => { |
|
|
|
if (row.showBtn) { |
|
|
|
this.$refs.ref_table.toggleRowSelection(row); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
selectAll (selection) { |
|
|
|
this.selection = selection |
|
|
|
|
|
|
|
if (selection.length === this.validTableDataNum) { |
|
|
|
this.selAllFlag = true |
|
|
|
} else { |
|
|
|
this.selAllFlag = false |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
handleClick () { |
|
|
|
|
|
|
|
}, |
|
|
|
async handleSelGrid (value) { |
|
|
|
|
|
|
|
const url = "/epmetuser/icresiuser/demandusers" |
|
|
|
async loadGrid () { |
|
|
|
const url = "/gov/org/customergrid/gridoption" |
|
|
|
|
|
|
|
let params = { |
|
|
|
agencyId: this.agencyId, |
|
|
|
gridId: value |
|
|
|
agencyId: this.agencyId |
|
|
|
} |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params) |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.personList = data |
|
|
|
this.gridList = data |
|
|
|
|
|
|
|
} else { |
|
|
|
this.$message.error(msg) |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
async handleSelPerson (personItem) { |
|
|
|
this.formData.name = personItem.demandUserName |
|
|
|
this.formData.phone = personItem.demandUserMobile |
|
|
|
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 () { |
|
|
@ -357,8 +376,6 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
async handleComfirm () { |
|
|
|
|
|
|
|
|
|
|
|
this.btnDisable = true |
|
|
|
setTimeout(() => { |
|
|
|
this.btnDisable = false |
|
|
@ -431,61 +448,7 @@ export default { |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
beforeUpload (file) { |
|
|
|
const array = file.name.split('.') |
|
|
|
const extension = array[array.length - 1] |
|
|
|
const isLt1M = (file.size / 1024 / 1024) < 5 |
|
|
|
if (extension !== 'xls' |
|
|
|
&& extension !== 'xlsx' |
|
|
|
&& extension !== 'doc' |
|
|
|
&& extension !== 'docx' |
|
|
|
&& extension !== 'pdf') { |
|
|
|
this.$message.error('只能上传word、excel、pdf文件!') |
|
|
|
return false |
|
|
|
} |
|
|
|
if (!isLt1M) { |
|
|
|
this.$message.error('上传文件大小不能超过 5MB!') |
|
|
|
} |
|
|
|
return isLt1M |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
handleFileRemove (file) { |
|
|
|
|
|
|
|
if (file && file.status === "success") { |
|
|
|
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1) |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleFileSuccess (res, file) { |
|
|
|
|
|
|
|
if (res.code === 0 && res.msg === 'success') { |
|
|
|
const array = file.name.split('.') |
|
|
|
const fileType = array[array.length - 1] |
|
|
|
|
|
|
|
file.fileName = file.name |
|
|
|
file.attachmentUrl = res.data.url |
|
|
|
file.attachmentSize = file.size |
|
|
|
file.attachmentType = 'doc' |
|
|
|
file.attachmentFormat = fileType |
|
|
|
|
|
|
|
this.fileList.push(file) |
|
|
|
console.log(this.fileList) |
|
|
|
} 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 () { |
|
|
|
this.natId = '' |
|
|
@ -503,6 +466,18 @@ export default { |
|
|
|
|
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleSizeChange (val) { |
|
|
|
this.pageSize = val |
|
|
|
this.pageNo = 1 |
|
|
|
this.loadTable() |
|
|
|
}, |
|
|
|
handleCurrentChange (val) { |
|
|
|
this.pageNo = val |
|
|
|
this.loadTable() |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 开启加载动画 |
|
|
|
startLoading () { |
|
|
|
loading = Loading.service({ |
|
|
|