fix(customer-service): 修复在线客服功能使其可用
- 在微信客服按钮补全必要属性 sessionFrom、onContact、showMessageCard 和 sendMessageTitle - 将按钮样式由 Tailwind 类改为内联样式,避免 border-0 干扰原生按钮渲染 - 添加真机预览测试提示,解决开发者工具无法使用问题 - `ShopChatMessage` 和相关接口新增 conversationId 字段支持消息会话关联 - 消息发送时补全 conversationId 和发送人 ID,保证消息关联准确 - 将会话列表中引用的不存在字段 lastMessage 替换为 content - 移除无用的 useReachBottom,改用 ScrollView 的 onScrollToLower 事件加载历史消息 - 删除未使用的 scrollToBottom ref - 增加条件守卫避免非历史展开时加载更多消息
This commit is contained in:
@@ -244,3 +244,34 @@ adapter `/list` 接口忽略分页,一次返回全部收藏;前端 `listShop
|
||||
1. 从 `useCartContext` 额外解构 `totalCount`、`refresh`
|
||||
2. 引入 `useDidShow`,页面显示时(已登录)调 `refresh()` 拉取最新购物车,保证角标准确
|
||||
3. 购物车图标外包一层 `relative` 容器,`totalCount > 0` 时右上角显示红色圆角角标(>99 显示 `99+`),样式与商城列表页浮动购物车角标一致
|
||||
|
||||
## 在线客服功能修复(2026-07-14)
|
||||
|
||||
### 问题
|
||||
`pages/user/customer-service/index` 在线客服功能使用不了,用户已在微信后台添加客服人员。
|
||||
|
||||
### 根因(多个问题叠加)
|
||||
1. **`openType="contact"` 按钮缺少关键属性**:缺少 `sessionFrom`(会话来源标识)、`onContact`(客服回调)、`showMessageCard`/`sendMessageTitle`(客服消息卡片),且按钮被 Tailwind `border-0` 类可能干扰原生渲染
|
||||
2. **开发者工具限制**:`open-type="contact"` 在微信开发者工具中不生效,只能在真机上使用,页面缺少提示
|
||||
3. **自定义聊天系统消息发送缺失 `conversationId`**:`addShopChatMessage` 调用未传 `conversationId`,消息无法关联到会话;`ShopChatMessage` 模型本身也缺少该字段
|
||||
4. **消息发送缺失 `formUserId`**:发送人 ID 未设置
|
||||
5. **`conv.lastMessage` 字段不存在**:`ShopChatConversation` 模型只有 `content` 字段,代码引用了不存在的 `lastMessage`
|
||||
6. **`useReachBottom` 用错场景**:页面使用 `ScrollView` 组件,`useReachBottom` 是页面级滚动钩子,对 ScrollView 无效,应改用 `onScrollToLower`
|
||||
7. **`scrollToBottom` ref 设了但从未使用**:死代码
|
||||
|
||||
### 修改
|
||||
1. **`src/api/shop/shopChatMessage/model/index.ts`**:
|
||||
- `ShopChatMessage` 接口新增 `conversationId?: number`
|
||||
- `ShopChatMessageParam` 接口新增 `conversationId?: number`
|
||||
2. **`src/pages/user/customer-service/index.tsx`**(全面修复):
|
||||
- 微信客服按钮补全 `sessionFrom="customer_service"`、`onContact`、`showMessageCard`、`sendMessageTitle`
|
||||
- 按钮样式从 Tailwind 类改为 inline style(避免 `border-0` 干扰原生按钮),显式设置 `border: 'none'`
|
||||
- 添加"需真机预览测试"提示文字
|
||||
- `addShopChatMessage` 调用补全 `conversationId` 和 `formUserId`(从 `Taro.getStorageSync('UserId')` 获取)
|
||||
- `conv.lastMessage` 全部改为 `conv.content`
|
||||
- 会话列表更新 `lastMessage: text` 改为 `content: text`
|
||||
- 移除 `useReachBottom`,改用 ScrollView `onScrollToLower` + `lowerThreshold={50}`
|
||||
- 移除未使用的 `scrollToBottom` ref
|
||||
- `pageShopChatMessage` 参数去掉 `as any` 断言(模型已支持 `conversationId`)
|
||||
- 新增 `getCurrentUserId()` 辅助函数
|
||||
- `handleScrollToLower` 增加 `showHistory` 条件守卫(仅展开历史时才加载更多)
|
||||
|
||||
Reference in New Issue
Block a user