dedsudiyu 1 week ago
parent
commit
c587227eee

+ 223 - 0
.claude/api.md

@@ -0,0 +1,223 @@
+# 考试系统
+
+## API Docs
+- 【题库管理】 [分页查询题库](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873438e0.md): 分页查询题库。
+- 【题库管理】 [查询知识点题量统计](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873439e0.md): 查询指定知识点下当前用户可见的题量统计。
+- 【题库管理】 [获取题目详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873440e0.md): 获取题目详情。
+- 【题库管理】 [新增题目](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873441e0.md): 新增题目。
+- 【题库管理】 [编辑题目](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873442e0.md): 编辑题目。
+- 【题库管理】 [删除题目](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873443e0.md): 删除题目。
+- 【题库管理】 [下载题库导入模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873444e0.md): 下载题库导入模板。
+- 【题库管理】 [导入题库数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873445e0.md): 导入题库数据。
+- 【题库管理】 [导出导入失败数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494873446e0.md): 导出导入失败的数据。
+- 【试卷管理】 [分页查询试卷](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885398e0.md): 分页查询试卷。
+- 【试卷管理】 [查询试卷详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885399e0.md): 查询试卷详情。
+- 【试卷管理】 [查询固定组卷已选题目](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885400e0.md): 查询固定组卷指定知识点下已选题目。
+- 【试卷管理】 [新增试卷](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885401e0.md): 新增试卷。
+- 【试卷管理】 [修改试卷](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885402e0.md): 修改试卷。
+- 【试卷管理】 [删除试卷](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885403e0.md): 物理删除试卷。
+- 【试卷管理】 [复制试卷](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494885404e0.md): 复制试卷。
+- 【证书模板管理】 [查询证书模板列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887073e0.md): 查询当前用户可见的证书模板列表。
+- 【证书模板管理】 [分页查询证书模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887074e0.md): 分页查询当前用户可见的证书模板。
+- 【证书模板管理】 [新增证书模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887075e0.md): 新增证书模板。
+- 【证书模板管理】 [修改证书模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887076e0.md): 修改证书模板。
+- 【证书模板管理】 [删除证书模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887077e0.md): 删除证书模板。
+- 【证书模板管理】 [获取证书模板详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887078e0.md): 获取证书模板详情。
+- 【证书模板管理】 [生成学生证书PDF](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494887079e0.md): 根据模板和变量值生成学生证书 PDF。
+- 【考试安排管理】 [分页查询考试安排](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895223e0.md): 分页查询考试安排。
+- 【考试安排管理】 [查询考试详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895224e0.md): 查询考试详情。
+- 【考试安排管理】 [新增考试](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895225e0.md): 新增正常考试。
+- 【考试安排管理】 [修改考试](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895226e0.md): 修改考试配置。
+- 【考试安排管理】 [复制考试](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895227e0.md): 复制考试配置。
+- 【考试安排管理】 [删除考试](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895228e0.md): 删除考试配置。
+- 【考试安排管理】 [查询补考候选人](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895229e0.md): 查询补考候选人。
+- 【考试安排管理】 [导出补考候选人](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895230e0.md): 导出补考候选人数据。
+- 【考试安排管理】 [创建补考](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/494895231e0.md): 创建补考。
+- 【pc前端-我的成绩】 [分页查询我的成绩](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495073639e0.md): 分页查询考试结果统计列表。
+- 【用户端-考试类型】 [在线考试-考试类型](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495095153e0.md): 开始正式考试或模拟练习,仅返回作答记录ID。
+- 【用户端-考试类型】 [testone](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/505130898e0.md): 开始正式考试或模拟练习,仅返回作答记录ID。
+- 【pc前端-错题记录】 [历史错题-错题记录-考试入口](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495484430e0.md): 
+- 【pc前端-错题记录】 [历史错题-错题记录-每次考试入口](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214490e0.md): 
+- 【pc前端-错题记录】 [查看试题答案](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214491e0.md): 
+- 【pc前端-错题记录】 [考试错题训练-题目面板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214492e0.md): 
+- 【pc前端-错题记录】 [考试错题训练-获取题目详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214493e0.md): 
+- 【pc前端-错题记录】 [考试错题训练-提交作答](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214494e0.md): 
+- 【pc前端-考试记录】 [考试记录](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214663e0.md): 查询考后回看左侧考试概况和答题卡导航。
+- 【pc前端-考试记录】 [查询考后答卷左侧数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214664e0.md): 查询考后回看左侧考试概况和答题卡导航。
+- 【pc前端-考试记录】 [查询右侧题目数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495214665e0.md): 查询考后回看右侧单题详情。
+- 【用户端-我的证书】 [我的证书分页列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/495590452e0.md): 分页查询当前登录用户已获得的证书。
+- 用户接口 [用户列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914738e0.md): 参数:userType, searchValue, deptId, tutorUserId, cardNumSimple; 参数说明:userType 为必传, 其他选传
+- 用户接口 [查询学生和老师](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914739e0.md): 
+- 用户接口 [用户列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914740e0.md): 参数:userType, searchValue, deptId, tutorUserId, cardNumSimple; 参数说明:userType 为必传, 其他选传
+- 用户接口 [用户详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914741e0.md): 
+- 用户接口 [getUserWeComById](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914742e0.md): 
+- 用户接口 [getUserListById](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914743e0.md): 
+- 用户接口 [添加用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914744e0.md): 系统用户:userName, sex, deptId, mobile, roleIds, account, password, state, remark; 
+- 用户接口 [编辑用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914745e0.md): 
+- 用户接口 [添加用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914746e0.md): 系统用户:userName, sex, deptId, mobile, roleIds, account, password, state, remark; 
+- 用户接口 [编辑用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914747e0.md): 
+- 用户接口 [编辑用户导师](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914748e0.md): 
+- 用户接口 [编辑用户(无权限)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914749e0.md): 
+- 用户接口 [删除用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914750e0.md): 
+- 用户接口 [删除用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914751e0.md): 
+- 用户接口 [下拉列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914752e0.md): 参数:userType - 用户类型,非必须, userName-右模糊, mobile - 手机号模糊
+- 用户接口 [下拉列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914753e0.md): 参数:userType - 用户类型,非必须, userName-右模糊, mobile - 手机号模糊
+- 用户接口 [下拉列表(数据权限)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914754e0.md): 参数:userType - 用户类型,非必须, userName-右模糊, mobile - 手机号模糊
+- 用户接口 [下拉列表(查询二级部门下的数据权限过滤)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914755e0.md): 参数:userType - 用户类型,非必须, userName-右模糊, mobile - 手机号模糊
+- 用户接口 [自定义分页列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914756e0.md): 参数:userType- 用户类型, userName-左模糊, mobile-左模糊, cardNum-非必须, account-非必须, userIds集合-非必传, pageSize - 不传默认10条,支持自定义
+- 用户接口 [查询非本科/大专用户](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914757e0.md): 参数:searchValue 用户查询
+- 用户接口 [查询非本科/大专用户(分页)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914758e0.md): 参数:userType- 用户类型, userName-左模糊, mobile-左模糊, cardNum-非必须, account-非必须, userIds集合-非必传, pageSize - 不传默认10条,支持自定义
+- 用户接口 [自定义用户列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914759e0.md): 参数:userType- 用户类型, userName-左模糊, mobile-左模糊, cardNum-非必须, account-非必须, userIds集合-非必传, pageSize - 不传默认10条,支持自定义
+- 用户接口 [修改状态](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914760e0.md): 参数: userId, state, userState; 说明:传state改变状态,传userState改在职/离职状态
+- 用户接口 [修改密码](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914761e0.md): 参数: userId, password, oldPasswd
+- 用户接口 [重置密码](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914762e0.md): 参数: userId
+- 用户接口 [用户权限](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914763e0.md): 
+- 用户接口 [个人信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914764e0.md): 
+- 用户接口 [电子签名抠图生成图片](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914765e0.md): 电子签名抠图生成图片
+- 用户接口 [修改用户电子签名](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914766e0.md): 
+- 用户接口 [小程序用户修改签名](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914767e0.md): 
+- 用户接口 [批量绑卡](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914768e0.md): 参数示例: [{"userId":1,"cardNum":""},{"userId":2,"cardNum":""},...]
+- 用户接口 [导入模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914769e0.md): 参数示例: userType - 用户类型
+- 用户接口 [导入教职工数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914770e0.md): 
+- 用户接口 [导入学生数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914771e0.md): 
+- 用户接口 [未导入数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914772e0.md): 参数说明:userType - 用户类型, failCode - 失败码
+- 用户接口 [导出数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914773e0.md): 参数说明:userType - 教职工-1、学生-2, ids[] - 导入用户id集,全部不传
+- 用户接口 [绑定指定用户的安全检查菜单](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914774e0.md): 
+- 用户接口 [绑定指定用户的整改菜单](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914775e0.md): 
+- 用户接口 [删除指定用户的安全检查菜单](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914776e0.md): 
+- 用户接口 [条件查询已选择和未选择用户列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914777e0.md): 条件查询已选择和未选择用户列表(分页)
+- 用户接口 [根据用户ids查询用户信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914778e0.md): 
+- 用户接口 [查询实验室未办理的准入人员信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914779e0.md): 
+- 用户接口 [查询实验室未办理的准入人员信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914780e0.md): 查询实验室未办理的准入人员信息
+- 用户接口 [根据用户id查询用户基础信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914781e0.md): 
+- 用户接口 [查询老师下的学生](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914782e0.md): 
+- 用户接口 [根据电话号码查询用户列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914783e0.md): 
+- 用户接口 [查询用户电子签名](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914784e0.md): 
+- 用户接口 [自定义分页列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914785e0.md): 外部接口专用,请勿修改和服用
+- 用户接口 [是否为初始密码](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914786e0.md): 
+- 用户接口 [个人数据信息查询](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914787e0.md): 
+- 用户接口 [下拉列表(查询二级部门下的数据权限过滤)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914788e0.md): 参数:userType - 用户类型,非必须, userName-右模糊, mobile - 手机号模糊
+- 用户接口 [根据用户id查询用户相关信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914789e0.md): 参数:userType - 用户类型,非必须, userName-右模糊, mobile - 手机号模糊
+- 用户接口 [获取用户详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914790e0.md): 
+- 用户接口 [根据账号查询用户信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914791e0.md): 
+- 用户接口 [查询指定id集合的用户信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914792e0.md): 
+- 用户接口 [查询指定账号集合的用户基础信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914793e0.md): 
+- 用户接口 [编辑用户(无权限)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914794e0.md): 编辑用户,用于修改用户信息时,如之前有使用此手机号码。覆盖之
+- 用户接口 [查询当前用户是何种身份](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914795e0.md): 查询当前用户是何种身份
+- 用户接口 [查询当前用户是何种身份](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914796e0.md): 
+- 用户接口 [查询二级单位人员](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914797e0.md): 
+- 用户接口 [新建考试-考试范围(全校,考试范围供内部调用)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914798e0.md): 根据配置的考试规则查询用户信息
+- 用户接口 [新建考试-考试范围](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914799e0.md): 
+- 用户接口 [新建考试-指定考生](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914800e0.md): 
+- 用户接口 [新建考试-考试范围-学年](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914801e0.md): 
+- 用户接口 [新建考试-考试范围-用户类别](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/497914802e0.md): 
+- 【pc前端-研究生实验室绑定】 [查询当前登录用户的实验室绑定状态(仅新入学硕士研究生有数据,其他用户返回 null)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009296e0.md): 
+- 【pc前端-研究生实验室绑定】 [查询当前登录人所属部门下的实验室列表,支持实验室名称联想查询](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009297e0.md): 
+- 【pc前端-研究生实验室绑定】 [根据实验室ID查询实验室详细信息(名称、位置、负责人、所属学院、分级、分类、类型)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009298e0.md): 
+- 【pc前端-研究生实验室绑定】 [确认绑定实验室,提交绑定申请(状态为待审批)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009299e0.md): 
+- 【pc前端-研究生实验室绑定】 [查询工作台聚合数据(学年统计、学习任务、模拟考试、各类考试模块状态)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009300e0.md): 
+- 【pc前端-研究生实验室绑定】 [查询学年进度列表(从入学年到当前学年,每学年返回状态及通过分数)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009301e0.md): 
+- 【pc前端-研究生实验室绑定】 [查询毕业报告(姓名、学号、学院、年级、用户类型、学年学时情况、考试通过记录)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009302e0.md): 
+- 【pc前端-研究生实验室绑定】 [下载毕业报告 PDF](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498476046e0.md): 
+- 【pc前端-研究生实验室绑定】 [分页查询实验室绑定申请审核列表(实验室负责人可见本学院申请)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009303e0.md): 
+- 【pc前端-研究生实验室绑定】 [审核实验室绑定申请(1-审核通过,2-审核不通过)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009304e0.md): 
+- 【pc前端-研究生实验室绑定】 [查询当前登录用户所属角色(新入学/在读研究生、新入学/在读本科生、新入职/存量教职工)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498009305e0.md): 
+- 【视频处理】 [智能处理视频(推荐)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077990e0.md): 
+- 【视频处理】 [仅转HLS流(不加任何水印)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077991e0.md): 
+- 【视频处理】 [添加水印 + 转HLS](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077992e0.md): 
+- 【视频处理】 [播放视频(m3u8 或 ts 文件)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077993e0.md): GET /video/play/{datePath}/{dirName}/{fileName:.+}
+- 文件接口 [文件上传--默认](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077994e0.md): 
+- 文件接口 [文件上传--异步发布订阅](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077995e0.md): 
+- 文件接口 [文件分片上传](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077996e0.md): 
+- 文件接口 [文件分片上传](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077997e0.md): 
+- 文件接口 [上传文件分片](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077998e0.md): 
+- 文件接口 [检查分片是否存在](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498077999e0.md): 
+- 文件接口 [上传文件分片](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078000e0.md): 
+- 文件接口 [检查分片是否存在](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078001e0.md): 
+- 文件接口 [请求合并文件分片](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078002e0.md): 
+- 【考生查看试卷-公共】 [查询考后答卷左侧数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078003e0.md): 查询考后回看左侧考试概况和答题卡导航。
+- 【考生查看试卷-公共】 [查询右侧题目数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078004e0.md): 查询考后回看右侧单题详情。
+- 【考试系统配置】 [查询配置值数组](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078005e0.md): 根据配置分类查询配置值数组。
+- 【考试系统配置】 [查询配置编码和值映射](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078006e0.md): 根据配置分类查询配置编码和值的映射。
+- 【考试系统配置】 [查询各级别研究生初始最低学时配置](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078007e0.md): 查询各级别(1-4级)研究生初始最低学时配置。
+- 【考试系统配置】 [批量保存配置](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078008e0.md): 批量保存配置。
+- 【课程管理】 [分页查询课程](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078009e0.md): 分页查询课程。
+- 【课程管理】 [查询课程详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078010e0.md): 查询课程详情。
+- 【课程管理】 [新增课程](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078011e0.md): 新增课程。
+- 【课程管理】 [修改课程](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078012e0.md): 修改课程。
+- 【课程管理】 [删除课程](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078013e0.md): 删除课程。
+- 【课程管理】 [复制课程](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078014e0.md): 复制课程。
+- 【课件管理】 [分页查询课件](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078015e0.md): 分页查询当前用户可见的课件。
+- 【课件管理】 [获取课件详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078016e0.md): 获取课件详情。
+- 【课件管理】 [新增课件](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078017e0.md): 新增课件。
+- 【课件管理】 [修改课件](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078018e0.md): 修改课件。
+- 【课件管理】 [删除课件](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078019e0.md): 删除课件。
+- 【课件管理】 [计算课件可获得学时和积分](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078020e0.md): 按要求时长计算课件可获得学时和积分。
+- 【考试结果统计】 [分页查询考试结果统计](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078021e0.md): 分页查询考试结果统计列表。
+- 【考试结果统计】 [导出考试结果统计](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078022e0.md): 导出考试结果统计数据。
+- 【考试结果统计】 [分页查询考试专业](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/503286562e0.md): 分页查询考试专业。
+- 【考试结果统计】 [分页查询考试成绩明细](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078023e0.md): 分页查询指定考试的成绩明细。
+- 【考试结果统计】 [导出考试成绩明细](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078024e0.md): 导出考试成绩明细数据。
+- 【考试结果统计】 [分页查询考试奖励记录](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078025e0.md): 分页查询考试奖励记录(积分/学时发放详情)。
+- 【考试结果统计】 [导出考试奖励记录](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078026e0.md): 导出考试奖励记录。
+- 【安全考试统计】 [获取学年列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078027e0.md): 
+- 【安全考试统计】 [考试统计图表数据(柱状图+饼图)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078028e0.md): 
+- 【安全考试统计】 [考试统计列表(按学院+考试类型分组)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078029e0.md): 
+- 【安全考试统计】 [导出考试统计数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078030e0.md): 
+- 【安全考试统计】 [实验室绑定统计图表数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078031e0.md): 
+- 【安全考试统计】 [实验室绑定统计列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078032e0.md): 
+- 【安全考试统计】 [导出实验室各学院统计数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078033e0.md): 
+- 【安全考试统计】 [导出实验室明细数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078034e0.md): 
+- 【安全考试统计】 [学时统计图表数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078035e0.md): 
+- 【安全考试统计】 [学时统计分页列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078036e0.md): 
+- 【安全考试统计】 [导出学时统计数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078037e0.md): 
+- 【刷题练习统计】 [刷题练习统计列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078038e0.md): 刷题练习统计列表(按知识点汇总)。
+- 【刷题练习统计】 [练习统计详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078039e0.md): 练习统计详情(知识点下各用户练习情况)。
+- 【专业类别管理】 [查询全部专业类别](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078040e0.md): 查询全部专业类别。
+- 【专业类别管理】 [新增专业类别](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078041e0.md): 新增专业类别。
+- 【专业类别管理】 [修改专业类别](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078042e0.md): 修改专业类别。
+- 【专业类别管理】 [批量保存专业类别](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078043e0.md): 批量保存专业类别;请求项包含 ID 时修改,未包含 ID 时新增。
+- 【专业类别管理】 [删除专业类别](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078044e0.md): 物理删除专业类别。
+- 【考试类型管理】 [查询全部考试类型](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078045e0.md): 查询全部考试类型。
+- 【考试类型管理】 [新增考试类型](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078046e0.md): 新增考试类型。
+- 【考试类型管理】 [修改考试类型](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078047e0.md): 修改考试类型。
+- 【考试类型管理】 [批量保存考试类型](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078048e0.md): 批量保存考试类型;请求项包含 ID 时修改,未包含 ID 时新增。
+- 【考试类型管理】 [删除考试类型](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078049e0.md): 物理删除考试类型。
+- 【知识点管理】 [分页查询知识点](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078050e0.md): 分页查询知识点。
+- 【知识点管理】 [获取所有知识点](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078051e0.md): 查询知识点。
+- 【知识点管理】 [查询知识点树](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078052e0.md): 查询知识点树。
+- 【知识点管理】 [新增知识点](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078053e0.md): 新增知识点。
+- 【知识点管理】 [批量新增知识点](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078054e0.md): 按层级文本批量新增知识点。
+- 【知识点管理】 [下载知识点导入模板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078055e0.md): 下载知识点 Excel 导入模板。
+- 【知识点管理】 [导入知识点 Excel 数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078056e0.md): 导入知识点 Excel 数据,并返回成功、失败数量及失败文件下载标识。
+- 【知识点管理】 [下载知识点导入失败数据](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078057e0.md): 下载知识点 Excel 导入失败数据及失败原因。
+- 【知识点管理】 [编辑知识点](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078058e0.md): 编辑知识点。
+- 【知识点管理】 [删除知识点](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078059e0.md): 物理删除知识点。
+- 【PC用户端-刷题练习】 [刷题练习列表(按知识点分组)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078060e0.md): 刷题练习列表(按知识点分组)。
+- 【PC用户端-刷题练习】 [开始练习-获取题目面板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078061e0.md): 开始练习-获取题目面板(左侧)。
+- 【PC用户端-刷题练习】 [获取题目详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078062e0.md): 获取题目详情(右侧)。
+- 【PC用户端-刷题练习】 [提交作答](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078063e0.md): 提交作答。
+- 【PC用户端-刷题练习】 [历史错题分页列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078064e0.md): 历史错题分页列表。
+- 【PC用户端-刷题练习】 [开始训练-获取错题面板](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078065e0.md): 开始训练-获取错题面板。
+- 【PC用户端-课程学习】 [学习任务课程列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078066e0.md): 学习任务课程列表。
+- 【PC用户端-课程学习】 [课程下的课件列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078067e0.md): 课程下的课件列表(含课程信息)。
+- 【PC用户端-课件学习】 [课件学习列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078068e0.md): 课件学习列表。
+- 【PC用户端-课件学习】 [根据课件ID查询课件信息](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078069e0.md): 根据课件ID查询课件信息。
+- 【PC用户端-课件学习】 [上报课件学习进度](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078070e0.md): 上报课件学习进度。
+- 【PC用户端-课件学习】 [课件学习完成确认](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078071e0.md): 课件学习完成确认。
+- 【PC用户端-课件学习】 [重新开始学习课件](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078072e0.md): 重新开始学习课件。
+- 【PC用户端-课件学习】 [查询可用知识点列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498078073e0.md): 查询可用知识点列表(课件和练习中涉及的知识点去重)。
+- 专业管理 [列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222623e0.md): 参数:type-必传, name, state
+- 专业管理 [详情](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222624e0.md): 
+- 专业管理 [添加](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222625e0.md): 参数:referId, type, name
+- 专业管理 [更新](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222626e0.md): 参数:id, referId, name, state
+- 专业管理 [删除](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222627e0.md): 参数:id
+- 专业管理 [自定义列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222628e0.md): 参数:type-必传, referId, name, state, pageSize - 不传默认10条,支持自定义
+- 专业管理 [获取所有专业(id、name、code)](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/498222629e0.md): 
+- 【用户端-考试】 [安全考试-在线考试列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978963e0.md): 
+- 【用户端-考试】 [安全考试-模拟考试列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978964e0.md): 
+- 【用户端-考试】 [安全考试-学习任务列表](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978965e0.md): 
+- 【用户端-考试】 [开始考试](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978966e0.md): 开始正式考试或模拟练习,仅返回作答记录ID。
+- 【用户端-考试】 [保存单题作答](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978967e0.md): 保存单题作答;模拟练习返回正确性,正式考试不返回正确性。
+- 【用户端-考试】 [交卷](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978968e0.md): 交卷并完成统一判题和计分。
+- 【用户端-考试】 [获取本次考试剩余时间](https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978969e0.md): 

