邮件列表加载动画优化和打包拆分

This commit is contained in:
eoao
2025-08-26 23:10:55 +08:00
parent de0bb288ec
commit 01cef2355d
119 changed files with 732 additions and 330 deletions

View File

@@ -12,13 +12,17 @@
if (uiStoreStr) {
const uiStore = JSON.parse(uiStoreStr)
const root = document.documentElement
root.style.background = uiStore.dark ? '#141414' : '#FFFFFF'
root.setAttribute('class', uiStore.dark ? 'dark' : '');
}
</script>
</head>
<style>
html {
background: #FFFFFF;
}
.dark {
background: #141414;
}
#loading-first {
position: fixed;
left: 0;
@@ -32,6 +36,12 @@
background: var(--el-bg-color);
}
.loading-hide {
pointer-events: none;
transition: all 200ms;
opacity: 0;
}
.loading-icon {
display: inline-flex;
align-items: center;
@@ -89,7 +99,7 @@
}
</style>
<body>
<div id="loading-first">
<div id="loading-first" >
<div class="loading-icon">
<svg class="circular" viewBox="0 0 20 20">
<g class="loading-path">

View File

@@ -18,6 +18,7 @@
"echarts": "^5.6.0",
"element-plus": "^2.9.11",
"lodash-es": "^4.17.21",
"nprogress": "^0.2.0",
"path": "^0.12.7",
"pinia": "^3.0.2",
"pinia-plugin-persistedstate": "^4.2.0",
@@ -2840,6 +2841,12 @@
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==",
"license": "BSD-3-Clause"
},
"node_modules/nprogress": {
"version": "0.2.0",
"resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz",
"integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
"license": "MIT"
},
"node_modules/nypm": {
"version": "0.6.0",
"resolved": "https://registry.npmmirror.com/nypm/-/nypm-0.6.0.tgz",

View File

@@ -20,6 +20,7 @@
"echarts": "^5.6.0",
"element-plus": "^2.9.11",
"lodash-es": "^4.17.21",
"nprogress": "^0.2.0",
"path": "^0.12.7",
"pinia": "^3.0.2",
"pinia-plugin-persistedstate": "^4.2.0",

View File

@@ -12,4 +12,4 @@ import zhCn from 'element-plus/es/locale/lang/zh-cn';
const { locale } = useI18n()
locale.value = settingStore.lang
watch(() => settingStore.lang, () => locale.value = settingStore.lang)
</script>
</script>

View File

@@ -2,10 +2,10 @@
<div class="email-container">
<div class="header-actions">
<el-checkbox
v-model="checkAll"
:indeterminate="isIndeterminate"
:disabled="!emailList.length"
@change="handleCheckAllChange"
v-model="checkAll"
:indeterminate="isIndeterminate"
:disabled="!emailList.length || loading"
@change="handleCheckAllChange"
>
</el-checkbox>
<div class="header-left" :style="'padding-left:' + actionLeft">
@@ -18,22 +18,23 @@
</div>
<div class="header-right">
<span class="email-count" v-if="total">{{$t('emailCount', {total: total})}}</span>
<span class="email-count" v-if="total">{{ $t('emailCount', {total: total}) }}</span>
<Icon v-if="showAccountIcon" class="more-icon icon" width="16" height="16" icon="akar-icons:dot-grid-fill"
@click="changeAccountShow"/>
</div>
</div>
<div ref="scroll" class="scroll">
<el-scrollbar ref="scrollbarRef" @scroll="handleScroll">
<el-scrollbar ref="scrollbarRef" style="height: 100%">
<div class="scroll-box" :infinite-scroll-immediate="false" v-infinite-scroll="loadData"
infinite-scroll-distance="600">
<div v-for="item in emailList" :key="item.emailId">
<div v-if="(skeleton && !loading)" v-for="item in emailList" :key="item.emailId">
<div class="email-row"
:data-checked="item.checked"
@click="jumpDetails(item)"
>
<el-checkbox :class=" props.type === 'all-email' ? 'all-email-checkbox' : 'checkbox'" v-model="item.checked" @click.stop></el-checkbox>
<el-checkbox :class=" props.type === 'all-email' ? 'all-email-checkbox' : 'checkbox'"
v-model="item.checked" @click.stop></el-checkbox>
<div @click.stop="starChange(item)" class="pc-star" v-if="showStar">
<Icon v-if="item.isStar" icon="fluent-color:star-16" width="20" height="20"/>
<Icon v-else icon="solar:star-line-duotone" width="18" height="18"/>
@@ -43,62 +44,33 @@
<div class="email-sender" :style=" showStatus ? 'gap: 10px;' : ''">
<div class="email-status" v-if="showStatus">
<el-tooltip v-if="item.status === 0"
effect="dark"
:content="$t('received')"
>
<el-tooltip v-if="item.status === 0" effect="dark" :content="$t('received')">
<Icon icon="ic:round-mark-email-read" style="color: #67C23A" width="20" height="20"/>
/>
</el-tooltip>
<el-tooltip v-if="item.status === 1"
effect="dark"
:content="$t('sent')"
>
<Icon icon="bi:send-arrow-up-fill" style="color: #67C23A" width="20" height="20"
/>
<el-tooltip v-if="item.status === 1" effect="dark" :content="$t('sent')">
<Icon icon="bi:send-arrow-up-fill" style="color: #67C23A" width="20" height="20"/>
</el-tooltip>
<el-tooltip v-if="item.status === 2"
effect="dark"
:content="$t('delivered')"
>
<Icon icon="bi:send-check-fill" style="color: #67C23A" width="20"
height="20"/>
<el-tooltip v-if="item.status === 2" effect="dark" :content="$t('delivered')">
<Icon icon="bi:send-check-fill" style="color: #67C23A" width="20" height="20"/>
</el-tooltip>
<el-tooltip v-if="item.status === 3"
effect="dark"
:content="$t('bounced')"
>
<Icon icon="bi:send-x-fill" style="color: #F56C6C" width="20"
height="20"/>
<el-tooltip v-if="item.status === 3" effect="dark" :content="$t('bounced')">
<Icon icon="bi:send-x-fill" style="color: #F56C6C" width="20" height="20"/>
</el-tooltip>
<el-tooltip v-if="item.status === 4"
effect="dark"
:content="$t('complained')"
>
<Icon icon="bi:send-exclamation-fill" style="color:#FBBD08" width="20"
height="20"/>
<el-tooltip v-if="item.status === 4" effect="dark" :content="$t('complained')">
<Icon icon="bi:send-exclamation-fill" style="color:#FBBD08" width="20" height="20"/>
</el-tooltip>
<el-tooltip v-if="item.status === 5"
effect="dark"
:content="$t('delayed')"
>
<Icon icon="bi:send-arrow-up-fill" style="color:#FBBD08" width="20"
height="20"/>
<el-tooltip v-if="item.status === 5" effect="dark" :content="$t('delayed')">
<Icon icon="bi:send-arrow-up-fill" style="color:#FBBD08" width="20" height="20"/>
</el-tooltip>
<el-tooltip v-if="item.status === 7"
effect="dark"
:content="$t('noRecipient')"
>
<Icon icon="ic:round-mark-email-read" style="color:#FBBD08" width="20"
height="20"/>
<el-tooltip v-if="item.status === 7" effect="dark" :content="$t('noRecipient')">
<Icon icon="ic:round-mark-email-read" style="color:#FBBD08" width="20" height="20"/>
</el-tooltip>
<div class="del-status" v-if="item.isDel">
<el-tooltip effect="dark" :content="$t('selectDeleted')">
<Icon class="icon" icon="mdi:email-remove" width="20" height="20"/>
</el-tooltip>
</div>
</div>
<div v-else></div>
<span class="name">
@@ -115,10 +87,10 @@
<div class="email-text">
<span class="email-subject">
<slot name="subject" :email="item">
{{ item.subject }}
{{ item.subject || '\u200B' }}
</slot>
</span>
<span class="email-content">{{ htmlToText(item) }}</span>
<span class="email-content">{{ htmlToText(item) || '\u200B' }}</span>
</div>
<div class="user-info" v-if="showUserInfo">
<div class="user">
@@ -133,9 +105,6 @@
</span>
<span>{{ item.type === 0 ? item.toEmail : item.sendEmail }}</span>
</div>
<div class="del-status" v-if="item.isDel">
<el-tag type="danger" size="small">{{$t('deleted')}}</el-tag>
</div>
</div>
</div>
</div>
@@ -144,21 +113,47 @@
</div>
</div>
</div>
<div class="loading" :class="loading ? 'loading-show' : 'loading-hide'" :style="firstLoad ? 'background: transparent' : ''">
<Loading/>
<template v-if="skeleton">
<skeletonBlock v-if="firstLoad && showFirstLoading"
:rows="20"
:showStar="showStar"
:accountShow="accountShow"
:showStatus="showStatus"
:showUserInfo="showUserInfo"
:type="type"/>
<skeletonBlock v-if="loading"
:rows="skeletonRows"
:showStar="showStar"
:accountShow="accountShow"
:showStatus="showStatus"
:showUserInfo="showUserInfo"
:type="type"/>
<skeletonBlock v-if="followLoading"
:rows="isMobile ? 1 : 2"
:showStar="showStar"
:accountShow="accountShow"
:showStatus="showStatus"
:showUserInfo="showUserInfo"
:type="type"/>
</template>
<template v-else>
<div></div>
<div class="loading" :class="loading ? 'loading-show' : 'loading-hide'"
:style="firstLoad ? 'background: transparent' : ''">
<Loading/>
</div>
<div class="follow-loading" v-if="followLoading">
<Loading/>
</div>
</template>
<div class="noLoading" v-if="noLoading && emailList.length > 0 && !(skeleton && loading)">
<div>{{ $t('noMoreData') }}</div>
</div>
<div class="follow-loading" v-if="followLoading">
<Loading/>
</div>
<div class="noLoading" v-if="noLoading && emailList.length > 0">
<div>{{$t('noMoreData')}}</div>
</div>
<div class="empty" v-if="noLoading && emailList.length === 0">
<div class="empty" v-if="noLoading && emailList.length === 0 && !(skeleton && loading)">
<el-empty :image-size="isMobile ? 120 : 0" :description="$t('noMessagesFound')"/>
</div>
</div>
</el-scrollbar>
</div>
</div>
</template>
@@ -166,11 +161,13 @@
<script setup>
import Loading from "@/components/loading/index.vue";
import {Icon} from "@iconify/vue";
import skeletonBlock from "@/components/email-scroll/skeleton/index.vue"
import {computed, onActivated, reactive, ref, watch} from "vue";
import {onBeforeRouteLeave} from "vue-router";
import {useEmailStore} from "@/store/email.js";
import {useUiStore} from "@/store/ui.js";
import {useSettingStore} from "@/store/setting.js";
import {sleep} from "@/utils/time-utils.js"
import {fromNow} from "@/utils/day.js";
import {useI18n} from "vue-i18n";
@@ -212,12 +209,19 @@ const props = defineProps({
type: {
type: String,
default: ''
},
skeleton: {
type: Boolean,
default: true
},
showFirstLoading: {
type: Boolean,
default: true
}
})
const emit = defineEmits(['jump', 'refresh-before', 'delete-draft'])
const { t } = useI18n()
const {t} = useI18n()
const settingStore = useSettingStore()
const uiStore = useUiStore();
const emailStore = useEmailStore();
@@ -234,7 +238,8 @@ let scrollTop = 0
const latestEmail = ref(null)
const scrollbarRef = ref(null)
let reqLock = false
let isMobile = window.innerWidth < 1025
let isMobile = innerWidth < 1025
let skeletonRows = 0
const queryParam = reactive({
emailId: 0,
size: 30,
@@ -294,13 +299,16 @@ watch(() => emailStore.addStarEmailId, () => {
})
})
function getSkeletonRows() {
if (emailList.length > 20) return skeletonRows = 20
if (emailList.length === 0) return skeletonRows = 1
skeletonRows = emailList.length
}
const accountShow = computed(() => {
return uiStore.accountShow && settingStore.settings.manyEmail === 0
})
function handleScroll(e) {
}
function htmlToText(email) {
if (email.content) {
@@ -473,6 +481,7 @@ function getEmailList(refresh = false) {
}
} else {
getSkeletonRows()
loading.value = true
}
@@ -481,11 +490,13 @@ function getEmailList(refresh = false) {
} else {
followLoading.value = !refresh;
}
props.getEmailList(queryParam.emailId, queryParam.size).then(data => {
let start = Date.now();
props.getEmailList(queryParam.emailId, queryParam.size).then(async data => {
let end = Date.now();
let duration = end - start;
if (duration < 500 && !queryParam.emailId) {
await sleep(500 - duration)
}
firstLoad.value = false
let list = data.list.map(item => ({
@@ -516,6 +527,9 @@ function getEmailList(refresh = false) {
function refresh() {
emit('refresh-before')
if (props.skeleton) {
scrollbarRef.value.setScrollTop(0)
}
refreshList()
}
@@ -531,7 +545,6 @@ function loadData() {
}
</script>
<style lang="scss" scoped>
.email-container {
@@ -567,7 +580,7 @@ function loadData() {
justify-content: center;
align-items: center;
padding: 15px 0;
color: gray;
color: var(--secondary-text-color);
}
.follow-loading {
@@ -597,12 +610,12 @@ function loadData() {
.loading-hide {
pointer-events: none;
transition: all 200ms;
transition: var(--loading-hide-transition);
opacity: 0;
}
}
.email-row {
:deep(.email-row) {
display: flex;
padding: 8px 0;
justify-content: space-between;
@@ -611,16 +624,17 @@ function loadData() {
align-items: center;
position: relative;
transition: background 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
@media (max-width: 1199px) {
}
.user-info {
display: flex;
flex-wrap: wrap;
column-gap: 10px;
margin-top: 5px;
margin-bottom: 5px;
margin-bottom: 2px;
color: var(--email-scroll-content-color);
@media (max-width: 1199px) {
flex-direction: column;
}
.user, .account {
overflow: hidden;
@@ -628,7 +642,12 @@ function loadData() {
text-overflow: ellipsis;
transition: all 300ms;
line-height: 12px;
max-width: 290px;
max-width: 300px;
min-width: 0;
@media (max-width: 1223px) {
max-width: 280px;
}
span:first-child {
position: relative;
@@ -663,7 +682,7 @@ function loadData() {
}
.title-column {
@media (max-width: 1200px) {
@media (max-width: 1199px) {
grid-template-columns: 1fr !important;
gap: 4px !important;
}
@@ -689,7 +708,12 @@ function loadData() {
.email-status {
display: flex;
flex-direction: column;
align-content: center;
@media (max-width: 1199px) {
flex-direction: row;
gap: 5px;
}
}
.name {
@@ -708,6 +732,14 @@ function loadData() {
white-space: nowrap;
text-overflow: ellipsis;
}
.name-skeleton {
width: 150px;
height: 1rem;
@media (max-width: 767px) {
width: 130px;
}
}
}
.phone-time {
@@ -719,6 +751,30 @@ function loadData() {
}
}
.email-text-skeleton {
.text-skeleton-one {
width: 80%;
height: 16px;
@media (max-width: 1199px) {
width: 40%;
}
@media (max-width: 767px) {
width: 70%;
}
}
.text-skeleton-two {
width: min(300px, 100%);
height: 16px;
@media (min-width: 1200px) {
display: none;
}
@media (max-width: 1199px) {
width: 100%;
}
}
}
.email-text {
display: grid;
grid-template-columns: auto 1fr;
@@ -762,6 +818,12 @@ function loadData() {
}
}
.email-right-skeleton {
@media (max-width: 1199px) {
display: none;
}
}
&:hover {
background-color: var(--email-hover-background);
z-index: 0;
@@ -812,6 +874,7 @@ function loadData() {
gap: 15px;
padding: 3px 15px;
box-shadow: var(--header-actions-border);
.header-left {
display: flex;
flex-wrap: wrap;
@@ -828,6 +891,7 @@ function loadData() {
align-items: start;
height: 100%;
color: var(--el-text-color-primary);;
.email-count {
white-space: nowrap;
margin-top: 6px;
@@ -845,6 +909,15 @@ function loadData() {
}
}
.del-status {
color: var(--el-color-danger);
display: flex;
align-items: center;
justify-content: center;
position: relative;
bottom: 1px;
}
ul {
list-style: none;
padding: 0;

View File

@@ -0,0 +1,133 @@
<template>
<div v-for="item in rows" style="background: var(--el-bg-color)">
<div class="email-row">
<el-checkbox disabled :class=" props.type === 'all-email' ? 'all-email-checkbox' : 'checkbox'"
></el-checkbox>
<div class="pc-star" v-if="showStar">
<Icon style="color: var(--el-border-color)" icon="solar:star-line-duotone" width="18" height="18"/>
</div>
<div v-if="!showStar"></div>
<div class="title" :class="accountShow ? 'title-column' : 'title-column'">
<div class="email-sender">
<div class="email-status" v-if="showStatus">
</div>
<div v-else></div>
<span class="name">
<span>
<el-skeleton animated>
<template #template>
<el-skeleton-item variant="text" class="name-skeleton"/>
</template>
</el-skeleton>
</span>
<span></span>
</span>
<span class="phone-time">
<el-skeleton animated>
<template #template>
<el-skeleton-item variant="text" style="width: 50px;height: 1rem;"/>
</template>
</el-skeleton>
</span>
</div>
<div>
<div class="email-text-skeleton">
<el-skeleton animated>
<template #template>
<el-skeleton-item variant="text" class="text-skeleton-one"/>
<el-skeleton-item variant="text" class="text-skeleton-two"/>
</template>
</el-skeleton>
</div>
<div class="user-info" v-if="showUserInfo">
<div class="user">
<el-skeleton animated>
<template #template>
<el-skeleton-item variant="text"
style="width: 180px;margin-right: 15px;height: 1rem;margin-bottom: 4px;"/>
</template>
</el-skeleton>
</div>
<div class="account">
<el-skeleton animated>
<template #template>
<el-skeleton-item variant="text"
style="width: 180px;margin-right: 15px;height: 1rem;margin-bottom: 4px;"/>
</template>
</el-skeleton>
</div>
<div class="del-status" v-if="item.isDel">
<el-tag type="danger" size="small">{{ $t('deleted') }}</el-tag>
</div>
</div>
</div>
</div>
<div class="email-right-skeleton" :style="showUserInfo ? 'align-self: start;':''">
<el-skeleton animated>
<template #template>
<el-skeleton-item variant="text" style="width: 50px;margin-right: 15px;height: 1rem;"/>
</template>
</el-skeleton>
</div>
</div>
</div>
</template>
<script setup>
const props = defineProps({
rows: {
type: Number,
default: 1
},
showStar: {
type: Boolean,
default: true
},
accountShow: {
type: Boolean,
default: false
},
showStatus: {
type: Boolean,
default: false
},
showUserInfo: {
type: Boolean,
default: false
},
type: {
type: String,
default: ''
}
})
import {Icon} from "@iconify/vue";
</script>
<style scoped lang="scss">
.phone-star {
display: none;
}
.pc-star {
display: flex;
width: 40px;
}
@media (max-width: 1024px) {
.pc-star {
display: none;
}
.phone-star {
display: block;
align-self: end;
padding-right: 16px;
padding-top: 8px;
}
.star-pd {
padding-top: 6px !important;
}
}
</style>

View File

@@ -106,4 +106,4 @@ export default {
align-items: center;
justify-content: center;
}
</style>
</style>

View File

@@ -55,24 +55,33 @@ export async function init() {
document.title = setting.title;
}
const loading = document.getElementById('loading-first');
if (!setting.background) {
loading.remove();
removeLoading();
return;
}
const img = new Image();
img.src = cvtR2Url(setting.background);
img.onload = () => {
loading.remove();
removeLoading();
};
img.onerror = () => {
console.warn('背景图片加载失败:', img.src);
loading.remove();
removeLoading();
};
}
function removeLoading() {
if (window.innerWidth < 1025) {
document.documentElement.style.setProperty('--loading-hide-transition', 'none')
}
const doc = document.getElementById('loading-first');
doc.classList.add('loading-hide')
setTimeout(() => {
doc.remove()
},1000)
}

View File

@@ -4,7 +4,7 @@
<Icon v-perm="'account:add'" class="icon add" icon="ion:add-outline" width="23" height="23" @click="add"/>
<Icon class="icon refresh" icon="ion:reload" width="18" height="18" @click="refresh"/>
</div>
<el-scrollbar class="scrollbar">
<el-scrollbar class="scrollbar" ref="scrollbarRef">
<div v-infinite-scroll="getAccountList" :infinite-scroll-distance="600" :infinite-scroll-immediate="false">
<el-card class="item" :class="itemBg(item.accountId)" v-for="item in accounts" :key="item.accountId"
@click="changeAccount(item)">
@@ -37,7 +37,7 @@
<!-- Initial Loading Skeleton -->
<template v-if="loading">
<el-skeleton v-for="i in 3" :key="i" animated>
<el-skeleton v-for="i in skeletonRows" :key="i" animated>
<template #template>
<el-card class="item">
<el-skeleton-item variant="p" style="width: 70%; height: 20px; margin-bottom: 25px"/>
@@ -128,6 +128,7 @@
import {Icon} from "@iconify/vue";
import {nextTick, reactive, ref, watch} from "vue";
import {accountList, accountAdd, accountDelete, accountSetName} from "@/request/account.js";
import {sleep} from "@/utils/time-utils.js"
import {isEmail} from "@/utils/verify-utils.js";
import {useSettingStore} from "@/store/setting.js";
import {useAccountStore} from "@/store/account.js";
@@ -151,15 +152,18 @@ const setNameShow = ref(false)
const setNameLoading = ref(false)
const accountName = ref(null)
const addRef = ref({})
const scrollbarRef = ref({})
let account = null
let turnstileId = null
const botJsError = ref(false)
let verifyToken = ''
let verifyErrorCount = 0
let first = true
const addForm = reactive({
email: '',
suffix: settingStore.domainList[0]
})
let skeletonRows = 10
const queryParams = {
accountId: 0,
size: 20
@@ -201,6 +205,12 @@ window.onTurnstileSuccess = (token) => {
verifyToken = token;
};
function getSkeletonRows() {
if (accounts.length > 20) return skeletonRows = 20
if (accounts.length === 0) return skeletonRows = 1
skeletonRows = accounts.length
}
function setName() {
let name = accountName.value
@@ -281,6 +291,8 @@ function refresh() {
followLoading.value = false
noLoading.value = false
queryParams.accountId = 0
getSkeletonRows();
scrollbarRef.value.setScrollTop(0)
accounts.splice(0, accounts.length)
getAccountList()
}
@@ -325,7 +337,17 @@ function getAccountList() {
followLoading.value = true
}
accountList(queryParams.accountId, queryParams.size).then(list => {
let start = Date.now();
accountList(queryParams.accountId, queryParams.size).then(async list => {
let end = Date.now();
let duration = end - start;
if (duration < 500) {
await sleep(500 - duration)
}
if (list.length < queryParams.size) {
noLoading.value = true
}
@@ -337,6 +359,7 @@ function getAccountList() {
loading.value = false
followLoading.value = false
first = false
}).catch(() => {
loading.value = false
followLoading.value = false
@@ -363,6 +386,7 @@ function submit() {
})
return
}
if (!verifyToken && (settingStore.settings.addEmailVerify === 0 || (settingStore.settings.addEmailVerify === 2 && settingStore.settings.addVerifyOpen))) {
if (!verifyShow.value) {
verifyShow.value = true
@@ -477,7 +501,7 @@ path[fill="#ffdda1"] {
justify-content: center;
align-items: center;
padding: 10px 0;
color: gray;
color: var(--secondary-text-color);
}
}

View File

@@ -4,28 +4,30 @@
<div class="title">
<div class="title-left">
<span class="title-text">
<Icon icon="hugeicons:quill-write-01" width="28" height="28" />
<Icon icon="hugeicons:quill-write-01" width="28" height="28"/>
</span>
<span class="sender">{{$t('sender')}}:</span>
<span class="sender-name">{{form.name}}</span>
<span class="send-email"><{{form.sendEmail}}></span>
<span class="sender">{{ $t('sender') }}:</span>
<span class="sender-name">{{ form.name }}</span>
<span class="send-email"><{{ form.sendEmail }}></span>
</div>
<div @click="close" style="cursor: pointer;">
<Icon icon="material-symbols-light:close-rounded" width="22" height="22"/>
</div>
</div>
<div class="container">
<el-input-tag @add-tag="addTagChange" tag-type="primary" size="default" v-model="form.receiveEmail" :placeholder="$t('ruleEmailsInputDesc')" >
<el-input-tag @add-tag="addTagChange" tag-type="primary" size="default" v-model="form.receiveEmail"
:placeholder="$t('ruleEmailsInputDesc')">
<template #prefix>
<div class="item-title">{{$t('recipient')}} </div>
<div class="item-title">{{ $t('recipient') }}</div>
</template>
<template #suffix>
<span class="distribute" :class="form.manyType ? 'checked' : ''" @click.stop="checkDistribute" >{{$t('sendSeparately')}}</span>
<span class="distribute" :class="form.manyType ? 'checked' : ''"
@click.stop="checkDistribute">{{ $t('sendSeparately') }}</span>
</template>
</el-input-tag>
<el-input v-model="form.subject" :placeholder="$t('subjectInputDesc')">
<template #prefix>
<div class="item-title">{{$t('subject')}} </div>
<div class="item-title">{{ $t('subject') }}</div>
</template>
</el-input>
<tinyEditor :def-value="defValue" ref="editor" @change="change"/>
@@ -46,8 +48,8 @@
</div>
</div>
<div>
<el-button type="primary" @click="sendEmail" v-if="form.sendType === 'reply'">{{$t('reply')}}</el-button>
<el-button type="primary" @click="sendEmail" v-else >{{$t('send')}}</el-button>
<el-button type="primary" @click="sendEmail" v-if="form.sendType === 'reply'">{{ $t('reply') }}</el-button>
<el-button type="primary" @click="sendEmail" v-else>{{ $t('send') }}</el-button>
</div>
</div>
</div>
@@ -79,7 +81,7 @@ defineExpose({
openDraft
})
const { t } = useI18n()
const {t} = useI18n()
const draftStore = userDraftStore()
const settingStore = useSettingStore()
const emailStore = useEmailStore();
@@ -219,8 +221,8 @@ async function sendEmail() {
return
}
percentMessage = ElMessage({
message: () => h(sendPercent, { value: percent.value,desc: t('sending') }),
percentMessage = ElMessage({
message: () => h(sendPercent, {value: percent.value, desc: t('sending')}),
dangerouslyUseHTMLString: true,
plain: true,
duration: 0,
@@ -242,7 +244,7 @@ async function sendEmail() {
ElNotification({
title: t('sendSuccessMsg'),
type: "success",
message: h('span', { style: 'color: teal' }, email.subject),
message: h('span', {style: 'color: teal'}, email.subject),
position: 'bottom-right'
})
@@ -261,7 +263,7 @@ async function sendEmail() {
ElNotification({
title: t('sendFailMsg'),
type: e.code === 403 ? 'warning' : 'error',
message: h('span', { style: 'color: teal' }, e.message),
message: h('span', {style: 'color: teal'}, e.message),
position: 'bottom-right'
})
show.value = true
@@ -312,7 +314,7 @@ function openReply(email) {
<div></div>
<div>
<br>
${ formatDetailDate(email.createTime) } ${email.name} &lt${email.sendEmail}&gt ${t('wrote')}:
${formatDetailDate(email.createTime)} ${email.name} &lt${email.sendEmail}&gt ${t('wrote')}:
</div>
<blockquote class="mceNonEditable" style="margin: 0 0 0 0.8ex;border-left: 1px solid rgb(204,204,204);padding-left: 1ex;">
<articl>
@@ -334,7 +336,7 @@ function openReply(email) {
function formatImage(content) {
content = content || '';
const domain = settingStore.settings.r2Domain;
return content.replace(/{{domain}}/g, domain + '/');
return content.replace(/{{domain}}/g, domain + '/');
}
function open() {
@@ -352,7 +354,7 @@ function open() {
}
function openDraft(draft) {
Object.assign(form,{...draft})
Object.assign(form, {...draft})
defValue.value = ''
setTimeout(() => defValue.value = form.content)
show.value = true;
@@ -404,15 +406,16 @@ function close() {
cancelButtonText: t('cancel'),
type: 'warning',
distinguishCancelAndClose: true
}).then( async () => {
}).then(async () => {
const formData = {...toRaw(form)}
delete formData.draftId
delete formData.attachments
formData.createTime = dayjs().utc().format('YYYY-MM-DD HH:mm:ss');
const draftId = await db.value.draft.add({...formData})
db.value.att.add({draftId,attachments: toRaw(form.attachments)})
draftStore.refreshList ++
db.value.att.add({draftId, attachments: toRaw(form.attachments)})
draftStore.refreshList++
show.value = false
resetForm()
}).catch((action) => {
if (action === 'cancel') {
show.value = false
@@ -437,7 +440,7 @@ function close() {
.write-box {
background: var(--el-bg-color);
width: min(1200px,calc(100% - 80px));
width: min(1200px, calc(100% - 80px));
box-shadow: var(--el-box-shadow-light);
border: 1px solid var(--el-border-color-light);
transition: var(--el-transition-duration);
@@ -461,11 +464,13 @@ function close() {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
.title-left {
align-items: center;
display: grid;
grid-template-columns: auto auto auto 1fr;
}
.title-text {
}
@@ -498,6 +503,7 @@ function close() {
display: grid;
grid-template-rows: auto auto 1fr auto;
gap: 15px;
.distribute {
color: var(--el-color-info);
background: var(--el-color-info-light-9);

View File

@@ -5,7 +5,8 @@ import './style.css';
import { init } from '@/init/init.js';
import { createPinia } from 'pinia';
import piniaPersistedState from 'pinia-plugin-persistedstate';
import 'element-plus/theme-chalk/dark/css-vars.css'
import 'element-plus/theme-chalk/dark/css-vars.css';
import 'nprogress/nprogress.css';
import perm from "@/perm/perm.js";
const pinia = createPinia().use(piniaPersistedState)
import i18n from "@/i18n/index.js";

View File

@@ -1,4 +1,5 @@
import {createRouter, createWebHistory} from 'vue-router'
import NProgress from 'nprogress';
import {useUiStore} from "@/store/ui.js";
const routes = [
@@ -74,8 +75,25 @@ const router = createRouter({
routes
})
NProgress.configure({
showSpinner: false, // 不显示旋转图标
trickleSpeed: 50, // 自动递增速度
minimum: 0.1 // 最小百分比
});
let timer
router.beforeEach(async (to, from, next) => {
if (timer) {
clearTimeout(timer)
}
// 延迟 50ms 才启动进度条
timer = setTimeout(() => {
NProgress.start()
}, 50)
const token = localStorage.getItem('token')
if (!token && to.name !== 'login') {
@@ -99,6 +117,9 @@ router.beforeEach(async (to, from, next) => {
router.afterEach((to) => {
clearTimeout(timer)
NProgress.done();
const uiStore = useUiStore()
if (to.meta.menu) {
if (['content', 'email', 'send'].includes(to.meta.name)) {

View File

@@ -136,6 +136,7 @@ button, input, select, textarea {
--base-border-color: #DCDFE6;
--secondary-text-color: #909399;
--message-block-color: rgba(0, 0, 0, 0);
--loading-hide-transition: all 200ms;
--vt-x: 50%;
--vt-y: 50%;
--vt-duration: 520ms;

View File

@@ -205,8 +205,8 @@ function getEmailList(emailId, size) {
}
.search-input {
width: min(280px,calc(100vw - 140px));
width: 100%;
max-width: 280px;
height: 28px;
.setting-icon {
position: relative;

View File

@@ -9,15 +9,16 @@
@jump="jumpContent"
actionLeft="6px"
:show-account-icon="false"
:show-first-loading="false"
:showStar="false"
@delete-draft="deleteDraft"
:type="'draft'"
>
<template #name="props">
<span class="send-email" >{{props.email.receiveEmail.join(',') || '('+$t('noRecipient')+')'}}</span>
<span class="send-email">{{ props.email.receiveEmail.join(',') || '(' + $t('noRecipient') + ')' }}</span>
</template>
<template #subject="props" >
{{props.email.subject || '('+$t('noSubject')+')'}}
<template #subject="props">
{{ props.email.subject || '(' + $t('noSubject') + ')' }}
</template>
</emailScroll>
</template>
@@ -53,19 +54,21 @@ watch(() => draftStore.setDraft, async () => {
if (!draft.content && !draft.subject && !(draft.receiveEmail.length > 0)) {
await db.value.draft.delete(draftId);
await db.value.att.delete(draftId);
scroll.value.refreshList();
draftStore.refreshList++
return;
}
await db.value.draft.update(draftId, draft);
await db.value.att.update(draftId, {attachments: attachments});
scroll.value.refreshList();
},{
draftStore.refreshList++
}, {
deep: true
})
watch(() => draftStore.refreshList,() => {
scroll.value.refreshList();
watch(() => draftStore.refreshList, async () => {
const {list} = await getEmailList();
scroll.value.emailList.length = 0
scroll.value.emailList.push(...list)
})
function getEmailList() {
@@ -78,7 +81,7 @@ function getEmailList() {
async function deleteDraft(draftIds) {
await db.value.draft.bulkDelete(draftIds);
scroll.value.refreshList();
draftStore.refreshList++
}
async function jumpContent(email) {
@@ -101,4 +104,4 @@ onMounted(() => {
.send-email {
font-weight: normal;
}
</style>
</style>

View File

@@ -503,7 +503,7 @@ function openAdd() {
.loading-hide {
pointer-events: none;
transition: all 200ms;
transition: var(--loading-hide-transition);
opacity: 0;
}

View File

@@ -500,7 +500,7 @@ window.onresize = () => {
.loading-hide {
pointer-events: none;
transition: all 200ms;
transition: var(--loading-hide-transition);
opacity: 0;
}

View File

@@ -1,9 +1,9 @@
<template>
<div class="settings-container">
<div v-if="firstLoading" class="loading">
<div class="loading" :class="firstLoading ? 'loading-show' : 'loading-hide'" >
<loading/>
</div>
<el-scrollbar class="scroll" v-else>
<el-scrollbar class="scroll" v-if="!firstLoading">
<div class="scroll-body">
<div class="card-grid">
<!-- Website Settings Card -->
@@ -660,7 +660,7 @@ defineOptions({
name: 'sys-setting'
})
const currentVersion = 'v1.7.0'
const currentVersion = 'v1.8.0'
const hasUpdate = ref(false)
let getUpdateErrorCount = 1;
const {t, locale} = useI18n();
@@ -1172,12 +1172,28 @@ function editSetting(settingForm, refreshStatus = true) {
height: 100%;
overflow: hidden;
background: var(--extra-light-fill) !important;
position: relative;
.loading {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
z-index: 2;
width: 100%;
position: absolute;
top: 0;
left: 0;
}
.loading-show {
transition: all 200ms ease 200ms;
opacity: 1;
}
.loading-hide {
transition: var(--loading-hide-transition);
pointer-events: none;
opacity: 0;
}
}

View File

@@ -957,7 +957,7 @@ function adjustWidth() {
.loading-hide {
pointer-events: none;
transition: all 200ms;
transition: var(--loading-hide-transition);
opacity: 0;
}

View File

@@ -31,15 +31,6 @@ export default defineConfig(({mode}) => {
target: 'es2022',
outDir: '../mail-worker/dist',
emptyOutDir: true,
rollupOptions: {
output: {
manualChunks(id) {
return 'main'
},
chunkFileNames: 'assets/[name]-[hash].js',
entryFileNames: 'assets/[name]-[hash].js',
}
},
assetsInclude: ['**/*.json'],
}
}

View File

@@ -0,0 +1 @@
const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _};

View File

@@ -0,0 +1 @@
import{aB as c}from"./index-C-CeCRdr.js";function e(t,a){return c.get("/account/list",{params:{accountId:t,size:a}})}function u(t,a){return c.post("/account/add",{email:t,token:a})}function o(t,a){return c.put("/account/setName",{name:a,accountId:t})}function r(t){return c.delete("/account/delete",{params:{accountId:t}})}export{e as a,r as b,u as c,o as d};

View File

@@ -0,0 +1 @@
import{aB as a}from"./index-C-CeCRdr.js";function t(l){return a.get("/allEmail/list",{params:{...l}})}function i(l){return a.delete("/allEmail/delete?emailIds="+l)}export{i as a,t as b};

View File

@@ -0,0 +1 @@
async function d(o){const a=o==null?"":String(o);return typeof navigator<"u"&&typeof navigator.clipboard?.writeText=="function"?await navigator.clipboard.writeText(a):new Promise((c,n)=>{try{const t=document.createElement("textarea");t.value=a,t.setAttribute("readonly","");const e=t.style;e.position="fixed",e.top="0",e.left="0",e.width="1px",e.height="1px",e.padding="0",e.border="0",e.outline="none",e.boxShadow="none",e.background="transparent",e.opacity="0",document.body.appendChild(t),t.focus(),t.select();let r=!1;try{r=document.execCommand("copy")}catch(i){return n(i)}finally{document.body.removeChild(t)}r?c():n(new Error("Copy command unsuccessful"))}catch(t){n(t)}})}export{d as c};

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{inset:0;margin:0;overflow:auto;position:fixed}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{inset:0;overflow:auto;position:fixed}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{_ as u,a as c,u as y,c as r,o as n,f as l,g as a,b as k,aK as v,k as d,aV as $,e as h,r as f,ab as _,i as N,n as i,t as w,w as B}from"./index-C-CeCRdr.js";import{e as V}from"./index-DbudBMlZ.js";const x=c({name:"ImgEmpty"}),E=c({...x,setup(m){const s=y("empty"),e=V();return(o,p)=>(n(),r("svg",{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[l("defs",null,[l("linearGradient",{id:`linearGradient-1-${a(e)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[l("stop",{"stop-color":`var(${a(s).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),l("stop",{"stop-color":`var(${a(s).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),l("linearGradient",{id:`linearGradient-2-${a(e)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[l("stop",{"stop-color":`var(${a(s).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),l("stop",{"stop-color":`var(${a(s).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),l("rect",{id:`path-3-${a(e)}`,x:"0",y:"0",width:"17",height:"36"},null,8,["id"])]),l("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[l("g",{transform:"translate(-1268.000000, -535.000000)"},[l("g",{transform:"translate(1268.000000, 535.000000)"},[l("path",{d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:`var(${a(s).cssVarBlockName("fill-color-3")})`},null,8,["fill"]),l("polygon",{fill:`var(${a(s).cssVarBlockName("fill-color-7")})`,transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"},null,8,["fill"]),l("g",{transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},[l("polygon",{fill:`var(${a(s).cssVarBlockName("fill-color-7")})`,transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"},null,8,["fill"]),l("polygon",{fill:`var(${a(s).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,["fill"]),l("rect",{fill:`url(#linearGradient-1-${a(e)})`,transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"},null,8,["fill"]),l("polygon",{fill:`var(${a(s).cssVarBlockName("fill-color-2")})`,transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"},null,8,["fill"])]),l("rect",{fill:`url(#linearGradient-2-${a(e)})`,x:"13",y:"45",width:"40",height:"36"},null,8,["fill"]),l("g",{transform:"translate(53.000000, 45.000000)"},[l("use",{fill:`var(${a(s).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${a(e)}`},null,8,["fill","xlink:href"]),l("polygon",{fill:`var(${a(s).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${a(e)})`,transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 7 16.5"},null,8,["fill","mask"])]),l("polygon",{fill:`var(${a(s).cssVarBlockName("fill-color-2")})`,transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"},null,8,["fill"])])])])]))}});var S=u(E,[["__file","img-empty.vue"]]);const b=k({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),C=c({name:"ElEmpty"}),G=c({...C,props:b,setup(m){const s=m,{t:e}=v(),o=y("empty"),p=d(()=>s.description||e("el.table.emptyText")),g=d(()=>({width:$(s.imageSize)}));return(t,I)=>(n(),r("div",{class:i(a(o).b())},[l("div",{class:i(a(o).e("image")),style:N(a(g))},[t.image?(n(),r("img",{key:0,src:t.image,ondragstart:"return false"},null,8,["src"])):f(t.$slots,"image",{key:1},()=>[_(S)])],6),l("div",{class:i(a(o).e("description"))},[t.$slots.description?f(t.$slots,"description",{key:0}):(n(),r("p",{key:1},w(a(p)),1))],2),t.$slots.default?(n(),r("div",{key:0,class:i(a(o).e("bottom"))},[f(t.$slots,"default")],2)):h("v-if",!0)],2))}});var z=u(G,[["__file","empty.vue"]]);const K=B(z);export{K as E};

View File

@@ -0,0 +1 @@
.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}

View File

@@ -0,0 +1 @@
.el-image-viewer__wrapper{inset:0;position:fixed}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translate(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input::-moz-placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.el-overlay{background-color:var(--el-overlay-color-lighter);height:100%;inset:0;overflow:auto;position:fixed;z-index:2000}.el-overlay .el-overlay-root{height:0}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{inset:0;overflow:auto;padding:16px;position:fixed;text-align:center}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}

View File

@@ -0,0 +1 @@
.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{inset:0;margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}

View File

@@ -0,0 +1 @@
.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button,.el-radio-button__inner{display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;padding:8px 15px;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}

View File

@@ -0,0 +1 @@
import{M as $,aQ as w,aU as z,b as B,aS as P,z as E,y as W,k as f,a0 as F,_ as R,a as _,u as V,c as k,o as I,f as y,N as U,cr as D,g as e,a7 as h,n as v,bb as A,r as C,h as K,t as x,$ as L,i as J,I as X,G as Y,D as Z,bS as ee,F as ae,l as M,w as oe}from"./index-C-CeCRdr.js";import{C as G,U as N}from"./event-BB_Ol6Sd.js";import{a as le,d as se,u as te,e as ne,b as re,c as ie}from"./index-DbudBMlZ.js";import{u as de,d as ue}from"./index-mPHfnfYT.js";const T=B({modelValue:{type:[String,Number,Boolean],default:void 0},size:P,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),ce=B({...T,border:Boolean}),j={[N]:o=>$(o)||w(o)||z(o),[G]:o=>$(o)||w(o)||z(o)},q=Symbol("radioGroupKey"),H=(o,u)=>{const s=E(),a=W(q,void 0),i=f(()=>!!a),c=f(()=>F(o.value)?o.label:o.value),r=f({get(){return i.value?a.modelValue:o.modelValue},set(t){i.value?a.changeEvent(t):u&&u(N,t),s.value.checked=o.modelValue===c.value}}),d=le(f(()=>a?.size)),l=se(f(()=>a?.disabled)),n=E(!1),p=f(()=>l.value||i.value&&r.value!==c.value?-1:0);return te({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},f(()=>i.value&&F(o.value))),{radioRef:s,isGroup:i,radioGroup:a,focus:n,size:d,disabled:l,tabIndex:p,modelValue:r,actualValue:c}},pe=_({name:"ElRadio"}),me=_({...pe,props:ce,emits:j,setup(o,{emit:u}){const s=o,a=V("radio"),{radioRef:i,radioGroup:c,focus:r,size:d,disabled:l,modelValue:n,actualValue:p}=H(s,u);function t(){L(()=>u(G,n.value))}return(m,g)=>{var b;return I(),k("label",{class:v([e(a).b(),e(a).is("disabled",e(l)),e(a).is("focus",e(r)),e(a).is("bordered",m.border),e(a).is("checked",e(n)===e(p)),e(a).m(e(d))])},[y("span",{class:v([e(a).e("input"),e(a).is("disabled",e(l)),e(a).is("checked",e(n)===e(p))])},[U(y("input",{ref_key:"radioRef",ref:i,"onUpdate:modelValue":S=>A(n)?n.value=S:null,class:v(e(a).e("original")),value:e(p),name:m.name||((b=e(c))==null?void 0:b.name),disabled:e(l),checked:e(n)===e(p),type:"radio",onFocus:S=>r.value=!0,onBlur:S=>r.value=!1,onChange:t,onClick:h(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[D,e(n)]]),y("span",{class:v(e(a).e("inner"))},null,2)],2),y("span",{class:v(e(a).e("label")),onKeydown:h(()=>{},["stop"])},[C(m.$slots,"default",{},()=>[K(x(m.label),1)])],42,["onKeydown"])],2)}}});var fe=R(me,[["__file","radio.vue"]]);const ve=B({...T}),be=_({name:"ElRadioButton"}),ye=_({...be,props:ve,setup(o){const u=o,s=V("radio"),{radioRef:a,focus:i,size:c,disabled:r,modelValue:d,radioGroup:l,actualValue:n}=H(u),p=f(()=>({backgroundColor:l?.fill||"",borderColor:l?.fill||"",boxShadow:l?.fill?`-1px 0 0 0 ${l.fill}`:"",color:l?.textColor||""}));return(t,m)=>{var g;return I(),k("label",{class:v([e(s).b("button"),e(s).is("active",e(d)===e(n)),e(s).is("disabled",e(r)),e(s).is("focus",e(i)),e(s).bm("button",e(c))])},[U(y("input",{ref_key:"radioRef",ref:a,"onUpdate:modelValue":b=>A(d)?d.value=b:null,class:v(e(s).be("button","original-radio")),value:e(n),type:"radio",name:t.name||((g=e(l))==null?void 0:g.name),disabled:e(r),onFocus:b=>i.value=!0,onBlur:b=>i.value=!1,onClick:h(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[D,e(d)]]),y("span",{class:v(e(s).be("button","inner")),style:J(e(d)===e(n)?e(p):{}),onKeydown:h(()=>{},["stop"])},[C(t.$slots,"default",{},()=>[K(x(t.label),1)])],46,["onKeydown"])],2)}}});var O=R(ye,[["__file","radio-button.vue"]]);const _e=B({id:{type:String,default:void 0},size:P,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...de(["ariaLabel"])}),ge=j,he=_({name:"ElRadioGroup"}),Be=_({...he,props:_e,emits:ge,setup(o,{emit:u}){const s=o,a=V("radio"),i=ne(),c=E(),{formItem:r}=re(),{inputId:d,isLabeledByFormItem:l}=ie(s,{formItemContext:r}),n=t=>{u(N,t),L(()=>u(G,t))};X(()=>{const t=c.value.querySelectorAll("[type=radio]"),m=t[0];!Array.from(t).some(g=>g.checked)&&m&&(m.tabIndex=0)});const p=f(()=>s.name||i.value);return Y(q,Z({...ee(s),changeEvent:n,name:p})),ae(()=>s.modelValue,()=>{s.validateEvent&&r?.validate("change").catch(t=>ue())}),(t,m)=>(I(),k("div",{id:e(d),ref_key:"radioGroupRef",ref:c,class:v(e(a).b("group")),role:"radiogroup","aria-label":e(l)?void 0:t.ariaLabel||"radio-group","aria-labelledby":e(l)?e(r).labelId:void 0},[C(t.$slots,"default")],10,["id","aria-label","aria-labelledby"]))}});var Q=R(Be,[["__file","radio-group.vue"]]);const ke=oe(fe,{RadioButton:O,RadioGroup:Q}),Ie=M(Q),Ce=M(O);export{Ie as E,ke as a,Ce as b};

View File

@@ -0,0 +1 @@
.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}

View File

@@ -0,0 +1 @@
.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
import{aB as a}from"./index-C-CeCRdr.js";function l(e,t,s,n,r){return a.get("/email/list",{params:{accountId:e,emailId:t,timeSort:s,size:n,type:r}})}function m(e){return a.delete("/email/delete?emailIds="+e)}function o(e,t){return a.get("/email/latest",{params:{emailId:e,accountId:t},noMsg:!0})}function u(e,t){return a.post("/email/send",e,{onUploadProgress:s=>{t(s)},noMsg:!0})}export{o as a,m as b,l as c,u as e};

View File

@@ -0,0 +1 @@
import{aH as l}from"./index-C-CeCRdr.js";const t=l("email",{state:()=>({deleteIds:0,starScroll:null,emailScroll:null,cancelStarEmailId:0,addStarEmailId:0,contentData:{email:null,delType:null,showStar:!0,showReply:!0},sendScroll:null}),persist:{pick:["contentData"]}});export{t as u};

View File

@@ -0,0 +1 @@
const E="update:modelValue",a="change",s="input";export{a as C,s as I,E as U};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{g as n}from"./file-utils-xSqLUDrh.js";function r(i){const e=n(i);return["zip","rar","7z","tar","tgz"].includes(e)?"octicon:file-zip-24":["png","jpg","jpeg","gif","webp","jfif"].includes(e)?"mingcute:pic-line":["mp4","avi","mkv","mov","wmv","flv"].includes(e)?"fluent:video-clip-24-regular":["txt","doc","docx","md","ini","conf"].includes(e)?"hugeicons:google-doc":["xls","csv","xlsx"].includes(e)?"codicon:table":["mp3","wav","aac","ogg","flac","m4a"].includes(e)?"mynaui:music":[".ppt","pptx","pps","potx","pot"].includes(e)?"lsicon:file-ppt-filled":e==="pdf"?"hugeicons:pdf-02":e==="apk"?"proicons:android":e==="exe"?"bi:filetype-exe":"hugeicons:attachment-01"}export{r as g};

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

View File

@@ -0,0 +1 @@
import{m as a,p as s,o as r,f as t,c,P as l,ap as n,t as _}from"./index-C-CeCRdr.js";import{E as d}from"./el-scrollbar-UsUjrt3r.js";import{_ as i}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-mPHfnfYT.js";const m={},p={class:"scrollbar-flex-content"};function f(u,b){const o=d;return r(),a(o,null,{default:s(()=>[t("div",p,[(r(),c(l,null,n(1e3,e=>t("p",{key:e,class:"scrollbar-demo-item"},_(e),1)),64))])]),_:1})}const E=i(m,[["render",f],["__scopeId","data-v-fbb8d012"]]);export{E as default};

View File

@@ -0,0 +1 @@
import{e as m}from"./index-CLyGXQrq.js";import{b as s}from"./email-B8ELHxI0.js";import{s as l,a as p,b as c}from"./star-CDDcKDKH.js";import{u as n}from"./email-BtoX8In9.js";import{z as u,I as f,m as d,g as e,o as _,ai as D}from"./index-C-CeCRdr.js";import"./time-utils-CZDurPPv.js";import"./index-mPHfnfYT.js";import"./vnode-iQPJucW4.js";import"./event-BB_Ol6Sd.js";import"./index-DbudBMlZ.js";import"./position-C4-LB8VC.js";import"./throttle-CyPLJsF9.js";import"./iconify-DCkxz_hX.js";import"./el-scrollbar-UsUjrt3r.js";import"./el-empty-BvlQK5UB.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-tag-Bx7m9zwB.js";import"./index-CDAJLwwD.js";import"./el-checkbox-BC0redCa.js";import"./index-mWeHkudn.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./day-BW7T5RG_.js";import"./dayjs.min-C-kYcQPD.js";/* empty css *//* empty css *//* empty css */import"./index-CKeGEg12.js";import"./index-D2TRjCYc.js";const U=Object.assign({name:"star"},{__name:"index",setup(S){const r=u({}),t=n();function o(a){t.contentData.email=a,t.contentData.delType="logic",t.contentData.showStar=!0,t.contentData.showReply=!0,D.push("/message")}function i(a){t.cancelStarEmailId=a.emailId,r.value.deleteEmail([a.emailId])}return f(()=>{t.starScroll=r}),(a,g)=>(_(),d(m,{type:"star",ref_key:"scroll",ref:r,"allow-star":!1,"cancel-success":i,getEmailList:e(c),emailDelete:e(s),"star-add":e(p),"star-cancel":e(l),onJump:o,actionLeft:"6px","show-account-icon":!1},null,8,["getEmailList","emailDelete","star-add","star-cancel"]))}});export{U as default};

View File

@@ -0,0 +1 @@
.send-email{font-weight:400}

View File

@@ -0,0 +1 @@
.el-select-dropdown__item{padding:0 15px}.no-autofill-pwd{.el-input__inner{-webkit-text-security:disc!important}}.form-wrapper[data-v-1de51574]{position:fixed;right:0;height:100%;z-index:10;display:flex;align-items:center;justify-content:center}@media (max-width: 767px){.form-wrapper[data-v-1de51574]{width:100%}}.container[data-v-1de51574]{background:var(--3610c848);padding-left:40px;padding-right:40px;display:flex;flex-direction:column;justify-content:center;width:450px;height:100%;border-left:1px solid var(--login-border);box-shadow:var(--el-box-shadow-light)}@media (max-width: 1024px){.container[data-v-1de51574]{padding:20px 18px;width:384px;margin-left:18px}}@media (max-width: 767px){.container[data-v-1de51574]{border:1px solid var(--login-border);padding:20px 18px;border-radius:6px;height:fit-content;width:100%;margin-right:18px;margin-left:18px}}.container .btn[data-v-1de51574]{height:36px;width:100%;border-radius:6px}.container .form-desc[data-v-1de51574]{margin-top:5px;margin-bottom:18px;color:var(--form-desc-color)}.container .form-title[data-v-1de51574]{font-weight:700;font-size:22px!important}.container .switch[data-v-1de51574]{margin-top:20px;text-align:center}.container .switch span[data-v-1de51574]{color:var(--login-switch-color);cursor:pointer}.container[data-v-1de51574] .el-input__wrapper{border-radius:6px;background:var(--el-bg-color)}.container .email-input[data-v-1de51574] .el-input__wrapper{border-radius:6px 0 0 6px;background:var(--el-bg-color)}.container .el-input[data-v-1de51574]{height:38px;width:100%;margin-bottom:18px}.container .el-input[data-v-1de51574] .el-input__inner{height:36px}[data-v-1de51574] .el-select-dropdown__item{padding:0 10px}.setting-icon[data-v-1de51574]{position:relative;top:6px}[data-v-1de51574] .el-input-group__append{padding:0 4px 0 8px!important;background:var(--el-bg-color);border-radius:0 8px 8px 0}.register-turnstile[data-v-1de51574]{margin-bottom:18px}.select[data-v-1de51574]{position:absolute;right:30px;width:100px;opacity:0;pointer-events:none}.custom-style[data-v-1de51574]{margin-bottom:10px}.custom-style .el-segmented[data-v-1de51574]{--el-border-radius-base: 6px;width:180px}#login-box[data-v-1de51574]{background:linear-gradient(to bottom,#2980b9,#6dd5fa,#fff);font:100% Arial,sans-serif;height:100%;margin:0;padding:0;overflow-x:hidden;display:grid;grid-template-columns:1fr}#background-wrap[data-v-1de51574]{height:100%;z-index:0}@keyframes animateCloud-1de51574{0%{margin-left:-500px}to{margin-left:100%}}.x1[data-v-1de51574]{animation:animateCloud-1de51574 30s linear infinite;transform:scale(.65)}.x2[data-v-1de51574]{animation:animateCloud-1de51574 15s linear infinite;transform:scale(.3)}.x3[data-v-1de51574]{animation:animateCloud-1de51574 25s linear infinite;transform:scale(.5)}.x4[data-v-1de51574]{animation:animateCloud-1de51574 13s linear infinite;transform:scale(.4)}.x5[data-v-1de51574]{animation:animateCloud-1de51574 20s linear infinite;transform:scale(.55)}.cloud[data-v-1de51574]{background:linear-gradient(to bottom,#fff 5%,#f1f1f1);border-radius:100px;box-shadow:0 8px 5px #0000001a;height:120px;width:350px;position:relative}.cloud[data-v-1de51574]:after,.cloud[data-v-1de51574]:before{content:"";position:absolute;background:#fff;z-index:-1}.cloud[data-v-1de51574]:after{border-radius:100px;height:100px;left:50px;top:-50px;width:100px}.cloud[data-v-1de51574]:before{border-radius:200px;height:180px;width:180px;right:50px;top:-90px}

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

View File

@@ -0,0 +1 @@
.icon[data-v-0659138e]{cursor:pointer}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{aj as $,z as d,D as C,k as D,F as B,c as I,o as f,ab as a,p as m,m as E,f as h,a7 as L,t as N,g as r,ai as O}from"./index-C-CeCRdr.js";/* empty css */import"./el-tag-Bx7m9zwB.js";import{E as J,a as R}from"./el-select-bzu4tt0u.js";import"./el-scrollbar-UsUjrt3r.js";import{s as U,a as M}from"./star-CDDcKDKH.js";import{e as z}from"./index-CLyGXQrq.js";import{u as A}from"./email-BtoX8In9.js";import{a as F,b as P}from"./all-email-DJotz4SZ.js";import{I as u}from"./iconify-DCkxz_hX.js";import{_ as q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as G}from"./vnode-iQPJucW4.js";import"./index-mPHfnfYT.js";import"./index-CDAJLwwD.js";import"./index-DbudBMlZ.js";import"./event-BB_Ol6Sd.js";import"./time-utils-CZDurPPv.js";import"./position-C4-LB8VC.js";import"./throttle-CyPLJsF9.js";import"./el-empty-BvlQK5UB.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-BC0redCa.js";import"./index-mWeHkudn.js";import"./day-BW7T5RG_.js";import"./dayjs.min-C-kYcQPD.js";/* empty css *//* empty css */import"./index-CKeGEg12.js";import"./index-D2TRjCYc.js";const H={class:"email-list-box"},K={class:"search-type"},Q=Object.assign({name:"all-email"},{__name:"index",setup(W){const{t:i}=$(),c=A(),p=d({}),o=d(""),y=d(),k=()=>{y.value.toggleMenu()},e=C({timeSort:0,type:"receive",userEmail:null,accountEmail:null,name:null,subject:null,searchType:"name"}),g=D(()=>{if(e.searchType==="user")return i("user");if(e.searchType==="account")return i("selectEmail");if(e.searchType==="name")return i("sender");if(e.searchType==="subject")return i("subject")}),b=localStorage.getItem("all-email-params");if(b){const l=JSON.parse(b);e.type=l.type,e.timeSort=l.timeSort,e.status=l.status,e.searchType=l.searchType}B(()=>e,()=>{localStorage.setItem("all-email-params",JSON.stringify(e))},{deep:!0});function T(){o.value=null,e.timeSort=0,e.type="receive",e.userEmail=null,e.accountEmail=null,e.name=null,e.subject=null,e.searchType="name"}function w(){e.userEmail=null,e.accountEmail=null,e.name=null,e.subject=null,e.searchType==="user"&&(e.userEmail=o.value),e.searchType==="account"&&(e.accountEmail=o.value),e.searchType==="name"&&(e.name=o.value),e.searchType==="subject"&&(e.subject=o.value),p.value.refreshList()}function v(){e.timeSort=e.timeSort?0:1,p.value.refreshList()}function _(l){c.contentData.email=l,c.contentData.delType="physics",c.contentData.showStar=!1,c.contentData.showReply=!1,O.push({name:"content"})}function j(l,s){return P({emailId:l,size:s,...e})}return(l,s)=>{const t=R,S=J,V=G;return f(),I("div",H,[a(z,{ref_key:"sysEmailScroll",ref:p,"get-emailList":j,"email-delete":r(F),"star-add":r(M),"star-cancel":r(U),"show-star":!1,"show-user-info":"","show-status":"",actionLeft:"4px","show-account-icon":!1,onJump:_,onRefreshBefore:T,type:"all-email"},{first:m(()=>[a(V,{modelValue:o.value,"onUpdate:modelValue":s[1]||(s[1]=n=>o.value=n),placeholder:l.$t("searchByContent"),class:"search-input"},{prefix:m(()=>[h("div",{onClick:L(k,["stop"])},[a(S,{ref_key:"mySelect",ref:y,modelValue:e.searchType,"onUpdate:modelValue":s[0]||(s[0]=n=>e.searchType=n),placeholder:l.$t("select"),class:"select"},{default:m(()=>[a(t,{key:"3",label:l.$t("sender"),value:"name"},null,8,["label"]),a(t,{key:"4",label:l.$t("subject"),value:"subject"},null,8,["label"]),a(t,{key:"1",label:l.$t("user"),value:"user"},null,8,["label"]),a(t,{key:"2",label:l.$t("selectEmail"),value:"account"},null,8,["label"])]),_:1},8,["modelValue","placeholder"]),h("div",K,[h("span",null,N(g.value),1),a(r(u),{class:"setting-icon",icon:"mingcute:down-small-fill",width:"20",height:"20"})])])]),_:1},8,["modelValue","placeholder"]),a(S,{modelValue:e.type,"onUpdate:modelValue":s[2]||(s[2]=n=>e.type=n),placeholder:"Select",class:"status-select"},{default:m(()=>[a(t,{key:"1",label:l.$t("all"),value:"all"},null,8,["label"]),a(t,{key:"3",label:l.$t("received"),value:"receive"},null,8,["label"]),a(t,{key:"2",label:l.$t("sent"),value:"send"},null,8,["label"]),a(t,{key:"4",label:l.$t("selectDeleted"),value:"delete"},null,8,["label"]),a(t,{key:"4",label:l.$t("noRecipientTitle"),value:"noone"},null,8,["label"])]),_:1},8,["modelValue"]),a(r(u),{class:"icon",icon:"iconoir:search",onClick:w,width:"20",height:"20"}),e.timeSort===0?(f(),E(r(u),{key:0,class:"icon",onClick:v,icon:"material-symbols-light:timer-arrow-down-outline",width:"28",height:"28"})):(f(),E(r(u),{key:1,class:"icon",onClick:v,icon:"material-symbols-light:timer-arrow-up-outline",width:"28",height:"28"}))]),_:1},8,["email-delete","star-add","star-cancel"])])}}}),_e=q(Q,[["__scopeId","data-v-18a62af2"]]);export{_e as default};

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

View File

@@ -0,0 +1 @@
.email-list-box[data-v-18a62af2]{height:100%;width:100%;overflow:hidden}.search[data-v-18a62af2]{padding-top:5px;padding-bottom:5px}.select[data-v-18a62af2]{position:absolute;width:40px;opacity:0;pointer-events:none}.search-type[data-v-18a62af2]{display:flex;color:var(--el-text-color-regular)}[data-v-18a62af2] .header-actions{padding-top:8px;padding-bottom:8px}.search-input[data-v-18a62af2]{width:100%;max-width:280px;height:28px}.search-input .setting-icon[data-v-18a62af2]{position:relative;top:3px}.status-select[data-v-18a62af2]{margin-bottom:2px;width:102px}.status-select[data-v-18a62af2] .el-select__wrapper{min-height:28px}.input-with-select[data-v-18a62af2]{max-width:200px;border-radius:0 4px 4px 0}[data-v-18a62af2] .input-with-select .el-input-group__append{background-color:var(--el-fill-color-blank)}[data-v-18a62af2] .el-select__wrapper{padding:2px 10px;min-height:28px}.icon[data-v-18a62af2]{cursor:pointer}

View File

@@ -0,0 +1 @@
import{cl as T,b as p,g as i,aQ as d}from"./index-C-CeCRdr.js";function l(){let o;const u=(r,t)=>{e(),o=window.setTimeout(r,t)},e=()=>window.clearTimeout(o);return T(()=>e()),{registerTimeout:u,cancelTimeout:e}}const y=p({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),C=({showAfter:o,hideAfter:u,autoClose:e,open:r,close:t})=>{const{registerTimeout:a}=l(),{registerTimeout:c,cancelTimeout:m}=l();return{onOpen:s=>{a(()=>{r(s);const n=i(e);d(n)&&n>0&&c(()=>{t(s)},n)},i(o))},onClose:s=>{m(),a(()=>{t(s)},i(u))}}};export{C as a,y as u};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{ao as y,af as D,z as L,D as k,I as v,F as x,m as c,g as i,o as m,p as A,ai as E}from"./index-C-CeCRdr.js";import{u as C}from"./email-BtoX8In9.js";import{e as T}from"./index-CLyGXQrq.js";import{a as b,b as R,c as j}from"./email-B8ELHxI0.js";import{s as B,a as z}from"./star-CDDcKDKH.js";import{s as F}from"./time-utils-CZDurPPv.js";import{I as d}from"./iconify-DCkxz_hX.js";import"./el-scrollbar-UsUjrt3r.js";import"./index-mPHfnfYT.js";import"./el-empty-BvlQK5UB.js";import"./index-DbudBMlZ.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-tag-Bx7m9zwB.js";import"./vnode-iQPJucW4.js";import"./event-BB_Ol6Sd.js";import"./index-CDAJLwwD.js";import"./el-checkbox-BC0redCa.js";import"./index-mWeHkudn.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./day-BW7T5RG_.js";import"./dayjs.min-C-kYcQPD.js";/* empty css *//* empty css *//* empty css */import"./index-CKeGEg12.js";import"./index-D2TRjCYc.js";import"./position-C4-LB8VC.js";import"./throttle-CyPLJsF9.js";const pt=Object.assign({name:"email"},{__name:"index",setup(J){const e=C(),s=y(),n=D(),o=L({}),r=k({timeSort:0});v(()=>{e.emailScroll=o,h()}),x(()=>s.currentAccountId,()=>{o.value.refreshList()});function l(){r.timeSort=r.timeSort?0:1,o.value.refreshList()}function f(t){e.contentData.email=t,e.contentData.delType="logic",e.contentData.showStar=!0,e.contentData.showReply=!0,E.push("/message")}const S=new Set;async function h(){for(;;){const t=o.value.latestEmail?.emailId||0;if(!o.value.firstLoad&&n.settings.autoRefreshTime)try{const a=s.currentAccountId,_=r.timeSort,u=await b(t,a);a===s.currentAccountId&&r.timeSort===_&&u.length>0&&u.forEach(p=>{S.add(p.emailId),o.value.addItem(p)})}catch(a){console.error(a)}await F(n.settings.autoRefreshTime*1e3)}}function g(t){e.starScroll?.addItem(t)}function I(t){e.starScroll?.deleteEmail([t.emailId])}function w(t,a){return j(s.currentAccountId,t,r.timeSort,a,0)}return(t,a)=>(m(),c(T,{ref_key:"scroll",ref:o,"cancel-success":I,"star-success":g,getEmailList:w,emailDelete:i(R),"star-add":i(z),"star-cancel":i(B),"time-sort":r.timeSort,actionLeft:"4px",onJump:f},{first:A(()=>[r.timeSort===0?(m(),c(i(d),{key:0,class:"icon",onClick:l,icon:"material-symbols-light:timer-arrow-down-outline",width:"28",height:"28"})):(m(),c(i(d),{key:1,class:"icon",onClick:l,icon:"material-symbols-light:timer-arrow-up-outline",width:"28",height:"28"}))]),_:1},8,["emailDelete","star-add","star-cancel","time-sort"]))}});export{pt as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.el-select-dropdown__loading[data-v-9dc37c65]{display:flex;justify-content:center;align-items:center;height:calc(var(--5e9a6c06) * 3.33px);font-size:calc(var(--5e9a6c06) * .67px)}.circular[data-v-9dc37c65]{display:inline;height:var(--5e9a6c06) + "px";width:var(--5e9a6c06) + "px";animation:loading-rotate-9dc37c65 2s linear infinite}.path[data-v-9dc37c65]{animation:loading-dash-9dc37c65 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.loading-path .dot1[data-v-9dc37c65]{transform:translate(3.75px,3.75px);fill:var(--el-color-primary);animation:custom-spin-move-9dc37c65 1s infinite linear alternate;opacity:.3}.loading-path .dot2[data-v-9dc37c65]{transform:translate(calc(100% - 3.75px),3.75px);fill:var(--el-color-primary);animation:custom-spin-move-9dc37c65 1s infinite linear alternate;opacity:.3;animation-delay:.4s}.loading-path .dot3[data-v-9dc37c65]{transform:translate(3.75px,calc(100% - 3.75px));fill:var(--el-color-primary);animation:custom-spin-move-9dc37c65 1s infinite linear alternate;opacity:.3;animation-delay:1.2s}.loading-path .dot4[data-v-9dc37c65]{transform:translate(calc(100% - 3.75px),calc(100% - 3.75px));fill:var(--el-color-primary);animation:custom-spin-move-9dc37c65 1s infinite linear alternate;opacity:.3;animation-delay:.8s}@keyframes loading-rotate-9dc37c65{to{transform:rotate(360deg)}}@keyframes loading-dash-9dc37c65{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes custom-spin-move-9dc37c65{to{opacity:1}}.is-loading[data-v-9dc37c65]{display:inline-flex;align-items:center;justify-content:center}

View File

@@ -0,0 +1 @@
.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.percentage-value{display:block;margin-top:10px;font-size:28px}.percentage-label{display:block;margin-top:10px;font-size:12px}.analysis-loading[data-v-ea7871c0]{height:100%;width:100%;display:flex;align-items:center;justify-content:center}.analysis[data-v-ea7871c0]{height:100%;padding:20px 20px 30px;gap:20px;background:var(--extra-light-fill);display:grid;grid-auto-rows:min-content}@media (max-width: 1024px){.analysis[data-v-ea7871c0]{padding:15px 15px 30px;gap:15px}}.analysis .title[data-v-ea7871c0]{margin-top:10px;margin-left:15px;font-size:18px;font-weight:500}.analysis .number[data-v-ea7871c0]{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:20px}@media (max-width: 1199px){.analysis .number[data-v-ea7871c0]{grid-template-columns:1fr 1fr;gap:15px}}@media (max-width: 767px){.analysis .number[data-v-ea7871c0]{grid-template-columns:1fr}}.analysis .number .number-item[data-v-ea7871c0]{background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color);padding:21px 20px}.analysis .number .number-item .top[data-v-ea7871c0]{display:grid;justify-content:space-between;align-content:center;grid-template-columns:auto auto}.analysis .number .number-item .top .left[data-v-ea7871c0]{display:grid;gap:5px;grid-auto-rows:min-content}.analysis .number .number-item .top .left>div[data-v-ea7871c0]:first-child{font-size:15px}.analysis .number .number-item .top .left>div[data-v-ea7871c0]:last-child{font-size:13px}.analysis .number .number-item .top .left[data-v-ea7871c0] .el-statistic__number{font-size:26px}.analysis .number .number-item .top .right[data-v-ea7871c0]{display:grid;align-items:center}.analysis .number .number-item .top .right .count-icon[data-v-ea7871c0]{top:3px;position:relative;display:grid;align-items:center;padding:14px;border-radius:8px;background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.analysis .number .number-item .delete-ratio[data-v-ea7871c0]{width:100%;display:grid;grid-template-columns:auto auto;justify-content:start;gap:20px;padding-top:5px;font-size:14px}.analysis .number .number-item .delete-ratio .normal[data-v-ea7871c0]{width:fit-content;color:var(--el-color-success);font-weight:700;margin-left:3px}.analysis .number .number-item .delete-ratio .deleted[data-v-ea7871c0]{width:fit-content;color:var(--el-color-danger);font-weight:700;margin-left:3px}.analysis .picture[data-v-ea7871c0]{display:grid;grid-template-columns:500px 1fr;gap:20px}@media (max-width: 1620px){.analysis .picture[data-v-ea7871c0]{grid-template-columns:1fr}}@media (max-width: 1024px){.analysis .picture[data-v-ea7871c0]{gap:15px}}.analysis .picture .picture-item[data-v-ea7871c0]{background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color)}.analysis .picture .picture-item .source-button[data-v-ea7871c0]{padding-right:15px;display:flex;align-items:start}.analysis .picture .picture-item .source-button[data-v-ea7871c0] .el-radio-button__inner{padding:6px 10px}.analysis .picture .picture-item .sender-pie[data-v-ea7871c0]{height:350px}@media (max-width: 767px){.analysis .picture .picture-item .sender-pie[data-v-ea7871c0]{height:200px}}.analysis .picture .picture-item .increase-line[data-v-ea7871c0]{height:350px}@media (max-width: 767px){.analysis .picture .picture-item .increase-line[data-v-ea7871c0]{height:280px}}.analysis .picture-cs[data-v-ea7871c0]{display:grid;grid-template-columns:1fr 500px;gap:20px}@media (max-width: 1620px){.analysis .picture-cs[data-v-ea7871c0]{grid-template-columns:1fr;gap:15px}}.analysis .picture-cs .picture-cs-item[data-v-ea7871c0]{background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color)}.analysis .picture-cs .picture-cs-item .send-count[data-v-ea7871c0]{height:350px}@media (max-width: 767px){.analysis .picture-cs .picture-cs-item .send-count[data-v-ea7871c0]{height:320px}}.analysis .picture-cs .picture-cs-item .email-column[data-v-ea7871c0]{height:350px}@media (max-width: 767px){.analysis .picture-cs .picture-cs-item .email-column[data-v-ea7871c0]{height:250px}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.box[data-v-1b447be1]{padding:40px}@media (max-width: 767px){.box[data-v-1b447be1]{padding:30px}}.box .update-pwd[data-v-1b447be1]{display:flex;flex-direction:column;gap:15px}.box .title[data-v-1b447be1]{font-size:18px;font-weight:700}.box .container[data-v-1b447be1]{font-size:14px;display:grid;gap:20px;margin-bottom:40px}.box .container .item[data-v-1b447be1]{display:grid;grid-template-columns:70px 1fr;gap:120px;position:relative}.box .container .item .user-name[data-v-1b447be1]{display:grid;grid-template-columns:auto 1fr}.box .container .item .user-name span[data-v-1b447be1]:first-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.box .container .item .edit-name-input[data-v-1b447be1]{position:absolute;bottom:-6px}.box .container .item .edit-name-input .el-input[data-v-1b447be1]{width:min(200px,100vw - 222px)}.box .container .item .edit-name[data-v-1b447be1]{color:#4dabff;padding-left:10px;cursor:pointer}@media (max-width: 767px){.box .container .item[data-v-1b447be1]{gap:70px}}.box .container .item div[data-v-1b447be1]:first-child{font-weight:700}.box .container .item div[data-v-1b447be1]:last-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.box .del-email[data-v-1b447be1]{font-size:14px;display:flex;flex-direction:column;gap:20px}

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

View File

@@ -0,0 +1 @@
.box-404[data-v-08a98c88]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}

View File

@@ -0,0 +1 @@
import{aj as B,ao as U,ak as C,z as p,D as b,c as v,f as s,N as A,ab as i,t,g as V,p as f,an as u,ah as D,o as w,h as y,az as I,aA as T,ai as j}from"./index-C-CeCRdr.js";import{E as z}from"./el-dialog-CaeF0tY4.js";/* empty css *//* empty css *//* empty css */import{d as L}from"./account-oNHhuyWU.js";import{_ as F}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as O}from"./vnode-iQPJucW4.js";import{E as q}from"./index-D2TRjCYc.js";import{E as G}from"./index-CKeGEg12.js";import"./event-BB_Ol6Sd.js";import"./index-DbudBMlZ.js";import"./index-mPHfnfYT.js";const H={class:"box"},J={class:"container"},K={class:"title"},Q={class:"item"},R={key:0,class:"edit-name-input"},W={key:1,class:"user-name"},X={class:"item"},Y={class:"item"},Z={class:"del-email"},x={class:"title"},ee={style:{color:"var(--regular-text-color)"}},se={class:"update-pwd"},te=Object.assign({name:"setting"},{__name:"index",setup(ae){const{t:o}=B(),$=U(),r=C(),c=p(!1),g=p(!1),d=p(null);function P(){d.value=r.user.name,g.value=!0}function S(){if(!d.value){u({message:o("emptyUserNameMsg"),type:"error",plain:!0});return}g.value=!1;let e=d.value;e!==r.user.name&&(r.user.name=d.value,L(r.user.accountId,e).then(()=>{u({message:o("saveSuccessMsg"),type:"success",plain:!0}),$.changeUserAccountName=e}).catch(()=>{r.user.name=e}))}const m=p(!1),a=b({password:"",newPwd:""}),k=()=>{G.confirm(o("delAccountConfirm"),{confirmButtonText:o("confirm"),cancelButtonText:o("cancel"),type:"warning"}).then(()=>{T().then(()=>{localStorage.removeItem("token"),j.replace("/login"),u({message:o("delSuccessMsg"),type:"success",plain:!0})})})};function N(){if(!a.password){u({message:o("emptyPwdMsg"),type:"error",plain:!0});return}if(a.password.length<6){u({message:o("pwdLengthMsg"),type:"error",plain:!0});return}if(a.password!==a.newPwd){u({message:o("confirmPwdFailMsg"),type:"error",plain:!0});return}c.value=!0,I(a.password).then(()=>{u({message:o("saveSuccessMsg"),type:"success",plain:!0}),m.value=!1,c.value=!1,a.password="",a.newPwd=""}).catch(()=>{c.value=!1})}return(e,l)=>{const _=O,h=q,E=z,M=D("perm");return w(),v("div",H,[s("div",J,[s("div",K,t(e.$t("profile")),1),s("div",Q,[s("div",null,t(e.$t("username")),1),s("div",null,[g.value?(w(),v("span",R,[i(_,{modelValue:d.value,"onUpdate:modelValue":l[0]||(l[0]=n=>d.value=n)},null,8,["modelValue"]),s("span",{class:"edit-name",onClick:S},t(e.$t("save")),1)])):(w(),v("span",W,[s("span",null,t(V(r).user.name),1),s("span",{class:"edit-name",onClick:P},t(e.$t("change")),1)]))])]),s("div",X,[s("div",null,t(e.$t("emailAccount")),1),s("div",null,t(V(r).user.email),1)]),s("div",Y,[s("div",null,t(e.$t("password")),1),s("div",null,[i(h,{type:"primary",onClick:l[1]||(l[1]=n=>m.value=!0)},{default:f(()=>[y(t(e.$t("changePwdBtn")),1)]),_:1})])])]),A((w(),v("div",Z,[s("div",x,t(e.$t("deleteUser")),1),s("div",ee,t(e.$t("delAccountMsg")),1),s("div",null,[i(h,{type:"primary",onClick:k},{default:f(()=>[y(t(e.$t("deleteUserBtn")),1)]),_:1})])])),[[M,"my:delete"]]),i(E,{modelValue:m.value,"onUpdate:modelValue":l[4]||(l[4]=n=>m.value=n),title:e.$t("changePassword"),width:"340"},{default:f(()=>[s("div",se,[i(_,{type:"password",placeholder:e.$t("newPassword"),modelValue:a.password,"onUpdate:modelValue":l[2]||(l[2]=n=>a.password=n),autocomplete:"off"},null,8,["placeholder","modelValue"]),i(_,{type:"password",placeholder:e.$t("confirmPassword"),modelValue:a.newPwd,"onUpdate:modelValue":l[3]||(l[3]=n=>a.newPwd=n),autocomplete:"off"},null,8,["placeholder","modelValue"]),i(h,{type:"primary",loading:c.value,onClick:N},{default:f(()=>[y(t(e.$t("save")),1)]),_:1},8,["loading"])])]),_:1},8,["modelValue","title"])])}}}),ge=F(te,[["__scopeId","data-v-1b447be1"]]);export{ge as default};

View File

@@ -0,0 +1 @@
import{ci as j,cj as F,y as i,H as I,g as d,z as c,k as v,I as h,F as y,a1 as K,at as R,aR as S}from"./index-C-CeCRdr.js";const p={prefix:Math.floor(Math.random()*1e4),current:0},_=Symbol("elIdInjection"),D=()=>I()?i(_,p):p,$=s=>{const e=D(),o=j();return F(()=>d(s)||`${o.value}-id-${e.prefix}-${e.current++}`)},f=Symbol("formContextKey"),b=Symbol("formItemContextKey"),E=()=>{const s=i(f,void 0),e=i(b,void 0);return{form:s,formItem:e}},N=(s,{formItemContext:e,disableIdGeneration:o,disableIdManagement:n})=>{o||(o=c(!1)),n||(n=c(!1));const t=c();let u;const a=v(()=>{var l;return!!(!(s.label||s.ariaLabel)&&e&&e.inputIds&&((l=e.inputIds)==null?void 0:l.length)<=1)});return h(()=>{u=y([K(s,"id"),o],([l,m])=>{const r=l??(m?void 0:$().value);r!==t.value&&(e?.removeInputId&&(t.value&&e.removeInputId(t.value),!n?.value&&!m&&r&&e.addInputId(r)),t.value=r)},{immediate:!0})}),R(()=>{u&&u(),e?.removeInputId&&t.value&&e.removeInputId(t.value)}),{isLabeledByFormItem:a,inputId:t}},z=s=>{const e=I();return v(()=>{var o,n;return(n=(o=e?.proxy)==null?void 0:o.$props)==null?void 0:n[s]})},g=(s,e={})=>{const o=c(void 0),n=e.prop?o:z("size"),t=e.global?o:S(),u=e.form?{size:void 0}:i(f,void 0),a=e.formItem?{size:void 0}:i(b,void 0);return v(()=>n.value||d(s)||a?.size||u?.size||t.value||"")},L=s=>{const e=z("disabled"),o=i(f,void 0);return v(()=>e.value||d(s)||o?.disabled||!1)},P=({from:s,replacement:e,scope:o,version:n,ref:t,type:u="API"},a)=>{y(()=>d(a),l=>{},{immediate:!0})};export{g as a,E as b,N as c,L as d,$ as e,b as f,D as g,P as u};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{c as p,ab as o,p as a,g as r,o as m,ai as c,h as _,t as l}from"./index-C-CeCRdr.js";import{E as d}from"./el-empty-BvlQK5UB.js";/* empty css */import{_ as u}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{E as f}from"./index-D2TRjCYc.js";import"./index-DbudBMlZ.js";const y={class:"box-404"},x={__name:"index",setup(E){let s=window.innerWidth<1025;return(e,t)=>{const n=f,i=d;return m(),p("div",y,[o(i,{"image-size":r(s)?120:0,class:"empty",description:e.$t("error404")},{default:a(()=>[o(n,{type:"primary",onClick:t[0]||(t[0]=h=>r(c).replace({name:"layout"}))},{default:a(()=>[_(l(e.$t("home")),1)]),_:1})]),_:1},8,["image-size","description"])])}}},$=u(x,[["__scopeId","data-v-08a98c88"]]);export{$ as default};

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.icon{cursor:pointer}

Some files were not shown because too many files have changed in this diff Show More