HarmonyOS ArkTS 实战:实现一个校园门禁与访客预约应用

HarmonyOS ArkTS 实战:实现一个校园门禁与访客预约应用

项目效果

本文使用 HarmonyOS 和 ArkTS 实现一个校园门禁与访客预约应用。

应用可以生成校园通行码,预约访客入校,查看门禁通行记录,申请晚归权限,并提供访客审批、出入统计和二维码通行等功能。

项目使用 DevEco Studio 开发,适配 API 23 及以上版本。

运行效果

功能介绍

本项目实现了以下功能:

  • 校园通行码生成
  • 访客预约登记
  • 访客审批
  • 二维码通行
  • 门禁记录查询
  • 晚归申请
  • 出入统计
  • 通行权限管理
  • 访客二维码
  • 异常记录提醒

定义数据结构

typescript 复制代码
interface AccessRecord {
  id: number;
  personName: string;
  gateName: string;
  direction: string;
  time: string;
  type: string;
  status: string;
}

interface Visitor {
  id: number;
  name: string;
  phone: string;
  idCard: string;
  visitReason: string;
  visitTime: string;
  hostName: string;
  hostDept: string;
  status: string;
  qrCode: string;
  applyTime: string;
}

字段说明:

  • AccessRecord:门禁记录(id/姓名/门禁点/方向/时间/类型/状态)
  • Visitor:访客(id/姓名/电话/身份证/事由/访问时间/被访人/被访部门/状态/二维码/申请时间)

初始化页面状态

typescript 复制代码
@State private visitorNameText: string = '';
@State private visitorPhoneText: string = '';
@State private visitReasonText: string = '';
@State private visitTimeText: string = '';
@State private nextVisitorId: number = 5;
@State private currentUserName: string = '王同学';

初始数据:

typescript 复制代码
@State private visitors: Visitor[] = [
  { id: 1, name: '张家长', phone: '138****1234', idCard: '310***********1234', visitReason: '探望学生', visitTime: '2026-07-20 14:00', hostName: '王同学', hostDept: '计算机学院', status: '已通过', qrCode: 'V20260720001', applyTime: '2026-07-18' }
];

@State private accessRecords: AccessRecord[] = [
  { id: 1, personName: '王同学', gateName: '正门', direction: '进入', time: '2026-07-18 08:30', type: '学生', status: '正常' },
  { id: 2, personName: '王同学', gateName: '图书馆闸机', direction: '进入', time: '2026-07-18 09:15', type: '学生', status: '正常' }
];

预约访客

typescript 复制代码
private applyVisitor(): void {
  const name = this.visitorNameText.trim();
  const phone = this.visitorPhoneText.trim();
  const reason = this.visitReasonText.trim();
  const time = this.visitTimeText.trim();
  if (name.length === 0 || phone.length === 0) return;

  const qrCode = 'V' + new Date().toISOString().slice(0,10).replace(/-/g,'') + String(this.nextVisitorId).padStart(3,'0');
  const visitor: Visitor = {
    id: this.nextVisitorId, name, phone, idCard: '', visitReason: reason,
    visitTime: time, hostName: this.currentUserName, hostDept: '计算机学院',
    status: '待审批', qrCode, applyTime: new Date().toISOString().split('T')[0]
  };
  this.visitors = [visitor, ...this.visitors];
  this.nextVisitorId++;
  this.visitorNameText = ''; this.visitorPhoneText = ''; this.visitReasonText = ''; this.visitTimeText = '';
}

审批访客

typescript 复制代码
private approveVisitor(visitorId: number, approved: boolean): void {
  this.visitors = this.visitors.map((v: Visitor) => {
    if (v.id === visitorId && v.status === '待审批') {
      return { ...v, status: approved ? '已通过' : '已拒绝' };
    }
    return v;
  });
}

统计数据

typescript 复制代码
private getTodayInCount(): number {
  return this.accessRecords.filter(r => r.direction === '进入' && r.time.includes('2026-07-18')).length;
}
private getPendingVisitorCount(): number {
  return this.visitors.filter(v => v.status === '待审批').length;
}
private getApprovedVisitorCount(): number {
  return this.visitors.filter(v => v.status === '已通过').length;
}

设置状态颜色

typescript 复制代码
private getVisitorStatusColor(status: string): ResourceColor {
  if (status === '已通过') return '#059669';
  if (status === '待审批') return '#F59E0B';
  if (status === '已拒绝') return '#DC2626';
  return '#6B7280';
}

主题色:深橙色#C2410C,体现安全、门禁、警示的感觉。

页面设计说明

页面分为:顶部通行码区域、统计卡片、访客预约表单、访客列表、门禁记录列表。通行码使用居中大二维码样式,访客状态使用彩色标签,门禁记录使用时间轴展示。

SDK 配置

统一使用 API 24 配置。

运行项目

entry/src/main/ets/pages/Index.ets

项目总结

实现了门禁通行码、访客预约审批、出入记录、统计等功能。掌握了二维码展示、审批流程、状态管理、列表渲染等。后续可加入人脸识别、蓝牙开门、车辆通行、外卖人员登记等功能。

相关推荐
2zcode6 小时前
项目文档:基于MATLAB深度卷积特征的多曝光图像自适应融合系统设计与实现
深度学习·计算机视觉·matlab
不羁的木木7 小时前
HarmonyOS技术精讲-Connectivity Kit:蓝牙进阶——GATT服务与音频通道
华为·音视频·harmonyos
Helen_cai7 小时前
HarmonyOS ArkTS 实战:实现一个校园快递代取与跑腿应用
华为·harmonyos
2301_768103497 小时前
HarmonyOS趣味相机实战第13篇:CameraPicker与CameraKit选型、系统拍照回退及架构边界
harmonyos·arkts·架构设计·camerapicker·camerakit
湘美书院--湘美谈教育7 小时前
湘美谈教育湘美书院成功学系列:标准即是文明,AI时代的走向
大数据·人工智能·深度学习·机器学习·生活
FriendshipT7 小时前
Ultralytics:解读C3k2模块
人工智能·pytorch·python·深度学习·目标检测
2301_768103497 小时前
HarmonyOS趣味相机实战第14篇:装饰素材强类型建模、锚点语义与套装组合校验
harmonyos·arkts·数据建模·arkui·相机贴纸
不羁的木木8 小时前
HarmonyOS技术精讲-Connectivity Kit:Wi-Fi进阶能力——热点、P2P与Aware
asp.net·harmonyos·p2p