|
|
@ -1,83 +1,120 @@ |
|
|
|
<template> |
|
|
|
<div class="epidemic-form"> |
|
|
|
<div class="dialog-h-content scroll-h"> |
|
|
|
|
|
|
|
<el-form ref="ref_form1" |
|
|
|
<el-form |
|
|
|
ref="ref_form1" |
|
|
|
:inline="true" |
|
|
|
:model="formData" |
|
|
|
:disabled="formType==='detail'" |
|
|
|
class="form"> |
|
|
|
|
|
|
|
<el-form-item label="姓名" |
|
|
|
:disabled="formType === 'detail'" |
|
|
|
class="form" |
|
|
|
> |
|
|
|
<el-form-item |
|
|
|
label="姓名" |
|
|
|
prop="name" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<span>{{formData.name}}</span> |
|
|
|
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="手机号" |
|
|
|
<el-form-item |
|
|
|
label="手机号" |
|
|
|
prop="mobile" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<span>{{formData.mobile}}</span> |
|
|
|
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="证件号" |
|
|
|
<el-form-item |
|
|
|
label="证件号" |
|
|
|
prop="idCard" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<span>{{formData.idCard}}</span> |
|
|
|
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="关注原因" |
|
|
|
<el-form-item |
|
|
|
label="关注原因" |
|
|
|
prop="reason" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
|
|
|
|
<el-input class="item_width_1" |
|
|
|
style="display: block" |
|
|
|
> |
|
|
|
<el-input |
|
|
|
class="item_width_1" |
|
|
|
placeholder="请输入关注原因" |
|
|
|
clearable |
|
|
|
v-model="formData.reason"> |
|
|
|
v-model="formData.reason" |
|
|
|
> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="备注" |
|
|
|
<el-form-item |
|
|
|
label="隔离状态" |
|
|
|
prop="reason" |
|
|
|
label-width="150px" |
|
|
|
style="display: block" |
|
|
|
> |
|
|
|
<el-select |
|
|
|
v-model="formData.isolatedState" |
|
|
|
placeholder="请选择" |
|
|
|
clearable |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in options.isolatedState" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item |
|
|
|
label="备注" |
|
|
|
prop="remark" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_1" |
|
|
|
style="display: block" |
|
|
|
> |
|
|
|
<el-input |
|
|
|
class="item_width_1" |
|
|
|
type="textarea" |
|
|
|
:disabled="formType==='detail'" |
|
|
|
:disabled="formType === 'detail'" |
|
|
|
maxlength="500" |
|
|
|
show-word-limit |
|
|
|
:autosize="{ minRows: 2, maxRows: 5 }" |
|
|
|
clearable |
|
|
|
placeholder="请输入通知备注" |
|
|
|
v-model="formData.remark"></el-input> |
|
|
|
v-model="formData.remark" |
|
|
|
></el-input> |
|
|
|
</el-form-item> |
|
|
|
<div v-if=" formType!=='detail'"> |
|
|
|
<el-form-item label="通知渠道" |
|
|
|
<div v-if="formType !== 'detail'"> |
|
|
|
<el-form-item |
|
|
|
label="通知渠道" |
|
|
|
prop="channel" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-checkbox v-model="formData.isSelChannel" |
|
|
|
style="display: block" |
|
|
|
> |
|
|
|
<el-checkbox |
|
|
|
v-model="formData.isSelChannel" |
|
|
|
@change="handleChannelChange" |
|
|
|
key="0" |
|
|
|
label="0">小程序通知</el-checkbox> |
|
|
|
label="0" |
|
|
|
>小程序通知</el-checkbox |
|
|
|
> |
|
|
|
<!-- <el-checkbox-group v-model="formData.channel"> |
|
|
|
<el-checkbox key="0" |
|
|
|
label="0">小程序通知</el-checkbox> |
|
|
@ -87,238 +124,225 @@ |
|
|
|
</el-checkbox-group> --> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item v-if="formData.isSelChannel" |
|
|
|
<el-form-item |
|
|
|
v-if="formData.isSelChannel" |
|
|
|
label="通知内容" |
|
|
|
prop="content" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_1" |
|
|
|
style="display: block" |
|
|
|
> |
|
|
|
<el-input |
|
|
|
class="item_width_1" |
|
|
|
type="textarea" |
|
|
|
maxlength="500" |
|
|
|
show-word-limit |
|
|
|
:autosize="{ minRows: 4, maxRows: 10 }" |
|
|
|
clearable |
|
|
|
placeholder="请输入通知内容" |
|
|
|
v-model="formData.content"></el-input> |
|
|
|
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'" |
|
|
|
<el-button size="small" @click="handleCancle">取 消</el-button> |
|
|
|
<el-button |
|
|
|
v-if="formType !== 'detail'" |
|
|
|
size="small" |
|
|
|
type="primary" |
|
|
|
:disabled="btnDisable" |
|
|
|
@click="handleComfirm">确 定</el-button> |
|
|
|
@click="handleComfirm" |
|
|
|
>确 定</el-button |
|
|
|
> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { Loading } from "element-ui"; // 引入Loading服务 |
|
|
|
import { requestPost } from "@/js/dai/request"; |
|
|
|
import { mapGetters } from "vuex"; |
|
|
|
|
|
|
|
import { Loading } from 'element-ui' // 引入Loading服务 |
|
|
|
import { requestPost } from '@/js/dai/request' |
|
|
|
import { mapGetters } from 'vuex' |
|
|
|
let loading; // 加载动画 |
|
|
|
function iniGetFmData() { |
|
|
|
return { |
|
|
|
attentionType: 2, |
|
|
|
name: "", |
|
|
|
idCard: "", |
|
|
|
mobile: "", |
|
|
|
reason: "", |
|
|
|
remark: "", |
|
|
|
isSelChannel: false, |
|
|
|
channel: [], |
|
|
|
content: "", |
|
|
|
|
|
|
|
isolatedState: "", //隔离状态 |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
let loading // 加载动画 |
|
|
|
export default { |
|
|
|
data () { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
|
|
|
|
formType: "edit", |
|
|
|
|
|
|
|
gridList: [], |
|
|
|
|
|
|
|
btnDisable: false, |
|
|
|
|
|
|
|
formData: { |
|
|
|
attentionType: 2, |
|
|
|
name: '', |
|
|
|
idCard: '', |
|
|
|
mobile: '', |
|
|
|
reason: '', |
|
|
|
remark: '', |
|
|
|
isSelChannel: false, |
|
|
|
channel: [], |
|
|
|
content: '', |
|
|
|
}, |
|
|
|
formData: iniGetFmData(), |
|
|
|
|
|
|
|
} |
|
|
|
options: { |
|
|
|
isolatedState: [], |
|
|
|
}, |
|
|
|
components: {}, |
|
|
|
async mounted () { |
|
|
|
|
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
|
destroyed () { |
|
|
|
components: {}, |
|
|
|
|
|
|
|
async mounted() { |
|
|
|
this.getFmOptions("isolatedState", "/sys/dict/data/dictlist", { |
|
|
|
dictType: "isolatedState", |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
destroyed() {}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
handleChannelChange (val) { |
|
|
|
this.formData.content = '' |
|
|
|
handleChannelChange(val) { |
|
|
|
this.formData.content = ""; |
|
|
|
}, |
|
|
|
|
|
|
|
async initForm (formType, row) { |
|
|
|
this.formType = formType |
|
|
|
this.$refs['ref_form1'].resetFields(); |
|
|
|
row.channel = [] |
|
|
|
row.content = '' |
|
|
|
row.attentionType = 2 |
|
|
|
row.isSelChannel = false |
|
|
|
this.formData = JSON.parse(JSON.stringify(row)) |
|
|
|
|
|
|
|
async initForm(formType, row) { |
|
|
|
this.formType = formType; |
|
|
|
this.$refs["ref_form1"].resetFields(); |
|
|
|
row.channel = []; |
|
|
|
row.content = ""; |
|
|
|
row.attentionType = 2; |
|
|
|
row.isSelChannel = false; |
|
|
|
this.formData = JSON.parse(JSON.stringify(row)); |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
async handleComfirm () { |
|
|
|
async handleComfirm() { |
|
|
|
if (this.formData.isSelChannel) { |
|
|
|
if (!this.formData.content) { |
|
|
|
this.$message({ |
|
|
|
type: 'warning', |
|
|
|
message: '请填写通知内容' |
|
|
|
}) |
|
|
|
type: "warning", |
|
|
|
message: "请填写通知内容", |
|
|
|
}); |
|
|
|
return false; |
|
|
|
} else { |
|
|
|
this.formData.channel = ['0'] |
|
|
|
this.formData.channel = ["0"]; |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
this.formData.channel = [] |
|
|
|
this.formData.channel = []; |
|
|
|
} |
|
|
|
|
|
|
|
this.btnDisable = true |
|
|
|
this.btnDisable = true; |
|
|
|
setTimeout(() => { |
|
|
|
this.btnDisable = false |
|
|
|
}, 5000) |
|
|
|
let url = '/epmetuser/icEpidemicSpecialAttention/vaccination-update' |
|
|
|
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) |
|
|
|
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 |
|
|
|
|
|
|
|
type: "success", |
|
|
|
message: "操作成功", |
|
|
|
}); |
|
|
|
this.resetData(); |
|
|
|
this.$emit("dialogOk"); |
|
|
|
this.btnDisable = false; |
|
|
|
} else { |
|
|
|
this.btnDisable = false |
|
|
|
this.$message.error(msg) |
|
|
|
this.btnDisable = false; |
|
|
|
this.$message.error(msg); |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
handleCancle () { |
|
|
|
|
|
|
|
this.resetData() |
|
|
|
this.$emit('dialogCancle') |
|
|
|
|
|
|
|
handleCancle() { |
|
|
|
this.resetData(); |
|
|
|
this.$emit("dialogCancle"); |
|
|
|
}, |
|
|
|
|
|
|
|
async getFmOptions(field, url, params, cookFn) { |
|
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
|
...params, |
|
|
|
}); |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.options[field] = |
|
|
|
typeof cookFn == "function" ? cookFn(data) : data || []; |
|
|
|
} else { |
|
|
|
this.$message.error("请求基础数据失败!"); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
resetData () { |
|
|
|
this.veroId = '' |
|
|
|
|
|
|
|
this.formData = { |
|
|
|
attentionType: 2, |
|
|
|
name: '', |
|
|
|
idCard: '', |
|
|
|
mobile: '', |
|
|
|
reason: '', |
|
|
|
remark: '', |
|
|
|
isSelChannel: false, |
|
|
|
channel: [], |
|
|
|
content: '', |
|
|
|
resetData() { |
|
|
|
this.veroId = ""; |
|
|
|
|
|
|
|
} |
|
|
|
this.formData = iniGetFmData(); |
|
|
|
}, |
|
|
|
|
|
|
|
handleSizeChange (val) { |
|
|
|
this.pageSize = val |
|
|
|
this.pageNo = 1 |
|
|
|
this.loadTable() |
|
|
|
handleSizeChange(val) { |
|
|
|
this.pageSize = val; |
|
|
|
this.pageNo = 1; |
|
|
|
this.loadTable(); |
|
|
|
}, |
|
|
|
handleCurrentChange (val) { |
|
|
|
this.pageNo = val |
|
|
|
this.loadTable() |
|
|
|
handleCurrentChange(val) { |
|
|
|
this.pageNo = val; |
|
|
|
this.loadTable(); |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 开启加载动画 |
|
|
|
startLoading () { |
|
|
|
startLoading() { |
|
|
|
loading = Loading.service({ |
|
|
|
lock: true, // 是否锁定 |
|
|
|
text: '正在加载……', // 加载中需要显示的文字 |
|
|
|
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|
|
|
}) |
|
|
|
text: "正在加载……", // 加载中需要显示的文字 |
|
|
|
background: "rgba(0,0,0,.7)", // 背景颜色 |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 结束加载动画 |
|
|
|
endLoading () { |
|
|
|
endLoading() { |
|
|
|
// clearTimeout(timer); |
|
|
|
if (loading) { |
|
|
|
loading.close() |
|
|
|
} |
|
|
|
loading.close(); |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
tableHeight () { |
|
|
|
return 200 |
|
|
|
|
|
|
|
tableHeight() { |
|
|
|
return 200; |
|
|
|
}, |
|
|
|
|
|
|
|
...mapGetters(['clientHeight', 'iframeHeight']), |
|
|
|
dataRule () { |
|
|
|
...mapGetters(["clientHeight", "iframeHeight"]), |
|
|
|
dataRule() { |
|
|
|
return { |
|
|
|
name: [ |
|
|
|
{ required: true, message: '姓名不能为空', trigger: 'blur' } |
|
|
|
], |
|
|
|
name: [{ required: true, message: "姓名不能为空", trigger: "blur" }], |
|
|
|
idCard: [ |
|
|
|
{ required: true, message: '证件号不能为空', trigger: 'blur' } |
|
|
|
{ required: true, message: "证件号不能为空", trigger: "blur" }, |
|
|
|
], |
|
|
|
mobile: [ |
|
|
|
{ required: true, message: '手机号不能为空', trigger: 'blur' }, |
|
|
|
{ required: true, message: "手机号不能为空", trigger: "blur" }, |
|
|
|
], |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
channel: [ |
|
|
|
{ required: false }, |
|
|
|
], |
|
|
|
content: [ |
|
|
|
{ required: false }, |
|
|
|
], |
|
|
|
|
|
|
|
} |
|
|
|
channel: [{ required: false }], |
|
|
|
content: [{ required: false }], |
|
|
|
}; |
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
props: { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// serviceList: { |
|
|
|
// type: Array, |
|
|
|
// default: [] |
|
|
|
// }, |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}; |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped > |
|
|
|
<style lang="scss" scoped> |
|
|
|
@import "@/assets/scss/modules/management/epidemic.scss"; |
|
|
|
</style> |
|
|
|
|
|
|
|
|
|
|
|