selenium_keyan/selenium_vue/frontend-vite/dist/assets/TaskDetail-D-V427N_.js

2 lines
8.9 KiB
JavaScript
Executable File

import{_ as J,r as u,o as Q,a as n,b as o,e as _,d as t,s as c,t as a,w as z,g as $,F as H,h as S,i as W,j as G,l as X,x as Y,p as Z,y as ee,z as te,n as A}from"./index-C-Pc-2M1.js";import{a as M}from"./client-CSdq-1hH.js";const se={class:"task-detail-container"},le=["disabled"],ae={key:1,class:"details-container"},ne={class:"list-header"},oe={style:{display:"flex",gap:"8px","margin-top":"16px"}},ie={class:"list-items"},ue=["onClick"],de={class:"item-line"},re={class:"item-no"},ve={class:"item-texts"},ce={class:"item-title small"},pe={key:0,class:"item-site"},he={key:0,class:"list-empty"},_e={class:"list-footer",style:{padding:"10px",display:"flex","align-items":"center","justify-content":"space-between",gap:"8px","border-top":"1px solid #e5e7eb"}},me={style:{display:"flex",gap:"6px"}},fe=["disabled"],ye=["disabled"],ge={class:"details-preview"},ke={key:0,class:"preview-content"},be={class:"preview-header"},xe={class:"preview-meta"},we={class:"meta-item"},Ce={class:"meta-item"},Te={class:"meta-item"},Me={class:"meta-item"},De={class:"preview-body"},Re={key:0,class:"section"},Be={key:1,class:"section"},Le={key:2,class:"section"},ze={class:"parsed-content"},$e={class:"parsed-item"},He={class:"parsed-item"},Se={class:"parsed-item"},Ae={class:"parsed-item"},Ie={class:"parsed-item"},Ve={key:3,class:"section"},Ne=["href"],je={key:4,class:"section"},Fe=["href"],Ke={key:1,class:"preview-placeholder"},Ue={key:2,class:"no-details"},qe={key:3,class:"panel"},Ee={key:4,class:"chat-drawer"},Oe={key:0,class:"chat-empty"},Pe=["innerHTML"],Je={class:"chat-footer"},Qe=["onKeydown"],We=["disabled"],Ge={__name:"TaskDetail",setup(Xe){const I=ee();te();const d=u(null),m=u([]),s=u(null);async function V(){const i=I.params.id;try{const{data:e}=await M.get(`/api/tasks/${i}/`);e&&(d.value=e,await w(e.id))}catch{d.value=null}}const r=u(1),y=u(8),b=u(0),g=u(""),D=u(!1),R=u(!1),N=u(null);async function w(i){try{const e={task:i,page:r.value,page_size:y.value};g.value.trim()&&(e.search=g.value.trim());const{data:p}=await M.get("/api/task-details/",{params:e});m.value=p.results||[],b.value=p.count||0,m.value.length>0&&(s.value=m.value[0])}catch{m.value=[],s.value=null}}function j(i){s.value=i}Q(V);async function F(i){const e=i.target;if(!(D.value||R.value)&&e.scrollTop+e.clientHeight>=e.scrollHeight-16){if(r.value*y.value>=b.value){R.value=!0;return}D.value=!0,r.value+=1;try{const p={task:d.value.id,page:r.value,page_size:y.value};g.value.trim()&&(p.search=g.value.trim());const{data:f}=await M.get("/api/task-details/",{params:p}),l=f.results||[];l.length===0?R.value=!0:m.value=m.value.concat(l)}finally{D.value=!1}}}const C=u(!1),k=u(""),v=u([]),x=u(!1),T=u(null);function K(){C.value=!0}function U(){C.value=!1}async function q(i,e){const f=(await fetch(`${M.defaults.baseURL}/api/tasks/${i}/chat/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({question:e})})).body.getReader(),l=new TextDecoder;let h="";for(;;){const{done:L,value:O}=await f.read();if(L)break;const P=l.decode(O,{stream:!0});h+=P,v.value.length>0&&v.value[v.value.length-1].role==="assistant"?v.value[v.value.length-1].content=h:v.value.push({role:"assistant",content:h}),requestAnimationFrame(()=>{T.value&&(T.value.scrollTop=T.value.scrollHeight)})}return h}async function B(){if(!d.value||!k.value.trim()||x.value)return;const i=k.value.trim();k.value="",v.value.push({role:"user",content:i}),v.value.push({role:"assistant",content:""}),x.value=!0;try{await q(d.value.id,i)}catch{v.value.push({role:"assistant",content:"请求失败,请稍后重试。"})}finally{x.value=!1}}function E(i){if(!i)return"";const p=(l=>l.replace(/[&<>]/g,h=>({"&":"&amp;","<":"&lt;",">":"&gt;"})[h]))(i),f=/(https?:\/\/[^\s]+)/g;return p.replace(f,l=>`<a href="${l}" target="_blank" class="external-link">原文链接</a>`)}return(i,e)=>{var f;const p=X("RouterLink");return o(),n("div",se,[C.value?_("",!0):(o(),n("button",{key:0,class:"chat-fab",title:"AIBot问答",onClick:K,disabled:!d.value},[...e[5]||(e[5]=[t("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[t("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})],-1),c(" AIBot问答 ",-1)])],8,le)),d.value?(o(),n("div",ae,[t("div",{class:"details-list",ref_key:"listRef",ref:N,onScroll:F},[t("div",ne,[t("h3",null,"任务详情列表 ("+a(b.value)+" 条)",1),t("div",oe,[z(t("input",{type:"text","onUpdate:modelValue":e[0]||(e[0]=l=>g.value=l),placeholder:"按标题/网站检索...",style:{flex:"1",padding:"12px 16px",border:"1px solid #e5e7eb","border-radius":"6px","font-size":"14px"}},null,512),[[$,g.value]]),t("button",{class:"btn secondary",onClick:e[1]||(e[1]=l=>{r.value=1,w(d.value.id)}),style:{padding:"12px 20px"}},"检索")])]),t("div",ie,[(o(!0),n(H,null,S(m.value,(l,h)=>(o(),n("div",{key:l.id,class:A(["list-item",{active:s.value&&s.value.id===l.id}]),onClick:L=>j(l)},[t("div",de,[t("span",re,a((r.value-1)*y.value+h+1),1),t("div",ve,[t("div",ce," 论文标题:"+a(l.title||"无标题"),1),l.site||l.source?(o(),n("div",pe," 网站:"+a(l.site||l.source),1)):_("",!0)])])],10,ue))),128)),m.value.length===0?(o(),n("div",he,"暂无数据")):_("",!0)]),t("div",_e,[t("div",null,"第 "+a(r.value)+" / "+a(Math.max(1,Math.ceil(b.value/y.value)))+" 页",1),t("div",me,[t("button",{class:"btn secondary",disabled:r.value<=1,onClick:e[2]||(e[2]=l=>{r.value--,w(d.value.id)})},"上一页",8,fe),t("button",{class:"btn secondary",disabled:r.value>=Math.ceil(b.value/y.value),onClick:e[3]||(e[3]=l=>{r.value++,w(d.value.id)})},"下一页",8,ye)])])],544),t("div",ge,[s.value?(o(),n("div",ke,[t("div",be,[t("h3",null,a(s.value.title||"无标题"),1),t("div",xe,[t("span",we,[e[6]||(e[6]=t("strong",null,"作者:",-1)),c(a(s.value.author||"未知"),1)]),t("span",Ce,[e[7]||(e[7]=t("strong",null,"来源网站:",-1)),c(a(s.value.site||"未知"),1)]),t("span",Te,[e[8]||(e[8]=t("strong",null,"来源期刊:",-1)),c(a(s.value.source||""),1)]),t("span",Me,[e[9]||(e[9]=t("strong",null,"日期:",-1)),c(a(s.value.date),1)])])]),t("div",De,[s.value.keywords?(o(),n("div",Re,[e[10]||(e[10]=t("h4",null,"关键词",-1)),t("p",null,a(s.value.keywords),1)])):_("",!0),s.value.summary?(o(),n("div",Be,[e[11]||(e[11]=t("h4",null,"摘要",-1)),t("p",null,a(s.value.summary),1)])):_("",!0),s.value.parsed_summary?(o(),n("div",Le,[e[17]||(e[17]=t("h4",null,"Agent 论文分析",-1)),t("div",ze,[t("div",$e,[e[12]||(e[12]=t("strong",null,"背景:",-1)),c(a(s.value.parsed_summary.background),1)]),t("div",He,[e[13]||(e[13]=t("strong",null,"目标:",-1)),c(a(s.value.parsed_summary.objective),1)]),t("div",Se,[e[14]||(e[14]=t("strong",null,"方法:",-1)),c(a(s.value.parsed_summary.method),1)]),t("div",Ae,[e[15]||(e[15]=t("strong",null,"贡献:",-1)),c(a(s.value.parsed_summary.contribution),1)]),t("div",Ie,[e[16]||(e[16]=t("strong",null,"结果:",-1)),c(a(s.value.parsed_summary.results),1)])])])):_("",!0),s.value.original_link?(o(),n("div",Ve,[e[18]||(e[18]=t("h4",null,"原文链接",-1)),t("a",{href:s.value.original_link,target:"_blank",class:"external-link"},a(s.value.original_link),9,Ne)])):_("",!0),s.value.pdf_url?(o(),n("div",je,[e[19]||(e[19]=t("h4",null,"PDF 下载",-1)),t("a",{href:s.value.pdf_url,target:"_blank",class:"external-link"},a(s.value.pdf_url),9,Fe)])):_("",!0)])])):(o(),n("div",Ke,[...e[20]||(e[20]=[t("div",{class:"placeholder-content"},[t("div",{class:"placeholder-icon"},"📄"),t("div",{class:"placeholder-text"},"暂无结果")],-1)])]))])])):((f=d.value)==null?void 0:f.status)==="done"?(o(),n("div",Ue,[...e[21]||(e[21]=[t("div",{class:"no-details-content"},[t("div",{class:"no-details-icon"},"📋"),t("div",{class:"no-details-text"},"该任务暂无详情数据")],-1)])])):(o(),n("div",qe,[e[23]||(e[23]=t("div",null,"加载中或任务未完成,无法查看详情。",-1)),W(p,{class:"btn ghost",style:{"margin-top":"10px"},to:"/tasks"},{default:G(()=>[...e[22]||(e[22]=[c("返回列表",-1)])]),_:1})])),C.value?(o(),n("div",Ee,[t("div",{class:"chat-header"},[e[24]||(e[24]=t("div",{class:"chat-title"},"AIBot 问答",-1)),t("button",{class:"btn ghost",onClick:U},"关闭")]),t("div",{class:"chat-body",ref_key:"chatBodyRef",ref:T},[v.value.length===0?(o(),n("div",Oe,[...e[25]||(e[25]=[t("div",{class:"empty-icon"},"💬",-1),t("div",{class:"empty-text"},"开始与 AI Bot 对话吧!",-1),t("div",{class:"empty-hint"},"您可以询问关于当前任务或论文的任何问题",-1)])])):_("",!0),(o(!0),n(H,null,S(v.value,(l,h)=>(o(),n("div",{key:h,class:A(["chat-msg",l.role])},[t("div",{class:"bubble",innerHTML:E(l.content)},null,8,Pe)],2))),128))],512),t("div",Je,[z(t("input",{type:"text","onUpdate:modelValue":e[4]||(e[4]=l=>k.value=l),placeholder:"请输入你的问题...",onKeydown:Y(Z(B,["exact","prevent"]),["enter"])},null,40,Qe),[[$,k.value]]),t("button",{class:"btn",disabled:x.value||!k.value.trim()||!d.value,onClick:B},a(x.value?"发送中...":"发送"),9,We)])])):_("",!0)])}}},et=J(Ge,[["__scopeId","data-v-28b407a1"]]);export{et as default};