diff --git a/ruoyi-admin/src/main/resources/static/2222.0f9d8d41.async.js b/ruoyi-admin/src/main/resources/static/2222.0f9d8d41.async.js
new file mode 100644
index 0000000..29ca2fa
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/static/2222.0f9d8d41.async.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[2222],{5966:function(x,h,n){var T=n(97685),t=n(1413),g=n(91),O=n(21770),C=n(99859),b=n(55241),j=n(98423),A=n(67294),D=n(92179),s=n(85893),W=["fieldProps","proFieldProps"],B=["fieldProps","proFieldProps"],m="text",M=function(r){var e=r.fieldProps,o=r.proFieldProps,a=(0,g.Z)(r,W);return(0,s.jsx)(D.Z,(0,t.Z)({valueType:m,fieldProps:e,filedConfig:{valueType:m},proFieldProps:o},a))},d=function(r){var e=(0,O.Z)(r.open||!1,{value:r.open,onChange:r.onOpenChange}),o=(0,T.Z)(e,2),a=o[0],P=o[1];return(0,s.jsx)(C.Z.Item,{shouldUpdate:!0,noStyle:!0,children:function(v){var l,E=v.getFieldValue(r.name||[]);return(0,s.jsx)(b.Z,(0,t.Z)((0,t.Z)({getPopupContainer:function(_){return _&&_.parentNode?_.parentNode:_},onOpenChange:function(_){return P(_)},content:(0,s.jsxs)("div",{style:{padding:"4px 0"},children:[(l=r.statusRender)===null||l===void 0?void 0:l.call(r,E),r.strengthText?(0,s.jsx)("div",{style:{marginTop:10},children:(0,s.jsx)("span",{children:r.strengthText})}):null]}),overlayStyle:{width:240},placement:"rightTop"},r.popoverProps),{},{open:a,children:r.children}))}})},R=function(r){var e=r.fieldProps,o=r.proFieldProps,a=(0,g.Z)(r,B),P=(0,A.useState)(!1),p=(0,T.Z)(P,2),v=p[0],l=p[1];return e!=null&&e.statusRender&&a.name?(0,s.jsx)(d,{name:a.name,statusRender:e==null?void 0:e.statusRender,popoverProps:e==null?void 0:e.popoverProps,strengthText:e==null?void 0:e.strengthText,open:v,onOpenChange:l,children:(0,s.jsx)("div",{children:(0,s.jsx)(D.Z,(0,t.Z)({valueType:"password",fieldProps:(0,t.Z)((0,t.Z)({},(0,j.Z)(e,["statusRender","popoverProps","strengthText"])),{},{onBlur:function(i){var _;e==null||(_=e.onBlur)===null||_===void 0||_.call(e,i),l(!1)},onClick:function(i){var _;e==null||(_=e.onClick)===null||_===void 0||_.call(e,i),l(!0)}}),proFieldProps:o,filedConfig:{valueType:m}},a))})}):(0,s.jsx)(D.Z,(0,t.Z)({valueType:"password",fieldProps:e,proFieldProps:o,filedConfig:{valueType:m}},a))},c=M;c.Password=R,c.displayName="ProFormComponent",h.Z=c},62222:function(x,h,n){n.r(h);var T=n(15009),t=n.n(T),g=n(97857),O=n.n(g),C=n(99289),b=n.n(C),j=n(5574),A=n.n(j),D=n(67294),s=n(99859),W=n(17788),B=n(76772),m=n(97269),M=n(5966),d=n(85893),R=function(u){var r=s.Z.useForm(),e=A()(r,1),o=e[0],a=s.Z.useWatch("password",o),P=u.values.userId,p=(0,B.useIntl)(),v=function(){o.submit()},l=function(){u.onCancel()},E=function(){var _=b()(t()().mark(function F(f){return t()().wrap(function(I){for(;;)switch(I.prev=I.next){case 0:u.onSubmit(O()(O()({},f),{},{userId:P}));case 1:case"end":return I.stop()}},F)}));return function(f){return _.apply(this,arguments)}}(),i=function(F,f){return f===a?Promise.resolve():Promise.reject(new Error("\u4E24\u6B21\u5BC6\u7801\u8F93\u5165\u4E0D\u4E00\u81F4"))};return(0,d.jsx)(W.Z,{width:640,title:p.formatMessage({id:"system.user.reset.password",defaultMessage:"\u5BC6\u7801\u91CD\u7F6E"}),open:u.open,destroyOnClose:!0,onOk:v,onCancel:l,children:(0,d.jsxs)(m.A,{grid:!0,form:o,layout:"horizontal",onFinish:E,initialValues:{password:"",confirm_password:""},children:[(0,d.jsxs)("p",{children:["\u8BF7\u8F93\u5165\u7528\u6237",u.values.userName,"\u7684\u65B0\u5BC6\u7801\uFF01"]}),(0,d.jsx)(M.Z.Password,{name:"password",label:"\u767B\u5F55\u5BC6\u7801",rules:[{required:!0,message:"\u767B\u5F55\u5BC6\u7801\u4E0D\u53EF\u4E3A\u7A7A\u3002"}]}),(0,d.jsx)(M.Z.Password,{name:"confirm_password",label:"\u786E\u8BA4\u5BC6\u7801",rules:[{required:!0,message:"\u786E\u8BA4\u5BC6\u7801"},{validator:i}]})]})})};h.default=R}}]);
