xto-fronted 0.4.8 → 0.4.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/assets/index-4-QoJAgA.css +1 -0
  2. package/dist/assets/index-BHwEwbkp.js +1 -0
  3. package/dist/assets/{index-Te8_PRgJ.js → index-BTsRosKu.js} +1 -1
  4. package/dist/assets/index-CZAlkDIC.css +1 -0
  5. package/dist/assets/{index-1juADvYN.js → index-Do3gMkWw.js} +2 -2
  6. package/dist/index.html +2 -2
  7. package/package.json +4 -4
  8. package/src/assets/styles/_dark.scss +118 -0
  9. package/src/assets/styles/index.scss +8 -0
  10. package/src/components/Layout/Header.vue +0 -5
  11. package/src/components/Layout/Sidebar.vue +11 -1
  12. package/src/components/Layout/TopMenu.vue +186 -0
  13. package/src/components/Layout/index.vue +120 -443
  14. package/vite.config.ts +1 -1
  15. package/dist/App.vue.d.ts +0 -2
  16. package/dist/api/auth.d.ts +0 -8
  17. package/dist/api/system.d.ts +0 -16
  18. package/dist/api/user.d.ts +0 -13
  19. package/dist/assets/index-B-sX4Ru0.js +0 -1
  20. package/dist/assets/index-BMcziU5a.css +0 -1
  21. package/dist/assets/index-BZA0ksjx.css +0 -1
  22. package/dist/assets/index-BvzhR4zp.js +0 -1
  23. package/dist/assets/index-CVjdnIgR.css +0 -1
  24. package/dist/assets/index-CYq57-zj.js +0 -1
  25. package/dist/assets/index-CkL3sVAQ.js +0 -2
  26. package/dist/assets/index-CtrKVYJb.css +0 -1
  27. package/dist/assets/index-DfFR6NLf.js +0 -1
  28. package/dist/assets/index-Iaz1ZzPC.js +0 -2
  29. package/dist/assets/index-WyZ91RLx.css +0 -1
  30. package/dist/assets/index-tFYRoFdE.js +0 -1
  31. package/dist/assets/xto-navigation-CBPg4dCc.css +0 -1
  32. package/dist/assets/xto-navigation-CKabFu9d.js +0 -1
  33. package/dist/components/Layout/Footer.vue.d.ts +0 -2
  34. package/dist/components/Layout/Header.vue.d.ts +0 -5
  35. package/dist/components/Layout/Sidebar.vue.d.ts +0 -2
  36. package/dist/components/Layout/Tabs.vue.d.ts +0 -2
  37. package/dist/components/Layout/index.vue.d.ts +0 -2
  38. package/dist/composables/useApp.d.ts +0 -29
  39. package/dist/composables/useAuth.d.ts +0 -6
  40. package/dist/composables/useForm.d.ts +0 -20
  41. package/dist/composables/useTable.d.ts +0 -29
  42. package/dist/directives/permission.d.ts +0 -4
  43. package/dist/enums/index.d.ts +0 -32
  44. package/dist/index-54irhCHL.js +0 -1830
  45. package/dist/index-BzRf1eoJ.js +0 -372
  46. package/dist/index-DH4aoCZb.js +0 -142
  47. package/dist/index-Kqa7iZ9E.js +0 -475
  48. package/dist/index-pxkZlvBw.js +0 -345
  49. package/dist/index.d.ts +0 -31
  50. package/dist/index.es.js +0 -91
  51. package/dist/index.umd.js +0 -1
  52. package/dist/main.d.ts +0 -0
  53. package/dist/router/dynamicRoutes.d.ts +0 -30
  54. package/dist/router/guards.d.ts +0 -17
  55. package/dist/router/index.d.ts +0 -6
  56. package/dist/router/layoutRoute.d.ts +0 -18
  57. package/dist/router/staticRoutes.d.ts +0 -3
  58. package/dist/stores/app.d.ts +0 -87
  59. package/dist/stores/auth.d.ts +0 -41
  60. package/dist/stores/index.d.ts +0 -9
  61. package/dist/stores/menu.d.ts +0 -77
  62. package/dist/stores/user.d.ts +0 -92
  63. package/dist/style.css +0 -1
  64. package/dist/utils/auth.d.ts +0 -27
  65. package/dist/utils/config.d.ts +0 -30
  66. package/dist/utils/permission.d.ts +0 -18
  67. package/dist/utils/request.d.ts +0 -23
  68. package/dist/utils/storage.d.ts +0 -24
  69. package/dist/views/dashboard/index.vue.d.ts +0 -2
  70. package/dist/views/error/403.vue.d.ts +0 -2
  71. package/dist/views/error/404.vue.d.ts +0 -2
  72. package/dist/views/login/index.vue.d.ts +0 -4
  73. package/dist/views/system/menu/index.vue.d.ts +0 -4
  74. package/dist/views/system/role/index.vue.d.ts +0 -4
  75. package/dist/views/system/user/index.vue.d.ts +0 -4
