From 255254c617899df8e0c308f93d6f217a5965483f Mon Sep 17 00:00:00 2001 From: wangdongbo <949818794@qq.com> Date: Mon, 26 Jan 2026 18:08:01 +0800 Subject: [PATCH 1/3] no message --- pages.json | 12 + pages/message/README.md | 95 ---- pages/message/article-list.vue | 503 ++++++++++++++++ pages/message/chat.scss | 110 +++- pages/message/common-phrases.vue | 535 +++++++++++------- pages/message/components/chat-input.vue | 20 +- pages/message/components/consult-accept.vue | 88 +++ pages/message/components/message-types.vue | 128 ++++- .../components/reject-reason-modal.vue | 297 ++++++++++ pages/message/components/system-message.vue | 108 +++- pages/message/index.vue | 394 ++++++++++++- pages/message/survey-list.vue | 423 ++++++++++++++ utils/api.js | 70 ++- utils/tim-chat.js | 105 +++- 14 files changed, 2545 insertions(+), 343 deletions(-) delete mode 100644 pages/message/README.md create mode 100644 pages/message/article-list.vue create mode 100644 pages/message/components/consult-accept.vue create mode 100644 pages/message/components/reject-reason-modal.vue create mode 100644 pages/message/survey-list.vue diff --git a/pages.json b/pages.json index 55a5b8a..06bf13e 100644 --- a/pages.json +++ b/pages.json @@ -19,6 +19,18 @@ "navigationBarTitleText": "常用语" } }, + { + "path": "pages/message/article-list", + "style": { + "navigationBarTitleText": "宣教文章" + } + }, + { + "path": "pages/message/survey-list", + "style": { + "navigationBarTitleText": "问卷列表" + } + }, { "path": "pages/work/work", "style": { diff --git a/pages/message/README.md b/pages/message/README.md deleted file mode 100644 index 4cf1f3c..0000000 --- a/pages/message/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# 常用语功能说明 - -## 功能概述 -在聊天页面添加了常用语功能,医生可以快速选择并发送预设的常用语内容。 - -## 功能特性 - -### 1. 常用语列表页面 (`common-phrases.vue`) -- 支持分类管理(文字随访、语音随访、常用回复等) -- 支持添加、编辑、删除常用语 -- 支持添加自定义分类 -- 点击常用语直接发送到聊天 - -### 2. 聊天输入框集成 -- 在聊天输入框的"更多"面板中添加"常用语"入口 -- 点击后跳转到常用语列表页面 -- 选择常用语后自动返回并发送 - -### 3. 数据持久化 -- 常用语数据存储在MongoDB的`common-words`集合中 -- 支持机构级别和个人级别的常用语 -- 与PC端管理后台数据互通 - -## 文件结构 - -``` -ykt-wx-app/pages/message/ -├── common-phrases.vue # 常用语列表页面 -├── components/ -│ └── chat-input.vue # 聊天输入框组件(已更新) -├── index.vue # 聊天主页面(已更新) -└── README.md # 本文档 - -ykt-wx-app/utils/ -└── api.js # API配置(已添加常用语接口) - -ytk-customer-service/knowledgeBase/common-words/ -└── index.js # 后端常用语接口(已添加小程序接口) -``` - -## API接口 - -### 1. 获取常用语列表 -```javascript -api('getCommonPhrases', { corpId }) -``` - -### 2. 保存常用语 -```javascript -api('saveCommonPhrase', { - id, // 可选,更新时传入 - corpId, - userId, - categoryId, - content -}) -``` - -### 3. 删除常用语 -```javascript -api('deleteCommonPhrase', { - id, - corpId -}) -``` - -### 4. 获取分类列表 -```javascript -api('getCommonPhraseCategories', { corpId }) -``` - -### 5. 保存分类 -```javascript -api('saveCommonPhraseCategory', { - corpId, - userId, - name -}) -``` - -## 使用流程 - -1. 用户在聊天页面点击输入框右侧的"+"按钮 -2. 在弹出的功能面板中点击"常用语" -3. 跳转到常用语列表页面 -4. 可以切换分类查看不同类型的常用语 -5. 点击任意常用语,自动返回聊天页面并发送该内容 -6. 在编辑模式下可以添加、编辑、删除常用语 - -## 注意事项 - -1. 常用语功能需要用户已登录并有有效的corpId -2. 如果后端API调用失败,会使用本地模拟数据 -3. 常用语内容最多500字 -4. 分类名称最多6个字 diff --git a/pages/message/article-list.vue b/pages/message/article-list.vue new file mode 100644 index 0000000..83f488d --- /dev/null +++ b/pages/message/article-list.vue @@ -0,0 +1,503 @@ + + + + + diff --git a/pages/message/chat.scss b/pages/message/chat.scss index a885920..4ea23f9 100644 --- a/pages/message/chat.scss +++ b/pages/message/chat.scss @@ -1248,4 +1248,112 @@ $primary-color: #0877F1; @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10rpx); } -} \ No newline at end of file +} + +/* 文章卡片样式 */ +.article-card { + display: flex; + align-items: center; + background-color: #fff; + border-radius: 12rpx; + padding: 24rpx; + max-width: 500rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.08); +} + +.article-content { + flex: 1; + display: flex; + flex-direction: column; + margin-right: 20rpx; + min-width: 0; +} + +.article-title { + font-size: 28rpx; + color: #333; + font-weight: 500; + line-height: 1.4; + margin-bottom: 8rpx; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.article-desc { + font-size: 24rpx; + color: #999; + line-height: 1.3; +} + +.article-image { + width: 120rpx; + height: 120rpx; + border-radius: 8rpx; + flex-shrink: 0; +} + +/* 文章卡片在不同消息流中的样式 */ +.message-right .article-card { + background-color: #e8f4ff; +} + +.message-left .article-card { + background-color: #fff; +} + +/* 问卷卡片样式 */ +.survey-card { + display: flex; + align-items: center; + background-color: #fff; + border-radius: 12rpx; + padding: 24rpx; + max-width: 500rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.08); +} + +.survey-content { + flex: 1; + display: flex; + flex-direction: column; + margin-right: 20rpx; + min-width: 0; +} + +.survey-title { + font-size: 28rpx; + color: #333; + font-weight: 500; + line-height: 1.4; + margin-bottom: 8rpx; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.survey-desc { + font-size: 24rpx; + color: #999; + line-height: 1.3; +} + +.survey-image { + width: 120rpx; + height: 120rpx; + border-radius: 8rpx; + flex-shrink: 0; +} + +/* 问卷卡片在不同消息流中的样式 */ +.message-right .survey-card { + background-color: #e8f4ff; +} + +.message-left .survey-card { + background-color: #fff; +} diff --git a/pages/message/common-phrases.vue b/pages/message/common-phrases.vue index f917d00..c5f549b 100644 --- a/pages/message/common-phrases.vue +++ b/pages/message/common-phrases.vue @@ -5,11 +5,11 @@ @@ -23,26 +23,16 @@ - - - + - + + + + 新增分类 + - - - - + - 添加快捷回复 - - - {{ isEditMode ? "完成" : "编辑" }} - - - 暂无常用语 - 点击上方按钮添加常用语 + 点击下方按钮添加常用语 + + + + + + + 添加快捷回复 + + + {{ isEditMode ? "完成" : "编辑" }} + + @@ -108,7 +109,9 @@ > - 新建分类 + {{ + editingCategory ? "编辑分类" : "新建分类" + }} × @@ -117,11 +120,12 @@ v-model="categoryForm.name" class="category-input" placeholder="请输入分类名,最多6个字" - maxlength="6" /> - + @@ -130,7 +134,12 @@ + + diff --git a/pages/message/components/message-types.vue b/pages/message/components/message-types.vue index 4d358fe..f128132 100644 --- a/pages/message/components/message-types.vue +++ b/pages/message/components/message-types.vue @@ -63,8 +63,46 @@ - + + {{ getArticleData(message).title }} + {{ getArticleData(message).desc }} + + + + + + + + {{ getSurveyData(message).title }} + {{ getSurveyData(message).desc }} + + + + + + + --> + diff --git a/pages/message/components/system-message.vue b/pages/message/components/system-message.vue index 0d28603..de4a907 100644 --- a/pages/message/components/system-message.vue +++ b/pages/message/components/system-message.vue @@ -1,9 +1,9 @@