2 lines
8.9 KiB
JavaScript
2 lines
8.9 KiB
JavaScript
|
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-OjjizwQb.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=>({"&":"&","<":"<",">":">"})[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("p
|