diff --git a/ruoyi-admin/src/main/resources/static/7694.224e8115.async.js b/ruoyi-admin/src/main/resources/static/7694.224e8115.async.js
new file mode 100644
index 0000000..9488373
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/static/7694.224e8115.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[7694,8906],{37694:function(x,h,e){e.r(h),e.d(h,{default:function(){return Z}});var O=e(5574),p=e.n(O),y=e(67294),g=e(2453),D=e(17788),b=e(71230),_=e(15746),i=e(23799),j=e(83622),L=e(78957),o=e(76772),E=e(9025),C=e(42016),c=e(68906),P={avatarPreview:"avatarPreview___aVJPD"},u=e(88484),r=e(87740),v=e(10149),T=e(24969),U=e(52745),n=e(85893),I=function(A){var l=(0,y.useRef)(null),B=(0,y.useState)(),W=p()(B,2),t=W[0],a=W[1],m=(0,y.useState)(),R=p()(m,2),d=R[0],H=R[1];(0,y.useEffect)(function(){a(A.data)},[A]);var F=(0,o.useIntl)(),z=function(){var s=l==null?void 0:l.current,f=s==null?void 0:s.cropper;f.getCroppedCanvas().toBlob(function(Y){var S=new FormData;S.append("avatarfile",Y),(0,E.gg)(S).then(function(w){w.code===200?(g.ZP.success(w.msg),A.onFinished(!0)):g.ZP.warning(w.msg)})},"image/png")},N=function(){A.onFinished(!1)},G=function(){var s=l==null?void 0:l.current,f=s==null?void 0:s.cropper;H(f.getCroppedCanvas().toDataURL())},$=function(){var s=l==null?void 0:l.current,f=s==null?void 0:s.cropper;f.rotate(90)},X=function(){var s=l==null?void 0:l.current,f=s==null?void 0:s.cropper;f.rotate(-90)},Q=function(){var s=l==null?void 0:l.current,f=s==null?void 0:s.cropper;f.zoom(.1)},J=function(){var s=l==null?void 0:l.current,f=s==null?void 0:s.cropper;f.zoom(-.1)},V=function(s){var f=new FileReader;f.readAsDataURL(s),f.onload=function(){a(f.result)}};return(0,n.jsxs)(D.Z,{width:800,title:F.formatMessage({id:"system.user.modify_avatar",defaultMessage:"\u4FEE\u6539\u5934\u50CF"}),open:A.open,destroyOnClose:!0,onOk:z,onCancel:N,children:[(0,n.jsxs)(b.Z,{gutter:[16,16],children:[(0,n.jsx)(_.Z,{span:12,order:1,children:(0,n.jsx)(C.f,{ref:l,src:t,style:{height:350,width:"100%",marginBottom:"16px"},initialAspectRatio:1,guides:!1,crop:G,zoomable:!0,zoomOnWheel:!0,rotatable:!0})}),(0,n.jsx)(_.Z,{span:12,order:2,children:(0,n.jsx)("div",{className:P.avatarPreview,children:(0,n.jsx)("img",{src:d,style:{height:"100%",width:"100%"}})})})]}),(0,n.jsxs)(b.Z,{gutter:[16,16],children:[(0,n.jsx)(_.Z,{span:6,children:(0,n.jsx)(i.Z,{beforeUpload:V,maxCount:1,children:(0,n.jsxs)(j.ZP,{children:[(0,n.jsx)(u.Z,{}),"\u4E0A\u4F20"]})})}),(0,n.jsx)(_.Z,{children:(0,n.jsxs)(L.Z,{children:[(0,n.jsx)(j.ZP,{icon:(0,n.jsx)(r.Z,{}),onClick:$}),(0,n.jsx)(j.ZP,{icon:(0,n.jsx)(v.Z,{}),onClick:X}),(0,n.jsx)(j.ZP,{icon:(0,n.jsx)(T.Z,{}),onClick:Q}),(0,n.jsx)(j.ZP,{icon:(0,n.jsx)(U.Z,{}),onClick:J})]})})]})]})},Z=I},9025:function(x,h,e){e.d(h,{Lj:function(){return I},Nq:function(){return P},PR:function(){return E},_L:function(){return T},az:function(){return U},cn:function(){return C},gg:function(){return A},kX:function(){return r},lE:function(){return L},tW:function(){return B},wp:function(){return K},x7:function(){return W},xB:function(){return Z}});var O=e(15009),p=e.n(O),y=e(97857),g=e.n(y),D=e(99289),b=e.n(D),_=e(31981),i=e(76772),j=e(30964);function L(t,a){return o.apply(this,arguments)}function o(){return o=b()(p()().mark(function t(a,m){return p()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return d.abrupt("return",(0,i.request)("/api/system/user/list",g()({method:"GET",headers:{"Content-Type":"application/json;charset=UTF-8"},params:a},m||{})));case 1:case"end":return d.stop()}},t)})),o.apply(this,arguments)}function E(t,a){return(0,i.request)("/api/system/user/".concat(t),g()({method:"GET"},a||{}))}function C(t,a){return c.apply(this,arguments)}function c(){return c=b()(p()().mark(function t(a,m){return p()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return d.abrupt("return",(0,i.request)("/api/system/user",g()({method:"POST",headers:{"Content-Type":"application/json;charset=UTF-8"},data:a},m||{})));case 1:case"end":return d.stop()}},t)})),c.apply(this,arguments)}function P(t,a){return u.apply(this,arguments)}function u(){return u=b()(p()().mark(function t(a,m){return p()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return d.abrupt("return",(0,i.request)("/api/system/user",g()({method:"PUT",headers:{"Content-Type":"application/json;charset=UTF-8"},data:a},m||{})));case 1:case"end":return d.stop()}},t)})),u.apply(this,arguments)}function r(t,a){return v.apply(this,arguments)}function v(){return v=b()(p()().mark(function t(a,m){return p()().wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return d.abrupt("return",(0,i.request)("/api/system/user/".concat(a),g()({method:"DELETE"},m||{})));case 1:case"end":return d.stop()}},t)})),v.apply(this,arguments)}function T(t,a){return(0,j.su)("/api/system/user/export",{params:t},"user_".concat(new Date().getTime(),".xlsx"))}function U(t,a){var m={userId:t,status:a};return(0,i.request)("/api/system/user/changeStatus",{method:"put",data:m})}function n(){return request("/api/system/user/profile",{method:"get"})}function I(t){return(0,i.request)("/api/system/user/profile",{method:"put",data:t})}function Z(t,a){var m={userId:t,password:a};return(0,i.request)("/api/system/user/resetPwd",{method:"put",data:m})}function K(t,a){var m={oldPassword:t,newPassword:a};return(0,i.request)("/api/system/user/profile/updatePwd",{method:"put",params:m})}function A(t){return(0,i.request)("/api/system/user/profile/avatar",{method:"post",data:t})}function l(t){return request("/system/user/authRole/"+t,{method:"get"})}function B(t){return(0,i.request)("/system/user/authRole",{method:"put",params:t})}function W(t){return new Promise(function(a){(0,i.request)("/api/system/user/deptTree",{method:"get",params:t}).then(function(m){if(m&&m.code===200){var R=(0,_.lt)(m.data);a(R)}else a([])})})}},30964:function(x,h,e){e.d(h,{p6:function(){return L},su:function(){return o}});var O=e(15009),p=e.n(O),y=e(97857),g=e.n(y),D=e(99289),b=e.n(D),_=e(76772),i={xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",zip:"application/zip"};function j(c,P){var u=document.createElement("a"),r=new Blob([c.data],{type:P}),v=new RegExp("filename=([^;]+\\.[^\\.;]+);*"),T=decodeURI(c.headers["content-disposition"]),U=v.exec(T),n=U?U[1]:"file";n=n.replace(/"/g,""),u.style.display="none",u.href=URL.createObjectURL(r),u.setAttribute("download",n),document.body.appendChild(u),u.click(),URL.revokeObjectURL(u.href),document.body.removeChild(u)}function L(c){(0,_.request)(c,{method:"GET",responseType:"blob",getResponse:!0}).then(function(P){j(P,i.zip)})}function o(c,P,u){return E.apply(this,arguments)}function E(){return E=b()(p()().mark(function c(P,u,r){return p()().wrap(function(T){for(;;)switch(T.prev=T.next){case 0:return T.abrupt("return",(0,_.request)(P,g()(g()({},u),{},{method:"POST",responseType:"blob"})).then(function(U){var n=document.createElement("a"),I=U;n.style.display="none",n.href=URL.createObjectURL(I),n.setAttribute("download",r),document.body.appendChild(n),n.click(),URL.revokeObjectURL(n.href),document.body.removeChild(n)}));case 1:case"end":return T.stop()}},c)})),E.apply(this,arguments)}function C(c){window.location.href="/api/common/download?fileName=".concat(encodeURI(c),"&delete=",!0)}},31981:function(x,h,e){e.d(h,{C2:function(){return p},lt:function(){return g}});var O=e(87735);function p(D,b,_,i,j,L){var o={id:b||"id",name:_||"name",parentId:i||"parentId",parentName:j||"parentName",childrenList:L||"children"},E=[],C=[],c=[];D.forEach(function(u){var r=u,v=r[o.parentId];E[v]||(E[v]=[]),r.key=r[o.id],r.title=r[o.name],r.value=r[o.id],r[o.childrenList]=null,C[r[o.id]]=r,E[v].push(r)}),D.forEach(function(u){var r=u,v=r[o.parentId];C[v]||(r[o.parentName]="",c.push(r))});function P(u){var r=u;E[r[o.id]]&&(r[o.childrenList]||(r[o.childrenList]=[]),r[o.childrenList]=E[r[o.id]]),r[o.childrenList]&&r[o.childrenList].forEach(function(v){var T=v;T[o.parentName]=r[o.name],P(T)})}return c.forEach(function(u){P(u)}),c}var y=function(){return parse(window.location.href.split("?")[1])};function g(D){var b=D.map(function(_){var i={id:_.id,title:_.label,key:"".concat(_.id),value:_.id};return _.children&&(i.children=g(_.children)),i});return b}},68906:function(x,h,e){e.r(h)},15746:function(x,h,e){var O=e(21584);h.Z=O.Z},71230:function(x,h,e){var O=e(17621);h.Z=O.Z}}]);
