2 lines
16 KiB
JavaScript
2 lines
16 KiB
JavaScript
import{R,d as _e,r as k,a as $,o as ye,g as f,B as q,c as T,k as g,e as t,C as F,w as r,b as s,t as i,l as N,N as ge,f as j,J as U,L as De,s as be,z as K,x as d,Y as Te,G as x,F as Ne,Z as Ee,E as v,_ as we}from"./index-Bc3fuv0D.js";function he(b){return R({url:"/admin/order/getList",method:"get",params:b})}function ve(b){return R({url:"/admin/order/getDetail",method:"get",params:{id:b}})}function Ve(b){return R({url:"/admin/order/refund",method:"post",data:b})}function Se(b){return R({url:"/admin/order/export",method:"get",params:b,responseType:"blob"})}const xe={class:"order-container"},Re={class:"header-content"},Ae={class:"header-right"},Ce={class:"user-info"},Ie={class:"nickname"},Le={class:"phone"},ke={class:"money-text"},Fe={class:"money-text pay-amount"},Ue={key:0},Pe={key:1,class:"text-muted"},Oe={class:"pagination-wrapper"},ze={class:"order-detail"},Me={class:"detail-section"},Ye={class:"detail-section"},Be={class:"detail-section"},Ge={class:"detail-section"},$e={class:"money-text"},qe={class:"money-text pay-amount"},je={key:0,class:"detail-section"},Ke={class:"money-text refund-amount"},He={key:1,class:"detail-section"},Je={class:"related-record"},We={key:2,class:"detail-actions"},Ze={class:"money-text pay-amount"},Qe={class:"form-tip"},Xe=_e({__name:"index",setup(b){const V={ASSESSMENT:1,PLANNER:2},c={PENDING:1,PAID:2,COMPLETED:3,REFUNDING:4,REFUNDED:5,CANCELLED:6},H={WECHAT:1},J=[{text:"最近一周",value:()=>{const l=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*7),[e,l]}},{text:"最近一个月",value:()=>{const l=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*30),[e,l]}},{text:"最近三个月",value:()=>{const l=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*90),[e,l]}}],W=k(),A=k(),C=k(null),o=$({page:1,pageSize:10,orderNo:"",userId:"",orderType:void 0,status:void 0,payType:void 0,createTimeStart:void 0,createTimeEnd:void 0}),a=$({loading:!1,tableData:[],total:0,drawerVisible:!1,detailLoading:!1,orderDetail:null,refundDialogVisible:!1,refundFormData:{orderId:0,orderNo:"",payAmount:0,refundAmount:0,refundReason:""},refundFormLoading:!1,exportLoading:!1}),Z={refundAmount:[{required:!0,message:"请输入退款金额",trigger:"blur"},{validator:(l,e,u)=>{e<=0?u(new Error("退款金额必须大于0")):e>a.refundFormData.payAmount?u(new Error("退款金额不能超过实付金额")):u()},trigger:"blur"}],refundReason:[{required:!0,message:"请输入退款原因",trigger:"blur"},{min:2,max:200,message:"退款原因长度在2-200个字符之间",trigger:"blur"}]};function P(l){switch(l){case V.ASSESSMENT:return"primary";case V.PLANNER:return"success";default:return"primary"}}function O(l){switch(l){case V.ASSESSMENT:return"测评订单";case V.PLANNER:return"规划订单";default:return"未知"}}function z(l){switch(l){case c.PENDING:return"info";case c.PAID:return"primary";case c.COMPLETED:return"success";case c.REFUNDING:return"warning";case c.REFUNDED:return"danger";case c.CANCELLED:return"info";default:return"info"}}function M(l){switch(l){case c.PENDING:return"待支付";case c.PAID:return"已支付";case c.COMPLETED:return"已完成";case c.REFUNDING:return"退款中";case c.REFUNDED:return"已退款";case c.CANCELLED:return"已取消";default:return"未知"}}function Y(l){switch(l){case H.WECHAT:return"微信支付";default:return"未知"}}function E(l){return l==null?"0.00":l.toFixed(2)}function Q(l){return l===c.PAID||l===c.COMPLETED}async function w(){var l,e;a.loading=!0;try{const u={page:o.page,pageSize:o.pageSize};o.orderNo&&(u.orderNo=o.orderNo),o.userId&&(u.userId=Number(o.userId)),o.orderType!==void 0&&o.orderType!==""&&(u.orderType=Number(o.orderType)),o.status!==void 0&&o.status!==""&&(u.status=Number(o.status)),o.payType!==void 0&&o.payType!==""&&(u.payType=Number(o.payType)),o.createTimeStart&&(u.createTimeStart=o.createTimeStart),o.createTimeEnd&&(u.createTimeEnd=o.createTimeEnd);const m=await he(u);if(m.code===0)a.tableData=((l=m.data)==null?void 0:l.list)||[],a.total=((e=m.data)==null?void 0:e.total)||0;else throw new Error(m.message||"获取订单列表失败")}catch(u){const m=u instanceof Error?u.message:"获取订单列表失败";v.error(m)}finally{a.loading=!1}}async function X(l){a.detailLoading=!0;try{const e=await ve(l);if(e.code===0)a.orderDetail=e.data;else throw new Error(e.message||"获取订单详情失败")}catch(e){const u=e instanceof Error?e.message:"获取订单详情失败";v.error(u)}finally{a.detailLoading=!1}}function I(){o.page=1,w()}function ee(){o.orderNo="",o.userId="",o.orderType=void 0,o.status=void 0,o.payType=void 0,o.createTimeStart=void 0,o.createTimeEnd=void 0,C.value=null,o.page=1,w()}function te(l){l?(o.createTimeStart=l[0],o.createTimeEnd=l[1]):(o.createTimeStart=void 0,o.createTimeEnd=void 0)}function ae(l){o.pageSize=l,o.page=1,w()}function re(l){o.page=l,w()}function oe(l){a.drawerVisible=!0,a.orderDetail=null,X(l.id)}function le(l){a.refundFormData={orderId:l.id,orderNo:l.orderNo,payAmount:l.payAmount,refundAmount:l.payAmount,refundReason:""},a.refundDialogVisible=!0}async function ne(){if(A.value){try{await A.value.validate()}catch{return}a.refundFormLoading=!0;try{const l=await Ve({orderId:a.refundFormData.orderId,refundAmount:a.refundFormData.refundAmount,refundReason:a.refundFormData.refundReason});if(l.code===0)v.success("退款申请提交成功"),a.refundDialogVisible=!1,a.drawerVisible=!1,await w();else throw new Error(l.message||"退款申请失败")}catch(l){const e=l instanceof Error?l.message:"退款申请失败";v.error(e)}finally{a.refundFormLoading=!1}}}async function de(){a.exportLoading=!0;try{const l={page:1,pageSize:1e4};o.orderNo&&(l.orderNo=o.orderNo),o.userId&&(l.userId=Number(o.userId)),o.orderType!==void 0&&o.orderType!==""&&(l.orderType=Number(o.orderType)),o.status!==void 0&&o.status!==""&&(l.status=Number(o.status)),o.payType!==void 0&&o.payType!==""&&(l.payType=Number(o.payType)),o.createTimeStart&&(l.createTimeStart=o.createTimeStart),o.createTimeEnd&&(l.createTimeEnd=o.createTimeEnd);const e=await Se(l),u=e.data instanceof Blob?e.data:new Blob([e.data]),m=window.URL.createObjectURL(u),D=document.createElement("a");D.href=m,D.download=`订单列表_${new Date().toISOString().slice(0,10)}.xlsx`,document.body.appendChild(D),D.click(),document.body.removeChild(D),window.URL.revokeObjectURL(m),v.success("导出成功")}catch(l){const e=l instanceof Error?l.message:"导出失败";v.error(e)}finally{a.exportLoading=!1}}return ye(()=>{w()}),(l,e)=>{const u=f("el-icon"),m=f("el-button"),D=f("el-card"),L=f("el-input"),_=f("el-form-item"),se=f("el-date-picker"),B=f("el-form"),y=f("el-table-column"),S=f("el-tag"),ie=f("el-table"),ue=f("el-pagination"),p=f("el-descriptions-item"),h=f("el-descriptions"),pe=f("el-drawer"),me=f("el-input-number"),fe=f("el-dialog"),G=q("loading"),ce=q("permission");return g(),T("div",xe,[t(D,{class:"page-header"},{default:r(()=>[s("div",Re,[e[15]||(e[15]=s("div",{class:"header-left"},[s("h2",{class:"page-title"},"订单管理"),s("span",{class:"page-description"},"管理订单列表,支持搜索、查看详情、退款处理、导出")],-1)),s("div",Ae,[t(m,{type:"success",onClick:de,loading:a.exportLoading},{default:r(()=>[t(u,null,{default:r(()=>[t(N(ge))]),_:1}),e[14]||(e[14]=i(" 导出Excel ",-1))]),_:1},8,["loading"])])])]),_:1}),t(D,{class:"search-card"},{default:r(()=>[t(B,{model:o,inline:""},{default:r(()=>[t(_,{label:"订单号"},{default:r(()=>[t(L,{modelValue:o.orderNo,"onUpdate:modelValue":e[0]||(e[0]=n=>o.orderNo=n),placeholder:"请输入订单号",clearable:"",onKeyup:j(I,["enter"])},null,8,["modelValue"])]),_:1}),t(_,{label:"用户ID"},{default:r(()=>[t(L,{modelValue:o.userId,"onUpdate:modelValue":e[1]||(e[1]=n=>o.userId=n),placeholder:"请输入用户ID",clearable:"",onKeyup:j(I,["enter"])},null,8,["modelValue"])]),_:1}),t(_,{label:"订单类型"},{default:r(()=>[t(N(U),{modelValue:o.orderType,"onUpdate:modelValue":e[2]||(e[2]=n=>o.orderType=n),type:"order_type",placeholder:"请选择类型",clearable:""},null,8,["modelValue"])]),_:1}),t(_,{label:"订单状态"},{default:r(()=>[t(N(U),{modelValue:o.status,"onUpdate:modelValue":e[3]||(e[3]=n=>o.status=n),type:"order_status",placeholder:"请选择状态",clearable:""},null,8,["modelValue"])]),_:1}),t(_,{label:"支付方式"},{default:r(()=>[t(N(U),{modelValue:o.payType,"onUpdate:modelValue":e[4]||(e[4]=n=>o.payType=n),type:"pay_type",placeholder:"请选择支付方式",clearable:""},null,8,["modelValue"])]),_:1}),t(_,{label:"创建时间"},{default:r(()=>[t(se,{modelValue:C.value,"onUpdate:modelValue":e[5]||(e[5]=n=>C.value=n),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",shortcuts:J,onChange:te},null,8,["modelValue"])]),_:1}),t(_,null,{default:r(()=>[t(m,{type:"primary",onClick:I},{default:r(()=>[t(u,null,{default:r(()=>[t(N(De))]),_:1}),e[16]||(e[16]=i(" 搜索 ",-1))]),_:1}),t(m,{onClick:ee},{default:r(()=>[t(u,null,{default:r(()=>[t(N(be))]),_:1}),e[17]||(e[17]=i(" 重置 ",-1))]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),F((g(),K(D,{class:"table-card"},{default:r(()=>[t(ie,{ref_key:"tableRef",ref:W,data:a.tableData,"row-key":"id",stripe:""},{default:r(()=>[t(y,{prop:"orderNo",label:"订单号",width:"180","show-overflow-tooltip":""}),t(y,{label:"用户信息","min-width":"150"},{default:r(({row:n})=>[s("div",Ce,[s("div",Ie,d(n.userNickname),1),s("div",Le,d(n.userPhone),1)])]),_:1}),t(y,{label:"订单类型",width:"100",align:"center"},{default:r(({row:n})=>[t(S,{type:P(n.orderType)},{default:r(()=>[i(d(n.orderTypeName||O(n.orderType)),1)]),_:2},1032,["type"])]),_:1}),t(y,{prop:"productName",label:"商品名称","min-width":"150","show-overflow-tooltip":""}),t(y,{prop:"amount",label:"订单金额",width:"100",align:"right"},{default:r(({row:n})=>[s("span",ke,"¥"+d(E(n.amount)),1)]),_:1}),t(y,{prop:"payAmount",label:"实付金额",width:"100",align:"right"},{default:r(({row:n})=>[s("span",Fe,"¥"+d(E(n.payAmount)),1)]),_:1}),t(y,{label:"支付方式",width:"100",align:"center"},{default:r(({row:n})=>[n.payType?(g(),T("span",Ue,d(n.payTypeName||Y(n.payType)),1)):(g(),T("span",Pe,"-"))]),_:1}),t(y,{label:"状态",width:"100",align:"center"},{default:r(({row:n})=>[t(S,{type:z(n.status)},{default:r(()=>[i(d(n.statusName||M(n.status)),1)]),_:2},1032,["type"])]),_:1}),t(y,{prop:"payTime",label:"支付时间",width:"170",align:"center"},{default:r(({row:n})=>[i(d(n.payTime||"-"),1)]),_:1}),t(y,{prop:"createTime",label:"创建时间",width:"170",align:"center"}),t(y,{label:"操作",width:"100",fixed:"right",align:"center"},{default:r(({row:n})=>[t(m,{type:"primary",link:"",size:"small",onClick:et=>oe(n)},{default:r(()=>[t(u,null,{default:r(()=>[t(N(Te))]),_:1}),e[18]||(e[18]=i(" 详情 ",-1))]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),s("div",Oe,[t(ue,{"current-page":o.page,"onUpdate:currentPage":e[6]||(e[6]=n=>o.page=n),"page-size":o.pageSize,"onUpdate:pageSize":e[7]||(e[7]=n=>o.pageSize=n),"page-sizes":[10,20,50,100],total:a.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:ae,onCurrentChange:re},null,8,["current-page","page-size","total"])])]),_:1})),[[G,a.loading]]),t(pe,{modelValue:a.drawerVisible,"onUpdate:modelValue":e[9]||(e[9]=n=>a.drawerVisible=n),title:"订单详情",size:"550px","close-on-click-modal":!0},{default:r(()=>[F((g(),T("div",ze,[a.orderDetail?(g(),T(Ne,{key:0},[s("div",Me,[e[19]||(e[19]=s("h4",{class:"section-title"},"订单信息",-1)),t(h,{column:2,border:""},{default:r(()=>[t(p,{label:"订单号",span:2},{default:r(()=>[i(d(a.orderDetail.orderNo),1)]),_:1}),t(p,{label:"订单类型"},{default:r(()=>[t(S,{type:P(a.orderDetail.orderType)},{default:r(()=>[i(d(a.orderDetail.orderTypeName||O(a.orderDetail.orderType)),1)]),_:1},8,["type"])]),_:1}),t(p,{label:"订单状态"},{default:r(()=>[t(S,{type:z(a.orderDetail.status)},{default:r(()=>[i(d(a.orderDetail.statusName||M(a.orderDetail.status)),1)]),_:1},8,["type"])]),_:1}),t(p,{label:"创建时间"},{default:r(()=>[i(d(a.orderDetail.createTime),1)]),_:1}),t(p,{label:"备注"},{default:r(()=>[i(d(a.orderDetail.remark||"-"),1)]),_:1})]),_:1})]),s("div",Ye,[e[20]||(e[20]=s("h4",{class:"section-title"},"用户信息",-1)),t(h,{column:2,border:""},{default:r(()=>[t(p,{label:"用户ID"},{default:r(()=>[i(d(a.orderDetail.userId),1)]),_:1}),t(p,{label:"用户昵称"},{default:r(()=>[i(d(a.orderDetail.userNickname),1)]),_:1}),t(p,{label:"手机号",span:2},{default:r(()=>[i(d(a.orderDetail.userPhone),1)]),_:1})]),_:1})]),s("div",Be,[e[21]||(e[21]=s("h4",{class:"section-title"},"商品信息",-1)),t(h,{column:2,border:""},{default:r(()=>[t(p,{label:"商品ID"},{default:r(()=>[i(d(a.orderDetail.productId),1)]),_:1}),t(p,{label:"商品名称"},{default:r(()=>[i(d(a.orderDetail.productName),1)]),_:1}),t(p,{label:"邀请码",span:2},{default:r(()=>[i(d(a.orderDetail.inviteCode||"-"),1)]),_:1})]),_:1})]),s("div",Ge,[e[22]||(e[22]=s("h4",{class:"section-title"},"支付信息",-1)),t(h,{column:2,border:""},{default:r(()=>[t(p,{label:"订单金额"},{default:r(()=>[s("span",$e,"¥"+d(E(a.orderDetail.amount)),1)]),_:1}),t(p,{label:"实付金额"},{default:r(()=>[s("span",qe,"¥"+d(E(a.orderDetail.payAmount)),1)]),_:1}),t(p,{label:"支付方式"},{default:r(()=>[i(d(a.orderDetail.payTypeName||(a.orderDetail.payType?Y(a.orderDetail.payType):"-")),1)]),_:1}),t(p,{label:"支付时间"},{default:r(()=>[i(d(a.orderDetail.payTime||"-"),1)]),_:1}),t(p,{label:"交易流水号",span:2},{default:r(()=>[i(d(a.orderDetail.transactionId||"-"),1)]),_:1})]),_:1})]),a.orderDetail.refundAmount!==null?(g(),T("div",je,[e[23]||(e[23]=s("h4",{class:"section-title"},"退款信息",-1)),t(h,{column:2,border:""},{default:r(()=>[t(p,{label:"退款金额"},{default:r(()=>[s("span",Ke,"¥"+d(E(a.orderDetail.refundAmount)),1)]),_:1}),t(p,{label:"退款时间"},{default:r(()=>[i(d(a.orderDetail.refundTime||"-"),1)]),_:1}),t(p,{label:"退款原因",span:2},{default:r(()=>[i(d(a.orderDetail.refundReason||"-"),1)]),_:1})]),_:1})])):x("",!0),a.orderDetail.relatedRecord?(g(),T("div",He,[e[24]||(e[24]=s("h4",{class:"section-title"},"关联记录",-1)),t(h,{column:1,border:""},{default:r(()=>[t(p,{label:"关联数据"},{default:r(()=>[s("pre",Je,d(JSON.stringify(a.orderDetail.relatedRecord,null,2)),1)]),_:1})]),_:1})])):x("",!0),Q(a.orderDetail.status)?(g(),T("div",We,[F((g(),K(m,{type:"danger",onClick:e[8]||(e[8]=n=>le(a.orderDetail))},{default:r(()=>[t(u,null,{default:r(()=>[t(N(Ee))]),_:1}),e[25]||(e[25]=i(" 申请退款 ",-1))]),_:1})),[[ce,"order:refund"]])])):x("",!0)],64)):x("",!0)])),[[G,a.detailLoading]])]),_:1},8,["modelValue"]),t(fe,{modelValue:a.refundDialogVisible,"onUpdate:modelValue":e[13]||(e[13]=n=>a.refundDialogVisible=n),title:"申请退款",width:"450px","close-on-click-modal":!1},{footer:r(()=>[t(m,{onClick:e[12]||(e[12]=n=>a.refundDialogVisible=!1)},{default:r(()=>[...e[26]||(e[26]=[i("取消",-1)])]),_:1}),t(m,{type:"primary",loading:a.refundFormLoading,onClick:ne},{default:r(()=>[...e[27]||(e[27]=[i(" 确定退款 ",-1)])]),_:1},8,["loading"])]),default:r(()=>[t(B,{ref_key:"refundFormRef",ref:A,model:a.refundFormData,rules:Z,"label-width":"100px"},{default:r(()=>[t(_,{label:"订单号"},{default:r(()=>[s("span",null,d(a.refundFormData.orderNo),1)]),_:1}),t(_,{label:"实付金额"},{default:r(()=>[s("span",Ze,"¥"+d(E(a.refundFormData.payAmount)),1)]),_:1}),t(_,{label:"退款金额",prop:"refundAmount"},{default:r(()=>[t(me,{modelValue:a.refundFormData.refundAmount,"onUpdate:modelValue":e[10]||(e[10]=n=>a.refundFormData.refundAmount=n),min:.01,max:a.refundFormData.payAmount,precision:2,step:.01,style:{width:"200px"}},null,8,["modelValue","max"]),s("span",Qe,"最大可退 ¥"+d(E(a.refundFormData.payAmount)),1)]),_:1}),t(_,{label:"退款原因",prop:"refundReason"},{default:r(()=>[t(L,{modelValue:a.refundFormData.refundReason,"onUpdate:modelValue":e[11]||(e[11]=n=>a.refundFormData.refundReason=n),type:"textarea",rows:3,placeholder:"请输入退款原因",maxlength:"200","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),at=we(Xe,[["__scopeId","data-v-800dcb96"]]);export{at as default};
|