PageSourceSearch

https://nickz.ai/assets/js/index-BAA0vFJ1.js

js nickz.ai collected 2026-10-05 14:20:19 UTC 21,844 bytes, 1 lines download raw bytes

1import{r as e,j as t}from"./vendor-react-DejgYtBM.js";import{i as s,f as a,P as n,z as i,j as l,B as r,G as o,m as c,T as d,M as m,o as p,k as u,v as h,D as x,H as g,E as j,J as y,K as f}from"./vendor-semi-D8d7bTtM.js";import{u as _,a as w,Z as b,$ as v,a0 as k,a1 as z,a2 as S,a3 as C,A as N,s as D,a4 as I,Y as $,B as T,w as O,a5 as P}from"./index-BeIIFw6E.js";import{C as M}from"./CardTable-Cq0lqlnD.js";import{w as R,T as F,q as L,R as B,e as K,x as E}from"./vendor-icons-EJvJ5X-w.js";import"./vendor-motion-Chfy_MiU.js";import"./useIsMobile-D_kfVI0u.js";const{Text:W}=a,A=e=>{const t=new Date(e);return t.setHours(0,0,0,0),t},q=()=>{const{t:q}=_(),Y=w(),[J,H]=e.useState(!1),[U,V]=e.useState([]),[G,Z]=e.useState({currentPage:1,pageSize:b,total:0}),[Q,X]=e.useState(!1),[ee,te]=e.useState("user_consumption"),[se,ae]=e.useState(null),[ne,ie]=e.useState([]),[le,re]=e.useState(!1),[oe,ce]=e.useState(null),[de,me]=e.useState("default"),[pe,ue]=e.useState(!1),[he,xe]=e.useState(!1),[ge,je]=e.useState([]),[ye,fe]=e.useState(!1),[_e,we]=e.useState([]),[be,ve]=e.useState(!1),[ke,ze]=e.useState("tasks"),[Se,Ce]=e.useState("all"),[Ne,De]=e.useState("all"),[Ie,$e]=e.useState(!0),[Te,Oe]=e.useState(10),Pe=e.useMemo(()=>(e=>[{label:e("最近24小时"),getRange:()=>{const e=new Date;return[new Date(e.getTime()-864e5),e]}},{label:e("最近7天"),getRange:()=>{const e=new Date,t=A(e);return t.setDate(t.getDate()-6),[t,e]}},{label:e("最近30天"),getRange:()=>{const e=new Date,t=A(e);return t.setDate(t.getDate()-29),[t,e]}},{label:e("本月"),getRange:()=>{const e=new Date;return[new Date(e.getFullYear(),e.getMonth(),1),new Date]}},{label:e("上月"),getRange:()=>{const e=new Date;return[new Date(e.getFullYear(),e.getMonth()-1,1),new Date(e.getFullYear(),e.getMonth(),0,23,59,59)]}}])(q),[q]),Me=e.useRef(null),Re=v()||k()||z()||S(),Fe=!Re,Le=v()||k()||C(),Be=e.useCallback(async e=>{if(!e||e<=0)return ie([]),void ce(null);re(!0);try{const t=await N.get("/api/export/consumption/user-tokens",{params:{user_id:e}}),{success:s,data:a,message:n}=t.data;s?ie(a||[]):(D(n||q("获取用户令牌列表失败")),ie([]))}catch(t){D(q("获取用户令牌列表失败: {{message}}",{message:t.message})),ie([])}finally{re(!1)}},[q]),Ke=e.useCallback(async()=>{fe(!0);try{const e=await N.get("/api/export/consumption/channels"),{success:t,data:s,message:a}=e.data;t?je(s||[]):(D(a||q("获取渠道列表失败")),je([]))}catch(e){D(q("获取渠道列表失败: {{message}}",{message:e.message})),je([])}finally{fe(!1)}},[q]),Ee=e.useCallback(async()=>{ve(!0);try{const e=await N.get("/api/export/consumption/enterprises"),{success:t,data:s,message:a}=e.data;t?we(s||[]):(D(a||q("获取企业列表失败")),we([]))}catch(e){D(q("获取企业列表失败: {{message}}",{message:e.message})),we([])}finally{ve(!1)}},[q]);e.useEffect(()=>{Re&&(Ke(),Ee())},[Ke,Ee,Re]);const We=e.useCallback(async()=>{Me.current&&Me.current.abort();const e=new AbortController;Me.current=e,H(!0);try{const t={page:G.currentPage,page_size:G.pageSize};"logs"===ke?t.status="failed":("all"!==Se&&(t.status=Se),"all"!==Ne&&(t.task_type=Ne));const s=await N.get("/api/export/consumption/tasks",{params:t,signal:e.signal}),{success:a,data:n,message:i}=s.data;a?(V(n.tasks||[]),Z(e=>({...e,total:n.total||0}))):D(i||q("加载任务列表失败"))}catch(t){if("CanceledError"===t.name||"AbortError"===t.name)return;D(q("加载任务列表失败: {{message}}",{message:t.message}))}finally{Me.current===e&&H(!1)}},[G.currentPage,G.pageSize,ke,Se,Ne,q]);e.useEffect(()=>{We()},[We]),I(()=>{Oe(e=>e<=1?(We(),10):e-1)},1e3,{enabled:Ie,executeOnResume:!1});const Ae=e=>{if(0===e)return"0 B";const t=["B","KB","MB","GB"];let s=e,a=0;for(;s>=1024&&a<t.length-1;)s/=1024,a++;return`${s.toFixed(2)} ${t[a]}`},qe=e=>{const t=Date.now()/1e3;return e.expire_at<t},Ye=e=>{if(te(e),X(!0),"user_consumption"===e&&Fe){const e=P();e>0&&Be(e)}},Je=()=>{X(!1),se&&se.reset(),ie([]),ce(null),me("default"),ue(!1),xe(!1),te("user_consumption")},He=async e=>{try{const t=await N.delete(`/api/export/consumption/task/${e}`),{success:s,message:a}=t.data;s?(O(q("删除成功")),We()):D(a||q("删除失败"))}catch(t){D(q("删除失败: {{message}}",{message:t.message}))}},Ue=[{title:q("ID"),dataIndex:"id",key:"id",width:60},{title:q("任务类型"),dataIndex:"task_type",key:"task_type",width:110,render:e=>{const a={user_consumption:{color:"blue",text:q("用户消费")},channel_statistics:{color:"purple",text:q("渠道统计")},enterprise_consumption:{color:"teal",text:q("企业消费")},detail_log:{color:"orange",text:q("详细日志")}}[e]||{color:"grey",text:e};return t.jsx(s,{color:a.color,size:"small",children:a.text})}},{title:q("导出对象"),dataIndex:"target_user",key:"target_user",width:130,render:(e,a)=>{if("channel_statistics"===a.task_type)try{const e=JSON.parse(a.channel_ids||"[]");if(0===e.length)return"-";const s=e.map(e=>{const t=ge.find(t=>
1t.id===e);return t?`${e} - ${t.name}`:`${e}`});return 1===e.length?t.jsx(W,{type:"secondary",children:s[0]}):t.jsx(W,{type:"secondary",children:s.join(", ")})}catch{return"-"}if("enterprise_consumption"===a.task_type)try{const e=JSON.parse(a.enterprise_ids||"[]");if(0===e.length)return"-";const s=e.map(e=>{const t=_e.find(t=>t.ep_cert_no===e);return t?t.ep_cert_name:e});return t.jsx(W,{type:"secondary",children:s.join(", ")})}catch{return"-"}return a.group_by_key?t.jsx(s,{color:"purple",size:"small",children:q("按Key分组")}):0===e?t.jsx(s,{color:"cyan",size:"small",children:q("全部用户")}):t.jsx(W,{children:q("用户 {{id}}",{id:e})})}},{title:q("时间范围"),dataIndex:"start_time",key:"start_time",width:180,render:(e,s)=>t.jsxs("div",{className:"text-xs",children:[t.jsx("div",{children:$(s.start_time)}),t.jsxs("div",{className:"text-gray-400",children:[q("至")," ",$(s.end_time)]})]})},{title:q("状态"),dataIndex:"status",key:"status",width:100,render:(e,a)=>{const l={pending:{color:"blue",text:q("等待处理")},processing:{color:"orange",text:q("处理中")},completed:{color:"green",text:q("已完成")},failed:{color:"red",text:q("失败")},expired:{color:"grey",text:q("已过期")}}[e]||{color:"grey",text:e};if("processing"===e){const e={querying:q("查询数据"),writing:q("写入文件"),uploading:q("上传文件")},i="number"==typeof a.progress&&a.progress>0?a.progress:0,r=e[a.phase]||q("处理中"),o=a.total_units>0;return t.jsxs("div",{className:"flex flex-col gap-1",style:{minWidth:90},children:[t.jsx(s,{color:l.color,size:"small",children:l.text}),i>0&&t.jsx(n,{percent:i,size:"small",style:{width:80},showInfo:!0,format:e=>`${e}%`}),t.jsxs(W,{size:12,type:"tertiary",ellipsis:{showTooltip:!0},style:{maxWidth:90},children:[r,o?` ${a.processed_units}/${a.total_units}`:""]})]})}return"failed"===e&&a.error_msg?t.jsxs("div",{className:"flex flex-col gap-1",style:{maxWidth:160},children:[t.jsx(s,{color:l.color,size:"small",children:l.text}),t.jsx(i,{content:a.error_msg,children:t.jsx(W,{type:"danger",size:"small",ellipsis:{showTooltip:!1,rows:2},style:{maxWidth:160},children:a.error_msg})})]}):t.jsx(s,{color:l.color,size:"small",children:l.text})}},{title:q("记录/大小"),dataIndex:"record_count",key:"record_count",width:120,render:(e,s)=>"processing"===s.status?s.record_count>0?t.jsx("div",{className:"text-xs",children:t.jsxs("div",{children:[s.record_count.toLocaleString()," ",q("条")]})}):"-":"completed"!==s.status?"-":t.jsxs("div",{className:"text-xs",children:[t.jsxs("div",{children:[(e||0).toLocaleString()," ",q("条")]}),s.file_size>0&&t.jsx("div",{className:"text-gray-400",children:Ae(s.file_size)})]})},{title:q("有效期"),dataIndex:"expire_at",key:"expire_at",width:100,render:(e,a)=>{const i=(e=>{if("completed"!==e.status)return null;const t=Date.now()/1e3,s=e.expire_at-t;return s<=0?null:{minutes:Math.floor(s/60),seconds:Math.floor(s%60),total:s}})(a);if(!i)return"completed"===a.status?t.jsx(s,{color:"red",size:"small",children:q("已过期")}):"-";const{minutes:l,seconds:r,total:o}=i,c=Math.max(0,o/3600*100);return t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(W,{size:14,children:l>0?q("{{minutes}}分{{seconds}}秒",{minutes:l,seconds:r}):q("{{seconds}} 秒",{seconds:r})}),t.jsx(n,{percent:c,size:"small",style:{width:60},showInfo:!1,stroke:c<20?"hsl(var(--destructive))":void 0})]})}},{title:q("创建时间"),dataIndex:"created_at",key:"created_at",width:160,render:e=>t.jsx(W,{size:14,children:$(e)})},{title:"",dataIndex:"operate",key:"operate",width:150,render:(e,s)=>t.jsxs(l,{spacing:4,children:["completed"===s.status&&!qe(s)&&t.jsx(i,{content:q("文件已生成,请尽快下载。文件可能会在一段时间后自动清理。"),children:t.jsx(r,{theme:"solid",type:"primary",size:"small",icon:t.jsx(R,{size:16}),onClick:()=>(async e=>{if(qe(e))D(q("文件已过期,无法下载"));else try{T(q("开始下载文件..."));const t=await N.get(`/api/export/consumption/download/${e.id}`,{responseType:"blob"}),s=window.URL.createObjectURL(new Blob([t.data])),a=document.createElement("a");a.href=s,a.setAttribute("download",e.file_name),document.body.appendChild(a),a.click(),a.remove(),window.URL.revokeObjectURL(s),O(q("文件下载成功"))}catch(t){D(q("下载文件失败: {{message}}",{message:t.message}))}})(s),children:q("下载")})}),"processing"===s.status?t.jsx(o,{title:q("取消并删除此任务吗?"),content:q("该任务正在导出中,删除将停止正在进行的导出并释放资源,且无法恢复"),onConfirm:()=>He(s.id),children:t.jsx(r,{type:"warning",theme:"solid",size:"small",children:q("取消导出")})}):t.jsx(i,{content:q("删除"),children:t.jsx(o,{title:q("确定删除此任务吗?"),content:q("删除后将无法恢复"),onConfirm:()=>He(s.id),children:t.jsx(r,{type:"danger",size:"small",icon:t.jsx(F,{size:16})})})})]})}],Ve=e=>Ue.find(t=>t.key===e),Ge=[Ve("id"),Ve("task_type"),Ve("target_user"),Ve("start_time"),{title:q("失败原因"),dataIndex:"error_msg",key:"error_msg",render:e=>e?t.jsx(i,{content:e,children:t.jsx(W,{type:"danger",size:"small",ellipsis:{showTooltip:!1,rows:3},style:{maxWidth:360,whiteSpace:"pre-wrap"},children:e})}):t.jsx(W,{type:"tertiary",size:"small",children:q("未知原因")})},{title:q("创建时间"),dataIndex:"created_at",key:"created_at",width:160,render:e=>t.jsx(W,{size:14,children:$(e)})},{title:"",dataIndex:"operate",key:"operate",width:80,render:(e,s)=>t.jsx(i,{content:q("删除"),children:t.jsx(o,{title:q("确定删除此任务吗?"),content:q("删除后将无法恢复"),onConfirm:()=>He(s.id),children:t.jsx(r,{type:"danger",size:"small",icon:t.jsx(F,{size:16})})})})}
1].filter(Boolean),Ze={currentPage:G.currentPage,pageSize:G.pageSize,total:G.total,onPageChange:e=>{Z(t=>({...t,currentPage:e}))},onPageSizeChange:e=>{Z(t=>({...t,pageSize:e,currentPage:1}))},pageSizeOpts:[10,20,50],showSizeChanger:!0,formatPageText:e=>q("第 {{start}} - {{end}} 条,共 {{total}} 条",{start:e.currentStart,end:e.currentEnd,total:G.total})};return t.jsxs("div",{className:"px-2",children:[t.jsx(c,{className:"!rounded-2xl",shadows:"always",bordered:!1,children:t.jsxs(d,{type:"line",activeKey:ke,onChange:e=>{e!==ke&&(ze(e),Z(e=>({...e,currentPage:1,total:0})),Oe(10))},children:[t.jsxs(d.TabPane,{tab:q("导出任务"),itemKey:"tasks",children:[t.jsxs("div",{className:"flex flex-col w-full",children:[t.jsxs("div",{className:"flex items-center justify-between mb-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Title,{heading:5,style:{margin:0},children:q("消费清单导出")}),t.jsx(s,{color:"blue",size:"small",children:q("共 {{count}} 个任务",{count:G.total})})]}),t.jsxs("div",{className:"flex items-center gap-2",children:[Ie&&t.jsx(i,{content:q("{{seconds}}秒后自动刷新",{seconds:Te}),children:t.jsxs(W,{size:14,type:"tertiary",className:"hidden md:inline cursor-default",children:[Te,"s"]})}),t.jsx(r,{size:"small",type:"tertiary",icon:t.jsx(B,{size:16,className:J?"animate-spin":""}),onClick:()=>{We(),Oe(10)}})]})]}),t.jsx(W,{type:"tertiary",size:14,className:"mb-3",children:q("导出的文件有效期为1小时,过期后将自动清理,请及时下载")}),t.jsx(x,{margin:"12px"}),t.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-3",children:[t.jsxs("div",{className:"flex flex-wrap items-center gap-2 w-full md:w-auto",children:[t.jsxs(u,{size:"small",value:Ne,onChange:e=>{De(e),Z(e=>({...e,currentPage:1,total:0}))},style:{width:Y?"100%":130},prefix:t.jsx(W,{size:14,type:"tertiary",children:q("类型")}),children:[t.jsx(u.Option,{value:"all",children:q("全部类型")}),t.jsx(u.Option,{value:"user_consumption",children:q("用户消费")}),Re&&t.jsx(u.Option,{value:"channel_statistics",children:q("渠道统计")}),Re&&t.jsx(u.Option,{value:"enterprise_consumption",children:q("企业消费")})]}),t.jsxs(u,{size:"small",value:Se,onChange:e=>{Ce(e),Z(e=>({...e,currentPage:1,total:0}))},style:{width:Y?"100%":130},prefix:t.jsx(W,{size:14,type:"tertiary",children:q("状态")}),children:[t.jsx(u.Option,{value:"all",children:q("全部状态")}),t.jsx(u.Option,{value:"pending",children:q("等待处理")}),t.jsx(u.Option,{value:"processing",children:q("处理中")}),t.jsx(u.Option,{value:"completed",children:q("已完成")}),t.jsx(u.Option,{value:"failed",children:q("失败")})]})]}),t.jsx("div",{className:"flex items-center gap-2 w-full md:w-auto",children:t.jsx(g,{trigger:"click",position:"bottomRight",render:t.jsxs(g.Menu,{children:[t.jsx(g.Item,{onClick:()=>Ye("user_consumption"),children:q("用户消费清单")}),Re&&t.jsx(g.Item,{onClick:()=>Ye("channel_statistics"),children:q("渠道统计报表")}),Re&&t.jsx(g.Item,{onClick:()=>Ye("enterprise_consumption"),children:q("企业消费清单")})]}),children:t.jsxs(r,{size:"small",theme:"solid",type:"primary",icon:t.jsx(E,{size:16}),className:"w-full md:w-auto",children:[q("创建导出任务"),t.jsx(K,{size:16,style:{marginLeft:4}})]})})})]})]}),t.jsx(M,{columns:Ue,dataSource:U,pagination:Ze,loading:J,rowKey:"id",size:"middle",empty:t.jsx(j,{image:t.jsx(f,{style:{width:150,height:150}}),darkModeImage:t.jsx(y,{style:{width:150,height:150}}),description:q("all"!==Se||"all"!==Ne?"没有符合筛选条件的任务":"暂无导出任务,点击上方按钮创建"),style:{padding:60}})})]}),t.jsxs(d.TabPane,{tab:q("导出日志列表"),itemKey:"logs",children:[t.jsxs("div",{className:"flex flex-col w-full",children:[t.jsxs("div",{className:"flex items-center justify-between mb-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(a.Title,{heading:5,style:{margin:0},children:q("导出日志列表")}),t.jsx(s,{color:"red",size:"small",children:q("共 {{count}} 个失败任务",{count:G.total})})]}),t.jsx(r,{size:"small",type:"tertiary",icon:t.jsx(B,{size:16,className:J?"animate-spin":""}),onClick:()=>We()})]}),t.jsx(W,{type:"tertiary",size:14,className:"mb-3",children:q("记录导出失败的任务及原因;长时间未完成(服务重启/查询超时)的卡死任务会被自动终止并在此列出,可重新发起导出")}),t.jsx(x,{margin:"12px"})]}),t.jsx(M,{columns:Ge,dataSource:U,pagination:Ze,loading:J,rowKey:"id",size:"middle",empty:t.jsx(j,{image:t.jsx(f,{style:{width:150,height:150}}),darkModeImage:t.jsx(y,{style:{width:150,height:150}}),description:q("暂无失败的导出任务"),style:{padding:60}})})]})]})}),t.jsx(m,{title:q("channel_statistics"===ee?"创建渠道统计导出":"enterprise_consumption"===ee?"创建企业消费导出":"创建用户消费导出"),visible:Q,onCancel:Je,onOk:()=>
1se&&se.submitForm(),okText:q("创建任务"),cancelText:q("取消"),width:Y?"calc(100vw - 16px)":560,bodyStyle:Y?{maxHeight:"calc(100dvh - 200px)",overflowY:"auto",WebkitOverflowScrolling:"touch"}:void 0,...Y?{footer:t.jsxs("div",{className:"flex flex-col gap-2 w-full",style:{paddingBottom:"max(8px, env(safe-area-inset-bottom))"},children:[t.jsx(r,{block:!0,onClick:Je,children:q("取消")}),t.jsx(r,{block:!0,theme:"solid",type:"primary",onClick:()=>se&&se.submitForm(),children:q("创建任务")})]})}:{},closeOnEsc:!0,children:t.jsxs(p,{getFormApi:e=>ae(e),onSubmit:async e=>{try{if(new Date(e.start_time).getTime()/1e3>=new Date(e.end_time).getTime()/1e3)return void D(q("开始时间必须小于结束时间"));if("user_consumption"===ee||"enterprise_consumption"===ee||"channel_statistics"===ee){const t=new Date(e.start_time);if(t.setMonth(t.getMonth()+2),new Date(e.end_time).getTime()>t.getTime())return void D(q("导出时间跨度不能超过 2 个月,请缩小时间范围后重试"))}const t=new FormData;if(t.append("task_type",ee),"channel_statistics"===ee){if(!e.channel_ids||0===e.channel_ids.length)return void D(q("请至少选择一个渠道"));t.append("channel_ids",JSON.stringify(e.channel_ids))}else if("enterprise_consumption"===ee){if(!e.ep_cert_nos||0===e.ep_cert_nos.length)return void D(q("请至少选择一个企业"));t.append("ep_cert_nos",JSON.stringify(e.ep_cert_nos))}else{const s=Fe?P():e.user_id||0;t.append("user_id",String(s||0)),t.append("token_id",String(oe||0)),t.append("export_format",Le?de:"default"),t.append("group_by_key",pe&&!oe?"true":"false"),t.append("group_by_day",he?"true":"false")}const s=e=>{const t=new Date(e),s=e=>String(e).padStart(2,"0");return`${t.getFullYear()}-${s(t.getMonth()+1)}-${s(t.getDate())} ${s(t.getHours())}:${s(t.getMinutes())}:${s(t.getSeconds())}`};t.append("start_time",s(e.start_time)),t.append("end_time",s(e.end_time));const a=await N.post("/api/export/consumption/task",t),{success:n,message:i}=a.data;n?(O(q("导出任务创建成功,正在后台处理...")),Je(),We()):D(i||q("创建任务失败"))}catch(t){D(q("创建任务失败: {{message}}",{message:t.message}))}},labelPosition:Y?"top":"left",labelAlign:Y?"left":"right",...Y?{}:{labelWidth:100},children:[t.jsx(p.Slot,{label:q("快捷选择"),children:t.jsx("div",{className:"flex flex-wrap gap-1",children:Pe.map(e=>t.jsx(r,{size:"small",type:"tertiary",onClick:()=>(e=>{if(!se)return;const[t,s]=e.getRange();se.setValue("start_time",t),se.setValue("end_time",s)})(e),children:e.label},e.label))})}),t.jsx(p.DatePicker,{field:"start_time",label:q("开始时间"),type:"dateTime",placeholder:q("请选择开始时间"),style:{width:"100%"},rules:[{required:!0,message:q("请选择开始时间")}]}),t.jsx(p.DatePicker,{field:"end_time",label:q("结束时间"),type:"dateTime",placeholder:q("请选择结束时间"),style:{width:"100%"},rules:[{required:!0,message:q("请选择结束时间")}]}),"channel_statistics"===ee?t.jsxs(t.Fragment,{children:[t.jsx(p.Select,{field:"channel_ids",label:q("选择渠道"),placeholder:q("请选择要导出的渠道"),multiple:!0,filter:!0,maxTagCount:3,style:{width:"100%"},loading:ye,optionList:ge.map(e=>({value:e.id,label:`${e.id} - ${e.name}${1!==e.status?" [已禁用]":""}`})),rules:[{required:!0,message:q("请至少选择一个渠道")}]}),t.jsx(p.Slot,{label:" ",children:t.jsx(W,{type:"tertiary",size:14,children:q("按渠道和模型统计消费数据,生成包含汇总表和各渠道模型明细的Excel文件")})})]}):"enterprise_consumption"===ee?t.jsxs(t.Fragment,{children:[t.jsx(p.Select,{field:"ep_cert_nos",label:q("选择企业"),placeholder:q("请选择要导出的企业"),multiple:!0,filter:!0,maxTagCount:3,style:{width:"100%"},loading:be,optionList:_e.map(e=>({value:e.ep_cert_no,label:`${e.ep_cert_name}(${e.ep_cert_no})- ${e.user_count} 个用户`})),rules:[{required:!0,message:q("请至少选择一个企业")}],emptyContent:q("暂无已认证企业")}),t.jsx(p.Slot,{label:" ",children:t.jsx(W,{type:"tertiary",size:14,children:q("按企业实名认证导出消费数据,每个企业生成一个独立Sheet,包含该企业所有关联用户的消费记录")})})]}):t.jsxs(t.Fragment,{children:[!Fe&&t.jsx(p.Input,{field:"user_id",label:q("用户 ID"),placeholder:q("留空表示导出所有用户"),type:"number",style:Y?{width:"100%"}:void 0,onChange:e=>{const t=parseInt(e,10);t>0?Be(t):(ie([]),ce(null))},rules:[{validator:(e,t)=>
1!(t&&t<0)||q("用户ID必须大于0")}]}),t.jsx(p.Slot,{label:q("选择令牌"),children:t.jsx(u,{placeholder:q("留空表示导出该用户所有令牌"),style:{width:"100%"},filter:!0,showClear:!0,loading:le,value:oe,onChange:e=>{ce(e),e&&ue(!1)},disabled:0===ne.length,optionList:ne.map(e=>({value:e.id,label:`${e.name} (ID: ${e.id})`})),emptyContent:q(Fe?"暂无令牌":"请先输入用户ID")})}),Le&&t.jsxs(p.Slot,{label:q("模板格式"),children:[t.jsx(u,{style:{width:"100%"},value:de,onChange:me,optionList:[{value:"default",label:q("默认模板")},{value:"cache",label:q("缓存模板")}]}),"cache"===de&&t.jsx("div",{className:"mt-1",children:t.jsx(W,{type:"tertiary",size:14,children:q("缓存模板列:日期、模型、输入tokens、输出tokens、5m缓存创建、1h缓存创建、缓存命中、平台额度")})})]}),t.jsxs(p.Slot,{label:q("导出选项"),children:[t.jsxs(h,{checked:pe,disabled:!!oe,onChange:e=>{const t=e.target.checked;ue(t),t&&xe(!1)},children:[q("按Key分组导出(每个Key一个Sheet)"),t.jsx(i,{content:q("数据量较大时不建议使用,可能导致导出超时或文件过大"),position:"right",children:t.jsx(L,{size:14,style:{marginLeft:4,verticalAlign:"middle",color:"var(--semi-color-text-2)",cursor:"pointer"}})})]}),oe&&t.jsx("div",{className:"mt-1",children:t.jsx(W,{type:"tertiary",size:14,children:q("选择单个令牌时不可用")})}),t.jsx("div",{className:"mt-1",children:t.jsx(h,{checked:he,onChange:e=>{const t=e.target.checked;xe(t),t&&ue(!1)},children:q("按日汇总导出(仅生成每日汇总,不含明细)")})})]}),t.jsx(p.Slot,{label:" ",children:t.jsx(W,{type:"tertiary",size:14,children:q("导出文件包含消费记录的输入token、输出token、消费金额等信息,末尾附带汇总统计")})})]})]})})]})};export{q as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.