+ 10 - 0
.claude/claude.md

@@ -0,0 +1,10 @@
+1. 
+class="card mob-admin-only" 的内容重构至E:\git\2021项目\v3-小程序\pages_safetyEducationExamination\views\home\component\labBinding.vue内
+页面内的待审批数量可以使用examElLabEduRelationAuditList接口
+点击后跳转至views/approval/index
+2. 
+id="screen-approval" 的内容重构至E:\git\2021项目\v3-小程序\pages_safetyEducationExamination\views\approval\index.vue
+列表使用examElLabEduRelationAuditList接口
+审批使用examElLabEduRelationAudit接口
+
+要求符合uni-app 微信小程序

File diff suppressed because it is too large
+ 3470 - 0
.claude/mobile_exam.html


+ 9 - 0
.claude/settings.local.json

@@ -0,0 +1,9 @@
+{
+  "permissions": {
+    "allow": [
+      "WebFetch(domain:s.apifox.cn)",
+      "Bash(curl -s \"https://s.apifox.cn/f4dade51-c892-44e5-9663-d952b24d899e/500978963e0\")",
+      "Bash(powershell -Command \":*)"
+    ]
+  }
+}

+ 17 - 1
pages_safetyEducationExamination/api/index.js

@@ -140,4 +140,20 @@ export const examElLabEduRelationGraduationReport = (data) => {
 		method: 'get',
 		method: 'get',
 		data: { ...data }
 		data: { ...data }
   })
   })
