"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[5548],{52873:function(se,b,a){a.r(b);var N=a(67294),P=a(17788),g=a(26412),r=a(76772),F=a(61314),t=a(85893),W=function(_){var o,n=_.values,O=_.businessTypeOptions,A=_.operatorTypeOptions,L=_.statusOptions,U=(0,r.useIntl)(),K=function(){},R=function(){_.onCancel()};return(0,t.jsx)(P.Z,{width:640,title:U.formatMessage({id:"monitor.operlog.title",defaultMessage:"\u7F16\u8F91\u64CD\u4F5C\u65E5\u5FD7\u8BB0\u5F55"}),open:_.open,destroyOnClose:!0,onOk:K,onCancel:R,children:(0,t.jsxs)(g.Z,{column:24,children:[(0,t.jsx)(g.Z.Item,{span:12,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.module",defaultMessage:"\u64CD\u4F5C\u6A21\u5757"}),children:"".concat(n.title,"/").concat((0,F.n)(O,n.businessType))}),(0,t.jsx)(g.Z.Item,{span:12,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.request_method",defaultMessage:"\u8BF7\u6C42\u65B9\u5F0F"}),children:n.requestMethod}),(0,t.jsx)(g.Z.Item,{span:12,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.oper_name",defaultMessage:"\u64CD\u4F5C\u4EBA\u5458"}),children:"".concat(n.operName,"/").concat(n.operIp)}),(0,t.jsx)(g.Z.Item,{span:12,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.operator_type",defaultMessage:"\u64CD\u4F5C\u7C7B\u522B"}),children:(0,F.n)(A,n.operatorType)}),(0,t.jsx)(g.Z.Item,{span:24,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.method",defaultMessage:"\u65B9\u6CD5\u540D\u79F0"}),children:n.method}),(0,t.jsx)(g.Z.Item,{span:24,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.oper_url",defaultMessage:"\u8BF7\u6C42URL"}),children:n.operUrl}),(0,t.jsx)(g.Z.Item,{span:24,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.oper_param",defaultMessage:"\u8BF7\u6C42\u53C2\u6570"}),children:n.operParam}),(0,t.jsx)(g.Z.Item,{span:24,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.json_result",defaultMessage:"\u8FD4\u56DE\u53C2\u6570"}),children:n.jsonResult}),(0,t.jsx)(g.Z.Item,{span:24,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.error_msg",defaultMessage:"\u9519\u8BEF\u6D88\u606F"}),children:n.errorMsg}),(0,t.jsx)(g.Z.Item,{span:12,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.status",defaultMessage:"\u64CD\u4F5C\u72B6\u6001"}),children:(0,F.n)(L,n.status)}),(0,t.jsx)(g.Z.Item,{span:12,label:(0,t.jsx)(r.FormattedMessage,{id:"monitor.operlog.oper_time",defaultMessage:"\u64CD\u4F5C\u65F6\u95F4"}),children:(o=n.operTime)===null||o===void 0?void 0:o.toString()})]})})};b.default=W},55548:function(se,b,a){a.r(b);var N=a(5574),P=a.n(N),g=a(15009),r=a.n(g),F=a(97857),t=a.n(F),W=a(99289),M=a.n(W),_=a(67294),o=a(76772),n=a(2453),O=a(83622),A=a(17788),L=a(6110),U=a(65385),K=a(2236),R=a(24969),S=a(11475),re=a(48689),y=a(32597),ae=a(52873),$=a(92982),w=a(94162),s=a(85893),te=function(){var D=M()(r()().mark(function f(m){var c,u;return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c=n.ZP.loading("\u6B63\u5728\u6DFB\u52A0"),e.prev=1,e.next=4,(0,y.zg)(t()({},m));case 4:return u=e.sent,c(),u.code===200?n.ZP.success("\u6DFB\u52A0\u6210\u529F"):n.ZP.error(u.msg),e.abrupt("return",!0);case 10:return e.prev=10,e.t0=e.catch(1),c(),n.ZP.error("\u6DFB\u52A0\u5931\u8D25\u8BF7\u91CD\u8BD5\uFF01"),e.abrupt("return",!1);case 15:case"end":return e.stop()}},f,null,[[1,10]])}));return function(m){return D.apply(this,arguments)}}(),ne=function(){var D=M()(r()().mark(function f(m){var c,u;return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c=n.ZP.loading("\u6B63\u5728\u66F4\u65B0"),e.prev=1,e.next=4,(0,y.HM)(m);case 4:return u=e.sent,c(),u.code===200?n.ZP.success("\u66F4\u65B0\u6210\u529F"):n.ZP.error(u.msg),e.abrupt("return",!0);case 10:return e.prev=10,e.t0=e.catch(1),c(),n.ZP.error("\u914D\u7F6E\u5931\u8D25\u8BF7\u91CD\u8BD5\uFF01"),e.abrupt("return",!1);case 15:case"end":return e.stop()}},f,null,[[1,10]])}));return function(m){return D.apply(this,arguments)}}(),V=function(){var D=M()(r()().mark(function f(m){var c,u;return r()().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(c=n.ZP.loading("\u6B63\u5728\u5220\u9664"),m){e.next=3;break}return e.abrupt("return",!0);case 3:return e.prev=3,e.next=6,(0,y.Ro)(m.map(function(H){return H.operId}).join(","));case 6:return u=e.sent,c(),u.code===200?n.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):n.ZP.error(u.msg),e.abrupt("return",!0);case 12:return e.prev=12,e.t0=e.catch(3),c(),n.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),e.abrupt("return",!1);case 17:case"end":return e.stop()}},f,null,[[3,12]])}));return function(m){return D.apply(this,arguments)}}(),ue=function(){var D=M()(r()().mark(function f(){var m;return r()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return m=n.ZP.loading("\u6B63\u5728\u5BFC\u51FA"),u.prev=1,u.next=4,(0,y.G6)();case 4:return m(),n.ZP.success("\u5BFC\u51FA\u6210\u529F"),u.abrupt("return",!0);case 9:return u.prev=9,u.t0=u.catch(1),m(),n.ZP.error("\u5BFC\u51FA\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),u.abrupt("return",!1);case 14:case"end":return u.stop()}},f,null,[[1,9]])}));return function(){return D.apply(this,arguments)}}(),oe=function(){var f=(0,_.useRef)(),m=(0,_.useState)(!1),c=P()(m,2),u=c[0],C=c[1],e=(0,_.useRef)(),H=(0,_.useState)(),J=P()(H,2),le=J[0],x=J[1],ie=(0,_.useState)([]),Q=P()(ie,2),E=Q[0],k=Q[1],de=(0,_.useState)([]),Y=P()(de,2),z=Y[0],_e=Y[1],pe=(0,_.useState)([]),q=P()(pe,2),G=q[0],me=q[1],ce=(0,_.useState)([]),ee=P()(ce,2),X=ee[0],ge=ee[1],I=(0,o.useAccess)(),fe=(0,o.useIntl)();(0,_.useEffect)(function(){(0,$.pX)("sys_oper_type",!0).then(function(d){_e(d)}),(0,$.pX)("sys_oper_type",!0).then(function(d){me(d)}),(0,$.pX)("sys_common_status",!0).then(function(d){ge(d)})},[]);var he=[{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.oper_id",defaultMessage:"\u65E5\u5FD7\u4E3B\u952E"}),dataIndex:"operId",valueType:"text",hideInSearch:!0},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.title",defaultMessage:"\u64CD\u4F5C\u6A21\u5757"}),dataIndex:"title",valueType:"text"},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.business_type",defaultMessage:"\u4E1A\u52A1\u7C7B\u578B"}),dataIndex:"businessType",valueType:"select",valueEnum:z,render:function(p,l){return(0,s.jsx)(w.Z,{enums:z,value:l.businessType})}},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.request_method",defaultMessage:"\u8BF7\u6C42\u65B9\u5F0F"}),dataIndex:"requestMethod",valueType:"text"},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.operator_type",defaultMessage:"\u64CD\u4F5C\u7C7B\u522B"}),dataIndex:"operatorType",valueType:"select",valueEnum:G,render:function(p,l){return(0,s.jsx)(w.Z,{enums:G,value:l.operatorType})}},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.oper_name",defaultMessage:"\u64CD\u4F5C\u4EBA\u5458"}),dataIndex:"operName",valueType:"text"},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.oper_ip",defaultMessage:"\u4E3B\u673A\u5730\u5740"}),dataIndex:"operIp",valueType:"text"},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.oper_location",defaultMessage:"\u64CD\u4F5C\u5730\u70B9"}),dataIndex:"operLocation",valueType:"text"},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.status",defaultMessage:"\u64CD\u4F5C\u72B6\u6001"}),dataIndex:"status",valueType:"select",valueEnum:X,render:function(p,l){return(0,s.jsx)(w.Z,{enums:X,value:l.status},"status")}},{title:(0,s.jsx)(o.FormattedMessage,{id:"monitor.operlog.oper_time",defaultMessage:"\u64CD\u4F5C\u65F6\u95F4"}),dataIndex:"operTime",valueType:"dateTime"},{title:(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.titleOption",defaultMessage:"\u64CD\u4F5C"}),dataIndex:"option",width:"120px",valueType:"option",render:function(p,l){return[(0,s.jsx)(O.ZP,{type:"link",size:"small",hidden:!I.hasPerms("system:operlog:edit"),onClick:function(){C(!0),x(l)},children:"\u8BE6\u7EC6"},"edit")]}}];return(0,s.jsxs)(L._z,{children:[(0,s.jsx)("div",{style:{width:"100%",float:"right"},children:(0,s.jsx)(U.Z,{headerTitle:fe.formatMessage({id:"pages.searchTable.title",defaultMessage:"\u4FE1\u606F"}),actionRef:e,formRef:f,rowKey:"operId",search:{labelWidth:120},toolBarRender:function(){return[(0,s.jsxs)(O.ZP,{type:"primary",hidden:!I.hasPerms("system:operlog:add"),onClick:M()(r()().mark(function p(){return r()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:x(void 0),C(!0);case 2:case"end":return i.stop()}},p)})),children:[(0,s.jsx)(R.Z,{})," ",(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.new",defaultMessage:"\u65B0\u5EFA"})]},"add"),(0,s.jsxs)(O.ZP,{type:"primary",danger:!0,hidden:(E==null?void 0:E.length)===0||!I.hasPerms("system:operlog:remove"),onClick:M()(r()().mark(function p(){return r()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:A.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u5220\u9664\u6240\u9009\u6570\u636E\u9879?",icon:(0,s.jsx)(S.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return M()(r()().mark(function h(){var B,T,j;return r()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:return v.next=2,V(E);case 2:B=v.sent,B&&(k([]),(T=e.current)===null||T===void 0||(j=T.reloadAndRest)===null||j===void 0||j.call(T));case 4:case"end":return v.stop()}},h)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,s.jsx)(re.Z,{}),(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})]},"remove"),(0,s.jsxs)(O.ZP,{type:"primary",hidden:!I.hasPerms("system:operlog:export"),onClick:M()(r()().mark(function p(){return r()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:ue();case 1:case"end":return i.stop()}},p)})),children:[(0,s.jsx)(R.Z,{}),(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.export",defaultMessage:"\u5BFC\u51FA"})]},"export")]},request:function(p){return(0,y.s8)(t()({},p)).then(function(l){var i={data:l.rows,total:l.total,success:!0};return i})},columns:he,rowSelection:{onChange:function(p,l){k(l)}}},"operlogList")}),(E==null?void 0:E.length)>0&&(0,s.jsx)(K.S,{extra:(0,s.jsxs)("div",{children:[(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.chosen",defaultMessage:"\u5DF2\u9009\u62E9"}),(0,s.jsx)("a",{style:{fontWeight:600},children:E.length}),(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.item",defaultMessage:"\u9879"})]}),children:(0,s.jsx)(O.ZP,{danger:!0,hidden:!I.hasPerms("system:operlog:del"),onClick:M()(r()().mark(function d(){return r()().wrap(function(l){for(;;)switch(l.prev=l.next){case 0:A.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var i=M()(r()().mark(function h(){var B,T,j;return r()().wrap(function(v){for(;;)switch(v.prev=v.next){case 0:return v.next=2,V(E);case 2:B=v.sent,B&&(k([]),(T=e.current)===null||T===void 0||(j=T.reloadAndRest)===null||j===void 0||j.call(T));case 4:case"end":return v.stop()}},h)}));function Z(){return i.apply(this,arguments)}return Z}()});case 1:case"end":return l.stop()}},d)})),children:(0,s.jsx)(o.FormattedMessage,{id:"pages.searchTable.batchDeletion",defaultMessage:"\u6279\u91CF\u5220\u9664"})},"remove")}),(0,s.jsx)(ae.default,{onSubmit:function(){var d=M()(r()().mark(function p(l){var i;return r()().wrap(function(h){for(;;)switch(h.prev=h.next){case 0:if(i=!1,!l.operId){h.next=7;break}return h.next=4,ne(t()({},l));case 4:i=h.sent,h.next=10;break;case 7:return h.next=9,te(t()({},l));case 9:i=h.sent;case 10:i&&(C(!1),x(void 0),e.current&&e.current.reload());case 11:case"end":return h.stop()}},p)}));return function(p){return d.apply(this,arguments)}}(),onCancel:function(){C(!1),x(void 0)},open:u,values:le||{},businessTypeOptions:z,operatorTypeOptions:G,statusOptions:X})]})};b.default=oe}}]);
