PageSourceSearch

https://www.medalo.ai/js/EventRewardProgress.BfjQcqvU.js

js medalo.ai collected 2026-10-05 12:17:06 UTC 11,245 bytes, 3 lines download raw bytes

1import{_ as P}from"./Loading.BO8yG02s.js";import k from"./Loading.AX4T9XNo.js";import x from"./Paging.Codo259r.js";import{c as p,z as e,j as b,s as d,D as u,a4 as g,V as v,G as w,B as m,F as h,l as y,W as T,b as i}from"./vendor-vue.DQyCMu5a.js";import{_ as R}from"./index.VRUltArI.js";import{b3 as r}from"./vendor-misc.DlM92jT6.js";import"./vendor-vuetify.Dvtop9lb.js";import"./vendor-axios.B9ygI19o.js";import"./vendor-moment.C5S46NFB.js";import"./vendor-quill.BiOiM682.js";import"./vendor-date-io.C_LH91PS.js";import"./vendor-maps.B8dKhpM0.js";/* empty css                     */const A={name:"EventRewardProgress",components:{Loading:k,Paging:x},emits:["manual-claimed"],data(){return{searchParam:{searchType:"name",searchKeyword:"",claimableOnly:"",orderBy:""},progressList:[],totalCnt:0,pageNo:1,pageSize:10,loading:!1,manualPopFlag:!1,manualTarget:{},manualForm:{eventRewardIdx:null,grantMemo:""},manualSaving:!1,rewardOptions:[]}},mounted(){this.onActivePage(1),this.getRewardOptions()},computed:{searchPlaceholder(){return this.searchParam.searchType==="tell"?"연락처 숫자 일부 (부분 검색 가능)":this.searchParam.searchType==="email"?"이메일 일부 (부분 검색 가능)":"이름 일부 (부분 검색 가능)"}},methods:{formatPhoneNumber(o){if(!o||typeof o!="string")return"";const t=o.replace(/\D/g,"");return t.length===11?t.replace(/(\d{3})(\d{4})(\d{4})/,"$1-$2-$3"):t.length===10?t.replace(/(\d{3})(\d{3})(\d{4})/,"$1-$2-$3"):o},onActivePage(o=1){this.pageNo=o,this.getProgressList()},getProgressList(){this.loading=!0;const o={page:this.pageNo,blockPage:this.pageSize,searchType:this.searchParam.searchType,searchKeyword:this.searchParam.searchKeyword||"",claimableOnly:this.searchParam.claimableOnly||"",orderBy:this.searchParam.orderBy||""},t={success:s=>{this.progressList=s.list||[],this.totalCnt=s.totalCnt||0,this.loading=!1},error:s=>{console.log(s),this.loading=!1}};this.$api.report.getEventRewardProgressList(o,t)},getRewardOptions(){const o={page:1,blockPage:100},t={success:s=>{this.rewardOptions=s.list||[]},error:s=>{console.log(s)}};this.$api.report.getEventRewardList(o,t)},resetPersonalColor(o){if(!confirm(`${o.userName||"이 사용자"}의 퍼스널 컬러 판정(${o.personalColorType})을 초기화할까요?
2초기화하면 퍼스널 컬러를 다시 진단하기 전까지 메이크업/헤어 진단권을 사용할 수 없습니다.`))return;const t={success:s=>{alert(s.message||(s.code==="S"?"초기화되었습니다.":"초기화에 실패했습니다.")),s.code==="S"&&(o.personalColorType=null)},error:s=>{console.log(s),alert("초기화에 실패했습니다.")}};this.$api.report.resetEventRewardPersonalColor({proUserIdx:o.proUserIdx},t)},toggleTestAccount(o,t){const s=t.target.checked?"Y":"N";if(!confirm(`이 사용자를 테스트 계정으로 ${s==="Y"?"지정":"해제"}할까요?
3테스트 계정은 '테스트 무제한 지급'이 켜진 보상을 조건 없이 무제한 수령할 수 있습니다.`)){t.target.checked=o.testAccountYn==="Y";return}const l={success:n=>{n.code==="S"?o.testAccountYn=s:(alert("변경에 실패했습니다."),t.target.checked=o.testAccountYn==="Y")},error:n=>{console.log(n),alert("변경에 실패했습니다."),t.target.checked=o.testAccountYn==="Y"}};this.$api.report.updateEventRewardTestAccount({proUserIdx:o.proUserIdx,testAccountYn:s},l)},openManualClaim(o){this.manualTarget=o,this.manualForm={eventRewardIdx:null,grantMemo:""},this.manualPopFlag=!0},closeManualClaim(){this.manualPopFlag=!1,this.manualTarget={}},submitManualClaim(o){if(!this.manualForm.eventRewardIdx){alert("지급할 보상을 선택해 주세요.");return}if(!this.manualForm.grantMemo||!this.manualForm.grantMemo.trim()){alert("지급 사유를 입력해 주세요.");return}this.manualSaving=!0;const t={proUserIdx:this.manualTarget.proUserIdx,eventRewardIdx:this.manualForm.eventRewardIdx,grantMemo:this.manualForm.grantMemo.trim(),force:o},s={success:c=>{this.manualSaving=!1,c.code==="S"?(alert(c.message||"지급되었습니다."),this.closeManualClaim(),this.getProgressList(),this.$emit("manual-claimed")):c.dupWarning?confirm(c.message||"이미 수령 이력이 있는 사용자입니다. 그래도 지급하시겠습니까?")&&this.submitManualClaim(!0):alert(c.message||"지급에 실패했습니다.")},error:c=>{this.manualSaving=!1,console.log(c),alert("지급에 실패했습니다.")}};this.$api.report.manualClaimEventReward(t,s)}}},F={class:"report-content__main"},M={class:"report-search__wrap"},I={class:"report-search__inner"},S={class:"report-search__item"},N=["placeholder"],Y={class:"report-search__item"},E={class:"report-search__item"},O={class:"report-table__info"},U={class:"total"},B={class:"report-table__wrap"},L={class:"report-table__container"},V={"data-label":"사용자"},K={"data-label":"연락처"},z={"data-label":"이메일"},D={"data-label":"친구 추천"},j={"data-label":"누적 출석"},W={"data-label":"퍼스널 컬러",class:"pc-cell"},G={class:"pc-value"},q=["onClick"],H={key:1},J={"data-label":"달성·미수령"}
3,Q={key:0,class:"claimable-badge"},X={key:1,class:"delivery-badge",title:"배송(오프라인) 보상 미지급"},Z={key:2},$={"data-label":"수령한 보상"},ee={"data-label":"테스트 계정"},te={class:"switch-label"},ae=["checked","onChange"],le={"data-label":"수동 지급"},oe=["onClick"],se={key:0},re={key:1,class:"manual-popup__wrap"},ne={class:"manual-popup__box"},ie={class:"manual-popup__header"},pe={class:"manual-popup__body"},ce={class:"manual-target"},de={class:"manual-form-row"},me=["value"],ue={class:"manual-form-row"},ge={class:"manual-popup__footer"},_e=["disabled"];function he(o,t,s,c,l,n){const f=T("paging"),C=P;return i(),p("div",F,[e("div",M,[e("ul",I,[e("li",S,[t[12]||(t[12]=e("label",{for:"progressSearchType",class:"report-input__label"},"검색",-1)),u(e("select",{id:"progressSearchType","onUpdate:modelValue":t[0]||(t[0]=a=>l.searchParam.searchType=a),class:"report-input__text search-type-select"},t[11]||(t[11]=[e("option",{value:"name"},"이름",-1),e("option",{value:"tell"},"연락처",-1),e("option",{value:"email"},"이메일",-1)]),512),[[g,l.searchParam.searchType]]),u(e("input",{id:"progressSearchKeyword","onUpdate:modelValue":t[1]||(t[1]=a=>l.searchParam.searchKeyword=a),type:"text",class:"report-input__text",placeholder:n.searchPlaceholder,onKeyup:t[2]||(t[2]=w(a=>n.onActivePage(1),["enter"]))},null,40,N),[[v,l.searchParam.searchKeyword]])]),e("li",Y,[t[14]||(t[14]=e("label",{for:"orderBy",class:"report-input__label"},"정렬",-1)),u(e("select",{id:"orderBy","onUpdate:modelValue":t[3]||(t[3]=a=>l.searchParam.orderBy=a),class:"report-input__text"},t[13]||(t[13]=[e("option",{value:""}," 미수령 많은 순 ",-1),e("option",{value:"REFERRAL"}," 추천 수 많은 순 ",-1),e("option",{value:"ATTENDANCE"}," 출석일 많은 순 ",-1)]),512),[[g,l.searchParam.orderBy]])]),e("li",E,[t[16]||(t[16]=e("label",{for:"claimableOnly",class:"report-input__label"},"수령 필터",-1)),u(e("select",{id:"claimableOnly","onUpdate:modelValue":t[4]||(t[4]=a=>l.searchParam.claimableOnly=a),class:"report-input__text"},t[15]||(t[15]=[e("option",{value:""}," 전체 ",-1),e("option",{value:"Y"}," 달성했지만 미수령만 ",-1),e("option",{value:"DELIVERY"}," 📦 배송 보상 미지급만 ",-1)]),512),[[g,l.searchParam.claimableOnly]])])]),e("button",{type:"button",class:"report-btn__text report-btn__primary",onClick:t[5]||(t[5]=a=>n.onActivePage(1))}," 검색 ")]),e("div",O,[e("div",U,[t[17]||(t[17]=m(" 총 ")),e("strong",null,r(l.totalCnt),1),t[18]||(t[18]=m("명 "))])]),e("div",B,[e("table",L,[t[20]||(t[20]=e("thead",null,[e("tr",null,[e("th",null,"사용자"),e("th",null,"연락처"),e("th",null,"이메일"),e("th",null,"친구 추천"),e("th",null,"누적 출석"),e("th",null,"퍼스널 컬러"),e("th",null,"달성·미수령"),e("th",null,"수령한 보상"),e("th",null,"테스트 계정"),e("th",null,"수동 지급")])],-1)),e("tbody",null,[(i(!0),p(h,null,y(l.progressList,a=>(i(),p("tr",{key:a.proUserIdx},[e("td",V,r(a.userName||"-"),1),e("td",K,r(n.formatPhoneNumber(a.userTell)||"-"),1),e("td",z,r(a.userEmail||"-"),1),e("td",D,r(a.referralCnt)+"명 ",1),e("td",j,r(a.attendanceCnt)+"일 ",1),e("td",W,[a.personalColorType?(i(),p(h,{key:0},[e("span",G,r(a.personalColorType),1),e("a",{href:"javascript:void(0)",class:"report-link__line",onClick:_=>n.resetPersonalColor(a)},"초기화",8,q)],64)):(i(),p("span",H,"-"))]),e("td",J,[a.claimableCnt>0?(i(),p("span",Q,r(a.claimableCnt)+"개",1)):d("",!0),a.deliveryClaimableCnt>0?(i(),p("span",X,"📦 "+r(a.deliveryClaimableCnt),1)):d("",!0),!a.claimableCnt&&!a.deliveryClaimableCnt?(i(),p("span",Z,"-")):d("",!0)]),e("td",$,r(a.claimedCnt)+"개 ",1),e("td",ee,[e("label",te,[e("input",{type:"checkbox",checked:a.testAccountYn==="Y",onChange:_=>n.toggleTestAccount(a,_)},null,40,ae),m(" "+r(a.testAccountYn==="Y"?"ON":"OFF"),1)])]),e("td",le,[e("button",{type:"button",class:"report-btn__text btn-sm",onClick:_=>n.openManualClaim(a)}," 지급 ",8,oe)])]))),128)),l.totalCnt<1?(i(),p("tr",se,t[19]||(t[19]=[e("td",{colspan:"10",class:"report-table__empty"}," 검색 결과가 없습니다. ",-1)]))):d("",!0)])]),l.totalCnt>0?(i(),b(f,{key:0,"cur-page-no":l.pageNo,"total-cnt":l.totalCnt,"page-size":l.pageSize,onActivePage:n.onActivePage},null,8,["cur-page-no","total-cnt","page-size","onActivePage"])):d("",!0)]),l.loading?(i(),b(C,{key:0})):d("",!0),l.manualPopFlag?(i(),p("div",re,[e("div",ne,[e("div",ie,[t[21]||(t[21]=e("strong",null,"보상 수동 지급",-1)),e("button",{type:"button",class:"report-btn__close",onClick:t[6]||(t[6]=a=>n.closeManualClaim())}," ✕ ")]),e("div",pe,[e("p",ce,[t[22]||(t[22]=m(" 대상: ")),e("strong",null,r(l.manualTarget.userName||"-"),1),m(" (추천 "+r(l.manualTarget.referralCnt)+"명 / 출석 "+r(l.manualTarget.attendanceCnt)+"일) ",1)]),e("div",de,[t[24]||(t[24]=e("label",null,[m("보상 선택"),e("span",{class:"point1"},"*")],-1)),u(e("select",{"onUpdate:modelValue":t[7]||(t[7]=a=>l.manualForm.eventRewardIdx=a),class:"report-input__text full"},[t[23]||(t[23]=e("option",{value:null}," 보상 선택 ",-1)),(i(!0),p(h,null,y(l.rewardOptions,a=>(i(),p("option",{key:a.eventRewardIdx,value:a.eventRewardIdx},r(a.title)+" ("+r(a.round)+"회차) ",9,me))),128))],512),[[g,l.manualForm.eventRewardIdx]])]),e("div",ue,[t[25]||(t[25]=e("label",null,[m("지급 사유"),e("span",{class:"point1"},"*")],-1)),u(e("input",{"onUpdate:modelValue":t[8]||(t[8]=a=>l.manualForm.grantMemo=a),type:"text",maxlength:"200",class:"report-input__text full",placeholder:"예: 이벤트 오류 보상"},null,512),[[v,l.manualForm.grantMemo]])]),t[26]||(t[26]=e("p",{class:"manual-notice"}," 조건·기간과 무관하게 지급됩니다. 배송형 보상은 사용자가 쿠폰북에서 주소를 입력한 뒤 배송 처리할 수 있습니다. ",-1))]),e("div",ge,[e("button",{type:"button",class:"report-btn__text report-btn__primary",disabled:l.manualSaving,onClick:t[9]||(t[9]=a=>n.submitManualClaim(!1))}," 지급 ",8,_e),e("button",{type:"button",class:"report-btn__text",onClick:t[10
3]||(t[10]=a=>n.closeManualClaim())}," 취소 ")])])])):d("",!0)])}const Me=R(A,[["render",he],["__scopeId","data-v-55ba9274"]]);export{Me 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.