feat: 2023主题适配新登录模式
This commit is contained in:
@@ -11,6 +11,7 @@ import time
|
|||||||
from core.settings import settings
|
from core.settings import settings
|
||||||
from apps.admin.services import FileService, ConfigService, LocalFileService
|
from apps.admin.services import FileService, ConfigService, LocalFileService
|
||||||
|
|
||||||
|
|
||||||
def create_token(data: dict, expires_in: int = 3600 * 24) -> str:
|
def create_token(data: dict, expires_in: int = 3600 * 24) -> str:
|
||||||
"""
|
"""
|
||||||
创建JWT token
|
创建JWT token
|
||||||
@@ -32,6 +33,7 @@ def create_token(data: dict, expires_in: int = 3600 * 24) -> str:
|
|||||||
|
|
||||||
return f"{header}.{payload}.{signature}"
|
return f"{header}.{payload}.{signature}"
|
||||||
|
|
||||||
|
|
||||||
def verify_token(token: str) -> dict:
|
def verify_token(token: str) -> dict:
|
||||||
"""
|
"""
|
||||||
验证JWT token
|
验证JWT token
|
||||||
@@ -63,6 +65,7 @@ def verify_token(token: str) -> dict:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError(f"token验证失败: {str(e)}")
|
raise ValueError(f"token验证失败: {str(e)}")
|
||||||
|
|
||||||
|
|
||||||
async def admin_required(authorization: str = Header(default=None), request: Request = None):
|
async def admin_required(authorization: str = Header(default=None), request: Request = None):
|
||||||
"""
|
"""
|
||||||
验证管理员权限
|
验证管理员权限
|
||||||
@@ -71,9 +74,12 @@ async def admin_required(authorization: str = Header(default=None), request: Req
|
|||||||
if not authorization or not authorization.startswith("Bearer "):
|
if not authorization or not authorization.startswith("Bearer "):
|
||||||
is_admin = False
|
is_admin = False
|
||||||
else:
|
else:
|
||||||
|
try:
|
||||||
token = authorization.split(" ")[1]
|
token = authorization.split(" ")[1]
|
||||||
payload = verify_token(token)
|
payload = verify_token(token)
|
||||||
is_admin = payload.get("is_admin", False)
|
is_admin = payload.get("is_admin", False)
|
||||||
|
except ValueError as e:
|
||||||
|
is_admin = False
|
||||||
|
|
||||||
if request.url.path.startswith('/share/'):
|
if request.url.path.startswith('/share/'):
|
||||||
if not settings.openUpload and not is_admin:
|
if not settings.openUpload and not is_admin:
|
||||||
@@ -85,6 +91,7 @@ async def admin_required(authorization: str = Header(default=None), request: Req
|
|||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
raise HTTPException(status_code=401, detail=str(e))
|
raise HTTPException(status_code=401, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
async def get_file_service():
|
async def get_file_service():
|
||||||
return FileService()
|
return FileService()
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,8 @@ class ConfigService:
|
|||||||
class LocalFileService:
|
class LocalFileService:
|
||||||
async def list_files(self):
|
async def list_files(self):
|
||||||
files = []
|
files = []
|
||||||
|
if not os.path.exists(data_root / 'local'):
|
||||||
|
os.makedirs(data_root / 'local')
|
||||||
for file in os.listdir(data_root / 'local'):
|
for file in os.listdir(data_root / 'local'):
|
||||||
files.append(LocalFileClass(file))
|
files.append(LocalFileClass(file))
|
||||||
return files
|
return files
|
||||||
|
|||||||
@@ -35,6 +35,11 @@ DEFAULT_CONFIG = {
|
|||||||
'onedrive_password': '',
|
'onedrive_password': '',
|
||||||
'onedrive_root_path': 'filebox_storage',
|
'onedrive_root_path': 'filebox_storage',
|
||||||
'onedrive_proxy': 0,
|
'onedrive_proxy': 0,
|
||||||
|
'webdav_hostname': '',
|
||||||
|
'webdav_username': '',
|
||||||
|
'webdav_password': '',
|
||||||
|
'webdav_root_path': 'filebox_storage',
|
||||||
|
'webdav_proxy': 0,
|
||||||
'admin_token': 'FileCodeBox2023',
|
'admin_token': 'FileCodeBox2023',
|
||||||
'openUpload': 1,
|
'openUpload': 1,
|
||||||
'uploadSize': 1024 * 1024 * 10,
|
'uploadSize': 1024 * 1024 * 10,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB |
@@ -3,9 +3,11 @@ import {ref} from "vue";
|
|||||||
|
|
||||||
export const useAdminData = defineStore('adminData', () => {
|
export const useAdminData = defineStore('adminData', () => {
|
||||||
const adminPassword = ref(localStorage.getItem('adminPassword') || '');
|
const adminPassword = ref(localStorage.getItem('adminPassword') || '');
|
||||||
|
const isAdmin = ref(!!localStorage.getItem('adminPassword'));
|
||||||
function updateAdminPwd(pwd: string) {
|
function updateAdminPwd(pwd: string) {
|
||||||
adminPassword.value = pwd;
|
adminPassword.value = pwd;
|
||||||
|
isAdmin.value = true;
|
||||||
localStorage.setItem('adminPassword', pwd);
|
localStorage.setItem('adminPassword', pwd);
|
||||||
}
|
}
|
||||||
return { adminPassword,updateAdminPwd };
|
return { adminPassword,updateAdminPwd,isAdmin };
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const instance = axios.create({
|
|||||||
instance.interceptors.request.use(
|
instance.interceptors.request.use(
|
||||||
(config: any) => {
|
(config: any) => {
|
||||||
config.headers= {
|
config.headers= {
|
||||||
'Authorization': localStorage.getItem('adminPassword') || '',
|
'Authorization': 'Bearer '+ localStorage.getItem('adminPassword') || '',
|
||||||
}
|
}
|
||||||
return config;
|
return config;
|
||||||
});
|
});
|
||||||
@@ -24,6 +24,7 @@ instance.interceptors.response.use(
|
|||||||
return Promise.reject(response.data);
|
return Promise.reject(response.data);
|
||||||
}
|
}
|
||||||
}, (error:any) => {
|
}, (error:any) => {
|
||||||
|
localStorage.clear()
|
||||||
ElMessage.error(error.response.data.detail);
|
ElMessage.error(error.response.data.detail);
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-container v-if="isLogin" style="height: 100vh;width: 100vw;position: relative;user-select: none">
|
<el-container v-if="adminData.isAdmin" style="height: 100vh;width: 100vw;position: relative;user-select: none">
|
||||||
<el-header>
|
<el-header>
|
||||||
<el-menu mode="horizontal" router :default-active="route.path">
|
<el-menu mode="horizontal" router :default-active="route.path">
|
||||||
<el-menu-item v-for="menu in menus" :index="menu.path" :key="menu.path">{{menu.name}}</el-menu-item>
|
<el-menu-item v-for="menu in menus" :index="menu.path" :key="menu.path">{{menu.name}}</el-menu-item>
|
||||||
<el-menu-item style="float: right" @click="toggleDark(!isDark)">{{ t('admin.menu.color') }}</el-menu-item>
|
<el-menu-item style="float: right" @click="toggleDark(!isDark)">{{ t('admin.menu.color') }}</el-menu-item>
|
||||||
<el-menu-item style="float: right" @click="adminData.updateAdminPwd('');isLogin=false">{{ t('admin.menu.signout') }}</el-menu-item>
|
<el-menu-item style="float: right" @click="logout()">{{ t('admin.menu.signout') }}</el-menu-item>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main>
|
<el-main>
|
||||||
@@ -29,7 +29,6 @@
|
|||||||
import { useDark, useToggle } from '@vueuse/core';
|
import { useDark, useToggle } from '@vueuse/core';
|
||||||
import { ref } from "vue";
|
import { ref } from "vue";
|
||||||
const isDark = useDark()
|
const isDark = useDark()
|
||||||
const isLogin = ref(false);
|
|
||||||
const toggleDark = useToggle(isDark)
|
const toggleDark = useToggle(isDark)
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
import { useAdminData } from "@/stores/adminData";
|
import { useAdminData } from "@/stores/adminData";
|
||||||
@@ -71,19 +70,23 @@ const refreshLoginStatus = () => {
|
|||||||
request({
|
request({
|
||||||
url: '/admin/login',
|
url: '/admin/login',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
|
data: {
|
||||||
|
password: adminData.adminPassword,
|
||||||
|
},
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
isLogin.value = true;
|
|
||||||
adminData.updateAdminPwd(res.detail.token);
|
adminData.updateAdminPwd(res.detail.token);
|
||||||
ElMessage.success(t('admin.login.loginSuccess'));
|
ElMessage.success(t('admin.login.loginSuccess'));
|
||||||
} else {
|
} else {
|
||||||
|
localStorage.clear();
|
||||||
ElMessage.error(t('admin.login.loginError'));
|
ElMessage.error(t('admin.login.loginError'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
if (adminData.adminPassword !== '') {
|
const logout = () => {
|
||||||
refreshLoginStatus();
|
localStorage.clear();
|
||||||
}
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
</style>
|
</style>
|
||||||
@@ -1 +1 @@
|
|||||||
import{d as s,a8 as n,Y as c,W as e,a1 as r,$ as a,g as o,o as i}from"./index-BdLVKrzu.js";const l={style:{"text-align":"center"}},u={style:{color:"#333"},href:"https://github.com/vastsa/FileCodeBox"},f=s({__name:"AboutView",setup(_){const{t}=n();return(m,d)=>(i(),c("main",l,[e("span",null,[r(a(o(t)("admin.about.source1"))+" ",1),e("em",null,[e("a",u,a(o(t)("admin.about.source2")),1)])])]))}});export{f as default};
|
import{d as s,a8 as n,Y as c,W as e,a1 as r,$ as a,g as o,o as i}from"./index-CVeK0dPI.js";const l={style:{"text-align":"center"}},u={style:{color:"#333"},href:"https://github.com/vastsa/FileCodeBox"},f=s({__name:"AboutView",setup(_){const{t}=n();return(m,d)=>(i(),c("main",l,[e("span",null,[r(a(o(t)("admin.about.source1"))+" ",1),e("em",null,[e("a",u,a(o(t)("admin.about.source2")),1)])])]))}});export{f as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
|||||||
import{c as y,k as F,a as l,m as C,s as _,g as v,n as N,o as E,h as K,p as j,q as u,r as B,e as R,b as q,f as W,j as Y,S as H,t as J}from"./el-popper-CiRxPHiQ.js";import{bs as S,b2 as x,a$ as Q,b5 as V,bt as X}from"./index-BdLVKrzu.js";import{v as Z}from"./el-button-CDy8odqo.js";function z(e,r){for(var n=-1,s=e==null?0:e.length;++n<s&&r(e[n],n,e)!==!1;);return e}function k(e,r){return e&&y(r,F(r),e)}function ee(e,r){return e&&y(r,l(r),e)}function re(e,r){return y(e,C(e),r)}var te=Object.getOwnPropertySymbols,L=te?function(e){for(var r=[];e;)Z(r,C(e)),e=v(e);return r}:_;function ne(e,r){return y(e,L(e),r)}function ae(e){return N(e,l,L)}var oe=Object.prototype,se=oe.hasOwnProperty;function ce(e){var r=e.length,n=new e.constructor(r);return r&&typeof e[0]=="string"&&se.call(e,"index")&&(n.index=e.index,n.input=e.input),n}function ie(e,r){var n=r?E(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var be=/\w*$/;function fe(e){var r=new e.constructor(e.source,be.exec(e));return r.lastIndex=e.lastIndex,r}var O=S?S.prototype:void 0,w=O?O.valueOf:void 0;function ge(e){return w?Object(w.call(e)):{}}var ue="[object Boolean]",ye="[object Date]",Te="[object Map]",le="[object Number]",je="[object RegExp]",pe="[object Set]",Ae="[object String]",me="[object Symbol]",de="[object ArrayBuffer]",$e="[object DataView]",Se="[object Float32Array]",Oe="[object Float64Array]",we="[object Int8Array]",Ie="[object Int16Array]",he="[object Int32Array]",Fe="[object Uint8Array]",Ce="[object Uint8ClampedArray]",Ee="[object Uint16Array]",Be="[object Uint32Array]";function xe(e,r,n){var s=e.constructor;switch(r){case de:return E(e);case ue:case ye:return new s(+e);case $e:return ie(e,n);case Se:case Oe:case we:case Ie:case he:case Fe:case Ce:case Ee:case Be:return K(e,n);case Te:return new s;case le:case Ae:return new s(e);case je:return fe(e);case pe:return new s;case me:return ge(e)}}var Le="[object Map]";function Me(e){return x(e)&&j(e)==Le}var I=u&&u.isMap,Ue=I?B(I):Me,Pe="[object Set]";function De(e){return x(e)&&j(e)==Pe}var h=u&&u.isSet,Ge=h?B(h):De,_e=1,ve=2,Ne=4,M="[object Arguments]",Ke="[object Array]",Re="[object Boolean]",qe="[object Date]",We="[object Error]",U="[object Function]",Ye="[object GeneratorFunction]",He="[object Map]",Je="[object Number]",P="[object Object]",Qe="[object RegExp]",Ve="[object Set]",Xe="[object String]",Ze="[object Symbol]",ze="[object WeakMap]",ke="[object ArrayBuffer]",er="[object DataView]",rr="[object Float32Array]",tr="[object Float64Array]",nr="[object Int8Array]",ar="[object Int16Array]",or="[object Int32Array]",sr="[object Uint8Array]",cr="[object Uint8ClampedArray]",ir="[object Uint16Array]",br="[object Uint32Array]",t={};t[M]=t[Ke]=t[ke]=t[er]=t[Re]=t[qe]=t[rr]=t[tr]=t[nr]=t[ar]=t[or]=t[He]=t[Je]=t[P]=t[Qe]=t[Ve]=t[Xe]=t[Ze]=t[sr]=t[cr]=t[ir]=t[br]=!0;t[We]=t[U]=t[ze]=!1;function T(e,r,n,s,p,c){var a,f=r&_e,g=r&ve,D=r&Ne;if(a!==void 0)return a;if(!Q(e))return e;var A=V(e);if(A){if(a=ce(e),!f)return R(e,a)}else{var b=j(e),m=b==U||b==Ye;if(q(e))return W(e,f);if(b==P||b==M||m&&!p){if(a=g||m?{}:Y(e),!f)return g?ne(e,ee(a,e)):re(e,k(a,e))}else{if(!t[b])return p?e:{};a=xe(e,b,f)}}c||(c=new H);var d=c.get(e);if(d)return d;c.set(e,a),Ge(e)?e.forEach(function(o){a.add(T(o,r,n,o,e,c))}):Ue(e)&&e.forEach(function(o,i){a.set(i,T(o,r,n,i,e,c))});var G=D?g?ae:J:g?l:F,$=A?void 0:G(e);return z($||e,function(o,i){$&&(i=o,o=e[i]),X(a,i,T(o,r,n,i,e,c))}),a}export{T as b};
|
import{c as y,k as F,a as l,m as C,s as _,g as v,n as N,o as E,h as K,p as j,q as u,r as B,e as R,b as q,f as W,j as Y,S as H,t as J}from"./el-popper-CwdMC8HJ.js";import{bs as S,b2 as x,a$ as Q,b5 as V,bt as X}from"./index-CVeK0dPI.js";import{v as Z}from"./el-button-CIFg-IwZ.js";function z(e,r){for(var n=-1,s=e==null?0:e.length;++n<s&&r(e[n],n,e)!==!1;);return e}function k(e,r){return e&&y(r,F(r),e)}function ee(e,r){return e&&y(r,l(r),e)}function re(e,r){return y(e,C(e),r)}var te=Object.getOwnPropertySymbols,L=te?function(e){for(var r=[];e;)Z(r,C(e)),e=v(e);return r}:_;function ne(e,r){return y(e,L(e),r)}function ae(e){return N(e,l,L)}var oe=Object.prototype,se=oe.hasOwnProperty;function ce(e){var r=e.length,n=new e.constructor(r);return r&&typeof e[0]=="string"&&se.call(e,"index")&&(n.index=e.index,n.input=e.input),n}function ie(e,r){var n=r?E(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var be=/\w*$/;function fe(e){var r=new e.constructor(e.source,be.exec(e));return r.lastIndex=e.lastIndex,r}var O=S?S.prototype:void 0,w=O?O.valueOf:void 0;function ge(e){return w?Object(w.call(e)):{}}var ue="[object Boolean]",ye="[object Date]",Te="[object Map]",le="[object Number]",je="[object RegExp]",pe="[object Set]",Ae="[object String]",me="[object Symbol]",de="[object ArrayBuffer]",$e="[object DataView]",Se="[object Float32Array]",Oe="[object Float64Array]",we="[object Int8Array]",Ie="[object Int16Array]",he="[object Int32Array]",Fe="[object Uint8Array]",Ce="[object Uint8ClampedArray]",Ee="[object Uint16Array]",Be="[object Uint32Array]";function xe(e,r,n){var s=e.constructor;switch(r){case de:return E(e);case ue:case ye:return new s(+e);case $e:return ie(e,n);case Se:case Oe:case we:case Ie:case he:case Fe:case Ce:case Ee:case Be:return K(e,n);case Te:return new s;case le:case Ae:return new s(e);case je:return fe(e);case pe:return new s;case me:return ge(e)}}var Le="[object Map]";function Me(e){return x(e)&&j(e)==Le}var I=u&&u.isMap,Ue=I?B(I):Me,Pe="[object Set]";function De(e){return x(e)&&j(e)==Pe}var h=u&&u.isSet,Ge=h?B(h):De,_e=1,ve=2,Ne=4,M="[object Arguments]",Ke="[object Array]",Re="[object Boolean]",qe="[object Date]",We="[object Error]",U="[object Function]",Ye="[object GeneratorFunction]",He="[object Map]",Je="[object Number]",P="[object Object]",Qe="[object RegExp]",Ve="[object Set]",Xe="[object String]",Ze="[object Symbol]",ze="[object WeakMap]",ke="[object ArrayBuffer]",er="[object DataView]",rr="[object Float32Array]",tr="[object Float64Array]",nr="[object Int8Array]",ar="[object Int16Array]",or="[object Int32Array]",sr="[object Uint8Array]",cr="[object Uint8ClampedArray]",ir="[object Uint16Array]",br="[object Uint32Array]",t={};t[M]=t[Ke]=t[ke]=t[er]=t[Re]=t[qe]=t[rr]=t[tr]=t[nr]=t[ar]=t[or]=t[He]=t[Je]=t[P]=t[Qe]=t[Ve]=t[Xe]=t[Ze]=t[sr]=t[cr]=t[ir]=t[br]=!0;t[We]=t[U]=t[ze]=!1;function T(e,r,n,s,p,c){var a,f=r&_e,g=r&ve,D=r&Ne;if(a!==void 0)return a;if(!Q(e))return e;var A=V(e);if(A){if(a=ce(e),!f)return R(e,a)}else{var b=j(e),m=b==U||b==Ye;if(q(e))return W(e,f);if(b==P||b==M||m&&!p){if(a=g||m?{}:Y(e),!f)return g?ne(e,ee(a,e)):re(e,k(a,e))}else{if(!t[b])return p?e:{};a=xe(e,b,f)}}c||(c=new H);var d=c.get(e);if(d)return d;c.set(e,a),Ge(e)?e.forEach(function(o){a.add(T(o,r,n,o,e,c))}):Ue(e)&&e.forEach(function(o,i){a.set(i,T(o,r,n,i,e,c))});var G=D?g?ae:J:g?l:F,$=A?void 0:G(e);return z($||e,function(o,i){$&&(i=o,o=e[i]),X(a,i,T(o,r,n,i,e,c))}),a}export{T as b};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{G as S,b as M,c as V,d as B,u as W,a as P,o as p,Y as $,W as m,r as v,f as i,g as l,e as h,w as g,C as b,as as k,X as C,M as w,Z as T,h as _,T as H,_ as I,j as R}from"./index-BdLVKrzu.js";import{c as j}from"./el-button-CDy8odqo.js";let u;const A=o=>{var a;if(!S)return 0;if(u!==void 0)return u;const t=document.createElement("div");t.className=`${o}-scrollbar__wrap`,t.style.visibility="hidden",t.style.width="100px",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t);const n=t.offsetWidth;t.style.overflow="scroll";const e=document.createElement("div");e.style.width="100%",t.appendChild(e);const c=e.offsetWidth;return(a=t.parentNode)==null||a.removeChild(t),u=n-c,u};function D(o,a){if(!S)return;if(!a){o.scrollTop=0;return}const t=[];let n=a.offsetParent;for(;n!==null&&o!==n&&o.contains(n);)t.push(n),n=n.offsetParent;const e=a.offsetTop+t.reduce((f,s)=>f+s.offsetTop,0),c=e+a.offsetHeight,r=o.scrollTop,d=r+o.clientHeight;e<r?o.scrollTop=e:c>d&&(o.scrollTop=c-o.clientHeight)}const F=M({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:V},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),G={close:o=>o instanceof MouseEvent,click:o=>o instanceof MouseEvent},K=B({name:"ElTag"}),X=B({...K,props:F,emits:G,setup(o,{emit:a}){const t=o,n=j(),e=W("tag"),c=P(()=>{const{type:s,hit:y,effect:E,closable:N,round:z}=t;return[e.b(),e.is("closable",N),e.m(s||"primary"),e.m(n.value),e.m(E),e.is("hit",y),e.is("round",z)]}),r=s=>{a("close",s)},d=s=>{a("click",s)},f=s=>{s.component.subTree.component.bum=null};return(s,y)=>s.disableTransitions?(p(),$("span",{key:0,class:i(l(c)),style:_({backgroundColor:s.color}),onClick:d},[m("span",{class:i(l(e).e("content"))},[v(s.$slots,"default")],2),s.closable?(p(),h(l(w),{key:0,class:i(l(e).e("close")),onClick:C(r,["stop"])},{default:g(()=>[b(l(k))]),_:1},8,["class","onClick"])):T("v-if",!0)],6)):(p(),h(H,{key:1,name:`${l(e).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:f},{default:g(()=>[m("span",{class:i(l(c)),style:_({backgroundColor:s.color}),onClick:d},[m("span",{class:i(l(e).e("content"))},[v(s.$slots,"default")],2),s.closable?(p(),h(l(w),{key:0,class:i(l(e).e("close")),onClick:C(r,["stop"])},{default:g(()=>[b(l(k))]),_:1},8,["class","onClick"])):T("v-if",!0)],6)]),_:3},8,["name"]))}});var Y=I(X,[["__file","tag.vue"]]);const J=R(Y);export{J as E,A as g,D as s,F as t};
|
import{G as S,b as M,c as V,d as B,u as W,a as P,o as p,Y as $,W as m,r as v,f as i,g as l,e as h,w as g,C as b,as as k,X as C,M as w,Z as T,h as _,T as H,_ as I,j as R}from"./index-CVeK0dPI.js";import{c as j}from"./el-button-CIFg-IwZ.js";let u;const A=o=>{var a;if(!S)return 0;if(u!==void 0)return u;const t=document.createElement("div");t.className=`${o}-scrollbar__wrap`,t.style.visibility="hidden",t.style.width="100px",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t);const n=t.offsetWidth;t.style.overflow="scroll";const e=document.createElement("div");e.style.width="100%",t.appendChild(e);const c=e.offsetWidth;return(a=t.parentNode)==null||a.removeChild(t),u=n-c,u};function D(o,a){if(!S)return;if(!a){o.scrollTop=0;return}const t=[];let n=a.offsetParent;for(;n!==null&&o!==n&&o.contains(n);)t.push(n),n=n.offsetParent;const e=a.offsetTop+t.reduce((f,s)=>f+s.offsetTop,0),c=e+a.offsetHeight,r=o.scrollTop,d=r+o.clientHeight;e<r?o.scrollTop=e:c>d&&(o.scrollTop=c-o.clientHeight)}const F=M({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:V},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),G={close:o=>o instanceof MouseEvent,click:o=>o instanceof MouseEvent},K=B({name:"ElTag"}),X=B({...K,props:F,emits:G,setup(o,{emit:a}){const t=o,n=j(),e=W("tag"),c=P(()=>{const{type:s,hit:y,effect:E,closable:N,round:z}=t;return[e.b(),e.is("closable",N),e.m(s||"primary"),e.m(n.value),e.m(E),e.is("hit",y),e.is("round",z)]}),r=s=>{a("close",s)},d=s=>{a("click",s)},f=s=>{s.component.subTree.component.bum=null};return(s,y)=>s.disableTransitions?(p(),$("span",{key:0,class:i(l(c)),style:_({backgroundColor:s.color}),onClick:d},[m("span",{class:i(l(e).e("content"))},[v(s.$slots,"default")],2),s.closable?(p(),h(l(w),{key:0,class:i(l(e).e("close")),onClick:C(r,["stop"])},{default:g(()=>[b(l(k))]),_:1},8,["class","onClick"])):T("v-if",!0)],6)):(p(),h(H,{key:1,name:`${l(e).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:f},{default:g(()=>[m("span",{class:i(l(c)),style:_({backgroundColor:s.color}),onClick:d},[m("span",{class:i(l(e).e("content"))},[v(s.$slots,"default")],2),s.closable?(p(),h(l(w),{key:0,class:i(l(e).e("close")),onClick:C(r,["stop"])},{default:g(()=>[b(l(k))]),_:1},8,["class","onClick"])):T("v-if",!0)],6)]),_:3},8,["name"]))}});var Y=I(X,[["__file","tag.vue"]]);const J=R(Y);export{J as E,A as g,D as s,F as t};
|
||||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
|||||||
import{al as A,a2 as N}from"./index-BdLVKrzu.js";var o=(E=>(E[E.TEXT=1]="TEXT",E[E.CLASS=2]="CLASS",E[E.STYLE=4]="STYLE",E[E.PROPS=8]="PROPS",E[E.FULL_PROPS=16]="FULL_PROPS",E[E.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",E[E.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",E[E.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",E[E.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",E[E.NEED_PATCH=512]="NEED_PATCH",E[E.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",E[E.HOISTED=-1]="HOISTED",E[E.BAIL=-2]="BAIL",E))(o||{});const e=E=>{const _=A(E)?E:[E],S=[];return _.forEach(T=>{var r;A(T)?S.push(...e(T)):N(T)&&A(T.children)?S.push(...e(T.children)):(S.push(T),N(T)&&((r=T.component)!=null&&r.subTree)&&S.push(...e(T.component.subTree)))}),S};export{o as P,e as f};
|
import{al as A,a2 as N}from"./index-CVeK0dPI.js";var o=(E=>(E[E.TEXT=1]="TEXT",E[E.CLASS=2]="CLASS",E[E.STYLE=4]="STYLE",E[E.PROPS=8]="PROPS",E[E.FULL_PROPS=16]="FULL_PROPS",E[E.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",E[E.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",E[E.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",E[E.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",E[E.NEED_PATCH=512]="NEED_PATCH",E[E.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",E[E.HOISTED=-1]="HOISTED",E[E.BAIL=-2]="BAIL",E))(o||{});const e=E=>{const _=A(E)?E:[E],S=[];return _.forEach(T=>{var r;A(T)?S.push(...e(T)):N(T)&&A(T.children)?S.push(...e(T.children)):(S.push(T),N(T)&&((r=T.component)!=null&&r.subTree)&&S.push(...e(T.component.subTree)))}),S};export{o as P,e as f};
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
<meta name="keywords" content="{{keywords}}" />
|
<meta name="keywords" content="{{keywords}}" />
|
||||||
<meta name="generator" content="FileCodeBox2.1" />
|
<meta name="generator" content="FileCodeBox2.1" />
|
||||||
<title>{{title}}</title>
|
<title>{{title}}</title>
|
||||||
<script type="module" crossorigin src="/assets/index-BdLVKrzu.js"></script>
|
<script type="module" crossorigin src="/assets/index-CVeK0dPI.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-DAmnn45j.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-DAmnn45j.css">
|
||||||
</head>
|
</head>
|
||||||
<body style="background: url('{{background}}') no-repeat center center fixed;background-size: cover;">
|
<body style="background: url('{{background}}') no-repeat center center fixed;background-size: cover;">
|
||||||
|
|||||||
Reference in New Issue
Block a user