|
|
|
@ -110,23 +110,33 @@ |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
<el-col :span="12"> |
|
|
|
<el-form-item label="身份证号码" prop="responderIdCode"> |
|
|
|
<div style="display: flex; align-items: flex-start; gap: 8px;"> |
|
|
|
<el-input |
|
|
|
<el-form-item label="身份证号码" prop="responderIdCode" style="flex: 1; margin-bottom: 0;"> |
|
|
|
v-model="model.responderIdCode" |
|
|
|
<el-input |
|
|
|
:placeholder="model.responderIdCodeSkip ? '无' : '请输入身份证号码'" |
|
|
|
v-model="model.responderIdCode" |
|
|
|
|
|
|
|
:placeholder="model.responderIdCodeSkip ? '无' : '请输入身份证号码'" |
|
|
|
|
|
|
|
:disabled="model.responderIdCodeSkip" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #append> |
|
|
|
|
|
|
|
<el-checkbox |
|
|
|
|
|
|
|
v-model="model.responderIdCodeSkip" |
|
|
|
|
|
|
|
@change="(v) => v && (model.responderIdCode = '')" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
无 |
|
|
|
|
|
|
|
</el-checkbox> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-input> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<el-button |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
:loading="duplicateLoading" |
|
|
|
:disabled="model.responderIdCodeSkip" |
|
|
|
:disabled="model.responderIdCodeSkip" |
|
|
|
|
|
|
|
@click="onCheckDuplicate" |
|
|
|
> |
|
|
|
> |
|
|
|
<template #append> |
|
|
|
查重 |
|
|
|
<el-checkbox |
|
|
|
</el-button> |
|
|
|
v-model="model.responderIdCodeSkip" |
|
|
|
</div> |
|
|
|
@change="(v) => v && (model.responderIdCode = '')" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
无 |
|
|
|
|
|
|
|
</el-checkbox> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-input> |
|
|
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
|
|
|
|
|
|
|
|
@ -245,11 +255,101 @@ |
|
|
|
</el-button> |
|
|
|
</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
<!-- 重复件提示抽屉 --> |
|
|
|
|
|
|
|
<el-drawer |
|
|
|
|
|
|
|
v-model="duplicateDrawerVisible" |
|
|
|
|
|
|
|
direction="rtl" |
|
|
|
|
|
|
|
size="40%" |
|
|
|
|
|
|
|
class="duplicate-drawer" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #header> |
|
|
|
|
|
|
|
<div class="drawer-header danger"> |
|
|
|
|
|
|
|
<el-icon size="22"> |
|
|
|
|
|
|
|
<WarningFilled /> |
|
|
|
|
|
|
|
</el-icon> |
|
|
|
|
|
|
|
<div class="title-group"> |
|
|
|
|
|
|
|
<div class="title">身份证重复件风险提醒</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 内容区域 --> |
|
|
|
|
|
|
|
<div class="drawer-body"> |
|
|
|
|
|
|
|
<!-- 顶部风险提示 --> |
|
|
|
|
|
|
|
<el-alert |
|
|
|
|
|
|
|
type="warning" |
|
|
|
|
|
|
|
show-icon |
|
|
|
|
|
|
|
:closable="false" |
|
|
|
|
|
|
|
class="drawer-alert" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #title> |
|
|
|
|
|
|
|
系统检测到该身份证号可能存在重复登记记录 |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-alert> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 当前身份证号高亮 --> |
|
|
|
|
|
|
|
<div class="id-highlight"> |
|
|
|
|
|
|
|
当前身份证号: |
|
|
|
|
|
|
|
<span>{{ model.responderIdCode }}</span> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 无数据 --> |
|
|
|
|
|
|
|
<el-empty |
|
|
|
|
|
|
|
v-if="duplicateList.length === 0" |
|
|
|
|
|
|
|
description="暂无重复数据" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 重复件表格 --> |
|
|
|
|
|
|
|
<el-table |
|
|
|
|
|
|
|
v-else |
|
|
|
|
|
|
|
:data="duplicateList" |
|
|
|
|
|
|
|
stripe |
|
|
|
|
|
|
|
style="width: 100%" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
prop="originId" |
|
|
|
|
|
|
|
label="编号" |
|
|
|
|
|
|
|
width="140" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
prop="sourceTablePath" |
|
|
|
|
|
|
|
label="来源" |
|
|
|
|
|
|
|
width="180" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
prop="responderName" |
|
|
|
|
|
|
|
label="姓名" |
|
|
|
|
|
|
|
width="120" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
prop="responderIdCode" |
|
|
|
|
|
|
|
label="身份证号" |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
|
|
prop="discoveryTime" |
|
|
|
|
|
|
|
label="登记/受理时间" |
|
|
|
|
|
|
|
width="180" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
|
|
|
{{ |
|
|
|
|
|
|
|
row.discoveryTime |
|
|
|
|
|
|
|
? dayjs(row.discoveryTime).format('YYYY-MM-DD HH:mm:ss') |
|
|
|
|
|
|
|
: '-' |
|
|
|
|
|
|
|
}} |
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
</el-table> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
</el-drawer> |
|
|
|
</el-dialog> |
|
|
|
</el-dialog> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
<script setup> |
|
|
|
<script setup> |
|
|
|
import { computed, ref, watch } from "vue"; |
|
|
|
import {computed, ref, watch} from "vue"; |
|
|
|
|
|
|
|
import {maileRepeatt} from "@/api/data/complaintCollection.ts"; |
|
|
|
|
|
|
|
import { WarningFilled } from '@element-plus/icons-vue' |
|
|
|
|
|
|
|
import dayjs from "dayjs"; |
|
|
|
|
|
|
|
import feedback from "@/utils/feedback.ts"; |
|
|
|
|
|
|
|
|
|
|
|
const props = defineProps({ |
|
|
|
const props = defineProps({ |
|
|
|
modelValue: Boolean, // 控制弹窗显示 |
|
|
|
modelValue: Boolean, // 控制弹窗显示 |
|
|
|
@ -306,6 +406,35 @@ async function onSubmit() { |
|
|
|
// await formRef.value.validate(); |
|
|
|
// await formRef.value.validate(); |
|
|
|
emit("submit"); |
|
|
|
emit("submit"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查重 |
|
|
|
|
|
|
|
const duplicateDrawerVisible = ref(false) |
|
|
|
|
|
|
|
const duplicateList = ref([]) |
|
|
|
|
|
|
|
const duplicateLoading = ref(false) |
|
|
|
|
|
|
|
const onCheckDuplicate = async () => { |
|
|
|
|
|
|
|
if (!props.model.responderIdCode) return |
|
|
|
|
|
|
|
duplicateLoading.value = true |
|
|
|
|
|
|
|
duplicateList.value = [] |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
const body = { |
|
|
|
|
|
|
|
responderIdCode: props.model.responderIdCode, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const res = await maileRepeatt(body) |
|
|
|
|
|
|
|
const list = res?.complaintCollectionPageDTOS || [] |
|
|
|
|
|
|
|
if (list.length > 0) { |
|
|
|
|
|
|
|
duplicateList.value = list |
|
|
|
|
|
|
|
duplicateDrawerVisible.value = true |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
feedback.msgSuccess("未发现重复登记记录"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
feedback.msgError('查重失败') |
|
|
|
|
|
|
|
} finally { |
|
|
|
|
|
|
|
duplicateLoading.value = false |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</script> |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
<style> |
|
|
|
<style> |
|
|
|
@ -317,4 +446,75 @@ async function onSubmit() { |
|
|
|
padding: 16px 24px 24px; |
|
|
|
padding: 16px 24px 24px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 重复件抽屉整体 */ |
|
|
|
|
|
|
|
.duplicate-drawer { |
|
|
|
|
|
|
|
--el-drawer-padding-primary: 20px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 抽屉标题 */ |
|
|
|
|
|
|
|
.drawer-header { |
|
|
|
|
|
|
|
display: flex; |
|
|
|
|
|
|
|
align-items: center; |
|
|
|
|
|
|
|
gap: 8px; |
|
|
|
|
|
|
|
font-size: 18px; |
|
|
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
|
|
color: #d46b08; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 内容区域 */ |
|
|
|
|
|
|
|
.drawer-body { |
|
|
|
|
|
|
|
padding-top: 8px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 顶部提示 */ |
|
|
|
|
|
|
|
.drawer-alert { |
|
|
|
|
|
|
|
margin-bottom: 16px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 身份证号高亮 */ |
|
|
|
|
|
|
|
.id-highlight { |
|
|
|
|
|
|
|
margin-bottom: 20px; |
|
|
|
|
|
|
|
padding: 12px 16px; |
|
|
|
|
|
|
|
background: #fafafa; |
|
|
|
|
|
|
|
border-left: 4px solid #faad14; |
|
|
|
|
|
|
|
font-size: 14px; |
|
|
|
|
|
|
|
line-height: 22px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.id-highlight span { |
|
|
|
|
|
|
|
margin-left: 8px; |
|
|
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
|
|
color: #d4380d; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.drawer-header { |
|
|
|
|
|
|
|
display: flex; |
|
|
|
|
|
|
|
align-items: center; |
|
|
|
|
|
|
|
gap: 12px; |
|
|
|
|
|
|
|
padding: 4px 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.drawer-header.danger { |
|
|
|
|
|
|
|
color: #0d73ee; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.drawer-header .title-group { |
|
|
|
|
|
|
|
display: flex; |
|
|
|
|
|
|
|
flex-direction: column; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.drawer-header .title { |
|
|
|
|
|
|
|
font-size: 20px; |
|
|
|
|
|
|
|
font-weight: 600; |
|
|
|
|
|
|
|
line-height: 1.2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.drawer-header .sub-title { |
|
|
|
|
|
|
|
font-size: 13px; |
|
|
|
|
|
|
|
color: #8c8c8c; |
|
|
|
|
|
|
|
margin-top: 2px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
</style> |
|
|
|
</style> |
|
|
|
|