-}
+}
+//查询实验室负责人 待审批的列表
+export const examElLabEduRelationAuditList = (data) => {
+	return apiResquest({
+		url: `/exam/elLabEduRelation/auditList`,
+		method: 'POST',
+		data: { ...data }
+	})
+};
+//实验室负责人审批
+export const examElLabEduRelationAudit = (data) => {
+	return apiResquest({
+		url: `/exam/elLabEduRelation/audit`,
+		method: 'POST',
+		data: { ...data }
+	})
+};

+ 355 - 17
pages_safetyEducationExamination/views/approval/index.vue

@@ -1,36 +1,205 @@
 <!-- 实验室审批列表 -->
 <!-- 实验室审批列表 -->
 <template>
 <template>
 	<view class="safetyEducationExamination-approval">
 	<view class="safetyEducationExamination-approval">
-		
+		<!-- 标签栏 -->
+		<view class="tag-scroll">
+			<text
+				v-for="(tag, index) in statusTags"
+				:key="index"
+				class="tag tag-gray"
+				:class="{ active: activeTagIndex === index }"
+				@click="onTagChange(index)"
+			>{{ tag.label }}<text v-if="tag.value === 0 && pendingCount > 0" class="tag-badge">{{ pendingCount }}</text></text>
+		</view>
+
+		<!-- 列表 -->
+		<scroll-view scroll-y class="scroll-content" @scrolltolower="onScrollToLower">
+			<view class="panel">
+				<view
+					v-for="(item, index) in approvalList"
+					:key="index"
+					class="approval-card"
+					:style="item.statusCode != 0 ? 'opacity:0.85;' : ''"
+				>
+					<view class="row-between mb8">
+						<view class="fw500" style="font-size:15px;">{{ item.userName }}</view>
+						<text class="approval-status" :class="'approval-status-' + getStatusType(item.statusCode)">
+							{{ item.statusCode == 0 ? '待审批' : item.statusCode == 1 ? '已通过' : '已驳回' }}
+						</text>
+					</view>
+					<view class="info-grid">
+						<view><text class="text-gray">学工号:</text>{{ item.userAccount }}</view>
+						<view><text class="text-gray">类别:</text>{{ item.educationName || '-' }}</view>
+						<view><text class="text-gray">所属单位:</text>{{ item.deptName || '-' }}</view>
+						<view><text class="text-gray">提交时间:</text>{{ item.submitTime }}</view>
+					</view>
+					<view class="lab-info-box" :style="item.statusCode == 1 ? 'background:#f6ffed;' : ''">
+						<view class="mb4">
+							<text class="text-gray">申请实验室:</text>
+							<text class="fw500">{{ item.subName }}</text>
+						</view>
+						<view class="mb4">
+							<text class="text-gray">风险等级:</text>
+							<text v-if="item.levelName" class="tag tag-risk text-xs">{{ item.levelName }}</text>
+							<text class="text-gray" style="margin-left:6px;">安全类别:</text>
+							<text class="fw500">{{ item.typeName || '-' }}</text>
+						</view>
+						<view v-if="item.reason">
+							<text class="text-gray">进入原因:</text>{{ item.reason }}
+						</view>
+					</view>
+					<view v-if="item.statusCode == 0" class="btn-row">
+						<view class="btn btn-green" @click="handleAudit(item, 1)">通过</view>
+						<view class="btn btn-reject" @click="handleAudit(item, 2)">驳回</view>
+					</view>
+				</view>
+				<view v-if="!approvalList[0] && !loading" class="empty-tip">暂无审批数据</view>
+				<view v-if="loading" class="loading-tip">加载中...</view>
+				<view v-if="noMore && approvalList[0]" class="loading-tip">没有更多了</view>
+			</view>
+		</scroll-view>
 	</view>
 	</view>
 </template>
 </template>
 
 
 <script>
 <script>
