PageSourceSearch

https://doinhanhweb.manus.space/assets/AdminWithdrawals-CaWkiAHP.js

js doinhanhweb.manus.space collected 2026-10-03 05:01:47 UTC 16,573 bytes, 1 lines download raw bytes

1import{a as I,o as L,r as x,t as o,b as n,j as a,A as z,F as d,z as S,X as _,R as F,s as O}from"./index-DRYNtDfq.js";import{D as V,A as K}from"./DashboardLayout-2PNDDCmu.js";import{C as B,a as U,b as $,c as Q}from"./card-CJc3fOA2.js";import{I as X}from"./input-Bz87F-Tp.js";import{B as k}from"./badge-ChxCwd0e.js";import{S as q,a as G,b as J,c as Y,d as l}from"./select-DFMmhlPh.js";import{D as Z,a as aa,b as ta,c as sa,d as ea,e as ia}from"./dialog-D6TyplgW.js";import{T as na}from"./textarea-CSC5Btfs.js";import{R as da}from"./refresh-cw-D2dmFQzs.js";import{C as T}from"./circle-check-B2iCZg_V.js";import{C as la}from"./check-_56GbLcW.js";import"./trending-up-CvKbjCgH.js";import"./circle-arrow-down-HHKk6hyR.js";import"./circle-arrow-up-DUs07WdU.js";import"./file-text-CvyTzFOR.js";import"./send-BLEe7uzJ.js";import"./mail-Dy7s7wzw.js";import"./message-circle-DuGz_h7Q.js";import"./index-BfJPPodk.js";import"./useComposition-Lg3rnDe0.js";import"./index-CZ-4w4yO.js";import"./chevron-up-CI5V9-bw.js";const ca={pending:{label:"Chờ duyệt",variant:"secondary"},approved:{label:"Đã duyệt",variant:"default"},processing:{label:"Đang xử lý",variant:"default"},completed:{label:"Hoàn thành",variant:"default"},rejected:{label:"Từ chối",variant:"destructive"},failed:{label:"Thất bại",variant:"destructive"},pending_review:{label:"Cần xem xét",variant:"outline"}},ra={NEW:"bg-gray-100 text-gray-700",NORMAL:"bg-blue-100 text-blue-700",VIP:"bg-amber-100 text-amber-700"};function u(c){return c?.toLocaleString("vi-VN")+"đ"}function ma(c){return c?new Date(c).toLocaleString("vi-VN",{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit"}):"-"}function Ra(){const{user:c}=I(),[,D]=L(),[g,P]=x.useState("all"),[A,M]=x.useState(""),[j,W]=x.useState(0),f=20,{data:R,isLoading:E,refetch:r}=o.admin.getWithdrawals.useQuery({status:g==="all"?void 0:g,limit:f,offset:j*f}),[s,e]=x.useState(null),[h,m]=x.useState(""),w=o.admin.approveWithdrawal.useMutation({onSuccess:()=>{n.success("Đã duyệt lệnh rút"),r(),e(null)},onError:t=>n.error(t.message)}),N=o.admin.rejectWithdrawal.useMutation({onSuccess:()=>{n.success("Đã từ chối + hoàn tiền"),r(),e(null)},onError:t=>n.error(t.message)}),v=o.admin.completeWithdrawal.useMutation({onSuccess:()=>{n.success("Đã hoàn thành lệnh rút"),r(),e(null)},onError:t=>n.error(t.message)}),y=o.admin.retryPayout.useMutation({onSuccess:t=>{n.success(t.success?"Payout thành công!":`Payout thất bại: ${t.error}`),r(),e(null)},onError:t=>n.error(t.message)}),b=o.admin.failWithdrawal.useMutation({onSuccess:()=>{n.success("Đã đánh dấu thất bại + hoàn tiền"),r(),e(null)},onError:t=>n.error(t.message)}),H=()=>{if(!s)return;const{type:t,id:i}=s;switch(t){case"approve":w.mutate({id:i,note:h||void 0});break;case"reject":N.mutate({id:i,reason:h||void 0});break;case"complete":v.mutate({id:i,note:h||void 0});break;case"retry":y.mutate({id:i});break;case"fail":b.mutate({id:i,reason:h||void 0});break}},C=w.isPending||N.isPending||v.isPending||y.isPending||b.isPending,p=R||[];return c?.role!=="admin"?(D("/"),null):a.jsxs(V,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:87",navItems:K,title:"Quản lý rút tiền",userName:c?.name||"Admin",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:88",className:"space-y-4",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:90",className:"flex flex-wrap gap-3 items-center",children:[a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:91",className:"relative flex-1 min-w-[200px] max-w-sm",children:[a.jsx(z,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:92",className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),a.jsx(X,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:93",placeholder:"Tìm theo user, STK...",value:A,onChange:t=>M(t.target.value),className:"pl-9"})]}),a.jsxs(q,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:95",value:g,onValueChange:t=>{P(t),W(0)},children:[a.jsx(G,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:96",className:"w-[160px]",children:a.jsx(J,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:97",placeholder:"Trạng thái"})}),a.jsxs(Y,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:99",children:[a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:100",value:"all",children:"Tất cả"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:101",value:"pending",children:"Chờ duyệt"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:102",value:"approved",children:"Đã duyệt"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:103",value:"processing",children:"Đang xử lý"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:104",value:"completed",children:"Hoàn thành"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:105",value:"rejected",children:"Từ chối"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:106",value:"failed",children:"Thất bại"}),a.jsx(l,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:107",value:"pending_review",children:"Cần xem xét"})]})]}),a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:110",variant:"outline",size:"sm",onClick:()=>r(),children:[a.jsx(da,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:111",className:"w-4 h-4 mr-1"})," Refresh"]})]}),a.jsxs(B,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:116",children:[a.jsx(U,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:117",className:"py-3",children:a.jsxs($,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:118",className:"text-sm font-medium",children:["Danh sách lệnh rút (",p.length,")"]})}),a.jsx(Q,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:120",className:"p-0",children:E?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:122",className:"flex items-center justify-center py-10",children:a.jsx(S,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:122",className:"w-6 h-6 animate-spin"})}):p.length===0?a.jsx("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:124",className:"text-center py-10 text-muted-foreground text-sm",children:"Không có lệnh rút nào"}):a.jsx("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:126",className:"overflow-x-auto",children:a.jsxs("table",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:127",className:"w-full text-sm",children:[a.jsx("thead",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:128",className:"bg-muted/50",children:a.jsxs("tr",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:129",children:[a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:130",className:"text-left p-3 font-medium",children:"ID"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:131",className:"text-left p-3 font-medium",children:"User"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:132",className:"text-left p-3 font-medium",children:"Hạng"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:133",className:"text-right p-3 font-medium",children:"Số tiền"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:134",className:"text-right p-3 font-medium",children:"Phí"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:135",className:"text-right p-3 font-medium",children:"Thực nhận"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:136",className:"text-left p-3 font-medium",children:"Phương thức"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:137",className:"text-left p-3 font-medium",children:"TK nhận"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:138",className:"text-left p-3 font-medium",children:"Trạng thái"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:139",className:"text-left p-3 font-medium",children:"Auto"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:140",className:"text-left p-3 font-medium",children:"Ngày tạo"}),a.jsx("th",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:141",className:"text-center p-3 font-medium",children:"Hành động"})]})}),a.jsx("tbody",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:144",children:p.filter(t=>{if(!A)return!0;const i=A.toLowerCase();return(t.userName||"").toLowerCase().includes(i)||(t.accountNumber||"").includes(i)||String(t.id).includes(i)}).map(t=>{const i=ca[t.status]||{label:t.status,variant:"secondary"};return a.jsxs("tr",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:152",className:"border-t hover:bg-muted/30",children:[a.jsxs("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:153",className:"p-3 font-mono text-xs",children:["#",t.id]}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:154",className:"p-3",children:a.jsx("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:155",className:"text-xs font-medium",children:t.userName||`User #${t.userId}`})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:157",className:"p-3",children:a.jsx("span",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:158",className:`text-xs px-1.5 py-0.5 rounded font-medium ${ra[t.userRank]||"bg-gray-100"}`,children:t.userRank||"NEW"})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:162",className:"p-3 text-right font-medium",children:u(t.amount)}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:163",className:"p-3 text-right text-xs text-muted-foreground",children:t.fee?u(t.fee):"-"}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:164",className:"p-3 text-right text-xs font-medium text-green-700",children:t.netAmount?u(t.netAmount):u(t.amount)}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:165",className:"p-3",children:a.jsx(k,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:166",variant:"outline",className:"text-xs",children:t.method==="bank"?"Ngân hàng":t.method==="crypto"?"Crypto":t.method==="ewallet"?"E-Wallet":t.method||"bank"})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:168",className:"p-3",children:t.method==="bank"||!t.method?a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:170",className:"text-xs",children:[a.jsx("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:171",className:"font-medium",children:t.bankName}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:172",className:"text-muted-foreground",children:[t.accountNumber," - ",t.accountHolder]})]}):t.method==="crypto"?a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:175",className:"text-xs font-mono",children:[t.cryptoAddress?.slice(0,12),"..."]}):"-"}),a.jsxs("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:178",className:"p-3",children:[a.jsx(k,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:179",variant:i.variant,className:"text-xs",children:i.label}),t.reason&&a.jsx("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:180",className:"text-xs text-muted-foreground mt-0.5 max-w-[120px] truncate",title:t.reason,children:t.reason})]}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:182",className:"p-3",children:t.autoProcessed?a.jsx(T,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:183",className:"w-4 h-4 text-green-600"}):a.jsx("span",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:183",className:"text-xs text-muted-foreground",children:"-"})}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:185",className:"p-3 text-xs text-muted-foreground",children:ma(t.createdAt)}),a.jsx("td",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:186",className:"p-3",children:a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:187",className:"flex items-center justify-center gap-1 flex-wrap",children:[(t.status==="pending"||t.status==="pending_review")&&a.jsxs(a.Fragment,{children:[a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:190",size:"sm",variant:"outline",className:"h-7 text-xs text-green-600",onClick:()=>{e({type:"approve",id:t.id}),m("")},children:[a.jsx(la,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:191",className:"w-3 h-3 mr-0.5"})," Duyệt"]}),a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:193",size:"sm",variant:"outline",className:"h-7 text-xs text-red-600",onClick:()=>{e({type:"reject",id:t.id}),m("")},children:[a.jsx(_,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:194",className:"w-3 h-3 mr-0.5"})," Từ chối"]})]}),(t.status==="approved"||t.status==="processing")&&a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:199",size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>{e({type:"complete",id:t.id}),m("")},children:[a.jsx(T,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:200",className:"w-3 h-3 mr-0.5"})," Hoàn thành"]}),(t.status==="pending_review"||t.status==="approved")&&(t.method==="bank"||!t.method)&&a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:204",size:"sm",variant:"outline",className:"h-7 text-xs",onClick:()=>
1{e({type:"retry",id:t.id}),m("")},children:[a.jsx(F,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:205",className:"w-3 h-3 mr-0.5"})," Retry"]}),t.status!=="completed"&&t.status!=="rejected"&&t.status!=="failed"&&a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:209",size:"sm",variant:"outline",className:"h-7 text-xs text-orange-600",onClick:()=>{e({type:"fail",id:t.id}),m("")},children:[a.jsx(O,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:210",className:"w-3 h-3 mr-0.5"})," Fail"]})]})})]},t.id)})})]})})})]}),a.jsxs("div",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:226",className:"flex items-center justify-between",children:[a.jsx(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:227",variant:"outline",size:"sm",disabled:j===0,onClick:()=>W(t=>t-1),children:"Trang trước"}),a.jsxs("span",{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:228",className:"text-sm text-muted-foreground",children:["Trang ",j+1]}),a.jsx(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:229",variant:"outline",size:"sm",disabled:p.length<f,onClick:()=>W(t=>t+1),children:"Trang sau"})]})]}),a.jsx(Z,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:234",open:!!s,onOpenChange:()=>e(null),children:a.jsxs(aa,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:235",children:[a.jsxs(ta,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:236",children:[a.jsxs(sa,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:237",children:[s?.type==="approve"&&"Duyệt lệnh rút",s?.type==="reject"&&"Từ chối lệnh rút",s?.type==="complete"&&"Hoàn thành lệnh rút",s?.type==="retry"&&"Retry Payout",s?.type==="fail"&&"Đánh dấu thất bại"]}),a.jsxs(ea,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:244",children:[s?.type==="approve"&&"Duyệt và thực hiện payout (nếu cấu hình PayOS). Nếu không có payout, chuyển sang 'Đã duyệt' để xử lý thủ công.",s?.type==="reject"&&"Từ chối lệnh rút. Số tiền sẽ được hoàn lại vào tài khoản user.",s?.type==="complete"&&"Đánh dấu lệnh rút đã hoàn thành (đã chuyển tiền thủ công).",s?.type==="retry"&&"Thử lại payout qua PayOS cho lệnh rút này.",s?.type==="fail"&&"Đánh dấu thất bại. Số tiền sẽ được hoàn lại vào tài khoản user."]})]}),s?.type!=="retry"&&a.jsx(na,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:253",placeholder:"Ghi chú (tùy chọn)...",value:h,onChange:t=>m(t.target.value),rows:3}),a.jsxs(ia,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:260",children:[a.jsx(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:261",variant:"outline",onClick:()=>e(null),children:"Hủy"}),a.jsxs(d,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:262",onClick:H,disabled:C,variant:s?.type==="reject"||s?.type==="fail"?"destructive":"default",children:[C&&a.jsx(S,{"data-loc":"client/src/pages/admin/AdminWithdrawals.tsx:267",className:"w-4 h-4 animate-spin mr-2"}),"Xác nhận"]})]})]})})]})}export{Ra 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.