PageSourceSearch

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

js nickz.ai collected 2026-10-05 14:20:36 UTC 17,789 bytes, 1 lines download raw bytes

1import{r as e,j as s,L as a}from"./vendor-react-DejgYtBM.js";import{u as t,U as n,S as r,G as l,a as i,J as d,$ as c,a0 as o,s as x,V as u,A as m,v as h,w as j}from"./index-BeIIFw6E.js";import{f as p,B as y,S as f,p as g,m as w,o as N,D as v,y as b,M as S,i as _,N as z,z as C,k,F as I}from"./vendor-semi-D8d7bTtM.js";import{ar as T,as as $,R as F,C as O,w as D,ae as E}from"./vendor-icons-EJvJ5X-w.js";import"./vendor-motion-Chfy_MiU.js";const{Text:L,Title:A}=p,M=()=>{const{t:p}=t(),[M,U]=e.useContext(n),[R]=e.useContext(r),q=e=>({zfb:p("支付宝支付"),alipay:p("支付宝支付"),wx:p("微信支付"),wxpay:p("微信支付"),stripe:"Stripe"}[e.type]||e.name);l();const P=i(),[B,J]=e.useState(!0),[Y,G]=e.useState(!1),H=e.useMemo(()=>R?.status?.currency_type||"USD",[R]),K=e.useMemo(()=>R?.status?.custom_currency_symbol||"¤",[R]),Q=e.useMemo(()=>parseFloat(R?.status?.custom_currency_exchange_rate)||1,[R]),V=e.useMemo(()=>parseFloat(R?.status?.usd_exchange_rate)||7.3,[R]),W=e=>{if("TOKENS"===H)return`${e}`;let s="$",a=e;return"CNY"===H?(a=e*V,s="¥"):"CUSTOM"===H&&(a=e*Q,s=K),`${s}${a.toFixed(2)}`},[X,Z]=e.useState(!1),[ee,se]=e.useState(!1),[ae,te]=e.useState(!1),[ne,re]=e.useState(100),[le,ie]=e.useState(1),[de,ce]=e.useState(""),[oe,xe]=e.useState(""),[ue,me]=e.useState(0),[he,je]=e.useState(!1),[pe,ye]=e.useState(!1),[fe,ge]=e.useState(!1),[we,Ne]=e.useState([]),[ve,be]=e.useState(!1),[Se,_e]=e.useState([]),[ze,Ce]=e.useState(1),[ke,Ie]=e.useState(10),[Te,$e]=e.useState(0),[Fe,Oe]=e.useState(!1),[De,Ee]=e.useState(""),[Le,Ae]=e.useState("trade_no"),[Me,Ue]=e.useState(!1),[Re,qe]=e.useState(null),[Pe,Be]=e.useState([]),[Je,Ye]=e.useState([]),[Ge,He]=e.useState(!1),[Ke,Qe]=e.useState(!1),Ve=R?.status?.redemption_fee_rate||0,We=async()=>{try{const s=await m.get("/api/user/pay-methods"),{success:a,data:t}=s.data;a&&Array.isArray(t)&&Ne((e=t,Array.isArray(e)?e.filter(e=>e.name&&e.type).map(e=>{const s={...e};return s.color||("zfb"===s.type?s.color="hsl(var(--primary))":"wxpay"===s.type||"wx"===s.type?s.color="hsl(var(--success))":s.color="hsl(var(--primary))"),s}):[]))}catch(s){}var e};e.useEffect(()=>{Z(d()),se(c()),te(o()),d()||c()||o()?(We(),J(!1)):x(p("权限不足,需要代理或管理员权限"))},[]),e.useEffect(()=>{We()},[R?.status?.pay_methods]);const Xe=e.useRef(0);e.useEffect(()=>{X&&(async()=>{if(!X)return++Xe.current,me(0),void je(!1);if(ne<=0||le<=0)return++Xe.current,me(0),void je(!1);const e=++Xe.current;je(!0);try{const s=await m.post("/api/user/redemption-purchase/amount",{amount:parseInt(ne),quantity:parseInt(le)});if(e!==Xe.current)return;s.data.success?me(parseFloat(s.data.data)):(x(p(s.data.message||"计算金额失败")),me(0))}catch(s){if(e!==Xe.current)return;x(p("计算金额失败")),me(0)}finally{e===Xe.current&&je(!1)}})()},[ne,le,X]);const Ze=async(e=ze,s=null)=>{Oe(!0);try{const a={page:e,page_size:ke},t=s?.keyword??De,n=s?.type??Le;(X||ee||ae)&&t&&(a.search_type=n,a.keyword=t);const r=await m.get("/api/user/redemption-purchase/records",{params:a});r.data.success?(_e(r.data.data.records),$e(r.data.data.total),Ce(e)):x(p(r.data.message||"获取购买记录失败"))}catch(a){x(p("获取购买记录失败"))}finally{Oe(!1)}};e.useEffect(()=>{!B&&(X||ee||ae)&&Ze(1)},[B,X,ee,ae]),e.useEffect(()=>{!B&&(X||ee||ae)&&ze>1&&Ze()},[ze,ke]);const es=async e=>{await h(e)?j(p("复制成功")):x(p("复制失败,请手动复制"))},ss=e=>{switch(e){case"pending":return s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(_,{color:"yellow",size:"small",children:p("待支付")}),s.jsx(C,{content:p("如果付款后十分钟未到账,请联系客服处理"),children:s.jsx(E,{size:16,style:{color:"hsl(var(--warning))",cursor:"help"}})})]});case"success":return s.jsx(_,{color:"green",size:"small",children:p("已支付")});case"failed":return s.jsx(_,{color:"red",size:"small",children:p("支付失败")});default:return s.jsx(_,{color:"grey",size:"small",children:p("未知状态")})}},as=[{title:p("订单ID"),dataIndex:"id",width:80,render:e=>s.jsx(L,{onClick:()=>es(e.toString()),style:{cursor:"pointer"},children:e})},{title:p("交易订单号"),dataIndex:"trade_no",width:150,render:e=>s.jsx(L,{onClick:()=>es(e),style:{cursor:"pointer"},children:e})},...X||ee||ae?[{title:p("用户 ID"),dataIndex:"user_id",width:80,render:e=>s.jsx(L,{onClick:()=>es(e.toString()),style:{cursor:"pointer"},children:e})},{title:p("用户名"),dataIndex:"username",width:120,render:(e,a)=>s.jsx(L,{onClick:()=>es(e),style:{cursor:"pointer"},children:a.display_name||e})}]:[],{title:p("单价"),dataIndex:"amount",width:80,render:e=>W(e)},{title:p("数量"),dataIndex:"quantity",width:60,render:e=>`${e} ${p("张")}`},{title:p("总金额"),dataIndex:"total_amount",width:80,render:e=>W(e)},{title:p("实付金额"),dataIndex:"money",width:80,render:e=>`¥${e.toFixed(2)}`}
1,{title:p("支付方式"),dataIndex:"payment_method",width:100,render:e=>{const s={wxpay:p("微信支付"),wx:p("微信支付"),alipay:p("支付宝支付"),zfb:p("支付宝支付")};if(s[e])return s[e];const a=we.find(s=>s.type===e);return a?a.name:e}},{title:p("创建时间"),dataIndex:"create_time",width:150,render:e=>new Date(1e3*e).toLocaleString()},{title:p("状态"),dataIndex:"status",width:100,render:e=>ss(e)},{title:p("操作"),width:80,render:(e,a)=>s.jsx(y,{type:"primary",size:"small",className:"!rounded-full",onClick:()=>(async e=>{He(!0);try{const s=await m.get(`/api/user/redemption-purchase/${e}`);s.data.success?(qe(s.data.data.purchase),Be(s.data.data.redemption_codes||[]),Ye(s.data.data.redemption_details||[]),Qe(s.data.data.can_view_codes||!1),Ue(!0)):x(p(s.data.message||"获取订单详情失败"))}catch(s){x(p("获取订单详情失败"))}finally{He(!1)}})(a.id),loading:Ge,children:p("查看详情")})}],ts=()=>{if(!ae&&!ee&&!X)return null;const[a,t]=e.useState(De),[n,r]=e.useState(Le),l=()=>{Ee(a),Ae(n),Ce(1),Ze(1,{keyword:a,type:n})};return s.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[s.jsxs(k,{value:n,onChange:e=>r(e),style:{width:120},size:"small",children:[s.jsx(k.Option,{value:"trade_no",children:p("订单号")}),s.jsx(k.Option,{value:"id",children:p("用户 ID")}),s.jsx(k.Option,{value:"username",children:p("用户名")})]}),s.jsx(I,{value:a,onChange:e=>t(e),placeholder:p("请输入搜索关键词"),style:{width:200},size:"small",showClear:!0,onEnterPress:l}),s.jsx(y,{type:"primary",size:"small",className:"!rounded-full",onClick:l,children:p("搜索")}),s.jsx(y,{theme:"light",size:"small",className:"!rounded-full",onClick:()=>{t(""),r("trade_no"),Ee(""),Ae("trade_no"),Ce(1),Ze(1,{keyword:"",type:"trade_no"})},children:p("重置")})]})};return B?s.jsx("div",{className:"min-h-screen bg-background pt-16",children:s.jsx("div",{className:"max-w-7xl mx-auto px-4",children:s.jsx(f,{loading:!0})})}):X||ee||ae?s.jsx("div",{className:"min-h-screen bg-background pt-16",children:s.jsxs("div",{className:"max-w-7xl mx-auto px-4 py-6",children:[X&&s.jsxs(w,{className:"!rounded-2xl mb-6",shadows:"always",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[s.jsx(T,{size:24,className:"text-foreground"}),s.jsx(A,{heading:3,className:"!mb-0 !text-foreground",children:p("兑换码批量购买")})]}),s.jsxs("div",{className:`grid ${P?"grid-cols-1":"grid-cols-3"} gap-6`,children:[s.jsx("div",{className:"col-span-2",children:s.jsxs(N,{layout:"vertical",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsx(N.InputNumber,{field:"amount",label:p("单个兑换码金额"),value:ne,onChange:e=>re(e),min:1,max:1e5,placeholder:p("请输入兑换码金额"),suffix:"CNY"===H?"¥":"CUSTOM"===H?K:"$",style:{width:"100%"},size:"small"}),s.jsx(N.InputNumber,{field:"quantity",label:p("兑换码数量"),value:le,onChange:e=>ie(e),min:1,max:1e3,placeholder:p("请输入兑换码数量"),suffix:p("张"),style:{width:"100%"},size:"small"})]}),s.jsx(N.TextArea,{field:"notes",label:p("备注"),value:oe,onChange:e=>xe(e),placeholder:p("选填,订单备注信息"),rows:2,maxLength:200,size:"small"})]})}),s.jsx(w,{className:"!rounded-2xl !bg-fill-subtle",shadows:"always",children:s.jsxs("div",{className:"space-y-3",children:[s.jsx(A,{heading:5,className:"!mb-0 !text-foreground",children:p("订单信息")}),s.jsxs("div",{className:"space-y-2 text-sm",children:[s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{type:"secondary",children:[p("单价"),":"]}),s.jsx(L,{children:W(ne)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{type:"secondary",children:[p("数量"),":"]}),s.jsxs(L,{children:[le," ",p("张")]})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{type:"secondary",children:[p("总金额"),":"]}),s.jsx(L,{children:W(ne*le)})]}),Ve>0&&s.jsxs(s.Fragment,{children:[s.jsx(v,{margin:"8px 0"}),s.jsx("div",{style:{background:"#fff7e6",border:"1px solid #faad14",borderRadius:6,padding:"8px 12px"},children:s.jsxs(L,{strong:!0,style:{color:"#faad14",fontSize:13},children:[p("平台手续费"),": ",Ve,"%"]})})]}),s.jsx(v,{margin:"8px 0"}),s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsxs(L,{strong:!0,children:[p("实付金额"),Ve>0?p("(含手续费)"):"",":"]}),he?s.jsx(f.Title,{style:{width:60,height:20}}):s.jsxs(L,{strong:!0,size:20,className:"!text-primary",children:["¥",ue.toFixed(2)]})]})]}),s.jsx("div",{className:"flex flex-wrap gap-2 pt-4",children:we&&we.length>0?we.map((e,a)=>s.jsx(y,{type:"primary",theme:"solid",size:"small",className:"!rounded-full",style:{backgroundColor:e.color},onClick:()=>{ce(e.type),be(!0)},disabled:ue<=0||he,children:q(e)},a)):s.jsx(L,{type:"secondary",size:14,children:p("暂无可用的支付方式")})})]})})]})]}),s.jsxs(w,{className:"!rounded-2xl",shadows:"always",style:{marginTop:16},children:[s.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[s.jsx($,{size:24,className:"text-foreground"}),s.jsx(A,{heading:3,className:"!mb-0 !text-foreground",children:p("兑换码购买记录")})]}),X&&s.jsx(g,{type:"info",description:p("您可以查看自己和下级代理的兑换码购买记录,但只能查看自己购买的兑换码详情"),
1className:"!rounded-xl mb-4"}),(ee||ae)&&s.jsx(g,{type:"info",description:p("管理员可以查看所有代理的兑换码购买记录"),className:"!rounded-xl mb-4"}),s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex justify-between items-center",children:[s.jsx(ts,{}),s.jsx(y,{icon:s.jsx(F,{size:16}),onClick:()=>Ze(),loading:Fe,size:"small",className:"!rounded-full",theme:"light",children:p("刷新")})]}),s.jsx(b,{columns:as,dataSource:Se,loading:Fe,pagination:{currentPage:ze,pageSize:ke,total:Te,onChange:(e,s)=>{Ze(e),Ie(s)},showSizeChanger:!0,showQuickJumper:!0,showTotal:!0},scroll:{x:1200},className:"!rounded-xl"})]})]}),s.jsx(S,{title:p("确认购买"),visible:ve,onOk:async()=>{if(ne<=0)x(p("兑换码金额必须大于0"));else if(le<=0||le>1e3)x(p("兑换码数量必须在1-1000之间"));else if(de){ge(!0),be(!1);try{const e=await m.post("/api/user/redemption-purchase",{amount:parseInt(ne),quantity:parseInt(le),payment_method:de,notes:oe||""});if(e.data.success){const{data:s,url:a}=e.data.data;let t=document.createElement("form");t.action=a,t.method="POST",navigator.userAgent.indexOf("Safari")>-1&&navigator.userAgent.indexOf("Chrome")<1||(t.target="_blank");for(let e in s){let a=document.createElement("input");a.type="hidden",a.name=e,a.value=s[e],t.appendChild(a)}document.body.appendChild(t),t.submit(),document.body.removeChild(t),j(p("支付订单创建成功,请完成支付")),setTimeout(()=>{Ze()},1e3)}else x(p(e.data.message||"创建支付订单失败"))}catch(e){x(p("创建支付订单失败"))}finally{ge(!1)}}else x(p("请选择支付方式"))},onCancel:()=>be(!1),okText:p("确认支付"),cancelText:p("取消"),confirmLoading:fe,maskClosable:!1,className:"!rounded-2xl",children:s.jsxs("div",{className:"space-y-3",children:[s.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{type:"secondary",children:[p("兑换码金额"),":"]}),s.jsx(L,{children:W(ne)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{type:"secondary",children:[p("兑换码数量"),":"]}),s.jsxs(L,{children:[le," ",p("å¼ ")]})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{type:"secondary",children:[p("总金额"),":"]}),s.jsx(L,{children:W(ne*le)})]}),Ve>0&&s.jsxs("div",{className:"flex justify-between col-span-2",children:[s.jsxs(L,{type:"warning",strong:!0,children:[p("平台手续费")," (",Ve,"%):"]}),s.jsxs(L,{type:"warning",strong:!0,children:["Â¥",(ue-ue/(1+Ve/100)).toFixed(2)]})]}),s.jsxs("div",{className:"flex justify-between col-span-2",children:[s.jsxs(L,{strong:!0,children:[p("实付金额"),Ve>0?p("(含手续费)"):"",":"]}),s.jsxs(L,{strong:!0,style:{color:"hsl(var(--primary))"},children:["Â¥",ue.toFixed(2)]})]})]}),s.jsx(L,{type:"secondary",size:14,children:p("确认后将跳转到支付页面")})]})}),s.jsx(S,{title:p("订单详情"),visible:Me,onCancel:()=>Ue(!1),width:800,footer:null,className:"!rounded-2xl",children:Re&&s.jsxs("div",{className:"space-y-6",children:[s.jsx(w,{title:p("订单信息"),className:"!rounded-xl",shadows:"always",children:s.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("订单ID"),":"]}),s.jsx(L,{copyable:!0,children:Re.id})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("交易订单号"),":"]}),s.jsx(L,{copyable:!0,children:Re.trade_no})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("创建时间"),":"]}),s.jsx(L,{children:new Date(1e3*Re.create_time).toLocaleString()})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("状态"),":"]}),ss(Re.status)]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("单价"),":"]}),s.jsx(L,{children:W(Re.amount)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("数量"),":"]}),s.jsxs(L,{children:[Re.quantity," ",p("å¼ ")]})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("总金额"),":"]}),s.jsx(L,{children:W(Re.total_amount)})]}),s.jsxs("div",{className:"flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("实付金额"),":"]}),s.jsxs(L,{children:["Â¥",Re.money.toFixed(2)]})]}),Re.notes&&s.jsxs("div",{className:"col-span-2 flex justify-between",children:[s.jsxs(L,{strong:!0,children:[p("备注"),":"]}),s.jsx(L,{children:Re.notes})]})]})}),"success"===Re.status&&s.jsxs(w,{title:p("兑换码列表"),className:"!rounded-xl",shadows:"always",style:{marginTop:16},children:[!Ke&&s.jsx(g,{type:"warning",description:p("您正在查看下级代理的订单ï¼
1Œå‡ºäºŽå®‰å…¨è€ƒè™‘,无法查看兑换码详情"),className:"!rounded-xl mb-4"}),Ke&&s.jsx(g,{type:"info",description:p("请妥善保管兑换码,泄露后果自负"),className:"!rounded-xl mb-4"}),Ke&&Pe.length>0&&s.jsxs(s.Fragment,{children:[Je.length>0?s.jsx(b,{columns:[{title:p("序号"),width:60,render:(e,s,a)=>a+1},{title:p("兑换码"),dataIndex:"key",width:280,render:e=>s.jsx(L,{code:!0,copyable:!0,style:{fontSize:"12px"},children:e})},{title:p("状态"),dataIndex:"status_text",width:80,render:(e,a)=>{let t="grey";return 1===a.status?t=a.expired_time>0&&a.expired_time<Math.floor(Date.now()/1e3)?"orange":"green":2===a.status?t="red":3===a.status&&(t="grey"),s.jsx(_,{color:t,size:"small",children:e})}},{title:p("配额"),dataIndex:"quota",width:80,render:e=>W(e/u())},{title:p("使用人"),dataIndex:"used_username",width:120,render:(e,a)=>a.used_user_id>0&&e?s.jsx(L,{onClick:()=>es(e),style:{cursor:"pointer"},children:e}):s.jsx(L,{type:"secondary",children:"-"})},{title:p("使用时间"),dataIndex:"redeemed_time",width:150,render:e=>e>0?new Date(1e3*e).toLocaleString():s.jsx(L,{type:"secondary",children:"-"})}],dataSource:Je,pagination:!1,size:"small",scroll:{x:"auto"},className:"!rounded-xl"}):s.jsx(z,{dataSource:Pe,split:!0,renderItem:(e,a)=>s.jsx(z.Item,{children:s.jsxs("div",{className:"flex items-center gap-3",children:[s.jsxs(L,{strong:!0,children:[a+1,"."]}),s.jsx(L,{code:!0,copyable:!0,children:e})]})}),style:{maxHeight:300,overflow:"auto"}}),s.jsxs("div",{className:"flex gap-2 mt-4",children:[s.jsxs(y,{type:"primary",size:"small",className:"!rounded-full",onClick:()=>es(Pe.join("\n")),children:[s.jsx(O,{size:16}),p("复制全部兑换码")]}),s.jsxs(y,{theme:"light",size:"small",className:"!rounded-full",onClick:()=>{if(Pe&&0!==Pe.length)try{const e=Pe.join("\n"),s=new Blob([e],{type:"text/plain;charset=utf-8"}),a=URL.createObjectURL(s),t=document.createElement("a");t.href=a,t.download=`${p("兑换码")}_${p("订单")}${Re?.id||"unknown"}_${(new Date).getTime()}.txt`,document.body.appendChild(t),t.click(),document.body.removeChild(t),URL.revokeObjectURL(a),j(p("兑换码文件下载成功"))}catch(e){x(p("下载失败,请重试"))}else x(p("没有可下载的兑换码"))},children:[s.jsx(D,{size:16}),p("下载txt文件")]})]})]})]})]})})]})}):s.jsx("div",{className:"min-h-screen bg-background pt-16",children:s.jsx("div",{className:"max-w-7xl mx-auto px-4 py-8",children:s.jsxs("div",{className:"flex flex-col items-center justify-center gap-4 mt-20",children:[s.jsx(g,{type:"warning",description:p("权限不足,需要代理或管理员权限"),className:"!rounded-2xl"}),s.jsx(a,{to:"/topup",children:s.jsx(y,{type:"primary",size:"small",className:"!rounded-full",children:p("返回充值页面")})})]})})})};export{M 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.