Files
dvcp_v2_webapp/project/pingchang/apps/AppHomeReport/components/Detail.vue
yanran200730 0314be9515 bug
2022-12-01 09:36:16 +08:00

296 lines
14 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<ai-detail isHasSidebar v-loading="isLoading">
<template slot="title">
<ai-title title="返乡报备详情" isShowBack isShowBottomBorder @onBackClick="cancel(false)">
</ai-title>
</template>
<template slot="content">
<AiSidebar :tabTitle="tabList" v-model="currIndex"></AiSidebar>
<div v-show="currIndex === 0">
<ai-card title="基本信息" v-show="currIndex === 0">
<template #right>
<el-button type="primary" @click="(form.idNumber = info.idNumber, isShow = true)">编辑</el-button>
</template>
<template #content>
<ai-wrapper
label-width="120px">
<ai-info-item label="姓名" :value="info.name"></ai-info-item>
<ai-info-item label="填报时间" :value="info.createTime"></ai-info-item>
<ai-info-item label="身份证号" :value="info.idNumber"></ai-info-item>
<ai-info-item label="手机号码" :value="info.phone"></ai-info-item>
<ai-info-item label="人员类别" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item>
<ai-info-item label="是否从事高危行业" :value="dict.getLabel('EP_highRiskIndustries', info.highRiskIndustries)"></ai-info-item>
</ai-wrapper>
</template>
</ai-card>
<ai-card title="行程信息">
<template #right>
<el-button type="primary" @click="(form = {...info}, isShow = true)">编辑</el-button>
</template>
<template #content>
<ai-wrapper
label-width="120px">
<ai-info-item label="出发时间" :value="info.startTime"></ai-info-item>
<ai-info-item label="出发地" >
<span :style="{color: info.denger == 1 ? '#FF4466' : '#333'}">{{info.startAreaName}} </span>
</ai-info-item>
<ai-info-item label="出发地详址" isLine :value="info.startAddress"></ai-info-item>
<ai-info-item label="出行方式" :value="info.travelTypeNames"></ai-info-item>
<ai-info-item label="车次/航班" isLine :value="info.trainNo"></ai-info-item>
<ai-info-item label="行程描述" :value="info.description"></ai-info-item>
<ai-info-item label="抵平卡口" :value="info.gatewayName"></ai-info-item>
<ai-info-item label="抵平时间" :value="info.arriveTime"></ai-info-item>
<ai-info-item label="目的地" :value="info.arriveAreaName"></ai-info-item>
<ai-info-item label="目的地详址" isLine :value="info.arriveAddress"></ai-info-item>
</ai-wrapper>
</template>
</ai-card>
<ai-card title="健康状况">
<template #content>
<ai-wrapper
label-width="120px">
<ai-info-item label="是否有风险旅居史" v-if="info.fromHighRiskArea === '1'">
<span style="color: red">{{ info.highRiskAreaName }}</span>
</ai-info-item>
<ai-info-item label="是否有风险旅居史" v-else value="否"></ai-info-item>
<ai-info-item label="7天内是否接触新冠确诊或疑似患者">
<span :style="{color: info.contactPatients === '1' ? 'red' : ''}">{{ dict.getLabel('yesOrNo', info.contactPatients) }}</span>
</ai-info-item>
<ai-info-item label="当前健康状况" v-if="info.abnormalHealth === '1'">
<span style="color: red">{{ dict.getLabel('EP_abnormalType', info.abnormalType) }}</span>
</ai-info-item>
<ai-info-item label="当前健康状况" v-else value="否"></ai-info-item>
</ai-wrapper>
</template>
</ai-card>
</div>
<div v-show="currIndex === 1">
<ai-card title="风险处置">
<template #right>
<el-button type="primary" v-if="info.status === '0'" @click="release">解除异常</el-button>
</template>
<template #content>
<ai-wrapper
label-width="120px">
<ai-info-item label="姓名" :value="info.name"></ai-info-item>
<ai-info-item label="填报时间" :value="info.createTime"></ai-info-item>
<ai-info-item label="身份证号" :value="info.idNumber"></ai-info-item>
<ai-info-item label="手机号码" :value="info.phone"></ai-info-item>
<ai-info-item label="人员类别" :value="dict.getLabel('EP_registerPersonType', info.type)"></ai-info-item>
<ai-info-item label="是否从事高危行业" :value="dict.getLabel('EP_highRiskIndustries', info.highRiskIndustries)"></ai-info-item>
</ai-wrapper>
</template>
</ai-card>
<ai-card title="风险处理意见">
<template #content>
<ai-table
:isShowPagination="false"
tableSize="small"
border
:tableData="info.riskDisposalList"
:col-configs="colConfigs"
@getList="() => {}">
</ai-table>
</template>
</ai-card>
<ai-card title="社区初排" v-if="info.cmAdvanceDisposal">
<template #content>
<ai-wrapper
style="margin-bottom: 20px;"
label-width="120px">
<ai-info-item label="处置意见" :value="dict.getLabel('EP_communityHandleType', info.cmAdvanceDisposal.communityHandleType)"></ai-info-item>
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="居家状态" :value="dict.getLabel('EP_homeStatus2', info.cmAdvanceDisposal.homeStatus)"></ai-info-item>
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="隔离时间" :value="info.cmAdvanceDisposal.quarantineBeginTime + ' - ' + info.cmAdvanceDisposal.quarantineEndTime"></ai-info-item>
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="隔离策略" :value="dict.getLabel('EP_quarantineStrategy', info.cmAdvanceDisposal.quarantineStrategy)"></ai-info-item>
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="管控方式" :value="dict.getLabel('EP_controlMethod', info.cmAdvanceDisposal.controlMethod)"></ai-info-item>
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '1'" label="图片" isLine>
<ai-uploader
:instance="instance"
:value="info.cmAdvanceDisposal.fileList"
disabled
:limit="9">
</ai-uploader>
</ai-info-item>
<ai-info-item v-if="info.cmAdvanceDisposal.communityHandleType === '2'" label="风险解除证明文件" isLine>
<ai-uploader
:instance="instance"
:value="info.cmAdvanceDisposal.proveFileList"
disabled
:limit="9">
</ai-uploader>
</ai-info-item>
</ai-wrapper>
<ai-empty style="margin-bottom: 60px;" v-if="!info.cmAdvanceDisposal"></ai-empty>
</template>
</ai-card>
</div>
<ai-dialog
:visible.sync="isShow"
width="890px"
title="编辑"
@close="form.idNumber = ''"
@onConfirm="onConfirm">
<el-form class="ai-form" ref="form" :model="form" label-width="110px" label-position="right">
<el-form-item label="身份证" prop="idNumber" style="width: 100%" :rules="[{required: true, message: '请输入身份证', trigger: 'blur'}]">
<el-input size="small" placeholder="请输入身份证" v-model="form.idNumber"></el-input>
</el-form-item>
<el-form-item label="出发时间" prop="startTime" style="width: 100%" :rules="[{required: true, message: '请选择出发时间', trigger: 'change'}]">
<el-date-picker
v-model="form.startTime"
type="datetime"
size="small"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择出发时间">
</el-date-picker>
</el-form-item>
<el-form-item label="出发地" prop="startAreaId" style="width: 100%" :rules="[{required: true, message: '请选择出发地', trigger: 'change'}]">
<ai-area-select clearable always-show :instance="instance" v-model="form.startAreaId"></ai-area-select>
</el-form-item>
<el-form-item label="出发地详址" prop="startAddress" style="width: 100%" :rules="[{required: true, message: '请输入出发地详址', trigger: 'blur'}]">
<el-input size="small" placeholder="请输入出发地详址" v-model="form.startAddress"></el-input>
</el-form-item>
<el-form-item label="出行方式" prop="travelType" style="width: 100%" :rules="[{required: true, message: '请选择出行方式', trigger: 'change'}]">
<ai-select
v-model="form.travelType"
clearable
placeholder="请选择出行方式"
:selectList="dict.getDict('EP_travelType')">
</ai-select>
</el-form-item>
<el-form-item label="车次/航班" prop="trainNo" style="width: 100%" :rules="[{required: true, message: '请输入车次', trigger: 'blur'}]">
<el-input size="small" placeholder="请输入车次/航班" v-model="form.trainNo"></el-input>
</el-form-item>
<el-form-item label="行程描述" prop="description" style="width: 100%" :rules="[{required: true, message: '请输入行程描述', trigger: 'blur'}]">
<el-input size="small" placeholder="请输入行程描述" v-model="form.description"></el-input>
</el-form-item>
<el-form-item label="抵平卡口" prop="arriveGatewayId" style="width: 100%" :rules="[{required: true, message: '请选择抵平卡口', trigger: 'change'}]">
<ai-select
v-model="form.arriveGatewayId"
clearable
placeholder="请选择抵平卡口"
:selectList="dictList">
</ai-select>
</el-form-item>
<el-form-item label="抵平时间" prop="arriveTime" style="width: 100%" :rules="[{required: true, message: '请选择抵平时间', trigger: 'change'}]">
<el-date-picker
v-model="form.arriveTime"
type="datetime"
size="small"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择抵平时间">
</el-date-picker>
</el-form-item>
<el-form-item label="目的地" prop="arriveAreaId" style="width: 100%" :rules="[{required: true, message: '请选择目的地', trigger: 'change'}]">
<ai-area-select clearable always-show :instance="instance" v-model="form.arriveAreaId"></ai-area-select>
</el-form-item>
<el-form-item label="目的地详址" prop="arriveAddress" style="width: 100%" :rules="[{required: true, message: '请输入目的地详址', trigger: 'blur'}]">
<el-input size="small" placeholder="请输入目的地详址" v-model="form.arriveAddress"></el-input>
</el-form-item>
</el-form>
</ai-dialog>
</template>
</ai-detail>
</template>
<script>
export default {
name: 'Detail',
props: {
instance: Function,
dict: Object,
params: Object
},
data () {
return {
info: {},
isShow: false,
currIndex: 0,
isLoading: false,
tableData: [],
form: {
idNumber: ''
},
colConfigs: [
{prop: 'remarks', label: '异常记录', align: 'center' },
{prop: 'createTime', label: '创建时间', align: 'center'},
{prop: 'createUserName', label: '记录人', align: 'center' }
],
tabList: ['基本信息', '风险处置'],
dictList: []
}
},
created () {
this.isLoading = true
if (this.params && this.params.id) {
this.id = this.params.id
this.$dict.load(['EP_registerPersonType', 'EP_communityHandleType', 'EP_highRiskIndustries', 'EP_travelType', 'yesOrNo', 'EP_homeStatus2', 'EP_quarantineStrategy', 'EP_controlMethod', 'EP_abnormalType']).then(() => {
this.getInfo(this.params.id)
})
}
this.getDictList()
},
methods: {
getDictList () {
this.instance.post(`/app/appepidemicpreventiongateway/list?size=10000&current=1`).then(res => {
if (res.code == 0) {
this.dictList = res.data.records.map(v => {
return {
dictName: v.name,
dictValue: v.id
}
})
}
})
},
getInfo (id) {
this.instance.post(`/app/appepidemicpreventionregisterinfo/queryDetailById?id=${id}`).then(res => {
if (res.code === 0) {
this.info = res.data
this.info.travelTypeNames = res.data.travelType.split(',').map(v => {
return this.dict.getLabel('EP_travelType', v)
}).join('')
}
this.isLoading = false
}).catch(() => {
this.isLoading = false
})
},
onConfirm () {
this.$refs.form.validate((valid) => {
if (valid) {
this.instance.post(`/app/appepidemicpreventionregisterinfo/updateForAdmin`, {
...this.info,
...this.form,
id: this.params.id
}).then(res => {
if (res.code == 0) {
this.isShow = false
this.getInfo(this.params.id)
this.$message.success('编辑成功')
}
})
}
})
},
cancel () {
this.$emit('change', {
type: 'List',
isRefresh: true
})
}
}
}
</script>
<style scoped lang="scss">
</style>