{if(!o._listeners)return;let l=o._listeners.length;for(;l-- >0;)o._listeners[l](a);o._listeners=null}),this.promise.then=a=>{let l;const r=new Promise(s=>{o.subscribe(s),l=s}).then(a);return r.cancel=function(){o.unsubscribe(l)},r},t(function(l,r,s){o.reason||(o.reason=new Zs(l,r,s),n(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=o=>{t.abort(o)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new g9(function(a){t=a}),cancel:t}}};function qfe(e){return function(n){return e.apply(null,n)}}function Yfe(e){return Re.isObject(e)&&e.isAxiosError===!0}const M2={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(M2).forEach(([e,t])=>{M2[t]=e});function b9(e){const t=new yr(e),n=G_(yr.prototype.request,t);return Re.extend(n,yr.prototype,t,{allOwnKeys:!0}),Re.extend(n,t,null,{allOwnKeys:!0}),n.create=function(a){return b9(Mr(e,a))},n}const Cn=b9(Ju);Cn.Axios=yr;Cn.CanceledError=Zs;Cn.CancelToken=Ufe;Cn.isCancel=c9;Cn.VERSION=m9;Cn.toFormData=Zf;Cn.AxiosError=Dt;Cn.Cancel=Cn.CanceledError;Cn.all=function(t){return Promise.all(t)};Cn.spread=qfe;Cn.isAxiosError=Yfe;Cn.mergeConfig=Mr;Cn.AxiosHeaders=go;Cn.formToJSON=e=>u9(Re.isHTMLForm(e)?new FormData(e):e);Cn.getAdapter=h9.getAdapter;Cn.HttpStatusCode=M2;Cn.default=Cn;const{Axios:fpe,AxiosError:ppe,CanceledError:vpe,isCancel:hpe,CancelToken:mpe,VERSION:gpe,all:bpe,Cancel:ype,isAxiosError:wpe,spread:_pe,toFormData:Cpe,AxiosHeaders:Spe,HttpStatusCode:kpe,formToJSON:Epe,getAdapter:xpe,mergeConfig:Tpe}=Cn,Gfe=["/admin/auth/captcha","/admin/auth/login","/admin/auth/refresh"];let Vi=!1,xc=null,rd=[];const Ao=Cn.create({baseURL:"/api",timeout:3e4});function y9(e){return e?Gfe.some(t=>e.includes(t)):!1}async function Xfe(){const e=Yf();if(!e)return!1;try{const{refreshToken:t}=await Yt(async()=>{const{refreshToken:o}=await Promise.resolve().then(()=>t0e);return{refreshToken:o}},void 0),n=await t(e);if(n.code===0&&n.data){const{accessToken:o,refreshToken:a,expiresIn:l}=n.data;return nd(o,a,l),!0}return!1}catch(t){return console.error("Token refresh failed:",t),!1}}async function w9(){if(Vi)return xc;Vi=!0,xc=Xfe();try{const e=await xc;return e?rd.forEach(({config:t,resolve:n})=>{t.headers.Authorization=`Bearer ${qu()}`,n(Ao(t))}):rd.forEach(({reject:t})=>{t(new Error("Token refresh failed"))}),e}finally{Vi=!1,xc=null,rd=[]}}async function Jfe(e){const t=e.config;return t._retry||y9(t.url)?Promise.reject(e):Yf()?(t._retry=!0,Vi?new Promise((a,l)=>{rd.push({config:t,resolve:a,reject:l})}):await w9()?(t.headers.Authorization=`Bearer ${qu()}`,Ao(t)):(Bi(),Lo.error("登录已过期,请重新登录"),zl.push("/login"),Promise.reject(e))):(Bi(),zl.push("/login"),Promise.reject(e))}Ao.interceptors.request.use(async e=>{if(y9(e.url))return e;bde()&&!Vi&&Yf()&&await w9();const t=qu();return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>(console.error("请求错误:",e),Promise.reject(e)));Ao.interceptors.response.use(e=>{const t=e.data;return t.code===0?t:(Lo.error(t.message||"请求失败"),Promise.reject(new Error(t.message||"请求失败")))},async e=>{if(console.error("响应错误:",e),e.response){const{status:t,data:n}=e.response;switch(t){case 401:return Jfe(e);case 403:Lo.error("没有操作权限");break;case 404:Lo.error("请求的资源不存在");break;case 500:Lo.error((n==null?void 0:n.message)||"服务器内部错误");break;default:Lo.error((n==null?void 0:n.message)||"请求失败")}}else Lo.error("网络连接失败");return Promise.reject(e)});function wo(e){return Ao(e)}function Zfe(){return wo({url:"/admin/auth/captcha",method:"post"})}function _9(e){return wo({url:"/admin/auth/login",method:"post",data:e})}function Qfe(e){return wo({url:"/admin/auth/refresh",method:"post",data:{refreshToken:e}})}function C9(){return wo({url:"/admin/auth/info",method:"get"})}function e0e(e){return wo({url:"/admin/auth/password",method:"put",data:e})}function S9(){return wo({url:"/admin/auth/logout",method:"post"})}function k9(){return wo({url:"/admin/auth/revoke-all",method:"post"})}const t0e=Object.freeze(Object.defineProperty({__proto__:null,changePassword:e0e,getCaptcha:Zfe,getUserInfo:C9,login:_9,logout:S9,refreshToken:Qfe,revokeAllTokens:k9},Symbol.toStringTag,{value:"Module"})),nm=Q2("user",()=>{const e=V(qu()),t=V(Yf()),n=V(null),o=k(()=>e.value);async function a(f){const p=await _9(f),{accessToken:m,refreshToken:v,expiresIn:h,userInfo:g}=p.data,b=m||p.data.token,w=v||"";return e.value=b,t.value=w,n.value=g,w?nd(b,w,h):nd(b,"",h),p}async function l(){const f=await C9();return n.value=f.data,f.data}async function r(){try{await S9()}catch(f){console.warn("Logout API call failed:",f)}e.value=null,t.value=null,n.value=null,Bi(),x6(),zl.push("/login")}async function s(){try{await k9()}catch(f){console.warn("Revoke all tokens API call failed:",f)}e.value=null,t.value=null,n.value=null,Bi(),x6(),zl.push("/login")}function u(){e.value=null,t.value=null,n.value=null,Bi()}function c(f,p,m){e.value=f,t.value=p,m!==void 0&&nd(f,p,m)}function d(){return!!e.value}return{token:o,accessToken:e,refreshToken:t,userInfo:n,login:a,getUserInfo:l,logout:r,logoutAllDevices:s,resetState:u,updateTokens:c,isLoggedIn:d}});function n0e(){return wo({url:"/admin/menus/user",method:"get"})}function Mpe(){return wo({url:"/admin/menus",method:"get"})}function $pe(e){return wo({url:"/admin/menus",method:"post",data:e})}function Ope(e,t){return wo({url:`/admin/menus/${e}`,method:"put",data:t})}function Ape(e){return wo({url:`/admin/menus/${e}`,method:"delete"})}const o0e=z({__name:"SidebarItem",props:{item:{}},setup(e){const t=e,n=k(()=>{var a;return((a=t.item.children)==null?void 0:a.filter(l=>l.menuType!==3&&l.status===1))||[]}),o=k(()=>n.value.length>0);return(a,l)=>{const r=lt("el-icon"),s=lt("SidebarItem",!0),u=lt("el-sub-menu"),c=lt("el-menu-item");return o.value?(C(),se(u,{key:0,index:e.item.path||`menu_${e.item.id}`},{title:Z(()=>[e.item.icon?(C(),se(r,{key:0},{default:Z(()=>[(C(),se(st(e.item.icon)))]),_:1})):le("",!0),x("span",null,Ce(e.item.name),1)]),default:Z(()=>[(C(!0),O(Fe,null,gt(n.value,d=>(C(),se(s,{key:d.id,item:d},null,8,["item"]))),128))]),_:1},8,["index"])):(C(),se(c,{key:1,index:e.item.path||""},{title:Z(()=>[mt(Ce(e.item.name),1)]),default:Z(()=>[e.item.icon?(C(),se(r,{key:0},{default:Z(()=>[(C(),se(st(e.item.icon)))]),_:1})):le("",!0)]),_:1},8,["index"]))}}}),a0e={class:"sidebar-container"},l0e={class:"sidebar-logo"},r0e={key:0,class:"logo-title"},s0e={key:1,class:"logo-title-mini"},i0e=z({__name:"Sidebar",props:{collapse:{type:Boolean}},setup(e){const t=q_(),n=x9(),o=k(()=>n.menus),a=k(()=>t.path);return(l,r)=>{const s=lt("el-menu"),u=lt("el-scrollbar");return C(),O("div",a0e,[x("div",l0e,[e.collapse?(C(),O("span",s0e,"HB")):(C(),O("span",r0e,"HoneyBox"))]),G(u,null,{default:Z(()=>[G(s,{"default-active":a.value,collapse:e.collapse,"unique-opened":!0,"background-color":"transparent","text-color":"var(--sidebar-text)","active-text-color":"var(--sidebar-text-active)",class:"sidebar-menu",router:""},{default:Z(()=>[(C(!0),O(Fe,null,gt(o.value,c=>(C(),se(o0e,{key:c.id,item:c},null,8,["item"]))),128))]),_:1},8,["default-active","collapse"])]),_:1})])}}}),u0e=Xs(i0e,[["__scopeId","data-v-5379d211"]]),$2=[{name:"blue",label:"天空蓝",primaryColor:"#4A90D9",primaryLight:"#74B9FF",primaryDark:"#2B7DE9",primaryBg:"#E8F4FD",sidebarBg:"#F0F7FF",sidebarLogoBg:"#4A90D9",sidebarTextActive:"#4A90D9",bgPage:"#F5F9FC",bgLight:"#F0F7FF",bgHover:"#E8F4FD",loginBgStart:"#74B9FF",loginBgEnd:"#4A90D9"},{name:"green",label:"翠绿",primaryColor:"#52C41A",primaryLight:"#73D13D",primaryDark:"#389E0D",primaryBg:"#F6FFED",sidebarBg:"#F6FFED",sidebarLogoBg:"#52C41A",sidebarTextActive:"#52C41A",bgPage:"#F9FFF6",bgLight:"#F6FFED",bgHover:"#D9F7BE",loginBgStart:"#73D13D",loginBgEnd:"#52C41A"},{name:"purple",label:"典雅紫",primaryColor:"#722ED1",primaryLight:"#9254DE",primaryDark:"#531DAB",primaryBg:"#F9F0FF",sidebarBg:"#F9F0FF",sidebarLogoBg:"#722ED1",sidebarTextActive:"#722ED1",bgPage:"#FBF5FF",bgLight:"#F9F0FF",bgHover:"#EFDBFF",loginBgStart:"#9254DE",loginBgEnd:"#722ED1"},{name:"orange",label:"活力橙",primaryColor:"#FA8C16",primaryLight:"#FFA940",primaryDark:"#D46B08",primaryBg:"#FFF7E6",sidebarBg:"#FFF7E6",sidebarLogoBg:"#FA8C16",sidebarTextActive:"#FA8C16",bgPage:"#FFFBF5",bgLight:"#FFF7E6",bgHover:"#FFE7BA",loginBgStart:"#FFA940",loginBgEnd:"#FA8C16"},{name:"red",label:"中国红",primaryColor:"#F5222D",primaryLight:"#FF4D4F",primaryDark:"#CF1322",primaryBg:"#FFF1F0",sidebarBg:"#FFF1F0",sidebarLogoBg:"#F5222D",sidebarTextActive:"#F5222D",bgPage:"#FFFAFA",bgLight:"#FFF1F0",bgHover:"#FFCCC7",loginBgStart:"#FF4D4F",loginBgEnd:"#F5222D"},{name:"dark",label:"暗夜黑",primaryColor:"#1890FF",primaryLight:"#40A9FF",primaryDark:"#096DD9",primaryBg:"#111B26",sidebarBg:"#001529",sidebarLogoBg:"#002140",sidebarTextActive:"#1890FF",bgPage:"#0D1117",bgLight:"#161B22",bgHover:"#21262D",loginBgStart:"#001529",loginBgEnd:"#000C17"}],S6="honeybox-admin-theme",k6="honeybox-admin-custom-theme",om=Q2("theme",()=>{const e=V("blue"),t=V(null),n=V(!1),o=()=>{const c=localStorage.getItem(S6),d=localStorage.getItem(k6);d&&(t.value=JSON.parse(d)),c&&(e.value=c,a(c))},a=c=>{let d;if(c==="custom"&&t.value?d=t.value:d=$2.find(p=>p.name===c),!d)return;const f=document.documentElement;d.primaryColor&&(f.style.setProperty("--primary-color",d.primaryColor),f.style.setProperty("--el-color-primary",d.primaryColor)),d.primaryLight&&f.style.setProperty("--primary-light",d.primaryLight),d.primaryDark&&f.style.setProperty("--primary-dark",d.primaryDark),d.primaryBg&&f.style.setProperty("--primary-bg",d.primaryBg),d.sidebarBg&&f.style.setProperty("--sidebar-bg",d.sidebarBg),d.sidebarLogoBg&&f.style.setProperty("--sidebar-logo-bg",d.sidebarLogoBg),d.sidebarTextActive&&(f.style.setProperty("--sidebar-text-active",d.sidebarTextActive),f.style.setProperty("--sidebar-item-active",d.primaryBg||d.sidebarBg||""),f.style.setProperty("--sidebar-item-hover",d.bgHover||"")),d.bgPage&&(f.style.setProperty("--bg-page",d.bgPage),f.style.setProperty("--el-bg-color-page",d.bgPage)),d.bgLight&&f.style.setProperty("--bg-light",d.bgLight),d.bgHover&&f.style.setProperty("--bg-hover",d.bgHover),d.loginBgStart&&f.style.setProperty("--login-bg-start",d.loginBgStart),d.loginBgEnd&&f.style.setProperty("--login-bg-end",d.loginBgEnd),d.primaryColor&&l(d.primaryColor)},l=c=>{const d=document.documentElement,f=c.replace("#",""),p=parseInt(f.substring(0,2),16),m=parseInt(f.substring(2,4),16),v=parseInt(f.substring(4,6),16);[3,5,7,8,9].forEach(y=>{const S=y/10,E=Math.round(p+(255-p)*S),T=Math.round(m+(255-m)*S),M=Math.round(v+(255-v)*S);d.style.setProperty(`--el-color-primary-light-${y}`,`rgb(${E}, ${T}, ${M})`)});const g=.2,b=Math.round(p*(1-g)),w=Math.round(m*(1-g)),_=Math.round(v*(1-g));d.style.setProperty("--el-color-primary-dark-2",`rgb(${b}, ${w}, ${_})`)},r=c=>{e.value=c,localStorage.setItem(S6,c),a(c)};return{currentTheme:e,customTheme:t,showThemeDrawer:n,initTheme:o,setTheme:r,saveCustomTheme:c=>{t.value={...c,name:"custom",label:"自定义"},localStorage.setItem(k6,JSON.stringify(t.value)),r("custom")},toggleThemeDrawer:()=>{n.value=!n.value},applyTheme:a}}),c0e={class:"header-container"},d0e={class:"header-left"},f0e={class:"header-right"},p0e={class:"user-info"},v0e={class:"username"},h0e=z({__name:"Header",props:{collapse:{type:Boolean}},emits:["toggle-collapse"],setup(e){const t=q_(),n=ude(),o=nm(),a=om(),l=k(()=>o.userInfo),r=k(()=>t.matched.filter(c=>{var d;return(d=c.meta)==null?void 0:d.title}).map(c=>{var d;return{path:c.path,title:(d=c.meta)==null?void 0:d.title}})),s=async u=>{switch(u){case"profile":n.push("/profile");break;case"password":n.push("/password");break;case"logout":try{await I_.confirm("确定要退出登录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await o.logout()}catch{}break}};return(u,c)=>{const d=lt("el-icon"),f=lt("el-breadcrumb-item"),p=lt("el-breadcrumb"),m=lt("el-tooltip"),v=lt("el-avatar"),h=lt("el-dropdown-item"),g=lt("el-dropdown-menu"),b=lt("el-dropdown");return C(),O("div",c0e,[x("div",d0e,[G(d,{class:"collapse-btn",onClick:c[0]||(c[0]=w=>u.$emit("toggle-collapse"))},{default:Z(()=>[e.collapse?(C(),se(i(b8),{key:1})):(C(),se(i(y8),{key:0}))]),_:1}),G(p,{separator:"/"},{default:Z(()=>[(C(!0),O(Fe,null,gt(r.value,w=>(C(),se(f,{key:w.path},{default:Z(()=>[mt(Ce(w.title),1)]),_:2},1024))),128))]),_:1})]),x("div",f0e,[G(m,{content:"主题设置",placement:"bottom"},{default:Z(()=>[x("div",{class:"header-action",onClick:c[1]||(c[1]=(...w)=>i(a).toggleThemeDrawer&&i(a).toggleThemeDrawer(...w))},[G(d,null,{default:Z(()=>[G(i(p8))]),_:1})])]),_:1}),G(b,{trigger:"click",onCommand:s},{dropdown:Z(()=>[G(g,null,{default:Z(()=>[G(h,{command:"profile"},{default:Z(()=>[...c[2]||(c[2]=[mt("个人中心",-1)])]),_:1}),G(h,{command:"password"},{default:Z(()=>[...c[3]||(c[3]=[mt("修改密码",-1)])]),_:1}),G(h,{divided:"",command:"logout"},{default:Z(()=>[...c[4]||(c[4]=[mt("退出登录",-1)])]),_:1})]),_:1})]),default:Z(()=>{var w,_,y;return[x("div",p0e,[G(v,{size:32,src:((w=l.value)==null?void 0:w.avatar)||void 0},{default:Z(()=>{var S,E,T,M;return[mt(Ce(((E=(S=l.value)==null?void 0:S.realName)==null?void 0:E.charAt(0))||((M=(T=l.value)==null?void 0:T.username)==null?void 0:M.charAt(0))||"U"),1)]}),_:1},8,["src"]),x("span",v0e,Ce(((_=l.value)==null?void 0:_.realName)||((y=l.value)==null?void 0:y.username)),1),G(d,null,{default:Z(()=>[G(i(jo))]),_:1})])]}),_:1})])])}}}),m0e=Xs(h0e,[["__scopeId","data-v-dd2a461a"]]),g0e={class:"theme-drawer"},b0e={class:"theme-section"},y0e={class:"theme-grid"},w0e=["onClick"],_0e={class:"theme-label"},C0e={class:"theme-section"},S0e={class:"custom-theme"},k0e={class:"color-item"},E0e={class:"color-item"},x0e={class:"color-item"},T0e={class:"theme-section"},M0e={class:"preview-box"},$0e={class:"preview-menu"},O0e=z({__name:"ThemeDrawer",setup(e){const t=om(),n=Ot({primaryColor:"#4A90D9",sidebarBg:"#F0F7FF",bgPage:"#F5F9FC"}),o=k(()=>{if(t.currentTheme==="custom"&&t.customTheme)return{primaryColor:t.customTheme.primaryColor||n.primaryColor,sidebarBg:t.customTheme.sidebarBg||n.sidebarBg,bgPage:t.customTheme.bgPage||n.bgPage,primaryBg:t.customTheme.primaryBg||a(n.primaryColor,.9)};const u=$2.find(c=>c.name===t.currentTheme);return u?{primaryColor:u.primaryColor,sidebarBg:u.sidebarBg,bgPage:u.bgPage,primaryBg:u.primaryBg}:{primaryColor:n.primaryColor,sidebarBg:n.sidebarBg,bgPage:n.bgPage,primaryBg:a(n.primaryColor,.9)}}),a=(u,c)=>{const d=u.replace("#",""),f=parseInt(d.substring(0,2),16),p=parseInt(d.substring(2,4),16),m=parseInt(d.substring(4,6),16),v=Math.round(f+(255-f)*c),h=Math.round(p+(255-p)*c),g=Math.round(m+(255-m)*c);return`rgb(${v}, ${h}, ${g})`},l=(u,c)=>{const d=u.replace("#",""),f=parseInt(d.substring(0,2),16),p=parseInt(d.substring(2,4),16),m=parseInt(d.substring(4,6),16),v=Math.round(f*(1-c)),h=Math.round(p*(1-c)),g=Math.round(m*(1-c));return`rgb(${v}, ${h}, ${g})`},r=()=>{},s=()=>{t.saveCustomTheme({primaryColor:n.primaryColor,primaryLight:a(n.primaryColor,.3),primaryDark:l(n.primaryColor,.2),primaryBg:a(n.primaryColor,.9),sidebarBg:n.sidebarBg,sidebarLogoBg:n.primaryColor,sidebarTextActive:n.primaryColor,bgPage:n.bgPage,bgLight:a(n.bgPage,.5),bgHover:a(n.primaryColor,.85),loginBgStart:a(n.primaryColor,.2),loginBgEnd:n.primaryColor})};return de(()=>t.customTheme,u=>{u&&(n.primaryColor=u.primaryColor||"#4A90D9",n.sidebarBg=u.sidebarBg||"#F0F7FF",n.bgPage=u.bgPage||"#F5F9FC")},{immediate:!0}),(u,c)=>{const d=lt("el-icon"),f=lt("el-color-picker"),p=lt("el-button"),m=lt("el-drawer");return C(),se(m,{modelValue:i(t).showThemeDrawer,"onUpdate:modelValue":c[3]||(c[3]=v=>i(t).showThemeDrawer=v),title:"主题设置",direction:"rtl",size:"300px","show-close":!0},{default:Z(()=>[x("div",g0e,[x("div",b0e,[c[4]||(c[4]=x("h4",{class:"section-title"},"系统主题",-1)),x("div",y0e,[(C(!0),O(Fe,null,gt(i($2),v=>(C(),O("div",{key:v.name,class:N(["theme-item",{active:i(t).currentTheme===v.name}]),onClick:h=>i(t).setTheme(v.name)},[x("div",{class:"theme-preview",style:We({backgroundColor:v.primaryColor})},[i(t).currentTheme===v.name?(C(),se(d,{key:0,class:"check-icon"},{default:Z(()=>[G(i(Pr))]),_:1})):le("",!0)],4),x("span",_0e,Ce(v.label),1)],10,w0e))),128))])]),x("div",C0e,[c[9]||(c[9]=x("h4",{class:"section-title"},"自定义主题",-1)),x("div",S0e,[x("div",k0e,[c[5]||(c[5]=x("span",{class:"color-label"},"主色调",-1)),G(f,{modelValue:n.primaryColor,"onUpdate:modelValue":c[0]||(c[0]=v=>n.primaryColor=v),onChange:r},null,8,["modelValue"])]),x("div",E0e,[c[6]||(c[6]=x("span",{class:"color-label"},"侧边栏背景",-1)),G(f,{modelValue:n.sidebarBg,"onUpdate:modelValue":c[1]||(c[1]=v=>n.sidebarBg=v),onChange:r},null,8,["modelValue"])]),x("div",x0e,[c[7]||(c[7]=x("span",{class:"color-label"},"页面背景",-1)),G(f,{modelValue:n.bgPage,"onUpdate:modelValue":c[2]||(c[2]=v=>n.bgPage=v),onChange:r},null,8,["modelValue"])]),G(p,{type:"primary",class:"apply-btn",onClick:s},{default:Z(()=>[...c[8]||(c[8]=[mt(" 应用自定义主题 ",-1)])]),_:1})])]),x("div",T0e,[c[13]||(c[13]=x("h4",{class:"section-title"},"预览效果",-1)),x("div",M0e,[x("div",{class:"preview-sidebar",style:We({backgroundColor:o.value.sidebarBg})},[x("div",{class:"preview-logo",style:We({backgroundColor:o.value.primaryColor})},null,4),x("div",$0e,[c[10]||(c[10]=x("div",{class:"preview-menu-item"},null,-1)),x("div",{class:"preview-menu-item active",style:We({backgroundColor:o.value.primaryBg})},null,4),c[11]||(c[11]=x("div",{class:"preview-menu-item"},null,-1))])],4),x("div",{class:"preview-main",style:We({backgroundColor:o.value.bgPage})},[...c[12]||(c[12]=[x("div",{class:"preview-header"},null,-1),x("div",{class:"preview-content"},[x("div",{class:"preview-card"})],-1)])],4)])])])]),_:1},8,["modelValue"])}}}),A0e=Xs(O0e,[["__scopeId","data-v-102e7fe1"]]),R0e={class:"layout-container"},I0e=z({__name:"index",setup(e){const t=V(!1),n=om(),o=()=>{t.value=!t.value};return pt(()=>{n.initTheme()}),(a,l)=>{const r=lt("el-aside"),s=lt("el-header"),u=lt("router-view"),c=lt("el-main"),d=lt("el-container");return C(),O("div",R0e,[G(d,{class:"layout-wrapper"},{default:Z(()=>[G(r,{width:t.value?"64px":"200px",class:"layout-aside"},{default:Z(()=>[G(u0e,{collapse:t.value},null,8,["collapse"])]),_:1},8,["width"]),G(d,{class:"layout-main"},{default:Z(()=>[G(s,{class:"layout-header"},{default:Z(()=>[G(m0e,{collapse:t.value,onToggleCollapse:o},null,8,["collapse"])]),_:1}),G(c,{class:"layout-content"},{default:Z(()=>[G(u,null,{default:Z(({Component:f})=>[G(An,{name:"fade",mode:"out-in"},{default:Z(()=>[(C(),se(RC,null,[(C(),se(st(f)))],1024))]),_:2},1024)]),_:1})]),_:1})]),_:1})]),_:1}),G(A0e)])}}}),E9=Xs(I0e,[["__scopeId","data-v-820d9484"]]),E6=Object.freeze(Object.defineProperty({__proto__:null,default:E9},Symbol.toStringTag,{value:"Module"})),P0e=Object.assign({"/src/views/business/assessment/category/index.vue":()=>Yt(()=>import("./index-CGiZqtRl.js"),__vite__mapDeps([0,1])),"/src/views/business/assessment/conclusion/index.vue":()=>Yt(()=>import("./index-Dy0NfC8E.js"),__vite__mapDeps([2,3])),"/src/views/business/assessment/question/index.vue":()=>Yt(()=>import("./index-D-LuDJEA.js"),__vite__mapDeps([4,5])),"/src/views/business/assessment/type/index.vue":()=>Yt(()=>import("./index-Dhoq-Y4e.js"),__vite__mapDeps([6,7])),"/src/views/business/config/index.vue":()=>Yt(()=>import("./index-zFKyP5UT.js"),__vite__mapDeps([8,9])),"/src/views/business/content/banner/index.vue":()=>Yt(()=>import("./index-BgOhSy3n.js"),__vite__mapDeps([10,11])),"/src/views/business/content/promotion/index.vue":()=>Yt(()=>import("./index-CVhJxf3F.js"),__vite__mapDeps([12,13])),"/src/views/business/distribution/commission/index.vue":()=>Yt(()=>import("./index-c3Km_8KE.js"),__vite__mapDeps([14,15])),"/src/views/business/distribution/invite-code/index.vue":()=>Yt(()=>import("./index-DRzL8Pbx.js"),__vite__mapDeps([16,17])),"/src/views/business/distribution/withdrawal/index.vue":()=>Yt(()=>import("./index-n2Th0GwE.js"),__vite__mapDeps([18,19])),"/src/views/business/order/index.vue":()=>Yt(()=>import("./index-DUiM6l1L.js"),__vite__mapDeps([20,21])),"/src/views/business/planner/booking/index.vue":()=>Yt(()=>import("./index-Ed9B2wFe.js"),__vite__mapDeps([22,23])),"/src/views/business/planner/index.vue":()=>Yt(()=>import("./index-BwoGQsoo.js"),__vite__mapDeps([24,25])),"/src/views/business/user/index.vue":()=>Yt(()=>import("./index-D2NCRkYW.js"),__vite__mapDeps([26,27])),"/src/views/dashboard/index.vue":()=>Yt(()=>import("./index-CgUmJAX5.js"),__vite__mapDeps([28,29])),"/src/views/error/404.vue":()=>Yt(()=>import("./404-DJillyCE.js"),__vite__mapDeps([30,31])),"/src/views/login/index.vue":()=>Yt(()=>import("./index-Bp_ZHpwt.js"),__vite__mapDeps([32,33])),"/src/views/password/index.vue":()=>Yt(()=>import("./index-lzhrv0Nz.js"),__vite__mapDeps([34,35])),"/src/views/profile/index.vue":()=>Yt(()=>import("./index-BVU416dz.js"),__vite__mapDeps([36,37])),"/src/views/system/department/index.vue":()=>Yt(()=>import("./index-zVVfsaxl.js"),__vite__mapDeps([38,39,40])),"/src/views/system/dict/index.vue":()=>Yt(()=>import("./index-D9tK7bkn.js"),__vite__mapDeps([41,42])),"/src/views/system/log/index.vue":()=>Yt(()=>import("./index-s3dU7LIC.js"),__vite__mapDeps([43,44])),"/src/views/system/menu/index.vue":()=>Yt(()=>import("./index-BX8D5gMY.js"),__vite__mapDeps([45,46])),"/src/views/system/permission/index.vue":()=>Yt(()=>import("./index-CAuAGfPa.js"),__vite__mapDeps([47,48,49])),"/src/views/system/role/index.vue":()=>Yt(()=>import("./index-COWeaFEn.js"),__vite__mapDeps([50,51,48,52])),"/src/views/system/user/index.vue":()=>Yt(()=>import("./index-DxO8BmwI.js"),__vite__mapDeps([53,51,39,54]))}),x9=Q2("permission",()=>{const e=V([]),t=V([]);async function n(){const r=await n0e();t.value=r.data;const s=o(r.data);return e.value=s,s}function o(r){const s=[];for(const u of r){if(u.menuType===3)continue;const c={path:u.path||"",name:`Menu_${u.id}`,meta:{title:u.name,icon:u.icon,permission:u.permission,keepAlive:u.isCache},children:[]};if(u.parentId===0)if(c.component=E9,u.children&&u.children.length>0){c.children=o(u.children);const d=c.children[0];d&&(c.redirect=d.path)}else u.component&&(c.children=[{path:"",name:`Menu_${u.id}_index`,component:a(u.component),meta:c.meta}]);else u.component&&(c.component=a(u.component)),u.children&&u.children.length>0&&(c.children=o(u.children));s.push(c)}return s}function a(r){const s=`/src/views/${r}.vue`;return P0e[s]||(()=>Yt(()=>import("./404-DJillyCE.js"),__vite__mapDeps([30,31])))}function l(){e.value=[],t.value=[]}return{routes:e,menus:t,generateRoutes:n,resetState:l}}),N0e=[{path:"/login",name:"Login",component:()=>Yt(()=>import("./index-Bp_ZHpwt.js"),__vite__mapDeps([32,33])),meta:{title:"登录"}},{path:"/404",name:"NotFound",component:()=>Yt(()=>import("./404-DJillyCE.js"),__vite__mapDeps([30,31])),meta:{title:"404"}},{path:"/profile",name:"Profile",component:()=>Yt(()=>Promise.resolve().then(()=>E6),void 0),meta:{title:"个人中心"},children:[{path:"",component:()=>Yt(()=>import("./index-BVU416dz.js"),__vite__mapDeps([36,37])),meta:{title:"个人中心"}}]},{path:"/password",name:"Password",component:()=>Yt(()=>Promise.resolve().then(()=>E6),void 0),meta:{title:"修改密码"},children:[{path:"",component:()=>Yt(()=>import("./index-lzhrv0Nz.js"),__vite__mapDeps([34,35])),meta:{title:"修改密码"}}]}],zl=ide({history:Fce(),routes:N0e}),L0e=["/login","/404"];let bi=!1;function x6(){bi=!1}zl.beforeEach(async(e,t,n)=>{if(yde())if(e.path==="/login")n({path:"/"});else{const a=nm(),l=x9();if(bi)n();else try{a.userInfo||await a.getUserInfo(),(await l.generateRoutes()).forEach(s=>{zl.addRoute(s)}),zl.addRoute({path:"/:pathMatch(.*)*",redirect:"/404"}),bi=!0,n({...e,replace:!0})}catch{bi=!1,a.logout(),n(`/login?redirect=${e.path}`)}}else bi=!1,L0e.includes(e.path)?n():n(`/login?redirect=${e.path}`)});const B0e={mounted(e,t){var l,r;const{value:n}=t,a=((l=nm().userInfo)==null?void 0:l.permissions)||[];a.includes("*")||n&&((Array.isArray(n)?n.some(u=>a.includes(u)):a.includes(n))||(r=e.parentNode)==null||r.removeChild(e))}};function V0e(e){return wo({url:"/admin/upload/presigned-url",method:"POST",data:e})}async function D0e(e,t,n,o){await Cn.put(e,t,{headers:{"Content-Type":n},onUploadProgress:a=>{if(a.total&&o){const l=Math.round(a.loaded*100/a.total);o(l)}}})}async function F0e(e,t){const n=await V0e({fileName:e.name,contentType:e.type||"application/octet-stream",fileSize:e.size});if(n.code===0&&n.data){const o=n.data;if("supportsDirectUpload"in o&&o.supportsDirectUpload===!1)return T6(e,t);const a=o;return await D0e(a.uploadUrl,e,e.type||"application/octet-stream",t),{code:0,message:"上传成功",data:{url:a.fileUrl,fileName:e.name,fileSize:e.size}}}return console.warn("获取预签名URL失败,降级到服务端上传:",n.message),T6(e,t)}function T6(e,t){const n=new FormData;return n.append("file",e),wo({url:"/admin/upload/image",method:"POST",data:n,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:o=>{if(o.total&&t){const a=Math.round(o.loaded*100/o.total);t(a)}}})}const z0e={class:"image-upload"},H0e={class:"upload-area"},K0e={key:0,class:"image-preview-wrapper"},W0e={class:"image-error"},j0e={class:"image-actions"},U0e={class:"upload-content"},q0e={class:"upload-text"},Y0e={key:0,class:"upload-error-message"},G0e={key:1,class:"url-input-wrapper"},X0e={key:2,class:"upload-tip"},J0e=z({__name:"index",props:{modelValue:{default:""},disabled:{type:Boolean,default:!1},placeholder:{default:"点击或拖拽上传"},urlPlaceholder:{default:"或输入图片URL"},showUrlInput:{type:Boolean,default:!0},accept:{default:"image/jpeg,image/png,image/gif,image/webp"},maxSize:{default:10},tip:{default:""},uploadAction:{default:"#"}},emits:["update:modelValue","change","upload-success","upload-error"],setup(e,{emit:t}){const n=["jpg","jpeg","png","gif","webp"],o=["image/jpeg","image/png","image/gif","image/webp"],a=e,l=t,r=V(!1),s=V(0),u=V(""),c=V(""),d=V(),f=k(()=>a.accept);de(()=>a.modelValue,E=>{E!==u.value&&(u.value=E||""),E&&(c.value="")},{immediate:!0});const p=E=>{const T=E.lastIndexOf(".");return T===-1?"":E.substring(T+1).toLowerCase()},m=E=>{const T=p(E.name),M=E.type.toLowerCase(),P=n.includes(T),R=o.includes(M);return!P&&!R?{valid:!1,message:`只支持 ${n.join("、")} 格式的图片`}:{valid:!0,message:""}},v=E=>{const T=E.size/1024/1024;return T>a.maxSize?{valid:!1,message:`文件大小不能超过 ${a.maxSize}MB,当前文件大小为 ${T.toFixed(2)}MB`}:{valid:!0,message:""}},h=()=>{c.value=""},g=E=>{h();const T=m(E);if(!T.valid)return c.value=T.message,Lo.error(T.message),!1;const M=v(E);return M.valid?!0:(c.value=M.message,Lo.error(M.message),!1)},b=async E=>{var M,P,R,L,$;const T=E.file;r.value=!0,s.value=0,h();try{const B=await F0e(T,W=>{s.value=W});if(B.code===0&&((M=B.data)!=null&&M.url)){const W=B.data.url;l("update:modelValue",W),l("change",W),l("upload-success",B.data),u.value=W,Lo.success("上传成功")}else{const W=B.message||"上传失败,请重试";throw new Error(W)}}catch(B){console.error("上传失败:",B);let W="上传失败,请重试";(R=(P=B.response)==null?void 0:P.data)!=null&&R.message?W=B.response.data.message:B.message&&(W=B.message),B.code==="ECONNABORTED"||(L=B.message)!=null&&L.includes("timeout")?W="上传超时,请检查网络后重试":($=B.message)!=null&&$.includes("Network Error")&&(W="网络错误,请检查网络连接"),c.value=W,l("upload-error",B),Lo.error(W)}finally{r.value=!1,s.value=0}},w=()=>{var E,T,M;(M=(T=(E=d.value)==null?void 0:E.$el)==null?void 0:T.querySelector("img"))==null||M.click()},_=()=>{l("update:modelValue",""),l("change",""),u.value="",h()},y=()=>{},S=()=>{const E=u.value.trim();E&&(h(),l("update:modelValue",E),l("change",E))};return(E,T)=>{const M=lt("el-icon"),P=lt("el-image"),R=lt("el-progress"),L=lt("el-upload"),$=lt("el-button"),B=lt("el-input");return C(),O("div",z0e,[x("div",H0e,[e.modelValue?(C(),O("div",K0e,[G(P,{ref_key:"imageRef",ref:d,src:e.modelValue,fit:"cover",class:"preview-image","preview-src-list":[e.modelValue],"preview-teleported":""},{error:Z(()=>[x("div",W0e,[G(M,null,{default:Z(()=>[G(i(E8))]),_:1}),T[1]||(T[1]=x("span",null,"加载失败",-1))])]),_:1},8,["src","preview-src-list"]),x("div",j0e,[G(M,{class:"action-icon",onClick:w},{default:Z(()=>[G(i(Tf))]),_:1}),G(M,{class:"action-icon",onClick:_},{default:Z(()=>[G(i(kv))]),_:1})])])):(C(),se(L,{key:1,ref:"uploadRef",class:"uploader",action:e.uploadAction,"show-file-list":!1,"before-upload":g,"http-request":b,accept:f.value,disabled:e.disabled||r.value,drag:""},{default:Z(()=>[x("div",U0e,[r.value?(C(),se(R,{key:1,type:"circle",percentage:s.value,width:50},null,8,["percentage"])):(C(),se(M,{key:0,class:"upload-icon"},{default:Z(()=>[G(i(xf))]),_:1})),x("div",q0e,Ce(r.value?"上传中...":e.placeholder),1)])]),_:1},8,["action","accept","disabled"]))]),c.value?(C(),O("div",Y0e,[G(M,null,{default:Z(()=>[G(i(js))]),_:1}),x("span",null,Ce(c.value),1)])):le("",!0),e.showUrlInput?(C(),O("div",G0e,[G(B,{modelValue:u.value,"onUpdate:modelValue":T[0]||(T[0]=W=>u.value=W),placeholder:e.urlPlaceholder,disabled:e.disabled,clearable:"",onBlur:y,onKeyup:Qt(S,["enter"])},{append:Z(()=>[G($,{disabled:!u.value,onClick:S},{default:Z(()=>[...T[2]||(T[2]=[mt(" 确定 ",-1)])]),_:1},8,["disabled"])]),_:1},8,["modelValue","placeholder","disabled"])])):le("",!0),e.tip?(C(),O("div",X0e,Ce(e.tip),1)):le("",!0)])}}}),Z0e=Xs(J0e,[["__scopeId","data-v-cbadb1e5"]]);function Rpe(){return Ao.get("/api/admin/dict/types")}function Ipe(e){return Ao.post("/api/admin/dict/types",e)}function Ppe(e,t){return Ao.put(`/api/admin/dict/types/${e}`,t)}function Npe(e){return Ao.delete(`/api/admin/dict/types/${e}`)}function am(e){return Ao.get(`/api/admin/dict/items/${e}`)}function Lpe(e){return Ao.post("/api/admin/dict/items",e)}function Bpe(e,t){return Ao.put(`/api/admin/dict/items/${e}`,t)}function Vpe(e){return Ao.delete(`/api/admin/dict/items/${e}`)}const Q0e=z({__name:"index",props:ps({type:{},placeholder:{default:"请选择"},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},filterable:{type:Boolean,default:!1}},{modelValue:{},modelModifiers:{}}),emits:ps(["change"],["update:modelValue"]),setup(e,{expose:t,emit:n}){const o=e,a=n,l=Y2(e,"modelValue"),r=V(!1),s=V([]);async function u(){if(o.type){r.value=!0;try{const d=await am(o.type);s.value=(d.data||[]).filter(f=>f.status===1)}catch(d){console.error(`加载字典[${o.type}]失败`,d),s.value=[]}finally{r.value=!1}}}function c(d){const f=s.value.find(p=>p.value===d);a("change",d,f)}return de(()=>o.type,()=>{u()}),pt(()=>{u()}),t({reload:u,getOptions:()=>s.value}),(d,f)=>{const p=lt("el-option"),m=lt("el-select");return C(),se(m,{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=v=>l.value=v),placeholder:e.placeholder,disabled:e.disabled,clearable:e.clearable,filterable:e.filterable,loading:r.value,onChange:c},{default:Z(()=>[(C(!0),O(Fe,null,gt(s.value,v=>(C(),se(p,{key:v.value,label:v.label,value:v.value,disabled:v.status!==1},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","placeholder","disabled","clearable","filterable","loading"])}}}),epe=z({__name:"index",props:ps({type:{},disabled:{type:Boolean,default:!1},button:{type:Boolean,default:!1}},{modelValue:{},modelModifiers:{}}),emits:ps(["change"],["update:modelValue"]),setup(e,{expose:t,emit:n}){const o=e,a=n,l=Y2(e,"modelValue"),r=V([]);async function s(){if(o.type)try{const c=await am(o.type);r.value=(c.data||[]).filter(d=>d.status===1)}catch(c){console.error(`加载字典[${o.type}]失败`,c),r.value=[]}}function u(c){const d=r.value.find(f=>f.value===c);a("change",c,d)}return de(()=>o.type,()=>{s()}),pt(()=>{s()}),t({reload:s,getOptions:()=>r.value}),(c,d)=>{const f=lt("el-radio-group");return C(),se(f,{modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=p=>l.value=p),disabled:e.disabled,onChange:u},{default:Z(()=>[(C(!0),O(Fe,null,gt(r.value,p=>(C(),se(st(e.button?i(zy):i(jv)),{key:p.value,value:p.value,disabled:p.status!==1},{default:Z(()=>[mt(Ce(p.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])}}}),tpe=z({__name:"index",props:ps({type:{},disabled:{type:Boolean,default:!1},button:{type:Boolean,default:!1}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:ps(["change"],["update:modelValue"]),setup(e,{expose:t,emit:n}){const o=e,a=n,l=Y2(e,"modelValue"),r=V([]);async function s(){if(o.type)try{const c=await am(o.type);r.value=(c.data||[]).filter(d=>d.status===1)}catch(c){console.error(`加载字典[${o.type}]失败`,c),r.value=[]}}function u(c){const d=r.value.filter(f=>c.includes(f.value));a("change",c,d)}return de(()=>o.type,()=>{s()}),pt(()=>{s()}),t({reload:s,getOptions:()=>r.value}),(c,d)=>{const f=lt("el-checkbox-group");return C(),se(f,{modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=p=>l.value=p),disabled:e.disabled,onChange:u},{default:Z(()=>[(C(!0),O(Fe,null,gt(r.value,p=>(C(),se(st(e.button?i(Iy):i(Ko)),{key:p.value,value:p.value,disabled:p.status!==1},{default:Z(()=>[mt(Ce(p.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])}}}),npe={ImageUpload:Z0e,DictSelect:Q0e,DictRadio:epe,DictCheckbox:tpe};function ope(e){Object.entries(npe).forEach(([t,n])=>{e.component(t,n)})}const Lr=eb(ece);for(const[e,t]of Object.entries(kD))Lr.component(e,t);Lr.directive("permission",B0e);ope(Lr);Lr.use(tk());Lr.use(zl);Lr.use(Xue,{locale:Jue});Lr.mount("#app");export{Dn as $,e0e as A,Ut as B,Le as C,Sn as D,Lo as E,Fe as F,rpe as G,de as H,bo as I,It as J,Je as K,Ne as L,tf as M,Wo as N,Bs as O,wo as P,U2 as Q,le as R,ct as S,MC as T,MB as U,fN as V,qV as W,PI as X,yA as Y,cD as Z,Xs as _,Ot as a,v8 as a0,E8 as a1,g8 as a2,xf as a3,I_ as a4,Mpe as a5,et as a6,Rpe as a7,Npe as a8,Ppe as a9,Ipe as aa,am as ab,Vpe as ac,Bpe as ad,Lpe as ae,O8 as af,st as ag,Ope as ah,$pe as ai,Ape as aj,x as b,O as c,z as d,G as e,Qt as f,lt as g,Zfe as h,ude as i,q_ as j,C as k,i as l,GV as m,NP as n,pt as o,bP as p,aa as q,V as r,WL as s,mt as t,nm as u,k as v,Z as w,Ce as x,gt as y,se as z}; +`+l):o.stack=l}catch{}}throw o}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Mr(this.defaults,n);const{transitional:o,paramsSerializer:a,headers:l}=n;o!==void 0&&ld.assertOptions(o,{silentJSONParsing:ba.transitional(ba.boolean),forcedJSONParsing:ba.transitional(ba.boolean),clarifyTimeoutError:ba.transitional(ba.boolean)},!1),a!=null&&(Re.isFunction(a)?n.paramsSerializer={serialize:a}:ld.assertOptions(a,{encode:ba.function,serialize:ba.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ld.assertOptions(n,{baseUrl:ba.spelling("baseURL"),withXsrfToken:ba.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let r=l&&Re.merge(l.common,l[n.method]);l&&Re.forEach(["delete","get","head","post","put","patch","common"],v=>{delete l[v]}),n.headers=go.concat(r,l);const s=[];let u=!0;this.interceptors.request.forEach(function(h){typeof h.runWhen=="function"&&h.runWhen(n)===!1||(u=u&&h.synchronous,s.unshift(h.fulfilled,h.rejected))});const c=[];this.interceptors.response.forEach(function(h){c.push(h.fulfilled,h.rejected)});let d,f=0,p;if(!u){const v=[_6.bind(this),void 0];for(v.unshift(...s),v.push(...c),p=v.length,d=Promise.resolve(n);f
{if(!o._listeners)return;let l=o._listeners.length;for(;l-- >0;)o._listeners[l](a);o._listeners=null}),this.promise.then=a=>{let l;const r=new Promise(s=>{o.subscribe(s),l=s}).then(a);return r.cancel=function(){o.unsubscribe(l)},r},t(function(l,r,s){o.reason||(o.reason=new Zs(l,r,s),n(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=o=>{t.abort(o)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new g9(function(a){t=a}),cancel:t}}};function qfe(e){return function(n){return e.apply(null,n)}}function Yfe(e){return Re.isObject(e)&&e.isAxiosError===!0}const M2={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(M2).forEach(([e,t])=>{M2[t]=e});function b9(e){const t=new yr(e),n=G_(yr.prototype.request,t);return Re.extend(n,yr.prototype,t,{allOwnKeys:!0}),Re.extend(n,t,null,{allOwnKeys:!0}),n.create=function(a){return b9(Mr(e,a))},n}const Cn=b9(Ju);Cn.Axios=yr;Cn.CanceledError=Zs;Cn.CancelToken=Ufe;Cn.isCancel=c9;Cn.VERSION=m9;Cn.toFormData=Zf;Cn.AxiosError=Dt;Cn.Cancel=Cn.CanceledError;Cn.all=function(t){return Promise.all(t)};Cn.spread=qfe;Cn.isAxiosError=Yfe;Cn.mergeConfig=Mr;Cn.AxiosHeaders=go;Cn.formToJSON=e=>u9(Re.isHTMLForm(e)?new FormData(e):e);Cn.getAdapter=h9.getAdapter;Cn.HttpStatusCode=M2;Cn.default=Cn;const{Axios:fpe,AxiosError:ppe,CanceledError:vpe,isCancel:hpe,CancelToken:mpe,VERSION:gpe,all:bpe,Cancel:ype,isAxiosError:wpe,spread:_pe,toFormData:Cpe,AxiosHeaders:Spe,HttpStatusCode:kpe,formToJSON:Epe,getAdapter:xpe,mergeConfig:Tpe}=Cn,Gfe=["/admin/auth/captcha","/admin/auth/login","/admin/auth/refresh"];let Vi=!1,xc=null,rd=[];const Ao=Cn.create({baseURL:"/api",timeout:3e4});function y9(e){return e?Gfe.some(t=>e.includes(t)):!1}async function Xfe(){const e=Yf();if(!e)return!1;try{const{refreshToken:t}=await Yt(async()=>{const{refreshToken:o}=await Promise.resolve().then(()=>t0e);return{refreshToken:o}},void 0),n=await t(e);if(n.code===0&&n.data){const{accessToken:o,refreshToken:a,expiresIn:l}=n.data;return nd(o,a,l),!0}return!1}catch(t){return console.error("Token refresh failed:",t),!1}}async function w9(){if(Vi)return xc;Vi=!0,xc=Xfe();try{const e=await xc;return e?rd.forEach(({config:t,resolve:n})=>{t.headers.Authorization=`Bearer ${qu()}`,n(Ao(t))}):rd.forEach(({reject:t})=>{t(new Error("Token refresh failed"))}),e}finally{Vi=!1,xc=null,rd=[]}}async function Jfe(e){const t=e.config;return t._retry||y9(t.url)?Promise.reject(e):Yf()?(t._retry=!0,Vi?new Promise((a,l)=>{rd.push({config:t,resolve:a,reject:l})}):await w9()?(t.headers.Authorization=`Bearer ${qu()}`,Ao(t)):(Bi(),Lo.error("登录已过期,请重新登录"),zl.push("/login"),Promise.reject(e))):(Bi(),zl.push("/login"),Promise.reject(e))}Ao.interceptors.request.use(async e=>{if(y9(e.url))return e;bde()&&!Vi&&Yf()&&await w9();const t=qu();return t&&(e.headers.Authorization=`Bearer ${t}`),e},e=>(console.error("请求错误:",e),Promise.reject(e)));Ao.interceptors.response.use(e=>{const t=e.data;return t.code===0?t:(Lo.error(t.message||"请求失败"),Promise.reject(new Error(t.message||"请求失败")))},async e=>{if(console.error("响应错误:",e),e.response){const{status:t,data:n}=e.response;switch(t){case 401:return Jfe(e);case 403:Lo.error("没有操作权限");break;case 404:Lo.error("请求的资源不存在");break;case 500:Lo.error((n==null?void 0:n.message)||"服务器内部错误");break;default:Lo.error((n==null?void 0:n.message)||"请求失败")}}else Lo.error("网络连接失败");return Promise.reject(e)});function wo(e){return Ao(e)}function Zfe(){return wo({url:"/admin/auth/captcha",method:"post"})}function _9(e){return wo({url:"/admin/auth/login",method:"post",data:e})}function Qfe(e){return wo({url:"/admin/auth/refresh",method:"post",data:{refreshToken:e}})}function C9(){return wo({url:"/admin/auth/info",method:"get"})}function e0e(e){return wo({url:"/admin/auth/password",method:"put",data:e})}function S9(){return wo({url:"/admin/auth/logout",method:"post"})}function k9(){return wo({url:"/admin/auth/revoke-all",method:"post"})}const t0e=Object.freeze(Object.defineProperty({__proto__:null,changePassword:e0e,getCaptcha:Zfe,getUserInfo:C9,login:_9,logout:S9,refreshToken:Qfe,revokeAllTokens:k9},Symbol.toStringTag,{value:"Module"})),nm=Q2("user",()=>{const e=V(qu()),t=V(Yf()),n=V(null),o=k(()=>e.value);async function a(f){const p=await _9(f),{accessToken:m,refreshToken:v,expiresIn:h,userInfo:g}=p.data,b=m||p.data.token,w=v||"";return e.value=b,t.value=w,n.value=g,w?nd(b,w,h):nd(b,"",h),p}async function l(){const f=await C9();return n.value=f.data,f.data}async function r(){try{await S9()}catch(f){console.warn("Logout API call failed:",f)}e.value=null,t.value=null,n.value=null,Bi(),x6(),zl.push("/login")}async function s(){try{await k9()}catch(f){console.warn("Revoke all tokens API call failed:",f)}e.value=null,t.value=null,n.value=null,Bi(),x6(),zl.push("/login")}function u(){e.value=null,t.value=null,n.value=null,Bi()}function c(f,p,m){e.value=f,t.value=p,m!==void 0&&nd(f,p,m)}function d(){return!!e.value}return{token:o,accessToken:e,refreshToken:t,userInfo:n,login:a,getUserInfo:l,logout:r,logoutAllDevices:s,resetState:u,updateTokens:c,isLoggedIn:d}});function n0e(){return wo({url:"/admin/menus/user",method:"get"})}function Mpe(){return wo({url:"/admin/menus",method:"get"})}function $pe(e){return wo({url:"/admin/menus",method:"post",data:e})}function Ope(e,t){return wo({url:`/admin/menus/${e}`,method:"put",data:t})}function Ape(e){return wo({url:`/admin/menus/${e}`,method:"delete"})}const o0e=z({__name:"SidebarItem",props:{item:{}},setup(e){const t=e,n=k(()=>{var a;return((a=t.item.children)==null?void 0:a.filter(l=>l.menuType!==3&&l.status===1))||[]}),o=k(()=>n.value.length>0);return(a,l)=>{const r=lt("el-icon"),s=lt("SidebarItem",!0),u=lt("el-sub-menu"),c=lt("el-menu-item");return o.value?(C(),se(u,{key:0,index:e.item.path||`menu_${e.item.id}`},{title:Z(()=>[e.item.icon?(C(),se(r,{key:0},{default:Z(()=>[(C(),se(st(e.item.icon)))]),_:1})):le("",!0),x("span",null,Ce(e.item.name),1)]),default:Z(()=>[(C(!0),O(Fe,null,gt(n.value,d=>(C(),se(s,{key:d.id,item:d},null,8,["item"]))),128))]),_:1},8,["index"])):(C(),se(c,{key:1,index:e.item.path||""},{title:Z(()=>[mt(Ce(e.item.name),1)]),default:Z(()=>[e.item.icon?(C(),se(r,{key:0},{default:Z(()=>[(C(),se(st(e.item.icon)))]),_:1})):le("",!0)]),_:1},8,["index"]))}}}),a0e={class:"sidebar-container"},l0e={class:"sidebar-logo"},r0e={key:0,class:"logo-title"},s0e={key:1,class:"logo-title-mini"},i0e=z({__name:"Sidebar",props:{collapse:{type:Boolean}},setup(e){const t=q_(),n=x9(),o=k(()=>n.menus),a=k(()=>t.path);return(l,r)=>{const s=lt("el-menu"),u=lt("el-scrollbar");return C(),O("div",a0e,[x("div",l0e,[e.collapse?(C(),O("span",s0e,"学业")):(C(),O("span",r0e,"学业邑规划"))]),G(u,null,{default:Z(()=>[G(s,{"default-active":a.value,collapse:e.collapse,"unique-opened":!0,"background-color":"transparent","text-color":"var(--sidebar-text)","active-text-color":"var(--sidebar-text-active)",class:"sidebar-menu",router:""},{default:Z(()=>[(C(!0),O(Fe,null,gt(o.value,c=>(C(),se(o0e,{key:c.id,item:c},null,8,["item"]))),128))]),_:1},8,["default-active","collapse"])]),_:1})])}}}),u0e=Xs(i0e,[["__scopeId","data-v-4cb07f1a"]]),$2=[{name:"blue",label:"天空蓝",primaryColor:"#4A90D9",primaryLight:"#74B9FF",primaryDark:"#2B7DE9",primaryBg:"#E8F4FD",sidebarBg:"#F0F7FF",sidebarLogoBg:"#4A90D9",sidebarTextActive:"#4A90D9",bgPage:"#F5F9FC",bgLight:"#F0F7FF",bgHover:"#E8F4FD",loginBgStart:"#74B9FF",loginBgEnd:"#4A90D9"},{name:"green",label:"翠绿",primaryColor:"#52C41A",primaryLight:"#73D13D",primaryDark:"#389E0D",primaryBg:"#F6FFED",sidebarBg:"#F6FFED",sidebarLogoBg:"#52C41A",sidebarTextActive:"#52C41A",bgPage:"#F9FFF6",bgLight:"#F6FFED",bgHover:"#D9F7BE",loginBgStart:"#73D13D",loginBgEnd:"#52C41A"},{name:"purple",label:"典雅紫",primaryColor:"#722ED1",primaryLight:"#9254DE",primaryDark:"#531DAB",primaryBg:"#F9F0FF",sidebarBg:"#F9F0FF",sidebarLogoBg:"#722ED1",sidebarTextActive:"#722ED1",bgPage:"#FBF5FF",bgLight:"#F9F0FF",bgHover:"#EFDBFF",loginBgStart:"#9254DE",loginBgEnd:"#722ED1"},{name:"orange",label:"活力橙",primaryColor:"#FA8C16",primaryLight:"#FFA940",primaryDark:"#D46B08",primaryBg:"#FFF7E6",sidebarBg:"#FFF7E6",sidebarLogoBg:"#FA8C16",sidebarTextActive:"#FA8C16",bgPage:"#FFFBF5",bgLight:"#FFF7E6",bgHover:"#FFE7BA",loginBgStart:"#FFA940",loginBgEnd:"#FA8C16"},{name:"red",label:"中国红",primaryColor:"#F5222D",primaryLight:"#FF4D4F",primaryDark:"#CF1322",primaryBg:"#FFF1F0",sidebarBg:"#FFF1F0",sidebarLogoBg:"#F5222D",sidebarTextActive:"#F5222D",bgPage:"#FFFAFA",bgLight:"#FFF1F0",bgHover:"#FFCCC7",loginBgStart:"#FF4D4F",loginBgEnd:"#F5222D"},{name:"dark",label:"暗夜黑",primaryColor:"#1890FF",primaryLight:"#40A9FF",primaryDark:"#096DD9",primaryBg:"#111B26",sidebarBg:"#001529",sidebarLogoBg:"#002140",sidebarTextActive:"#1890FF",bgPage:"#0D1117",bgLight:"#161B22",bgHover:"#21262D",loginBgStart:"#001529",loginBgEnd:"#000C17"}],S6="mi-assessment-admin-theme",k6="mi-assessment-admin-custom-theme",om=Q2("theme",()=>{const e=V("blue"),t=V(null),n=V(!1),o=()=>{const c=localStorage.getItem(S6),d=localStorage.getItem(k6);d&&(t.value=JSON.parse(d)),c&&(e.value=c,a(c))},a=c=>{let d;if(c==="custom"&&t.value?d=t.value:d=$2.find(p=>p.name===c),!d)return;const f=document.documentElement;d.primaryColor&&(f.style.setProperty("--primary-color",d.primaryColor),f.style.setProperty("--el-color-primary",d.primaryColor)),d.primaryLight&&f.style.setProperty("--primary-light",d.primaryLight),d.primaryDark&&f.style.setProperty("--primary-dark",d.primaryDark),d.primaryBg&&f.style.setProperty("--primary-bg",d.primaryBg),d.sidebarBg&&f.style.setProperty("--sidebar-bg",d.sidebarBg),d.sidebarLogoBg&&f.style.setProperty("--sidebar-logo-bg",d.sidebarLogoBg),d.sidebarTextActive&&(f.style.setProperty("--sidebar-text-active",d.sidebarTextActive),f.style.setProperty("--sidebar-item-active",d.primaryBg||d.sidebarBg||""),f.style.setProperty("--sidebar-item-hover",d.bgHover||"")),d.bgPage&&(f.style.setProperty("--bg-page",d.bgPage),f.style.setProperty("--el-bg-color-page",d.bgPage)),d.bgLight&&f.style.setProperty("--bg-light",d.bgLight),d.bgHover&&f.style.setProperty("--bg-hover",d.bgHover),d.loginBgStart&&f.style.setProperty("--login-bg-start",d.loginBgStart),d.loginBgEnd&&f.style.setProperty("--login-bg-end",d.loginBgEnd),d.primaryColor&&l(d.primaryColor)},l=c=>{const d=document.documentElement,f=c.replace("#",""),p=parseInt(f.substring(0,2),16),m=parseInt(f.substring(2,4),16),v=parseInt(f.substring(4,6),16);[3,5,7,8,9].forEach(y=>{const S=y/10,E=Math.round(p+(255-p)*S),T=Math.round(m+(255-m)*S),M=Math.round(v+(255-v)*S);d.style.setProperty(`--el-color-primary-light-${y}`,`rgb(${E}, ${T}, ${M})`)});const g=.2,b=Math.round(p*(1-g)),w=Math.round(m*(1-g)),_=Math.round(v*(1-g));d.style.setProperty("--el-color-primary-dark-2",`rgb(${b}, ${w}, ${_})`)},r=c=>{e.value=c,localStorage.setItem(S6,c),a(c)};return{currentTheme:e,customTheme:t,showThemeDrawer:n,initTheme:o,setTheme:r,saveCustomTheme:c=>{t.value={...c,name:"custom",label:"自定义"},localStorage.setItem(k6,JSON.stringify(t.value)),r("custom")},toggleThemeDrawer:()=>{n.value=!n.value},applyTheme:a}}),c0e={class:"header-container"},d0e={class:"header-left"},f0e={class:"header-right"},p0e={class:"user-info"},v0e={class:"username"},h0e=z({__name:"Header",props:{collapse:{type:Boolean}},emits:["toggle-collapse"],setup(e){const t=q_(),n=ude(),o=nm(),a=om(),l=k(()=>o.userInfo),r=k(()=>t.matched.filter(c=>{var d;return(d=c.meta)==null?void 0:d.title}).map(c=>{var d;return{path:c.path,title:(d=c.meta)==null?void 0:d.title}})),s=async u=>{switch(u){case"profile":n.push("/profile");break;case"password":n.push("/password");break;case"logout":try{await I_.confirm("确定要退出登录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await o.logout()}catch{}break}};return(u,c)=>{const d=lt("el-icon"),f=lt("el-breadcrumb-item"),p=lt("el-breadcrumb"),m=lt("el-tooltip"),v=lt("el-avatar"),h=lt("el-dropdown-item"),g=lt("el-dropdown-menu"),b=lt("el-dropdown");return C(),O("div",c0e,[x("div",d0e,[G(d,{class:"collapse-btn",onClick:c[0]||(c[0]=w=>u.$emit("toggle-collapse"))},{default:Z(()=>[e.collapse?(C(),se(i(b8),{key:1})):(C(),se(i(y8),{key:0}))]),_:1}),G(p,{separator:"/"},{default:Z(()=>[(C(!0),O(Fe,null,gt(r.value,w=>(C(),se(f,{key:w.path},{default:Z(()=>[mt(Ce(w.title),1)]),_:2},1024))),128))]),_:1})]),x("div",f0e,[G(m,{content:"主题设置",placement:"bottom"},{default:Z(()=>[x("div",{class:"header-action",onClick:c[1]||(c[1]=(...w)=>i(a).toggleThemeDrawer&&i(a).toggleThemeDrawer(...w))},[G(d,null,{default:Z(()=>[G(i(p8))]),_:1})])]),_:1}),G(b,{trigger:"click",onCommand:s},{dropdown:Z(()=>[G(g,null,{default:Z(()=>[G(h,{command:"profile"},{default:Z(()=>[...c[2]||(c[2]=[mt("个人中心",-1)])]),_:1}),G(h,{command:"password"},{default:Z(()=>[...c[3]||(c[3]=[mt("修改密码",-1)])]),_:1}),G(h,{divided:"",command:"logout"},{default:Z(()=>[...c[4]||(c[4]=[mt("退出登录",-1)])]),_:1})]),_:1})]),default:Z(()=>{var w,_,y;return[x("div",p0e,[G(v,{size:32,src:((w=l.value)==null?void 0:w.avatar)||void 0},{default:Z(()=>{var S,E,T,M;return[mt(Ce(((E=(S=l.value)==null?void 0:S.realName)==null?void 0:E.charAt(0))||((M=(T=l.value)==null?void 0:T.username)==null?void 0:M.charAt(0))||"U"),1)]}),_:1},8,["src"]),x("span",v0e,Ce(((_=l.value)==null?void 0:_.realName)||((y=l.value)==null?void 0:y.username)),1),G(d,null,{default:Z(()=>[G(i(jo))]),_:1})])]}),_:1})])])}}}),m0e=Xs(h0e,[["__scopeId","data-v-2d5ce252"]]),g0e={class:"theme-drawer"},b0e={class:"theme-section"},y0e={class:"theme-grid"},w0e=["onClick"],_0e={class:"theme-label"},C0e={class:"theme-section"},S0e={class:"custom-theme"},k0e={class:"color-item"},E0e={class:"color-item"},x0e={class:"color-item"},T0e={class:"theme-section"},M0e={class:"preview-box"},$0e={class:"preview-menu"},O0e=z({__name:"ThemeDrawer",setup(e){const t=om(),n=Ot({primaryColor:"#4A90D9",sidebarBg:"#F0F7FF",bgPage:"#F5F9FC"}),o=k(()=>{if(t.currentTheme==="custom"&&t.customTheme)return{primaryColor:t.customTheme.primaryColor||n.primaryColor,sidebarBg:t.customTheme.sidebarBg||n.sidebarBg,bgPage:t.customTheme.bgPage||n.bgPage,primaryBg:t.customTheme.primaryBg||a(n.primaryColor,.9)};const u=$2.find(c=>c.name===t.currentTheme);return u?{primaryColor:u.primaryColor,sidebarBg:u.sidebarBg,bgPage:u.bgPage,primaryBg:u.primaryBg}:{primaryColor:n.primaryColor,sidebarBg:n.sidebarBg,bgPage:n.bgPage,primaryBg:a(n.primaryColor,.9)}}),a=(u,c)=>{const d=u.replace("#",""),f=parseInt(d.substring(0,2),16),p=parseInt(d.substring(2,4),16),m=parseInt(d.substring(4,6),16),v=Math.round(f+(255-f)*c),h=Math.round(p+(255-p)*c),g=Math.round(m+(255-m)*c);return`rgb(${v}, ${h}, ${g})`},l=(u,c)=>{const d=u.replace("#",""),f=parseInt(d.substring(0,2),16),p=parseInt(d.substring(2,4),16),m=parseInt(d.substring(4,6),16),v=Math.round(f*(1-c)),h=Math.round(p*(1-c)),g=Math.round(m*(1-c));return`rgb(${v}, ${h}, ${g})`},r=()=>{},s=()=>{t.saveCustomTheme({primaryColor:n.primaryColor,primaryLight:a(n.primaryColor,.3),primaryDark:l(n.primaryColor,.2),primaryBg:a(n.primaryColor,.9),sidebarBg:n.sidebarBg,sidebarLogoBg:n.primaryColor,sidebarTextActive:n.primaryColor,bgPage:n.bgPage,bgLight:a(n.bgPage,.5),bgHover:a(n.primaryColor,.85),loginBgStart:a(n.primaryColor,.2),loginBgEnd:n.primaryColor})};return de(()=>t.customTheme,u=>{u&&(n.primaryColor=u.primaryColor||"#4A90D9",n.sidebarBg=u.sidebarBg||"#F0F7FF",n.bgPage=u.bgPage||"#F5F9FC")},{immediate:!0}),(u,c)=>{const d=lt("el-icon"),f=lt("el-color-picker"),p=lt("el-button"),m=lt("el-drawer");return C(),se(m,{modelValue:i(t).showThemeDrawer,"onUpdate:modelValue":c[3]||(c[3]=v=>i(t).showThemeDrawer=v),title:"主题设置",direction:"rtl",size:"300px","show-close":!0},{default:Z(()=>[x("div",g0e,[x("div",b0e,[c[4]||(c[4]=x("h4",{class:"section-title"},"系统主题",-1)),x("div",y0e,[(C(!0),O(Fe,null,gt(i($2),v=>(C(),O("div",{key:v.name,class:N(["theme-item",{active:i(t).currentTheme===v.name}]),onClick:h=>i(t).setTheme(v.name)},[x("div",{class:"theme-preview",style:We({backgroundColor:v.primaryColor})},[i(t).currentTheme===v.name?(C(),se(d,{key:0,class:"check-icon"},{default:Z(()=>[G(i(Pr))]),_:1})):le("",!0)],4),x("span",_0e,Ce(v.label),1)],10,w0e))),128))])]),x("div",C0e,[c[9]||(c[9]=x("h4",{class:"section-title"},"自定义主题",-1)),x("div",S0e,[x("div",k0e,[c[5]||(c[5]=x("span",{class:"color-label"},"主色调",-1)),G(f,{modelValue:n.primaryColor,"onUpdate:modelValue":c[0]||(c[0]=v=>n.primaryColor=v),onChange:r},null,8,["modelValue"])]),x("div",E0e,[c[6]||(c[6]=x("span",{class:"color-label"},"侧边栏背景",-1)),G(f,{modelValue:n.sidebarBg,"onUpdate:modelValue":c[1]||(c[1]=v=>n.sidebarBg=v),onChange:r},null,8,["modelValue"])]),x("div",x0e,[c[7]||(c[7]=x("span",{class:"color-label"},"页面背景",-1)),G(f,{modelValue:n.bgPage,"onUpdate:modelValue":c[2]||(c[2]=v=>n.bgPage=v),onChange:r},null,8,["modelValue"])]),G(p,{type:"primary",class:"apply-btn",onClick:s},{default:Z(()=>[...c[8]||(c[8]=[mt(" 应用自定义主题 ",-1)])]),_:1})])]),x("div",T0e,[c[13]||(c[13]=x("h4",{class:"section-title"},"预览效果",-1)),x("div",M0e,[x("div",{class:"preview-sidebar",style:We({backgroundColor:o.value.sidebarBg})},[x("div",{class:"preview-logo",style:We({backgroundColor:o.value.primaryColor})},null,4),x("div",$0e,[c[10]||(c[10]=x("div",{class:"preview-menu-item"},null,-1)),x("div",{class:"preview-menu-item active",style:We({backgroundColor:o.value.primaryBg})},null,4),c[11]||(c[11]=x("div",{class:"preview-menu-item"},null,-1))])],4),x("div",{class:"preview-main",style:We({backgroundColor:o.value.bgPage})},[...c[12]||(c[12]=[x("div",{class:"preview-header"},null,-1),x("div",{class:"preview-content"},[x("div",{class:"preview-card"})],-1)])],4)])])])]),_:1},8,["modelValue"])}}}),A0e=Xs(O0e,[["__scopeId","data-v-eabceca6"]]),R0e={class:"layout-container"},I0e=z({__name:"index",setup(e){const t=V(!1),n=om(),o=()=>{t.value=!t.value};return pt(()=>{n.initTheme()}),(a,l)=>{const r=lt("el-aside"),s=lt("el-header"),u=lt("router-view"),c=lt("el-main"),d=lt("el-container");return C(),O("div",R0e,[G(d,{class:"layout-wrapper"},{default:Z(()=>[G(r,{width:t.value?"64px":"200px",class:"layout-aside"},{default:Z(()=>[G(u0e,{collapse:t.value},null,8,["collapse"])]),_:1},8,["width"]),G(d,{class:"layout-main"},{default:Z(()=>[G(s,{class:"layout-header"},{default:Z(()=>[G(m0e,{collapse:t.value,onToggleCollapse:o},null,8,["collapse"])]),_:1}),G(c,{class:"layout-content"},{default:Z(()=>[G(u,null,{default:Z(({Component:f})=>[G(An,{name:"fade",mode:"out-in"},{default:Z(()=>[(C(),se(RC,null,[(C(),se(st(f)))],1024))]),_:2},1024)]),_:1})]),_:1})]),_:1})]),_:1}),G(A0e)])}}}),E9=Xs(I0e,[["__scopeId","data-v-a29dba4f"]]),E6=Object.freeze(Object.defineProperty({__proto__:null,default:E9},Symbol.toStringTag,{value:"Module"})),P0e=Object.assign({"/src/views/business/assessment/category/index.vue":()=>Yt(()=>import("./index-BsD84FBD.js"),__vite__mapDeps([0,1,2])),"/src/views/business/assessment/conclusion/index.vue":()=>Yt(()=>import("./index-D5zV-Qt_.js"),__vite__mapDeps([3,1,4])),"/src/views/business/assessment/question/index.vue":()=>Yt(()=>import("./index-DekOswnj.js"),__vite__mapDeps([5,1,6])),"/src/views/business/assessment/type/index.vue":()=>Yt(()=>import("./index-TGTJ2A9y.js"),__vite__mapDeps([7,1,8])),"/src/views/business/config/index.vue":()=>Yt(()=>import("./index-DpCL09Ik.js"),__vite__mapDeps([9,10])),"/src/views/business/content/banner/index.vue":()=>Yt(()=>import("./index-DG3hRaLx.js"),__vite__mapDeps([11,12,13])),"/src/views/business/content/promotion/index.vue":()=>Yt(()=>import("./index-BBP5ikxW.js"),__vite__mapDeps([14,12,15])),"/src/views/business/distribution/commission/index.vue":()=>Yt(()=>import("./index-s_4WAr5t.js"),__vite__mapDeps([16,17,18])),"/src/views/business/distribution/invite-code/index.vue":()=>Yt(()=>import("./index-B7wbj6CN.js"),__vite__mapDeps([19,17,20])),"/src/views/business/distribution/withdrawal/index.vue":()=>Yt(()=>import("./index-CWafuZ4T.js"),__vite__mapDeps([21,17,22])),"/src/views/business/order/index.vue":()=>Yt(()=>import("./index-B5vx8x1s.js"),__vite__mapDeps([23,24])),"/src/views/business/planner/booking/index.vue":()=>Yt(()=>import("./index-CC92VbZU.js"),__vite__mapDeps([25,26,27])),"/src/views/business/planner/index.vue":()=>Yt(()=>import("./index-CFX51-H6.js"),__vite__mapDeps([28,26,29])),"/src/views/business/user/index.vue":()=>Yt(()=>import("./index-ksHKIyYs.js"),__vite__mapDeps([30,31])),"/src/views/dashboard/index.vue":()=>Yt(()=>import("./index-Brfu-FcG.js"),__vite__mapDeps([32,33])),"/src/views/error/404.vue":()=>Yt(()=>import("./404-Dzlbj-s5.js"),__vite__mapDeps([34,35])),"/src/views/login/index.vue":()=>Yt(()=>import("./index-CiGXCEis.js"),__vite__mapDeps([36,37])),"/src/views/password/index.vue":()=>Yt(()=>import("./index-BOIFmRTO.js"),__vite__mapDeps([38,39])),"/src/views/profile/index.vue":()=>Yt(()=>import("./index-2nEkUkBb.js"),__vite__mapDeps([40,41])),"/src/views/system/department/index.vue":()=>Yt(()=>import("./index-BZHbic1q.js"),__vite__mapDeps([42,43,44])),"/src/views/system/dict/index.vue":()=>Yt(()=>import("./index-B_U25GbV.js"),__vite__mapDeps([45,46])),"/src/views/system/menu/index.vue":()=>Yt(()=>import("./index-Ihcf2AlY.js"),__vite__mapDeps([47,48])),"/src/views/system/permission/index.vue":()=>Yt(()=>import("./index-Dv7NuhkL.js"),__vite__mapDeps([49,50,51])),"/src/views/system/role/index.vue":()=>Yt(()=>import("./index-n4cbamzS.js"),__vite__mapDeps([52,53,50,54])),"/src/views/system/user/index.vue":()=>Yt(()=>import("./index-gqVNkBef.js"),__vite__mapDeps([55,53,43,56]))}),x9=Q2("permission",()=>{const e=V([]),t=V([]);async function n(){const r=await n0e();t.value=r.data;const s=o(r.data);return e.value=s,s}function o(r){const s=[];for(const u of r){if(u.menuType===3)continue;const c={path:u.path||"",name:`Menu_${u.id}`,meta:{title:u.name,icon:u.icon,permission:u.permission,keepAlive:u.isCache},children:[]};if(u.parentId===0)if(c.component=E9,u.children&&u.children.length>0){c.children=o(u.children);const d=c.children[0];d&&(c.redirect=d.path)}else u.component&&(c.children=[{path:"",name:`Menu_${u.id}_index`,component:a(u.component),meta:c.meta}]);else u.component&&(c.component=a(u.component)),u.children&&u.children.length>0&&(c.children=o(u.children));s.push(c)}return s}function a(r){const s=`/src/views/${r}.vue`;return P0e[s]||(()=>Yt(()=>import("./404-Dzlbj-s5.js"),__vite__mapDeps([34,35])))}function l(){e.value=[],t.value=[]}return{routes:e,menus:t,generateRoutes:n,resetState:l}}),N0e=[{path:"/login",name:"Login",component:()=>Yt(()=>import("./index-CiGXCEis.js"),__vite__mapDeps([36,37])),meta:{title:"登录"}},{path:"/404",name:"NotFound",component:()=>Yt(()=>import("./404-Dzlbj-s5.js"),__vite__mapDeps([34,35])),meta:{title:"404"}},{path:"/profile",name:"Profile",component:()=>Yt(()=>Promise.resolve().then(()=>E6),void 0),meta:{title:"个人中心"},children:[{path:"",component:()=>Yt(()=>import("./index-2nEkUkBb.js"),__vite__mapDeps([40,41])),meta:{title:"个人中心"}}]},{path:"/password",name:"Password",component:()=>Yt(()=>Promise.resolve().then(()=>E6),void 0),meta:{title:"修改密码"},children:[{path:"",component:()=>Yt(()=>import("./index-BOIFmRTO.js"),__vite__mapDeps([38,39])),meta:{title:"修改密码"}}]}],zl=ide({history:Fce(),routes:N0e}),L0e=["/login","/404"];let bi=!1;function x6(){bi=!1}zl.beforeEach(async(e,t,n)=>{if(yde())if(e.path==="/login")n({path:"/"});else{const a=nm(),l=x9();if(bi)n();else try{a.userInfo||await a.getUserInfo(),(await l.generateRoutes()).forEach(s=>{zl.addRoute(s)}),zl.addRoute({path:"/:pathMatch(.*)*",redirect:"/404"}),bi=!0,n({...e,replace:!0})}catch{bi=!1,a.logout(),n(`/login?redirect=${e.path}`)}}else bi=!1,L0e.includes(e.path)?n():n(`/login?redirect=${e.path}`)});const B0e={mounted(e,t){var l,r;const{value:n}=t,a=((l=nm().userInfo)==null?void 0:l.permissions)||[];a.includes("*")||n&&((Array.isArray(n)?n.some(u=>a.includes(u)):a.includes(n))||(r=e.parentNode)==null||r.removeChild(e))}};function V0e(e){return wo({url:"/admin/upload/presigned-url",method:"POST",data:e})}async function D0e(e,t,n,o){await Cn.put(e,t,{headers:{"Content-Type":n},onUploadProgress:a=>{if(a.total&&o){const l=Math.round(a.loaded*100/a.total);o(l)}}})}async function F0e(e,t){const n=await V0e({fileName:e.name,contentType:e.type||"application/octet-stream",fileSize:e.size});if(n.code===0&&n.data){const o=n.data;if("supportsDirectUpload"in o&&o.supportsDirectUpload===!1)return T6(e,t);const a=o;return await D0e(a.uploadUrl,e,e.type||"application/octet-stream",t),{code:0,message:"上传成功",data:{url:a.fileUrl,fileName:e.name,fileSize:e.size}}}return console.warn("获取预签名URL失败,降级到服务端上传:",n.message),T6(e,t)}function T6(e,t){const n=new FormData;return n.append("file",e),wo({url:"/admin/upload/image",method:"POST",data:n,headers:{"Content-Type":"multipart/form-data"},onUploadProgress:o=>{if(o.total&&t){const a=Math.round(o.loaded*100/o.total);t(a)}}})}const z0e={class:"image-upload"},H0e={class:"upload-area"},K0e={key:0,class:"image-preview-wrapper"},W0e={class:"image-error"},j0e={class:"image-actions"},U0e={class:"upload-content"},q0e={class:"upload-text"},Y0e={key:0,class:"upload-error-message"},G0e={key:1,class:"url-input-wrapper"},X0e={key:2,class:"upload-tip"},J0e=z({__name:"index",props:{modelValue:{default:""},disabled:{type:Boolean,default:!1},placeholder:{default:"点击或拖拽上传"},urlPlaceholder:{default:"或输入图片URL"},showUrlInput:{type:Boolean,default:!0},accept:{default:"image/jpeg,image/png,image/gif,image/webp"},maxSize:{default:10},tip:{default:""},uploadAction:{default:"#"}},emits:["update:modelValue","change","upload-success","upload-error"],setup(e,{emit:t}){const n=["jpg","jpeg","png","gif","webp"],o=["image/jpeg","image/png","image/gif","image/webp"],a=e,l=t,r=V(!1),s=V(0),u=V(""),c=V(""),d=V(),f=k(()=>a.accept);de(()=>a.modelValue,E=>{E!==u.value&&(u.value=E||""),E&&(c.value="")},{immediate:!0});const p=E=>{const T=E.lastIndexOf(".");return T===-1?"":E.substring(T+1).toLowerCase()},m=E=>{const T=p(E.name),M=E.type.toLowerCase(),P=n.includes(T),R=o.includes(M);return!P&&!R?{valid:!1,message:`只支持 ${n.join("、")} 格式的图片`}:{valid:!0,message:""}},v=E=>{const T=E.size/1024/1024;return T>a.maxSize?{valid:!1,message:`文件大小不能超过 ${a.maxSize}MB,当前文件大小为 ${T.toFixed(2)}MB`}:{valid:!0,message:""}},h=()=>{c.value=""},g=E=>{h();const T=m(E);if(!T.valid)return c.value=T.message,Lo.error(T.message),!1;const M=v(E);return M.valid?!0:(c.value=M.message,Lo.error(M.message),!1)},b=async E=>{var M,P,R,L,$;const T=E.file;r.value=!0,s.value=0,h();try{const B=await F0e(T,W=>{s.value=W});if(B.code===0&&((M=B.data)!=null&&M.url)){const W=B.data.url;l("update:modelValue",W),l("change",W),l("upload-success",B.data),u.value=W,Lo.success("上传成功")}else{const W=B.message||"上传失败,请重试";throw new Error(W)}}catch(B){console.error("上传失败:",B);let W="上传失败,请重试";(R=(P=B.response)==null?void 0:P.data)!=null&&R.message?W=B.response.data.message:B.message&&(W=B.message),B.code==="ECONNABORTED"||(L=B.message)!=null&&L.includes("timeout")?W="上传超时,请检查网络后重试":($=B.message)!=null&&$.includes("Network Error")&&(W="网络错误,请检查网络连接"),c.value=W,l("upload-error",B),Lo.error(W)}finally{r.value=!1,s.value=0}},w=()=>{var E,T,M;(M=(T=(E=d.value)==null?void 0:E.$el)==null?void 0:T.querySelector("img"))==null||M.click()},_=()=>{l("update:modelValue",""),l("change",""),u.value="",h()},y=()=>{},S=()=>{const E=u.value.trim();E&&(h(),l("update:modelValue",E),l("change",E))};return(E,T)=>{const M=lt("el-icon"),P=lt("el-image"),R=lt("el-progress"),L=lt("el-upload"),$=lt("el-button"),B=lt("el-input");return C(),O("div",z0e,[x("div",H0e,[e.modelValue?(C(),O("div",K0e,[G(P,{ref_key:"imageRef",ref:d,src:e.modelValue,fit:"cover",class:"preview-image","preview-src-list":[e.modelValue],"preview-teleported":""},{error:Z(()=>[x("div",W0e,[G(M,null,{default:Z(()=>[G(i(E8))]),_:1}),T[1]||(T[1]=x("span",null,"加载失败",-1))])]),_:1},8,["src","preview-src-list"]),x("div",j0e,[G(M,{class:"action-icon",onClick:w},{default:Z(()=>[G(i(Tf))]),_:1}),G(M,{class:"action-icon",onClick:_},{default:Z(()=>[G(i(kv))]),_:1})])])):(C(),se(L,{key:1,ref:"uploadRef",class:"uploader",action:e.uploadAction,"show-file-list":!1,"before-upload":g,"http-request":b,accept:f.value,disabled:e.disabled||r.value,drag:""},{default:Z(()=>[x("div",U0e,[r.value?(C(),se(R,{key:1,type:"circle",percentage:s.value,width:50},null,8,["percentage"])):(C(),se(M,{key:0,class:"upload-icon"},{default:Z(()=>[G(i(xf))]),_:1})),x("div",q0e,Ce(r.value?"上传中...":e.placeholder),1)])]),_:1},8,["action","accept","disabled"]))]),c.value?(C(),O("div",Y0e,[G(M,null,{default:Z(()=>[G(i(js))]),_:1}),x("span",null,Ce(c.value),1)])):le("",!0),e.showUrlInput?(C(),O("div",G0e,[G(B,{modelValue:u.value,"onUpdate:modelValue":T[0]||(T[0]=W=>u.value=W),placeholder:e.urlPlaceholder,disabled:e.disabled,clearable:"",onBlur:y,onKeyup:Qt(S,["enter"])},{append:Z(()=>[G($,{disabled:!u.value,onClick:S},{default:Z(()=>[...T[2]||(T[2]=[mt(" 确定 ",-1)])]),_:1},8,["disabled"])]),_:1},8,["modelValue","placeholder","disabled"])])):le("",!0),e.tip?(C(),O("div",X0e,Ce(e.tip),1)):le("",!0)])}}}),Z0e=Xs(J0e,[["__scopeId","data-v-cdeccdae"]]);function Rpe(){return Ao.get("/api/admin/dict/types")}function Ipe(e){return Ao.post("/api/admin/dict/types",e)}function Ppe(e,t){return Ao.put(`/api/admin/dict/types/${e}`,t)}function Npe(e){return Ao.delete(`/api/admin/dict/types/${e}`)}function am(e){return Ao.get(`/api/admin/dict/items/${e}`)}function Lpe(e){return Ao.post("/api/admin/dict/items",e)}function Bpe(e,t){return Ao.put(`/api/admin/dict/items/${e}`,t)}function Vpe(e){return Ao.delete(`/api/admin/dict/items/${e}`)}const Q0e=z({__name:"index",props:ps({type:{},placeholder:{default:"请选择"},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},filterable:{type:Boolean,default:!1}},{modelValue:{},modelModifiers:{}}),emits:ps(["change"],["update:modelValue"]),setup(e,{expose:t,emit:n}){const o=e,a=n,l=Y2(e,"modelValue"),r=V(!1),s=V([]);async function u(){if(o.type){r.value=!0;try{const d=await am(o.type);s.value=(d.data||[]).filter(f=>f.status===1)}catch(d){console.error(`加载字典[${o.type}]失败`,d),s.value=[]}finally{r.value=!1}}}function c(d){const f=s.value.find(p=>p.value===d);a("change",d,f)}return de(()=>o.type,()=>{u()}),pt(()=>{u()}),t({reload:u,getOptions:()=>s.value}),(d,f)=>{const p=lt("el-option"),m=lt("el-select");return C(),se(m,{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=v=>l.value=v),placeholder:e.placeholder,disabled:e.disabled,clearable:e.clearable,filterable:e.filterable,loading:r.value,onChange:c},{default:Z(()=>[(C(!0),O(Fe,null,gt(s.value,v=>(C(),se(p,{key:v.value,label:v.label,value:v.value,disabled:v.status!==1},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","placeholder","disabled","clearable","filterable","loading"])}}}),epe=z({__name:"index",props:ps({type:{},disabled:{type:Boolean,default:!1},button:{type:Boolean,default:!1}},{modelValue:{},modelModifiers:{}}),emits:ps(["change"],["update:modelValue"]),setup(e,{expose:t,emit:n}){const o=e,a=n,l=Y2(e,"modelValue"),r=V([]);async function s(){if(o.type)try{const c=await am(o.type);r.value=(c.data||[]).filter(d=>d.status===1)}catch(c){console.error(`加载字典[${o.type}]失败`,c),r.value=[]}}function u(c){const d=r.value.find(f=>f.value===c);a("change",c,d)}return de(()=>o.type,()=>{s()}),pt(()=>{s()}),t({reload:s,getOptions:()=>r.value}),(c,d)=>{const f=lt("el-radio-group");return C(),se(f,{modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=p=>l.value=p),disabled:e.disabled,onChange:u},{default:Z(()=>[(C(!0),O(Fe,null,gt(r.value,p=>(C(),se(st(e.button?i(zy):i(jv)),{key:p.value,value:p.value,disabled:p.status!==1},{default:Z(()=>[mt(Ce(p.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])}}}),tpe=z({__name:"index",props:ps({type:{},disabled:{type:Boolean,default:!1},button:{type:Boolean,default:!1}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:ps(["change"],["update:modelValue"]),setup(e,{expose:t,emit:n}){const o=e,a=n,l=Y2(e,"modelValue"),r=V([]);async function s(){if(o.type)try{const c=await am(o.type);r.value=(c.data||[]).filter(d=>d.status===1)}catch(c){console.error(`加载字典[${o.type}]失败`,c),r.value=[]}}function u(c){const d=r.value.filter(f=>c.includes(f.value));a("change",c,d)}return de(()=>o.type,()=>{s()}),pt(()=>{s()}),t({reload:s,getOptions:()=>r.value}),(c,d)=>{const f=lt("el-checkbox-group");return C(),se(f,{modelValue:l.value,"onUpdate:modelValue":d[0]||(d[0]=p=>l.value=p),disabled:e.disabled,onChange:u},{default:Z(()=>[(C(!0),O(Fe,null,gt(r.value,p=>(C(),se(st(e.button?i(Iy):i(Ko)),{key:p.value,value:p.value,disabled:p.status!==1},{default:Z(()=>[mt(Ce(p.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","disabled"])}}}),npe={ImageUpload:Z0e,DictSelect:Q0e,DictRadio:epe,DictCheckbox:tpe};function ope(e){Object.entries(npe).forEach(([t,n])=>{e.component(t,n)})}const Lr=eb(ece);for(const[e,t]of Object.entries(kD))Lr.component(e,t);Lr.directive("permission",B0e);ope(Lr);Lr.use(tk());Lr.use(zl);Lr.use(Xue,{locale:Jue});Lr.mount("#app");export{Ut as $,e0e as A,U2 as B,ct as C,xf as D,Lo as E,Fe as F,le as G,$R as H,kv as I,Q0e as J,jV as K,O8 as L,AA as M,SR as N,E8 as O,jo as P,Z0e as Q,wo as R,mB as S,$V as T,iO as U,Ne as V,I_ as W,P8 as X,T8 as Y,epe as Z,Xs as _,Ot as a,Le as a0,Sn as a1,rpe as a2,de as a3,bo as a4,It as a5,Je as a6,tf as a7,Wo as a8,Bs as a9,MC as aa,MB as ab,fN as ac,qV as ad,PI as ae,yA as af,cD as ag,Dn as ah,v8 as ai,g8 as aj,Mpe as ak,et as al,Rpe as am,Npe as an,Ppe as ao,Ipe as ap,am as aq,Vpe as ar,Bpe as as,Lpe as at,st as au,Ope as av,$pe as aw,Ape as ax,x as b,O as c,z as d,G as e,Qt as f,lt as g,Zfe as h,ude as i,q_ as j,C as k,i as l,GV as m,NP as n,pt as o,bP as p,aa as q,V as r,WL as s,mt as t,nm as u,k as v,Z as w,Ce as x,gt as y,se as z};
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-REe13wUx.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-REe13wUx.css
deleted file mode 100644
index 77bc05e..0000000
--- a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-REe13wUx.css
+++ /dev/null
@@ -1 +0,0 @@
-.page-container[data-v-bf3eb08f]{padding:20px}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-TGTJ2A9y.js b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-TGTJ2A9y.js
new file mode 100644
index 0000000..3130ab7
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-TGTJ2A9y.js
@@ -0,0 +1 @@
+import{d as re,r as U,a as N,v as ie,o as de,g as d,B as ue,c as S,k as V,e as t,C as me,w as a,b as c,t as u,l as p,D as pe,f as k,J as z,L as fe,s as ge,z as L,O as T,x as O,H as ce,P as _e,I as be,Q as we,E as b,_ as ye}from"./index-PpjiaNYs.js";import{g as Ve,p as xe,q as Ce,r as he,s as ve}from"./assessment-5pkasQ0p.js";const De={class:"assessment-type-container"},Ee={class:"header-content"},Ie={class:"header-right"},Ue={class:"image-error"},Ne={key:1,class:"image-placeholder"},Se={class:"price-text"},ke={class:"pagination-wrapper"},ze=re({__name:"index",setup(Le){const f={OFFLINE:0,ONLINE:1,COMING:2},F=U(),y=U(),r=N({pageIndex:1,pageSize:10,name:"",code:"",status:void 0}),o=N({loading:!1,tableData:[],total:0,dialogVisible:!1,dialogTitle:"新增测评类型",formData:x(),formLoading:!1,isEdit:!1}),q=(l,e,s)=>{if(e==null){s(new Error("请输入价格"));return}if(e<=0){s(new Error("价格必须为正数"));return}s()},A=ie(()=>({name:[{required:!0,message:"请输入测评类型名称",trigger:"blur"},{max:50,message:"名称不能超过50个字符",trigger:"blur"}],code:[{required:!0,message:"请输入测评类型编码",trigger:"blur"},{max:50,message:"编码不能超过50个字符",trigger:"blur"}],price:[{required:!0,validator:q,trigger:"blur"}],status:[{required:!0,message:"请选择状态",trigger:"change"}]}));function x(){return{name:"",code:"",imageUrl:"",introContent:"",price:0,sort:0,status:f.OFFLINE}}function M(l){switch(l){case f.OFFLINE:return"info";case f.ONLINE:return"success";case f.COMING:return"warning";default:return"info"}}function R(l){switch(l){case f.OFFLINE:return"下线";case f.ONLINE:return"上线";case f.COMING:return"即将上线";default:return"未知"}}async function _(){var l,e;o.loading=!0;try{const s={pageIndex:r.pageIndex,pageSize:r.pageSize};r.name&&(s.name=r.name),r.code&&(s.code=r.code),r.status!==void 0&&r.status!==""&&(s.status=Number(r.status));const i=await Ve(s);if(i.code===0)o.tableData=((l=i.data)==null?void 0:l.items)||[],o.total=((e=i.data)==null?void 0:e.total)||0;else throw new Error(i.message||"获取测评类型列表失败")}catch(s){const i=s instanceof Error?s.message:"获取测评类型列表失败";b.error(i)}finally{o.loading=!1}}function C(){r.pageIndex=1,_()}function B(){r.name="",r.code="",r.status=void 0,r.pageIndex=1,_()}function G(l){r.pageSize=l,r.pageIndex=1,_()}function $(l){r.pageIndex=l,_()}function K({prop:l,order:e}){console.log("Sort changed:",l,e)}function P(){o.isEdit=!1,o.dialogTitle="新增测评类型",o.formData=x(),o.dialogVisible=!0}function j(l){o.isEdit=!0,o.dialogTitle="编辑测评类型",o.formData={id:l.id,name:l.name,code:l.code,imageUrl:l.imageUrl||"",introContent:l.introContent||"",price:l.price,sort:l.sort,status:l.status},o.dialogVisible=!0}async function H(l,e){if(l.status!==e)try{const s=await xe({id:l.id,status:e});if(s.code===0)b.success(J(e)),await _();else throw new Error(s.message||"状态更新失败")}catch(s){const i=s instanceof Error?s.message:"状态更新失败";b.error(i)}}function J(l){switch(l){case f.OFFLINE:return"已下线";case f.ONLINE:return"已上线";case f.COMING:return"已设为即将上线";default:return"状态已更新"}}async function Q(l){try{const e=await Ce(l.id);if(e.code===0)b.success("删除成功"),o.tableData.length===1&&r.pageIndex>1&&r.pageIndex--,await _();else throw new Error(e.message||"删除失败")}catch(e){const s=e instanceof Error?e.message:"删除失败";b.error(s)}}async function W(){if(y.value){try{await y.value.validate()}catch{return}o.formLoading=!0;try{const l=o.formData,e={name:l.name,code:l.code,imageUrl:l.imageUrl||void 0,introContent:l.introContent||void 0,price:l.price,sort:l.sort,status:Number(l.status)};let s;if(o.isEdit&&l.id?s=await he({...e,id:l.id}):s=await ve(e),s.code===0)b.success(o.isEdit?"更新成功":"创建成功"),o.dialogVisible=!1,await _();else throw new Error(s.message||(o.isEdit?"更新失败":"创建失败"))}catch(l){const e=l instanceof Error?l.message:o.isEdit?"更新失败":"创建失败";b.error(e)}finally{o.formLoading=!1}}}function X(){var l;(l=y.value)==null||l.resetFields(),o.formData=x()}return de(()=>{_()}),(l,e)=>{const s=d("el-icon"),i=d("el-button"),h=d("el-card"),w=d("el-input"),m=d("el-form-item"),E=d("el-form"),Y=d("el-image"),g=d("el-table-column"),Z=d("el-tag"),v=d("el-dropdown-item"),ee=d("el-dropdown-menu"),te=d("el-dropdown"),ae=d("el-popconfirm"),le=d("el-table"),oe=d("el-pagination"),I=d("el-input-number"),ne=d("el-dialog"),se=ue("loading");return V(),S("div",De,[t(h,{class:"page-header"},{default:a(()=>[c("div",Ee,[e[15]||(e[15]=c("div",{class:"header-left"},[c("h2",{class:"page-title"},"测评类型管理"),c("span",{class:"page-description"},"管理测评类型,配置测评产品的基本信息、价格和状态")],-1)),c("div",Ie,[t(i,{type:"primary",onClick:P},{default:a(()=>[t(s,null,{default:a(()=>[t(p(pe))]),_:1}),e[14]||(e[14]=u(" 新增测评类型 ",-1))]),_:1})])])]),_:1}),t(h,{class:"search-card"},{default:a(()=>[t(E,{model:r,inline:""},{default:a(()=>[t(m,{label:"名称"},{default:a(()=>[t(w,{modelValue:r.name,"onUpdate:modelValue":e[0]||(e[0]=n=>r.name=n),placeholder:"请输入名称",clearable:"",onKeyup:k(C,["enter"])},null,8,["modelValue"])]),_:1}),t(m,{label:"编码"},{default:a(()=>[t(w,{modelValue:r.code,"onUpdate:modelValue":e[1]||(e[1]=n=>r.code=n),placeholder:"请输入编码",clearable:"",onKeyup:k(C,["enter"])},null,8,["modelValue"])]),_:1}),t(m,{label:"状态"},{default:a(()=>[t(p(z),{modelValue:r.status,"onUpdate:modelValue":e[2]||(e[2]=n=>r.status=n),type:"assessment_status",placeholder:"请选择状态",clearable:""},null,8,["modelValue"])]),_:1}),t(m,null,{default:a(()=>[t(i,{type:"primary",onClick:C},{default:a(()=>[t(s,null,{default:a(()=>[t(p(fe))]),_:1}),e[16]||(e[16]=u(" 搜索 ",-1))]),_:1}),t(i,{onClick:B},{default:a(()=>[t(s,null,{default:a(()=>[t(p(ge))]),_:1}),e[17]||(e[17]=u(" 重置 ",-1))]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),me((V(),L(h,{class:"table-card"},{default:a(()=>[t(le,{ref_key:"tableRef",ref:F,data:o.tableData,"row-key":"id",stripe:"",onSortChange:K},{default:a(()=>[t(g,{label:"图片",width:"120",align:"center"},{default:a(({row:n})=>[n.imageUrl?(V(),L(Y,{key:0,src:n.imageUrl,"preview-src-list":[n.imageUrl],fit:"cover",style:{width:"80px",height:"80px","border-radius":"4px"},"preview-teleported":""},{error:a(()=>[c("div",Ue,[t(s,null,{default:a(()=>[t(p(T))]),_:1})])]),_:1},8,["src","preview-src-list"])):(V(),S("div",Ne,[t(s,null,{default:a(()=>[t(p(T))]),_:1})]))]),_:1}),t(g,{prop:"name",label:"名称","min-width":"150","show-overflow-tooltip":""}),t(g,{prop:"code",label:"编码",width:"120","show-overflow-tooltip":""}),t(g,{prop:"price",label:"价格",width:"100",align:"right"},{default:a(({row:n})=>[c("span",Se,"¥"+O(n.price.toFixed(2)),1)]),_:1}),t(g,{prop:"questionCount",label:"题目数",width:"80",align:"center"}),t(g,{label:"状态",width:"120",align:"center"},{default:a(({row:n})=>[t(Z,{type:M(n.status)},{default:a(()=>[u(O(n.statusName||R(n.status)),1)]),_:2},1032,["type"])]),_:1}),t(g,{prop:"sort",label:"排序",width:"80",align:"center",sortable:"custom"}),t(g,{prop:"createTime",label:"创建时间",width:"180",align:"center"}),t(g,{label:"操作",width:"200",fixed:"right",align:"center"},{default:a(({row:n})=>[t(i,{type:"primary",link:"",size:"small",onClick:D=>j(n)},{default:a(()=>[t(s,null,{default:a(()=>[t(p(ce))]),_:1}),e[18]||(e[18]=u(" 编辑 ",-1))]),_:1},8,["onClick"]),t(te,{onCommand:D=>H(n,D)},{dropdown:a(()=>[t(ee,null,{default:a(()=>[t(v,{command:0,disabled:n.status===0},{default:a(()=>[...e[20]||(e[20]=[u("下线",-1)])]),_:1},8,["disabled"]),t(v,{command:1,disabled:n.status===1},{default:a(()=>[...e[21]||(e[21]=[u("上线",-1)])]),_:1},8,["disabled"]),t(v,{command:2,disabled:n.status===2},{default:a(()=>[...e[22]||(e[22]=[u("即将上线",-1)])]),_:1},8,["disabled"])]),_:2},1024)]),default:a(()=>[t(i,{type:"warning",link:"",size:"small"},{default:a(()=>[e[19]||(e[19]=u(" 状态 ",-1)),t(s,{class:"el-icon--right"},{default:a(()=>[t(p(_e))]),_:1})]),_:1})]),_:2},1032,["onCommand"]),t(ae,{title:"确定要删除这个测评类型吗?","confirm-button-text":"确定","cancel-button-text":"取消",onConfirm:D=>Q(n)},{reference:a(()=>[t(i,{type:"danger",link:"",size:"small"},{default:a(()=>[t(s,null,{default:a(()=>[t(p(be))]),_:1}),e[23]||(e[23]=u(" 删除 ",-1))]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"]),c("div",ke,[t(oe,{"current-page":r.pageIndex,"onUpdate:currentPage":e[3]||(e[3]=n=>r.pageIndex=n),"page-size":r.pageSize,"onUpdate:pageSize":e[4]||(e[4]=n=>r.pageSize=n),"page-sizes":[10,20,50,100],total:o.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:G,onCurrentChange:$},null,8,["current-page","page-size","total"])])]),_:1})),[[se,o.loading]]),t(ne,{modelValue:o.dialogVisible,"onUpdate:modelValue":e[13]||(e[13]=n=>o.dialogVisible=n),title:o.dialogTitle,width:"700px","close-on-click-modal":!1,onClosed:X},{footer:a(()=>[t(i,{onClick:e[12]||(e[12]=n=>o.dialogVisible=!1)},{default:a(()=>[...e[25]||(e[25]=[u("取消",-1)])]),_:1}),t(i,{type:"primary",loading:o.formLoading,onClick:W},{default:a(()=>[...e[26]||(e[26]=[u(" 确定 ",-1)])]),_:1},8,["loading"])]),default:a(()=>[t(E,{ref_key:"formRef",ref:y,model:o.formData,rules:A.value,"label-width":"100px","label-position":"right"},{default:a(()=>[t(m,{label:"名称",prop:"name"},{default:a(()=>[t(w,{modelValue:o.formData.name,"onUpdate:modelValue":e[5]||(e[5]=n=>o.formData.name=n),placeholder:"请输入测评类型名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),t(m,{label:"编码",prop:"code"},{default:a(()=>[t(w,{modelValue:o.formData.code,"onUpdate:modelValue":e[6]||(e[6]=n=>o.formData.code=n),placeholder:"请输入测评类型编码",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),t(m,{label:"图片",prop:"imageUrl"},{default:a(()=>[t(p(we),{modelValue:o.formData.imageUrl,"onUpdate:modelValue":e[7]||(e[7]=n=>o.formData.imageUrl=n),placeholder:"点击上传测评类型图片",tip:"建议尺寸:200x200,支持 jpg、png、gif 格式","max-size":10},null,8,["modelValue"])]),_:1}),t(m,{label:"价格",prop:"price"},{default:a(()=>[t(I,{modelValue:o.formData.price,"onUpdate:modelValue":e[8]||(e[8]=n=>o.formData.price=n),min:.01,max:99999.99,precision:2,step:1,placeholder:"请输入价格",style:{width:"200px"}},null,8,["modelValue"]),e[24]||(e[24]=c("span",{class:"form-item-tip"},"元",-1))]),_:1}),t(m,{label:"介绍内容",prop:"introContent"},{default:a(()=>[t(w,{modelValue:o.formData.introContent,"onUpdate:modelValue":e[9]||(e[9]=n=>o.formData.introContent=n),type:"textarea",placeholder:"请输入测评类型介绍内容(支持HTML格式)",rows:6,maxlength:"5000","show-word-limit":""},null,8,["modelValue"])]),_:1}),t(m,{label:"排序",prop:"sort"},{default:a(()=>[t(I,{modelValue:o.formData.sort,"onUpdate:modelValue":e[10]||(e[10]=n=>o.formData.sort=n),min:0,max:9999,placeholder:"数值越小越靠前"},null,8,["modelValue"])]),_:1}),t(m,{label:"状态",prop:"status",required:""},{default:a(()=>[t(p(z),{modelValue:o.formData.status,"onUpdate:modelValue":e[11]||(e[11]=n=>o.formData.status=n),type:"assessment_status",placeholder:"请选择状态"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"])])}}}),Fe=ye(ze,[["__scopeId","data-v-fd86f42b"]]);export{Fe as default};
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-WaU-bqEL.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-WaU-bqEL.css
deleted file mode 100644
index 774cec9..0000000
--- a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-WaU-bqEL.css
+++ /dev/null
@@ -1 +0,0 @@
-.log-container[data-v-3545c179]{display:flex;flex-direction:column;gap:16px}.search-card[data-v-3545c179]{padding:0}.search-card[data-v-3545c179] .el-card__body{padding-bottom:0}.pagination-container[data-v-3545c179]{display:flex;justify-content:flex-end;margin-top:16px}.params-pre[data-v-3545c179]{margin:0;white-space:pre-wrap;word-break:break-all;font-size:12px;max-height:200px;overflow:auto}.error-text[data-v-3545c179]{color:var(--el-color-danger)}.ua-text[data-v-3545c179]{font-size:12px;color:var(--el-text-color-secondary);word-break:break-all}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-bCp_kyl7.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-bCp_kyl7.css
deleted file mode 100644
index 8419f5c..0000000
--- a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-bCp_kyl7.css
+++ /dev/null
@@ -1 +0,0 @@
-.login-container[data-v-91501f26]{height:100vh;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,var(--login-bg-start) 0%,var(--login-bg-end) 100%);position:relative;overflow:hidden}.login-container[data-v-91501f26]:before{content:"";position:absolute;width:600px;height:600px;background:#ffffff1a;border-radius:50%;top:-200px;right:-200px}.login-container[data-v-91501f26]:after{content:"";position:absolute;width:400px;height:400px;background:#ffffff14;border-radius:50%;bottom:-150px;left:-150px}.login-box[data-v-91501f26]{width:400px;padding:40px;background:var(--bg-white);border-radius:var(--border-radius-large);box-shadow:var(--login-box-shadow);position:relative;z-index:1}.login-header[data-v-91501f26]{text-align:center;margin-bottom:30px}.login-header h1[data-v-91501f26]{font-size:24px;color:var(--text-primary);margin:0;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-form[data-v-91501f26]{width:100%}.captcha-container[data-v-91501f26]{display:flex;width:100%;gap:12px}.captcha-input[data-v-91501f26]{flex:1}.captcha-image-wrapper[data-v-91501f26]{position:relative;width:120px;height:40px;border-radius:var(--border-radius-base);overflow:hidden;cursor:pointer;border:1px solid var(--border-color);background:var(--bg-light);display:flex;align-items:center;justify-content:center;transition:all var(--transition-duration) var(--transition-timing)}.captcha-image-wrapper[data-v-91501f26]:hover{border-color:var(--primary-color)}.captcha-image-wrapper:hover .refresh-icon[data-v-91501f26]{opacity:1}.captcha-image[data-v-91501f26]{width:100%;height:100%;object-fit:cover}.captcha-loading[data-v-91501f26]{display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}.refresh-icon[data-v-91501f26]{position:absolute;right:4px;bottom:4px;font-size:14px;color:var(--primary-color);background:#fffc;border-radius:50%;padding:2px;opacity:0;transition:opacity var(--transition-duration) var(--transition-timing)}.login-btn[data-v-91501f26]{width:100%;background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-dark) 100%);border:none;transition:all var(--transition-duration) var(--transition-timing)}.login-btn[data-v-91501f26]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #4a90d966}[data-v-91501f26] .el-input__wrapper{border-radius:var(--border-radius-base)}[data-v-91501f26] .el-input__wrapper:hover{box-shadow:0 0 0 1px var(--primary-light) inset}[data-v-91501f26] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--primary-color) inset}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-c3Km_8KE.js b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-c3Km_8KE.js
deleted file mode 100644
index b737713..0000000
--- a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-c3Km_8KE.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as s,c as t,k as n,b as o,_ as a}from"./index-C78VOXnX.js";const c={class:"page-container"},_=s({__name:"index",setup(r){return(d,e)=>(n(),t("div",c,[...e[0]||(e[0]=[o("h1",null,"佣金记录管理",-1)])]))}}),i=a(_,[["__scopeId","data-v-dec3807b"]]);export{i as default};
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-e6tuelCY.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-e6tuelCY.css
new file mode 100644
index 0000000..3402b06
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-e6tuelCY.css
@@ -0,0 +1 @@
+.dashboard-container[data-v-be08f318]{padding:0}.stat-card[data-v-be08f318]{transition:all var(--transition-duration, .3s) var(--transition-timing, ease)}.stat-card[data-v-be08f318]:hover{transform:translateY(-4px);box-shadow:var(--box-shadow-dark, 0 4px 12px rgba(0, 0, 0, .15))}.stat-card[data-v-be08f318] .el-card__body{padding:20px}.stat-card-content[data-v-be08f318]{display:flex;align-items:center}.stat-icon[data-v-be08f318]{width:64px;height:64px;border-radius:var(--border-radius-large, 12px);display:flex;align-items:center;justify-content:center;color:#fff;margin-right:16px;flex-shrink:0}.stat-icon-primary[data-v-be08f318]{background:linear-gradient(135deg,#79bbff,#409eff)}.stat-icon-success[data-v-be08f318]{background:linear-gradient(135deg,#95d475,#67c23a)}.stat-icon-warning[data-v-be08f318]{background:linear-gradient(135deg,#f0c78a,#e6a23c)}.stat-icon-danger[data-v-be08f318]{background:linear-gradient(135deg,#f89898,#f56c6c)}.stat-icon-info[data-v-be08f318]{background:linear-gradient(135deg,#a6a9ad,#909399)}.stat-icon-purple[data-v-be08f318]{background:linear-gradient(135deg,#b39ddb,#9c27b0)}.stat-content[data-v-be08f318]{flex:1;min-width:0}.stat-value[data-v-be08f318]{font-size:28px;font-weight:700;color:var(--text-primary, #303133);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-label[data-v-be08f318]{font-size:14px;color:var(--text-secondary, #909399);margin-top:4px}.chart-header[data-v-be08f318]{display:flex;justify-content:space-between;align-items:center}.chart-container[data-v-be08f318]{padding:10px}.chart-title[data-v-be08f318]{margin:0 0 10px;font-size:14px;font-weight:500;color:var(--text-primary, #303133);text-align:center}.pending-items[data-v-be08f318]{display:flex;flex-direction:column;gap:16px}.pending-item[data-v-be08f318]{display:flex;align-items:center;padding:16px;background:var(--bg-light, #f5f7fa);border-radius:var(--border-radius-base, 8px);cursor:pointer;transition:all .3s ease}.pending-item[data-v-be08f318]:hover{background:var(--bg-lighter, #ecf5ff);transform:translate(4px)}.pending-icon[data-v-be08f318]{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;margin-right:16px;flex-shrink:0}.pending-icon-warning[data-v-be08f318]{background:linear-gradient(135deg,#f0c78a,#e6a23c)}.pending-icon-primary[data-v-be08f318]{background:linear-gradient(135deg,#79bbff,#409eff)}.pending-content[data-v-be08f318]{flex:1}.pending-count[data-v-be08f318]{font-size:24px;font-weight:700;color:var(--text-primary, #303133)}.pending-label[data-v-be08f318]{font-size:14px;color:var(--text-secondary, #909399);margin-top:4px}.pending-arrow[data-v-be08f318]{color:var(--text-secondary, #909399);font-size:16px}.quick-actions[data-v-be08f318]{display:flex;gap:12px;flex-wrap:wrap}[data-v-be08f318] .el-card__header{background-color:var(--bg-light, #f5f7fa);border-bottom:1px solid var(--border-lighter, #ebeef5);font-weight:500;color:var(--text-primary, #303133)}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-eamMcQtT.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-eamMcQtT.css
new file mode 100644
index 0000000..6e3bbbd
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-eamMcQtT.css
@@ -0,0 +1 @@
+.page-container[data-v-9640a1b1]{padding:0}.card-header[data-v-9640a1b1]{display:flex;justify-content:space-between;align-items:center}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-ex66vh0r.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-ex66vh0r.css
deleted file mode 100644
index 21b3072..0000000
--- a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-ex66vh0r.css
+++ /dev/null
@@ -1 +0,0 @@
-.page-container[data-v-64ffcff4]{padding:20px}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-gqVNkBef.js b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-gqVNkBef.js
new file mode 100644
index 0000000..e502433
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-gqVNkBef.js
@@ -0,0 +1 @@
+import{R as c,d as Be,r as d,a as j,v as Ee,o as Fe,g as r,B as se,c as G,k as p,e as a,w as t,C as b,f as qe,t as u,z as v,F as ne,y as oe,x as de,b as ue,l as Ke,D as je,G as re,ak as Ge,E as U,W as We,_ as He}from"./index-PpjiaNYs.js";import{h as Je}from"./role-DKk_A5mA.js";import{g as Oe}from"./department-CC97pFMl.js";function Qe(o){return c({url:"/admin/users",method:"get",params:o})}function Xe(o){return c({url:"/admin/users",method:"post",data:o})}function Ye(o,x){return c({url:`/admin/users/${o}`,method:"put",data:x})}function Ze(o){return c({url:`/admin/users/${o}`,method:"delete"})}function el(o,x){return c({url:`/admin/users/${o}/status`,method:"put",data:{status:x}})}function ll(o){return c({url:`/admin/users/${o.userId}/reset-password`,method:"put",data:{newPassword:o.newPassword}})}function al(o){return c({url:`/admin/users/${o.userId}/roles`,method:"put",data:{roleIds:o.roleIds}})}function tl(o){return c({url:`/admin/users/${o}/roles`,method:"get"})}function sl(o){return c({url:`/admin/users/${o.userId}/department`,method:"put",data:{departmentId:o.departmentId}})}function nl(o){return c({url:`/admin/users/${o}/menus`,method:"get"})}function ol(o){return c({url:`/admin/users/${o.userId}/menus`,method:"put",data:{menuIds:o.menuIds}})}const dl={class:"page-container"},ul={class:"card-header"},rl=Be({__name:"index",setup(o){const x=d(!1),W=d([]),H=d(0),m=j({keyword:"",departmentId:void 0,status:void 0,page:1,pageSize:10}),J=d([]),L=d([]),O=d([]),I=d(!1),P=d(!1),ie=Ee(()=>P.value?"编辑管理员":"新增管理员"),M=d(),T=d(!1),n=j({id:0,username:"",password:"",realName:"",email:"",phone:"",status:1}),me={username:[{required:!0,message:"请输入用户名",trigger:"blur"},{min:3,max:20,message:"长度在 3 到 20 个字符",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,max:20,message:"长度在 6 到 20 个字符",trigger:"blur"}],email:[{type:"email",message:"请输入正确的邮箱地址",trigger:"blur"}],phone:[{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号",trigger:"blur"}]},R=d(!1),z=d([]),V=d(0),B=d(!1),S=d(!1),A=d(null),E=d(!1),D=d(!1),Q=d(),X=d([]),F=d(!1),h=d(!1),Y=d(),q=d(!1),y=j({newPassword:"",confirmPassword:""}),pe={newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,max:20,message:"长度在 6 到 20 个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请再次输入密码",trigger:"blur"},{validator:(s,e,$)=>{e!==y.newPassword?$(new Error("两次输入密码不一致")):$()},trigger:"blur"}]},w=async()=>{x.value=!0;try{const s=await Qe(m);W.value=s.data.list,H.value=s.data.total}finally{x.value=!1}},fe=async()=>{const[s,e,$]=await Promise.all([Je(),Oe(),Ge()]);J.value=s.data,L.value=e.data,O.value=$.data},Z=()=>{m.page=1,w()},ve=()=>{m.keyword="",m.departmentId=void 0,m.status=void 0,m.page=1,w()},ee=()=>{var s;n.id=0,n.username="",n.password="",n.realName="",n.email="",n.phone="",n.status=1,(s=M.value)==null||s.resetFields()},ge=()=>{P.value=!1,ee(),I.value=!0},ce=s=>{P.value=!0,n.id=s.id,n.realName=s.realName||"",n.email=s.email||"",n.phone=s.phone||"",n.status=s.status,I.value=!0},ye=async()=>{var e;if(await((e=M.value)==null?void 0:e.validate())){T.value=!0;try{P.value?(await Ye(n.id,n),U.success("更新成功")):(await Xe(n),U.success("创建成功")),I.value=!1,w()}finally{T.value=!1}}},we=async s=>{try{await We.confirm(`确定要删除管理员 "${s.username}" 吗?`,"提示",{type:"warning"}),await Ze(s.id),U.success("删除成功"),w()}catch{}},be=async s=>{try{await el(s.id,s.status),U.success("状态更新成功")}catch{s.status=s.status===1?0:1}},Ve=async s=>{V.value=s.id;const e=await tl(s.id);z.value=e.data,R.value=!0},ke=async()=>{B.value=!0;try{await al({userId:V.value,roleIds:z.value}),U.success("分配成功"),R.value=!1,w()}finally{B.value=!1}},_e=s=>{V.value=s.id,A.value=s.departmentId,S.value=!0},Ce=async()=>{E.value=!0;try{await sl({userId:V.value,departmentId:A.value}),U.success("分配成功"),S.value=!1,w()}finally{E.value=!1}},Ue=async s=>{V.value=s.id;const e=await nl(s.id);X.value=e.data,D.value=!0},xe=async()=>{var s;F.value=!0;try{const e=(s=Q.value)==null?void 0:s.getCheckedKeys(!1);await ol({userId:V.value,menuIds:e}),U.success("分配成功"),D.value=!1}finally{F.value=!1}},Ie=s=>{V.value=s.id,y.newPassword="",y.confirmPassword="",h.value=!0},Pe=async()=>{var e;if(await((e=Y.value)==null?void 0:e.validate())){q.value=!0;try{await ll({userId:V.value,newPassword:y.newPassword}),U.success("密码重置成功"),h.value=!1}finally{q.value=!1}}};return Fe(()=>{fe(),w()}),(s,e)=>{const $=r("el-icon"),i=r("el-button"),k=r("el-input"),f=r("el-form-item"),le=r("el-tree-select"),ae=r("el-option"),$e=r("el-select"),K=r("el-form"),_=r("el-table-column"),Re=r("el-tag"),Se=r("el-switch"),De=r("el-table"),he=r("el-pagination"),Ne=r("el-card"),te=r("el-radio"),ze=r("el-radio-group"),N=r("el-dialog"),Ae=r("el-checkbox"),Le=r("el-checkbox-group"),Me=r("el-tree"),C=se("permission"),Te=se("loading");return p(),G("div",dl,[a(Ne,null,{header:t(()=>[ue("div",ul,[e[26]||(e[26]=ue("span",null,"管理员管理",-1)),b((p(),v(i,{type:"primary",onClick:ge},{default:t(()=>[a($,null,{default:t(()=>[a(Ke(je))]),_:1}),e[25]||(e[25]=u("新增管理员 ",-1))]),_:1})),[[C,"user:create"]])])]),default:t(()=>[a(K,{inline:!0,model:m,class:"search-form"},{default:t(()=>[a(f,{label:"关键词"},{default:t(()=>[a(k,{modelValue:m.keyword,"onUpdate:modelValue":e[0]||(e[0]=l=>m.keyword=l),placeholder:"用户名/姓名/手机号",clearable:"",onKeyup:qe(Z,["enter"])},null,8,["modelValue"])]),_:1}),a(f,{label:"部门"},{default:t(()=>[a(le,{modelValue:m.departmentId,"onUpdate:modelValue":e[1]||(e[1]=l=>m.departmentId=l),data:L.value,props:{label:"name",value:"id",children:"children"},"check-strictly":"","render-after-expand":!1,placeholder:"全部",clearable:"",style:{width:"200px"}},null,8,["modelValue","data"])]),_:1}),a(f,{label:"状态"},{default:t(()=>[a($e,{modelValue:m.status,"onUpdate:modelValue":e[2]||(e[2]=l=>m.status=l),placeholder:"全部",clearable:""},{default:t(()=>[a(ae,{label:"启用",value:1}),a(ae,{label:"禁用",value:0})]),_:1},8,["modelValue"])]),_:1}),a(f,null,{default:t(()=>[a(i,{type:"primary",onClick:Z},{default:t(()=>[...e[27]||(e[27]=[u("查询",-1)])]),_:1}),a(i,{onClick:ve},{default:t(()=>[...e[28]||(e[28]=[u("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"]),b((p(),v(De,{data:W.value},{default:t(()=>[a(_,{prop:"username",label:"用户名","min-width":"100"}),a(_,{prop:"realName",label:"姓名","min-width":"100"}),a(_,{prop:"departmentName",label:"部门","min-width":"120"}),a(_,{prop:"phone",label:"手机号","min-width":"120"}),a(_,{label:"角色","min-width":"150"},{default:t(({row:l})=>[(p(!0),G(ne,null,oe(l.roles,g=>(p(),v(Re,{key:g.id,size:"small",style:{"margin-right":"4px"}},{default:t(()=>[u(de(g.name),1)]),_:2},1024))),128))]),_:1}),a(_,{prop:"status",label:"状态",width:"80"},{default:t(({row:l})=>[b(a(Se,{modelValue:l.status,"onUpdate:modelValue":g=>l.status=g,"active-value":1,"inactive-value":0,disabled:l.username==="admin",onChange:g=>be(l)},null,8,["modelValue","onUpdate:modelValue","disabled","onChange"]),[[C,"user:update"]])]),_:1}),a(_,{prop:"lastLoginTime",label:"最后登录",width:"170"}),a(_,{label:"操作",width:"320",fixed:"right"},{default:t(({row:l})=>[b((p(),v(i,{link:"",type:"primary",onClick:g=>ce(l)},{default:t(()=>[...e[29]||(e[29]=[u("编辑",-1)])]),_:1},8,["onClick"])),[[C,"user:update"]]),b((p(),v(i,{link:"",type:"primary",onClick:g=>Ve(l)},{default:t(()=>[...e[30]||(e[30]=[u("分配角色",-1)])]),_:1},8,["onClick"])),[[C,"user:assign_role"]]),b((p(),v(i,{link:"",type:"primary",onClick:g=>_e(l)},{default:t(()=>[...e[31]||(e[31]=[u("分配部门",-1)])]),_:1},8,["onClick"])),[[C,"user:assign_department"]]),b((p(),v(i,{link:"",type:"primary",onClick:g=>Ue(l)},{default:t(()=>[...e[32]||(e[32]=[u("专属菜单",-1)])]),_:1},8,["onClick"])),[[C,"user:assign_menu"]]),b((p(),v(i,{link:"",type:"warning",onClick:g=>Ie(l)},{default:t(()=>[...e[33]||(e[33]=[u("重置密码",-1)])]),_:1},8,["onClick"])),[[C,"user:reset_password"]]),b((p(),v(i,{link:"",type:"danger",onClick:g=>we(l),disabled:l.username==="admin"},{default:t(()=>[...e[34]||(e[34]=[u("删除",-1)])]),_:1},8,["onClick","disabled"])),[[C,"user:delete"]])]),_:1})]),_:1},8,["data"])),[[Te,x.value]]),a(he,{"current-page":m.page,"onUpdate:currentPage":e[3]||(e[3]=l=>m.page=l),"page-size":m.pageSize,"onUpdate:pageSize":e[4]||(e[4]=l=>m.pageSize=l),"page-sizes":[10,20,50,100],total:H.value,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:w,onCurrentChange:w,class:"pagination"},null,8,["current-page","page-size","total"])]),_:1}),a(N,{modelValue:I.value,"onUpdate:modelValue":e[12]||(e[12]=l=>I.value=l),title:ie.value,width:"500px",onClose:ee},{footer:t(()=>[a(i,{onClick:e[11]||(e[11]=l=>I.value=!1)},{default:t(()=>[...e[37]||(e[37]=[u("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:ye,loading:T.value},{default:t(()=>[...e[38]||(e[38]=[u("确定",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(K,{ref_key:"formRef",ref:M,model:n,rules:me,"label-width":"80px"},{default:t(()=>[P.value?re("",!0):(p(),v(f,{key:0,label:"用户名",prop:"username"},{default:t(()=>[a(k,{modelValue:n.username,"onUpdate:modelValue":e[5]||(e[5]=l=>n.username=l),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1})),P.value?re("",!0):(p(),v(f,{key:1,label:"密码",prop:"password"},{default:t(()=>[a(k,{modelValue:n.password,"onUpdate:modelValue":e[6]||(e[6]=l=>n.password=l),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1})),a(f,{label:"姓名",prop:"realName"},{default:t(()=>[a(k,{modelValue:n.realName,"onUpdate:modelValue":e[7]||(e[7]=l=>n.realName=l),placeholder:"请输入姓名"},null,8,["modelValue"])]),_:1}),a(f,{label:"手机号",prop:"phone"},{default:t(()=>[a(k,{modelValue:n.phone,"onUpdate:modelValue":e[8]||(e[8]=l=>n.phone=l),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),a(f,{label:"邮箱",prop:"email"},{default:t(()=>[a(k,{modelValue:n.email,"onUpdate:modelValue":e[9]||(e[9]=l=>n.email=l),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),a(f,{label:"状态",prop:"status"},{default:t(()=>[a(ze,{modelValue:n.status,"onUpdate:modelValue":e[10]||(e[10]=l=>n.status=l)},{default:t(()=>[a(te,{value:1},{default:t(()=>[...e[35]||(e[35]=[u("启用",-1)])]),_:1}),a(te,{value:0},{default:t(()=>[...e[36]||(e[36]=[u("禁用",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),a(N,{modelValue:R.value,"onUpdate:modelValue":e[15]||(e[15]=l=>R.value=l),title:"分配角色",width:"400px"},{footer:t(()=>[a(i,{onClick:e[14]||(e[14]=l=>R.value=!1)},{default:t(()=>[...e[39]||(e[39]=[u("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:ke,loading:B.value},{default:t(()=>[...e[40]||(e[40]=[u("确定",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(Le,{modelValue:z.value,"onUpdate:modelValue":e[13]||(e[13]=l=>z.value=l)},{default:t(()=>[(p(!0),G(ne,null,oe(J.value,l=>(p(),v(Ae,{key:l.id,value:l.id,disabled:l.code==="super_admin"},{default:t(()=>[u(de(l.name),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),a(N,{modelValue:S.value,"onUpdate:modelValue":e[18]||(e[18]=l=>S.value=l),title:"分配部门",width:"400px"},{footer:t(()=>[a(i,{onClick:e[17]||(e[17]=l=>S.value=!1)},{default:t(()=>[...e[41]||(e[41]=[u("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:Ce,loading:E.value},{default:t(()=>[...e[42]||(e[42]=[u("确定",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(le,{modelValue:A.value,"onUpdate:modelValue":e[16]||(e[16]=l=>A.value=l),data:L.value,props:{label:"name",value:"id",children:"children"},"check-strictly":"","render-after-expand":!1,placeholder:"请选择部门",clearable:"",style:{width:"100%"}},null,8,["modelValue","data"])]),_:1},8,["modelValue"]),a(N,{modelValue:D.value,"onUpdate:modelValue":e[20]||(e[20]=l=>D.value=l),title:"分配专属菜单",width:"500px"},{footer:t(()=>[a(i,{onClick:e[19]||(e[19]=l=>D.value=!1)},{default:t(()=>[...e[43]||(e[43]=[u("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:xe,loading:F.value},{default:t(()=>[...e[44]||(e[44]=[u("确定",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(Me,{ref_key:"menuTreeRef",ref:Q,data:O.value,props:{label:"name",children:"children"},"show-checkbox":"","node-key":"id","default-checked-keys":X.value,"check-strictly":!0},null,8,["data","default-checked-keys"])]),_:1},8,["modelValue"]),a(N,{modelValue:h.value,"onUpdate:modelValue":e[24]||(e[24]=l=>h.value=l),title:"重置密码",width:"400px"},{footer:t(()=>[a(i,{onClick:e[23]||(e[23]=l=>h.value=!1)},{default:t(()=>[...e[45]||(e[45]=[u("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:Pe,loading:q.value},{default:t(()=>[...e[46]||(e[46]=[u("确定",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(K,{ref_key:"passwordFormRef",ref:Y,model:y,rules:pe,"label-width":"80px"},{default:t(()=>[a(f,{label:"新密码",prop:"newPassword"},{default:t(()=>[a(k,{modelValue:y.newPassword,"onUpdate:modelValue":e[21]||(e[21]=l=>y.newPassword=l),type:"password",placeholder:"请输入新密码","show-password":""},null,8,["modelValue"])]),_:1}),a(f,{label:"确认密码",prop:"confirmPassword"},{default:t(()=>[a(k,{modelValue:y.confirmPassword,"onUpdate:modelValue":e[22]||(e[22]=l=>y.confirmPassword=l),type:"password",placeholder:"请再次输入密码","show-password":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),fl=He(rl,[["__scopeId","data-v-1e540519"]]);export{fl as default};
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-gwrt2qPS.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-gwrt2qPS.css
new file mode 100644
index 0000000..3394070
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-gwrt2qPS.css
@@ -0,0 +1 @@
+.page-container[data-v-52969f5e]{padding:20px}.page-header[data-v-52969f5e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.page-header h2[data-v-52969f5e]{margin:0;font-size:18px;font-weight:600}.stats-row[data-v-52969f5e]{margin-bottom:20px}.stat-card[data-v-52969f5e]{text-align:center}.stat-label[data-v-52969f5e]{font-size:14px;color:#909399;margin-bottom:10px}.stat-value[data-v-52969f5e]{font-size:28px;font-weight:600;color:#303133}.stat-count[data-v-52969f5e]{font-size:12px;color:#909399;margin-top:5px}.stat-card.pending .stat-value[data-v-52969f5e]{color:#e6a23c}.stat-card.settled .stat-value[data-v-52969f5e]{color:#67c23a}.search-card[data-v-52969f5e],.table-card[data-v-52969f5e]{margin-bottom:20px}.pagination-container[data-v-52969f5e]{display:flex;justify-content:flex-end;margin-top:20px}.sub-text[data-v-52969f5e]{font-size:12px;color:#909399}.amount[data-v-52969f5e]{color:#f56c6c;font-weight:600}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-ksHKIyYs.js b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-ksHKIyYs.js
new file mode 100644
index 0000000..1ed7999
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-ksHKIyYs.js
@@ -0,0 +1 @@
+import{R as V,d as ce,r as F,a as Y,o as me,g as c,B as pe,c as O,k as w,e as t,C as j,w as l,b as i,t as m,l as f,N as fe,f as B,J as M,L as _e,s as ge,z as A,m as P,x as u,X as ve,H as be,G as Le,F as he,E as L,_ as De}from"./index-PpjiaNYs.js";function we(_){return V({url:"/admin/user/getList",method:"get",params:_})}function ye(_){return V({url:"/admin/user/getDetail",method:"get",params:{id:_}})}function Ve(_){return V({url:"/admin/user/updateStatus",method:"post",data:_})}function Te(_){return V({url:"/admin/user/updateLevel",method:"post",data:_})}function ke(_){return V({url:"/admin/user/export",method:"get",params:_,responseType:"blob"})}const xe={class:"user-container"},Se={class:"header-content"},Ue={class:"header-right"},Ce={class:"balance-text"},Ee={class:"pagination-wrapper"},Ie={class:"user-detail"},Re={class:"detail-section"},ze={class:"user-profile"},Ne={class:"profile-info"},Fe={class:"nickname"},Oe={class:"uid"},Be={class:"detail-section"},Me={class:"detail-section"},Ae={class:"money-text"},Pe={class:"money-text"},$e={class:"money-text"},Ke={class:"detail-section"},Ye={class:"stats-grid"},je={class:"stat-item"},qe={class:"stat-value"},Ge={class:"stat-item"},He={class:"stat-value"},Je={class:"stat-item"},Xe={class:"stat-value"},Qe=ce({__name:"index",setup(_){const h={NORMAL:0,VIP:1,DISTRIBUTOR:2},T={DISABLED:0,NORMAL:1},q=[{text:"最近一周",value:()=>{const n=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*7),[e,n]}},{text:"最近一个月",value:()=>{const n=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*30),[e,n]}},{text:"最近三个月",value:()=>{const n=new Date,e=new Date;return e.setTime(e.getTime()-3600*1e3*24*90),[e,n]}}],G=F(),U=F(),C=F(null),a=Y({pageIndex:1,pageSize:10,uid:"",phone:"",nickname:"",userLevel:void 0,status:void 0,createTimeStart:void 0,createTimeEnd:void 0}),s=Y({loading:!1,tableData:[],total:0,drawerVisible:!1,detailLoading:!1,userDetail:null,levelDialogVisible:!1,levelFormData:{id:0,currentLevel:0,userLevel:""},levelFormLoading:!1,exportLoading:!1}),H={userLevel:[{required:!0,message:"请选择新等级",trigger:"change"}]};function E(n){switch(n){case h.NORMAL:return"info";case h.VIP:return"success";case h.DISTRIBUTOR:return"warning";default:return"info"}}function I(n){switch(n){case h.NORMAL:return"普通用户";case h.VIP:return"VIP";case h.DISTRIBUTOR:return"分销商";default:return"未知"}}function k(n){return n==null?"0.00":n.toFixed(2)}async function D(){var n,e;s.loading=!0;try{const r={pageIndex:a.pageIndex,pageSize:a.pageSize};a.uid&&(r.uid=a.uid),a.phone&&(r.phone=a.phone),a.nickname&&(r.nickname=a.nickname),a.userLevel!==void 0&&a.userLevel!==""&&(r.userLevel=Number(a.userLevel)),a.status!==void 0&&a.status!==""&&(r.status=Number(a.status)),a.createTimeStart&&(r.createTimeStart=a.createTimeStart),a.createTimeEnd&&(r.createTimeEnd=a.createTimeEnd);const d=await we(r);if(d.code===0)s.tableData=(((n=d.data)==null?void 0:n.items)||[]).map(p=>({...p,statusLoading:!1})),s.total=((e=d.data)==null?void 0:e.total)||0;else throw new Error(d.message||"获取用户列表失败")}catch(r){const d=r instanceof Error?r.message:"获取用户列表失败";L.error(d)}finally{s.loading=!1}}async function J(n){s.detailLoading=!0;try{const e=await ye(n);if(e.code===0)s.userDetail=e.data;else throw new Error(e.message||"获取用户详情失败")}catch(e){const r=e instanceof Error?e.message:"获取用户详情失败";L.error(r)}finally{s.detailLoading=!1}}function x(){a.pageIndex=1,D()}function X(){a.uid="",a.phone="",a.nickname="",a.userLevel=void 0,a.status=void 0,a.createTimeStart=void 0,a.createTimeEnd=void 0,C.value=null,a.pageIndex=1,D()}function Q(n){n?(a.createTimeStart=n[0],a.createTimeEnd=n[1]):(a.createTimeStart=void 0,a.createTimeEnd=void 0)}function W(n){a.pageSize=n,a.pageIndex=1,D()}function Z(n){a.pageIndex=n,D()}function ee(n){s.drawerVisible=!0,s.userDetail=null,J(n.id)}async function te(n,e){n.statusLoading=!0;try{const r=await Ve({id:n.id,status:e});if(r.code===0)L.success(e===T.NORMAL?"已启用":"已禁用");else throw n.status=e===T.NORMAL?T.DISABLED:T.NORMAL,new Error(r.message||"状态更新失败")}catch(r){const d=r instanceof Error?r.message:"状态更新失败";L.error(d)}finally{n.statusLoading=!1}}function ae(n){s.levelFormData={id:n.id,currentLevel:n.userLevel,userLevel:""},s.levelDialogVisible=!0}async function le(){if(U.value){try{await U.value.validate()}catch{return}s.levelFormLoading=!0;try{const n=await Te({id:s.levelFormData.id,userLevel:Number(s.levelFormData.userLevel)});if(n.code===0)L.success("等级修改成功"),s.levelDialogVisible=!1,await D();else throw new Error(n.message||"等级修改失败")}catch(n){const e=n instanceof Error?n.message:"等级修改失败";L.error(e)}finally{s.levelFormLoading=!1}}}async function se(){s.exportLoading=!0;try{const n={pageIndex:1,pageSize:1e4};a.uid&&(n.uid=a.uid),a.phone&&(n.phone=a.phone),a.nickname&&(n.nickname=a.nickname),a.userLevel!==void 0&&a.userLevel!==""&&(n.userLevel=Number(a.userLevel)),a.status!==void 0&&a.status!==""&&(n.status=Number(a.status)),a.createTimeStart&&(n.createTimeStart=a.createTimeStart),a.createTimeEnd&&(n.createTimeEnd=a.createTimeEnd);const e=await ke(n),r=e.data instanceof Blob?e.data:new Blob([e.data]),d=window.URL.createObjectURL(r),p=document.createElement("a");p.href=d,p.download=`用户列表_${new Date().toISOString().slice(0,10)}.xlsx`,document.body.appendChild(p),p.click(),document.body.removeChild(p),window.URL.revokeObjectURL(d),L.success("导出成功")}catch(n){const e=n instanceof Error?n.message:"导出失败";L.error(e)}finally{s.exportLoading=!1}}return me(()=>{D()}),(n,e)=>{const r=c("el-icon"),d=c("el-button"),p=c("el-card"),R=c("el-input"),b=c("el-form-item"),ne=c("el-date-picker"),$=c("el-form"),g=c("el-table-column"),z=c("el-avatar"),S=c("el-tag"),oe=c("el-switch"),ie=c("el-table"),re=c("el-pagination"),v=c("el-descriptions-item"),N=c("el-descriptions"),de=c("el-drawer"),ue=c("el-dialog"),K=pe("loading");return w(),O("div",xe,[t(p,{class:"page-header"},{default:l(()=>[i("div",Se,[e[13]||(e[13]=i("div",{class:"header-left"},[i("h2",{class:"page-title"},"用户管理"),i("span",{class:"page-description"},"管理C端用户信息,支持搜索、查看详情、状态管理、等级修改、导出")],-1)),i("div",Ue,[t(d,{type:"success",onClick:se,loading:s.exportLoading},{default:l(()=>[t(r,null,{default:l(()=>[t(f(fe))]),_:1}),e[12]||(e[12]=m(" 导出Excel ",-1))]),_:1},8,["loading"])])])]),_:1}),t(p,{class:"search-card"},{default:l(()=>[t($,{model:a,inline:""},{default:l(()=>[t(b,{label:"UID"},{default:l(()=>[t(R,{modelValue:a.uid,"onUpdate:modelValue":e[0]||(e[0]=o=>a.uid=o),placeholder:"请输入UID",clearable:"",onKeyup:B(x,["enter"])},null,8,["modelValue"])]),_:1}),t(b,{label:"手机号"},{default:l(()=>[t(R,{modelValue:a.phone,"onUpdate:modelValue":e[1]||(e[1]=o=>a.phone=o),placeholder:"请输入手机号",clearable:"",onKeyup:B(x,["enter"])},null,8,["modelValue"])]),_:1}),t(b,{label:"昵称"},{default:l(()=>[t(R,{modelValue:a.nickname,"onUpdate:modelValue":e[2]||(e[2]=o=>a.nickname=o),placeholder:"请输入昵称",clearable:"",onKeyup:B(x,["enter"])},null,8,["modelValue"])]),_:1}),t(b,{label:"用户等级"},{default:l(()=>[t(f(M),{modelValue:a.userLevel,"onUpdate:modelValue":e[3]||(e[3]=o=>a.userLevel=o),type:"user_level",placeholder:"请选择等级",clearable:""},null,8,["modelValue"])]),_:1}),t(b,{label:"状态"},{default:l(()=>[t(f(M),{modelValue:a.status,"onUpdate:modelValue":e[4]||(e[4]=o=>a.status=o),type:"common_status",placeholder:"请选择状态",clearable:""},null,8,["modelValue"])]),_:1}),t(b,{label:"创建时间"},{default:l(()=>[t(ne,{modelValue:C.value,"onUpdate:modelValue":e[5]||(e[5]=o=>C.value=o),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",shortcuts:q,onChange:Q},null,8,["modelValue"])]),_:1}),t(b,null,{default:l(()=>[t(d,{type:"primary",onClick:x},{default:l(()=>[t(r,null,{default:l(()=>[t(f(_e))]),_:1}),e[14]||(e[14]=m(" 搜索 ",-1))]),_:1}),t(d,{onClick:X},{default:l(()=>[t(r,null,{default:l(()=>[t(f(ge))]),_:1}),e[15]||(e[15]=m(" 重置 ",-1))]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),j((w(),A(p,{class:"table-card"},{default:l(()=>[t(ie,{ref_key:"tableRef",ref:G,data:s.tableData,"row-key":"id",stripe:""},{default:l(()=>[t(g,{prop:"uid",label:"UID",width:"120","show-overflow-tooltip":""}),t(g,{prop:"phone",label:"手机号",width:"130","show-overflow-tooltip":""}),t(g,{prop:"nickname",label:"昵称","min-width":"120","show-overflow-tooltip":""}),t(g,{label:"头像",width:"80",align:"center"},{default:l(({row:o})=>[o.avatar?(w(),A(z,{key:0,src:o.avatar,size:40},{default:l(()=>[t(r,null,{default:l(()=>[t(f(P))]),_:1})]),_:1},8,["src"])):(w(),A(z,{key:1,size:40},{default:l(()=>[t(r,null,{default:l(()=>[t(f(P))]),_:1})]),_:1}))]),_:1}),t(g,{label:"用户等级",width:"100",align:"center"},{default:l(({row:o})=>[t(S,{type:E(o.userLevel)},{default:l(()=>[m(u(o.userLevelName||I(o.userLevel)),1)]),_:2},1032,["type"])]),_:1}),t(g,{prop:"balance",label:"余额",width:"100",align:"right"},{default:l(({row:o})=>[i("span",Ce,"¥"+u(k(o.balance)),1)]),_:1}),t(g,{label:"状态",width:"100",align:"center"},{default:l(({row:o})=>[t(oe,{modelValue:o.status,"onUpdate:modelValue":y=>o.status=y,"active-value":1,"inactive-value":0,loading:o.statusLoading,onChange:y=>te(o,y)},null,8,["modelValue","onUpdate:modelValue","loading","onChange"])]),_:1}),t(g,{prop:"createTime",label:"创建时间",width:"170",align:"center"}),t(g,{prop:"lastLoginTime",label:"最后登录时间",width:"170",align:"center"},{default:l(({row:o})=>[m(u(o.lastLoginTime||"-"),1)]),_:1}),t(g,{label:"操作",width:"150",fixed:"right",align:"center"},{default:l(({row:o})=>[t(d,{type:"primary",link:"",size:"small",onClick:y=>ee(o)},{default:l(()=>[t(r,null,{default:l(()=>[t(f(ve))]),_:1}),e[16]||(e[16]=m(" 详情 ",-1))]),_:1},8,["onClick"]),t(d,{type:"warning",link:"",size:"small",onClick:y=>ae(o)},{default:l(()=>[t(r,null,{default:l(()=>[t(f(be))]),_:1}),e[17]||(e[17]=m(" 等级 ",-1))]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]),i("div",Ee,[t(re,{"current-page":a.pageIndex,"onUpdate:currentPage":e[6]||(e[6]=o=>a.pageIndex=o),"page-size":a.pageSize,"onUpdate:pageSize":e[7]||(e[7]=o=>a.pageSize=o),"page-sizes":[10,20,50,100],total:s.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:W,onCurrentChange:Z},null,8,["current-page","page-size","total"])])]),_:1})),[[K,s.loading]]),t(de,{modelValue:s.drawerVisible,"onUpdate:modelValue":e[8]||(e[8]=o=>s.drawerVisible=o),title:"用户详情",size:"500px","close-on-click-modal":!0},{default:l(()=>[j((w(),O("div",Ie,[s.userDetail?(w(),O(he,{key:0},[i("div",Re,[e[18]||(e[18]=i("h4",{class:"section-title"},"基本信息",-1)),i("div",ze,[t(z,{src:s.userDetail.avatar,size:80},{default:l(()=>[t(r,{size:40},{default:l(()=>[t(f(P))]),_:1})]),_:1},8,["src"]),i("div",Ne,[i("div",Fe,u(s.userDetail.nickname),1),i("div",Oe,"UID: "+u(s.userDetail.uid),1)])]),t(N,{column:1,border:""},{default:l(()=>[t(v,{label:"手机号"},{default:l(()=>[m(u(s.userDetail.phone),1)]),_:1}),t(v,{label:"用户等级"},{default:l(()=>[t(S,{type:E(s.userDetail.userLevel)},{default:l(()=>[m(u(s.userDetail.userLevelName||I(s.userDetail.userLevel)),1)]),_:1},8,["type"])]),_:1}),t(v,{label:"状态"},{default:l(()=>[t(S,{type:s.userDetail.status===1?"success":"danger"},{default:l(()=>[m(u(s.userDetail.statusName||(s.userDetail.status===1?"正常":"禁用")),1)]),_:1},8,["type"])]),_:1}),t(v,{label:"创建时间"},{default:l(()=>[m(u(s.userDetail.createTime),1)]),_:1}),t(v,{label:"最后登录"},{default:l(()=>[m(u(s.userDetail.lastLoginTime||"-"),1)]),_:1})]),_:1})]),i("div",Be,[e[19]||(e[19]=i("h4",{class:"section-title"},"上级用户",-1)),t(N,{column:1,border:""},{default:l(()=>[t(v,{label:"上级UID"},{default:l(()=>[m(u(s.userDetail.parentUserUid||"-"),1)]),_:1}),t(v,{label:"上级昵称"},{default:l(()=>[m(u(s.userDetail.parentUserNickname||"-"),1)]),_:1})]),_:1})]),i("div",Me,[e[20]||(e[20]=i("h4",{class:"section-title"},"财务信息",-1)),t(N,{column:1,border:""},{default:l(()=>[t(v,{label:"账户余额"},{default:l(()=>[i("span",Ae,"¥"+u(k(s.userDetail.balance)),1)]),_:1}),t(v,{label:"累计收入"},{default:l(()=>[i("span",Pe,"¥"+u(k(s.userDetail.totalIncome)),1)]),_:1}),t(v,{label:"已提现金额"},{default:l(()=>[i("span",$e,"¥"+u(k(s.userDetail.withdrawnAmount)),1)]),_:1})]),_:1})]),i("div",Ke,[e[24]||(e[24]=i("h4",{class:"section-title"},"统计信息",-1)),i("div",Ye,[i("div",je,[i("div",qe,u(s.userDetail.orderCount),1),e[21]||(e[21]=i("div",{class:"stat-label"},"订单数",-1))]),i("div",Ge,[i("div",He,u(s.userDetail.assessmentCount),1),e[22]||(e[22]=i("div",{class:"stat-label"},"测评数",-1))]),i("div",Je,[i("div",Xe,u(s.userDetail.inviteCount),1),e[23]||(e[23]=i("div",{class:"stat-label"},"邀请人数",-1))])])])],64)):Le("",!0)])),[[K,s.detailLoading]])]),_:1},8,["modelValue"]),t(ue,{modelValue:s.levelDialogVisible,"onUpdate:modelValue":e[11]||(e[11]=o=>s.levelDialogVisible=o),title:"修改用户等级",width:"400px","close-on-click-modal":!1},{footer:l(()=>[t(d,{onClick:e[10]||(e[10]=o=>s.levelDialogVisible=!1)},{default:l(()=>[...e[25]||(e[25]=[m("取消",-1)])]),_:1}),t(d,{type:"primary",loading:s.levelFormLoading,onClick:le},{default:l(()=>[...e[26]||(e[26]=[m(" 确定 ",-1)])]),_:1},8,["loading"])]),default:l(()=>[t($,{ref_key:"levelFormRef",ref:U,model:s.levelFormData,rules:H,"label-width":"80px"},{default:l(()=>[t(b,{label:"当前等级"},{default:l(()=>[t(S,{type:E(s.levelFormData.currentLevel)},{default:l(()=>[m(u(I(s.levelFormData.currentLevel)),1)]),_:1},8,["type"])]),_:1}),t(b,{label:"新等级",prop:"userLevel"},{default:l(()=>[t(f(M),{modelValue:s.levelFormData.userLevel,"onUpdate:modelValue":e[9]||(e[9]=o=>s.levelFormData.userLevel=o),type:"user_level",placeholder:"请选择新等级",style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),Ze=De(Qe,[["__scopeId","data-v-dd51e20d"]]);export{Ze as default};
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-lK0VQcVh.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-lK0VQcVh.css
new file mode 100644
index 0000000..7f94e75
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-lK0VQcVh.css
@@ -0,0 +1 @@
+.banner-container[data-v-7b00feac]{padding:0}.page-header[data-v-7b00feac]{margin-bottom:16px}.header-content[data-v-7b00feac]{display:flex;justify-content:space-between;align-items:center}.header-left[data-v-7b00feac]{display:flex;align-items:baseline;gap:16px}.page-title[data-v-7b00feac]{margin:0;font-size:20px;font-weight:600;color:var(--text-primary, #303133)}.page-description[data-v-7b00feac]{font-size:14px;color:var(--text-secondary, #909399)}.search-card[data-v-7b00feac]{margin-bottom:16px}.search-card[data-v-7b00feac] .el-card__body{padding-bottom:2px}.table-card[data-v-7b00feac]{min-height:400px}.image-error[data-v-7b00feac]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;background:var(--el-fill-color-light);color:var(--el-text-color-placeholder)}.pagination-wrapper[data-v-7b00feac]{display:flex;justify-content:flex-end;margin-top:16px}.sort-buttons[data-v-7b00feac]{display:flex;flex-direction:column;align-items:center;gap:2px}.sort-buttons .el-button[data-v-7b00feac]{padding:2px}[data-v-7b00feac] .el-table{--el-table-border-color: var(--border-lighter, #ebeef5)}[data-v-7b00feac] .el-table th.el-table__cell{background-color:var(--bg-light, #f5f7fa);font-weight:500}[data-v-7b00feac] .el-dialog__body{padding-top:20px}[data-v-7b00feac] .el-form-item__content{flex-wrap:nowrap}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-mSH0i6ru.css b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-mSH0i6ru.css
new file mode 100644
index 0000000..ceeaa89
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-mSH0i6ru.css
@@ -0,0 +1 @@
+.page-container[data-v-b776e13f]{padding:0}.card-header[data-v-b776e13f]{display:flex;justify-content:space-between;align-items:center}
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-n2Th0GwE.js b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-n2Th0GwE.js
deleted file mode 100644
index 6b7e45e..0000000
--- a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-n2Th0GwE.js
+++ /dev/null
@@ -1 +0,0 @@
-import{d as s,c as t,k as a,b as n,_ as o}from"./index-C78VOXnX.js";const _={class:"page-container"},c=s({__name:"index",setup(r){return(d,e)=>(a(),t("div",_,[...e[0]||(e[0]=[n("h1",null,"提现审核管理",-1)])]))}}),i=o(c,[["__scopeId","data-v-5a144299"]]);export{i as default};
diff --git a/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-n4cbamzS.js b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-n4cbamzS.js
new file mode 100644
index 0000000..a24f2dd
--- /dev/null
+++ b/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-n4cbamzS.js
@@ -0,0 +1 @@
+import{d as Re,r as d,a as J,v as Q,o as Ue,g as i,B as X,c as M,k as c,e as l,w as a,C,f as Se,t as u,z as k,x as w,b as v,l as ze,D as Me,F as Y,y as Z,E as S,W as De,ak as Pe,_ as $e}from"./index-PpjiaNYs.js";import{g as Ee,u as Oe,c as Ie,d as Ae,a as Be,b as Le,e as Te,f as Ge}from"./role-DKk_A5mA.js";import{a as Fe}from"./permission-jHa9apW4.js";const Ne={class:"page-container"},qe={class:"card-header"},Ke={class:"permission-dialog-content"},je={class:"group-header"},We={class:"group-title"},He={class:"group-count"},Je={class:"group-items"},Qe={class:"perm-name"},Xe={class:"perm-code"},Ye=Re({__name:"index",setup(Ze){const D=d(!1),L=d([]),T=d(0),p=J({keyword:"",status:void 0,page:1,pageSize:10}),b=d(!1),x=d(!1),ee=Q(()=>x.value?"编辑角色":"新增角色"),P=d(),$=d(!1),s=J({id:0,name:"",code:"",description:"",sortOrder:0,status:1}),le={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"},{pattern:/^[a-z_]+$/,message:"只能包含小写字母和下划线",trigger:"blur"}]},h=d(!1),G=d(),E=d([]),F=d([]),z=d(0),O=d(!1),R=d(!1),I=d([]),m=d([]),A=d(!1),te=Q(()=>{const o=[],e=new Map;return I.value.forEach(r=>{const n=r.module||"其他";e.has(n)||e.set(n,[]),e.get(n).push(r)}),e.forEach((r,n)=>{o.push({name:n,permissions:r})}),o}),_=async()=>{D.value=!0;try{const o=await Ee(p);L.value=o.data.list,T.value=o.data.total}finally{D.value=!1}},N=()=>{p.page=1,_()},ae=()=>{p.keyword="",p.status=void 0,p.page=1,_()},q=()=>{var o;s.id=0,s.name="",s.code="",s.description="",s.sortOrder=0,s.status=1,(o=P.value)==null||o.resetFields()},oe=()=>{x.value=!1,q(),b.value=!0},se=o=>{x.value=!0,s.id=o.id,s.name=o.name,s.code=o.code,s.description=o.description||"",s.sortOrder=o.sortOrder,s.status=o.status,b.value=!0},ne=async()=>{var e;if(await((e=P.value)==null?void 0:e.validate())){$.value=!0;try{x.value?(await Oe(s.id,s),S.success("更新成功")):(await Ie(s),S.success("创建成功")),b.value=!1,_()}finally{$.value=!1}}},ie=async o=>{try{await De.confirm(`确定要删除角色 "${o.name}" 吗?`,"提示",{type:"warning"}),await Ae(o.id),S.success("删除成功"),_()}catch{}},de=async o=>{if(z.value=o.id,E.value.length===0){const r=await Pe();E.value=r.data}const e=await Be(o.id);F.value=e.data,h.value=!0},ue=async()=>{var o;O.value=!0;try{const e=(o=G.value)==null?void 0:o.getCheckedKeys(!1);await Le({roleId:z.value,menuIds:e}),S.success("分配成功"),h.value=!1}finally{O.value=!1}},re=async o=>{if(z.value=o.id,I.value.length===0){const r=await Fe();I.value=r.data}const e=await Te(o.id);m.value=e.data,R.value=!0},pe=async()=>{A.value=!0;try{await Ge({roleId:z.value,permissionCodes:m.value}),S.success("分配成功"),R.value=!1}finally{A.value=!1}},me=o=>o.permissions.every(e=>m.value.includes(e.code)),ce=o=>{const e=o.permissions.filter(r=>m.value.includes(r.code)).length;return e>0&&e