7 lines
8.7 KiB
JavaScript
7 lines
8.7 KiB
JavaScript
import{r as m,b as ae,k as se,z as ne,c as u,I as oe,o as p,d as F,e as n,f as s,w as l,E as b,h as i,F as re,m as ue,l as f,t as _,L as w,G as E,J as ie,n as de,cf as pe,ce as _e}from"./index-01a32b87.js";import{g as ce,e as me,f as fe}from"./coupons-fba9fa19.js";import{_ as ge}from"./_plugin-vue_export-helper-c27b6911.js";const ve={class:"coupon-distribute-container"},ye={class:"coupon-option"},be={class:"coupon-preview"},we={class:"preview-item"},he={class:"value"},xe={class:"preview-item"},Ce={class:"value"},De={class:"preview-item"},Ve={class:"value"},qe={class:"card-header"},ke={style:{color:"#67c23a"}},Ie={style:{color:"#f56c6c"}},ze={class:"pagination-container"},$e={__name:"CouponDistribute",setup(Te){const d=m("single"),h=m(null),C=m(!1),q=m([]),c=m(null),r=ae({coupon_id:"",user_id:null,user_ids_text:"",quantity:1}),v={coupon_id:[{required:!0,message:"请选择优惠券",trigger:"change"}],user_id:[{required:!0,message:"请输入用户ID",trigger:"blur"},{type:"number",message:"用户ID必须为数字",trigger:"blur"}],user_ids_text:[{required:!0,message:"请输入用户ID列表",trigger:"blur"}],quantity:[{required:!0,message:"请输入发放数量",trigger:"blur"},{type:"number",min:1,max:100,message:"发放数量必须在1-100之间",trigger:"blur"}]},L=m([]),k=m(!1),D=m(1),I=m(10),M=m(0),H=async()=>{try{const{data:t}=await ce({page:1,page_size:1e3,status:1});q.value=t.list||[]}catch{b.error("获取优惠券列表失败")}},R=t=>{c.value=q.value.find(e=>e.id===t)},B=t=>({1:"满减券",2:"折扣券",3:"免邮券"})[t]||"未知",P=t=>({1:"success",2:"warning",3:"info"})[t]||"",j=t=>t.type===1?`满${(t.min_amount/100).toFixed(2)}元减${(t.value/100).toFixed(2)}元`:t.type===2?`${(t.value/10).toFixed(1)}折`:t.type===3?"免邮":"-",z=t=>t?new Date(t).toLocaleString("zh-CN"):"-",G=t=>{if(!t)return[];const e=t.split(/[\n,]/).map(o=>o.trim()).filter(o=>o!=="").map(o=>parseInt(o)).filter(o=>!isNaN(o));return[...new Set(e)]},J=async()=>{if(!h.value)return;v.coupon_id,d.value==="single"?(v.user_id,v.quantity):d.value==="batch"&&(v.user_ids_text,v.quantity);try{await h.value.validate()}catch{return}let t="",e={coupon_id:r.coupon_id,quantity:r.quantity};if(d.value==="single")t=`确定要给用户 ${r.user_id} 发放 ${r.quantity} 张优惠券吗?`,e.user_ids=[r.user_id];else if(d.value==="batch"){const o=G(r.user_ids_text);if(o.length===0){b.error("请输入有效的用户ID");return}t=`确定要给 ${o.length} 个用户发放优惠券吗?每人 ${r.quantity} 张`,e.user_ids=o}else d.value==="all"&&(t="确定要给所有用户发放优惠券吗?此操作不可撤销!",e.distribute_all=!0,e.quantity=1);try{await de.confirm(t,"确认发放",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),C.value=!0;try{await fe(e),b.success("发放成功"),N(),x()}catch(o){b.error(o.message||"发放失败")}finally{C.value=!1}}catch(o){o!=="cancel"&&b.error(o.message||"发放失败")}finally{C.value=!1}},N=()=>{var t;r.coupon_id="",r.user_id=null,r.user_ids_text="",r.quantity=1,c.value=null,(t=h.value)==null||t.clearValidate()},x=async()=>{k.value=!0;try{const{data:t}=await me({page:D.value,page_size:I.value});L.value=t.list||[],M.value=t.total||0}catch{b.error("获取发放历史失败")}finally{k.value=!1}},A=t=>{D.value=t,x()},K=t=>{I.value=t,D.value=1,x()};return se(d,()=>{var t;(t=h.value)==null||t.clearValidate()}),ne(()=>{H(),x()}),(t,e)=>{const o=u("el-radio-button"),O=u("el-radio-group"),$=u("el-card"),V=u("el-tag"),Q=u("el-option"),W=u("el-select"),y=u("el-form-item"),S=u("el-input"),X=u("el-alert"),Y=u("el-input-number"),U=u("el-icon"),T=u("el-button"),Z=u("el-form"),g=u("el-table-column"),ee=u("el-table"),te=u("el-pagination"),le=oe("loading");return p(),F("div",ve,[e[23]||(e[23]=n("div",{class:"page-header"},[n("h2",null,"优惠券发放")],-1)),s($,{class:"type-card",shadow:"never"},{header:l(()=>[...e[5]||(e[5]=[n("div",{class:"card-header"},[n("span",null,"选择发放方式")],-1)])]),default:l(()=>[s(O,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=a=>d.value=a),class:"distribute-type-group"},{default:l(()=>[s(o,{label:"single"},{default:l(()=>[...e[6]||(e[6]=[i("单个用户发放",-1)])]),_:1}),s(o,{label:"batch"},{default:l(()=>[...e[7]||(e[7]=[i("批量用户发放",-1)])]),_:1}),s(o,{label:"all"},{default:l(()=>[...e[8]||(e[8]=[i("全员发放",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),s($,{class:"form-card",shadow:"never"},{default:l(()=>[s(Z,{ref_key:"formRef",ref:h,model:r,rules:v,"label-width":"120px"},{default:l(()=>[s(y,{label:"选择优惠券",prop:"coupon_id"},{default:l(()=>[s(W,{modelValue:r.coupon_id,"onUpdate:modelValue":e[1]||(e[1]=a=>r.coupon_id=a),placeholder:"请选择要发放的优惠券",filterable:"",style:{width:"100%"},onChange:R},{default:l(()=>[(p(!0),F(re,null,ue(q.value,a=>(p(),f(Q,{key:a.id,label:`${a.name} (${B(a.type)})`,value:a.id},{default:l(()=>[n("div",ye,[n("span",null,_(a.name),1),s(V,{type:P(a.type),size:"small"},{default:l(()=>[i(_(B(a.type)),1)]),_:2},1032,["type"])])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),c.value?(p(),f(y,{key:0,label:"优惠券详情"},{default:l(()=>[n("div",be,[n("div",we,[e[9]||(e[9]=n("span",{class:"label"},"优惠内容:",-1)),n("span",he,_(j(c.value)),1)]),n("div",xe,[e[10]||(e[10]=n("span",{class:"label"},"有效期:",-1)),n("span",Ce,_(z(c.value.start_time))+" 至 "+_(z(c.value.end_time)),1)]),n("div",De,[e[11]||(e[11]=n("span",{class:"label"},"库存:",-1)),n("span",Ve,_(c.value.total_count===0?"不限量":`${c.value.total_count-c.value.used_count} / ${c.value.total_count}`),1)])])]),_:1})):w("",!0),d.value==="single"?(p(),f(y,{key:1,label:"用户ID",prop:"user_id"},{default:l(()=>[s(S,{modelValue:r.user_id,"onUpdate:modelValue":e[2]||(e[2]=a=>r.user_id=a),modelModifiers:{number:!0},placeholder:"请输入用户ID",type:"number",clearable:""},null,8,["modelValue"])]),_:1})):w("",!0),d.value==="batch"?(p(),f(y,{key:2,label:"用户ID列表",prop:"user_ids"},{default:l(()=>[s(S,{modelValue:r.user_ids_text,"onUpdate:modelValue":e[3]||(e[3]=a=>r.user_ids_text=a),type:"textarea",rows:5,placeholder:`请输入用户ID,每行一个或用英文逗号分隔
|
||
例如:
|
||
1
|
||
2
|
||
3
|
||
或:1,2,3`},null,8,["modelValue"]),e[12]||(e[12]=n("div",{class:"form-tip"}," 支持两种格式:每行一个ID 或 用英文逗号分隔 ",-1))]),_:1})):w("",!0),d.value==="all"?(p(),f(X,{key:3,title:"注意",type:"warning",closable:!1,"show-icon":""},{default:l(()=>[...e[13]||(e[13]=[i(" 全员发放将给系统中所有用户发放该优惠券,请谨慎操作! ",-1)])]),_:1})):w("",!0),d.value!=="all"?(p(),f(y,{key:4,label:"发放数量",prop:"quantity"},{default:l(()=>[s(Y,{modelValue:r.quantity,"onUpdate:modelValue":e[4]||(e[4]=a=>r.quantity=a),min:1,max:100,step:1},null,8,["modelValue"]),e[14]||(e[14]=n("div",{class:"form-tip"},"每个用户发放的优惠券数量",-1))]),_:1})):w("",!0),s(y,null,{default:l(()=>[s(T,{type:"primary",onClick:J,loading:C.value},{default:l(()=>[s(U,null,{default:l(()=>[s(E(pe))]),_:1}),e[15]||(e[15]=i(" 确认发放 ",-1))]),_:1},8,["loading"]),s(T,{onClick:N},{default:l(()=>[...e[16]||(e[16]=[i("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),s($,{class:"history-card",shadow:"never"},{header:l(()=>[n("div",qe,[e[18]||(e[18]=n("span",null,"最近发放记录",-1)),s(T,{type:"text",onClick:x},{default:l(()=>[s(U,null,{default:l(()=>[s(E(_e))]),_:1}),e[17]||(e[17]=i(" 刷新 ",-1))]),_:1})])]),default:l(()=>[ie((p(),f(ee,{data:L.value,style:{width:"100%"}},{default:l(()=>[s(g,{prop:"id",label:"ID",width:"80"}),s(g,{label:"优惠券","min-width":"200"},{default:l(({row:a})=>[i(_(a.coupon_name),1)]),_:1}),s(g,{label:"发放方式",width:"120"},{default:l(({row:a})=>[a.distribute_type==="single"?(p(),f(V,{key:0},{default:l(()=>[...e[19]||(e[19]=[i("单个用户",-1)])]),_:1})):a.distribute_type==="batch"?(p(),f(V,{key:1,type:"warning"},{default:l(()=>[...e[20]||(e[20]=[i("批量用户",-1)])]),_:1})):a.distribute_type==="all"?(p(),f(V,{key:2,type:"danger"},{default:l(()=>[...e[21]||(e[21]=[i("全员发放",-1)])]),_:1})):w("",!0)]),_:1}),s(g,{label:"发放数量",width:"120"},{default:l(({row:a})=>[i(_(a.total_count)+" 张 ",1)]),_:1}),s(g,{label:"成功/失败",width:"120"},{default:l(({row:a})=>[n("span",ke,_(a.success_count),1),e[22]||(e[22]=i(" / ",-1)),n("span",Ie,_(a.fail_count),1)]),_:1}),s(g,{label:"操作人",width:"120"},{default:l(({row:a})=>[i(_(a.admin_name||"-"),1)]),_:1}),s(g,{label:"发放时间",width:"180"},{default:l(({row:a})=>[i(_(z(a.created_at)),1)]),_:1})]),_:1},8,["data"])),[[le,k.value]]),n("div",ze,[s(te,{"current-page":D.value,"page-size":I.value,"page-sizes":[10,20,50],total:M.value,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:K,onCurrentChange:A},null,8,["current-page","page-size","total"])])]),_:1})])}}},Ne=ge($e,[["__scopeId","data-v-83fc93d3"]]);export{Ne as default};
|