Files
work-leave-front/dist_verify_sidebar/static/js/LeaveSetting-BmMRp9HT.js
T
wanghu 2e36d7a9c8
build / build (push) Successful in 9m55s
commit
2026-10-10 15:58:02 +08:00

2 lines
27 KiB
JavaScript

import{l as ws,p as _s,a as b,f as t,e as l,w as o,j as c,x as E,v as r,s as F,z as ks,D as $e,r as p,i as se,o as v,g as i,t as m,F as j,b as te,n as L,c as le,d as V,k,_ as Ts}from"./index-CTJMns_f.js";import{t as N}from"./leaveTime-ZdUoa0wT.js";import{M as Re}from"./index-CiysDxBq.js";const Ms={class:"page-wrapper"},xs={class:"main-container setting-container"},Cs={class:"panel-tip"},hs={class:"form-section"},Vs={class:"section-head"},Ss={class:"section-extra"},Is={class:"period-row"},Es={class:"period-row"},Ns={class:"form-section"},Ds={class:"form-footer"},Os={class:"type-toolbar fix"},Hs={class:"fr type-meta"},Us={class:"type-grid mt-12"},$s=["onDragstart","onDragover"],Rs={class:"type-head"},Fs=["title"],Ls={class:"type-name"},As=["title","onDblclick"],Bs={class:"type-actions"},Ps=["onClick"],zs=["onClick"],Gs=["onClick"],Ws={key:0,class:"empty-tip"},js={class:"managed-box"},qs={class:"managed-head"},Ks={class:"managed-head-l"},Js={class:"managed-title"},Qs={class:"managed-types"},Xs={key:0,class:"managed-empty"},Ys={class:"stat-row"},Zs={class:"stat-card"},et={class:"sc-icon ic-blue"},st={class:"sc-body"},tt={class:"sc-num"},lt={class:"stat-card"},at={class:"sc-icon ic-green"},nt={class:"sc-body"},ot={class:"sc-num"},it={class:"stat-card"},rt={class:"sc-icon ic-purple"},ut={class:"sc-body"},dt={class:"sc-num"},ct={class:"sc-icon ic-red"},mt={class:"sc-body"},pt={class:"sc-num"},vt={class:"usertime-box"},ft={class:"tree-panel"},gt={class:"panel-side-title"},bt={class:"table-panel"},yt={class:"table-toolbar"},wt={class:"tt-left"},_t={class:"tt-count"},kt={class:"tt-right"},Tt={class:"foot-info"},Mt={class:"fi-item"},xt={class:"hl-blue"},Ct={class:"fi-item"},ht={class:"hl-orange"},Vt={class:"foot-btns"},St={class:"panel-tip"},It={class:"sec-toolbar"},Et={class:"sec-stat"},Nt={class:"stat-chip"},Dt={key:0,class:"stat-chip am"},Ot={key:1,class:"stat-chip pm"},Ht={key:2,class:"stat-chip night"},Ut={key:3,class:"stat-chip total"},$t={class:"import-upload"},Rt={key:0,class:"import-errors"},Ft={class:"period-row sec-period-row"},Lt={key:0,class:"sec-dur-hint"},be=-1,At=ws({__name:"LeaveSetting",setup(Bt){const ye=c("time"),f=c({forenoon1:"08:00",forenoon2:"12:00",afternoon1:"13:00",afternoon2:"17:00",intervalMinutes:10,minMinutes:0}),ae=c(!1),Fe=k(()=>{const s=a=>{const[u,d]=String(a||"0:0").split(":").map(Number);return(u||0)*60+(d||0)},e=s(f.value.forenoon2)-s(f.value.forenoon1)+s(f.value.afternoon2)-s(f.value.afternoon1);return!isFinite(e)||e<=0?"0":String(Number((e/60).toFixed(2)))});async function Le(){try{const s=await E.getTimeSet().send();s&&(f.value={...f.value,...s})}catch(s){r.Message.error(s.message||"加载作息时间失败")}}async function Ae(){ae.value=!0;try{await E.setTimeSet(f.value).send(),r.Message.success("作息时间已保存(影响新提交的时长计算)")}catch(s){r.Message.error(s.message||"保存失败")}finally{ae.value=!1}}const D=c([]),q=c(""),ne=c(null),K=c("");async function O(){try{D.value=await F.manageList().send()||[]}catch(s){r.Message.error(s.message||"加载请假类型失败")}}async function we(){const s=q.value.trim();if(!s){r.Message.warning("请输入类型名称");return}try{await F.add(s).send(),r.Message.success("新增成功"),q.value="",O()}catch(e){r.Message.error(e.message||"新增失败")}}function _e(s){ne.value=s.SerID,K.value=s.Name}async function ke(s){const e=K.value.trim();if(!e){r.Message.warning("类型名称不得为空");return}try{await F.update(s.SerID,e,s.Enable).send(),r.Message.success("修改成功"),ne.value=null,O()}catch(a){r.Message.error(a.message||"修改失败")}}async function Be(s){try{await F.update(s.SerID,s.Name,s.Enable===1?0:1).send(),r.Message.success(s.Enable===1?"已停用":"已启用"),O()}catch(e){r.Message.error(e.message||"操作失败")}}const S=c(null);function Pe(s){S.value=s}function ze(s,e){if(e.preventDefault(),S.value===null||S.value===s)return;const a=D.value,[u]=a.splice(S.value,1);a.splice(s,0,u),S.value=s}async function Ge(){if(S.value!==null){S.value=null;try{await F.sort(D.value.map(s=>s.SerID).join(",")),O()}catch(s){r.Message.error(s.message||"排序保存失败"),O()}}}function We(s){Re({title:"删除类型",msg:`确定删除请假类型「${s.Name}」吗?`,info:"已被请假记录引用的类型无法删除",async onOk(){try{await F.remove(s.SerID).send(),r.Message.success("删除成功"),O()}catch(e){r.Message.error(e.message||"删除失败")}}})}const x=c([]),oe=c(""),ie=c(!1);function U(s){return s.editTime!==null&&s.editTime!==void 0&&s.editTime!==""}function je(s){const e=Number(s)||0;return e<=0?"danger":e<8?"warn":"ok"}function qe(s){return U(s)?N((s.usableHours||0)+(Number(s.editTime)||0)):""}const re=c([]),Te=c([]),ue=c(new Map),A=c(null);function Me(s){const e=[];for(const a of s){if(!(a.type===1||!!a.isParent))continue;const d=new Set,w=T=>T.forEach(h=>{(h.type===2||!h.isParent&&!(h.children&&h.children.length))&&d.add(h.id),h.children&&w(h.children)});a.children&&w(a.children),ue.value.set(a.id,d),e.push({id:a.id,title:a.name,expand:!0,render:T=>T("span",{class:"g-node"},[T("span",{class:"g-name"},a.name),T("span",{class:"g-count"},String(d.size))]),children:Me(a.children||[])})}return e}async function Ke(){try{Te.value=await ks.getSchoolAll().send()||[],ue.value=new Map;const s=Me(Te.value);re.value=[{id:be,title:"全部教师",expand:!0,selected:!0,render:e=>e("span",{class:"g-node is-root"},[e("span",{class:"g-name"},"全部教师"),e("span",{class:"g-count"},String(x.value.length))]),children:s}],A.value=be}catch(s){r.Message.error(s.message||"加载教师组树失败")}}function Je(s){s.length&&(A.value=s[0].id)}const J=k(()=>{if(!A.value||A.value===be)return x.value;const s=ue.value.get(A.value);return s?x.value.filter(e=>s.has(e.userId)):x.value}),xe=k(()=>J.value.reduce((s,e)=>s+(e.usableHours||0),0)),Q=k(()=>J.value.length),Ce=k(()=>N(xe.value)),Qe=k(()=>Q.value?N(xe.value/Q.value):"0"),he=k(()=>J.value.filter(s=>(s.usableHours||0)<=0).length),Ve=k(()=>x.value.filter(U)),$=k(()=>Ve.value.length),de=k(()=>N(Ve.value.reduce((s,e)=>s+(Number(e.editTime)||0),0)));async function R(){ie.value=!0;try{const s=await $e.userTimeList({keyword:oe.value||void 0}).send()||[];x.value=s.map(a=>({...a,editTime:null,editRemark:""}));const e=re.value[0];e&&e.render&&(e.render=a=>a("span",{class:"g-node is-root"},[a("span",{class:"g-name"},"全部教师"),a("span",{class:"g-count"},String(x.value.length))]))}catch(s){r.Message.error(s.message||"加载教师时长失败")}finally{ie.value=!1}}const ce=c(!1);async function Xe(){const s=x.value.filter(U).map(e=>({userId:e.userId,editHours:e.editTime,remark:(e.editRemark||"").trim()}));if(!s.length){r.Message.warning("请先填写需要新加的时长");return}ce.value=!0;try{await $e.adjust(s).send(),r.Message.success(`设置成功!共调整 ${s.length} 位教师`),await R()}catch(e){r.Message.error(e.message||"提交失败")}finally{ce.value=!1}}function me(s,e){const a=Number(s.editTime)||0,u=Math.round((a+e)*100)/100;if(Math.abs(u)<.001){s.editTime=null;return}if((s.usableHours||0)+u<0){r.Message.warning(`「${s.userName||"该教师"}」剩余仅 ${N(s.usableHours||0)} 小时,不能再扣减`);return}s.editTime=u}function Se(){x.value.forEach(s=>{s.editTime=null,s.editRemark=""})}function Ye(s){s.editTime=null,s.editRemark=""}function Ze(s){return s&&U(s)?"row-edited":""}const es=[{title:"序号",type:"index",width:60,align:"center"},{title:"教师",key:"userName",minWidth:120,align:"left",render:(s,e)=>{const a=e.row.userName||"未命名",u=a.charAt(0);return s("div",{class:"u-cell"},[s("span",{class:"u-avatar"},u),s("span",{class:"u-name"},[s("span",{class:"u-name-main"},a),e.row.remark?s("span",{class:"u-remark"},e.row.remark):null])])}},{title:"剩余时长",key:"usableHours",width:150,align:"left",render:(s,e)=>{const a=e.row.usableHours||0,u=je(a);return s("div",{class:"h-cell lv-"+u},[s("span",{class:"h-num"},[N(a),s("i",{},"小时")]),s("span",{class:"h-day"},`≈ ${N(a/8)} 天`)])}},{title:"本次新加(小时)",width:230,align:"center",render:(s,e)=>s("div",{class:"edit-cell"},[s("InputNumber",{props:{value:e.row.editTime,max:9999,precision:2,activeChange:!1,placeholder:"可填负数"},class:"edit-hours-input",on:{"on-change":a=>{e.row.editTime=a??null}}}),s("div",{class:"quick-btns"},[s("button",{class:"q-btn",title:"+1 小时",onClick:()=>me(e.row,1)},"+1"),s("button",{class:"q-btn",title:"+4 小时(半天)",onClick:()=>me(e.row,4)},"+4"),s("button",{class:"q-btn danger",title:"-1 小时",onClick:()=>me(e.row,-1)},"-1")])])},{title:"调整后",width:130,align:"center",render:(s,e)=>{if(!U(e.row))return s("span",{class:"pf-empty"},"—");const a=Number(e.row.editTime)||0;return s("div",{class:"pf-cell"},[s("span",{class:"pf-num"},qe(e.row)),s("span",{class:a>=0?"pf-delta up":"pf-delta down"},(a>=0?"+":"")+N(a))])}},{title:"情况备注",minWidth:180,align:"center",render:(s,e)=>s("Input",{props:{type:"textarea",rows:1,maxlength:50,value:e.row.editRemark,placeholder:"如:补课补时"},on:{"on-blur":a=>{e.row.editRemark=a.target.value}}})},{title:"操作",width:70,align:"center",render:(s,e)=>U(e.row)?s("a",{class:"act-link reset",onClick:()=>Ye(e.row)},"撤销"):s("span",{class:"pf-empty"},"—")}],Ie=c(!1);async function ss(){Ie.value=!0;try{g.value.timeManagedTypes=I.value.join(","),g.value.timeLimitEnabled=I.value.length?1:0,await E.setOption({...g.value}).send(),r.Message.success("已保存")}catch(s){r.Message.error(s.message||"保存失败")}finally{Ie.value=!1}}const X=c(!1),ts=(se.isMock?"":se.serviceHost)+"/api/leave/time/Import",ls=(se.isMock?"":se.serviceHost)+"/api/leave/time/ImportTemplate",Y=c([]);function as(){Y.value=[],X.value=!0}function ns(s){if(s.code!==0){r.Message.error(s.msg||"导入失败");return}const e=s.data||{};e.success?(r.Message.success("导入成功!"),X.value=!1,R()):(Y.value=e.errors||[],r.Message.error(e.message||"导入失败!"))}function os(){r.Message.error("不支持的上传类型!仅支持 xls / xlsx 格式")}const pe=c([]),B=c(!1),y=c({name:"",beginTime:"08:00",endTime:"08:45"});async function ve(){try{pe.value=await E.sectionList().send()||[]}catch(s){r.Message.error(s.message||"加载节次失败")}}function Ee(s){y.value=s?{...s}:{name:"",beginTime:"08:00",endTime:"08:45"},B.value=!0}async function is(){if(!y.value.name.trim()){r.Message.warning("请输入节次名称");return}try{await E.sectionSave(y.value).send(),r.Message.success("保存成功"),B.value=!1,ve()}catch(s){r.Message.error(s.message||"保存失败")}}function rs(s){Re({title:"删除节次",msg:`确定删除「${s.name}」吗?`,async onOk(){try{await E.sectionDelete(s.id).send(),r.Message.success("删除成功"),ve()}catch(e){r.Message.error(e.message||"删除失败")}}})}const g=c({reasonMust:1,showExplain:1,timeLimitEnabled:0,timeManagedTypes:"",enableCourse:0,allowExchange:0,calcWay:1}),fe=c(!1),I=c([]);async function us(){try{const s=await E.getOption().send();s&&(g.value={...g.value,...s},I.value=(s.timeManagedTypes||"").split(",").filter(Boolean))}catch(s){r.Message.error(s.message||"加载其他设置失败")}}async function ds(){fe.value=!0;try{g.value.timeManagedTypes=I.value.join(","),await E.setOption(g.value).send(),r.Message.success("设置已保存")}catch(s){r.Message.error(s.message||"保存失败")}finally{fe.value=!1}}const Ne=k(()=>D.value.filter(s=>s.Enable===1));function P(s){const[e,a]=String(s||"0:0").split(":").map(Number);return(e||0)*60+(a||0)}function ge(s){const e=P(s.endTime)-P(s.beginTime);return!s.beginTime||!s.endTime||e<=0?"":e>=60?`${Number((e/60).toFixed(1))} 小时`:`${e} 分钟`}function H(s){const e=P(s.beginTime);return s.beginTime?e<12*60?"上午":e<18*60?"下午":"晚上":"—"}const cs=[{title:"序号",type:"index",width:70,align:"center"},{title:"节次名称",key:"name",minWidth:150,align:"left",render:(s,e)=>{const a=e.row;return s("span",{class:"sec-name",attrs:{title:a.name}},a.name)}},{title:"时段",width:100,align:"center",render:(s,e)=>{const a=e.row,u=H(a);return s("span",{class:`sec-tag ${u==="上午"?"am":u==="下午"?"pm":u==="晚上"?"night":"none"}`},u)}},{title:"上课时间",width:210,align:"center",render:(s,e)=>{const a=e.row;return s("span",{class:"sec-time"},[s("b",{},a.beginTime||"--:--"),s("i",{},"—"),s("b",{},a.endTime||"--:--")])}},{title:"时长",width:110,align:"center",render:(s,e)=>{const a=ge(e.row);return a?s("span",{class:"sec-dur"},a):s("span",{class:"sec-dur muted"},"—")}},{title:"操作",width:150,align:"center",render:(s,e)=>[s("a",{class:"sec-op",onClick:()=>Ee(e.row)},"编辑"),s("span",{class:"sec-split"},"|"),s("a",{class:"sec-op danger",onClick:()=>rs(e.row)},"删除")]}],C=k(()=>{const s=pe.value||[],e=s.filter(w=>H(w)==="上午").length,a=s.filter(w=>H(w)==="下午").length,u=s.filter(w=>H(w)==="晚上").length,d=s.reduce((w,T)=>w+Math.max(P(T.endTime)-P(T.beginTime),0),0);return{count:s.length,am:e,pm:a,night:u,totalText:d>=60?`${Number((d/60).toFixed(1))} 小时`:`${d} 分钟`}});return _s(()=>{Le(),O(),R(),ve(),us(),Ke()}),(s,e)=>{const a=p("Icon"),u=p("TimePicker"),d=p("FormItem"),w=p("Form"),T=p("Option"),h=p("Select"),ms=p("InputNumber"),_=p("Button"),z=p("Card"),G=p("TabPane"),Z=p("Input"),De=p("Tag"),ps=p("Checkbox"),vs=p("CheckboxGroup"),fs=p("Tree"),Oe=p("Table"),He=p("Radio"),gs=p("RadioGroup"),ee=p("i-switch"),bs=p("Tabs"),ys=p("Upload"),Ue=p("Modal");return v(),b("div",Ms,[t("div",xs,[l(bs,{modelValue:ye.value,"onUpdate:modelValue":e[16]||(e[16]=n=>ye.value=n),class:"sett-tabs"},{default:o(()=>[l(G,{label:"作息时间",name:"time"},{default:o(()=>[l(z,{bordered:!1,"dis-hover":"",class:"panel-card"},{default:o(()=>[t("div",Cs,[l(a,{type:"ios-information-circle-outline"}),e[23]||(e[23]=t("span",null,"学校作息用于计算请假时长:同日扣除午休,跨天按整天 8 小时折算。修改后仅影响新提交的申请。",-1))]),t("div",hs,[t("div",Vs,[e[26]||(e[26]=t("span",{class:"section-title"},"上下班时段",-1)),t("span",Ss,[e[24]||(e[24]=i("每日工作时长 ",-1)),t("b",null,m(Fe.value),1),e[25]||(e[25]=i(" 小时",-1))])]),l(w,{"label-width":96,class:"section-form"},{default:o(()=>[l(d,{label:"上午"},{default:o(()=>[t("div",Is,[l(u,{modelValue:f.value.forenoon1,"onUpdate:modelValue":e[0]||(e[0]=n=>f.value.forenoon1=n),format:"HH:mm",placeholder:"08:00",style:{width:"150px"}},null,8,["modelValue"]),e[27]||(e[27]=t("span",{class:"period-sep"},"至",-1)),l(u,{modelValue:f.value.forenoon2,"onUpdate:modelValue":e[1]||(e[1]=n=>f.value.forenoon2=n),format:"HH:mm",placeholder:"12:00",style:{width:"150px"}},null,8,["modelValue"])])]),_:1}),l(d,{label:"下午"},{default:o(()=>[t("div",Es,[l(u,{modelValue:f.value.afternoon1,"onUpdate:modelValue":e[2]||(e[2]=n=>f.value.afternoon1=n),format:"HH:mm",placeholder:"13:00",style:{width:"150px"}},null,8,["modelValue"]),e[28]||(e[28]=t("span",{class:"period-sep"},"至",-1)),l(u,{modelValue:f.value.afternoon2,"onUpdate:modelValue":e[3]||(e[3]=n=>f.value.afternoon2=n),format:"HH:mm",placeholder:"17:00",style:{width:"150px"}},null,8,["modelValue"])])]),_:1})]),_:1})]),t("div",Ns,[e[32]||(e[32]=t("div",{class:"section-head"},[t("span",{class:"section-title"},"请假规则")],-1)),l(w,{"label-width":96,class:"section-form"},{default:o(()=>[l(d,{label:"最短请假间隔"},{default:o(()=>[l(h,{modelValue:f.value.intervalMinutes,"onUpdate:modelValue":e[4]||(e[4]=n=>f.value.intervalMinutes=n),style:{width:"150px"}},{default:o(()=>[(v(),b(j,null,te([5,10,15,20,30,60],n=>l(T,{key:n,value:n},{default:o(()=>[i(m(n)+" 分钟",1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"]),e[29]||(e[29]=t("span",{class:"form-tip"},"起止时间按该间隔取整",-1))]),_:1}),l(d,{label:"最少请假时间"},{default:o(()=>[l(ms,{modelValue:f.value.minMinutes,"onUpdate:modelValue":e[5]||(e[5]=n=>f.value.minMinutes=n),min:0,step:10,precision:0,style:{width:"150px"}},null,8,["modelValue"]),e[30]||(e[30]=t("span",{class:"unit-text"},"分钟",-1)),e[31]||(e[31]=t("div",{class:"form-tip"},"0 = 不限制;低于该时长的申请将被拒绝",-1))]),_:1})]),_:1})]),t("div",Ds,[l(_,{type:"primary",loading:ae.value,icon:"md-checkmark",onClick:Ae},{default:o(()=>[...e[33]||(e[33]=[i("保存设置",-1)])]),_:1},8,["loading"])])]),_:1})]),_:1}),l(G,{label:"请假类型",name:"type"},{default:o(()=>[l(z,{bordered:!1,"dis-hover":"",class:"panel-card"},{default:o(()=>[t("div",Os,[l(Z,{modelValue:q.value,"onUpdate:modelValue":e[6]||(e[6]=n=>q.value=n),placeholder:"输入名称,回车快速新增",style:{width:"240px"},class:"fl",clearable:"",onOnEnter:we},null,8,["modelValue"]),l(_,{type:"primary",class:"fl ml-8",icon:"md-add",onClick:we},{default:o(()=>[...e[34]||(e[34]=[i("新增类型",-1)])]),_:1}),t("span",Hs,[e[35]||(e[35]=i(" 共 ",-1)),t("b",null,m(D.value.length),1),e[36]||(e[36]=i(" 个类型 · 拖动卡片排序 / 双击名称编辑 ",-1))])]),t("div",Us,[(v(!0),b(j,null,te(D.value,(n,W)=>(v(),b("div",{key:n.SerID,class:L(["type-card",{disabled:n.Enable===0,dragging:S.value===W}]),draggable:"true",onDragstart:M=>Pe(W),onDragover:M=>ze(W,M),onDragend:Ge},[t("div",Rs,[t("span",{class:L(["status-dot",n.Enable===1?"on":"off"]),title:n.Enable===1?"启用中":"已停用"},null,10,Fs),t("div",Ls,[ne.value===n.SerID?(v(),le(Z,{key:0,modelValue:K.value,"onUpdate:modelValue":e[7]||(e[7]=M=>K.value=M),size:"small",onOnEnter:M=>ke(n),onOnBlur:M=>ke(n)},null,8,["modelValue","onOnEnter","onOnBlur"])):(v(),b("span",{key:1,title:n.Name,onDblclick:M=>_e(n)},m(n.Name),41,As))]),l(a,{class:"drag-handle",type:"ios-reorder"})]),t("div",Bs,[t("a",{class:"act-link act-toggle",onClick:M=>Be(n)},m(n.Enable===1?"停用":"启用"),9,Ps),t("a",{class:"act-link",onClick:M=>_e(n)},"编辑",8,zs),t("a",{class:"act-link act-del",onClick:M=>We(n)},"删除",8,Gs)])],42,$s))),128)),D.value.length?V("",!0):(v(),b("div",Ws,[l(a,{type:"ios-apps-outline"}),e[37]||(e[37]=t("p",null,"暂无请假类型,请在上方输入名称新增",-1))]))])]),_:1})]),_:1}),l(G,{label:"教师时长",name:"usertime"},{default:o(()=>[l(z,{bordered:!1,"dis-hover":"",class:"panel-card"},{default:o(()=>[t("div",js,[t("div",qs,[t("div",Ks,[l(a,{type:"ios-shield-checkmark-outline",class:"mh-icon"}),t("div",null,[t("div",Js,[e[39]||(e[39]=i(" 需扣减时长的请假类型 ",-1)),I.value.length?(v(),le(De,{key:0,color:"success",size:"small"},{default:o(()=>[i(" 已启用 "+m(I.value.length)+" 项 ",1)]),_:1})):(v(),le(De,{key:1,color:"warning",size:"small"},{default:o(()=>[...e[38]||(e[38]=[i("未启用",-1)])]),_:1}))]),e[40]||(e[40]=t("div",{class:"managed-tip"}," 勾选后,该类型请假审批通过将自动扣减教师时长;取消勾选即停止扣减。变更即时保存。 ",-1))])]),l(_,{type:"primary",ghost:"",icon:"ios-cloud-upload-outline",onClick:as},{default:o(()=>[...e[41]||(e[41]=[i("批量导入",-1)])]),_:1})]),t("div",Qs,[l(vs,{modelValue:I.value,"onUpdate:modelValue":e[8]||(e[8]=n=>I.value=n),onOnChange:ss},{default:o(()=>[(v(!0),b(j,null,te(Ne.value,n=>(v(),le(ps,{key:n.CodeID,label:n.CodeID},{default:o(()=>[i(m(n.Name),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"]),Ne.value.length?V("",!0):(v(),b("div",Xs,"暂无可选的请假类型,请先到「请假类型」新增并启用"))])]),t("div",Ys,[t("div",Zs,[t("div",et,[l(a,{type:"ios-people-outline"})]),t("div",st,[t("div",tt,[i(m(Q.value),1),e[42]||(e[42]=t("i",null,"人",-1))]),e[43]||(e[43]=t("div",{class:"sc-label"},"当前范围教师",-1))])]),t("div",lt,[t("div",at,[l(a,{type:"ios-time-outline"})]),t("div",nt,[t("div",ot,[i(m(Ce.value),1),e[44]||(e[44]=t("i",null,"小时",-1))]),e[45]||(e[45]=t("div",{class:"sc-label"},"剩余时长合计",-1))])]),t("div",it,[t("div",rt,[l(a,{type:"ios-stats-outline"})]),t("div",ut,[t("div",dt,[i(m(Qe.value),1),e[46]||(e[46]=t("i",null,"小时",-1))]),e[47]||(e[47]=t("div",{class:"sc-label"},"人均可用时长",-1))])]),t("div",{class:L(["stat-card",{"is-warn":he.value>0}])},[t("div",ct,[l(a,{type:"ios-warning-outline"})]),t("div",mt,[t("div",pt,[i(m(he.value),1),e[48]||(e[48]=t("i",null,"人",-1))]),e[49]||(e[49]=t("div",{class:"sc-label"},"时长已用尽",-1))])],2)]),t("div",vt,[t("div",ft,[t("div",gt,[l(a,{type:"ios-git-branch-outline"}),e[50]||(e[50]=t("span",null,"教师分组",-1)),e[51]||(e[51]=t("em",null,"点击筛选",-1))]),l(fs,{data:re.value,onOnSelectChange:Je,class:"grp-tree"},null,8,["data"])]),t("div",bt,[t("div",yt,[t("div",wt,[l(Z,{class:"tt-search",search:"",suffix:"ios-search",modelValue:oe.value,"onUpdate:modelValue":e[9]||(e[9]=n=>oe.value=n),placeholder:"搜索教师姓名 / 备注",onOnSearch:R,onOnClear:R},null,8,["modelValue"]),t("span",_t,[e[52]||(e[52]=i("共 ",-1)),t("b",null,m(Q.value),1),e[53]||(e[53]=i(" 位教师",-1))])]),t("div",kt,[l(_,{size:"small",icon:"md-refresh",onClick:R},{default:o(()=>[...e[54]||(e[54]=[i("刷新",-1)])]),_:1}),l(_,{size:"small",icon:"ios-undo-outline",disabled:!$.value,onClick:Se},{default:o(()=>[...e[55]||(e[55]=[i(" 清空改动 ",-1)])]),_:1},8,["disabled"])])]),l(Oe,{columns:es,data:J.value,loading:ie.value,"row-class-name":Ze,"no-data-text":"暂无教师时长数据"},null,8,["data","loading"]),t("div",{class:L(["usertime-footer",{active:$.value>0}])},[t("div",Tt,[t("span",Mt,[e[56]||(e[56]=i(" 范围剩余合计",-1)),t("b",xt,m(Ce.value),1),e[57]||(e[57]=i(" 小时 ",-1))]),e[62]||(e[62]=t("span",{class:"fi-sep"},null,-1)),t("span",Ct,[e[60]||(e[60]=i(" 待提交",-1)),t("b",ht,m($.value),1),e[61]||(e[61]=i(" 人 ",-1)),$.value>0?(v(),b(j,{key:0},[e[58]||(e[58]=i(" ,净增减 ",-1)),t("b",{class:L(Number(de.value)>=0?"hl-green":"hl-red")},m(Number(de.value)>0?"+":"")+m(de.value),3),e[59]||(e[59]=i(" 小时 ",-1))],64)):V("",!0)])]),t("div",Vt,[l(_,{disabled:!$.value,onClick:Se},{default:o(()=>[...e[63]||(e[63]=[i("取消",-1)])]),_:1},8,["disabled"]),l(_,{type:"primary",icon:"md-checkmark",disabled:!$.value,loading:ce.value,onClick:Xe},{default:o(()=>[...e[64]||(e[64]=[i(" 提交本次调整 ",-1)])]),_:1},8,["disabled","loading"])])],2)])])]),_:1})]),_:1}),l(G,{label:"节次",name:"section"},{default:o(()=>[l(z,{bordered:!1,"dis-hover":"",class:"panel-card"},{default:o(()=>[t("div",St,[l(a,{type:"ios-information-circle-outline"}),e[65]||(e[65]=t("span",null,"节次供「指派代课」等课务场景使用(P7 规划);可按学校作息维护。课务功能启用后,请假将按节次精确扣减。",-1))]),t("div",It,[t("div",Et,[t("span",Nt,[e[66]||(e[66]=i(" 共 ",-1)),t("b",null,m(C.value.count),1),e[67]||(e[67]=i(" 个节次 ",-1))]),C.value.am?(v(),b("span",Dt,"上午 "+m(C.value.am),1)):V("",!0),C.value.pm?(v(),b("span",Ot,"下午 "+m(C.value.pm),1)):V("",!0),C.value.night?(v(),b("span",Ht,"晚上 "+m(C.value.night),1)):V("",!0),C.value.count?(v(),b("span",Ut,"累计课时 "+m(C.value.totalText),1)):V("",!0)]),l(_,{type:"primary",icon:"md-add",onClick:e[10]||(e[10]=n=>Ee())},{default:o(()=>[...e[68]||(e[68]=[i("新增节次",-1)])]),_:1})]),l(Oe,{class:"sec-table",columns:cs,data:pe.value,"no-data-text":"暂无节次",stripe:""},null,8,["data"])]),_:1})]),_:1}),l(G,{label:"其他设置",name:"option"},{default:o(()=>[l(z,{bordered:!1,"dis-hover":"",class:"panel-card"},{default:o(()=>[l(w,{"label-width":150},{default:o(()=>[l(d,{label:"请假计算"},{default:o(()=>[l(gs,{value:g.value.calcWay===0?0:1,onOnChange:e[11]||(e[11]=n=>g.value.calcWay=n===0?0:1)},{default:o(()=>[l(He,{label:1},{default:o(()=>[...e[69]||(e[69]=[i("按小时",-1)])]),_:1}),l(He,{label:0},{default:o(()=>[...e[70]||(e[70]=[i("按天",-1)])]),_:1})]),_:1},8,["value"]),e[71]||(e[71]=t("span",{class:"ml-8 switch-tip"},"按天:申请页以「半天/半天以上 + 上午/下午」选择,时长以天计",-1))]),_:1}),l(d,{label:"请假事由必填"},{default:o(()=>[l(ee,{value:g.value.reasonMust===1,onOnChange:e[12]||(e[12]=n=>g.value.reasonMust=n?1:0)},null,8,["value"]),e[72]||(e[72]=t("span",{class:"ml-8 switch-tip"},"关闭后事由可选填",-1))]),_:1}),l(d,{label:"显示请假说明"},{default:o(()=>[l(ee,{value:g.value.showExplain===1,onOnChange:e[13]||(e[13]=n=>g.value.showExplain=n?1:0)},null,8,["value"]),e[73]||(e[73]=t("span",{class:"ml-8 switch-tip"},"申请页顶部是否展示作息时间说明",-1))]),_:1}),l(d,{label:"启用课务安排"},{default:o(()=>[l(ee,{value:g.value.enableCourse===1,onOnChange:e[14]||(e[14]=n=>g.value.enableCourse=n?1:0)},null,8,["value"]),e[74]||(e[74]=t("span",{class:"ml-8 switch-tip"},"启用后申请页出现「课务安排」三选一(无/自行/教务)",-1))]),_:1}),l(d,{label:"允许换课"},{default:o(()=>[l(ee,{value:g.value.allowExchange===1,onOnChange:e[15]||(e[15]=n=>g.value.allowExchange=n?1:0)},null,8,["value"])]),_:1}),l(d,null,{default:o(()=>[l(_,{type:"primary",loading:fe.value,onClick:ds},{default:o(()=>[...e[75]||(e[75]=[i("保存设置",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),l(Ue,{modelValue:X.value,"onUpdate:modelValue":e[17]||(e[17]=n=>X.value=n),title:"教师时长导入","mask-closable":!1,width:520},{default:o(()=>[t("a",{href:ls},"点击链接下载[教师时长导入模板.xlsx]"),t("div",$t,[l(ys,{action:ts,accept:".xls,.xlsx",format:["xls","xlsx"],"on-success":ns,"on-format-error":os,"show-upload-list":""},{default:o(()=>[l(_,null,{default:o(()=>[l(a,{type:"ios-cloud-upload-outline"}),e[76]||(e[76]=i(" 选择要上传的文件",-1))]),_:1})]),_:1})]),Y.value.length?(v(),b("div",Rt,[(v(!0),b(j,null,te(Y.value,(n,W)=>(v(),b("div",{key:W,class:"import-error-line"}," 第 "+m(n.row)+" 行:"+m(n.msg),1))),128))])):V("",!0)]),_:1},8,["modelValue"]),l(Ue,{modelValue:B.value,"onUpdate:modelValue":e[22]||(e[22]=n=>B.value=n),title:y.value.id?"编辑节次":"新增节次",width:520},{footer:o(()=>[l(_,{onClick:e[21]||(e[21]=n=>B.value=!1)},{default:o(()=>[...e[79]||(e[79]=[i("取消",-1)])]),_:1}),l(_,{type:"primary",onClick:is},{default:o(()=>[...e[80]||(e[80]=[i("保存",-1)])]),_:1})]),default:o(()=>[l(w,{"label-width":96,model:y.value},{default:o(()=>[l(d,{label:"节次名称",prop:"name",rules:[{required:!0,message:"请输入节次名称",trigger:"blur"}]},{default:o(()=>[l(Z,{modelValue:y.value.name,"onUpdate:modelValue":e[18]||(e[18]=n=>y.value.name=n),placeholder:"如:第一节",maxlength:20},null,8,["modelValue"])]),_:1}),l(d,{label:"上课时间"},{default:o(()=>[t("div",Ft,[l(u,{modelValue:y.value.beginTime,"onUpdate:modelValue":e[19]||(e[19]=n=>y.value.beginTime=n),format:"HH:mm",placeholder:"08:00",class:"sec-time-picker"},null,8,["modelValue"]),e[77]||(e[77]=t("span",{class:"period-sep"},"至",-1)),l(u,{modelValue:y.value.endTime,"onUpdate:modelValue":e[20]||(e[20]=n=>y.value.endTime=n),format:"HH:mm",placeholder:"08:45",class:"sec-time-picker"},null,8,["modelValue"]),ge(y.value)?(v(),b("span",Lt,m(ge(y.value)),1)):V("",!0)])]),_:1}),l(d,{label:"所属时段"},{default:o(()=>[t("span",{class:L(["sec-tag",H(y.value)==="上午"?"am":H(y.value)==="下午"?"pm":"night"])},m(H(y.value)),3),e[78]||(e[78]=t("span",{class:"form-tip sec-form-tip"},"时段由开始时间自动归类,无需手动设置",-1))]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])])}}}),Wt=Ts(At,[["__scopeId","data-v-40fc52c2"]]);export{Wt as default};