ソースを参照

访客预约记录新增身份证号及文档更新

yawuga 11 時間 前
コミット
9364147267

+ 22 - 0
src/views/base/appointmentRecord/index.vue

@@ -27,6 +27,16 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
+      <el-form-item label="身份证号" prop="idCardNo">
+        <el-input
+          v-model="queryParams.idCardNo"
+          placeholder="请输入身份证号"
+          clearable
+          maxlength="18"
+          @input="handleIdCardInput"
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
       <el-form-item label="被访对象" prop="visitedPerson">
         <el-input
           v-model="queryParams.visitedPerson"
@@ -80,6 +90,7 @@
       <el-table-column label="预约单号" align="center" prop="appointmentNo" min-width="160" show-overflow-tooltip />
       <el-table-column label="访客姓名" align="center" prop="visitorName" min-width="120" show-overflow-tooltip />
       <el-table-column label="手机号" align="center" prop="mobile" width="140" />
+      <el-table-column label="身份证号" align="center" prop="idCardNo" width="180" show-overflow-tooltip />
       <el-table-column label="被访对象" align="center" prop="visitedPerson" min-width="140" show-overflow-tooltip />
       <el-table-column label="预约时间" align="center" prop="appointmentTime" width="170">
         <template #default="scope">
@@ -121,6 +132,7 @@
         </el-descriptions-item>
         <el-descriptions-item label="访客姓名">{{ form.visitorName || "-" }}</el-descriptions-item>
         <el-descriptions-item label="手机号">{{ form.mobile || "-" }}</el-descriptions-item>
+        <el-descriptions-item label="身份证号">{{ form.idCardNo || "-" }}</el-descriptions-item>
         <el-descriptions-item label="被访对象">{{ form.visitedPerson || "-" }}</el-descriptions-item>
         <el-descriptions-item label="预约时间">{{ parseTime(form.appointmentTime, "{y}-{m}-{d} {h}:{i}:{s}") || "-" }}</el-descriptions-item>
         <el-descriptions-item label="来源平台">{{ form.sourcePlatform || "-" }}</el-descriptions-item>
