提交 d6d134d1 编写于 作者: DCloud_JSON's avatar DCloud_JSON

1.0.11

- 修复 流式响应模式,微信小程序端,部分情况下:消息内容突然变空白的问题
- 优化 uni-ai问题回复完成后,消息输入框自动获取焦点
- 修复 Vue3-web-pc端 敲完回车会先执行换行再发送消息的问题
上级 4feae8a8
## 1.0.11(2023-05-17)
- 修复 流式响应模式,微信小程序端,部分情况下:消息内容突然变空白的问题
- 优化 uni-ai问题回复完成后,消息输入框自动获取焦点
- 修复 Vue3-web-pc端 敲完回车会先执行换行再发送消息的问题
## 1.0.10(2023-05-15)
- 修复 Vue3-web-pc端 回车不能发送消息的问题(临时兼容方案,后续textarea组件不支持@keydown的问题修复后会调整)
## 1.0.9(2023-05-15)
......
<template>
<view class="rich-text-box" :class="{'show-cursor':showCursor}" ref="rich-text-box">
<rich-text v-if="nodes&&nodes.length" space="nbsp" :nodes="nodes"></rich-text>
<rich-text v-if="nodes&&nodes.length" space="nbsp" :nodes="nodes"></rich-text>
<!-- #ifdef H5 -->
<view class="copy-box" :style="{left,top}">
......@@ -47,9 +47,9 @@
return '<pre class="hljs" style="padding: 5px 8px;margin: 5px 0;overflow: auto;"><code>' +
markdownIt.utils.escapeHtml(str) + '</code></pre>';
}
})
}
})
export default {
name: "msg",
data() {
......@@ -57,7 +57,7 @@
// 悬浮的复制按钮的左边距
left: "-100px",
// 悬浮的复制按钮的上边距
top: "-100px"
top: "-100px"
};
},
mounted() {
......@@ -104,29 +104,29 @@
}
},
computed: {
// 修改转换结果的html值 用于正确给界面增加鼠标闪烁的效果
html() {
// 判断markdown中代码块标识符的数量是否为偶数
nodes() {
let htmlString = ''
// 修改转换结果的htmlString值 用于正确给界面增加鼠标闪烁的效果
// 判断markdown中代码块标识符的数量是否为偶数
if(this.md.split("```").length%2){
return markdownIt.render(this.md + ' \n <span class="cursor">|</span>');
}else{
return markdownIt.render(this.md) + ' \n <span class="cursor">|</span>';
htmlString = markdownIt.render(this.md + ' \n <span class="cursor">|</span>');
}else{
htmlString = markdownIt.render(this.md) + ' \n <span class="cursor">|</span>';
}
},
nodes() {
// 为兼容 微信小程序端部分未知情况转换失败的情况,临时方案 先返回 string html
// #ifdef MP-WEIXIN
return this.html
// #ifndef APP-NVUE
return htmlString
// #endif
// #ifndef MP-WEIXIN
// HTML String 类型转换 避免内部转换导致的性能下降。
return parseHtml(this.html)
// nvue模式下将htmlString转成htmlArray,其他情况rich-text内部转
// 注:本示例项目还没使用nvue编译
// #ifdef APP-NVUE
return parseHtml(htmlString)
// #endif
}
},
methods: {
methods: {
// #ifdef H5
// 复制文本内容到系统剪切板
copy() {
......
{
"id": "uni-ai-chat",
"name": "uni-ai-chat",
"version": "1.0.10",
"version": "1.0.11",
"description": "基于uni-ai的聊天示例项目,支持流式、支持前文总结,云端一体",
"main": "main.js",
"scripts": {
......
......@@ -48,7 +48,7 @@
<view class="textarea-box">
<textarea v-model="content" :cursor-spacing="15" class="textarea" :auto-height="!isWidescreen"
@keyup.shift="onKeyup('shift')" @keydown.shift="onKeydown('shift')" @keydown.enter="onKeydown('enter')"
:disabled="inputBoxDisabled" :placeholder="placeholderText" :maxlength="-1"
:disabled="inputBoxDisabled" :placeholder="placeholderText" :maxlength="-1" :focus="focus"
placeholder-class="input-placeholder"></textarea>
</view>
<view class="send-btn-box">
......@@ -57,13 +57,13 @@
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
// 引入配置文件
import config from '@/config.js';
import config from '@/config.js';
// 获取广告id
const {
adpid
......@@ -92,7 +92,8 @@
// 当前屏幕是否为宽屏
isWidescreen: false,
// 广告位id
adpid
adpid,
focus:false
}
},
computed: {
......@@ -124,11 +125,22 @@
}
},
// 监听msgList变化,将其存储到本地缓存中
watch: {
watch: {
// #ifdef H5
inputBoxDisabled(val){
this.$nextTick(()=>{
this.focus = !val
console.log('this.focus',this.focus);
})
},
// #endif
msgList: {
handler(msgList) {
// 将msgList存储到本地缓存中
uni.setStorageSync('uni-ai-msg', msgList)
uni.setStorage({
"key":"uni-ai-msg",
"data":msgList
})
},
// 深度监听msgList变化
deep: true
......@@ -153,7 +165,7 @@
.get()
// 输出当前用户积分
console.log('当前用户有多少积分:', res.data[0] && res.data[0].score);
}
}
// for (let i = 0; i < 15; i++) {
// this.msgList.push({
......@@ -208,9 +220,9 @@
}
if (e.keyCode == 13 && !adjunctKeydown) {
// 延迟兼容 v-model的时机小于onkeydown的问题
setTimeout(()=> {
this.beforeSendMsg();
}, 100);
this.content = textareaDom.value
// 执行发送
this.beforeSendMsg();
}
};
textareaDom.onkeyup = e => {
......@@ -220,7 +232,7 @@
}
};
}
// #endif
// #endif
},
methods: {
// #ifdef H5 && VUE2
......@@ -384,7 +396,6 @@
}
}
// 检查是否开通uni-push;决定是否启用enableStream
await this.checkIsOpenPush()
......@@ -465,7 +476,7 @@
// console.log('sseChannel',sseChannel);
// 监听message事件
sseChannel.on('message', (message) => {
sseChannel.on('message',(message) => {
// console.log('on message', message);
// 将从云端接收到的消息添加到消息列表中
......@@ -728,7 +739,8 @@
/* #ifndef APP-NVUE */
overflow: auto;
/* #endif */
width: 450rpx;
width: 450rpx;
font-size: 14px;
}
/* #ifdef H5 */
......@@ -736,11 +748,11 @@
.textarea-box .textarea::-webkit-scrollbar {
width: 0;
}
/* #endif */
.input-placeholder {
color: #bbb;
color: #bbb;
line-height: 18px;
}
.trash,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册