fix: 优化“上访人”更改为"来访人"

fix: 优化新增来访人登记
This commit is contained in:
lonewolfyx 2025-02-25 13:21:40 +08:00
parent b395e273f8
commit 247149d18e
6 changed files with 246 additions and 56 deletions

View File

@ -36,7 +36,7 @@
{{ dayjs(scope.row.visitTime).format('YYYY-MM-DD hh:mm:ss') }}
</template>
</el-table-column>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="电话" prop="visitorMobile" width="200"/>
<el-table-column label="工作单位或住址" prop="visitorContact" width="230"/>
<el-table-column label="身份证号码" prop="visitorCode" width="230"/>

View File

@ -16,7 +16,7 @@
{{ dayjs(scope.row.visitTime).format('YYYY-MM-DD hh:mm:ss') }}
</template>
</el-table-column>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="电话" prop="visitorMobile" width="200"/>
<el-table-column label="工作单位或住址" prop="visitorContact" width="230"/>
<el-table-column label="身份证号码" prop="visitorCode" width="230"/>

View File

@ -269,7 +269,7 @@
{{ dayjs(scope.row.visitTime).format('YYYY-MM-DD hh:mm:ss') }}
</template>
</el-table-column>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="电话" prop="visitorMobile" width="200"/>
<el-table-column label="工作单位或住址" prop="visitorContact" width="230"/>
<el-table-column label="身份证号码" prop="visitorCode" width="230"/>

View File

