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