文件上传的问题

This commit is contained in:
aixianling
2024-08-23 09:58:01 +08:00
parent 0ff3eaff97
commit 6ad47f207a
3 changed files with 33 additions and 7 deletions

View File

@@ -87,9 +87,11 @@ export default {
if (++i < content.length) setTimeout(() => concatenateStr(content, i, target), 50)
}
this.$debounce(() => {
const {currentConversation: conversationId, app, prompt: content, latlng} = this.$data
const message = {appType: "2", userType: 0, content, conversationId, ...app, supplementContent: latlng}
const {currentConversation: conversationId, app, prompt: content, latlng, files} = this.$data
const {id: fileId, url: sdkFileUrl, name: fileName} = files[0] || {}
const message = {appType: "2", userType: 0, content, conversationId, ...app, supplementContent: latlng, fileId, sdkFileUrl, fileName}
this.history.push(message)
this.$refs.uploader?.clearFiles()
this.loading = true
this.prompt = ""
this.http.post("/app/appaicopilotinfo/add", message).then(res => {
@@ -190,7 +192,7 @@ export default {
<div class="topBar flex">
<div v-for="(btn,i) in btns" :key="i" class="btn pointer" :style="{backgroundImage: `url(${btn.icon})`}" v-text="btn.label" @click="btn.click"/>
</div>
<ai-uploader v-model="files" :instance="http" :limit="1" show-loading fileType="file">
<ai-uploader ref="uploader" v-model="files" :instance="http" :limit="1" show-loading fileType="file">
<div slot="trigger" ref="uploadTrigger"/>
</ai-uploader>
<div class="flex end">
@@ -202,7 +204,7 @@ export default {
</div>
</div>
</ai-drag>
<ai-locate-dialog dialogTitle="选择当前位置" v-model="locate" :ins="http" @confirm="v=>handleLocate(v)" :modal="false" :latlng="{lat:30.5395460128784,lng:114.271802902222}"/>
<ai-locate-dialog dialogTitle="选择当前位置" v-model="locate" :ins="http" @confirm="v=>handleLocate(v)" :modal="false"/>
<img class="icon" src="https://cdn.sinoecare.com/i/2024/08/22/66c6dfdc3766a.png" @click="show=!show"/>
</section>
</template>

View File

@@ -3,7 +3,10 @@
<div class="chat-wrapper" v-for="item in list" :key="item.id">
<div class="chat-text" :class="{right:item.userType == '0',system:item.userType == '2'}">
<img v-if="item.userType!=2" class="avatar" :src="avatar(item)" alt=""/>
<div class="content" v-html="markdown(item.content)"/>
<div style="max-width: max(calc(100% - 140px), 220px)">
<div class="content" v-html="markdown(item.content)"/>
<div class="attachments pointer el-icon-paperclip" v-if="item.fileName" v-text="item.fileName" @click="handleDownload(item)"/>
</div>
</div>
</div>
</el-scrollbar>
@@ -45,6 +48,9 @@ export default {
},
markdown(v) {
return this.md?.render(v) || v
},
handleDownload(item) {
window.open(item.sdkFileUrl)
}
},
mounted() {
@@ -100,7 +106,6 @@ export default {
.content {
position: relative;
max-width: max(calc(100% - 140px), 220px);
padding: 8px;
border-radius: 4px;
background: #F3F5F7;
@@ -151,6 +156,23 @@ export default {
}
}
}
.attachments {
font-size: 12px;
background: #F0F0F0;
border-radius: 4px;
color: #888;
padding: 3px 6px;
width: fit-content;
margin-top: 4px;
&:hover, &:active {
color: $primaryColor;
}
&:before{
margin-right: 2px;
}
}
}
.avatar {

View File

@@ -86,7 +86,6 @@
</div>
</section>
</template>
<script>
import {VueCropper} from 'vue-cropper'
@@ -403,6 +402,9 @@ export default {
parent.$emit.apply(parent, [eventName].concat(params));
}
},
clearFiles() {
this.$refs.upload.clearFiles()
}
},
}
</script>