"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[1414],{21414:function(U,x,e){e.r(x),e.d(x,{default:function(){return P}});var M=e(97857),j=e.n(M),L=e(15009),s=e.n(L),C=e(99289),c=e.n(C),m=e(2453),D=e(83622),O=e(17788),h=e(67294),r=e(76772);function R(u){return p.apply(this,arguments)}function p(){return p=c()(s()().mark(function u(i){return s()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",(0,r.request)("/api/monitor/online/list",{method:"GET",params:i}));case 1:case"end":return t.stop()}},u)})),p.apply(this,arguments)}function w(u){return g.apply(this,arguments)}function g(){return g=c()(s()().mark(function u(i){return s()().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",(0,r.request)("/api/monitor/online/".concat(i),{method:"DELETE"}));case 1:case"end":return t.stop()}},u)})),g.apply(this,arguments)}var B=e(65385),E=e(48689),n=e(85893),S=function(){var u=c()(s()().mark(function i(o){var t;return s()().wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=m.ZP.loading("\u6B63\u5728\u5F3A\u5236\u4E0B\u7EBF"),a.prev=1,a.next=4,w(o.tokenId);case 4:return t(),m.ZP.success("\u5F3A\u5236\u4E0B\u7EBF\u6210\u529F\uFF0C\u5373\u5C06\u5237\u65B0"),a.abrupt("return",!0);case 9:return a.prev=9,a.t0=a.catch(1),t(),m.ZP.error("\u5F3A\u5236\u4E0B\u7EBF\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5"),a.abrupt("return",!1);case 14:case"end":return a.stop()}},i,null,[[1,9]])}));return function(o){return u.apply(this,arguments)}}(),Z=function(){var i=(0,h.useRef)(),o=(0,h.useRef)(),t=(0,r.useAccess)(),y=(0,r.useIntl)();(0,h.useEffect)(function(){},[]);var a=[{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.token_id",defaultMessage:"\u4F1A\u8BDD\u7F16\u53F7"}),dataIndex:"tokenId",valueType:"text",hideInSearch:!0},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.user_name",defaultMessage:"\u7528\u6237\u8D26\u53F7"}),dataIndex:"userName",valueType:"text"},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.dept_name",defaultMessage:"\u90E8\u95E8\u540D\u79F0"}),dataIndex:"deptName",valueType:"text",hideInSearch:!0},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.ipaddr",defaultMessage:"\u767B\u5F55IP\u5730\u5740"}),dataIndex:"ipaddr",valueType:"text"},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.login_location",defaultMessage:"\u767B\u5F55\u5730\u70B9"}),dataIndex:"loginLocation",valueType:"text",hideInSearch:!0},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.browser",defaultMessage:"\u6D4F\u89C8\u5668\u7C7B\u578B"}),dataIndex:"browser",valueType:"text",hideInSearch:!0},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.os",defaultMessage:"\u64CD\u4F5C\u7CFB\u7EDF"}),dataIndex:"os",valueType:"text",hideInSearch:!0},{title:(0,n.jsx)(r.FormattedMessage,{id:"monitor.online.user.login_time",defaultMessage:"\u767B\u5F55\u65F6\u95F4"}),dataIndex:"loginTime",valueType:"dateRange",render:function(l,d){return(0,n.jsx)("span",{children:d.loginTime})},hideInSearch:!0,search:{transform:function(l){return{"params[beginTime]":l[0],"params[endTime]":l[1]}}}},{title:(0,n.jsx)(r.FormattedMessage,{id:"pages.searchTable.titleOption",defaultMessage:"\u64CD\u4F5C"}),dataIndex:"option",width:"60px",valueType:"option",render:function(l,d){return[(0,n.jsx)(D.ZP,{type:"link",size:"small",danger:!0,icon:(0,n.jsx)(E.Z,{}),hidden:!t.hasPerms("monitor:online:forceLogout"),onClick:c()(s()().mark(function F(){return s()().wrap(function(T){for(;;)switch(T.prev=T.next){case 0:O.Z.confirm({title:"\u5F3A\u8E22",content:"\u786E\u5B9A\u5F3A\u5236\u5C06\u8BE5\u7528\u6237\u8E22\u4E0B\u7EBF\u5417\uFF1F",okText:"\u786E\u8BA4",cancelText:"\u53D6\u6D88",onOk:function(){var b=c()(s()().mark(function k(){var I;return s()().wrap(function(f){for(;;)switch(f.prev=f.next){case 0:return f.next=2,S(d);case 2:I=f.sent,I&&o.current&&o.current.reload();case 4:case"end":return f.stop()}},k)}));function $(){return b.apply(this,arguments)}return $}()});case 1:case"end":return T.stop()}},F)})),children:"\u5F3A\u9000"},"batchRemove")]}}];return(0,n.jsx)("div",{style:{width:"100%",float:"right"},children:(0,n.jsx)(B.Z,{headerTitle:y.formatMessage({id:"pages.searchTable.title",defaultMessage:"\u4FE1\u606F"}),actionRef:o,formRef:i,rowKey:"tokenId",search:{labelWidth:120},request:function(l){return R(j()({},l)).then(function(d){var F={data:d.rows,total:d.total,success:!0};return F})},columns:a},"logininforList")})},P=Z}}]);
