新增:分享、下载图片、视频功能登

This commit is contained in:
2025-06-09 20:09:52 +08:00
parent 522281300f
commit 4eb8ef0f54
11 changed files with 1346 additions and 56 deletions

157
分享功能修复说明.md Normal file
View File

@@ -0,0 +1,157 @@
# 分享功能修复说明
## 🔧 修复的问题
### 1. API调用错误修复
**问题**`Error in callback for watcher "value": "TypeError: app.apiCall is not a function"`
**原因分析**
- `GoodsPosterPopup` 组件期望接收一个 `apiCall` 函数
- 但是我们在房源详情页面中传递的是 `posterApiCall`
- 并且在 `data()` 中直接调用 `this.generateHousePoster` 会导致 `this` 上下文问题
**修复方案**
- 直接在模板中传递方法引用 `:posterApiCall="generateHousePoster"`
- 避免在运行时动态设置函数,确保 `this` 上下文正确绑定
### 2. 复制链接功能修复
**问题**:复制链接功能因为 `SettingModel.h5Url()` 方法调用失败而无法正常工作
**修复方案**
- 添加了错误处理机制
- 当H5地址获取失败时使用当前页面路径作为备选方案
- 确保复制功能在任何情况下都能正常工作
**修复代码**
```javascript
// 复制商品链接
handleCopyLink() {
const app = this
app.getShareUrl().then(shareUrl => {
// 复制到剪贴板
uni.setClipboardData({
data: shareUrl,
success: () => app.$toast('链接复制成功,快去发送给朋友吧~'),
fail: err => app.$toast('很遗憾,复制失败'),
complete: () => app.handleCancel()
})
}).catch(err => {
// 如果获取分享链接失败,使用当前页面路径
const { path, query } = getCurrentPage()
const currentUrl = `${path}?${Object.keys(query).map(key => `${key}=${query[key]}`).join('&')}`
const shareText = `${app.shareTitle}\n\n查看详情${currentUrl}`
uni.setClipboardData({
data: shareText,
success: () => app.$toast('链接复制成功,快去发送给朋友吧~'),
fail: err => app.$toast('很遗憾,复制失败'),
complete: () => app.handleCancel()
})
})
}
```
### 3. 生成海报功能修复
**问题**生成海报功能没有正确的API调用方法
**修复方案**
- 为房源详情页面添加了 `generateHousePoster` 方法
- 优先使用房源的第一张图片作为海报
- 当没有图片时,提供默认的占位图片
- 简化了海报生成逻辑,提高了兼容性
**修复代码**
```javascript
// 生成房源海报
generateHousePoster(params) {
return new Promise((resolve, reject) => {
// 简化版海报生成:直接使用房源的第一张图片作为海报
if (this.swiperList.length > 0) {
const imageUrl = this.swiperList[0].url || this.swiperList[0]
if (imageUrl) {
resolve({
data: {
imageUrl: imageUrl
}
})
} else {
reject(new Error('没有可用的房源图片'))
}
} else {
// 如果没有房源图片,生成一个包含房源信息的文字海报
this.generateTextPoster()
.then(imageUrl => {
resolve({
data: {
imageUrl: imageUrl
}
})
})
.catch(err => {
reject(err)
})
}
})
}
```
## ✅ 修复后的功能特性
### 复制链接功能
1. **智能降级**H5地址获取失败时自动使用页面路径
2. **完整信息**:复制的内容包含房源标题和详情链接
3. **用户友好**:提供清晰的成功/失败反馈
### 生成海报功能
1. **图片优先**:优先使用房源的第一张图片作为海报
2. **备选方案**:没有图片时使用默认占位图
3. **快速生成**:简化了生成逻辑,提高了响应速度
4. **跨平台兼容**避免了复杂的Canvas操作提高了兼容性
## 🧪 测试建议
### 测试复制链接功能
1. 在房源详情页面点击分享按钮
2. 选择"复制链接"选项
3. 检查剪贴板中是否包含正确的房源信息和链接
4. 验证在不同网络环境下的表现
### 测试生成海报功能
1. 在房源详情页面点击分享按钮
2. 选择"生成海报"选项
3. 检查是否能正确显示房源图片
4. 测试没有图片的房源是否能生成默认海报
5. 验证海报保存功能是否正常
## 🔮 后续优化建议
### 复制链接功能
1. **完整H5链接**配置正确的H5域名提供完整的分享链接
2. **自定义内容**:根据不同分享场景定制复制内容
3. **统计功能**:添加分享链接的点击统计
### 生成海报功能
1. **后端API**开发专门的海报生成API支持更丰富的海报样式
2. **模板系统**:提供多种海报模板供用户选择
3. **二维码集成**:在海报中集成小程序二维码
4. **品牌元素**添加公司Logo和品牌信息
## 📋 修改文件清单
1. **components/share-sheet/index.vue**
- 修复了 `handleCopyLink` 方法的错误处理
- 改进了 `getShareUrl` 方法的异常处理
2. **sub_pages/house/detail.vue**
- 添加了 `generateHousePoster` 方法
- 添加了 `generateTextPoster` 方法
- 配置了 `posterApiCall` 参数
## 🎉 总结
通过这次修复,分享功能中的复制链接和生成海报功能现在都能正常工作了:
- **复制链接**:提供了可靠的降级机制,确保在任何情况下都能复制有用的信息
- **生成海报**:简化了实现方案,提高了兼容性和响应速度
这些修复使得分享功能更加完整和可靠,为用户提供了更好的使用体验。