12 changed files with 2410 additions and 1051 deletions
@ -0,0 +1,699 @@ |
|||||
|
<template> |
||||
|
<div class="epidemic-form"> |
||||
|
<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_form1" |
||||
|
:inline="true" |
||||
|
:model="formData1" |
||||
|
:rules="dataRule1" |
||||
|
class="form"> |
||||
|
|
||||
|
<el-form-item label="姓名" |
||||
|
prop="name" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_2" |
||||
|
placeholder="请输入姓名" |
||||
|
clearable |
||||
|
v-model="formData1.name"> |
||||
|
</el-input> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="手机号" |
||||
|
prop="mobile" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_2" |
||||
|
placeholder="请输入手机号" |
||||
|
clearable |
||||
|
v-model="formData1.mobile"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="身份证号" |
||||
|
prop="idCard" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_2" |
||||
|
placeholder="请输入身份证号" |
||||
|
clearable |
||||
|
v-model="formData1.idCard"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="备注" |
||||
|
prop="remark" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="500" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 2, maxRows: 5 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知备注" |
||||
|
v-model="formData1.remark"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="通知渠道" |
||||
|
prop="channel" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-checkbox-group v-model="formData1.channel"> |
||||
|
<el-checkbox key="1" |
||||
|
label="1">小程序通知</el-checkbox> |
||||
|
<!-- <el-checkbox key="2" |
||||
|
label="2">短信通知</el-checkbox> --> |
||||
|
|
||||
|
</el-checkbox-group> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="通知内容" |
||||
|
prop="content" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="1000" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 4, maxRows: 10 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知内容" |
||||
|
v-model="formData1.content"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
</el-tab-pane> |
||||
|
<el-tab-pane label="批量添加" |
||||
|
name="second"> |
||||
|
|
||||
|
<div class="div-mult-table"> |
||||
|
<el-form :inline="true" |
||||
|
:model="formDataSearch" |
||||
|
ref="ref_formSearch" |
||||
|
:label-width="'90px'"> |
||||
|
<el-form-item label="所属网格" |
||||
|
label-width="80px"> |
||||
|
<el-select class="item_width_3" |
||||
|
v-model.trim="formDataSearch.gridId" |
||||
|
placeholder="请选择" |
||||
|
size="mini" |
||||
|
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 class="item_width_3" |
||||
|
v-model="formDataSearch.vaccineCount" |
||||
|
size="mini" |
||||
|
:min="0" |
||||
|
:max="20" |
||||
|
label="疫苗接种次数小于"></el-input-number> |
||||
|
</el-form-item> |
||||
|
<el-button style="margin-left:30px" |
||||
|
size="mini" |
||||
|
class="diy-button--search" |
||||
|
@click="handleSearch">查询</el-button> |
||||
|
<el-button style="margin-left:10px" |
||||
|
size="mini" |
||||
|
class="diy-button--reset" |
||||
|
@click="resetSearch">重置</el-button> |
||||
|
</el-form> |
||||
|
<el-table ref="ref_table" |
||||
|
class="table" |
||||
|
size="mini" |
||||
|
:data="tableData" |
||||
|
border |
||||
|
:height="tableHeight" |
||||
|
v-loading="tableLoading" |
||||
|
:reserve-selection="true" |
||||
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
||||
|
@select="handleSelectTable" |
||||
|
@select-all="handleSelAll" |
||||
|
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="name" |
||||
|
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="idCard" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="身份证" |
||||
|
min-width="170"> |
||||
|
</el-table-column> |
||||
|
<el-table-column prop="idCard" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="疫苗接种次数" |
||||
|
min-width="100"> |
||||
|
</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> |
||||
|
|
||||
|
</div> |
||||
|
<div class="div-mult-form"> |
||||
|
|
||||
|
<!-- <div class="div_person"> |
||||
|
<div class="person_title">已选居民</div> |
||||
|
<div v-if="selectionAll.length>0"> |
||||
|
<el-tag class="tag_item" |
||||
|
v-for="(tag,index) in selectionAll" |
||||
|
:key="index" |
||||
|
:disable-transitions="false" |
||||
|
@close="handleCloseTag(tag,index)" |
||||
|
closable> |
||||
|
{{tag.name}} |
||||
|
</el-tag> |
||||
|
</div> |
||||
|
<div v-else |
||||
|
class="tag_tip">请从列表中选择居民</div> |
||||
|
</div> --> |
||||
|
<el-form :inline="true" |
||||
|
:model="formData2" |
||||
|
ref="ref_form2" |
||||
|
:label-width="'90px'"> |
||||
|
<el-form-item label="已选择人数" |
||||
|
label-width="100px" |
||||
|
style="display: block"> |
||||
|
<span> {{selectionAll.length}}</span> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="备注" |
||||
|
prop="remark" |
||||
|
label-width="100px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="500" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 2, maxRows: 5 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知备注" |
||||
|
v-model="formData2.remark"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="通知渠道" |
||||
|
prop="channel" |
||||
|
label-width="100px" |
||||
|
style="display: block"> |
||||
|
<el-checkbox-group v-model="formData2.channel"> |
||||
|
<el-checkbox key="0" |
||||
|
label="0">小程序通知</el-checkbox> |
||||
|
<el-checkbox key="1" |
||||
|
label="1">短信通知</el-checkbox> |
||||
|
|
||||
|
</el-checkbox-group> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="通知内容" |
||||
|
prop="content" |
||||
|
label-width="100px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="1000" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 4, maxRows: 10 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知内容" |
||||
|
v-model="formData2.content"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</el-tab-pane> |
||||
|
</el-tabs> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="form_div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
<el-button size="small" |
||||
|
type="primary" |
||||
|
:disabled="btnDisable" |
||||
|
@click="handleComfirm">确 定</el-button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
|
||||
|
activeName: "first", |
||||
|
|
||||
|
gridList: [], |
||||
|
|
||||
|
btnDisable: false, |
||||
|
|
||||
|
formDataSearch: { |
||||
|
gridId: '', |
||||
|
vaccineCount: undefined, |
||||
|
}, |
||||
|
|
||||
|
formData1: { |
||||
|
attentionType: 1, |
||||
|
name: '', |
||||
|
idCard: '', |
||||
|
mobile: '', |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
formData2: { |
||||
|
attentionType: 1, |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
}, |
||||
|
tableData: [], |
||||
|
total: 0, |
||||
|
pageSize: 20, |
||||
|
pageNo: 1, |
||||
|
tableLoading: false, |
||||
|
|
||||
|
selectionAll: [],//选中的人员 |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
async mounted () { |
||||
|
const { user } = this.$store.state |
||||
|
this.agencyId = user.agencyId |
||||
|
//获取网格下拉框数据 |
||||
|
await this.loadGrid() |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm () { |
||||
|
|
||||
|
this.$refs['ref_form1'].resetFields(); |
||||
|
this.$refs['ref_form2'].resetFields(); |
||||
|
|
||||
|
await this.loadTable() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleSearch () { |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
async loadTable () { |
||||
|
this.tableLoading = true |
||||
|
|
||||
|
// const url = "/epmetuser/epidemicPrevention/page" |
||||
|
const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/epidemicPrevention/page" |
||||
|
let params = { |
||||
|
pageSize: this.pageSize, |
||||
|
pageNo: this.pageNo, |
||||
|
...this.formDataSearch |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.total = data.total |
||||
|
data.list.forEach(element => { |
||||
|
element.isSel = false |
||||
|
}); |
||||
|
this.tableData = data.list |
||||
|
|
||||
|
this.analysisTableSelection() |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
this.tableLoading = false |
||||
|
}, |
||||
|
|
||||
|
handleSelectTable (selection, row) { |
||||
|
|
||||
|
row.isSel = !row.isSel |
||||
|
|
||||
|
if (row.isSel) { |
||||
|
this.selectionAll.push(row) |
||||
|
} else { |
||||
|
for (let i = 0; i < this.selectionAll.length; i++) { |
||||
|
let item = this.selectionAll[i] |
||||
|
if (item.idCard === row.idCard) { |
||||
|
this.selectionAll.splice(i, 1) |
||||
|
break |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleSelAll (selection) { |
||||
|
let selFlag = selection.length > 0//全选选中 还是 全选不选中 |
||||
|
for (let i = 0; i < this.tableData.length; i++) { |
||||
|
let tableItem = this.tableData[i] |
||||
|
tableItem.isSel = selFlag |
||||
|
let isHasItem = false |
||||
|
for (let j = 0; j < this.selectionAll.length; j++) { |
||||
|
let selectionItem = this.selectionAll[j] |
||||
|
if (selectionItem.idCard === tableItem.idCard) { |
||||
|
isHasItem = true |
||||
|
if (!selFlag) { |
||||
|
this.selectionAll.splice(j, 1) |
||||
|
break |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
if (!isHasItem && selFlag) { |
||||
|
this.selectionAll.push(tableItem) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//删除标签 |
||||
|
handleCloseTag (tag, index) { |
||||
|
for (let i = 0; i < this.tableData.length; i++) { |
||||
|
|
||||
|
let tableItem = this.tableData[i] |
||||
|
if (tag.idCard === tableItem.idCard) {//如果表中存在这个数据 |
||||
|
tableItem.isSel = false |
||||
|
this.$refs.ref_table.toggleRowSelection(tableItem); |
||||
|
break |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
for (let i = 0; i < this.selectionAll.length; i++) { |
||||
|
let item = this.selectionAll[i] |
||||
|
if (item.idCard === tag.idCard) { |
||||
|
this.selectionAll.splice(i, 1) |
||||
|
break |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
//回显列表选中的行 |
||||
|
analysisTableSelection () { |
||||
|
this.$nextTick(() => { |
||||
|
this.tableData.forEach(tableItem => { |
||||
|
|
||||
|
|
||||
|
for (let j = 0; j < this.selectionAll.length; j++) { |
||||
|
let selectionItem = this.selectionAll[j] |
||||
|
|
||||
|
if (selectionItem.idCard === tableItem.idCard) { |
||||
|
tableItem.isSel = true |
||||
|
break |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
if (tableItem.isSel) { |
||||
|
this.$refs.ref_table.toggleRowSelection(tableItem); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleClick () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
async loadGrid () { |
||||
|
const url = "/gov/org/customergrid/gridoption" |
||||
|
|
||||
|
let params = { |
||||
|
agencyId: this.agencyId |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.gridList = data |
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
async handleComfirm () { |
||||
|
let list = [] |
||||
|
if (this.activeName === 'first') { |
||||
|
list.push(this.formData1) |
||||
|
|
||||
|
const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码 |
||||
|
if (regPhone.test(this.formData1.mobile) === false) { |
||||
|
this.btnDisable = false |
||||
|
this.$message({ |
||||
|
type: 'warning', |
||||
|
message: '请输入正确的手机号码' |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
const regCard = /(^\d{15}$)|(^\d{17}(\d|X)$)/; //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X |
||||
|
if (regCard.test(this.formData1.idCard) === false) { |
||||
|
this.btnDisable = false |
||||
|
this.$message({ |
||||
|
type: 'warning', |
||||
|
message: '请输入正确的身份证号码' |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
if (this.formData1.channel.length > 0 && !this.formData1.content) { |
||||
|
this.$message({ |
||||
|
type: 'warning', |
||||
|
message: '请填写通知内容' |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
} else { |
||||
|
|
||||
|
|
||||
|
if (this.selectionAll.length === 0) { |
||||
|
this.$message.info('请选择批量添加的人员') |
||||
|
return false |
||||
|
} |
||||
|
|
||||
|
if (this.formData2.channel.length > 0 && !this.formData2.content) { |
||||
|
this.$message({ |
||||
|
type: 'warning', |
||||
|
message: '请填写通知内容' |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
this.selectionAll.forEach(element => { |
||||
|
let obj = { |
||||
|
name: element.name, |
||||
|
idCard: element.idCard, |
||||
|
mobile: element.mobile, |
||||
|
|
||||
|
...this.formData2 |
||||
|
} |
||||
|
|
||||
|
list.push(obj) |
||||
|
}); |
||||
|
|
||||
|
} |
||||
|
console.log(list) |
||||
|
|
||||
|
this.btnDisable = true |
||||
|
setTimeout(() => { |
||||
|
this.btnDisable = false |
||||
|
}, 5000) |
||||
|
let url = '/epmetuser/icEpidemicSpecialAttention/vaccination-add' |
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/save" |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogOk') |
||||
|
this.btnDisable = false |
||||
|
|
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
resetSearch () { |
||||
|
this.formDataSearch = { |
||||
|
gridId: '', |
||||
|
vaccineCount: undefined, |
||||
|
|
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
destroyed () { |
||||
|
console.log(11111111) |
||||
|
}, |
||||
|
|
||||
|
resetData () { |
||||
|
|
||||
|
this.formData1 = { |
||||
|
name: '', |
||||
|
idCard: '', |
||||
|
mobile: '', |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
attentionType: 1, |
||||
|
} |
||||
|
|
||||
|
this.formData2 = { |
||||
|
attentionType: 1, |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
} |
||||
|
this.formDataSearch = { |
||||
|
gridId: '', |
||||
|
vaccineCount: undefined, |
||||
|
} |
||||
|
|
||||
|
this.selectionAll = []//选中的人员 |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
return 300 |
||||
|
|
||||
|
}, |
||||
|
...mapGetters(['clientHeight', 'iframeHeight']), |
||||
|
|
||||
|
dataRule1 () { |
||||
|
|
||||
|
return { |
||||
|
name: [ |
||||
|
{ required: true, message: '姓名不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
idCard: [ |
||||
|
{ required: true, message: '身份证号不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
mobile: [ |
||||
|
{ required: true, message: '手机号不能为空', trigger: 'blur' }, |
||||
|
], |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
|
||||
|
|
||||
|
// serviceList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/epidemic.scss"; |
||||
|
</style> |
||||
|
|
||||
|
|
@ -0,0 +1,287 @@ |
|||||
|
<template> |
||||
|
<div class="epidemic-form"> |
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
|
||||
|
<el-form ref="ref_form1" |
||||
|
:inline="true" |
||||
|
:model="formData" |
||||
|
:disabled="formType==='detail'" |
||||
|
class="form"> |
||||
|
|
||||
|
<el-form-item label="姓名" |
||||
|
prop="name" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<span>{{formData.name}}</span> |
||||
|
<!-- <el-input class="item_width_2" |
||||
|
placeholder="请输入姓名" |
||||
|
clearable |
||||
|
|
||||
|
v-model="formData.name"> |
||||
|
</el-input> --> |
||||
|
|
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="手机号" |
||||
|
prop="mobile" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<span>{{formData.mobile}}</span> |
||||
|
<!-- <el-input class="item_width_2" |
||||
|
placeholder="请输入手机号" |
||||
|
clearable |
||||
|
v-model="formData.mobile"> |
||||
|
</el-input> --> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="身份证号" |
||||
|
prop="idCard" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<span>{{formData.idCard}}</span> |
||||
|
<!-- <el-input class="item_width_2" |
||||
|
placeholder="请输入身份证号" |
||||
|
clearable |
||||
|
v-model="formData.idCard"> |
||||
|
</el-input> --> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="备注" |
||||
|
prop="remark" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
:disabled="formType==='detail'" |
||||
|
maxlength="500" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 2, maxRows: 5 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知备注" |
||||
|
v-model="formData.remark"></el-input> |
||||
|
</el-form-item> |
||||
|
<div v-if=" formType!=='detail'"> |
||||
|
<el-form-item label="通知渠道" |
||||
|
prop="channel" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-checkbox-group v-model="formData.channel"> |
||||
|
<el-checkbox key="0" |
||||
|
label="0">小程序通知</el-checkbox> |
||||
|
<!-- <el-checkbox key="1" |
||||
|
label="1">短信通知</el-checkbox> --> |
||||
|
|
||||
|
</el-checkbox-group> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="通知内容" |
||||
|
prop="content" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="1000" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 4, maxRows: 10 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知内容" |
||||
|
v-model="formData.content"></el-input> |
||||
|
</el-form-item> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="form_div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
<el-button v-if="formType!=='detail'" |
||||
|
size="small" |
||||
|
type="primary" |
||||
|
:disabled="btnDisable" |
||||
|
@click="handleComfirm">确 定</el-button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
|
||||
|
formType: "edit", |
||||
|
|
||||
|
gridList: [], |
||||
|
|
||||
|
btnDisable: false, |
||||
|
|
||||
|
formData: { |
||||
|
attentionType: 1, |
||||
|
name: '', |
||||
|
idCard: '', |
||||
|
mobile: '', |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
async mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm (formType, row) { |
||||
|
this.formType = formType |
||||
|
this.$refs['ref_form1'].resetFields(); |
||||
|
row.channel = [] |
||||
|
row.content = '' |
||||
|
this.formData = JSON.parse(JSON.stringify(row)) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
async handleComfirm () { |
||||
|
if (this.formData.channel.length > 0 && !this.formData.content) { |
||||
|
this.$message({ |
||||
|
type: 'warning', |
||||
|
message: '请填写通知内容' |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
this.btnDisable = true |
||||
|
setTimeout(() => { |
||||
|
this.btnDisable = false |
||||
|
}, 5000) |
||||
|
let url = '/epmetuser/icEpidemicSpecialAttention/vaccination-update' |
||||
|
|
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icEpidemicSpecialAttention/vaccination-update" |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogOk') |
||||
|
this.btnDisable = false |
||||
|
|
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
resetData () { |
||||
|
this.veroId = '' |
||||
|
|
||||
|
this.formData = { |
||||
|
name: '', |
||||
|
idCard: '', |
||||
|
mobile: '', |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
return 200 |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight', 'iframeHeight']), |
||||
|
dataRule () { |
||||
|
return { |
||||
|
name: [ |
||||
|
{ required: true, message: '姓名不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
idCard: [ |
||||
|
{ required: true, message: '身份证号不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
mobile: [ |
||||
|
{ required: true, message: '手机号不能为空', trigger: 'blur' }, |
||||
|
], |
||||
|
|
||||
|
|
||||
|
|
||||
|
channel: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
content: [ |
||||
|
{ required: false }, |
||||
|
], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
|
||||
|
|
||||
|
// serviceList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/epidemic.scss"; |
||||
|
</style> |
||||
|
|
||||
|
|
@ -1,594 +0,0 @@ |
|||||
<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" |
|
||||
:rules="dataRule" |
|
||||
:disabled="formType==='look'" |
|
||||
class="form"> |
|
||||
|
|
||||
<el-form-item label="姓名" |
|
||||
prop="name" |
|
||||
label-width="150px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_2" |
|
||||
placeholder="请输入姓名" |
|
||||
clearable |
|
||||
:disabled="isFromResi" |
|
||||
v-model="formData1.name"> |
|
||||
</el-input> |
|
||||
|
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="手机号" |
|
||||
prop="phone" |
|
||||
label-width="150px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_2" |
|
||||
placeholder="请输入手机号" |
|
||||
clearable |
|
||||
:disabled="isFromResi" |
|
||||
v-model="formData1.phone"> |
|
||||
</el-input> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="身份证号" |
|
||||
prop="idCard" |
|
||||
label-width="150px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_2" |
|
||||
placeholder="请输入身份证号" |
|
||||
clearable |
|
||||
:disabled="isFromResi" |
|
||||
v-model="formData1.idCard"> |
|
||||
</el-input> |
|
||||
</el-form-item> |
|
||||
<el-form-item label="备注" |
|
||||
prop="remark" |
|
||||
label-width="150px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_1" |
|
||||
type="textarea" |
|
||||
maxlength="500" |
|
||||
show-word-limit |
|
||||
:autosize="{ minRows: 2, maxRows: 5 }" |
|
||||
clearable |
|
||||
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="formData1.noticeWay"> |
|
||||
<el-checkbox key="1" |
|
||||
label="1">小程序通知</el-checkbox> |
|
||||
<el-checkbox key="2" |
|
||||
label="2">短信通知</el-checkbox> |
|
||||
|
|
||||
</el-checkbox-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="通知内容" |
|
||||
prop="noticeContent" |
|
||||
label-width="150px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_1" |
|
||||
type="textarea" |
|
||||
maxlength="1000" |
|
||||
show-word-limit |
|
||||
:autosize="{ minRows: 4, maxRows: 10 }" |
|
||||
clearable |
|
||||
placeholder="请输入通知内容" |
|
||||
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="formData2" |
|
||||
ref="ref_searchform" |
|
||||
:label-width="'90px'"> |
|
||||
<el-form-item label="所属网格" |
|
||||
label-width="80px"> |
|
||||
<el-select class="item_width_3" |
|
||||
v-model.trim="selGridId" |
|
||||
placeholder="请选择" |
|
||||
size="mini" |
|
||||
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 class="item_width_3" |
|
||||
v-model="veroNum" |
|
||||
size="mini" |
|
||||
:min="0" |
|
||||
:max="20" |
|
||||
label="疫苗接种次数小于"></el-input-number> |
|
||||
</el-form-item> |
|
||||
<el-button style="margin-left:30px" |
|
||||
size="mini" |
|
||||
class="diy-button--search" |
|
||||
@click="handleSearch">查询</el-button> |
|
||||
<el-button style="margin-left:10px" |
|
||||
size="mini" |
|
||||
class="diy-button--reset" |
|
||||
@click="resetSearch">重置</el-button> |
|
||||
|
|
||||
<el-table ref="ref_table" |
|
||||
class="table" |
|
||||
size="mini" |
|
||||
: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-form-item label="备注" |
|
||||
prop="remark" |
|
||||
label-width="100px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_1" |
|
||||
type="textarea" |
|
||||
maxlength="500" |
|
||||
show-word-limit |
|
||||
:autosize="{ minRows: 2, maxRows: 5 }" |
|
||||
clearable |
|
||||
placeholder="请输入通知备注" |
|
||||
v-model="formData2.remark"></el-input> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="通知渠道" |
|
||||
prop="noticeWay" |
|
||||
label-width="100px" |
|
||||
style="display: block"> |
|
||||
<el-checkbox-group v-model="formData2.noticeWay"> |
|
||||
<el-checkbox key="1" |
|
||||
label="1">小程序通知</el-checkbox> |
|
||||
<el-checkbox key="2" |
|
||||
label="2">短信通知</el-checkbox> |
|
||||
|
|
||||
</el-checkbox-group> |
|
||||
</el-form-item> |
|
||||
|
|
||||
<el-form-item label="通知内容" |
|
||||
prop="noticeContent" |
|
||||
label-width="100px" |
|
||||
style="display: block"> |
|
||||
<el-input class="item_width_1" |
|
||||
type="textarea" |
|
||||
maxlength="1000" |
|
||||
show-word-limit |
|
||||
:autosize="{ minRows: 4, maxRows: 10 }" |
|
||||
clearable |
|
||||
placeholder="请输入通知内容" |
|
||||
v-model="formData2.noticeContent"></el-input> |
|
||||
</el-form-item> |
|
||||
</el-form> |
|
||||
|
|
||||
</el-tab-pane> |
|
||||
</el-tabs> |
|
||||
|
|
||||
</div> |
|
||||
|
|
||||
<div class="form_div_btn"> |
|
||||
<el-button size="small" |
|
||||
@click="handleCancle">取 消</el-button> |
|
||||
<el-button v-if="formType != 'look'" |
|
||||
size="small" |
|
||||
type="primary" |
|
||||
:disabled="btnDisable" |
|
||||
@click="handleComfirm">确 定</el-button> |
|
||||
</div> |
|
||||
|
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
|
|
||||
import { Loading } from 'element-ui' // 引入Loading服务 |
|
||||
import { requestPost } from '@/js/dai/request' |
|
||||
import { dateFormats } from '@/utils/index' |
|
||||
|
|
||||
|
|
||||
let loading // 加载动画 |
|
||||
export default { |
|
||||
data () { |
|
||||
return { |
|
||||
formType: 'add', //表单操作类型 add新增,edit编辑,detail详情 |
|
||||
|
|
||||
activeName: "second", |
|
||||
|
|
||||
gridList: [], |
|
||||
selGridId: '', |
|
||||
veroNum: null, |
|
||||
|
|
||||
|
|
||||
btnDisable: false, |
|
||||
|
|
||||
formData1: { |
|
||||
name: '', |
|
||||
idCard: '', |
|
||||
phone: '', |
|
||||
remark: '', |
|
||||
noticeWay: [], |
|
||||
noticeContent: '', |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
formData2: { |
|
||||
personList: [], |
|
||||
remark: '', |
|
||||
noticeWay: [], |
|
||||
noticeContent: '', |
|
||||
}, |
|
||||
tableData: [], |
|
||||
tableLoading: false, |
|
||||
|
|
||||
selection: [],//选中的人员 |
|
||||
|
|
||||
|
|
||||
} |
|
||||
}, |
|
||||
components: {}, |
|
||||
async mounted () { |
|
||||
const { user } = this.$store.state |
|
||||
this.agencyId = user.agencyId |
|
||||
//获取网格下拉框数据 |
|
||||
await this.loadGrid() |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
|
|
||||
async initForm (type, natId) { |
|
||||
this.startLoading() |
|
||||
this.$refs['ref_form'].resetFields(); |
|
||||
|
|
||||
this.formType = type |
|
||||
if (natId) { |
|
||||
this.natId = natId |
|
||||
this.formData.id = natId |
|
||||
await this.loadFormData() |
|
||||
} |
|
||||
this.endLoading() |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
handleSearch () { |
|
||||
this.loadTable() |
|
||||
}, |
|
||||
|
|
||||
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 = { |
|
||||
pageSize: this.pageSize, |
|
||||
pageNo: this.pageNo, |
|
||||
...this.formData |
|
||||
} |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, params) |
|
||||
|
|
||||
if (code === 0) { |
|
||||
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 loadGrid () { |
|
||||
const url = "/gov/org/customergrid/gridoption" |
|
||||
|
|
||||
let params = { |
|
||||
agencyId: this.agencyId |
|
||||
} |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, params) |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.gridList = data |
|
||||
|
|
||||
} else { |
|
||||
this.$message.error(msg) |
|
||||
} |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
|
|
||||
|
|
||||
async loadFormData () { |
|
||||
|
|
||||
// const url = 'http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern' |
|
||||
const url = '/gov/project/memoConcern' |
|
||||
let params = { |
|
||||
id: this.natId, |
|
||||
readFlag: '0', |
|
||||
} |
|
||||
const { data, code, msg } = await requestPost(url, params) |
|
||||
if (code === 0) { |
|
||||
this.formData = data |
|
||||
|
|
||||
if (data.attachmentList) { |
|
||||
data.attachmentList.forEach(element => { |
|
||||
element.name = element.fileName |
|
||||
element.type = element.attachmentType |
|
||||
element.size = element.attachmentSize |
|
||||
}); |
|
||||
this.fileList = data.attachmentList |
|
||||
|
|
||||
} |
|
||||
|
|
||||
} else { |
|
||||
this.$message.error(msg) |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
async handleComfirm () { |
|
||||
this.btnDisable = true |
|
||||
setTimeout(() => { |
|
||||
this.btnDisable = false |
|
||||
}, 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}$/; //手机号码 |
|
||||
// if (regPhone.test(this.formData.mobile) === false) { |
|
||||
// this.btnDisable = false |
|
||||
// this.$message({ |
|
||||
// type: 'warning', |
|
||||
// message: '请输入正确的手机号码' |
|
||||
// }) |
|
||||
// return false; |
|
||||
// } |
|
||||
|
|
||||
if (this.fileList.length > 0) { |
|
||||
this.formData.attachmentList = this.fileList |
|
||||
} |
|
||||
|
|
||||
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 = "http://yapi.elinkservice.cn/mock/245/gov/project/memoConcern/update" |
|
||||
} |
|
||||
|
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, this.formData) |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.$message({ |
|
||||
type: 'success', |
|
||||
message: '操作成功' |
|
||||
}) |
|
||||
this.resetData() |
|
||||
this.$emit('dialogOk') |
|
||||
this.btnDisable = false |
|
||||
this.$store.dispatch('setTipsList') |
|
||||
this.$store.dispatch('setTipsTime') |
|
||||
} else { |
|
||||
this.btnDisable = false |
|
||||
this.$message.error(msg) |
|
||||
} |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
handleCancle () { |
|
||||
|
|
||||
this.resetData() |
|
||||
this.$emit('dialogCancle') |
|
||||
|
|
||||
}, |
|
||||
|
|
||||
|
|
||||
|
|
||||
resetData () { |
|
||||
this.natId = '' |
|
||||
|
|
||||
this.formData = { |
|
||||
name: '', |
|
||||
idCard: '', |
|
||||
phone: '', |
|
||||
checkTime: '', |
|
||||
address: '', |
|
||||
result: '', |
|
||||
noticeWay: [], |
|
||||
noticeContent: '', |
|
||||
attachmentList: [] |
|
||||
|
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
handleSizeChange (val) { |
|
||||
this.pageSize = val |
|
||||
this.pageNo = 1 |
|
||||
this.loadTable() |
|
||||
}, |
|
||||
handleCurrentChange (val) { |
|
||||
this.pageNo = val |
|
||||
this.loadTable() |
|
||||
}, |
|
||||
|
|
||||
|
|
||||
// 开启加载动画 |
|
||||
startLoading () { |
|
||||
loading = Loading.service({ |
|
||||
lock: true, // 是否锁定 |
|
||||
text: '正在加载……', // 加载中需要显示的文字 |
|
||||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|
||||
}) |
|
||||
}, |
|
||||
// 结束加载动画 |
|
||||
endLoading () { |
|
||||
// clearTimeout(timer); |
|
||||
if (loading) { |
|
||||
loading.close() |
|
||||
} |
|
||||
} |
|
||||
}, |
|
||||
computed: { |
|
||||
dataRule () { |
|
||||
return { |
|
||||
name: [ |
|
||||
{ required: true, message: '姓名不能为空', trigger: 'blur' } |
|
||||
], |
|
||||
idCard: [ |
|
||||
{ required: true, message: '身份证号不能为空', trigger: 'blur' } |
|
||||
], |
|
||||
phone: [ |
|
||||
{ required: true, message: '手机号不能为空', trigger: 'blur' }, |
|
||||
], |
|
||||
checkTime: [ |
|
||||
{ required: true, message: '检测时间不能为空', trigger: 'blur' }, |
|
||||
], |
|
||||
|
|
||||
address: [ |
|
||||
{ required: false }, |
|
||||
], |
|
||||
result: [ |
|
||||
{ required: true }, |
|
||||
], |
|
||||
address: [ |
|
||||
{ required: false }, |
|
||||
], |
|
||||
noticeWay: [ |
|
||||
{ required: false }, |
|
||||
], |
|
||||
noticeContent: [ |
|
||||
{ required: false }, |
|
||||
], |
|
||||
|
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
}, |
|
||||
props: { |
|
||||
|
|
||||
|
|
||||
|
|
||||
// serviceList: { |
|
||||
// type: Array, |
|
||||
// default: [] |
|
||||
// }, |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
|
|
||||
<style lang="scss" scoped > |
|
||||
@import "@/assets/scss/modules/management/epidemic.scss"; |
|
||||
</style> |
|
||||
|
|
||||
|
|
@ -0,0 +1,171 @@ |
|||||
|
<template> |
||||
|
<div class="dialog-h-content scroll-h "> |
||||
|
<div class="div_dialog_table"> |
||||
|
|
||||
|
<el-table class="table" |
||||
|
:data="tableData" |
||||
|
border |
||||
|
:height="tableHeight" |
||||
|
v-loading="tableLoading" |
||||
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
||||
|
style="width: 100%"> |
||||
|
<el-table-column label="序号" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
type="index" |
||||
|
width="50"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column prop="createdTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="通知时间" |
||||
|
width="150"> |
||||
|
|
||||
|
</el-table-column> |
||||
|
<el-table-column prop="channel" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="渠道" |
||||
|
width="180"> |
||||
|
|
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column prop="content" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="内容" |
||||
|
min-width="380"> |
||||
|
|
||||
|
</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> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
tableLoading: false, |
||||
|
total: 0, |
||||
|
idCard: '', |
||||
|
tableData: [], |
||||
|
pageSize: 20, |
||||
|
pageNo: 1, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initTable (idCard) { |
||||
|
this.idCard = idCard |
||||
|
await this.loadTable() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//加载form |
||||
|
async loadTable () { |
||||
|
this.tableLoading = true |
||||
|
// const url = "/epmetuser/icNotice/page" |
||||
|
const url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNotice/page" |
||||
|
let params = { |
||||
|
idCard: this.idCard, |
||||
|
pageNo: this.pageNo, |
||||
|
pageSize: this.pageSize, |
||||
|
origin: '1' |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
this.tableLoading = false |
||||
|
if (code === 0) { |
||||
|
this.total = data.total |
||||
|
this.tableData = data.list |
||||
|
|
||||
|
// data.list.forEach(item => { |
||||
|
// item.isEdit = false |
||||
|
// item.isNew = false |
||||
|
// let arrayInspectors = item.inspectors.split(',') |
||||
|
// item.inspectorArray = [...arrayInspectors] |
||||
|
|
||||
|
// let arrayReviewTime = item.reviewTime.split(' ') |
||||
|
// item.reviewTime = arrayReviewTime[0] |
||||
|
// }); |
||||
|
|
||||
|
// this.tableData = [...data.list] |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
|
||||
|
return (this.clientHeight - 460) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight']) |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/epidemic.scss"; |
||||
|
</style> |
@ -0,0 +1,220 @@ |
|||||
|
<template> |
||||
|
<div class="epidemic-form"> |
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
|
||||
|
<el-form ref="ref_form1" |
||||
|
:inline="true" |
||||
|
:model="formData" |
||||
|
:rules="dataRule" |
||||
|
class="form"> |
||||
|
|
||||
|
<el-form-item label="通知渠道" |
||||
|
prop="channel" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-checkbox-group v-model="formData.channel"> |
||||
|
<el-checkbox key="1" |
||||
|
label="1">小程序通知</el-checkbox> |
||||
|
<!-- <el-checkbox key="2" |
||||
|
label="2">短信通知</el-checkbox> --> |
||||
|
|
||||
|
</el-checkbox-group> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="通知内容" |
||||
|
prop="content" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="1000" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 10, maxRows: 15 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知内容" |
||||
|
v-model="formData.content"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="form_div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
<el-button size="small" |
||||
|
type="primary" |
||||
|
:disabled="btnDisable" |
||||
|
@click="handleComfirm">确 定</el-button> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
import { mapGetters } from 'vuex' |
||||
|
|
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
|
||||
|
activeName: "second", |
||||
|
|
||||
|
gridList: [], |
||||
|
|
||||
|
btnDisable: false, |
||||
|
|
||||
|
formData: { |
||||
|
origin: '1', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
userList: [], |
||||
|
orgName |
||||
|
|
||||
|
}, |
||||
|
selectionAll: [] |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
async mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initForm (selectionAll) { |
||||
|
|
||||
|
this.$refs['ref_form1'].resetFields(); |
||||
|
this.formData.userList = selectionAll |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
async handleComfirm () { |
||||
|
|
||||
|
|
||||
|
console.log(this.formData) |
||||
|
return false |
||||
|
|
||||
|
this.btnDisable = true |
||||
|
setTimeout(() => { |
||||
|
this.btnDisable = false |
||||
|
}, 5000) |
||||
|
|
||||
|
let url = '' |
||||
|
|
||||
|
url = '/epmetuser/icNotice/batchnotice' |
||||
|
// url = "http://yapi.elinkservice.cn/mock/245/epmetuser/icNotice/batchnotice" |
||||
|
|
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.$message({ |
||||
|
type: 'success', |
||||
|
message: '操作成功' |
||||
|
}) |
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
this.btnDisable = false |
||||
|
|
||||
|
} else { |
||||
|
this.btnDisable = false |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
|
||||
|
this.resetData() |
||||
|
this.$emit('dialogCancle') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
resetData () { |
||||
|
|
||||
|
|
||||
|
this.formData = { |
||||
|
name: '', |
||||
|
idCard: '', |
||||
|
phone: '', |
||||
|
remark: '', |
||||
|
channel: [], |
||||
|
content: '', |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
return 200 |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight', 'iframeHeight']), |
||||
|
dataRule () { |
||||
|
return { |
||||
|
channel: [ |
||||
|
{ required: true, message: '通知渠道不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
content: [ |
||||
|
{ required: true, message: '通知内容不能为空', trigger: 'blur' } |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
|
||||
|
|
||||
|
// serviceList: { |
||||
|
// type: Array, |
||||
|
// default: [] |
||||
|
// }, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/epidemic.scss"; |
||||
|
</style> |
||||
|
|
||||
|
|
@ -0,0 +1,308 @@ |
|||||
|
<template> |
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
<div class="div_dialog_table"> |
||||
|
<el-button size="small" |
||||
|
class="diy-button--add" |
||||
|
@click="handleAdd">新增</el-button> |
||||
|
<el-button size="small" |
||||
|
class="diy-button--reset" |
||||
|
@click="handleExport">导出</el-button> |
||||
|
|
||||
|
<el-table class="table" |
||||
|
:data="tableData" |
||||
|
border |
||||
|
:height="tableHeight" |
||||
|
v-loading="tableLoading" |
||||
|
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
||||
|
style="width: 100%"> |
||||
|
<el-table-column label="序号" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
type="index" |
||||
|
width="50"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column prop="visitTime" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="随访时间" |
||||
|
width="150"> |
||||
|
|
||||
|
</el-table-column> |
||||
|
<el-table-column prop="content" |
||||
|
header-align="center" |
||||
|
align="center" |
||||
|
label="随访内容" |
||||
|
min-width="280"> |
||||
|
|
||||
|
</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> |
||||
|
</div> |
||||
|
<el-dialog :visible.sync="dialogVisible" |
||||
|
width="850px" |
||||
|
top="5vh" |
||||
|
title="新增" |
||||
|
append-to-body |
||||
|
@closed="handleCancle"> |
||||
|
<div class="epidemic-form"> |
||||
|
<el-form ref="ref_form" |
||||
|
:inline="true" |
||||
|
:model="formData" |
||||
|
:rules="dataRule" |
||||
|
class="form"> |
||||
|
|
||||
|
<el-form-item label="随访时间" |
||||
|
style="display: block" |
||||
|
prop="visitTime" |
||||
|
label-width="150px"> |
||||
|
<el-date-picker class="item_width_2" |
||||
|
v-model="formData.visitTime" |
||||
|
format="yyyy-MM-dd HH:mm:ss" |
||||
|
value-format="yyyy-MM-dd HH:mm:ss" |
||||
|
type="datetime" |
||||
|
clearable |
||||
|
placeholder="选择时间"> |
||||
|
</el-date-picker> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="随访内容" |
||||
|
prop="content" |
||||
|
label-width="150px" |
||||
|
style="display: block"> |
||||
|
<el-input class="item_width_1" |
||||
|
type="textarea" |
||||
|
maxlength="1000" |
||||
|
show-word-limit |
||||
|
:autosize="{ minRows: 4, maxRows: 10 }" |
||||
|
clearable |
||||
|
placeholder="请输入通知内容" |
||||
|
v-model="formData.content"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
</el-form> |
||||
|
|
||||
|
<div class="form_div_btn"> |
||||
|
<el-button size="small" |
||||
|
@click="handleCancle">取 消</el-button> |
||||
|
<el-button size="small" |
||||
|
type="primary" |
||||
|
@click="handleComfirm">确 定</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from 'vuex' |
||||
|
import { Loading } from 'element-ui' // 引入Loading服务 |
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
|
||||
|
let loading // 加载动画 |
||||
|
export default { |
||||
|
data () { |
||||
|
return { |
||||
|
tableLoading: false, |
||||
|
|
||||
|
tableData: [], |
||||
|
total: 0, |
||||
|
pageSize: 20, |
||||
|
pageNo: 1, |
||||
|
|
||||
|
formData: { |
||||
|
visitTime: '',//随访时间 |
||||
|
content: '',//内容 |
||||
|
idCard: '', |
||||
|
name: '', |
||||
|
mobile: '', |
||||
|
origin: '1' |
||||
|
}, |
||||
|
|
||||
|
dialogVisible: false, |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
components: {}, |
||||
|
mounted () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
|
||||
|
async initTable (row) { |
||||
|
|
||||
|
this.formData.idCard = row.idCard |
||||
|
this.formData.name = row.name |
||||
|
this.formData.mobile = row.mobile |
||||
|
|
||||
|
await this.loadTable() |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//加载form |
||||
|
async loadTable () { |
||||
|
this.tableLoading = true |
||||
|
// const url = '/epmetuser/followup/page' |
||||
|
const url = 'http://yapi.elinkservice.cn/mock/245/epmetuser/followup/page' |
||||
|
let params = { |
||||
|
idCard: this.formData.idCard, |
||||
|
pageNo: this.pageNo, |
||||
|
pageSize: this.pageSize, |
||||
|
origin: '1' |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
this.tableLoading = false |
||||
|
if (code === 0) { |
||||
|
this.total = data.total |
||||
|
this.tableData = data.list |
||||
|
|
||||
|
|
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
handleAdd () { |
||||
|
this.dialogVisible = true |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
async handleComfirm () { |
||||
|
|
||||
|
// let url = "/epmetuser/followup/save" |
||||
|
let url = "http://yapi.elinkservice.cn/mock/245/epmetuser/followup/save" |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, this.formData) |
||||
|
|
||||
|
if (code === 0) { |
||||
|
this.loadTable() |
||||
|
this.handleCancle() |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleCancle () { |
||||
|
this.dialogVisible = false |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
//导出表格 |
||||
|
async handleExport () { |
||||
|
let title = this.formData.name + '—随访记录' |
||||
|
|
||||
|
const url = "/epmetuser/followup/export" |
||||
|
let params = { |
||||
|
idCard: this.formData.idCard, |
||||
|
|
||||
|
} |
||||
|
|
||||
|
app.ajax.exportFilePost( |
||||
|
url, |
||||
|
params, |
||||
|
(data, rspMsg) => { |
||||
|
|
||||
|
this.download(data, title + '.xlsx') |
||||
|
}, |
||||
|
(rspMsg, data) => { |
||||
|
this.$message.error(rspMsg); |
||||
|
} |
||||
|
); |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 下载文件 |
||||
|
download (data, fileName) { |
||||
|
if (!data) { |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
var csvData = new Blob([data]) |
||||
|
|
||||
|
if (window.navigator && window.navigator.msSaveOrOpenBlob) { |
||||
|
window.navigator.msSaveOrOpenBlob(csvData, fileName); |
||||
|
} |
||||
|
// for Non-IE (chrome, firefox etc.) |
||||
|
else { |
||||
|
var a = document.createElement('a'); |
||||
|
document.body.appendChild(a); |
||||
|
a.style = 'display: none'; |
||||
|
var url = window.URL.createObjectURL(csvData); |
||||
|
a.href = url; |
||||
|
a.download = fileName; |
||||
|
a.click(); |
||||
|
a.remove(); |
||||
|
window.URL.revokeObjectURL(url); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
handleSizeChange (val) { |
||||
|
this.pageSize = val |
||||
|
this.pageNo = 1 |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
handleCurrentChange (val) { |
||||
|
this.pageNo = val |
||||
|
this.loadTable() |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
// 开启加载动画 |
||||
|
startLoading () { |
||||
|
loading = Loading.service({ |
||||
|
lock: true, // 是否锁定 |
||||
|
text: '正在加载……', // 加载中需要显示的文字 |
||||
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
||||
|
}) |
||||
|
}, |
||||
|
// 结束加载动画 |
||||
|
endLoading () { |
||||
|
// clearTimeout(timer); |
||||
|
if (loading) { |
||||
|
loading.close() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
tableHeight () { |
||||
|
return (this.clientHeight - 360) |
||||
|
}, |
||||
|
|
||||
|
...mapGetters(['clientHeight']), |
||||
|
dataRule () { |
||||
|
return { |
||||
|
visitTime: [ |
||||
|
{ required: true, message: '随访时间不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
content: [ |
||||
|
{ required: true, message: '随访内容不能为空', trigger: 'blur' } |
||||
|
], |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
props: { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped > |
||||
|
@import "@/assets/scss/modules/management/epidemic.scss"; |
||||
|
</style> |
Loading…
Reference in new issue