局长信箱-内网端(前端)
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

<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>