2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{r as c,X as oe,c as K,h as Le,S as Be,j as $e,y as u,A as s,K as V,Q as o,I as n,al as p,aA as De,ar as Fe,z as i,O as r,P as j,a6 as N,D as A,u as h,M as g,J as Ie,H as je}from"./vendor-C3mpOp0n.js";import{_ as Ne,u as Ae,a as z,t as ne}from"./index-BlP3rxMf.js";import{a as _,L as Q,I as Ee,M as X,l as re}from"./elementPlus-DFx51bSH.js";import{u as We,g as Oe,a as Pe}from"./index-BqycflTi.js";const qe={class:"transfers-page"},He={class:"account-info"},Je={class:"account-balance"},Ke={class:"balance-item"},Qe={class:"amount"},Xe={class:"balance-item"},Ge={class:"type"},Ye={key:0,class:"pending-transfers"},Ze={class:"card-header"},es={class:"transfer-list"},ss={class:"transfer-info"},ts={class:"transfer-header"},as={class:"to-user"},os={class:"amount"},ns={class:"transfer-details"},rs={class:"description"},ls={class:"time"},is={class:"deadline-info"},ds={key:0,class:"timeout-warning"},us={class:"warning-text"},cs={class:"transfer-info"},_s={class:"transfer-header"},ps={class:"from-user"},ms={class:"amount"},fs={class:"transfer-details"},vs={class:"description"},gs={class:"time"},ys={class:"type"},hs={class:"transfer-history"},ws={class:"card-header"},bs={class:"transfer-list"},ks={class:"transfer-info"},xs={class:"transfer-header"},Vs={class:"from-user"},Ts={class:"to-user"},Cs={class:"amount"},zs={class:"transfer-details"},Us={class:"description"},Ms={class:"time"},Rs={class:"type"},Ss={key:0,class:"voucher"},Ls={class:"image-slot"},Bs={key:1,class:"transfer-actions"},$s={key:0,class:"empty-state"},Ds={key:0,class:"pagination"},Fs={key:0,class:"upload-preview"},Is=["src"],js={class:"dialog-footer"},Ns={class:"voucher-dialog-content"},As={class:"transfer-info"},Es={class:"info-row"},Ws={class:"value amount"},Os={class:"info-row"},Ps={class:"value"},qs={class:"info-row"},Hs={class:"value"},Js={class:"info-row"},Ks={class:"value"},Qs={key:0,class:"voucher-section"},Xs={class:"voucher-image-container"},Gs={class:"image-slot"},Ys={key:1,class:"no-voucher"},Zs={class:"dialog-footer"},et={__name:"Transfers",setup(st){De();const U=Ae(),E=c(!1),W=c(!1),b=c(!1),B=c(!1),M=c(!1),R=c(""),w=c({}),O=c({}),$=c([]),D=c([]),F=c([]),G=c([]),y=oe({page:1,limit:10,total:0}),d=oe({to_user_id:"",amount:"",transfer_type:"user_to_user",description:"",voucher:""}),P=c(),Y=c(),I=c(window.innerWidth),le=K(()=>I.value<=768),ie=K(()=>I.value<=480?"prev, pager, next":I.value<=768?"total, prev, pager, next":"total, sizes, prev, pager, next, jumper"),Z=()=>{I.value=window.innerWidth},de=c(We),ue=K(()=>Oe().headers),ce={to_user_id:[{required:!0,message:"请选择收款用户",trigger:"change"}],amount:[{required:!0,message:"请输入转账金额",trigger:"blur"},{pattern:/^\d+(\.\d{1,2})?$/,message:"请输入有效的金额",trigger:"blur"}],transfer_type:[{required:!0,message:"请选择转账类型",trigger:"change"}]};Le(()=>{q(),_e(),pe(),k(),me(),window.addEventListener("resize",Z)}),Be(()=>{window.removeEventListener("resize",Z)}),$e(R,()=>{y.page=1,k()});const q=async()=>{try{const a=await z.get(`/transfers/account/${U.user.id}`);a.data.success&&(O.value=a.data.data)}catch(a){console.error("加载账户信息失败:",a)}},_e=async()=>{try{const a=await z.get("/transfers/pending");a.data.success&&($.value=a.data.data)}catch(a){console.error("加载待确认转账失败:",a)}},pe=async()=>{try{const a=await z.get("/matching/pending-allocations");a.data.success&&(D.value=a.data.data||[])}catch(a){console.error("加载待处理分配失败:",a),_.error("加载待处理分配失败")}},k=async()=>{try{E.value=!0;const a={page:y.page,limit:y.limit};R.value&&(a.status=R.value);const e=await z.get(`/transfers/user/${U.user.id}`,{params:a});e.data.success&&(F.value=e.data.data.transfers,Object.assign(y,e.data.data.pagination))}catch(a){console.error("加载转账记录失败:",a),_.error("加载转账记录失败")}finally{E.value=!1}},me=async()=>{try{const a=await z.get("/users/for-transfer");a.data.success&&(G.value=a.data.data)}catch(a){console.error("加载用户列表失败:",a),_.error("加载用户列表失败")}},fe=a=>({matching:"warning",completed:"success",failed:"danger",cancelled:"info"})[a]||"info",ve=a=>({matching:"进行中",completed:"已完成",failed:"已失败",cancelled:"已取消"})[a]||"未知状态",H=a=>({user_to_user:"用户转账",initial:"初始转账",return:"返还转账",system_to_user:"系统转账",user_to_system:"系统回收"})[a]||"未知类型",ge=async()=>{var a,e,l;try{if(!await P.value.validate())return;W.value=!0;const m=new FormData;if(m.append("to_user_id",d.to_user_id),m.append("amount",d.amount),m.append("transfer_type",d.transfer_type),m.append("description",d.description),d.voucher){const f=(a=Y.value)==null?void 0:a.$el.querySelector('input[type="file"]');f!=null&&f.files[0]&&m.append("voucher",f.files[0])}const C=await z.post("/transfers/create",m,{headers:{"Content-Type":"multipart/form-data"}});C.data.success&&(_.success(C.data.message),B.value=!1,ee(),k())}catch(v){console.error("提交转账失败:",v),_.error(((l=(e=v.response)==null?void 0:e.data)==null?void 0:l.message)||"提交失败")}finally{W.value=!1}},ee=()=>{var a;Object.assign(d,{to_user_id:"",amount:"",transfer_type:"user_to_user",description:"",voucher:""}),(a=P.value)==null||a.resetFields()},ye=a=>{const e=a.type.startsWith("image/"),l=a.size/1024/1024<5;return e?l?!0:(_.error("图片大小不能超过 5MB!"),!1):(_.error("只能上传图片文件!"),!1)},he=a=>{a.success?(d.voucher=T(a.url),_.success("上传成功")):_.error(a.message||"上传失败")},we=a=>{console.error("上传错误:",a),_.error("上传失败,请重试")},S=a=>new Date(a).toLocaleString("zh-CN"),T=a=>Pe(a),be=a=>({pending:"warning",confirmed:"success",rejected:"danger",received:"success",not_received:"danger"})[a]||"info",ke=a=>({pending:"待确认",confirmed:"已确认",rejected:"已拒绝",received:"已收款",not_received:"未收到款"})[a]||"未知",xe=async a=>{try{const e=F.value.find(l=>l.id===a);if(!e){_.error("转账记录不存在");return}w.value=e,M.value=!0}catch(e){console.error("显示转账凭证失败:",e),_.error("操作失败")}},Ve=async()=>{var a,e;try{await re.confirm("确定已收到款项吗?","确认收款",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),b.value=!0;const l=await ne.confirmReceived(w.value.id);l.data.success&&(_.success(l.data.message),M.value=!1,k(),q())}catch(l){l!=="cancel"&&(console.error("确认收款失败:",l),_.error(((e=(a=l.response)==null?void 0:a.data)==null?void 0:e.message)||"操作失败"))}finally{b.value=!1}},Te=async a=>{var e,l;try{await re.confirm("确定未收到款项吗?","确认未收款",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),b.value=!0;const v=await ne.confirmNotReceived(a);v.data.success&&(_.success(v.data.message),k(),q())}catch(v){v!=="cancel"&&(console.error("确认未收款失败:",v),_.error(((l=(e=v.response)==null?void 0:e.data)==null?void 0:l.message)||"操作失败"))}finally{b.value=!1}};return(a,e)=>{const l=p("el-card"),v=p("el-badge"),m=p("el-icon"),C=p("el-tag"),f=p("el-option"),J=p("el-select"),se=p("el-image"),x=p("el-button"),Ce=p("el-empty"),ze=p("el-pagination"),L=p("el-form-item"),te=p("el-input"),Ue=p("el-upload"),Me=p("el-form"),ae=p("el-dialog"),Re=Fe("loading");return i(),u("div",qe,[e[35]||(e[35]=s("nav",{class:"navbar"},[s("div",{class:"nav-center"},[s("h1",{class:"nav-title"},"转账管理")]),s("div",{class:"nav-right"})],-1)),s("div",He,[o(l,null,{default:n(()=>[s("div",Je,[s("div",Ke,[e[11]||(e[11]=s("span",{class:"label"},"账户余额:",-1)),s("span",Qe,"¥"+r(O.value.balance||"0.00"),1)]),s("div",Xe,[e[12]||(e[12]=s("span",{class:"label"},"账户类型:",-1)),s("span",Ge,r(O.value.account_type==="public"?"公户":"用户账户"),1)])])]),_:1})]),D.value.length>0||$.value.length>0?(i(),u("div",Ye,[o(l,null,{header:n(()=>[s("div",Ze,[e[13]||(e[13]=s("span",null,"待转账",-1)),o(v,{value:D.value.length+$.value.length,class:"badge"},null,8,["value"])])]),default:n(()=>[s("div",es,[(i(!0),u(j,null,N(D.value,t=>(i(),u("div",{key:"allocation-"+t.id,class:A(["transfer-item pending",{"timeout-item":!t.can_transfer}])},[s("div",ss,[s("div",ts,[e[14]||(e[14]=s("span",{class:"from-user"},"我",-1)),o(m,{class:"arrow"},{default:n(()=>[o(h(Q))]),_:1}),s("span",as,r(t.to_user_name),1),s("span",os,"¥"+r(t.amount),1),o(C,{type:fe(t.order_status),size:"small"},{default:n(()=>[g(r(ve(t.order_status)),1)]),_:2},1032,["type"])]),s("div",ns,[s("p",rs,"匹配订单 "+r(t.matching_order_id)+" - 第"+r(t.cycle_number)+"轮",1),s("p",ls,"创建时间:"+r(S(t.created_at)),1),s("div",is,[e[15]||(e[15]=s("span",{class:"deadline-label"},"转账截止:",-1)),s("span",{class:A(["deadline-time",t.time_status])},r(S(t.deadline)),3),s("span",{class:A(["time-left",t.time_status])}," ("+r(t.time_left)+") ",3)]),t.can_transfer?V("",!0):(i(),u("div",ds,[o(m,null,{default:n(()=>[o(h(Ee))]),_:1}),s("span",us,r(t.timeout_reason),1)]))])])],2))),128)),(i(!0),u(j,null,N($.value,t=>(i(),u("div",{key:"transfer-"+t.id,class:"transfer-item pending"},[s("div",cs,[s("div",_s,[s("span",ps,r(t.from_real_name||t.from_username),1),o(m,{class:"arrow"},{default:n(()=>[o(h(Q))]),_:1}),e[17]||(e[17]=s("span",{class:"to-user"},"我",-1)),s("span",ms,"¥"+r(t.amount),1),o(C,{type:"warning",size:"small"},{default:n(()=>e[16]||(e[16]=[g(" 进行中 ")])),_:1,__:[16]})]),s("div",fs,[s("p",vs,r(t.description||"转账"),1),s("p",gs,"创建时间:"+r(S(t.created_at)),1),s("p",ys,"类型:"+r(H(t.transfer_type)),1)])])]))),128))])]),_:1})])):V("",!0),s("div",hs,[o(l,null,{header:n(()=>[s("div",ws,[e[18]||(e[18]=s("span",null,"转账记录",-1)),o(J,{modelValue:R.value,"onUpdate:modelValue":e[0]||(e[0]=t=>R.value=t),placeholder:"状态筛选",size:"small",style:{width:"120px"}},{default:n(()=>[o(f,{label:"全部",value:""}),o(f,{label:"待确认",value:"pending"}),o(f,{label:"已确认",value:"confirmed"}),o(f,{label:"已拒绝",value:"rejected"})]),_:1},8,["modelValue"])])]),default:n(()=>[Ie((i(),u("div",bs,[(i(!0),u(j,null,N(F.value,t=>(i(),u("div",{key:t.id,class:A(["transfer-item",t.status])},[s("div",ks,[s("div",xs,[s("span",Vs,r(t.from_user_id===h(U).user.id?"我":t.from_real_name||t.from_username),1),o(m,{class:"arrow"},{default:n(()=>[o(h(Q))]),_:1}),s("span",Ts,r(t.to_user_id===h(U).user.id?"我":t.to_real_name||t.to_username),1),s("span",Cs,"¥"+r(t.amount),1),o(C,{type:be(t.status),size:"small"},{default:n(()=>[g(r(ke(t.status)),1)]),_:2},1032,["type"])]),s("div",zs,[s("p",Us,r(t.description),1),s("p",Ms,r(S(t.created_at)),1),s("p",Rs,"类型:"+r(H(t.transfer_type)),1),t.voucher_url?(i(),u("div",Ss,[o(se,{src:T(t.voucher_url),"preview-src-list":[T(t.voucher_url)],class:"voucher-image",fit:"cover"},{error:n(()=>[s("div",Ls,[o(m,null,{default:n(()=>[o(h(X))]),_:1})])]),_:2},1032,["src","preview-src-list"])])):V("",!0),t.status==="confirmed"&&t.to_user_id===h(U).user.id?(i(),u("div",Bs,[o(x,{type:"success",size:"small",onClick:Se=>xe(t.id),loading:b.value},{default:n(()=>e[19]||(e[19]=[g(" 确认收款 ")])),_:2,__:[19]},1032,["onClick","loading"]),o(x,{type:"warning",size:"small",onClick:Se=>Te(t.id),loading:b.value},{default:n(()=>e[20]||(e[20]=[g(" 未收到款 ")])),_:2,__:[20]},1032,["onClick","loading"])])):V("",!0)])])],2))),128)),F.value.length===0?(i(),u("div",$s,[o(Ce,{description:"暂无转账记录"})])):V("",!0)])),[[Re,E.value]]),y.total>0?(i(),u("div",Ds,[o(ze,{"current-page":y.page,"onUpdate:currentPage":e[1]||(e[1]=t=>y.page=t),"page-size":y.limit,"onUpdate:pageSize":e[2]||(e[2]=t=>y.limit=t),"page-sizes":[10,20,50],total:y.total,layout:ie.value,small:le.value,onSizeChange:k,onCurrentChange:k},null,8,["current-page","page-size","total","layout","small"])])):V("",!0)]),_:1})]),o(ae,{modelValue:B.value,"onUpdate:modelValue":e[8]||(e[8]=t=>B.value=t),title:"发起转账",width:"90%",style:{maxWidth:"500px"},onClose:ee},{footer:n(()=>[s("span",js,[o(x,{onClick:e[7]||(e[7]=t=>B.value=!1)},{default:n(()=>e[23]||(e[23]=[g("取消")])),_:1,__:[23]}),o(x,{type:"primary",onClick:ge,loading:W.value},{default:n(()=>e[24]||(e[24]=[g(" 提交转账 ")])),_:1,__:[24]},8,["loading"])])]),default:n(()=>[o(Me,{ref_key:"transferFormRef",ref:P,model:d,rules:ce,"label-width":"100px"},{default:n(()=>[o(L,{label:"收款用户",prop:"to_user_id"},{default:n(()=>[o(J,{modelValue:d.to_user_id,"onUpdate:modelValue":e[3]||(e[3]=t=>d.to_user_id=t),placeholder:"请选择收款用户",filterable:"",style:{width:"100%"}},{default:n(()=>[(i(!0),u(j,null,N(G.value,t=>(i(),je(f,{key:t.id,label:`${t.real_name||t.username} (${t.username})`,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(L,{label:"转账金额",prop:"amount"},{default:n(()=>[o(te,{modelValue:d.amount,"onUpdate:modelValue":e[4]||(e[4]=t=>d.amount=t),placeholder:"请输入转账金额",type:"number",step:"0.01"},{prepend:n(()=>e[21]||(e[21]=[g("¥")])),_:1},8,["modelValue"])]),_:1}),o(L,{label:"转账类型",prop:"transfer_type"},{default:n(()=>[o(J,{modelValue:d.transfer_type,"onUpdate:modelValue":e[5]||(e[5]=t=>d.transfer_type=t),placeholder:"请选择转账类型"},{default:n(()=>[o(f,{label:"普通转账",value:"user_to_user"}),o(f,{label:"初始转账",value:"initial"}),o(f,{label:"返还转账",value:"return"})]),_:1},8,["modelValue"])]),_:1}),o(L,{label:"转账说明",prop:"description"},{default:n(()=>[o(te,{modelValue:d.description,"onUpdate:modelValue":e[6]||(e[6]=t=>d.description=t),type:"textarea",placeholder:"请输入转账说明",rows:3},null,8,["modelValue"])]),_:1}),o(L,{label:"转账凭证"},{default:n(()=>[o(Ue,{ref_key:"uploadRef",ref:Y,action:de.value,headers:ue.value,"before-upload":ye,"on-success":he,"on-error":we,"show-file-list":!1,accept:"image/*"},{default:n(()=>[o(x,{size:"small",type:"primary"},{default:n(()=>e[22]||(e[22]=[g("上传凭证")])),_:1,__:[22]})]),_:1},8,["action","headers"]),d.voucher?(i(),u("div",Fs,[s("img",{src:T(d.voucher),alt:"转账凭证"},null,8,Is)])):V("",!0)]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),o(ae,{modelValue:M.value,"onUpdate:modelValue":e[10]||(e[10]=t=>M.value=t),title:"转账凭证",width:"90%",style:{maxWidth:"600px"}},{footer:n(()=>[s("span",Zs,[o(x,{onClick:e[9]||(e[9]=t=>M.value=!1)},{default:n(()=>e[33]||(e[33]=[g("取消")])),_:1,__:[33]}),o(x,{type:"success",onClick:Ve,loading:b.value},{default:n(()=>e[34]||(e[34]=[g(" 确认收款 ")])),_:1,__:[34]},8,["loading"])])]),default:n(()=>[s("div",Ns,[s("div",As,[e[29]||(e[29]=s("h4",null,"转账信息",-1)),s("div",Es,[e[25]||(e[25]=s("span",{class:"label"},"转账金额:",-1)),s("span",Ws,"¥"+r(w.value.amount),1)]),s("div",Os,[e[26]||(e[26]=s("span",{class:"label"},"转账说明:",-1)),s("span",Ps,r(w.value.description),1)]),s("div",qs,[e[27]||(e[27]=s("span",{class:"label"},"转账时间:",-1)),s("span",Hs,r(S(w.value.created_at)),1)]),s("div",Js,[e[28]||(e[28]=s("span",{class:"label"},"转账类型:",-1)),s("span",Ks,r(H(w.value.transfer_type)),1)])]),w.value.voucher_url?(i(),u("div",Qs,[e[31]||(e[31]=s("h4",null,"转账凭证",-1)),s("div",Xs,[o(se,{src:T(w.value.voucher_url),"preview-src-list":[T(w.value.voucher_url)],class:"voucher-preview",fit:"contain"},{error:n(()=>[s("div",Gs,[o(m,null,{default:n(()=>[o(h(X))]),_:1}),e[30]||(e[30]=s("p",null,"凭证加载失败",-1))])]),_:1},8,["src","preview-src-list"])])])):(i(),u("div",Ys,[o(m,null,{default:n(()=>[o(h(X))]),_:1}),e[32]||(e[32]=s("p",null,"暂无转账凭证",-1))]))])]),_:1},8,["modelValue"])])}}},rt=Ne(et,[["__scopeId","data-v-636ec3c1"]]);export{rt as default};
|