-	// import {
-	// 	systemMineUserEdit
-	// } from '@/pages_safetyEducationExamination/api/index.js'
-	// import {
-	// 	workbench
-	// } from '@/pages_safetyEducationExamination/component/workbench/index'
+	import {
+		parseTime
+	} from '@/component/public.js'
+	import {
+		examElLabEduRelationAuditList,
+		examElLabEduRelationAudit,
+	} from '@/pages_safetyEducationExamination/api/index.js'
+
 	export default {
 	export default {
-		// components: {
-		// 	workbench,
-		// },
 		data() {
 		data() {
 			return {
 			return {
-				
+				statusTags: [
+					{ label: '全部', value: null },
+					{ label: '待审批', value: 0 },
+					{ label: '已通过', value: 1 },
+					{ label: '已驳回', value: 2 },
+				],
+				activeTagIndex: 0,
+				approvalList: [],
+				loading: false,
+				page: 1,
+				pageSize: 10,
+				total: 0,
+				noMore: false,
+				pendingCount: 0,
 			}
 			}
 		},
 		},
-		created() {
-			
-		},
 		onShow() {
 		onShow() {
-			
+			this.loadPendingCount();
+			this.resetList();
 		},
 		},
 		methods: {
 		methods: {
-
+			async loadPendingCount() {
+				try {
+					const { data } = await examElLabEduRelationAuditList({
+						page: 1,
+						pageSize: 1,
+						statusCode: 0,
+					});
+					if (data.code === 200) {
+						this.pendingCount = data.data.total || 0;
+					}
+				} catch (e) {
+					console.error('获取待审批数量失败', e);
+				}
+			},
+			resetList() {
+				this.page = 1;
+				this.noMore = false;
+				this.approvalList = [];
+				this.loadApprovalList();
+			},
+			async loadApprovalList() {
+				if (this.loading || this.noMore) return;
+				this.loading = true;
+				try {
+					const tag = this.statusTags[this.activeTagIndex];
+					const { data } = await examElLabEduRelationAuditList({
+						page: this.page,
+						pageSize: this.pageSize,
+						statusCode: tag.value !== null ? tag.value : undefined,
+					});
+					if (data.code === 200) {
+						for(let i=0;i<data.data.records.length;i++){
+							data.data.records[i].submitTime = parseTime(data.data.records[i].submitTime, "{y}-{m}-{d}")
+						}
+						const records = data.data.records || [];
+						const newList = this.page === 1 ? records : [...this.approvalList, ...records];
+						this.$set(this, 'approvalList', newList);
+						this.total = data.data.total;
+						if (newList.length >= this.total) {
+							this.noMore = true;
+						} else {
+							this.page++;
+						}
+					}
+				} catch (e) {
+					console.error('获取审批列表失败', e);
+				} finally {
+					this.loading = false;
+				}
+			},
+			onScrollToLower() {
+				this.loadApprovalList();
+			},
+			onTagChange(index) {
+				if (this.activeTagIndex !== index) {
+					this.activeTagIndex = index;
+					this.resetList();
+				}
+			},
+			getStatusType(statusCode) {
+				const map = { 0: 'pending', 1: 'pass', 2: 'reject' };
+				return map[statusCode] || 'pending';
+			},
+			handleAudit(item, statusCode) {
+				const text = statusCode == 1 ? '通过' : '驳回';
+				uni.showModal({
+					title: '确认审批',
+					content: `确定${text}该学生的实验室绑定申请吗?`,
+					success: async (res) => {
+						if (res.confirm) {
+							await this.submitAudit(item.id, statusCode);
+						}
+					}
+				});
+			},
+			async submitAudit(id, statusCode) {
+				uni.showLoading({ title: '提交中...' });
+				try {
+					const { data } = await examElLabEduRelationAudit({
+						id,
+						statusCode,
+					});
+					uni.hideLoading();
+					if (data.code === 200) {
+						uni.showToast({
+							title: '审批成功',
+							icon: 'success',
+						});
+						this.loadPendingCount();
+						this.resetList();
+					} else {
+						uni.showToast({
+							title: data.msg || '审批失败',
+							icon: 'none',
+						});
+					}
+				} catch (e) {
+					uni.hideLoading();
+					console.error('审批失败', e);
+					uni.showToast({
+						title: '审批失败',
+						icon: 'none',
+					});
+				}
+			},
 		},
 		},
-		
 	}
 	}
 </script>
 </script>
 
 
@@ -42,4 +211,173 @@
 		overflow: hidden;
 		overflow: hidden;
 		background-color: #f0f4fb;
 		background-color: #f0f4fb;
 	}
 	}
+
+	.tag-scroll {
+		background: #fff;
+		padding: 20rpx 24rpx 10rpx;
+		white-space: nowrap;
+		flex-shrink: 0;
+	}
+
+	.tag {
+		display: inline-block;
+		padding: 12rpx 28rpx;
+		border-radius: 30rpx;
+		font-size: 24rpx;
+		margin-right: 16rpx;
+		background: #eef1f6;
+		color: #666;
+		position: relative;
+	}
+
+	.tag.active {
+		background: #1857d4;
+		color: #fff;
+		font-weight: 600;
+	}
+
+	.tag-badge {
+		display: inline-block;
+		background: #ff4d4f;
+		color: #fff;
+		font-size: 20rpx;
+		border-radius: 20rpx;
+		margin-left: 8rpx;
+		min-width: 32rpx;
+		text-align: center;
+	}
+
+	.tag.active .tag-badge {
+		background: #fff;
+		color: #1857d4;
+	}
+
+	.scroll-content {
+		flex: 1;
+		overflow: hidden;
+	}
+
+	.panel {
+		padding: 16rpx 0;
+	}
+
+	.approval-card {
+		background: #fff;
+		border-radius: 20rpx;
+		padding: 28rpx;
+		margin: 0 24rpx 20rpx;
+		border: 1px solid #dde3ed;
+	}
+
+	.row-between {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.mb8 {
+		margin-bottom: 16rpx;
+	}
+
+	.mb4 {
+		margin-bottom: 8rpx;
+	}
+
+	.fw500 {
+		font-weight: 500;
+	}
+
+	.text-gray {
+		color: #999;
+	}
+
+	.approval-status {
+		font-size: 22rpx;
+		padding: 6rpx 16rpx;
+		border-radius: 20rpx;
+	}
+
+	.approval-status-pending {
+		background: #fff7e6;
+		color: #d46b08;
+	}
+
+	.approval-status-pass {
+		background: #f6ffed;
+		color: #389e0d;
+	}
+
+	.approval-status-reject {
+		background: #fff1f0;
+		color: #cf1322;
+	}
+
+	.info-grid {
+		display: grid;
+		grid-template-columns: 1fr 1fr;
+		gap: 8rpx;
+		font-size: 26rpx;
+		margin-bottom: 20rpx;
+	}
+
+	.lab-info-box {
+		background: #f5f5f5;
+		border-radius: 16rpx;
+		padding: 20rpx;
+		margin-bottom: 20rpx;
+		font-size: 26rpx;
+	}
+
+	.tag-risk {
+		display: inline-block;
+		padding: 4rpx 12rpx;
+		border-radius: 8rpx;
+		background: #fff7e6;
+		color: #d46b08;
+		font-size: 20rpx;
+	}
+
+	.text-xs {
+		font-size: 20rpx;
+	}
+
+	.btn-row {
+		display: flex;
+		gap: 16rpx;
+	}
+
+	.btn {
+		flex: 1;
+		height: 68rpx;
+		line-height: 68rpx;
+		text-align: center;
+		font-size: 26rpx;
+		border-radius: 12rpx;
+	}
+
+	.btn-green {
+		background: #52c41a;
+		color: #fff;
+	}
+
+	.btn-reject {
+		background: #fff1f0;
+		color: #ff4d4f;
+		border: 1px solid #ff4d4f;
+	}
+
+	.empty-tip {
+		text-align: center;
+		line-height: 80rpx;
+		color: #aaa;
+		font-size: 24rpx;
+		margin-top: 80rpx;
+	}
+
+	.loading-tip {
+		text-align: center;
+		line-height: 60rpx;
+		color: #aaa;
+		font-size: 22rpx;
+	}
 </style>
 </style>

+ 96 - 0
pages_safetyEducationExamination/views/home/component/examTask.vue

@@ -49,8 +49,104 @@
 					});
 					});
 				}else if(type == 2){
 				}else if(type == 2){
 					//开始考试相关业务
 					//开始考试相关业务
+					if(item.conditionType == 1){
+						if(item.examStudy&&item.courseId){
+							//学习课程
+							let obj = {
+								courseId: item.courseId,
+								examId: item.examId,
+							}
+							//等待后续逻辑
+						}else{
+							//学时要求
+							if(item.knowledgePointIds&&item.completedStudyHours&&item.studyHoursRequirement){
+								//学时知识点
+								uni.navigateTo({
+									url: '/pages_safetyEducationExamination/views/studyHourTask/index',
+								});
+							}else{
+								//无知识点要求
+								uni.navigateTo({
+									url: '/pages_safetyEducationExamination/views/study/index',
+								});
+							}
+						}
+					}else if(item.conditionType == 2){
+						//学习课程
+						let obj = {
+							courseId: item.courseId,
+							examId: item.examId,
+						}
+						//等待后续逻辑
+					}else if(item.conditionType == 3){
+						//模拟考试
+						if(item.mockExamId){
+							let obj = {
+								examId: item.examId,
+								attemptId: item.mockExamId,
+							}
+							//等待后续逻辑
+						}else{
+							this.examUserExamStart({examId:item.examId,examScene:2});
+						}
+					}else if(item.conditionType == 4){
+						//开始考试
+					}
+				}
+			},
+			//模拟考试获取试卷
+			async examUserExamStart(obj) {
+				try {
+					const { data } = await examUserExamStart(obj);
+					if (data.code === 200) {
+						let obj = {
+							examId: item.examId,
+							attemptId: response.data.attemptId,
+						}
+						//等待后续逻辑
+					}
+				} catch (e) { console.error('模拟考试获取试卷失败', e); }
+			},
+			//开始考试判断是否有承诺书
+			setRichExamData(item){
+				if(item.commitmentEnabled == 1 && !item.commitmentConfirmed){
+					//富文本弹窗考试承诺书
+					this.$set(this,'preButtonType',item.commitmentPrintEnabled == 1?true:false);
+					this.$set(this,'richTextHtml',item.commitmentContent);
+					this.$set(this,'preData',item);
+					this.$set(this,'preExamDialogType',true);
+				}else{
+					if(item.attemptId){
+						//上次考试未完成继续考试
+						let obj = {
+							attemptId: item.attemptId,
+							type: '1',
+							examKind:item.examKind,
+						}
+						//等待后续逻辑
+					}else{
+						//开始新考试
+						this.examUserExamStart(item);
+					}
 				}
 				}
 			},
 			},
