import{_ as Q,a as h}from"./index-BlP3rxMf.js";import{g as I,u as N,a as L}from"./index-BqycflTi.js";import{y as l,A as t,K as u,Q as g,O as r,D as f,aD as F,I as p,al as _,P as v,a6 as y,M as m,V as j,z as i}from"./vendor-C3mpOp0n.js";import"./elementPlus-DFx51bSH.js";const q={name:"Matching",data(){return{stats:{userStats:null},creating:!1,processing:!1,pendingAllocations:[],matchingOrders:[],showOrderDetail:!1,selectedOrder:null,matchingType:"small",customAmount:"",transferDialog:{visible:!1,allocationId:null,toUser:{id:null,name:"",wechatQr:"",alipayQr:"",unionpayQr:"",bankCard:""},amount:0,actualAmount:0,voucher:"",description:""}}},async mounted(){await this.loadData()},methods:{async loadData(){try{await Promise.all([this.loadStats(),this.loadPendingAllocations(),this.loadMatchingOrders()])}catch(e){console.error("加载数据失败:",e),this.$message.error("加载数据失败")}},async loadStats(){try{const e=await h.get("/matching/stats");this.stats=e.data.data||{}}catch(e){console.error("加载统计数据失败:",e)}},async loadPendingAllocations(){try{const e=await h.get("/matching/pending-allocations");this.pendingAllocations=e.data.data||[]}catch(e){console.error("加载待处理分配失败:",e)}},async loadMatchingOrders(){try{const e=await h.get("/matching/my-orders");this.matchingOrders=e.data.data||[]}catch(e){console.error("加载匹配订单失败:",e)}},async createOrder(){var e,s;this.creating=!0;try{const d={matchingType:this.matchingType};if(this.matchingType==="large"){if(!this.isValidCustomAmount){this.$message.error("请输入有效的匹配金额(5000-50000元)");return}d.customAmount=parseFloat(this.customAmount)}await h.post("/matching/create",d);const c=this.matchingType==="small"?"小额匹配成功!已为您生成3笔转账分配":`大额匹配成功!已为您生成${this.getLargeMatchingCount()}笔转账分配`;this.$message.success(c),await this.loadData()}catch(d){console.error("创建匹配订单失败:",d);const c=((s=(e=d.response)==null?void 0:e.data)==null?void 0:s.message)||"匹配失败,请稍后重试";c.includes("审核")||c.includes("上传")||c.includes("完善")?this.$confirm(c+",是否前往个人中心完善资料?","提示",{confirmButtonText:"前往完善",cancelButtonText:"取消",type:"warning"}).then(()=>{this.$router.push("/profile")}).catch(()=>{}):this.$message.error(c)}finally{this.creating=!1}},async confirmAllocation(e,s){try{const c=(await h.get(`/matching/allocation/${e}`)).data.data,o=(await h.get(`/users/payment-info/${c.to_user_id}`)).data.data;this.transferDialog={visible:!0,allocationId:e,toUser:{id:c.to_user_id,name:c.to_user_name,wechatQr:o.wechat_qr,alipayQr:o.alipay_qr,unionpayQr:o.unionpay_qr,bankCard:o.bank_card},amount:s,actualAmount:s}}catch(d){console.error("获取转账信息失败:",d),this.$message.error("获取转账信息失败")}},async rejectAllocation(e){const s=prompt("请输入拒绝原因(可选):");if(s!==null){this.processing=!0;try{await h.post(`/matching/reject-allocation/${e}`,{reason:s}),this.$message.success("已拒绝分配"),await this.loadData()}catch(d){console.error("拒绝分配失败:",d),this.$message.error("拒绝分配失败")}finally{this.processing=!1}}},async viewOrderDetail(e){try{const s=await h.get(`/matching/order/${e}`);this.selectedOrder=s.data.data,this.showOrderDetail=!0}catch(s){console.error("获取订单详情失败:",s),this.$message.error("获取订单详情失败")}},closeOrderDetail(){this.showOrderDetail=!1,this.selectedOrder=null},getStatusText(e){return{pending:"待处理",matching:"匹配中",completed:"已完成",cancelled:"已取消",confirmed:"已确认",rejected:"已拒绝",failed:"匹配失败"}[e]||e},getActionText(e){return{join:"加入",confirm:"确认",reject:"拒绝",complete:"完成"}[e]||e},formatDate(e){return new Date(e).toLocaleString("zh-CN")},formatDeadline(e){if(!e)return"";const s=new Date(e),d=new Date,c=new Date(d.getFullYear(),d.getMonth(),d.getDate()),n=new Date(s.getFullYear(),s.getMonth(),s.getDate()),o=s.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"});return n.getTime()===c.getTime()?`今天${o}`:n.getTime()===c.getTime()+24*60*60*1e3?`明天${o}`:s.toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})},formatAmount(e){const s=parseFloat(e);return isNaN(s)?"0.00":s.toFixed(2)},getLargeMatchingRule(){const e=parseFloat(this.customAmount)||0;return e<=0?"请输入金额":e<5e3?"金额不能少于5000元":e>5e4?"金额不能超过50000元":e<=15e3?"分成3笔随机金额":"随机分拆,每笔1000-8000元"},getLargeMatchingCount(){const e=parseFloat(this.customAmount)||0;if(e<=0||e<5e3||e>5e4)return"0";if(e<=15e3)return"3";{const s=Math.ceil(e/8e3),d=Math.floor(e/1e3);return`${s}-${Math.min(d,10)}`}},closeTransferDialog(){this.transferDialog.visible=!1,this.transferDialog.allocationId=null,this.transferDialog.toUser={id:null,name:"",wechatQr:"",alipayQr:"",unionpayQr:"",bankCard:""},this.transferDialog.amount=0,this.transferDialog.actualAmount=0,this.transferDialog.voucher="",this.transferDialog.description=""},getImageUrl(e){return L(e)},beforeUpload(e){const s=e.type.startsWith("image/"),d=e.size/1024/1024<5;return s||this.$message.error("只能上传图片文件!"),d||this.$message.error("图片大小不能超过 5MB!"),s&&d},handleUploadSuccess(e){e.success?(this.transferDialog.voucher=e.url,this.$message.success("凭证上传成功")):this.$message.error(e.message||"上传失败")},handleUploadError(e){console.error("上传失败:",e),this.$message.error("上传失败")},async submitTransfer(){var s,d;if(!this.transferDialog.voucher){this.$message.error("请先上传转账凭证");return}const e=parseFloat(this.transferDialog.actualAmount);this.processing=!0;try{await h.post(`/matching/confirm-allocation/${this.transferDialog.allocationId}`,{transferAmount:e,description:this.transferDialog.description,voucher:this.transferDialog.voucher}),this.$message.success("转账凭证已提交,转账记录已创建"),this.closeTransferDialog(),this.$router.push("/transfers")}catch(c){console.error("确认分配失败:",c),this.$message.error(((d=(s=c.response)==null?void 0:s.data)==null?void 0:d.message)||"确认分配失败")}finally{this.processing=!1}}},computed:{isValidCustomAmount(){const e=parseFloat(this.customAmount);return!isNaN(e)&&e>=5e3&&e<=5e4},uploadUrl(){return N},uploadHeaders(){return I().headers}}},z={class:"matching-container"},R={class:"stats-cards"},B={class:"stat-card"},P={class:"stat-number"},E={class:"stat-card"},H={class:"stat-number"},W={class:"stat-card"},Y={class:"stat-number"},K={class:"stat-card"},G={class:"stat-number"},J={class:"action-section"},X={class:"create-order-card"},Z={class:"matching-type-selector"},$={class:"type-tabs"},ss={key:0,class:"matching-info"},ts={key:1,class:"matching-info"},es={class:"info-item"},as={class:"custom-amount-input"},ns={class:"info-item"},rs={class:"value"},os={class:"info-item"},ls={class:"value"},is=["disabled"],ds={key:2,class:"tips"},cs={key:3,class:"tips"},us={key:0,class:"pending-section"},ms={class:"allocation-list"},gs={class:"allocation-info"},ps={class:"allocation-header"},hs={class:"order-id"},_s={class:"cycle"},fs={class:"allocation-details"},vs={class:"amount"},ys={class:"deadline-info"},bs={class:"deadline-time"},Ds={key:0,class:"timeout-warning"},ks={class:"warning-text"},ws={class:"allocation-actions"},Cs=["onClick","disabled","title"],As=["onClick","disabled"],Ts={class:"orders-section"},Os={class:"orders-list"},Us=["onClick"],Ms={class:"order-header"},xs={class:"order-id"},Vs={key:0,class:"system-reverse-tag"},Ss={class:"order-info"},Qs={key:0},Is={key:1,class:"system-note"},Ns={key:0,class:"empty-state"},Ls={class:"modal-header"},Fs={key:0,class:"modal-body"},js={class:"order-summary"},qs={class:"allocations-section"},zs={class:"allocation-timeline"},Rs={class:"timeline-content"},Bs={class:"timeline-header"},Ps={class:"cycle"},Es={class:"amount"},Hs={class:"records-section"},Ws={class:"records-list"},Ys={class:"record-info"},Ks={class:"action"},Gs={class:"user"},Js={class:"time"},Xs={key:0,class:"record-amount"},Zs={key:1,class:"record-note"},$s={class:"transfer-dialog-content"},st={class:"transfer-info"},tt={class:"payment-codes"},et={class:"payment-grid"},at={key:0,class:"payment-item"},nt=["src"],rt={key:1,class:"payment-item"},ot=["src"],lt={key:2,class:"payment-item"},it=["src"],dt={key:3,class:"payment-item"},ct={class:"bank-card"},ut={class:"transfer-form"},mt={key:0,class:"upload-preview"},gt=["src"],pt={key:1,class:"upload-tip"},ht={class:"dialog-footer"};function _t(e,s,d,c,n,o){var w,C,A,T,O,U;const b=_("el-input"),D=_("el-form-item"),k=_("el-button"),x=_("el-upload"),V=_("el-form"),S=_("el-dialog");return i(),l("div",z,[s[49]||(s[49]=t("div",{class:"header"},[t("h1",null,"资金循环匹配"),t("p",{class:"subtitle"},"智能匹配,循环增值")],-1)),t("div",R,[t("div",B,[t("div",P,r(((w=n.stats.userStats)==null?void 0:w.initiated_orders)||0),1),s[10]||(s[10]=t("div",{class:"stat-label"},"发起订单",-1))]),t("div",E,[t("div",H,r(((C=n.stats.userStats)==null?void 0:C.participated_allocations)||0),1),s[11]||(s[11]=t("div",{class:"stat-label"},"参与分配",-1))]),t("div",W,[t("div",Y,"¥"+r(o.formatAmount((A=n.stats.userStats)==null?void 0:A.total_initiated_amount)),1),s[12]||(s[12]=t("div",{class:"stat-label"},"发起总额",-1))]),t("div",K,[t("div",G,"¥"+r(o.formatAmount((T=n.stats.userStats)==null?void 0:T.total_participated_amount)),1),s[13]||(s[13]=t("div",{class:"stat-label"},"参与总额",-1))])]),t("div",J,[t("div",X,[s[21]||(s[21]=t("h3",null,"资金匹配",-1)),t("div",Z,[t("div",$,[t("button",{class:f(["type-tab",{active:n.matchingType==="small"}]),onClick:s[0]||(s[0]=a=>n.matchingType="small")}," 小额匹配 ",2),t("button",{class:f(["type-tab",{active:n.matchingType==="large"}]),onClick:s[1]||(s[1]=a=>n.matchingType="large")}," 大额匹配 ",2)])]),n.matchingType==="small"?(i(),l("div",ss,s[14]||(s[14]=[F('
匹配总额:¥5,000.00
分配笔数:3笔
单笔范围:¥1,000 - ¥5,000
',3)]))):u("",!0),n.matchingType==="large"?(i(),l("div",ts,[t("div",es,[s[16]||(s[16]=t("span",{class:"label"},"自定义金额:",-1)),t("div",as,[g(b,{modelValue:n.customAmount,"onUpdate:modelValue":s[2]||(s[2]=a=>n.customAmount=a),type:"number",min:5e3,max:5e4,step:"100",placeholder:"请输入5000-50000之间的金额"},{prepend:p(()=>s[15]||(s[15]=[m("¥")])),_:1},8,["modelValue"])])]),t("div",ns,[s[17]||(s[17]=t("span",{class:"label"},"分配规则:",-1)),t("span",rs,r(o.getLargeMatchingRule()),1)]),t("div",os,[s[18]||(s[18]=t("span",{class:"label"},"预计笔数:",-1)),t("span",ls,r(o.getLargeMatchingCount())+"笔",1)])])):u("",!0),t("button",{onClick:s[3]||(s[3]=(...a)=>o.createOrder&&o.createOrder(...a)),disabled:n.creating||n.matchingType==="large"&&!o.isValidCustomAmount,class:"create-btn"},r(n.creating?"匹配中...":"开始匹配"),9,is),n.matchingType==="small"?(i(),l("div",ds,s[19]||(s[19]=[t("p",null,"• 系统将为您匹配3笔转账,总金额5000元",-1),t("p",null,"• 优先匹配已完成出款的用户",-1),t("p",null,"• 每笔金额随机分配,确保资金循环",-1)]))):u("",!0),n.matchingType==="large"?(i(),l("div",cs,s[20]||(s[20]=[t("p",null,"• 金额范围:5000-50000元",-1),t("p",null,"• 15000元以下:分成3笔随机金额",-1),t("p",null,"• 15000元以上:随机分拆,每笔1000-8000元",-1),t("p",null,"• 优先匹配已完成出款的用户",-1)]))):u("",!0)])]),n.pendingAllocations.length>0?(i(),l("div",us,[s[26]||(s[26]=t("h3",null,"待处理分配",-1)),t("div",ms,[(i(!0),l(v,null,y(n.pendingAllocations,a=>(i(),l("div",{key:a.id,class:"allocation-card"},[t("div",gs,[t("div",ps,[t("span",hs,"订单 #"+r(a.matching_order_id),1),t("span",_s,"第"+r(a.cycle_number)+"轮",1)]),t("div",fs,[t("p",null,[s[22]||(s[22]=m("转账给: ")),t("strong",null,r(a.to_user_name),1)]),t("p",null,[s[23]||(s[23]=m("金额: ")),t("strong",vs,"¥"+r(a.amount),1)]),t("p",null,"总金额: ¥"+r(a.total_amount),1),t("p",ys,[s[24]||(s[24]=m(" 转账时效: ")),t("span",{class:f(["time-left",a.time_status])},r(a.time_left),3),t("span",bs,"("+r(o.formatDeadline(a.deadline))+"前)",1)]),a.can_transfer?u("",!0):(i(),l("div",Ds,[s[25]||(s[25]=t("i",{class:"el-icon-warning"},null,-1)),t("span",ks,r(a.timeout_reason),1)]))])]),t("div",ws,[t("button",{onClick:M=>o.confirmAllocation(a.id,a.amount),class:"confirm-btn",disabled:n.processing||!a.can_transfer,title:a.can_transfer?"":a.timeout_reason},r(a.can_transfer?"确认转账":"无法转账"),9,Cs),t("button",{onClick:M=>o.rejectAllocation(a.id),class:"reject-btn",disabled:n.processing}," 拒绝 ",8,As)])]))),128))])])):u("",!0),t("div",Ts,[s[28]||(s[28]=t("h3",null,"我的匹配订单",-1)),t("div",Os,[(i(!0),l(v,null,y(n.matchingOrders,a=>(i(),l("div",{key:a.id,class:"order-card",onClick:M=>o.viewOrderDetail(a.id)},[t("div",Ms,[t("span",xs,"#"+r(a.id),1),a.is_system_reverse?(i(),l("span",Vs,"系统反向匹配")):u("",!0),t("span",{class:f(["status",a.status])},r(o.getStatusText(a.status)),3)]),t("div",Ss,[t("p",null,"金额: ¥"+r(a.amount),1),t("p",null,"发起人: "+r(a.initiator_name),1),a.is_system_reverse?u("",!0):(i(),l("p",Qs,"轮次: "+r(a.cycle_count+1)+"/"+r(a.max_cycles),1)),a.is_system_reverse?(i(),l("p",Is,"系统自动发起,向负余额用户补充资金")):u("",!0),t("p",null,"创建时间: "+r(o.formatDate(a.created_at)),1)])],8,Us))),128))]),n.matchingOrders.length===0?(i(),l("div",Ns,s[27]||(s[27]=[t("p",null,"暂无匹配订单",-1)]))):u("",!0)]),n.showOrderDetail?(i(),l("div",{key:1,class:"modal-overlay",onClick:s[6]||(s[6]=(...a)=>o.closeOrderDetail&&o.closeOrderDetail(...a))},[t("div",{class:"modal-content",onClick:s[5]||(s[5]=j(()=>{},["stop"]))},[t("div",Ls,[t("h3",null,"订单详情 #"+r((U=(O=n.selectedOrder)==null?void 0:O.order)==null?void 0:U.id),1),t("button",{onClick:s[4]||(s[4]=(...a)=>o.closeOrderDetail&&o.closeOrderDetail(...a)),class:"close-btn"},"×")]),n.selectedOrder?(i(),l("div",Fs,[t("div",js,[t("p",null,[s[29]||(s[29]=t("strong",null,"状态:",-1)),m(" "+r(o.getStatusText(n.selectedOrder.order.status)),1)]),t("p",null,[s[30]||(s[30]=t("strong",null,"金额:",-1)),m(" ¥"+r(n.selectedOrder.order.amount),1)]),t("p",null,[s[31]||(s[31]=t("strong",null,"发起人:",-1)),m(" "+r(n.selectedOrder.order.initiator_name),1)]),t("p",null,[s[32]||(s[32]=t("strong",null,"轮次:",-1)),m(" "+r(n.selectedOrder.order.cycle_count+1)+"/"+r(n.selectedOrder.order.max_cycles),1)])]),t("div",qs,[s[33]||(s[33]=t("h4",null,"分配详情",-1)),t("div",zs,[(i(!0),l(v,null,y(n.selectedOrder.allocations,a=>(i(),l("div",{key:a.id,class:"timeline-item"},[t("div",Rs,[t("div",Bs,[t("span",Ps,"第"+r(a.cycle_number)+"轮",1),t("span",{class:f(["status",a.status])},r(o.getStatusText(a.status)),3)]),t("p",null,r(a.from_user_name)+" → "+r(a.to_user_name),1),t("p",Es,"¥"+r(a.amount),1)])]))),128))])]),t("div",Hs,[s[34]||(s[34]=t("h4",null,"操作记录",-1)),t("div",Ws,[(i(!0),l(v,null,y(n.selectedOrder.records,a=>(i(),l("div",{key:a.id,class:"record-item"},[t("div",Ys,[t("span",Ks,r(o.getActionText(a.action)),1),t("span",Gs,r(a.username),1),t("span",Js,r(o.formatDate(a.created_at)),1)]),a.amount?(i(),l("div",Xs,"¥"+r(a.amount),1)):u("",!0),a.note?(i(),l("div",Zs,r(a.note),1)):u("",!0)]))),128))])])])):u("",!0)])])):u("",!0),g(S,{modelValue:n.transferDialog.visible,"onUpdate:modelValue":s[9]||(s[9]=a=>n.transferDialog.visible=a),title:"确认转账",width:"90%",style:{maxWidth:"600px"},onClose:o.closeTransferDialog},{footer:p(()=>[t("span",ht,[g(k,{onClick:o.closeTransferDialog},{default:p(()=>s[47]||(s[47]=[m("取消")])),_:1,__:[47]},8,["onClick"]),g(k,{type:"primary",onClick:o.submitTransfer,loading:n.processing,disabled:!n.transferDialog.voucher},{default:p(()=>s[48]||(s[48]=[m(" 确认转账 ")])),_:1,__:[48]},8,["onClick","loading","disabled"])])]),default:p(()=>[t("div",$s,[t("div",st,[s[37]||(s[37]=t("h4",null,"转账信息",-1)),t("p",null,[s[35]||(s[35]=t("strong",null,"收款人:",-1)),m(" "+r(n.transferDialog.toUser.name),1)]),t("p",null,[s[36]||(s[36]=t("strong",null,"转账金额:",-1)),m(" ¥"+r(n.transferDialog.amount),1)])]),t("div",tt,[s[42]||(s[42]=t("h4",null,"收款方式",-1)),t("div",et,[n.transferDialog.toUser.wechatQr?(i(),l("div",at,[s[38]||(s[38]=t("h5",null,"微信收款码",-1)),t("img",{src:o.getImageUrl(n.transferDialog.toUser.wechatQr),alt:"微信收款码",class:"qr-code"},null,8,nt)])):u("",!0),n.transferDialog.toUser.alipayQr?(i(),l("div",rt,[s[39]||(s[39]=t("h5",null,"支付宝收款码",-1)),t("img",{src:o.getImageUrl(n.transferDialog.toUser.alipayQr),alt:"支付宝收款码",class:"qr-code"},null,8,ot)])):u("",!0),n.transferDialog.toUser.unionpayQr?(i(),l("div",lt,[s[40]||(s[40]=t("h5",null,"云闪付收款码",-1)),t("img",{src:o.getImageUrl(n.transferDialog.toUser.unionpayQr),alt:"云闪付收款码",class:"qr-code"},null,8,it)])):u("",!0),n.transferDialog.toUser.bankCard?(i(),l("div",dt,[s[41]||(s[41]=t("h5",null,"银行账号",-1)),t("p",ct,r(n.transferDialog.toUser.bankCard),1)])):u("",!0)])]),t("div",ut,[s[46]||(s[46]=t("h4",null,"转账确认",-1)),g(V,{"label-width":"100px"},{default:p(()=>[g(D,{label:"转账金额"},{default:p(()=>[g(b,{modelValue:n.transferDialog.actualAmount,"onUpdate:modelValue":s[7]||(s[7]=a=>n.transferDialog.actualAmount=a),readonly:"",disabled:""},{prepend:p(()=>s[43]||(s[43]=[m("¥")])),_:1},8,["modelValue"])]),_:1}),g(D,{label:"转账说明"},{default:p(()=>[g(b,{modelValue:n.transferDialog.description,"onUpdate:modelValue":s[8]||(s[8]=a=>n.transferDialog.description=a),type:"textarea",placeholder:"请输入转账说明(可选)",rows:3},null,8,["modelValue"])]),_:1}),g(D,{label:"转账凭证"},{default:p(()=>[g(x,{action:o.uploadUrl,headers:o.uploadHeaders,"before-upload":o.beforeUpload,"on-success":o.handleUploadSuccess,"on-error":o.handleUploadError,"show-file-list":!1,accept:"image/*"},{default:p(()=>[g(k,{size:"small",type:"primary"},{default:p(()=>s[44]||(s[44]=[m("上传凭证")])),_:1,__:[44]})]),_:1},8,["action","headers","before-upload","on-success","on-error"]),n.transferDialog.voucher?(i(),l("div",mt,[t("img",{src:o.getImageUrl(n.transferDialog.voucher),alt:"转账凭证"},null,8,gt)])):(i(),l("div",pt,s[45]||(s[45]=[t("span",{class:"tip-text"},"* 必须上传转账凭证才能确认转账",-1)])))]),_:1})]),_:1})])])]),_:1},8,["modelValue","onClose"])])}const Dt=Q(q,[["render",_t],["__scopeId","data-v-32b8e01b"]]);export{Dt as default};