@@ -0,0 +1 @@
1
+ .sidebar[data-v-480fc818]{height:100%;display:flex;flex-direction:column;background-color:var(--bg-color);border-right:1px solid var(--color-border-lighter)}.sidebar--collapsed .sidebar__logo[data-v-480fc818]{justify-content:center;padding:0}.sidebar__logo[data-v-480fc818]{height:50px;display:flex;align-items:center;padding:0 20px;gap:10px;border-bottom:1px solid var(--color-border-lighter)}.sidebar__logo-img[data-v-480fc818]{width:32px;height:32px}.sidebar__logo-text[data-v-480fc818]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-480fc818]{flex:1;border-right:none;overflow-y:auto}.sidebar__menu-icon[data-v-480fc818]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.sidebar__menu-char[data-v-480fc818]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.sidebar__user[data-v-480fc818]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-480fc818]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-480fc818]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-480fc818]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-9da60fc6]{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:100%;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.header__left[data-v-9da60fc6]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-9da60fc6]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-regular);transition:color .2s}.header__collapse[data-v-9da60fc6]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-9da60fc6]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-9da60fc6]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-9da60fc6]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-9da60fc6]{display:flex;align-items:center;gap:8px}.header__action[data-v-9da60fc6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--border-radius-base);color:var(--color-text-regular);transition:all .2s}.header__action[data-v-9da60fc6]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-9da60fc6]{position:relative;margin-left:8px}.header__user-trigger[data-v-9da60fc6]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-base);transition:background-color .2s}.header__user-trigger[data-v-9da60fc6]:hover{background-color:var(--color-fill)}.header__user-name[data-v-9da60fc6]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-9da60fc6]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-9da60fc6]{transform:rotate(180deg)}.header__avatar[data-v-9da60fc6]{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:500}.header__dropdown[data-v-9da60fc6]{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background-color:var(--bg-color);border-radius:var(--border-radius-base);box-shadow:var(--box-shadow);overflow:hidden;z-index:100}.header__dropdown-header[data-v-9da60fc6]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-9da60fc6]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:500}.header__dropdown-info[data-v-9da60fc6]{flex:1}.header__dropdown-name[data-v-9da60fc6]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-9da60fc6]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-9da60fc6]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-9da60fc6]{padding:8px 0}.header__dropdown-item[data-v-9da60fc6]{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:14px;color:var(--color-text-regular);transition:all .2s}.header__dropdown-item[data-v-9da60fc6]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-9da60fc6]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-9da60fc6]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-9da60fc6]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:100px;z-index:200}.search-container[data-v-9da60fc6]{width:600px;max-width:90vw;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark);overflow:hidden}.search-input-wrapper[data-v-9da60fc6]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-9da60fc6]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-9da60fc6]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-9da60fc6]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-9da60fc6]{font-size:12px;color:var(--color-text-secondary);padding:4px 8px;background-color:var(--color-fill);border-radius:var(--border-radius-base)}.search-results[data-v-9da60fc6]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-9da60fc6]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-9da60fc6]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-9da60fc6]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-9da60fc6]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-9da60fc6]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-9da60fc6]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-9da60fc6]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-9da60fc6]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-9da60fc6]{margin-bottom:24px}.settings-drawer .settings-title[data-v-9da60fc6]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-9da60fc6]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-9da60fc6]{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:var(--border-radius-base);cursor:pointer;transition:all .2s}.settings-drawer .layout-option[data-v-9da60fc6]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-9da60fc6]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-9da60fc6]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-9da60fc6]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-9da60fc6]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-9da60fc6]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-9da60fc6]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-9da60fc6]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-9da60fc6]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-9da60fc6]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-9da60fc6]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-9da60fc6]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-9da60fc6]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-9da60fc6]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-9da60fc6]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-9da60fc6]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-9da60fc6]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-9da60fc6]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-9da60fc6]{display:flex;gap:12px}.settings-drawer .color-option[data-v-9da60fc6]{width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s}.settings-drawer .color-option[data-v-9da60fc6]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-9da60fc6]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-9da60fc6]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-9da60fc6]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-9da60fc6]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-9da60fc6]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-9da60fc6]{width:100%;height:100%;border-radius:11px;background-color:var(--color-border);position:relative;transition:background-color .2s}.settings-drawer .switch-wrapper .switch-core[data-v-9da60fc6]:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background-color:#fff;border-radius:50%;transition:left .2s}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-9da60fc6]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-9da60fc6]:after{left:24px}.dropdown-enter-active[data-v-9da60fc6],.dropdown-leave-active[data-v-9da60fc6]{transition:all .2s ease}.dropdown-enter-from[data-v-9da60fc6],.dropdown-leave-to[data-v-9da60fc6]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-9da60fc6],.search-leave-active[data-v-9da60fc6]{transition:all .2s ease}.search-enter-from[data-v-9da60fc6],.search-leave-to[data-v-9da60fc6]{opacity:0}.top-menu[data-v-8b571a75]{width:100%;height:100%;display:flex;align-items:center;padding:0 20px}.top-menu__menu[data-v-8b571a75]{flex:1;border-bottom:none;height:100%}.top-menu__menu-icon[data-v-8b571a75]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.top-menu__menu-char[data-v-8b571a75]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.layout[data-v-ce02c7c0]{display:flex;width:100%;height:100%}.layout--sidebar[data-v-ce02c7c0]{flex-direction:row}.layout--top[data-v-ce02c7c0]{flex-direction:column}.layout--top .layout__aside[data-v-ce02c7c0]{display:none}.layout--top .layout__main[data-v-ce02c7c0]{flex:1}.layout--mix[data-v-ce02c7c0]{flex-direction:row}.layout__aside[data-v-ce02c7c0]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__top-menu[data-v-ce02c7c0]{width:100%;height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.layout__main[data-v-ce02c7c0]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-ce02c7c0]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-ce02c7c0]{flex:1;overflow:auto;background-color:var(--bg-color-page)}
@@ -0,0 +1 @@
1
+ import{g as ye,s as ke,c as we,h as be,u as H,e as ne,f as j}from"./index-Do3gMkWw.js";import{L as xe,k as x,e as h,d as G,o as t,c as n,n as D,a as e,x as le,D as Ce,i as l,u as o,B as _,C as w,g as z,F as N,z as B,f as C,h as Se,Q as X,P as Y,q as Le,s as $e,A as Me,T as ae,S as ze,R as Ne,b as re,j as Ie}from"./vue-vendor-Br-l7wbK.js";import{_ as Ue}from"./vite-Dw-pgLOX.js";import{i as ie,r as W,d as ce}from"./xto-navigation-BiSaXPfr.js";import{o as Te,r as g}from"./xto-base-C-IBqjVs.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{n as Ee}from"./xto-feedback-B7ipsTfz.js";import"./xto-form-NRjKKNcY.js";import"./xto-core-DZK7Cyg0.js";import"./xto-data-BFpiDgJi.js";/* empty css *//* empty css */const de=xe("auth",()=>{const A=x(ye()),S=h(()=>be()),y=x(""),c=x(""),d=x(""),L=x("/login");return{token:A,isLoggedIn:S,baseUrl:y,appId:c,clientId:d,loginPath:L,login:r=>{A.value=r.access_token,ke(r)},logout:()=>{A.value=null,we()},setBaseUrl:r=>{y.value=r},setAppId:r=>{c.value=r},setClientId:r=>{d.value=r},setLoginPath:r=>{L.value=r}}}),De={class:"sidebar__logo"},Ae={class:"sidebar__menu-icon"},Ve={key:1,class:"sidebar__menu-char"},Be={class:"sidebar__menu-icon"},Fe={key:1,class:"sidebar__menu-char"},Re={class:"sidebar__menu-icon"},Ke={key:1,class:"sidebar__menu-char"},Pe={key:0,class:"sidebar__user"},qe={class:"sidebar__user-info"},Oe={class:"sidebar__user-name"},We={class:"sidebar__user-role"},He=G({__name:"Sidebar",props:{menuList:{default:()=>[]}},setup(A){const S=A,y=X(),c=Y(),d=H(),L=ne(),I=de(),k=j(),U=h(()=>S.menuList.length>0?S.menuList:d.menuList),$=h(()=>k.isCollapsed),M=h(()=>y.path),b=h(()=>k.isDark?"#1d1e1f":"#fff"),r=h(()=>k.isDark?"#cfd3dc":"#303133"),T=h(()=>"#409eff"),i=v=>{v&&v!==y.path&&c.push(v)},q=()=>{I.logout(),L.clearUserInfo(),d.clearMenu(),c.push("/login")},m=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),f=v=>{if(!v||v==="")return"";if(v.startsWith("tineco-icon-")){const p=v.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[p]||p}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[v]||v},R=v=>v?v.charAt(0):"",V=v=>m.has(v);return(v,F)=>(t(),n("div",{class:D(["sidebar",{"sidebar--collapsed":$.value}])},[e("div",De,[F[0]||(F[0]=e("img",{src:Ue,alt:"Logo",class:"sidebar__logo-img"},null,-1)),le(e("span",{class:"sidebar__logo-text"},l(o(k).appName),513),[[Ce,!$.value]])]),_(o(ie),{"default-active":M.value,mode:"vertical",collapse:$.value,"collapse-transition":!1,"background-color":b.value,"text-color":r.value,"active-text-color":T.value,class:"sidebar__menu",onSelect:i},{default:w(()=>[(t(!0),n(N,null,B(U.value,p=>(t(),n(N,{key:p.menuUrl},[p.children&&p.children.length>0?(t(),C(o(ce),{key:0,index:p.menuUrl},{title:w(()=>[e("span",Ae,[V(f(p.icon))?(t(),C(o(g),{key:0,name:f(p.icon),size:16},null,8,["name"])):(t(),n("span",Ve,l(R(p.menuName)),1))]),e("span",null,l(p.menuName),1)]),default:w(()=>[(t(!0),n(N,null,B(p.children,E=>(t(),C(o(W),{key:E.menuUrl,index:E.menuUrl},{default:w(()=>[e("span",Be,[V(f(E.icon))?(t(),C(o(g),{key:0,name:f(E.icon),size:16},null,8,["name"])):(t(),n("span",Fe,l(R(E.menuName)),1))]),e("span",null,l(E.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(t(),C(o(W),{key:1,index:p.menuUrl},{default:w(()=>[e("span",Re,[V(f(p.icon))?(t(),C(o(g),{key:0,name:f(p.icon),size:16},null,8,["name"])):(t(),n("span",Ke,l(R(p.menuName)),1))]),e("span",null,l(p.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),$.value?z("",!0):(t(),n("div",Pe,[e("div",qe,[e("span",Oe,l(o(L).userName),1),e("span",We,l(o(L).departmentName),1)]),_(o(Te),{type:"text",size:"small",onClick:q},{default:w(()=>[...F[1]||(F[1]=[Se("退出",-1)])]),_:1})]))],2))}}),je=Q(He,[["__scopeId","data-v-480fc818"]]),Ge={class:"header"},Qe={class:"header__left"},Je={key:0,class:"header__breadcrumb"},Xe={key:0,class:"breadcrumb-separator"},Ye={class:"header__right"},Ze=["title"],es={class:"header__avatar"},ss={class:"header__user-name"},ts={key:0,class:"header__dropdown"},os={class:"header__dropdown-header"},as={class:"header__dropdown-avatar"},ns={class:"header__dropdown-info"},ls={class:"header__dropdown-name"},rs={class:"header__dropdown-role"},is={class:"header__dropdown-menu"},cs={class:"search-container"},ds={class:"search-input-wrapper"},us={key:0,class:"search-results"},ms=["onClick"],ps={class:"search-result-info"},_s={class:"search-result-title"},hs={key:0,class:"search-result-parent"},vs={key:1,class:"search-empty"},fs={class:"settings-drawer"},gs={class:"settings-section"},ys={class:"settings-layout-options"},ks=["onClick"],ws={class:"layout-option__preview"},bs={key:0,class:"layout-preview-sidebar"},xs={key:1,class:"layout-preview-top"},Cs={key:2,class:"layout-preview-mix"},Ss={class:"layout-option__label"},Ls={class:"settings-section"},$s={class:"settings-color-options"},Ms=["title","onClick"],zs={class:"settings-section"},Ns={class:"settings-switch-list"},Is={class:"settings-switch-item"},Us={class:"settings-switch-item"},Ts=G({__name:"Header",setup(A){const S=X(),y=Y(),c=j(),d=ne(),L=de(),I=H(),k=x(!1),U=x(!1),$=x(null),M=x(!1),b=x(!1),r=x(""),T=x(null),i=x(!1),q=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],m=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],f=h(()=>S.matched.filter(s=>s.meta&&s.meta.title).map(s=>({title:s.meta.title,path:s.path}))),R=(u,s="")=>{const K=[];return u.forEach(a=>{a.children&&a.children.length>0?K.push(...R(a.children,a.title)):K.push({...a,parentTitle:s})}),K},V=h(()=>r.value.trim()?R(I.menuList).filter(s=>s.title.toLowerCase().includes(r.value.toLowerCase())):[]),v=h(()=>c.layout),F=()=>{c.toggleCollapse()},p=()=>{c.toggleTheme()},E=()=>{U.value=!0},ue=u=>{c.setLayout(u)},me=u=>{i.value=u;const s=document.documentElement;u?s.classList.add("grey-mode"):s.classList.remove("grey-mode")},pe=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},Z=()=>{M.value=!!document.fullscreenElement},_e=()=>{k.value=!k.value},O=()=>{k.value=!1},ee=()=>{b.value=!0},J=()=>{b.value=!1,r.value=""},se=u=>{y.push(u),J()},he=u=>{c.setPrimaryColor(u)},ve=()=>{O(),y.push("/profile")},fe=()=>{O(),y.push("/change-password")},ge=()=>{O(),L.logout(),d.clearUserInfo(),I.clearMenu(),y.push("/login")},te=u=>{$.value&&!$.value.contains(u.target)&&O(),T.value&&!T.value.contains(u.target)&&J()},oe=u=>{u.key==="Escape"&&(J(),O()),(u.ctrlKey||u.metaKey)&&u.key==="k"&&(u.preventDefault(),ee())};return Le(()=>{document.addEventListener("click",te),document.addEventListener("fullscreenchange",Z),document.addEventListener("keydown",oe),c.initTheme(),i.value=document.documentElement.classList.contains("grey-mode")}),$e(()=>{document.removeEventListener("click",te),document.removeEventListener("fullscreenchange",Z),document.removeEventListener("keydown",oe)}),(u,s)=>{var K;return t(),n("div",Ge,[e("div",Qe,[e("div",{class:"header__collapse",onClick:F},[_(o(g),{name:o(c).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),o(c).showBreadcrumb?(t(),n("div",Je,[(t(!0),n(N,null,B(f.value,(a,P)=>(t(),n("span",{key:a.path},[P>0?(t(),n("span",Xe,"/")):z("",!0),e("span",{class:D({"is-current":P===f.value.length-1})},l(a.title),3)]))),128))])):z("",!0)]),e("div",Ye,[e("div",{class:"header__action",onClick:ee,title:"搜索 (Ctrl+K)"},[_(o(g),{name:"search",size:16})]),e("div",{class:"header__action",onClick:pe,title:M.value?"退出全屏":"全屏"},[_(o(g),{name:M.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,Ze),e("div",{class:"header__action",onClick:E,title:"换肤设置"},[_(o(g),{name:"skin",size:16})]),e("div",{class:"header__action",onClick:p,title:"切换主题"},[_(o(g),{name:o(c).isDark?"sun":"moon",size:16},null,8,["name"])]),e("div",{class:"header__user",ref_key:"dropdownRef",ref:$},[e("div",{class:"header__user-trigger",onClick:Me(_e,["stop"])},[e("div",es,[e("span",null,l(((K=o(d).userName)==null?void 0:K.charAt(0))||"U"),1)]),e("span",ss,l(o(d).userName),1),e("span",{class:D(["header__user-arrow",{"is-active":k.value}])},"▼",2)]),_(ae,{name:"dropdown"},{default:w(()=>{var a;return[k.value?(t(),n("div",ts,[e("div",os,[e("div",as,[e("span",null,l(((a=o(d).userName)==null?void 0:a.charAt(0))||"U"),1)]),e("div",ns,[e("div",ls,l(o(d).userName),1),e("div",rs,l(o(d).departmentName),1)])]),s[8]||(s[8]=e("div",{class:"header__dropdown-divider"},null,-1)),e("div",is,[e("div",{class:"header__dropdown-item",onClick:ve},[_(o(g),{name:"user",size:16}),s[4]||(s[4]=e("span",null,"个人信息",-1))]),e("div",{class:"header__dropdown-item",onClick:fe},[_(o(g),{name:"lock",size:16}),s[5]||(s[5]=e("span",null,"修改密码",-1))]),s[7]||(s[7]=e("div",{class:"header__dropdown-divider"},null,-1)),e("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:ge},[_(o(g),{name:"logout",size:16}),s[6]||(s[6]=e("span",null,"退出登录",-1))])])])):z("",!0)]}),_:1})],512)]),_(ae,{name:"search"},{default:w(()=>[b.value?(t(),n("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:T},[e("div",cs,[e("div",ds,[_(o(g),{class:"search-icon",name:"search",size:20}),le(e("input",{"onUpdate:modelValue":s[0]||(s[0]=a=>r.value=a),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:s[1]||(s[1]=Ne(a=>V.value[0]&&se(V.value[0].path),["enter"]))},null,544),[[ze,r.value]]),s[9]||(s[9]=e("span",{class:"search-shortcut"},"ESC 关闭",-1))]),V.value.length>0?(t(),n("div",us,[(t(!0),n(N,null,B(V.value,(a,P)=>(t(),n("div",{key:a.path,class:D(["search-result-item",{"is-first":P===0}]),onClick:Qs=>se(a.path)},[_(o(g),{class:"search-result-icon",name:a.icon||"file",size:20},null,8,["name"]),e("div",ps,[e("span",_s,l(a.title),1),a.parentTitle?(t(),n("span",hs,l(a.parentTitle),1)):z("",!0)])],10,ms))),128))])):r.value?(t(),n("div",vs," 未找到匹配的菜单 ")):z("",!0)])],512)):z("",!0)]),_:1}),_(o(Ee),{modelValue:U.value,"onUpdate:modelValue":s[3]||(s[3]=a=>U.value=a),title:"换肤设置",direction:"rtl",size:"320px"},{default:w(()=>[e("div",fs,[e("div",gs,[s[13]||(s[13]=e("div",{class:"settings-title"},"布局模式",-1)),e("div",ys,[(t(),n(N,null,B(q,a=>e("div",{key:a.value,class:D(["layout-option",{"is-active":v.value===a.value}]),onClick:P=>ue(a.value)},[e("div",ws,[a.value==="sidebar"?(t(),n("div",bs,[...s[10]||(s[10]=[e("div",{class:"preview-aside"},null,-1),e("div",{class:"preview-main"},[e("div",{class:"preview-header"}),e("div",{class:"preview-content"})],-1)])])):a.value==="top"?(t(),n("div",xs,[...s[11]||(s[11]=[e("div",{class:"preview-header-full"},null,-1),e("div",{class:"preview-content-full"},null,-1)])])):(t(),n("div",Cs,[...s[12]||(s[12]=[e("div",{class:"preview-header-mix"},[e("div",{class:"preview-mix-left"})],-1),e("div",{class:"preview-mix-body"},[e("div",{class:"preview-mix-aside"}),e("div",{class:"preview-mix-content"})],-1)])]))]),e("span",Ss,l(a.label),1)],10,ks)),64))])]),e("div",Ls,[s[14]||(s[14]=e("div",{class:"settings-title"},"主题色",-1)),e("div",$s,[(t(),n(N,null,B(m,a=>e("div",{key:a.value,class:D(["color-option",{"is-active":o(c).primaryColor===a.value}]),style:re({backgroundColor:a.value}),title:a.label,onClick:P=>he(a.value)},[o(c).primaryColor===a.value?(t(),C(o(g),{key:0,name:"check",size:12,color:"#fff"})):z("",!0)],14,Ms)),64))])]),e("div",zs,[s[19]||(s[19]=e("div",{class:"settings-title"},"功能设置",-1)),e("div",Ns,[e("div",Is,[s[16]||(s[16]=e("span",null,"灰色模式",-1)),e("div",{class:D(["switch-wrapper",{"is-checked":i.value}]),onClick:s[2]||(s[2]=a=>me(!i.value))},[...s[15]||(s[15]=[e("span",{class:"switch-core"},null,-1)])],2)]),e("div",Us,[s[18]||(s[18]=e("span",null,"暗黑模式",-1)),e("div",{class:D(["switch-wrapper",{"is-checked":o(c).isDark}]),onClick:p},[...s[17]||(s[17]=[e("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),Es=Q(Ts,[["__scopeId","data-v-9da60fc6"]]),Ds={class:"top-menu"},As={class:"top-menu__menu-icon"},Vs={key:1,class:"top-menu__menu-char"},Bs={class:"top-menu__menu-icon"},Fs={key:1,class:"top-menu__menu-char"},Rs={class:"top-menu__menu-icon"},Ks={key:1,class:"top-menu__menu-char"},Ps=G({__name:"TopMenu",setup(A){const S=X(),y=Y(),c=H(),d=j(),L=h(()=>S.path),I=h(()=>d.isDark?"#1d1e1f":"#fff"),k=h(()=>d.isDark?"#cfd3dc":"#303133"),U=h(()=>"#409eff"),$=i=>{i&&i!==S.path&&y.push(i)},M=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),b=i=>{if(!i||i==="")return"";if(i.startsWith("tineco-icon-")){const m=i.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[m]||m}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[i]||i},r=i=>i?i.charAt(0):"",T=i=>M.has(i);return(i,q)=>(t(),n("div",Ds,[_(o(ie),{"default-active":L.value,mode:"horizontal","background-color":I.value,"text-color":k.value,"active-text-color":U.value,class:"top-menu__menu",onSelect:$},{default:w(()=>[(t(!0),n(N,null,B(o(c).menuList,m=>(t(),n(N,{key:m.menuUrl},[m.children&&m.children.length>0?(t(),C(o(ce),{key:0,index:m.menuUrl},{title:w(()=>[e("span",As,[T(b(m.icon))?(t(),C(o(g),{key:0,name:b(m.icon),size:16},null,8,["name"])):(t(),n("span",Vs,l(r(m.menuName)),1))]),e("span",null,l(m.menuName),1)]),default:w(()=>[(t(!0),n(N,null,B(m.children,f=>(t(),C(o(W),{key:f.menuUrl,index:f.menuUrl},{default:w(()=>[e("span",Bs,[T(b(f.icon))?(t(),C(o(g),{key:0,name:b(f.icon),size:16},null,8,["name"])):(t(),n("span",Fs,l(r(f.menuName)),1))]),e("span",null,l(f.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(t(),C(o(W),{key:1,index:m.menuUrl},{default:w(()=>[e("span",Rs,[T(b(m.icon))?(t(),C(o(g),{key:0,name:b(m.icon),size:16},null,8,["name"])):(t(),n("span",Ks,l(r(m.menuName)),1))]),e("span",null,l(m.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","background-color","text-color","active-text-color"])]))}}),qs=Q(Ps,[["__scopeId","data-v-8b571a75"]]),Os={key:1,class:"layout__top-menu"},Ws={class:"layout__main"},Hs={class:"layout__header"},js={class:"layout__content"},Gs=G({__name:"index",setup(A){const S=j(),y=H(),c=h(()=>S.isCollapsed?"64px":"210px"),d=h(()=>S.layout),L=h(()=>d.value==="sidebar"||d.value==="mix"),I=h(()=>d.value==="top"),k=h(()=>(d.value!=="mix",y.menuList));return(U,$)=>{const M=Ie("router-view");return t(),n("div",{class:D(["layout",`layout--${d.value}`])},[L.value?(t(),n("aside",{key:0,class:"layout__aside",style:re({width:c.value})},[_(je,{"menu-list":d.value==="mix"?k.value:o(y).menuList},null,8,["menu-list"])],4)):z("",!0),I.value?(t(),n("div",Os,[_(qs)])):z("",!0),e("div",Ws,[e("header",Hs,[_(Es)]),e("main",js,[_(M)])])],2)}}}),it=Q(Gs,[["__scopeId","data-v-ce02c7c0"]]);export{it as default};
@@ -1 +1 @@
1
- import{d as x,o as T,c as h,a as p,B as t,C as l,u as a,I as B,k as g,P as I,Q as R,R as q,h as b}from"./vue-vendor-Br-l7wbK.js";import{_ as z}from"./vite-Dw-pgLOX.js";import{r as v,o as C}from"./xto-base-C-IBqjVs.js";import{B as j,F as c,w as y,T as P}from"./xto-form-NRjKKNcY.js";import{c as i}from"./xto-feedback-B7ipsTfz.js";import{a as U}from"./vendor-42ANG6Sg.js";import{g as L,a as N,c as A,b as D,d as E,s as F}from"./index-1juADvYN.js";import{_ as K}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./xto-core-DZK7Cyg0.js";import"./xto-data-BFpiDgJi.js";import"./xto-navigation-BiSaXPfr.js";/* empty css *//* empty css */const $=()=>{const s=U.create({baseURL:"/api",timeout:3e4,headers:{"Content-Type":"application/json"}});return s.interceptors.request.use(e=>{const r=L(),n=N()||"Bearer";return r&&(e.headers.Authorization=`${n} ${r}`),e},e=>Promise.reject(e)),s.interceptors.response.use(e=>{const{data:r}=e;return r.code===200||r.code===0?r.data:(i.error(r.message||"请求失败"),Promise.reject(new Error(r.message||"请求失败")))},e=>{var n;const{response:r}=e;if(r)switch(r.status){case 401:i.error("登录已过期,请重新登录"),A(),window.location.href="/login";break;case 403:i.error("没有权限访问");break;case 404:i.error("请求资源不存在");break;case 500:i.error("服务器错误");break;default:i.error(((n=r.data)==null?void 0:n.message)||"请求失败")}else i.error("网络连接失败");return Promise.reject(e)}),s},m=$(),M={get(s,e){return m.get(s,e)},post(s,e,r){return m.post(s,e,r)},put(s,e,r){return m.put(s,e,r)},patch(s,e,r){return m.patch(s,e,r)},delete(s,e){return m.delete(s,e)}};function Q(s){return M.post("/user/v1.0/login/by-domain",s)}const X={class:"login"},G={class:"login__container"},H=x({__name:"index",setup(s){const e=I(),r=R(),n=g(!1),_=g(!1),u=B({uid:"",password:""}),V={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},w=g(),k=async()=>{var f;try{await((f=w.value)==null?void 0:f.validate()),n.value=!0;const o=await Q({appId:E(),clientId:D(),uid:u.uid,password:u.password,code:!0});F(o),i.success("登录成功");const d=r.query.redirect||"/";e.push(d)}catch(o){console.error("登录失败:",o)}finally{n.value=!1}};return(f,o)=>(T(),h("div",X,[p("div",G,[o[5]||(o[5]=p("div",{class:"login__header"},[p("img",{src:z,alt:"Logo",class:"login__logo"}),p("h1",{class:"login__title"},"Xto Demo"),p("p",{class:"login__subtitle"},"后台管理系统")],-1)),t(a(j),{ref_key:"formRef",ref:w,model:u,rules:V,class:"login__form","label-width":"0"},{default:l(()=>[t(a(c),{prop:"uid"},{default:l(()=>[t(a(y),{modelValue:u.uid,"onUpdate:modelValue":o[0]||(o[0]=d=>u.uid=d),placeholder:"用户名",size:"large"},{prefix:l(()=>[t(a(v),{name:"user",size:18})]),_:1},8,["modelValue"])]),_:1}),t(a(c),{prop:"password"},{default:l(()=>[t(a(y),{modelValue:u.password,"onUpdate:modelValue":o[1]||(o[1]=d=>u.password=d),type:"password",placeholder:"密码",size:"large","show-password":"",onKeyup:q(k,["enter"])},{prefix:l(()=>[t(a(v),{name:"lock",size:18})]),_:1},8,["modelValue"])]),_:1}),t(a(c),null,{default:l(()=>[t(a(P),{modelValue:_.value,"onUpdate:modelValue":o[2]||(o[2]=d=>_.value=d)},{default:l(()=>[...o[3]||(o[3]=[b("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),t(a(c),null,{default:l(()=>[t(a(C),{type:"primary",size:"large",loading:n.value,class:"login__submit",onClick:k},{default:l(()=>[...o[4]||(o[4]=[b(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),o[6]||(o[6]=p("div",{class:"login__footer"},[p("p",null,"请输入您的用户名和密码")],-1))])]))}}),ne=K(H,[["__scopeId","data-v-f3e724b6"]]);export{ne as default};
1
+ import{d as x,o as T,c as h,a as p,B as t,C as l,u as a,I as B,k as g,P as I,Q as R,R as q,h as b}from"./vue-vendor-Br-l7wbK.js";import{_ as z}from"./vite-Dw-pgLOX.js";import{r as v,o as C}from"./xto-base-C-IBqjVs.js";import{B as j,F as c,w as y,T as P}from"./xto-form-NRjKKNcY.js";import{c as i}from"./xto-feedback-B7ipsTfz.js";import{a as U}from"./vendor-42ANG6Sg.js";import{g as L,a as N,c as A,b as D,d as E,s as F}from"./index-Do3gMkWw.js";import{_ as K}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./xto-core-DZK7Cyg0.js";import"./xto-data-BFpiDgJi.js";import"./xto-navigation-BiSaXPfr.js";/* empty css *//* empty css */const $=()=>{const s=U.create({baseURL:"/api",timeout:3e4,headers:{"Content-Type":"application/json"}});return s.interceptors.request.use(e=>{const r=L(),n=N()||"Bearer";return r&&(e.headers.Authorization=`${n} ${r}`),e},e=>Promise.reject(e)),s.interceptors.response.use(e=>{const{data:r}=e;return r.code===200||r.code===0?r.data:(i.error(r.message||"请求失败"),Promise.reject(new Error(r.message||"请求失败")))},e=>{var n;const{response:r}=e;if(r)switch(r.status){case 401:i.error("登录已过期,请重新登录"),A(),window.location.href="/login";break;case 403:i.error("没有权限访问");break;case 404:i.error("请求资源不存在");break;case 500:i.error("服务器错误");break;default:i.error(((n=r.data)==null?void 0:n.message)||"请求失败")}else i.error("网络连接失败");return Promise.reject(e)}),s},m=$(),M={get(s,e){return m.get(s,e)},post(s,e,r){return m.post(s,e,r)},put(s,e,r){return m.put(s,e,r)},patch(s,e,r){return m.patch(s,e,r)},delete(s,e){return m.delete(s,e)}};function Q(s){return M.post("/user/v1.0/login/by-domain",s)}const X={class:"login"},G={class:"login__container"},H=x({__name:"index",setup(s){const e=I(),r=R(),n=g(!1),_=g(!1),u=B({uid:"",password:""}),V={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},w=g(),k=async()=>{var f;try{await((f=w.value)==null?void 0:f.validate()),n.value=!0;const o=await Q({appId:E(),clientId:D(),uid:u.uid,password:u.password,code:!0});F(o),i.success("登录成功");const d=r.query.redirect||"/";e.push(d)}catch(o){console.error("登录失败:",o)}finally{n.value=!1}};return(f,o)=>(T(),h("div",X,[p("div",G,[o[5]||(o[5]=p("div",{class:"login__header"},[p("img",{src:z,alt:"Logo",class:"login__logo"}),p("h1",{class:"login__title"},"Xto Demo"),p("p",{class:"login__subtitle"},"后台管理系统")],-1)),t(a(j),{ref_key:"formRef",ref:w,model:u,rules:V,class:"login__form","label-width":"0"},{default:l(()=>[t(a(c),{prop:"uid"},{default:l(()=>[t(a(y),{modelValue:u.uid,"onUpdate:modelValue":o[0]||(o[0]=d=>u.uid=d),placeholder:"用户名",size:"large"},{prefix:l(()=>[t(a(v),{name:"user",size:18})]),_:1},8,["modelValue"])]),_:1}),t(a(c),{prop:"password"},{default:l(()=>[t(a(y),{modelValue:u.password,"onUpdate:modelValue":o[1]||(o[1]=d=>u.password=d),type:"password",placeholder:"密码",size:"large","show-password":"",onKeyup:q(k,["enter"])},{prefix:l(()=>[t(a(v),{name:"lock",size:18})]),_:1},8,["modelValue"])]),_:1}),t(a(c),null,{default:l(()=>[t(a(P),{modelValue:_.value,"onUpdate:modelValue":o[2]||(o[2]=d=>_.value=d)},{default:l(()=>[...o[3]||(o[3]=[b("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),t(a(c),null,{default:l(()=>[t(a(C),{type:"primary",size:"large",loading:n.value,class:"login__submit",onClick:k},{default:l(()=>[...o[4]||(o[4]=[b(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),o[6]||(o[6]=p("div",{class:"login__footer"},[p("p",null,"请输入您的用户名和密码")],-1))])]))}}),ne=K(H,[["__scopeId","data-v-f3e724b6"]]);export{ne as default};
@@ -0,0 +1 @@
1
+ .app{width:100%;height:100%;background-color:var(--bg-color-page);transition:background-color .3s}:root{--color-primary: #409eff;--color-primary-light-3: #79bbff;--color-primary-light-5: #a0cfff;--color-primary-light-7: #c6e2ff;--color-primary-light-8: #d9ecff;--color-primary-light-9: #ecf5ff;--color-primary-dark-2: #337ecc;--color-success: #67c23a;--color-success-light: #e1f3d8;--color-success-dark: #529b2e;--color-warning: #e6a23c;--color-warning-light: #fdf6ec;--color-warning-dark: #b88230;--color-danger: #f56c6c;--color-danger-light: #fde2e2;--color-danger-dark: #c45656;--color-info: #909399;--color-info-light: #f4f4f5;--color-info-dark: #73767a;--color-text-primary: #303133;--color-text-regular: #606266;--color-text-secondary: #909399;--color-text-placeholder: #a8abb2;--color-text-disabled: #c0c4cc;--color-border: #dcdfe6;--color-border-light: #e4e7ed;--color-border-lighter: #ebeef5;--color-border-extra-light: #f2f6fc;--color-border-dark: #d4d7de;--color-fill: #f5f7fa;--color-fill-light: #fafafa;--color-fill-lighter: #fafcff;--color-fill-blank: #ffffff;--bg-color: #ffffff;--bg-color-page: #f2f3f5;--bg-color-overlay: #ffffff;--box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);--box-shadow-light: 0 2px 8px 0 rgba(0, 0, 0, .06);--box-shadow-lighter: 0 1px 4px 0 rgba(0, 0, 0, .04);--box-shadow-dark: 0 4px 16px 0 rgba(0, 0, 0, .12);--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-size-base: 14px;--font-size-small: 12px;--font-size-large: 16px;--font-size-extra-large: 18px;--border-radius-base: 4px;--border-radius-small: 2px;--border-radius-large: 8px;--border-radius-round: 20px;--border-radius-circle: 50%;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--component-size-large: 40px;--component-size-default: 32px;--component-size-small: 24px;--transition-duration: .3s;--transition-duration-fast: .2s;--transition-duration-slow: .5s;--z-index-dropdown: 1000;--z-index-sticky: 1020;--z-index-fixed: 1030;--z-index-modal-backdrop: 1040;--z-index-modal: 1050;--z-index-popover: 1060;--z-index-tooltip: 1070;--sidebar-width: 210px;--sidebar-collapsed-width: 64px;--header-height: 50px;--tabs-height: 40px;--footer-height: 30px}.dark{--color-text-primary: #e5eaf3;--color-text-regular: #cfd3dc;--color-text-secondary: #a3a6ad;--color-text-placeholder: #8d9095;--color-text-disabled: #6c6e72;--color-border: #4c4d4f;--color-border-light: #414243;--color-border-lighter: #363637;--color-border-extra-light: #2b2b2c;--color-border-dark: #58585b;--color-fill: #303030;--color-fill-light: #262727;--color-fill-lighter: #1d1d1d;--color-fill-blank: #141414;--bg-color: #1d1e1f;--bg-color-page: #0a0a0a;--bg-color-overlay: #1d1e1f;--box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .3);--box-shadow-light: 0 2px 8px 0 rgba(0, 0, 0, .24);--box-shadow-lighter: 0 1px 4px 0 rgba(0, 0, 0, .2);--box-shadow-dark: 0 4px 16px 0 rgba(0, 0, 0, .36)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{width:100%;height:100%;font-size:var(--font-size-base);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{width:100%;height:100%;font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.5;color:var(--color-text-primary);background-color:var(--bg-color-page)}#app{width:100%;height:100%}a{color:var(--color-primary);text-decoration:none;cursor:pointer;transition:color var(--transition-duration-fast)}a:hover{color:var(--color-primary-light-3)}ul,ol{list-style:none}img{max-width:100%;height:auto;vertical-align:middle}button{cursor:pointer;font-family:inherit;font-size:inherit;border:none;background:none;outline:none}button:disabled{cursor:not-allowed}input,textarea,select{font-family:inherit;font-size:inherit;outline:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4,h5,h6{margin:0;font-weight:500;color:var(--color-text-primary)}p{margin:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background-color:var(--color-fill-light);border-radius:3px}::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-text-secondary)}::selection{background-color:var(--color-primary-light-8);color:var(--color-primary)}.fade-enter-active,.fade-leave-active{transition:opacity var(--transition-duration)}.fade-enter-from,.fade-leave-to{opacity:0}.fade-scale-enter-active,.fade-scale-leave-active{transition:all var(--transition-duration)}.fade-scale-enter-from,.fade-scale-leave-to{opacity:0;transform:scale(.9)}.fade-transform-enter-active,.fade-transform-leave-active{transition:all var(--transition-duration-fast)}.fade-transform-enter-from{opacity:0;transform:translate(-10px)}.fade-transform-leave-to{opacity:0;transform:translate(10px)}.slide-down-enter-active,.slide-down-leave-active{transition:all var(--transition-duration)}.slide-down-enter-from,.slide-down-leave-to{opacity:0;transform:translateY(-20px)}.slide-up-enter-active,.slide-up-leave-active{transition:all var(--transition-duration)}.slide-up-enter-from,.slide-up-leave-to{opacity:0;transform:translateY(20px)}.slide-left-enter-active,.slide-left-leave-active{transition:all var(--transition-duration)}.slide-left-enter-from,.slide-left-leave-to{opacity:0;transform:translate(20px)}.slide-right-enter-active,.slide-right-leave-active{transition:all var(--transition-duration)}.slide-right-enter-from,.slide-right-leave-to{opacity:0;transform:translate(-20px)}.zoom-enter-active,.zoom-leave-active{transition:all var(--transition-duration)}.zoom-enter-from,.zoom-leave-to{opacity:0;transform:scale(.5)}.list-enter-active,.list-leave-active{transition:all var(--transition-duration)}.list-enter-from,.list-leave-to{opacity:0;transform:translateY(30px)}.collapse-transition{transition:width var(--transition-duration),padding var(--transition-duration)}.dark .sidebar,.dark .layout__aside{background-color:#1d1e1f}.dark .sidebar{border-right:1px solid #363637}.dark .sidebar__search-results{background-color:#1d1e1f;border-color:#363637}.dark .sidebar__search-item:hover{background-color:#262727}.dark .sidebar__search-item-title{color:#cfd3dc}.dark .sidebar__search-item-parent{color:#a3a6ad}.dark .sidebar__logo{border-bottom-color:#363637}.dark .sidebar__user{border-top-color:#363637}.dark .sidebar__user-name{color:#cfd3dc}.dark .sidebar__user-role{color:#a3a6ad}.dark .x-menu{background-color:#1d1e1f!important;border-color:#363637;color:#cfd3dc}.dark .x-menu.x-menu--vertical{border-right-color:#363637}.dark .x-menu.x-menu--horizontal{border-bottom-color:#363637;background-color:#1d1e1f!important}.dark .x-menu-item{color:#cfd3dc!important;background-color:transparent!important}.dark .x-menu-item:hover{background-color:#262727!important}.dark .x-menu-item.is-active{color:#409eff!important;background-color:#409eff1a!important}.dark .x-menu-item.is-active:before{background-color:#409eff}.dark .x-menu-item.is-horizontal:hover{background-color:transparent!important}.dark .x-menu-item.is-horizontal.is-active{background-color:transparent!important;border-bottom-color:#409eff}.dark .x-sub-menu__title{color:#cfd3dc!important;background-color:transparent!important}.dark .x-sub-menu__title:hover{background-color:#262727!important}.dark .x-sub-menu__menu{background-color:#1d1e1f!important;border:1px solid #363637;box-shadow:0 2px 12px #00000080}.dark .x-sub-menu__menu .x-menu-item{background-color:transparent!important;color:#cfd3dc!important}.dark .x-sub-menu__menu .x-menu-item:hover{background-color:#262727!important}.dark .x-sub-menu__menu .x-menu-item.is-active{color:#409eff!important;background-color:#409eff1a!important}.dark .x-sub-menu__arrow{color:#a3a6ad}.dark .x-sub-menu.is-opened>.x-sub-menu__title{background-color:#262727!important}.dark .x-sub-menu.is-active>.x-sub-menu__title{color:#409eff!important}.dark .x-sub-menu--horizontal .x-sub-menu__title:hover{background-color:transparent!important}.dark .x-sub-menu--horizontal .x-sub-menu__menu{background-color:#1d1e1f!important;border:1px solid #363637}.dark .x-sub-menu.is-collapse>.x-sub-menu__menu{background-color:#1d1e1f!important;border:1px solid #363637}.dark .header{background-color:#1d1e1f;border-bottom-color:#363637}.dark .header__collapse{color:#cfd3dc}.dark .header__breadcrumb{color:#a3a6ad}.dark .header__user-name{color:#cfd3dc}.dark .header__user-arrow{color:#a3a6ad}.dark .header__action:hover,.dark .header__user-trigger:hover{background-color:#262727}.dark .header__dropdown{background-color:#1d1e1f;border:1px solid #363637;box-shadow:0 2px 12px #00000080}.dark .header__dropdown-name{color:#e5eaf3}.dark .header__dropdown-role{color:#a3a6ad}.dark .header__dropdown-divider{background-color:#363637}.dark .header__dropdown-item{color:#cfd3dc}.dark .header__dropdown-item:hover{background-color:#262727;color:#e5eaf3}.dark .top-menu{background-color:#1d1e1f}.dark .top-menu__menu{background-color:#1d1e1f!important}.dark .top-menu__menu-char{background-color:#409eff33;color:#79bbff}.dark .x-button.x-button--default{background-color:#1d1e1f;border-color:#4c4d4f;color:#cfd3dc}.dark .x-button.x-button--default:hover{border-color:#409eff;color:#409eff}.dark .x-button.x-button--text{color:#409eff}.dark .x-form-item__label{color:#cfd3dc}.dark .x-form-item__error{color:#f56c6c}.dark .x-input{background-color:#1d1e1f;border-color:#4c4d4f}.dark .x-input.is-focus{border-color:#409eff}.dark .x-input .x-input__inner{background-color:transparent;color:#e5eaf3}.dark .x-input .x-input__inner::placeholder{color:#6c6e72}.dark .x-input .x-input__suffix,.dark .x-input .x-input__prefix{color:#a3a6ad}.dark .x-select{background-color:#1d1e1f;border-color:#4c4d4f}.dark .x-card{background-color:#1d1e1f;border-color:#363637}.dark .x-card__header{border-bottom-color:#363637;color:#e5eaf3}.dark .data-table th{background-color:#262727;color:#cfd3dc;border-bottom-color:#363637}.dark .data-table td{border-bottom-color:#363637;color:#cfd3dc}.dark .data-table tr:hover td{background-color:#262727}.dark .x-modal__wrapper{background-color:#000000b3}.dark .x-modal__container{background-color:#1d1e1f;border:1px solid #363637}.dark .x-modal__header{border-bottom-color:#363637;color:#e5eaf3}.dark .x-modal__footer{border-top-color:#363637}.dark .x-message{background-color:#1d1e1f;border:1px solid #363637}.dark .x-tag.x-tag--primary{background-color:#409eff33;color:#79bbff;border-color:#409eff4d}.dark .x-tag.x-tag--success{background-color:#67c23a33;color:#95d475;border-color:#67c23a4d}.dark .x-tag.x-tag--warning{background-color:#e6a23c33;color:#eebe77;border-color:#e6a23c4d}.dark .x-tag.x-tag--danger{background-color:#f56c6c33;color:#fab6b6;border-color:#f56c6c4d}.dark .x-tag.x-tag--info{background-color:#90939933;color:#c0c4cc;border-color:#9093994d}.dark .x-switch{background-color:#4c4d4f}.dark .x-switch.is-checked{background-color:#409eff}.dark .x-pagination{color:#cfd3dc}.dark .x-pagination__item{background-color:#1d1e1f;border-color:#4c4d4f;color:#cfd3dc}.dark .x-pagination__item:hover{color:#409eff}.dark .x-pagination__item.is-active{background-color:#409eff;border-color:#409eff;color:#fff}.dark .login{background:linear-gradient(135deg,#1a1a2e,#16213e)}.dark .login__container{background-color:#1d1e1f;border:1px solid #363637}.dark .login__title{color:#409eff}.dark .login__subtitle{color:#a3a6ad}.dark .login__footer{color:#6c6e72}.dark .stat-card__title{color:#a3a6ad}.dark .quick-link{background-color:#262727}.dark .quick-link:hover{background-color:#409eff1a}.dark .quick-link__title{color:#cfd3dc}.dark .activity-item{border-bottom-color:#363637}.dark .activity-item__action{color:#cfd3dc}.dark .search-card,.dark .table-card,.dark .x-popconfirm{background-color:#1d1e1f;border:1px solid #363637}.dark .x-drawer{background-color:#1d1e1f}.dark .x-drawer__header{background-color:#1d1e1f;border-bottom-color:#363637;color:#e5eaf3}.dark .x-drawer__body{background-color:#1d1e1f;color:#cfd3dc}.dark .x-drawer__footer{background-color:#1d1e1f;border-top-color:#363637}.dark .settings-drawer .settings-title{color:#e5eaf3}.dark .settings-drawer .settings-section{background-color:transparent}.dark .settings-drawer .layout-option{border-color:#4c4d4f;background-color:transparent}.dark .settings-drawer .layout-option:hover{border-color:#409eff}.dark .settings-drawer .layout-option.is-active{border-color:#409eff;background-color:#409eff1a}.dark .settings-drawer .layout-option__label,.dark .settings-drawer .settings-switch-item span{color:#cfd3dc}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-primary{color:var(--color-primary)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-danger{color:var(--color-danger)}.text-info{color:var(--color-info)}.bg-primary{background-color:var(--color-primary)}.bg-success{background-color:var(--color-success)}.bg-warning{background-color:var(--color-warning)}.bg-danger{background-color:var(--color-danger)}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.mb-10{margin-bottom:10px}.mb-20{margin-bottom:20px}.ml-10{margin-left:10px}.mr-10{margin-right:10px}.p-10{padding:10px}.p-20{padding:20px}.card{background-color:var(--bg-color);border-radius:var(--border-radius-base);box-shadow:var(--box-shadow-light);padding:var(--spacing-md)}.page-container{padding:var(--spacing-md);min-height:100%}.search-bar{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md)}.table-container{background-color:var(--bg-color);border-radius:var(--border-radius-base);padding:var(--spacing-md)}.pagination-container{display:flex;justify-content:flex-end;margin-top:var(--spacing-md)}html.grey-mode{filter:grayscale(100%);-webkit-filter:grayscale(100%)}
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-Te8_PRgJ.js","assets/vue-vendor-Br-l7wbK.js","assets/vite-Dw-pgLOX.js","assets/xto-base-C-IBqjVs.js","assets/xto-core-DZK7Cyg0.js","assets/xto-base-C6eqMPdO.css","assets/xto-form-NRjKKNcY.js","assets/xto-form-CrsyAjyr.css","assets/xto-feedback-B7ipsTfz.js","assets/xto-feedback-DBwJzoTj.css","assets/vendor-42ANG6Sg.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/xto-data-BFpiDgJi.js","assets/xto-data-CnAQAQH2.css","assets/xto-navigation-BiSaXPfr.js","assets/xto-navigation-C1cnSL2E.css","assets/index-PfV8pzQz.css","assets/xto-layout-BqU8RuWL.css","assets/xto-business--V1F5Gwb.css","assets/404-WFvpcD2_.js","assets/404-Ct_A1n7S.css","assets/403-AFBQifUI.js","assets/403-BHEXXbt2.css","assets/index-CYq57-zj.js","assets/index-WyZ91RLx.css","assets/index-D9wlAuR_.js","assets/index-GDP-IkXE.css","assets/index-DwVgMO8e.js","assets/index-BRR97dc6.js","assets/index-CUh_s55Z.css","assets/index-BpV_8nl0.js","assets/index-DawJb02s.css","assets/index-Cz2P_bsS.js","assets/index-Swfu6yvD.css"])))=>i.map(i=>d[i]);
2
- import{L as N,k as d,w as z,e as f,d as G,c as Q,B as Z,n as ee,u as te,j as oe,o as se,M as re,N as ne,J as ae,O as ce}from"./vue-vendor-Br-l7wbK.js";import{c as ie}from"./xto-base-C-IBqjVs.js";import"./xto-form-NRjKKNcY.js";import{t as ue}from"./xto-data-BFpiDgJi.js";import"./xto-feedback-B7ipsTfz.js";import"./xto-navigation-BiSaXPfr.js";/* empty css *//* empty css */import"./xto-core-DZK7Cyg0.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))u(r);new MutationObserver(r=>{for(const c of r)if(c.type==="childList")for(const i of c.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&u(i)}).observe(document,{childList:!0,subtree:!0});function o(r){const c={};return r.integrity&&(c.integrity=r.integrity),r.referrerPolicy&&(c.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?c.credentials="include":r.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function u(r){if(r.ep)return;r.ep=!0;const c=o(r);fetch(r.href,c)}})();const _="xto_",le=e=>({get(n){const o=e.getItem(_+n);if(!o)return null;try{return JSON.parse(o)}catch{return o}},set(n,o){if(o==null){e.removeItem(_+n);return}const u=typeof o=="string"?o:JSON.stringify(o);e.setItem(_+n,u)},remove(n){e.removeItem(_+n)},clear(){Object.keys(e).forEach(o=>{o.startsWith(_)&&e.removeItem(o)})}}),E=le(window.localStorage),t={get:E.get,set:E.set,remove:E.remove,clear:E.clear},A=N("app",()=>{const e=d(t.get("appName")||"XTO App"),n=d(t.get("indexPath")||"/dashboard"),o=d(t.get("isDark")||!1),u=d(t.get("theme")||"light"),r=d(t.get("layout")||"sidebar"),c=d(t.get("isCollapsed")||!1),i=d(t.get("showTabs")??!0),l=d(t.get("showFooter")??!0),m=d(t.get("showBreadcrumb")??!0),p=d(t.get("primaryColor")||"#409eff"),h=d([]),s=f(()=>o.value?"dark":"light"),T=a=>{e.value=a,t.set("appName",a)},b=a=>{n.value=a,t.set("indexPath",a)},K=()=>{o.value=!o.value,u.value=o.value?"dark":"light",y()},M=a=>{u.value=a,o.value=a==="dark",y()},y=()=>{const a=document.documentElement;o.value?a.classList.add("dark"):a.classList.remove("dark"),t.set("isDark",o.value),t.set("theme",u.value)},B=()=>{c.value=!c.value,t.set("isCollapsed",c.value)},F=a=>{r.value=a,t.set("layout",a)},Y=()=>{i.value=!i.value,t.set("showTabs",i.value)},j=()=>{l.value=!l.value,t.set("showFooter",l.value)},q=()=>{m.value=!m.value,t.set("showBreadcrumb",m.value)},H=a=>{p.value=a,document.documentElement.style.setProperty("--color-primary",a),t.set("primaryColor",a)},J=a=>{h.value.includes(a)||h.value.push(a)},W=a=>{const w=h.value.indexOf(a);w>-1&&h.value.splice(w,1)},$=()=>{h.value=[]},X=()=>{y(),p.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",p.value)};return z(o,y),{appName:e,indexPath:n,isDark:o,theme:u,layout:r,isCollapsed:c,showTabs:i,showFooter:l,showBreadcrumb:m,primaryColor:p,cachedViews:h,themeClass:s,setAppName:T,setIndexPath:b,toggleTheme:K,toggleCollapse:B,setTheme:M,setLayout:F,toggleTabs:Y,toggleFooter:j,toggleBreadcrumb:q,setPrimaryColor:H,addCachedView:J,removeCachedView:W,clearCachedViews:$,initTheme:X}}),me=G({__name:"App",setup(e){const n=A();return(o,u)=>{const r=oe("router-view");return se(),Q("div",{class:ee(["app",{dark:te(n).isDark}])},[Z(r)],2)}}}),de="modulepreload",pe=function(e){return"/"+e},C={},v=function(n,o,u){let r=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(o.map(m=>{if(m=pe(m),m in C)return;C[m]=!0;const p=m.endsWith(".css"),h=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${h}`))return;const s=document.createElement("link");if(s.rel=p?"stylesheet":de,p||(s.as="script"),s.crossOrigin="",s.href=m,l&&s.setAttribute("nonce",l),document.head.appendChild(s),p)return new Promise((T,b)=>{s.addEventListener("load",T),s.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${m}`)))})}))}function c(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&c(l.reason);return n().catch(c)})},fe=[{path:"/login",name:"Login",component:()=>v(()=>import("./index-Te8_PRgJ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>v(()=>import("./404-WFvpcD2_.js"),__vite__mapDeps([19,1,3,4,5,11,20])),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>v(()=>import("./403-AFBQifUI.js"),__vite__mapDeps([21,1,3,4,5,11,22])),meta:{title:"403",hidden:!0}}],he={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},ve={path:"/",name:"Layout",component:()=>v(()=>import("./index-CYq57-zj.js"),__vite__mapDeps([23,2,1,14,4,15,3,5,11,8,9,6,7,12,13,24,17,18])),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>v(()=>import("./index-D9wlAuR_.js"),__vite__mapDeps([25,12,4,1,13,11,26])),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>v(()=>import("./index-DwVgMO8e.js"),__vite__mapDeps([27,1,6,4,7,12,13,8,9,3,5,28,11,29])),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>v(()=>import("./index-BpV_8nl0.js"),__vite__mapDeps([30,1,6,4,7,12,13,8,9,3,5,28,11,31])),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>v(()=>import("./index-Cz2P_bsS.js"),__vite__mapDeps([32,6,1,4,7,12,13,8,9,3,5,28,11,33])),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},_e=[{menuCode:"dashboard",menuName:"仪表盘",menuUrl:"/dashboard",icon:"dashboard",closable:!0,isDefault:!0,isOut:!1},{menuCode:"system",menuName:"系统管理",menuUrl:"/system",icon:"setting",closable:!1,isDefault:!1,isOut:!1,children:[{menuCode:"system_user",menuName:"用户管理",menuUrl:"/system/user",icon:"user",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_role",menuName:"角色管理",menuUrl:"/system/role",icon:"role",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_menu",menuName:"菜单管理",menuUrl:"/system/menu",icon:"menu",closable:!0,isDefault:!1,isOut:!1}]}],O="token",P="token_type",D="refresh_token",L="expires_time",U="refresh_time",x="code",ge=()=>t.get(O),ye=e=>{t.set(O,e)},Ye=()=>t.get(P),Ee=e=>{t.set(P,e)},Te=e=>{t.set(D,e)},be=()=>t.get(L),ke=e=>{t.set(L,e)},Ie=e=>{t.set(U,e)},Ne=e=>{t.set(x,e)},je=e=>{ye(e.access_token),Ee(e.token_type||"Bearer"),Te(e.refresh_token),ke(e.expires_time),Ie(e.refresh_time),e.code&&Ne(e.code)},qe=()=>{t.remove(O),t.remove(P),t.remove(D),t.remove(L),t.remove(U),t.remove(x)},Oe=()=>{const e=be();return e?Date.now()>e:!0},Pe=()=>!!ge()&&!Oe(),S=d(""),R=d("");function Le(){if(S.value)return S.value;try{return"your-app-id"}catch{return""}}function He(){if(R.value)return R.value;try{return"your-client-id"}catch{return""}}const k="user_info",we=N("user",()=>{const e=d(t.get(k)),n=f(()=>!!e.value),o=f(()=>{var s;return((s=e.value)==null?void 0:s.userId)||""}),u=f(()=>{var s;return((s=e.value)==null?void 0:s.userName)||""}),r=f(()=>{var s;return((s=e.value)==null?void 0:s.departmentName)||""}),c=f(()=>{var s;return((s=e.value)==null?void 0:s.email)||""}),i=f(()=>{var s;return((s=e.value)==null?void 0:s.mobilePhone)||""}),l=f(()=>{var s;return((s=e.value)==null?void 0:s.positionName)||""}),m=f(()=>{var s;return((s=e.value)==null?void 0:s.avatar)||""});return{userInfo:e,isLoggedIn:n,userId:o,userName:u,departmentName:r,email:c,mobilePhone:i,positionName:l,avatar:m,setUserInfo:s=>{e.value=s,t.set(k,s)},clearUserInfo:()=>{e.value=null,t.remove(k)}}}),I="menu_list",Ce={menuCode:"home",menuName:"首页",menuUrl:"/dashboard",icon:"home",closable:!1,isDefault:!1,isOut:!1},Se=N("menu",()=>{const e=d(t.get(I)||[]),n=f(()=>e.value.length>0);return{menuList:e,hasMenu:n,setMenuList:r=>{e.value=[Ce,...r],t.set(I,e.value)},clearMenu:()=>{e.value=[],t.remove(I)}}}),V=re({history:ne(),routes:[...fe,ve,he],scrollBehavior:()=>({left:0,top:0})}),Re=["/login","/404","/403"];V.beforeEach(async(e,n,o)=>{const u=A();if(u.initTheme(),Pe())if(e.path==="/login")o({path:"/"});else{const r=we();r.isLoggedIn||(r.setUserInfo({appId:Le(),userId:"1",userName:"管理员",departmentName:"技术部",email:"admin@example.com",mobilePhone:"13800138000",positionName:"管理员",avatar:""}),Se().setMenuList(_e)),e.name&&e.meta.keepAlive&&u.addCachedView(e.name),o()}else Re.includes(e.path)?o():o("/login")});const g=ae(me);g.component("x-loading",ie);g.component("TreeNode",ue);g.use(ce());g.use(V);g.mount("#app");export{Ye as a,He as b,qe as c,Le as d,we as e,A as f,ge as g,Pe as h,je as s,Se as u};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BTsRosKu.js","assets/vue-vendor-Br-l7wbK.js","assets/vite-Dw-pgLOX.js","assets/xto-base-C-IBqjVs.js","assets/xto-core-DZK7Cyg0.js","assets/xto-base-C6eqMPdO.css","assets/xto-form-NRjKKNcY.js","assets/xto-form-CrsyAjyr.css","assets/xto-feedback-B7ipsTfz.js","assets/xto-feedback-DBwJzoTj.css","assets/vendor-42ANG6Sg.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/xto-data-BFpiDgJi.js","assets/xto-data-CnAQAQH2.css","assets/xto-navigation-BiSaXPfr.js","assets/xto-navigation-C1cnSL2E.css","assets/index-PfV8pzQz.css","assets/xto-layout-BqU8RuWL.css","assets/xto-business--V1F5Gwb.css","assets/404-WFvpcD2_.js","assets/404-Ct_A1n7S.css","assets/403-AFBQifUI.js","assets/403-BHEXXbt2.css","assets/index-BHwEwbkp.js","assets/index-4-QoJAgA.css","assets/index-D9wlAuR_.js","assets/index-GDP-IkXE.css","assets/index-DwVgMO8e.js","assets/index-BRR97dc6.js","assets/index-CUh_s55Z.css","assets/index-BpV_8nl0.js","assets/index-DawJb02s.css","assets/index-Cz2P_bsS.js","assets/index-Swfu6yvD.css"])))=>i.map(i=>d[i]);
2
+ import{L as N,k as d,w as z,e as f,d as G,c as Q,B as Z,n as ee,u as te,j as oe,o as se,M as re,N as ne,J as ae,O as ce}from"./vue-vendor-Br-l7wbK.js";import{c as ie}from"./xto-base-C-IBqjVs.js";import"./xto-form-NRjKKNcY.js";import{t as ue}from"./xto-data-BFpiDgJi.js";import"./xto-feedback-B7ipsTfz.js";import"./xto-navigation-BiSaXPfr.js";/* empty css *//* empty css */import"./xto-core-DZK7Cyg0.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))u(r);new MutationObserver(r=>{for(const c of r)if(c.type==="childList")for(const i of c.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&u(i)}).observe(document,{childList:!0,subtree:!0});function o(r){const c={};return r.integrity&&(c.integrity=r.integrity),r.referrerPolicy&&(c.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?c.credentials="include":r.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function u(r){if(r.ep)return;r.ep=!0;const c=o(r);fetch(r.href,c)}})();const _="xto_",le=e=>({get(n){const o=e.getItem(_+n);if(!o)return null;try{return JSON.parse(o)}catch{return o}},set(n,o){if(o==null){e.removeItem(_+n);return}const u=typeof o=="string"?o:JSON.stringify(o);e.setItem(_+n,u)},remove(n){e.removeItem(_+n)},clear(){Object.keys(e).forEach(o=>{o.startsWith(_)&&e.removeItem(o)})}}),E=le(window.localStorage),t={get:E.get,set:E.set,remove:E.remove,clear:E.clear},A=N("app",()=>{const e=d(t.get("appName")||"XTO App"),n=d(t.get("indexPath")||"/dashboard"),o=d(t.get("isDark")||!1),u=d(t.get("theme")||"light"),r=d(t.get("layout")||"sidebar"),c=d(t.get("isCollapsed")||!1),i=d(t.get("showTabs")??!0),l=d(t.get("showFooter")??!0),m=d(t.get("showBreadcrumb")??!0),p=d(t.get("primaryColor")||"#409eff"),h=d([]),s=f(()=>o.value?"dark":"light"),T=a=>{e.value=a,t.set("appName",a)},b=a=>{n.value=a,t.set("indexPath",a)},K=()=>{o.value=!o.value,u.value=o.value?"dark":"light",y()},M=a=>{u.value=a,o.value=a==="dark",y()},y=()=>{const a=document.documentElement;o.value?a.classList.add("dark"):a.classList.remove("dark"),t.set("isDark",o.value),t.set("theme",u.value)},B=()=>{c.value=!c.value,t.set("isCollapsed",c.value)},F=a=>{r.value=a,t.set("layout",a)},Y=()=>{i.value=!i.value,t.set("showTabs",i.value)},j=()=>{l.value=!l.value,t.set("showFooter",l.value)},q=()=>{m.value=!m.value,t.set("showBreadcrumb",m.value)},H=a=>{p.value=a,document.documentElement.style.setProperty("--color-primary",a),t.set("primaryColor",a)},J=a=>{h.value.includes(a)||h.value.push(a)},W=a=>{const w=h.value.indexOf(a);w>-1&&h.value.splice(w,1)},$=()=>{h.value=[]},X=()=>{y(),p.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",p.value)};return z(o,y),{appName:e,indexPath:n,isDark:o,theme:u,layout:r,isCollapsed:c,showTabs:i,showFooter:l,showBreadcrumb:m,primaryColor:p,cachedViews:h,themeClass:s,setAppName:T,setIndexPath:b,toggleTheme:K,toggleCollapse:B,setTheme:M,setLayout:F,toggleTabs:Y,toggleFooter:j,toggleBreadcrumb:q,setPrimaryColor:H,addCachedView:J,removeCachedView:W,clearCachedViews:$,initTheme:X}}),me=G({__name:"App",setup(e){const n=A();return(o,u)=>{const r=oe("router-view");return se(),Q("div",{class:ee(["app",{dark:te(n).isDark}])},[Z(r)],2)}}}),de="modulepreload",pe=function(e){return"/"+e},C={},v=function(n,o,u){let r=Promise.resolve();if(o&&o.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));r=Promise.allSettled(o.map(m=>{if(m=pe(m),m in C)return;C[m]=!0;const p=m.endsWith(".css"),h=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${h}`))return;const s=document.createElement("link");if(s.rel=p?"stylesheet":de,p||(s.as="script"),s.crossOrigin="",s.href=m,l&&s.setAttribute("nonce",l),document.head.appendChild(s),p)return new Promise((T,b)=>{s.addEventListener("load",T),s.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${m}`)))})}))}function c(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return r.then(i=>{for(const l of i||[])l.status==="rejected"&&c(l.reason);return n().catch(c)})},fe=[{path:"/login",name:"Login",component:()=>v(()=>import("./index-BTsRosKu.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>v(()=>import("./404-WFvpcD2_.js"),__vite__mapDeps([19,1,3,4,5,11,20])),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>v(()=>import("./403-AFBQifUI.js"),__vite__mapDeps([21,1,3,4,5,11,22])),meta:{title:"403",hidden:!0}}],he={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},ve={path:"/",name:"Layout",component:()=>v(()=>import("./index-BHwEwbkp.js"),__vite__mapDeps([23,1,2,14,4,15,3,5,11,8,9,6,7,12,13,24,17,18])),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>v(()=>import("./index-D9wlAuR_.js"),__vite__mapDeps([25,12,4,1,13,11,26])),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>v(()=>import("./index-DwVgMO8e.js"),__vite__mapDeps([27,1,6,4,7,12,13,8,9,3,5,28,11,29])),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>v(()=>import("./index-BpV_8nl0.js"),__vite__mapDeps([30,1,6,4,7,12,13,8,9,3,5,28,11,31])),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>v(()=>import("./index-Cz2P_bsS.js"),__vite__mapDeps([32,6,1,4,7,12,13,8,9,3,5,28,11,33])),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},_e=[{menuCode:"dashboard",menuName:"仪表盘",menuUrl:"/dashboard",icon:"dashboard",closable:!0,isDefault:!0,isOut:!1},{menuCode:"system",menuName:"系统管理",menuUrl:"/system",icon:"setting",closable:!1,isDefault:!1,isOut:!1,children:[{menuCode:"system_user",menuName:"用户管理",menuUrl:"/system/user",icon:"user",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_role",menuName:"角色管理",menuUrl:"/system/role",icon:"role",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_menu",menuName:"菜单管理",menuUrl:"/system/menu",icon:"menu",closable:!0,isDefault:!1,isOut:!1}]}],O="token",P="token_type",D="refresh_token",L="expires_time",U="refresh_time",x="code",ge=()=>t.get(O),ye=e=>{t.set(O,e)},Ye=()=>t.get(P),Ee=e=>{t.set(P,e)},Te=e=>{t.set(D,e)},be=()=>t.get(L),ke=e=>{t.set(L,e)},Ie=e=>{t.set(U,e)},Ne=e=>{t.set(x,e)},je=e=>{ye(e.access_token),Ee(e.token_type||"Bearer"),Te(e.refresh_token),ke(e.expires_time),Ie(e.refresh_time),e.code&&Ne(e.code)},qe=()=>{t.remove(O),t.remove(P),t.remove(D),t.remove(L),t.remove(U),t.remove(x)},Oe=()=>{const e=be();return e?Date.now()>e:!0},Pe=()=>!!ge()&&!Oe(),S=d(""),R=d("");function Le(){if(S.value)return S.value;try{return"your-app-id"}catch{return""}}function He(){if(R.value)return R.value;try{return"your-client-id"}catch{return""}}const k="user_info",we=N("user",()=>{const e=d(t.get(k)),n=f(()=>!!e.value),o=f(()=>{var s;return((s=e.value)==null?void 0:s.userId)||""}),u=f(()=>{var s;return((s=e.value)==null?void 0:s.userName)||""}),r=f(()=>{var s;return((s=e.value)==null?void 0:s.departmentName)||""}),c=f(()=>{var s;return((s=e.value)==null?void 0:s.email)||""}),i=f(()=>{var s;return((s=e.value)==null?void 0:s.mobilePhone)||""}),l=f(()=>{var s;return((s=e.value)==null?void 0:s.positionName)||""}),m=f(()=>{var s;return((s=e.value)==null?void 0:s.avatar)||""});return{userInfo:e,isLoggedIn:n,userId:o,userName:u,departmentName:r,email:c,mobilePhone:i,positionName:l,avatar:m,setUserInfo:s=>{e.value=s,t.set(k,s)},clearUserInfo:()=>{e.value=null,t.remove(k)}}}),I="menu_list",Ce={menuCode:"home",menuName:"首页",menuUrl:"/dashboard",icon:"home",closable:!1,isDefault:!1,isOut:!1},Se=N("menu",()=>{const e=d(t.get(I)||[]),n=f(()=>e.value.length>0);return{menuList:e,hasMenu:n,setMenuList:r=>{e.value=[Ce,...r],t.set(I,e.value)},clearMenu:()=>{e.value=[],t.remove(I)}}}),V=re({history:ne(),routes:[...fe,ve,he],scrollBehavior:()=>({left:0,top:0})}),Re=["/login","/404","/403"];V.beforeEach(async(e,n,o)=>{const u=A();if(u.initTheme(),Pe())if(e.path==="/login")o({path:"/"});else{const r=we();r.isLoggedIn||(r.setUserInfo({appId:Le(),userId:"1",userName:"管理员",departmentName:"技术部",email:"admin@example.com",mobilePhone:"13800138000",positionName:"管理员",avatar:""}),Se().setMenuList(_e)),e.name&&e.meta.keepAlive&&u.addCachedView(e.name),o()}else Re.includes(e.path)?o():o("/login")});const g=ae(me);g.component("x-loading",ie);g.component("TreeNode",ue);g.use(ce());g.use(V);g.mount("#app");export{Ye as a,He as b,qe as c,Le as d,we as e,A as f,ge as g,Pe as h,je as s,Se as u};
package/dist/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Xto Demo - 后台管理系统</title>
8
- <script type="module" crossorigin src="/assets/index-1juADvYN.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-Do3gMkWw.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/vue-vendor-Br-l7wbK.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/xto-core-DZK7Cyg0.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/xto-base-C-IBqjVs.js">
@@ -18,7 +18,7 @@
18
18
  <link rel="stylesheet" crossorigin href="/assets/xto-data-CnAQAQH2.css">
19
19
  <link rel="stylesheet" crossorigin href="/assets/xto-feedback-DBwJzoTj.css">
20
20
  <link rel="stylesheet" crossorigin href="/assets/xto-navigation-C1cnSL2E.css">
21
- <link rel="stylesheet" crossorigin href="/assets/index-BZA0ksjx.css">
21
+ <link rel="stylesheet" crossorigin href="/assets/index-CZAlkDIC.css">
22
22
  <link rel="stylesheet" crossorigin href="/assets/xto-layout-BqU8RuWL.css">
23
23
  <link rel="stylesheet" crossorigin href="/assets/xto-business--V1F5Gwb.css">
24
24
  </head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xto-fronted",
3
- "version": "0.4.8",
3
+ "version": "0.4.10",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "XTO 前端应用框架",
@@ -34,14 +34,14 @@
34
34
  "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix"
35
35
  },
36
36
  "peerDependencies": {
37
- "@xto/base": "^1.3.0",
37
+ "@xto/base": "^1.3.2",
38
38
  "@xto/business": "^1.1.0",
39
39
  "@xto/core": "^1.0.2",
40
40
  "@xto/data": "^1.1.1",
41
41
  "@xto/feedback": "^1.1.3",
42
42
  "@xto/form": "^1.1.2",
43
43
  "@xto/layout": "^1.0.5",
44
- "@xto/navigation": "^1.2.1",
44
+ "@xto/navigation": "^1.2.3",
45
45
  "axios": "^1.6.0",
46
46
  "pinia": "^2.1.0",
47
47
  "vue": "^3.4.0",
@@ -57,7 +57,7 @@
57
57
  "@xto/feedback": "^1.1.3",
58
58
  "@xto/form": "^1.1.2",
59
59
  "@xto/layout": "^1.0.5",
60
- "@xto/navigation": "^1.2.1",
60
+ "@xto/navigation": "^1.2.3",
61
61
  "axios": "^1.6.8",
62
62
  "pinia": "^2.1.7",
63
63
  "sass": "^1.72.0",
@@ -58,11 +58,13 @@
58
58
 
59
59
  &.x-menu--horizontal {
60
60
  border-bottom-color: #363637;
61
+ background-color: #1d1e1f !important;
61
62
  }
62
63
  }
63
64
 
64
65
  .x-menu-item {
65
66
  color: #cfd3dc !important;
67
+ background-color: transparent !important;
66
68
 
67
69
  &:hover {
68
70
  background-color: #262727 !important;
@@ -76,11 +78,24 @@
76
78
  background-color: #409eff;
77
79
  }
78
80
  }
81
+
82
+ // 水平模式下的菜单项
83
+ &.is-horizontal {
84
+ &:hover {
85
+ background-color: transparent !important;
86
+ }
87
+
88
+ &.is-active {
89
+ background-color: transparent !important;
90
+ border-bottom-color: #409eff;
91
+ }
92
+ }
79
93
  }
80
94
 
81
95
  .x-sub-menu {
82
96
  &__title {
83
97
  color: #cfd3dc !important;
98
+ background-color: transparent !important;
84
99
 
85
100
  &:hover {
86
101
  background-color: #262727 !important;
@@ -91,6 +106,21 @@
91
106
  background-color: #1d1e1f !important;
92
107
  border: 1px solid #363637;
93
108
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
109
+
110
+ // 子菜单中的菜单项
111
+ .x-menu-item {
112
+ background-color: transparent !important;
113
+ color: #cfd3dc !important;
114
+
115
+ &:hover {
116
+ background-color: #262727 !important;
117
+ }
118
+
119
+ &.is-active {
120
+ color: #409eff !important;
121
+ background-color: rgba(64, 158, 255, 0.1) !important;
122
+ }
123
+ }
94
124
  }
95
125
 
96
126
  &__arrow {
@@ -104,6 +134,24 @@
104
134
  &.is-active > .x-sub-menu__title {
105
135
  color: #409eff !important;
106
136
  }
137
+
138
+ // 水平模式下的子菜单
139
+ &--horizontal {
140
+ .x-sub-menu__title:hover {
141
+ background-color: transparent !important;
142
+ }
143
+
144
+ .x-sub-menu__menu {
145
+ background-color: #1d1e1f !important;
146
+ border: 1px solid #363637;
147
+ }
148
+ }
149
+
150
+ // 收起状态下的弹出菜单
151
+ &.is-collapse > .x-sub-menu__menu {
152
+ background-color: #1d1e1f !important;
153
+ border: 1px solid #363637;
154
+ }
107
155
  }
108
156
 
109
157
  // 顶部导航
@@ -164,6 +212,20 @@
164
212
  }
165
213
  }
166
214
 
215
+ // 顶部菜单组件
216
+ .top-menu {
217
+ background-color: #1d1e1f;
218
+
219
+ &__menu {
220
+ background-color: #1d1e1f !important;
221
+ }
222
+
223
+ &__menu-char {
224
+ background-color: rgba(64, 158, 255, 0.2);
225
+ color: #79bbff;
226
+ }
227
+ }
228
+
167
229
  // 按钮
168
230
  .x-button {
169
231
  &.x-button--default {
@@ -404,4 +466,60 @@
404
466
  background-color: #1d1e1f;
405
467
  border: 1px solid #363637;
406
468
  }
469
+
470
+ // Drawer 抽屉组件
471
+ .x-drawer {
472
+ background-color: #1d1e1f;
473
+
474
+ &__header {
475
+ background-color: #1d1e1f;
476
+ border-bottom-color: #363637;
477
+ color: #e5eaf3;
478
+ }
479
+
480
+ &__body {
481
+ background-color: #1d1e1f;
482
+ color: #cfd3dc;
483
+ }
484
+
485
+ &__footer {
486
+ background-color: #1d1e1f;
487
+ border-top-color: #363637;
488
+ }
489
+ }
490
+
491
+ // 设置抽屉内容
492
+ .settings-drawer {
493
+ .settings-title {
494
+ color: #e5eaf3;
495
+ }
496
+
497
+ .settings-section {
498
+ background-color: transparent;
499
+ }
500
+
501
+ .layout-option {
502
+ border-color: #4c4d4f;
503
+ background-color: transparent;
504
+
505
+ &:hover {
506
+ border-color: #409eff;
507
+ }
508
+
509
+ &.is-active {
510
+ border-color: #409eff;
511
+ background-color: rgba(64, 158, 255, 0.1);
512
+ }
513
+
514
+ &__label {
515
+ color: #cfd3dc;
516
+ }
517
+ }
518
+
519
+ .settings-switch-item {
520
+ span {
521
+ color: #cfd3dc;
522
+ }
523
+ }
524
+ }
407
525
  }
@@ -184,4 +184,12 @@
184
184
  display: flex;
185
185
  justify-content: flex-end;
186
186
  margin-top: var(--spacing-md);
187
+ }
188
+
189
+ // ==============================================
190
+ // 灰色模式(全局样式,不能在 scoped 中)
191
+ // ==============================================
192
+ html.grey-mode {
193
+ filter: grayscale(100%);
194
+ -webkit-filter: grayscale(100%);
187
195
  }
@@ -966,9 +966,4 @@ onUnmounted(() => {
966
966
  .search-leave-to {
967
967
  opacity: 0;
968
968
  }
969
-
970
- // 灰色模式
971
- html.grey-mode {
972
- filter: grayscale(100%);
973
- }
974
969
  </style>
@@ -8,6 +8,13 @@ import { useAppStore } from '@/stores/app'
8
8
  import { Menu, MenuItem, SubMenu } from '@xto/navigation'
9
9
  import { Button, Icon } from '@xto/base'
10
10
 
11
+ // Props
12
+ const props = withDefaults(defineProps<{
13
+ menuList?: any[]
14
+ }>(), {
15
+ menuList: () => []
16
+ })
17
+
11
18
  const route = useRoute()
12
19
  const router = useRouter()
13
20
  const menuStore = useMenuStore()
@@ -15,6 +22,9 @@ const userStore = useUserStore()
15
22
  const authStore = useAuthStore()
16
23
  const appStore = useAppStore()
17
24
 
25
+ // 使用传入的菜单列表,如果没有传入则使用 store 中的
26
+ const displayMenuList = computed(() => props.menuList.length > 0 ? props.menuList : menuStore.menuList)
27
+
18
28
  const isCollapsed = computed(() => appStore.isCollapsed)
19
29
  const activeMenu = computed(() => route.path)
20
30
 
@@ -140,7 +150,7 @@ const iconExists = (iconName: string): boolean => {
140
150
  class="sidebar__menu"
141
151
  @select="handleMenuSelect"
142
152
  >
143
- <template v-for="menu in menuStore.menuList" :key="menu.menuUrl">
153
+ <template v-for="menu in displayMenuList" :key="menu.menuUrl">
144
154
  <!-- 有子菜单 -->
145
155
  <SubMenu v-if="menu.children && menu.children.length > 0" :index="menu.menuUrl">
146
156
  <template #title>