3.4 KiB
3.4 KiB
添加服务页改动记录
2026-06-11
1. 接口返回视频字段未正常显示
涉及文件:
pages/shop/add-service.vuecomponents/dynamic-form/dynamic-form.vuecomponents/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。 - 新增
uploadUserIdprop,并传给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.vuecomponents/dynamic-form/FormItemImage.vuepages/shop/add-service.vue
改动内容:
-
components/ali-oss-uploader/ali-oss-uploader.vue- 新增
sortableprop,默认关闭。 - 图片上传列表支持长按开始拖动。
- 拖动到其他图片位置时实时交换数组顺序。
- 每次排序后立即触发
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 模板编译校验。