smSnotification.CHbG2OK7.js 10 KB

1
  1. import{_ as re}from"./qcLogo.ClkaWBBV.js";import{S as h,A as de,B as ue,j as A,E as p}from"./index.-GVFoSJY.js";import{u as pe}from"./api.C9OTHbIg.js";import{a as me,r as m,_ as E,q as ce,f as C,aj as d,c as V,o as f,S as a,K as n,b as i,u as H,M as k,Q as R,P as M,J as Y,R as ve}from"./vue.D1BjjNmv.js";import{_ as fe}from"./_plugin-vue_export-helper.DlAUqK2U.js";const _e={class:"notification"},ge={class:"notification-container"},we={class:"message-header"},he={class:"contact-info"},Ve={class:"contact-actions"},ye={class:"message-content"},be=["innerHTML"],ke={key:1,class:"no-template"},Me={class:"notification-right-footer-action"},Te={class:"notification-right"},$e={class:"notification-right-header"},De={key:0,class:"template-info"},Ne={class:"notification-right-content"},Ce=["innerHTML"],Ue={class:"dialog-footer"},qe=me({__name:"smSnotification",props:{crudExpose:{type:Object,required:!0}},emits:["success"],setup(I,{expose:B,emit:F}){const g=m(!1),y=m(!1),T=m(!1),U=m(),$=m(),_=m(0),D=m([]),c=m(null),b=E({new_status:void 0,note:"",application_ids:[]}),o=E({phone:"",candidateName:"",companyName:"",position:"",interviewDate:"",interviewTime:"",interviewCode:"",interviewMethod:"online",interviewLink:"",interviewAddress:""}),j={phone:[{required:!0,message:"请输入手机号",trigger:"blur"},{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号格式",trigger:"blur"}],candidateName:[{required:!0,message:"请输入候选人姓名",trigger:"blur"}],companyName:[{required:!0,message:"请输入公司名称",trigger:"blur"}],position:[{required:!0,message:"请输入职位名称",trigger:"blur"}],interviewDate:[{required:!0,message:"请选择面试日期",trigger:"change"}],interviewTime:[{required:!0,message:"请选择面试时间",trigger:"change"}],interviewCode:[{required:!0,message:"请输入面试码",trigger:"blur"}],interviewMethod:[{required:!0,message:"请选择面试方式",trigger:"change"}]},z=F,J=I,q=async()=>{try{const t=await A.get("https://backend.qicai321.com/api/system/sms/templates/",{headers:{Authorization:`JWT ${h.get("token")}`}});t.data.code===2e3?(console.log(t.data),D.value=t.data.data.templates,P()):p.error("获取短信模板失败")}catch(t){console.error("获取短信模板失败:",t),p.error("获取短信模板失败")}},P=()=>{if(!D.value.length)return;let t;switch(_.value){case 0:t=1;break;case 3:t=2;break;case 4:t=3;break;default:t=0}c.value=D.value[t]};ce(()=>{q()});const W=async t=>{var r;g.value=!0,b.application_ids=t.map(s=>s.id),_.value=((r=t[0])==null?void 0:r.status)||0,await q();const e=t[0];e&&(o.phone=e.applicant_phone||"",o.candidateName=e.applicant_name||"",o.companyName="上海敏龙智创科技发展有限公司",o.position=e.position_title||"",o.interviewDate="",o.interviewTime="",o.interviewCode=K(),o.interviewMethod="online",o.interviewLink="",o.interviewAddress="")},K=()=>{const t="ML",e=Math.floor(Math.random()*999).toString().padStart(3,"0");return`${t}${e}`},O=async()=>{$.value&&await $.value.validate(t=>{t&&(p.success("编辑保存成功"),y.value=!1)})},Q=t=>{if(!t)return"";const e=new Date(t);return`${e.getFullYear()}年${e.getMonth()+1}月${e.getDate()}日`},G=t=>{if(!t)return"";const[e,r]=t.split(":"),s=parseInt(e),w=s>=12?"下午":"上午",N=s>12?s-12:s;return`${w}${N}:${r}`},X=t=>{const e="https://backend.qicai321.com";switch(t){case 0:return`${e}/api/system/sms/interview-notification/`;case 3:return`${e}/api/system/sms/interview-passed/`;case 4:return`${e}/api/system/sms/interview-failed/`;default:throw new Error("不支持的状态类型")}},Z=t=>{const e={application_ids:b.application_ids,tenant_id:h.get("tenant_id"),phone:o.phone,name:o.candidateName,company:o.companyName,job:o.position,date:Q(o.interviewDate)||"2025年7月30日",time:G(o.interviewTime)||"10:00",code:o.interviewCode};switch(t){case 0:return{...e,interview_method:o.interviewMethod,interview_link:o.interviewLink,interview_address:o.interviewAddress};case 3:return{...e,onboard_time:o.interviewTime,position:o.position};case 4:return{...e,reason:b.note};default:return e}},ee=async()=>{T.value=!0;try{const t=X(_.value),e=Z(_.value),r=await A.post(t,e,{headers:{Authorization:`JWT ${h.get("token")}`}});if(r.data.code===2e3)try{const s={application_ids:b.application_ids,new_status:1,note:"已发送面试通知短信",tenant_id:h.get("tenant_id")};(await pe(s)).code===2e3?(p.success("通知发送成功,状态已更新"),g.value=!1,z("success"),J.crudExpose.doRefresh()):p.warning("通知发送成功,但状态更新失败")}catch(s){console.error("状态更新失败:",s),p.warning("通知发送成功,但状态更新失败")}else p.error(r.data.msg||"发送失败")}catch(t){console.error("发送通知失败:",t),p.error(t.message||"发送失败,请重试")}finally{T.value=!1}},te=()=>{U.value&&U.value.resetFields()};B({open:W});const oe=C(()=>{switch(_.value){case 0:return"面试邀请通知";case 2:return"面试通过通知";case 4:return"面试未通过通知";default:return"短信通知"}}),ae=C(()=>{switch(_.value){case 0:return"面试邀请模板";case 2:return"录用通知模板";case 4:return"婉拒通知模板";default:return"通用模板"}}),x=C(()=>{if(!c.value)return"";let t=c.value.template;return t=t.replace(/\${name}/g,o.candidateName||""),t=t.replace(/\${job}/g,o.position||""),t=t.replace(/\${company}/g,""),t=t.replace(/\${date}/g,""),t=t.replace(/\${code}/g,""),t=t.replace(/\${time}/g,""),console.log(h.get("userInfo")),t});return(t,e)=>{const r=d("el-icon"),s=d("el-button"),w=d("Plus"),N=d("Upload"),S=d("el-dialog"),v=d("el-input"),u=d("el-form-item"),ne=d("el-date-picker"),le=d("el-time-picker"),L=d("el-option"),ie=d("el-select"),se=d("el-form");return f(),V(ve,null,[a(S,{modelValue:g.value,"onUpdate:modelValue":e[1]||(e[1]=l=>g.value=l),title:oe.value,width:"60%","close-on-click-modal":!1,onClosed:te,"custom-class":"interview-notification-dialog"},{footer:n(()=>[i("div",Ue,[a(s,{onClick:e[0]||(e[0]=l=>g.value=!1)},{default:n(()=>e[18]||(e[18]=[M("关闭")])),_:1}),a(s,{type:"primary",onClick:ee,loading:T.value},{default:n(()=>e[19]||(e[19]=[M("发送通知")])),_:1},8,["loading"])])]),default:n(()=>[i("div",_e,[i("div",ge,[i("div",we,[e[15]||(e[15]=i("div",{class:"avatar"},[i("img",{src:re,alt:"公司头像"})],-1)),i("div",he,[e[14]||(e[14]=i("span",{class:"phone"},"+10688028...",-1)),i("div",Ve,[a(s,{link:"",type:"primary",size:"small"},{default:n(()=>[a(r,null,{default:n(()=>[a(H(de))]),_:1})]),_:1}),a(s,{link:"",type:"primary",size:"small"},{default:n(()=>[a(r,null,{default:n(()=>[a(H(ue))]),_:1})]),_:1})])])]),i("div",ye,[c.value?(f(),V("div",{key:0,innerHTML:x.value},null,8,be)):(f(),V("div",ke," 暂无可用的短信模板 "))]),i("div",Me,[a(r,null,{default:n(()=>[a(w)]),_:1}),e[16]||(e[16]=i("div",{class:"input"},null,-1)),a(r,null,{default:n(()=>[a(w)]),_:1}),a(r,null,{default:n(()=>[a(N)]),_:1})])]),i("div",Te,[i("div",$e,[c.value?(f(),V("div",De,[e[17]||(e[17]=i("h3",null,"模板信息",-1)),i("p",null,"模板ID: "+R(c.value.id),1),i("p",null,"模板类型: "+R(ae.value),1)])):k("",!0)]),i("div",Ne,[c.value?(f(),V("div",{key:0,innerHTML:x.value},null,8,Ce)):k("",!0)])])])]),_:1},8,["modelValue","title"]),a(S,{modelValue:y.value,"onUpdate:modelValue":e[13]||(e[13]=l=>y.value=l),title:"编辑面试邀请",width:"600px","close-on-click-modal":!1},{footer:n(()=>[a(s,{onClick:e[12]||(e[12]=l=>y.value=!1)},{default:n(()=>e[20]||(e[20]=[M("取消")])),_:1}),a(s,{type:"primary",onClick:O},{default:n(()=>e[21]||(e[21]=[M("保存")])),_:1})]),default:n(()=>[a(se,{model:o,ref_key:"editFormRef",ref:$,rules:j,"label-width":"100px"},{default:n(()=>[a(u,{label:"手机号",prop:"phone"},{default:n(()=>[a(v,{modelValue:o.phone,"onUpdate:modelValue":e[2]||(e[2]=l=>o.phone=l),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),a(u,{label:"候选人姓名",prop:"candidateName"},{default:n(()=>[a(v,{modelValue:o.candidateName,"onUpdate:modelValue":e[3]||(e[3]=l=>o.candidateName=l),placeholder:"请输入候选人姓名"},null,8,["modelValue"])]),_:1}),a(u,{label:"公司名称",prop:"companyName"},{default:n(()=>[a(v,{modelValue:o.companyName,"onUpdate:modelValue":e[4]||(e[4]=l=>o.companyName=l),placeholder:"请输入公司名称"},null,8,["modelValue"])]),_:1}),a(u,{label:"面试职位",prop:"position"},{default:n(()=>[a(v,{modelValue:o.position,"onUpdate:modelValue":e[5]||(e[5]=l=>o.position=l),placeholder:"请输入面试职位"},null,8,["modelValue"])]),_:1}),a(u,{label:"面试日期",prop:"interviewDate"},{default:n(()=>[a(ne,{modelValue:o.interviewDate,"onUpdate:modelValue":e[6]||(e[6]=l=>o.interviewDate=l),type:"date",placeholder:"选择面试日期",format:"YYYY-MM-DD","value-format":"YYYY-MM-DD"},null,8,["modelValue"])]),_:1}),a(u,{label:"面试时间",prop:"interviewTime"},{default:n(()=>[a(le,{modelValue:o.interviewTime,"onUpdate:modelValue":e[7]||(e[7]=l=>o.interviewTime=l),format:"HH:mm","value-format":"HH:mm",placeholder:"选择面试时间"},null,8,["modelValue"])]),_:1}),a(u,{label:"面试码",prop:"interviewCode"},{default:n(()=>[a(v,{modelValue:o.interviewCode,"onUpdate:modelValue":e[8]||(e[8]=l=>o.interviewCode=l),placeholder:"请输入面试码"},null,8,["modelValue"])]),_:1}),a(u,{label:"面试方式",prop:"interviewMethod"},{default:n(()=>[a(ie,{modelValue:o.interviewMethod,"onUpdate:modelValue":e[9]||(e[9]=l=>o.interviewMethod=l),placeholder:"请选择面试方式"},{default:n(()=>[a(L,{label:"线上面试",value:"online"}),a(L,{label:"线下面试",value:"offline"})]),_:1},8,["modelValue"])]),_:1}),o.interviewMethod==="online"?(f(),Y(u,{key:0,label:"面试链接",prop:"interviewLink"},{default:n(()=>[a(v,{modelValue:o.interviewLink,"onUpdate:modelValue":e[10]||(e[10]=l=>o.interviewLink=l),placeholder:"请输入面试链接"},null,8,["modelValue"])]),_:1})):k("",!0),o.interviewMethod==="offline"?(f(),Y(u,{key:1,label:"面试地址",prop:"interviewAddress"},{default:n(()=>[a(v,{modelValue:o.interviewAddress,"onUpdate:modelValue":e[11]||(e[11]=l=>o.interviewAddress=l),type:"textarea",placeholder:"请输入面试地址"},null,8,["modelValue"])]),_:1})):k("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue"])],64)}}}),He=fe(qe,[["__scopeId","data-v-73f154f0"]]);export{He as default};