修复通用智能打开之后其它无法显示(应该只能有一个div)

This commit is contained in:
junleea 2025-04-01 16:07:25 +08:00
parent c46e36208f
commit 66f87c8d0e
1 changed files with 123 additions and 101 deletions

View File

@ -81,7 +81,7 @@
<el-input <el-input
v-model="inputMessage" v-model="inputMessage"
type="textarea" type="textarea"
style="border: 0;" style="border: 0"
:rows="5" :rows="5"
placeholder="输入消息..." placeholder="输入消息..."
@keyup.enter="sendMessage" @keyup.enter="sendMessage"
@ -102,8 +102,15 @@
> >
<div> <div>
<p>模型参数</p> <p>模型参数</p>
<el-slider v-model="temperature" :min="0" :max="1" :step="0.1">temperature</el-slider> <el-slider v-model="temperature" :min="0" :max="1" :step="0.1"
<el-slider v-model="topP" :min="0" :max="1" :step="0.1"></el-slider> >temperature</el-slider
>
<el-slider
v-model="topP"
:min="0"
:max="1"
:step="0.1"
></el-slider>
</div> </div>
</el-col> </el-col>
<el-col :span="3" style="text-align: center"> <el-col :span="3" style="text-align: center">
@ -117,7 +124,9 @@
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="1" style="text-align: center"> <el-col :span="1" style="text-align: center">
<el-button @click="handleSelectFileVisible"><el-icon><Files /></el-icon></el-button> <el-button @click="handleSelectFileVisible"
><el-icon><Files /></el-icon
></el-button>
</el-col> </el-col>
<!-- <el-col :span="1" style="text-align: center"> <!-- <el-col :span="1" style="text-align: center">
<el-button @click="handleUploadPicture"><el-icon><Picture /></el-icon></el-button> <el-button @click="handleUploadPicture"><el-icon><Picture /></el-icon></el-button>
@ -127,12 +136,17 @@
</el-col> --> </el-col> -->
<!-- 已选文件一行显示 --> <!-- 已选文件一行显示 -->
<el-col :span="12" style="text-align: center"> <el-col :span="12" style="text-align: center">
<el-tag v-for="(file, index) in selectedFiles" :key="index" closable @close="removeFile(index)">{{ file.UserFileName }}</el-tag> <el-tag
v-for="(file, index) in selectedFiles"
:key="index"
closable
@close="removeFile(index)"
>{{ file.UserFileName }}</el-tag
>
</el-col> </el-col>
</el-row> </el-row>
</el-card> </el-card>
</div> </div>
</div>
<div> <div>
<!-- 文件对话框 --> <!-- 文件对话框 -->
@ -157,8 +171,14 @@
> >
<span class="file-icon"> <span class="file-icon">
<!-- 根据文件类型展示不同图标 --> <!-- 根据文件类型展示不同图标 -->
<i v-if="item.UploadType === 'image'" class="el-icon-picture"></i> <i
<i v-else-if="item.UploadType === 'file'" class="el-icon-document"></i> v-if="item.UploadType === 'image'"
class="el-icon-picture"
></i>
<i
v-else-if="item.UploadType === 'file'"
class="el-icon-document"
></i>
<!-- 可继续补充其他文件类型图标 --> <!-- 可继续补充其他文件类型图标 -->
</span> </span>
{{ item.UserFileName }} {{ item.UserFileName }}
@ -168,9 +188,13 @@
</div> </div>
<!-- 底部状态栏和按钮 --> <!-- 底部状态栏和按钮 -->
<div class="footer-bar"> <div class="footer-bar">
<span class="selected-count">已选 {{ selectedFiles.length }} 个文件</span> <span class="selected-count"
>已选 {{ selectedFiles.length }} 个文件</span
>
<el-button @click="selectFileVisible = false">取消</el-button> <el-button @click="selectFileVisible = false">取消</el-button>
<el-button type="primary" @click="handleSelectFileConfirm">确认添加({{ selectedFiles.length }})</el-button> <el-button type="primary" @click="handleSelectFileConfirm"
>确认添加({{ selectedFiles.length }})</el-button
>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
@ -185,30 +209,29 @@
<UploadFile></UploadFile> <UploadFile></UploadFile>
</el-dialog> </el-dialog>
</div> </div>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onUnmounted, reactive, nextTick } from "vue"; import { ref, onMounted, onUnmounted, reactive, nextTick } from "vue";
import { ElCard, ElInput, ElButton, ElDialog } from "element-plus"; import { ElCard, ElInput, ElButton, ElDialog } from "element-plus";
import { WSMessage} from "@/types/im"; import { WSMessage, GenMessage } from "@/types/im";
import { ElMessage } from "element-plus";
import { GetMessageService } from "@/api/im"; import { GetMessageService } from "@/api/im";
import { FindUserFileService } from "@/api/file"; import { FindUserFileService } from "@/api/file";
import { Check, Loading, DocumentCopy } from "@element-plus/icons-vue"; import { Model } from "@/types/model";
import MarkdownIt from "markdown-it"; import { File, fileUrl } from "@/types/file";
import hljs from "highlight.js";
import UploadFile from '@/components/upload-file.vue';
import { Session } from "@/types/session"; import { Session } from "@/types/session";
import { FindSessionService } from "@/api/session"; import { FindSessionService } from "@/api/session";
import { ElMessage } from "element-plus";
import { Check, DocumentCopy } from "@element-plus/icons-vue";
import MarkdownIt from "markdown-it";
import hljs from "highlight.js";
import UploadFile from "@/components/upload-file.vue";
import { FindModelListByFunctionName } from "@/api/function"; import { FindModelListByFunctionName } from "@/api/function";
import markdownItHighlightjs from "markdown-it-highlightjs"; import markdownItHighlightjs from "markdown-it-highlightjs";
import markdownItKatex from "markdown-it-katex"; import markdownItKatex from "markdown-it-katex";
import mermaidPlugin from "@agoose77/markdown-it-mermaid"; import mermaidPlugin from "@agoose77/markdown-it-mermaid";
import "katex/dist/katex.min.css"; import "katex/dist/katex.min.css";
import { Model } from "@/types/model";
import {File,fileUrl} from "@/types/file";
import {GenMessage} from "@/types/im";
interface Message { interface Message {
role: "user" | "assistant"; role: "user" | "assistant";
content: string; content: string;
@ -286,7 +309,6 @@ const handleUploadFileClose= async () => {
const handleUploadPicture = () => { const handleUploadPicture = () => {
// //
// //
}; };
const uploadMessageFile = () => { const uploadMessageFile = () => {
@ -452,7 +474,7 @@ const sendMessage = () => {
if (sessionID.value == 0) { if (sessionID.value == 0) {
sessionName.value = inputMessage.value; sessionName.value = inputMessage.value;
} }
let pMsgContent let pMsgContent;
if (msg["is_image"]) { if (msg["is_image"]) {
let img_msg: ImageMessage = JSON.parse(msg["msg"]); let img_msg: ImageMessage = JSON.parse(msg["msg"]);
//md //md
@ -520,7 +542,7 @@ const getMessage = async (session_id: number) => {
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
if (data[i]["Type"] === 3) { if (data[i]["Type"] === 3) {
let msg: GenMessage = data[i]; let msg: GenMessage = data[i];
let pMsgContent let pMsgContent;
if (msg.Status == 3) { if (msg.Status == 3) {
let img_msg: ImageMessage = JSON.parse(msg.Msg); let img_msg: ImageMessage = JSON.parse(msg.Msg);
//md //md
@ -583,9 +605,9 @@ GetModelListByFunctionName();
const getFileListData = async () => { const getFileListData = async () => {
let req = { let req = {
token: localStorage.getItem('token'), token: localStorage.getItem("token"),
type: "all" type: "all",
} };
let result = await FindUserFileService(req); let result = await FindUserFileService(req);
if (result["code"] === 0) { if (result["code"] === 0) {
filteredFiles.value = result["data"]; filteredFiles.value = result["data"];