index.B9CpnKHq.js 13 KB

1
  1. import{k as $e,p as Ne,q as O,t as Be,w as J,x as De,y as Ee,z as je,S as T,A as qe,B as Pe,C as Oe,E as S}from"./index.B8PdPpu9.js";import{a as W,aB as Te,r as v,_ as U,f as Ue,q as Me,aj as d,J as H,o as f,K as n,b as o,S as t,c as g,M as R,u as r,G as y,R as K,a9 as Q,Q as w,H as Le,P as C}from"./vue.D1BjjNmv.js";import{createCrudOptions as Ye}from"./crud.DRXYC7-Q.js";import{g as Ae,G as Ie}from"./api.CtMqAe_Q.js";import{h as Fe}from"./columnPermission.ZBXRLuzb.js";import Ge from"./index.DlLNrVMc.js";import{_ as Je}from"./BatchStatusDialog.vue_vue_type_script_setup_true_lang.D_1oXn0y.js";import He from"./smSnotification.t9hL3avS.js";import{_ as Ke}from"./_plugin-vue_export-helper.DlAUqK2U.js";import"./authFunction.CRSQXQNI.js";import"./qcLogo.ClkaWBBV.js";const Qe={class:"job-application-container"},We={class:"tabs-container"},Xe={class:"tab-content"},Ze={class:"sidebar"},et={class:"tree-container"},tt={key:0,class:"position-list"},at=["onClick"],ot={class:"item-content"},st={key:0,class:"item-count"},nt={class:"item-content"},lt={class:"item-count"},it={class:"item-content"},rt={key:0,class:"item-count"},ut={class:"item-content"},dt={key:0,class:"item-count"},ct={class:"item-content"},pt={key:0,class:"item-count"},mt={class:"item-content"},ft={key:0,class:"item-count"},_t={class:"item-content"},vt={key:0,class:"item-count"},gt={class:"content"},ht={class:"action-button-wrapper"},yt={class:"tab-content"},bt={class:"notification-container"},kt={class:"search-form"},wt={class:"action-bar"},Ct={class:"left-actions"},St={class:"table-container"},Rt={class:"pagination-container"},xt=W({name:"areas"}),Vt=W({...xt,setup(zt){const X=Te(),M=v("application"),D=v([]),E=v(!1),$=v([]),i=U({name:"",phone:"",position:"",dateRange:[]}),p=U({current:1,size:20,total:0}),Z="https://backend.qicai321.com/api/job/application/import",{crudBinding:ee,crudRef:te,crudExpose:_,crudOptions:ae,resetCrudOptions:oe}=$e({createCrudOptions:Ye,context:{openBatchTagsDialog:a=>{L.value.open(a)},openBatchStatusDialog:a=>{j.value.open(a)},openSmsNotification:a=>{N.value.open(a)},selectedRows:[]}}),L=v(),j=v(),N=v(),Y=v(0),u=U({1:0,2:0,3:0,4:0,5:0}),B=v(!0);Ue(()=>a=>({marginLeft:a.name==="已通过"||a.name==="已淘汰"?"32px":"0"}));const x=v([]),se=async()=>{try{const e=await(await fetch(`https://backend.qicai321.com/api/system/job/list?page=1&limit=100&tenant_id=${T.get("tenant_id")}`)).json();e.code===2e3&&e.data?x.value=e.data.map(l=>({id:l.id,title:l.title||l.name||l.job_name,count:0})):console.error("获取职位列表失败:",e.msg||"未知错误")}catch(a){console.error("获取职位列表异常:",a),x.value=[{id:1,title:"流水线操作工",count:0}]}},q=async()=>{try{const e=await Ae();console.log(e),e.code===2e3&&e.data?(Y.value=e.data.total||0,e.data.status_data&&Array.isArray(e.data.status_data)?e.data.status_data.forEach(l=>{const k={0:1,2:2,3:3,4:4,5:5}[l.status];k&&k in u&&(u[k]=l.count)}):(u[1]=e.data.pending||0,u[2]=e.data.interviewed||0,u[3]=e.data.hired||0,u[4]=e.data.rejected||0,u[5]=e.data.notified||0)):console.error("获取申请状态统计失败:",e.message||"未知错误")}catch(a){console.error("获取申请状态统计异常:",a)}},ne=()=>{B.value=!B.value},c=v("all"),b=a=>{if(c.value=a.id||"all",a.type==="all"){try{const e=_.getSearchRef();e&&typeof e.resetFields=="function"&&e.resetFields()}catch(e){console.warn("重置表单失败:",e)}_.doSearch({form:{}})}else a.type==="status"?_.doSearch({form:{status:a.value}}):a.type==="position"&&_.doSearch({form:{position_title:a.value}})},le=a=>{!a||!a.records||(x.value.forEach(e=>{e.count=0}),a.records.forEach(e=>{if(e.position_title){const l=x.value.find(m=>m.title===e.position_title);l&&(l.count=(l.count||0)+1)}}))},ie=()=>{_.doRefresh(),q()},re=a=>{a.code===2e3?(S.success("导入成功"),_.doRefresh(),q()):S.error(a.message||"导入失败")},ue=a=>{console.error("导入失败:",a),S.error("导入失败,请检查文件格式或网络连接")},de=a=>{console.log("切换到标签页:",a.name),a.name==="application"?console.log("显示职位申请功能"):a.name==="resume"&&(console.log("显示待通知列表功能"),V())},V=async()=>{E.value=!0;try{const a={page:p.current,limit:p.size,status:0};i.name&&(a.name=i.name),i.phone&&(a.phone=i.phone),i.position&&(a.position=i.position),i.dateRange&&i.dateRange.length===2&&(a.start_date=i.dateRange[0],a.end_date=i.dateRange[1]);const l=await(await fetch(`https://backend.qicai321.com/api/job/application/list?${new URLSearchParams(a)}`,{headers:{Authorization:`Bearer ${T.get("token")}`,"Content-Type":"application/json"}})).json();l.code===2e3&&l.data?(D.value=l.data.records||[],p.total=l.data.total||0):(S.error(l.message||"获取待通知列表失败"),A())}catch(a){console.error("获取待通知列表失败:",a),S.error("获取待通知列表失败"),A()}finally{E.value=!1}},A=()=>{D.value=[{id:1,name:"张三",phone:"13800138001",position_title:"前端开发工程师",apply_time:"2024-01-15",status:"待通知",source:"智联招聘",remark:"有3年前端开发经验,熟悉Vue.js"},{id:2,name:"李四",phone:"13800138002",position_title:"Java开发工程师",apply_time:"2024-01-14",status:"待通知",source:"BOSS直聘",remark:"5年Java开发经验,熟悉Spring框架"},{id:3,name:"王五",phone:"13800138003",position_title:"UI设计师",apply_time:"2024-01-13",status:"待通知",source:"拉勾网",remark:"有设计作品集,擅长移动端设计"}],p.total=3},ce=()=>{p.current=1,V()},pe=()=>{Object.assign(i,{name:"",phone:"",position:"",dateRange:[]}),p.current=1,V()},me=a=>{$.value=a},fe=a=>{p.size=a,p.current=1,V()},_e=a=>{p.current=a,V()},ve=a=>{N.value.open([a])},ge=a=>{j.value.open([a])},he=a=>{console.log("查看详情:",a),S.info("查看详情功能开发中...")},ye=()=>{if($.value.length===0){S.warning("请选择要通知的申请");return}N.value.open($.value)};return Me(async()=>{await se(),await q();const a=await Fe(Ie,ae);if(a&&a.crudOptions&&a.crudOptions.request){const l=a.crudOptions.request.pageRequest;a.crudOptions.request.pageRequest=async m=>{const k=await l(m);return le(k.data),k}}oe(a);const e=X.query.status;if(console.log(e),e){const l=Number(e);switch(l){case 0:c.value="status-0";break;case 1:c.value="status-1";break;case 2:c.value="status-2";break;case 3:c.value="status-3";break;case 4:c.value="status-4";break;default:c.value="all"}_.doSearch({form:{status:l}})}else _.doRefresh()}),(a,e)=>{const l=d("el-icon"),m=d("el-button"),k=d("el-upload"),be=d("fs-crud"),I=d("el-tab-pane"),F=d("el-input"),z=d("el-form-item"),G=d("el-option"),ke=d("el-select"),we=d("el-date-picker"),Ce=d("el-form"),h=d("el-table-column"),Se=d("el-tag"),Re=d("el-table"),xe=d("el-pagination"),Ve=d("el-tabs"),ze=d("fs-page");return f(),H(ze,null,{default:n(()=>[o("div",Qe,[o("div",We,[t(Ve,{modelValue:M.value,"onUpdate:modelValue":e[13]||(e[13]=s=>M.value=s),type:"card",onTabClick:de},{default:n(()=>[t(I,{label:"职位申请",name:"application"},{default:n(()=>[o("div",Xe,[o("div",Ze,[o("div",et,[o("div",{class:"category-title",onClick:ne},[t(l,null,{default:n(()=>[t(r(Ne))]),_:1}),e[14]||(e[14]=o("span",null,"职位",-1)),t(l,{class:y(["expand-icon",{"is-expanded":B.value}])},{default:n(()=>[t(r(O))]),_:1},8,["class"])]),B.value?(f(),g("div",tt,[o("div",{class:y(["tree-item",{active:c.value==="position-all"}]),onClick:e[0]||(e[0]=s=>b({type:"all",id:"position-all"}))},e[15]||(e[15]=[o("div",{class:"item-content"},[o("span",null,"全部")],-1)]),2),(f(!0),g(K,null,Q(x.value,s=>(f(),g("div",{key:"position-"+s.id,class:y(["tree-item",{active:c.value==="position-"+s.id}]),onClick:P=>b({type:"position",value:s.title,id:"position-"+s.id})},[o("div",ot,[t(l,null,{default:n(()=>[t(r(O))]),_:1}),o("span",null,w(s.title),1)]),s.count?(f(),g("div",st,w(s.count),1)):R("",!0)],10,at))),128))])):R("",!0),o("div",{class:y(["tree-item",{active:c.value==="all"}]),onClick:e[1]||(e[1]=s=>b({type:"all"}))},[o("div",nt,[t(l,null,{default:n(()=>[t(r(Be))]),_:1}),e[16]||(e[16]=o("span",null,"全部",-1))]),o("div",lt,w(Y.value)+"人",1)],2),o("div",{class:y(["tree-item",{active:c.value==="status-0"}]),onClick:e[2]||(e[2]=s=>b({type:"status",value:0,id:"status-0"}))},[o("div",it,[t(l,null,{default:n(()=>[t(r(J))]),_:1}),e[17]||(e[17]=o("span",null,"待通知",-1))]),u[1]?(f(),g("div",rt,w(u[1]),1)):R("",!0)],2),o("div",{class:y(["tree-item",{active:c.value==="status-1"}]),onClick:e[3]||(e[3]=s=>b({type:"status",value:1,id:"status-1"}))},[o("div",ut,[t(l,null,{default:n(()=>[t(r(De))]),_:1}),e[18]||(e[18]=o("span",null,"已通知待面试",-1))]),u[1]?(f(),g("div",dt,w(u[5]),1)):R("",!0)],2),o("div",{class:y(["tree-item",{active:c.value==="status-2"}]),onClick:e[4]||(e[4]=s=>b({type:"status",value:2,id:"status-2"}))},[o("div",ct,[t(l,null,{default:n(()=>[t(r(O))]),_:1}),e[19]||(e[19]=o("span",null,"已面试待处理",-1))]),u[2]?(f(),g("div",pt,w(u[2]),1)):R("",!0)],2),o("div",{class:y(["tree-item",{active:c.value==="status-3"}]),onClick:e[5]||(e[5]=s=>b({type:"status",value:3,id:"status-3"}))},[o("div",mt,[t(l,null,{default:n(()=>[t(r(Ee))]),_:1}),e[20]||(e[20]=o("span",null,"已录用",-1))]),u[3]?(f(),g("div",ft,w(u[3]),1)):R("",!0)],2),o("div",{class:y(["tree-item",{active:c.value==="status-4"}]),onClick:e[6]||(e[6]=s=>b({type:"status",value:4,id:"status-4"}))},[o("div",_t,[t(l,null,{default:n(()=>[t(r(je))]),_:1}),e[21]||(e[21]=o("span",null,"拒不录用",-1))]),u[4]?(f(),g("div",vt,w(u[4]),1)):R("",!0)],2)])]),o("div",gt,[t(be,Le({ref_key:"crudRef",ref:te},r(ee)),{"actionbar-right":n(()=>[o("div",ht,[t(k,{class:"upload-demo",action:Z,headers:{Authorization:`Bearer ${r(T).get("token")}`},"on-success":re,"on-error":ue,accept:".xlsx,.xls"},{default:n(()=>[t(m,{type:"primary",size:"small"},{default:n(()=>[t(l,null,{default:n(()=>[t(r(qe))]),_:1}),e[22]||(e[22]=C(" 导入 "))]),_:1})]),_:1},8,["headers"])])]),_:1},16)])])]),_:1}),t(I,{label:"待通知列表",name:"resume"},{default:n(()=>[o("div",yt,[o("div",bt,[o("div",kt,[t(Ce,{model:i,inline:!0,size:"default"},{default:n(()=>[t(z,{label:"姓名"},{default:n(()=>[t(F,{modelValue:i.name,"onUpdate:modelValue":e[7]||(e[7]=s=>i.name=s),placeholder:"请输入姓名",clearable:"",style:{width:"200px"}},null,8,["modelValue"])]),_:1}),t(z,{label:"手机号"},{default:n(()=>[t(F,{modelValue:i.phone,"onUpdate:modelValue":e[8]||(e[8]=s=>i.phone=s),placeholder:"请输入手机号",clearable:"",style:{width:"200px"}},null,8,["modelValue"])]),_:1}),t(z,{label:"职位"},{default:n(()=>[t(ke,{modelValue:i.position,"onUpdate:modelValue":e[9]||(e[9]=s=>i.position=s),placeholder:"请选择职位",clearable:"",style:{width:"200px"}},{default:n(()=>[t(G,{label:"全部",value:""}),(f(!0),g(K,null,Q(x.value,s=>(f(),H(G,{key:s.id,label:s.title,value:s.title},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(z,{label:"申请时间"},{default:n(()=>[t(we,{modelValue:i.dateRange,"onUpdate:modelValue":e[10]||(e[10]=s=>i.dateRange=s),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",format:"YYYY-MM-DD","value-format":"YYYY-MM-DD",style:{width:"300px"}},null,8,["modelValue"])]),_:1}),t(z,null,{default:n(()=>[t(m,{type:"primary",onClick:ce},{default:n(()=>[t(l,null,{default:n(()=>[t(r(Pe))]),_:1}),e[23]||(e[23]=C(" 搜索 "))]),_:1}),t(m,{onClick:pe},{default:n(()=>[t(l,null,{default:n(()=>[t(r(Oe))]),_:1}),e[24]||(e[24]=C(" 重置 "))]),_:1})]),_:1})]),_:1},8,["model"])]),o("div",wt,[o("div",Ct,[t(m,{type:"primary",onClick:ye,disabled:!$.value.length},{default:n(()=>[t(l,null,{default:n(()=>[t(r(J))]),_:1}),e[25]||(e[25]=C(" 批量通知 "))]),_:1},8,["disabled"])])]),o("div",St,[t(Re,{data:D.value,onSelectionChange:me,loading:E.value,style:{width:"100%"},height:"calc(100vh - 400px)"},{default:n(()=>[t(h,{type:"selection",width:"55"}),t(h,{prop:"name",label:"姓名",width:"120"}),t(h,{prop:"phone",label:"手机号",width:"130"}),t(h,{prop:"position_title",label:"应聘职位",width:"150"}),t(h,{prop:"apply_time",label:"申请时间",width:"120"}),t(h,{prop:"status",label:"状态",width:"100"},{default:n(s=>[t(Se,{type:"warning"},{default:n(()=>e[26]||(e[26]=[C("待通知")])),_:1})]),_:1}),t(h,{prop:"source",label:"来源",width:"100"}),t(h,{prop:"remark",label:"备注","min-width":"150","show-overflow-tooltip":""}),t(h,{label:"操作",width:"200",fixed:"right"},{default:n(s=>[t(m,{type:"primary",size:"small",onClick:P=>ve(s.row)},{default:n(()=>e[27]||(e[27]=[C(" 通知 ")])),_:2},1032,["onClick"]),t(m,{type:"success",size:"small",onClick:P=>ge(s.row)},{default:n(()=>e[28]||(e[28]=[C(" 安排面试 ")])),_:2},1032,["onClick"]),t(m,{type:"info",size:"small",onClick:P=>he(s.row)},{default:n(()=>e[29]||(e[29]=[C(" 查看详情 ")])),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data","loading"])]),o("div",Rt,[t(xe,{"current-page":p.current,"onUpdate:currentPage":e[11]||(e[11]=s=>p.current=s),"page-size":p.size,"onUpdate:pageSize":e[12]||(e[12]=s=>p.size=s),"page-sizes":[10,20,50,100],total:p.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:fe,onCurrentChange:_e},null,8,["current-page","page-size","total"])])])])]),_:1})]),_:1},8,["modelValue"])])]),t(Ge,{ref_key:"batchTagsDialogRef",ref:L,crudExpose:r(_)},null,8,["crudExpose"]),t(Je,{ref_key:"batchStatusDialogRef",ref:j,crudExpose:r(_),onSuccess:ie},null,8,["crudExpose"]),t(He,{ref_key:"smSnotificationRef",ref:N,crudExpose:r(_)},null,8,["crudExpose"])]),_:1})}}}),Mt=Ke(Vt,[["__scopeId","data-v-291a327c"]]);export{Mt as default};