smSnotification.gnme-wny.js 9.9 KB

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