| 1 |
- import{x as e,a1 as a,a2 as t,y as s,g as l,d as o,a as i,O as n,k as r,m as c,P as u}from"./element-plus.B27SxRGv.js";import{y as d,ae as p,_ as m}from"./index.DYWCVKSk.js";import{P as f}from"./wechat.DxkWAiK2.js";import{P as b}from"./PageContent.2D3OI2WE.js";import{E as h}from"./sql.Cgn48OB5.js";import{E as g}from"./size.DzUFG__r.js";import{_ as y,a as j}from"./vue-web-terminal.D-rog7dz.js";import{J as _}from"./index.XraOV2TB.js";import{M as v,aZ as w,a_ as k,aL as C,u as x,I as z,bk as S,bJ as P,bL as R,s as J,F as V,aX as T,v as $,bb as L,H as D,t as N,aU as A,aS as B,as as I}from"./@vue.DbmRtknU.js";import"./lodash-es.DaM9m3L-.js";import"./async-validator.j0i5Y79Y.js";import"./@popperjs.DxtSUbXb.js";import"./@ctrl.BEgk5vdO.js";import"./dayjs.DCWbrgJ0.js";import"./memoize-one.BAtLgO95.js";import"./normalize-wheel-es.TzhA1irr.js";import"./@floating-ui.8vigAAFV.js";import"./pinia.BlfmsheH.js";import"./@vueuse.Dnsd2JKX.js";import"./vue-i18n.DXLOBfKS.js";import"./@intlify.DPMNdUn_.js";import"./nprogress.BTjJXJ-u.js";import"./codemirror.CYSLATvI.js";import"./diff-match-patch.DkK4wJpa.js";/* empty css */import"./vue-router.yxIMtaxH.js";import"./axios.Da-QW0H8.js";import"./qs.BQjOrGHM.js";import"./side-channel.4q28KFJj.js";import"./es-errors.DTEWvbA_.js";import"./object-inspect.DvQZIv3_.js";import"./side-channel-list.Do0-XmF5.js";import"./side-channel-map.DNHQ53lO.js";import"./get-intrinsic.Bbe5x-9b.js";import"./es-object-atoms.CyiuHMUS.js";import"./math-intrinsics.pM-JTNwN.js";import"./gopd.BudZp56J.js";import"./es-define-property.F0aoeP8o.js";import"./has-symbols.BcO-SUVM.js";import"./get-proto.Cb_fpw-j.js";import"./dunder-proto.WEH3rgQR.js";import"./call-bind-apply-helpers.DJjIjCF_.js";import"./function-bind.DrnB-baK.js";import"./hasown.BXcyoiLU.js";import"./call-bound.22gFUC2Q.js";import"./side-channel-weakmap.DpSeWE6i.js";import"./pinia-plugin-persistedstate.COWkwNh5.js";import"./exceljs.DLSZe_6I.js";import"./time.bF_pEo2S.js";import"./vue.MGxsMDTR.js";import"./vue-json-pretty.DEqWvEy3.js";const Q={class:"app-container job-page"},q={class:"card-header"},M={class:"status-content"},E={class:"status-item"},U={class:"status-item"},F={class:"status-item"},H={class:"status-actions"},O={class:"job-cards-container"},W={class:"job-card-header"},G={class:"job-card-title"},K={class:"job-index"},X=["title"],Z={class:"job-card-body"},Y={class:"job-info-item"},ee={class:"job-info-value"},ae={class:"job-info-item"},te={class:"job-info-item"},se={class:"job-info-value"},le={class:"job-card-footer"},oe={class:"terminal-wrapper"},ie={class:"execution-log-drawer"},ne={class:"data-table__content"},re={key:1},ce=m(v({name:"Job",inheritAttrs:!1,__name:"index",setup(m){const{searchRef:v,contentRef:ce,handleQueryClick:ue,handleResetClick:de,refreshList:pe}=d(),me=pe,fe=A({status:"未知",is_running:!1,job_count:0}),be=B({permPrefix:"module_task:cronjob:job",colon:!0,isExpandable:!1,showNumber:2,form:{labelWidth:"auto"},formItems:[{prop:"name",label:"任务名称",type:"input",attrs:{placeholder:"请输入任务名称",clearable:!0,style:{width:"150px"}}},{prop:"status",label:"任务状态",type:"select",options:[{label:"运行中",value:"运行中"},{label:"暂停",value:"暂停"},{label:"停止",value:"停止"}],attrs:{placeholder:"请选择状态",clearable:!0,style:{width:"150px"}}}]}),he=B({permPrefix:"module_task:cronjob:job",cols:[],hideColumnFilter:!0,showToolbar:!1,pagination:!1,indexAction:async e=>{var a;try{const e=await p.getSchedulerStatus();fe.value=e.data.data}catch(i){}const t=null==(a=(await p.getSchedulerJobs()).data)?void 0:a.data;let s=Array.isArray(t)?t:[];const l=e,o="string"==typeof l.name?l.name.trim():"";return o&&(s=s.filter(e=>e.name.includes(o))),l.status&&(s=s.filter(e=>e.status===l.status)),s}}),ge=A(!1),ye=A(!1),je=A(void 0),_e=A(),ve=A(),we=A(!1),ke=A(null),Ce=B({permPrefix:"module_task:cronjob:job",colon:!0,isExpandable:!1,showNumber:2,form:{labelWidth:"auto"},formItems:[{prop:"status",label:"执行状态",type:"select",options:[{label:"待执行",value:"pending"},{label:"执行中",value:"running"},{label:"成功",value:"success"},{label:"失败",value:"failed"},{label:"超时",value:"timeout"},{label:"已取消",value:"cancelled"}],attrs:{placeholder:"请选择状态",clearable:!0,style:{width:"120px"}}},{prop:"trigger_type",label:"触发方式",type:"select",options:[{label:"Cron表达式",value:"cron"},{label:"时间间隔",value:"interval"},{label:"固定日期",value:"date"},{label:"一次性任务",value:"manual"}],attrs:{placeholder:"请选择",clearable:!0,style:{width:"120px"}}}]}),xe=B({permPrefix:"module_task:cronjob:job",cols:[],hideColumnFilter:!0,toolbar:["delete"],defaultToolbar:["refresh"],pagination:{pageSize:10,pageSizes:[10,20,30,50]},request:{page_no:"page_no",page_size:"page_size"},indexAction:async e=>{const a=je.value;if(!a)return{total:0,list:[]};const t=e,s=(await p.getJobLogList({page_no:t.page_no??1,page_size:t.page_size??10,job_id:a,job_name:void 0,status:t.status,trigger_type:t.trigger_type})).data.data;return{total:(null==s?void 0:s.total)??0,list:(null==s?void 0:s.items)??[]}},deleteAction:e=>p.deleteJobLog(e.split(",").map(e=>Number(e.trim())).filter(e=>!Number.isNaN(e))),deleteConfirm:{title:"警告",message:"确认删除选中的执行记录?",type:"warning"}});function ze(e){switch(e){case"运行中":return"success";case"暂停":return"warning";case"停止":return"danger";default:return"info"}}function Se(e){switch(e){case"运行中":return"success";case"暂停中":return"warning";case"已停止":return"danger";default:return"info"}}function Pe(e){switch(e){case"运行中":return"运行中";case"暂停中":return"暂停中";case"已停止":return"已停止";case"未知":return"未知";default:return e}}function Re(e){if(!e)return"-";if(e.includes("cron")){const a=e.match(/cron\[([^\]]+)\]/);if(a){const e=a[1],t=e.match(/month='([^']+)'/),s=e.match(/day='([^']+)'/),l=e.match(/hour='([^']+)'/),o=e.match(/minute='([^']+)'/),i=e.match(/second='([^']+)'/),n=e.match(/day_of_week='([^']+)'/),r=[];return i&&"'*'"!==i[1]&&r.push(`秒:${i[1]}`),o&&"'*'"!==o[1]&&r.push(`分:${o[1]}`),l&&"'*'"!==l[1]&&r.push(`时:${l[1]}`),s&&"'*'"!==s[1]&&r.push(`日:${s[1]}`),t&&"'*'"!==t[1]&&r.push(`月:${t[1]}`),n&&"'*'"!==n[1]&&r.push(`周:${n[1]}`),0===r.length?"Cron: 每分钟":`Cron: ${r.join(" ")}`}return e}if(e.includes("interval")){const a=e.match(/interval\[([^\]]+)\]/);return a?`间隔时长: ${a[1]}`:e}if(e.includes("date")){const a=e.match(/date\[([^\]]+)\]/);return a?`执行日期: ${a[1]}`:e}return e}async function Je(){try{await p.syncJobsToDb(),await me()}catch(e){}}async function Ve(){try{await p.startScheduler(),await me()}catch(e){}}async function Te(){try{await p.pauseScheduler(),await me()}catch(e){}}async function $e(){try{await p.resumeScheduler(),await me()}catch(e){}}async function Le(){try{await u.confirm("确定要关闭调度器吗?","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await p.shutdownScheduler(),await me()}catch(e){}}async function De(){try{await u.confirm("确定要清空所有任务吗?\n此操作会将所有待执行任务的日志标记为已取消,不会删除历史执行记录。\n如需删除所有执行记录,请使用执行记录的批量删除功能。","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning",dangerouslyUseHTMLString:!1}),await p.clearAllJobs(),await me()}catch(e){}}async function Ne(){ge.value=!0,await Ae()}async function Ae(){try{const e=(await p.getSchedulerConsole()).data.data||"暂无任务信息";j.pushMessage("scheduler-console",{type:"normal",content:e})}catch(e){j.pushMessage("scheduler-console",{type:"normal",class:"error",content:"获取控制台信息失败"})}}function Be(){j.clear("scheduler-console")}function Ie(){var e;null==(e=ve.value)||e.fetchPageData(_e.value.getQueryParams(),!0)}function Qe(){var e;null==(e=ve.value)||e.fetchPageData(_e.value.getQueryParams(),!0)}function qe(e){return{pending:"待执行",running:"执行中",success:"成功",failed:"失败",timeout:"超时",cancelled:"已取消"}[e]||e}return(d,m)=>{const j=l,A=i,B=e,pe=w("Clock"),Me=o,Ee=w("Timer"),Ue=w("Calendar"),Fe=s,He=t,Oe=a,We=c,Ge=r,Ke=k("hasPerm"),Xe=n;return C(),x("div",Q,[z(f,{ref_key:"searchRef",ref:v,"search-config":be,onQueryClick:S(ue),onResetClick:S(de)},null,8,["search-config","onQueryClick","onResetClick"]),z(b,{ref_key:"contentRef",ref:ce,"content-config":he},{header:P(()=>[$("div",q,[$("div",M,[m[16]||(m[16]=$("span",null,"调度器监控",-1)),$("div",E,[m[5]||(m[5]=$("span",{class:"label"},"状态:",-1)),z(j,{type:ze(fe.value.status),size:"large"},{default:P(()=>[D(L(fe.value.status),1)]),_:1},8,["type"])]),$("div",U,[m[6]||(m[6]=$("span",{class:"label"},"运行中:",-1)),z(j,{type:fe.value.is_running?"success":"danger",size:"large"},{default:P(()=>[D(L(fe.value.is_running?"是":"否"),1)]),_:1},8,["type"])]),$("div",F,[m[7]||(m[7]=$("span",{class:"label"},"任务数量:",-1)),z(j,{type:"warning",size:"large"},{default:P(()=>[D(L(fe.value.job_count),1)]),_:1})]),$("div",H,[R((C(),J(A,{type:"success",icon:"VideoPlay",disabled:"停止"!==fe.value.status,onClick:Ve},{default:P(()=>[...m[8]||(m[8]=[D(" 启动 ",-1)])]),_:1},8,["disabled"])),[[Ke,["module_task:cronjob:job:scheduler"]]]),R((C(),J(A,{type:"warning",icon:"VideoPause",disabled:"运行中"!==fe.value.status,onClick:Te},{default:P(()=>[...m[9]||(m[9]=[D(" 暂停 ",-1)])]),_:1},8,["disabled"])),[[Ke,["module_task:cronjob:job:scheduler"]]]),R((C(),J(A,{type:"primary",icon:"RefreshRight",disabled:"暂停"!==fe.value.status,onClick:$e},{default:P(()=>[...m[10]||(m[10]=[D(" 恢复 ",-1)])]),_:1},8,["disabled"])),[[Ke,["module_task:cronjob:job:scheduler"]]]),R((C(),J(A,{type:"danger",icon:"SwitchButton",disabled:"停止"===fe.value.status,onClick:Le},{default:P(()=>[...m[11]||(m[11]=[D(" 关闭 ",-1)])]),_:1},8,["disabled"])),[[Ke,["module_task:cronjob:job:scheduler"]]]),R((C(),J(A,{type:"danger",icon:"Delete",disabled:0===fe.value.job_count,onClick:De},{default:P(()=>[...m[12]||(m[12]=[D(" 清空任务 ",-1)])]),_:1},8,["disabled"])),[[Ke,["module_task:cronjob:job:task"]]]),R((C(),J(A,{type:"info",icon:"Monitor",onClick:Ne},{default:P(()=>[...m[13]||(m[13]=[D(" 控制台 ",-1)])]),_:1})),[[Ke,["module_task:cronjob:job:query"]]]),R((C(),J(A,{type:"primary",icon:"Refresh",onClick:Je},{default:P(()=>[...m[14]||(m[14]=[D(" 同步 ",-1)])]),_:1})),[[Ke,["module_task:cronjob:job:scheduler"]]]),R((C(),J(A,{type:"warning",icon:"Refresh",onClick:S(me)},{default:P(()=>[...m[15]||(m[15]=[D(" 刷新 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:update"]]])])])])]),table:P(({data:e,loading:a})=>[R((C(),x("div",O,[e&&0!==e.length?(C(),J(Oe,{key:1,gutter:16},{default:P(()=>[(C(!0),x(V,null,T(e,(e,a)=>(C(),J(He,{key:e.id,xs:24,sm:12,md:8,lg:6,class:"job-card-col"},{default:P(()=>[z(Fe,{class:"job-card",shadow:"hover"},{header:P(()=>[$("div",W,[$("div",G,[$("span",K,L(a+1),1),$("span",{class:"job-name",title:e.name},L(e.name),9,X)]),z(j,{type:Se(e.status),size:"small"},{default:P(()=>[D(L(Pe(e.status)),1)]),_:2},1032,["type"])])]),footer:P(()=>[$("div",le,["暂停中"===e.status?R((C(),J(A,{key:0,type:"primary",size:"small",icon:"VideoPlay",onClick:a=>async function(e){try{await p.resumeJob(e),await me()}catch(a){}}(e.id)},{default:P(()=>[...m[20]||(m[20]=[D(" 恢复 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:task"]]]):N("",!0),"运行中"===e.status?R((C(),J(A,{key:1,type:"warning",size:"small",icon:"VideoPause",onClick:a=>async function(e){try{await p.pauseJob(e),await me()}catch(a){}}(e.id)},{default:P(()=>[...m[21]||(m[21]=[D(" 暂停 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:task"]]]):N("",!0),"已停止"!==e.status&&"未知"!==e.status?R((C(),J(A,{key:2,type:"success",size:"small",icon:"CaretRight",onClick:a=>async function(e){try{await p.runJobNow(e),await me()}catch(a){}}(e.id)},{default:P(()=>[...m[22]||(m[22]=[D(" 调试 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:task"]]]):N("",!0),"未知"!==e.status?R((C(),J(A,{key:3,type:"danger",size:"small",icon:"Close",onClick:a=>async function(e){u.confirm("确认移除该任务?","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(async()=>{try{await p.removeJob(e),await me()}catch(a){}}).catch(()=>{u.close()})}(e.id)},{default:P(()=>[...m[23]||(m[23]=[D(" 移除 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:task"]]]):N("",!0),R((C(),J(A,{type:"info",size:"small",icon:"List",onClick:a=>async function(e){var a,t;je.value=e.id,ye.value=!0,await I(),null==(t=ve.value)||t.fetchPageData((null==(a=_e.value)?void 0:a.getQueryParams())??{},!0)}(e)},{default:P(()=>[...m[24]||(m[24]=[D(" 记录 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:query"]]])])]),default:P(()=>[$("div",Z,[$("div",Y,[m[17]||(m[17]=$("span",{class:"job-info-label"},"任务ID:",-1)),$("span",ee,L(e.id),1)]),$("div",ae,[m[18]||(m[18]=$("span",{class:"job-info-label"},"触发器:",-1)),String(e.trigger??"").includes("cron")?(C(),J(j,{key:0,type:"primary",size:"small",class:"job-trigger-tag"},{default:P(()=>[z(Me,null,{default:P(()=>[z(pe)]),_:1}),D(" "+L(Re(e.trigger)),1)]),_:2},1024)):String(e.trigger??"").includes("interval")?(C(),J(j,{key:1,type:"success",size:"small",class:"job-trigger-tag"},{default:P(()=>[z(Me,null,{default:P(()=>[z(Ee)]),_:1}),D(" "+L(Re(e.trigger)),1)]),_:2},1024)):String(e.trigger??"").includes("date")?(C(),J(j,{key:2,type:"warning",size:"small",class:"job-trigger-tag"},{default:P(()=>[z(Me,null,{default:P(()=>[z(Ue)]),_:1}),D(" "+L(Re(e.trigger)),1)]),_:2},1024)):(C(),J(j,{key:3,type:"info",size:"small",class:"job-trigger-tag"},{default:P(()=>[D(L(Re(e.trigger)),1)]),_:2},1024))]),$("div",te,[m[19]||(m[19]=$("span",{class:"job-info-label"},"下次执行:",-1)),$("span",se,L(e.next_run_time||"无"),1)])])]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)):(C(),J(B,{key:0,"image-size":80,description:"暂无数据"}))])),[[Xe,a]])]),_:1},8,["content-config"]),z(h,{modelValue:ge.value,"onUpdate:modelValue":m[1]||(m[1]=e=>ge.value=e),title:"调度器控制台",width:"900px"},{footer:P(()=>[z(A,{onClick:Ae},{default:P(()=>[...m[25]||(m[25]=[D("刷新",-1)])]),_:1}),z(A,{onClick:Be},{default:P(()=>[...m[26]||(m[26]=[D("清空",-1)])]),_:1}),z(A,{type:"primary",onClick:m[0]||(m[0]=e=>ge.value=!1)},{default:P(()=>[...m[27]||(m[27]=[D("关闭",-1)])]),_:1})]),default:P(()=>[$("div",oe,[z(S(y),{name:"scheduler-console","show-header":!1,theme:"dark"})])]),_:1},8,["modelValue"]),z(g,{modelValue:ye.value,"onUpdate:modelValue":m[2]||(m[2]=e=>ye.value=e),title:"执行记录",direction:"rtl",size:"80%"},{default:P(()=>[$("div",ie,[z(f,{ref_key:"logSearchRef",ref:_e,"search-config":Ce,onQueryClick:Ie,onResetClick:Qe},null,8,["search-config"]),z(b,{ref_key:"logContentRef",ref:ve,class:"execution-log-drawer__content","content-config":xe},{table:P(({data:e,loading:a,tableRef:t,onSelectionChange:s,pagination:l})=>[$("div",ne,[R((C(),J(Ge,{ref:t,data:e,border:"",stripe:"",height:"100%",onSelectionChange:s},{empty:P(()=>[z(B,{"image-size":80,description:"暂无数据"})]),default:P(()=>[z(We,{type:"selection",align:"center","min-width":"55"}),z(We,{type:"index",fixed:"",label:"序号","min-width":"60"},{default:P(e=>[D(L((l.currentPage-1)*l.pageSize+e.$index+1),1)]),_:2},1024),z(We,{label:"任务ID",prop:"job_id","min-width":"80","show-overflow-tooltip":""}),z(We,{label:"任务名称",prop:"job_name","min-width":"140"}),z(We,{label:"触发方式",prop:"trigger_type","min-width":"120"},{default:P(e=>[z(j,{size:"small"},{default:P(()=>{return[D(L((a=e.row.trigger_type,{cron:"Cron表达式",interval:"时间间隔",date:"固定日期",manual:"一次性任务"}[a||""]||a||"-")),1)];var a}),_:2},1024)]),_:1}),z(We,{label:"状态",prop:"status","min-width":"80"},{default:P(e=>{return[z(j,{type:(a=e.row.status,{pending:"info",running:"primary",success:"success",failed:"danger",timeout:"warning",cancelled:"info"}[a]||"info"),size:"small"},{default:P(()=>[D(L(qe(e.row.status)),1)]),_:2},1032,["type"])];var a}),_:1}),z(We,{label:"下次执行时间",prop:"next_run_time","min-width":"200","show-overflow-tooltip":""}),z(We,{label:"执行结果",prop:"result","min-width":"100","show-overflow-tooltip":""}),z(We,{label:"错误信息",prop:"error","min-width":"100","show-overflow-tooltip":""}),z(We,{label:"执行元数据","min-width":"100"},{default:P(e=>[e.row.job_state?(C(),J(A,{key:0,type:"primary",size:"small",link:"",icon:"View",onClick:a=>function(e){const a=e.job_state;if(a){try{ke.value=JSON.parse(a)}catch{ke.value=a}we.value=!0}}(e.row)},{default:P(()=>[...m[28]||(m[28]=[D(" 查看 ",-1)])]),_:1},8,["onClick"])):(C(),x("span",re,"-"))]),_:1}),z(We,{label:"创建时间",prop:"created_time","min-width":"160"}),z(We,{label:"更新时间",prop:"updated_time","min-width":"160"}),z(We,{label:"操作","min-width":"80",fixed:"right"},{default:P(e=>[R((C(),J(A,{type:"danger",size:"small",link:"",icon:"delete",onClick:a=>{return t=e.row.id,void(null==(s=ve.value)||s.handleDelete(t));var t,s}},{default:P(()=>[...m[29]||(m[29]=[D(" 删除 ",-1)])]),_:1},8,["onClick"])),[[Ke,["module_task:cronjob:job:delete"]]])]),_:1})]),_:2},1032,["data","onSelectionChange"])),[[Xe,a]])])]),_:1},8,["content-config"])])]),_:1},8,["modelValue"]),z(h,{modelValue:we.value,"onUpdate:modelValue":m[4]||(m[4]=e=>we.value=e),title:"执行元数据",width:"800px"},{footer:P(()=>[z(A,{type:"primary",onClick:m[3]||(m[3]=e=>we.value=!1)},{default:P(()=>[...m[30]||(m[30]=[D("关闭",-1)])]),_:1})]),default:P(()=>[z(_,{value:ke.value,height:"400px"},null,8,["value"])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-c0dde6d1"]]);export{ce as default};
|