1810c6a56008f502ca4e85cc1b9ee6fbc443290a
build / build (push) Successful in 3m30s
- 新增独立全屏设计器:左组件库(11 类,克隆拖入+点击添加)/中多分组画布(组内排序、
跨组移动、复制删除)/右属性面板(label/key/必填/placeholder/options 批量编辑/
textarea 行数字数/number min-max/upload·image accept·maxSize·maxFiles/tip)
- schema 产出严格对齐后端 FormValidator 契约:白名单 16 属性、key ^[A-Za-z0-9_]{1,64}$
全表单唯一、_uid 与空串剔除;预览复用发起页 DynamicForm(WYSIWYG)
- DynamicForm 补 checkbox(CheckboxGroup→string[])/multiselect(Select multiple)/
image(附件通道 + .dyn-thumb 缩略图)渲染
- 列表页「新建/编辑」改跳设计器,移除裸 JSON 编辑弹窗与旧预览入口;新增路由 /svc/form/designer
审计修复(本次独立复核):
1. P1 已发布表单进设计器保存**必被后端拒**(ServiceFormService 行不可变:带已发布版本
id 一律拒)→ 装载到 status≠0 时保存不传 id,由后端按 code 升版出 vN+1 草稿,页头加 Tag 提示
2. P2 字段跨组拖拽后右侧选中态被清空 → 删掉 removed 分支的 clearSelect(Sortable 先 add
后 remove 且经 nextTick 排队,清空会反手抹掉刚设的选中;字段本拖不出画布)
3. P2 maxFiles 三层语义不一致:面板写「0 不限」、渲染器视为不限、后端按上限比对 →
后端改 maxFiles>0 判定(缺省/0=不限),面板 min=1 且文案「留空不限」
4. P2 pickAllowed 保留空串:pattern:"" 到后端是可编译空正则,会把所有非空值判成格式不正确
5. P3 保存前补 label 非空、分组标题 ≤64 的前置校验(少一次后端 400)
6. P3 image 上传走 type=image(落 /upload/image/,与后端分目录一致);修正 upload 值结构注释
(UploadVo 是 {id,fileName,fileUrl,fileSize,mimeType},无 attachmentId)
验证:npm run build 通过(FormDesigner chunk 正常产出);后端 mvn test 102/102 绿。
通知公告前端(Vue3 + Vite + view-ui-plus)
本地启动
npm install
1)纯前端调试(推荐,后端不可用时)
本地连不上 sso.yunhaixingtong.com / base.yunhaixingtong.com 时,后端 CAS 过滤器会拦截
/api/* 请求导致所有接口失败。此时使用内置 mock 调试前端页面:
npm run dev:mock
- 启用
src/assets/mock/noticeapi.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/notice(Java 后端,见../service)。- 后端需要能访问 CAS(
yh.sso.server-url-prefix)与用户中心(yh.open.*),否则接口 302/失败。
主要页面
| 路由 | 页面 |
|---|---|
/notice/newnotice |
通知发送(新建/编辑 ?serid=/转发 ?fid=,wangeditor 富文本) |
/notice/notice_list |
已发通知 |
/notice/notice_accept |
已收通知(左列表 + 右详情,打印/转发/附件) |
/notice/manage |
通知列表(管理端) |
/notice/setting |
应用设置(发文部门卡片 + 自定义组) |
/notice/notice_details |
通知详情(type=0 管理视角含阅读进度/编辑/打印,type=1 查看) |
关键组件
components/UserCheckModal.vue:选择用户弹窗(组织树勾选 + 已选列表,移植自旧前端oldfront/src/components/userCheck.vue)。components/UserCheckInput.vue:通知对象选择(全部用户/指定用户,移植自旧user_check_input.vue)。components/NoticeUpload.vue:通知附件上传(选择文件 + 200MB 限制,移植自旧uploadFile.vue)。- 发文部门卡片:见
views/notice/NoticeSetting.vue,样式与交互对齐 UserBase「应用类型」 (UserBase/front/src/views/app/AppCategory.vue),额外支持停用/启用。
统计说明
统计相关前端已按需求移除(Notice_statis 接口封装、菜单、图标等),后期统计不在本应用内做。
Languages
Vue
44.3%
JavaScript
31.5%
TypeScript
19.5%
SCSS
2.3%
CSS
1.8%
Other
0.6%