Browse Source

feat:消息列表组件增加图像分析敏感词显示判断;新增敏感词枚举;新增每次消息结束后重新获取点数信息;

dxj
李朋徽 1 year ago
parent
commit
a8acb98afd
  1. 28
      src/components/AppMessage/index.vue
  2. 42
      src/enums/mqttEnum.ts
  3. 2
      src/hooks/useMqtt.ts

28
src/components/AppMessage/index.vue

@ -9,6 +9,7 @@ import { MessageStatusEnum, MessageTypeEnum } from '@/enums/messageEnum'
import { MenuTypeEnum } from '@/enums/menuEnum'
import { copyText } from '@/utils/copyTextToClipboard'
import { useMessageStore } from '@/store/moules/messageStore/index'
import { MqttContentErrorEnum } from '@/enums/mqttEnum'
const props = defineProps({
elIndex: {
@ -133,27 +134,24 @@ onMounted(async () => {
>
<img class="icon-ai" src="@/assets/images/conversation/logo.png" alt="">
<div class="content" :class="[aiWidthType === 'auto' ? 'width-auto' : 'width-full']">
<MdPreview
v-if="
conversationData?.type === MenuTypeEnum.TEXT_TO_TEXT
|| conversationData?.type === MenuTypeEnum.ROLE
|| conversationData?.type === MenuTypeEnum.REPOSITORY
|| conversationData?.type === MenuTypeEnum.VISUAL_ANALYSIS
"
:editor-id="`preview-only-ai${index}`"
:model-value="item.content"
/>
<div v-if="conversationData?.type === MenuTypeEnum.TEXT_TO_IMAGE" class="pt-2 pb-2">
<Image
v-if="!item.content.includes(MqttContentErrorEnum.SENSITIVE_WORD)"
class="mb-2"
:width="200"
:height="200"
:src="item.content"
fallback="data:image/png;base64,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"
></Image>
<p v-if="!item.content.includes('http')">
<p v-if="!item.content.includes('http')" class="mb-0">
{{ item.content }}
</p>
</div>
<MdPreview
v-else
:editor-id="`preview-only-ai${index}`"
:model-value="item.content"
/>
</div>
<div v-if="item.messageType !== MessageTypeEnum.DESCRIBE" class="w-full">
<div v-if="item.messageStatus === MessageStatusEnum.ERROR" class="error">
@ -165,7 +163,13 @@ onMounted(async () => {
<SvgIcon class="icon" name="copy"></SvgIcon>
复制
</div>
<div v-if="index === list.length - 1" class="reload" @click="reloadMessage">
<div
v-if="
index === list.length - 1
&& conversationData?.type !== MenuTypeEnum.VISUAL_ANALYSIS"
class="reload"
@click="reloadMessage"
>
<SvgIcon class="icon" name="again"></SvgIcon>
重新回答
</div>

42
src/enums/mqttEnum.ts

@ -1,11 +1,3 @@
/*
* @Description:
* @Author: yeke
* @Date: 2024-01-09 14:10:43
* @LastEditors: yeke
* @LastEditTime: 2024-01-10 14:25:19
*/
/**
* @description: mqtt
* @param UNCONNECTED
@ -17,22 +9,22 @@
*/
export enum MqttConnectStateEnum {
// 未连接
UNCONNECTED = "unConnected",
UNCONNECTED = 'unConnected',
// 连接中
CONNECTING = "connecting",
CONNECTING = 'connecting',
// 已连接
CONNECTED = "connected",
CONNECTED = 'connected',
// 连接失败
CONNECT_FAILED = "connectFailed",
CONNECT_FAILED = 'connectFailed',
// 断开连接
DISCONNECTED = "disConnected",
DISCONNECTED = 'disConnected',
// 断开中
DISCONNECTING = "disconnecting",
DISCONNECTING = 'disconnecting',
// 断开失败
DISCONNECT_FAILED = "disconnectFailed",
DISCONNECT_FAILED = 'disconnectFailed',
// 重连中
RECONNECTING = "reConnecting",
RECONNECTING = 'reConnecting',
}
/**
@ -44,11 +36,19 @@ export enum MqttConnectStateEnum {
*/
export enum MqttSubcribeStateEnum {
// 未订阅
UNSUBSCRIBED = "unSubscribed",
UNSUBSCRIBED = 'unSubscribed',
// 订阅中
SUBSCRIBING = "subscribing",
SUBSCRIBING = 'subscribing',
// 订阅成功
SUBSCRIBE_SUCCESS = "subscribeSuccess",
SUBSCRIBE_SUCCESS = 'subscribeSuccess',
// 订阅失败
SUBSCRIBE_FAILED = "subscribeFailed",
SUBSCRIBE_FAILED = 'subscribeFailed',
}
/**
* @description: mqtt message_content
* @param SENSITIVE_WORD
*/
export enum MqttContentErrorEnum {
SENSITIVE_WORD = '不符合安全规范,请重新输入',
}

2
src/hooks/useMqtt.ts

@ -4,7 +4,6 @@ import { MqttService } from '@/utils/mqtt'
import { useUserStore } from '@/store/moules/userStore/index'
import { useMessageStore } from '@/store/moules/messageStore/index'
import { MessageStatusEnum, MessageTypeEnum, ModelTypeEnum } from '@/enums/messageEnum'
import { MenuTypeEnum } from '@/enums/menuEnum'
export function useMqtt() {
const userStore = useUserStore()
@ -64,6 +63,7 @@ export function useMqtt() {
avatar: '',
messageStatus: MessageStatusEnum.END,
})
userStore.getChatInfoFun()
}
})
})

Loading…
Cancel
Save