@ -1,19 +1,19 @@
<template>
<el-drawer
v-model="isShow"
title="来访登记"
:destroy-on-close="true"
size="50%"
:close-on-press-escape="false"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:show-close="false"
size="50%"
title="来访登记"
>
<template
v-if="showRegistrationList"
>
<el-button type="primary" @click="showFormHandle">新增来访登记</el-button>
<div class="el-collapse">
<div class="items" v-for="item in registerList" :key="item.jwCheckinloginId">
<div v-for="item in registerList" :key="item.jwCheckinloginId" class="items">
<span>{{ item.name }} - {{ item.sfzId }}</span>
<div>
<el-button :icon="ArrowRight" circle @click="carryHandle(item)"/>
@ -23,47 +23,65 @@
</template>
<el-form
v-if="showRegistration"
ref="queryParamsRef"
:model="queryParams"
label-width="auto"
label-position="left"
require-asterisk-position="right"
:rules="rules"
v-if="showRegistration"
label-position="left"
label-width="auto"
require-asterisk-position="right"
>
<DividerHeader title="基本信息"/>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="姓名" required prop="visitorName">
<el-input placeholder="请填写上访人姓名" v-model="queryParams.visitorName" :disabled="isView"/>
<el-form-item label="姓名" prop="visitorName" required>
<el-row v-if="isCreate" :gutter="24">
<el-col :span="20">
<el-input v-model="queryParams.visitorName" :disabled="isView"
placeholder="请填写来访人姓名"/>
</el-col>
<el-col :span="4">
<el-button
:disabled="isView"
type="primary"
@click="PersonnelHistoryViewRef.showPersonnelVisitHistory(queryParams.visitorName)"
>
获取
</el-button>
</el-col>
</el-row>
<template v-else>
<el-input v-model="queryParams.visitorName" :disabled="isView"
placeholder="请填写来访人姓名"/>
</template>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="上访时间">
<el-date-picker
v-model="queryParams.visitTime"
type="datetime"
placeholder="请选择上访时间"
value-format="YYYY-MM-DD hh:mm:ss"
:disabled="isView"
placeholder="请选择上访时间"
type="datetime"
value-format="YYYY-MM-DD hh:mm:ss"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电话">
<el-input
placeholder="请填写上访人电话号码"
v-model="queryParams.visitorMobile"
:disabled="isView"
placeholder="请填写来访人电话号码"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工作单位或住址">
<el-input
placeholder="请填写上访人工作单位或住址"
v-model="queryParams.visitorContact"
:disabled="isView"
placeholder="请填写来访人工作单位或住址"
/>
</el-form-item>
</el-col>
@ -71,14 +89,14 @@
<el-form-item label="性别">
<el-select
v-model="queryParams.visitorSex"
placeholder="请选择性别"
:disabled="isView"
placeholder="请选择性别"
>
<el-option
v-for="item in sys_user_sex"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
@ -87,40 +105,40 @@
<el-form-item label="学历">
<el-select
v-model="queryParams.visitorDegree"
placeholder="请选择学历"
:disabled="isView"
placeholder="请选择学历"
>
<el-option
v-for="item in people_degree"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="来源">
<el-input placeholder="请填写来源" v-model="queryParams.source" :disabled="isView"/>
<el-input v-model="queryParams.source" :disabled="isView" placeholder="请填写来源"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="年龄">
<el-input
placeholder="请填写年龄"
type="number"
:min="1"
v-model="queryParams.visitorAge"
:disabled="isView"
:min="1"
placeholder="请填写年龄"
type="number"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="接待人">
<el-input
placeholder="请填写接待人"
v-model="queryParams.receptionist"
:disabled="isView"
placeholder="请填写接待人"
/>
</el-form-item>
</el-col>
@ -128,14 +146,14 @@
<el-form-item label="接待人类型">
<el-select
v-model="queryParams.receptionistType"
placeholder="请选择接待人类型"
:disabled="isView"
placeholder="请选择接待人类型"
>
<el-option
v-for="item in receptionist_type"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
@ -143,9 +161,9 @@
<el-col :span="24">
<el-form-item label="联系住址">
<el-input
placeholder="请填写联系住址"
v-model="queryParams.visitorAddress"
:disabled="isView"
placeholder="请填写联系住址"
/>
</el-form-item>
</el-col>
@ -154,19 +172,19 @@
<el-col :span="16">
<el-form-item label="身份证号码">
<el-input
placeholder="请填写上访人身份证号码"
v-model="queryParams.visitorCode"
:disabled="isView"
placeholder="请填写来访人身份证号码"
type="number"
@change="idCardChangeHandle"
:disabled="isView"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<!-- @click="visitHistoryRef.showVisitHistory(queryForm.sfzId)" -->
<el-button
type="text"
:disabled="viewHistoryDisable"
type="text"
@click="visitHistoryRef.showVisitHistory(queryParams.visitorCode)"
>
@ -180,41 +198,41 @@
<DividerHeader title="上访情况"/>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="来访类型" required prop="type">
<el-form-item label="来访类型" prop="type" required>
<el-select
v-model="queryParams.type"
placeholder="请选择来访类型"
:disabled="isView"
placeholder="请选择来访类型"
>
<el-option
v-for="item in visit_type"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12"></el-col>
<el-col :span="12">
<el-form-item label="反映事项" required label-position="top" prop="demand">
<el-form-item label="反映事项" label-position="top" prop="demand" required>
<el-input
placeholder="请填写反映事项"
type="textarea"
v-model="queryParams.demand"
:autosize="{ minRows: 3, maxRows: 9999 }"
:disabled="isView"
placeholder="请填写反映事项"
type="textarea"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="答复口径" required label-position="top" prop="reply">
<el-form-item label="答复口径" label-position="top" prop="reply" required>
<el-input
placeholder="请填写答复口径"
type="textarea"
v-model="queryParams.reply"
:autosize="{ minRows: 3, maxRows: 9999 }"
:disabled="isView"
placeholder="请填写答复口径"
type="textarea"
/>
</el-form-item>
</el-col>
@ -222,14 +240,14 @@
<el-form-item label="相关领域" label-position="top">
<el-select
v-model="queryParams.field"
placeholder="请选择领域"
:disabled="isView"
placeholder="请选择领域"
>
<el-option
v-for="item in visit_field"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
@ -238,14 +256,14 @@
<el-form-item label="答复形式" label-position="top">
<el-select
v-model="queryParams.replyType"
placeholder="请选择答复形式"
:disabled="isView"
placeholder="请选择答复形式"
>
<el-option
v-for="item in visit_reply_type"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
@ -255,9 +273,9 @@
<el-radio-group v-model="queryParams.isKeyPerson" :disabled="isView">
<el-radio-button
v-for="item in boolean_yes_no"
:value="item.value"
:key="item.label"
:label="item.label"
:value="item.value"
/>
</el-radio-group>
</el-form-item>
@ -266,14 +284,14 @@
<el-form-item label="级别" label-position="top">
<el-select
v-model="queryParams.level"
placeholder="请选择来访级别"
:disabled="isView"
placeholder="请选择来访级别"
>
<el-option
v-for="item in visit_level"
:key="item.label"
:label="item.label"
:value="item.value"
:key="item.label"
/>
</el-select>
</el-form-item>
@ -282,13 +300,14 @@
</el-form>
<template #footer>
<el-button type="primary" @click="updateHandle(queryParamsRef)" v-if="isEdit">提交</el-button>
<el-button type="primary" @click="createHandle(queryParamsRef)" v-if="isCreate">提交</el-button>
<el-button v-if="isEdit" type="primary" @click="updateHandle(queryParamsRef)">提交</el-button>
<el-button v-if="isCreate" type="primary" @click="createHandle(queryParamsRef)">提交</el-button>
<el-button @click="changeShowStatus">关闭</el-button>
</template>
</el-drawer>
<VisitHistory ref="visitHistoryRef"/>
<PersonnelHistoryView ref="PersonnelHistoryViewRef" @userInfo="handleEmitUserInfo"/>
</template>
<script setup>
@ -304,6 +323,7 @@ import dayjs from 'dayjs';
import DividerHeader from '@/components/DividerHeader/DividerHeader.vue';
import {ArrowRight} from '@element-plus/icons-vue';
import VisitHistory from '@/views/PoliceWork/RegisterVisit/components/VisitHistory.vue';
import PersonnelHistoryView from '@/views/PoliceWork/RegisterVisit/components/PersonnelHistoryView.vue';
defineOptions({
name: 'AddEditRegisterVisit'
@ -330,6 +350,7 @@ const emit = defineEmits(['refresh'])
const queryParamsRef = useTemplateRef('queryParamsRef')
const visitHistoryRef = useTemplateRef('visitHistoryRef')
const PersonnelHistoryViewRef = useTemplateRef('PersonnelHistoryViewRef')
const isShow = ref(false)
const isEdit = ref(false)
@ -510,9 +531,41 @@ const idCardChangeHandle = async (value) => {
const disableDate = (date) => {
return date.getTime() < new Date().getTime()
}
const handleEmitUserInfo = (row) => {
queryParams.value = {
...queryParams.value,
//
visitorName: row.visitorName,
//
visitorMobile: row.visitorMobile,
//
visitorContact: row.visitorContact,
//
visitorCode: row.visitorCode,
//
visitorSex: row.visitorSex,
//
visitorDegree: row.visitorDegree,
//
source: row.source,
//
visitorAge: row.visitorAge,
//
visitorAddress: row.visitorAddress,
//
receptionist: row.receptionist,
//
receptionistType: row.receptionistType
}
if (row.visitorCode) {
idCardChangeHandle(row.visitorCode)
}
}
</script>
<style scoped lang="scss">
<style lang="scss" scoped>
.el-collapse {
.items {
display: flex;

View File

@ -0,0 +1,137 @@
<template>
<el-drawer
v-model="isShow"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:title="title"
size="90%"
>
<el-table
:data="tableData"
show-overflow-tooltip
>
<el-table-column align="center" type="index" width="20"/>
<el-table-column align="center" label="姓名" prop="visitorName" width="100"/>
<el-table-column align="center" label="年龄" prop="visitorAge" width="50"/>
<el-table-column align="center" label="身份证号码" prop="visitorCode" width="200"/>
<el-table-column align="center" label="电话" prop="visitorMobile" width="150"/>
<el-table-column align="center" label="性别" prop="visitorSex" width="50">
<template #default="scope">
<dict-tag :options="sys_user_sex" :value="scope.row.visitorSex"/>
</template>
</el-table-column>
<el-table-column align="center" label="学历" prop="visitorDegree" width="90">
<template #default="scope">
<dict-tag :options="people_degree" :value="scope.row.visitorDegree"/>
</template>
</el-table-column>
<el-table-column header-align="center" label="工作单位或住址" prop="visitorContact" width="350"/>
<el-table-column align="center" label="来源" prop="source"/>
<el-table-column align="center" label="上访时间" prop="visitTime" width="200">
<template #default="scope">
{{ dayjs(scope.row.visitTime).format('YYYY-MM-DD hh:mm:ss') }}
</template>
</el-table-column>
<el-table-column align="center" label="接待人" prop="receptionist" width="150"/>
<el-table-column align="center" label="接待人类型" prop="receptionistType" width="100">
<template #default="scope">
<dict-tag :options="receptionist_type" :value="scope.row.receptionistType"/>
</template>
</el-table-column>
<el-table-column align="center" label="联系住址" prop="visitorAddress" width="250"/>
<el-table-column fixed="right" label="操作" prop="visitorName">
<template #default="scope">
<el-button size="small" type="primary" @click="handleEmit(scope.row)">选择</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show="total > 0"
v-model:limit="paging.pageSize"
v-model:page="paging.pageNum"
:total="total"
@pagination="getList"
/>
</el-drawer>
</template>
<script setup>
import {getVisitList} from '@/api/RegistVisitApi/RegistVisitApi.js';
import PageEnum from '@/enum/PageEnum.js';
import dayjs from 'dayjs';
import DictTag from '@/components/DictTag/index.vue';
import {getCurrentInstance} from 'vue';
const emit = defineEmits(['userInfo'])
const {proxy} = getCurrentInstance();
const {
sys_user_sex,
people_degree,
receptionist_type
} = proxy.useDict(
'sys_user_sex',
'people_degree',
'receptionist_type'
)
defineOptions({
name: 'PersonnelHistoryView'
})
const isShow = ref(false)
const total = ref(0);
const paging = ref({
pageNum: 1,
pageSize: PageEnum.SIZE,
});
// 访
const visitorName = ref('')
//
const title = ref('')
//
const changeShowStatus = () => {
isShow.value = !isShow.value
if (!isShow.value) {
}
}
//
const showPersonnelVisitHistory = async (name) => {
if (!name) return;
changeShowStatus();
visitorName.value = name
title.value = `${name} 来访基本信息`
await getList()
}
defineExpose({showPersonnelVisitHistory})
const tableData = ref([])
const getList = async () => {
const res = await getVisitList({
visitorName: visitorName.value
}, paging.value)
total.value = res.total;
tableData.value = res.rows;
}
const handleEmit = (row) => {
emit('userInfo', row)
changeShowStatus()
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -5,8 +5,8 @@
:inline="true"
:model="queryParams"
>
<el-form-item label="访人" prop="visitorName">
<el-input v-model="queryParams.visitorName" clearable placeholder="请输入访人"/>
<el-form-item label="访人" prop="visitorName">
<el-input v-model="queryParams.visitorName" clearable placeholder="请输入访人"/>
</el-form-item>
<el-form-item label="电话" prop="visitorMobile">
<el-input v-model="queryParams.visitorMobile" clearable placeholder="请输入电话"/>
@ -84,7 +84,7 @@
{{ dayjs(scope.row.visitTime).format('YYYY-MM-DD hh:mm:ss') }}
</template>
</el-table-column>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="访人" prop="visitorName" width="150"/>
<el-table-column label="电话" prop="visitorMobile" width="200"/>
<el-table-column label="工作单位或住址" prop="visitorContact" width="230"/>
<el-table-column label="身份证号码" prop="visitorCode" width="230"/>