189 lines
5.5 KiB
Vue
189 lines
5.5 KiB
Vue
|
|
<template>
|
||
|
|
<div style="margin-bottom: 20px">
|
||
|
|
<div class="title">摘要</div>
|
||
|
|
<div class="abstract" >
|
||
|
|
<div class="text" v-html="transforMd(articleAbstract)"></div>
|
||
|
|
|
||
|
|
<img v-show="!articleAbstract" src="../assets/images/message/messageLoad.gif" class="messageLoad"/>
|
||
|
|
|
||
|
|
<div class="operates" v-show="articleAbstract">
|
||
|
|
<div class="operateItem" @click="copyText(articleAbstract)">
|
||
|
|
<img src="../assets/images/chat/copy.png" class="operateImg" />
|
||
|
|
<span>复制</span>
|
||
|
|
</div>
|
||
|
|
<div class="operateItem" @click="refreshGuide('6')">
|
||
|
|
<img src="../assets/images/chat/refresh.png" class="operateImg"/>
|
||
|
|
<span>再试一次</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="title">关键词</div>
|
||
|
|
<div class="abstract">
|
||
|
|
<div class="text" v-html="transforMd(articleKeywords)"> </div>
|
||
|
|
<img v-show="!articleKeywords" src="../assets/images/message/messageLoad.gif" class="messageLoad"/>
|
||
|
|
|
||
|
|
<div v-show="articleKeywords" class="operates">
|
||
|
|
<div class="operateItem" @click="copyText(articleKeywords)">
|
||
|
|
<img src="../assets/images/chat/copy.png" class="operateImg"/>
|
||
|
|
<span>复制</span>
|
||
|
|
</div>
|
||
|
|
<div class="operateItem" @click="refreshGuide('8')">
|
||
|
|
<img src="../assets/images/chat/refresh.png" class="operateImg"/>
|
||
|
|
<span>再试一次</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="title">章节速览</div>
|
||
|
|
<div class="abstract">
|
||
|
|
<div class="text" v-html="transforMd(articleParagraph)"></div>
|
||
|
|
|
||
|
|
<img v-show="!articleParagraph" src="../assets/images/message/messageLoad.gif" class="messageLoad"/>
|
||
|
|
|
||
|
|
<div v-show="articleParagraph" class="operates">
|
||
|
|
<div class="operateItem" @click="copyText(articleParagraph)">
|
||
|
|
<img src="../assets/images/chat/copy.png" class="operateImg"/>
|
||
|
|
<span>复制</span>
|
||
|
|
</div>
|
||
|
|
<div class="operateItem" @click="refreshGuide('9')">
|
||
|
|
<img src="../assets/images/chat/refresh.png" class="operateImg"/>
|
||
|
|
<span>再试一次</span>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script setup lang='ts'>
|
||
|
|
import {copyToClip} from "@/utils";
|
||
|
|
import {ElMessage} from "element-plus";
|
||
|
|
import {fileGuidInfo} from "@/api";
|
||
|
|
import {onMounted, ref} from "vue";
|
||
|
|
import MarkdownIt from "markdown-it";
|
||
|
|
import {transforMd} from "@/utils/markdown";
|
||
|
|
|
||
|
|
const state=history.state;
|
||
|
|
|
||
|
|
const emits=defineEmits(["refreshAbs","refreshCon"]);
|
||
|
|
const mardown=new MarkdownIt();
|
||
|
|
const refreshAbs=()=>{
|
||
|
|
emits('refreshAbs');
|
||
|
|
}
|
||
|
|
const refreshCon=()=>{
|
||
|
|
emits('refreshCon');
|
||
|
|
}
|
||
|
|
const historyParams=history.state;
|
||
|
|
const articleAbstract=ref(historyParams.articleAbstract);
|
||
|
|
const articleKeywords=ref(historyParams.articleKeywords);
|
||
|
|
const articleParagraph=ref(historyParams.articleParagraph);
|
||
|
|
|
||
|
|
//总结提炼
|
||
|
|
onMounted(async () => {
|
||
|
|
if(articleKeywords.value&&(articleKeywords.value.indexOf('关键词:')>-1||articleKeywords.value.indexOf('关键词:')>-1)){
|
||
|
|
articleKeywords.value=articleKeywords.value.substring(articleKeywords.value.indexOf('关键词:')+4,articleKeywords.value.length);
|
||
|
|
articleKeywords.value=articleKeywords.value.substring(articleKeywords.value.indexOf('关键词:')+4,articleKeywords.value.length);
|
||
|
|
}
|
||
|
|
})
|
||
|
|
const copyText=(text)=>{
|
||
|
|
copyToClip(text);
|
||
|
|
ElMessage.success("复制成功");
|
||
|
|
}
|
||
|
|
const refreshGuide=async (type:string)=>{
|
||
|
|
let fileBox= document.getElementById('file-content');
|
||
|
|
if(fileBox) {
|
||
|
|
let param = {
|
||
|
|
type: type,
|
||
|
|
context: fileBox.innerText,
|
||
|
|
fileId: historyParams.fileId,
|
||
|
|
}
|
||
|
|
if(type==='6'){
|
||
|
|
articleAbstract.value=''
|
||
|
|
}
|
||
|
|
if(type==='8'){
|
||
|
|
articleKeywords.value= ''
|
||
|
|
}
|
||
|
|
if(type==='9'){
|
||
|
|
articleParagraph.value= ''
|
||
|
|
}
|
||
|
|
try {
|
||
|
|
let response = await fileGuidInfo(param);
|
||
|
|
let responseData=JSON.parse(response.data);
|
||
|
|
if(type==='6'){
|
||
|
|
articleAbstract.value=responseData;
|
||
|
|
}
|
||
|
|
if(type==='8'){
|
||
|
|
if(responseData&&(responseData.indexOf('关键词:')>-1||responseData.indexOf('关键词:')>-1)){
|
||
|
|
responseData=responseData.substring(responseData.indexOf('关键词:')+4,responseData.length);
|
||
|
|
responseData=responseData.substring(responseData.indexOf('关键词:')+4,responseData.length);
|
||
|
|
}
|
||
|
|
articleKeywords.value=responseData;
|
||
|
|
}
|
||
|
|
if(type==='9'){
|
||
|
|
articleParagraph.value=responseData;
|
||
|
|
}
|
||
|
|
} catch (error: any) {
|
||
|
|
ElMessage.error(error && error.message ? error.message : '未知错误');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="less" scoped>
|
||
|
|
.title{
|
||
|
|
margin:12px 0 12px 20px;
|
||
|
|
font-family: PingFang SC, PingFang SC;
|
||
|
|
font-weight: bold;
|
||
|
|
font-size: 16px;
|
||
|
|
color: #000000;
|
||
|
|
line-height: 30px;
|
||
|
|
text-align: left;
|
||
|
|
font-style: normal;
|
||
|
|
text-transform: none;
|
||
|
|
}
|
||
|
|
.abstract{
|
||
|
|
//width: 490px;
|
||
|
|
/*
|
||
|
|
height: 230px;
|
||
|
|
*/
|
||
|
|
background: #FFFFFF;
|
||
|
|
border-radius: 8px 8px 8px 8px;
|
||
|
|
border: 1px solid #D5DDFF;
|
||
|
|
margin-left:20px;
|
||
|
|
margin-right: 20px;
|
||
|
|
padding:0 16px 16px 16px;
|
||
|
|
.messageLoad {
|
||
|
|
margin-top:20px;
|
||
|
|
width: 80px;
|
||
|
|
height: 32px;
|
||
|
|
}
|
||
|
|
.text{
|
||
|
|
font-family: PingFang SC, PingFang SC;
|
||
|
|
font-weight: 400;
|
||
|
|
font-size: 16px;
|
||
|
|
color: #000000;
|
||
|
|
line-height: 28px;
|
||
|
|
text-align: left;
|
||
|
|
font-style: normal;
|
||
|
|
text-transform: none;
|
||
|
|
}
|
||
|
|
.operates {
|
||
|
|
display: flex;
|
||
|
|
margin-top: 18px;
|
||
|
|
font-weight: 400;
|
||
|
|
font-size: 14px;
|
||
|
|
color: #858a94;
|
||
|
|
.operateItem {
|
||
|
|
cursor: pointer;
|
||
|
|
margin-right: 16px;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
.operateImg {
|
||
|
|
width: 16px;
|
||
|
|
height: 16px;
|
||
|
|
margin-right: 8px;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</style>
|