@@ -158,6 +170,7 @@ const data = reactive({
     appointmentNo: undefined,
     visitorName: undefined,
     mobile: undefined,
+    idCardNo: undefined,
     visitedPerson: undefined,
     appointmentTimeStart: undefined,
     appointmentTimeEnd: undefined,
@@ -200,6 +213,7 @@ function reset() {
     appointmentNo: null,
     visitorName: null,
     mobile: null,
+    idCardNo: null,
     visitedPerson: null,
     appointmentTime: null,
     status: null,
@@ -232,6 +246,14 @@ function handleMobileInput(value) {
   queryParams.value.mobile = String(value || "").replace(/\D/g, "").slice(0, 11)
 }
 
+/** 身份证号查询输入限制:只允许数字和 X,自动转大写,最多 18 位 */
+function handleIdCardInput(value) {
+  queryParams.value.idCardNo = String(value || "")
+    .replace(/[^0-9Xx]/g, "")
+    .toUpperCase()
+    .slice(0, 18)
+}
+
 /** 查看详情 */
 function handleDetail(row) {
   reset()

+ 8 - 5
迎宾巡逻安防机器人运维端Web管理系统详细设计开发文档_V2.1.html

@@ -253,7 +253,7 @@
 <tr><td>与预约记录关系</td><td>预约记录由主控平台同步,表示计划来访;访客到现场后通过机器人屏幕或扫码 H5 完成登记确认,并生成访客记录。</td></tr>
 <tr><td>导出字段</td><td>导出列表主要字段;访客照片建议导出“有照片/无照片”或照片链接,不直接导出图片文件。</td></tr>
 </tbody></table>
-    <h4>6.4.2 预约记录页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>预约单号、访客姓名、手机号、预约状态、预约时间范围。</td></tr><tr><td>列表字段</td><td>预约单号、访客姓名、手机号、被访人、预约时间、状态、同步时间、操作。</td></tr><tr><td>详情字段</td><td>预约单号(appointmentNo)、访客姓名(visitorName)、手机号(mobile)、被访人(visitedPerson)、预约时间(appointmentTime)、预约状态(status)、同步时间(syncTime)、来源平台(sourcePlatform)、备注(remark)。</td></tr><tr><td>操作按钮</td><td>查看详情。</td></tr><tr><td>数据来源</td><td>主控平台同步;本地端仅展示,不发起预约流程。</td></tr></tbody></table>
+    <h4>6.4.2 预约记录页面</h4><table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody><tr><td>查询条件</td><td>预约单号、访客姓名、手机号、身份证号、被访对象、预约状态、预约时间范围。</td></tr><tr><td>列表字段</td><td>预约单号、访客姓名、手机号、身份证号、被访人、预约时间、状态、同步时间、操作。</td></tr><tr><td>详情字段</td><td>预约单号(appointmentNo)、访客姓名(visitorName)、手机号(mobile)、身份证号(idCardNo)、被访人(visitedPerson)、预约时间(appointmentTime)、预约状态(status)、同步时间(syncTime)、来源平台(sourcePlatform)、备注(remark)。</td></tr><tr><td>操作按钮</td><td>查看详情。</td></tr><tr><td>数据来源</td><td>主控平台同步;本地端仅展示,不发起预约流程。</td></tr><tr><td>预约匹配方式</td><td>预约到访时,机器人屏幕端支持通过刷身份证或输入手机号查询预约信息。因此预约记录需同时保存手机号(mobile)和身份证号(idCardNo)。当访客刷身份证时,机器人端可根据身份证号匹配预约记录;当访客输入手机号时,可根据手机号匹配预约记录。</td></tr></tbody></table>
     <h4>6.4.3 白名单管理页面</h4>
 <table><thead><tr><th>模块</th><th>详细设计</th></tr></thead><tbody>
 <tr><td>页面目标</td><td>维护可被机器人识别为可信人员的白名单数据,支持通过人脸照片、身份证号、手机号等信息进行白名单匹配。</td></tr>
@@ -583,8 +583,8 @@
       <tr><td>/robot-ops/visitor/record/page</td><td>GET</td><td>访客记录分页</td><td>visitorName、mobile、idCardNo、visitType、registerType、visitedPerson、visitTimeStart、visitTimeEnd、pageNum、pageSize</td><td>id、visitorName、mobile、idCardNo、visitorPhoto、visitType、registerType、visitorSource、visitReason、appointmentNo、visitedPerson、visitTime</td><td>robot_ops_visitor_record</td></tr>
       <tr><td>/robot-ops/visitor/record/{id}</td><td>GET</td><td>访客详情</td><td>记录ID(id)</td><td>visitorName、mobile、idCardNo、visitType、registerType、visitorSource、visitReason、visitorPhoto、appointmentNo、visitedPerson、visitTime、remark</td><td>robot_ops_visitor_record</td></tr>
       <tr><td>/robot-ops/visitor/record/export</td><td>GET</td><td>导出访客记录</td><td>同分页查询条件:visitorName、mobile、idCardNo、visitType、registerType、visitedPerson、visitTimeStart、visitTimeEnd</td><td>Excel文件;导出字段建议包括访客姓名、手机号、身份证号、到访类型、登记方式、访客来源、来访事由、预约单号、被访对象、来访时间、访客照片状态</td><td>robot_ops_visitor_record</td></tr>
-      <tr><td>/robot-ops/visitor/appointment/page</td><td>GET</td><td>预约记录分页</td><td>appointmentNo、visitorName、mobile、status、appointmentTimeStart、appointmentTimeEnd、pageNum、pageSize</td><td>appointmentNo、visitorName、mobile、visitedPerson、appointmentTime、status、syncTime</td><td>robot_ops_appointment_record</td></tr>
-      <tr><td>/robot-ops/visitor/appointment/{id}</td><td>GET</td><td>预约详情</td><td>预约记录ID(id)</td><td>appointmentNo、visitorName、mobile、visitedPerson、appointmentTime、status、syncTime、sourcePlatform、remark</td><td>robot_ops_appointment_record</td></tr>
+      <tr><td>/robot-ops/visitor/appointment/page</td><td>GET</td><td>预约记录分页</td><td>appointmentNo、visitorName、mobile、idCardNo、status、appointmentTimeStart、appointmentTimeEnd、pageNum、pageSize</td><td>appointmentNo、visitorName、mobile、idCardNo、visitedPerson、appointmentTime、status、syncTime</td><td>robot_ops_appointment_record</td></tr>
+      <tr><td>/robot-ops/visitor/appointment/{id}</td><td>GET</td><td>预约详情</td><td>预约记录ID(id)</td><td>appointmentNo、visitorName、mobile、idCardNo、visitedPerson、appointmentTime、status、syncTime、sourcePlatform、remark</td><td>robot_ops_appointment_record</td></tr>
       <tr><td>/robot-ops/visitor/whitelist/page</td><td>GET</td><td>白名单分页</td><td>姓名(name)、手机号(mobile)、身份证号(idCardNo)、人员类型(whitelistType)、来源类型(sourceType)、启用状态(status)、pageNum、pageSize</td><td>白名单ID(id)、姓名(name)、手机号(mobile)、身份证号(idCardNo)、人员类型(whitelistType)、人脸照片地址(faceImageUrl)、是否有人脸照片(hasFaceImage)、来源类型(sourceType)、有效开始时间(validStartTime)、有效结束时间(validEndTime)、启用状态(status)、更新时间(updateTime)</td><td>robot_ops_whitelist</td></tr>
       <tr><td>/robot-ops/visitor/whitelist/{id}</td><td>GET</td><td>白名单详情</td><td>白名单ID(id)</td><td>name、mobile、idCardNo、whitelistType、faceImageUrl、sourceType、validStartTime、validEndTime、status、remark</td><td>robot_ops_whitelist</td></tr>
       <tr><td>/robot-ops/visitor/whitelist</td><td>POST</td><td>新增白名单</td><td>name、mobile、idCardNo、whitelistType、faceImageUrl、sourceType、validStartTime、validEndTime、status、remark;运维后台新增时 sourceType 默认传 1,表示本地录入</td><td>新增ID(id)</td><td>robot_ops_whitelist</td></tr>
@@ -971,6 +971,7 @@ VALUES
   `appointment_no` VARCHAR(50) NOT NULL COMMENT '预约单号',
   `visitor_name` VARCHAR(100) DEFAULT NULL COMMENT '访客姓名',
   `mobile` VARCHAR(20) DEFAULT NULL COMMENT '访客手机号',
+  `id_card_no` VARCHAR(18) DEFAULT NULL COMMENT '身份证号',
   `visited_person` VARCHAR(100) DEFAULT NULL COMMENT '被访人/被访对象',
   `appointment_time` DATETIME DEFAULT NULL COMMENT '预约到访时间',
   `status` VARCHAR(20) DEFAULT NULL COMMENT '预约状态:待到访、已到访、已取消、已过期',
@@ -984,8 +985,10 @@ VALUES
   PRIMARY KEY (`id`),
   UNIQUE KEY `uk_robot_ops_appointment_no` (`appointment_no`),
   KEY `idx_robot_ops_appointment_time` (`appointment_time`),
-  KEY `idx_robot_ops_appointment_mobile` (`mobile`)
+  KEY `idx_robot_ops_appointment_mobile` (`mobile`),
+  KEY `idx_appointment_id_card_no` (`id_card_no`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='访客预约记录表';</div>
+    <div class="note">预约记录需同时保存手机号和身份证号,用于支持机器人屏幕端通过手机号输入或身份证读取两种方式查询预约信息。手机号和身份证号可根据主控平台预约数据情况选填,但至少应有一种可用于现场预约匹配。</div>
 
     <h4>8.3.3 白名单表 robot_ops_whitelist</h4>
     <div class="code">CREATE TABLE `robot_ops_whitelist` (
@@ -1259,7 +1262,7 @@ VALUES
 
   <div class="section" id="s12"><h2>12. 对其他团队的配合要求</h2><div class="danger">以下内容不再作为“待定事项”,而是作为其他团队必须按本文配合实现的内容。</div><ul><li><strong>机器人侧:</strong>需提供首页状态接口、设备状态接口、控制接口、视频流信息接口、喊话接口、参数接口、日志接口、版本与升级接口。</li><li><strong>主控平台侧:</strong>需提供预约记录同步接口、可选白名单同步接口。</li><li><strong>展示端:</strong>需支持欢迎语、播放方案、播报任务、展示主题配置的读取与应用。</li><li><strong>算法 / 安防侧:</strong>需向运维端提供安防告警记录标准数据结构。</li></ul><div class="ok">结论:本文件已经作为一期开发基线文档定版。后续若有调整,应基于本文迭代版本,而不是推翻本文重新回到需求澄清阶段。</div></div>
 
-  <div class="section" id="s13"><h2>13. 测试验收要点</h2><table><thead><tr><th>模块</th><th>验收要点</th></tr></thead><tbody><tr><td>登录</td><td>正确账号可登录,错误账号提示,退出后不可访问后台页面。</td></tr><tr><td>首页</td><td>状态、统计、告警、快捷入口可正常展示和跳转。</td></tr><tr><td>内容管理</td><td>欢迎语、问答库、素材、方案、播报任务、主题均可增删改查。</td></tr><tr><td>访客管理</td><td>访客记录、预约记录、白名单可查询,导出结果正确。</td></tr><tr><td>运维管理</td><td>设备状态、控制、运行日志、对话日志、告警日志可查看,OTA 升级流程完整。</td></tr><tr><td>运维管理</td><td>设备状态可展示,控制操作有确认弹窗和结果反馈,参数保存有效,OTA 流程完整。</td></tr><tr><td>日志与权限</td><td>关键操作写入操作日志,不同角色权限生效。</td></tr></tbody></table></div>
+  <div class="section" id="s13"><h2>13. 测试验收要点</h2><table><thead><tr><th>模块</th><th>验收要点</th></tr></thead><tbody><tr><td>登录</td><td>正确账号可登录,错误账号提示,退出后不可访问后台页面。</td></tr><tr><td>首页</td><td>状态、统计、告警、快捷入口可正常展示和跳转。</td></tr><tr><td>内容管理</td><td>欢迎语、问答库、素材、方案、播报任务、主题均可增删改查。</td></tr><tr><td>访客管理</td><td>访客记录、预约记录、白名单可查询,导出结果正确。</td></tr><tr><td>访客管理-预约记录</td><td>预约记录列表支持按身份证号查询;预约记录详情展示身份证号;机器人屏幕端刷身份证时,可根据身份证号匹配预约记录;输入手机号时,可根据手机号匹配预约记录。</td></tr><tr><td>运维管理</td><td>设备状态、控制、运行日志、对话日志、告警日志可查看,OTA 升级流程完整。</td></tr><tr><td>运维管理</td><td>设备状态可展示,控制操作有确认弹窗和结果反馈,参数保存有效,OTA 流程完整。</td></tr><tr><td>日志与权限</td><td>关键操作写入操作日志,不同角色权限生效。</td></tr></tbody></table></div>
 
   <div class="footer">文档版本:V2.1(完整详细设计开发版)</div>
 </div>