Files
WebAI2API/webui/dist/assets/request.js
T
daidai 0d196d87a6 fix: 修复 retries=0 时不下载的问题
当 imgDlRetry 未配置时,retries=0 导致循环不执行直接返回失败。
修改为 maxAttempts = max(1, retries),确保至少执行一次下载尝试。
2026-03-28 21:10:19 +08:00

2 lines
23 KiB
JavaScript

import{c as a,I as Ee,_ as ft,j as mt,G as ye,o as gt,a as yt,h as r,w as l,d as i,F as b,n as q,e as c,u as y,H as _t,t as v,J as ht,f as D,K as Re,C as Te,g as $e,x as je,D as _e,R as Ue,b as M,N as he,O as wt,A as kt,m as _,i as h,r as p,p as bt,M as Ie,k as n}from"./index.js";var xt={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M719.4 499.1l-296.1-215A15.9 15.9 0 00398 297v430c0 13.1 14.8 20.5 25.3 12.9l296.1-215a15.9 15.9 0 000-25.8zm-257.6 134V390.9L628.5 512 461.8 633.1z"}}]},name:"play-circle",theme:"outlined"};function Le(w){for(var u=1;u<arguments.length;u++){var g=arguments[u]!=null?Object(arguments[u]):{},k=Object.keys(g);typeof Object.getOwnPropertySymbols=="function"&&(k=k.concat(Object.getOwnPropertySymbols(g).filter(function(Y){return Object.getOwnPropertyDescriptor(g,Y).enumerable}))),k.forEach(function(Y){Mt(w,Y,g[Y])})}return w}function Mt(w,u,g){return u in w?Object.defineProperty(w,u,{value:g,enumerable:!0,configurable:!0,writable:!0}):w[u]=g,w}var Q=function(u,g){var k=Le({},u,g.attrs);return a(Ee,Le({},k,{icon:xt}),null)};Q.displayName="PlayCircleOutlined";Q.inheritAttrs=!1;var Ct={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M758.2 839.1C851.8 765.9 912 651.9 912 523.9 912 303 733.5 124.3 512.6 124 291.4 123.7 112 302.8 112 523.9c0 125.2 57.5 236.9 147.6 310.2 3.5 2.8 8.6 2.2 11.4-1.3l39.4-50.5c2.7-3.4 2.1-8.3-1.2-11.1-8.1-6.6-15.9-13.7-23.4-21.2a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-9.3 9.3-19.1 18-29.3 26L668.2 724a8 8 0 00-14.1 3l-39.6 162.2c-1.2 5 2.6 9.9 7.7 9.9l167 .8c6.7 0 10.5-7.7 6.3-12.9l-37.3-47.9z"}}]},name:"redo",theme:"outlined"};function He(w){for(var u=1;u<arguments.length;u++){var g=arguments[u]!=null?Object(arguments[u]):{},k=Object.keys(g);typeof Object.getOwnPropertySymbols=="function"&&(k=k.concat(Object.getOwnPropertySymbols(g).filter(function(Y){return Object.getOwnPropertyDescriptor(g,Y).enumerable}))),k.forEach(function(Y){Dt(w,Y,g[Y])})}return w}function Dt(w,u,g){return u in w?Object.defineProperty(w,u,{value:g,enumerable:!0,configurable:!0,writable:!0}):w[u]=g,w}var we=function(u,g){var k=He({},u,g.attrs);return a(Ee,He({},k,{icon:Ct}),null)};we.displayName="RedoOutlined";we.inheritAttrs=!1;const Yt={style:{display:"flex",gap:"16px","flex-wrap":"wrap"}},Ot={style:{flex:"1","min-width":"280px"}},St={style:{"margin-bottom":"12px"}},zt={style:{"margin-bottom":"12px"}},Pt={style:{display:"flex","align-items":"center",gap:"16px","flex-wrap":"wrap"}},Rt={key:0,class:"send-upload-area"},Tt={style:{"font-size":"12px",color:"#8c8c8c","margin-bottom":"4px"}},$t={style:{margin:"0"}},jt={key:0,style:{"margin-top":"8px",display:"flex","flex-wrap":"wrap",gap:"4px"}},Ut={class:"stats-content"},It={class:"stats-numbers"},Lt={class:"stat-item neutral"},Ht={class:"stat-value"},Et={class:"stat-item success"},Ft={class:"stat-value"},Nt={class:"stat-item error"},Bt={class:"stat-value"},At={class:"stat-item neutral"},Vt={class:"stat-value"},Jt={class:"toolbar"},Gt={class:"toolbar-row"},Wt={class:"toolbar-row"},qt={key:0,class:"multiline-text"},Qt=["onClick"],Kt=["onClick"],Xt=["onClick"],Zt=["src"],ea={key:1,class:"thumb-video"},ta={key:1,class:"thumb-placeholder"},aa={key:2,class:"media-count"},la={key:1,class:"no-media"},sa={class:"content-box"},na={class:"media-list"},oa={class:"content-box reasoning-box"},ia={class:"media-gallery-large"},ra={class:"media-preview-large"},ua=["src"],da=["src"],ca={key:1,class:"media-placeholder-large"},va={class:"media-status"},pa={key:0,class:"preview-text-content"},fa={key:1,class:"preview-image-content"},ma=["src"],ga={key:2,class:"preview-video-content"},ya=["src"],_a={__name:"request",setup(w){const u=mt(),g=p(!1),k=p([]),Y=p(0),E=p(1),K=p(50),f=p([]),z=p("all"),$=p(""),j=p(""),ke=p([]),U=p([]),be=p([]),F=p({total:0,success:0,failed:0,avgDuration:0}),ne=p(!1),d=p(null),oe=p(!1),I=p(!1),N=p(""),O=p("text"),X=p(""),Z=p({}),J=p([]),S=p(""),L=p(""),C=p([]),ie=p(!1),re=p(!0),Fe=bt(()=>{if(!S.value)return!1;const t=J.value.find(e=>e.id===S.value);return t?t.image_policy!=="forbidden":!1});let G=null;const ee=p(window.innerWidth<=768);let te=null;const ae={success:{color:"#52c41a",text:"成功",icon:Te},failed:{color:"#ff4d4f",text:"失败",icon:$e},pending:{color:"#faad14",text:"处理中",icon:je}},P=async()=>{g.value=!0;try{const t=new URLSearchParams({page:E.value,pageSize:K.value});z.value&&z.value!=="all"&&t.append("status",z.value),$.value&&t.append("model",$.value),j.value&&t.append("search",j.value),f.value&&f.value.length===2&&(t.append("startDate",f.value[0].format("YYYY-MM-DD")),t.append("endDate",f.value[1].format("YYYY-MM-DD")));const e=await fetch(`/admin/history?${t.toString()}`,{headers:u.getHeaders()});if(e.ok){const o=await e.json();k.value=o.items||[],Y.value=o.total||0,xe()}}catch{_.error("获取历史记录失败")}finally{g.value=!1}},xe=async()=>{for(const t of k.value)if(t.responseMedia&&t.responseMedia.length>0){const e=t.responseMedia[0];e.localPath&&e.status==="downloaded"&&await ue(e)}},le=async()=>{try{const t=new URLSearchParams;f.value&&f.value.length===2&&(t.append("startDate",f.value[0].format("YYYY-MM-DD")),t.append("endDate",f.value[1].format("YYYY-MM-DD")));const e=await fetch(`/admin/history/stats?${t.toString()}`,{headers:u.getHeaders()});e.ok&&(F.value=await e.json())}catch(t){console.error("获取统计失败",t)}},Me=async()=>{try{const t=await fetch("/admin/history/models",{headers:u.getHeaders()});t.ok&&(ke.value=await t.json())}catch(t){console.error("获取模型列表失败",t)}},Ce=async t=>{ne.value=!0,oe.value=!0;try{const e=await fetch(`/admin/history/${t.id}`,{headers:u.getHeaders()});if(e.ok&&(d.value=await e.json(),d.value.responseMedia))for(const o of d.value.responseMedia)o.localPath&&o.status==="downloaded"&&await ue(o)}catch{_.error("获取详情失败")}finally{oe.value=!1}},ue=async t=>{if(!t.localPath)return null;const e=t.localPath.split("/").pop(),o=e;if(Z.value[o])return Z.value[o];try{const x=await fetch(`/admin/history/media/${e}`,{headers:u.getHeaders()});if(x.ok){const fe=await x.blob(),W=URL.createObjectURL(fe);return Z.value[o]=W,W}}catch(x){console.error("获取媒体失败",x)}return null},se=t=>{if(!t||!t.localPath)return null;const e=t.localPath.split("/").pop();return Z.value[e]||null},Ne=async(t,e)=>{try{const o=await fetch(`/admin/history/${t}/retry-media`,{method:"POST",headers:{...u.getHeaders(),"Content-Type":"application/json"},body:JSON.stringify({mediaIndex:e})});if(o.ok)_.success("下载成功"),P(),d.value&&d.value.id===t&&Ce(d.value);else{const x=await o.json();_.error(x.message||"下载失败")}}catch{_.error("请求失败")}},De=t=>{Ie.confirm({title:"确认删除",content:`确定要删除这 ${t.length} 条记录吗?关联的媒体文件也会被删除。`,okText:"删除",okType:"danger",cancelText:"取消",async onOk(){try{(await fetch("/admin/history",{method:"DELETE",headers:{...u.getHeaders(),"Content-Type":"application/json"},body:JSON.stringify({ids:t})})).ok?(_.success("删除成功"),pe(),P(),le()):_.error("删除失败")}catch{_.error("请求失败")}}})},Be=()=>{if(!f.value||f.value.length!==2){_.warning("请先选择日期范围");return}Ie.confirm({title:"确认删除",content:`确定要删除 ${f.value[0].format("YYYY-MM-DD")}${f.value[1].format("YYYY-MM-DD")} 的所有记录吗?`,okText:"删除",okType:"danger",cancelText:"取消",async onOk(){try{const t=new URLSearchParams({startDate:f.value[0].format("YYYY-MM-DD"),endDate:f.value[1].format("YYYY-MM-DD")}),e=await fetch(`/admin/history?${t.toString()}`,{method:"DELETE",headers:u.getHeaders()});if(e.ok){const o=await e.json();_.success(`已删除 ${o.deleted} 条记录`),pe(),P(),le()}else _.error("删除失败")}catch{_.error("请求失败")}}})},Ae=t=>t?new Date(t).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"-",de=t=>t?t<1e3?`${t}ms`:`${(t/1e3).toFixed(1)}s`:"-",ce=(t,e=120)=>t?t.length>e?t.substring(0,e)+"...":t:"-",Ye=t=>t.responseMedia&&t.responseMedia.length>0,B=t=>Ye(t)?t.responseMedia[0]:null,Ve=[{title:"状态",dataIndex:"status",key:"status",width:70,align:"center"},{title:"Prompt",dataIndex:"prompt",key:"prompt",width:200},{title:"模型",dataIndex:"model_name",key:"model_name",width:150,ellipsis:!0},{title:"响应",key:"response",width:220},{title:"媒体",key:"media",width:180,align:"center"},{title:"时间",dataIndex:"created_at",key:"created_at",width:100,customRender:({value:t})=>Ae(t)},{title:"耗时",dataIndex:"duration_ms",key:"duration_ms",width:60,align:"right",customRender:({value:t})=>de(t)},{title:"",key:"action",width:100,align:"center",fixed:"right"}];ye([z,$,f],()=>{E.value=1,P(),le()}),ye(S,()=>{C.value=[]});let ve=null;ye(j,()=>{ve&&clearTimeout(ve),ve=setTimeout(()=>{E.value=1,P()},300)});const Je=t=>{E.value=t.current,K.value=t.pageSize,pe(),P()},Ge=()=>{P(),Me()},Oe=async t=>{I.value=!0,O.value="text",t.status==="failed"?N.value=t.error_message||"未知错误":N.value=t.response_text||"无响应"},We=async t=>{const e=B(t);if(e){if(e.type==="image")O.value="image";else if(e.type==="video")O.value="video";else{O.value="text",N.value=e.originalUrl||"无预览",I.value=!0;return}if(e.status==="downloaded"){const o=await ue(e);o?(X.value=o,I.value=!0):_.error("预览加载失败")}else N.value="媒体未下载或下载失败,请查看详情并重试下载",O.value="text",I.value=!0}},qe=()=>{I.value=!1,N.value="",X.value="",O.value="text"},Qe=(t,e)=>{U.value=t,be.value=e},Ke=()=>{if(U.value.length===0){_.warning("请先选择要删除的记录");return}De(U.value)},pe=()=>{U.value=[],be.value=[]},Xe=async()=>{try{const t=await fetch("/v1/models",{headers:u.getHeaders()});if(t.ok){const e=await t.json();J.value=e.data||[],J.value.length>0&&!S.value&&(S.value=J.value[0].id)}}catch(t){console.error("获取模型列表失败",t)}},Ze=t=>new Promise((e,o)=>{const x=new FileReader;x.readAsDataURL(t),x.onload=()=>e(x.result),x.onerror=o}),et=t=>["image/png","image/jpeg","image/gif","image/webp"].includes(t.type)?(C.value.length>=10&&_.error("最多上传 10 张图片"),!1):(_.error("仅支持 PNG, JPEG, GIF, WebP 格式"),!1),tt=async t=>{const e=t.file;if(e.status==="removed"){C.value=C.value.filter(o=>o.uid!==e.uid);return}try{const o=await Ze(e.originFileObj||e);C.value.push({uid:e.uid,name:e.name,base64:o})}catch{_.error("图片读取失败")}},Se=()=>{if(!S.value){_.warning("请选择模型");return}if(!L.value.trim()){_.warning("请输入提示词");return}let t;if(C.value.length>0){t=[{type:"text",text:L.value}];for(const o of C.value)t.push({type:"image_url",image_url:{url:o.base64}})}else t=L.value;const e={model:S.value,messages:[{role:"user",content:t}],stream:ie.value};re.value&&(e.reasoning=!0),fetch("/v1/chat/completions",{method:"POST",headers:{...u.getHeaders(),"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(()=>{}),_.success("请求已发送"),L.value="",C.value=[],lt(),setTimeout(()=>{ze(),Pe()},1e3)},at=t=>{const e=t.model_id||t.model_name;e&&(S.value=e),t.prompt&&(L.value=t.prompt),C.value=[],Se()},ze=async()=>{try{const t=new URLSearchParams({page:E.value,pageSize:K.value});z.value&&z.value!=="all"&&t.append("status",z.value),$.value&&t.append("model",$.value),j.value&&t.append("search",j.value),f.value&&f.value.length===2&&(t.append("startDate",f.value[0].format("YYYY-MM-DD")),t.append("endDate",f.value[1].format("YYYY-MM-DD")));const e=await fetch(`/admin/history?${t.toString()}`,{headers:u.getHeaders()});if(e.ok){const o=await e.json();k.value=o.items||[],Y.value=o.total||0,xe()}}catch{}},Pe=async()=>{try{const t=new URLSearchParams;f.value&&f.value.length===2&&(t.append("startDate",f.value[0].format("YYYY-MM-DD")),t.append("endDate",f.value[1].format("YYYY-MM-DD")));const e=await fetch(`/admin/history/stats?${t.toString()}`,{headers:u.getHeaders()});e.ok&&(F.value=await e.json())}catch{}},lt=()=>{G||(G=setInterval(()=>{ze(),Pe()},5e3))},st=()=>{G&&(clearInterval(G),G=null)};return gt(()=>{te=()=>{ee.value=window.innerWidth<=768},window.addEventListener("resize",te),P(),le(),Me(),Xe()}),yt(()=>{st(),te&&window.removeEventListener("resize",te)}),(t,e)=>{const o=h("a-select-option"),x=h("a-select"),fe=h("a-textarea"),W=h("a-checkbox"),R=h("a-button"),nt=h("a-upload-dragger"),H=h("a-tag"),me=h("a-card"),ot=h("a-range-picker"),A=h("a-divider"),it=h("a-input-search"),ge=h("a-tooltip"),rt=h("a-space"),ut=h("a-table"),V=h("a-descriptions-item"),dt=h("a-descriptions"),ct=h("a-spin"),vt=h("a-drawer"),pt=h("a-modal");return n(),r(b,null,[a(me,{title:"发送请求",bordered:!1,style:{"margin-bottom":"24px"}},{default:l(()=>[i("div",Yt,[i("div",Ot,[i("div",St,[e[10]||(e[10]=i("div",{style:{"font-size":"12px",color:"#8c8c8c","margin-bottom":"4px"}},"模型",-1)),a(x,{value:S.value,"onUpdate:value":e[0]||(e[0]=s=>S.value=s),style:{width:"100%"},size:"small",placeholder:"选择模型","show-search":""},{default:l(()=>[(n(!0),r(b,null,q(J.value,s=>(n(),M(o,{key:s.id,value:s.id},{default:l(()=>[c(v(s.id),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),i("div",zt,[e[11]||(e[11]=i("div",{style:{"font-size":"12px",color:"#8c8c8c","margin-bottom":"4px"}},"提示词",-1)),a(fe,{value:L.value,"onUpdate:value":e[1]||(e[1]=s=>L.value=s),placeholder:"输入提示词",rows:3,size:"small"},null,8,["value"])]),i("div",Pt,[a(W,{checked:ie.value,"onUpdate:checked":e[2]||(e[2]=s=>ie.value=s)},{default:l(()=>[...e[12]||(e[12]=[c("流式响应",-1)])]),_:1},8,["checked"]),a(W,{checked:re.value,"onUpdate:checked":e[3]||(e[3]=s=>re.value=s)},{default:l(()=>[...e[13]||(e[13]=[c("返回思考",-1)])]),_:1},8,["checked"]),a(R,{type:"primary",onClick:Se,disabled:!S.value},{icon:l(()=>[a(y(_t))]),default:l(()=>[e[14]||(e[14]=c(" 发送 ",-1))]),_:1},8,["disabled"])])]),Fe.value?(n(),r("div",Rt,[i("div",Tt," 附加图片 ("+v(C.value.length)+"/10) ",1),a(nt,{"file-list":[],multiple:!0,"before-upload":et,onChange:tt,accept:".png,.jpg,.jpeg,.gif,.webp","show-upload-list":!1},{default:l(()=>[i("p",$t,[a(y(ht),{style:{"font-size":"20px",color:"#1890ff"}})]),e[15]||(e[15]=i("p",{style:{"font-size":"12px",margin:"2px 0 0 0",color:"#8c8c8c"}}," 点击或拖拽上传图片 ",-1))]),_:1}),C.value.length>0?(n(),r("div",jt,[(n(!0),r(b,null,q(C.value,s=>(n(),M(H,{key:s.uid,closable:"",onClose:m=>C.value=C.value.filter(T=>T.uid!==s.uid)},{default:l(()=>[a(y(he)),c(" "+v(s.name.slice(0,15))+v(s.name.length>15?"...":""),1)]),_:2},1032,["onClose"]))),128))])):D("",!0)])):D("",!0)])]),_:1}),a(me,{title:"请求记录",bordered:!1},{extra:l(()=>[a(R,{type:"link",danger:"",size:"small",onClick:Be,disabled:!f.value||f.value.length!==2},{icon:l(()=>[a(y(_e))]),default:l(()=>[e[16]||(e[16]=c(" 删除所选范围 ",-1))]),_:1},8,["disabled"])]),default:l(()=>[i("div",Ut,[a(ot,{value:f.value,"onUpdate:value":e[4]||(e[4]=s=>f.value=s),format:"YYYY-MM-DD",placeholder:["开始日期","结束日期"],size:"small",class:"stats-date-picker"},null,8,["value"]),a(A,{type:"vertical",style:{height:"32px",margin:"0 16px"}}),i("div",It,[i("div",Lt,[a(y(Re)),i("span",Ht,v(F.value.total),1),e[17]||(e[17]=i("span",{class:"stat-label"},"总数",-1))]),i("div",Et,[a(y(Te)),i("span",Ft,v(F.value.success),1),e[18]||(e[18]=i("span",{class:"stat-label"},"成功",-1))]),i("div",Nt,[a(y($e)),i("span",Bt,v(F.value.failed),1),e[19]||(e[19]=i("span",{class:"stat-label"},"失败",-1))]),i("div",At,[a(y(je)),i("span",Vt,v(de(F.value.avgDuration)),1),e[20]||(e[20]=i("span",{class:"stat-label"},"平均耗时",-1))])])])]),_:1}),a(me,{bordered:!1,style:{"margin-top":"24px"}},{default:l(()=>[i("div",Jt,[i("div",Gt,[a(x,{value:z.value,"onUpdate:value":e[5]||(e[5]=s=>z.value=s),class:"toolbar-status-select",size:"small",placeholder:"状态"},{default:l(()=>[a(o,{value:"all"},{default:l(()=>[...e[21]||(e[21]=[c("全部状态",-1)])]),_:1}),a(o,{value:"success"},{default:l(()=>[...e[22]||(e[22]=[c("成功",-1)])]),_:1}),a(o,{value:"failed"},{default:l(()=>[...e[23]||(e[23]=[c("失败",-1)])]),_:1}),a(o,{value:"pending"},{default:l(()=>[...e[24]||(e[24]=[c("处理中",-1)])]),_:1})]),_:1},8,["value"]),a(x,{value:$.value,"onUpdate:value":e[6]||(e[6]=s=>$.value=s),class:"toolbar-model-select",size:"small",placeholder:"全部模型","allow-clear":"","show-search":""},{default:l(()=>[(n(!0),r(b,null,q(ke.value,s=>(n(),M(o,{key:s,value:s},{default:l(()=>[c(v(s),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),a(R,{size:"small",onClick:Ge},{icon:l(()=>[a(y(Ue))]),_:1}),U.value.length>0?(n(),M(R,{key:0,type:"primary",danger:"",size:"small",onClick:Ke},{icon:l(()=>[a(y(_e))]),default:l(()=>[c(" 删除选中 ("+v(U.value.length)+") ",1)]),_:1})):D("",!0)]),i("div",Wt,[a(it,{value:j.value,"onUpdate:value":e[7]||(e[7]=s=>j.value=s),placeholder:"搜索 Prompt 或响应内容",size:"small","allow-clear":"",style:{width:"100%"}},null,8,["value"])])]),a(ut,{columns:Ve,"data-source":k.value,loading:g.value,"row-selection":{selectedRowKeys:U.value,onChange:Qe,columnWidth:40},pagination:{current:E.value,pageSize:K.value,total:Y.value,showSizeChanger:!0,showQuickJumper:!0,showTotal:s=>`${s}`,pageSizeOptions:["20","50","100","200"]},"row-key":"id",size:"small",scroll:{x:1e3},onChange:Je},{bodyCell:l(({column:s,record:m})=>[s.key==="prompt"?(n(),r("div",qt,v(ce(m.prompt,120)),1)):s.key==="response"?(n(),r(b,{key:1},[m.status==="failed"?(n(),r("div",{key:0,class:"multiline-text error-text clickable",onClick:T=>Oe(m),title:"点击查看完整内容"},v(ce(m.error_message,120)||"错误"),9,Qt)):(n(),r("div",{key:1,class:"multiline-text response-text clickable",onClick:T=>Oe(m),title:"点击查看完整内容"},v(ce(m.response_text,120)||"-"),9,Kt))],64)):s.key==="media"?(n(),r(b,{key:2},[Ye(m)?(n(),r("div",{key:0,class:"media-thumb-cell",onClick:T=>We(m),title:"点击查看大图"},[B(m).status==="downloaded"?(n(),r(b,{key:0},[B(m).type==="image"?(n(),r("img",{key:0,src:se(B(m)),class:"thumb-img",loading:"lazy"},null,8,Zt)):B(m).type==="video"?(n(),r("div",ea,[a(y(Q))])):D("",!0)],64)):(n(),r("div",ta,[B(m).type==="image"?(n(),M(y(he),{key:0})):(n(),M(y(Q),{key:1}))])),m.responseMedia.length>1?(n(),r("span",aa," +"+v(m.responseMedia.length-1),1)):D("",!0)],8,Xt)):(n(),r("span",la,"-"))],64)):s.key==="status"?(n(),M(H,{key:3,color:ae[m.status]?.color||"#8c8c8c",size:"small"},{default:l(()=>[c(v(ae[m.status]?.text||m.status),1)]),_:2},1032,["color"])):s.key==="action"?(n(),M(rt,{key:4,size:0},{default:l(()=>[a(ge,{title:"重发"},{default:l(()=>[a(R,{type:"link",size:"small",onClick:T=>at(m)},{icon:l(()=>[a(y(we))]),_:1},8,["onClick"])]),_:2},1024),a(ge,{title:"详情"},{default:l(()=>[a(R,{type:"link",size:"small",onClick:T=>Ce(m)},{icon:l(()=>[a(y(wt))]),_:1},8,["onClick"])]),_:2},1024),a(ge,{title:"删除"},{default:l(()=>[a(R,{type:"link",size:"small",danger:"",onClick:T=>De([m.id])},{icon:l(()=>[a(y(_e))]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)):D("",!0)]),_:1},8,["data-source","loading","row-selection","pagination"])]),_:1}),a(vt,{open:ne.value,"onUpdate:open":e[8]||(e[8]=s=>ne.value=s),title:"请求详情",placement:"right",width:ee.value?"100%":700,"destroy-on-close":!0},{default:l(()=>[a(ct,{spinning:oe.value},{default:l(()=>[d.value?(n(),r(b,{key:0},[a(dt,{column:ee.value?1:2,size:"small",bordered:""},{default:l(()=>[a(V,{label:"请求 ID",span:2},{default:l(()=>[i("code",null,v(d.value.id),1)]),_:1}),a(V,{label:"时间"},{default:l(()=>[c(v(new Date(d.value.created_at).toLocaleString("zh-CN")),1)]),_:1}),a(V,{label:"状态"},{default:l(()=>[a(H,{color:ae[d.value.status]?.color},{default:l(()=>[c(v(ae[d.value.status]?.text||d.value.status),1)]),_:1},8,["color"])]),_:1}),a(V,{label:"模型",span:2},{default:l(()=>[c(v(d.value.model_name||d.value.model_id||"-"),1)]),_:1}),a(V,{label:"耗时"},{default:l(()=>[c(v(de(d.value.duration_ms)),1)]),_:1}),a(V,{label:"流式"},{default:l(()=>[c(v(d.value.isStreaming?"是":"否"),1)]),_:1})]),_:1},8,["column"]),a(A,{orientation:"left"},{default:l(()=>[...e[25]||(e[25]=[c("Prompt",-1)])]),_:1}),i("div",sa,v(d.value.prompt||"无"),1),d.value.inputImages&&d.value.inputImages.length>0?(n(),r(b,{key:0},[a(A,{orientation:"left"},{default:l(()=>[...e[26]||(e[26]=[c("输入图片",-1)])]),_:1}),i("div",na,[(n(!0),r(b,null,q(d.value.inputImages,(s,m)=>(n(),r("span",{key:m,class:"media-item"},[a(H,null,{default:l(()=>[c(v(s.split("/").pop()),1)]),_:2},1024)]))),128))])],64)):D("",!0),a(A,{orientation:"left"},{default:l(()=>[...e[27]||(e[27]=[c("响应内容",-1)])]),_:1}),i("div",{class:kt(["content-box",{"error-box":d.value.status==="failed"}])},[d.value.status==="failed"?(n(),r(b,{key:0},[c(v(d.value.error_message||"未知错误"),1)],64)):(n(),r(b,{key:1},[c(v(d.value.response_text||"无响应"),1)],64))],2),d.value.reasoning_content?(n(),r(b,{key:1},[a(A,{orientation:"left"},{default:l(()=>[...e[28]||(e[28]=[c("思考过程",-1)])]),_:1}),i("div",oa,v(d.value.reasoning_content),1)],64)):D("",!0),d.value.responseMedia&&d.value.responseMedia.length>0?(n(),r(b,{key:2},[a(A,{orientation:"left"},{default:l(()=>[c("媒体内容 ("+v(d.value.responseMedia.length)+")",1)]),_:1}),i("div",ia,[(n(!0),r(b,null,q(d.value.responseMedia,(s,m)=>(n(),r("div",{key:m,class:"media-card-large"},[i("div",ra,[s.status==="downloaded"&&se(s)?(n(),r(b,{key:0},[s.type==="image"?(n(),r("img",{key:0,src:se(s),alt:"生成图片"},null,8,ua)):s.type==="video"?(n(),r("video",{key:1,src:se(s),controls:""},null,8,da)):D("",!0)],64)):(n(),r("div",ca,[s.type==="image"?(n(),M(y(he),{key:0})):s.type==="video"?(n(),M(y(Q),{key:1})):(n(),M(y(Re),{key:2})),i("div",va,[s.status==="failed"?(n(),M(H,{key:0,color:"red"},{default:l(()=>[...e[29]||(e[29]=[c("下载失败",-1)])]),_:1})):s.status==="external"?(n(),M(H,{key:1,color:"blue"},{default:l(()=>[...e[30]||(e[30]=[c("外部链接",-1)])]),_:1})):s.status==="pending"?(n(),M(H,{key:2,color:"orange"},{default:l(()=>[...e[31]||(e[31]=[c("待下载",-1)])]),_:1})):D("",!0)]),s.status==="failed"?(n(),M(R,{key:3,type:"primary",size:"small",onClick:T=>Ne(d.value.id,m)},{icon:l(()=>[a(y(Ue))]),default:l(()=>[e[32]||(e[32]=c(" 重试下载 ",-1))]),_:1},8,["onClick"])):D("",!0)]))])]))),128))])],64)):D("",!0)],64)):D("",!0)]),_:1},8,["spinning"])]),_:1},8,["open","width"]),a(pt,{open:I.value,"onUpdate:open":e[9]||(e[9]=s=>I.value=s),footer:null,width:ee.value?"95%":O.value==="image"||O.value==="video"?"90%":"70%",centered:"",onCancel:qe},{title:l(()=>[...e[33]||(e[33]=[i("span",null,"快速预览",-1)])]),default:l(()=>[O.value==="text"?(n(),r("div",pa,v(N.value),1)):O.value==="image"?(n(),r("div",fa,[i("img",{src:X.value,alt:"预览图片"},null,8,ma)])):O.value==="video"?(n(),r("div",ga,[i("video",{src:X.value,controls:"",autoplay:""},null,8,ya)])):D("",!0)]),_:1},8,["open","width"])],64)}}},wa=ft(_a,[["__scopeId","data-v-43d844d5"]]);export{wa as default};