HarmonyOS ArkTS 实战:实现一个实习证明开具审核应用
HarmonyOS ArkTS 实战实现一个实习证明开具审核应用项目效果本文使用 HarmonyOS 和 ArkTS 实现一个实习证明开具审核应用。应用可以申请开具实习证明上传实习材料查看审核进度下载电子证明并提供历史申请、模板下载、审核流程、常见问题等完整功能。项目使用 DevEco Studio 开发适配 API 23 及以上版本。运行效果功能介绍实习证明申请实习信息填写材料上传审核进度查询电子证明下载历史申请记录证明模板下载审核流程查看辅导员审核学院盖章常见问题消息通知定义数据结构interfaceCertificateApplication{id:number;companyName:string;position:string;startTime:string;endTime:string;supervisor:string;supervisorPhone:string;workContent:string;materials:string[];status:string;// 草稿/待审核/辅导员审核/学院审核/已开具/已驳回applyTime:string;approveTime:string;certificateUrl:string;rejectReason:string;}初始化页面状态StateprivatetabIndex:number0;StateprivatecompanyName:string;Stateprivateposition:string;StateprivatestartTime:string2026-06-01;StateprivateendTime:string2026-08-31;Stateprivatesupervisor:string;StateprivatesupervisorPhone:string;StateprivateworkContent:string;Stateprivateapplications:CertificateApplication[][{id:1,companyName:上海字节跳动科技有限公司,position:前端开发实习生,startTime:2026-06-01,endTime:2026-08-31,supervisor:张经理,supervisorPhone:138****1234,workContent:参与HarmonyOS应用开发负责页面实现和接口对接,materials:[实习协议.pdf,实习鉴定表.pdf],status:已开具,applyTime:2026-07-01,approveTime:2026-07-05,certificateUrl:,rejectReason:},];StateprivatenextId:number10;提交申请privatesubmitApplication():void{if(!this.companyName||!this.position||!this.supervisor)return;constapp:CertificateApplication{id:this.nextId,companyName:this.companyName,position:this.position,startTime:this.startTime,endTime:this.endTime,supervisor:this.supervisor,supervisorPhone:this.supervisorPhone,workContent:this.workContent,materials:[],status:待审核,applyTime:newDate().toLocaleDateString(),approveTime:,certificateUrl:,rejectReason:};this.applications[app,...this.applications];this.companyName;this.position;this.supervisor;this.workContent;this.nextId1;}状态颜色privategetStatusColor(status:string):string{if(status已驳回)return#DC2626;if(status.includes(审核))return#F59E0B;if(status已开具)return#059669;return#64748B;}申请卡片组件BuilderApplicationCard(app:CertificateApplication){Column({space:10}){Row(){Text(app.companyName).fontSize(16).fontWeight(FontWeight.Medium).fontColor(#581C87).layoutWeight(1)Text(app.status).fontSize(11).fontColor(Color.White).padding({left:8,right:8,top:3,bottom:3}).backgroundColor(this.getStatusColor(app.status)).borderRadius(10)}.width(100%)Text(岗位${app.position}).fontSize(13).fontColor(#7E22CE).width(100%)Text(实习时间${app.startTime}至${app.endTime}).fontSize(12).fontColor(#9333EA)Text(直属领导${app.supervisor}).fontSize(12).fontColor(#9333EA)if(app.rejectReason){Text(驳回原因${app.rejectReason}).fontSize(12).fontColor(#DC2626).width(100%)}if(app.status已开具){Button(下载电子证明).width(100%).height(36).fontSize(14).backgroundColor(#581C87).margin({top:4})}}.width(100%).padding(16).backgroundColor(#FAF5FF).borderRadius(12)}页面布局build(){Column(){Text( 实习证明开具).fontSize(24).fontWeight(FontWeight.Bold).fontColor(#581C87).width(100%).padding(20)// TabRow({space:20}){Text(申请记录).fontSize(16).fontWeight(this.tabIndex0?FontWeight.Bold:FontWeight.Normal).fontColor(this.tabIndex0?#581C87:#94A3B8).onClick(()this.tabIndex0)Text(新申请).fontSize(16).fontWeight(this.tabIndex1?FontWeight.Bold:FontWeight.Normal).fontColor(this.tabIndex1?#581C87:#94A3B8).onClick(()this.tabIndex1)Text(办理指南).fontSize(16).fontWeight(this.tabIndex2?FontWeight.Bold:FontWeight.Normal).fontColor(this.tabIndex2?#581C87:#94A3B8).onClick(()this.tabIndex2)}.width(100%).padding({left:20,right:20})if(this.tabIndex0){List({space:12}){ForEach(this.applications,(a:CertificateApplication){ListItem(){this.ApplicationCard(a)}})}.width(100%).padding(20).layoutWeight(1)}elseif(this.tabIndex1){Scroll(){Column({space:16}){TextInput({text:this.companyName,placeholder:实习单位全称}).width(100%).height(44).backgroundColor(#FAF5FF).onChange((v:string)this.companyNamev)TextInput({text:this.position,placeholder:实习岗位}).width(100%).height(44).backgroundColor(#FAF5FF).onChange((v:string)this.positionv)TextInput({text:this.startTime,placeholder:开始时间}).width(100%).height(44).backgroundColor(#FAF5FF)TextInput({text:this.endTime,placeholder:结束时间}).width(100%).height(44).backgroundColor(#FAF5FF)TextInput({text:this.supervisor,placeholder:直属领导姓名}).width(100%).height(44).backgroundColor(#FAF5FF).onChange((v:string)this.supervisorv)TextInput({text:this.supervisorPhone,placeholder:直属领导电话}).width(100%).height(44).backgroundColor(#FAF5FF).onChange((v:string)this.supervisorPhonev)TextArea({text:this.workContent,placeholder:实习工作内容简述}).width(100%).height(100).backgroundColor(#FAF5FF).onChange((v:string)this.workContentv)Button( 上传实习材料实习协议/鉴定表).width(100%).height(50).fontSize(14).backgroundColor(#EDE9FE).fontColor(#581C87)Button(提交申请).width(100%).height(48).fontSize(16).backgroundColor(#581C87).margin({top:10}).onClick(()this.submitApplication())}.width(100%).padding(20)}.layoutWeight(1)}else{List({space:10}){ListItem(){Column({space:8}){Text( 办理流程).fontSize(15).fontWeight(FontWeight.Medium).fontColor(#581C87)Text(1. 填写实习信息并上传材料\n2. 辅导员审核1-2个工作日\n3. 学院审核盖章2-3个工作日\n4. 电子证明生成可下载打印,{fontSize:12,fontColor:#7E22CE})}.width(100%).padding(16).backgroundColor(#FAF5FF).borderRadius(12)}ListItem(){Column({space:8}){Text( 所需材料).fontSize(15).fontWeight(FontWeight.Medium).fontColor(#581C87)Text(• 实习协议盖章扫描件\n• 实习鉴定表单位盖章\n• 实习报告如有,{fontSize:12,fontColor:#7E22CE})}.width(100%).padding(16).backgroundColor(#FAF5FF).borderRadius(12)}}.width(100%).padding(20).layoutWeight(1)}}.width(100%).height(100%).backgroundColor(Color.White)}页面设计说明主题色采用purple-900#581C87深紫色体现行政办公的正式、规范。紫色系表单办理流程清晰列出下载按钮醒目。SDK配置API 24compatibleSdkVersion: “6.1.1(24)”运行项目将代码复制到 entry/src/main/ets/pages/Index.ets 即可运行。项目总结实现了证明申请、材料上传、审核进度、电子证明下载、办理指南等功能。掌握了长文本输入、文件上传按钮、多步骤流程展示、表单验证等。后续可加入电子签章、PDF预览、消息推送、模板下载、批量申请、纸质证明领取预约等功能。

相关新闻

AI论文降重工具评测与学术写作优化指南

AI论文降重工具评测与学术写作优化指南

1. 论文查重困境与AI写作现状最近在学术圈里有个现象特别有意思:越来越多的学生和研究者开始用AI辅助论文写作,但随之而来的查重率问题却让人头疼不已。上周我实验室的学弟就因为初稿AIGC率高达78%被导师打回来重写,急得直挠头。这种情况其实…

2026/7/24 6:17:35阅读更多 →
Java密钥库迁移指南:从JKS到PKCS12的完整转换与私钥导出

Java密钥库迁移指南:从JKS到PKCS12的完整转换与私钥导出

1. 项目概述:为什么我们需要告别JKS?如果你在Java生态里摸爬滚打超过五年,那么你的项目里大概率还躺着一个或多个后缀为.jks的文件。JKS,全称Java KeyStore,是Java平台长期以来默认的、也是事实上的标准密钥库格式。它…

2026/7/24 6:17:35阅读更多 →
sqli作业

sqli作业

sqli作业Less-1:单引号闭合 闭合方式: 加个单引号看报错: http://192.168.40.129/sqli/Less-1/?id1报错里 1 LIMIT 0,1 说明源码是 WHERE id$id,用 闭合就行。 ORDER BY 试列数: ?id1 order by 4-- # 报 Unknown …

2026/7/24 6:17:35阅读更多 →
[C2000实战] 拒绝手撸寄存器:利用 SysConfig 快速配置DSP F2800137的EPWMXBAR功能及参数说明

[C2000实战] 拒绝手撸寄存器:利用 SysConfig 快速配置DSP F2800137的EPWMXBAR功能及参数说明

EPWMXBAR的Sysconfig配置参数详解:这里的TRIP代表DSP内部的硬件故障数据流总线,和具体的外设没有固定的绑定关系,这里的TRIP4可以给EPWM1 的 Digital Compare 进行触发,也可以是TRIP5给EPWM1进行触发保护。每条 TRIP 总线都可以接…

2026/7/24 7:33:49阅读更多 →
BQ27410-G1阻抗跟踪电量计:从原理到实战的高精度电池管理方案

BQ27410-G1阻抗跟踪电量计:从原理到实战的高精度电池管理方案

1. 项目概述与核心价值在便携式电子设备的设计中,电池管理一直是个既基础又棘手的难题。你肯定遇到过这种情况:设备明明显示还有20%的电量,结果没几分钟就自动关机了;或者新设备续航很顶,用了一两年后,电量…

2026/7/24 7:33:49阅读更多 →
BQ27410-G1阻抗跟踪电量计:高精度电池管理从评估到量产全解析

BQ27410-G1阻抗跟踪电量计:高精度电池管理从评估到量产全解析

1. 项目概述与核心价值在便携式电子设备的设计中,电池管理一直是个既基础又棘手的难题。我们常常遇到这样的场景:设备明明显示还有20%的电量,结果没几分钟就自动关机了;或者充电时,电量显示从10%瞬间跳到50%&#xff0…

2026/7/24 7:33:49阅读更多 →
千笔AI与知文AI论文写作工具对比评测

千笔AI与知文AI论文写作工具对比评测

1. 论文写作工具现状与需求分析作为一名经历过论文写作煎熬的过来人,我深知专科生在学术写作中面临的困境。时间紧、任务重、写作经验不足,这些因素常常让论文写作变成一场噩梦。近年来出现的AI写作工具,确实为这个群体提供了新的解决方案。千…

2026/7/24 7:33:49阅读更多 →
企业AI智能体垂直领域落地的挑战与解决方案

企业AI智能体垂直领域落地的挑战与解决方案

1. 企业AI智能体落地的核心挑战去年参与某制造业客户AI客服项目时,我们部署的通用对话模型在回答"注塑机参数调整"这类专业问题时,准确率仅有23%。这个数字让我深刻意识到:未经垂直领域适配的AI智能体,在真实业务场景中…

2026/7/24 7:33:49阅读更多 →
AI内容安全:幻觉与深度伪造的检测与应对

AI内容安全:幻觉与深度伪造的检测与应对

1. 项目背景与核心挑战在AI技术快速发展的今天,内容安全已成为不可忽视的重要议题。作为一名长期从事AI内容安全研究的从业者,我深刻体会到AI"幻觉"(Hallucination)和深度伪造(Deepfake)技术带来的双重影响。这些技术既展现了AI的强大创造力&a…

2026/7/24 7:31:49阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →