lijing 34c8908cee
build / build (push) Successful in 6m3s
fix(homework): 附件列按类型分流,非图片附件(xlsx/docx/pdf)不再裂图
- Submissions 提交情况表格「附件」列:四源判定(fileName 扩展名 → URL 扩展名 →
  行级 contentTypes → img onerror 兜底),非图片渲染为与图片缩略图同尺寸(32×32)
  的文件图标格,图标按扩展名取 icon-excel / icon-word / icon-pdf1 等
- 点文件格可在线预览(有 fileId 走 FilePreviewModal),title 显示学生上传的真实文件名
- Utils 新增 isImageName / fileIcon / attIsImage 三个工具方法
- HomeworkAccept、HomeworkDetails 两处完全重复的「扩展名→图标」映射收敛到 Utils.fileIcon,
  兜底图标由语义不符的 icon-weizhi 改为 icon-attachment
- ReviewWorkbench 批阅工作台:图片/文件分流改走 Utils.attIsImage(原判定只认
  fileType==='image',后端不填该字段时图片会被整体误判为文件),并给文件附件补上「查看」
- StudentMatrixVo 兼容 attachments: AttachmentItem[] 新契约,缺失时退回 thumbnails;
  后端上线即自动获得精确文件类型图标与在线预览,前端无需再发版
- mock 的 thumbnails 改为返回全部附件 URL(原先只挑 fileType==='image',
  比契约更宽容,导致该缺陷本地无法复现)
2026-09-22 16:05:00 +08:00

课程作业前端(Vue3 + Vite + view-ui-plus)

本地启动

npm install

1)纯前端调试(推荐,后端不可用时)

本地连不上 sso.yunhaixingtong.com / base.yunhaixingtong.com 时,后端 CAS 过滤器会拦截 /api/* 请求导致所有接口失败。此时使用内置 mock 调试前端页面:

npm run dev:mock
  • 启用 src/assets/mock/homeworkapi.ts 中的内存 mock(vite-plugin-mock),覆盖全部页面接口: 用户/菜单、发文部门字典、作业增删改查、阅读情况、联系组、选择用户树、附件上传等。
  • mock 数据为内存态,刷新页面即还原;修改 mock 文件后需重启 dev server 才生效。
  • mock 模式下请求走 vite 同源(host.config.ts 中 serviceHost 为空串)。

2)连接后端调试

npm run dev
  • .env.dev:VITE_SERVICE_HOST=http://localhost:8070/homework(Java 后端,见 ../service)。
  • 后端需要能访问 CAS(yh.sso.server-url-prefix)与用户中心(yh.open.*),否则接口 302/失败。

主要页面

路由 页面
/homework/newhomework 作业发送(新建/编辑 ?serid=/转发 ?fid=,wangeditor 富文本)
/homework/homework_list 已发作业
/homework/homework_accept 已收作业(左列表 + 右详情,打印/转发/附件)
/homework/manage 作业列表(管理端)
/homework/setting 应用设置(发文部门卡片 + 自定义组)
/homework/homework_details 作业详情(type=0 管理视角含阅读进度/编辑/打印,type=1 查看)

关键组件

  • components/UserCheckModal.vue:选择用户弹窗(组织树勾选 + 已选列表,移植自旧前端 oldfront/src/components/userCheck.vue)。
  • components/UserCheckInput.vue:作业对象选择(全部用户/指定用户,移植自旧 user_check_input.vue)。
  • components/HomeworkUpload.vue:作业附件上传(选择文件 + 200MB 限制,移植自旧 uploadFile.vue)。
  • 发文部门卡片:见 views/homework/HomeworkSetting.vue,样式与交互对齐 UserBase「应用类型」 (UserBase/front/src/views/app/AppCategory.vue),额外支持停用/启用。

统计说明

统计相关前端已按需求移除(Homework_statis 接口封装、菜单、图标等),后期统计不在本应用内做。

S
Description
managed by projman
Readme
2.4 MiB
Languages
TypeScript 42.3%
Vue 38.7%
JavaScript 16.4%
CSS 1.2%
SCSS 1%
Other 0.4%