You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
284 lines
10 KiB
284 lines
10 KiB
<template> |
|
<el-collapse v-model="activeNames"> |
|
<el-collapse-item |
|
title="举报/投诉人基本情况" |
|
name="1" |
|
v-if="mail.verifyReportedPolices?.length" |
|
> |
|
<div |
|
class="flex" |
|
v-for="(item, index) in mail.verifyReportedPolices" |
|
:key="item.empNo" |
|
> |
|
<div class="col"> |
|
<label>被举报人{{ index + 1 }}</label> |
|
<span>{{ item.name }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>警号</label> |
|
<span>{{ item.empNo }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>性别</label> |
|
<span>{{ item.gender }}</span> |
|
</div> |
|
<div class="col" v-if="item.birthday"> |
|
<label>出生年月</label> |
|
<span>{{ item.birthday }}</span> |
|
</div> |
|
</div> |
|
</el-collapse-item> |
|
<el-collapse-item title="联系群众/领导接访情况" name="2" v-if="mail.contactPoliceName"> |
|
<div class="flex mb-12" v-if="mail.contactPoliceName"> |
|
<div class="col" v-if="mail.mainDeptSignTime"> |
|
<label>主单位签收时长</label> |
|
<span :danger="mail.mainDeptSignTime > 600">{{ mail.contactFlag ? formatTimeText(mail.mainDeptSignTime) : '未取得联系'}}</span> |
|
</div> |
|
<div class="col"> |
|
<label>联系民警</label> |
|
<span>{{ mail.contactPoliceName }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>主单位联系群众时长</label> |
|
<span :danger="mail.contactDuration > 1800">{{ formatTimeText(mail.contactDuration) }}</span> |
|
</div> |
|
</div> |
|
<template v-if="mail.interviewType"> |
|
<div class="flex mb-12"> |
|
<div class="col"> |
|
<label>接访形式</label> |
|
<span>{{ mail.interviewType }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>是否一把手接访</label> |
|
<span>{{ mail.interviewIsLeader ? "是" : "否" }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>接访领导</label> |
|
<span>{{ mail.interviewPoliceName }}</span> |
|
</div> |
|
</div> |
|
<div class="flex mb-12"> |
|
<div class="col" style="width: 100%"> |
|
<label>接访情况</label> |
|
<el-input |
|
type="textarea" |
|
v-model="interviewDetails" |
|
v-if="interviewDetailsEditable" |
|
/> |
|
<div class="content" v-else>{{ mail.interviewDetails }}</div> |
|
</div> |
|
</div> |
|
<div class="flex end" v-if="!disabled"> |
|
<div v-if="interviewDetailsEditable"> |
|
<el-button |
|
size="small" |
|
@click="interviewDetailsEditable = false" |
|
>取消</el-button |
|
> |
|
<el-button |
|
size="small" |
|
type="primary" |
|
@click="sumbitInterviewDetails" |
|
>提交</el-button |
|
> |
|
</div> |
|
<el-button |
|
type="primary" |
|
size="small" |
|
plain |
|
@click="interviewDetailsEditable = true" |
|
v-else |
|
>修改接访情况</el-button |
|
> |
|
</div> |
|
<div class="flex"> |
|
<div class="col" style="width: 100%"> |
|
<label>接访附件</label> |
|
<span> |
|
<FileList :files="mail.interviewAttachments" /> |
|
</span> |
|
</div> |
|
</div> |
|
</template> |
|
</el-collapse-item> |
|
<el-collapse-item |
|
title="核查办理情况" |
|
name="3" |
|
v-if="mail.verifyIsTrue !== null" |
|
> |
|
<div class="flex mb-12"> |
|
<div class="col"> |
|
<label>是否属实</label> |
|
<span>{{ mail.verifyIsTrue }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>是否需要问责</label> |
|
<span>{{ |
|
mail.verifyNeedAccountability ? "是" : "否" |
|
}}</span> |
|
</div> |
|
</div> |
|
<div |
|
class="flex mb-12" |
|
v-if="mail.verifyProblem && mail.verifyProblem.length" |
|
> |
|
<div class="col" style="width: 100%"> |
|
<label>查证属实问题</label> |
|
<span |
|
v-for="(item, index) in mail.verifyProblem" |
|
:key="index" |
|
class="mr-8" |
|
>{{ item }}</span |
|
> |
|
</div> |
|
</div> |
|
<div class="flex mb-12"> |
|
<div class="col" style="width: 100%"> |
|
<label>核办结果</label> |
|
<el-input |
|
type="textarea" |
|
v-model="verifyDetails" |
|
v-if="verifyDetailsEditable" |
|
/> |
|
<div class="content" v-else>{{ mail.verifyDetails }}</div> |
|
</div> |
|
</div> |
|
<div class="flex end" v-if="!disabled"> |
|
<div v-if="verifyDetailsEditable"> |
|
<el-button |
|
size="small" |
|
@click="verifyDetailsEditable = false" |
|
>取消</el-button |
|
> |
|
<el-button |
|
type="primary" |
|
size="small" |
|
@click="sumbitVerifyDetails" |
|
>提交</el-button |
|
> |
|
</div> |
|
<el-button |
|
type="primary" |
|
size="small" |
|
plain |
|
@click="verifyDetailsEditable = true" |
|
v-else |
|
>修改核办结果</el-button |
|
> |
|
</div> |
|
</el-collapse-item> |
|
<el-collapse-item |
|
title="整改问责情况" |
|
name="4" |
|
v-if="mail.verifyPunish && mail.verifyPunish.length" |
|
> |
|
<div class="flex"> |
|
<div class="col"> |
|
<label>责任追究</label> |
|
<span |
|
v-for="(item, index) in mail.verifyPunish" |
|
:key="index" |
|
class="mr-8" |
|
>{{ item }}</span |
|
> |
|
</div> |
|
</div> |
|
</el-collapse-item> |
|
<el-collapse-item |
|
title="结果反馈情况" |
|
name="5" |
|
v-if="mail.verifyIsResolved !== null" |
|
> |
|
<div class="flex mb-12"> |
|
<div class="col"> |
|
<label>群众反应事项解决情况</label> |
|
<span>{{ mail.verifyIsResolved ? "已解决" : "" }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>办理反馈情况</label> |
|
<span>{{ mail.verifyFeedback }}</span> |
|
</div> |
|
</div> |
|
<div class="flex"> |
|
<div class="col"> |
|
<label>回访人姓名</label> |
|
<span>{{ mail.verifyFollowupPolice?.name }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>回访人电话</label> |
|
<span>{{ mail.verifyFollowupPolice?.phone }}</span> |
|
</div> |
|
<div class="col"> |
|
<label>回访人警号</label> |
|
<span>{{ mail.verifyFollowupPolice?.empNo }}</span> |
|
</div> |
|
</div> |
|
</el-collapse-item> |
|
<el-collapse-item |
|
title="办结佐证材料" |
|
name="6" |
|
v-if="mail.verifyAttachments" |
|
> |
|
<div style="padding: 3px"> |
|
<FileList :files="mail.verifyAttachments || []" /> |
|
</div> |
|
</el-collapse-item> |
|
</el-collapse> |
|
</template> |
|
<script setup> |
|
import { updateMailHandleDetail } from "@/api/mail"; |
|
import { formatTimeText } from "@/utils/util"; |
|
import feedback from "@/utils/feedback"; |
|
|
|
const activeNames = ref(["1", "2", "3", "4", "5", "6"]); |
|
|
|
const emit = defineEmits(["refresh"]); |
|
const disabled = inject("disabled"); |
|
const mail = inject("mail"); |
|
|
|
const interviewDetails = ref(mail.value.interviewDetails); |
|
const verifyDetails = ref(mail.value.verifyDetails); |
|
const interviewDetailsEditable = ref(false); |
|
const verifyDetailsEditable = ref(false); |
|
|
|
function sumbitInterviewDetails() { |
|
sumbitDetail(); |
|
interviewDetailsEditable.value = false; |
|
} |
|
|
|
function sumbitVerifyDetails() { |
|
sumbitDetail(); |
|
verifyDetailsEditable.value = false; |
|
} |
|
|
|
function sumbitDetail() { |
|
updateMailHandleDetail({ |
|
mailId: mail.value.id, |
|
interviewDetails: interviewDetails.value, |
|
verifyDetails: verifyDetails.value, |
|
}).then(() => { |
|
feedback.msgSuccess("修改成功"); |
|
emit("refresh"); |
|
}); |
|
} |
|
</script> |
|
<style lang="scss" scoped> |
|
.el-collapse-item { |
|
--el-collapse-header-text-color: var(--primary-color); |
|
--el-collapse-header-font-size: 16px; |
|
} |
|
.col { |
|
width: 25%; |
|
label { |
|
width: 144px; |
|
text-align: right; |
|
} |
|
.content { |
|
font-size: 14px; |
|
padding: 0; |
|
max-width: calc(100% - 176px); |
|
} |
|
} |
|
|
|
</style> |