+			//开始考试
+			async examUserExamStart(item) {
+				try {
+					let obj = {examId:item.examId,examScene:1};
+					const { data } = await examUserExamStudyTaskList(obj);
+					if (data.code === 200) {
+						let obj = {
+							examId: item.examId,
+							attemptId: response.data.attemptId,
+							type: '1',
+							examKind:item.examKind,
+						}
+						//等待后续逻辑
+					}
+				} catch (e) { console.error('获取考试任务失败', e); }
+			},
+			//获取任务列表
 			async examUserExamStudyTaskList() {
 			async examUserExamStudyTaskList() {
 				try {
 				try {
 					let obj = { page: 1, pageSize: 1, examStatus: 2, isSpecialExam: false };
 					let obj = { page: 1, pageSize: 1, examStatus: 2, isSpecialExam: false };

+ 113 - 19
pages_safetyEducationExamination/views/home/component/labBinding.vue

@@ -1,40 +1,134 @@
-<!-- 实验室绑定 -->
+<!-- 实验室绑定申请 -->
 <template>
 <template>
 	<view class="labBinding-component">
 	<view class="labBinding-component">
+		<!-- <view class="card mob-admin-only" @click="goToApproval" hover-class="card-hover" hover-stay-time="100"> -->
+		<view class="card mob-admin-only" @click="goToApproval">
+			<view class="card-content">
+				<view class="icon-box">🏛️</view>
+				<view class="info-box">
+					<view class="title">实验室绑定申请</view>
+					<view class="subtitle">待审批申请需及时处理</view>
+				</view>
+				<view class="right-box">
+					<text class="badge" v-if="pendingCount>0">{{ pendingCount }}</text>
+					<text class="arrow">›</text>
+				</view>
+			</view>
+		</view>
 	</view>
 	</view>
 </template>
 </template>
 
 
 <script>
 <script>
-	// import {
-	// 	systemMineUserEdit
-	// } from '@/pages_safetyEducationExamination/api/index.js'
-	// import {
-	// 	workbench
-	// } from '@/pages_safetyEducationExamination/component/workbench/index'
+	import {
+		examElLabEduRelationAuditList
+	} from '@/pages_safetyEducationExamination/api/index.js'
+
 	export default {
 	export default {
-		// components: {
-		// 	workbench,
-		// },
 		data() {
 		data() {
 			return {
 			return {
-				
+				pendingCount: 0,
 			}
 			}
 		},
 		},
-		created() {
-			
-		},
-		onShow() {
-			
+		mounted() {
+			this.loadPendingCount();
 		},
 		},
 		methods: {
 		methods: {
-
+			async loadPendingCount() {
+				try {
+					const { data } = await examElLabEduRelationAuditList({
+						page: 1,
+						pageSize: 1,
+						statusCode:0,
+					});
+					if (data.code === 200) {
+						this.pendingCount = data.data.total || 0;
+					}
+				} catch (e) {
+					console.error('获取待审批数量失败', e);
+				}
+			},
+			goToApproval() {
+				uni.navigateTo({
+					url: '/pages_safetyEducationExamination/views/approval/index'
+				});
+			},
 		},
 		},
-		
 	}
 	}
 </script>
 </script>
 
 
 <style lang="stylus" scoped>
 <style lang="stylus" scoped>
 	.labBinding-component {
 	.labBinding-component {
-		
+		margin: 0 32rpx 24rpx;
+
+		.card {
+			background-color: #fff;
+			border-radius: 24rpx;
+			padding: 0;
+			overflow: hidden;
+			position: relative;
+			box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.03);
+			border: 1px solid #dde3ed;
+		}
+
+		.card-hover {
+			background-color: #f5f5f5;
+		}
+
+		.card-content {
+			display: flex;
+			align-items: center;
+			padding: 28rpx 32rpx;
+			cursor: pointer;
+		}
+
+		.icon-box {
+			width: 80rpx;
+			height: 80rpx;
+			border-radius: 20rpx;
+			background: #e6f4ff;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			font-size: 40rpx;
+			flex-shrink: 0;
+			margin-right: 24rpx;
+		}
+
+		.info-box {
+			flex: 1;
+
+			.title {
+				font-size: 28rpx;
+				font-weight: 600;
+				color: #333;
+			}
+
+			.subtitle {
+				font-size: 24rpx;
+				color: #999;
+				margin-top: 4rpx;
+			}
+		}
+
+		.right-box {
+			display: flex;
+			align-items: center;
+
+			.badge {
+				background: #ff4d4f;
+				color: #fff;
+				font-size: 22rpx;
+				font-weight: 600;
+				border-radius: 20rpx;
+				min-width: 40rpx;
+				text-align: center;
+				margin-right: 12rpx;
+			}
+
+			.arrow {
+				font-size: 32rpx;
+				color: #999;
+			}
+		}
 	}
 	}
 </style>
 </style>