mrr.sj.front/CHANGE_RECORD_ADD_SERVICE.md

82 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 添加服务页改动记录
## 2026-06-11
### 1. 接口返回视频字段未正常显示
涉及文件:
- `pages/shop/add-service.vue`
- `components/dynamic-form/dynamic-form.vue`
- `components/dynamic-form/FormItemVideo.vue`
改动内容:
- `pages/shop/add-service.vue`
- 动态模板转换时不再过滤 `fieldType === 'video'` 的字段。
- 新增 `hasDynamicVideoField`,当接口模板已经返回视频字段时,使用动态表单内的视频上传组件。
- 原页面固定视频上传块保留为兜底,仅在模板没有视频字段时显示,避免重复显示两个视频上传组件。
-`dynamic-form` 传入 `upload-user-id`,让动态视频上传能拿到当前发布用户 ID。
- 初始化动态字段时支持分组结构,视频多选字段按数组初始化。
- `components/dynamic-form/dynamic-form.vue`
- 视频字段渲染时传入 `maxCount`、`maxSize/maxFileSize`。
- 新增 `uploadUserId` prop并传给 `form-item-video`
- 多视频字段初始化为空数组,单视频字段初始化为空字符串。
- `components/dynamic-form/FormItemVideo.vue`
- 支持单视频和多视频值类型。
- 使用 `ali-oss-uploader` 上传视频时传入 `kind=2`
- 支持视频上传成功后回写、删除后清空、已有视频回显。
- 上传用户 ID 优先使用父组件传入值,兜底读取 Vuex 中的商家信息。
### 2. 视频上传后传给后端的地址打不开
涉及文件:
- `components/ali-oss-uploader/ali-oss-uploader.vue`
改动内容:
- 上传 OSS 后不再无条件拼接 URL 并回传。
- H5 `fetch` 上传和 APP/小程序 `uni.uploadFile` 上传都必须返回 `2xx` 才认为成功。
- 上传失败时 reject并触发 `error`,避免把不存在的 OSS 地址提交给后端。
- 统一生成 OSS object key上传使用的 key 和回传给后端的 URL 使用同一套路径规则。
- 文件扩展名提取增加兜底逻辑:
- 视频默认 `.mp4`
- 图片默认 `.jpg`
- 清理临时路径中的 query/hash避免生成异常对象名。
### 3. 添加服务页多图上传支持拖动排序
涉及文件:
- `components/ali-oss-uploader/ali-oss-uploader.vue`
- `components/dynamic-form/FormItemImage.vue`
- `pages/shop/add-service.vue`
改动内容:
- `components/ali-oss-uploader/ali-oss-uploader.vue`
- 新增 `sortable` prop默认关闭。
- 图片上传列表支持长按开始拖动。
- 拖动到其他图片位置时实时交换数组顺序。
- 每次排序后立即触发 `input``change`,向父组件回写排序后的 `fileList`
- 拖动中增加视觉状态,降低透明度并缩放。
- 拖动结束后短暂抑制图片预览,避免排序后误触发预览。
- 图片预览使用当前 `fileList` 字符串数组,保持预览顺序和提交顺序一致。
- `components/dynamic-form/FormItemImage.vue`
- 动态表单多图上传开启 `sortable`
- `pages/shop/add-service.vue`
- 提交逻辑沿用当前数组顺序:
- `image_multi` 字段按动态表单当前数组顺序传参。
- `photo` 字段通过 `Object.values(this.formData.photo || {})` 取当前顺序传参。
### 4. 校验情况
- 已执行 `git diff --check`,当前相关改动无 whitespace 错误。
- 项目 `package.json` 未配置 build/lint 脚本,未执行完整构建校验。
- 本地缺少 `vue-template-compiler`,未执行 Vue 模板编译校验。