"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[1283],{21283:function(Y,I,s){s.r(I);var W=s(97857),Z=s.n(W),y=s(5574),L=s.n(y),w=s(15009),a=s.n(w),U=s(99289),g=s.n(U),b=s(67294),d=s(76772),_=s(2453),D=s(83622),C=s(17788),K=s(6110),$=s(65385),x=s(2236),R=s(11475),B=s(48689),k=s(3355),S=s(24969),j=s(38002),H=s(94162),e=s(85893),F=function(){var E=g()(a()().mark(function h(l){var m,u;return a()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(m=_.ZP.loading("\u6B63\u5728\u5220\u9664"),l){r.next=3;break}return r.abrupt("return",!0);case 3:return r.prev=3,r.next=6,(0,j.jw)(l.map(function(M){return M.infoId}).join(","));case 6:return u=r.sent,m(),u.code===200?_.ZP.success("\u5220\u9664\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):_.ZP.error(u.msg),r.abrupt("return",!0);case 12:return r.prev=12,r.t0=r.catch(3),m(),_.ZP.error("\u5220\u9664\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),r.abrupt("return",!1);case 17:case"end":return r.stop()}},h,null,[[3,12]])}));return function(l){return E.apply(this,arguments)}}(),N=function(){var E=g()(a()().mark(function h(){var l,m;return a()().wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return l=_.ZP.loading("\u8BF7\u7A0D\u5019"),n.prev=1,n.next=4,(0,j.KF)();case 4:return m=n.sent,l(),m.code===200?_.ZP.success("\u6E05\u7A7A\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):_.ZP.error(m.msg),n.abrupt("return",!0);case 10:return n.prev=10,n.t0=n.catch(1),l(),_.ZP.error("\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),n.abrupt("return",!1);case 15:case"end":return n.stop()}},h,null,[[1,10]])}));return function(){return E.apply(this,arguments)}}(),G=function(){var E=g()(a()().mark(function h(l){var m,u;return a()().wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return m=_.ZP.loading("\u6B63\u5728\u89E3\u9501"),r.prev=1,r.next=4,(0,j.Ny)(l);case 4:return u=r.sent,m(),u.code===200?_.ZP.success("\u89E3\u9501\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"):_.ZP.error(u.msg),r.abrupt("return",!0);case 10:return r.prev=10,r.t0=r.catch(1),m(),_.ZP.error("\u89E3\u9501\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),r.abrupt("return",!1);case 15:case"end":return r.stop()}},h,null,[[1,10]])}));return function(l){return E.apply(this,arguments)}}(),z=function(){var E=g()(a()().mark(function h(){var l;return a()().wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return l=_.ZP.loading("\u6B63\u5728\u5BFC\u51FA"),u.prev=1,u.next=4,(0,j.Q6)();case 4:return l(),_.ZP.success("\u5BFC\u51FA\u6210\u529F"),u.abrupt("return",!0);case 9:return u.prev=9,u.t0=u.catch(1),l(),_.ZP.error("\u5BFC\u51FA\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),u.abrupt("return",!1);case 14:case"end":return u.stop()}},h,null,[[1,9]])}));return function(){return E.apply(this,arguments)}}(),Q=function(){var h=(0,b.useRef)(),l=(0,b.useRef)(),m=(0,b.useState)([]),u=L()(m,2),n=u[0],r=u[1],M=(0,d.useAccess)(),J={0:{label:"\u6210\u529F",key:"0",value:"0",text:"\u6210\u529F",status:"success",listClass:"success"},1:{label:"\u5931\u8D25",key:"1",value:"1",text:"\u5931\u8D25",status:"error",listClass:"danger"}},V=(0,d.useIntl)();(0,b.useEffect)(function(){},[]);var X=[{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.info_id",defaultMessage:"\u8BBF\u95EE\u7F16\u53F7"}),dataIndex:"infoId",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.user_name",defaultMessage:"\u7528\u6237\u8D26\u53F7"}),dataIndex:"userName",valueType:"text"},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.ipaddr",defaultMessage:"\u767B\u5F55IP\u5730\u5740"}),dataIndex:"ipaddr",valueType:"text"},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.login_location",defaultMessage:"\u767B\u5F55\u5730\u70B9"}),dataIndex:"loginLocation",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.browser",defaultMessage:"\u6D4F\u89C8\u5668\u7C7B\u578B"}),dataIndex:"browser",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.os",defaultMessage:"\u64CD\u4F5C\u7CFB\u7EDF"}),dataIndex:"os",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.status",defaultMessage:"\u767B\u5F55\u72B6\u6001"}),dataIndex:"status",valueType:"select",render:function(p,f){return(0,e.jsx)(H.Z,{enums:J,value:f.status})}},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.msg",defaultMessage:"\u63D0\u793A\u6D88\u606F"}),dataIndex:"msg",valueType:"text",hideInSearch:!0},{title:(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.login_time",defaultMessage:"\u8BBF\u95EE\u65F6\u95F4"}),dataIndex:"loginTime",valueType:"dateTime"}];return(0,e.jsxs)(K._z,{children:[(0,e.jsx)("div",{style:{width:"100%",float:"right"},children:(0,e.jsx)($.Z,{headerTitle:V.formatMessage({id:"pages.searchTable.title",defaultMessage:"\u4FE1\u606F"}),actionRef:l,formRef:h,rowKey:"infoId",search:{labelWidth:120},toolBarRender:function(){return[(0,e.jsxs)(D.ZP,{danger:!0,hidden:(n==null?void 0:n.length)===0||!M.hasPerms("monitor:logininfor:remove"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:C.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u5220\u9664\u6240\u9009\u6570\u636E\u9879?",icon:(0,e.jsx)(R.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,F(n);case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(B.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.delete",defaultMessage:"\u5220\u9664"})]},"remove"),(0,e.jsxs)(D.ZP,{type:"primary",danger:!0,hidden:(n==null?void 0:n.length)===0||!M.hasPerms("monitor:logininfor:remove"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:C.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u6E05\u7A7A\u6240\u6709\u6570\u636E\u9879?",icon:(0,e.jsx)(R.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,N();case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(B.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.cleanAll",defaultMessage:"\u6E05\u7A7A"})]},"clean"),(0,e.jsxs)(D.ZP,{type:"primary",hidden:(n==null?void 0:n.length)===0||!M.hasPerms("monitor:logininfor:unlock"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:C.Z.confirm({title:"\u662F\u5426\u786E\u8BA4\u89E3\u9501\u8BE5\u7528\u6237\u7684\u6570\u636E\u9879?",icon:(0,e.jsx)(R.Z,{}),content:"\u8BF7\u8C28\u614E\u64CD\u4F5C",onOk:function(){return g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,G(n[0].userName);case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}))()},onCancel:function(){}});case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(k.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"monitor.logininfor.unlock",defaultMessage:"\u89E3\u9501"})]},"unlock"),(0,e.jsxs)(D.ZP,{type:"primary",hidden:!M.hasPerms("monitor:logininfor:export"),onClick:g()(a()().mark(function p(){return a()().wrap(function(i){for(;;)switch(i.prev=i.next){case 0:z();case 1:case"end":return i.stop()}},p)})),children:[(0,e.jsx)(S.Z,{}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.export",defaultMessage:"\u5BFC\u51FA"})]},"export")]},request:function(p){return(0,j.U0)(Z()({},p)).then(function(f){var i={data:f.rows,total:f.total,success:!0};return i})},columns:X,rowSelection:{onChange:function(p,f){r(f)}}},"logininforList")}),(n==null?void 0:n.length)>0&&(0,e.jsx)(x.S,{extra:(0,e.jsxs)("div",{children:[(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.chosen",defaultMessage:"\u5DF2\u9009\u62E9"}),(0,e.jsx)("a",{style:{fontWeight:600},children:n.length}),(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.item",defaultMessage:"\u9879"})]}),children:(0,e.jsx)(D.ZP,{danger:!0,hidden:!M.hasPerms("monitor:logininfor:remove"),onClick:g()(a()().mark(function O(){return a()().wrap(function(f){for(;;)switch(f.prev=f.next){case 0:C.Z.confirm({title:"\u5220\u9664",content:"\u786E\u5B9A\u5220\u9664\u8BE5\u9879\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var i=g()(a()().mark(function T(){var v,o,c;return a()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,F(n);case 2:v=t.sent,v&&(r([]),(o=l.current)===null||o===void 0||(c=o.reloadAndRest)===null||c===void 0||c.call(o));case 4:case"end":return t.stop()}},T)}));function P(){return i.apply(this,arguments)}return P}()});case 1:case"end":return f.stop()}},O)})),children:(0,e.jsx)(d.FormattedMessage,{id:"pages.searchTable.batchDeletion",defaultMessage:"\u6279\u91CF\u5220\u9664"})},"remove")})]})};I.default=Q}}]);
