diff --git a/shihezi.zip b/shihezi.zip index 142c19b..c97cd95 100644 Binary files a/shihezi.zip and b/shihezi.zip differ diff --git a/shihezi/index.html b/shihezi/index.html index 962c4d0..e4614cc 100644 --- a/shihezi/index.html +++ b/shihezi/index.html @@ -11,6 +11,6 @@
- + \ No newline at end of file diff --git a/shihezi/umi.e48152fb.js b/shihezi/umi.d7600bbb.js similarity index 98% rename from shihezi/umi.e48152fb.js rename to shihezi/umi.d7600bbb.js index 1834dc0..c454a06 100644 --- a/shihezi/umi.e48152fb.js +++ b/shihezi/umi.d7600bbb.js @@ -62,7 +62,7 @@ html body { overflow-y: hidden; `.concat(be?"width: calc(100% - ".concat(ge,"px);"):"",` }`),se)}else(0,g.jL)(se);return function(){(0,g.jL)(se)}},[ae,se])}var E=!1;function F(_){return typeof _=="boolean"&&(E=_),E}var I=function(ae){return ae===!1?!1:!(0,i.Z)()||!ae?null:typeof ae=="string"?document.querySelector(ae):typeof ae=="function"?ae():ae},z=n.forwardRef(function(_,ae){var J=_.open,ue=_.autoLock,se=_.getContainer,ge=_.debug,be=_.autoDestroy,X=be===void 0?!0:be,W=_.children,k=n.useState(J),K=(0,r.Z)(k,2),Q=K[0],Z=K[1],j=Q||J;n.useEffect(function(){(X||J)&&Z(J)},[J,X]);var ce=n.useState(function(){return I(se)}),le=(0,r.Z)(ce,2),G=le[0],re=le[1];n.useEffect(function(){var N=I(se);re(N!=null?N:null)});var Oe=C(j&&!G,ge),Me=(0,r.Z)(Oe,2),Ae=Me[0],We=Me[1],rt=G!=null?G:Ae;O(ue&&J&&(0,i.Z)()&&(rt===Ae||rt===document.body));var ke=null;if(W&&(0,a.Yr)(W)&&ae){var Be=W;ke=Be.ref}var Fe=(0,a.x1)(ke,ae);if(!j||!(0,i.Z)()||G===void 0)return null;var Ce=rt===!1||F(),q=W;return ae&&(q=n.cloneElement(W,{ref:Fe})),n.createElement(c.Provider,{value:We},Ce?q:(0,t.createPortal)(q,rt))}),P=z,V=P},40228:function(y,p,e){"use strict";e.d(p,{Z:function(){return Ce}});var r=e(1413),n=e(97685),t=e(91),i=e(2788),s=e(93967),a=e.n(s),u=e(9220),c=e(34203),h=e(27571),d=e(66680),m=e(7028),C=e(8410),g=e(31131),x=e(67294),T=e(87462),S=e(29372),w=e(42550);function O(q){var N=q.prefixCls,R=q.align,M=q.arrow,B=q.arrowPos,$=M||{},U=$.className,de=$.content,A=B.x,D=A===void 0?0:A,me=B.y,te=me===void 0?0:me,ie=x.useRef();if(!R||!R.points)return null;var xe={position:"absolute"};if(R.autoArrow!==!1){var Te=R.points[0],pe=R.points[1],Re=Te[0],Ue=Te[1],Ke=pe[0],nt=pe[1];Re===Ke||!["t","b"].includes(Re)?xe.top=te:Re==="t"?xe.top=0:xe.bottom=0,Ue===nt||!["l","r"].includes(Ue)?xe.left=D:Ue==="l"?xe.left=0:xe.right=0}return x.createElement("div",{ref:ie,className:a()("".concat(N,"-arrow"),U),style:xe},de)}function E(q){var N=q.prefixCls,R=q.open,M=q.zIndex,B=q.mask,$=q.motion;return B?x.createElement(S.ZP,(0,T.Z)({},$,{motionAppear:!0,visible:R,removeOnLeave:!0}),function(U){var de=U.className;return x.createElement("div",{style:{zIndex:M},className:a()("".concat(N,"-mask"),de)})}):null}var F=x.memo(function(q){var N=q.children;return N},function(q,N){return N.cache}),I=F,z=x.forwardRef(function(q,N){var R=q.popup,M=q.className,B=q.prefixCls,$=q.style,U=q.target,de=q.onVisibleChanged,A=q.open,D=q.keepDom,me=q.fresh,te=q.onClick,ie=q.mask,xe=q.arrow,Te=q.arrowPos,pe=q.align,Re=q.motion,Ue=q.maskMotion,Ke=q.forceRender,nt=q.getPopupContainer,at=q.autoDestroy,dt=q.portal,it=q.zIndex,It=q.onMouseEnter,ht=q.onMouseLeave,Ie=q.onPointerEnter,Ze=q.onPointerDownCapture,st=q.ready,oe=q.offsetX,Ve=q.offsetY,mt=q.offsetR,gt=q.offsetB,Se=q.onAlign,He=q.onPrepare,Qe=q.stretch,yt=q.targetWidth,Le=q.targetHeight,ut=typeof R=="function"?R():R,bt=A||D,Mt=(nt==null?void 0:nt.length)>0,Dt=x.useState(!nt||!Mt),qt=(0,n.Z)(Dt,2),Sn=qt[0],tn=qt[1];if((0,C.Z)(function(){!Sn&&Mt&&U&&tn(!0)},[Sn,Mt,U]),!Sn)return null;var Ut="auto",gn={left:"-1000vw",top:"-1000vh",right:Ut,bottom:Ut};if(st||!A){var on,yn=pe.points,An=pe.dynamicInset||((on=pe._experimental)===null||on===void 0?void 0:on.dynamicInset),Bn=An&&yn[0][1]==="r",zn=An&&yn[0][0]==="b";Bn?(gn.right=mt,gn.left=Ut):(gn.left=oe,gn.right=Ut),zn?(gn.bottom=gt,gn.top=Ut):(gn.top=Ve,gn.bottom=Ut)}var Ln={};return Qe&&(Qe.includes("height")&&Le?Ln.height=Le:Qe.includes("minHeight")&&Le&&(Ln.minHeight=Le),Qe.includes("width")&&yt?Ln.width=yt:Qe.includes("minWidth")&&yt&&(Ln.minWidth=yt)),A||(Ln.pointerEvents="none"),x.createElement(dt,{open:Ke||bt,getContainer:nt&&function(){return nt(U)},autoDestroy:at},x.createElement(E,{prefixCls:B,open:A,zIndex:it,mask:ie,motion:Ue}),x.createElement(u.Z,{onResize:Se,disabled:!A},function(fr){return x.createElement(S.ZP,(0,T.Z)({motionAppear:!0,motionEnter:!0,motionLeave:!0,removeOnLeave:!1,forceRender:Ke,leavedClassName:"".concat(B,"-hidden")},Re,{onAppearPrepare:He,onEnterPrepare:He,visible:A,onVisibleChanged:function(Jn){var qe;Re==null||(qe=Re.onVisibleChanged)===null||qe===void 0||qe.call(Re,Jn),de(Jn)}}),function(qn,Jn){var qe=qn.className,et=qn.style,rn=a()(B,qe,M);return x.createElement("div",{ref:(0,w.sQ)(fr,N,Jn),className:rn,style:(0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({"--arrow-x":"".concat(Te.x||0,"px"),"--arrow-y":"".concat(Te.y||0,"px")},gn),Ln),et),{},{boxSizing:"border-box",zIndex:it},$),onMouseEnter:It,onMouseLeave:ht,onPointerEnter:Ie,onClick:te,onPointerDownCapture:Ze},xe&&x.createElement(O,{prefixCls:B,arrow:xe,arrowPos:Te,align:pe}),x.createElement(I,{cache:!A&&!me},ut))})}))}),P=z,V=x.forwardRef(function(q,N){var R=q.children,M=q.getTriggerDOMNode,B=(0,w.Yr)(R),$=x.useCallback(function(de){(0,w.mH)(N,M?M(de):de)},[M]),U=(0,w.x1)($,(0,w.C4)(R));return B?x.cloneElement(R,{ref:U}):R}),_=V,ae=x.createContext(null),J=ae;function ue(q){return q?Array.isArray(q)?q:[q]:[]}function se(q,N,R,M){return x.useMemo(function(){var B=ue(R!=null?R:N),$=ue(M!=null?M:N),U=new Set(B),de=new Set($);return q&&(U.has("hover")&&(U.delete("hover"),U.add("click")),de.has("hover")&&(de.delete("hover"),de.add("click"))),[U,de]},[q,N,R,M])}var ge=e(5110);function be(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],R=arguments.length>2?arguments[2]:void 0;return R?q[0]===N[0]:q[0]===N[0]&&q[1]===N[1]}function X(q,N,R,M){for(var B=R.points,$=Object.keys(q),U=0;U<$.length;U+=1){var de,A=$[U];if(be((de=q[A])===null||de===void 0?void 0:de.points,B,M))return"".concat(N,"-placement-").concat(A)}return""}function W(q,N,R,M){return N||(R?{motionName:"".concat(q,"-").concat(R)}:M?{motionName:M}:null)}function k(q){return q.ownerDocument.defaultView}function K(q){for(var N=[],R=q==null?void 0:q.parentElement,M=["hidden","scroll","clip","auto"];R;){var B=k(R).getComputedStyle(R),$=B.overflowX,U=B.overflowY,de=B.overflow;[$,U,de].some(function(A){return M.includes(A)})&&N.push(R),R=R.parentElement}return N}function Q(q){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;return Number.isNaN(q)?N:q}function Z(q){return Q(parseFloat(q),0)}function j(q,N){var R=(0,r.Z)({},q);return(N||[]).forEach(function(M){if(!(M instanceof HTMLBodyElement||M instanceof HTMLHtmlElement)){var B=k(M).getComputedStyle(M),$=B.overflow,U=B.overflowClipMargin,de=B.borderTopWidth,A=B.borderBottomWidth,D=B.borderLeftWidth,me=B.borderRightWidth,te=M.getBoundingClientRect(),ie=M.offsetHeight,xe=M.clientHeight,Te=M.offsetWidth,pe=M.clientWidth,Re=Z(de),Ue=Z(A),Ke=Z(D),nt=Z(me),at=Q(Math.round(te.width/Te*1e3)/1e3),dt=Q(Math.round(te.height/ie*1e3)/1e3),it=(Te-pe-Ke-nt)*at,It=(ie-xe-Re-Ue)*dt,ht=Re*dt,Ie=Ue*dt,Ze=Ke*at,st=nt*at,oe=0,Ve=0;if($==="clip"){var mt=Z(U);oe=mt*at,Ve=mt*dt}var gt=te.x+Ze-oe,Se=te.y+ht-Ve,He=gt+te.width+2*oe-Ze-st-it,Qe=Se+te.height+2*Ve-ht-Ie-It;R.left=Math.max(R.left,gt),R.top=Math.max(R.top,Se),R.right=Math.min(R.right,He),R.bottom=Math.min(R.bottom,Qe)}}),R}function ce(q){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,R="".concat(N),M=R.match(/^(.*)\%$/);return M?q*(parseFloat(M[1])/100):parseFloat(R)}function le(q,N){var R=N||[],M=(0,n.Z)(R,2),B=M[0],$=M[1];return[ce(q.width,B),ce(q.height,$)]}function G(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";return[q[0],q[1]]}function re(q,N){var R=N[0],M=N[1],B,$;return R==="t"?$=q.y:R==="b"?$=q.y+q.height:$=q.y+q.height/2,M==="l"?B=q.x:M==="r"?B=q.x+q.width:B=q.x+q.width/2,{x:B,y:$}}function Oe(q,N){var R={t:"b",b:"t",l:"r",r:"l"};return q.map(function(M,B){return B===N?R[M]||"c":M}).join("")}function Me(q,N,R,M,B,$,U){var de=x.useState({ready:!1,offsetX:0,offsetY:0,offsetR:0,offsetB:0,arrowX:0,arrowY:0,scaleX:1,scaleY:1,align:B[M]||{}}),A=(0,n.Z)(de,2),D=A[0],me=A[1],te=x.useRef(0),ie=x.useMemo(function(){return N?K(N):[]},[N]),xe=x.useRef({}),Te=function(){xe.current={}};q||Te();var pe=(0,d.Z)(function(){if(N&&R&&q){let da=function(za,Er){var Sr=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Mn,Zr=bt.x+za,Ur=bt.y+Er,Sa=Zr+zn,ha=Ur+Bn,fo=Math.max(Zr,Sr.left),Pr=Math.max(Ur,Sr.top),ea=Math.min(Sa,Sr.right),ma=Math.min(ha,Sr.bottom);return Math.max(0,(ea-fo)*(ma-Pr))},Ra=function(){Kn=bt.y+Yn,pr=Kn+Bn,mn=bt.x+Vn,Hn=mn+zn};var Ke,nt,at,dt,it=N,It=it.ownerDocument,ht=k(it),Ie=ht.getComputedStyle(it),Ze=Ie.position,st=it.style.left,oe=it.style.top,Ve=it.style.right,mt=it.style.bottom,gt=it.style.overflow,Se=(0,r.Z)((0,r.Z)({},B[M]),$),He=It.createElement("div");(Ke=it.parentElement)===null||Ke===void 0||Ke.appendChild(He),He.style.left="".concat(it.offsetLeft,"px"),He.style.top="".concat(it.offsetTop,"px"),He.style.position=Ze,He.style.height="".concat(it.offsetHeight,"px"),He.style.width="".concat(it.offsetWidth,"px"),it.style.left="0",it.style.top="0",it.style.right="auto",it.style.bottom="auto",it.style.overflow="hidden";var Qe;if(Array.isArray(R))Qe={x:R[0],y:R[1],width:0,height:0};else{var yt,Le,ut=R.getBoundingClientRect();ut.x=(yt=ut.x)!==null&&yt!==void 0?yt:ut.left,ut.y=(Le=ut.y)!==null&&Le!==void 0?Le:ut.top,Qe={x:ut.x,y:ut.y,width:ut.width,height:ut.height}}var bt=it.getBoundingClientRect(),Mt=ht.getComputedStyle(it),Dt=Mt.height,qt=Mt.width;bt.x=(nt=bt.x)!==null&&nt!==void 0?nt:bt.left,bt.y=(at=bt.y)!==null&&at!==void 0?at:bt.top;var Sn=It.documentElement,tn=Sn.clientWidth,Ut=Sn.clientHeight,gn=Sn.scrollWidth,on=Sn.scrollHeight,yn=Sn.scrollTop,An=Sn.scrollLeft,Bn=bt.height,zn=bt.width,Ln=Qe.height,fr=Qe.width,qn={left:0,top:0,right:tn,bottom:Ut},Jn={left:-An,top:-yn,right:gn-An,bottom:on-yn},qe=Se.htmlRegion,et="visible",rn="visibleFirst";qe!=="scroll"&&qe!==rn&&(qe=et);var Qt=qe===rn,Cn=j(Jn,ie),an=j(qn,ie),Mn=qe===et?an:Cn,$n=Qt?an:Mn;it.style.left="auto",it.style.top="auto",it.style.right="0",it.style.bottom="0";var nr=it.getBoundingClientRect();it.style.left=st,it.style.top=oe,it.style.right=Ve,it.style.bottom=mt,it.style.overflow=gt,(dt=it.parentElement)===null||dt===void 0||dt.removeChild(He);var Rn=Q(Math.round(zn/parseFloat(qt)*1e3)/1e3),sn=Q(Math.round(Bn/parseFloat(Dt)*1e3)/1e3);if(Rn===0||sn===0||(0,c.Sh)(R)&&!(0,ge.Z)(R))return;var er=Se.offset,Gn=Se.targetOffset,dn=le(bt,er),ft=(0,n.Z)(dn,2),Ot=ft[0],$t=ft[1],Vt=le(Qe,Gn),Gt=(0,n.Z)(Vt,2),hn=Gt[0],fn=Gt[1];Qe.x-=hn,Qe.y-=fn;var Qn=Se.points||[],_n=(0,n.Z)(Qn,2),tr=_n[0],Nr=_n[1],rr=G(Nr),cr=G(tr),xn=re(Qe,rr),or=re(bt,cr),ir=(0,r.Z)({},Se),Vn=xn.x-or.x+Ot,Yn=xn.y-or.y+$t,Ir=da(Vn,Yn),De=da(Vn,Yn,an),$e=re(Qe,["t","l"]),Je=re(bt,["t","l"]),Ye=re(Qe,["b","r"]),ct=re(bt,["b","r"]),Nt=Se.overflow||{},Kt=Nt.adjustX,Zn=Nt.adjustY,Tn=Nt.shiftX,bn=Nt.shiftY,Pn=function(Er){return typeof Er=="boolean"?Er:Er>=0},Kn,pr,mn,Hn;Ra();var ze=Pn(Zn),he=cr[0]===rr[0];if(ze&&cr[0]==="t"&&(pr>$n.bottom||xe.current.bt)){var fe=Yn;he?fe-=Bn-Ln:fe=$e.y-ct.y-$t;var we=da(Vn,fe),ye=da(Vn,fe,an);we>Ir||we===Ir&&(!Qt||ye>=De)?(xe.current.bt=!0,Yn=fe,$t=-$t,ir.points=[Oe(cr,0),Oe(rr,0)]):xe.current.bt=!1}if(ze&&cr[0]==="b"&&(Kn<$n.top||xe.current.tb)){var Xe=Yn;he?Xe+=Bn-Ln:Xe=Ye.y-Je.y-$t;var lt=da(Vn,Xe),pt=da(Vn,Xe,an);lt>Ir||lt===Ir&&(!Qt||pt>=De)?(xe.current.tb=!0,Yn=Xe,$t=-$t,ir.points=[Oe(cr,0),Oe(rr,0)]):xe.current.tb=!1}var Lt=Pn(Kt),Wt=cr[1]===rr[1];if(Lt&&cr[1]==="l"&&(Hn>$n.right||xe.current.rl)){var At=Vn;Wt?At-=zn-fr:At=$e.x-ct.x-Ot;var wn=da(At,Yn),Yt=da(At,Yn,an);wn>Ir||wn===Ir&&(!Qt||Yt>=De)?(xe.current.rl=!0,Vn=At,Ot=-Ot,ir.points=[Oe(cr,1),Oe(rr,1)]):xe.current.rl=!1}if(Lt&&cr[1]==="r"&&(mn<$n.left||xe.current.lr)){var ar=Vn;Wt?ar+=zn-fr:ar=Ye.x-Je.x-Ot;var In=da(ar,Yn),Nn=da(ar,Yn,an);In>Ir||In===Ir&&(!Qt||Nn>=De)?(xe.current.lr=!0,Vn=ar,Ot=-Ot,ir.points=[Oe(cr,1),Oe(rr,1)]):xe.current.lr=!1}Ra();var Xt=Tn===!0?0:Tn;typeof Xt=="number"&&(mnan.right&&(Vn-=Hn-an.right-Ot,Qe.x>an.right-Xt&&(Vn+=Qe.x-an.right+Xt)));var Bt=bn===!0?0:bn;typeof Bt=="number"&&(Knan.bottom&&(Yn-=pr-an.bottom-$t,Qe.y>an.bottom-Bt&&(Yn+=Qe.y-an.bottom+Bt)));var Rt=bt.x+Vn,xt=Rt+zn,ln=bt.y+Yn,On=ln+Bn,Wn=Qe.x,vr=Wn+fr,jr=Qe.y,ur=jr+Ln,zr=Math.max(Rt,Wn),$r=Math.min(xt,vr),ua=(zr+$r)/2,Ca=ua-Rt,ba=Math.max(ln,jr),Ua=Math.min(On,ur),xa=(ba+Ua)/2,ja=xa-ln;U==null||U(N,ir);var Pa=nr.right-bt.x-(Vn+bt.width),Ya=nr.bottom-bt.y-(Yn+bt.height);Rn===1&&(Vn=Math.round(Vn),Pa=Math.round(Pa)),sn===1&&(Yn=Math.round(Yn),Ya=Math.round(Ya));var Xa={ready:!0,offsetX:Vn/Rn,offsetY:Yn/sn,offsetR:Pa/Rn,offsetB:Ya/sn,arrowX:Ca/Rn,arrowY:ja/sn,scaleX:Rn,scaleY:sn,align:ir};me(Xa)}}),Re=function(){te.current+=1;var nt=te.current;Promise.resolve().then(function(){te.current===nt&&pe()})},Ue=function(){me(function(nt){return(0,r.Z)((0,r.Z)({},nt),{},{ready:!1})})};return(0,C.Z)(Ue,[M]),(0,C.Z)(function(){q||Ue()},[q]),[D.ready,D.offsetX,D.offsetY,D.offsetR,D.offsetB,D.arrowX,D.arrowY,D.scaleX,D.scaleY,D.align,Re]}var Ae=e(74902);function We(q,N,R,M,B){(0,C.Z)(function(){if(q&&N&&R){let te=function(){M(),B()};var $=N,U=R,de=K($),A=K(U),D=k(U),me=new Set([D].concat((0,Ae.Z)(de),(0,Ae.Z)(A)));return me.forEach(function(ie){ie.addEventListener("scroll",te,{passive:!0})}),D.addEventListener("resize",te,{passive:!0}),M(),function(){me.forEach(function(ie){ie.removeEventListener("scroll",te),D.removeEventListener("resize",te)})}}},[q,N,R])}var rt=e(80334);function ke(q,N,R,M,B,$,U,de){var A=x.useRef(q);A.current=q;var D=x.useRef(!1);x.useEffect(function(){if(N&&M&&(!B||$)){var te=function(){D.current=!1},ie=function(at){var dt;A.current&&!U(((dt=at.composedPath)===null||dt===void 0||(dt=dt.call(at))===null||dt===void 0?void 0:dt[0])||at.target)&&!D.current&&de(!1)},xe=k(M);xe.addEventListener("pointerdown",te,!0),xe.addEventListener("mousedown",ie,!0),xe.addEventListener("contextmenu",ie,!0);var Te=(0,h.A)(R);if(Te&&(Te.addEventListener("mousedown",ie,!0),Te.addEventListener("contextmenu",ie,!0)),0)var pe,Re,Ue,Ke;return function(){xe.removeEventListener("pointerdown",te,!0),xe.removeEventListener("mousedown",ie,!0),xe.removeEventListener("contextmenu",ie,!0),Te&&(Te.removeEventListener("mousedown",ie,!0),Te.removeEventListener("contextmenu",ie,!0))}}},[N,R,M,B,$]);function me(){D.current=!0}return me}var Be=["prefixCls","children","action","showAction","hideAction","popupVisible","defaultPopupVisible","onPopupVisibleChange","afterPopupVisibleChange","mouseEnterDelay","mouseLeaveDelay","focusDelay","blurDelay","mask","maskClosable","getPopupContainer","forceRender","autoDestroy","destroyPopupOnHide","popup","popupClassName","popupStyle","popupPlacement","builtinPlacements","popupAlign","zIndex","stretch","getPopupClassNameFromAlign","fresh","alignPoint","onPopupClick","onPopupAlign","arrow","popupMotion","maskMotion","popupTransitionName","popupAnimation","maskTransitionName","maskAnimation","className","getTriggerDOMNode"];function Fe(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:i.Z,N=x.forwardRef(function(R,M){var B=R.prefixCls,$=B===void 0?"rc-trigger-popup":B,U=R.children,de=R.action,A=de===void 0?"hover":de,D=R.showAction,me=R.hideAction,te=R.popupVisible,ie=R.defaultPopupVisible,xe=R.onPopupVisibleChange,Te=R.afterPopupVisibleChange,pe=R.mouseEnterDelay,Re=R.mouseLeaveDelay,Ue=Re===void 0?.1:Re,Ke=R.focusDelay,nt=R.blurDelay,at=R.mask,dt=R.maskClosable,it=dt===void 0?!0:dt,It=R.getPopupContainer,ht=R.forceRender,Ie=R.autoDestroy,Ze=R.destroyPopupOnHide,st=R.popup,oe=R.popupClassName,Ve=R.popupStyle,mt=R.popupPlacement,gt=R.builtinPlacements,Se=gt===void 0?{}:gt,He=R.popupAlign,Qe=R.zIndex,yt=R.stretch,Le=R.getPopupClassNameFromAlign,ut=R.fresh,bt=R.alignPoint,Mt=R.onPopupClick,Dt=R.onPopupAlign,qt=R.arrow,Sn=R.popupMotion,tn=R.maskMotion,Ut=R.popupTransitionName,gn=R.popupAnimation,on=R.maskTransitionName,yn=R.maskAnimation,An=R.className,Bn=R.getTriggerDOMNode,zn=(0,t.Z)(R,Be),Ln=Ie||Ze||!1,fr=x.useState(!1),qn=(0,n.Z)(fr,2),Jn=qn[0],qe=qn[1];(0,C.Z)(function(){qe((0,g.Z)())},[]);var et=x.useRef({}),rn=x.useContext(J),Qt=x.useMemo(function(){return{registerSubPopup:function(ea,ma){et.current[ea]=ma,rn==null||rn.registerSubPopup(ea,ma)}}},[rn]),Cn=(0,m.Z)(),an=x.useState(null),Mn=(0,n.Z)(an,2),$n=Mn[0],nr=Mn[1],Rn=x.useRef(null),sn=(0,d.Z)(function(Pr){Rn.current=Pr,(0,c.Sh)(Pr)&&$n!==Pr&&nr(Pr),rn==null||rn.registerSubPopup(Cn,Pr)}),er=x.useState(null),Gn=(0,n.Z)(er,2),dn=Gn[0],ft=Gn[1],Ot=x.useRef(null),$t=(0,d.Z)(function(Pr){(0,c.Sh)(Pr)&&dn!==Pr&&(ft(Pr),Ot.current=Pr)}),Vt=x.Children.only(U),Gt=(Vt==null?void 0:Vt.props)||{},hn={},fn=(0,d.Z)(function(Pr){var ea,ma,Ga=dn;return(Ga==null?void 0:Ga.contains(Pr))||((ea=(0,h.A)(Ga))===null||ea===void 0?void 0:ea.host)===Pr||Pr===Ga||($n==null?void 0:$n.contains(Pr))||((ma=(0,h.A)($n))===null||ma===void 0?void 0:ma.host)===Pr||Pr===$n||Object.values(et.current).some(function(Pe){return(Pe==null?void 0:Pe.contains(Pr))||Pr===Pe})}),Qn=W($,Sn,gn,Ut),_n=W($,tn,yn,on),tr=x.useState(ie||!1),Nr=(0,n.Z)(tr,2),rr=Nr[0],cr=Nr[1],xn=te!=null?te:rr,or=(0,d.Z)(function(Pr){te===void 0&&cr(Pr)});(0,C.Z)(function(){cr(te||!1)},[te]);var ir=x.useRef(xn);ir.current=xn;var Vn=x.useRef([]);Vn.current=[];var Yn=(0,d.Z)(function(Pr){var ea;or(Pr),((ea=Vn.current[Vn.current.length-1])!==null&&ea!==void 0?ea:xn)!==Pr&&(Vn.current.push(Pr),xe==null||xe(Pr))}),Ir=x.useRef(),De=function(){clearTimeout(Ir.current)},$e=function(ea){var ma=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;De(),ma===0?Yn(ea):Ir.current=setTimeout(function(){Yn(ea)},ma*1e3)};x.useEffect(function(){return De},[]);var Je=x.useState(!1),Ye=(0,n.Z)(Je,2),ct=Ye[0],Nt=Ye[1];(0,C.Z)(function(Pr){(!Pr||xn)&&Nt(!0)},[xn]);var Kt=x.useState(null),Zn=(0,n.Z)(Kt,2),Tn=Zn[0],bn=Zn[1],Pn=x.useState(null),Kn=(0,n.Z)(Pn,2),pr=Kn[0],mn=Kn[1],Hn=function(ea){mn([ea.clientX,ea.clientY])},ze=Me(xn,$n,bt&&pr!==null?pr:dn,mt,Se,He,Dt),he=(0,n.Z)(ze,11),fe=he[0],we=he[1],ye=he[2],Xe=he[3],lt=he[4],pt=he[5],Lt=he[6],Wt=he[7],At=he[8],wn=he[9],Yt=he[10],ar=se(Jn,A,D,me),In=(0,n.Z)(ar,2),Nn=In[0],Xt=In[1],Bt=Nn.has("click"),Rt=Xt.has("click")||Xt.has("contextMenu"),xt=(0,d.Z)(function(){ct||Yt()}),ln=function(){ir.current&&bt&&Rt&&$e(!1)};We(xn,dn,$n,xt,ln),(0,C.Z)(function(){xt()},[pr,mt]),(0,C.Z)(function(){xn&&!(Se!=null&&Se[mt])&&xt()},[JSON.stringify(He)]);var On=x.useMemo(function(){var Pr=X(Se,$,wn,bt);return a()(Pr,Le==null?void 0:Le(wn))},[wn,Le,Se,$,bt]);x.useImperativeHandle(M,function(){return{nativeElement:Ot.current,popupElement:Rn.current,forceAlign:xt}});var Wn=x.useState(0),vr=(0,n.Z)(Wn,2),jr=vr[0],ur=vr[1],zr=x.useState(0),$r=(0,n.Z)(zr,2),ua=$r[0],Ca=$r[1],ba=function(){if(yt&&dn){var ea=dn.getBoundingClientRect();ur(ea.width),Ca(ea.height)}},Ua=function(){ba(),xt()},xa=function(ea){Nt(!1),Yt(),Te==null||Te(ea)},ja=function(){return new Promise(function(ea){ba(),bn(function(){return ea})})};(0,C.Z)(function(){Tn&&(Yt(),Tn(),bn(null))},[Tn]);function Pa(Pr,ea,ma,Ga){hn[Pr]=function(Pe){var tt;Ga==null||Ga(Pe),$e(ea,ma);for(var ne=arguments.length,Tt=new Array(ne>1?ne-1:0),Zt=1;Zt1?ma-1:0),Pe=1;Pe1?ma-1:0),Pe=1;PeEt.length)&&(je=Et.length);for(var vt=0,Pt=new Array(je);vt:",Et);var Pt=vt.Authorization,zt=vt.isToken;if(!Pt&&zt!==!1){var Jt=(0,pt.Mi)();if(Jt){var cn=Number(Jt)-new Date().getTime(),dr=(0,pt.YV)();if(cn-1&&(Nt=setTimeout(function(){P.delete($e)},Je)),P.set($e,{data:Ye,timer:Nt,startTime:new Date().getTime()})},_=function($e){var Je=P.get($e);return{data:Je==null?void 0:Je.data,startTime:Je==null?void 0:Je.startTime}},ae=function(De,$e){var Je=typeof Symbol=="function"&&De[Symbol.iterator];if(!Je)return De;var Ye=Je.call(De),ct,Nt=[],Kt;try{for(;($e===void 0||$e-- >0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},J=function(){for(var De=[],$e=0;$e0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},ge=function(){for(var De=[],$e=0;$e0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},rt=function(){for(var De=[],$e=0;$e0){var Zr=At&&((Sr=_(At))===null||Sr===void 0?void 0:Sr.startTime)||0;In===-1||new Date().getTime()-Zr<=In||Object.values(xa).forEach(function(Ur){Ur.refresh()})}else da.current.apply(da,rt(ye))},[]);var za=(0,S.useCallback)(function(){Object.values(Pa.current).forEach(function(Sr){Sr.unmount()}),Wn.current=ke,ja({}),Pa.current={}},[ja]);k(function(){Kt||Object.values(Pa.current).forEach(function(Sr){Sr.refresh()})},rt(ct)),(0,S.useEffect)(function(){return function(){Object.values(Pa.current).forEach(function(Sr){Sr.unmount()})}},[]);var Er=(0,S.useCallback)(function(Sr){return function(){console.warn("You should't call "+Sr+" when service not executed once.")}},[]);return Ae(Ae({loading:xt&&!Kt||pr,data:Bt,error:void 0,params:[],cancel:Er("cancel"),refresh:Er("refresh"),mutate:Er("mutate")},xa[Wn.current]||{}),{run:Xa,fetches:xa,reset:za})}var Ce=Fe,q=function(){return q=Object.assign||function(De){for(var $e,Je=1,Ye=arguments.length;Je0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},M=function(){for(var De=[],$e=0;$e0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},D=function(){for(var De=[],$e=0;$eOn&&(xt=Math.max(1,On)),Wt({current:xt,pageSize:ln})},[At,Wt]),ar=(0,S.useCallback)(function(Bt){Yt(Bt,ye)},[Yt,ye]),In=(0,S.useCallback)(function(Bt){Yt(fe,Bt)},[Yt,fe]),Nn=(0,S.useRef)(ar);Nn.current=ar,k(function(){$e.manual||Nn.current(1)},D(Kt));var Xt=(0,S.useCallback)(function(Bt,Rt,xt){Wt({current:Bt.current,pageSize:Bt.pageSize||ct,filters:Rt,sorter:xt})},[Lt,lt,Wt]);return U({loading:mn,data:Pn,params:Kn,run:pr,pagination:{current:fe,pageSize:ye,total:At,totalPage:wn,onChange:Yt,changeCurrent:ar,changePageSize:In},tableProps:{dataSource:(Pn==null?void 0:Pn.list)||[],loading:mn,onChange:Xt,pagination:{current:fe,pageSize:ye,total:At}},sorter:lt,filters:Lt},Hn)}var te=me,ie=S.createContext({});ie.displayName="UseRequestConfigContext";var xe=ie,Te=function(){return Te=Object.assign||function(De){for(var $e,Je=1,Ye=arguments.length;Je0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},Ue=function(){for(var De=[],$e=0;$e1&&arguments[1]!==void 0?arguments[1]:{};return dt(De,g()({formatResult:function(Ye){return Ye==null?void 0:Ye.data},requestMethod:function(Ye){if(typeof Ye=="string")return Ve(Ye);if(m()(Ye)==="object"){var ct=Ye.url,Nt=h()(Ye,It);return Ve(ct,Nt)}throw new Error("request options error")}},$e))}var Ie,Ze,st=function(){return Ze||(Ze=(0,it.We)().applyPlugins({key:"request",type:_n.modify,initialValue:{}}),Ze)},oe=function(){var $e,Je;if(Ie)return Ie;var Ye=st();return Ie=T().create(Ye),Ye==null||($e=Ye.requestInterceptors)===null||$e===void 0||$e.forEach(function(ct){ct instanceof Array?Ie.interceptors.request.use(function(){var Nt=u()(s()().mark(function Kt(Zn){var Tn,bn,Pn,Kn;return s()().wrap(function(mn){for(;;)switch(mn.prev=mn.next){case 0:if(Tn=Zn.url,ct[0].length!==2){mn.next=8;break}return mn.next=4,ct[0](Tn,Zn);case 4:return bn=mn.sent,Pn=bn.url,Kn=bn.options,mn.abrupt("return",g()(g()({},Kn),{},{url:Pn}));case 8:return mn.abrupt("return",ct[0](Zn));case 9:case"end":return mn.stop()}},Kt)}));return function(Kt){return Nt.apply(this,arguments)}}(),ct[1]):Ie.interceptors.request.use(function(){var Nt=u()(s()().mark(function Kt(Zn){var Tn,bn,Pn,Kn;return s()().wrap(function(mn){for(;;)switch(mn.prev=mn.next){case 0:if(Tn=Zn.url,ct.length!==2){mn.next=8;break}return mn.next=4,ct(Tn,Zn);case 4:return bn=mn.sent,Pn=bn.url,Kn=bn.options,mn.abrupt("return",g()(g()({},Kn),{},{url:Pn}));case 8:return mn.abrupt("return",ct(Zn));case 9:case"end":return mn.stop()}},Kt)}));return function(Kt){return Nt.apply(this,arguments)}}())}),Ye==null||(Je=Ye.responseInterceptors)===null||Je===void 0||Je.forEach(function(ct){ct instanceof Array?Ie.interceptors.response.use(ct[0],ct[1]):Ie.interceptors.response.use(ct)}),Ie.interceptors.response.use(function(ct){var Nt,Kt=ct.data;return(Kt==null?void 0:Kt.success)===!1&&Ye!==null&&Ye!==void 0&&(Nt=Ye.errorConfig)!==null&&Nt!==void 0&&Nt.errorThrower&&Ye.errorConfig.errorThrower(Kt),ct}),Ie},Ve=function($e){var Je=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{method:"GET"},Ye=oe(),ct=st(),Nt=Je.getResponse,Kt=Nt===void 0?!1:Nt,Zn=Je.requestInterceptors,Tn=Je.responseInterceptors,bn=Zn==null?void 0:Zn.map(function(Kn){return Kn instanceof Array?Ye.interceptors.request.use(function(){var pr=u()(s()().mark(function mn(Hn){var ze,he,fe,we;return s()().wrap(function(Xe){for(;;)switch(Xe.prev=Xe.next){case 0:if(ze=Hn.url,Kn[0].length!==2){Xe.next=8;break}return Xe.next=4,Kn[0](ze,Hn);case 4:return he=Xe.sent,fe=he.url,we=he.options,Xe.abrupt("return",g()(g()({},we),{},{url:fe}));case 8:return Xe.abrupt("return",Kn[0](Hn));case 9:case"end":return Xe.stop()}},mn)}));return function(mn){return pr.apply(this,arguments)}}(),Kn[1]):Ye.interceptors.request.use(function(){var pr=u()(s()().mark(function mn(Hn){var ze,he,fe,we;return s()().wrap(function(Xe){for(;;)switch(Xe.prev=Xe.next){case 0:if(ze=Hn.url,Kn.length!==2){Xe.next=8;break}return Xe.next=4,Kn(ze,Hn);case 4:return he=Xe.sent,fe=he.url,we=he.options,Xe.abrupt("return",g()(g()({},we),{},{url:fe}));case 8:return Xe.abrupt("return",Kn(Hn));case 9:case"end":return Xe.stop()}},mn)}));return function(mn){return pr.apply(this,arguments)}}())}),Pn=Tn==null?void 0:Tn.map(function(Kn){return Kn instanceof Array?Ye.interceptors.response.use(Kn[0],Kn[1]):Ye.interceptors.response.use(Kn)});return new Promise(function(Kn,pr){Ye.request(g()(g()({},Je),{},{url:$e})).then(function(mn){bn==null||bn.forEach(function(Hn){Ye.interceptors.request.eject(Hn)}),Pn==null||Pn.forEach(function(Hn){Ye.interceptors.response.eject(Hn)}),Kn(Kt?mn:mn.data)}).catch(function(mn){bn==null||bn.forEach(function(he){Ye.interceptors.request.eject(he)}),Pn==null||Pn.forEach(function(he){Ye.interceptors.response.eject(he)});try{var Hn,ze=ct==null||(Hn=ct.errorConfig)===null||Hn===void 0?void 0:Hn.errorHandler;ze&&ze(mn,Je,ct)}catch(he){pr(he)}pr(mn)})})},mt=e(58096),gt=e(74817),Se=e(96974),He=e(55648);function Qe(){return Qe=Object.assign||function(De){for(var $e=1;$e=0)&&(Je[ct]=De[ct]);return Je}const Le=["onClick","reloadDocument","replace","state","target","to"],ut=null;function bt(De,$e){if(!De){typeof console!="undefined"&&console.warn($e);try{throw new Error($e)}catch(Je){}}}function Mt(De){let{basename:$e,children:Je,window:Ye}=De,ct=useRef();ct.current==null&&(ct.current=createBrowserHistory({window:Ye}));let Nt=ct.current,[Kt,Zn]=useState({action:Nt.action,location:Nt.location});return useLayoutEffect(()=>Nt.listen(Zn),[Nt]),createElement(Router,{basename:$e,children:Je,location:Kt.location,navigationType:Kt.action,navigator:Nt})}function Dt(De){let{basename:$e,children:Je,window:Ye}=De,ct=useRef();ct.current==null&&(ct.current=createHashHistory({window:Ye}));let Nt=ct.current,[Kt,Zn]=useState({action:Nt.action,location:Nt.location});return useLayoutEffect(()=>Nt.listen(Zn),[Nt]),createElement(Router,{basename:$e,children:Je,location:Kt.location,navigationType:Kt.action,navigator:Nt})}function qt(De){let{basename:$e,children:Je,history:Ye}=De;const[ct,Nt]=useState({action:Ye.action,location:Ye.location});return useLayoutEffect(()=>Ye.listen(Nt),[Ye]),createElement(Router,{basename:$e,children:Je,location:ct.location,navigationType:ct.action,navigator:Ye})}function Sn(De){return!!(De.metaKey||De.altKey||De.ctrlKey||De.shiftKey)}const tn=(0,S.forwardRef)(function($e,Je){let{onClick:Ye,reloadDocument:ct,replace:Nt=!1,state:Kt,target:Zn,to:Tn}=$e,bn=yt($e,Le),Pn=(0,Se.oQ)(Tn),Kn=gn(Tn,{replace:Nt,state:Kt,target:Zn});function pr(mn){Ye&&Ye(mn),!mn.defaultPrevented&&!ct&&Kn(mn)}return(0,S.createElement)("a",Qe({},bn,{href:Pn,onClick:pr,ref:Je,target:Zn}))}),Ut=null;function gn(De,$e){let{target:Je,replace:Ye,state:ct}=$e===void 0?{}:$e,Nt=(0,Se.s0)(),Kt=(0,Se.TH)(),Zn=(0,Se.WU)(De);return(0,S.useCallback)(Tn=>{if(Tn.button===0&&(!Je||Je==="_self")&&!Sn(Tn)){Tn.preventDefault();let bn=!!Ye||(0,He.Ep)(Kt)===(0,He.Ep)(Zn);Nt(De,{replace:bn,state:ct})}},[Kt,Nt,Zn,Ye,ct,Je,De])}function on(De){let $e=useRef(yn(De)),Je=useLocation(),Ye=useMemo(()=>{let Kt=yn(Je.search);for(let Zn of $e.current.keys())Kt.has(Zn)||$e.current.getAll(Zn).forEach(Tn=>{Kt.append(Zn,Tn)});return Kt},[Je.search]),ct=useNavigate(),Nt=useCallback((Kt,Zn)=>{ct("?"+yn(Kt),Zn)},[ct]);return[Ye,Nt]}function yn(De){return De===void 0&&(De=""),new URLSearchParams(typeof De=="string"||Array.isArray(De)||De instanceof URLSearchParams?De:Object.keys(De).reduce(($e,Je)=>{let Ye=De[Je];return $e.concat(Array.isArray(Ye)?Ye.map(ct=>[Je,ct]):[[Je,Ye]])},[]))}var An=e(34162),Bn=e(48804);function zn(De,$e){var Je=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},Ye=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(typeof IntersectionObserver!="function")return null;var ct=S.useRef(typeof IntersectionObserver=="function"),Nt=S.useRef(null);return S.useEffect(function(){if(!(!De.current||!ct.current||Ye.disabled))return Nt.current=new IntersectionObserver(function(Kt){var Zn=(0,Bn.Z)(Kt,1),Tn=Zn[0];$e(Tn)},Je),Nt.current.observe(De.current),function(){var Kt;(Kt=Nt.current)===null||Kt===void 0||Kt.disconnect()}},[$e,Je,Ye.disabled,De]),Nt.current}var Ln=["prefetch"];function fr(De){var $e=S.useRef(null);return S.useEffect(function(){De&&(typeof De=="function"?De($e.current):De.current=$e.current)}),$e}var qn=S.forwardRef(function(De,$e){var Je,Ye=De.prefetch,ct=(0,gt.Z)(De,Ln),Nt=typeof window!="undefined"&&window.__umi_route_prefetch__||{defaultPrefetch:"none",defaultPrefetchTimeout:50},Kt=Nt.defaultPrefetch,Zn=Nt.defaultPrefetchTimeout,Tn=(Ye===!0?"intent":Ye===!1?"none":Ye)||Kt;if(!["intent","render","viewport","none"].includes(Tn))throw new Error("Invalid prefetch value ".concat(Tn," found in Link component"));var bn=(0,An.Ov)(),Pn=typeof De.to=="string"?De.to:(Je=De.to)===null||Je===void 0?void 0:Je.pathname,Kn=S.useRef(!1),pr=fr($e),mn=function(he){if(Tn==="intent"){var fe=he.target||{};fe.preloadTimeout||(fe.preloadTimeout=setTimeout(function(){var we;fe.preloadTimeout=null,(we=bn.preloadRoute)===null||we===void 0||we.call(bn,Pn)},De.prefetchTimeout||Zn))}},Hn=function(he){if(Tn==="intent"){var fe=he.target||{};fe.preloadTimeout&&(clearTimeout(fe.preloadTimeout),fe.preloadTimeout=null)}};return(0,S.useLayoutEffect)(function(){if(Tn==="render"&&!Kn.current){var ze;(ze=bn.preloadRoute)===null||ze===void 0||ze.call(bn,Pn),Kn.current=!0}},[Tn,Pn]),zn(pr,function(ze){if(ze!=null&&ze.isIntersecting){var he;(he=bn.preloadRoute)===null||he===void 0||he.call(bn,Pn)}},{rootMargin:"100px"},{disabled:Tn!=="viewport"}),Pn?S.createElement(tn,(0,mt.Z)({onMouseEnter:mn,onMouseLeave:Hn,ref:pr},ct),De.children):null}),Jn=e(47388);function qe(De){"@babel/helpers - typeof";return qe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($e){return typeof $e}:function($e){return $e&&typeof Symbol=="function"&&$e.constructor===Symbol&&$e!==Symbol.prototype?"symbol":typeof $e},qe(De)}function et(){"use strict";et=function(){return $e};var De,$e={},Je=Object.prototype,Ye=Je.hasOwnProperty,ct=Object.defineProperty||function(Bt,Rt,xt){Bt[Rt]=xt.value},Nt=typeof Symbol=="function"?Symbol:{},Kt=Nt.iterator||"@@iterator",Zn=Nt.asyncIterator||"@@asyncIterator",Tn=Nt.toStringTag||"@@toStringTag";function bn(Bt,Rt,xt){return Object.defineProperty(Bt,Rt,{value:xt,enumerable:!0,configurable:!0,writable:!0}),Bt[Rt]}try{bn({},"")}catch(Bt){bn=function(xt,ln,On){return xt[ln]=On}}function Pn(Bt,Rt,xt,ln){var On=Rt&&Rt.prototype instanceof fe?Rt:fe,Wn=Object.create(On.prototype),vr=new Nn(ln||[]);return ct(Wn,"_invoke",{value:wn(Bt,xt,vr)}),Wn}function Kn(Bt,Rt,xt){try{return{type:"normal",arg:Bt.call(Rt,xt)}}catch(ln){return{type:"throw",arg:ln}}}$e.wrap=Pn;var pr="suspendedStart",mn="suspendedYield",Hn="executing",ze="completed",he={};function fe(){}function we(){}function ye(){}var Xe={};bn(Xe,Kt,function(){return this});var lt=Object.getPrototypeOf,pt=lt&<(lt(Xt([])));pt&&pt!==Je&&Ye.call(pt,Kt)&&(Xe=pt);var Lt=ye.prototype=fe.prototype=Object.create(Xe);function Wt(Bt){["next","throw","return"].forEach(function(Rt){bn(Bt,Rt,function(xt){return this._invoke(Rt,xt)})})}function At(Bt,Rt){function xt(On,Wn,vr,jr){var ur=Kn(Bt[On],Bt,Wn);if(ur.type!=="throw"){var zr=ur.arg,$r=zr.value;return $r&&qe($r)=="object"&&Ye.call($r,"__await")?Rt.resolve($r.__await).then(function(ua){xt("next",ua,vr,jr)},function(ua){xt("throw",ua,vr,jr)}):Rt.resolve($r).then(function(ua){zr.value=ua,vr(zr)},function(ua){return xt("throw",ua,vr,jr)})}jr(ur.arg)}var ln;ct(this,"_invoke",{value:function(Wn,vr){function jr(){return new Rt(function(ur,zr){xt(Wn,vr,ur,zr)})}return ln=ln?ln.then(jr,jr):jr()}})}function wn(Bt,Rt,xt){var ln=pr;return function(On,Wn){if(ln===Hn)throw new Error("Generator is already running");if(ln===ze){if(On==="throw")throw Wn;return{value:De,done:!0}}for(xt.method=On,xt.arg=Wn;;){var vr=xt.delegate;if(vr){var jr=Yt(vr,xt);if(jr){if(jr===he)continue;return jr}}if(xt.method==="next")xt.sent=xt._sent=xt.arg;else if(xt.method==="throw"){if(ln===pr)throw ln=ze,xt.arg;xt.dispatchException(xt.arg)}else xt.method==="return"&&xt.abrupt("return",xt.arg);ln=Hn;var ur=Kn(Bt,Rt,xt);if(ur.type==="normal"){if(ln=xt.done?ze:mn,ur.arg===he)continue;return{value:ur.arg,done:xt.done}}ur.type==="throw"&&(ln=ze,xt.method="throw",xt.arg=ur.arg)}}}function Yt(Bt,Rt){var xt=Rt.method,ln=Bt.iterator[xt];if(ln===De)return Rt.delegate=null,xt==="throw"&&Bt.iterator.return&&(Rt.method="return",Rt.arg=De,Yt(Bt,Rt),Rt.method==="throw")||xt!=="return"&&(Rt.method="throw",Rt.arg=new TypeError("The iterator does not provide a '"+xt+"' method")),he;var On=Kn(ln,Bt.iterator,Rt.arg);if(On.type==="throw")return Rt.method="throw",Rt.arg=On.arg,Rt.delegate=null,he;var Wn=On.arg;return Wn?Wn.done?(Rt[Bt.resultName]=Wn.value,Rt.next=Bt.nextLoc,Rt.method!=="return"&&(Rt.method="next",Rt.arg=De),Rt.delegate=null,he):Wn:(Rt.method="throw",Rt.arg=new TypeError("iterator result is not an object"),Rt.delegate=null,he)}function ar(Bt){var Rt={tryLoc:Bt[0]};1 in Bt&&(Rt.catchLoc=Bt[1]),2 in Bt&&(Rt.finallyLoc=Bt[2],Rt.afterLoc=Bt[3]),this.tryEntries.push(Rt)}function In(Bt){var Rt=Bt.completion||{};Rt.type="normal",delete Rt.arg,Bt.completion=Rt}function Nn(Bt){this.tryEntries=[{tryLoc:"root"}],Bt.forEach(ar,this),this.reset(!0)}function Xt(Bt){if(Bt||Bt===""){var Rt=Bt[Kt];if(Rt)return Rt.call(Bt);if(typeof Bt.next=="function")return Bt;if(!isNaN(Bt.length)){var xt=-1,ln=function On(){for(;++xt=0;--On){var Wn=this.tryEntries[On],vr=Wn.completion;if(Wn.tryLoc==="root")return ln("end");if(Wn.tryLoc<=this.prev){var jr=Ye.call(Wn,"catchLoc"),ur=Ye.call(Wn,"finallyLoc");if(jr&&ur){if(this.prev=0;--ln){var On=this.tryEntries[ln];if(On.tryLoc<=this.prev&&Ye.call(On,"finallyLoc")&&this.prev=0;--xt){var ln=this.tryEntries[xt];if(ln.finallyLoc===Rt)return this.complete(ln.completion,ln.afterLoc),In(ln),he}},catch:function(Rt){for(var xt=this.tryEntries.length-1;xt>=0;--xt){var ln=this.tryEntries[xt];if(ln.tryLoc===Rt){var On=ln.completion;if(On.type==="throw"){var Wn=On.arg;In(ln)}return Wn}}throw new Error("illegal catch attempt")},delegateYield:function(Rt,xt,ln){return this.delegate={iterator:Xt(Rt),resultName:xt,nextLoc:ln},this.method==="next"&&(this.arg=De),he}},$e}function rn(De,$e){if(qe(De)!="object"||!De)return De;var Je=De[Symbol.toPrimitive];if(Je!==void 0){var Ye=Je.call(De,$e||"default");if(qe(Ye)!="object")return Ye;throw new TypeError("@@toPrimitive must return a primitive value.")}return($e==="string"?String:Number)(De)}function Qt(De){var $e=rn(De,"string");return qe($e)=="symbol"?$e:String($e)}function Cn(De,$e,Je){return $e=Qt($e),$e in De?Object.defineProperty(De,$e,{value:Je,enumerable:!0,configurable:!0,writable:!0}):De[$e]=Je,De}function an(De,$e){var Je=Object.keys(De);if(Object.getOwnPropertySymbols){var Ye=Object.getOwnPropertySymbols(De);$e&&(Ye=Ye.filter(function(ct){return Object.getOwnPropertyDescriptor(De,ct).enumerable})),Je.push.apply(Je,Ye)}return Je}function Mn(De){for(var $e=1;$eDe.length)&&($e=De.length);for(var Je=0,Ye=new Array($e);Je<$e;Je++)Ye[Je]=De[Je];return Ye}function sn(De,$e){if(De){if(typeof De=="string")return Rn(De,$e);var Je=Object.prototype.toString.call(De).slice(8,-1);if(Je==="Object"&&De.constructor&&(Je=De.constructor.name),Je==="Map"||Je==="Set")return Array.from(De);if(Je==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Je))return Rn(De,$e)}}function er(De,$e){var Je=typeof Symbol!="undefined"&&De[Symbol.iterator]||De["@@iterator"];if(!Je){if(Array.isArray(De)||(Je=sn(De))||$e&&De&&typeof De.length=="number"){Je&&(De=Je);var Ye=0,ct=function(){};return{s:ct,n:function(){return Ye>=De.length?{done:!0}:{done:!1,value:De[Ye++]}},e:function(bn){throw bn},f:ct}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function er(Et,je){var vt=je||{},Pt=vt.defaultValue,zt=vt.value,Jt=vt.onChange,cn=vt.postState,dr=S.useState(function(){return zt!==void 0?zt:Pt!==void 0?typeof Pt=="function"?Pt():Pt:typeof Et=="function"?Et():Et}),jn=Mn(dr,2),xr=jn[0],Gr=jn[1],br=zt!==void 0?zt:xr;cn&&(br=cn(br));function $a(Ia){Gr(Ia),br!==Ia&&Jt&&Jt(Ia,br)}return[br,$a]}var Gn=er,dn=function(je){typeof S.startTransition=="function"?(0,S.startTransition)(je):je()},ft,Ot=function(je){var vt=je.themeMode,Pt=je.setAppearance,zt=je.setBrowserPrefers,Jt=function(){dn(function(){Jn("dark").matches?Pt("dark"):Pt("light")})},cn=function(){dn(function(){Jn("dark").matches?zt("dark"):zt("light")})};return(0,S.useLayoutEffect)(function(){if(vt!=="auto"){dn(function(){Pt(vt)});return}return setTimeout(Jt,1),ft||(ft=Jn("dark")),ft.addEventListener("change",Jt),function(){ft.removeEventListener("change",Jt)}},[vt]),(0,S.useLayoutEffect)(function(){return ft||(ft=Jn("dark")),ft.addEventListener("change",cn),function(){ft.removeEventListener("change",cn)}},[]),null},$t=(0,S.memo)(function(Et){var je,vt=Et.children,Pt=Et.appearance,zt=Et.defaultAppearance,Jt=Et.onAppearanceChange,cn=Et.themeMode,dr=Et.defaultThemeMode,jn=Et.onThemeModeChange,xr=Et.useTheme,Gr=xr(),br=Gr.appearance,$a=Gr.themeMode,Ia=Gn("light",{value:cn,defaultValue:dr!=null?dr:$a,onChange:function(Yo){return jn==null?void 0:jn(Yo)}}),Za=(0,Le.Z)(Ia,2),Va=Za[0],Ka=Za[1],so=Gn("light",{value:Pt,defaultValue:zt!=null?zt:br,onChange:function(Yo){return Jt==null?void 0:Jt(Yo)}}),Na=(0,Le.Z)(so,2),vo=Na[0],no=Na[1],So=(0,S.useState)((je=Jn("dark"))!==null&&je!==void 0&&je.matches?"dark":"light"),ho=(0,Le.Z)(So,2),Oo=ho[0],Ho=ho[1];return(0,O.jsxs)(et.Provider,{value:{themeMode:Va,setThemeMode:Ka,appearance:vo,setAppearance:no,isDarkMode:vo==="dark",browserPrefers:Oo},children:[typeof window!="undefined"&&(0,O.jsx)(Ot,{themeMode:Va,setAppearance:no,setBrowserPrefers:Ho}),vt]})});$t.displayName="ThemeSwitcher";var Vt=$t,Gt=function(je){var vt=je.css,Pt=je.token;return{buttonDefaultHover:vt({backgroundColor:Pt.colorBgContainer,border:"1px solid ".concat(Pt.colorBorder),cursor:"pointer",":hover":{color:Pt.colorPrimaryHover,borderColor:Pt.colorPrimaryHover},":active":{color:Pt.colorPrimaryActive,borderColor:Pt.colorPrimaryActive}})}},hn=function(je){return Object.fromEntries(Object.entries(je).map(function(vt){var Pt=(0,Le.Z)(vt,2),zt=Pt[0],Jt=Pt[1];return[zt,Jt.styles]}))},fn=function(){var je=bt(),vt=rn(),Pt=vt.appearance,zt=vt.isDarkMode;return(0,S.useMemo)(function(){return hn(Gt({token:je,css:rt,appearance:Pt,isDarkMode:zt}))},[je,Pt,zt])},Qn=function(){var je=bt(),vt=fn();return(0,S.useMemo)(function(){return(0,ue.Z)((0,ue.Z)({},je),{},{stylish:vt})},[je,vt])},_n=["stylish"],tr=function(je){var vt=je.children,Pt=je.customToken,zt=je.defaultCustomToken,Jt=je.customStylish,cn=je.prefixCls,dr=je.StyledThemeProvider,jn=rn(),xr=jn.appearance,Gr=jn.isDarkMode,br=Qn(),$a=br.stylish,Ia=(0,Se.Z)(br,_n),Za=(0,S.useMemo)(function(){return zt?zt instanceof Function?zt({token:Ia,appearance:xr,isDarkMode:Gr}):zt:{}},[zt,Ia,xr]),Va=(0,S.useMemo)(function(){return Pt instanceof Function?(0,ue.Z)((0,ue.Z)({},Za),Pt({token:Ia,appearance:xr,isDarkMode:Gr})):(0,ue.Z)((0,ue.Z)({},Za),Pt)},[Za,Pt,Ia,xr]),Ka=(0,S.useMemo)(function(){return Jt?Jt({token:(0,ue.Z)((0,ue.Z)({},Ia),Va),stylish:$a,appearance:xr,isDarkMode:Gr,css:rt}):{}},[Jt,Ia,Va,$a,xr]),so=(0,S.useMemo)(function(){return(0,ue.Z)((0,ue.Z)({},Ka),$a)},[Ka,$a]),Na=(0,ue.Z)((0,ue.Z)((0,ue.Z)((0,ue.Z)({},Ia),Va),{},{stylish:so},jn),{},{prefixCls:cn});return(0,O.jsx)(dr,{theme:Na,children:vt})},Nr=tr,rr=function(je){var vt=je.styledConfig?An(je.styledConfig):void 0,Pt=je.StyleEngineContext;return(0,S.memo)(function(zt){var Jt=zt.children,cn=zt.customToken,dr=zt.customStylish,jn=zt.theme,xr=zt.getStaticInstance,Gr=zt.prefixCls,br=zt.staticInstanceConfig,$a=zt.appearance,Ia=zt.defaultAppearance,Za=zt.onAppearanceChange,Va=zt.themeMode,Ka=zt.defaultThemeMode,so=zt.onThemeModeChange,Na=zt.styled,vo=(0,S.useContext)(Pt),no=vo.prefixCls,So=vo.StyledThemeContext,ho=vo.CustomThemeContext,Oo=(0,S.useContext)(ho),Ho=Na?An(Na):vt||gn,$o=Gr||no;return(0,O.jsx)(Pt.Provider,{value:{prefixCls:$o,StyledThemeContext:(Na==null?void 0:Na.ThemeContext)||So||on,CustomThemeContext:ho},children:(0,O.jsx)(Vt,{themeMode:Va,defaultThemeMode:Ka,onThemeModeChange:so,defaultAppearance:Ia,appearance:$a,onAppearanceChange:Za,useTheme:je.useTheme,children:(0,O.jsx)(Cn,{prefixCls:$o,staticInstanceConfig:br,theme:jn,getStaticInstance:xr,children:(0,O.jsx)(Nr,{prefixCls:$o,customToken:cn,defaultCustomToken:Oo,customStylish:dr,StyledThemeProvider:Ho,children:Jt})})})})})},cr=function(je){return function(){var vt=je.StyleEngineContext,Pt=(0,S.useContext)(vt),zt=Pt.StyledThemeContext,Jt=Pt.CustomThemeContext,cn=Pt.prefixCls,dr=Qn(),jn=rn(),xr=(0,S.useContext)(Jt),Gr=(0,S.useContext)(zt!=null?zt:on)||{},br=(0,S.useContext)(qn.ZP.ConfigContext),$a=br.iconPrefixCls,Ia=br.getPrefixCls,Za=Ia(),Va=cn&&cn!=="ant"?cn:Za,Ka=(0,S.useMemo)(function(){return(0,ue.Z)((0,ue.Z)((0,ue.Z)((0,ue.Z)({},dr),jn),xr),{},{prefixCls:Va,iconPrefixCls:$a})},[dr,jn,xr,Va,$a]);return!Gr||Object.keys(Gr).length===0?Ka:(0,ue.Z)((0,ue.Z)({},Gr),{},{prefixCls:Va,iconPrefixCls:$a})}},xn=new W;typeof e.g!="undefined"&&(e.g.__ANTD_STYLE_CACHE_MANAGER_FOR_SSR__=xn);var or=function(je){var vt,Pt,zt,Jt=(0,ue.Z)((0,ue.Z)({},je),{},{key:(vt=je.key)!==null&&vt!==void 0?vt:"zcss",speedy:(Pt=je.speedy)!==null&&Pt!==void 0?Pt:!1}),cn=(0,k.Z)({key:Jt.key,speedy:Jt.speedy,container:Jt.container}),dr=ke(cn),jn=yt(dr);cn.cache=xn.add(cn.cache);var xr=(0,S.createContext)(Jt.customToken?Jt.customToken:{}),Gr=(zt=Jt.styled)===null||zt===void 0?void 0:zt.ThemeContext,br=(0,S.createContext)({CustomThemeContext:xr,StyledThemeContext:Gr,prefixCls:Jt==null?void 0:Jt.prefixCls,iconPrefixCls:Jt==null?void 0:Jt.iconPrefixCls}),$a=cr({StyleEngineContext:br}),Ia=Ut({hashPriority:Jt.hashPriority,useTheme:$a,EmotionContext:dr}),Za=mt($a),Va=gt(Ia),Ka=rr({styledConfig:Jt.styled,StyleEngineContext:br,useTheme:$a});Ka.displayName="AntdStyleThemeProvider";var so=We(cn.cache,{hashPriority:Jt.hashPriority}),Na=so.cx,vo=cn.injectGlobal,no=cn.keyframes;return{createStyles:Ia,createGlobalStyle:Za,createStylish:Va,css:rt,cx:Na,keyframes:no,injectGlobal:vo,styleManager:cn,useTheme:$a,StyleProvider:jn,ThemeProvider:Ka}},ir=or({key:J,speedy:!1}),Vn=ir.createStyles,Yn=ir.createGlobalStyle,Ir=ir.createStylish,De=ir.css,$e=ir.cx,Je=ir.keyframes,Ye=ir.injectGlobal,ct=ir.styleManager,Nt=ir.ThemeProvider,Kt=ir.StyleProvider,Zn=ir.useTheme,Tn=e(87735),bn=e(73935),Pn=e(13769),Kn=e.n(Pn),pr=e(9783),mn=e.n(pr),Hn=e(85418),ze=e(93967),he=e.n(ze),fe=["overlayClassName"],we=Vn(function(Et){var je=Et.token;return{dropdown:mn()({},"@media screen and (max-width: ".concat(je.screenXS,"px)"),{width:"100%"})}}),ye=function(je){var vt=je.overlayClassName,Pt=Kn()(je,fe),zt=we(),Jt=zt.styles;return(0,O.jsx)(Hn.Z,h()({overlayClassName:he()(Jt.dropdown,vt)},Pt))},Xe=ye,lt=e(66034),pt=e(16560),Lt=e(25995),Wt=function(){var je=(0,T.useModel)("@@initialState"),vt=je.initialState,Pt=vt||{},zt=Pt.currentUser;return(0,O.jsx)("span",{className:"anticon",children:zt==null?void 0:zt.nickName})},At=Vn(function(Et){var je=Et.token;return{action:{display:"flex",height:"48px",marginLeft:"auto",overflow:"hidden",alignItems:"center",padding:"0 8px",cursor:"pointer",borderRadius:je.borderRadius,"&:hover":{backgroundColor:je.colorBgTextHover}}}}),wn=function(je){var vt=je.menu,Pt=je.children,zt=function(){var Za=g()(m()().mark(function Va(){var Ka,so,Na,vo,no;return m()().wrap(function(ho){for(;;)switch(ho.prev=ho.next){case 0:return ho.next=2,(0,Lt.kS)();case 2:(0,pt.dP)(),(0,lt.AP)(null),Ka=window.location,so=Ka.search,Na=Ka.pathname,vo=new URL(window.location.href).searchParams,no=vo.get("redirect"),console.log("redirect",window.location.pathname,no),window.location.pathname!=="/shihezi/user/login"&&!no&&T.history.replace({pathname:"/user/login",search:(0,Tn.stringify)({redirect:Na.replace("/shihezi","")+so})});case 9:case"end":return ho.stop()}},Va)}));return function(){return Za.apply(this,arguments)}}(),Jt=At(),cn=Jt.styles,dr=(0,T.useModel)("@@initialState"),jn=dr.initialState,xr=dr.setInitialState,Gr=(0,S.useCallback)(function(Za){var Va=Za.key;if(Va==="logout"){(0,bn.flushSync)(function(){xr(function(Ka){return h()(h()({},Ka),{},{currentUser:void 0})})}),zt();return}T.history.push("/account/".concat(Va))},[xr]),br=(0,O.jsx)("span",{className:cn.action,children:(0,O.jsx)(ae.Z,{size:"small",style:{marginLeft:8,marginRight:8}})});if(!jn)return br;var $a=jn.currentUser;if(!$a||!$a.nickName)return br;var Ia=[].concat(z()(vt?[{key:"center",icon:(0,O.jsx)(P.Z,{}),label:"\u4E2A\u4EBA\u4E2D\u5FC3"},{key:"settings",icon:(0,O.jsx)(V.Z,{}),label:"\u4E2A\u4EBA\u8BBE\u7F6E"},{type:"divider"}]:[]),[{key:"logout",icon:(0,O.jsx)(_.Z,{}),label:"\u9000\u51FA\u767B\u5F55"}]);return(0,O.jsx)(Xe,{menu:{selectedKeys:[],onClick:Gr,items:Ia},children:Pt})},Yt=e(55850),ar=e(15861),In=e(97937),Nn=e(5603),Xt=e(57132),Bt=e(12044),Rt=e(92210),xt=e(1977),ln=e(73177),On=e(45095),Wn=e(67159),vr=e(85265),jr=e(96074),ur=e(2487),zr=e(72269),$r=e(38925),ua=e(83622),Ca=e(21770),ba=e(98423),Ua=e(14192),xa=e(52676),ja=e(62812),Pa=e(63606),Ya=e(83062),Xa=function(je){var vt=je.value,Pt=je.configType,zt=je.onChange,Jt=je.list,cn=je.prefixCls,dr=je.hashId,jn="".concat(cn,"-block-checkbox"),xr=(0,S.useMemo)(function(){var Gr=(Jt||[]).map(function(br){return(0,O.jsx)(Ya.Z,{title:br.title,children:(0,O.jsxs)("div",{className:he()(dr,"".concat(jn,"-item"),"".concat(jn,"-item-").concat(br.key),"".concat(jn,"-").concat(Pt,"-item")),onClick:function(){return zt(br.key)},children:[(0,O.jsx)(Pa.Z,{className:"".concat(jn,"-selectIcon ").concat(dr).trim(),style:{display:vt===br.key?"block":"none"}}),br!=null&&br.icon?(0,O.jsx)("div",{className:"".concat(jn,"-icon ").concat(dr).trim(),children:br.icon}):null]})},br.key)});return Gr},[vt,Jt==null?void 0:Jt.length,zt]);return(0,O.jsx)("div",{className:he()(jn,dr),children:xr})},da=e(34041),Ra=function(je){var vt=S.cloneElement(je.action,{disabled:je.disabled});return(0,O.jsx)(Ya.Z,{title:je.disabled?je.disabledReason:"",placement:"left",children:(0,O.jsx)(ur.Z.Item,{actions:[vt],children:(0,O.jsx)("span",{style:{opacity:je.disabled?.5:1},children:je.title})})})},za=function(je){var vt=je.settings,Pt=je.prefixCls,zt=je.changeSetting,Jt=je.hashId,cn=Pe(),dr=vt||Ua.h,jn=dr.contentWidth,xr=dr.splitMenus,Gr=dr.fixedHeader,br=dr.layout,$a=dr.fixSiderbar;return(0,O.jsx)(ur.Z,{className:"".concat(Pt,"-list ").concat(Jt).trim(),split:!1,dataSource:[{title:cn({id:"app.setting.content-width",defaultMessage:"Content Width"}),action:(0,O.jsxs)(da.default,{value:jn||"Fixed",size:"small",className:"content-width ".concat(Jt).trim(),onSelect:function(Za){zt("contentWidth",Za)},style:{width:80},children:[br==="side"?null:(0,O.jsx)(da.default.Option,{value:"Fixed",children:cn({id:"app.setting.content-width.fixed",defaultMessage:"Fixed"})}),(0,O.jsx)(da.default.Option,{value:"Fluid",children:cn({id:"app.setting.content-width.fluid",defaultMessage:"Fluid"})})]})},{title:cn({id:"app.setting.fixedheader",defaultMessage:"Fixed Header"}),action:(0,O.jsx)(zr.Z,{size:"small",className:"fixed-header",checked:!!Gr,onChange:function(Za){zt("fixedHeader",Za)}})},{title:cn({id:"app.setting.fixedsidebar",defaultMessage:"Fixed Sidebar"}),disabled:br==="top",disabledReason:cn({id:"app.setting.fixedsidebar.hint",defaultMessage:"Works on Side Menu Layout"}),action:(0,O.jsx)(zr.Z,{size:"small",className:"fix-siderbar",checked:!!$a,onChange:function(Za){return zt("fixSiderbar",Za)}})},{title:cn({id:"app.setting.splitMenus"}),disabled:br!=="mix",action:(0,O.jsx)(zr.Z,{size:"small",checked:!!xr,className:"split-menus",onChange:function(Za){zt("splitMenus",Za)}})}],renderItem:Ra})},Er=function(je){var vt=je.settings,Pt=je.prefixCls,zt=je.changeSetting,Jt=je.hashId,cn=Pe(),dr=["header","footer","menu","menuHeader"];return(0,O.jsx)(ur.Z,{className:"".concat(Pt,"-list ").concat(Jt).trim(),split:!1,renderItem:Ra,dataSource:dr.map(function(jn){return{title:cn({id:"app.setting.regionalsettings.".concat(jn)}),action:(0,O.jsx)(zr.Z,{size:"small",className:"regional-".concat(jn," ").concat(Jt).trim(),checked:vt["".concat(jn,"Render")]||vt["".concat(jn,"Render")]===void 0,onChange:function(Gr){return zt("".concat(jn,"Render"),Gr===!0?void 0:!1)}})}})})},Sr=["color","check"],Zr=S.forwardRef(function(Et,je){var vt=Et.color,Pt=Et.check,zt=(0,Se.Z)(Et,Sr);return(0,O.jsx)("div",(0,ue.Z)((0,ue.Z)({},zt),{},{style:{backgroundColor:vt},ref:je,children:Pt?(0,O.jsx)(Pa.Z,{}):""}))}),Ur=function(je){var vt=je.value,Pt=je.colorList,zt=je.onChange,Jt=je.prefixCls,cn=je.formatMessage,dr=je.hashId;if(!Pt||(Pt==null?void 0:Pt.length)<1)return null;var jn="".concat(Jt,"-theme-color");return(0,O.jsx)("div",{className:"".concat(jn," ").concat(dr).trim(),children:Pt==null?void 0:Pt.map(function(xr){var Gr=xr.key,br=xr.color,$a=xr.title;return Gr?(0,O.jsx)(Ya.Z,{title:$a!=null?$a:cn({id:"app.setting.themecolor.".concat(Gr)}),children:(0,O.jsx)(Zr,{className:"".concat(jn,"-block ").concat(dr).trim(),color:br,check:vt===br,onClick:function(){return zt&&zt(br)}})},br):null})})};function Sa(){return(0,O.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"1em",height:"1em",viewBox:"0 0 104 104",children:[(0,O.jsxs)("defs",{children:[(0,O.jsx)("rect",{id:"path-1",width:"90",height:"72",x:"0",y:"0",rx:"10"}),(0,O.jsxs)("filter",{id:"filter-2",width:"152.2%",height:"165.3%",x:"-26.1%",y:"-27.1%",filterUnits:"objectBoundingBox",children:[(0,O.jsx)("feMorphology",{in:"SourceAlpha",radius:"0.25",result:"shadowSpreadOuter1"}),(0,O.jsx)("feOffset",{dy:"1",in:"shadowSpreadOuter1",result:"shadowOffsetOuter1"}),(0,O.jsx)("feGaussianBlur",{in:"shadowOffsetOuter1",result:"shadowBlurOuter1",stdDeviation:"1"}),(0,O.jsx)("feColorMatrix",{in:"shadowBlurOuter1",result:"shadowMatrixOuter1",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0"}),(0,O.jsx)("feMorphology",{in:"SourceAlpha",radius:"1",result:"shadowSpreadOuter2"}),(0,O.jsx)("feOffset",{dy:"2",in:"shadowSpreadOuter2",result:"shadowOffsetOuter2"}),(0,O.jsx)("feGaussianBlur",{in:"shadowOffsetOuter2",result:"shadowBlurOuter2",stdDeviation:"4"}),(0,O.jsx)("feColorMatrix",{in:"shadowBlurOuter2",result:"shadowMatrixOuter2",values:"0 0 0 0 0.098466735 0 0 0 0 0.0599695403 0 0 0 0 0.0599695403 0 0 0 0.07 0"}),(0,O.jsx)("feMorphology",{in:"SourceAlpha",radius:"2",result:"shadowSpreadOuter3"}),(0,O.jsx)("feOffset",{dy:"4",in:"shadowSpreadOuter3",result:"shadowOffsetOuter3"}),(0,O.jsx)("feGaussianBlur",{in:"shadowOffsetOuter3",result:"shadowBlurOuter3",stdDeviation:"8"}),(0,O.jsx)("feColorMatrix",{in:"shadowBlurOuter3",result:"shadowMatrixOuter3",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"}),(0,O.jsxs)("feMerge",{children:[(0,O.jsx)("feMergeNode",{in:"shadowMatrixOuter1"}),(0,O.jsx)("feMergeNode",{in:"shadowMatrixOuter2"}),(0,O.jsx)("feMergeNode",{in:"shadowMatrixOuter3"})]})]})]}),(0,O.jsxs)("g",{fill:"none",fillRule:"evenodd",stroke:"none",strokeWidth:"1",children:[(0,O.jsxs)("g",{children:[(0,O.jsx)("use",{fill:"#000",filter:"url(#filter-2)",xlinkHref:"#path-1"}),(0,O.jsx)("use",{fill:"#F0F2F5",xlinkHref:"#path-1"})]}),(0,O.jsx)("path",{fill:"#FFF",d:"M25 15h65v47c0 5.523-4.477 10-10 10H25V15z"}),(0,O.jsx)("path",{stroke:"#E6EAF0",strokeLinecap:"square",d:"M0.5 15.5L90.5 15.5"}),(0,O.jsx)("rect",{width:"14",height:"3",x:"4",y:"26",fill:"#D7DDE6",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"4",y:"32",fill:"#D7DDE6",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"4",y:"42",fill:"#E6EAF0",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"4",y:"21",fill:"#E6EAF0",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"4",y:"53",fill:"#D7DDE6",rx:"1.5"}),(0,O.jsx)("rect",{width:"14",height:"3",x:"4",y:"47",fill:"#D7DDE6",rx:"1.5"}),(0,O.jsx)("path",{stroke:"#E6EAF0",strokeLinecap:"square",d:"M25.5 15.5L25.5 72.5"})]})]})}function ha(){return(0,O.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"1em",height:"1em",viewBox:"0 0 104 104",children:[(0,O.jsxs)("defs",{children:[(0,O.jsx)("rect",{id:"path-1",width:"90",height:"72",x:"0",y:"0",rx:"10"}),(0,O.jsxs)("filter",{id:"filter-2",width:"152.2%",height:"165.3%",x:"-26.1%",y:"-27.1%",filterUnits:"objectBoundingBox",children:[(0,O.jsx)("feMorphology",{in:"SourceAlpha",radius:"0.25",result:"shadowSpreadOuter1"}),(0,O.jsx)("feOffset",{dy:"1",in:"shadowSpreadOuter1",result:"shadowOffsetOuter1"}),(0,O.jsx)("feGaussianBlur",{in:"shadowOffsetOuter1",result:"shadowBlurOuter1",stdDeviation:"1"}),(0,O.jsx)("feColorMatrix",{in:"shadowBlurOuter1",result:"shadowMatrixOuter1",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0"}),(0,O.jsx)("feMorphology",{in:"SourceAlpha",radius:"1",result:"shadowSpreadOuter2"}),(0,O.jsx)("feOffset",{dy:"2",in:"shadowSpreadOuter2",result:"shadowOffsetOuter2"}),(0,O.jsx)("feGaussianBlur",{in:"shadowOffsetOuter2",result:"shadowBlurOuter2",stdDeviation:"4"}),(0,O.jsx)("feColorMatrix",{in:"shadowBlurOuter2",result:"shadowMatrixOuter2",values:"0 0 0 0 0.098466735 0 0 0 0 0.0599695403 0 0 0 0 0.0599695403 0 0 0 0.07 0"}),(0,O.jsx)("feMorphology",{in:"SourceAlpha",radius:"2",result:"shadowSpreadOuter3"}),(0,O.jsx)("feOffset",{dy:"4",in:"shadowSpreadOuter3",result:"shadowOffsetOuter3"}),(0,O.jsx)("feGaussianBlur",{in:"shadowOffsetOuter3",result:"shadowBlurOuter3",stdDeviation:"8"}),(0,O.jsx)("feColorMatrix",{in:"shadowBlurOuter3",result:"shadowMatrixOuter3",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"}),(0,O.jsxs)("feMerge",{children:[(0,O.jsx)("feMergeNode",{in:"shadowMatrixOuter1"}),(0,O.jsx)("feMergeNode",{in:"shadowMatrixOuter2"}),(0,O.jsx)("feMergeNode",{in:"shadowMatrixOuter3"})]})]})]}),(0,O.jsxs)("g",{fill:"none",fillRule:"evenodd",stroke:"none",strokeWidth:"1",children:[(0,O.jsxs)("g",{children:[(0,O.jsx)("use",{fill:"#000",filter:"url(#filter-2)",xlinkHref:"#path-1"}),(0,O.jsx)("use",{fill:"#F0F2F5",xlinkHref:"#path-1"})]}),(0,O.jsx)("path",{fill:"#FFF",d:"M26 0h55c5.523 0 10 4.477 10 10v8H26V0z"}),(0,O.jsx)("path",{fill:"#001529",d:"M10 0h19v72H10C4.477 72 0 67.523 0 62V10C0 4.477 4.477 0 10 0z"}),(0,O.jsx)("rect",{width:"14",height:"3",x:"5",y:"18",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"}),(0,O.jsx)("rect",{width:"14",height:"3",x:"5",y:"42",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"9",y:"24",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"9",y:"48",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"}),(0,O.jsx)("rect",{width:"9",height:"3",x:"9",y:"36",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"}),(0,O.jsx)("rect",{width:"14",height:"3",x:"9",y:"30",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"}),(0,O.jsx)("rect",{width:"14",height:"3",x:"9",y:"54",fill:"#D7DDE6",opacity:"0.2",rx:"1.5"})]})]})}var fo=e(64847),Pr=function(je){return(0,be.Z)((0,be.Z)({},"".concat(je.componentCls,"-handle"),{position:"fixed",insetBlockStart:"240px",insetInlineEnd:"0px",zIndex:0,display:"flex",alignItems:"center",justifyContent:"center",width:"48px",height:"48px",fontSize:"16px",textAlign:"center",backgroundColor:je.colorPrimary,borderEndStartRadius:je.borderRadiusLG,borderStartStartRadius:je.borderRadiusLG,"-webkit-backdropilter":"saturate(180%) blur(20px)",backdropFilter:"saturate(180%) blur(20px)",cursor:"pointer",pointerEvents:"auto"}),je.componentCls,{"&-content":{position:"relative",minHeight:"100%",color:je.colorText},"&-body-title":{marginBlock:je.marginXS,fontSize:"14px",lineHeight:"22px",color:je.colorTextHeading},"&-block-checkbox":{display:"flex",minHeight:42,gap:je.marginSM,"& &-item":{position:"relative",width:"44px",height:"36px",overflow:"hidden",borderRadius:"4px",boxShadow:je.boxShadow,cursor:"pointer",fontSize:56,lineHeight:"56px","&::before":{position:"absolute",insetBlockStart:0,insetInlineStart:0,width:"33%",height:"100%",content:"''"},"&::after":{position:"absolute",insetBlockStart:0,insetInlineStart:0,width:"100%",height:"25%",content:"''"},"&-realDark":{backgroundColor:"rgba(0, 21, 41, 0.85)","&::before":{backgroundColor:"rgba(0, 0, 0, 0.65)"},"&::after":{backgroundColor:"rgba(0, 0, 0, 0.85)"}},"&-light":{backgroundColor:"#fff","&::before":{backgroundColor:"#fff"},"&::after":{backgroundColor:"#fff"}},"&-dark,&-side":{backgroundColor:je.colorBgElevated,"&::before":{zIndex:"1",backgroundColor:"#001529"},"&::after":{backgroundColor:je.colorBgContainer}},"&-top":{backgroundColor:je.colorBgElevated,"&::before":{backgroundColor:"transparent"},"&::after":{backgroundColor:"#001529"}},"&-mix":{backgroundColor:je.colorBgElevated,"&::before":{backgroundColor:je.colorBgContainer},"&::after":{backgroundColor:"#001529"}}},"& &-selectIcon":{position:"absolute",insetInlineEnd:"6px",bottom:"4px",color:je.colorPrimary,fontWeight:"bold",fontSize:"14px",pointerEvents:"none",".action":{color:je.colorPrimary}},"& &-icon":{fontSize:56,lineHeight:"56px"}},"&-theme-color":{marginBlockStart:"16px",overflow:"hidden","& &-block":{float:"left",width:"20px",height:"20px",marginBlockStart:8,marginInlineEnd:8,color:"#fff",fontWeight:"bold",textAlign:"center",borderRadius:"2px",cursor:"pointer"}},"&-list":(0,be.Z)({},"li".concat(je.antCls,"-list-item"),{paddingInline:0,paddingBlock:8})})};function ea(Et){return(0,fo.Xj)("ProLayoutSettingDrawer",function(je){var vt=(0,ue.Z)((0,ue.Z)({},je),{},{componentCls:".".concat(Et)});return[Pr(vt)]})}var ma=function(je){var vt=je.children,Pt=je.hashId,zt=je.prefixCls,Jt=je.title;return(0,O.jsxs)("div",{style:{marginBlockEnd:12},children:[(0,O.jsx)("h3",{className:"".concat(zt,"-body-title ").concat(Pt).trim(),children:Jt}),vt]})},Ga=function(je){var vt={};return Object.keys(je).forEach(function(Pt){je[Pt]!==Ua.h[Pt]&&Pt!=="collapse"?vt[Pt]=je[Pt]:vt[Pt]=void 0,Pt.includes("Render")&&(vt[Pt]=je[Pt]===!1?!1:void 0)}),vt.menu=void 0,vt},Pe=function(){var je=function(Pt){var zt=Pt.id,Jt=(0,xa.e)();return Jt[zt]};return je},tt=function(je,vt,Pt){if((0,Bt.j)()){var zt={};Object.keys(je).forEach(function(cn){if(Ua.h[cn]||Ua.h[cn]===void 0){if(cn==="colorPrimary"){zt[cn]=(0,ja.tV)(je[cn]);return}zt[cn]=je[cn]}});var Jt=(0,Rt.T)({},vt,zt);delete Jt.menu,delete Jt.title,delete Jt.iconfontUrl,Pt==null||Pt(Jt)}},ne=function(je,vt){return(0,Bt.j)()?(0,ue.Z)((0,ue.Z)((0,ue.Z)({},Ua.h),vt||{}),je):Ua.h},Tt=function(je){return JSON.stringify((0,ba.Z)((0,ue.Z)((0,ue.Z)({},je),{},{colorPrimary:je.colorPrimary}),["colorWeak"]),null,2)},Zt=function(je){var vt=je.defaultSettings,Pt=vt===void 0?void 0:vt,zt=je.settings,Jt=zt===void 0?void 0:zt,cn=je.hideHintAlert,dr=je.hideCopyButton,jn=je.colorList,xr=jn===void 0?[{key:"techBlue",color:"#1677FF"},{key:"daybreak",color:"#1890ff"},{key:"dust",color:"#F5222D"},{key:"volcano",color:"#FA541C"},{key:"sunset",color:"#FAAD14"},{key:"cyan",color:"#13C2C2"},{key:"green",color:"#52C41A"},{key:"geekblue",color:"#2F54EB"},{key:"purple",color:"#722ED1"}]:jn,Gr=je.getContainer,br=je.onSettingChange,$a=je.enableDarkTheme,Ia=je.prefixCls,Za=Ia===void 0?"ant-pro":Ia,Va=je.pathname,Ka=Va===void 0?(0,Bt.j)()?window.location.pathname:"":Va,so=je.disableUrlParams,Na=so===void 0?!0:so,vo=je.themeOnly,no=je.drawerProps,So=(0,S.useRef)(!0),ho=(0,Ca.Z)(!1,{value:je.collapse,onChange:je.onCollapseChange}),Oo=(0,Le.Z)(ho,2),Ho=Oo[0],$o=Oo[1],Yo=(0,S.useState)((0,xa.G)()),Ci=(0,Le.Z)(Yo,2),bi=Ci[0],Ti=Ci[1],Yi=(0,On.l)({},{disabled:Na}),ji=(0,Le.Z)(Yi,2),Xo=ji[0],Xi=ji[1],Mi=(0,Ca.Z)(function(){return ne(Xo,Jt||Pt)},{value:Jt,onChange:br}),Vo=(0,Le.Z)(Mi,2),xo=Vo[0],Qo=Vo[1],Si=xo||{},_e=Si.navTheme,vn=Si.colorPrimary,Dn=Si.siderMenuType,Yr=Si.layout,aa=Si.colorWeak;(0,S.useEffect)(function(){var ga=function(){bi!==(0,xa.G)()&&Ti((0,xa.G)())};return(0,Bt.j)()?(tt(ne(Xo,Jt),xo,Qo),window.document.addEventListener("languagechange",ga,{passive:!0}),function(){return window.document.removeEventListener("languagechange",ga)}):function(){return null}},[]),(0,S.useEffect)(function(){(0,xt.n)(Wn.Z,"5.0.0")<0&&qn.ZP.config({theme:{primaryColor:xo.colorPrimary}})},[xo.colorPrimary,xo.navTheme]);var nn=function(Ea,Ha){var qa={};if(qa[Ea]=Ha,Ea==="layout"&&(qa.contentWidth=Ha==="top"?"Fixed":"Fluid"),Ea==="layout"&&Ha!=="mix"&&(qa.splitMenus=!1),Ea==="layout"&&Ha==="mix"&&(qa.navTheme="light"),Ea==="colorWeak"&&Ha===!0){var Eo=document.querySelector("body");Eo&&(Eo.dataset.prosettingdrawer=Eo.style.filter,Eo.style.filter="invert(80%)")}if(Ea==="colorWeak"&&Ha===!1){var No=document.querySelector("body");No&&(No.style.filter=No.dataset.prosettingdrawer||"none",delete No.dataset.prosettingdrawer)}delete qa.menu,delete qa.title,delete qa.iconfontUrl,delete qa.logo,delete qa.pwa,Qo((0,ue.Z)((0,ue.Z)({},xo),qa))},Xr=Pe();(0,S.useEffect)(function(){if((0,Bt.j)()&&!Na){if(So.current){So.current=!1;return}var ga=new URLSearchParams(window.location.search),Ea=Object.fromEntries(ga.entries()),Ha=Ga((0,ue.Z)((0,ue.Z)({},Ea),xo));delete Ha.logo,delete Ha.menu,delete Ha.title,delete Ha.iconfontUrl,delete Ha.pwa,Xi(Ha)}},[Xi,xo,Xo,Ka,Na]);var Jr="".concat(Za,"-setting-drawer"),Ba=ea(Jr),qr=Ba.wrapSSR,_r=Ba.hashId,wa=(0,ln.X)(Ho);return qr((0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)("div",{className:"".concat(Jr,"-handle ").concat(_r).trim(),onClick:function(){return $o(!Ho)},style:{width:48,height:48},children:Ho?(0,O.jsx)(In.Z,{style:{color:"#fff",fontSize:20}}):(0,O.jsx)(V.Z,{style:{color:"#fff",fontSize:20}})}),(0,O.jsx)(vr.Z,(0,ue.Z)((0,ue.Z)((0,ue.Z)({},wa),{},{width:300,onClose:function(){return $o(!1)},closable:!1,placement:"right",getContainer:Gr,style:{zIndex:999}},no),{},{children:(0,O.jsxs)("div",{className:"".concat(Jr,"-drawer-content ").concat(_r).trim(),children:[(0,O.jsx)(ma,{title:Xr({id:"app.setting.pagestyle",defaultMessage:"Page style setting"}),hashId:_r,prefixCls:Jr,children:(0,O.jsx)(Xa,{hashId:_r,prefixCls:Jr,list:[{key:"light",title:Xr({id:"app.setting.pagestyle.light",defaultMessage:"\u4EAE\u8272\u83DC\u5355\u98CE\u683C"})},{key:"realDark",title:Xr({id:"app.setting.pagestyle.realdark",defaultMessage:"\u6697\u8272\u83DC\u5355\u98CE\u683C"})}].filter(function(ga){return!(ga.key==="dark"&&xo.layout==="mix"||ga.key==="realDark"&&!$a)}),value:_e,configType:"theme",onChange:function(Ea){return nn("navTheme",Ea)}},"navTheme")}),xr!==!1&&(0,O.jsx)(ma,{hashId:_r,title:Xr({id:"app.setting.themecolor",defaultMessage:"Theme color"}),prefixCls:Jr,children:(0,O.jsx)(Ur,{hashId:_r,prefixCls:Jr,colorList:xr,value:(0,ja.tV)(vn),formatMessage:Xr,onChange:function(Ea){return nn("colorPrimary",Ea)}})}),!vo&&(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(jr.Z,{}),(0,O.jsx)(ma,{hashId:_r,prefixCls:Jr,title:Xr({id:"app.setting.navigationmode"}),children:(0,O.jsx)(Xa,{prefixCls:Jr,value:Yr,hashId:_r,configType:"layout",list:[{key:"side",title:Xr({id:"app.setting.sidemenu"})},{key:"top",title:Xr({id:"app.setting.topmenu"})},{key:"mix",title:Xr({id:"app.setting.mixmenu"})}],onChange:function(Ea){return nn("layout",Ea)}},"layout")}),xo.layout=="side"||xo.layout=="mix"?(0,O.jsx)(ma,{hashId:_r,prefixCls:Jr,title:Xr({id:"app.setting.sidermenutype"}),children:(0,O.jsx)(Xa,{prefixCls:Jr,value:Dn,hashId:_r,configType:"siderMenuType",list:[{key:"sub",icon:(0,O.jsx)(ha,{}),title:Xr({id:"app.setting.sidermenutype-sub"})},{key:"group",icon:(0,O.jsx)(Sa,{}),title:Xr({id:"app.setting.sidermenutype-group"})}],onChange:function(Ea){return nn("siderMenuType",Ea)}},"siderMenuType")}):null,(0,O.jsx)(za,{prefixCls:Jr,hashId:_r,settings:xo,changeSetting:nn}),(0,O.jsx)(jr.Z,{}),(0,O.jsx)(ma,{hashId:_r,prefixCls:Jr,title:Xr({id:"app.setting.regionalsettings"}),children:(0,O.jsx)(Er,{hashId:_r,prefixCls:Jr,settings:xo,changeSetting:nn})}),(0,O.jsx)(jr.Z,{}),(0,O.jsx)(ma,{hashId:_r,prefixCls:Jr,title:Xr({id:"app.setting.othersettings"}),children:(0,O.jsx)(ur.Z,{className:"".concat(Jr,"-list ").concat(_r).trim(),split:!1,size:"small",renderItem:Ra,dataSource:[{title:Xr({id:"app.setting.weakmode"}),action:(0,O.jsx)(zr.Z,{size:"small",className:"color-weak",checked:!!aa,onChange:function(Ea){nn("colorWeak",Ea)}})}]})}),cn&&dr?null:(0,O.jsx)(jr.Z,{}),cn?null:(0,O.jsx)($r.Z,{type:"warning",message:Xr({id:"app.setting.production.hint"}),icon:(0,O.jsx)(Nn.Z,{}),showIcon:!0,style:{marginBlockEnd:16}}),dr?null:(0,O.jsx)(ua.ZP,{block:!0,icon:(0,O.jsx)(Xt.Z,{}),style:{marginBlockEnd:24},onClick:(0,ar.Z)((0,Yt.Z)().mark(function ga(){return(0,Yt.Z)().wrap(function(Ha){for(;;)switch(Ha.prev=Ha.next){case 0:return Ha.prev=0,Ha.next=3,navigator.clipboard.writeText(Tt(xo));case 3:zn.ZP.success(Xr({id:"app.setting.copyinfo"})),Ha.next=8;break;case 6:Ha.prev=6,Ha.t0=Ha.catch(0);case 8:case"end":return Ha.stop()}},ga,null,[[0,6]])})),children:Xr({id:"app.setting.copy"})})]})]})}))]}))},Fn=e(67610),Xn=function(Et){return Et[Et.SILENT=0]="SILENT",Et[Et.WARN_MESSAGE=1]="WARN_MESSAGE",Et[Et.ERROR_MESSAGE=2]="ERROR_MESSAGE",Et[Et.NOTIFICATION=3]="NOTIFICATION",Et[Et.REDIRECT=9]="REDIRECT",Et}(Xn||{}),Tr={errorConfig:{errorThrower:function(je){console.log("errorThrower");var vt=je,Pt=vt.success,zt=vt.data,Jt=vt.errorCode,cn=vt.errorMessage,dr=vt.showType;if(!Pt){var jn=new Error(cn);throw jn.name="BizError",jn.info={errorCode:Jt,errorMessage:cn,showType:dr,data:zt},jn}},errorHandler:function(je,vt){if(vt!=null&&vt.skipErrorHandler)throw je;if(je.name==="BizError"){var Pt=je.info;if(Pt){var zt=Pt.errorMessage,Jt=Pt.errorCode;switch(Pt.showType){case Xn.SILENT:break;case Xn.WARN_MESSAGE:zn.ZP.warning(zt);break;case Xn.ERROR_MESSAGE:zn.ZP.error(zt);break;case Xn.NOTIFICATION:Ln.ZP.open({description:zt,message:Jt});break;case Xn.REDIRECT:break;default:zn.ZP.error(zt)}}}else je.response?zn.ZP.error("Response status:".concat(je.response.status)):je.request?zn.ZP.error("None response! Please retry."):zn.ZP.error("Request error, please retry.")}},requestInterceptors:[function(Et){var je,vt=Et==null||(je=Et.url)===null||je===void 0?void 0:je.concat("?token = 123");return h()(h()({},Et),{},{url:vt})}],responseInterceptors:[function(Et){var je=Et,vt=je.data;return(vt==null?void 0:vt.success)===!1&&zn.ZP.error("\u8BF7\u6C42\u5931\u8D25\uFF01"),Et}]},Kr=e(65359),Fa=null,wr=function(){var Et=g()(m()().mark(function je(){var vt,Pt,zt,Jt,cn;return m()().wrap(function(jn){for(;;)switch(jn.prev=jn.next){case 0:(0,pt.dP)(),(0,lt.AP)(null),vt=window.location,Pt=vt.search,zt=vt.pathname,Jt=new URL(window.location.href).searchParams,cn=Jt.get("redirect"),console.log("redirect",window.location.pathname,cn),window.location.pathname!=="/shihezi/user/login"&&!cn&&T.history.replace({pathname:"/user/login",search:(0,Tn.stringify)({redirect:zt.replace("/shihezi","")+Pt})});case 7:case"end":return jn.stop()}},je)}));return function(){return Et.apply(this,arguments)}}();function Mr(){return Ar.apply(this,arguments)}function Ar(){return Ar=g()(m()().mark(function Et(){var je,vt,Pt;return m()().wrap(function(Jt){for(;;)switch(Jt.prev=Jt.next){case 0:if(je=function(){var cn=g()(m()().mark(function dr(){var jn,xr;return m()().wrap(function(br){for(;;)switch(br.prev=br.next){case 0:return br.prev=0,br.next=3,(0,lt.bG)({skipErrorHandler:!0});case 3:return xr=br.sent,xr.user.avatar===""&&(xr.user.avatar="https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png"),br.abrupt("return",h()(h()({},xr.user),{},{permissions:xr.permissions,roles:xr.roles,userType:(jn=xr.user.roles)===null||jn===void 0||(jn=jn[0])===null||jn===void 0?void 0:jn.roleId}));case 8:br.prev=8,br.t0=br.catch(0),console.log(br.t0),T.history.push(Kr.d.LOGIN);case 12:return br.abrupt("return",void 0);case 13:case"end":return br.stop()}},dr,null,[[0,8]])}));return function(){return cn.apply(this,arguments)}}(),vt=T.history.location,vt.pathname===Kr.d.LOGIN){Jt.next=7;break}return Jt.next=5,je();case 5:return Pt=Jt.sent,Jt.abrupt("return",{fetchUserInfo:je,currentUser:Pt,settings:Fn.Z});case 7:return Jt.abrupt("return",{fetchUserInfo:je,settings:Fn.Z});case 8:case"end":return Jt.stop()}},Et)})),Ar.apply(this,arguments)}var pa=function(je){var vt,Pt,zt=je.initialState,Jt=je.setInitialState;return h()({actionsRender:function(){return[(0,O.jsx)(E,{},"SelectLang")]},avatarProps:{src:zt==null||(vt=zt.currentUser)===null||vt===void 0?void 0:vt.avatar,title:(0,O.jsx)(Wt,{}),render:function(dr,jn){return(0,O.jsx)(wn,{menu:"True",children:jn})}},waterMarkProps:{},menu:{locale:!1,params:{userId:zt==null||(Pt=zt.currentUser)===null||Pt===void 0?void 0:Pt.userId},request:function(){var cn=g()(m()().mark(function jn(){var xr;return m()().wrap(function(br){for(;;)switch(br.prev=br.next){case 0:if(zt!=null&&(xr=zt.currentUser)!==null&&xr!==void 0&&xr.userId){br.next=2;break}return br.abrupt("return",[]);case 2:return br.abrupt("return",(0,lt.W5)());case 3:case"end":return br.stop()}},jn)}));function dr(){return cn.apply(this,arguments)}return dr}()},footerRender:function(){return(0,O.jsx)(x.Z,{})},onPageChange:function(){var dr=T.history.location;!(zt!=null&&zt.currentUser)&&dr.pathname!==Kr.d.LOGIN&&T.history.push(Kr.d.LOGIN)},layoutBgImgList:[{src:"https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/D2LWSqNny4sAAAAAAAAAAAAAFl94AQBr",left:85,bottom:100,height:"303px"},{src:"https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/C2TWRpJpiC0AAAAAAAAAAAAAFl94AQBr",bottom:-68,right:-45,height:"303px"},{src:"https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/F6vSTbj8KpYAAAAAAAAAAAAAFl94AQBr",bottom:0,left:0,width:"331px"}],pure:!1,menuHeaderRender:void 0,childrenRender:function(dr){return(0,O.jsxs)(O.Fragment,{children:[dr,(0,O.jsx)(Zt,{disableUrlParams:!0,enableDarkTheme:!0,settings:zt==null?void 0:zt.settings,onSettingChange:function(xr){Jt(function(Gr){return h()(h()({},Gr),{},{settings:xr})})}})]})}},zt==null?void 0:zt.settings)};function Ge(Et){return Ct.apply(this,arguments)}function Ct(){return Ct=g()(m()().mark(function Et(je){var vt,Pt,zt;return m()().wrap(function(cn){for(;;)switch(cn.prev=cn.next){case 0:vt=je.clientRoutes,Pt=je.location,zt=(0,lt.W5)(),zt===null&&Pt.pathname!==Kr.d.LOGIN&&console.log("refresh");case 3:case"end":return cn.stop()}},Et)})),Ct.apply(this,arguments)}function wt(Et){return Ft.apply(this,arguments)}function Ft(){return Ft=g()(m()().mark(function Et(je){var vt;return m()().wrap(function(zt){for(;;)switch(zt.prev=zt.next){case 0:vt=je.routes,(0,lt.n9)(vt);case 2:case"end":return zt.stop()}},Et)})),Ft.apply(this,arguments)}function en(Et){return kn.apply(this,arguments)}function kn(){return kn=g()(m()().mark(function Et(je){var vt;return m()().wrap(function(zt){for(;;)switch(zt.prev=zt.next){case 0:if(console.log("render get routers",je),vt=(0,pt.hP)(),!(!vt||(vt==null?void 0:vt.length)===0)){zt.next=5;break}return je(),zt.abrupt("return");case 5:return zt.next=7,(0,lt.kw)().then(function(Jt){console.log("render get routers",123),(0,lt.AP)(Jt),je()});case 7:case"end":return zt.stop()}},Et)})),kn.apply(this,arguments)}var lr=5*60*1e3,gr=h()(h()({},Tr),{},{baseURL:"http://36.105.163.21:30081/api/ks",requestInterceptors:[function(Et,je){var vt=je.headers?je.headers:[];console.log("request ====>:",Et);var Pt=vt.Authorization,zt=vt.isToken;if(!Pt&&zt!==!1){var Jt=(0,pt.Mi)();if(Jt){var cn=Number(Jt)-new Date().getTime(),dr=(0,pt.YV)();if(cn-1&&(Nt=setTimeout(function(){P.delete($e)},Je)),P.set($e,{data:Ye,timer:Nt,startTime:new Date().getTime()})},_=function($e){var Je=P.get($e);return{data:Je==null?void 0:Je.data,startTime:Je==null?void 0:Je.startTime}},ae=function(De,$e){var Je=typeof Symbol=="function"&&De[Symbol.iterator];if(!Je)return De;var Ye=Je.call(De),ct,Nt=[],Kt;try{for(;($e===void 0||$e-- >0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},J=function(){for(var De=[],$e=0;$e0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},ge=function(){for(var De=[],$e=0;$e0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},rt=function(){for(var De=[],$e=0;$e0){var Zr=At&&((Sr=_(At))===null||Sr===void 0?void 0:Sr.startTime)||0;In===-1||new Date().getTime()-Zr<=In||Object.values(xa).forEach(function(Ur){Ur.refresh()})}else da.current.apply(da,rt(ye))},[]);var za=(0,S.useCallback)(function(){Object.values(Pa.current).forEach(function(Sr){Sr.unmount()}),Wn.current=ke,ja({}),Pa.current={}},[ja]);k(function(){Kt||Object.values(Pa.current).forEach(function(Sr){Sr.refresh()})},rt(ct)),(0,S.useEffect)(function(){return function(){Object.values(Pa.current).forEach(function(Sr){Sr.unmount()})}},[]);var Er=(0,S.useCallback)(function(Sr){return function(){console.warn("You should't call "+Sr+" when service not executed once.")}},[]);return Ae(Ae({loading:xt&&!Kt||pr,data:Bt,error:void 0,params:[],cancel:Er("cancel"),refresh:Er("refresh"),mutate:Er("mutate")},xa[Wn.current]||{}),{run:Xa,fetches:xa,reset:za})}var Ce=Fe,q=function(){return q=Object.assign||function(De){for(var $e,Je=1,Ye=arguments.length;Je0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},M=function(){for(var De=[],$e=0;$e0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},D=function(){for(var De=[],$e=0;$eOn&&(xt=Math.max(1,On)),Wt({current:xt,pageSize:ln})},[At,Wt]),ar=(0,S.useCallback)(function(Bt){Yt(Bt,ye)},[Yt,ye]),In=(0,S.useCallback)(function(Bt){Yt(fe,Bt)},[Yt,fe]),Nn=(0,S.useRef)(ar);Nn.current=ar,k(function(){$e.manual||Nn.current(1)},D(Kt));var Xt=(0,S.useCallback)(function(Bt,Rt,xt){Wt({current:Bt.current,pageSize:Bt.pageSize||ct,filters:Rt,sorter:xt})},[Lt,lt,Wt]);return U({loading:mn,data:Pn,params:Kn,run:pr,pagination:{current:fe,pageSize:ye,total:At,totalPage:wn,onChange:Yt,changeCurrent:ar,changePageSize:In},tableProps:{dataSource:(Pn==null?void 0:Pn.list)||[],loading:mn,onChange:Xt,pagination:{current:fe,pageSize:ye,total:At}},sorter:lt,filters:Lt},Hn)}var te=me,ie=S.createContext({});ie.displayName="UseRequestConfigContext";var xe=ie,Te=function(){return Te=Object.assign||function(De){for(var $e,Je=1,Ye=arguments.length;Je0)&&!(ct=Ye.next()).done;)Nt.push(ct.value)}catch(Zn){Kt={error:Zn}}finally{try{ct&&!ct.done&&(Je=Ye.return)&&Je.call(Ye)}finally{if(Kt)throw Kt.error}}return Nt},Ue=function(){for(var De=[],$e=0;$e1&&arguments[1]!==void 0?arguments[1]:{};return dt(De,g()({formatResult:function(Ye){return Ye==null?void 0:Ye.data},requestMethod:function(Ye){if(typeof Ye=="string")return Ve(Ye);if(m()(Ye)==="object"){var ct=Ye.url,Nt=h()(Ye,It);return Ve(ct,Nt)}throw new Error("request options error")}},$e))}var Ie,Ze,st=function(){return Ze||(Ze=(0,it.We)().applyPlugins({key:"request",type:_n.modify,initialValue:{}}),Ze)},oe=function(){var $e,Je;if(Ie)return Ie;var Ye=st();return Ie=T().create(Ye),Ye==null||($e=Ye.requestInterceptors)===null||$e===void 0||$e.forEach(function(ct){ct instanceof Array?Ie.interceptors.request.use(function(){var Nt=u()(s()().mark(function Kt(Zn){var Tn,bn,Pn,Kn;return s()().wrap(function(mn){for(;;)switch(mn.prev=mn.next){case 0:if(Tn=Zn.url,ct[0].length!==2){mn.next=8;break}return mn.next=4,ct[0](Tn,Zn);case 4:return bn=mn.sent,Pn=bn.url,Kn=bn.options,mn.abrupt("return",g()(g()({},Kn),{},{url:Pn}));case 8:return mn.abrupt("return",ct[0](Zn));case 9:case"end":return mn.stop()}},Kt)}));return function(Kt){return Nt.apply(this,arguments)}}(),ct[1]):Ie.interceptors.request.use(function(){var Nt=u()(s()().mark(function Kt(Zn){var Tn,bn,Pn,Kn;return s()().wrap(function(mn){for(;;)switch(mn.prev=mn.next){case 0:if(Tn=Zn.url,ct.length!==2){mn.next=8;break}return mn.next=4,ct(Tn,Zn);case 4:return bn=mn.sent,Pn=bn.url,Kn=bn.options,mn.abrupt("return",g()(g()({},Kn),{},{url:Pn}));case 8:return mn.abrupt("return",ct(Zn));case 9:case"end":return mn.stop()}},Kt)}));return function(Kt){return Nt.apply(this,arguments)}}())}),Ye==null||(Je=Ye.responseInterceptors)===null||Je===void 0||Je.forEach(function(ct){ct instanceof Array?Ie.interceptors.response.use(ct[0],ct[1]):Ie.interceptors.response.use(ct)}),Ie.interceptors.response.use(function(ct){var Nt,Kt=ct.data;return(Kt==null?void 0:Kt.success)===!1&&Ye!==null&&Ye!==void 0&&(Nt=Ye.errorConfig)!==null&&Nt!==void 0&&Nt.errorThrower&&Ye.errorConfig.errorThrower(Kt),ct}),Ie},Ve=function($e){var Je=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{method:"GET"},Ye=oe(),ct=st(),Nt=Je.getResponse,Kt=Nt===void 0?!1:Nt,Zn=Je.requestInterceptors,Tn=Je.responseInterceptors,bn=Zn==null?void 0:Zn.map(function(Kn){return Kn instanceof Array?Ye.interceptors.request.use(function(){var pr=u()(s()().mark(function mn(Hn){var ze,he,fe,we;return s()().wrap(function(Xe){for(;;)switch(Xe.prev=Xe.next){case 0:if(ze=Hn.url,Kn[0].length!==2){Xe.next=8;break}return Xe.next=4,Kn[0](ze,Hn);case 4:return he=Xe.sent,fe=he.url,we=he.options,Xe.abrupt("return",g()(g()({},we),{},{url:fe}));case 8:return Xe.abrupt("return",Kn[0](Hn));case 9:case"end":return Xe.stop()}},mn)}));return function(mn){return pr.apply(this,arguments)}}(),Kn[1]):Ye.interceptors.request.use(function(){var pr=u()(s()().mark(function mn(Hn){var ze,he,fe,we;return s()().wrap(function(Xe){for(;;)switch(Xe.prev=Xe.next){case 0:if(ze=Hn.url,Kn.length!==2){Xe.next=8;break}return Xe.next=4,Kn(ze,Hn);case 4:return he=Xe.sent,fe=he.url,we=he.options,Xe.abrupt("return",g()(g()({},we),{},{url:fe}));case 8:return Xe.abrupt("return",Kn(Hn));case 9:case"end":return Xe.stop()}},mn)}));return function(mn){return pr.apply(this,arguments)}}())}),Pn=Tn==null?void 0:Tn.map(function(Kn){return Kn instanceof Array?Ye.interceptors.response.use(Kn[0],Kn[1]):Ye.interceptors.response.use(Kn)});return new Promise(function(Kn,pr){Ye.request(g()(g()({},Je),{},{url:$e})).then(function(mn){bn==null||bn.forEach(function(Hn){Ye.interceptors.request.eject(Hn)}),Pn==null||Pn.forEach(function(Hn){Ye.interceptors.response.eject(Hn)}),Kn(Kt?mn:mn.data)}).catch(function(mn){bn==null||bn.forEach(function(he){Ye.interceptors.request.eject(he)}),Pn==null||Pn.forEach(function(he){Ye.interceptors.response.eject(he)});try{var Hn,ze=ct==null||(Hn=ct.errorConfig)===null||Hn===void 0?void 0:Hn.errorHandler;ze&&ze(mn,Je,ct)}catch(he){pr(he)}pr(mn)})})},mt=e(58096),gt=e(74817),Se=e(96974),He=e(55648);function Qe(){return Qe=Object.assign||function(De){for(var $e=1;$e=0)&&(Je[ct]=De[ct]);return Je}const Le=["onClick","reloadDocument","replace","state","target","to"],ut=null;function bt(De,$e){if(!De){typeof console!="undefined"&&console.warn($e);try{throw new Error($e)}catch(Je){}}}function Mt(De){let{basename:$e,children:Je,window:Ye}=De,ct=useRef();ct.current==null&&(ct.current=createBrowserHistory({window:Ye}));let Nt=ct.current,[Kt,Zn]=useState({action:Nt.action,location:Nt.location});return useLayoutEffect(()=>Nt.listen(Zn),[Nt]),createElement(Router,{basename:$e,children:Je,location:Kt.location,navigationType:Kt.action,navigator:Nt})}function Dt(De){let{basename:$e,children:Je,window:Ye}=De,ct=useRef();ct.current==null&&(ct.current=createHashHistory({window:Ye}));let Nt=ct.current,[Kt,Zn]=useState({action:Nt.action,location:Nt.location});return useLayoutEffect(()=>Nt.listen(Zn),[Nt]),createElement(Router,{basename:$e,children:Je,location:Kt.location,navigationType:Kt.action,navigator:Nt})}function qt(De){let{basename:$e,children:Je,history:Ye}=De;const[ct,Nt]=useState({action:Ye.action,location:Ye.location});return useLayoutEffect(()=>Ye.listen(Nt),[Ye]),createElement(Router,{basename:$e,children:Je,location:ct.location,navigationType:ct.action,navigator:Ye})}function Sn(De){return!!(De.metaKey||De.altKey||De.ctrlKey||De.shiftKey)}const tn=(0,S.forwardRef)(function($e,Je){let{onClick:Ye,reloadDocument:ct,replace:Nt=!1,state:Kt,target:Zn,to:Tn}=$e,bn=yt($e,Le),Pn=(0,Se.oQ)(Tn),Kn=gn(Tn,{replace:Nt,state:Kt,target:Zn});function pr(mn){Ye&&Ye(mn),!mn.defaultPrevented&&!ct&&Kn(mn)}return(0,S.createElement)("a",Qe({},bn,{href:Pn,onClick:pr,ref:Je,target:Zn}))}),Ut=null;function gn(De,$e){let{target:Je,replace:Ye,state:ct}=$e===void 0?{}:$e,Nt=(0,Se.s0)(),Kt=(0,Se.TH)(),Zn=(0,Se.WU)(De);return(0,S.useCallback)(Tn=>{if(Tn.button===0&&(!Je||Je==="_self")&&!Sn(Tn)){Tn.preventDefault();let bn=!!Ye||(0,He.Ep)(Kt)===(0,He.Ep)(Zn);Nt(De,{replace:bn,state:ct})}},[Kt,Nt,Zn,Ye,ct,Je,De])}function on(De){let $e=useRef(yn(De)),Je=useLocation(),Ye=useMemo(()=>{let Kt=yn(Je.search);for(let Zn of $e.current.keys())Kt.has(Zn)||$e.current.getAll(Zn).forEach(Tn=>{Kt.append(Zn,Tn)});return Kt},[Je.search]),ct=useNavigate(),Nt=useCallback((Kt,Zn)=>{ct("?"+yn(Kt),Zn)},[ct]);return[Ye,Nt]}function yn(De){return De===void 0&&(De=""),new URLSearchParams(typeof De=="string"||Array.isArray(De)||De instanceof URLSearchParams?De:Object.keys(De).reduce(($e,Je)=>{let Ye=De[Je];return $e.concat(Array.isArray(Ye)?Ye.map(ct=>[Je,ct]):[[Je,Ye]])},[]))}var An=e(34162),Bn=e(48804);function zn(De,$e){var Je=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},Ye=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};if(typeof IntersectionObserver!="function")return null;var ct=S.useRef(typeof IntersectionObserver=="function"),Nt=S.useRef(null);return S.useEffect(function(){if(!(!De.current||!ct.current||Ye.disabled))return Nt.current=new IntersectionObserver(function(Kt){var Zn=(0,Bn.Z)(Kt,1),Tn=Zn[0];$e(Tn)},Je),Nt.current.observe(De.current),function(){var Kt;(Kt=Nt.current)===null||Kt===void 0||Kt.disconnect()}},[$e,Je,Ye.disabled,De]),Nt.current}var Ln=["prefetch"];function fr(De){var $e=S.useRef(null);return S.useEffect(function(){De&&(typeof De=="function"?De($e.current):De.current=$e.current)}),$e}var qn=S.forwardRef(function(De,$e){var Je,Ye=De.prefetch,ct=(0,gt.Z)(De,Ln),Nt=typeof window!="undefined"&&window.__umi_route_prefetch__||{defaultPrefetch:"none",defaultPrefetchTimeout:50},Kt=Nt.defaultPrefetch,Zn=Nt.defaultPrefetchTimeout,Tn=(Ye===!0?"intent":Ye===!1?"none":Ye)||Kt;if(!["intent","render","viewport","none"].includes(Tn))throw new Error("Invalid prefetch value ".concat(Tn," found in Link component"));var bn=(0,An.Ov)(),Pn=typeof De.to=="string"?De.to:(Je=De.to)===null||Je===void 0?void 0:Je.pathname,Kn=S.useRef(!1),pr=fr($e),mn=function(he){if(Tn==="intent"){var fe=he.target||{};fe.preloadTimeout||(fe.preloadTimeout=setTimeout(function(){var we;fe.preloadTimeout=null,(we=bn.preloadRoute)===null||we===void 0||we.call(bn,Pn)},De.prefetchTimeout||Zn))}},Hn=function(he){if(Tn==="intent"){var fe=he.target||{};fe.preloadTimeout&&(clearTimeout(fe.preloadTimeout),fe.preloadTimeout=null)}};return(0,S.useLayoutEffect)(function(){if(Tn==="render"&&!Kn.current){var ze;(ze=bn.preloadRoute)===null||ze===void 0||ze.call(bn,Pn),Kn.current=!0}},[Tn,Pn]),zn(pr,function(ze){if(ze!=null&&ze.isIntersecting){var he;(he=bn.preloadRoute)===null||he===void 0||he.call(bn,Pn)}},{rootMargin:"100px"},{disabled:Tn!=="viewport"}),Pn?S.createElement(tn,(0,mt.Z)({onMouseEnter:mn,onMouseLeave:Hn,ref:pr},ct),De.children):null}),Jn=e(47388);function qe(De){"@babel/helpers - typeof";return qe=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function($e){return typeof $e}:function($e){return $e&&typeof Symbol=="function"&&$e.constructor===Symbol&&$e!==Symbol.prototype?"symbol":typeof $e},qe(De)}function et(){"use strict";et=function(){return $e};var De,$e={},Je=Object.prototype,Ye=Je.hasOwnProperty,ct=Object.defineProperty||function(Bt,Rt,xt){Bt[Rt]=xt.value},Nt=typeof Symbol=="function"?Symbol:{},Kt=Nt.iterator||"@@iterator",Zn=Nt.asyncIterator||"@@asyncIterator",Tn=Nt.toStringTag||"@@toStringTag";function bn(Bt,Rt,xt){return Object.defineProperty(Bt,Rt,{value:xt,enumerable:!0,configurable:!0,writable:!0}),Bt[Rt]}try{bn({},"")}catch(Bt){bn=function(xt,ln,On){return xt[ln]=On}}function Pn(Bt,Rt,xt,ln){var On=Rt&&Rt.prototype instanceof fe?Rt:fe,Wn=Object.create(On.prototype),vr=new Nn(ln||[]);return ct(Wn,"_invoke",{value:wn(Bt,xt,vr)}),Wn}function Kn(Bt,Rt,xt){try{return{type:"normal",arg:Bt.call(Rt,xt)}}catch(ln){return{type:"throw",arg:ln}}}$e.wrap=Pn;var pr="suspendedStart",mn="suspendedYield",Hn="executing",ze="completed",he={};function fe(){}function we(){}function ye(){}var Xe={};bn(Xe,Kt,function(){return this});var lt=Object.getPrototypeOf,pt=lt&<(lt(Xt([])));pt&&pt!==Je&&Ye.call(pt,Kt)&&(Xe=pt);var Lt=ye.prototype=fe.prototype=Object.create(Xe);function Wt(Bt){["next","throw","return"].forEach(function(Rt){bn(Bt,Rt,function(xt){return this._invoke(Rt,xt)})})}function At(Bt,Rt){function xt(On,Wn,vr,jr){var ur=Kn(Bt[On],Bt,Wn);if(ur.type!=="throw"){var zr=ur.arg,$r=zr.value;return $r&&qe($r)=="object"&&Ye.call($r,"__await")?Rt.resolve($r.__await).then(function(ua){xt("next",ua,vr,jr)},function(ua){xt("throw",ua,vr,jr)}):Rt.resolve($r).then(function(ua){zr.value=ua,vr(zr)},function(ua){return xt("throw",ua,vr,jr)})}jr(ur.arg)}var ln;ct(this,"_invoke",{value:function(Wn,vr){function jr(){return new Rt(function(ur,zr){xt(Wn,vr,ur,zr)})}return ln=ln?ln.then(jr,jr):jr()}})}function wn(Bt,Rt,xt){var ln=pr;return function(On,Wn){if(ln===Hn)throw new Error("Generator is already running");if(ln===ze){if(On==="throw")throw Wn;return{value:De,done:!0}}for(xt.method=On,xt.arg=Wn;;){var vr=xt.delegate;if(vr){var jr=Yt(vr,xt);if(jr){if(jr===he)continue;return jr}}if(xt.method==="next")xt.sent=xt._sent=xt.arg;else if(xt.method==="throw"){if(ln===pr)throw ln=ze,xt.arg;xt.dispatchException(xt.arg)}else xt.method==="return"&&xt.abrupt("return",xt.arg);ln=Hn;var ur=Kn(Bt,Rt,xt);if(ur.type==="normal"){if(ln=xt.done?ze:mn,ur.arg===he)continue;return{value:ur.arg,done:xt.done}}ur.type==="throw"&&(ln=ze,xt.method="throw",xt.arg=ur.arg)}}}function Yt(Bt,Rt){var xt=Rt.method,ln=Bt.iterator[xt];if(ln===De)return Rt.delegate=null,xt==="throw"&&Bt.iterator.return&&(Rt.method="return",Rt.arg=De,Yt(Bt,Rt),Rt.method==="throw")||xt!=="return"&&(Rt.method="throw",Rt.arg=new TypeError("The iterator does not provide a '"+xt+"' method")),he;var On=Kn(ln,Bt.iterator,Rt.arg);if(On.type==="throw")return Rt.method="throw",Rt.arg=On.arg,Rt.delegate=null,he;var Wn=On.arg;return Wn?Wn.done?(Rt[Bt.resultName]=Wn.value,Rt.next=Bt.nextLoc,Rt.method!=="return"&&(Rt.method="next",Rt.arg=De),Rt.delegate=null,he):Wn:(Rt.method="throw",Rt.arg=new TypeError("iterator result is not an object"),Rt.delegate=null,he)}function ar(Bt){var Rt={tryLoc:Bt[0]};1 in Bt&&(Rt.catchLoc=Bt[1]),2 in Bt&&(Rt.finallyLoc=Bt[2],Rt.afterLoc=Bt[3]),this.tryEntries.push(Rt)}function In(Bt){var Rt=Bt.completion||{};Rt.type="normal",delete Rt.arg,Bt.completion=Rt}function Nn(Bt){this.tryEntries=[{tryLoc:"root"}],Bt.forEach(ar,this),this.reset(!0)}function Xt(Bt){if(Bt||Bt===""){var Rt=Bt[Kt];if(Rt)return Rt.call(Bt);if(typeof Bt.next=="function")return Bt;if(!isNaN(Bt.length)){var xt=-1,ln=function On(){for(;++xt=0;--On){var Wn=this.tryEntries[On],vr=Wn.completion;if(Wn.tryLoc==="root")return ln("end");if(Wn.tryLoc<=this.prev){var jr=Ye.call(Wn,"catchLoc"),ur=Ye.call(Wn,"finallyLoc");if(jr&&ur){if(this.prev=0;--ln){var On=this.tryEntries[ln];if(On.tryLoc<=this.prev&&Ye.call(On,"finallyLoc")&&this.prev=0;--xt){var ln=this.tryEntries[xt];if(ln.finallyLoc===Rt)return this.complete(ln.completion,ln.afterLoc),In(ln),he}},catch:function(Rt){for(var xt=this.tryEntries.length-1;xt>=0;--xt){var ln=this.tryEntries[xt];if(ln.tryLoc===Rt){var On=ln.completion;if(On.type==="throw"){var Wn=On.arg;In(ln)}return Wn}}throw new Error("illegal catch attempt")},delegateYield:function(Rt,xt,ln){return this.delegate={iterator:Xt(Rt),resultName:xt,nextLoc:ln},this.method==="next"&&(this.arg=De),he}},$e}function rn(De,$e){if(qe(De)!="object"||!De)return De;var Je=De[Symbol.toPrimitive];if(Je!==void 0){var Ye=Je.call(De,$e||"default");if(qe(Ye)!="object")return Ye;throw new TypeError("@@toPrimitive must return a primitive value.")}return($e==="string"?String:Number)(De)}function Qt(De){var $e=rn(De,"string");return qe($e)=="symbol"?$e:String($e)}function Cn(De,$e,Je){return $e=Qt($e),$e in De?Object.defineProperty(De,$e,{value:Je,enumerable:!0,configurable:!0,writable:!0}):De[$e]=Je,De}function an(De,$e){var Je=Object.keys(De);if(Object.getOwnPropertySymbols){var Ye=Object.getOwnPropertySymbols(De);$e&&(Ye=Ye.filter(function(ct){return Object.getOwnPropertyDescriptor(De,ct).enumerable})),Je.push.apply(Je,Ye)}return Je}function Mn(De){for(var $e=1;$eDe.length)&&($e=De.length);for(var Je=0,Ye=new Array($e);Je<$e;Je++)Ye[Je]=De[Je];return Ye}function sn(De,$e){if(De){if(typeof De=="string")return Rn(De,$e);var Je=Object.prototype.toString.call(De).slice(8,-1);if(Je==="Object"&&De.constructor&&(Je=De.constructor.name),Je==="Map"||Je==="Set")return Array.from(De);if(Je==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Je))return Rn(De,$e)}}function er(De,$e){var Je=typeof Symbol!="undefined"&&De[Symbol.iterator]||De["@@iterator"];if(!Je){if(Array.isArray(De)||(Je=sn(De))||$e&&De&&typeof De.length=="number"){Je&&(De=Je);var Ye=0,ct=function(){};return{s:ct,n:function(){return Ye>=De.length?{done:!0}:{done:!1,value:De[Ye++]}},e:function(bn){throw bn},f:ct}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Nt=!0,Kt=!1,Zn;return{s:function(){Je=Je.call(De)},n:function(){var bn=Je.next();return Nt=bn.done,bn},e:function(bn){Kt=!0,Zn=bn},f:function(){try{!Nt&&Je.return!=null&&Je.return()}finally{if(Kt)throw Zn}}}}function Gn(De){if(Array.isArray(De))return De}function dn(De){if(typeof Symbol!="undefined"&&De[Symbol.iterator]!=null||De["@@iterator"]!=null)return Array.from(De)}function ft(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ot(De){return Gn(De)||dn(De)||sn(De)||ft()}function $t(De,$e){if(!(De instanceof $e))throw new TypeError("Cannot call a class as a function")}function Vt(De,$e){for(var Je=0;Je<$e.length;Je++){var Ye=$e[Je];Ye.enumerable=Ye.enumerable||!1,Ye.configurable=!0,"value"in Ye&&(Ye.writable=!0),Object.defineProperty(De,Qt(Ye.key),Ye)}}function Gt(De,$e,Je){return $e&&Vt(De.prototype,$e),Je&&Vt(De,Je),Object.defineProperty(De,"prototype",{writable:!1}),De}function hn(De,$e){if(!De)throw new Error($e)}function fn(De){var $e=De.fns,Je=De.args;if($e.length===1)return $e[0];var Ye=$e.pop();return $e.reduce(function(ct,Nt){return function(){return Nt(ct,Je)}},Ye)}function Qn(De){return!!De&&qe(De)==="object"&&typeof De.then=="function"}var _n=function(De){return De.compose="compose",De.modify="modify",De.event="event",De}({}),tr=function(){function De($e){$t(this,De),Cn(this,"opts",void 0),Cn(this,"hooks",{}),this.opts=$e}return Gt(De,[{key:"register",value:function(Je){var Ye=this;hn(Je.apply,"plugin register failed, apply must supplied"),Object.keys(Je.apply).forEach(function(ct){hn(Ye.opts.validKeys.indexOf(ct)>-1,"register failed, invalid key ".concat(ct," ").concat(Je.path?"from plugin ".concat(Je.path):"",".")),Ye.hooks[ct]=(Ye.hooks[ct]||[]).concat(Je.apply[ct])})}},{key:"getHooks",value:function(Je){var Ye=Je.split("."),ct=Ot(Ye),Nt=ct[0],Kt=ct.slice(1),Zn=this.hooks[Nt]||[];return Kt.length&&(Zn=Zn.map(function(Tn){try{var bn=Tn,Pn=er(Kt),Kn;try{for(Pn.s();!(Kn=Pn.n()).done;){var pr=Kn.value;bn=bn[pr]}}catch(mn){Pn.e(mn)}finally{Pn.f()}return bn}catch(mn){return null}}).filter(Boolean)),Zn}},{key:"applyPlugins",value:function(Je){var Ye=Je.key,ct=Je.type,Nt=Je.initialValue,Kt=Je.args,Zn=Je.async,Tn=this.getHooks(Ye)||[];switch(Kt&&hn(qe(Kt)==="object","applyPlugins failed, args must be plain object."),Zn&&hn(ct===_n.modify||ct===_n.event,"async only works with modify and event type."),ct){case _n.modify:return Zn?Tn.reduce(function(){var bn=nr(et().mark(function Pn(Kn,pr){var mn;return et().wrap(function(ze){for(;;)switch(ze.prev=ze.next){case 0:if(hn(typeof pr=="function"||qe(pr)==="object"||Qn(pr),"applyPlugins failed, all hooks for key ".concat(Ye," must be function, plain object or Promise.")),!Qn(Kn)){ze.next=5;break}return ze.next=4,Kn;case 4:Kn=ze.sent;case 5:if(typeof pr!="function"){ze.next=16;break}if(mn=pr(Kn,Kt),!Qn(mn)){ze.next=13;break}return ze.next=10,mn;case 10:return ze.abrupt("return",ze.sent);case 13:return ze.abrupt("return",mn);case 14:ze.next=21;break;case 16:if(!Qn(pr)){ze.next=20;break}return ze.next=19,pr;case 19:pr=ze.sent;case 20:return ze.abrupt("return",Mn(Mn({},Kn),pr));case 21:case"end":return ze.stop()}},Pn)}));return function(Pn,Kn){return bn.apply(this,arguments)}}(),Qn(Nt)?Nt:Promise.resolve(Nt)):Tn.reduce(function(bn,Pn){return hn(typeof Pn=="function"||qe(Pn)==="object","applyPlugins failed, all hooks for key ".concat(Ye," must be function or plain object.")),typeof Pn=="function"?Pn(bn,Kt):Mn(Mn({},bn),Pn)},Nt);case _n.event:return nr(et().mark(function bn(){var Pn,Kn,pr,mn;return et().wrap(function(ze){for(;;)switch(ze.prev=ze.next){case 0:Pn=er(Tn),ze.prev=1,Pn.s();case 3:if((Kn=Pn.n()).done){ze.next=12;break}if(pr=Kn.value,hn(typeof pr=="function","applyPlugins failed, all hooks for key ".concat(Ye," must be function.")),mn=pr(Kt),!(Zn&&Qn(mn))){ze.next=10;break}return ze.next=10,mn;case 10:ze.next=3;break;case 12:ze.next=17;break;case 14:ze.prev=14,ze.t0=ze.catch(1),Pn.e(ze.t0);case 17:return ze.prev=17,Pn.f(),ze.finish(17);case 20:case"end":return ze.stop()}},bn,null,[[1,14,17,20]])}))();case _n.compose:return function(){return fn({fns:Tn.concat(Nt),args:Kt})()}}}}],[{key:"create",value:function(Je){var Ye=new De({validKeys:Je.validKeys});return Je.plugins.forEach(function(ct){Ye.register(ct)}),Ye}}]),De}(),Nr=e(10581),rr=0,cr=0;function xn(De,$e){if(0)var Je}function or(De){return JSON.stringify(De,null,2)}function ir(De){var $e=De.length>1?De.map(Vn).join(" "):De[0];return m()($e)==="object"?"".concat(or($e)):$e.toString()}function Vn(De){return m()(De)==="object"?"".concat(JSON.stringify(De)):De.toString()}var Yn={log:function(){for(var $e=arguments.length,Je=new Array($e),Ye=0;Ye<$e;Ye++)Je[Ye]=arguments[Ye];xn("log",ir(Je))},info:function(){for(var $e=arguments.length,Je=new Array($e),Ye=0;Ye<$e;Ye++)Je[Ye]=arguments[Ye];xn("info",ir(Je))},warn:function(){for(var $e=arguments.length,Je=new Array($e),Ye=0;Ye<$e;Ye++)Je[Ye]=arguments[Ye];xn("warn",ir(Je))},error:function(){for(var $e=arguments.length,Je=new Array($e),Ye=0;Ye<$e;Ye++)Je[Ye]=arguments[Ye];xn("error",ir(Je))},group:function(){cr++},groupCollapsed:function(){cr++},groupEnd:function(){cr&&--cr},clear:function(){xn("clear")},trace:function(){var $e;($e=console).trace.apply($e,arguments)},profile:function(){var $e;($e=console).profile.apply($e,arguments)},profileEnd:function(){var $e;($e=console).profileEnd.apply($e,arguments)}},Ir=function(){}},78382:function(y,p,e){"use strict";e.d(p,{J:function(){return n}});var r=e(67294),n=r.createContext(null)},83228:function(y,p,e){"use strict";e.d(p,{Mf:function(){return a},md:function(){return i}});var r=e(67294),n=e(78382),t=e(85893),i=function(){return r.useContext(n.J)},s=function(c){return _jsx(_Fragment,{children:c.accessible?c.children:c.fallback})},a=function(c){var h=i(),d=r.useMemo(function(){var m=function C(g,x,T){var S,w,O=g.access,E=g;if(!O&&x&&(O=x,E=T),g.unaccessible=!1,typeof O=="string"){var F=h[O];typeof F=="function"?g.unaccessible=!F(E):typeof F=="boolean"?g.unaccessible=!F:typeof F=="undefined"&&(g.unaccessible=!0)}if((S=g.children)!==null&&S!==void 0&&S.length){var I=!g.children.reduce(function(P,V){return C(V,O,g),P||!V.unaccessible},!1);I&&(g.unaccessible=!0)}if((w=g.routes)!==null&&w!==void 0&&w.length){var z=!g.routes.reduce(function(P,V){return C(V,O,g),P||!V.unaccessible},!1);z&&(g.unaccessible=!0)}return g};return c.map(function(C){return m(C)})},[c.length,h]);return d}},66999:function(y,p,e){"use strict";e.d(p,{_H:function(){return r._H},pD:function(){return c},YB:function(){return r.YB}});var r=e(41138),n=e(9783),t=e(97857),i=e(67294),s=e(85893),a=function(d){return d.reduce(function(m,C){return C.lang?_objectSpread(_objectSpread({},m),{},_defineProperty({},C.lang,C)):m},{})},u={"ar-EG":{lang:"ar-EG",label:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",icon:"\u{1F1EA}\u{1F1EC}",title:"\u0644\u063A\u0629"},"az-AZ":{lang:"az-AZ",label:"Az\u0259rbaycan dili",icon:"\u{1F1E6}\u{1F1FF}",title:"Dil"},"bg-BG":{lang:"bg-BG",label:"\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438 \u0435\u0437\u0438\u043A",icon:"\u{1F1E7}\u{1F1EC}",title:"\u0435\u0437\u0438\u043A"},"bn-BD":{lang:"bn-BD",label:"\u09AC\u09BE\u0982\u09B2\u09BE",icon:"\u{1F1E7}\u{1F1E9}",title:"\u09AD\u09BE\u09B7\u09BE"},"ca-ES":{lang:"ca-ES",label:"Catal\xE1",icon:"\u{1F1E8}\u{1F1E6}",title:"llengua"},"cs-CZ":{lang:"cs-CZ",label:"\u010Ce\u0161tina",icon:"\u{1F1E8}\u{1F1FF}",title:"Jazyk"},"da-DK":{lang:"da-DK",label:"Dansk",icon:"\u{1F1E9}\u{1F1F0}",title:"Sprog"},"de-DE":{lang:"de-DE",label:"Deutsch",icon:"\u{1F1E9}\u{1F1EA}",title:"Sprache"},"el-GR":{lang:"el-GR",label:"\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",icon:"\u{1F1EC}\u{1F1F7}",title:"\u0393\u03BB\u03CE\u03C3\u03C3\u03B1"},"en-GB":{lang:"en-GB",label:"English",icon:"\u{1F1EC}\u{1F1E7}",title:"Language"},"en-US":{lang:"en-US",label:"English",icon:"\u{1F1FA}\u{1F1F8}",title:"Language"},"es-ES":{lang:"es-ES",label:"Espa\xF1ol",icon:"\u{1F1EA}\u{1F1F8}",title:"Idioma"},"et-EE":{lang:"et-EE",label:"Eesti",icon:"\u{1F1EA}\u{1F1EA}",title:"Keel"},"fa-IR":{lang:"fa-IR",label:"\u0641\u0627\u0631\u0633\u06CC",icon:"\u{1F1EE}\u{1F1F7}",title:"\u0632\u0628\u0627\u0646"},"fi-FI":{lang:"fi-FI",label:"Suomi",icon:"\u{1F1EB}\u{1F1EE}",title:"Kieli"},"fr-BE":{lang:"fr-BE",label:"Fran\xE7ais",icon:"\u{1F1E7}\u{1F1EA}",title:"Langue"},"fr-FR":{lang:"fr-FR",label:"Fran\xE7ais",icon:"\u{1F1EB}\u{1F1F7}",title:"Langue"},"ga-IE":{lang:"ga-IE",label:"Gaeilge",icon:"\u{1F1EE}\u{1F1EA}",title:"Teanga"},"he-IL":{lang:"he-IL",label:"\u05E2\u05D1\u05E8\u05D9\u05EA",icon:"\u{1F1EE}\u{1F1F1}",title:"\u05E9\u05E4\u05D4"},"hi-IN":{lang:"hi-IN",label:"\u0939\u093F\u0928\u094D\u0926\u0940, \u0939\u093F\u0902\u0926\u0940",icon:"\u{1F1EE}\u{1F1F3}",title:"\u092D\u093E\u0937\u093E: \u0939\u093F\u0928\u094D\u0926\u0940"},"hr-HR":{lang:"hr-HR",label:"Hrvatski jezik",icon:"\u{1F1ED}\u{1F1F7}",title:"Jezik"},"hu-HU":{lang:"hu-HU",label:"Magyar",icon:"\u{1F1ED}\u{1F1FA}",title:"Nyelv"},"hy-AM":{lang:"hu-HU",label:"\u0540\u0561\u0575\u0565\u0580\u0565\u0576",icon:"\u{1F1E6}\u{1F1F2}",title:"\u053C\u0565\u0566\u0578\u0582"},"id-ID":{lang:"id-ID",label:"Bahasa Indonesia",icon:"\u{1F1EE}\u{1F1E9}",title:"Bahasa"},"it-IT":{lang:"it-IT",label:"Italiano",icon:"\u{1F1EE}\u{1F1F9}",title:"Linguaggio"},"is-IS":{lang:"is-IS",label:"\xCDslenska",icon:"\u{1F1EE}\u{1F1F8}",title:"Tungum\xE1l"},"ja-JP":{lang:"ja-JP",label:"\u65E5\u672C\u8A9E",icon:"\u{1F1EF}\u{1F1F5}",title:"\u8A00\u8A9E"},"ku-IQ":{lang:"ku-IQ",label:"\u06A9\u0648\u0631\u062F\u06CC",icon:"\u{1F1EE}\u{1F1F6}",title:"Ziman"},"kn-IN":{lang:"kn-IN",label:"\u0C95\u0CA8\u0CCD\u0CA8\u0CA1",icon:"\u{1F1EE}\u{1F1F3}",title:"\u0CAD\u0CBE\u0CB7\u0CC6"},"ko-KR":{lang:"ko-KR",label:"\uD55C\uAD6D\uC5B4",icon:"\u{1F1F0}\u{1F1F7}",title:"\uC5B8\uC5B4"},"lv-LV":{lang:"lv-LV",label:"Latvie\u0161u valoda",icon:"\u{1F1F1}\u{1F1EE}",title:"Kalba"},"mk-MK":{lang:"mk-MK",label:"\u043C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438 \u0458\u0430\u0437\u0438\u043A",icon:"\u{1F1F2}\u{1F1F0}",title:"\u0408\u0430\u0437\u0438\u043A"},"mn-MN":{lang:"mn-MN",label:"\u041C\u043E\u043D\u0433\u043E\u043B \u0445\u044D\u043B",icon:"\u{1F1F2}\u{1F1F3}",title:"\u0425\u044D\u043B"},"ms-MY":{lang:"ms-MY",label:"\u0628\u0647\u0627\u0633 \u0645\u0644\u0627\u064A\u0648\u200E",icon:"\u{1F1F2}\u{1F1FE}",title:"Bahasa"},"nb-NO":{lang:"nb-NO",label:"Norsk",icon:"\u{1F1F3}\u{1F1F4}",title:"Spr\xE5k"},"ne-NP":{lang:"ne-NP",label:"\u0928\u0947\u092A\u093E\u0932\u0940",icon:"\u{1F1F3}\u{1F1F5}",title:"\u092D\u093E\u0937\u093E"},"nl-BE":{lang:"nl-BE",label:"Vlaams",icon:"\u{1F1E7}\u{1F1EA}",title:"Taal"},"nl-NL":{lang:"nl-NL",label:"Nederlands",icon:"\u{1F1F3}\u{1F1F1}",title:"Taal"},"pl-PL":{lang:"pl-PL",label:"Polski",icon:"\u{1F1F5}\u{1F1F1}",title:"J\u0119zyk"},"pt-BR":{lang:"pt-BR",label:"Portugu\xEAs",icon:"\u{1F1E7}\u{1F1F7}",title:"Idiomas"},"pt-PT":{lang:"pt-PT",label:"Portugu\xEAs",icon:"\u{1F1F5}\u{1F1F9}",title:"Idiomas"},"ro-RO":{lang:"ro-RO",label:"Rom\xE2n\u0103",icon:"\u{1F1F7}\u{1F1F4}",title:"Limba"},"ru-RU":{lang:"ru-RU",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",icon:"\u{1F1F7}\u{1F1FA}",title:"\u044F\u0437\u044B\u043A"},"sk-SK":{lang:"sk-SK",label:"Sloven\u010Dina",icon:"\u{1F1F8}\u{1F1F0}",title:"Jazyk"},"sr-RS":{lang:"sr-RS",label:"\u0441\u0440\u043F\u0441\u043A\u0438 \u0458\u0435\u0437\u0438\u043A",icon:"\u{1F1F8}\u{1F1F7}",title:"\u0408\u0435\u0437\u0438\u043A"},"sl-SI":{lang:"sl-SI",label:"Sloven\u0161\u010Dina",icon:"\u{1F1F8}\u{1F1F1}",title:"Jezik"},"sv-SE":{lang:"sv-SE",label:"Svenska",icon:"\u{1F1F8}\u{1F1EA}",title:"Spr\xE5k"},"ta-IN":{lang:"ta-IN",label:"\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",icon:"\u{1F1EE}\u{1F1F3}",title:"\u0BAE\u0BCA\u0BB4\u0BBF"},"th-TH":{lang:"th-TH",label:"\u0E44\u0E17\u0E22",icon:"\u{1F1F9}\u{1F1ED}",title:"\u0E20\u0E32\u0E29\u0E32"},"tr-TR":{lang:"tr-TR",label:"T\xFCrk\xE7e",icon:"\u{1F1F9}\u{1F1F7}",title:"Dil"},"uk-UA":{lang:"uk-UA",label:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",icon:"\u{1F1FA}\u{1F1F0}",title:"\u041C\u043E\u0432\u0430"},"vi-VN":{lang:"vi-VN",label:"Ti\u1EBFng Vi\u1EC7t",icon:"\u{1F1FB}\u{1F1F3}",title:"Ng\xF4n ng\u1EEF"},"zh-CN":{lang:"zh-CN",label:"\u7B80\u4F53\u4E2D\u6587",icon:"\u{1F1E8}\u{1F1F3}",title:"\u8BED\u8A00"},"zh-TW":{lang:"zh-TW",label:"\u7E41\u9AD4\u4E2D\u6587",icon:"\u{1F1ED}\u{1F1F0}",title:"\u8A9E\u8A00"}},c=function(d){return(0,s.jsx)(s.Fragment,{})}},41138:function(y,p,e){"use strict";e.d(p,{_H:function(){return Nt},PZ:function(){return da},eU:function(){return P},B:function(){return Xa},lw:function(){return Ur},Kd:function(){return ha},H8:function(){return za},YB:function(){return Kt}});var r=e(13769),n=e.n(r),t=e(97857),i=e.n(t),s=e(12444),a=e.n(s),u=e(72004),c=e.n(u),h=e(31996),d=e.n(h),m=e(26037),C=e.n(m),g=e(67294),x=e.t(g,2),T=e(9783),S=e(8679),w=e.n(S),O=w()||S;function E(Pe){return Pe.displayName||Pe.name||"Component"}var F=g.createContext(null),I=F.Consumer,z=F.Provider,P=z,V=F;function _(Pe,tt){var ne=tt||{},Tt=ne.intlPropName,Zt=Tt===void 0?"intl":Tt,Fn=ne.forwardRef,Xn=Fn===void 0?!1:Fn,Tr=ne.enforceContext,Kr=Tr===void 0?!0:Tr,Fa=function(Mr){return React.createElement(I,null,function(Ar){return Kr&&invariantIntlContext(Ar),React.createElement(Pe,Object.assign({},Mr,_defineProperty({},Zt,Ar),{ref:Xn?Mr.forwardedRef:null}))})};return Fa.displayName="injectIntl(".concat(E(Pe),")"),Fa.WrappedComponent=Pe,O(Xn?React.forwardRef(function(wr,Mr){return React.createElement(Fa,Object.assign({},wr,{forwardedRef:Mr}))}):Fa,Pe)}var ae;(function(Pe){Pe[Pe.literal=0]="literal",Pe[Pe.argument=1]="argument",Pe[Pe.number=2]="number",Pe[Pe.date=3]="date",Pe[Pe.time=4]="time",Pe[Pe.select=5]="select",Pe[Pe.plural=6]="plural",Pe[Pe.pound=7]="pound"})(ae||(ae={}));function J(Pe){return Pe.type===ae.literal}function ue(Pe){return Pe.type===ae.argument}function se(Pe){return Pe.type===ae.number}function ge(Pe){return Pe.type===ae.date}function be(Pe){return Pe.type===ae.time}function X(Pe){return Pe.type===ae.select}function W(Pe){return Pe.type===ae.plural}function k(Pe){return Pe.type===ae.pound}function K(Pe){return!!(Pe&&typeof Pe=="object"&&Pe.type===0)}function Q(Pe){return!!(Pe&&typeof Pe=="object"&&Pe.type===1)}function Z(Pe){return{type:ae.literal,value:Pe}}function j(Pe,tt){return{type:ae.number,value:Pe,style:tt}}var ce=function(){var Pe=function(tt,ne){return Pe=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(Tt,Zt){Tt.__proto__=Zt}||function(Tt,Zt){for(var Fn in Zt)Zt.hasOwnProperty(Fn)&&(Tt[Fn]=Zt[Fn])},Pe(tt,ne)};return function(tt,ne){Pe(tt,ne);function Tt(){this.constructor=tt}tt.prototype=ne===null?Object.create(ne):(Tt.prototype=ne.prototype,new Tt)}}(),le=function(){return le=Object.assign||function(Pe){for(var tt,ne=1,Tt=arguments.length;ne0){for(Ar=1,pa=1;Ar = (props) => { + + useEffect(() => { + initCharts() + }, []); + + const initCharts = () => { + const labelRight = { + position: 'right' + } as const; + const myChart = echarts.init(document.getElementById('bar')); + const option = { + // title: { + // text: 'Bar Chart with Negative Value' + // }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + grid: { + top: 10, + bottom: 30 + }, + xAxis: { + type: 'value', + position: 'top', + splitLine: { + lineStyle: { + type: 'dashed' + } + } + }, + yAxis: { + type: 'category', + axisLine: { show: false }, + axisLabel: { show: false }, + axisTick: { show: false }, + splitLine: { show: false }, + data: [ + 'ten', + 'nine', + 'eight', + 'seven', + 'six', + 'five', + 'four', + 'three', + 'two', + 'one' + ] + }, + series: [ + { + name: 'Cost', + type: 'bar', + stack: 'Total', + label: { + show: true, + formatter: '{b}' + }, + data: [ + { value: -0.07, label: labelRight }, + { value: -0.09, label: labelRight }, + 0.2, + 0.44, + { value: -0.23, label: labelRight }, + 0.08, + { value: -0.17, label: labelRight }, + 0.47, + { value: -0.36, label: labelRight }, + 0.18 + ] + } + ] + }; + myChart.setOption(option, true); + } + + + return ( + <> + +
+
+ + ); +}; +// 必须导出组件 +export default Chartline; diff --git a/src/pages/Company/DataManagement/components/chartcards.tsx b/src/pages/Company/DataManagement/components/chartcards.tsx new file mode 100644 index 0000000..70d8225 --- /dev/null +++ b/src/pages/Company/DataManagement/components/chartcards.tsx @@ -0,0 +1,215 @@ +import React from 'react'; +import { Card, Select, Spin, Empty, Row, Col } from 'antd'; +import { Line, Bar, Pie, Heatmap } from '@ant-design/charts'; + +export const IndustryTrendCard = ({ + loading, + currentIndustryData, + config, + availableIndustries, + selectedIndustry, + onIndustryChange, +}) => ( + + {availableIndustries.map((industry: any) => ( + + ))} + + } + > + + {currentIndustryData.length > 0 ? ( + + ) : ( + + )} + + +); + +export const AreaAnalysisCard = ({ loading, areaData, config }) => ( + + {loading ? ( + + ) : areaData.length > 0 ? ( +
+ +
+ ) : ( + + )} +
+); + +export const SalaryTrendCard = ({ + loading, + currentSalaryData, + config, + availableSalaryRanges, + selectedSalaryRange, + onSalaryRangeChange, +}) => ( + + {availableSalaryRanges.map((range) => ( + + ))} + + } + > + + {currentSalaryData.length > 0 ? ( + + ) : ( + + )} + + +); + +export const WorkYearCard = ({ + loading, + workYearData, + config, + availableWorkYearRanges, + selectedWorkYearRange, + onWorkYearRangeChange, +}) => ( + + {availableWorkYearRanges.map((range: any) => ( + + ))} + + } + > + + {workYearData && workYearData.length > 0 ? ( +
+ +
+ ) : ( + + )} +
+
+); + +export const EducationCard = ({ + loading, + educationData, + config, + availableEducationLevels, + selectedEducationLevel, + onEducationLevelChange, +}) => ( + + + {availableEducationLevels.map((level) => ( + + ))} + + } + > + + {educationData.length > 0 ? ( + + ) : ( + + )} + + +); \ No newline at end of file diff --git a/src/pages/Company/DataManagement/components/chartconfigs.tsx b/src/pages/Company/DataManagement/components/chartconfigs.tsx new file mode 100644 index 0000000..7056f1f --- /dev/null +++ b/src/pages/Company/DataManagement/components/chartconfigs.tsx @@ -0,0 +1,456 @@ +import { ChartConfig } from '@/types/analysis/industry'; +import dayjs from 'dayjs'; +import { formatDateForDisplay } from '../utils'; + +export const getHeatmapConfig = (areaData: any[], timeDimension: string) => { + const sortedData = [...areaData].sort((a, b) => { + if (timeDimension === '年') { + return parseInt(a.time) - parseInt(b.time); + } else if (timeDimension === '季度') { + const [yearA, quarterA] = a.time.split('-Q'); + const [yearB, quarterB] = b.time.split('-Q'); + return yearA === yearB + ? parseInt(quarterA) - parseInt(quarterB) + : parseInt(yearA) - parseInt(yearB); + } else { + return dayjs(a.time).valueOf() - dayjs(b.time).valueOf(); + } + }); + + return { + data: sortedData, + height: 240, + autoFit: true, + xField: 'name', + yField: 'time', + colorField: 'value', + shapeField: 'square', + sizeField: 'value', + xAxis: { + title: { + text: '区域', + style: { fontSize: 12 }, + }, + label: { + style: { + fontSize: 10, + fill: '#666', + }, + formatter: (text: string) => { + return text.length > 4 ? `${text.substring(0, 3)}...` : text; + }, + }, + }, + yAxis: { + title: { + text: '时间', + style: { fontSize: 12 }, + }, + label: { + formatter: (text: string) => { + if (timeDimension === '年') return `${text}年`; + if (timeDimension === '季度') return text.replace('-Q', '年Q'); + return text.replace('-', '年').replace('-', '月'); + }, + style: { + fontSize: 10, + fill: '#666', + }, + }, + }, + label: { + text: (d: { value: number }) => d.value.toString(), + position: 'inside', + style: { + fill: '#fff', + pointerEvents: 'none', + }, + }, + scale: { + size: { range: [14, 14] }, + color: { range: ['#dddddd', '#9ec8e0', '#5fa4cd', '#2e7ab6', '#114d90'] }, + }, + tooltip: { + title: (d: { name: any; time: any }) => `${d.name} - ${d.time}`, + field: 'value', + valueFormatter: (v: number) => v.toString(), + domStyles: { + 'g2-tooltip': { + padding: '8px 12px', + borderRadius: '4px', + }, + }, + }, + interactions: [{ type: 'element-active' }], + responsive: true, + }; +}; + +export const getIndustryChartConfig = (currentIndustryData: any[], type: string): ChartConfig => ({ + data: currentIndustryData, + height: 200, + xField: 'date', + yField: 'value', + seriesField: 'category', + xAxis: { + type: 'cat', + label: { + formatter: (text: string) => text, + }, + }, + yAxis: { + label: { + formatter: (val: string) => `${val}${type === '招聘增长率' ? '%' : ''}`, + }, + }, + point: { + size: 4, + shape: 'circle', + }, + animation: { + appear: { + animation: 'path-in', + duration: 1000, + }, + }, + smooth: true, + interactions: [ + { + type: 'tooltip', + cfg: { + render: (e, { title, items }) => { + const list = items.filter((item) => item.value); + return ( +
+

{title}

+ {list.map((item, index) => { + const { name, value, color } = item; + return ( +
+
+ + {name} +
+ + {value} + {type === '招聘增长率' ? '%' : ''} + +
+ ); + })} +
+ ); + }, + }, + }, + ], + legend: false, + tooltip: { + showTitle: undefined, + title: undefined, + customContent: undefined, + }, +}); + +export const getSalaryChartConfig = (currentSalaryData: any[]): ChartConfig => ({ + data: currentSalaryData, + height: 240, + xField: 'date', + yField: 'value', + seriesField: 'category', + xAxis: { + type: 'cat', + label: { + formatter: (text: string) => text, + }, + }, + yAxis: { + label: { + formatter: (val: string) => `${val}`, + }, + }, + point: { + size: 4, + shape: 'circle', + }, + animation: { + appear: { + animation: 'path-in', + duration: 1000, + }, + }, + smooth: true, + interactions: [ + { + type: 'tooltip', + cfg: { + render: (e, { title, items }) => { + const list = items.filter((item) => item.value); + return ( +
+

{title}

+ {list.map((item, index) => { + const { name, value, color } = item; + return ( +
+
+ + {name} +
+ {value} +
+ ); + })} +
+ ); + }, + }, + }, + ], + legend: false, + tooltip: { + showTitle: undefined, + title: undefined, + customContent: undefined, + }, +}); + +export const getWorkYearPieConfig = (workYearData: any[], selectedWorkYearRange: string) => { + const filteredData = workYearData + .filter((item) => item.category === selectedWorkYearRange) + .map((item) => ({ + ...item, + date: formatDateForDisplay(item.date, '月'), + value: item.value || 0, + type: `${formatDateForDisplay(item.date, '月')} ${item.category}`, + })); + + return { + data: filteredData, + angleField: 'value', + colorField: 'type', + radius: 0.2, + innerRadius: 0.5, + label: { + text: (d: { type: any; value: any }) => `${d.type}\n ${d.value}`, + position: 'spider', + }, + legend: false, + tooltip: { + showTitle: true, + title: '工作经验分布', + fields: ['type', 'value'], + formatter: (datum: { type: any; value: any }) => ({ + name: datum.type, + value: datum.value, + }), + }, + interactions: [{ type: 'element-active' }], + padding: 'auto', + autoFit: true, + }; +}; + +export const getEducationBarConfig = (educationData: any[], selectedEducationLevel: string) => { + const educationLevelOrder = [ + '不限', + '初中及以下', + '中专/中技', + '高中', + '大专', + '本科', + '硕士', + '博士', + 'MBA/EMBA', + '留学-学士', + '留学-硕士', + '留学-博士', + ]; + + const educationColorMap: Record = { + 不限: '#8884d8', + 初中及以下: '#82ca9d', + '中专/中技': '#ffc658', + 高中: '#ff8042', + 大专: '#0088FE', + 本科: '#00C49F', + 硕士: '#FFBB28', + 博士: '#FF8042', + 'MBA/EMBA': '#8884d8', + '留学-学士': '#82ca9d', + '留学-硕士': '#ffc658', + '留学-博士': '#ff8042', + }; + + const cleanEducationData = educationData + .filter((item) => item && item.category && item.date && !isNaN(item.value)) + .map((item) => ({ + ...item, + date: formatDateForDisplay(item.date, '月'), + category: item.category || '不限', + value: Number(item.value) || 0, + })); + + if (!selectedEducationLevel) { + const educationSummary: Record = {}; + + cleanEducationData.forEach((item) => { + if (!educationSummary[item.category]) { + educationSummary[item.category] = 0; + } + educationSummary[item.category] += item.value; + }); + + const barData = Object.entries(educationSummary) + .filter(([_, value]) => value > 0) + .map(([name, value]) => ({ + name, + value, + color: educationColorMap[name] || '#999', + })) + .sort((a, b) => educationLevelOrder.indexOf(a.name) - educationLevelOrder.indexOf(b.name)); + + return { + data: barData, + height: 200, + xField: 'value', + yField: 'name', + seriesField: 'name', + color: ({ name }: { name: string }) => educationColorMap[name] || '#999', + meta: { + name: { alias: '学历要求' }, + value: { alias: '岗位数量' }, + }, + xAxis: { + label: { + formatter: (val: string) => `${val}`, + }, + grid: { + line: { + style: { + stroke: '#f0f0f0', + lineDash: [4, 4], + }, + }, + }, + }, + yAxis: { + label: { + formatter: (text: string) => text, + }, + }, + barStyle: { + radius: [2, 2, 0, 0], + }, + tooltip: { + showTitle: true, + title: '学历要求分布', + fields: ['name', 'value'], + formatter: (datum: { name: any; value: any }) => ({ + name: datum.name, + value: datum.value, + }), + domStyles: { + 'g2-tooltip': { + background: 'rgba(255, 255, 255, 0.9)', + boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', + borderRadius: '4px', + }, + }, + }, + interactions: [{ type: 'element-active' }], + legend: false, + animation: { + appear: { + animation: 'scale-in-y', + duration: 1000, + }, + }, + }; + } + + const timeData = cleanEducationData + .filter((item) => item.category === selectedEducationLevel) + .sort((a, b) => { + const dateA = dayjs(a.date, 'YYYY年MM月').valueOf(); + const dateB = dayjs(b.date, 'YYYY年MM月').valueOf(); + return dateA - dateB; + }); + + return { + data: timeData, + height: 200, + xField: 'date', + yField: 'value', + seriesField: 'category', + color: educationColorMap[selectedEducationLevel] || '#999', + meta: { + date: { + alias: '时间', + type: 'cat', + values: timeData + .map((item) => item.date) + .sort((a, b) => { + const dateA = dayjs(a, 'YYYY年MM月').valueOf(); + const dateB = dayjs(b, 'YYYY年MM月').valueOf(); + return dateA - dateB; + }), + }, + value: { alias: '岗位数量' }, + }, + barStyle: { + radius: [2, 2, 0, 0], + }, + tooltip: { + showTitle: true, + title: `${selectedEducationLevel}趋势`, + fields: ['date', 'value'], + formatter: (datum: { date: any; value: any }) => ({ name: datum.date, value: datum.value }), + domStyles: { + 'g2-tooltip': { + background: 'rgba(255, 255, 255, 0.9)', + boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', + borderRadius: '4px', + }, + }, + }, + interactions: [{ type: 'element-active' }], + legend: false, + animation: { + appear: { + animation: 'scale-in-y', + duration: 1000, + }, + }, + xAxis: { + type: 'cat', + label: { + formatter: (text: string) => text, + }, + }, + }; +}; \ No newline at end of file diff --git a/src/pages/Company/DataManagement/components/chartline.tsx b/src/pages/Company/DataManagement/components/chartline.tsx new file mode 100644 index 0000000..e95fabd --- /dev/null +++ b/src/pages/Company/DataManagement/components/chartline.tsx @@ -0,0 +1,108 @@ +import React, { useEffect } from "react"; +import { Card, Select, Spin, Empty, Row, Col } from 'antd'; +import * as echarts from 'echarts'; + +const Chartline: React.FC<{}> = (props) => { + + useEffect(() => { + initCharts() + }, []); + + const initCharts = () => { + const myChart = echarts.init(document.getElementById('main')); + const option = { + // title: { + // text: 'Accumulated Waterfall Chart' + // }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + }, + formatter: function (params: any) { + let tar; + if (params[1] && params[1].value !== '-') { + tar = params[1]; + } else { + tar = params[2]; + } + return tar && tar.name + '
' + tar.seriesName + ' : ' + tar.value; + } + }, + legend: { + data: ['Expenses', 'Income'] + }, + grid: { + top: 10, + bottom: 30 + }, + xAxis: { + type: 'category', + data: (function () { + let list = []; + for (let i = 1; i <= 11; i++) { + list.push('Nov ' + i); + } + return list; + })() + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: 'Placeholder', + type: 'bar', + stack: 'Total', + silent: true, + itemStyle: { + borderColor: 'transparent', + color: 'transparent' + }, + emphasis: { + itemStyle: { + borderColor: 'transparent', + color: 'transparent' + } + }, + data: [0, 900, 1245, 1530, 1376, 1376, 1511, 1689, 1856, 1495, 1292] + }, + { + name: 'A', + type: 'bar', + stack: 'Total', + label: { + show: true, + position: 'top' + }, + data: [900, 345, 393, '-', '-', 135, 178, 286, '-', '-', '-'] + }, + { + name: 'B', + type: 'bar', + stack: 'Total', + label: { + show: true, + position: 'bottom' + }, + data: ['-', '-', '-', 108, 154, '-', '-', '-', 119, 361, 203] + } + ] + }; + myChart.setOption(option, true); + } + + + return ( + <> + +
+
+ + ); +}; +// 必须导出组件 +export default Chartline; diff --git a/src/pages/Company/DataManagement/index.tsx b/src/pages/Company/DataManagement/index.tsx new file mode 100644 index 0000000..49aec76 --- /dev/null +++ b/src/pages/Company/DataManagement/index.tsx @@ -0,0 +1,574 @@ +import React, { useEffect, useState, useMemo, useRef } from 'react'; +import { Card, Select, Button, Space, Spin, Empty, Row, Col, message, DatePicker } from 'antd'; +import { Line, Bar, Pie, Heatmap } from '@ant-design/charts'; +import { + getIndustryTrend, + getIndustryAreaTrend, + getSalaryTrend, + getWorkYearTrend, + getEducationTrend, +} from '@/services/analysis/industry'; +import dayjs from 'dayjs'; +import { useRequest } from '@umijs/max'; +import { + TimeDimension, + AnalysisType, + IndustryTrendState, + IndustryDataItem, + ChartConfig, +} from '@/types/analysis/industry'; +import { + formatQuarter, + formatDateForDisplay, + convertApiData, + convertSalaryData, + convertWorkYearData, + convertEducationData, +} from './utils'; +import { + getHeatmapConfig, + getIndustryChartConfig, + getSalaryChartConfig, + getWorkYearPieConfig, + getEducationBarConfig, +} from './components/chartconfigs'; +import { + IndustryTrendCard, + AreaAnalysisCard, + SalaryTrendCard, + WorkYearCard, + EducationCard, +} from './components/chartcards'; +import Chartline from './components/chartline' +import Chartbar from './components/chartbar' + +const { Option } = Select; +const { RangePicker } = DatePicker; + +const flattenAreaData = (apiResponse: any) => { + if (!apiResponse || typeof apiResponse !== 'object') { + return []; + } + + const flattenedData: { name: any; time: any; value: number }[] = []; + + for (const month in apiResponse) { + if (apiResponse.hasOwnProperty(month)) { + const areas = apiResponse[month]; + + areas.forEach((area: { name: any; time: any; data: string }) => { + flattenedData.push({ + name: area.name, + time: area.time, + value: parseInt(area.data) || 0, + }); + }); + } + } + + return flattenedData; +}; + +const IndustryTrendPage: React.FC = () => { + const [params, setParams] = useState({ + timeDimension: '月', + type: '岗位发布数量', + startTime: dayjs().subtract(5, 'month').format('YYYY-MM'), + endTime: dayjs().format('YYYY-MM'), + selectedIndustry: '', + selectedSalaryRange: '', + selectedWorkYearRange: '', + }); + + const [allData, setAllData] = useState([]); + const [areaData, setAreaData] = useState([]); + const [salaryData, setSalaryData] = useState([]); + const [availableIndustries, setAvailableIndustries] = useState([]); + const [availableSalaryRanges, setAvailableSalaryRanges] = useState([]); + const heatmapRef = useRef(null); + const containerRef = useRef(null); + const [workYearData, setWorkYearData] = useState([]); + const [availableWorkYearRanges, setAvailableWorkYearRanges] = useState([]); + const [educationData, setEducationData] = useState([]); + const [availableEducationLevels, setAvailableEducationLevels] = useState([]); + const [selectedEducationLevel, setSelectedEducationLevel] = useState(''); + + // 获取行业趋势数据 + const { loading: industryLoading, run: fetchIndustryData } = useRequest( + async () => { + let { startTime, endTime, timeDimension, type } = params; + + if (timeDimension === '季度') { + startTime = formatQuarter(startTime); + endTime = formatQuarter(endTime); + } + + return await getIndustryTrend({ + timeDimension, + type, + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertApiData(data); + setAllData(formattedData); + + const industries = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort(); + + setAvailableIndustries(industries); + + if (industries.length > 0 && !industries.includes(params.selectedIndustry)) { + setParams((p) => ({ ...p, selectedIndustry: industries[0] })); + } + }, + onError: (error) => { + message.error('行业数据加载失败'); + }, + }, + ); + + // 获取地区趋势数据 + const { loading: areaLoading, run: fetchAreaData } = useRequest( + async () => { + let { startTime, endTime, timeDimension, type } = params; + + if (timeDimension === '季度') { + startTime = formatQuarter(startTime); + endTime = formatQuarter(endTime); + } + + return await getIndustryAreaTrend({ + timeDimension, + type, + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (res) => { + const formattedData = flattenAreaData(res); + setAreaData(formattedData); + }, + onError: (error) => { + message.error('地区数据加载失败'); + }, + }, + ); + + // 获取薪资趋势数据 + const { loading: salaryLoading, run: fetchSalaryData } = useRequest( + async () => { + const now = dayjs(); + let startTime = now.subtract(1, 'year').format('YYYY-MM'); + let endTime = now.format('YYYY-MM'); + const timeDimension = '月'; + + return await getSalaryTrend({ + timeDimension, + type: '岗位发布数量', + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertSalaryData(data); + setSalaryData(formattedData); + + const ranges = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort((a, b) => { + const extractNumber = (str: string) => parseInt(str.replace(/[^0-9]/g, '') || 0); + return extractNumber(a) - extractNumber(b); + }); + + setAvailableSalaryRanges(ranges); + + if (ranges.length > 0 && !ranges.includes(params.selectedSalaryRange)) { + setParams((p) => ({ ...p, selectedSalaryRange: ranges[0] })); + } + }, + onError: (error) => { + message.error('薪资数据加载失败'); + }, + }, + ); + + // 获取工作年限数据 + const { loading: workYearLoading, run: fetchWorkYearData } = useRequest( + async () => { + const now = dayjs(); + let startTime = now.subtract(1, 'year').format('YYYY-MM'); + let endTime = now.format('YYYY-MM'); + const timeDimension = '月'; + + return await getWorkYearTrend({ + timeDimension, + type: '岗位发布数量', + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertWorkYearData(data); + setWorkYearData(formattedData); + + const ranges = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort((a, b) => { + const order = ['应届', '1-3年', '3-5年', '5年以上']; + return order.indexOf(a) - order.indexOf(b); + }); + + setAvailableWorkYearRanges(ranges); + if (ranges.length > 0 && !ranges.includes(params.selectedWorkYearRange)) { + setParams((p) => ({ ...p, selectedWorkYearRange: ranges[0] })); + } + }, + onError: (error) => { + message.error('工作经验数据加载失败'); + }, + }, + ); + + // 获取学历数据 + const { loading: educationLoading, run: fetchEducationData } = useRequest( + async () => { + const now = dayjs(); + let startTime = now.subtract(1, 'year').format('YYYY-MM'); + let endTime = now.format('YYYY-MM'); + const timeDimension = '月'; + + return await getEducationTrend({ + timeDimension, + type: '岗位发布数量', + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertEducationData(data); + setEducationData(formattedData); + + const levels = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort((a, b) => { + const order = ['不限', '初中及以下', '中专/中技', '大专', '本科', '硕士', '博士']; + return order.indexOf(a) - order.indexOf(b); + }); + + setAvailableEducationLevels(levels); + if (levels.length > 0 && !levels.includes(selectedEducationLevel)) { + setSelectedEducationLevel(levels[0]); + } + }, + onError: (error) => { + message.error('学历数据加载失败'); + }, + }, + ); + + const currentWorkYearData = useMemo(() => { + if (!params.selectedWorkYearRange || workYearData.length === 0) return []; + + return workYearData + .filter((item) => item.category === params.selectedWorkYearRange) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, '月'), + })) + .sort((a, b) => dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf()); + }, [workYearData, params.selectedWorkYearRange]); + + const currentIndustryData = useMemo(() => { + if (!params.selectedIndustry || allData.length === 0) return []; + + return allData + .filter((item) => item.category === params.selectedIndustry) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, params.timeDimension), + })) + .sort((a, b) => { + if (params.timeDimension === '季度') { + const [yearA, quarterA] = a.originalDate.split('-'); + const [yearB, quarterB] = b.originalDate.split('-'); + + const quarterToNumber = (q: string) => { + if (q.includes('第一')) return 1; + if (q.includes('第二')) return 2; + if (q.includes('第三')) return 3; + if (q.includes('第四')) return 4; + return 0; + }; + + return yearA === yearB + ? quarterToNumber(quarterA) - quarterToNumber(quarterB) + : parseInt(yearA) - parseInt(yearB); + } else if (params.timeDimension === '年') { + return parseInt(a.originalDate) - parseInt(b.originalDate); + } else { + return dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf(); + } + }); + }, [allData, params.selectedIndustry, params.timeDimension]); + + const currentSalaryData = useMemo(() => { + if (!params.selectedSalaryRange || salaryData.length === 0) return []; + + return salaryData + .filter((item) => item.category === params.selectedSalaryRange) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, '月'), + })) + .sort((a, b) => dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf()); + }, [salaryData, params.selectedSalaryRange]); + + const currentEducationData = useMemo(() => { + if (!selectedEducationLevel || educationData.length === 0) return []; + return educationData + .filter((item) => item.category === selectedEducationLevel) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, '月'), + })) + .sort((a, b) => dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf()); + }, [educationData, selectedEducationLevel]); + + const heatmapConfig = useMemo( + () => getHeatmapConfig(areaData, params.timeDimension), + [areaData, params.timeDimension], + ); + + const industryChartConfig = useMemo( + () => getIndustryChartConfig(currentIndustryData, params.type), + [currentIndustryData, params.type], + ); + + const salaryChartConfig = useMemo( + () => getSalaryChartConfig(currentSalaryData), + [currentSalaryData], + ); + + const workYearPieConfig = useMemo( + () => getWorkYearPieConfig(workYearData, params.selectedWorkYearRange), + [workYearData, params.selectedWorkYearRange], + ); + + const educationBarConfig = useMemo( + () => getEducationBarConfig(educationData, selectedEducationLevel), + [educationData, selectedEducationLevel], + ); + + const handleTimeDimensionChange = (value: TimeDimension) => { + const now = dayjs(); + let newStartTime = ''; + + if (value === '月') { + newStartTime = now.subtract(5, 'month').format('YYYY-MM'); + } else if (value === '季度') { + newStartTime = now.subtract(6, 'quarter').format('YYYY-Q'); + } else { + newStartTime = now.subtract(5, 'year').format('YYYY'); + } + + setParams((p) => ({ + ...p, + timeDimension: value, + startTime: newStartTime, + endTime: + value === '月' + ? now.format('YYYY-MM') + : value === '季度' + ? now.format('YYYY-Q') + : now.format('YYYY'), + selectedIndustry: '', + })); + }; + + const handleDateRangeChange = (dates: any, dateStrings: [string, string]) => { + if (dates && dates[0] && dates[1]) { + setParams((p) => ({ + ...p, + startTime: dateStrings[0], + endTime: dateStrings[1], + })); + } + }; + + const disabledDate = (current: dayjs.Dayjs) => { + const now = dayjs(); + + if (params.timeDimension === '月') { + return current.isAfter(now.endOf('month')); + } else if (params.timeDimension === '季度') { + return current.isAfter(now.endOf('quarter')); + } else { + return current.isAfter(now.endOf('year')); + } + }; + + const getPickerValue = () => { + try { + return [ + dayjs( + params.startTime, + params.timeDimension === '年' + ? 'YYYY' + : params.timeDimension === '季度' + ? 'YYYY-Q' + : 'YYYY-MM', + ), + dayjs( + params.endTime, + params.timeDimension === '年' + ? 'YYYY' + : params.timeDimension === '季度' + ? 'YYYY-Q' + : 'YYYY-MM', + ), + ]; + } catch (e) { + return null; + } + }; + + useEffect(() => { + fetchIndustryData(); + fetchAreaData(); + fetchSalaryData(); + fetchWorkYearData(); + fetchEducationData(); + }, [params.timeDimension, params.startTime, params.endTime, params.type]); + + return ( +
+ +
+ + + + + + + + + +
+ + + {/* 行业趋势图表 - 全宽显示 */} + + setParams((p) => ({ ...p, selectedIndustry: value }))} + /> + + {/* 工作经验和学历要求 - 中等屏幕下分成两列 */} + + + setParams((p) => ({ ...p, selectedWorkYearRange: value })) + } + /> + + + + {/* */} + + {/* 区域分析和薪资趋势 - 中等屏幕下分成两列 */} + {/* + + */} + + + setParams((p) => ({ ...p, selectedSalaryRange: value })) + } + /> + + + + + +
+
+ ); +}; + +export default IndustryTrendPage; diff --git a/src/pages/Company/DataManagement/utils.ts b/src/pages/Company/DataManagement/utils.ts new file mode 100644 index 0000000..4c238ff --- /dev/null +++ b/src/pages/Company/DataManagement/utils.ts @@ -0,0 +1,232 @@ +import { TimeDimension, QuarterFormat, DateFormatter, QuarterFormatter, ApiDataConverter, IndustryDataItem, AreaDataItem } from '@/types/analysis/industry'; + +export const formatQuarter: QuarterFormatter = (dateStr: string): QuarterFormat => { + if (dateStr.includes('第')) return dateStr as QuarterFormat; + + const [year, quarterPart] = dateStr.includes('-Q') + ? dateStr.split('-Q') + : dateStr.split('-'); + + const quarterNum = quarterPart.replace('季度', ''); + const quarterMap: Record = { + '1': '第一季度', + '2': '第二季度', + '3': '第三季度', + '4': '第四季度' + }; + return `${year}-${quarterMap[quarterNum] || quarterPart}` as QuarterFormat; +}; + +export const formatDateForDisplay: DateFormatter = (dateStr: string, dimension: TimeDimension): string => { + try { + if (dimension === '年') return dateStr.split('-')[0]; + if (dimension === '季度') { + if (dateStr.includes('第')) { + const [year, quarter] = dateStr.split('-'); + return `${year}年${quarter}`; + } + const [year, quarterNum] = dateStr.split('-'); + const quarterMap: Record = { + '1': '第一季度', + '2': '第二季度', + '3': '第三季度', + '4': '第四季度', + 'Q1': '第一季度', + 'Q2': '第二季度', + 'Q3': '第三季度', + 'Q4': '第四季度' + }; + return `${year}年${quarterMap[quarterNum] || quarterNum}`; + } + const [year, month] = dateStr.split('-'); + return `${year}年${month}月`; + } catch (e) { + console.error('日期格式化错误:', e); + return dateStr; + } +}; + +export const convertApiData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date, + category: item.name || item.category || '未知行业', + value: Number(item.data || item.value) || 0 + })); + } + if (typeof apiData === 'object') { + const result: IndustryDataItem[] = []; + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + result.push({ + date, + category: item.name || item.category || '未知行业', + value: Number(item.data || item.value) || 0 + }); + }); + } + }); + return result; + } + return []; + } catch (error) { + console.error('数据转换错误:', error); + return []; + } +}; + +export const convertAreaApiData = (apiData: any): AreaDataItem[] => { + if (!apiData?.data) { + console.warn('convertAreaApiData: apiData.data 为空'); + return []; + } + + try { + const result: AreaDataItem[] = []; + + // 处理嵌套的月份数据 + if (typeof apiData.data === 'object' && !Array.isArray(apiData.data)) { + Object.entries(apiData.data).forEach(([time, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + if (!item) return; + const uniqueName = items.filter((i: any) => i.name === item.name).length > 1 + ? `${item.name}_${index}` + : item.name; + result.push({ + name: item.name || '未知区域', + value: Number(item.data) || 0, + time: item.time || time, + x:uniqueName, + y:time, + category: item.name, + originalData: item + }); + }); + } + }); + return result; + } + if (Array.isArray(apiData.data)) { + return apiData.data.map((item: any) => ({ + name: item.name || '未知区域', + value: Number(item.data) || 0, + time: item.time || '未知时间', + x: item.name, + y: item.time, + category: item.name, + originalData: item + })); + } + return []; + } catch (error) { + console.error('数据转换错误:', error); + return []; + } +}; + +export const convertSalaryData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date, + category: item.name || item.category || '未知薪资区间', + value: Number(item.data || item.value) || 0 + })); + } + if (typeof apiData === 'object') { + const result: IndustryDataItem[] = []; + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + result.push({ + date, + category: item.name || item.category || '未知薪资区间', + value: Number(item.data || item.value) || 0 + }); + }); + } + }); + return result; + } + return []; + } catch (error) { + console.error('薪资数据转换错误:', error); + return []; + } +}; + +export const convertWorkYearData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date || '', + category: item.name || item.category || '未知经验要求', + value: Number(item.data || item.value || 0) // 确保数值不为null/undefined + })); + } + if (typeof apiData === 'object') { + const result: IndustryDataItem[] = []; + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + result.push({ + date: date || '', + category: item.name || item.category || '未知经验要求', + value: Number(item.data || item.value || 0) // 确保数值不为null/undefined + }); + }); + } + }); + return result; + } + return []; + } catch (error) { + console.error('工作经验数据转换错误:', error); + return []; + } +}; +export const convertEducationData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + const result: any[] = []; + + // 处理嵌套的月份数据 + if (typeof apiData === 'object' && !Array.isArray(apiData)) { + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + if (!item) return; // 跳过空项 + result.push({ + date: date || '', // 确保日期不为undefined + category: item.name || item.category || '不限', // 默认值 + value: Number(item.data || item.value || 0), // 确保数值有效 + originalData: item + }); + }); + } + }); + return result; + } + + // 处理数组格式的响应 + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date || '', + category: item.name || item.category || '不限', + value: Number(item.data || item.value || 0), + originalData: item + })); + } + + return []; + } catch (error) { + console.error('学历数据转换错误:', error); + return []; + } +}; \ No newline at end of file diff --git a/src/pages/Company/ServiceManagement/components/chartcards.tsx b/src/pages/Company/ServiceManagement/components/chartcards.tsx new file mode 100644 index 0000000..eaa5b33 --- /dev/null +++ b/src/pages/Company/ServiceManagement/components/chartcards.tsx @@ -0,0 +1,215 @@ +import React from 'react'; +import { Card, Select, Spin, Empty, Row, Col } from 'antd'; +import { Line, Bar, Pie, Heatmap } from '@ant-design/charts'; + +export const IndustryTrendCard = ({ + loading, + currentIndustryData, + config, + availableIndustries, + selectedIndustry, + onIndustryChange, +}) => ( + + {availableIndustries.map((industry: any) => ( + + ))} + + } + > + + {currentIndustryData.length > 0 ? ( + + ) : ( + + )} + + +); + +export const AreaAnalysisCard = ({ loading, areaData, config }) => ( + + {loading ? ( + + ) : areaData.length > 0 ? ( +
+ +
+ ) : ( + + )} +
+); + +export const SalaryTrendCard = ({ + loading, + currentSalaryData, + config, + availableSalaryRanges, + selectedSalaryRange, + onSalaryRangeChange, +}) => ( + + {availableSalaryRanges.map((range) => ( + + ))} + + } + > + + {currentSalaryData.length > 0 ? ( + + ) : ( + + )} + + +); + +export const WorkYearCard = ({ + loading, + workYearData, + config, + availableWorkYearRanges, + selectedWorkYearRange, + onWorkYearRangeChange, +}) => ( + + {availableWorkYearRanges.map((range: any) => ( + + ))} + + } + > + + {workYearData && workYearData.length > 0 ? ( +
+ +
+ ) : ( + + )} +
+
+); + +export const EducationCard = ({ + loading, + educationData, + config, + availableEducationLevels, + selectedEducationLevel, + onEducationLevelChange, +}) => ( + + + {availableEducationLevels.map((level) => ( + + ))} + + } + > + + {educationData.length > 0 ? ( + + ) : ( + + )} + + +); \ No newline at end of file diff --git a/src/pages/Company/ServiceManagement/components/chartconfigs.tsx b/src/pages/Company/ServiceManagement/components/chartconfigs.tsx new file mode 100644 index 0000000..7056f1f --- /dev/null +++ b/src/pages/Company/ServiceManagement/components/chartconfigs.tsx @@ -0,0 +1,456 @@ +import { ChartConfig } from '@/types/analysis/industry'; +import dayjs from 'dayjs'; +import { formatDateForDisplay } from '../utils'; + +export const getHeatmapConfig = (areaData: any[], timeDimension: string) => { + const sortedData = [...areaData].sort((a, b) => { + if (timeDimension === '年') { + return parseInt(a.time) - parseInt(b.time); + } else if (timeDimension === '季度') { + const [yearA, quarterA] = a.time.split('-Q'); + const [yearB, quarterB] = b.time.split('-Q'); + return yearA === yearB + ? parseInt(quarterA) - parseInt(quarterB) + : parseInt(yearA) - parseInt(yearB); + } else { + return dayjs(a.time).valueOf() - dayjs(b.time).valueOf(); + } + }); + + return { + data: sortedData, + height: 240, + autoFit: true, + xField: 'name', + yField: 'time', + colorField: 'value', + shapeField: 'square', + sizeField: 'value', + xAxis: { + title: { + text: '区域', + style: { fontSize: 12 }, + }, + label: { + style: { + fontSize: 10, + fill: '#666', + }, + formatter: (text: string) => { + return text.length > 4 ? `${text.substring(0, 3)}...` : text; + }, + }, + }, + yAxis: { + title: { + text: '时间', + style: { fontSize: 12 }, + }, + label: { + formatter: (text: string) => { + if (timeDimension === '年') return `${text}年`; + if (timeDimension === '季度') return text.replace('-Q', '年Q'); + return text.replace('-', '年').replace('-', '月'); + }, + style: { + fontSize: 10, + fill: '#666', + }, + }, + }, + label: { + text: (d: { value: number }) => d.value.toString(), + position: 'inside', + style: { + fill: '#fff', + pointerEvents: 'none', + }, + }, + scale: { + size: { range: [14, 14] }, + color: { range: ['#dddddd', '#9ec8e0', '#5fa4cd', '#2e7ab6', '#114d90'] }, + }, + tooltip: { + title: (d: { name: any; time: any }) => `${d.name} - ${d.time}`, + field: 'value', + valueFormatter: (v: number) => v.toString(), + domStyles: { + 'g2-tooltip': { + padding: '8px 12px', + borderRadius: '4px', + }, + }, + }, + interactions: [{ type: 'element-active' }], + responsive: true, + }; +}; + +export const getIndustryChartConfig = (currentIndustryData: any[], type: string): ChartConfig => ({ + data: currentIndustryData, + height: 200, + xField: 'date', + yField: 'value', + seriesField: 'category', + xAxis: { + type: 'cat', + label: { + formatter: (text: string) => text, + }, + }, + yAxis: { + label: { + formatter: (val: string) => `${val}${type === '招聘增长率' ? '%' : ''}`, + }, + }, + point: { + size: 4, + shape: 'circle', + }, + animation: { + appear: { + animation: 'path-in', + duration: 1000, + }, + }, + smooth: true, + interactions: [ + { + type: 'tooltip', + cfg: { + render: (e, { title, items }) => { + const list = items.filter((item) => item.value); + return ( +
+

{title}

+ {list.map((item, index) => { + const { name, value, color } = item; + return ( +
+
+ + {name} +
+ + {value} + {type === '招聘增长率' ? '%' : ''} + +
+ ); + })} +
+ ); + }, + }, + }, + ], + legend: false, + tooltip: { + showTitle: undefined, + title: undefined, + customContent: undefined, + }, +}); + +export const getSalaryChartConfig = (currentSalaryData: any[]): ChartConfig => ({ + data: currentSalaryData, + height: 240, + xField: 'date', + yField: 'value', + seriesField: 'category', + xAxis: { + type: 'cat', + label: { + formatter: (text: string) => text, + }, + }, + yAxis: { + label: { + formatter: (val: string) => `${val}`, + }, + }, + point: { + size: 4, + shape: 'circle', + }, + animation: { + appear: { + animation: 'path-in', + duration: 1000, + }, + }, + smooth: true, + interactions: [ + { + type: 'tooltip', + cfg: { + render: (e, { title, items }) => { + const list = items.filter((item) => item.value); + return ( +
+

{title}

+ {list.map((item, index) => { + const { name, value, color } = item; + return ( +
+
+ + {name} +
+ {value} +
+ ); + })} +
+ ); + }, + }, + }, + ], + legend: false, + tooltip: { + showTitle: undefined, + title: undefined, + customContent: undefined, + }, +}); + +export const getWorkYearPieConfig = (workYearData: any[], selectedWorkYearRange: string) => { + const filteredData = workYearData + .filter((item) => item.category === selectedWorkYearRange) + .map((item) => ({ + ...item, + date: formatDateForDisplay(item.date, '月'), + value: item.value || 0, + type: `${formatDateForDisplay(item.date, '月')} ${item.category}`, + })); + + return { + data: filteredData, + angleField: 'value', + colorField: 'type', + radius: 0.2, + innerRadius: 0.5, + label: { + text: (d: { type: any; value: any }) => `${d.type}\n ${d.value}`, + position: 'spider', + }, + legend: false, + tooltip: { + showTitle: true, + title: '工作经验分布', + fields: ['type', 'value'], + formatter: (datum: { type: any; value: any }) => ({ + name: datum.type, + value: datum.value, + }), + }, + interactions: [{ type: 'element-active' }], + padding: 'auto', + autoFit: true, + }; +}; + +export const getEducationBarConfig = (educationData: any[], selectedEducationLevel: string) => { + const educationLevelOrder = [ + '不限', + '初中及以下', + '中专/中技', + '高中', + '大专', + '本科', + '硕士', + '博士', + 'MBA/EMBA', + '留学-学士', + '留学-硕士', + '留学-博士', + ]; + + const educationColorMap: Record = { + 不限: '#8884d8', + 初中及以下: '#82ca9d', + '中专/中技': '#ffc658', + 高中: '#ff8042', + 大专: '#0088FE', + 本科: '#00C49F', + 硕士: '#FFBB28', + 博士: '#FF8042', + 'MBA/EMBA': '#8884d8', + '留学-学士': '#82ca9d', + '留学-硕士': '#ffc658', + '留学-博士': '#ff8042', + }; + + const cleanEducationData = educationData + .filter((item) => item && item.category && item.date && !isNaN(item.value)) + .map((item) => ({ + ...item, + date: formatDateForDisplay(item.date, '月'), + category: item.category || '不限', + value: Number(item.value) || 0, + })); + + if (!selectedEducationLevel) { + const educationSummary: Record = {}; + + cleanEducationData.forEach((item) => { + if (!educationSummary[item.category]) { + educationSummary[item.category] = 0; + } + educationSummary[item.category] += item.value; + }); + + const barData = Object.entries(educationSummary) + .filter(([_, value]) => value > 0) + .map(([name, value]) => ({ + name, + value, + color: educationColorMap[name] || '#999', + })) + .sort((a, b) => educationLevelOrder.indexOf(a.name) - educationLevelOrder.indexOf(b.name)); + + return { + data: barData, + height: 200, + xField: 'value', + yField: 'name', + seriesField: 'name', + color: ({ name }: { name: string }) => educationColorMap[name] || '#999', + meta: { + name: { alias: '学历要求' }, + value: { alias: '岗位数量' }, + }, + xAxis: { + label: { + formatter: (val: string) => `${val}`, + }, + grid: { + line: { + style: { + stroke: '#f0f0f0', + lineDash: [4, 4], + }, + }, + }, + }, + yAxis: { + label: { + formatter: (text: string) => text, + }, + }, + barStyle: { + radius: [2, 2, 0, 0], + }, + tooltip: { + showTitle: true, + title: '学历要求分布', + fields: ['name', 'value'], + formatter: (datum: { name: any; value: any }) => ({ + name: datum.name, + value: datum.value, + }), + domStyles: { + 'g2-tooltip': { + background: 'rgba(255, 255, 255, 0.9)', + boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', + borderRadius: '4px', + }, + }, + }, + interactions: [{ type: 'element-active' }], + legend: false, + animation: { + appear: { + animation: 'scale-in-y', + duration: 1000, + }, + }, + }; + } + + const timeData = cleanEducationData + .filter((item) => item.category === selectedEducationLevel) + .sort((a, b) => { + const dateA = dayjs(a.date, 'YYYY年MM月').valueOf(); + const dateB = dayjs(b.date, 'YYYY年MM月').valueOf(); + return dateA - dateB; + }); + + return { + data: timeData, + height: 200, + xField: 'date', + yField: 'value', + seriesField: 'category', + color: educationColorMap[selectedEducationLevel] || '#999', + meta: { + date: { + alias: '时间', + type: 'cat', + values: timeData + .map((item) => item.date) + .sort((a, b) => { + const dateA = dayjs(a, 'YYYY年MM月').valueOf(); + const dateB = dayjs(b, 'YYYY年MM月').valueOf(); + return dateA - dateB; + }), + }, + value: { alias: '岗位数量' }, + }, + barStyle: { + radius: [2, 2, 0, 0], + }, + tooltip: { + showTitle: true, + title: `${selectedEducationLevel}趋势`, + fields: ['date', 'value'], + formatter: (datum: { date: any; value: any }) => ({ name: datum.date, value: datum.value }), + domStyles: { + 'g2-tooltip': { + background: 'rgba(255, 255, 255, 0.9)', + boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)', + borderRadius: '4px', + }, + }, + }, + interactions: [{ type: 'element-active' }], + legend: false, + animation: { + appear: { + animation: 'scale-in-y', + duration: 1000, + }, + }, + xAxis: { + type: 'cat', + label: { + formatter: (text: string) => text, + }, + }, + }; +}; \ No newline at end of file diff --git a/src/pages/Company/ServiceManagement/components/chartfunnel.tsx b/src/pages/Company/ServiceManagement/components/chartfunnel.tsx new file mode 100644 index 0000000..9978ecc --- /dev/null +++ b/src/pages/Company/ServiceManagement/components/chartfunnel.tsx @@ -0,0 +1,89 @@ +import React, { useEffect } from "react"; +import { Card, Select, Spin, Empty, Row, Col } from 'antd'; +import * as echarts from 'echarts'; + +const Chartline: React.FC<{}> = (props) => { + + useEffect(() => { + initCharts() + }, []); + + const initCharts = () => { + const myChart = echarts.init(document.getElementById('main')); + const option = { + tooltip: { + trigger: 'item', + formatter: '{a}
{b} : {c}%' + }, + // toolbox: { + // feature: { + // dataView: { readOnly: false }, + // restore: {}, + // saveAsImage: {} + // } + // }, + legend: { + data: ['岗位1', '岗位2', '岗位3', '岗位4', '岗位5'] + }, + + series: [ + { + name: 'Funnel', + type: 'funnel', + left: '10%', + top: 60, + bottom: 60, + width: '80%', + min: 0, + max: 100, + minSize: '0%', + maxSize: '100%', + sort: 'descending', + gap: 2, + label: { + show: true, + position: 'inside' + }, + labelLine: { + length: 10, + lineStyle: { + width: 1, + type: 'solid' + } + }, + itemStyle: { + borderColor: '#fff', + borderWidth: 1 + }, + emphasis: { + label: { + fontSize: 20 + } + }, + data: [ + { value: 60, name: '岗位3' }, + { value: 40, name: '岗位4' }, + { value: 20, name: '岗位5' }, + { value: 80, name: '岗位2' }, + { value: 100, name: '岗位1' } + ] + } + ] + }; + myChart.setOption(option, true); + } + + + return ( + <> + +
+
+ + ); +}; +// 必须导出组件 +export default Chartline; diff --git a/src/pages/Company/ServiceManagement/index.tsx b/src/pages/Company/ServiceManagement/index.tsx new file mode 100644 index 0000000..76decad --- /dev/null +++ b/src/pages/Company/ServiceManagement/index.tsx @@ -0,0 +1,578 @@ +import React, { useEffect, useState, useMemo, useRef } from 'react'; +import { Card, Select, Button, Space, Spin, Empty, Row, Col, message, DatePicker } from 'antd'; +import { Line, Bar, Pie, Heatmap } from '@ant-design/charts'; +import { + getIndustryTrend, + getIndustryAreaTrend, + getSalaryTrend, + getWorkYearTrend, + getEducationTrend, +} from '@/services/analysis/industry'; +import dayjs from 'dayjs'; +import { useRequest } from '@umijs/max'; +import { + TimeDimension, + AnalysisType, + IndustryTrendState, + IndustryDataItem, + ChartConfig, +} from '@/types/analysis/industry'; +import { + formatQuarter, + formatDateForDisplay, + convertApiData, + convertSalaryData, + convertWorkYearData, + convertEducationData, +} from './utils'; +import { + getHeatmapConfig, + getIndustryChartConfig, + getSalaryChartConfig, + getWorkYearPieConfig, + getEducationBarConfig, +} from './components/chartconfigs'; +import { + IndustryTrendCard, + AreaAnalysisCard, + SalaryTrendCard, + WorkYearCard, + EducationCard, +} from './components/chartcards'; +import Chartfunnel from './components/chartfunnel' + +const { Option } = Select; +const { RangePicker } = DatePicker; + +const flattenAreaData = (apiResponse: any) => { + if (!apiResponse || typeof apiResponse !== 'object') { + return []; + } + + const flattenedData: { name: any; time: any; value: number }[] = []; + + for (const month in apiResponse) { + if (apiResponse.hasOwnProperty(month)) { + const areas = apiResponse[month]; + + areas.forEach((area: { name: any; time: any; data: string }) => { + flattenedData.push({ + name: area.name, + time: area.time, + value: parseInt(area.data) || 0, + }); + }); + } + } + + return flattenedData; +}; + +const IndustryTrendPage: React.FC = () => { + const [params, setParams] = useState({ + timeDimension: '月', + type: '岗位发布数量', + startTime: dayjs().subtract(5, 'month').format('YYYY-MM'), + endTime: dayjs().format('YYYY-MM'), + selectedIndustry: '', + selectedSalaryRange: '', + selectedWorkYearRange: '', + }); + + const [allData, setAllData] = useState([]); + const [areaData, setAreaData] = useState([]); + const [salaryData, setSalaryData] = useState([]); + const [availableIndustries, setAvailableIndustries] = useState([]); + const [availableSalaryRanges, setAvailableSalaryRanges] = useState([]); + const heatmapRef = useRef(null); + const containerRef = useRef(null); + const [workYearData, setWorkYearData] = useState([]); + const [availableWorkYearRanges, setAvailableWorkYearRanges] = useState([]); + const [educationData, setEducationData] = useState([]); + const [availableEducationLevels, setAvailableEducationLevels] = useState([]); + const [selectedEducationLevel, setSelectedEducationLevel] = useState(''); + + // 获取行业趋势数据 + const { loading: industryLoading, run: fetchIndustryData } = useRequest( + async () => { + let { startTime, endTime, timeDimension, type } = params; + + if (timeDimension === '季度') { + startTime = formatQuarter(startTime); + endTime = formatQuarter(endTime); + } + + return await getIndustryTrend({ + timeDimension, + type, + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertApiData(data); + setAllData(formattedData); + + const industries = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort(); + + setAvailableIndustries(industries); + + if (industries.length > 0 && !industries.includes(params.selectedIndustry)) { + setParams((p) => ({ ...p, selectedIndustry: industries[0] })); + } + }, + onError: (error) => { + message.error('行业数据加载失败'); + }, + }, + ); + + // 获取地区趋势数据 + const { loading: areaLoading, run: fetchAreaData } = useRequest( + async () => { + let { startTime, endTime, timeDimension, type } = params; + + if (timeDimension === '季度') { + startTime = formatQuarter(startTime); + endTime = formatQuarter(endTime); + } + + return await getIndustryAreaTrend({ + timeDimension, + type, + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (res) => { + const formattedData = flattenAreaData(res); + setAreaData(formattedData); + }, + onError: (error) => { + message.error('地区数据加载失败'); + }, + }, + ); + + // 获取薪资趋势数据 + const { loading: salaryLoading, run: fetchSalaryData } = useRequest( + async () => { + const now = dayjs(); + let startTime = now.subtract(1, 'year').format('YYYY-MM'); + let endTime = now.format('YYYY-MM'); + const timeDimension = '月'; + + return await getSalaryTrend({ + timeDimension, + type: '岗位发布数量', + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertSalaryData(data); + setSalaryData(formattedData); + + const ranges = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort((a, b) => { + const extractNumber = (str: string) => parseInt(str.replace(/[^0-9]/g, '') || 0); + return extractNumber(a) - extractNumber(b); + }); + + setAvailableSalaryRanges(ranges); + + if (ranges.length > 0 && !ranges.includes(params.selectedSalaryRange)) { + setParams((p) => ({ ...p, selectedSalaryRange: ranges[0] })); + } + }, + onError: (error) => { + message.error('薪资数据加载失败'); + }, + }, + ); + + // 获取工作年限数据 + const { loading: workYearLoading, run: fetchWorkYearData } = useRequest( + async () => { + const now = dayjs(); + let startTime = now.subtract(1, 'year').format('YYYY-MM'); + let endTime = now.format('YYYY-MM'); + const timeDimension = '月'; + + return await getWorkYearTrend({ + timeDimension, + type: '岗位发布数量', + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertWorkYearData(data); + setWorkYearData(formattedData); + + const ranges = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort((a, b) => { + const order = ['应届', '1-3年', '3-5年', '5年以上']; + return order.indexOf(a) - order.indexOf(b); + }); + + setAvailableWorkYearRanges(ranges); + if (ranges.length > 0 && !ranges.includes(params.selectedWorkYearRange)) { + setParams((p) => ({ ...p, selectedWorkYearRange: ranges[0] })); + } + }, + onError: (error) => { + message.error('工作经验数据加载失败'); + }, + }, + ); + + // 获取学历数据 + const { loading: educationLoading, run: fetchEducationData } = useRequest( + async () => { + const now = dayjs(); + let startTime = now.subtract(1, 'year').format('YYYY-MM'); + let endTime = now.format('YYYY-MM'); + const timeDimension = '月'; + + return await getEducationTrend({ + timeDimension, + type: '岗位发布数量', + startTime, + endTime, + }); + }, + { + manual: true, + onSuccess: (data) => { + const formattedData = convertEducationData(data); + setEducationData(formattedData); + + const levels = Array.from(new Set(formattedData.map((item: any) => item.category))) + .filter(Boolean) + .sort((a, b) => { + const order = ['不限', '初中及以下', '中专/中技', '大专', '本科', '硕士', '博士']; + return order.indexOf(a) - order.indexOf(b); + }); + + setAvailableEducationLevels(levels); + if (levels.length > 0 && !levels.includes(selectedEducationLevel)) { + setSelectedEducationLevel(levels[0]); + } + }, + onError: (error) => { + message.error('学历数据加载失败'); + }, + }, + ); + + const currentWorkYearData = useMemo(() => { + if (!params.selectedWorkYearRange || workYearData.length === 0) return []; + + return workYearData + .filter((item) => item.category === params.selectedWorkYearRange) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, '月'), + })) + .sort((a, b) => dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf()); + }, [workYearData, params.selectedWorkYearRange]); + + const currentIndustryData = useMemo(() => { + if (!params.selectedIndustry || allData.length === 0) return []; + + return allData + .filter((item) => item.category === params.selectedIndustry) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, params.timeDimension), + })) + .sort((a, b) => { + if (params.timeDimension === '季度') { + const [yearA, quarterA] = a.originalDate.split('-'); + const [yearB, quarterB] = b.originalDate.split('-'); + + const quarterToNumber = (q: string) => { + if (q.includes('第一')) return 1; + if (q.includes('第二')) return 2; + if (q.includes('第三')) return 3; + if (q.includes('第四')) return 4; + return 0; + }; + + return yearA === yearB + ? quarterToNumber(quarterA) - quarterToNumber(quarterB) + : parseInt(yearA) - parseInt(yearB); + } else if (params.timeDimension === '年') { + return parseInt(a.originalDate) - parseInt(b.originalDate); + } else { + return dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf(); + } + }); + }, [allData, params.selectedIndustry, params.timeDimension]); + + const currentSalaryData = useMemo(() => { + if (!params.selectedSalaryRange || salaryData.length === 0) return []; + + return salaryData + .filter((item) => item.category === params.selectedSalaryRange) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, '月'), + })) + .sort((a, b) => dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf()); + }, [salaryData, params.selectedSalaryRange]); + + const currentEducationData = useMemo(() => { + if (!selectedEducationLevel || educationData.length === 0) return []; + return educationData + .filter((item) => item.category === selectedEducationLevel) + .map((item) => ({ + ...item, + originalDate: item.date, + date: formatDateForDisplay(item.date, '月'), + })) + .sort((a, b) => dayjs(a.originalDate).valueOf() - dayjs(b.originalDate).valueOf()); + }, [educationData, selectedEducationLevel]); + + const heatmapConfig = useMemo( + () => getHeatmapConfig(areaData, params.timeDimension), + [areaData, params.timeDimension], + ); + + const industryChartConfig = useMemo( + () => getIndustryChartConfig(currentIndustryData, params.type), + [currentIndustryData, params.type], + ); + + const salaryChartConfig = useMemo( + () => getSalaryChartConfig(currentSalaryData), + [currentSalaryData], + ); + + const workYearPieConfig = useMemo( + () => getWorkYearPieConfig(workYearData, params.selectedWorkYearRange), + [workYearData, params.selectedWorkYearRange], + ); + + const educationBarConfig = useMemo( + () => getEducationBarConfig(educationData, selectedEducationLevel), + [educationData, selectedEducationLevel], + ); + + const handleTimeDimensionChange = (value: TimeDimension) => { + const now = dayjs(); + let newStartTime = ''; + + if (value === '月') { + newStartTime = now.subtract(5, 'month').format('YYYY-MM'); + } else if (value === '季度') { + newStartTime = now.subtract(6, 'quarter').format('YYYY-Q'); + } else { + newStartTime = now.subtract(5, 'year').format('YYYY'); + } + + setParams((p) => ({ + ...p, + timeDimension: value, + startTime: newStartTime, + endTime: + value === '月' + ? now.format('YYYY-MM') + : value === '季度' + ? now.format('YYYY-Q') + : now.format('YYYY'), + selectedIndustry: '', + })); + }; + + const handleDateRangeChange = (dates: any, dateStrings: [string, string]) => { + if (dates && dates[0] && dates[1]) { + setParams((p) => ({ + ...p, + startTime: dateStrings[0], + endTime: dateStrings[1], + })); + } + }; + + const disabledDate = (current: dayjs.Dayjs) => { + const now = dayjs(); + + if (params.timeDimension === '月') { + return current.isAfter(now.endOf('month')); + } else if (params.timeDimension === '季度') { + return current.isAfter(now.endOf('quarter')); + } else { + return current.isAfter(now.endOf('year')); + } + }; + + const getPickerValue = () => { + try { + return [ + dayjs( + params.startTime, + params.timeDimension === '年' + ? 'YYYY' + : params.timeDimension === '季度' + ? 'YYYY-Q' + : 'YYYY-MM', + ), + dayjs( + params.endTime, + params.timeDimension === '年' + ? 'YYYY' + : params.timeDimension === '季度' + ? 'YYYY-Q' + : 'YYYY-MM', + ), + ]; + } catch (e) { + return null; + } + }; + + useEffect(() => { + fetchIndustryData(); + fetchAreaData(); + fetchSalaryData(); + fetchWorkYearData(); + fetchEducationData(); + }, [params.timeDimension, params.startTime, params.endTime, params.type]); + + return ( +
+ +
+ + + + + + + + + +
+ + + + + setParams((p) => ({ ...p, selectedSalaryRange: value })) + } + /> + + {/* 行业趋势图表 - 全宽显示 */} + + + {/* 工作经验和学历要求 - 中等屏幕下分成两列 */} + + + + {/* + + setParams((p) => ({ ...p, selectedWorkYearRange: value })) + } + /> + */} + + + + {/* 区域分析和薪资趋势 - 中等屏幕下分成两列 */} + + + + + + setParams((p) => ({ ...p, selectedIndustry: value }))} + /> + + + + + +
+
+ ); +}; + +export default IndustryTrendPage; diff --git a/src/pages/Company/ServiceManagement/utils.ts b/src/pages/Company/ServiceManagement/utils.ts new file mode 100644 index 0000000..4c238ff --- /dev/null +++ b/src/pages/Company/ServiceManagement/utils.ts @@ -0,0 +1,232 @@ +import { TimeDimension, QuarterFormat, DateFormatter, QuarterFormatter, ApiDataConverter, IndustryDataItem, AreaDataItem } from '@/types/analysis/industry'; + +export const formatQuarter: QuarterFormatter = (dateStr: string): QuarterFormat => { + if (dateStr.includes('第')) return dateStr as QuarterFormat; + + const [year, quarterPart] = dateStr.includes('-Q') + ? dateStr.split('-Q') + : dateStr.split('-'); + + const quarterNum = quarterPart.replace('季度', ''); + const quarterMap: Record = { + '1': '第一季度', + '2': '第二季度', + '3': '第三季度', + '4': '第四季度' + }; + return `${year}-${quarterMap[quarterNum] || quarterPart}` as QuarterFormat; +}; + +export const formatDateForDisplay: DateFormatter = (dateStr: string, dimension: TimeDimension): string => { + try { + if (dimension === '年') return dateStr.split('-')[0]; + if (dimension === '季度') { + if (dateStr.includes('第')) { + const [year, quarter] = dateStr.split('-'); + return `${year}年${quarter}`; + } + const [year, quarterNum] = dateStr.split('-'); + const quarterMap: Record = { + '1': '第一季度', + '2': '第二季度', + '3': '第三季度', + '4': '第四季度', + 'Q1': '第一季度', + 'Q2': '第二季度', + 'Q3': '第三季度', + 'Q4': '第四季度' + }; + return `${year}年${quarterMap[quarterNum] || quarterNum}`; + } + const [year, month] = dateStr.split('-'); + return `${year}年${month}月`; + } catch (e) { + console.error('日期格式化错误:', e); + return dateStr; + } +}; + +export const convertApiData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date, + category: item.name || item.category || '未知行业', + value: Number(item.data || item.value) || 0 + })); + } + if (typeof apiData === 'object') { + const result: IndustryDataItem[] = []; + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + result.push({ + date, + category: item.name || item.category || '未知行业', + value: Number(item.data || item.value) || 0 + }); + }); + } + }); + return result; + } + return []; + } catch (error) { + console.error('数据转换错误:', error); + return []; + } +}; + +export const convertAreaApiData = (apiData: any): AreaDataItem[] => { + if (!apiData?.data) { + console.warn('convertAreaApiData: apiData.data 为空'); + return []; + } + + try { + const result: AreaDataItem[] = []; + + // 处理嵌套的月份数据 + if (typeof apiData.data === 'object' && !Array.isArray(apiData.data)) { + Object.entries(apiData.data).forEach(([time, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + if (!item) return; + const uniqueName = items.filter((i: any) => i.name === item.name).length > 1 + ? `${item.name}_${index}` + : item.name; + result.push({ + name: item.name || '未知区域', + value: Number(item.data) || 0, + time: item.time || time, + x:uniqueName, + y:time, + category: item.name, + originalData: item + }); + }); + } + }); + return result; + } + if (Array.isArray(apiData.data)) { + return apiData.data.map((item: any) => ({ + name: item.name || '未知区域', + value: Number(item.data) || 0, + time: item.time || '未知时间', + x: item.name, + y: item.time, + category: item.name, + originalData: item + })); + } + return []; + } catch (error) { + console.error('数据转换错误:', error); + return []; + } +}; + +export const convertSalaryData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date, + category: item.name || item.category || '未知薪资区间', + value: Number(item.data || item.value) || 0 + })); + } + if (typeof apiData === 'object') { + const result: IndustryDataItem[] = []; + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + result.push({ + date, + category: item.name || item.category || '未知薪资区间', + value: Number(item.data || item.value) || 0 + }); + }); + } + }); + return result; + } + return []; + } catch (error) { + console.error('薪资数据转换错误:', error); + return []; + } +}; + +export const convertWorkYearData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date || '', + category: item.name || item.category || '未知经验要求', + value: Number(item.data || item.value || 0) // 确保数值不为null/undefined + })); + } + if (typeof apiData === 'object') { + const result: IndustryDataItem[] = []; + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + result.push({ + date: date || '', + category: item.name || item.category || '未知经验要求', + value: Number(item.data || item.value || 0) // 确保数值不为null/undefined + }); + }); + } + }); + return result; + } + return []; + } catch (error) { + console.error('工作经验数据转换错误:', error); + return []; + } +}; +export const convertEducationData: ApiDataConverter = (apiData: any) => { + if (!apiData) return []; + try { + const result: any[] = []; + + // 处理嵌套的月份数据 + if (typeof apiData === 'object' && !Array.isArray(apiData)) { + Object.entries(apiData).forEach(([date, items]) => { + if (Array.isArray(items)) { + items.forEach((item: any) => { + if (!item) return; // 跳过空项 + result.push({ + date: date || '', // 确保日期不为undefined + category: item.name || item.category || '不限', // 默认值 + value: Number(item.data || item.value || 0), // 确保数值有效 + originalData: item + }); + }); + } + }); + return result; + } + + // 处理数组格式的响应 + if (Array.isArray(apiData)) { + return apiData.map(item => ({ + date: item.time || item.date || '', + category: item.name || item.category || '不限', + value: Number(item.data || item.value || 0), + originalData: item + })); + } + + return []; + } catch (error) { + console.error('学历数据转换错误:', error); + return []; + } +}; \ No newline at end of file