vome-core 0.1.82 → 0.1.84
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.
- package/dist/admin/components/ui/avatar/index.js +1 -1
- package/dist/admin/components/ui/badge/index.d.ts +1 -1
- package/dist/admin/components/ui/badge/index.js +15 -1
- package/dist/admin/components/ui/button/index.d.ts +1 -1
- package/dist/admin/components/ui/button/index.js +31 -1
- package/dist/admin/components/ui/checkbox/index.js +1 -1
- package/dist/admin/components/ui/dialog/index.js +1 -1
- package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
- package/dist/admin/components/ui/input/index.js +1 -1
- package/dist/admin/components/ui/label/index.js +1 -1
- package/dist/admin/components/ui/scroll-area/index.js +1 -1
- package/dist/admin/components/ui/select/index.js +1 -1
- package/dist/admin/components/ui/separator/index.js +1 -1
- package/dist/admin/components/ui/sheet/index.js +1 -1
- package/dist/admin/components/ui/sonner/index.js +1 -1
- package/dist/admin/components/ui/table/index.js +1 -1
- package/dist/admin/components/ui/tabs/index.js +1 -1
- package/dist/admin/components/ui/tooltip/index.js +1 -1
- package/dist/admin/components/vm-role-picker.vue +10 -3
- package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/crud-page-request.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/export-fetch.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/index.d.ts +0 -5
- package/dist/admin/index.js +0 -4
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/export-excel.js +1 -1
- package/dist/admin/lib/file-preview.js +6 -2
- package/dist/admin/lib/import-excel.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/micro-locale.js +1 -1
- package/dist/admin/lib/micro-theme.js +1 -1
- package/dist/admin/lib/setup-crud-defaults.js +1 -1
- package/dist/admin/lib/shell.js +1 -1
- package/dist/admin/lib/theme-color-options.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/lib/video-frame.js +1 -1
- package/dist/admin/router/create.js +1 -1
- package/dist/admin/router/guards.js +1 -1
- package/dist/admin/themes/dark.js +1 -1
- package/dist/admin/themes/index.js +1 -1
- package/dist/admin/themes/light.js +1 -1
- package/dist/ai/index.js +298 -9
- package/dist/client/configure.js +13 -4
- package/dist/client/vite-admin.d.ts +16 -1
- package/dist/client/vite-admin.js +33 -13
- package/dist/client/vite-auto-import.js +3 -3
- package/dist/client/vite-resolve.js +28 -4
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/datetime-picker.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/locale-json.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +1 -1
- package/dist/admin/components/layout/vm-app-header.vue +0 -341
- package/dist/admin/components/layout/vm-app-sidebar.vue +0 -187
- package/dist/admin/components/layout/vm-sidebar-flyout.vue +0 -268
- package/dist/admin/components/layout/vm-sidebar-nav-item.vue +0 -490
- package/dist/admin/components/layout/vm-sidebar-nav.vue +0 -104
- package/dist/admin/components/layout/vm-tags-view.vue +0 -233
- package/dist/admin/lib/document-title.d.ts +0 -6
- package/dist/admin/lib/document-title.js +0 -1
- package/dist/admin/stores/dict.d.ts +0 -13
- package/dist/admin/stores/dict.js +0 -1
- package/dist/admin/stores/locale.d.ts +0 -3
- package/dist/admin/stores/locale.js +0 -1
- package/dist/admin/stores/theme.d.ts +0 -1
- package/dist/admin/stores/theme.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x4d5baa=_0x5a9a;(function(_0x39ba69,_0x156087){const _0x37f2d2=_0x5a9a,_0x1f3eb7=_0x39ba69();while(!![]){try{const _0x4fedff=parseInt(_0x37f2d2(0x1ba))/0x1+-parseInt(_0x37f2d2(0x1a1))/0x2*(-parseInt(_0x37f2d2(0x1a4))/0x3)+parseInt(_0x37f2d2(0x1b7))/0x4+-parseInt(_0x37f2d2(0x1ae))/0x5+parseInt(_0x37f2d2(0x1b3))/0x6+-parseInt(_0x37f2d2(0x1a2))/0x7*(parseInt(_0x37f2d2(0x1b0))/0x8)+-parseInt(_0x37f2d2(0x1aa))/0x9*(parseInt(_0x37f2d2(0x19d))/0xa);if(_0x4fedff===_0x156087)break;else _0x1f3eb7['push'](_0x1f3eb7['shift']());}catch(_0x2ef9f9){_0x1f3eb7['push'](_0x1f3eb7['shift']());}}}(_0x4fd4,0x2ed7b));function _0x4fd4(){const _0x46e05a=['z2v0tw9UDgG','Bw9UDgG','ntC3mJzgD0HPwem','Bwf4','EwvHCG','z2v0u2vJB25KCW','mtKWmtq0mfjpzhrfCW','Dg9mB3DLCKnHC2u','mtq0A3rZD0zP','z2v0sg91CNm','DhjPBq','mtqYmty1oefos2zRqG','z2v0rgf5','ChvZAa','C2XPy2u','mtiXotuYogjJuNn4Bq','Aw5JBhvKzxm','CgfKu3rHCNq','mJG4nZCXq3jgCvzs','z2v0rgf0zq','nJGWrfLYEMPj','z2v0twLUDxrLCW','BwLU','zgf0zxrPBwu','nJm2nZi2Cfbwv3Le','ntq2otHTvwvQt1m','zxHLyW','m1HqCLv0Ba','z2v0rNvSBfLLyxi','zgf5','z2v0vgLTzq'];_0x4fd4=function(){return _0x46e05a;};return _0x4fd4();}function _0x5a9a(_0x150e04,_0x31f1f9){_0x150e04=_0x150e04-0x19d;const _0x4fd42d=_0x4fd4();let _0x5a9afb=_0x4fd42d[_0x150e04];if(_0x5a9a['UruJZY']===undefined){var _0x1478e9=function(_0x42c48f){const _0x1775ba='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x51eb4e='',_0x324739='';for(let _0x1217f2=0x0,_0x4773e3,_0x948f7,_0x2360fe=0x0;_0x948f7=_0x42c48f['charAt'](_0x2360fe++);~_0x948f7&&(_0x4773e3=_0x1217f2%0x4?_0x4773e3*0x40+_0x948f7:_0x948f7,_0x1217f2++%0x4)?_0x51eb4e+=String['fromCharCode'](0xff&_0x4773e3>>(-0x2*_0x1217f2&0x6)):0x0){_0x948f7=_0x1775ba['indexOf'](_0x948f7);}for(let _0xe8354d=0x0,_0x2b3ba2=_0x51eb4e['length'];_0xe8354d<_0x2b3ba2;_0xe8354d++){_0x324739+='%'+('00'+_0x51eb4e['charCodeAt'](_0xe8354d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x324739);};_0x5a9a['bnrypr']=_0x1478e9,_0x5a9a['FGaCDj']={},_0x5a9a['UruJZY']=!![];}const _0x41e839=_0x4fd42d[0x0],_0x7039be=_0x150e04+_0x41e839,_0x2e6670=_0x5a9a['FGaCDj'][_0x7039be];return!_0x2e6670?(_0x5a9afb=_0x5a9a['bnrypr'](_0x5a9afb),_0x5a9a['FGaCDj'][_0x7039be]=_0x5a9afb):_0x5a9afb=_0x2e6670,_0x5a9afb;}const PRECISIONS=[_0x4d5baa(0x1ac),_0x4d5baa(0x1a9),_0x4d5baa(0x1a6),_0x4d5baa(0x1a0)];export function normalizeDateTimePrecision(_0x51eb4e){const _0x3aa0ae=_0x4d5baa,_0x324739=String(_0x51eb4e||'')[_0x3aa0ae(0x1b2)]()[_0x3aa0ae(0x1af)]();return PRECISIONS[_0x3aa0ae(0x1b8)](_0x324739)?_0x324739:'day';}export function clampTimePart(_0x1217f2,_0x4773e3){const _0xd73743=_0x4d5baa,_0x948f7=_0x1217f2==='h'?0x17:0x3b;return Math[_0xd73743(0x1ab)](0x0,Math[_0xd73743(0x19f)](_0x948f7,Math['trunc'](_0x4773e3)));}function pad2(_0x2360fe){const _0x2e7b5c=_0x4d5baa;return String(_0x2360fe)[_0x2e7b5c(0x1b9)](0x2,'0');}export function formatYmd(_0xe8354d){const _0x4e93b3=_0x4d5baa;return _0xe8354d[_0x4e93b3(0x1a5)]()+'-'+pad2(_0xe8354d[_0x4e93b3(0x1a8)]()+0x1)+'-'+pad2(_0xe8354d[_0x4e93b3(0x1bb)]());}export function parseApiDateTime(_0x2b3ba2){const _0x455e11=_0x4d5baa;if(!_0x2b3ba2)return null;const _0x113af5=String(_0x2b3ba2)[_0x455e11(0x1b2)](),_0x5801b1=/^(\d{4})-(\d{2})-(\d{2})/[_0x455e11(0x1a3)](_0x113af5);if(!_0x5801b1)return null;const _0x529607=new Date(Number(_0x5801b1[0x1]),Number(_0x5801b1[0x2])-0x1,Number(_0x5801b1[0x3]));if(Number['isNaN'](_0x529607[_0x455e11(0x1a7)]()))return null;const _0x52ab5f=/(?:T|\s)(\d{2}):(\d{2})(?::(\d{2}))?/[_0x455e11(0x1a3)](_0x113af5);return _0x52ab5f&&_0x529607['setHours'](Number(_0x52ab5f[0x1]),Number(_0x52ab5f[0x2]),Number(_0x52ab5f[0x3]||0x0),0x0),_0x529607;}export function dateTimeDisplayText(_0x160229,_0x4ecd18){const _0x5718da=_0x4d5baa;if(!_0x160229)return'';if(_0x4ecd18===_0x5718da(0x1ac))return String(_0x160229)[_0x5718da(0x1b6)](0x0,0x4);if(_0x4ecd18===_0x5718da(0x1a9)){const _0x43bf8e=String(_0x160229)[_0x5718da(0x1b6)](0x0,0x7),_0x4f487b=/^(\d{4})-(\d{2})$/[_0x5718da(0x1a3)](_0x43bf8e);return _0x4f487b?_0x4f487b[0x1]+'年'+Number(_0x4f487b[0x2])+'月':_0x43bf8e;}const _0x2adff8=parseApiDateTime(_0x160229);if(!_0x2adff8)return String(_0x160229);const _0x4c3f2e=_0x2adff8[_0x5718da(0x1a5)]()+'年'+pad2(_0x2adff8[_0x5718da(0x1a8)]()+0x1)+'月'+pad2(_0x2adff8[_0x5718da(0x1bb)]())+'日';if(_0x4ecd18===_0x5718da(0x1a6))return _0x4c3f2e;return _0x4c3f2e+'\x20'+pad2(_0x2adff8[_0x5718da(0x1b1)]())+':'+pad2(_0x2adff8[_0x5718da(0x19e)]())+':'+pad2(_0x2adff8[_0x5718da(0x1ad)]());}export function buildMonthGrid(_0x503720,_0x41b4b9){const _0x342f0e=_0x4d5baa,_0x50b137=new Date(_0x503720,_0x41b4b9,0x1),_0x100dd0=new Date(_0x503720,_0x41b4b9,0x1-_0x50b137[_0x342f0e(0x1b4)]()),_0x11ba6d=formatYmd(new Date()),_0x3cfcf6=[];for(let _0x3dbda2=0x0;_0x3dbda2<0x2a;_0x3dbda2++){const _0x382846=new Date(_0x100dd0[_0x342f0e(0x1a5)](),_0x100dd0[_0x342f0e(0x1a8)](),_0x100dd0[_0x342f0e(0x1bb)]()+_0x3dbda2),_0x84e4e3=formatYmd(_0x382846);_0x3cfcf6[_0x342f0e(0x1b5)]({'day':_0x382846[_0x342f0e(0x1bb)](),'inMonth':_0x382846[_0x342f0e(0x1a8)]()===_0x41b4b9,'iso':_0x84e4e3,'isToday':_0x84e4e3===_0x11ba6d});}return _0x3cfcf6;}
|
package/dist/shared/excel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x95f001=_0xe7da;function _0xe7da(_0x22868d,_0x23ba94){_0x22868d=_0x22868d-0xe3;const _0x2d9744=_0x2d97();let _0xe7da86=_0x2d9744[_0x22868d];if(_0xe7da['ItphPu']===undefined){var _0x248e74=function(_0x3adad9){const _0x17371f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4f1838='',_0x50bb66='';for(let _0x475f45=0x0,_0x5ebd71,_0x5d38ee,_0x361ce3=0x0;_0x5d38ee=_0x3adad9['charAt'](_0x361ce3++);~_0x5d38ee&&(_0x5ebd71=_0x475f45%0x4?_0x5ebd71*0x40+_0x5d38ee:_0x5d38ee,_0x475f45++%0x4)?_0x4f1838+=String['fromCharCode'](0xff&_0x5ebd71>>(-0x2*_0x475f45&0x6)):0x0){_0x5d38ee=_0x17371f['indexOf'](_0x5d38ee);}for(let _0x2dd404=0x0,_0x109dba=_0x4f1838['length'];_0x2dd404<_0x109dba;_0x2dd404++){_0x50bb66+='%'+('00'+_0x4f1838['charCodeAt'](_0x2dd404)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x50bb66);};_0xe7da['qDZsgp']=_0x248e74,_0xe7da['IvYnNi']={},_0xe7da['ItphPu']=!![];}const _0x5e5eba=_0x2d9744[0x0],_0x1a2f24=_0x22868d+_0x5e5eba,_0x4b712c=_0xe7da['IvYnNi'][_0x1a2f24];return!_0x4b712c?(_0xe7da86=_0xe7da['qDZsgp'](_0xe7da86),_0xe7da['IvYnNi'][_0x1a2f24]=_0xe7da86):_0xe7da86=_0x4b712c,_0xe7da86;}(function(_0x1f01ab,_0x2171c4){const _0xe8c37b=_0xe7da,_0x3dbe86=_0x1f01ab();while(!![]){try{const _0x1db758=parseInt(_0xe8c37b(0xe4))/0x1*(-parseInt(_0xe8c37b(0x105))/0x2)+-parseInt(_0xe8c37b(0xf4))/0x3+-parseInt(_0xe8c37b(0xe9))/0x4*(parseInt(_0xe8c37b(0xf1))/0x5)+parseInt(_0xe8c37b(0xf8))/0x6*(parseInt(_0xe8c37b(0xee))/0x7)+-parseInt(_0xe8c37b(0xe5))/0x8*(parseInt(_0xe8c37b(0xea))/0x9)+parseInt(_0xe8c37b(0xe7))/0xa*(parseInt(_0xe8c37b(0xf2))/0xb)+-parseInt(_0xe8c37b(0x103))/0xc*(-parseInt(_0xe8c37b(0xf5))/0xd);if(_0x1db758===_0x2171c4)break;else _0x3dbe86['push'](_0x3dbe86['shift']());}catch(_0x1f75bb){_0x3dbe86['push'](_0x3dbe86['shift']());}}}(_0x2d97,0x87e20));import*as _0x4f1838 from'xlsx';function _0x2d97(){const _0x2302ee=['DhjPBq','C2HLzxrFDg9FANnVBG','zgvMyxvSDa','BgvUz3rO','mta2nZGZu0nSC3nz','nJC1nZzMExjns3e','CMvHza','ndiWmdiZmgjHAMXArW','DgvUyw50swq','nZCYC05kAwDm','mZuXzfnrCLnt','u2HLzxroyw1LCW','zgvSzxrLzef0','DxrPBhm','mte5C3nzyuHY','AgvHzgvY','u2HLzxqX','mJm2mZv3uffLvu8','mtfLC0fuBM4','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','mJG4nJq2nvPNtxn4Ca','mJiXntuXmdDxrgrAEeS','C3rYAw5N','D3jPDgu','mJK5otiYAhDfyNbg','zw5KC1DPDgG','DxbKyxrLvgLTzq','yxjYyxK','lNHSC3G','yM9VA19HChbLBMrFC2HLzxq','BwfW','yxr0ywnOBwvUDdSGzMLSzw5HBwuQpvvurI04jYC','BgfIzwW','ChjVCa','yM9VA19UzxC','mtjvzgjlz3O','yw9Hx3rVx3nOzwv0','neLhAe9XDG'];_0x2d97=function(){return _0x2302ee;};return _0x2d97();}const XLSX=_0x4f1838[_0x95f001(0xed)]!=null?_0x4f1838:_0x4f1838[_0x95f001(0x108)]??_0x4f1838;export const IMPORT_SKIP_FIELDS=['id','createTime',_0x95f001(0xfa),_0x95f001(0xec),_0x95f001(0xe8)];export function isImportSkipField(_0x50bb66){return IMPORT_SKIP_FIELDS['includes'](_0x50bb66);}export function buildExcelBuffer(_0x475f45,_0x5ebd71,_0x5d38ee,_0x361ce3){const _0x3268e3=_0x95f001,_0x2dd404=_0x361ce3?.[_0x3268e3(0xef)]??_0x3268e3(0x100),_0x109dba=_0x475f45[_0x3268e3(0xfe)](_0x14e171=>_0x2dd404==='prop'?_0x14e171[_0x3268e3(0x101)]:_0x14e171[_0x3268e3(0x100)]||_0x14e171[_0x3268e3(0x101)]),_0x105e41=_0x5ebd71[_0x3268e3(0xfe)](_0x5e448a=>_0x475f45[_0x3268e3(0xfe)](_0x540766=>{const _0x2b7b1c=_0x3268e3;if(_0x5d38ee)return _0x5d38ee(_0x540766[_0x2b7b1c(0x101)],_0x5e448a);const _0x8ac377=_0x5e448a[_0x540766[_0x2b7b1c(0x101)]];if(_0x8ac377==null)return'';return String(_0x8ac377);})),_0x2817c4=XLSX['utils'][_0x3268e3(0x104)]([_0x109dba,..._0x105e41]),_0x4a5122=XLSX['utils'][_0x3268e3(0x102)]();return XLSX['utils'][_0x3268e3(0xfd)](_0x4a5122,_0x2817c4,_0x3268e3(0xf0)),XLSX[_0x3268e3(0xf7)](_0x4a5122,{'bookType':'xlsx','type':_0x3268e3(0xfb)});}export function buildImportTemplateBuffer(_0xccc028){const _0x4d75d1=_0x95f001,_0x2931d7=_0xccc028[_0x4d75d1(0xfe)](_0x2b9eea=>({'prop':_0x2b9eea,'label':_0x2b9eea}));return buildExcelBuffer(_0x2931d7,[],undefined,{'header':_0x4d75d1(0x101)});}export function parseExcelBuffer(_0x1d4009){const _0x1dcfd4=_0x95f001,_0x540202=XLSX[_0x1dcfd4(0xe6)](_0x1d4009,{'type':_0x1dcfd4(0xfb),'cellDates':!![]}),_0x5f1811=_0x540202[_0x1dcfd4(0xeb)][0x0];if(!_0x5f1811)return[];const _0x2ac28c=_0x540202['Sheets'][_0x5f1811];if(!_0x2ac28c)return[];const _0x692be7=XLSX[_0x1dcfd4(0xed)][_0x1dcfd4(0x107)](_0x2ac28c,{'header':0x1,'defval':'','raw':![]});if(!_0x692be7['length'])return[];const _0x2418bb=(_0x692be7[0x0]||[])['map'](_0x4977c9=>String(_0x4977c9??'')[_0x1dcfd4(0x106)]()),_0x1201aa=[];for(let _0x26704c=0x1;_0x26704c<_0x692be7['length'];_0x26704c++){const _0x479eb7=_0x692be7[_0x26704c]||[],_0x598587={};let _0x2d04f4=!![];for(let _0x449d0a=0x0;_0x449d0a<_0x2418bb[_0x1dcfd4(0xe3)];_0x449d0a++){const _0x1d4529=_0x2418bb[_0x449d0a];if(!_0x1d4529)continue;let _0x42ca25=_0x479eb7[_0x449d0a];if(_0x42ca25==null||_0x42ca25===''){_0x598587[_0x1d4529]=_0x42ca25==null?null:'';continue;}_0x2d04f4=![],typeof _0x42ca25===_0x1dcfd4(0xf6)?_0x598587[_0x1d4529]=_0x42ca25[_0x1dcfd4(0x106)]():_0x598587[_0x1d4529]=_0x42ca25;}if(!_0x2d04f4)_0x1201aa['push'](_0x598587);}return _0x1201aa;}export function excelFilename(_0x5f1f89){const _0x133075=_0x95f001;return _0x5f1f89[_0x133075(0xf9)]('.xlsx')?_0x5f1f89:_0x5f1f89+_0x133075(0xfc);}export function excelResponseHeaders(_0xcf4ec){const _0x2cdf8b=_0x95f001,_0x741ca3=excelFilename(_0xcf4ec);return{'Content-Type':_0x2cdf8b(0xf3),'Content-Disposition':_0x2cdf8b(0xff)+encodeURIComponent(_0x741ca3)};}
|
package/dist/shared/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x179135,_0x317cfe){var _0x4cd221=_0x39db,_0x138a66=_0x179135();while(!![]){try{var _0x316b71=parseInt(_0x4cd221(0xcc))/0x1+parseInt(_0x4cd221(0xcb))/0x2*(-parseInt(_0x4cd221(0xc9))/0x3)+parseInt(_0x4cd221(0xcf))/0x4+-parseInt(_0x4cd221(0xca))/0x5+-parseInt(_0x4cd221(0xc8))/0x6*(parseInt(_0x4cd221(0xcd))/0x7)+parseInt(_0x4cd221(0xd0))/0x8+parseInt(_0x4cd221(0xd1))/0x9*(-parseInt(_0x4cd221(0xce))/0xa);if(_0x316b71===_0x317cfe)break;else _0x138a66['push'](_0x138a66['shift']());}catch(_0x574680){_0x138a66['push'](_0x138a66['shift']());}}}(_0x3326,0xeea0d));export{merge}from'../comm/merge';export{deepTree,flattenTree}from'./tree';export{RES_CODE}from'../routing/base';export{buildExcelBuffer,buildImportTemplateBuffer,parseExcelBuffer,excelFilename,excelResponseHeaders,IMPORT_SKIP_FIELDS,isImportSkipField}from'./excel';export{flattenLocale,unflattenLocale,hashLocaleJson,extractJsonObject}from'./locale-json';function _0x39db(_0x71806e,_0x564edd){_0x71806e=_0x71806e-0xc8;var _0x33267d=_0x3326();var _0x39db4d=_0x33267d[_0x71806e];if(_0x39db['jokzdn']===undefined){var _0x1971cd=function(_0x4b5d9a){var _0x14687b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5cf99e='',_0x4860a2='';for(var _0x2b316e=0x0,_0x4faa09,_0x2cde64,_0x2e4553=0x0;_0x2cde64=_0x4b5d9a['charAt'](_0x2e4553++);~_0x2cde64&&(_0x4faa09=_0x2b316e%0x4?_0x4faa09*0x40+_0x2cde64:_0x2cde64,_0x2b316e++%0x4)?_0x5cf99e+=String['fromCharCode'](0xff&_0x4faa09>>(-0x2*_0x2b316e&0x6)):0x0){_0x2cde64=_0x14687b['indexOf'](_0x2cde64);}for(var _0x42b8d7=0x0,_0x12b802=_0x5cf99e['length'];_0x42b8d7<_0x12b802;_0x42b8d7++){_0x4860a2+='%'+('00'+_0x5cf99e['charCodeAt'](_0x42b8d7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4860a2);};_0x39db['GkhjCO']=_0x1971cd,_0x39db['fAvPNy']={},_0x39db['jokzdn']=!![];}var _0x53bc55=_0x33267d[0x0],_0x1d5b71=_0x71806e+_0x53bc55,_0x29f09a=_0x39db['fAvPNy'][_0x1d5b71];return!_0x29f09a?(_0x39db4d=_0x39db['GkhjCO'](_0x39db4d),_0x39db['fAvPNy'][_0x1d5b71]=_0x39db4d):_0x39db4d=_0x29f09a,_0x39db4d;}function _0x3326(){var _0x2798d4=['nti0ndaZmKzfvgTPza','nJi0mZaYnhHODw1SCW','mtiYndeXn1nqzMjmta','mtuWrKXTzfLS','ntuYotm2tfrMAK9y','ntC4mdu1vNnqzhnf','mLvLC3bbsG','mtaXmJi1mMHSDfzhvW','mtyYnZvhA1bqzgC','mtmWB1PwBvfz'];_0x3326=function(){return _0x2798d4;};return _0x3326();}export{normalizeDateTimePrecision,dateTimeDisplayText}from'./datetime-picker';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x225cda,_0x345d63){const _0x29042f=_0x460c,_0x175525=_0x225cda();while(!![]){try{const _0x254eac=parseInt(_0x29042f(0x1dc))/0x1+-parseInt(_0x29042f(0x1d6))/0x2*(-parseInt(_0x29042f(0x1ce))/0x3)+parseInt(_0x29042f(0x1d8))/0x4*(-parseInt(_0x29042f(0x1c3))/0x5)+-parseInt(_0x29042f(0x1d5))/0x6*(-parseInt(_0x29042f(0x1cb))/0x7)+parseInt(_0x29042f(0x1d3))/0x8+parseInt(_0x29042f(0x1d9))/0x9+parseInt(_0x29042f(0x1c2))/0xa*(-parseInt(_0x29042f(0x1c5))/0xb);if(_0x254eac===_0x345d63)break;else _0x175525['push'](_0x175525['shift']());}catch(_0x21dfbb){_0x175525['push'](_0x175525['shift']());}}}(_0x2de3,0x2ae42));import{createHash}from'node:crypto';function _0x2de3(){const _0x59705b=['zgLNzxn0','yxnZAwDU','quKG6l+u5zUE56M65yAf5A65','ndqZmZmWyMvzzxHt','mtbWzxvUt2O','C2XPy2u','mJmXu0zrANL6','B2jQzwn0','CgfYC2u','BgfZDeLUzgv4t2y','AxnbCNjHEq','Agv4','mte4mZi5ne5IAwnQDW','zMLSDgvY','DxbKyxrL','mty1mdi3rKL0CuPr','BgvUz3rO','zw50CMLLCW','DhjPBq','BwfW','mJyWnJC1mLPABhjRza','C3bSAxq','mtjMD1n3y0u','oeHdufDcEa','C2HHmJu2','ndqYmJK2r09SvgL5','mteYmdC1mKXiEePJCa','C3rYAw5N','quKG6l+u5zUE5PEG5Rov6kEJ5P6q5lI6iePtt04G5A+56lgH','mZe5mZmXuxfyuMjf','Bwf0y2G','A2v5CW'];_0x2de3=function(){return _0x59705b;};return _0x2de3();}export function flattenLocale(_0x2ed1ba,_0x1a4ccf=''){const _0x1aa769=_0x460c,_0x15f720={};for(const [_0x449573,_0x1db78a]of Object['entries'](_0x2ed1ba)){const _0x28cbc6=_0x1a4ccf?_0x1a4ccf+'.'+_0x449573:_0x449573;if(_0x1db78a!=null&&typeof _0x1db78a===_0x1aa769(0x1c6)&&!Array[_0x1aa769(0x1c9)](_0x1db78a))Object[_0x1aa769(0x1e0)](_0x15f720,flattenLocale(_0x1db78a,_0x28cbc6));else{if(typeof _0x1db78a===_0x1aa769(0x1da))_0x15f720[_0x28cbc6]=_0x1db78a;else _0x1db78a!=null&&(_0x15f720[_0x28cbc6]=String(_0x1db78a));}}return _0x15f720;}export function unflattenLocale(_0x1b29cb){const _0x43b54c=_0x460c,_0x2f23ae={};for(const [_0xd56342,_0x424c86]of Object[_0x43b54c(0x1d0)](_0x1b29cb)){const _0x5cefa7=_0xd56342[_0x43b54c(0x1d4)]('.')[_0x43b54c(0x1cc)](Boolean);if(!_0x5cefa7[_0x43b54c(0x1cf)])continue;let _0x3fd6f0=_0x2f23ae;for(let _0x2dea21=0x0;_0x2dea21<_0x5cefa7[_0x43b54c(0x1cf)]-0x1;_0x2dea21++){const _0x4b096f=_0x5cefa7[_0x2dea21],_0x58219c=_0x3fd6f0[_0x4b096f];(!_0x58219c||typeof _0x58219c!==_0x43b54c(0x1c6)||Array[_0x43b54c(0x1c9)](_0x58219c))&&(_0x3fd6f0[_0x4b096f]={}),_0x3fd6f0=_0x3fd6f0[_0x4b096f];}_0x3fd6f0[_0x5cefa7[_0x5cefa7['length']-0x1]]=_0x424c86;}return _0x2f23ae;}function _0x460c(_0x5945be,_0xa29937){_0x5945be=_0x5945be-0x1c1;const _0x2de331=_0x2de3();let _0x460cf0=_0x2de331[_0x5945be];if(_0x460c['TYzXHg']===undefined){var _0x19ee45=function(_0x1e628c){const _0x2af751='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ed1ba='',_0x1a4ccf='';for(let _0x15f720=0x0,_0x449573,_0x1db78a,_0x28cbc6=0x0;_0x1db78a=_0x1e628c['charAt'](_0x28cbc6++);~_0x1db78a&&(_0x449573=_0x15f720%0x4?_0x449573*0x40+_0x1db78a:_0x1db78a,_0x15f720++%0x4)?_0x2ed1ba+=String['fromCharCode'](0xff&_0x449573>>(-0x2*_0x15f720&0x6)):0x0){_0x1db78a=_0x2af751['indexOf'](_0x1db78a);}for(let _0x1b29cb=0x0,_0x2f23ae=_0x2ed1ba['length'];_0x1b29cb<_0x2f23ae;_0x1b29cb++){_0x1a4ccf+='%'+('00'+_0x2ed1ba['charCodeAt'](_0x1b29cb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a4ccf);};_0x460c['GqcvcA']=_0x19ee45,_0x460c['XGaxuE']={},_0x460c['TYzXHg']=!![];}const _0x4e7ae6=_0x2de331[0x0],_0x4f0793=_0x5945be+_0x4e7ae6,_0x58f379=_0x460c['XGaxuE'][_0x4f0793];return!_0x58f379?(_0x460cf0=_0x460c['GqcvcA'](_0x460cf0),_0x460c['XGaxuE'][_0x4f0793]=_0x460cf0):_0x460cf0=_0x58f379,_0x460cf0;}export function hashLocaleJson(_0x1cb823){const _0x551a9e=_0x460c,_0x3b8626=flattenLocale(_0x1cb823),_0x20bc24=Object[_0x551a9e(0x1de)](_0x3b8626)['sort'](),_0x9143be=_0x20bc24[_0x551a9e(0x1d2)](_0x5eb71a=>_0x5eb71a+'='+_0x3b8626[_0x5eb71a])['join']('\x0a');return createHash(_0x551a9e(0x1d7))[_0x551a9e(0x1cd)](_0x9143be)[_0x551a9e(0x1df)](_0x551a9e(0x1ca))['slice'](0x0,0x20);}export function extractJsonObject(_0x77d9af){const _0x4c29c8=_0x460c,_0x16f76f=String(_0x77d9af||'')['trim']();if(!_0x16f76f)throw new Error(_0x4c29c8(0x1c1));try{const _0x33d653=JSON[_0x4c29c8(0x1c7)](_0x16f76f);if(_0x33d653&&typeof _0x33d653==='object'&&!Array[_0x4c29c8(0x1c9)](_0x33d653))return _0x33d653;}catch{}const _0x446352=_0x16f76f[_0x4c29c8(0x1dd)](/```(?:json)?\s*([\s\S]*?)```/i);if(_0x446352?.[0x1]){const _0x523b48=JSON[_0x4c29c8(0x1c7)](_0x446352[0x1][_0x4c29c8(0x1d1)]());if(_0x523b48&&typeof _0x523b48==='object'&&!Array[_0x4c29c8(0x1c9)](_0x523b48))return _0x523b48;}const _0x5a8402=_0x16f76f['indexOf']('{'),_0x49259b=_0x16f76f[_0x4c29c8(0x1c8)]('}');if(_0x5a8402>=0x0&&_0x49259b>_0x5a8402){const _0x513d94=JSON[_0x4c29c8(0x1c7)](_0x16f76f[_0x4c29c8(0x1c4)](_0x5a8402,_0x49259b+0x1));if(_0x513d94&&typeof _0x513d94==='object'&&!Array['isArray'](_0x513d94))return _0x513d94;}throw new Error(_0x4c29c8(0x1db));}
|
package/dist/shared/tree.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x239494=_0x5723;(function(_0x41d687,_0x43107f){const _0x2c8eab=_0x5723,_0x26d6b6=_0x41d687();while(!![]){try{const _0x43b57d=-parseInt(_0x2c8eab(0x1d1))/0x1+-parseInt(_0x2c8eab(0x1cc))/0x2*(-parseInt(_0x2c8eab(0x1bd))/0x3)+parseInt(_0x2c8eab(0x1c3))/0x4+parseInt(_0x2c8eab(0x1cf))/0x5*(parseInt(_0x2c8eab(0x1c7))/0x6)+-parseInt(_0x2c8eab(0x1bf))/0x7*(parseInt(_0x2c8eab(0x1c5))/0x8)+-parseInt(_0x2c8eab(0x1c0))/0x9*(-parseInt(_0x2c8eab(0x1ce))/0xa)+-parseInt(_0x2c8eab(0x1c8))/0xb;if(_0x43b57d===_0x43107f)break;else _0x26d6b6['push'](_0x26d6b6['shift']());}catch(_0x8992c2){_0x26d6b6['push'](_0x26d6b6['shift']());}}}(_0x2651,0xd335a));function _0x5723(_0x31eb3a,_0x27c0cc){_0x31eb3a=_0x31eb3a-0x1bd;const _0x265180=_0x2651();let _0x572384=_0x265180[_0x31eb3a];if(_0x5723['YsbqZw']===undefined){var _0xc6c3da=function(_0x5cad29){const _0x50ff79='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3cbaa0='',_0x1f5a4b='';for(let _0x100b4e=0x0,_0x46cd16,_0x480305,_0x9b229=0x0;_0x480305=_0x5cad29['charAt'](_0x9b229++);~_0x480305&&(_0x46cd16=_0x100b4e%0x4?_0x46cd16*0x40+_0x480305:_0x480305,_0x100b4e++%0x4)?_0x3cbaa0+=String['fromCharCode'](0xff&_0x46cd16>>(-0x2*_0x100b4e&0x6)):0x0){_0x480305=_0x50ff79['indexOf'](_0x480305);}for(let _0x427d57=0x0,_0x55e785=_0x3cbaa0['length'];_0x427d57<_0x55e785;_0x427d57++){_0x1f5a4b+='%'+('00'+_0x3cbaa0['charCodeAt'](_0x427d57)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1f5a4b);};_0x5723['eAPGXL']=_0xc6c3da,_0x5723['SIFSIh']={},_0x5723['YsbqZw']=!![];}const _0x163802=_0x265180[0x0],_0x510b9e=_0x31eb3a+_0x163802,_0x244167=_0x5723['SIFSIh'][_0x510b9e];return!_0x244167?(_0x572384=_0x5723['eAPGXL'](_0x572384),_0x5723['SIFSIh'][_0x510b9e]=_0x572384):_0x572384=_0x244167,_0x572384;}export function deepTree(_0x3cbaa0,_0x1f5a4b=_0x239494(0x1ca)){const _0x574c8c=_0x239494,_0x100b4e=new Map();for(const _0x9b229 of _0x3cbaa0){if(_0x9b229['id']==null)continue;_0x100b4e['set'](_0x9b229['id'],{..._0x9b229,'children':[]});}const _0x46cd16=[];for(const _0x427d57 of _0x100b4e[_0x574c8c(0x1c9)]()){const _0x55e785=_0x427d57[_0x574c8c(0x1c1)];_0x55e785!=null&&_0x55e785!==''&&_0x100b4e[_0x574c8c(0x1cb)](_0x55e785)?_0x100b4e[_0x574c8c(0x1be)](_0x55e785)[_0x574c8c(0x1c4)][_0x574c8c(0x1d0)](_0x427d57):_0x46cd16[_0x574c8c(0x1d0)](_0x427d57);}const _0x480305=_0x54a22c=>{const _0x4b61a9=_0x574c8c;_0x54a22c[_0x4b61a9(0x1c6)]((_0x25efcd,_0x5d0100)=>{const _0x572d62=_0x4b61a9,_0x4518d3=_0x25efcd['orderNum']??0x0,_0x124e26=_0x5d0100['orderNum']??0x0,_0x4c89b0=_0x1f5a4b===_0x572d62(0x1c2)?_0x124e26-_0x4518d3:_0x4518d3-_0x124e26;return _0x4c89b0||Number(_0x25efcd['id'])-Number(_0x5d0100['id']);});for(const _0x42295d of _0x54a22c)if(_0x42295d[_0x4b61a9(0x1c4)]?.[_0x4b61a9(0x1cd)])_0x480305(_0x42295d[_0x4b61a9(0x1c4)]);};return _0x480305(_0x46cd16),_0x46cd16;}export function flattenTree(_0x160a42,_0x54f0dd,_0x31d0fa=0x0,_0x29f095=[]){const _0xf9ab2e=_0x239494;for(const _0x3e7f12 of _0x160a42){const _0x49d114=_0x3e7f12[_0xf9ab2e(0x1c4)]||[];_0x29f095[_0xf9ab2e(0x1d0)]({..._0x3e7f12,'depth':_0x31d0fa,'hasChildren':_0x49d114[_0xf9ab2e(0x1cd)]>0x0});if(_0x49d114[_0xf9ab2e(0x1cd)]&&_0x54f0dd[_0xf9ab2e(0x1cb)](_0x3e7f12['id']))flattenTree(_0x49d114,_0x54f0dd,_0x31d0fa+0x1,_0x29f095);}return _0x29f095;}function _0x2651(){const _0x2d9fb2=['C29YDa','nJzAwgTStNG','ntiZnte1m0PiqvPMvW','DMfSDwvZ','yxnJ','AgfZ','mtbOAvvXuwS','BgvUz3rO','ntKWwNPirfHf','ntq2mtbAwfHODgy','ChvZAa','mtC3ndGZv2TwELfj','ntKWota0y055qKvs','z2v0','n1PtwLPHtW','mJa1ndK3BePQwurj','CgfYzw50swq','zgvZyW','mtaZmtiWmerWz1PJAa','y2HPBgrYzw4','otuZmti3mLPNz3HkBq'];_0x2651=function(){return _0x2d9fb2;};return _0x2651();}
|
package/package.json
CHANGED
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="vm-header">
|
|
3
|
-
<header class="vm-header__bar">
|
|
4
|
-
<div class="vm-header__tools">
|
|
5
|
-
<button
|
|
6
|
-
v-if="browser.isMini"
|
|
7
|
-
type="button"
|
|
8
|
-
class="vm-header__icon-btn"
|
|
9
|
-
title="菜单"
|
|
10
|
-
@click="app.setMobileOpen(true)"
|
|
11
|
-
>
|
|
12
|
-
<i class="ri-menu-line" />
|
|
13
|
-
</button>
|
|
14
|
-
<button
|
|
15
|
-
v-else
|
|
16
|
-
type="button"
|
|
17
|
-
class="vm-header__icon-btn"
|
|
18
|
-
title="折叠侧栏"
|
|
19
|
-
@click="app.toggleSidebarFold()"
|
|
20
|
-
>
|
|
21
|
-
<i :class="app.sidebarFold ? 'ri-menu-unfold-line' : 'ri-menu-fold-line'" />
|
|
22
|
-
</button>
|
|
23
|
-
<button
|
|
24
|
-
type="button"
|
|
25
|
-
class="vm-header__icon-btn"
|
|
26
|
-
title="上一页"
|
|
27
|
-
@click="goBack"
|
|
28
|
-
>
|
|
29
|
-
<i class="ri-arrow-go-back-line" />
|
|
30
|
-
</button>
|
|
31
|
-
<button
|
|
32
|
-
type="button"
|
|
33
|
-
class="vm-header__icon-btn"
|
|
34
|
-
title="刷新页面"
|
|
35
|
-
@click="reloadPage"
|
|
36
|
-
>
|
|
37
|
-
<i class="ri-refresh-line" />
|
|
38
|
-
</button>
|
|
39
|
-
<button
|
|
40
|
-
type="button"
|
|
41
|
-
class="vm-header__icon-btn"
|
|
42
|
-
title="首页"
|
|
43
|
-
@click="goHome"
|
|
44
|
-
>
|
|
45
|
-
<i class="ri-home-4-line" />
|
|
46
|
-
</button>
|
|
47
|
-
|
|
48
|
-
<!-- 移动端不显示多页签,避免挤占工具栏 -->
|
|
49
|
-
<vm-tags-view v-if="!browser.isMini" />
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div class="vm-header__right">
|
|
53
|
-
<button
|
|
54
|
-
type="button"
|
|
55
|
-
class="vm-header__icon-btn"
|
|
56
|
-
:title="theme.themeId === 'dark' ? locale.t('header.themeLight', '浅色') : locale.t('header.themeDark', '深色')"
|
|
57
|
-
@click="toggleTheme"
|
|
58
|
-
>
|
|
59
|
-
<i :class="theme.themeId === 'dark' ? 'ri-sun-line' : 'ri-moon-line'" />
|
|
60
|
-
</button>
|
|
61
|
-
|
|
62
|
-
<DropdownMenu :modal="false">
|
|
63
|
-
<DropdownMenuTrigger as-child>
|
|
64
|
-
<button
|
|
65
|
-
type="button"
|
|
66
|
-
class="vm-header__icon-btn vm-header__locale-btn"
|
|
67
|
-
:title="locale.currentLang?.name || locale.locale"
|
|
68
|
-
:disabled="localeSwitching"
|
|
69
|
-
>
|
|
70
|
-
<span class="vm-header__flag" aria-hidden="true">
|
|
71
|
-
{{ locale.currentLang?.flag || '🏳️' }}
|
|
72
|
-
</span>
|
|
73
|
-
</button>
|
|
74
|
-
</DropdownMenuTrigger>
|
|
75
|
-
<DropdownMenuContent align="start" class="vm-header__locale-menu">
|
|
76
|
-
<DropdownMenuItem
|
|
77
|
-
v-for="lang in locale.langs"
|
|
78
|
-
:key="lang.code"
|
|
79
|
-
class="vm-header__locale-item"
|
|
80
|
-
:class="{ 'is-active': locale.locale === lang.code }"
|
|
81
|
-
:disabled="localeSwitching"
|
|
82
|
-
@click="switchLocale(lang.code)"
|
|
83
|
-
>
|
|
84
|
-
<span class="vm-header__flag" aria-hidden="true">
|
|
85
|
-
{{ lang.flag || '🏳️' }}
|
|
86
|
-
</span>
|
|
87
|
-
<span class="vm-header__locale-label">{{ lang.name }}</span>
|
|
88
|
-
</DropdownMenuItem>
|
|
89
|
-
</DropdownMenuContent>
|
|
90
|
-
</DropdownMenu>
|
|
91
|
-
|
|
92
|
-
<DropdownMenu>
|
|
93
|
-
<DropdownMenuTrigger as-child>
|
|
94
|
-
<button type="button" class="vm-header__user">
|
|
95
|
-
<span class="vm-header__avatar">
|
|
96
|
-
{{ (user.username || 'A').slice(0, 1).toUpperCase() }}
|
|
97
|
-
</span>
|
|
98
|
-
<span class="vm-header__name">{{ user.username }}</span>
|
|
99
|
-
<i class="ri-arrow-down-s-line" />
|
|
100
|
-
</button>
|
|
101
|
-
</DropdownMenuTrigger>
|
|
102
|
-
<DropdownMenuContent align="end" class="w-44">
|
|
103
|
-
<DropdownMenuLabel class="text-xs font-normal text-muted-foreground">
|
|
104
|
-
{{ user.username }}
|
|
105
|
-
</DropdownMenuLabel>
|
|
106
|
-
<DropdownMenuSeparator />
|
|
107
|
-
<DropdownMenuItem
|
|
108
|
-
class="text-xs"
|
|
109
|
-
:disabled="loggingOut"
|
|
110
|
-
@click="logout"
|
|
111
|
-
>
|
|
112
|
-
<i class="ri-logout-box-r-line" />
|
|
113
|
-
{{
|
|
114
|
-
loggingOut
|
|
115
|
-
? '退出中…'
|
|
116
|
-
: locale.t('header.logout', '退出登录')
|
|
117
|
-
}}
|
|
118
|
-
</DropdownMenuItem>
|
|
119
|
-
</DropdownMenuContent>
|
|
120
|
-
</DropdownMenu>
|
|
121
|
-
</div>
|
|
122
|
-
</header>
|
|
123
|
-
</div>
|
|
124
|
-
</template>
|
|
125
|
-
|
|
126
|
-
<script setup lang="ts">
|
|
127
|
-
import { api } from '../../api/client'
|
|
128
|
-
import { getAdminShellHooks } from '../../lib/shell'
|
|
129
|
-
import { useThemeStore } from '../../stores/theme'
|
|
130
|
-
import { useLocaleStore } from '../../stores/locale'
|
|
131
|
-
|
|
132
|
-
defineOptions({ name: 'vm-app-header' })
|
|
133
|
-
|
|
134
|
-
const app = useAppStore()
|
|
135
|
-
const theme = useThemeStore()
|
|
136
|
-
const locale = useLocaleStore()
|
|
137
|
-
const user = useUserStore()
|
|
138
|
-
const tags = useTagsStore()
|
|
139
|
-
const router = useRouter()
|
|
140
|
-
const { browser } = useBrowser()
|
|
141
|
-
|
|
142
|
-
const loggingOut = ref(false)
|
|
143
|
-
const localeSwitching = ref(false)
|
|
144
|
-
|
|
145
|
-
async function switchLocale(code: string) {
|
|
146
|
-
if (localeSwitching.value) return
|
|
147
|
-
localeSwitching.value = true
|
|
148
|
-
try {
|
|
149
|
-
await locale.setLocale(code)
|
|
150
|
-
} finally {
|
|
151
|
-
localeSwitching.value = false
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
async function logout() {
|
|
156
|
-
if (loggingOut.value) return
|
|
157
|
-
loggingOut.value = true
|
|
158
|
-
try {
|
|
159
|
-
await api.logout()
|
|
160
|
-
} finally {
|
|
161
|
-
const hooks = getAdminShellHooks()
|
|
162
|
-
await hooks.onLogoutCleanup?.()
|
|
163
|
-
user.logout()
|
|
164
|
-
tags.clear()
|
|
165
|
-
hooks.resetMenuRoutes?.()
|
|
166
|
-
// 硬跳转:卸掉 Layout 与动态路由残留,避免 URL 已是 /login 仍停在壳层
|
|
167
|
-
location.href = '/login'
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function toggleTheme() {
|
|
172
|
-
theme.setTheme(theme.themeId === 'dark' ? 'light' : 'dark')
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
function goBack() {
|
|
176
|
-
if (window.history.length > 1) router.back()
|
|
177
|
-
else void router.push('/')
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
function reloadPage() {
|
|
181
|
-
void app.reloadView()
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
function goHome() {
|
|
185
|
-
void router.push('/')
|
|
186
|
-
}
|
|
187
|
-
</script>
|
|
188
|
-
|
|
189
|
-
<style lang="scss" scoped>
|
|
190
|
-
.vm-header {
|
|
191
|
-
flex-shrink: 0;
|
|
192
|
-
/* 顶栏只要上边距,贴紧下方内容区(不要下边距) */
|
|
193
|
-
margin: 12px 0 0;
|
|
194
|
-
background: color-mix(in srgb, var(--background) 88%, transparent);
|
|
195
|
-
backdrop-filter: blur(10px);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.vm-header__bar {
|
|
199
|
-
display: flex;
|
|
200
|
-
/* 与按钮/Tab 同高,避免顶栏底部多出一截被当成「上边距」 */
|
|
201
|
-
height: 32px;
|
|
202
|
-
align-items: center;
|
|
203
|
-
justify-content: space-between;
|
|
204
|
-
gap: 12px;
|
|
205
|
-
/* 左右与内容区 --vm-gutter 对齐 */
|
|
206
|
-
padding: 0 12px;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
.vm-header__tools {
|
|
210
|
-
display: flex;
|
|
211
|
-
min-width: 0;
|
|
212
|
-
flex: 1;
|
|
213
|
-
align-items: center;
|
|
214
|
-
gap: 4px;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
.vm-header__right {
|
|
218
|
-
display: flex;
|
|
219
|
-
flex-shrink: 0;
|
|
220
|
-
align-items: center;
|
|
221
|
-
gap: 4px;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
.vm-header__icon-btn {
|
|
225
|
-
display: inline-flex;
|
|
226
|
-
width: 32px;
|
|
227
|
-
height: 32px;
|
|
228
|
-
flex-shrink: 0;
|
|
229
|
-
align-items: center;
|
|
230
|
-
justify-content: center;
|
|
231
|
-
border: none;
|
|
232
|
-
border-radius: 10px;
|
|
233
|
-
background: var(--muted);
|
|
234
|
-
color: var(--foreground);
|
|
235
|
-
font-size: 16px;
|
|
236
|
-
cursor: pointer;
|
|
237
|
-
transition: background 0.15s ease, color 0.15s ease;
|
|
238
|
-
|
|
239
|
-
&:hover {
|
|
240
|
-
background: color-mix(in srgb, var(--muted) 70%, var(--foreground) 8%);
|
|
241
|
-
color: var(--foreground);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
&:active {
|
|
245
|
-
background: color-mix(in srgb, var(--muted) 45%, var(--foreground) 18%);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
.vm-header__locale-btn {
|
|
250
|
-
&:disabled {
|
|
251
|
-
opacity: 0.6;
|
|
252
|
-
cursor: not-allowed;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.vm-header__locale-menu {
|
|
257
|
-
min-width: 0 !important;
|
|
258
|
-
width: max-content;
|
|
259
|
-
max-width: 160px;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
.vm-header__flag {
|
|
263
|
-
font-size: 18px;
|
|
264
|
-
line-height: 1;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
.vm-header__locale-item {
|
|
268
|
-
display: flex;
|
|
269
|
-
align-items: center;
|
|
270
|
-
gap: 8px;
|
|
271
|
-
font-size: 12px;
|
|
272
|
-
|
|
273
|
-
&.is-active {
|
|
274
|
-
background: color-mix(in srgb, var(--brand) 14%, transparent);
|
|
275
|
-
color: var(--brand);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
&.is-active:focus,
|
|
279
|
-
&.is-active:hover {
|
|
280
|
-
background: color-mix(in srgb, var(--brand) 20%, transparent);
|
|
281
|
-
color: var(--brand);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
.vm-header__locale-label {
|
|
286
|
-
flex: 1;
|
|
287
|
-
min-width: 0;
|
|
288
|
-
overflow: hidden;
|
|
289
|
-
text-overflow: ellipsis;
|
|
290
|
-
white-space: nowrap;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
.vm-header__user {
|
|
294
|
-
display: inline-flex;
|
|
295
|
-
height: 32px;
|
|
296
|
-
align-items: center;
|
|
297
|
-
gap: 8px;
|
|
298
|
-
padding: 0 8px 0 0;
|
|
299
|
-
border: none;
|
|
300
|
-
border-radius: 999px;
|
|
301
|
-
background: transparent;
|
|
302
|
-
color: var(--foreground);
|
|
303
|
-
cursor: pointer;
|
|
304
|
-
transition: background 0.15s ease;
|
|
305
|
-
|
|
306
|
-
&:hover {
|
|
307
|
-
background: var(--muted);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
> i {
|
|
311
|
-
font-size: 14px;
|
|
312
|
-
opacity: 0.45;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
.vm-header__avatar {
|
|
317
|
-
display: inline-flex;
|
|
318
|
-
width: 32px;
|
|
319
|
-
height: 32px;
|
|
320
|
-
align-items: center;
|
|
321
|
-
justify-content: center;
|
|
322
|
-
border-radius: 50%;
|
|
323
|
-
background: var(--brand-soft);
|
|
324
|
-
color: var(--brand);
|
|
325
|
-
font-size: 12px;
|
|
326
|
-
font-weight: 700;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
.vm-header__name {
|
|
330
|
-
display: none;
|
|
331
|
-
max-width: 100px;
|
|
332
|
-
overflow: hidden;
|
|
333
|
-
text-overflow: ellipsis;
|
|
334
|
-
white-space: nowrap;
|
|
335
|
-
font-size: 13px;
|
|
336
|
-
|
|
337
|
-
@media (min-width: 640px) {
|
|
338
|
-
display: inline;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
</style>
|