"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[1306,6492],{94162:function(q,y,e){var K=e(64599),t=e.n(K),L=e(67294),n=e(66309),f=e(85893),F=function(u){function A(o){switch(o){case"primary":return"blue";case"success":return"success";case"info":return"green";case"warning":return"warning";case"danger":return"error";case"default":default:return"default"}}function p(o){if(o===void 0)return"";if(u.enums){var j=u.enums[o];return j.label}if(u.options){if(!Array.isArray(u.options))return console.log("DictTag options is no array!"),"";var m=t()(u.options),P;try{for(m.s();!(P=m.n()).done;){var l=P.value;if(l.value===o)return l.text}}catch(_){m.e(_)}finally{m.f()}}return String(u.value)}function R(o){if(o===void 0)return"default";if(u.enums){var j=u.enums[o];return j.listClass||"default"}if(u.options){if(!Array.isArray(u.options))return console.log("DictTag options is no array!"),"default";var m=t()(u.options),P;try{for(m.s();!(P=m.n()).done;){var l=P.value;if(l.value===o)return l.listClass||"default"}}catch(_){m.e(_)}finally{m.f()}}return String(u.value)}var T=function(){return A(R(u.value).toLowerCase())},d=function(){return p(u.value)};return(0,f.jsx)(n.Z,{color:T(),children:d()})};y.Z=F},33867:function(q,y,e){e.d(y,{iK:function(){return K},zc:function(){return L}});var K=function(n){return n[n.SUCCESS=200]="SUCCESS",n[n.ERROR=-1]="ERROR",n[n.TIMEOUT=401]="TIMEOUT",n.TYPE="success",n}({}),t=function(n){return n.GET="GET",n.POST="POST",n.PUT="PUT",n.DELETE="DELETE",n}({}),L=function(n){return n.JSON="application/json;charset=UTF-8",n.FORM_URLENCODED="application/x-www-form-urlencoded;charset=UTF-8",n.FORM_DATA="multipart/form-data;charset=UTF-8",n}({})},46492:function(q,y,e){e.r(y);var K=e(67294),t=e(17788),L=e(83622),n=e(26412),f=e(76772),F=e(61314),a=e(85893),u=function(p){var R,T=p.values,d=p.statusOptions;(0,K.useEffect)(function(){},[p]);var o=(0,f.useIntl)(),j={0:"\u9ED8\u8BA4\u7B56\u7565",1:"\u7ACB\u5373\u6267\u884C",2:"\u6267\u884C\u4E00\u6B21",3:"\u653E\u5F03\u6267\u884C"},m=function(){p.onCancel()};return(0,a.jsx)(t.Z,{width:800,title:o.formatMessage({id:"monitor.job.detail",defaultMessage:"\u64CD\u4F5C\u65E5\u5FD7\u8BE6\u7EC6\u4FE1\u606F"}),open:p.open,destroyOnClose:!0,onCancel:m,footer:[(0,a.jsx)(L.ZP,{onClick:m,children:"\u5173\u95ED"},"back")],children:(0,a.jsxs)(n.Z,{column:24,children:[(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.job_id",defaultMessage:"\u4EFB\u52A1\u7F16\u53F7"}),children:T.jobId}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.job_name",defaultMessage:"\u4EFB\u52A1\u540D\u79F0"}),children:T.jobName}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.job_group",defaultMessage:"\u4EFB\u52A1\u7EC4\u540D"}),children:T.jobGroup}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.concurrent",defaultMessage:"\u662F\u5426\u5E76\u53D1\u6267\u884C"}),children:T.concurrent==="1"?"\u7981\u6B62":"\u5141\u8BB8"}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.misfire_policy",defaultMessage:"\u8BA1\u5212\u6267\u884C\u9519\u8BEF\u7B56\u7565"}),children:j[T.misfirePolicy?T.misfirePolicy:"0"]}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.create_time",defaultMessage:"\u521B\u5EFA\u65F6\u95F4"}),children:(R=T.createTime)===null||R===void 0?void 0:R.toString()}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.status",defaultMessage:"\u72B6\u6001"}),children:(0,F.n)(d,T.status,"\u672A\u77E5")}),(0,a.jsx)(n.Z.Item,{span:12,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.next_valid_time",defaultMessage:"\u4E0B\u6B21\u6267\u884C\u65F6\u95F4"}),children:T.nextValidTime}),(0,a.jsx)(n.Z.Item,{span:24,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.cron_expression",defaultMessage:"cron\u6267\u884C\u8868\u8FBE\u5F0F"}),children:T.cronExpression}),(0,a.jsx)(n.Z.Item,{span:24,label:(0,a.jsx)(f.FormattedMessage,{id:"monitor.job.invoke_target",defaultMessage:"\u8C03\u7528\u76EE\u6807\u5B57\u7B26\u4E32"}),children:T.invokeTarget})]})})};y.default=u},18299:function(q,y,e){e.r(y);var K=e(15009),t=e.n(K),L=e(99289),n=e.n(L),f=e(5574),F=e.n(f),a=e(67294),u=e(97269),A=e(31199),p=e(5966),R=e(64317),T=e(90672),d=e(16434),o=e(86615),j=e(99859),m=e(17788),P=e(76772),l=e(85893),_=function(s){var c=j.Z.useForm(),ae=F()(c,1),C=ae[0],ee=s.jobGroupOptions,E=s.statusOptions;(0,a.useEffect)(function(){C.resetFields(),C.setFieldsValue({jobId:s.values.jobId,jobName:s.values.jobName,jobGroup:s.values.jobGroup,invokeTarget:s.values.invokeTarget,cronExpression:s.values.cronExpression,misfirePolicy:s.values.misfirePolicy,concurrent:s.values.concurrent,status:s.values.status,createBy:s.values.createBy,createTime:s.values.createTime,updateBy:s.values.updateBy,updateTime:s.values.updateTime,remark:s.values.remark})},[C,s]);var g=(0,P.useIntl)(),w=function(){C.submit()},r=function(){s.onCancel(),C.resetFields()},V=function(){var z=n()(t()().mark(function M(O){return t()().wrap(function(se){for(;;)switch(se.prev=se.next){case 0:s.onSubmit(O);case 1:case"end":return se.stop()}},M)}));return function(O){return z.apply(this,arguments)}}();return(0,l.jsx)(m.Z,{width:640,title:g.formatMessage({id:"monitor.job.title",defaultMessage:"\u7F16\u8F91\u5B9A\u65F6\u4EFB\u52A1\u8C03\u5EA6"}),open:s.open,forceRender:!0,destroyOnClose:!0,onOk:w,onCancel:r,children:(0,l.jsxs)(u.A,{form:C,grid:!0,submitter:!1,layout:"horizontal",onFinish:V,children:[(0,l.jsx)(A.Z,{name:"jobId",label:g.formatMessage({id:"monitor.job.job_id",defaultMessage:"\u4EFB\u52A1\u7F16\u53F7"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u7F16\u53F7",disabled:!0,hidden:!0,rules:[{required:!1,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u7F16\u53F7\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u7F16\u53F7\uFF01"})}]}),(0,l.jsx)(p.Z,{name:"jobName",label:g.formatMessage({id:"monitor.job.job_name",defaultMessage:"\u4EFB\u52A1\u540D\u79F0"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u540D\u79F0",rules:[{required:!1,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u540D\u79F0\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u540D\u79F0\uFF01"})}]}),(0,l.jsx)(R.Z,{name:"jobGroup",options:ee,label:g.formatMessage({id:"monitor.job.job_group",defaultMessage:"\u4EFB\u52A1\u7EC4\u540D"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u7EC4\u540D",rules:[{required:!1,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u7EC4\u540D\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u4EFB\u52A1\u7EC4\u540D\uFF01"})}]}),(0,l.jsx)(T.Z,{name:"invokeTarget",label:g.formatMessage({id:"monitor.job.invoke_target",defaultMessage:"\u8C03\u7528\u76EE\u6807\u5B57\u7B26\u4E32"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u8C03\u7528\u76EE\u6807\u5B57\u7B26\u4E32",rules:[{required:!0,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u8C03\u7528\u76EE\u6807\u5B57\u7B26\u4E32\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u8C03\u7528\u76EE\u6807\u5B57\u7B26\u4E32\uFF01"})}]}),(0,l.jsx)(d.Z,{name:"cronExpression",label:g.formatMessage({id:"monitor.job.cron_expression",defaultMessage:"cron\u6267\u884C\u8868\u8FBE\u5F0F"}),captchaTextRender:function(){return"\u751F\u6210\u8868\u8FBE\u5F0F"},onGetCaptcha:function(){return new Promise(function(M,O){O()})}}),(0,l.jsx)(o.Z.Group,{name:"misfirePolicy",label:g.formatMessage({id:"monitor.job.misfire_policy",defaultMessage:"\u8BA1\u5212\u6267\u884C\u9519\u8BEF\u7B56\u7565"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u8BA1\u5212\u6267\u884C\u9519\u8BEF\u7B56\u7565",valueEnum:{0:"\u7ACB\u5373\u6267\u884C",1:"\u6267\u884C\u4E00\u6B21",3:"\u653E\u5F03\u6267\u884C"},rules:[{required:!1,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u8BA1\u5212\u6267\u884C\u9519\u8BEF\u7B56\u7565\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u8BA1\u5212\u6267\u884C\u9519\u8BEF\u7B56\u7565\uFF01"})}],fieldProps:{optionType:"button",buttonStyle:"solid"}}),(0,l.jsx)(o.Z.Group,{name:"concurrent",label:g.formatMessage({id:"monitor.job.concurrent",defaultMessage:"\u662F\u5426\u5E76\u53D1\u6267\u884C"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u662F\u5426\u5E76\u53D1\u6267\u884C",valueEnum:{0:"\u5141\u8BB8",1:"\u7981\u6B62"},rules:[{required:!1,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u662F\u5426\u5E76\u53D1\u6267\u884C\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u662F\u5426\u5E76\u53D1\u6267\u884C\uFF01"})}],fieldProps:{optionType:"button",buttonStyle:"solid"}}),(0,l.jsx)(o.Z.Group,{valueEnum:E,name:"status",label:g.formatMessage({id:"monitor.job.status",defaultMessage:"\u72B6\u6001"}),colProps:{md:24},placeholder:"\u8BF7\u8F93\u5165\u72B6\u6001",rules:[{required:!1,message:(0,l.jsx)(P.FormattedMessage,{id:"\u8BF7\u8F93\u5165\u72B6\u6001\uFF01",defaultMessage:"\u8BF7\u8F93\u5165\u72B6\u6001\uFF01"})}]})]})})};y.default=_},61306:function(q,y,e){e.r(y);var K=e(5574),t=e.n(K),L=e(15009),n=e.n(L),f=e(97857),F=e.n(f),a=e(99289),u=e.n(a),A=e(67294),p=e(76772),R=e(85418),T=e(78957),d=e(2453),o=e(83622),j=e(17788),m=e(6110),P=e(65385),l=e(2236),_=e(86548),D=e(48689),s=e(80882),c=e(24969),ae=e(11475),C=e(91646),ee=e(92982),E=e(18299),g=e(46492),w=e(94162),r=e(85893),V=function(){var N=u()(n()().mark(function Z(I){var W,h;return n()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return W=d.ZP.loading("\u6B63\u5728\u6DFB\u52A0"),i.prev=1,i.next=4,(0,C.Y$)(F()({},I));case 4:return h=i.sent,W(),h.code===200?d.ZP.success("\u6DFB\u52A0\u6210\u529F"):d.ZP.error(h.msg),i.abrupt("return",!0);case 10:return i.prev=10,i.t0=i.catch(1),W(),d.ZP.error("\u6DFB\u52A0\u5931\u8D25\u8BF7\u91CD\u8BD5\uFF01"),i.abrupt("return",!1);case 15:case"end":return i.stop()}},Z,null,[[1,10]])}));return function(I){return N.apply(this,arguments)}}(),z=function(){var N=u()(n()().mark(function Z(I){var W,h;return n()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return W=d.ZP.loading("\u6B63\u5728\u66F4\u65B0"),i.prev=1,i.next=4,(0,C.gK)(I);case 4:return h=i.sent,W(),h.code===200?d.ZP.success("\u66F4\u65B0\u6210\u529F"):d.ZP.error(h.msg),i.abrupt("return",!0);case 10:return i.prev=10,i.t0=i.catch(1),W(),d.ZP.error("\u914D\u7F6E\u5931\u8D25\u8BF7\u91CD\u8BD5\uFF01"),i.abrupt("return",!1);case 15:case"end":return i.stop()}},Z,null,[[1,10]])}));return function(I){return N.apply(this,arguments)}}(),M=function(){var N=u()(n()().mark(function Z(I){var W,h;return n()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:if(W=d.ZP.loading("\u6B63\u5728\u5220\u9664"),I){i.next=3;break}return i.abrupt("return",!0);case 3:return i.prev=3,i.next=6,(0,C.eX)(I.map(function(U){return U.jobId}).join(","));case 6:return h=i.sent,W(),h.code===200?d.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):d.ZP.error(h.msg),i.abrupt("return",!0);case 12:return i.prev=12,i.t0=i.catch(3),W(),d.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),i.abrupt("return",!1);case 17:case"end":return i.stop()}},Z,null,[[3,12]])}));return function(I){return N.apply(this,arguments)}}(),O=function(){var N=u()(n()().mark(function Z(I){var W,h,H;return n()().wrap(function(U){for(;;)switch(U.prev=U.next){case 0:if(W=d.ZP.loading("\u6B63\u5728\u5220\u9664"),I){U.next=3;break}return U.abrupt("return",!0);case 3:return U.prev=3,h=[I.jobId],U.next=7,(0,C.eX)(h.join(","));case 7:return H=U.sent,W(),H.code===200?d.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):d.ZP.error(H.msg),U.abrupt("return",!0);case 13:return U.prev=13,U.t0=U.catch(3),W(),d.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),U.abrupt("return",!1);case 18:case"end":return U.stop()}},Z,null,[[3,13]])}));return function(I){return N.apply(this,arguments)}}(),de=function(){var N=u()(n()().mark(function Z(){var I;return n()().wrap(function(h){for(;;)switch(h.prev=h.next){case 0:return I=d.ZP.loading("\u6B63\u5728\u5BFC\u51FA"),h.prev=1,h.next=4,(0,C.Q$)();case 4:return I(),d.ZP.success("\u5BFC\u51FA\u6210\u529F"),h.abrupt("return",!0);case 9:return h.prev=9,h.t0=h.catch(1),I(),d.ZP.error("\u5BFC\u51FA\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),h.abrupt("return",!1);case 14:case"end":return h.stop()}},Z,null,[[1,9]])}));return function(){return N.apply(this,arguments)}}(),se=function(){var Z=(0,A.useRef)(),I=(0,A.useState)(!1),W=t()(I,2),h=W[0],H=W[1],i=(0,A.useState)(!1),U=t()(i,2),be=U[0],ie=U[1],ne=(0,A.useRef)(),ge=(0,A.useState)(),me=t()(ge,2),ce=me[0],re=me[1],he=(0,A.useState)([]),pe=t()(he,2),X=pe[0],le=pe[1],ve=(0,A.useState)([]),fe=t()(ve,2),_e=fe[0],Te=fe[1],je=(0,A.useState)([]),Ee=t()(je,2),oe=Ee[0],Pe=Ee[1],ue=(0,p.useAccess)(),Me=(0,p.useIntl)();(0,A.useEffect)(function(){(0,ee.Hr)("sys_job_group").then(function(S){Te(S)}),(0,ee.pX)("sys_normal_disable").then(function(S){Pe(S)})},[]);var De=[{title:(0,r.jsx)(p.FormattedMessage,{id:"monitor.job.job_id",defaultMessage:"\u4EFB\u52A1\u7F16\u53F7"}),dataIndex:"jobId",valueType:"text",hideInSearch:!0},{title:(0,r.jsx)(p.FormattedMessage,{id:"monitor.job.job_name",defaultMessage:"\u4EFB\u52A1\u540D\u79F0"}),dataIndex:"jobName",valueType:"text",render:function(x,b){return(0,r.jsx)("a",{onClick:function(){ie(!0),re(b)},children:x})}},{title:(0,r.jsx)(p.FormattedMessage,{id:"monitor.job.job_group",defaultMessage:"\u4EFB\u52A1\u7EC4\u540D"}),dataIndex:"jobGroup",valueType:"text",valueEnum:_e,render:function(x,b){return(0,r.jsx)(w.Z,{options:_e,value:b.jobGroup})}},{title:(0,r.jsx)(p.FormattedMessage,{id:"monitor.job.invoke_target",defaultMessage:"\u8C03\u7528\u76EE\u6807\u5B57\u7B26\u4E32"}),dataIndex:"invokeTarget",valueType:"textarea"},{title:(0,r.jsx)(p.FormattedMessage,{id:"monitor.job.cron_expression",defaultMessage:"cron\u6267\u884C\u8868\u8FBE\u5F0F"}),dataIndex:"cronExpression",valueType:"text"},{title:(0,r.jsx)(p.FormattedMessage,{id:"monitor.job.status",defaultMessage:"\u72B6\u6001"}),dataIndex:"status",valueType:"select",valueEnum:oe,render:function(x,b){return(0,r.jsx)(w.Z,{enums:oe,value:b.status})}},{title:(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.titleOption",defaultMessage:"\u64CD\u4F5C"}),dataIndex:"option",width:"220px",valueType:"option",render:function(x,b){return[(0,r.jsx)(o.ZP,{type:"link",size:"small",icon:(0,r.jsx)(_.Z,{}),hidden:!ue.hasPerms("monitor:job:edit"),onClick:function(){H(!0),re(b)},children:"\u7F16\u8F91"},"edit"),(0,r.jsx)(o.ZP,{type:"link",size:"small",danger:!0,icon:(0,r.jsx)(D.Z,{}),hidden:!ue.hasPerms("monitor:job:remove"),onClick:u()(n()().mark(function v(){return n()().wrap(function(B){for(;;)switch(B.prev=B.next){case 0:j.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var Y=u()(n()().mark(function k(){var te;return n()().wrap(function(J){for(;;)switch(J.prev=J.next){case 0:return J.next=2,O(b);case 2:te=J.sent,te&&ne.current&&ne.current.reload();case 4:case"end":return J.stop()}},k)}));function $(){return Y.apply(this,arguments)}return $}()});case 1:case"end":return B.stop()}},v)})),children:"\u5220\u9664"},"batchRemove"),(0,r.jsx)(R.Z,{menu:{items:[{label:"\u6267\u884C\u4E00\u6B21",key:"runOnce"},{label:"\u8BE6\u7EC6",key:"detail"},{label:"\u5386\u53F2",key:"log"}],onClick:function(Q){var B=Q.key;B==="runOnce"?j.Z.confirm({title:"\u8B66\u544A",content:"\u786E\u8BA4\u8981\u7ACB\u5373\u6267\u884C\u4E00\u6B21\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var Y=u()(n()().mark(function k(){var te;return n()().wrap(function(J){for(;;)switch(J.prev=J.next){case 0:return J.next=2,(0,C.uu)(b.jobId,b.jobGroup);case 2:te=J.sent,te&&d.ZP.success("\u6267\u884C\u6210\u529F");case 4:case"end":return J.stop()}},k)}));function $(){return Y.apply(this,arguments)}return $}()}):B==="detail"?(ie(!0),re(b)):B==="log"&&p.history.push("/monitor/job-log/index/".concat(b.jobId))}},children:(0,r.jsx)("a",{className:"ant-dropdown-link",onClick:function(Q){return Q.preventDefault()},children:(0,r.jsxs)(T.Z,{children:[(0,r.jsx)(s.Z,{}),"\u66F4\u591A"]})})},"more")]}}];return(0,r.jsxs)(m._z,{children:[(0,r.jsx)("div",{style:{width:"100%",float:"right"},children:(0,r.jsx)(P.Z,{headerTitle:Me.formatMessage({id:"pages.searchTable.title",defaultMessage:"\u4FE1\u606F"}),actionRef:ne,formRef:Z,rowKey:"jobId",search:{labelWidth:120},toolBarRender:function(){return[(0,r.jsxs)(o.ZP,{type:"primary",hidden:!ue.hasPerms("monitor:job:add"),onClick:u()(n()().mark(function x(){return n()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:re(void 0),H(!0);case 2:case"end":return v.stop()}},x)})),children:[(0,r.jsx)(c.Z,{})," ",(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.new",defaultMessage:"\u65B0\u5EFA"})]},"add"),(0,r.jsxs)(o.ZP,{type:"primary",danger:!0,hidden:(X==null?void 0:X.length)===0||!ue.hasPerms("monitor:job:remove"),onClick:u()(n()().mark(function x(){return n()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:j.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u5220\u9664\u6240\u9009\u6570\u636E\u9879?",icon:(0,r.jsx)(ae.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return u()(n()().mark(function B(){var Y,$,k;return n()().wrap(function(G){for(;;)switch(G.prev=G.next){case 0:return G.next=2,M(X);case 2:Y=G.sent,Y&&(le([]),($=ne.current)===null||$===void 0||(k=$.reloadAndRest)===null||k===void 0||k.call($));case 4:case"end":return G.stop()}},B)}))()},onCancel:function(){}});case 1:case"end":return v.stop()}},x)})),children:[(0,r.jsx)(D.Z,{}),(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})]},"remove"),(0,r.jsxs)(o.ZP,{type:"primary",hidden:!ue.hasPerms("monitor:job:export"),onClick:u()(n()().mark(function x(){return n()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:de();case 1:case"end":return v.stop()}},x)})),children:[(0,r.jsx)(c.Z,{}),(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.export",defaultMessage:"\u5BFC\u51FA"})]},"export")]},request:function(x){return(0,C.Go)(F()({},x)).then(function(b){var v={data:b.rows,total:b.total,success:!0};return v})},columns:De,rowSelection:{onChange:function(x,b){le(b)}}},"jobList")}),(X==null?void 0:X.length)>0&&(0,r.jsx)(l.S,{extra:(0,r.jsxs)("div",{children:[(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.chosen",defaultMessage:"\u5DF2\u9009\u62E9"}),(0,r.jsx)("a",{style:{fontWeight:600},children:X.length}),(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.item",defaultMessage:"\u9879"})]}),children:(0,r.jsx)(o.ZP,{danger:!0,hidden:!ue.hasPerms("monitor:job:del"),onClick:u()(n()().mark(function S(){return n()().wrap(function(b){for(;;)switch(b.prev=b.next){case 0:j.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var v=u()(n()().mark(function B(){var Y,$,k;return n()().wrap(function(G){for(;;)switch(G.prev=G.next){case 0:return G.next=2,M(X);case 2:Y=G.sent,Y&&(le([]),($=ne.current)===null||$===void 0||(k=$.reloadAndRest)===null||k===void 0||k.call($));case 4:case"end":return G.stop()}},B)}));function Q(){return v.apply(this,arguments)}return Q}()});case 1:case"end":return b.stop()}},S)})),children:(0,r.jsx)(p.FormattedMessage,{id:"pages.searchTable.batchDeletion",defaultMessage:"\u6279\u91CF\u5220\u9664"})},"remove")}),(0,r.jsx)(E.default,{onSubmit:function(){var S=u()(n()().mark(function x(b){var v;return n()().wrap(function(B){for(;;)switch(B.prev=B.next){case 0:if(v=!1,!b.jobId){B.next=7;break}return B.next=4,z(F()({},b));case 4:v=B.sent,B.next=10;break;case 7:return B.next=9,V(F()({},b));case 9:v=B.sent;case 10:v&&(H(!1),re(void 0),ne.current&&ne.current.reload());case 11:case"end":return B.stop()}},x)}));return function(x){return S.apply(this,arguments)}}(),onCancel:function(){H(!1),re(void 0)},open:h,values:ce||{},jobGroupOptions:_e||{},statusOptions:oe}),(0,r.jsx)(g.default,{onCancel:function(){ie(!1),re(void 0)},open:be,values:ce||{},statusOptions:oe})]})};y.default=se},91646:function(q,y,e){e.d(y,{Go:function(){return a},Q$:function(){return m},Y$:function(){return p},Zn:function(){return A},eX:function(){return o},gK:function(){return T},uu:function(){return P}});var K=e(15009),t=e.n(K),L=e(99289),n=e.n(L),f=e(76772),F=e(30964);function a(_){return u.apply(this,arguments)}function u(){return u=n()(t()().mark(function _(D){return t()().wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",(0,f.request)("/api/monitor/job/list",{method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"},params:D}));case 1:case"end":return c.stop()}},_)})),u.apply(this,arguments)}function A(_){return(0,f.request)("/api/monitor/job/".concat(_),{method:"GET"})}function p(_){return R.apply(this,arguments)}function R(){return R=n()(t()().mark(function _(D){return t()().wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",(0,f.request)("/api/monitor/job",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:D}));case 1:case"end":return c.stop()}},_)})),R.apply(this,arguments)}function T(_){return d.apply(this,arguments)}function d(){return d=n()(t()().mark(function _(D){return t()().wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",(0,f.request)("/api/monitor/job",{method:"PUT",headers:{"Content-Type":"application/json;charset=UTF-8"},data:D}));case 1:case"end":return c.stop()}},_)})),d.apply(this,arguments)}function o(_){return j.apply(this,arguments)}function j(){return j=n()(t()().mark(function _(D){return t()().wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return c.abrupt("return",(0,f.request)("/api/monitor/job/".concat(D),{method:"DELETE"}));case 1:case"end":return c.stop()}},_)})),j.apply(this,arguments)}function m(_){return(0,F.su)("/api/monitor/job/export",{params:_},"job_".concat(new Date().getTime(),".xlsx"))}function P(_,D){return l.apply(this,arguments)}function l(){return l=n()(t()().mark(function _(D,s){var c;return t()().wrap(function(C){for(;;)switch(C.prev=C.next){case 0:return c={jobId:D,jobGroup:s},C.abrupt("return",(0,f.request)("/api/monitor/job/run",{method:"PUT",data:c}));case 2:case"end":return C.stop()}},_)})),l.apply(this,arguments)}},92982:function(q,y,e){e.d(y,{Hr:function(){return j},QK:function(){return C},Vd:function(){return T},a7:function(){return _},jK:function(){return p},n2:function(){return ae},oH:function(){return P},pX:function(){return d},sF:function(){return s}});var K=e(15009),t=e.n(K),L=e(97857),n=e.n(L),f=e(99289),F=e.n(f),a=e(76772),u=e(33867),A=e(30964);function p(E){return R.apply(this,arguments)}function R(){return R=F()(t()().mark(function E(g){return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",(0,a.request)("/api/system/dict/type/list",{params:n()({},g),method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return r.stop()}},E)})),R.apply(this,arguments)}function T(E){return(0,a.request)("/api/system/dict/type/".concat(E),{method:"GET"})}function d(E,g){return o.apply(this,arguments)}function o(){return o=F()(t()().mark(function E(g,w){var r,V;return t()().wrap(function(M){for(;;)switch(M.prev=M.next){case 0:return M.next=2,(0,a.request)("/api/system/dict/data/type/".concat(g),{method:"GET"});case 2:if(r=M.sent,r.code!==u.iK.SUCCESS){M.next=9;break}return V={},r.data.forEach(function(O){V[O.dictValue]={text:O.dictLabel,label:O.dictLabel,value:w?Number(O.dictValue):O.dictValue,key:O.dictCode,listClass:O.listClass,status:O.listClass}}),M.abrupt("return",V);case 9:return M.abrupt("return",{});case 10:case"end":return M.stop()}},E)})),o.apply(this,arguments)}function j(E,g){return m.apply(this,arguments)}function m(){return m=F()(t()().mark(function E(g,w){var r,V;return t()().wrap(function(M){for(;;)switch(M.prev=M.next){case 0:return M.next=2,(0,a.request)("/api/system/dict/data/type/".concat(g),{method:"GET"});case 2:if(r=M.sent,r.code!==200){M.next=6;break}return V=r.data.map(function(O){return{text:O.dictLabel,label:O.dictLabel,value:w?Number(O.dictValue):O.dictValue,key:O.dictCode,listClass:O.listClass,status:O.listClass}}),M.abrupt("return",V);case 6:return M.abrupt("return",[]);case 7:case"end":return M.stop()}},E)})),m.apply(this,arguments)}function P(E){return l.apply(this,arguments)}function l(){return l=F()(t()().mark(function E(g){return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",(0,a.request)("/api/system/dict/type",{method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:g}));case 1:case"end":return r.stop()}},E)})),l.apply(this,arguments)}function _(E){return D.apply(this,arguments)}function D(){return D=F()(t()().mark(function E(g){return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",(0,a.request)("/api/system/dict/type",{method:"PUT",headers:{"Content-Type":"application/json;charset=UTF-8"},data:g}));case 1:case"end":return r.stop()}},E)})),D.apply(this,arguments)}function s(E){return c.apply(this,arguments)}function c(){return c=F()(t()().mark(function E(g){return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",(0,a.request)("/api/system/dict/type/".concat(g),{method:"DELETE"}));case 1:case"end":return r.stop()}},E)})),c.apply(this,arguments)}function ae(E){return(0,A.su)("/api/system/dict/type/export",{params:E},"dict_type_".concat(new Date().getTime(),".xlsx"))}function C(E){return ee.apply(this,arguments)}function ee(){return ee=F()(t()().mark(function E(g){return t()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",(0,a.request)("/api/system/dict/type/optionselect",{params:n()({},g),method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"}}));case 1:case"end":return r.stop()}},E)})),ee.apply(this,arguments)}},30964:function(q,y,e){e.d(y,{p6:function(){return p},su:function(){return R}});var K=e(15009),t=e.n(K),L=e(97857),n=e.n(L),f=e(99289),F=e.n(f),a=e(76772),u={xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",zip:"application/zip"};function A(o,j){var m=document.createElement("a"),P=new Blob([o.data],{type:j}),l=new RegExp("filename=([^;]+\\.[^\\.;]+);*"),_=decodeURI(o.headers["content-disposition"]),D=l.exec(_),s=D?D[1]:"file";s=s.replace(/"/g,""),m.style.display="none",m.href=URL.createObjectURL(P),m.setAttribute("download",s),document.body.appendChild(m),m.click(),URL.revokeObjectURL(m.href),document.body.removeChild(m)}function p(o){(0,a.request)(o,{method:"GET",responseType:"blob",getResponse:!0}).then(function(j){A(j,u.zip)})}function R(o,j,m){return T.apply(this,arguments)}function T(){return T=F()(t()().mark(function o(j,m,P){return t()().wrap(function(_){for(;;)switch(_.prev=_.next){case 0:return _.abrupt("return",(0,a.request)(j,n()(n()({},m),{},{method:"POST",responseType:"blob"})).then(function(D){var s=document.createElement("a"),c=D;s.style.display="none",s.href=URL.createObjectURL(c),s.setAttribute("download",P),document.body.appendChild(s),s.click(),URL.revokeObjectURL(s.href),document.body.removeChild(s)}));case 1:case"end":return _.stop()}},o)})),T.apply(this,arguments)}function d(o){window.location.href="/api/common/download?fileName=".concat(encodeURI(o),"&delete=",!0)}},61314:function(q,y,e){e.d(y,{n:function(){return K}});function K(t,L,n){if(L!==void 0){var f=t[L];if(f)return f.text}return n||L}}}]);
