PageSourceSearch

https://nickz.ai/assets/js/index-B-xm44q-.js

js nickz.ai collected 2026-10-05 14:20:08 UTC 22,542 bytes, 1 lines download raw bytes

1import{r as e,j as t}from"./vendor-react-DejgYtBM.js";import{u as s,a as i,aH as a,K as l,A as n,W as r,s as d,N as c,w as o,aJ as m,Y as h,v as x,Z as u}from"./index-BeIIFw6E.js";import{W as p,l as j,o as y,m as g,A as w,f,R as v,C as b,j as C,B as _,i as k,M as z,aE as I,a1 as N,D as S,H as T,y as $,Q as q,E as R,J as D,K as Q}from"./vendor-semi-D8d7bTtM.js";import{af as A,u as M,bB as P,ba as E,b9 as K,bE as L,X as V}from"./vendor-icons-EJvJ5X-w.js";import{u as B}from"./useTableCompactMode-DWLN7NUj.js";import{C as F}from"./CardTable-Cq0lqlnD.js";import"./vendor-motion-Chfy_MiU.js";import"./useIsMobile-D_kfVI0u.js";const{Text:O,Title:U}=f,W=h=>{const{t:x}=s(),u=void 0!==h.editingRedemption.id,[f,I]=e.useState(u),N=i(),S=e.useRef(null),T=()=>{h.handleClose()};return e.useEffect(()=>{S.current&&(u?(async()=>{I(!0);let e=await n.get(`/api/redemption/${h.editingRedemption.id}`);const{success:t,message:s,data:i}=e.data;t?(0===i.expired_time?i.expired_time=null:i.expired_time=new Date(1e3*i.expired_time),i.quota=r(i.quota),S.current?.setValues({name:"",quota:1,count:1,expired_time:null,...i})):d(s),I(!1)})():S.current.setValues({name:"",quota:1,count:1,expired_time:null}))},[h.editingRedemption.id]),t.jsx(t.Fragment,{children:t.jsx(p,{placement:u?"right":"left",title:t.jsxs(C,{children:[u?t.jsx(k,{color:"blue",shape:"circle",children:x("更新")}):t.jsx(k,{color:"green",shape:"circle",children:x("新建")}),t.jsx(U,{heading:4,className:"m-0",children:x(u?"更新兑换码信息":"创建新的兑换码")})]}),bodyStyle:{padding:"0"},visible:h.visiable,width:N?"100%":600,footer:t.jsx("div",{className:"flex justify-end bg-white",children:t.jsxs(C,{children:[t.jsx(_,{theme:"solid",onClick:()=>S.current?.submitForm(),icon:t.jsx(P,{size:16}),loading:f,children:x("提交")}),t.jsx(_,{theme:"light",type:"primary",onClick:T,icon:t.jsx(E,{size:16}),children:x("取消")})]})}),closeIcon:null,onCancel:()=>T(),children:t.jsx(j,{spinning:f,children:t.jsx(y,{initValues:{name:"",quota:1,count:1,expired_time:null},getFormApi:e=>S.current=e,onSubmit:async e=>{let s=e.name;u||s&&""!==s||(s=c(l(e.quota))),I(!0);let i,a={...e};a.count=parseInt(a.count)||0,a.quota=parseInt(l(a.quota))||0,a.name=s,a.expired_time?a.expired_time=Math.floor(a.expired_time.getTime()/1e3):a.expired_time=0,i=u?await n.put("/api/redemption/",{...a,id:parseInt(h.editingRedemption.id)}):await n.post("/api/redemption/",{...a});const{success:r,message:p,data:j}=i.data;if(r?u?(o(x("兑换码更新成功!")),h.refresh(),h.handleClose()):(o(x("兑换码创建成功")+"!"),h.refresh(),S.current?.setValues({name:"",quota:1,count:1,expired_time:null}),h.handleClose()):d(p),!u&&j){let e="";for(let t=0;t<j.length;t++)e+=j[t]+"\n";z.confirm({title:x("兑换码创建成功"),content:t.jsxs("div",{children:[t.jsx("p",{children:x("兑换码创建成功,是否下载兑换码?")}),t.jsx("p",{children:x("兑换码将以文本文件的形式下载,文件名为兑换码的名称。")})]}),onOk:()=>{m(e,`${a.name}.txt`)}})}I(!1)},children:({values:e})=>t.jsxs("div",{className:"p-2",children:[t.jsxs(g,{className:"!rounded-2xl shadow-sm border-0 mb-6",children:[t.jsxs("div",{className:"flex items-center mb-2",children:[t.jsx(w,{size:14,color:"blue",className:"mr-2 shadow-md",children:t.jsx(A,{size:16})}),t.jsxs("div",{children:[t.jsx(O,{className:"text-lg font-medium",children:x("基本信息")}),t.jsx("div",{className:"text-xs text-gray-600",children:x("设置兑换码的基本信息")})]})]}),t.jsxs(v,{gutter:12,children:[t.jsx(b,{span:24,children:t.jsx(y.Input,{field:"name",label:x("名称"),placeholder:x("请输入名称"),style:{width:"100%"},rules:u?[{required:!0,message:x("请输入名称")}]:[],showClear:!0})}),t.jsx(b,{span:24,children:t.jsx(y.DatePicker,{field:"expired_time",label:x("过期时间"),type:"dateTime",placeholder:x("选择过期时间(可选,留空为永久)"),style:{width:"100%"},showClear:!0})})]})]}),t.jsxs(g,{className:"!rounded-2xl shadow-sm border-0",children:[t.jsxs("div",{className:"flex items-center mb-2",children:[t.jsx(w,{size:14,color:"green",className:"mr-2 shadow-md",children:t.jsx(M,{size:16})}),t.jsxs("div",{children:[t.jsx(O,{className:"text-lg font-medium",children:x("额度设置")}),t.jsx("div",{className:"text-xs text-gray-600",children:x("设置兑换码的额度和数量")})]})]}),t.jsxs(v,{gutter:12,children:[t.jsx(b,{span:12,children:t.jsx(y.AutoComplete,{field:"quota",label:x("额度(美元)"),placeholder:x("请输入额度(美元)"),style:{width:"100%"},type:"number",rules:[{required:!0,message:x("请输入额度")},{validator:(e,t)=>
1parseInt(t,10)>0?Promise.resolve():Promise.reject(x("额度必须大于0"))}],extraText:a(l(Number(e.quota)||0)),data:[{value:1,label:"1$"},{value:10,label:"10$"},{value:50,label:"50$"},{value:100,label:"100$"},{value:500,label:"500$"},{value:1e3,label:"1000$"},{value:5e3,label:"5000$"},{value:1e4,label:"10000$"},{value:5e4,label:"50000$"}],showClear:!0})}),!u&&t.jsx(b,{span:12,children:t.jsx(y.InputNumber,{field:"count",label:x("生成数量"),min:1,rules:[{required:!0,message:x("请输入生成数量")},{validator:(e,t)=>parseInt(t,10)>0?Promise.resolve():Promise.reject(x("生成数量必须大于0"))}],style:{width:"100%"},showClear:!0})})]})]})]})})})})})},{Text:H,Title:J}=f,X=({visible:i,handleClose:a})=>{const{t:l}=s(),[r,m]=e.useState(!1),[u,p]=e.useState(""),[j,y]=e.useState(null),[w,f]=e.useState([]),q=[{title:l("兑换码"),dataIndex:"key",width:280,render:e=>t.jsx(H,{ellipsis:{showTooltip:!0},style:{width:260},children:e})},{title:l("状态"),dataIndex:"status",width:100,render:(e,s)=>((e,s)=>{if(s.is_expired)return t.jsx(k,{color:"orange",shape:"circle",children:l("已过期")});switch(e){case 0:return t.jsx(k,{color:"red",shape:"circle",children:l("无效")});case 1:return t.jsx(k,{color:"green",shape:"circle",children:l("未使用")});case 2:return t.jsx(k,{color:"red",shape:"circle",children:l("已禁用")});case 3:return t.jsx(k,{color:"grey",shape:"circle",children:l("已使用")});default:return t.jsx(k,{color:"black",shape:"circle",children:l("未知")})}})(e,s)},{title:l("名称"),dataIndex:"name",width:150,render:e=>e||"-"},{title:l("额度"),dataIndex:"quota",width:120,render:e=>t.jsx(k,{color:"grey",shape:"circle",children:c(parseInt(e))})},{title:l("创建时间"),dataIndex:"created_time",width:180,render:e=>e?h(e):"-"},{title:l("兑换时间"),dataIndex:"redeemed_time",width:180,render:e=>e?h(e):"-"},{title:l("过期时间"),dataIndex:"expired_time",width:180,render:e=>0===e?l("永不过期"):h(e)},{title:l("使用者"),dataIndex:"used_username",width:150,render:e=>e||"-"}],R=async e=>{if(0===w.length)return void d(l("请至少选择一个兑换码"));let t="";t=e?w.map(e=>`${e.name||"未命名"}    ${e.key}`).join("\n"):w.map(e=>e.key).join("\n"),await x(t)?o(l("已复制到剪贴板")):z.error({title:l("无法复制到剪贴板,请手动复制"),content:t,size:"large"})};return t.jsx(z,{title:l("批量检测兑换码"),visible:i,onCancel:a,footer:null,width:1200,style:{maxWidth:"95vw"},children:t.jsxs("div",{children:[t.jsxs(C,{vertical:!0,align:"start",style:{width:"100%"},children:[t.jsxs("div",{style:{width:"100%"},children:[t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:8},children:[t.jsxs(H,{strong:!0,children:[l("输入兑换码")," (",l("一行一个"),")"]}),t.jsxs(C,{children:[t.jsxs(H,{type:"tertiary",children:[l("已输入"),": ",u.trim()?u.split("\n").map(e=>e.trim()).filter(e=>""!==e).length:0," / 100000"]}),t.jsx(I,{action:"",accept:".txt",beforeUpload:e=>{const t=e.fileInstance,s=new FileReader;return s.onload=e=>{const t=e.target.result;p(t),o(l("文件上传成功"))},s.onerror=()=>{d(l("文件读取失败"))},s.readAsText(t),!1},showUploadList:!1,children:t.jsx(_,{icon:t.jsx(I,{size:16}),size:"small",children:l("上传txt文件")})})]})]}),t.jsx(N,{value:u,onChange:p,placeholder:l("请输入兑换码,每行一个\n例如:\nabc123def456\nxyz789uvw012\n..."),rows:10,maxLength:35e5,showClear:!0})]}),t.jsxs(C,{style:{width:"100%",justifyContent:"flex-end"},children:[t.jsx(_,{onClick:()=>{p(""),y(null),f([])},disabled:r,children:l("清空")}),t.jsx(_,{theme:"solid",type:"primary",onClick:async()=>{if(!u.trim())return void d(l("请输入或上传兑换码"));const e=u.split("\n").map(e=>e.trim()).filter(e=>""!==e);if(0!==e.length)if(e.length>1e5)d(l("一次最多检测10万个兑换码"));else{m(!0);try{const t=await n.post("/api/redemption/batch_check",{keys:e}),{success:s,message:i,data:a}=t.data;s?(y(a),o(l("检测完成"))):d(i)}catch(t){d(l("检测失败")+":"+t.message)}finally{m(!1)}}else d(l("没有有效的兑换码"))},loading:r,disabled:!u.trim(),children:l("开始检测")})]})]}),j?t.jsxs("div",{style:{marginTop:20},children:[t.jsx(J,{heading:5,children:l("统计信息")}),t.jsxs(v,{gutter:16,style:{marginTop:16},children:[t.jsx(b,{span:8,children:t.jsx(g,{shadows:"always",style:{backgroundColor:"hsl(var(--card))"},children:t.jsxs("div",{style:{textAlign:"center"},children:[t.jsx(H,{type:"tertiary",children:l("总数量")}),t.jsx(J,{heading:2,style:{margin:"8px 0",color:"hsl(var(--primary))"},children:j.input_count}),t.jsxs(C,{children:[t.jsxs(H,{type:"success",children:[l("有效"),": ",j.total_count]}),t.jsx(S,{layout:"vertical"}),t.jsxs(H,{type:"danger",children:[l("无效"),": ",j.invalid_count]})]})]})})}),t.jsx(b,{span:8,children:t.jsx(g,{shadows:"always",style:{backgroundColor:"hsl(var(--card))"},children:t.jsxs("div",{style:{textAlign:"center"},children:[t.jsx(H,{type:"tertiary",children:l("使用情况")}),t.jsx("div",{style:{marginTop:8},children:t.jsxs(C,{vertical:!0,align:"start",style:{width:"100%"},children:[t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[t.jsxs(H,{type:"success",children:[l("未使用"),":"]}),t.jsx(H,{strong:!0,children:j.unused_count})]}),t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[t.jsxs(H,{type:"tertiary",children:[l("已使用"),":"]}),t.jsx(H,{strong:!0,children:j.used_count})]}),t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[t.jsxs(H,{type:"warning",children:[l("已过期/禁用"),":"]}),t.jsx(H,{strong:!0,children:j.expired_count})]})]})})]})})}),t.jsx(b,{span:8,children:t.jsx(g,{shadows:"always",style:{backgroundColor:"hsl(var(--card))"},children:t.jsxs("div",{style:{textAlign:"center"},children:[t.jsx(H,{type:"tertiary",children:l("金额统计")}),t.jsx("div",{style:{marginTop:8},children:t.jsxs(C,{vertical:!0,align:"start",style:{width:"100%"},children:[t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"}
1,children:[t.jsxs(H,{children:[l("总金额"),":"]}),t.jsx(H,{strong:!0,children:c(j.total_quota)})]}),t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[t.jsxs(H,{type:"success",children:[l("未使用"),":"]}),t.jsx(H,{strong:!0,type:"success",children:c(j.unused_quota)})]}),t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[t.jsxs(H,{type:"tertiary",children:[l("已使用"),":"]}),t.jsx(H,{strong:!0,type:"tertiary",children:c(j.used_quota)})]})]})})]})})})]}),t.jsx(S,{margin:"24px"}),t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:16},children:[t.jsx(J,{heading:5,style:{margin:0},children:l("详细列表")}),t.jsxs(C,{children:[t.jsx(T,{trigger:"click",position:"bottomRight",render:t.jsxs(T.Menu,{children:[t.jsx(T.Item,{onClick:()=>R(!0),children:l("复制名字和兑换码")}),t.jsx(T.Item,{onClick:()=>R(!1),children:l("只复制兑换码")})]}),children:t.jsxs(_,{type:"tertiary",size:"small",disabled:0===w.length,children:[l("复制所选")," (",w.length,")"]})}),t.jsx(_,{type:"primary",onClick:()=>{if(!j||!j.details||0===j.details.length)return void d(l("没有数据可以导出"));const e=j.details.map(e=>[e.key,e.status_text||"-",e.name||"-",e.quota,e.created_time?new Date(1e3*e.created_time).toLocaleString("zh-CN"):"-",e.redeemed_time?new Date(1e3*e.redeemed_time).toLocaleString("zh-CN"):"-",0===e.expired_time?"永不过期":new Date(1e3*e.expired_time).toLocaleString("zh-CN"),e.used_user_id||"-",e.used_username||"-"]),t="\ufeff"+[["兑换码","状态","名称","额度","创建时间","兑换时间","过期时间","使用者ID","使用者"].join(","),...e.map(e=>e.map(e=>`"${e}"`).join(","))].join("\n"),s=new Blob([t],{type:"text/csv;charset=utf-8;"}),i=document.createElement("a"),a=URL.createObjectURL(s);i.setAttribute("href",a),i.setAttribute("download",`兑换码检测结果_${(new Date).getTime()}.csv`),i.style.visibility="hidden",document.body.appendChild(i),i.click(),document.body.removeChild(i),o(l("导出成功"))},size:"small",children:l("导出完整数据")})]})]}),t.jsx($,{columns:q,dataSource:j.details||[],rowSelection:{onChange:(e,t)=>
1{f(t)}},pagination:{pageSize:10,showSizeChanger:!0,pageSizeOptions:[10,20,50,100]},scroll:{x:"max-content"},style:{marginTop:16},size:"small"})]}):null]})})},{Text:Y}=f;function Z(e){return t.jsx(t.Fragment,{children:h(e)})}const G=()=>{const{t:i}=s(),a=e=>1===e.status&&0!==e.expired_time&&e.expired_time<Math.floor(Date.now()/1e3),l=(e,s)=>{if(a(s))return t.jsx(k,{color:"orange",shape:"circle",children:i("已过期")});switch(e){case 1:return t.jsx(k,{color:"green",shape:"circle",children:i("未使用")});case 2:return t.jsx(k,{color:"red",shape:"circle",children:i("已禁用")});case 3:return t.jsx(k,{color:"grey",shape:"circle",children:i("已使用")});default:return t.jsx(k,{color:"black",shape:"circle",children:i("未知状态")})}},r=[{title:i("ID"),dataIndex:"id"},{title:i("名称"),dataIndex:"name"},{title:i("状态"),dataIndex:"status",key:"status",render:(e,s,i)=>t.jsx("div",{children:l(e,s)})},{title:i("额度"),dataIndex:"quota",render:(e,s,i)=>t.jsx("div",{children:t.jsx(k,{color:"grey",shape:"circle",children:c(parseInt(e))})})},{title:i("创建时间"),dataIndex:"created_time",render:(e,s,i)=>t.jsx("div",{children:Z(e)})},{title:i("过期时间"),dataIndex:"expired_time",render:e=>t.jsx("div",{children:0===e?i("永不过期"):Z(e)})},{title:i("兑换人ID"),dataIndex:"used_user_id",render:(e,s,a)=>t.jsx("div",{children:0===e?i("无"):e})},{title:i("创建人(用户ID)"),dataIndex:"creator_name",render:(e,s)=>s.user_id?t.jsx("div",{children:`${e||i("未知用户")}(${s.user_id})`}):t.jsx("div",{children:i("自主购买")})},{title:"",dataIndex:"operate",fixed:"right",width:205,render:(e,s,l)=>{const n=[{node:"item",name:i("删除"),type:"danger",onClick:()=>{z.confirm({title:i("确定是否要删除此兑换码?"),content:i("此修改将不可逆"),onOk:()=>{(async()=>{await ce(s.id,"delete",s),await de(),setTimeout(()=>{0===m.length&&w>1&&de(w-1)},100)})()}})}}];return 1!==s.status||a(s)?a(s)||n.push({node:"item",name:i("启用"),type:"secondary",onClick:()=>{ce(s.id,"enable",s)},disabled:3===s.status}):n.push({node:"item",name:i("禁用"),type:"warning",onClick:()=>{ce(s.id,"disable",s)}}),t.jsxs(C,{children:[t.jsx(q,{content:s.key,style:{padding:20},position:"top",children:t.jsx(_,{type:"tertiary",size:"small",children:i("查看")})}),t.jsx(_,{size:"small",onClick:async()=>{await re(s.key)},children:i("复制")}),t.jsx(_,{type:"tertiary",size:"small",onClick:()=>{O(s),H(!0)},disabled:1!==s.status,children:i("编辑")}),t.jsx(T,{trigger:"click",position:"bottomRight",menu:n,children:t.jsx(_,{type:"tertiary",size:"small",icon:t.jsx(K,{size:16})})})]})}}],[m,h]=e.useState([]),[p,j]=e.useState(!0),[w,f]=e.useState(1),[v,b]=e.useState(!1),[I,N]=e.useState(u),[$,A]=e.useState([]),[M,P]=e.useState(u),[E,O]=e.useState({id:void 0}),[U,H]=e.useState(!1),[J,G]=e.useState(!1),[ee,te]=B("redemptions"),[se,ie]=e.useState(null),ae=()=>{const e=se?se.getValues():{};return{searchKeyword:e.searchKeyword||"",timeRange:e.timeRange||[],minQuota:e.minQuota||"",maxQuota:e.maxQuota||""}},le=e=>{h(e)},ne=async(e=1,t)=>{j(!0);const s=await n.get(`/api/redemption/?p=${e}&page_size=${t}`),{success:i,message:a,data:l}=s.data;if(i){const e=l.items;f(l.page<=0?1:l.page),N(l.total),le(e)}else d(a);j(!1)},re=async e=>{await x(e)?o(i("已复制到剪贴板")+"!"):z.error({title:i("无法复制到剪贴板,请手动复制"),content:e,size:"large"})};e.useEffect(()=>{ne(1,M).then().catch(e=>{d(e)})},[M]);const de=async(e=w)=>{const t=ae(),{searchKeyword:s,timeRange:i,minQuota:a,maxQuota:l}=t;""!==s||i.length>0||""!==a||""!==l?await oe(s,e,M):await ne(e,M)},ce=async(e,t,s)=>{j(!0);let a,l={id:e};switch(t){case"delete":a=await n.delete(`/api/redemption/${e}/`);break;case"enable":l.status=1,a=await n.put("/api/redemption/?status_only=true",l);break;case"disable":l.status=2,a=await n.put("/api/redemption/?status_only=true",l)}const{success:r,message:c}=a.data;if(r){o(i("操作成功完成!"));let e=a.data.data,l=[...m];"delete"===t||(s.status=e.status),h(l)}else d(c);j(!1)},oe=async(e=null,t,s)=>{const i=ae();null===e&&(e=i.searchKeyword);const{timeRange:a,minQuota:l,maxQuota:r}=i;if(!(""!==e||a.length>0||""!==l||""!==r))return void(await ne(t,s));b(!0);let c=`keyword=${encodeURIComponent(e)}&p=${t}&page_size=${s}`;a&&2===a.length&&(c+=`&start_time=${Math.floor(new Date(a[0]).getTime()/1e3)}&end_time=${Math.floor(new Date(a[1]).getTime()/1e3)}`),""!==l&&(c+="&min_quota="+5e5*l),""!==r&&(c+="&max_quota="+5e5*r);const o=await n.get(`/api/redemption/search?${c}`),{success:m,message:h,data:x}=o.data;if(m){const e=x.items;f(x.page),N(x.total),le(e)}else d(h);b(!1)};let me=m;const he={onSelect:(e,t)=>
1{},onSelectAll:(e,t)=>{},onChange:(e,t)=>{A(t)}};return t.jsxs(t.Fragment,{children:[t.jsx(W,{refresh:de,editingRedemption:E,visiable:U,handleClose:()=>{H(!1),setTimeout(()=>{O({id:void 0})},500)}}),t.jsx(X,{visible:J,handleClose:()=>G(!1)}),t.jsx(g,{className:"!rounded-2xl",title:t.jsxs("div",{className:"flex flex-col w-full",children:[t.jsx("div",{className:"mb-2",children:t.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-start md:items-center gap-2 w-full",children:[t.jsxs("div",{className:"flex items-center text-orange-500",children:[t.jsx(L,{size:16,className:"mr-2"}),t.jsx(Y,{children:i("兑换码可以批量生成和分发,适合用于推广活动或批量充值。")})]}),t.jsx(_,{type:"tertiary",className:"w-full md:w-auto",onClick:()=>te(!ee),size:"small",children:i(ee?"自适应列表":"紧凑列表")})]})}),t.jsx(S,{margin:"12px"}),t.jsxs("div",{className:"flex flex-col md:flex-row justify-between items-center gap-4 w-full",children:[t.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full md:w-auto order-2 md:order-1",children:[t.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[t.jsx(_,{type:"primary",className:"w-full sm:w-auto",onClick:()=>{O({id:void 0}),H(!0)},size:"small",children:i("添加兑换码")}),t.jsx(_,{type:"secondary",className:"w-full sm:w-auto",onClick:()=>G(!0),size:"small",children:i("批量检测兑换码")}),t.jsx(T,{trigger:"click",position:"bottomLeft",render:t.jsxs(T.Menu,{children:[t.jsx(T.Item,{onClick:async()=>{if(0===$.length)return void d(i("请至少选择一个兑换码")+"!");let e="";for(let t=0;t<$.length;t++)e+=$[t].name+"    "+$[t].key+"\n";await re(e)},children:i("复制名字和兑换码")}),t.jsx(T.Item,{onClick:async()=>{if(0===$.length)return void d(i("请至少选择一个兑换码")+"!");let e="";for(let t=0;t<$.length;t++)e+=$[t].key+"\n";await re(e)},children:i("只复制兑换码")})]}),children:t.jsxs(_,{type:"tertiary",className:"w-full sm:w-auto",size:"small",disabled:0===$.length,children:[i("复制所选")," (",$.length,")"]})})]}),t.jsx(_,{type:"danger",className:"w-full sm:w-auto",onClick:()=>{z.confirm({title:i("确定清除所有失效兑换码?"),content:i("将删除已使用、已禁用及过期的兑换码,此操作不可撤销。"),onOk:async()=>{j(!0);const e=await n.delete("/api/redemption/invalid"),{success:t,message:s,data:a}=e.data;t?(o(i("已删除 {{num}} 条失效兑换码",{num:a})),await de()):d(s),j(!1)}})},size:"small",children:i("清除失效兑换码")})]}),t.jsxs(y,{initValues:{searchKeyword:"",timeRange:[],minQuota:"",maxQuota:""},getFormApi:e=>ie(e),onSubmit:()=>{f(1),oe(null,1,M)},allowEmpty:!0,autoComplete:"on",layout:"horizontal",trigger:"change",stopValidateWithError:!1,className:"flex flex-col md:flex-row items-center gap-4 w-full",children:[t.jsx("div",{className:"relative w-full md:w-48",children:t.jsx(y.Input,{size:"small",field:"searchKeyword",name:"redemptions_search_keyword",prefix:t.jsx(V,{size:16}),placeholder:i("搜索 ID/名称/兑换码"),showClear:!0,pure:!0})}),t.jsx("div",{className:"w-full md:w-64",children:t.jsx(y.DatePicker,{size:"small",field:"timeRange",type:"dateTimeRange",placeholder:[i("开始时间"),i("结束时间")],density:"compact",style:{width:"100%"},pure:!0})}),t.jsx("div",{className:"w-full md:w-32",children:t.jsx(y.InputNumber,{size:"small",field:"minQuota",placeholder:i("最小金额"),min:0,hideButtons:!0,style:{width:"100%"},pure:!0})}),t.jsx("div",{className:"w-full md:w-32",children:t.jsx(y.InputNumber,{size:"small",field:"maxQuota",placeholder:i("最大金额"),min:0,hideButtons:!0,style:{width:"100%"},pure:!0})}),t.jsx(_,{size:"small",type:"tertiary",htmlType:"submit",loading:p||v,className:"w-full md:w-auto",children:i("查询")}),t.jsx(_,{size:"small",type:"tertiary",onClick:()=>{se&&(se.reset(),setTimeout(()=>{f(1),ne(1,M)},100))},className:"w-full md:w-auto",children:i("重置")})]})]})]}),shadows:"always",bordered:!1,children:t.jsx(F,{columns:ee?r.map(({fixed:e,...t})=>t):r,dataSource:me,scroll:ee?void 0:{x:"max-content"},pagination:{formatPageText:e=>i("第 {{start}} - {{end}} 条,共 {{total}} 条",{start:e.currentStart,end:e.currentEnd,total:I}),currentPage:w,pageSize:M,total:I,pageSizeOpts:[10,20,50,100],showSizeChanger:!0,onPageSizeChange:e=>{P(e),f(1)},onPageChange:e=>{f(e);const t=ae(),{searchKeyword:s,timeRange:i,minQuota:a,maxQuota:l}=t;""!==s||i.length>0||""!==a||""!==l?oe(s,e,M).then():ne(e,M).then()}},loading:p,rowSelection:he,onRow:(e,t)=>1!==e.status||a(e)?{style:{background:"hsl(var(--border))"}}:{},empty:t.jsx(R,{image:t.jsx(Q,{style:{width:150,height:150}}),darkModeImage:t.jsx(D,{style:{width:150,height:150}}),description:i("搜索无结果"),style:{padding:30}}),className:"overflow-hidden",size:"middle"})})]})},ee=()=>t.jsx("div",{className:"px-2",children:t.jsx(G,{})});
1export{ee 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.