From 056948612a45ba3c2fb9bb5adcb88293c1b19997 Mon Sep 17 00:00:00 2001 From: 237899745 <237899745@workyai.cn> Date: Wed, 27 May 2026 20:39:46 +0800 Subject: [PATCH] feat: add Space aggregate login --- admin-frontend/src/api/system.js | 16 + admin-frontend/src/pages/SystemPage.vue | 145 +++++- app-frontend/package-lock.json | 10 + app-frontend/package.json | 1 + app-frontend/src/api/auth.js | 20 + app-frontend/src/api/settings.js | 15 + .../src/components/SocialLoginButtons.vue | 238 +++++++++ app-frontend/src/layouts/AppLayout.vue | 150 +++++- app-frontend/src/pages/LoginPage.vue | 116 ++++- app-frontend/src/pages/RegisterPage.vue | 63 +++ .../src/pages/SocialBindCallbackPage.vue | 87 ++++ app-frontend/src/router/index.js | 2 + app.py | 3 + database.py | 22 +- db/admin.py | 20 + db/migrations.py | 69 +++ db/schema.py | 46 ++ db/users.py | 150 ++++++ routes/__init__.py | 2 + routes/api_auth.py | 28 +- routes/api_social.py | 333 ++++++++++++ services/social_login.py | 306 +++++++++++ static/admin/.vite/manifest.json | 94 ++-- .../assets/AnnouncementsPage-DOwZaaOu.css | 1 - ...gwLIT.js => AnnouncementsPage-Dagm5PzE.js} | 2 +- .../assets/AnnouncementsPage-tpO97PUg.css | 1 + static/admin/assets/EmailPage-BmPCDPYC.css | 1 - static/admin/assets/EmailPage-CTHxGzDv.css | 1 + ...Page-CATruPK6.js => EmailPage-DiZA9Kx_.js} | 2 +- .../admin/assets/FeedbacksPage-CPmSqIaj.css | 1 + ...-BAnFKHSL.js => FeedbacksPage-DrMVqBKf.js} | 2 +- .../admin/assets/FeedbacksPage-mrXjCiV2.css | 1 - static/admin/assets/LogsPage-BUgx3sZr.css | 1 + ...sPage-DFPeq0bL.js => LogsPage-Cy6Q0ave.js} | 2 +- static/admin/assets/LogsPage-D1bozCEo.css | 1 - ...d-yP_dkP6X.css => MetricGrid-BR486o_b.css} | 2 +- ...rid-BnihYB_8.js => MetricGrid-C3Xjc9mZ.js} | 2 +- static/admin/assets/ReportPage-BCQBCnjY.css | 1 - ...age-fzVH-d9u.js => ReportPage-BMEJM5Hr.js} | 2 +- static/admin/assets/ReportPage-IaDpUFfl.css | 1 + static/admin/assets/SecurityPage-C2-mJ7eD.css | 1 + static/admin/assets/SecurityPage-DN76ndc_.css | 1 - ...e-xwMQfhuh.js => SecurityPage-yzYEGeTN.js} | 4 +- static/admin/assets/SettingsPage-BAa-Qu3q.css | 1 - static/admin/assets/SettingsPage-D-iYz1zh.css | 1 + ...e-DRqlQLxJ.js => SettingsPage-DF5fL8gq.js} | 2 +- static/admin/assets/SystemPage-BhhEz4Qz.css | 1 - static/admin/assets/SystemPage-CTs6qr36.css | 1 + static/admin/assets/SystemPage-D3eBPCNe.js | 6 - static/admin/assets/SystemPage-DrM9-RI5.js | 6 + static/admin/assets/UsersPage-BNDnhJe0.css | 1 - static/admin/assets/UsersPage-CgYh6JHW.css | 1 + ...Page-DJZUCpfb.js => UsersPage-RI5S3snx.js} | 2 +- .../{email-px7YBG2O.js => email-Mh1SHQbX.js} | 2 +- ...{index-Dh0BbqTX.css => index-CPs_XZ2s.css} | 2 +- .../{index-C1f9ticl.js => index-DOvMEmc8.js} | 4 +- static/admin/assets/system-CYbWdReq.js | 1 + static/admin/assets/system-ZDPnxnIu.js | 1 - .../{tasks-Bep0SUyu.js => tasks-B7oNpIBD.js} | 2 +- .../{users-te9ySk34.js => users-DzDcz9C_.js} | 2 +- static/admin/index.html | 5 +- static/app/.vite/manifest.json | 483 ++++++++++++------ ...e-DnOxRP7e.js => AccountsPage-B7MLZrfr.js} | 4 +- ...iiBFNme8.css => AccountsPage-DKewJ7S7.css} | 2 +- ...ut-DxoFHO3h.css => AppLayout-CJKAa2WS.css} | 2 +- static/app/assets/AppLayout-D9A8Va7K.js | 1 + static/app/assets/AppLayout-xWeMM3hH.js | 1 - static/app/assets/LoginPage-BtooAZsk.js | 1 + static/app/assets/LoginPage-D5iXLq7p.js | 1 - static/app/assets/LoginPage-DTj5KeC4.css | 1 - static/app/assets/LoginPage-vCVLchWz.css | 1 + static/app/assets/RegisterPage-4xFnBJCQ.js | 1 - static/app/assets/RegisterPage-BOcNcW5D.css | 1 - static/app/assets/RegisterPage-Cb1mme2j.js | 1 + static/app/assets/RegisterPage-LYXwWYc1.css | 1 + .../app/assets/ResetPasswordPage-CUOK0fe1.js | 1 + .../app/assets/ResetPasswordPage-DAB63ins.css | 1 + .../app/assets/ResetPasswordPage-DybfLMAw.css | 1 - .../app/assets/ResetPasswordPage-lX7l6Nbu.js | 1 - static/app/assets/SchedulesPage-0TKGPmUl.js | 1 + ...IuHs5oJ.css => SchedulesPage-Dxq2ghmQ.css} | 2 +- static/app/assets/SchedulesPage-TUv7nqYq.js | 1 - .../app/assets/ScreenshotsPage-30dzddw-.css | 1 - static/app/assets/ScreenshotsPage-7CRd3Hlo.js | 1 - .../app/assets/ScreenshotsPage-BhLfAzHf.css | 1 + static/app/assets/ScreenshotsPage-F6GpvKGW.js | 1 + .../SocialBindCallbackPage-BZgzv_7a.css | 1 + .../assets/SocialBindCallbackPage-DraQ_mks.js | 1 + .../app/assets/SocialLoginButtons-BlVSr6Mm.js | 1 + .../assets/SocialLoginButtons-qO3SCoE7.css | 1 + .../app/assets/VerifyResultPage-BUSE4fL8.js | 1 + ...aaKI.css => VerifyResultPage-BnGv8vyq.css} | 2 +- .../app/assets/VerifyResultPage-bifpPyoE.js | 1 - ...ounts-3bM7Wy59.js => accounts-DzntEHJR.js} | 2 +- static/app/assets/app-BmSIJu6s.js | 2 - static/app/assets/app-CV_JALyE.js | 2 + static/app/assets/aria-DLpFpzDe.js | 1 + static/app/assets/auth-B5cl_nsV.js | 1 + static/app/assets/auth-CX9p6ZYg.js | 1 - static/app/assets/base-CiSqh4F9.css | 1 + static/app/assets/base-xgxQQEpV.js | 1 + static/app/assets/el-alert-DB2IQLpH.js | 12 - static/app/assets/el-alert-DTUOkrAB.js | 12 + static/app/assets/el-button-BRDnKxwT.css | 1 + static/app/assets/el-button-DF1Fi_iE.css | 1 - static/app/assets/el-button-DWxIvzz-.js | 1 - static/app/assets/el-button-LKkD3jQh.js | 1 + static/app/assets/el-card-CfK866jr.js | 1 + static/app/assets/el-card-DfVpO1U5.js | 1 - static/app/assets/el-empty-B4_NEFfq.js | 1 + ...lay-Bd56Lw6C.css => el-empty-D4G4LZ50.css} | 2 +- static/app/assets/el-input-BaZNy9Kg.js | 1 + ...ttp-D6B3r8CH.css => el-input-D6B3r8CH.css} | 0 static/app/assets/el-overlay-C_JJBVfE.js | 1 - static/app/assets/el-overlay-hge8bsIn.js | 1 + static/app/assets/el-overlay-hkg5a9kt.css | 1 + static/app/assets/el-pagination-BY1uI-wO.js | 1 - static/app/assets/el-pagination-kVJ2XlAP.js | 1 + static/app/assets/el-select-B0VMg2td.js | 1 - static/app/assets/el-select-CBs1QjJm.js | 1 + .../app/assets/el-skeleton-item-BLY1jEuR.css | 1 + .../app/assets/el-skeleton-item-CD5Idavp.js | 1 + static/app/assets/http-BoPYlvwK.js | 31 ++ static/app/assets/http-CdvgQxJu.js | 31 -- static/app/assets/index-CoYtSGUZ.js | 1 + .../app/assets/isArrayLikeObject-B5fs56rA.js | 1 + .../app/assets/isArrayLikeObject-BjIRF-cS.js | 1 - static/app/assets/login-BtMsx-ZC.js | 1 - static/app/assets/login-rQcRwu0T.js | 1 + ...tings-Ddo8isuv.js => settings-Db4PmPGC.js} | 2 +- static/app/assets/user-Bl59IefW.js | 1 - static/app/assets/user-BlXB4Zbh.js | 1 + ...vue-DxN60LNb.js => vendor-vue-WbiK4TmU.js} | 2 +- static/app/index.html | 6 +- static/app/login.html | 20 +- tests/test_social_login.py | 46 ++ 136 files changed, 2405 insertions(+), 322 deletions(-) create mode 100644 app-frontend/src/components/SocialLoginButtons.vue create mode 100644 app-frontend/src/pages/SocialBindCallbackPage.vue create mode 100644 routes/api_social.py create mode 100644 services/social_login.py delete mode 100644 static/admin/assets/AnnouncementsPage-DOwZaaOu.css rename static/admin/assets/{AnnouncementsPage-C6UgwLIT.js => AnnouncementsPage-Dagm5PzE.js} (64%) create mode 100644 static/admin/assets/AnnouncementsPage-tpO97PUg.css delete mode 100644 static/admin/assets/EmailPage-BmPCDPYC.css create mode 100644 static/admin/assets/EmailPage-CTHxGzDv.css rename static/admin/assets/{EmailPage-CATruPK6.js => EmailPage-DiZA9Kx_.js} (98%) create mode 100644 static/admin/assets/FeedbacksPage-CPmSqIaj.css rename static/admin/assets/{FeedbacksPage-BAnFKHSL.js => FeedbacksPage-DrMVqBKf.js} (96%) delete mode 100644 static/admin/assets/FeedbacksPage-mrXjCiV2.css create mode 100644 static/admin/assets/LogsPage-BUgx3sZr.css rename static/admin/assets/{LogsPage-DFPeq0bL.js => LogsPage-Cy6Q0ave.js} (97%) delete mode 100644 static/admin/assets/LogsPage-D1bozCEo.css rename static/admin/assets/{MetricGrid-yP_dkP6X.css => MetricGrid-BR486o_b.css} (50%) rename static/admin/assets/{MetricGrid-BnihYB_8.js => MetricGrid-C3Xjc9mZ.js} (91%) delete mode 100644 static/admin/assets/ReportPage-BCQBCnjY.css rename static/admin/assets/{ReportPage-fzVH-d9u.js => ReportPage-BMEJM5Hr.js} (98%) create mode 100644 static/admin/assets/ReportPage-IaDpUFfl.css create mode 100644 static/admin/assets/SecurityPage-C2-mJ7eD.css delete mode 100644 static/admin/assets/SecurityPage-DN76ndc_.css rename static/admin/assets/{SecurityPage-xwMQfhuh.js => SecurityPage-yzYEGeTN.js} (99%) delete mode 100644 static/admin/assets/SettingsPage-BAa-Qu3q.css create mode 100644 static/admin/assets/SettingsPage-D-iYz1zh.css rename static/admin/assets/{SettingsPage-DRqlQLxJ.js => SettingsPage-DF5fL8gq.js} (98%) delete mode 100644 static/admin/assets/SystemPage-BhhEz4Qz.css create mode 100644 static/admin/assets/SystemPage-CTs6qr36.css delete mode 100644 static/admin/assets/SystemPage-D3eBPCNe.js create mode 100644 static/admin/assets/SystemPage-DrM9-RI5.js delete mode 100644 static/admin/assets/UsersPage-BNDnhJe0.css create mode 100644 static/admin/assets/UsersPage-CgYh6JHW.css rename static/admin/assets/{UsersPage-DJZUCpfb.js => UsersPage-RI5S3snx.js} (98%) rename static/admin/assets/{email-px7YBG2O.js => email-Mh1SHQbX.js} (88%) rename static/admin/assets/{index-Dh0BbqTX.css => index-CPs_XZ2s.css} (66%) rename static/admin/assets/{index-C1f9ticl.js => index-DOvMEmc8.js} (90%) create mode 100644 static/admin/assets/system-CYbWdReq.js delete mode 100644 static/admin/assets/system-ZDPnxnIu.js rename static/admin/assets/{tasks-Bep0SUyu.js => tasks-B7oNpIBD.js} (93%) rename static/admin/assets/{users-te9ySk34.js => users-DzDcz9C_.js} (90%) rename static/app/assets/{AccountsPage-DnOxRP7e.js => AccountsPage-B7MLZrfr.js} (76%) rename static/app/assets/{AccountsPage-iiBFNme8.css => AccountsPage-DKewJ7S7.css} (94%) rename static/app/assets/{AppLayout-DxoFHO3h.css => AppLayout-CJKAa2WS.css} (94%) create mode 100644 static/app/assets/AppLayout-D9A8Va7K.js delete mode 100644 static/app/assets/AppLayout-xWeMM3hH.js create mode 100644 static/app/assets/LoginPage-BtooAZsk.js delete mode 100644 static/app/assets/LoginPage-D5iXLq7p.js delete mode 100644 static/app/assets/LoginPage-DTj5KeC4.css create mode 100644 static/app/assets/LoginPage-vCVLchWz.css delete mode 100644 static/app/assets/RegisterPage-4xFnBJCQ.js delete mode 100644 static/app/assets/RegisterPage-BOcNcW5D.css create mode 100644 static/app/assets/RegisterPage-Cb1mme2j.js create mode 100644 static/app/assets/RegisterPage-LYXwWYc1.css create mode 100644 static/app/assets/ResetPasswordPage-CUOK0fe1.js create mode 100644 static/app/assets/ResetPasswordPage-DAB63ins.css delete mode 100644 static/app/assets/ResetPasswordPage-DybfLMAw.css delete mode 100644 static/app/assets/ResetPasswordPage-lX7l6Nbu.js create mode 100644 static/app/assets/SchedulesPage-0TKGPmUl.js rename static/app/assets/{SchedulesPage-BIuHs5oJ.css => SchedulesPage-Dxq2ghmQ.css} (89%) delete mode 100644 static/app/assets/SchedulesPage-TUv7nqYq.js delete mode 100644 static/app/assets/ScreenshotsPage-30dzddw-.css delete mode 100644 static/app/assets/ScreenshotsPage-7CRd3Hlo.js create mode 100644 static/app/assets/ScreenshotsPage-BhLfAzHf.css create mode 100644 static/app/assets/ScreenshotsPage-F6GpvKGW.js create mode 100644 static/app/assets/SocialBindCallbackPage-BZgzv_7a.css create mode 100644 static/app/assets/SocialBindCallbackPage-DraQ_mks.js create mode 100644 static/app/assets/SocialLoginButtons-BlVSr6Mm.js create mode 100644 static/app/assets/SocialLoginButtons-qO3SCoE7.css create mode 100644 static/app/assets/VerifyResultPage-BUSE4fL8.js rename static/app/assets/{VerifyResultPage-efSXaaKI.css => VerifyResultPage-BnGv8vyq.css} (78%) delete mode 100644 static/app/assets/VerifyResultPage-bifpPyoE.js rename static/app/assets/{accounts-3bM7Wy59.js => accounts-DzntEHJR.js} (93%) delete mode 100644 static/app/assets/app-BmSIJu6s.js create mode 100644 static/app/assets/app-CV_JALyE.js create mode 100644 static/app/assets/aria-DLpFpzDe.js create mode 100644 static/app/assets/auth-B5cl_nsV.js delete mode 100644 static/app/assets/auth-CX9p6ZYg.js create mode 100644 static/app/assets/base-CiSqh4F9.css create mode 100644 static/app/assets/base-xgxQQEpV.js delete mode 100644 static/app/assets/el-alert-DB2IQLpH.js create mode 100644 static/app/assets/el-alert-DTUOkrAB.js create mode 100644 static/app/assets/el-button-BRDnKxwT.css delete mode 100644 static/app/assets/el-button-DF1Fi_iE.css delete mode 100644 static/app/assets/el-button-DWxIvzz-.js create mode 100644 static/app/assets/el-button-LKkD3jQh.js create mode 100644 static/app/assets/el-card-CfK866jr.js delete mode 100644 static/app/assets/el-card-DfVpO1U5.js create mode 100644 static/app/assets/el-empty-B4_NEFfq.js rename static/app/assets/{el-overlay-Bd56Lw6C.css => el-empty-D4G4LZ50.css} (66%) create mode 100644 static/app/assets/el-input-BaZNy9Kg.js rename static/app/assets/{http-D6B3r8CH.css => el-input-D6B3r8CH.css} (100%) delete mode 100644 static/app/assets/el-overlay-C_JJBVfE.js create mode 100644 static/app/assets/el-overlay-hge8bsIn.js create mode 100644 static/app/assets/el-overlay-hkg5a9kt.css delete mode 100644 static/app/assets/el-pagination-BY1uI-wO.js create mode 100644 static/app/assets/el-pagination-kVJ2XlAP.js delete mode 100644 static/app/assets/el-select-B0VMg2td.js create mode 100644 static/app/assets/el-select-CBs1QjJm.js create mode 100644 static/app/assets/el-skeleton-item-BLY1jEuR.css create mode 100644 static/app/assets/el-skeleton-item-CD5Idavp.js create mode 100644 static/app/assets/http-BoPYlvwK.js delete mode 100644 static/app/assets/http-CdvgQxJu.js create mode 100644 static/app/assets/index-CoYtSGUZ.js create mode 100644 static/app/assets/isArrayLikeObject-B5fs56rA.js delete mode 100644 static/app/assets/isArrayLikeObject-BjIRF-cS.js delete mode 100644 static/app/assets/login-BtMsx-ZC.js create mode 100644 static/app/assets/login-rQcRwu0T.js rename static/app/assets/{settings-Ddo8isuv.js => settings-Db4PmPGC.js} (50%) delete mode 100644 static/app/assets/user-Bl59IefW.js create mode 100644 static/app/assets/user-BlXB4Zbh.js rename static/app/assets/{vendor-vue-DxN60LNb.js => vendor-vue-WbiK4TmU.js} (99%) create mode 100644 tests/test_social_login.py diff --git a/admin-frontend/src/api/system.js b/admin-frontend/src/api/system.js index c5afaf1..6364e1e 100644 --- a/admin-frontend/src/api/system.js +++ b/admin-frontend/src/api/system.js @@ -20,3 +20,19 @@ export async function executeScheduleNow() { const { data } = await api.post('/schedule/execute', {}) return data } + +export async function fetchSocialLoginConfig() { + const { data } = await api.get('/social-login/config') + return data +} + +export async function updateSocialLoginConfig(payload) { + const { data } = await api.post('/social-login/config', payload || {}) + systemConfigGetter.clear() + return data +} + +export async function testSocialLoginConfig(payload) { + const { data } = await api.post('/social-login/test', payload || {}) + return data +} diff --git a/admin-frontend/src/pages/SystemPage.vue b/admin-frontend/src/pages/SystemPage.vue index 0de2b02..3904669 100644 --- a/admin-frontend/src/pages/SystemPage.vue +++ b/admin-frontend/src/pages/SystemPage.vue @@ -2,7 +2,7 @@ import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' -import { fetchSystemConfig, updateSystemConfig } from '../api/system' +import { fetchSocialLoginConfig, fetchSystemConfig, testSocialLoginConfig, updateSocialLoginConfig, updateSystemConfig } from '../api/system' import { fetchKdocsQr, fetchKdocsStatus, clearKdocsLogin } from '../api/kdocs' import { fetchProxyConfig, testProxy, updateProxyConfig } from '../api/proxy' import { getCachedKdocsStatus, preloadKdocsStatus, updateCachedKdocsStatus } from '../utils/kdocsStatusCache' @@ -22,6 +22,21 @@ const autoApproveEnabled = ref(false) const autoApproveHourlyLimit = ref(10) const autoApproveVipDays = ref(7) +const socialLoginEnabled = ref(false) +const socialLoginEndpoint = ref('https://www.spacezs.cn/connect.php') +const socialLoginAppid = ref('') +const socialLoginAppkey = ref('') +const socialLoginAppkeyMasked = ref('') +const socialLoginAppkeyConfigured = ref(false) +const socialLoginProviders = ref(['wx']) +const socialLoginSaving = ref(false) +const socialLoginTesting = ref(false) +const socialProviderOptions = [ + { label: 'QQ', value: 'qq' }, + { label: '微信', value: 'wx' }, + { label: '支付宝', value: 'alipay' }, +] + const kdocsEnabled = ref(false) const kdocsDocUrl = ref('') const kdocsDefaultUnit = ref('') @@ -83,9 +98,10 @@ function setKdocsHint(message) { async function loadAll() { loading.value = true try { - const [system, proxy] = await Promise.all([ + const [system, proxy, social] = await Promise.all([ fetchSystemConfig(), fetchProxyConfig(), + fetchSocialLoginConfig(), ]) maxConcurrentGlobal.value = system.max_concurrent_global ?? 2 @@ -112,6 +128,16 @@ async function loadAll() { kdocsRowEnd.value = system.kdocs_row_end ?? 0 kdocsAdminNotifyEnabled.value = (system.kdocs_admin_notify_enabled ?? 0) === 1 kdocsAdminNotifyEmail.value = system.kdocs_admin_notify_email || '' + + socialLoginEnabled.value = (social.social_login_enabled ?? 0) === 1 + socialLoginEndpoint.value = social.social_login_endpoint || 'https://www.spacezs.cn/connect.php' + socialLoginAppid.value = social.social_login_appid || '' + socialLoginAppkey.value = '' + socialLoginAppkeyMasked.value = social.social_login_appkey_masked || '' + socialLoginAppkeyConfigured.value = Boolean(social.social_login_appkey_configured) + socialLoginProviders.value = Array.isArray(social.social_login_providers) && social.social_login_providers.length + ? social.social_login_providers + : ['wx'] } catch { // handled by interceptor } finally { @@ -233,6 +259,78 @@ async function saveAutoApprove() { } } +function socialLoginPayload() { + return { + social_login_enabled: socialLoginEnabled.value ? 1 : 0, + social_login_endpoint: socialLoginEndpoint.value.trim() || 'https://www.spacezs.cn/connect.php', + social_login_appid: socialLoginAppid.value.trim(), + social_login_appkey: socialLoginAppkey.value.trim(), + social_login_providers: socialLoginProviders.value, + } +} + +function validateSocialLoginForm() { + if (!socialLoginEnabled.value) return true + if (!socialLoginProviders.value.length) { + ElMessage.error('请选择至少一种登录方式') + return false + } + if (!socialLoginEndpoint.value.trim()) { + ElMessage.error('请输入聚合接口地址') + return false + } + if (!socialLoginAppid.value.trim()) { + ElMessage.error('请输入 APPID') + return false + } + if (!socialLoginAppkey.value.trim() && !socialLoginAppkeyConfigured.value) { + ElMessage.error('请输入 APPKEY') + return false + } + return true +} + +async function saveSocialLogin() { + if (!validateSocialLoginForm()) return + socialLoginSaving.value = true + try { + const res = await updateSocialLoginConfig(socialLoginPayload()) + const cfg = res?.config || {} + socialLoginAppkey.value = '' + socialLoginAppkeyMasked.value = cfg.social_login_appkey_masked || socialLoginAppkeyMasked.value + socialLoginAppkeyConfigured.value = Boolean(cfg.social_login_appkey_configured) + ElMessage.success(res?.message || '聚合登录配置已保存') + } catch { + // handled by interceptor + } finally { + socialLoginSaving.value = false + } +} + +async function onTestSocialLogin() { + if (!validateSocialLoginForm()) return + socialLoginTesting.value = true + try { + const url = new URL(window.location.href) + url.pathname = '/login' + url.search = '' + url.hash = '' + const provider = socialLoginProviders.value[0] || 'wx' + const res = await testSocialLoginConfig({ + ...socialLoginPayload(), + provider, + redirect_uri: url.toString(), + }) + await ElMessageBox.alert(res?.success ? '连接正常' : '测试完成', '聚合登录测试', { + confirmButtonText: '知道了', + }) + } catch { + // handled by interceptor + } finally { + socialLoginTesting.value = false + } +} + async function saveKdocsConfig() { const payload = { kdocs_enabled: kdocsEnabled.value ? 1 : 0, @@ -459,6 +557,43 @@ onMounted(loadAll) 保存注册设置 + + +

聚合登录

+
QQ、微信、支付宝快捷登录
+ + + + + + + + + + {{ item.label }} + + + + + + + + + + + + + + +
当前:{{ socialLoginAppkeyMasked }}
+
+
+ +
+ 保存聚合登录 + 测试连接 +
+
@@ -743,6 +878,12 @@ onMounted(loadAll) } } +@media (min-width: 1201px) { + .social-card { + grid-column: span 3; + } +} + @media (max-width: 768px) { .config-grid { grid-template-columns: 1fr; diff --git a/app-frontend/package-lock.json b/app-frontend/package-lock.json index 68b8dd6..e149b46 100644 --- a/app-frontend/package-lock.json +++ b/app-frontend/package-lock.json @@ -12,6 +12,7 @@ "axios": "^1.12.2", "element-plus": "^2.11.3", "pinia": "^3.0.3", + "qrcode.vue": "^3.6.0", "socket.io-client": "^4.8.1", "vue": "^3.5.24", "vue-router": "^4.6.3" @@ -1991,6 +1992,15 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, + "node_modules/qrcode.vue": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.9.1.tgz", + "integrity": "sha512-CpHVRz5iveqwRFh+nzzSYV9hPWU6q+YSOKyq5ZievjQIBv4bIIDzajGgtNz/yYSlczjAkYM3GNAQJHwwCukMEQ==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", diff --git a/app-frontend/package.json b/app-frontend/package.json index 657c4df..f5b7316 100644 --- a/app-frontend/package.json +++ b/app-frontend/package.json @@ -13,6 +13,7 @@ "axios": "^1.12.2", "element-plus": "^2.11.3", "pinia": "^3.0.3", + "qrcode.vue": "^3.6.0", "socket.io-client": "^4.8.1", "vue": "^3.5.24", "vue-router": "^4.6.3" diff --git a/app-frontend/src/api/auth.js b/app-frontend/src/api/auth.js index 76a8414..16b1757 100644 --- a/app-frontend/src/api/auth.js +++ b/app-frontend/src/api/auth.js @@ -44,3 +44,23 @@ export async function confirmPasswordReset(payload) { const { data } = await publicApi.post('/reset-password-confirm', payload) return data } + +export async function fetchSocialConfig() { + const { data } = await publicApi.get('/auth/social/config') + return data +} + +export async function socialLoginUrl(payload) { + const { data } = await publicApi.post('/auth/social/login-url', payload || {}) + return data +} + +export async function socialPoll(payload) { + const { data } = await publicApi.post('/auth/social/poll', payload || {}) + return data +} + +export async function socialCallback(payload) { + const { data } = await publicApi.post('/auth/social/callback', payload || {}) + return data +} diff --git a/app-frontend/src/api/settings.js b/app-frontend/src/api/settings.js index 9636e47..fd05a65 100644 --- a/app-frontend/src/api/settings.js +++ b/app-frontend/src/api/settings.js @@ -69,3 +69,18 @@ export async function reportUserPasskeyClientError(payload) { const { data } = await publicApi.post('/user/passkeys/client-error', payload || {}) return data } + +export async function fetchSocialBindings() { + const { data } = await publicApi.get('/user/social-bindings') + return data +} + +export async function bindSocial(payload) { + const { data } = await publicApi.post('/user/social-bindings', payload || {}) + return data +} + +export async function unbindSocial(provider) { + const { data } = await publicApi.delete(`/user/social-bindings/${encodeURIComponent(provider)}`) + return data +} diff --git a/app-frontend/src/components/SocialLoginButtons.vue b/app-frontend/src/components/SocialLoginButtons.vue new file mode 100644 index 0000000..5fd6c44 --- /dev/null +++ b/app-frontend/src/components/SocialLoginButtons.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/app-frontend/src/layouts/AppLayout.vue b/app-frontend/src/layouts/AppLayout.vue index 99d47c2..daa386d 100644 --- a/app-frontend/src/layouts/AppLayout.vue +++ b/app-frontend/src/layouts/AppLayout.vue @@ -7,8 +7,10 @@ import 'element-plus/es/components/message/style/css' import 'element-plus/es/components/message-box/style/css' import { fetchActiveAnnouncement, dismissAnnouncement } from '../api/announcements' +import { fetchSocialConfig } from '../api/auth' import { fetchMyFeedbacks, submitFeedback } from '../api/feedback' import { + bindSocial, bindEmail, changePassword, createUserPasskeyOptions, @@ -18,11 +20,14 @@ import { fetchUserPasskeys, fetchUserEmail, fetchKdocsSettings, + fetchSocialBindings, reportUserPasskeyClientError, + unbindSocial, unbindEmail, updateKdocsSettings, updateEmailNotify, } from '../api/settings' +import SocialLoginButtons from '../components/SocialLoginButtons.vue' import { useUserStore } from '../stores/user' import { createPasskey, getPasskeyClientErrorMessage, isPasskeyAvailable } from '../utils/passkey' import { validateStrongPassword } from '../utils/password' @@ -132,6 +137,12 @@ const passkeyRegisterOptions = ref(null) const passkeyRegisterOptionsAt = ref(0) const PASSKEY_OPTIONS_PREFETCH_MAX_AGE_MS = 240000 +const socialConfig = ref({ enabled: false, providers: [] }) +const socialBindings = ref([]) +const socialBindingsLoading = ref(false) +const socialBindLoading = ref(false) +const pendingSettingsBindKey = 'zsglpt_social_settings_bind_token' + function syncIsMobile() { isMobile.value = Boolean(mediaQuery?.matches) if (!isMobile.value) drawerOpen.value = false @@ -262,7 +273,76 @@ async function openSettings() { } async function loadSettings() { - await Promise.all([loadEmailInfo(), loadEmailNotify(), loadKdocsSettings(), loadPasskeys()]) + await Promise.all([loadEmailInfo(), loadEmailNotify(), loadKdocsSettings(), loadPasskeys(), loadSocialBindings()]) +} + +function socialBindRedirectUri() { + const url = new URL(window.location.href) + url.pathname = '/social-bind-callback' + url.search = '' + url.hash = '' + return url.toString() +} + +async function loadSocialBindings() { + socialBindingsLoading.value = true + try { + const [config, bindings] = await Promise.all([fetchSocialConfig(), fetchSocialBindings()]) + socialConfig.value = { + enabled: Boolean(config?.enabled), + providers: Array.isArray(config?.providers) ? config.providers : [], + } + socialBindings.value = Array.isArray(bindings?.items) ? bindings.items : [] + await consumePendingSocialBind() + } catch { + socialConfig.value = { enabled: false, providers: [] } + socialBindings.value = [] + } finally { + socialBindingsLoading.value = false + } +} + +async function consumePendingSocialBind() { + let token = '' + try { + token = window.sessionStorage.getItem(pendingSettingsBindKey) || '' + } catch { + token = '' + } + if (!token || socialBindLoading.value) return + socialBindLoading.value = true + try { + await bindSocial({ bind_token: token }) + window.sessionStorage.removeItem(pendingSettingsBindKey) + ElMessage.success('快捷登录已绑定') + const bindings = await fetchSocialBindings() + socialBindings.value = Array.isArray(bindings?.items) ? bindings.items : [] + } catch (e) { + const data = e?.response?.data + ElMessage.error(data?.error || '快捷登录绑定失败') + } finally { + socialBindLoading.value = false + } +} + +async function onUnbindSocial(item) { + try { + await ElMessageBox.confirm(`确定解绑${item?.provider_label || '快捷登录'}吗?`, '解绑快捷登录', { + confirmButtonText: '解绑', + cancelButtonText: '取消', + type: 'warning', + }) + } catch { + return + } + try { + await unbindSocial(item.provider) + ElMessage.success('已解绑') + await loadSocialBindings() + } catch (e) { + const data = e?.response?.data + ElMessage.error(data?.error || '解绑失败') + } } async function loadEmailInfo() { @@ -838,6 +918,37 @@ async function dismissAnnouncementPermanently() { + +
+ + +
+
+
@@ -1101,6 +1212,43 @@ async function dismissAnnouncementPermanently() { margin-top: 10px; } +.social-binding-list { + display: grid; + gap: 10px; + margin-bottom: 14px; +} + +.social-binding-row { + min-height: 56px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + padding: 10px 12px; + border: 1px solid var(--app-border); + border-radius: 10px; + background: #fff; +} + +.social-binding-main { + min-width: 0; +} + +.social-binding-title { + display: flex; + align-items: center; + gap: 8px; + font-weight: 800; +} + +.social-binding-meta { + margin-top: 4px; + font-size: 12px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + .vip-info { margin-top: 12px; display: grid; diff --git a/app-frontend/src/pages/LoginPage.vue b/app-frontend/src/pages/LoginPage.vue index a7b3e83..165e5bf 100644 --- a/app-frontend/src/pages/LoginPage.vue +++ b/app-frontend/src/pages/LoginPage.vue @@ -1,6 +1,8 @@ + + + + diff --git a/app-frontend/src/router/index.js b/app-frontend/src/router/index.js index 6e35aa2..40e791e 100644 --- a/app-frontend/src/router/index.js +++ b/app-frontend/src/router/index.js @@ -3,6 +3,7 @@ import { createRouter, createWebHistory } from 'vue-router' const LoginPage = () => import('../pages/LoginPage.vue') const RegisterPage = () => import('../pages/RegisterPage.vue') const ResetPasswordPage = () => import('../pages/ResetPasswordPage.vue') +const SocialBindCallbackPage = () => import('../pages/SocialBindCallbackPage.vue') const VerifyResultPage = () => import('../pages/VerifyResultPage.vue') const AppLayout = () => import('../layouts/AppLayout.vue') @@ -15,6 +16,7 @@ const routes = [ { path: '/login', name: 'login', component: LoginPage }, { path: '/register', name: 'register', component: RegisterPage }, { path: '/reset-password/:token', name: 'reset_password', component: ResetPasswordPage }, + { path: '/social-bind-callback', name: 'social_bind_callback', component: SocialBindCallbackPage }, { path: '/api/verify-email/:token', name: 'verify_email', component: VerifyResultPage }, { path: '/api/verify-bind-email/:token', name: 'verify_bind_email', component: VerifyResultPage }, { diff --git a/app.py b/app.py index be6f0a2..c2b9c22 100644 --- a/app.py +++ b/app.py @@ -218,6 +218,9 @@ def enforce_csrf_protection(): "/api/login", "/api/auth/login", "/api/generate_captcha", + "/api/auth/social/login-url", + "/api/auth/social/poll", + "/api/auth/social/callback", "/yuyx/api/passkeys/login/options", "/yuyx/api/passkeys/login/verify", "/api/passkeys/login/options", diff --git a/database.py b/database.py index 575e508..96f5d84 100644 --- a/database.py +++ b/database.py @@ -105,12 +105,19 @@ from db.schedules import ( from db.tasks import create_task_log, delete_old_task_logs, get_task_logs, get_task_stats, get_user_run_stats from db.users import ( approve_user, + cleanup_expired_social_pending_binds, create_user, + create_social_pending_bind, delete_user, + delete_social_login_binding, + delete_social_pending_bind, extend_user_vip, + find_social_login_binding, + find_user_social_login_binding, get_all_users, get_users_count, get_pending_users, + get_social_pending_bind, get_user_by_id, get_user_by_username, get_user_kdocs_settings, @@ -122,7 +129,10 @@ from db.users import ( remove_user_vip, set_default_vip_days, set_user_vip, + list_social_login_bindings, + update_social_login_binding_profile, update_user_kdocs_settings, + upsert_social_login_binding, verify_user, ) from db.security import record_login_context @@ -134,7 +144,7 @@ logger = get_logger(__name__) DB_FILE = config.DB_FILE # 数据库版本 (用于迁移管理) -DB_VERSION = 21 +DB_VERSION = 22 # ==================== 系统配置缓存(P1 / O-03) ==================== @@ -261,6 +271,11 @@ def update_system_config( kdocs_row_start=None, kdocs_row_end=None, db_slow_query_ms=None, + social_login_enabled=None, + social_login_endpoint=None, + social_login_appid=None, + social_login_appkey=None, + social_login_providers=None, ): """更新系统配置(写入后立即失效缓存)。""" ok = _update_system_config( @@ -290,6 +305,11 @@ def update_system_config( kdocs_row_start=kdocs_row_start, kdocs_row_end=kdocs_row_end, db_slow_query_ms=db_slow_query_ms, + social_login_enabled=social_login_enabled, + social_login_endpoint=social_login_endpoint, + social_login_appid=social_login_appid, + social_login_appkey=social_login_appkey, + social_login_providers=social_login_providers, ) if ok: invalidate_system_config_cache() diff --git a/db/admin.py b/db/admin.py index b9b5255..a178af0 100644 --- a/db/admin.py +++ b/db/admin.py @@ -42,6 +42,11 @@ _DEFAULT_SYSTEM_CONFIG = { "kdocs_admin_notify_email": "", "kdocs_row_start": 0, "kdocs_row_end": 0, + "social_login_enabled": 0, + "social_login_endpoint": "https://www.spacezs.cn/connect.php", + "social_login_appid": "", + "social_login_appkey": "", + "social_login_providers": "qq,wx,alipay", } _SYSTEM_CONFIG_UPDATERS = ( @@ -71,6 +76,11 @@ _SYSTEM_CONFIG_UPDATERS = ( ("kdocs_admin_notify_email", "kdocs_admin_notify_email"), ("kdocs_row_start", "kdocs_row_start"), ("kdocs_row_end", "kdocs_row_end"), + ("social_login_enabled", "social_login_enabled"), + ("social_login_endpoint", "social_login_endpoint"), + ("social_login_appid", "social_login_appid"), + ("social_login_appkey", "social_login_appkey"), + ("social_login_providers", "social_login_providers"), ) @@ -316,6 +326,11 @@ def update_system_config( kdocs_row_start=None, kdocs_row_end=None, db_slow_query_ms=None, + social_login_enabled=None, + social_login_endpoint=None, + social_login_appid=None, + social_login_appkey=None, + social_login_providers=None, ) -> bool: """更新系统配置(仅更新DB,不做缓存处理)。""" arg_values = { @@ -345,6 +360,11 @@ def update_system_config( "kdocs_row_start": kdocs_row_start, "kdocs_row_end": kdocs_row_end, "db_slow_query_ms": db_slow_query_ms, + "social_login_enabled": social_login_enabled, + "social_login_endpoint": social_login_endpoint, + "social_login_appid": social_login_appid, + "social_login_appkey": social_login_appkey, + "social_login_providers": social_login_providers, } updates = [] diff --git a/db/migrations.py b/db/migrations.py index 573cb96..052d13a 100644 --- a/db/migrations.py +++ b/db/migrations.py @@ -76,6 +76,7 @@ def _get_migration_steps(): (19, _migrate_to_v19), (20, _migrate_to_v20), (21, _migrate_to_v21), + (22, _migrate_to_v22), ] @@ -933,3 +934,71 @@ def _migrate_to_v21(conn): ) conn.commit() + + +def _migrate_to_v22(conn): + """迁移到版本22 - Space 聚合登录配置、绑定与短期待绑定凭证。""" + cursor = conn.cursor() + + system_columns = _get_table_columns(cursor, "system_config") + system_fields = [ + ("social_login_enabled", "INTEGER DEFAULT 0"), + ("social_login_endpoint", "TEXT DEFAULT 'https://www.spacezs.cn/connect.php'"), + ("social_login_appid", "TEXT DEFAULT ''"), + ("social_login_appkey", "TEXT DEFAULT ''"), + ("social_login_providers", "TEXT DEFAULT 'qq,wx,alipay'"), + ] + for field, ddl in system_fields: + _add_column_if_missing( + cursor, + "system_config", + system_columns, + field, + ddl, + ok_message=f" [OK] 添加 system_config.{field} 字段", + ) + + cursor.execute( + """ + CREATE TABLE IF NOT EXISTS social_login_bindings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + provider TEXT NOT NULL, + social_uid TEXT NOT NULL, + nickname TEXT DEFAULT '', + avatar_url TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_login_at TIMESTAMP, + UNIQUE (provider, social_uid), + UNIQUE (user_id, provider), + FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE + ) + """ + ) + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_login_bindings_user ON social_login_bindings(user_id)") + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_social_login_bindings_provider_uid ON social_login_bindings(provider, social_uid)" + ) + + cursor.execute( + """ + CREATE TABLE IF NOT EXISTS social_pending_binds ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + token TEXT NOT NULL UNIQUE, + provider TEXT NOT NULL, + social_uid TEXT NOT NULL, + nickname TEXT DEFAULT '', + avatar_url TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + expires_at TIMESTAMP NOT NULL + ) + """ + ) + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_token ON social_pending_binds(token)") + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_social_pending_binds_provider_uid ON social_pending_binds(provider, social_uid)" + ) + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_expires ON social_pending_binds(expires_at)") + + conn.commit() diff --git a/db/schema.py b/db/schema.py index 101fd32..5f21b20 100644 --- a/db/schema.py +++ b/db/schema.py @@ -246,11 +246,52 @@ def ensure_schema(conn) -> None: kdocs_admin_notify_email TEXT DEFAULT '', kdocs_row_start INTEGER DEFAULT 0, kdocs_row_end INTEGER DEFAULT 0, + social_login_enabled INTEGER DEFAULT 0, + social_login_endpoint TEXT DEFAULT 'https://www.spacezs.cn/connect.php', + social_login_appid TEXT DEFAULT '', + social_login_appkey TEXT DEFAULT '', + social_login_providers TEXT DEFAULT 'qq,wx,alipay', updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """ ) + # 聚合登录绑定表 + cursor.execute( + """ + CREATE TABLE IF NOT EXISTS social_login_bindings ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + user_id INTEGER NOT NULL, + provider TEXT NOT NULL, + social_uid TEXT NOT NULL, + nickname TEXT DEFAULT '', + avatar_url TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + last_login_at TIMESTAMP, + UNIQUE (provider, social_uid), + UNIQUE (user_id, provider), + FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE + ) + """ + ) + + # 聚合登录短期待绑定凭证表 + cursor.execute( + """ + CREATE TABLE IF NOT EXISTS social_pending_binds ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + token TEXT NOT NULL UNIQUE, + provider TEXT NOT NULL, + social_uid TEXT NOT NULL, + nickname TEXT DEFAULT '', + avatar_url TEXT DEFAULT '', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + expires_at TIMESTAMP NOT NULL + ) + """ + ) + # 任务日志表 cursor.execute( """ @@ -389,6 +430,11 @@ def ensure_schema(conn) -> None: cursor.execute("CREATE INDEX IF NOT EXISTS idx_login_ips_user ON login_ips(user_id)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_passkeys_owner ON passkeys(owner_type, owner_id)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_passkeys_owner_last_used ON passkeys(owner_type, owner_id, last_used_at)") + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_login_bindings_user ON social_login_bindings(user_id)") + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_login_bindings_provider_uid ON social_login_bindings(provider, social_uid)") + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_token ON social_pending_binds(token)") + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_provider_uid ON social_pending_binds(provider, social_uid)") + cursor.execute("CREATE INDEX IF NOT EXISTS idx_social_pending_binds_expires ON social_pending_binds(expires_at)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_threat_events_created_at ON threat_events(created_at)") cursor.execute("CREATE INDEX IF NOT EXISTS idx_threat_events_ip ON threat_events(ip)") diff --git a/db/users.py b/db/users.py index 1a6e49c..a423a55 100644 --- a/db/users.py +++ b/db/users.py @@ -297,6 +297,156 @@ def get_user_by_username(username): return _get_user_by_field("username", username) +# ==================== 聚合登录绑定 ==================== + + +def cleanup_expired_social_pending_binds() -> None: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute("DELETE FROM social_pending_binds WHERE expires_at < ?", (get_cst_now_str(),)) + conn.commit() + + +def create_social_pending_bind(*, token: str, provider: str, social_uid: str, nickname: str = "", avatar_url: str = "", expires_at: str) -> dict: + cleanup_expired_social_pending_binds() + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "DELETE FROM social_pending_binds WHERE provider = ? AND social_uid = ?", + (provider, social_uid), + ) + cursor.execute( + """ + INSERT INTO social_pending_binds (token, provider, social_uid, nickname, avatar_url, created_at, expires_at) + VALUES (?, ?, ?, ?, ?, ?, ?) + """, + ( + token, + provider, + social_uid, + str(nickname or "")[:128], + str(avatar_url or "")[:512], + get_cst_now_str(), + expires_at, + ), + ) + conn.commit() + cursor.execute("SELECT * FROM social_pending_binds WHERE token = ?", (token,)) + return _row_to_dict(cursor.fetchone()) + + +def get_social_pending_bind(token: str): + cleanup_expired_social_pending_binds() + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute("SELECT * FROM social_pending_binds WHERE token = ?", ((token or "").strip(),)) + return _row_to_dict(cursor.fetchone()) + + +def delete_social_pending_bind(token: str) -> bool: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute("DELETE FROM social_pending_binds WHERE token = ?", ((token or "").strip(),)) + conn.commit() + return cursor.rowcount > 0 + + +def find_social_login_binding(provider: str, social_uid: str): + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "SELECT * FROM social_login_bindings WHERE provider = ? AND social_uid = ?", + (provider, social_uid), + ) + return _row_to_dict(cursor.fetchone()) + + +def find_user_social_login_binding(user_id: int, provider: str): + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "SELECT * FROM social_login_bindings WHERE user_id = ? AND provider = ?", + (int(user_id), provider), + ) + return _row_to_dict(cursor.fetchone()) + + +def upsert_social_login_binding(*, user_id: int, provider: str, social_uid: str, nickname: str = "", avatar_url: str = ""): + with db_pool.get_db() as conn: + cursor = conn.cursor() + now = get_cst_now_str() + try: + cursor.execute( + """ + INSERT INTO social_login_bindings ( + user_id, provider, social_uid, nickname, avatar_url, created_at, updated_at, last_login_at + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT(user_id, provider) DO UPDATE SET + social_uid = excluded.social_uid, + nickname = excluded.nickname, + avatar_url = excluded.avatar_url, + updated_at = excluded.updated_at, + last_login_at = excluded.last_login_at + """, + ( + int(user_id), + provider, + social_uid, + str(nickname or "")[:128], + str(avatar_url or "")[:512], + now, + now, + now, + ), + ) + conn.commit() + except sqlite3.IntegrityError: + conn.rollback() + return None + return find_user_social_login_binding(user_id, provider) + + +def update_social_login_binding_profile(binding_id: int, *, nickname: str = "", avatar_url: str = "") -> bool: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + """ + UPDATE social_login_bindings + SET nickname = ?, avatar_url = ?, updated_at = ?, last_login_at = ? + WHERE id = ? + """, + (str(nickname or "")[:128], str(avatar_url or "")[:512], get_cst_now_str(), get_cst_now_str(), int(binding_id)), + ) + conn.commit() + return cursor.rowcount > 0 + + +def list_social_login_bindings(user_id: int) -> list[dict]: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + """ + SELECT * FROM social_login_bindings + WHERE user_id = ? + ORDER BY created_at ASC + """, + (int(user_id),), + ) + return [dict(row) for row in cursor.fetchall()] + + +def delete_social_login_binding(user_id: int, provider: str) -> bool: + with db_pool.get_db() as conn: + cursor = conn.cursor() + cursor.execute( + "DELETE FROM social_login_bindings WHERE user_id = ? AND provider = ?", + (int(user_id), provider), + ) + conn.commit() + return cursor.rowcount > 0 + + def _normalize_limit_offset(limit, offset, *, max_limit: int = 500): normalized_limit = None if limit is not None: diff --git a/routes/__init__.py b/routes/__init__.py index 439daa9..694d050 100644 --- a/routes/__init__.py +++ b/routes/__init__.py @@ -10,6 +10,7 @@ def register_blueprints(app) -> None: from routes.api_auth import api_auth_bp from routes.api_schedules import api_schedules_bp from routes.api_screenshots import api_screenshots_bp + from routes.api_social import api_social_bp from routes.api_user import api_user_bp from routes.health import health_bp from routes.pages import pages_bp @@ -17,6 +18,7 @@ def register_blueprints(app) -> None: app.register_blueprint(pages_bp) app.register_blueprint(health_bp) app.register_blueprint(api_auth_bp) + app.register_blueprint(api_social_bp) app.register_blueprint(api_user_bp) app.register_blueprint(api_accounts_bp) app.register_blueprint(api_screenshots_bp) diff --git a/routes/api_auth.py b/routes/api_auth.py index 26514d2..b852304 100644 --- a/routes/api_auth.py +++ b/routes/api_auth.py @@ -30,6 +30,7 @@ from services.passkeys import ( normalize_device_name, verify_authentication, ) +from services.social_login import parse_providers, provider_label from services.state import ( check_ip_request_rate, check_email_rate_limit, @@ -228,6 +229,7 @@ def register(): email = data.get("email", "").strip().lower() captcha_session = data.get("captcha_session", "") captcha_code = data.get("captcha", "").strip() + social_bind_token = str(data.get("social_bind_token") or "").strip() if not username or not password: return jsonify({"error": "用户名和密码不能为空"}), 400 @@ -273,6 +275,26 @@ def register(): user_id = database.create_user(username, password, email) if user_id: + social_bind_message = "" + if social_bind_token: + pending = database.get_social_pending_bind(social_bind_token) + if pending: + provider = str(pending.get("provider") or "").strip().lower() + social_uid = str(pending.get("social_uid") or "").strip() + enabled_providers = parse_providers((database.get_system_config() or {}).get("social_login_providers")) + existing_identity = database.find_social_login_binding(provider, social_uid) + if provider in enabled_providers and social_uid and not existing_identity: + binding = database.upsert_social_login_binding( + user_id=user_id, + provider=provider, + social_uid=social_uid, + nickname=pending.get("nickname") or "", + avatar_url=pending.get("avatar_url") or "", + ) + if binding: + database.delete_social_pending_bind(social_bind_token) + social_bind_message = f",已绑定{provider_label(provider)}" + if auto_approve_enabled: if auto_approve_vip_days > 0: database.set_user_vip(user_id, auto_approve_vip_days) @@ -281,7 +303,7 @@ def register(): result = email_service.send_register_verification_email(email=email, username=username, user_id=user_id) if result["success"]: message = _with_vip_suffix( - "注册成功!验证邮件已发送(可直接登录,建议完成邮箱验证)", + f"注册成功!验证邮件已发送(可直接登录,建议完成邮箱验证){social_bind_message}", auto_approve_enabled, auto_approve_vip_days, ) @@ -289,13 +311,15 @@ def register(): logger.error(f"注册验证邮件发送失败: {result['error']}") message = _with_vip_suffix( - f"注册成功,但验证邮件发送失败({result['error']})。你仍可直接登录", + f"注册成功,但验证邮件发送失败({result['error']})。你仍可直接登录{social_bind_message}", auto_approve_enabled, auto_approve_vip_days, ) return jsonify({"success": True, "message": message, "need_verify": True}) message = _with_vip_suffix("注册成功!可直接登录", auto_approve_enabled, auto_approve_vip_days) + if social_bind_message: + message = f"{message}{social_bind_message}" return jsonify({"success": True, "message": message}) return jsonify({"error": "用户名已存在"}), 400 diff --git a/routes/api_social.py b/routes/api_social.py new file mode 100644 index 0000000..08d9d67 --- /dev/null +++ b/routes/api_social.py @@ -0,0 +1,333 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +from __future__ import annotations + +from datetime import timedelta +import database +from app_logger import get_logger +from db.utils import get_cst_now, get_cst_now_str +from flask import Blueprint, jsonify, request +from flask_login import current_user, login_required, login_user +from services.accounts_service import load_user_accounts +from services.models import User +from services.social_login import ( + BIND_TOKEN_TTL_SECONDS, + PROVIDER_LABELS, + SocialLoginError, + SpaceProfile, + admin_social_config_out, + encrypt_social_appkey, + fetch_social_login_url, + fetch_space_profile, + new_bind_token, + normalize_social_endpoint, + parse_providers, + poll_social_scan, + provider_label, + public_social_config, +) + +logger = get_logger("app") + +api_social_bp = Blueprint("api_social", __name__) + + +def _get_json_payload() -> dict: + data = request.get_json(silent=True) + return data if isinstance(data, dict) else {} + + +def _social_error(error: SocialLoginError): + return jsonify({"error": error.message}), error.status_code + + +def _allowed_redirect_hosts() -> set[str]: + hosts: set[str] = set() + host = request.headers.get("X-Forwarded-Host") or request.headers.get("Host") or "" + if host: + hosts.add(host.lower()) + hostname = host.split(":", 1)[0].lower() + if hostname: + hosts.add(hostname) + return hosts + + +def _create_pending_from_profile(profile: SpaceProfile) -> dict: + expires_at = (get_cst_now() + timedelta(seconds=BIND_TOKEN_TTL_SECONDS)).strftime("%Y-%m-%d %H:%M:%S") + return database.create_social_pending_bind( + token=new_bind_token(), + provider=profile.provider, + social_uid=profile.social_uid, + nickname=profile.nickname, + avatar_url=profile.avatar_url, + expires_at=expires_at, + ) + + +def _login_user_id(user_id: int) -> None: + user_obj = User(user_id) + login_user(user_obj) + load_user_accounts(user_id) + + +def _binding_row(provider: str, binding: dict | None) -> dict: + return { + "provider": provider, + "provider_label": provider_label(provider), + "bound": bool(binding), + "nickname": (binding or {}).get("nickname") or "", + "avatar_url": (binding or {}).get("avatar_url") or "", + "last_login_at": (binding or {}).get("last_login_at"), + "created_at": (binding or {}).get("created_at"), + } + + +@api_social_bp.route("/api/auth/social/config", methods=["GET"]) +def social_public_config(): + return jsonify(public_social_config(database.get_system_config())) + + +@api_social_bp.route("/api/auth/social/login-url", methods=["POST"]) +def social_login_url(): + data = _get_json_payload() + provider = str(data.get("provider") or "").strip().lower() + mode = "bind" if str(data.get("mode") or "").strip().lower() == "bind" else "login" + redirect_uri = str(data.get("redirect_uri") or "").strip() + + try: + result = fetch_social_login_url( + database.get_system_config(), + provider=provider, + mode=mode, + redirect_uri=redirect_uri, + allowed_hosts=_allowed_redirect_hosts(), + ) + except SocialLoginError as error: + logger.warning(f"[social/login-url] provider={provider or '-'} mode={mode} failed: {error.message}") + return _social_error(error) + return jsonify(result) + + +@api_social_bp.route("/api/auth/social/poll", methods=["POST"]) +def social_poll(): + data = _get_json_payload() + provider = str(data.get("provider") or "").strip().lower() + state = str(data.get("state") or "").strip() + try: + result = poll_social_scan(database.get_system_config(), provider=provider, state=state) + except SocialLoginError as error: + logger.warning(f"[social/poll] provider={provider or '-'} failed: {error.message}") + return _social_error(error) + return jsonify(result) + + +@api_social_bp.route("/api/auth/social/callback", methods=["POST"]) +def social_callback(): + data = _get_json_payload() + provider = str(data.get("provider") or data.get("type") or "").strip().lower() + code = str(data.get("code") or "").strip() + mode = "bind" if str(data.get("mode") or "").strip().lower() == "bind" else "login" + + try: + profile = fetch_space_profile(database.get_system_config(), provider=provider, code=code) + except SocialLoginError as error: + logger.warning(f"[social/callback] provider={provider or '-'} mode={mode} failed: {error.message}") + return _social_error(error) + + binding = database.find_social_login_binding(profile.provider, profile.social_uid) + if binding: + if mode == "bind": + current_id = int(getattr(current_user, "id", 0) or 0) + if not current_id or int(binding.get("user_id") or 0) != current_id: + return jsonify({"error": "该第三方账号已绑定其他用户"}), 409 + + user = database.get_user_by_id(int(binding["user_id"])) + if not user or user.get("status") != "approved": + return jsonify({"error": "绑定账号不可用"}), 401 + database.update_social_login_binding_profile( + int(binding["id"]), + nickname=profile.nickname, + avatar_url=profile.avatar_url, + ) + _login_user_id(int(user["id"])) + return jsonify( + { + "success": True, + "mode": mode, + "provider": profile.provider, + "provider_label": provider_label(profile.provider), + "bound": True, + "username": user.get("username") or "", + } + ) + + pending = _create_pending_from_profile(profile) + return jsonify( + { + "success": True, + "mode": mode, + "provider": profile.provider, + "provider_label": provider_label(profile.provider), + "requires_register": mode == "login", + "requires_existing_login": mode == "bind", + "bind_token": pending.get("token"), + "expires_in": BIND_TOKEN_TTL_SECONDS, + "nickname": pending.get("nickname") or "", + "avatar_url": pending.get("avatar_url") or "", + } + ) + + +@api_social_bp.route("/api/user/social-bindings", methods=["GET"]) +@login_required +def list_social_bindings(): + cfg = database.get_system_config() + providers = parse_providers(cfg.get("social_login_providers")) or list(PROVIDER_LABELS.keys()) + existing = { + item["provider"]: item + for item in database.list_social_login_bindings(int(current_user.id)) + } + return jsonify({"items": [_binding_row(provider, existing.get(provider)) for provider in providers]}) + + +@api_social_bp.route("/api/user/social-bindings", methods=["POST"]) +@login_required +def bind_social_account(): + data = _get_json_payload() + token = str(data.get("bind_token") or "").strip() + pending = database.get_social_pending_bind(token) + if not pending: + return jsonify({"error": "绑定凭证已过期,请重新授权"}), 404 + + provider = str(pending.get("provider") or "").strip().lower() + social_uid = str(pending.get("social_uid") or "").strip() + existing_identity = database.find_social_login_binding(provider, social_uid) + if existing_identity and int(existing_identity.get("user_id") or 0) != int(current_user.id): + return jsonify({"error": "该第三方账号已绑定其他用户"}), 409 + + existing_provider = database.find_user_social_login_binding(int(current_user.id), provider) + if existing_provider and str(existing_provider.get("social_uid") or "") != social_uid: + return jsonify({"error": f"当前账号已绑定{provider_label(provider)}"}), 409 + + binding = database.upsert_social_login_binding( + user_id=int(current_user.id), + provider=provider, + social_uid=social_uid, + nickname=pending.get("nickname") or "", + avatar_url=pending.get("avatar_url") or "", + ) + if not binding: + return jsonify({"error": "该第三方账号已绑定其他用户"}), 409 + + database.delete_social_pending_bind(token) + return jsonify({"success": True, "item": _binding_row(provider, binding)}) + + +@api_social_bp.route("/api/user/social-bindings/", methods=["DELETE"]) +@login_required +def unbind_social_account(provider): + provider = str(provider or "").strip().lower() + if provider not in PROVIDER_LABELS: + return jsonify({"error": "不支持的登录方式"}), 400 + if not database.delete_social_login_binding(int(current_user.id), provider): + return jsonify({"error": "绑定记录不存在"}), 404 + return jsonify({"success": True}) + + +@api_social_bp.route("/yuyx/api/social-login/config", methods=["GET"]) +def admin_social_config(): + from routes.decorators import admin_required + + protected = admin_required(lambda: jsonify(admin_social_config_out(database.get_system_config()))) + return protected() + + +@api_social_bp.route("/yuyx/api/social-login/test", methods=["POST"]) +def test_admin_social_config(): + from routes.decorators import admin_required + + @admin_required + def _inner(): + data = _get_json_payload() + provider = str(data.get("provider") or "wx").strip().lower() + appkey = str(data.get("social_login_appkey") or "").strip() + old_config = database.get_system_config() or {} + + try: + temp_config = { + **old_config, + "social_login_enabled": 1, + "social_login_endpoint": normalize_social_endpoint(str(data.get("social_login_endpoint") or "")), + "social_login_appid": str(data.get("social_login_appid") or "").strip(), + "social_login_appkey": encrypt_social_appkey(appkey) if appkey else str(old_config.get("social_login_appkey") or ""), + "social_login_providers": ",".join(parse_providers(data.get("social_login_providers"))), + } + redirect_uri = str(data.get("redirect_uri") or "").strip() + result = fetch_social_login_url( + temp_config, + provider=provider, + mode="login", + redirect_uri=redirect_uri, + allowed_hosts=_allowed_redirect_hosts(), + ) + except ValueError as exc: + return jsonify({"error": str(exc)}), 400 + except SocialLoginError as error: + return _social_error(error) + + return jsonify( + { + "success": True, + "provider": result.get("provider"), + "has_url": bool(result.get("url")), + "has_scan_url": bool(result.get("scan_url")), + } + ) + + return _inner() + + +@api_social_bp.route("/yuyx/api/social-login/config", methods=["POST"]) +def update_admin_social_config(): + from routes.decorators import admin_required + + @admin_required + def _inner(): + data = _get_json_payload() + enabled = 1 if data.get("social_login_enabled") in (1, True, "1", "true", "on") else 0 + endpoint_raw = str(data.get("social_login_endpoint") or "").strip() + appid = str(data.get("social_login_appid") or "").strip() + appkey = str(data.get("social_login_appkey") or "").strip() + providers = parse_providers(data.get("social_login_providers")) + + try: + endpoint = normalize_social_endpoint(endpoint_raw) + except ValueError as exc: + return jsonify({"error": str(exc)}), 400 + + old_config = database.get_system_config() or {} + old_key = str(old_config.get("social_login_appkey") or "") + + if enabled: + if not providers: + return jsonify({"error": "启用聚合登录时至少选择一种登录方式"}), 400 + if not appid: + return jsonify({"error": "启用聚合登录时必须填写 APPID"}), 400 + if not appkey and not old_key: + return jsonify({"error": "启用聚合登录时必须填写 APPKEY"}), 400 + + encrypted_key = encrypt_social_appkey(appkey) if appkey else old_key + ok = database.update_system_config( + social_login_enabled=enabled, + social_login_endpoint=endpoint, + social_login_appid=appid, + social_login_appkey=encrypted_key, + social_login_providers=",".join(providers), + ) + if not ok: + return jsonify({"error": "更新失败"}), 400 + + logger.info(f"[social/config] updated enabled={enabled} providers={','.join(providers)} at={get_cst_now_str()}") + return jsonify({"message": "聚合登录配置已更新", "config": admin_social_config_out(database.get_system_config())}) + + return _inner() diff --git a/services/social_login.py b/services/social_login.py new file mode 100644 index 0000000..fd86c89 --- /dev/null +++ b/services/social_login.py @@ -0,0 +1,306 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +from __future__ import annotations + +import re +import secrets +from dataclasses import dataclass +from typing import Any +from urllib.parse import parse_qs, urlencode, urljoin, urlparse + +import requests + +from crypto_utils import decrypt_password, encrypt_password + +DEFAULT_SPACE_ENDPOINT = "https://www.spacezs.cn/connect.php" +PROVIDER_LABELS = {"qq": "QQ", "wx": "微信", "alipay": "支付宝"} +SUPPORTED_PROVIDERS = set(PROVIDER_LABELS) +BIND_TOKEN_TTL_SECONDS = 600 +SPACE_BROWSER_HEADERS = { + "User-Agent": ( + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " + "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36" + ), + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", +} + + +class SocialLoginError(Exception): + def __init__(self, message: str, status_code: int = 400): + super().__init__(message) + self.message = message + self.status_code = int(status_code or 400) + + +@dataclass +class SpaceProfile: + provider: str + social_uid: str + nickname: str = "" + avatar_url: str = "" + + +def provider_label(provider: str) -> str: + return PROVIDER_LABELS.get(provider, provider) + + +def normalize_social_endpoint(value: str) -> str: + raw = (value or DEFAULT_SPACE_ENDPOINT).strip() or DEFAULT_SPACE_ENDPOINT + parsed = urlparse(raw) + if parsed.scheme not in {"http", "https"} or not parsed.netloc: + raise ValueError("聚合接口地址必须是 http 或 https 地址") + path = parsed.path.rstrip("/") + if path in {"", "/"}: + return parsed._replace(path="/connect.php", params="", query="", fragment="").geturl() + if path.endswith("/connect.php"): + return parsed._replace(path=path, params="", query="", fragment="").geturl() + raise ValueError("聚合接口地址必须指向 connect.php") + + +def parse_providers(value: str | list[str] | tuple[str, ...] | None) -> list[str]: + items = value.split(",") if isinstance(value, str) else list(value or []) + result: list[str] = [] + for item in items: + provider = str(item or "").strip().lower() + if provider in SUPPORTED_PROVIDERS and provider not in result: + result.append(provider) + return result + + +def social_appkey(config: dict[str, Any]) -> str: + encrypted = str((config or {}).get("social_login_appkey") or "").strip() + if not encrypted: + return "" + return decrypt_password(encrypted) + + +def encrypt_social_appkey(value: str) -> str: + raw = str(value or "").strip() + return encrypt_password(raw) if raw else "" + + +def mask_secret(value: str) -> str: + if not value: + return "" + if len(value) <= 8: + return f"{value[:2]}***" + return f"{value[:4]}***{value[-4:]}" + + +def admin_social_config_out(config: dict[str, Any]) -> dict[str, Any]: + key = social_appkey(config) + return { + "social_login_enabled": int(config.get("social_login_enabled") or 0), + "social_login_endpoint": config.get("social_login_endpoint") or DEFAULT_SPACE_ENDPOINT, + "social_login_appid": config.get("social_login_appid") or "", + "social_login_appkey": "", + "social_login_appkey_configured": bool(key), + "social_login_appkey_masked": mask_secret(key), + "social_login_providers": parse_providers(config.get("social_login_providers")) or ["qq", "wx", "alipay"], + } + + +def public_social_config(config: dict[str, Any]) -> dict[str, Any]: + providers = parse_providers(config.get("social_login_providers")) + configured = bool(config.get("social_login_appid") and social_appkey(config)) + enabled = bool(int(config.get("social_login_enabled") or 0) == 1 and configured and providers) + return {"enabled": enabled, "providers": providers if enabled else []} + + +def validate_social_ready(config: dict[str, Any], provider: str) -> None: + provider = str(provider or "").strip().lower() + if int(config.get("social_login_enabled") or 0) != 1: + raise SocialLoginError("聚合登录未启用", 409) + if provider not in parse_providers(config.get("social_login_providers")): + raise SocialLoginError("该登录方式未启用", 400) + if not config.get("social_login_appid") or not social_appkey(config): + raise SocialLoginError("聚合登录配置不完整", 409) + + +def validate_redirect_uri(redirect_uri: str, *, allowed_hosts: set[str] | None = None) -> str: + uri = str(redirect_uri or "").strip() + parsed = urlparse(uri) + if parsed.scheme not in {"http", "https"} or not parsed.netloc: + raise SocialLoginError("redirect_uri 必须是完整的 http/https 地址", 400) + if allowed_hosts: + host = parsed.netloc.lower() + hostname = (parsed.hostname or "").lower() + if host not in allowed_hosts and hostname not in allowed_hosts: + raise SocialLoginError("redirect_uri 域名不在允许范围内", 400) + return uri + + +def _space_base_url(endpoint: str) -> str: + parsed = urlparse(endpoint) + return f"{parsed.scheme}://{parsed.netloc}" + + +def _parse_space_json(payload: dict[str, Any], error_message: str) -> dict[str, Any]: + try: + code_value = int(payload.get("code")) + except (TypeError, ValueError): + code_value = -1 + if code_value != 0: + raise SocialLoginError(str(payload.get("msg") or error_message), 409) + return payload + + +def parse_space_scan_page(html: str) -> tuple[str, str]: + qrcode_match = re.search(r'var\s+qrcode_url\s*=\s*["\']([^"\']+)["\']', html or "") + state_match = re.search(r'var\s+state\s*=\s*["\']([^"\']+)["\']', html or "") + qrcode_url = qrcode_match.group(1).strip() if qrcode_match else "" + state = state_match.group(1).strip() if state_match else "" + if not qrcode_url or not state: + raise SocialLoginError("聚合登录扫码页面解析失败", 409) + return qrcode_url, state + + +def fetch_social_login_url( + config: dict[str, Any], + *, + provider: str, + mode: str, + redirect_uri: str, + allowed_hosts: set[str] | None = None, +) -> dict[str, Any]: + provider = str(provider or "").strip().lower() + mode = "bind" if str(mode or "").strip().lower() == "bind" else "login" + validate_social_ready(config, provider) + redirect_uri = validate_redirect_uri(redirect_uri, allowed_hosts=allowed_hosts) + endpoint = normalize_social_endpoint(str(config.get("social_login_endpoint") or "")) + params = { + "act": "login", + "appid": str(config.get("social_login_appid") or "").strip(), + "appkey": social_appkey(config), + "type": provider, + "redirect_uri": redirect_uri, + } + try: + response = requests.get(endpoint, params=params, timeout=15) + payload = response.json() + except ValueError as exc: + raise SocialLoginError("聚合接口未返回 JSON,请检查 endpoint 是否为 connect.php", 409) from exc + except requests.RequestException as exc: + raise SocialLoginError("聚合接口连接失败", 409) from exc + + data = _parse_space_json(payload, "获取聚合登录地址失败") + url = str(data.get("url") or "") + if not url: + raise SocialLoginError("聚合接口未返回授权地址", 409) + + result = { + "provider": provider, + "mode": mode, + "url": url, + "qrcode": str(data.get("qrcode") or ""), + "scan_url": "", + "scan_state": "", + "scan_poll_interval": 2, + } + if provider == "wx": + scan_page_url = result["qrcode"] or result["url"] + try: + scan_response = requests.get(scan_page_url, headers=SPACE_BROWSER_HEADERS, timeout=15) + except requests.RequestException as exc: + raise SocialLoginError("微信扫码页获取失败", 409) from exc + scan_url, state = parse_space_scan_page(scan_response.text) + result["scan_url"] = scan_url + result["scan_state"] = state + return result + + +def poll_social_scan(config: dict[str, Any], *, provider: str, state: str) -> dict[str, Any]: + provider = str(provider or "").strip().lower() + validate_social_ready(config, provider) + if provider != "wx": + raise SocialLoginError("该登录方式不需要轮询", 400) + state_value = str(state or "").strip() + if not state_value: + raise SocialLoginError("缺少扫码状态", 400) + + endpoint = normalize_social_endpoint(str(config.get("social_login_endpoint") or "")) + base_url = _space_base_url(endpoint) + ajax_url = urljoin(base_url + "/", "ajax.php") + headers = { + **SPACE_BROWSER_HEADERS, + "Referer": f"{base_url}/jump.php?state={state_value}&client=1", + "X-Requested-With": "XMLHttpRequest", + "Accept": "application/json, text/javascript, */*; q=0.01", + } + try: + response = requests.get(ajax_url, params={"act": "login", "state": state_value}, headers=headers, timeout=10) + payload = response.json() + except ValueError as exc: + raise SocialLoginError("扫码轮询未返回 JSON", 409) from exc + except requests.RequestException as exc: + raise SocialLoginError("扫码轮询连接失败", 409) from exc + + try: + code_value = int(payload.get("code")) + except (TypeError, ValueError): + code_value = -1 + if code_value == 1: + return {"status": "pending"} + if code_value == 0: + url = str(payload.get("url") or "") + if not url: + raise SocialLoginError("扫码成功但未返回回调地址", 409) + return {"status": "authorized", "url": url} + raise SocialLoginError(str(payload.get("msg") or "扫码登录失败"), 409) + + +def _profile_uid(payload: dict[str, Any]) -> str: + for key in ("social_uid", "uid", "openid", "unionid", "id"): + value = str(payload.get(key) or "").strip() + if value: + return value + raise SocialLoginError("聚合回调未返回用户唯一标识", 409) + + +def fetch_space_profile(config: dict[str, Any], *, provider: str, code: str) -> SpaceProfile: + provider = str(provider or "").strip().lower() + code_value = str(code or "").strip() + validate_social_ready(config, provider) + if not code_value: + raise SocialLoginError("缺少授权 code", 400) + endpoint = normalize_social_endpoint(str(config.get("social_login_endpoint") or "")) + params = { + "act": "callback", + "appid": str(config.get("social_login_appid") or "").strip(), + "appkey": social_appkey(config), + "type": provider, + "code": code_value, + } + try: + response = requests.get(endpoint, params=params, timeout=15) + payload = response.json() + except ValueError as exc: + raise SocialLoginError("聚合回调接口未返回 JSON", 409) from exc + except requests.RequestException as exc: + raise SocialLoginError("聚合回调接口连接失败", 409) from exc + + data = _parse_space_json(payload, "聚合登录回调失败") + return SpaceProfile( + provider=provider, + social_uid=_profile_uid(data), + nickname=str(data.get("nickname") or data.get("nick") or data.get("name") or ""), + avatar_url=str(data.get("faceimg") or data.get("avatar") or data.get("avatar_url") or ""), + ) + + +def callback_mode_from_redirect_query(redirect_url: str, fallback: str = "login") -> str: + parsed = urlparse(redirect_url) + mode = parse_qs(parsed.query).get("mode", [fallback])[0] + return "bind" if mode == "bind" else "login" + + +def append_query(url: str, values: dict[str, str]) -> str: + parsed = urlparse(url) + query = parse_qs(parsed.query) + for key, value in values.items(): + query[key] = [value] + return parsed._replace(query=urlencode(query, doseq=True)).geturl() + + +def new_bind_token() -> str: + return secrets.token_urlsafe(32) diff --git a/static/admin/.vite/manifest.json b/static/admin/.vite/manifest.json index 3e56410..4c357fb 100644 --- a/static/admin/.vite/manifest.json +++ b/static/admin/.vite/manifest.json @@ -1,42 +1,42 @@ { - "_MetricGrid-BnihYB_8.js": { - "file": "assets/MetricGrid-BnihYB_8.js", + "_MetricGrid-BR486o_b.css": { + "file": "assets/MetricGrid-BR486o_b.css", + "src": "_MetricGrid-BR486o_b.css" + }, + "_MetricGrid-C3Xjc9mZ.js": { + "file": "assets/MetricGrid-C3Xjc9mZ.js", "name": "MetricGrid", "imports": [ "index.html", "_vendor-vue-CVxSw_oJ.js" ], "css": [ - "assets/MetricGrid-yP_dkP6X.css" + "assets/MetricGrid-BR486o_b.css" ] }, - "_MetricGrid-yP_dkP6X.css": { - "file": "assets/MetricGrid-yP_dkP6X.css", - "src": "_MetricGrid-yP_dkP6X.css" - }, - "_email-px7YBG2O.js": { - "file": "assets/email-px7YBG2O.js", + "_email-Mh1SHQbX.js": { + "file": "assets/email-Mh1SHQbX.js", "name": "email", "imports": [ "index.html" ] }, - "_system-ZDPnxnIu.js": { - "file": "assets/system-ZDPnxnIu.js", + "_system-CYbWdReq.js": { + "file": "assets/system-CYbWdReq.js", "name": "system", "imports": [ "index.html" ] }, - "_tasks-Bep0SUyu.js": { - "file": "assets/tasks-Bep0SUyu.js", + "_tasks-B7oNpIBD.js": { + "file": "assets/tasks-B7oNpIBD.js", "name": "tasks", "imports": [ "index.html" ] }, - "_users-te9ySk34.js": { - "file": "assets/users-te9ySk34.js", + "_users-DzDcz9C_.js": { + "file": "assets/users-DzDcz9C_.js", "name": "users", "imports": [ "index.html" @@ -73,7 +73,7 @@ "name": "vendor-vue" }, "index.html": { - "file": "assets/index-C1f9ticl.js", + "file": "assets/index-DOvMEmc8.js", "name": "index", "src": "index.html", "isEntry": true, @@ -95,11 +95,11 @@ "src/pages/SettingsPage.vue" ], "css": [ - "assets/index-Dh0BbqTX.css" + "assets/index-CPs_XZ2s.css" ] }, "src/pages/AnnouncementsPage.vue": { - "file": "assets/AnnouncementsPage-C6UgwLIT.js", + "file": "assets/AnnouncementsPage-Dagm5PzE.js", "name": "AnnouncementsPage", "src": "src/pages/AnnouncementsPage.vue", "isDynamicEntry": true, @@ -111,52 +111,52 @@ "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/AnnouncementsPage-DOwZaaOu.css" + "assets/AnnouncementsPage-tpO97PUg.css" ] }, "src/pages/EmailPage.vue": { - "file": "assets/EmailPage-CATruPK6.js", + "file": "assets/EmailPage-DiZA9Kx_.js", "name": "EmailPage", "src": "src/pages/EmailPage.vue", "isDynamicEntry": true, "imports": [ - "_email-px7YBG2O.js", + "_email-Mh1SHQbX.js", "index.html", - "_MetricGrid-BnihYB_8.js", + "_MetricGrid-C3Xjc9mZ.js", "_vendor-element-B5S5pUKo.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/EmailPage-BmPCDPYC.css" + "assets/EmailPage-CTHxGzDv.css" ] }, "src/pages/FeedbacksPage.vue": { - "file": "assets/FeedbacksPage-BAnFKHSL.js", + "file": "assets/FeedbacksPage-DrMVqBKf.js", "name": "FeedbacksPage", "src": "src/pages/FeedbacksPage.vue", "isDynamicEntry": true, "imports": [ "index.html", - "_MetricGrid-BnihYB_8.js", + "_MetricGrid-C3Xjc9mZ.js", "_vendor-element-B5S5pUKo.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/FeedbacksPage-mrXjCiV2.css" + "assets/FeedbacksPage-CPmSqIaj.css" ] }, "src/pages/LogsPage.vue": { - "file": "assets/LogsPage-DFPeq0bL.js", + "file": "assets/LogsPage-Cy6Q0ave.js", "name": "LogsPage", "src": "src/pages/LogsPage.vue", "isDynamicEntry": true, "imports": [ - "_users-te9ySk34.js", - "_tasks-Bep0SUyu.js", + "_users-DzDcz9C_.js", + "_tasks-B7oNpIBD.js", "index.html", "_vendor-element-B5S5pUKo.js", "_vendor-vue-CVxSw_oJ.js", @@ -164,48 +164,48 @@ "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/LogsPage-D1bozCEo.css" + "assets/LogsPage-BUgx3sZr.css" ] }, "src/pages/ReportPage.vue": { - "file": "assets/ReportPage-fzVH-d9u.js", + "file": "assets/ReportPage-BMEJM5Hr.js", "name": "ReportPage", "src": "src/pages/ReportPage.vue", "isDynamicEntry": true, "imports": [ "_vendor-element-B5S5pUKo.js", "index.html", - "_email-px7YBG2O.js", - "_tasks-Bep0SUyu.js", - "_system-ZDPnxnIu.js", - "_MetricGrid-BnihYB_8.js", + "_email-Mh1SHQbX.js", + "_tasks-B7oNpIBD.js", + "_system-CYbWdReq.js", + "_MetricGrid-C3Xjc9mZ.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-misc-BeoNyvBp.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/ReportPage-BCQBCnjY.css" + "assets/ReportPage-IaDpUFfl.css" ] }, "src/pages/SecurityPage.vue": { - "file": "assets/SecurityPage-xwMQfhuh.js", + "file": "assets/SecurityPage-yzYEGeTN.js", "name": "SecurityPage", "src": "src/pages/SecurityPage.vue", "isDynamicEntry": true, "imports": [ "index.html", - "_MetricGrid-BnihYB_8.js", + "_MetricGrid-C3Xjc9mZ.js", "_vendor-element-B5S5pUKo.js", "_vendor-vue-CVxSw_oJ.js", "_vendor-axios-B9ygI19o.js", "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/SecurityPage-DN76ndc_.css" + "assets/SecurityPage-C2-mJ7eD.css" ] }, "src/pages/SettingsPage.vue": { - "file": "assets/SettingsPage-DRqlQLxJ.js", + "file": "assets/SettingsPage-DF5fL8gq.js", "name": "SettingsPage", "src": "src/pages/SettingsPage.vue", "isDynamicEntry": true, @@ -217,16 +217,16 @@ "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/SettingsPage-BAa-Qu3q.css" + "assets/SettingsPage-D-iYz1zh.css" ] }, "src/pages/SystemPage.vue": { - "file": "assets/SystemPage-D3eBPCNe.js", + "file": "assets/SystemPage-DrM9-RI5.js", "name": "SystemPage", "src": "src/pages/SystemPage.vue", "isDynamicEntry": true, "imports": [ - "_system-ZDPnxnIu.js", + "_system-CYbWdReq.js", "index.html", "_vendor-element-B5S5pUKo.js", "_vendor-vue-CVxSw_oJ.js", @@ -234,16 +234,16 @@ "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/SystemPage-BhhEz4Qz.css" + "assets/SystemPage-CTs6qr36.css" ] }, "src/pages/UsersPage.vue": { - "file": "assets/UsersPage-DJZUCpfb.js", + "file": "assets/UsersPage-RI5S3snx.js", "name": "UsersPage", "src": "src/pages/UsersPage.vue", "isDynamicEntry": true, "imports": [ - "_users-te9ySk34.js", + "_users-DzDcz9C_.js", "index.html", "_vendor-element-B5S5pUKo.js", "_vendor-vue-CVxSw_oJ.js", @@ -251,7 +251,7 @@ "_vendor-misc-BeoNyvBp.js" ], "css": [ - "assets/UsersPage-BNDnhJe0.css" + "assets/UsersPage-CgYh6JHW.css" ] } } \ No newline at end of file diff --git a/static/admin/assets/AnnouncementsPage-DOwZaaOu.css b/static/admin/assets/AnnouncementsPage-DOwZaaOu.css deleted file mode 100644 index 119ce8d..0000000 --- a/static/admin/assets/AnnouncementsPage-DOwZaaOu.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-6f55521c]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-6f55521c]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-6f55521c]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-6f55521c]{margin-top:10px;font-size:12px;color:var(--app-muted)}.image-preview[data-v-6f55521c]{margin:6px 0 2px;display:flex;justify-content:flex-start}.image-preview img[data-v-6f55521c]{max-width:280px;max-height:160px;border-radius:8px;border:1px solid var(--app-border);object-fit:contain}.image-upload-row[data-v-6f55521c]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.image-input[data-v-6f55521c]{display:none}.image-url[data-v-6f55521c]{font-size:12px;color:var(--app-muted);word-break:break-all}.announcement-view[data-v-6f55521c]{display:flex;flex-direction:column;gap:12px}.announcement-view-text[data-v-6f55521c]{white-space:pre-wrap;line-height:1.6;font-size:14px}.announcement-view-image[data-v-6f55521c]{max-width:100%;max-height:320px;border-radius:10px;border:1px solid var(--app-border);object-fit:contain}.table-wrap[data-v-6f55521c]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-6f55521c]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions[data-v-6f55521c]{display:flex;flex-wrap:wrap;gap:8px} diff --git a/static/admin/assets/AnnouncementsPage-C6UgwLIT.js b/static/admin/assets/AnnouncementsPage-Dagm5PzE.js similarity index 64% rename from static/admin/assets/AnnouncementsPage-C6UgwLIT.js rename to static/admin/assets/AnnouncementsPage-Dagm5PzE.js index 74154c7..21a383e 100644 --- a/static/admin/assets/AnnouncementsPage-C6UgwLIT.js +++ b/static/admin/assets/AnnouncementsPage-Dagm5PzE.js @@ -1 +1 @@ -import{p as J,a as r,E as C}from"./vendor-element-B5S5pUKo.js";import{a as w,_ as W}from"./index-C1f9ticl.js";import{r as v,o as K,aj as p,ap as O,n as h,q as f,t as u,L as n,E as t,G as A,D as x,u as Q,I as c,J as D,F as X,a8 as $}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-BeoNyvBp.js";import"./vendor-axios-B9ygI19o.js";async function Y(){const{data:o}=await w.get("/announcements");return o}async function Z(o){const{data:s}=await w.post("/announcements",o);return s}async function ee(o){const s=new FormData;s.append("file",o);const{data:_}=await w.post("/announcements/upload_image",s);return _}async function te(o){const{data:s}=await w.post(`/announcements/${o}/activate`);return s}async function ne(o){const{data:s}=await w.post(`/announcements/${o}/deactivate`);return s}async function ae(o){const{data:s}=await w.delete(`/announcements/${o}`);return s}const le={class:"page-stack"},se={class:"image-upload-row"},oe={key:1,class:"image-url"},ie={key:0,class:"image-preview"},re=["src"],ue={class:"actions"},ce={class:"table-wrap"},de=["title"],me={key:1,class:"app-muted"},fe={class:"actions"},pe={__name:"AnnouncementsPage",setup(o){const s=v(""),_=v(""),m=v(""),g=v(null),B=v(!1),I=v(!1),T=v([]);async function k(){I.value=!0;try{T.value=await Y()}catch{T.value=[]}finally{I.value=!1}}function E(){s.value="",_.value="",m.value="",g.value&&(g.value.value="")}function N(){g.value?.click()}function U(){m.value="",g.value&&(g.value.value="")}async function P(l){const e=l.target?.files?.[0];if(e){if(e.type&&!e.type.startsWith("image/")){r.error("请选择图片文件"),l.target.value="";return}B.value=!0;try{const d=await ee(e);if(!d?.success||!d?.url){r.error(d?.error||"上传失败");return}m.value=d.url,r.success("上传成功")}catch{}finally{B.value=!1,l.target.value=""}}}async function z(l){const e=s.value.trim(),d=_.value.trim(),b=m.value.trim();if(!e||!d){r.error("标题和内容不能为空");return}try{const i=await Z({title:e,content:d,image_url:b,is_active:!!l});if(!i?.success){r.error(i?.error||"保存失败");return}r.success("保存成功"),E(),await k()}catch{}}async function L(l){const e=$("div",{class:"announcement-view"},[l.content?$("div",{class:"announcement-view-text"},l.content):null,l.image_url?$("img",{class:"announcement-view-image",src:l.image_url,alt:"公告图片"}):null]);await C.alert(e,l.title||"公告",{confirmButtonText:"关闭",dangerouslyUseHTMLString:!1})}async function R(l){try{await C.confirm("确定启用该公告吗?启用后将自动停用其他公告。","启用公告",{confirmButtonText:"启用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await te(l.id);if(!e?.success){r.error(e?.error||"启用失败");return}r.success("已启用"),await k()}catch{}}async function S(l){try{await C.confirm("确定停用该公告吗?","停用公告",{confirmButtonText:"停用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await ne(l.id);if(!e?.success){r.error(e?.error||"停用失败");return}r.success("已停用"),await k()}catch{}}async function j(l){try{await C.confirm("确定删除该公告吗?删除后无法恢复。","删除公告",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const e=await ae(l.id);if(!e?.success){r.error(e?.error||"删除失败");return}r.success("已删除"),await k()}catch{}}return K(k),(l,e)=>{const d=p("el-input"),b=p("el-form-item"),i=p("el-button"),q=p("el-form"),F=p("el-card"),y=p("el-table-column"),M=p("el-tag"),G=p("el-table"),H=O("loading");return f(),h("div",le,[e[17]||(e[17]=u("div",{class:"app-page-title"},[u("h2",null,"公告管理")],-1)),n(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[9]||(e[9]=u("h3",{class:"section-title"},"创建公告",-1)),n(q,{"label-width":"90px"},{default:t(()=>[n(b,{label:"公告标题"},{default:t(()=>[n(d,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=a=>s.value=a),placeholder:"请输入公告标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),n(b,{label:"公告内容"},{default:t(()=>[n(d,{modelValue:_.value,"onUpdate:modelValue":e[1]||(e[1]=a=>_.value=a),type:"textarea",rows:5,placeholder:"请输入公告内容(将以弹窗形式展示)",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),n(b,{label:"公告图片"},{default:t(()=>[u("div",se,[n(i,{icon:Q(J),loading:B.value,onClick:N},{default:t(()=>[...e[4]||(e[4]=[c("上传图片",-1)])]),_:1},8,["icon","loading"]),m.value?(f(),x(i,{key:0,onClick:U},{default:t(()=>[...e[5]||(e[5]=[c("移除",-1)])]),_:1})):A("",!0),m.value?(f(),h("span",oe,D(m.value),1)):A("",!0),u("input",{ref_key:"imageInputRef",ref:g,class:"image-input",type:"file",accept:"image/*",onChange:P},null,544)])]),_:1})]),_:1}),m.value?(f(),h("div",ie,[u("img",{src:m.value,alt:"公告图片预览"},null,8,re)])):A("",!0),u("div",ue,[n(i,{type:"primary",onClick:e[2]||(e[2]=a=>z(!0))},{default:t(()=>[...e[6]||(e[6]=[c("发布并启用",-1)])]),_:1}),n(i,{onClick:e[3]||(e[3]=a=>z(!1))},{default:t(()=>[...e[7]||(e[7]=[c("保存但不启用",-1)])]),_:1}),n(i,{onClick:E},{default:t(()=>[...e[8]||(e[8]=[c("清空",-1)])]),_:1})]),e[10]||(e[10]=u("div",{class:"help"}," 说明:启用公告后,用户登录进入系统将弹窗提示;用户可选择“当次关闭”或“永久关闭本次公告”。 ",-1))]),_:1}),n(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[16]||(e[16]=u("h3",{class:"section-title"},"公告列表",-1)),u("div",ce,[X((f(),x(G,{data:T.value,style:{width:"100%"}},{default:t(()=>[n(y,{prop:"id",label:"ID",width:"80"}),n(y,{label:"标题","min-width":"240"},{default:t(({row:a})=>[u("span",{class:"ellipsis",title:a.title},D(a.title),9,de)]),_:1}),n(y,{label:"状态",width:"120"},{default:t(({row:a})=>[n(M,{type:a.is_active?"success":"info",effect:"light"},{default:t(()=>[c(D(a.is_active?"启用":"停用"),1)]),_:2},1032,["type"])]),_:1}),n(y,{label:"图片",width:"100"},{default:t(({row:a})=>[a.image_url?(f(),x(M,{key:0,type:"success",effect:"light"},{default:t(()=>[...e[11]||(e[11]=[c("有图",-1)])]),_:1})):(f(),h("span",me,"-"))]),_:1}),n(y,{prop:"created_at",label:"创建时间",width:"180"}),n(y,{label:"操作",width:"260",fixed:"right"},{default:t(({row:a})=>[u("div",fe,[n(i,{size:"small",onClick:V=>L(a)},{default:t(()=>[...e[12]||(e[12]=[c("查看",-1)])]),_:1},8,["onClick"]),a.is_active?(f(),x(i,{key:0,size:"small",onClick:V=>S(a)},{default:t(()=>[...e[13]||(e[13]=[c("停用",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:1,type:"success",size:"small",onClick:V=>R(a)},{default:t(()=>[...e[14]||(e[14]=[c("启用",-1)])]),_:1},8,["onClick"])),n(i,{type:"danger",size:"small",onClick:V=>j(a)},{default:t(()=>[...e[15]||(e[15]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[H,I.value]])])]),_:1})])}}},ke=W(pe,[["__scopeId","data-v-6f55521c"]]);export{ke as default}; +import{p as J,a as r,E as C}from"./vendor-element-B5S5pUKo.js";import{a as w,_ as W}from"./index-DOvMEmc8.js";import{r as v,o as K,aj as p,ap as O,n as h,q as f,t as u,L as a,E as t,G as A,D as x,u as Q,I as c,J as D,F as X,a8 as $}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-BeoNyvBp.js";import"./vendor-axios-B9ygI19o.js";async function Y(){const{data:o}=await w.get("/announcements");return o}async function Z(o){const{data:s}=await w.post("/announcements",o);return s}async function ee(o){const s=new FormData;s.append("file",o);const{data:_}=await w.post("/announcements/upload_image",s);return _}async function te(o){const{data:s}=await w.post(`/announcements/${o}/activate`);return s}async function ae(o){const{data:s}=await w.post(`/announcements/${o}/deactivate`);return s}async function ne(o){const{data:s}=await w.delete(`/announcements/${o}`);return s}const le={class:"page-stack"},se={class:"image-upload-row"},oe={key:1,class:"image-url"},ie={key:0,class:"image-preview"},re=["src"],ue={class:"actions"},ce={class:"table-wrap"},de=["title"],me={key:1,class:"app-muted"},fe={class:"actions"},pe={__name:"AnnouncementsPage",setup(o){const s=v(""),_=v(""),m=v(""),g=v(null),B=v(!1),I=v(!1),T=v([]);async function k(){I.value=!0;try{T.value=await Y()}catch{T.value=[]}finally{I.value=!1}}function E(){s.value="",_.value="",m.value="",g.value&&(g.value.value="")}function N(){g.value?.click()}function U(){m.value="",g.value&&(g.value.value="")}async function P(l){const e=l.target?.files?.[0];if(e){if(e.type&&!e.type.startsWith("image/")){r.error("请选择图片文件"),l.target.value="";return}B.value=!0;try{const d=await ee(e);if(!d?.success||!d?.url){r.error(d?.error||"上传失败");return}m.value=d.url,r.success("上传成功")}catch{}finally{B.value=!1,l.target.value=""}}}async function z(l){const e=s.value.trim(),d=_.value.trim(),b=m.value.trim();if(!e||!d){r.error("标题和内容不能为空");return}try{const i=await Z({title:e,content:d,image_url:b,is_active:!!l});if(!i?.success){r.error(i?.error||"保存失败");return}r.success("保存成功"),E(),await k()}catch{}}async function L(l){const e=$("div",{class:"announcement-view"},[l.content?$("div",{class:"announcement-view-text"},l.content):null,l.image_url?$("img",{class:"announcement-view-image",src:l.image_url,alt:"公告图片"}):null]);await C.alert(e,l.title||"公告",{confirmButtonText:"关闭",dangerouslyUseHTMLString:!1})}async function R(l){try{await C.confirm("确定启用该公告吗?启用后将自动停用其他公告。","启用公告",{confirmButtonText:"启用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await te(l.id);if(!e?.success){r.error(e?.error||"启用失败");return}r.success("已启用"),await k()}catch{}}async function S(l){try{await C.confirm("确定停用该公告吗?","停用公告",{confirmButtonText:"停用",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await ae(l.id);if(!e?.success){r.error(e?.error||"停用失败");return}r.success("已停用"),await k()}catch{}}async function j(l){try{await C.confirm("确定删除该公告吗?删除后无法恢复。","删除公告",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const e=await ne(l.id);if(!e?.success){r.error(e?.error||"删除失败");return}r.success("已删除"),await k()}catch{}}return K(k),(l,e)=>{const d=p("el-input"),b=p("el-form-item"),i=p("el-button"),q=p("el-form"),F=p("el-card"),y=p("el-table-column"),M=p("el-tag"),G=p("el-table"),H=O("loading");return f(),h("div",le,[e[17]||(e[17]=u("div",{class:"app-page-title"},[u("h2",null,"公告管理")],-1)),a(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[9]||(e[9]=u("h3",{class:"section-title"},"创建公告",-1)),a(q,{"label-width":"90px"},{default:t(()=>[a(b,{label:"公告标题"},{default:t(()=>[a(d,{modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=n=>s.value=n),placeholder:"请输入公告标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(b,{label:"公告内容"},{default:t(()=>[a(d,{modelValue:_.value,"onUpdate:modelValue":e[1]||(e[1]=n=>_.value=n),type:"textarea",rows:5,placeholder:"请输入公告内容(将以弹窗形式展示)",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(b,{label:"公告图片"},{default:t(()=>[u("div",se,[a(i,{icon:Q(J),loading:B.value,onClick:N},{default:t(()=>[...e[4]||(e[4]=[c("上传图片",-1)])]),_:1},8,["icon","loading"]),m.value?(f(),x(i,{key:0,onClick:U},{default:t(()=>[...e[5]||(e[5]=[c("移除",-1)])]),_:1})):A("",!0),m.value?(f(),h("span",oe,D(m.value),1)):A("",!0),u("input",{ref_key:"imageInputRef",ref:g,class:"image-input",type:"file",accept:"image/*",onChange:P},null,544)])]),_:1})]),_:1}),m.value?(f(),h("div",ie,[u("img",{src:m.value,alt:"公告图片预览"},null,8,re)])):A("",!0),u("div",ue,[a(i,{type:"primary",onClick:e[2]||(e[2]=n=>z(!0))},{default:t(()=>[...e[6]||(e[6]=[c("发布并启用",-1)])]),_:1}),a(i,{onClick:e[3]||(e[3]=n=>z(!1))},{default:t(()=>[...e[7]||(e[7]=[c("保存但不启用",-1)])]),_:1}),a(i,{onClick:E},{default:t(()=>[...e[8]||(e[8]=[c("清空",-1)])]),_:1})]),e[10]||(e[10]=u("div",{class:"help"}," 说明:启用公告后,用户登录进入系统将弹窗提示;用户可选择“当次关闭”或“永久关闭本次公告”。 ",-1))]),_:1}),a(F,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:t(()=>[e[16]||(e[16]=u("h3",{class:"section-title"},"公告列表",-1)),u("div",ce,[X((f(),x(G,{data:T.value,style:{width:"100%"}},{default:t(()=>[a(y,{prop:"id",label:"ID",width:"80"}),a(y,{label:"标题","min-width":"240"},{default:t(({row:n})=>[u("span",{class:"ellipsis",title:n.title},D(n.title),9,de)]),_:1}),a(y,{label:"状态",width:"120"},{default:t(({row:n})=>[a(M,{type:n.is_active?"success":"info",effect:"light"},{default:t(()=>[c(D(n.is_active?"启用":"停用"),1)]),_:2},1032,["type"])]),_:1}),a(y,{label:"图片",width:"100"},{default:t(({row:n})=>[n.image_url?(f(),x(M,{key:0,type:"success",effect:"light"},{default:t(()=>[...e[11]||(e[11]=[c("有图",-1)])]),_:1})):(f(),h("span",me,"-"))]),_:1}),a(y,{prop:"created_at",label:"创建时间",width:"180"}),a(y,{label:"操作",width:"260",fixed:"right"},{default:t(({row:n})=>[u("div",fe,[a(i,{size:"small",onClick:V=>L(n)},{default:t(()=>[...e[12]||(e[12]=[c("查看",-1)])]),_:1},8,["onClick"]),n.is_active?(f(),x(i,{key:0,size:"small",onClick:V=>S(n)},{default:t(()=>[...e[13]||(e[13]=[c("停用",-1)])]),_:1},8,["onClick"])):(f(),x(i,{key:1,type:"success",size:"small",onClick:V=>R(n)},{default:t(()=>[...e[14]||(e[14]=[c("启用",-1)])]),_:1},8,["onClick"])),a(i,{type:"danger",size:"small",onClick:V=>j(n)},{default:t(()=>[...e[15]||(e[15]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[H,I.value]])])]),_:1})])}}},ke=W(pe,[["__scopeId","data-v-faabe575"]]);export{ke as default}; diff --git a/static/admin/assets/AnnouncementsPage-tpO97PUg.css b/static/admin/assets/AnnouncementsPage-tpO97PUg.css new file mode 100644 index 0000000..7f27184 --- /dev/null +++ b/static/admin/assets/AnnouncementsPage-tpO97PUg.css @@ -0,0 +1 @@ +.page-stack[data-v-faabe575]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-faabe575]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-faabe575]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-faabe575]{margin-top:10px;font-size:12px;color:var(--app-muted)}.image-preview[data-v-faabe575]{margin:6px 0 2px;display:flex;justify-content:flex-start}.image-preview img[data-v-faabe575]{max-width:280px;max-height:160px;border-radius:8px;border:1px solid var(--app-border);object-fit:contain}.image-upload-row[data-v-faabe575]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.image-input[data-v-faabe575]{display:none}.image-url[data-v-faabe575]{font-size:12px;color:var(--app-muted);word-break:break-all}.announcement-view[data-v-faabe575]{display:flex;flex-direction:column;gap:12px}.announcement-view-text[data-v-faabe575]{white-space:pre-wrap;line-height:1.6;font-size:14px}.announcement-view-image[data-v-faabe575]{max-width:100%;max-height:320px;border-radius:10px;border:1px solid var(--app-border);object-fit:contain}.table-wrap[data-v-faabe575]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-faabe575]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions[data-v-faabe575]{display:flex;flex-wrap:wrap;gap:8px} diff --git a/static/admin/assets/EmailPage-BmPCDPYC.css b/static/admin/assets/EmailPage-BmPCDPYC.css deleted file mode 100644 index 4f1a476..0000000 --- a/static/admin/assets/EmailPage-BmPCDPYC.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-4f511165]{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar[data-v-4f511165]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card[data-v-4f511165]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-head[data-v-4f511165]{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.section-title[data-v-4f511165]{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-4f511165]{margin-top:8px;font-size:12px;color:var(--app-muted)}.table-wrap[data-v-4f511165]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.sub-stats[data-v-4f511165]{margin-top:12px}.ellipsis[data-v-4f511165]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagination[data-v-4f511165]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint[data-v-4f511165]{font-size:12px}.dialog-actions[data-v-4f511165]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer[data-v-4f511165]{flex:1} diff --git a/static/admin/assets/EmailPage-CTHxGzDv.css b/static/admin/assets/EmailPage-CTHxGzDv.css new file mode 100644 index 0000000..ff162e8 --- /dev/null +++ b/static/admin/assets/EmailPage-CTHxGzDv.css @@ -0,0 +1 @@ +.page-stack[data-v-b1cb7390]{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar[data-v-b1cb7390]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card[data-v-b1cb7390]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-head[data-v-b1cb7390]{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.section-title[data-v-b1cb7390]{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-b1cb7390]{margin-top:8px;font-size:12px;color:var(--app-muted)}.table-wrap[data-v-b1cb7390]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.sub-stats[data-v-b1cb7390]{margin-top:12px}.ellipsis[data-v-b1cb7390]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagination[data-v-b1cb7390]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint[data-v-b1cb7390]{font-size:12px}.dialog-actions[data-v-b1cb7390]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer[data-v-b1cb7390]{flex:1} diff --git a/static/admin/assets/EmailPage-CATruPK6.js b/static/admin/assets/EmailPage-DiZA9Kx_.js similarity index 98% rename from static/admin/assets/EmailPage-CATruPK6.js rename to static/admin/assets/EmailPage-DiZA9Kx_.js index b7ecf9f..213dcf9 100644 --- a/static/admin/assets/EmailPage-CATruPK6.js +++ b/static/admin/assets/EmailPage-DiZA9Kx_.js @@ -1 +1 @@ -import{a as De,c as He,b as Ne,f as Fe,u as Ie}from"./email-px7YBG2O.js";import{a as U,_ as ze}from"./index-C1f9ticl.js";import{M as me}from"./MetricGrid-BnihYB_8.js";import{E as B,a as d}from"./vendor-element-B5S5pUKo.js";import{r as m,S as pe,R as Qe,c as G,o as je,aj as c,ap as Ge,n as x,q as f,t as u,F as K,L as t,D as M,E as n,I as p,J as _,G as P,K as te,a3 as ce}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Ke(){const{data:b}=await U.get("/smtp/configs");return b}async function Oe(b){const{data:v}=await U.post("/smtp/configs",b);return v}async function Re(b,v){const{data:g}=await U.put(`/smtp/configs/${b}`,v);return g}async function Je(b){const{data:v}=await U.delete(`/smtp/configs/${b}`);return v}async function We(b,v){const{data:g}=await U.post(`/smtp/configs/${b}/test`,{email:v});return g}async function Xe(b){const{data:v}=await U.post(`/smtp/configs/${b}/primary`);return v}async function Ye(){const{data:b}=await U.post("/smtp/configs/primary/clear");return b}const Ze={class:"page-stack"},el={class:"help app-muted"},ll={class:"section-head"},tl={class:"table-wrap"},al={class:"sub-stats"},sl={class:"help app-muted"},nl={class:"section-head"},ol={class:"toolbar"},il={class:"table-wrap"},ul=["title"],rl=["title"],dl=["title"],ml={class:"pagination"},pl={class:"page-hint app-muted"},cl={style:{width:"100%"}},fl={key:0,class:"help"},_l={key:0},bl={key:0},vl={key:0},yl={class:"dialog-actions"},fe=15,gl={__name:"EmailPage",setup(b){const v=m(!1),g=m(!1),o=pe({enabled:!1,failover_enabled:!0,register_verify_enabled:!1,login_alert_enabled:!0,task_notify_enabled:!1,base_url:"",updated_at:null});let L=null;async function ae(){v.value=!0;try{const s=await Ne();o.enabled=!!s.enabled,o.failover_enabled=!!s.failover_enabled,o.register_verify_enabled=!!s.register_verify_enabled,o.login_alert_enabled=s.login_alert_enabled===void 0?!0:!!s.login_alert_enabled,o.task_notify_enabled=!!s.task_notify_enabled,o.base_url=s.base_url||"",o.updated_at=s.updated_at||null}catch{}finally{v.value=!1}}async function _e(){if(!v.value){g.value=!0;try{const s=await Ie({enabled:o.enabled,failover_enabled:o.failover_enabled,register_verify_enabled:o.register_verify_enabled,login_alert_enabled:o.login_alert_enabled,task_notify_enabled:o.task_notify_enabled,base_url:(o.base_url||"").trim()});if(!s?.success){d.error(s?.error||"更新失败");return}d.success("邮件设置已更新"),await ae()}catch{}finally{g.value=!1}}}function E(){L&&window.clearTimeout(L),L=window.setTimeout(_e,300)}Qe(()=>{L&&window.clearTimeout(L),L=null});const O=m(!1),R=m([]),S=m(!1),k=m(!1),J=m(!1),H=m(!1),a=pe({id:null,name:"默认配置",enabled:!0,host:"",port:465,username:"",password:"",use_ssl:!0,use_tls:!1,sender_name:"自动化学习",sender_email:"",daily_limit:0,priority:0}),N=[{key:"custom",label:"自定义(手动填写)",defaults:null,note:"适用于其他邮箱/自建SMTP",links:[]},{key:"gmail",label:"Gmail",defaults:{host:"smtp.gmail.com",port:465,use_ssl:!0,use_tls:!1},note:"通常需要开启两步验证并创建应用专用密码(App Password)",links:[{label:"SMTP 设置说明",url:"https://support.google.com/mail/answer/7126229?hl=zh-Hans"},{label:"App Password",url:"https://myaccount.google.com/apppasswords"}]},{key:"qq",label:"QQ 邮箱",defaults:{host:"smtp.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并获取授权码(不是QQ登录密码)",links:[{label:"QQ邮箱 SMTP 帮助",url:"https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256"}]},{key:"163",label:"163 邮箱",defaults:{host:"smtp.163.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱 SMTP 帮助",url:"https://help.mail.163.com/faqDetail.do?code=d7a5dc8471a22b76"}]},{key:"126",label:"126 邮箱",defaults:{host:"smtp.126.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱帮助",url:"https://help.mail.163.com/"}]},{key:"outlook",label:"Outlook/Hotmail",defaults:{host:"smtp-mail.outlook.com",port:587,use_ssl:!1,use_tls:!0},note:"建议使用 TLS 587(部分账号需开启 SMTP AUTH)",links:[{label:"微软 SMTP 设置",url:"https://support.microsoft.com/office/pop-imap-and-smtp-settings-for-outlook-com-d088b0b7-0d38-4f9a-bc5d-509f9e4c6d3d"}]},{key:"office365",label:"Microsoft 365/Exchange",defaults:{host:"smtp.office365.com",port:587,use_ssl:!1,use_tls:!0},note:"企业邮箱常用配置(需启用 SMTP AUTH)",links:[{label:"微软官方说明",url:"https://learn.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission"}]},{key:"icloud",label:"iCloud",defaults:{host:"smtp.mail.me.com",port:587,use_ssl:!1,use_tls:!0},note:"需要在 Apple ID 中生成“App 专用密码”",links:[{label:"Apple 邮件服务器设置",url:"https://support.apple.com/zh-cn/HT202304"}]},{key:"tencent_exmail",label:"腾讯企业邮箱",defaults:{host:"smtp.exmail.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"腾讯企业邮箱帮助",url:"https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=23&no=1001068"}]},{key:"aliyun_exmail",label:"阿里企业邮箱",defaults:{host:"smtp.mxhichina.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"阿里云文档",url:"https://help.aliyun.com/document_detail/50652.html"}]}],q=m("custom"),V=G(()=>N.find(s=>s.key===q.value)||N[0]),be=G(()=>k.value&&J.value?"留空保持不变":"SMTP密码或授权码");function ve(s){const e=String(s?.host||"").trim().toLowerCase();return e&&{"smtp.gmail.com":"gmail","smtp.qq.com":"qq","smtp.163.com":"163","smtp.126.com":"126","smtp-mail.outlook.com":"outlook","smtp.office365.com":"office365","smtp.mail.me.com":"icloud","smtp.exmail.qq.com":"tencent_exmail","smtp.mxhichina.com":"aliyun_exmail"}[e]||"custom"}function ye(s){const e=N.find(i=>i.key===s);!e||!e.defaults||(a.host=e.defaults.host,a.port=e.defaults.port,a.use_ssl=e.defaults.use_ssl,a.use_tls=e.defaults.use_tls)}function se(){a.id=null,a.name="默认配置",a.enabled=!0,a.host="",a.port=465,a.username="",a.password="",a.use_ssl=!0,a.use_tls=!1,a.sender_name="自动化学习",a.sender_email="",a.daily_limit=0,a.priority=0,J.value=!1,H.value=!1,q.value="custom"}async function $(){O.value=!0;try{R.value=await Ke()}catch{R.value=[]}finally{O.value=!1}}function ge(){k.value=!1,se(),q.value="custom",S.value=!0}function ke(s){k.value=!0,se(),a.id=s.id,a.name=s.name||"默认配置",a.enabled=!!s.enabled,a.host=s.host||"",a.port=s.port||465,a.username=s.username||"",a.password="",a.use_ssl=!!s.use_ssl,a.use_tls=!!s.use_tls,a.sender_name=s.sender_name||"自动化学习",a.sender_email=s.sender_email||"",a.daily_limit=s.daily_limit??0,a.priority=s.priority??0,J.value=!!s.has_password,H.value=!!s.is_primary,q.value=ve(s),S.value=!0}function ne(s){return s.is_primary?{label:"主",type:"warning"}:s.enabled?{label:"备用",type:"success"}:{label:"禁用",type:"info"}}function he(s){return s.daily_limit&&s.daily_limit>0?`${s.daily_sent}/${s.daily_limit}`:`${s.daily_sent}/∞`}async function Ve(){if(!a.host.trim()){d.error("SMTP服务器地址不能为空");return}if(!a.username.trim()){d.error("SMTP用户名不能为空");return}const s={name:a.name.trim()||"默认配置",enabled:!!a.enabled,priority:Number(a.priority)||0,host:a.host.trim(),port:Number(a.port)||465,username:a.username.trim(),use_ssl:!!a.use_ssl,use_tls:!!a.use_tls,sender_name:(a.sender_name||"").trim(),sender_email:(a.sender_email||"").trim(),daily_limit:Number(a.daily_limit)||0};try{if(k.value){const e={...s};a.password&&(e.password=a.password);const i=await Re(a.id,e);if(!i?.success){d.error(i?.error||"更新失败");return}d.success("保存成功")}else{const e={...s};a.password&&(e.password=a.password);const i=await Oe(e);if(!i?.success){d.error(i?.error||"创建失败");return}d.success("创建成功")}S.value=!1,await $()}catch{}}async function we(){if(!k.value||!a.id){d.error("请先保存配置后再测试");return}let s;try{const e=await B.prompt("请输入测试收件邮箱","测试连接",{inputPlaceholder:"name@example.com",confirmButtonText:"发送测试邮件",cancelButtonText:"取消",inputValidator:i=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(i||"").trim()),inputErrorMessage:"邮箱格式不正确"});s=String(e.value||"").trim()}catch{return}try{const e=await We(a.id,s);e?.success?(d.success("测试成功,邮件已发送"),await $()):await B.alert(e?.error||"测试失败","测试失败",{confirmButtonText:"知道了"})}catch{}}async function Se(){if(!(!k.value||!a.id)){try{await B.confirm("确定将该配置设为主配置吗?","设为主配置",{confirmButtonText:"设为主配置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const s=await Xe(a.id);if(!s?.success){d.error(s?.error||"设置失败");return}d.success("已设为主配置"),S.value=!1,await $()}catch{}}}async function Te(){if(k.value){try{await B.confirm("确定取消主配置吗?取消后将按优先级选择可用SMTP。","取消主配置",{confirmButtonText:"取消主配置",cancelButtonText:"保留",type:"warning"})}catch{return}try{const s=await Ye();if(!s?.success){d.error(s?.error||"操作失败");return}d.success("已取消主配置"),S.value=!1,await $()}catch{}}}async function xe(){if(!(!k.value||!a.id)){try{await B.confirm("确定删除该SMTP配置吗?此操作不可恢复。","删除配置",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const s=await Je(a.id);if(!s?.success){d.error(s?.error||"删除失败");return}d.success("已删除"),S.value=!1,await $()}catch{}}}const A=m(!1),h=m({}),W=m(!1),F=m(""),I=m(""),z=m(1),X=m([]),Y=m(0),Z=m(1);function Pe(s){return{register:"注册验证",reset:"密码重置",bind:"邮箱绑定",task_complete:"任务完成",security_alert:"安全告警"}[s]||s}function oe(s){return s?.username&&s?.user_id?`${s.username} (#${s.user_id})`:s?.user_id?`用户#${s.user_id}`:"系统"}const Ce=G(()=>[{key:"total_sent",label:"总发送",value:h.value?.total_sent||0,tone:"blue"},{key:"total_success",label:"成功",value:h.value?.total_success||0,tone:"green"},{key:"total_failed",label:"失败",value:h.value?.total_failed||0,tone:"red"},{key:"success_rate",label:"成功率",value:`${h.value?.success_rate||0}%`,tone:"purple"}]),Be=G(()=>[{key:"register_sent",label:"注册验证",value:h.value?.register_sent||0,tone:"cyan"},{key:"reset_sent",label:"密码重置",value:h.value?.reset_sent||0,tone:"orange"},{key:"bind_sent",label:"邮箱绑定",value:h.value?.bind_sent||0,tone:"purple"},{key:"task_complete_sent",label:"任务完成",value:h.value?.task_complete_sent||0,tone:"green"}]);async function Me(){A.value=!0;try{h.value=await Fe()}catch{h.value={}}finally{A.value=!1}}async function D(s=1){W.value=!0;try{const e={page:s,page_size:fe};F.value&&(e.type=F.value),I.value&&(e.status=I.value);const i=await De(e);X.value=i?.logs||[],Y.value=i?.total||0,z.value=i?.page||s,Z.value=i?.total_pages||1}catch{X.value=[],Y.value=0,Z.value=1}finally{W.value=!1}}async function Ue(){let s;try{const e=await B.prompt("请输入保留天数(将删除该天数之前的日志)","清理日志",{inputValue:"30",confirmButtonText:"清理",cancelButtonText:"取消",inputValidator:i=>{const r=parseInt(String(i),10);return Number.isFinite(r)&&r>=7},inputErrorMessage:"天数必须大于等于7"});s=parseInt(String(e.value),10)}catch{return}try{await B.confirm(`确定删除 ${s} 天之前的邮件日志吗?`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await He(s);if(!e?.success){d.error(e?.error||"清理失败");return}d.success(`已清理 ${e.deleted} 条日志`),await D(1)}catch{}}async function Le(){await Promise.all([ae(),$(),Me(),D(1)])}return je(Le),(s,e)=>{const i=c("el-switch"),r=c("el-form-item"),Ee=c("el-divider"),C=c("el-input"),ie=c("el-form"),Q=c("el-card"),T=c("el-button"),ue=c("el-tag"),y=c("el-table-column"),re=c("el-table"),w=c("el-option"),ee=c("el-select"),qe=c("el-pagination"),$e=c("el-link"),le=c("el-input-number"),Ae=c("el-dialog"),j=Ge("loading");return f(),x("div",Ze,[e[43]||(e[43]=u("div",{class:"app-page-title"},[u("h2",null,"邮件配置")],-1)),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[29]||(e[29]=u("h3",{class:"section-title"},"全局设置",-1)),t(ie,{"label-width":"140px"},{default:n(()=>[t(r,{label:"启用邮件功能"},{default:n(()=>[t(i,{modelValue:o.enabled,"onUpdate:modelValue":e[0]||(e[0]=l=>o.enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用故障转移"},{default:n(()=>[t(i,{modelValue:o.failover_enabled,"onUpdate:modelValue":e[1]||(e[1]=l=>o.failover_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用注册邮箱验证"},{default:n(()=>[t(i,{modelValue:o.register_verify_enabled,"onUpdate:modelValue":e[2]||(e[2]=l=>o.register_verify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(Ee,{"content-position":"left"},{default:n(()=>[...e[26]||(e[26]=[p("通知设置",-1)])]),_:1}),t(r,{label:"启用任务完成通知"},{default:n(()=>[t(i,{modelValue:o.task_notify_enabled,"onUpdate:modelValue":e[3]||(e[3]=l=>o.task_notify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"新设备登录提醒"},{default:n(()=>[t(i,{modelValue:o.login_alert_enabled,"onUpdate:modelValue":e[4]||(e[4]=l=>o.login_alert_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"]),e[27]||(e[27]=u("div",{class:"help"},"当检测到新设备或新IP登录时,发送邮件提醒用户",-1))]),_:1}),t(r,{label:"网站基础URL"},{default:n(()=>[t(C,{modelValue:o.base_url,"onUpdate:modelValue":e[5]||(e[5]=l=>o.base_url=l),placeholder:"例如: https://example.com",disabled:g.value,onBlur:E},null,8,["modelValue","disabled"]),e[28]||(e[28]=u("div",{class:"help"},"用于生成邮件中的验证链接,留空则使用默认配置。",-1))]),_:1})]),_:1}),u("div",el,"最近更新时间:"+_(o.updated_at||"-"),1)]),_:1})),[[j,v.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",ll,[e[31]||(e[31]=u("h3",{class:"section-title"},"SMTP配置列表",-1)),t(T,{type:"primary",onClick:ge},{default:n(()=>[...e[30]||(e[30]=[p("+ 添加配置",-1)])]),_:1})]),u("div",tl,[K((f(),M(re,{data:R.value,style:{width:"100%"}},{default:n(()=>[t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:ne(l).type,effect:"light"},{default:n(()=>[p(_(ne(l).label),1)]),_:2},1032,["type"])]),_:1}),t(y,{prop:"name",label:"名称","min-width":"160"}),t(y,{label:"服务器","min-width":"200"},{default:n(({row:l})=>[p(_(l.host)+":"+_(l.port),1)]),_:1}),t(y,{label:"今日/限额",width:"110"},{default:n(({row:l})=>[p(_(he(l)),1)]),_:1}),t(y,{label:"成功率",width:"100"},{default:n(({row:l})=>[p(_(l.success_rate)+"%",1)]),_:1}),t(y,{label:"操作",width:"120",fixed:"right"},{default:n(({row:l})=>[t(T,{size:"small",onClick:de=>ke(l)},{default:n(()=>[...e[32]||(e[32]=[p("编辑",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[j,O.value]])])]),_:1}),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[33]||(e[33]=u("h3",{class:"section-title"},"邮件发送统计",-1)),t(me,{items:Ce.value,loading:A.value,"min-width":160},null,8,["items","loading"]),u("div",al,[t(me,{items:Be.value,loading:A.value,"min-width":150},null,8,["items","loading"])]),u("div",sl,"最后更新:"+_(h.value.last_updated||"-"),1)]),_:1})),[[j,A.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",nl,[e[35]||(e[35]=u("h3",{class:"section-title"},"邮件发送日志",-1)),u("div",ol,[t(ee,{modelValue:F.value,"onUpdate:modelValue":e[6]||(e[6]=l=>F.value=l),style:{width:"140px"},onChange:e[7]||(e[7]=l=>D(1))},{default:n(()=>[t(w,{label:"全部类型",value:""}),t(w,{label:"注册验证",value:"register"}),t(w,{label:"密码重置",value:"reset"}),t(w,{label:"邮箱绑定",value:"bind"}),t(w,{label:"任务完成",value:"task_complete"}),t(w,{label:"安全告警",value:"security_alert"})]),_:1},8,["modelValue"]),t(ee,{modelValue:I.value,"onUpdate:modelValue":e[8]||(e[8]=l=>I.value=l),style:{width:"120px"},onChange:e[9]||(e[9]=l=>D(1))},{default:n(()=>[t(w,{label:"全部状态",value:""}),t(w,{label:"成功",value:"success"}),t(w,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(T,{type:"danger",plain:"",onClick:Ue},{default:n(()=>[...e[34]||(e[34]=[p("清理日志",-1)])]),_:1})])]),u("div",il,[K((f(),M(re,{data:X.value,style:{width:"100%"}},{default:n(()=>[t(y,{prop:"created_at",label:"时间",width:"180"}),t(y,{prop:"email_to",label:"收件人","min-width":"180"}),t(y,{label:"来源用户","min-width":"160"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:oe(l)},_(oe(l)),9,ul)]),_:1}),t(y,{label:"类型",width:"120"},{default:n(({row:l})=>[p(_(Pe(l.email_type)),1)]),_:1}),t(y,{label:"主题","min-width":"220"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.subject},_(l.subject),9,rl)]),_:1}),t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:l.status==="success"?"success":"danger",effect:"light"},{default:n(()=>[p(_(l.status==="success"?"成功":"失败"),1)]),_:2},1032,["type"])]),_:1}),t(y,{label:"错误","min-width":"200"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.error_message||""},_(l.error_message||"-"),9,dl)]),_:1})]),_:1},8,["data"])),[[j,W.value]])]),u("div",ml,[t(qe,{"current-page":z.value,"onUpdate:currentPage":e[10]||(e[10]=l=>z.value=l),"page-size":fe,total:Y.value,layout:"prev, pager, next, ->, total",onCurrentChange:D},null,8,["current-page","total"]),u("div",pl,"第 "+_(z.value)+" / "+_(Z.value)+" 页",1)])]),_:1}),t(Ae,{modelValue:S.value,"onUpdate:modelValue":e[25]||(e[25]=l=>S.value=l),title:k.value?"编辑SMTP配置":"添加SMTP配置",width:"min(560px, 92vw)"},{footer:n(()=>[u("div",yl,[t(T,{onClick:we},{default:n(()=>[...e[36]||(e[36]=[p("测试连接",-1)])]),_:1}),k.value&&H.value?(f(),M(T,{key:0,type:"warning",plain:"",onClick:Te},{default:n(()=>[...e[37]||(e[37]=[p("取消主配置",-1)])]),_:1})):P("",!0),k.value&&!H.value?(f(),M(T,{key:1,onClick:Se},{default:n(()=>[...e[38]||(e[38]=[p("设为主配置",-1)])]),_:1})):P("",!0),k.value?(f(),M(T,{key:2,type:"danger",plain:"",onClick:xe},{default:n(()=>[...e[39]||(e[39]=[p("删除配置",-1)])]),_:1})):P("",!0),e[42]||(e[42]=u("div",{class:"spacer"},null,-1)),t(T,{onClick:e[24]||(e[24]=l=>S.value=!1)},{default:n(()=>[...e[40]||(e[40]=[p("取消",-1)])]),_:1}),t(T,{type:"primary",onClick:Ve},{default:n(()=>[...e[41]||(e[41]=[p("保存",-1)])]),_:1})])]),default:n(()=>[t(ie,{"label-width":"120px"},{default:n(()=>[t(r,{label:"名称"},{default:n(()=>[t(C,{modelValue:a.name,"onUpdate:modelValue":e[11]||(e[11]=l=>a.name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"启用"},{default:n(()=>[t(i,{modelValue:a.enabled,"onUpdate:modelValue":e[12]||(e[12]=l=>a.enabled=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"邮箱模板"},{default:n(()=>[u("div",cl,[t(ee,{modelValue:q.value,"onUpdate:modelValue":e[13]||(e[13]=l=>q.value=l),placeholder:"选择常用邮箱模板",style:{width:"100%"},onChange:ye},{default:n(()=>[(f(),x(te,null,ce(N,l=>t(w,{key:l.key,label:l.label,value:l.key},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),V.value.note||V.value.links&&V.value.links.length?(f(),x("div",fl,[V.value.note?(f(),x("span",_l,_(V.value.note),1)):P("",!0),V.value.links&&V.value.links.length?(f(),x(te,{key:1},[V.value.note?(f(),x("span",bl," · ")):P("",!0),(f(!0),x(te,null,ce(V.value.links,(l,de)=>(f(),x("span",{key:l.url},[t($e,{href:l.url,target:"_blank",type:"primary",underline:!1},{default:n(()=>[p(_(l.label),1)]),_:2},1032,["href"]),de[t(C,{modelValue:a.host,"onUpdate:modelValue":e[14]||(e[14]=l=>a.host=l),placeholder:"smtp.example.com"},null,8,["modelValue"])]),_:1}),t(r,{label:"端口"},{default:n(()=>[t(le,{modelValue:a.port,"onUpdate:modelValue":e[15]||(e[15]=l=>a.port=l),min:1,max:65535},null,8,["modelValue"])]),_:1}),t(r,{label:"用户名"},{default:n(()=>[t(C,{modelValue:a.username,"onUpdate:modelValue":e[16]||(e[16]=l=>a.username=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"密码"},{default:n(()=>[t(C,{modelValue:a.password,"onUpdate:modelValue":e[17]||(e[17]=l=>a.password=l),type:"password","show-password":"",placeholder:be.value},null,8,["modelValue","placeholder"])]),_:1}),t(r,{label:"SSL"},{default:n(()=>[t(i,{modelValue:a.use_ssl,"onUpdate:modelValue":e[18]||(e[18]=l=>a.use_ssl=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"TLS"},{default:n(()=>[t(i,{modelValue:a.use_tls,"onUpdate:modelValue":e[19]||(e[19]=l=>a.use_tls=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人名称"},{default:n(()=>[t(C,{modelValue:a.sender_name,"onUpdate:modelValue":e[20]||(e[20]=l=>a.sender_name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人邮箱"},{default:n(()=>[t(C,{modelValue:a.sender_email,"onUpdate:modelValue":e[21]||(e[21]=l=>a.sender_email=l),placeholder:"可选"},null,8,["modelValue"])]),_:1}),t(r,{label:"每日限额"},{default:n(()=>[t(le,{modelValue:a.daily_limit,"onUpdate:modelValue":e[22]||(e[22]=l=>a.daily_limit=l),min:0,max:1e6},null,8,["modelValue"])]),_:1}),t(r,{label:"优先级"},{default:n(()=>[t(le,{modelValue:a.priority,"onUpdate:modelValue":e[23]||(e[23]=l=>a.priority=l),min:0,max:1e3},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},Pl=ze(gl,[["__scopeId","data-v-4f511165"]]);export{Pl as default}; +import{a as De,c as He,b as Ne,f as Fe,u as Ie}from"./email-Mh1SHQbX.js";import{a as U,_ as ze}from"./index-DOvMEmc8.js";import{M as me}from"./MetricGrid-C3Xjc9mZ.js";import{E as B,a as d}from"./vendor-element-B5S5pUKo.js";import{r as m,S as pe,R as Qe,c as G,o as je,aj as c,ap as Ge,n as x,q as f,t as u,F as K,L as t,D as M,E as n,I as p,J as _,G as P,K as te,a3 as ce}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Ke(){const{data:b}=await U.get("/smtp/configs");return b}async function Oe(b){const{data:v}=await U.post("/smtp/configs",b);return v}async function Re(b,v){const{data:g}=await U.put(`/smtp/configs/${b}`,v);return g}async function Je(b){const{data:v}=await U.delete(`/smtp/configs/${b}`);return v}async function We(b,v){const{data:g}=await U.post(`/smtp/configs/${b}/test`,{email:v});return g}async function Xe(b){const{data:v}=await U.post(`/smtp/configs/${b}/primary`);return v}async function Ye(){const{data:b}=await U.post("/smtp/configs/primary/clear");return b}const Ze={class:"page-stack"},el={class:"help app-muted"},ll={class:"section-head"},tl={class:"table-wrap"},al={class:"sub-stats"},sl={class:"help app-muted"},nl={class:"section-head"},ol={class:"toolbar"},il={class:"table-wrap"},ul=["title"],rl=["title"],dl=["title"],ml={class:"pagination"},pl={class:"page-hint app-muted"},cl={style:{width:"100%"}},fl={key:0,class:"help"},_l={key:0},bl={key:0},vl={key:0},yl={class:"dialog-actions"},fe=15,gl={__name:"EmailPage",setup(b){const v=m(!1),g=m(!1),o=pe({enabled:!1,failover_enabled:!0,register_verify_enabled:!1,login_alert_enabled:!0,task_notify_enabled:!1,base_url:"",updated_at:null});let L=null;async function ae(){v.value=!0;try{const s=await Ne();o.enabled=!!s.enabled,o.failover_enabled=!!s.failover_enabled,o.register_verify_enabled=!!s.register_verify_enabled,o.login_alert_enabled=s.login_alert_enabled===void 0?!0:!!s.login_alert_enabled,o.task_notify_enabled=!!s.task_notify_enabled,o.base_url=s.base_url||"",o.updated_at=s.updated_at||null}catch{}finally{v.value=!1}}async function _e(){if(!v.value){g.value=!0;try{const s=await Ie({enabled:o.enabled,failover_enabled:o.failover_enabled,register_verify_enabled:o.register_verify_enabled,login_alert_enabled:o.login_alert_enabled,task_notify_enabled:o.task_notify_enabled,base_url:(o.base_url||"").trim()});if(!s?.success){d.error(s?.error||"更新失败");return}d.success("邮件设置已更新"),await ae()}catch{}finally{g.value=!1}}}function E(){L&&window.clearTimeout(L),L=window.setTimeout(_e,300)}Qe(()=>{L&&window.clearTimeout(L),L=null});const O=m(!1),R=m([]),S=m(!1),k=m(!1),J=m(!1),H=m(!1),a=pe({id:null,name:"默认配置",enabled:!0,host:"",port:465,username:"",password:"",use_ssl:!0,use_tls:!1,sender_name:"自动化学习",sender_email:"",daily_limit:0,priority:0}),N=[{key:"custom",label:"自定义(手动填写)",defaults:null,note:"适用于其他邮箱/自建SMTP",links:[]},{key:"gmail",label:"Gmail",defaults:{host:"smtp.gmail.com",port:465,use_ssl:!0,use_tls:!1},note:"通常需要开启两步验证并创建应用专用密码(App Password)",links:[{label:"SMTP 设置说明",url:"https://support.google.com/mail/answer/7126229?hl=zh-Hans"},{label:"App Password",url:"https://myaccount.google.com/apppasswords"}]},{key:"qq",label:"QQ 邮箱",defaults:{host:"smtp.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并获取授权码(不是QQ登录密码)",links:[{label:"QQ邮箱 SMTP 帮助",url:"https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=1001256"}]},{key:"163",label:"163 邮箱",defaults:{host:"smtp.163.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱 SMTP 帮助",url:"https://help.mail.163.com/faqDetail.do?code=d7a5dc8471a22b76"}]},{key:"126",label:"126 邮箱",defaults:{host:"smtp.126.com",port:465,use_ssl:!0,use_tls:!1},note:"需要在邮箱设置中开启 SMTP 并使用授权码/客户端授权密码",links:[{label:"网易邮箱帮助",url:"https://help.mail.163.com/"}]},{key:"outlook",label:"Outlook/Hotmail",defaults:{host:"smtp-mail.outlook.com",port:587,use_ssl:!1,use_tls:!0},note:"建议使用 TLS 587(部分账号需开启 SMTP AUTH)",links:[{label:"微软 SMTP 设置",url:"https://support.microsoft.com/office/pop-imap-and-smtp-settings-for-outlook-com-d088b0b7-0d38-4f9a-bc5d-509f9e4c6d3d"}]},{key:"office365",label:"Microsoft 365/Exchange",defaults:{host:"smtp.office365.com",port:587,use_ssl:!1,use_tls:!0},note:"企业邮箱常用配置(需启用 SMTP AUTH)",links:[{label:"微软官方说明",url:"https://learn.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission"}]},{key:"icloud",label:"iCloud",defaults:{host:"smtp.mail.me.com",port:587,use_ssl:!1,use_tls:!0},note:"需要在 Apple ID 中生成“App 专用密码”",links:[{label:"Apple 邮件服务器设置",url:"https://support.apple.com/zh-cn/HT202304"}]},{key:"tencent_exmail",label:"腾讯企业邮箱",defaults:{host:"smtp.exmail.qq.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"腾讯企业邮箱帮助",url:"https://service.exmail.qq.com/cgi-bin/help?subtype=1&id=23&no=1001068"}]},{key:"aliyun_exmail",label:"阿里企业邮箱",defaults:{host:"smtp.mxhichina.com",port:465,use_ssl:!0,use_tls:!1},note:"企业邮箱常用配置",links:[{label:"阿里云文档",url:"https://help.aliyun.com/document_detail/50652.html"}]}],q=m("custom"),V=G(()=>N.find(s=>s.key===q.value)||N[0]),be=G(()=>k.value&&J.value?"留空保持不变":"SMTP密码或授权码");function ve(s){const e=String(s?.host||"").trim().toLowerCase();return e&&{"smtp.gmail.com":"gmail","smtp.qq.com":"qq","smtp.163.com":"163","smtp.126.com":"126","smtp-mail.outlook.com":"outlook","smtp.office365.com":"office365","smtp.mail.me.com":"icloud","smtp.exmail.qq.com":"tencent_exmail","smtp.mxhichina.com":"aliyun_exmail"}[e]||"custom"}function ye(s){const e=N.find(i=>i.key===s);!e||!e.defaults||(a.host=e.defaults.host,a.port=e.defaults.port,a.use_ssl=e.defaults.use_ssl,a.use_tls=e.defaults.use_tls)}function se(){a.id=null,a.name="默认配置",a.enabled=!0,a.host="",a.port=465,a.username="",a.password="",a.use_ssl=!0,a.use_tls=!1,a.sender_name="自动化学习",a.sender_email="",a.daily_limit=0,a.priority=0,J.value=!1,H.value=!1,q.value="custom"}async function $(){O.value=!0;try{R.value=await Ke()}catch{R.value=[]}finally{O.value=!1}}function ge(){k.value=!1,se(),q.value="custom",S.value=!0}function ke(s){k.value=!0,se(),a.id=s.id,a.name=s.name||"默认配置",a.enabled=!!s.enabled,a.host=s.host||"",a.port=s.port||465,a.username=s.username||"",a.password="",a.use_ssl=!!s.use_ssl,a.use_tls=!!s.use_tls,a.sender_name=s.sender_name||"自动化学习",a.sender_email=s.sender_email||"",a.daily_limit=s.daily_limit??0,a.priority=s.priority??0,J.value=!!s.has_password,H.value=!!s.is_primary,q.value=ve(s),S.value=!0}function ne(s){return s.is_primary?{label:"主",type:"warning"}:s.enabled?{label:"备用",type:"success"}:{label:"禁用",type:"info"}}function he(s){return s.daily_limit&&s.daily_limit>0?`${s.daily_sent}/${s.daily_limit}`:`${s.daily_sent}/∞`}async function Ve(){if(!a.host.trim()){d.error("SMTP服务器地址不能为空");return}if(!a.username.trim()){d.error("SMTP用户名不能为空");return}const s={name:a.name.trim()||"默认配置",enabled:!!a.enabled,priority:Number(a.priority)||0,host:a.host.trim(),port:Number(a.port)||465,username:a.username.trim(),use_ssl:!!a.use_ssl,use_tls:!!a.use_tls,sender_name:(a.sender_name||"").trim(),sender_email:(a.sender_email||"").trim(),daily_limit:Number(a.daily_limit)||0};try{if(k.value){const e={...s};a.password&&(e.password=a.password);const i=await Re(a.id,e);if(!i?.success){d.error(i?.error||"更新失败");return}d.success("保存成功")}else{const e={...s};a.password&&(e.password=a.password);const i=await Oe(e);if(!i?.success){d.error(i?.error||"创建失败");return}d.success("创建成功")}S.value=!1,await $()}catch{}}async function we(){if(!k.value||!a.id){d.error("请先保存配置后再测试");return}let s;try{const e=await B.prompt("请输入测试收件邮箱","测试连接",{inputPlaceholder:"name@example.com",confirmButtonText:"发送测试邮件",cancelButtonText:"取消",inputValidator:i=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(i||"").trim()),inputErrorMessage:"邮箱格式不正确"});s=String(e.value||"").trim()}catch{return}try{const e=await We(a.id,s);e?.success?(d.success("测试成功,邮件已发送"),await $()):await B.alert(e?.error||"测试失败","测试失败",{confirmButtonText:"知道了"})}catch{}}async function Se(){if(!(!k.value||!a.id)){try{await B.confirm("确定将该配置设为主配置吗?","设为主配置",{confirmButtonText:"设为主配置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const s=await Xe(a.id);if(!s?.success){d.error(s?.error||"设置失败");return}d.success("已设为主配置"),S.value=!1,await $()}catch{}}}async function Te(){if(k.value){try{await B.confirm("确定取消主配置吗?取消后将按优先级选择可用SMTP。","取消主配置",{confirmButtonText:"取消主配置",cancelButtonText:"保留",type:"warning"})}catch{return}try{const s=await Ye();if(!s?.success){d.error(s?.error||"操作失败");return}d.success("已取消主配置"),S.value=!1,await $()}catch{}}}async function xe(){if(!(!k.value||!a.id)){try{await B.confirm("确定删除该SMTP配置吗?此操作不可恢复。","删除配置",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const s=await Je(a.id);if(!s?.success){d.error(s?.error||"删除失败");return}d.success("已删除"),S.value=!1,await $()}catch{}}}const A=m(!1),h=m({}),W=m(!1),F=m(""),I=m(""),z=m(1),X=m([]),Y=m(0),Z=m(1);function Pe(s){return{register:"注册验证",reset:"密码重置",bind:"邮箱绑定",task_complete:"任务完成",security_alert:"安全告警"}[s]||s}function oe(s){return s?.username&&s?.user_id?`${s.username} (#${s.user_id})`:s?.user_id?`用户#${s.user_id}`:"系统"}const Ce=G(()=>[{key:"total_sent",label:"总发送",value:h.value?.total_sent||0,tone:"blue"},{key:"total_success",label:"成功",value:h.value?.total_success||0,tone:"green"},{key:"total_failed",label:"失败",value:h.value?.total_failed||0,tone:"red"},{key:"success_rate",label:"成功率",value:`${h.value?.success_rate||0}%`,tone:"purple"}]),Be=G(()=>[{key:"register_sent",label:"注册验证",value:h.value?.register_sent||0,tone:"cyan"},{key:"reset_sent",label:"密码重置",value:h.value?.reset_sent||0,tone:"orange"},{key:"bind_sent",label:"邮箱绑定",value:h.value?.bind_sent||0,tone:"purple"},{key:"task_complete_sent",label:"任务完成",value:h.value?.task_complete_sent||0,tone:"green"}]);async function Me(){A.value=!0;try{h.value=await Fe()}catch{h.value={}}finally{A.value=!1}}async function D(s=1){W.value=!0;try{const e={page:s,page_size:fe};F.value&&(e.type=F.value),I.value&&(e.status=I.value);const i=await De(e);X.value=i?.logs||[],Y.value=i?.total||0,z.value=i?.page||s,Z.value=i?.total_pages||1}catch{X.value=[],Y.value=0,Z.value=1}finally{W.value=!1}}async function Ue(){let s;try{const e=await B.prompt("请输入保留天数(将删除该天数之前的日志)","清理日志",{inputValue:"30",confirmButtonText:"清理",cancelButtonText:"取消",inputValidator:i=>{const r=parseInt(String(i),10);return Number.isFinite(r)&&r>=7},inputErrorMessage:"天数必须大于等于7"});s=parseInt(String(e.value),10)}catch{return}try{await B.confirm(`确定删除 ${s} 天之前的邮件日志吗?`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await He(s);if(!e?.success){d.error(e?.error||"清理失败");return}d.success(`已清理 ${e.deleted} 条日志`),await D(1)}catch{}}async function Le(){await Promise.all([ae(),$(),Me(),D(1)])}return je(Le),(s,e)=>{const i=c("el-switch"),r=c("el-form-item"),Ee=c("el-divider"),C=c("el-input"),ie=c("el-form"),Q=c("el-card"),T=c("el-button"),ue=c("el-tag"),y=c("el-table-column"),re=c("el-table"),w=c("el-option"),ee=c("el-select"),qe=c("el-pagination"),$e=c("el-link"),le=c("el-input-number"),Ae=c("el-dialog"),j=Ge("loading");return f(),x("div",Ze,[e[43]||(e[43]=u("div",{class:"app-page-title"},[u("h2",null,"邮件配置")],-1)),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[29]||(e[29]=u("h3",{class:"section-title"},"全局设置",-1)),t(ie,{"label-width":"140px"},{default:n(()=>[t(r,{label:"启用邮件功能"},{default:n(()=>[t(i,{modelValue:o.enabled,"onUpdate:modelValue":e[0]||(e[0]=l=>o.enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用故障转移"},{default:n(()=>[t(i,{modelValue:o.failover_enabled,"onUpdate:modelValue":e[1]||(e[1]=l=>o.failover_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"启用注册邮箱验证"},{default:n(()=>[t(i,{modelValue:o.register_verify_enabled,"onUpdate:modelValue":e[2]||(e[2]=l=>o.register_verify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(Ee,{"content-position":"left"},{default:n(()=>[...e[26]||(e[26]=[p("通知设置",-1)])]),_:1}),t(r,{label:"启用任务完成通知"},{default:n(()=>[t(i,{modelValue:o.task_notify_enabled,"onUpdate:modelValue":e[3]||(e[3]=l=>o.task_notify_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"])]),_:1}),t(r,{label:"新设备登录提醒"},{default:n(()=>[t(i,{modelValue:o.login_alert_enabled,"onUpdate:modelValue":e[4]||(e[4]=l=>o.login_alert_enabled=l),disabled:g.value,onChange:E},null,8,["modelValue","disabled"]),e[27]||(e[27]=u("div",{class:"help"},"当检测到新设备或新IP登录时,发送邮件提醒用户",-1))]),_:1}),t(r,{label:"网站基础URL"},{default:n(()=>[t(C,{modelValue:o.base_url,"onUpdate:modelValue":e[5]||(e[5]=l=>o.base_url=l),placeholder:"例如: https://example.com",disabled:g.value,onBlur:E},null,8,["modelValue","disabled"]),e[28]||(e[28]=u("div",{class:"help"},"用于生成邮件中的验证链接,留空则使用默认配置。",-1))]),_:1})]),_:1}),u("div",el,"最近更新时间:"+_(o.updated_at||"-"),1)]),_:1})),[[j,v.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",ll,[e[31]||(e[31]=u("h3",{class:"section-title"},"SMTP配置列表",-1)),t(T,{type:"primary",onClick:ge},{default:n(()=>[...e[30]||(e[30]=[p("+ 添加配置",-1)])]),_:1})]),u("div",tl,[K((f(),M(re,{data:R.value,style:{width:"100%"}},{default:n(()=>[t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:ne(l).type,effect:"light"},{default:n(()=>[p(_(ne(l).label),1)]),_:2},1032,["type"])]),_:1}),t(y,{prop:"name",label:"名称","min-width":"160"}),t(y,{label:"服务器","min-width":"200"},{default:n(({row:l})=>[p(_(l.host)+":"+_(l.port),1)]),_:1}),t(y,{label:"今日/限额",width:"110"},{default:n(({row:l})=>[p(_(he(l)),1)]),_:1}),t(y,{label:"成功率",width:"100"},{default:n(({row:l})=>[p(_(l.success_rate)+"%",1)]),_:1}),t(y,{label:"操作",width:"120",fixed:"right"},{default:n(({row:l})=>[t(T,{size:"small",onClick:de=>ke(l)},{default:n(()=>[...e[32]||(e[32]=[p("编辑",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[j,O.value]])])]),_:1}),K((f(),M(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[e[33]||(e[33]=u("h3",{class:"section-title"},"邮件发送统计",-1)),t(me,{items:Ce.value,loading:A.value,"min-width":160},null,8,["items","loading"]),u("div",al,[t(me,{items:Be.value,loading:A.value,"min-width":150},null,8,["items","loading"])]),u("div",sl,"最后更新:"+_(h.value.last_updated||"-"),1)]),_:1})),[[j,A.value]]),t(Q,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:n(()=>[u("div",nl,[e[35]||(e[35]=u("h3",{class:"section-title"},"邮件发送日志",-1)),u("div",ol,[t(ee,{modelValue:F.value,"onUpdate:modelValue":e[6]||(e[6]=l=>F.value=l),style:{width:"140px"},onChange:e[7]||(e[7]=l=>D(1))},{default:n(()=>[t(w,{label:"全部类型",value:""}),t(w,{label:"注册验证",value:"register"}),t(w,{label:"密码重置",value:"reset"}),t(w,{label:"邮箱绑定",value:"bind"}),t(w,{label:"任务完成",value:"task_complete"}),t(w,{label:"安全告警",value:"security_alert"})]),_:1},8,["modelValue"]),t(ee,{modelValue:I.value,"onUpdate:modelValue":e[8]||(e[8]=l=>I.value=l),style:{width:"120px"},onChange:e[9]||(e[9]=l=>D(1))},{default:n(()=>[t(w,{label:"全部状态",value:""}),t(w,{label:"成功",value:"success"}),t(w,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(T,{type:"danger",plain:"",onClick:Ue},{default:n(()=>[...e[34]||(e[34]=[p("清理日志",-1)])]),_:1})])]),u("div",il,[K((f(),M(re,{data:X.value,style:{width:"100%"}},{default:n(()=>[t(y,{prop:"created_at",label:"时间",width:"180"}),t(y,{prop:"email_to",label:"收件人","min-width":"180"}),t(y,{label:"来源用户","min-width":"160"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:oe(l)},_(oe(l)),9,ul)]),_:1}),t(y,{label:"类型",width:"120"},{default:n(({row:l})=>[p(_(Pe(l.email_type)),1)]),_:1}),t(y,{label:"主题","min-width":"220"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.subject},_(l.subject),9,rl)]),_:1}),t(y,{label:"状态",width:"90"},{default:n(({row:l})=>[t(ue,{type:l.status==="success"?"success":"danger",effect:"light"},{default:n(()=>[p(_(l.status==="success"?"成功":"失败"),1)]),_:2},1032,["type"])]),_:1}),t(y,{label:"错误","min-width":"200"},{default:n(({row:l})=>[u("span",{class:"ellipsis",title:l.error_message||""},_(l.error_message||"-"),9,dl)]),_:1})]),_:1},8,["data"])),[[j,W.value]])]),u("div",ml,[t(qe,{"current-page":z.value,"onUpdate:currentPage":e[10]||(e[10]=l=>z.value=l),"page-size":fe,total:Y.value,layout:"prev, pager, next, ->, total",onCurrentChange:D},null,8,["current-page","total"]),u("div",pl,"第 "+_(z.value)+" / "+_(Z.value)+" 页",1)])]),_:1}),t(Ae,{modelValue:S.value,"onUpdate:modelValue":e[25]||(e[25]=l=>S.value=l),title:k.value?"编辑SMTP配置":"添加SMTP配置",width:"min(560px, 92vw)"},{footer:n(()=>[u("div",yl,[t(T,{onClick:we},{default:n(()=>[...e[36]||(e[36]=[p("测试连接",-1)])]),_:1}),k.value&&H.value?(f(),M(T,{key:0,type:"warning",plain:"",onClick:Te},{default:n(()=>[...e[37]||(e[37]=[p("取消主配置",-1)])]),_:1})):P("",!0),k.value&&!H.value?(f(),M(T,{key:1,onClick:Se},{default:n(()=>[...e[38]||(e[38]=[p("设为主配置",-1)])]),_:1})):P("",!0),k.value?(f(),M(T,{key:2,type:"danger",plain:"",onClick:xe},{default:n(()=>[...e[39]||(e[39]=[p("删除配置",-1)])]),_:1})):P("",!0),e[42]||(e[42]=u("div",{class:"spacer"},null,-1)),t(T,{onClick:e[24]||(e[24]=l=>S.value=!1)},{default:n(()=>[...e[40]||(e[40]=[p("取消",-1)])]),_:1}),t(T,{type:"primary",onClick:Ve},{default:n(()=>[...e[41]||(e[41]=[p("保存",-1)])]),_:1})])]),default:n(()=>[t(ie,{"label-width":"120px"},{default:n(()=>[t(r,{label:"名称"},{default:n(()=>[t(C,{modelValue:a.name,"onUpdate:modelValue":e[11]||(e[11]=l=>a.name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"启用"},{default:n(()=>[t(i,{modelValue:a.enabled,"onUpdate:modelValue":e[12]||(e[12]=l=>a.enabled=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"邮箱模板"},{default:n(()=>[u("div",cl,[t(ee,{modelValue:q.value,"onUpdate:modelValue":e[13]||(e[13]=l=>q.value=l),placeholder:"选择常用邮箱模板",style:{width:"100%"},onChange:ye},{default:n(()=>[(f(),x(te,null,ce(N,l=>t(w,{key:l.key,label:l.label,value:l.key},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),V.value.note||V.value.links&&V.value.links.length?(f(),x("div",fl,[V.value.note?(f(),x("span",_l,_(V.value.note),1)):P("",!0),V.value.links&&V.value.links.length?(f(),x(te,{key:1},[V.value.note?(f(),x("span",bl," · ")):P("",!0),(f(!0),x(te,null,ce(V.value.links,(l,de)=>(f(),x("span",{key:l.url},[t($e,{href:l.url,target:"_blank",type:"primary",underline:!1},{default:n(()=>[p(_(l.label),1)]),_:2},1032,["href"]),de[t(C,{modelValue:a.host,"onUpdate:modelValue":e[14]||(e[14]=l=>a.host=l),placeholder:"smtp.example.com"},null,8,["modelValue"])]),_:1}),t(r,{label:"端口"},{default:n(()=>[t(le,{modelValue:a.port,"onUpdate:modelValue":e[15]||(e[15]=l=>a.port=l),min:1,max:65535},null,8,["modelValue"])]),_:1}),t(r,{label:"用户名"},{default:n(()=>[t(C,{modelValue:a.username,"onUpdate:modelValue":e[16]||(e[16]=l=>a.username=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"密码"},{default:n(()=>[t(C,{modelValue:a.password,"onUpdate:modelValue":e[17]||(e[17]=l=>a.password=l),type:"password","show-password":"",placeholder:be.value},null,8,["modelValue","placeholder"])]),_:1}),t(r,{label:"SSL"},{default:n(()=>[t(i,{modelValue:a.use_ssl,"onUpdate:modelValue":e[18]||(e[18]=l=>a.use_ssl=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"TLS"},{default:n(()=>[t(i,{modelValue:a.use_tls,"onUpdate:modelValue":e[19]||(e[19]=l=>a.use_tls=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人名称"},{default:n(()=>[t(C,{modelValue:a.sender_name,"onUpdate:modelValue":e[20]||(e[20]=l=>a.sender_name=l)},null,8,["modelValue"])]),_:1}),t(r,{label:"发件人邮箱"},{default:n(()=>[t(C,{modelValue:a.sender_email,"onUpdate:modelValue":e[21]||(e[21]=l=>a.sender_email=l),placeholder:"可选"},null,8,["modelValue"])]),_:1}),t(r,{label:"每日限额"},{default:n(()=>[t(le,{modelValue:a.daily_limit,"onUpdate:modelValue":e[22]||(e[22]=l=>a.daily_limit=l),min:0,max:1e6},null,8,["modelValue"])]),_:1}),t(r,{label:"优先级"},{default:n(()=>[t(le,{modelValue:a.priority,"onUpdate:modelValue":e[23]||(e[23]=l=>a.priority=l),min:0,max:1e3},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},Pl=ze(gl,[["__scopeId","data-v-b1cb7390"]]);export{Pl as default}; diff --git a/static/admin/assets/FeedbacksPage-CPmSqIaj.css b/static/admin/assets/FeedbacksPage-CPmSqIaj.css new file mode 100644 index 0000000..6c99f12 --- /dev/null +++ b/static/admin/assets/FeedbacksPage-CPmSqIaj.css @@ -0,0 +1 @@ +.page-stack[data-v-2e7ce230]{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar[data-v-2e7ce230]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card[data-v-2e7ce230]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-head[data-v-2e7ce230]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.section-title[data-v-2e7ce230]{margin:0;font-size:15px;font-weight:800}.table-wrap[data-v-2e7ce230]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-2e7ce230]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions[data-v-2e7ce230]{display:flex;flex-wrap:wrap;gap:8px} diff --git a/static/admin/assets/FeedbacksPage-BAnFKHSL.js b/static/admin/assets/FeedbacksPage-DrMVqBKf.js similarity index 96% rename from static/admin/assets/FeedbacksPage-BAnFKHSL.js rename to static/admin/assets/FeedbacksPage-DrMVqBKf.js index 10ff1a4..e7e2607 100644 --- a/static/admin/assets/FeedbacksPage-BAnFKHSL.js +++ b/static/admin/assets/FeedbacksPage-DrMVqBKf.js @@ -1 +1 @@ -import{_ as $,b as j,r as G,d as L,e as q}from"./index-C1f9ticl.js";import{M as J}from"./MetricGrid-BnihYB_8.js";import{E as w,a as k}from"./vendor-element-B5S5pUKo.js";import{i as K,r as f,c as O,o as R,aj as i,ap as U,n as x,q as v,t as s,L as t,E as l,K as F,a3 as A,J as d,F as H,D as Q,I as p,G as W}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";const X={class:"page-stack"},Y={class:"app-page-title"},Z={class:"toolbar"},ee={class:"section-head"},te={class:"app-muted"},ae={class:"table-wrap"},le={class:"ellipsis"},ne={class:"ellipsis"},se={class:"ellipsis"},oe={class:"actions"},ie={__name:"FeedbacksPage",setup(ce){const T=K("refreshNavBadges",null),u=f(!1),b=f(""),c=f({total:0,pending:0,replied:0,closed:0}),_=f([]),V=[{label:"全部状态",value:""},{label:"待处理",value:"pending"},{label:"已回复",value:"replied"},{label:"已关闭",value:"closed"}],M=O(()=>[{key:"total",label:"总反馈",value:c.value.total||0,tone:"blue"},{key:"pending",label:"待处理",value:c.value.pending||0,tone:"orange"},{key:"replied",label:"已回复",value:c.value.replied||0,tone:"green"},{key:"closed",label:"已关闭",value:c.value.closed||0,tone:"purple"}]);function B(n){return n==="pending"?{label:"待处理",type:"warning"}:n==="replied"?{label:"已回复",type:"success"}:n==="closed"?{label:"已关闭",type:"info"}:{label:n||"-",type:"info"}}async function r(){u.value=!0;try{const n=await j(b.value);_.value=n?.feedbacks||[],c.value=n?.stats||{total:0,pending:0,replied:0,closed:0}}catch{_.value=[],c.value={total:0,pending:0,replied:0,closed:0}}finally{u.value=!1}await T?.({pendingFeedbacks:c.value.pending||0})}async function D(n){let a;try{a=(await w.prompt("请输入回复内容","回复反馈",{inputType:"textarea",inputPlaceholder:"回复内容",confirmButtonText:"提交",cancelButtonText:"取消",inputValidator:g=>!!String(g||"").trim(),inputErrorMessage:"回复内容不能为空"})).value}catch{return}try{const m=await G(n.id,String(a||"").trim());k.success(m?.message||"回复成功"),await r()}catch{}}async function E(n){try{await w.confirm("确定要关闭这个反馈吗?","关闭反馈",{confirmButtonText:"关闭",cancelButtonText:"取消",type:"warning"})}catch{return}try{const a=await L(n.id);k.success(a?.message||"反馈已关闭"),await r()}catch{}}async function N(n){try{await w.confirm("确定要删除这个反馈吗?此操作不可恢复!","删除反馈",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const a=await q(n.id);k.success(a?.message||"反馈已删除"),await r()}catch{}}return R(r),(n,a)=>{const m=i("el-option"),g=i("el-select"),o=i("el-table-column"),y=i("el-tooltip"),I=i("el-tag"),h=i("el-button"),z=i("el-table"),P=i("el-card"),S=U("loading");return v(),x("div",X,[s("div",Y,[a[1]||(a[1]=s("h2",null,"反馈管理",-1)),s("div",Z,[t(g,{modelValue:b.value,"onUpdate:modelValue":a[0]||(a[0]=e=>b.value=e),style:{width:"160px"},onChange:r},{default:l(()=>[(v(),x(F,null,A(V,e=>t(m,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])])]),t(J,{items:M.value,loading:u.value,"min-width":165},null,8,["items","loading"]),t(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[s("div",ee,[a[2]||(a[2]=s("h3",{class:"section-title"},"反馈列表",-1)),s("div",te,"共 "+d(_.value.length)+" 条(当前筛选)",1)]),s("div",ae,[H((v(),Q(z,{data:_.value,style:{width:"100%"}},{default:l(()=>[t(o,{prop:"id",label:"ID",width:"80"}),t(o,{prop:"username",label:"用户",width:"140"}),t(o,{label:"标题","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.title,placement:"top","show-after":300},{default:l(()=>[s("span",le,d(e.title),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"描述","min-width":"220"},{default:l(({row:e})=>[t(y,{content:e.description,placement:"top","show-after":300},{default:l(()=>[s("span",ne,d(e.description),1)]),_:2},1032,["content"])]),_:1}),t(o,{prop:"contact",label:"联系方式","min-width":"160"},{default:l(({row:e})=>[p(d(e.contact||"-"),1)]),_:1}),t(o,{label:"状态",width:"110"},{default:l(({row:e})=>[t(I,{type:B(e.status).type,effect:"light"},{default:l(()=>[p(d(B(e.status).label),1)]),_:2},1032,["type"])]),_:1}),t(o,{prop:"created_at",label:"提交时间",width:"180"}),t(o,{label:"回复","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.admin_reply||"",placement:"top","show-after":300},{default:l(()=>[s("span",se,d(e.admin_reply||"-"),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"操作",width:"220",fixed:"right"},{default:l(({row:e})=>[s("div",oe,[e.status!=="closed"?(v(),x(F,{key:0},[t(h,{type:"primary",size:"small",onClick:C=>D(e)},{default:l(()=>[...a[3]||(a[3]=[p("回复",-1)])]),_:1},8,["onClick"]),t(h,{size:"small",onClick:C=>E(e)},{default:l(()=>[...a[4]||(a[4]=[p("关闭",-1)])]),_:1},8,["onClick"])],64)):W("",!0),t(h,{type:"danger",size:"small",onClick:C=>N(e)},{default:l(()=>[...a[5]||(a[5]=[p("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[S,u.value]])])]),_:1})])}}},fe=$(ie,[["__scopeId","data-v-910fe89b"]]);export{fe as default}; +import{_ as $,b as j,r as G,d as L,e as q}from"./index-DOvMEmc8.js";import{M as J}from"./MetricGrid-C3Xjc9mZ.js";import{E as w,a as k}from"./vendor-element-B5S5pUKo.js";import{i as K,r as f,c as O,o as R,aj as i,ap as U,n as x,q as v,t as s,L as t,E as l,K as F,a3 as A,J as d,F as H,D as Q,I as p,G as W}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";const X={class:"page-stack"},Y={class:"app-page-title"},Z={class:"toolbar"},ee={class:"section-head"},te={class:"app-muted"},ae={class:"table-wrap"},le={class:"ellipsis"},ne={class:"ellipsis"},se={class:"ellipsis"},oe={class:"actions"},ie={__name:"FeedbacksPage",setup(ce){const T=K("refreshNavBadges",null),u=f(!1),b=f(""),c=f({total:0,pending:0,replied:0,closed:0}),_=f([]),V=[{label:"全部状态",value:""},{label:"待处理",value:"pending"},{label:"已回复",value:"replied"},{label:"已关闭",value:"closed"}],M=O(()=>[{key:"total",label:"总反馈",value:c.value.total||0,tone:"blue"},{key:"pending",label:"待处理",value:c.value.pending||0,tone:"orange"},{key:"replied",label:"已回复",value:c.value.replied||0,tone:"green"},{key:"closed",label:"已关闭",value:c.value.closed||0,tone:"purple"}]);function B(n){return n==="pending"?{label:"待处理",type:"warning"}:n==="replied"?{label:"已回复",type:"success"}:n==="closed"?{label:"已关闭",type:"info"}:{label:n||"-",type:"info"}}async function r(){u.value=!0;try{const n=await j(b.value);_.value=n?.feedbacks||[],c.value=n?.stats||{total:0,pending:0,replied:0,closed:0}}catch{_.value=[],c.value={total:0,pending:0,replied:0,closed:0}}finally{u.value=!1}await T?.({pendingFeedbacks:c.value.pending||0})}async function D(n){let a;try{a=(await w.prompt("请输入回复内容","回复反馈",{inputType:"textarea",inputPlaceholder:"回复内容",confirmButtonText:"提交",cancelButtonText:"取消",inputValidator:g=>!!String(g||"").trim(),inputErrorMessage:"回复内容不能为空"})).value}catch{return}try{const m=await G(n.id,String(a||"").trim());k.success(m?.message||"回复成功"),await r()}catch{}}async function E(n){try{await w.confirm("确定要关闭这个反馈吗?","关闭反馈",{confirmButtonText:"关闭",cancelButtonText:"取消",type:"warning"})}catch{return}try{const a=await L(n.id);k.success(a?.message||"反馈已关闭"),await r()}catch{}}async function N(n){try{await w.confirm("确定要删除这个反馈吗?此操作不可恢复!","删除反馈",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{const a=await q(n.id);k.success(a?.message||"反馈已删除"),await r()}catch{}}return R(r),(n,a)=>{const m=i("el-option"),g=i("el-select"),o=i("el-table-column"),y=i("el-tooltip"),I=i("el-tag"),h=i("el-button"),z=i("el-table"),P=i("el-card"),S=U("loading");return v(),x("div",X,[s("div",Y,[a[1]||(a[1]=s("h2",null,"反馈管理",-1)),s("div",Z,[t(g,{modelValue:b.value,"onUpdate:modelValue":a[0]||(a[0]=e=>b.value=e),style:{width:"160px"},onChange:r},{default:l(()=>[(v(),x(F,null,A(V,e=>t(m,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"])])]),t(J,{items:M.value,loading:u.value,"min-width":165},null,8,["items","loading"]),t(P,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[s("div",ee,[a[2]||(a[2]=s("h3",{class:"section-title"},"反馈列表",-1)),s("div",te,"共 "+d(_.value.length)+" 条(当前筛选)",1)]),s("div",ae,[H((v(),Q(z,{data:_.value,style:{width:"100%"}},{default:l(()=>[t(o,{prop:"id",label:"ID",width:"80"}),t(o,{prop:"username",label:"用户",width:"140"}),t(o,{label:"标题","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.title,placement:"top","show-after":300},{default:l(()=>[s("span",le,d(e.title),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"描述","min-width":"220"},{default:l(({row:e})=>[t(y,{content:e.description,placement:"top","show-after":300},{default:l(()=>[s("span",ne,d(e.description),1)]),_:2},1032,["content"])]),_:1}),t(o,{prop:"contact",label:"联系方式","min-width":"160"},{default:l(({row:e})=>[p(d(e.contact||"-"),1)]),_:1}),t(o,{label:"状态",width:"110"},{default:l(({row:e})=>[t(I,{type:B(e.status).type,effect:"light"},{default:l(()=>[p(d(B(e.status).label),1)]),_:2},1032,["type"])]),_:1}),t(o,{prop:"created_at",label:"提交时间",width:"180"}),t(o,{label:"回复","min-width":"180"},{default:l(({row:e})=>[t(y,{content:e.admin_reply||"",placement:"top","show-after":300},{default:l(()=>[s("span",se,d(e.admin_reply||"-"),1)]),_:2},1032,["content"])]),_:1}),t(o,{label:"操作",width:"220",fixed:"right"},{default:l(({row:e})=>[s("div",oe,[e.status!=="closed"?(v(),x(F,{key:0},[t(h,{type:"primary",size:"small",onClick:C=>D(e)},{default:l(()=>[...a[3]||(a[3]=[p("回复",-1)])]),_:1},8,["onClick"]),t(h,{size:"small",onClick:C=>E(e)},{default:l(()=>[...a[4]||(a[4]=[p("关闭",-1)])]),_:1},8,["onClick"])],64)):W("",!0),t(h,{type:"danger",size:"small",onClick:C=>N(e)},{default:l(()=>[...a[5]||(a[5]=[p("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[S,u.value]])])]),_:1})])}}},fe=$(ie,[["__scopeId","data-v-2e7ce230"]]);export{fe as default}; diff --git a/static/admin/assets/FeedbacksPage-mrXjCiV2.css b/static/admin/assets/FeedbacksPage-mrXjCiV2.css deleted file mode 100644 index 1263905..0000000 --- a/static/admin/assets/FeedbacksPage-mrXjCiV2.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-910fe89b]{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar[data-v-910fe89b]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card[data-v-910fe89b]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-head[data-v-910fe89b]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.section-title[data-v-910fe89b]{margin:0;font-size:15px;font-weight:800}.table-wrap[data-v-910fe89b]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-910fe89b]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions[data-v-910fe89b]{display:flex;flex-wrap:wrap;gap:8px} diff --git a/static/admin/assets/LogsPage-BUgx3sZr.css b/static/admin/assets/LogsPage-BUgx3sZr.css new file mode 100644 index 0000000..39c0074 --- /dev/null +++ b/static/admin/assets/LogsPage-BUgx3sZr.css @@ -0,0 +1 @@ +.page-stack[data-v-2627b2c9]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-2627b2c9]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.filters[data-v-2627b2c9]{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.table-wrap[data-v-2627b2c9]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-2627b2c9]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagination[data-v-2627b2c9]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint[data-v-2627b2c9]{font-size:12px} diff --git a/static/admin/assets/LogsPage-DFPeq0bL.js b/static/admin/assets/LogsPage-Cy6Q0ave.js similarity index 97% rename from static/admin/assets/LogsPage-DFPeq0bL.js rename to static/admin/assets/LogsPage-Cy6Q0ave.js index df8db0f..46e87ec 100644 --- a/static/admin/assets/LogsPage-DFPeq0bL.js +++ b/static/admin/assets/LogsPage-Cy6Q0ave.js @@ -1 +1 @@ -import{f as K}from"./users-te9ySk34.js";import{g as G,h as H}from"./tasks-Bep0SUyu.js";import{_ as Q}from"./index-C1f9ticl.js";import{E as N,a as X}from"./vendor-element-B5S5pUKo.js";import{r as u,c as Z,o as ee,aj as r,ap as te,n as P,q as b,t as f,L as t,E as l,K as ae,a3 as le,D as F,I as m,F as oe,J as d}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";function ne(p){return String(p||"").trim()}function se(p){return!p.startsWith("user_scheduled")||!p.includes(":")?"":p.split(":",2)[1]||""}function ue(p){const s=ne(p);if(!s||s==="manual")return{group:"manual",label:"手动",type:"success",tooltip:""};if(s==="scheduled")return{group:"scheduled",label:"定时任务",type:"primary",tooltip:"系统定时"};if(s.startsWith("user_scheduled")){const i=se(s),v=String(i||"").replace(/^batch_/,"");return{group:"scheduled",label:"定时任务",type:"primary",tooltip:v?`用户定时批次:${v}`:"用户定时"}}return{group:"manual",label:"手动",type:"success",tooltip:{batch:"手动批量",manual_screenshot:"手动截图",immediate:"立即执行",resumed:"断点恢复"}[s]||s}}const re={class:"page-stack"},ie={class:"filters"},ce={class:"table-wrap"},de={class:"ellipsis"},pe={class:"pagination"},me={class:"page-hint app-muted"},B=20,fe={__name:"LogsPage",setup(p){const s=u(!1),S=u([]),y=u(0),i=u(1),v=u(!1),T=u([]),h=u(""),w=u(""),V=u(""),x=u(""),k=u(""),$=Z(()=>Math.max(1,Math.ceil((y.value||0)/B)));function Y(o){if(o==null)return"-";const e=Number(o);return Number.isFinite(e)?e<60?`${e}秒`:`${Math.floor(e/60)}分${e%60}秒`:"-"}function _(o){const e=ue(o);return{key:e.group,label:e.label,type:e.type,tooltip:e.tooltip}}function I(o){return o==="success"?{label:"成功",type:"success"}:o==="failed"?{label:"失败",type:"danger"}:{label:o||"-",type:"info"}}async function z(){v.value=!0;try{const o=await K();T.value=(o||[]).map(e=>({id:e.id,username:e.username}))}catch{T.value=[]}finally{v.value=!1}}async function M(){s.value=!0;try{const o=(i.value-1)*B,e={limit:B,offset:o};h.value&&(e.date=h.value),w.value&&(e.status=w.value),V.value&&(e.source=V.value),x.value&&(e.user_id=x.value),k.value&&(e.account=k.value);const g=await G(e);S.value=g?.logs||[],y.value=g?.total||0}catch{S.value=[],y.value=0}finally{s.value=!1}}function O(){i.value=1,M()}function j(){h.value="",w.value="",V.value="",x.value="",k.value="",i.value=1,M()}async function R(){let o;try{const e=await N.prompt("请输入要清理多少天前的日志(默认30天)","清理旧日志",{inputValue:"30",confirmButtonText:"下一步",cancelButtonText:"取消",inputValidator:g=>{const n=parseInt(String(g),10);return Number.isFinite(n)&&n>=1},inputErrorMessage:"请输入有效的天数(大于0的整数)"});o=parseInt(String(e.value),10)}catch{return}try{await N.confirm(`确定要删除 ${o} 天前的所有日志吗?此操作不可恢复!`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await H(o);X.success(e?.message||"清理成功"),i.value=1,await M()}catch{}}return ee(async()=>{await z(),await M()}),(o,e)=>{const g=r("el-date-picker"),n=r("el-option"),U=r("el-select"),W=r("el-input"),C=r("el-button"),L=r("el-card"),c=r("el-table-column"),D=r("el-tag"),E=r("el-tooltip"),q=r("el-table"),A=r("el-pagination"),J=te("loading");return b(),P("div",re,[e[9]||(e[9]=f("div",{class:"app-page-title"},[f("h2",null,"任务日志")],-1)),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ie,[t(g,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"日期",style:{width:"150px"}},null,8,["modelValue"]),t(U,{modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=a=>w.value=a),placeholder:"状态",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"成功",value:"success"}),t(n,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(U,{modelValue:V.value,"onUpdate:modelValue":e[2]||(e[2]=a=>V.value=a),placeholder:"来源",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"手动",value:"manual"}),t(n,{label:"定时任务(系统)",value:"scheduled"}),t(n,{label:"定时任务(用户)",value:"user_scheduled"}),t(n,{label:"手动(批量)",value:"batch"}),t(n,{label:"手动(截图)",value:"manual_screenshot"}),t(n,{label:"手动(立即)",value:"immediate"}),t(n,{label:"手动(恢复)",value:"resumed"})]),_:1},8,["modelValue"]),t(U,{modelValue:x.value,"onUpdate:modelValue":e[3]||(e[3]=a=>x.value=a),placeholder:"用户",style:{width:"140px"},loading:v.value,filterable:"",clearable:""},{default:l(()=>[t(n,{label:"全部",value:""}),(b(!0),P(ae,null,le(T.value,a=>(b(),F(n,{key:a.id,label:a.username,value:String(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"]),t(W,{modelValue:k.value,"onUpdate:modelValue":e[4]||(e[4]=a=>k.value=a),placeholder:"账号关键字",style:{width:"170px"},clearable:""},null,8,["modelValue"]),t(C,{type:"primary",onClick:O},{default:l(()=>[...e[6]||(e[6]=[m("筛选",-1)])]),_:1}),t(C,{onClick:j},{default:l(()=>[...e[7]||(e[7]=[m("重置",-1)])]),_:1}),t(C,{type:"danger",plain:"",onClick:R},{default:l(()=>[...e[8]||(e[8]=[m("清理旧日志",-1)])]),_:1})])]),_:1}),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ce,[oe((b(),F(q,{data:S.value,style:{width:"100%"}},{default:l(()=>[t(c,{prop:"created_at",label:"时间",width:"180"}),t(c,{label:"来源",width:"110"},{default:l(({row:a})=>[_(a.source).tooltip?(b(),F(E,{key:0,content:_(a.source).tooltip,placement:"top","show-after":300},{default:l(()=>[t(D,{type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"])]),_:2},1032,["content"])):(b(),F(D,{key:1,type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"]))]),_:1}),t(c,{prop:"user_username",label:"用户",width:"140"}),t(c,{prop:"username",label:"账号",width:"160"}),t(c,{prop:"browse_type",label:"浏览类型",width:"120"}),t(c,{label:"状态",width:"90"},{default:l(({row:a})=>[t(D,{type:I(a.status).type,effect:"light"},{default:l(()=>[m(d(I(a.status).label),1)]),_:2},1032,["type"])]),_:1}),t(c,{label:"内容/附件",width:"110"},{default:l(({row:a})=>[m(d(a.total_items)+" / "+d(a.total_attachments),1)]),_:1}),t(c,{label:"用时",width:"90"},{default:l(({row:a})=>[m(d(Y(a.duration)),1)]),_:1}),t(c,{label:"失败原因","min-width":"220"},{default:l(({row:a})=>[t(E,{content:a.error_message||"",placement:"top","show-after":300},{default:l(()=>[f("span",de,d(a.error_message||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[J,s.value]])]),f("div",pe,[t(A,{"current-page":i.value,"onUpdate:currentPage":e[5]||(e[5]=a=>i.value=a),"page-size":B,total:y.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:M},null,8,["current-page","total"]),f("div",me,"第 "+d(i.value)+" / "+d($.value)+" 页",1)])]),_:1})])}}},Ve=Q(fe,[["__scopeId","data-v-8803eb08"]]);export{Ve as default}; +import{f as K}from"./users-DzDcz9C_.js";import{g as G,h as H}from"./tasks-B7oNpIBD.js";import{_ as Q}from"./index-DOvMEmc8.js";import{E as N,a as X}from"./vendor-element-B5S5pUKo.js";import{r as u,c as Z,o as ee,aj as r,ap as te,n as P,q as b,t as f,L as t,E as l,K as ae,a3 as le,D as F,I as m,F as oe,J as d}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";function ne(p){return String(p||"").trim()}function se(p){return!p.startsWith("user_scheduled")||!p.includes(":")?"":p.split(":",2)[1]||""}function ue(p){const s=ne(p);if(!s||s==="manual")return{group:"manual",label:"手动",type:"success",tooltip:""};if(s==="scheduled")return{group:"scheduled",label:"定时任务",type:"primary",tooltip:"系统定时"};if(s.startsWith("user_scheduled")){const i=se(s),v=String(i||"").replace(/^batch_/,"");return{group:"scheduled",label:"定时任务",type:"primary",tooltip:v?`用户定时批次:${v}`:"用户定时"}}return{group:"manual",label:"手动",type:"success",tooltip:{batch:"手动批量",manual_screenshot:"手动截图",immediate:"立即执行",resumed:"断点恢复"}[s]||s}}const re={class:"page-stack"},ie={class:"filters"},ce={class:"table-wrap"},de={class:"ellipsis"},pe={class:"pagination"},me={class:"page-hint app-muted"},B=20,fe={__name:"LogsPage",setup(p){const s=u(!1),S=u([]),y=u(0),i=u(1),v=u(!1),T=u([]),h=u(""),w=u(""),V=u(""),x=u(""),k=u(""),$=Z(()=>Math.max(1,Math.ceil((y.value||0)/B)));function Y(o){if(o==null)return"-";const e=Number(o);return Number.isFinite(e)?e<60?`${e}秒`:`${Math.floor(e/60)}分${e%60}秒`:"-"}function _(o){const e=ue(o);return{key:e.group,label:e.label,type:e.type,tooltip:e.tooltip}}function I(o){return o==="success"?{label:"成功",type:"success"}:o==="failed"?{label:"失败",type:"danger"}:{label:o||"-",type:"info"}}async function z(){v.value=!0;try{const o=await K();T.value=(o||[]).map(e=>({id:e.id,username:e.username}))}catch{T.value=[]}finally{v.value=!1}}async function M(){s.value=!0;try{const o=(i.value-1)*B,e={limit:B,offset:o};h.value&&(e.date=h.value),w.value&&(e.status=w.value),V.value&&(e.source=V.value),x.value&&(e.user_id=x.value),k.value&&(e.account=k.value);const g=await G(e);S.value=g?.logs||[],y.value=g?.total||0}catch{S.value=[],y.value=0}finally{s.value=!1}}function O(){i.value=1,M()}function j(){h.value="",w.value="",V.value="",x.value="",k.value="",i.value=1,M()}async function R(){let o;try{const e=await N.prompt("请输入要清理多少天前的日志(默认30天)","清理旧日志",{inputValue:"30",confirmButtonText:"下一步",cancelButtonText:"取消",inputValidator:g=>{const n=parseInt(String(g),10);return Number.isFinite(n)&&n>=1},inputErrorMessage:"请输入有效的天数(大于0的整数)"});o=parseInt(String(e.value),10)}catch{return}try{await N.confirm(`确定要删除 ${o} 天前的所有日志吗?此操作不可恢复!`,"二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await H(o);X.success(e?.message||"清理成功"),i.value=1,await M()}catch{}}return ee(async()=>{await z(),await M()}),(o,e)=>{const g=r("el-date-picker"),n=r("el-option"),U=r("el-select"),W=r("el-input"),C=r("el-button"),L=r("el-card"),c=r("el-table-column"),D=r("el-tag"),E=r("el-tooltip"),q=r("el-table"),A=r("el-pagination"),J=te("loading");return b(),P("div",re,[e[9]||(e[9]=f("div",{class:"app-page-title"},[f("h2",null,"任务日志")],-1)),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ie,[t(g,{modelValue:h.value,"onUpdate:modelValue":e[0]||(e[0]=a=>h.value=a),type:"date","value-format":"YYYY-MM-DD",placeholder:"日期",style:{width:"150px"}},null,8,["modelValue"]),t(U,{modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=a=>w.value=a),placeholder:"状态",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"成功",value:"success"}),t(n,{label:"失败",value:"failed"})]),_:1},8,["modelValue"]),t(U,{modelValue:V.value,"onUpdate:modelValue":e[2]||(e[2]=a=>V.value=a),placeholder:"来源",style:{width:"120px"}},{default:l(()=>[t(n,{label:"全部",value:""}),t(n,{label:"手动",value:"manual"}),t(n,{label:"定时任务(系统)",value:"scheduled"}),t(n,{label:"定时任务(用户)",value:"user_scheduled"}),t(n,{label:"手动(批量)",value:"batch"}),t(n,{label:"手动(截图)",value:"manual_screenshot"}),t(n,{label:"手动(立即)",value:"immediate"}),t(n,{label:"手动(恢复)",value:"resumed"})]),_:1},8,["modelValue"]),t(U,{modelValue:x.value,"onUpdate:modelValue":e[3]||(e[3]=a=>x.value=a),placeholder:"用户",style:{width:"140px"},loading:v.value,filterable:"",clearable:""},{default:l(()=>[t(n,{label:"全部",value:""}),(b(!0),P(ae,null,le(T.value,a=>(b(),F(n,{key:a.id,label:a.username,value:String(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"]),t(W,{modelValue:k.value,"onUpdate:modelValue":e[4]||(e[4]=a=>k.value=a),placeholder:"账号关键字",style:{width:"170px"},clearable:""},null,8,["modelValue"]),t(C,{type:"primary",onClick:O},{default:l(()=>[...e[6]||(e[6]=[m("筛选",-1)])]),_:1}),t(C,{onClick:j},{default:l(()=>[...e[7]||(e[7]=[m("重置",-1)])]),_:1}),t(C,{type:"danger",plain:"",onClick:R},{default:l(()=>[...e[8]||(e[8]=[m("清理旧日志",-1)])]),_:1})])]),_:1}),t(L,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[f("div",ce,[oe((b(),F(q,{data:S.value,style:{width:"100%"}},{default:l(()=>[t(c,{prop:"created_at",label:"时间",width:"180"}),t(c,{label:"来源",width:"110"},{default:l(({row:a})=>[_(a.source).tooltip?(b(),F(E,{key:0,content:_(a.source).tooltip,placement:"top","show-after":300},{default:l(()=>[t(D,{type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"])]),_:2},1032,["content"])):(b(),F(D,{key:1,type:_(a.source).type,effect:"light"},{default:l(()=>[m(d(_(a.source).label),1)]),_:2},1032,["type"]))]),_:1}),t(c,{prop:"user_username",label:"用户",width:"140"}),t(c,{prop:"username",label:"账号",width:"160"}),t(c,{prop:"browse_type",label:"浏览类型",width:"120"}),t(c,{label:"状态",width:"90"},{default:l(({row:a})=>[t(D,{type:I(a.status).type,effect:"light"},{default:l(()=>[m(d(I(a.status).label),1)]),_:2},1032,["type"])]),_:1}),t(c,{label:"内容/附件",width:"110"},{default:l(({row:a})=>[m(d(a.total_items)+" / "+d(a.total_attachments),1)]),_:1}),t(c,{label:"用时",width:"90"},{default:l(({row:a})=>[m(d(Y(a.duration)),1)]),_:1}),t(c,{label:"失败原因","min-width":"220"},{default:l(({row:a})=>[t(E,{content:a.error_message||"",placement:"top","show-after":300},{default:l(()=>[f("span",de,d(a.error_message||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[J,s.value]])]),f("div",pe,[t(A,{"current-page":i.value,"onUpdate:currentPage":e[5]||(e[5]=a=>i.value=a),"page-size":B,total:y.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:M},null,8,["current-page","total"]),f("div",me,"第 "+d(i.value)+" / "+d($.value)+" 页",1)])]),_:1})])}}},Ve=Q(fe,[["__scopeId","data-v-2627b2c9"]]);export{Ve as default}; diff --git a/static/admin/assets/LogsPage-D1bozCEo.css b/static/admin/assets/LogsPage-D1bozCEo.css deleted file mode 100644 index 683d739..0000000 --- a/static/admin/assets/LogsPage-D1bozCEo.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-8803eb08]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-8803eb08]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.filters[data-v-8803eb08]{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.table-wrap[data-v-8803eb08]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-8803eb08]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagination[data-v-8803eb08]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint[data-v-8803eb08]{font-size:12px} diff --git a/static/admin/assets/MetricGrid-yP_dkP6X.css b/static/admin/assets/MetricGrid-BR486o_b.css similarity index 50% rename from static/admin/assets/MetricGrid-yP_dkP6X.css rename to static/admin/assets/MetricGrid-BR486o_b.css index e14db4a..2041328 100644 --- a/static/admin/assets/MetricGrid-yP_dkP6X.css +++ b/static/admin/assets/MetricGrid-BR486o_b.css @@ -1 +1 @@ -.metric-grid[data-v-00e217d4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--metric-min),1fr));gap:12px}.metric-card[data-v-00e217d4]{position:relative;overflow:hidden;border-radius:14px;border:1px solid var(--app-border);background:linear-gradient(180deg,#fffffffa,#fafcffe6);box-shadow:var(--app-shadow-soft);padding:13px 14px;min-height:104px}.metric-card[data-v-00e217d4]:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--metric-top, #3b82f6)}.metric-top[data-v-00e217d4]{display:flex;align-items:center;gap:8px}.metric-icon[data-v-00e217d4]{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--metric-icon-bg, rgba(59, 130, 246, .12));color:var(--metric-icon-color, #1d4ed8)}.metric-label[data-v-00e217d4]{font-size:12px;color:#475569;font-weight:700;line-height:1.4}.metric-value[data-v-00e217d4]{margin-top:10px;font-size:26px;line-height:1.05;font-weight:900;color:#0f172a}.metric-hint[data-v-00e217d4]{margin-top:8px;font-size:12px;line-height:1.4}.metric-tone--blue[data-v-00e217d4]{--metric-top: linear-gradient(90deg, #3b82f6, #06b6d4);--metric-icon-bg: rgba(59, 130, 246, .14);--metric-icon-color: #1d4ed8}.metric-tone--green[data-v-00e217d4]{--metric-top: linear-gradient(90deg, #10b981, #22c55e);--metric-icon-bg: rgba(16, 185, 129, .14);--metric-icon-color: #047857}.metric-tone--purple[data-v-00e217d4]{--metric-top: linear-gradient(90deg, #8b5cf6, #ec4899);--metric-icon-bg: rgba(139, 92, 246, .14);--metric-icon-color: #6d28d9}.metric-tone--orange[data-v-00e217d4]{--metric-top: linear-gradient(90deg, #f59e0b, #f97316);--metric-icon-bg: rgba(245, 158, 11, .14);--metric-icon-color: #b45309}.metric-tone--red[data-v-00e217d4]{--metric-top: linear-gradient(90deg, #ef4444, #f43f5e);--metric-icon-bg: rgba(239, 68, 68, .14);--metric-icon-color: #b91c1c}.metric-tone--cyan[data-v-00e217d4]{--metric-top: linear-gradient(90deg, #06b6d4, #3b82f6);--metric-icon-bg: rgba(6, 182, 212, .14);--metric-icon-color: #0e7490}@media(max-width:768px){.metric-grid[data-v-00e217d4]{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card[data-v-00e217d4]{min-height:96px}.metric-value[data-v-00e217d4]{font-size:22px}}@media(max-width:480px){.metric-grid[data-v-00e217d4]{grid-template-columns:1fr}} +.metric-grid[data-v-28727c73]{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--metric-min),1fr));gap:12px}.metric-card[data-v-28727c73]{position:relative;overflow:hidden;border-radius:14px;border:1px solid var(--app-border);background:linear-gradient(180deg,#fffffffa,#fafcffe6);box-shadow:var(--app-shadow-soft);padding:13px 14px;min-height:104px}.metric-card[data-v-28727c73]:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--metric-top, #3b82f6)}.metric-top[data-v-28727c73]{display:flex;align-items:center;gap:8px}.metric-icon[data-v-28727c73]{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--metric-icon-bg, rgba(59, 130, 246, .12));color:var(--metric-icon-color, #1d4ed8)}.metric-label[data-v-28727c73]{font-size:12px;color:#475569;font-weight:700;line-height:1.4}.metric-value[data-v-28727c73]{margin-top:10px;font-size:26px;line-height:1.05;font-weight:900;color:#0f172a}.metric-hint[data-v-28727c73]{margin-top:8px;font-size:12px;line-height:1.4}.metric-tone--blue[data-v-28727c73]{--metric-top: linear-gradient(90deg, #3b82f6, #06b6d4);--metric-icon-bg: rgba(59, 130, 246, .14);--metric-icon-color: #1d4ed8}.metric-tone--green[data-v-28727c73]{--metric-top: linear-gradient(90deg, #10b981, #22c55e);--metric-icon-bg: rgba(16, 185, 129, .14);--metric-icon-color: #047857}.metric-tone--purple[data-v-28727c73]{--metric-top: linear-gradient(90deg, #8b5cf6, #ec4899);--metric-icon-bg: rgba(139, 92, 246, .14);--metric-icon-color: #6d28d9}.metric-tone--orange[data-v-28727c73]{--metric-top: linear-gradient(90deg, #f59e0b, #f97316);--metric-icon-bg: rgba(245, 158, 11, .14);--metric-icon-color: #b45309}.metric-tone--red[data-v-28727c73]{--metric-top: linear-gradient(90deg, #ef4444, #f43f5e);--metric-icon-bg: rgba(239, 68, 68, .14);--metric-icon-color: #b91c1c}.metric-tone--cyan[data-v-28727c73]{--metric-top: linear-gradient(90deg, #06b6d4, #3b82f6);--metric-icon-bg: rgba(6, 182, 212, .14);--metric-icon-color: #0e7490}@media(max-width:768px){.metric-grid[data-v-28727c73]{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card[data-v-28727c73]{min-height:96px}.metric-value[data-v-28727c73]{font-size:22px}}@media(max-width:480px){.metric-grid[data-v-28727c73]{grid-template-columns:1fr}} diff --git a/static/admin/assets/MetricGrid-BnihYB_8.js b/static/admin/assets/MetricGrid-C3Xjc9mZ.js similarity index 91% rename from static/admin/assets/MetricGrid-BnihYB_8.js rename to static/admin/assets/MetricGrid-C3Xjc9mZ.js index 4412335..dff9f12 100644 --- a/static/admin/assets/MetricGrid-BnihYB_8.js +++ b/static/admin/assets/MetricGrid-C3Xjc9mZ.js @@ -1 +1 @@ -import{_}from"./index-C1f9ticl.js";import{aj as c,n as s,q as t,K as r,a3 as u,y as p,t as o,G as l,L as y,E as h,D as i,H as v,J as n,I as k,x as f}from"./vendor-vue-CVxSw_oJ.js";const b={class:"metric-top"},x={key:0,class:"metric-icon"},g={class:"metric-label"},B={class:"metric-value"},C={key:0,class:"metric-hint app-muted"},N={__name:"MetricGrid",props:{items:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},minWidth:{type:Number,default:180}},setup(a){return(V,D)=>{const d=c("el-icon"),m=c("el-skeleton");return t(),s("div",{class:"metric-grid",style:f({"--metric-min":`${a.minWidth}px`})},[(t(!0),s(r,null,u(a.items,e=>(t(),s("div",{key:e?.key||e?.label,class:p(["metric-card",`metric-tone--${e?.tone||"blue"}`])},[o("div",b,[e?.icon?(t(),s("div",x,[y(d,null,{default:h(()=>[(t(),i(v(e.icon)))]),_:2},1024)])):l("",!0),o("div",g,n(e?.label||"-"),1)]),o("div",B,[a.loading?(t(),i(m,{key:0,rows:1,animated:""})):(t(),s(r,{key:1},[k(n(e?.value??0),1)],64))]),e?.hint||e?.sub?(t(),s("div",C,n(e?.hint||e?.sub),1)):l("",!0)],2))),128))],4)}}},w=_(N,[["__scopeId","data-v-00e217d4"]]);export{w as M}; +import{_}from"./index-DOvMEmc8.js";import{aj as c,n as s,q as t,K as r,a3 as u,y as p,t as o,G as l,L as y,E as h,D as i,H as v,J as n,I as k,x as f}from"./vendor-vue-CVxSw_oJ.js";const b={class:"metric-top"},x={key:0,class:"metric-icon"},g={class:"metric-label"},B={class:"metric-value"},C={key:0,class:"metric-hint app-muted"},N={__name:"MetricGrid",props:{items:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},minWidth:{type:Number,default:180}},setup(a){return(V,D)=>{const d=c("el-icon"),m=c("el-skeleton");return t(),s("div",{class:"metric-grid",style:f({"--metric-min":`${a.minWidth}px`})},[(t(!0),s(r,null,u(a.items,e=>(t(),s("div",{key:e?.key||e?.label,class:p(["metric-card",`metric-tone--${e?.tone||"blue"}`])},[o("div",b,[e?.icon?(t(),s("div",x,[y(d,null,{default:h(()=>[(t(),i(v(e.icon)))]),_:2},1024)])):l("",!0),o("div",g,n(e?.label||"-"),1)]),o("div",B,[a.loading?(t(),i(m,{key:0,rows:1,animated:""})):(t(),s(r,{key:1},[k(n(e?.value??0),1)],64))]),e?.hint||e?.sub?(t(),s("div",C,n(e?.hint||e?.sub),1)):l("",!0)],2))),128))],4)}}},w=_(N,[["__scopeId","data-v-28727c73"]]);export{w as M}; diff --git a/static/admin/assets/ReportPage-BCQBCnjY.css b/static/admin/assets/ReportPage-BCQBCnjY.css deleted file mode 100644 index 9b02a30..0000000 --- a/static/admin/assets/ReportPage-BCQBCnjY.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-d610e788]{display:flex;flex-direction:column;gap:14px}.report-hero[data-v-d610e788]{position:relative;overflow:hidden;border-radius:18px;border:1px solid rgba(17,24,39,.1);background:radial-gradient(circle at 10% 10%,rgba(59,130,246,.18),transparent 48%),radial-gradient(circle at 80% 0%,rgba(236,72,153,.16),transparent 45%),radial-gradient(circle at 90% 90%,rgba(16,185,129,.14),transparent 42%),#ffffffb8;box-shadow:0 14px 40px #0f172a14;-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);padding:16px}.hero-head[data-v-d610e788]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.hero-main h2[data-v-d610e788]{margin:0;font-size:19px;font-weight:900;letter-spacing:.2px}.hero-meta[data-v-d610e788]{margin-top:6px;font-size:12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.hero-dot[data-v-d610e788]{opacity:.65}.hero-actions[data-v-d610e788]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.mobile-report[data-v-d610e788]{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.mobile-module-card[data-v-d610e788]{position:relative;overflow:hidden;border-radius:14px;border:1px solid rgba(17,24,39,.12);background:#ffffffe6;box-shadow:var(--app-shadow-soft)}.mobile-module-card[data-v-d610e788]:before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--mobile-accent, #3b82f6)}.mobile-tone-blue[data-v-d610e788]{--mobile-accent: linear-gradient(90deg, #3b82f6, #06b6d4)}.mobile-tone-cyan[data-v-d610e788]{--mobile-accent: linear-gradient(90deg, #06b6d4, #3b82f6)}.mobile-tone-purple[data-v-d610e788]{--mobile-accent: linear-gradient(90deg, #8b5cf6, #ec4899)}.mobile-tone-orange[data-v-d610e788]{--mobile-accent: linear-gradient(90deg, #f59e0b, #f97316)}.mobile-tone-green[data-v-d610e788]{--mobile-accent: linear-gradient(90deg, #10b981, #22c55e)}.mobile-tone-red[data-v-d610e788]{--mobile-accent: linear-gradient(90deg, #ef4444, #f43f5e)}.mobile-module-head[data-v-d610e788]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.mobile-module-title[data-v-d610e788]{font-size:13px;font-weight:900;color:#0f172a}.mobile-module-desc[data-v-d610e788]{min-width:0;max-width:68%;font-size:11px;line-height:1.4;text-align:right}.mobile-metrics[data-v-d610e788]{margin-top:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-metric-item[data-v-d610e788]{padding:8px 10px;border-radius:10px;border:1px solid rgba(17,24,39,.08);background:#f8fafce6}.mobile-metric-label[data-v-d610e788]{font-size:11px;line-height:1.35}.mobile-metric-value[data-v-d610e788]{margin-top:4px;font-size:14px;font-weight:800;color:#0f172a;line-height:1.3;word-break:break-word}.module-extra-actions[data-v-d610e788]{margin-top:10px;display:flex;justify-content:flex-end}.request-dialog-summary[data-v-d610e788]{display:flex;flex-wrap:wrap;gap:10px 16px;font-size:12px;margin-bottom:12px}.request-dialog-block+.request-dialog-block[data-v-d610e788]{margin-top:14px}.request-dialog-title[data-v-d610e788]{font-size:13px;font-weight:800;margin-bottom:8px}.hero-overview-grid[data-v-d610e788]{display:none}.panel[data-v-d610e788]{border-radius:18px;border:1px solid rgba(17,24,39,.1);background:#ffffffb8;box-shadow:var(--app-shadow);-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px)}.panel-head[data-v-d610e788]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.head-left[data-v-d610e788]{display:flex;align-items:center;gap:12px;min-width:0}.head-text[data-v-d610e788]{min-width:0}.head-icon[data-v-d610e788]{width:40px;height:40px;border-radius:16px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(17,24,39,.08);flex:0 0 auto}.tone-blue[data-v-d610e788]{background:#3b82f61f;color:#1d4ed8}.tone-cyan[data-v-d610e788]{background:#22d3ee1f;color:#0369a1}.tone-purple[data-v-d610e788]{background:#8b5cf61f;color:#6d28d9}.tone-orange[data-v-d610e788]{background:#f59e0b1f;color:#b45309}.tone-green[data-v-d610e788]{background:#10b9811f;color:#047857}.tone-red[data-v-d610e788]{background:#ef44441f;color:#b91c1c}.panel-title[data-v-d610e788]{font-size:14px;font-weight:900}.panel-sub[data-v-d610e788]{margin-top:4px;font-size:12px;color:var(--app-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metrics-block[data-v-d610e788]{display:flex;flex-direction:column;gap:10px}.block-title[data-v-d610e788]{font-size:13px;font-weight:900;letter-spacing:.2px}.divider[data-v-d610e788]{height:1px;background:linear-gradient(90deg,transparent,rgba(17,24,39,.12),transparent);margin:14px 0}.queue-tabs[data-v-d610e788] .el-tabs__header{margin:0 0 10px}.tab-label[data-v-d610e788]{display:inline-flex;align-items:center;gap:6px}.table-wrap[data-v-d610e788]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.help[data-v-d610e788]{margin-top:10px;font-size:12px}.resource-grid[data-v-d610e788]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.resource-item[data-v-d610e788]{border:1px solid rgba(17,24,39,.08);border-radius:16px;padding:12px;background:#ffffffb3}.resource-k[data-v-d610e788]{font-size:12px;margin-bottom:8px}.resource-sub[data-v-d610e788]{margin-top:8px;font-size:12px}.config-grid[data-v-d610e788]{display:grid;grid-template-columns:1fr;gap:10px}.config-item[data-v-d610e788]{border:1px solid rgba(17,24,39,.08);border-radius:16px;padding:12px;background:#ffffffb3}.config-k[data-v-d610e788]{font-size:12px}.config-v[data-v-d610e788]{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.config-inline[data-v-d610e788]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.config-split[data-v-d610e788]{opacity:.65}.config-sub[data-v-d610e788]{margin-top:8px;font-size:12px}.err[data-v-d610e788]{color:#b91c1c}[data-v-d610e788] .el-table{--el-table-border-color: rgba(17, 24, 39, .08);--el-table-header-bg-color: rgba(246, 247, 251, .8)}[data-v-d610e788] .el-table th.el-table__cell{background:#f6f7fbcc}@media(max-width:1200px){.mobile-report[data-v-d610e788]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.mobile-report[data-v-d610e788]{grid-template-columns:1fr;gap:10px}.report-hero[data-v-d610e788]{border-radius:14px;padding:12px}.hero-main h2[data-v-d610e788]{font-size:17px}.hero-meta[data-v-d610e788]{margin-top:4px;gap:6px;font-size:11px}.resource-grid[data-v-d610e788]{grid-template-columns:1fr}}@media(max-width:420px){.mobile-metrics[data-v-d610e788]{grid-template-columns:1fr}.mobile-module-desc[data-v-d610e788]{max-width:62%}} diff --git a/static/admin/assets/ReportPage-fzVH-d9u.js b/static/admin/assets/ReportPage-BMEJM5Hr.js similarity index 98% rename from static/admin/assets/ReportPage-fzVH-d9u.js rename to static/admin/assets/ReportPage-BMEJM5Hr.js index d39b07c..978accc 100644 --- a/static/admin/assets/ReportPage-fzVH-d9u.js +++ b/static/admin/assets/ReportPage-BMEJM5Hr.js @@ -1 +1 @@ -import{f as tl,g as al,h as sl,k as ul,j as ol,n as nl,o as rl}from"./vendor-element-B5S5pUKo.js";import{c as il,a as cl,_ as vl,f as dl}from"./index-C1f9ticl.js";import{f as _l}from"./email-px7YBG2O.js";import{f as ml,a as pl,b as bl,c as fl,d as hl,e as wl}from"./tasks-Bep0SUyu.js";import{f as gl}from"./system-ZDPnxnIu.js";import{M as kl}from"./MetricGrid-BnihYB_8.js";import{i as de,r as m,c as a,o as yl,O as Sl,aj as R,n as S,q as k,t as s,L as u,G as D,J as d,K as _e,a3 as me,E as w,I as pe,D as ql,y as xl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-BeoNyvBp.js";import"./vendor-axios-B9ygI19o.js";const $l=il(async()=>{const{data:P}=await cl.get("/browser_pool/stats");return P},4e3);async function Tl(P={}){return $l.run(P)}const Ll={class:"page-stack"},Rl={class:"report-hero"},Ml={class:"hero-head"},Al={class:"hero-main"},Pl={class:"hero-meta app-muted"},Cl={key:0},Nl={key:1,class:"hero-dot"},Il={key:2},Dl={class:"mobile-report"},El={class:"mobile-module-head"},Wl={class:"mobile-module-title"},Ql={class:"mobile-module-desc app-muted"},Vl={class:"mobile-metrics"},zl={class:"mobile-metric-label app-muted"},Bl={class:"mobile-metric-value"},Ol={key:0,class:"module-extra-actions"},Ul={class:"request-dialog-summary app-muted"},Fl={class:"request-dialog-block"},Gl={class:"table-wrap"},jl={class:"request-dialog-block"},Hl={class:"table-wrap"},Zl={class:"request-dialog-summary app-muted"},Yl={class:"request-dialog-block"},Jl={class:"table-wrap"},Kl={class:"request-dialog-block"},Xl={class:"table-wrap"},et=3,lt=5e3,tt=2e4,at={__name:"ReportPage",setup(P){const be=de("refreshStats",null),fe=de("adminStats",null),E=m(!1),W=m(!1),T=m(""),Q=m(null),b=m(null),p=m(null),y=m(null),g=m(null),C=m(null),L=m(null),f=m(null),v=m(null),r=m(null),V=m(!1),z=m(!1);m("running");function he(){try{T.value=new Date().toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{T.value=""}}function l(t){const e=Number(t);return Number.isFinite(e)?e:0}function we(t){const e=String(t??"").trim();if(!e)return 0;const o=e.endsWith("%")?e.slice(0,-1):e,_=Number(o);return!Number.isFinite(_)||_<0?0:_>1e3?1e3:_}function B(t){return`${Math.round(we(t))}%`}function c(t){const e=Number(t);return!Number.isFinite(e)||e<0?"-":e>=100?`${Math.round(e)}ms`:`${e.toFixed(1)}ms`}function Z(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleTimeString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function O(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function ge(t){const e=String(t??"").trim();return!e||e==="manual"?"手动":e==="scheduled"?"系统定时":e==="batch"?"批量执行":e==="resumed"?"断点续跑":e.startsWith("user_scheduled:")?"用户定时":e}const Y=a(()=>{const t=fe?.value||{},e=l(b.value?.max_concurrent);return[{label:"总用户数",value:l(t.total_users),icon:tl,tone:"blue"},{label:"今日注册",value:l(t.new_users_today),icon:al,tone:"green"},{label:"近7天注册",value:l(t.new_users_7d),icon:sl,tone:"purple"},{label:"总账号数",value:l(t.total_accounts),icon:ul,tone:"cyan"},{label:"VIP用户",value:l(t.vip_users),icon:ol,tone:"orange"},{label:"运行中任务",value:l(b.value?.running_count),icon:nl,tone:"green",sub:e?`并发上限 ${e}`:""},{label:"排队任务",value:l(b.value?.queuing_count),icon:rl,tone:"purple"}]}),h=a(()=>Q.value?.today||{}),q=a(()=>Q.value?.total||{});a(()=>b.value?.running||[]);const N=a(()=>b.value?.queuing||[]),ke=a(()=>l(b.value?.running_count)),ye=a(()=>l(b.value?.queuing_count)),Se=a(()=>{const t=L.value?.workers;return Array.isArray(t)?[...t].sort((e,o)=>l(e?.worker_id)-l(o?.worker_id)):[]}),J=a(()=>l(L.value?.total_workers)),U=a(()=>Se.value.filter(t=>!!t?.has_browser).length),K=a(()=>l(L.value?.idle_workers)),X=a(()=>l(L.value?.queue_size)),F=a(()=>l(L.value?.active_workers)),ee=a(()=>{const t=l(h.value.success_tasks),e=l(h.value.failed_tasks),o=t+e;return o>0?Math.round(t/o*1e3)/10:0}),G=a(()=>l(p.value?.success_rate));a(()=>[{label:"总任务",value:l(h.value.total_tasks),tone:"blue"},{label:"成功",value:l(h.value.success_tasks),tone:"green"},{label:"失败",value:l(h.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(h.value.total_items),tone:"purple"},{label:"查看附件",value:l(h.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总任务",value:l(q.value.total_tasks),tone:"blue"},{label:"成功",value:l(q.value.success_tasks),tone:"green"},{label:"失败",value:l(q.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(q.value.total_items),tone:"purple"},{label:"查看附件",value:l(q.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总发送",value:l(p.value?.total_sent),tone:"blue"},{label:"成功",value:l(p.value?.total_success),tone:"green"},{label:"失败",value:l(p.value?.total_failed),tone:"red"},{label:"成功率",value:`${G.value}%`,tone:"purple"}]),a(()=>[{label:"注册验证",value:l(p.value?.register_sent),tone:"cyan"},{label:"密码重置",value:l(p.value?.reset_sent),tone:"orange"},{label:"邮箱绑定",value:l(p.value?.bind_sent),tone:"purple"},{label:"任务完成",value:l(p.value?.task_complete_sent),tone:"green"}]),a(()=>[{label:"总反馈",value:l(y.value?.total),tone:"blue"},{label:"待处理",value:l(y.value?.pending),tone:"orange"},{label:"已回复",value:l(y.value?.replied),tone:"green"}]),a(()=>[{label:"总 Worker",value:J.value,tone:"blue"},{label:"活跃 Worker",value:U.value,tone:"green"},{label:"空闲 Worker",value:K.value,tone:"cyan"},{label:"忙碌 Worker",value:F.value,tone:"orange"},{label:"队列",value:X.value,tone:"purple"}]);const qe=a(()=>(f.value?.schedule_enabled??0)===1),xe=a(()=>f.value?.schedule_time||"-"),$e=a(()=>f.value?.schedule_browse_type||"-"),Te=a(()=>String(f.value?.schedule_weekdays||"").trim());a(()=>{const t=Te.value;if(!t)return"";const e={1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"},o=t.split(",").map(_=>_.trim()).filter(Boolean);return o.length?o.map(_=>e[Number(_)]||_).join("、"):t});const Le=a(()=>(f.value?.proxy_enabled??0)===1);a(()=>f.value?.proxy_api_url||"");const le=a(()=>l(f.value?.proxy_expire_minutes)),j=a(()=>l(f.value?.max_concurrent_global)),Re=a(()=>l(f.value?.max_concurrent_per_account)),Me=a(()=>l(f.value?.max_screenshot_concurrent)),Ae=a(()=>{const t=l(b.value?.running_count),e=l(b.value?.queuing_count),o=l(b.value?.max_concurrent);return`运行中 ${t} / 排队 ${e} / 并发上限 ${o||j.value||"-"}`}),Pe=a(()=>Y.value.map(t=>({label:t.label,value:t.sub?`${t.value}(${t.sub})`:t.value}))),Ce=a(()=>[{label:"今日总任务",value:l(h.value.total_tasks)},{label:"今日成功",value:l(h.value.success_tasks)},{label:"今日失败",value:l(h.value.failed_tasks)},{label:"今日成功率",value:`${ee.value}%`},{label:"累计任务",value:l(q.value.total_tasks)},{label:"累计成功",value:l(q.value.success_tasks)}]),Ne=a(()=>[{label:"运行中",value:ke.value},{label:"排队中",value:ye.value},{label:"并发上限",value:l(b.value?.max_concurrent)||j.value||"-"},{label:"排队首条来源",value:ge(N.value[0]?.source)},{label:"排队首条状态",value:N.value[0]?.detail_status||N.value[0]?.status||"-"},{label:"最长等待",value:N.value[0]?.elapsed_display||"-"}]),Ie=a(()=>[{label:"总发送",value:l(p.value?.total_sent)},{label:"成功",value:l(p.value?.total_success)},{label:"失败",value:l(p.value?.total_failed)},{label:"成功率",value:`${G.value}%`},{label:"注册验证",value:l(p.value?.register_sent)},{label:"重置密码",value:l(p.value?.reset_sent)}]),De=a(()=>[{label:"总反馈",value:l(y.value?.total)},{label:"待处理",value:l(y.value?.pending)},{label:"已回复",value:l(y.value?.replied)}]),Ee=a(()=>[{label:"CPU",value:B(g.value?.cpu_percent)},{label:"内存",value:B(g.value?.memory_percent)},{label:"磁盘",value:B(g.value?.disk_percent)},{label:"容器状态",value:C.value?.status||"-"},{label:"容器名",value:C.value?.container_name||"-"},{label:"容器运行",value:C.value?.uptime||"-"}]),We=a(()=>[{label:"总 Worker",value:J.value},{label:"活跃 Worker",value:U.value},{label:"忙碌 Worker",value:F.value},{label:"空闲 Worker",value:K.value},{label:"任务队列",value:X.value}]),Qe=a(()=>{const t=v.value?.top_paths;return Array.isArray(t)?t.slice(0,3):[]}),Ve=a(()=>{const t=[{label:"总请求",value:l(v.value?.total_requests)},{label:"API请求",value:l(v.value?.api_requests)},{label:"慢请求",value:l(v.value?.slow_requests)},{label:"错误请求",value:l(v.value?.error_requests)}];return Qe.value.forEach((e,o)=>{const _=String(e?.path||"-");t.push({label:`慢接口${o+1}`,value:`${_} · 峰值 ${c(e?.max_ms)}`})}),t}),ze=a(()=>{const t=c(v.value?.avg_duration_ms),e=c(v.value?.max_duration_ms),o=Z(v.value?.last_request_ts),_=c(v.value?.slow_threshold_ms);return`均值 ${t} · 峰值 ${e} · 慢阈 ${_} · 最近 ${o}`}),Be=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).slice(0,3)),te=a(()=>{const t=l(r.value?.window_seconds);return t<=0?24:Math.max(1,Math.round(t/3600))}),Oe=a(()=>{const t=[{label:`慢SQL(${te.value}h)`,value:l(r.value?.total_slow_queries)},{label:"去重SQL",value:l(r.value?.unique_sql)},{label:"平均耗时",value:c(r.value?.avg_duration_ms)},{label:"峰值耗时",value:c(r.value?.max_duration_ms)}];return Be.value.forEach((e,o)=>{t.push({label:`慢SQL${o+1}`,value:`${c(e?.max_ms)} · ${String(e?.sql||"-")}`})}),t}),Ue=a(()=>{const t=c(r.value?.slow_threshold_ms),e=Z(r.value?.last_slow_ts);return`窗口 ${te.value}h · 慢阈 ${t} · 最近 ${e}`}),Fe=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).map((e,o)=>({rank:o+1,sql:String(e?.sql||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),last_seen:O(e?.last_ts),sample_params:String(e?.sample_params||"-")}))),Ge=a(()=>[...Array.isArray(r.value?.recent_slow_sql)?r.value.recent_slow_sql:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),sql:String(e?.sql||"-"),duration_ms:c(e?.duration_ms),params:String(e?.params||"-")}))),je=a(()=>(Array.isArray(v.value?.top_paths)?v.value.top_paths:[]).map((e,o)=>({rank:o+1,path:String(e?.path||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),status_5xx:l(e?.status_5xx)}))),He=a(()=>[...Array.isArray(v.value?.recent_slow)?v.value.recent_slow:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),method:String(e?.method||"-").toUpperCase(),path:String(e?.path||"-"),status:l(e?.status),duration_ms:c(e?.duration_ms)})));function Ze(t){const e=l(t);return e>=500?"danger":e>=400?"warning":e>=300?"info":"success"}function Ye(){V.value=!0}function Je(){z.value=!0}const ae=a(()=>{const t=r.value?.slow_threshold_ms;if(t!=null)return c(t);const e=f.value?.db_slow_query_ms;return e!=null?c(e):"-"}),Ke=a(()=>[{label:"定时任务",value:qe.value?"启用":"关闭"},{label:"执行时间",value:xe.value||"-"},{label:"浏览类型",value:$e.value||"-"},{label:"代理",value:Le.value?"启用":"关闭"},{label:"代理有效期",value:le.value?`${le.value} 分钟`:"-"},{label:"全局并发",value:j.value||"-"},{label:"单账号并发",value:Re.value||"-"},{label:"截图并发",value:Me.value||"-"},{label:"慢SQL阈值",value:ae.value}]),Xe=a(()=>[{key:"overview",title:"平台概览",desc:T.value?`更新 ${T.value}`:"核心指标",tone:"blue",items:Pe.value},{key:"task",title:"任务概览",desc:l(h.value.total_tasks)>0?`今日成功率 ${ee.value}%`:"今日暂无任务",tone:"purple",items:Ce.value},{key:"queue",title:"队列监控",desc:Ae.value,tone:"blue",items:Ne.value},{key:"email",title:"邮件报表",desc:`成功率 ${G.value}%`,tone:"cyan",items:Ie.value},{key:"feedback",title:"反馈概览",desc:`待处理 ${l(y.value?.pending)} 条`,tone:"orange",items:De.value},{key:"resource",title:"系统资源",desc:g.value?.uptime?`运行 ${g.value.uptime}`:"运行状态获取中",tone:"green",items:Ee.value},{key:"request",title:"接口性能",desc:ze.value,tone:"purple",items:Ve.value},{key:"slow_sql",title:"慢SQL监控",desc:Ue.value,tone:"red",items:Oe.value},{key:"worker",title:"截图线程池",desc:`活跃 ${U.value} · 忙碌 ${F.value}`,tone:"cyan",items:We.value},{key:"config",title:"配置概览",desc:"并发 / 代理 / 定时任务",tone:"red",items:Ke.value}]);let se=1;async function ue(t={}){const e=t.showLoading??!0;if(W.value)return;const o=!!t.forceStatsSync,_=o||se%et===0;se+=1,W.value=!0,e&&(E.value=!0);try{const[n,x,I,A,i,$,re,ie,ce,ve]=await Promise.allSettled([ml(),pl(),_l(),dl(),bl(),fl(),Tl(),hl(),wl(),gl()]);n.status==="fulfilled"&&(Q.value=n.value),x.status==="fulfilled"&&(b.value=x.value),I.status==="fulfilled"&&(p.value=I.value),A.status==="fulfilled"&&(y.value=A.value),i.status==="fulfilled"&&(g.value=i.value),$.status==="fulfilled"&&(C.value=$.value),re.status==="fulfilled"&&(L.value=re.value),ie.status==="fulfilled"&&(v.value=ie.value),ce.status==="fulfilled"&&(r.value=ce.value),ve.status==="fulfilled"&&(f.value=ve.value),_&&await be?.({force:o}),he()}finally{W.value=!1,e&&(E.value=!1)}}let M=null;function el(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function ll(){return el()?tt:lt}function oe(){M&&(clearTimeout(M),M=null)}function H(){oe(),M=window.setTimeout(async()=>{M=null,await ue({showLoading:!1}).catch(()=>{}),H()},ll())}function ne(){H()}return yl(()=>{ue({showLoading:!1}).catch(()=>{}).finally(()=>{H()}),window.addEventListener("visibilitychange",ne)}),Sl(()=>{oe(),window.removeEventListener("visibilitychange",ne)}),(t,e)=>{const o=R("el-button"),_=R("el-card"),n=R("el-table-column"),x=R("el-table"),I=R("el-tag"),A=R("el-dialog");return k(),S("div",Ll,[s("section",Rl,[s("div",Ml,[s("div",Al,[e[3]||(e[3]=s("h2",null,"报表中心",-1)),s("div",Pl,[T.value?(k(),S("span",Cl,"更新时间:"+d(T.value),1)):D("",!0),e[2]||(e[2]=s("span",{class:"hero-dot"},"·",-1)),s("span",null,"慢SQL阈值 "+d(ae.value),1),g.value?.uptime?(k(),S("span",Nl,"·")):D("",!0),g.value?.uptime?(k(),S("span",Il,"运行 "+d(g.value.uptime),1)):D("",!0)])])]),u(kl,{class:"hero-overview-grid",items:Y.value,loading:E.value,"min-width":165},null,8,["items","loading"])]),s("section",Dl,[(k(!0),S(_e,null,me(Xe.value,i=>(k(),ql(_,{key:i.key,shadow:"never",class:xl(["mobile-module-card",`mobile-tone-${i.tone}`]),"body-style":{padding:"12px"}},{default:w(()=>[s("div",El,[s("div",Wl,d(i.title),1),s("div",Ql,d(i.desc),1)]),s("div",Vl,[(k(!0),S(_e,null,me(i.items,$=>(k(),S("div",{key:`${i.key}-${$.label}`,class:"mobile-metric-item"},[s("div",zl,d($.label),1),s("div",Bl,d($.value),1)]))),128))]),i.key==="request"||i.key==="slow_sql"?(k(),S("div",Ol,[u(o,{size:"small",type:"primary",plain:"",onClick:$=>i.key==="request"?Ye():Je()},{default:w(()=>[pe(d(i.key==="request"?"查看慢接口详情":"查看慢SQL详情"),1)]),_:2},1032,["onClick"])])):D("",!0)]),_:2},1032,["class"]))),128))]),u(A,{modelValue:V.value,"onUpdate:modelValue":e[0]||(e[0]=i=>V.value=i),title:"慢接口详情",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Ul,[s("span",null,"总请求:"+d(l(v.value?.total_requests)),1),s("span",null,"API请求:"+d(l(v.value?.api_requests)),1),s("span",null,"慢请求:"+d(l(v.value?.slow_requests)),1),s("span",null,"错误请求:"+d(l(v.value?.error_requests)),1)]),s("div",Fl,[e[4]||(e[4]=s("div",{class:"request-dialog-title"},"慢接口排行榜",-1)),s("div",Gl,[u(x,{data:je.value,size:"small","max-height":"280"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"path",label:"接口路径","min-width":"340","show-overflow-tooltip":""}),u(n,{prop:"count",label:"请求数",width:"100"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"status_5xx",label:"5xx",width:"90"})]),_:1},8,["data"])])]),s("div",jl,[e[5]||(e[5]=s("div",{class:"request-dialog-title"},"最近慢请求",-1)),s("div",Hl,[u(x,{data:He.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"method",label:"方法",width:"90"}),u(n,{prop:"path",label:"接口路径","min-width":"320","show-overflow-tooltip":""}),u(n,{label:"状态",width:"100"},{default:w(i=>[u(I,{size:"small",type:Ze(i.row.status)},{default:w(()=>[pe(d(i.row.status||"-"),1)]),_:2},1032,["type"])]),_:1}),u(n,{prop:"duration_ms",label:"耗时",width:"110"})]),_:1},8,["data"])])])]),_:1},8,["modelValue"]),u(A,{modelValue:z.value,"onUpdate:modelValue":e[1]||(e[1]=i=>z.value=i),title:"慢SQL详情(近24小时)",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Zl,[s("span",null,"慢SQL总数:"+d(l(r.value?.total_slow_queries)),1),s("span",null,"去重SQL:"+d(l(r.value?.unique_sql)),1),s("span",null,"平均耗时:"+d(c(r.value?.avg_duration_ms)),1),s("span",null,"峰值耗时:"+d(c(r.value?.max_duration_ms)),1),s("span",null,"慢阈值:"+d(c(r.value?.slow_threshold_ms)),1)]),s("div",Yl,[e[6]||(e[6]=s("div",{class:"request-dialog-title"},"TOP 慢SQL(按出现次数)",-1)),s("div",Jl,[u(x,{data:Fe.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"sql",label:"SQL","min-width":"400","show-overflow-tooltip":""}),u(n,{prop:"count",label:"次数",width:"90"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"last_seen",label:"最近出现",width:"180"}),u(n,{prop:"sample_params",label:"参数样本","min-width":"140","show-overflow-tooltip":""})]),_:1},8,["data"])])]),s("div",Kl,[e[7]||(e[7]=s("div",{class:"request-dialog-title"},"最近慢SQL",-1)),s("div",Xl,[u(x,{data:Ge.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"sql",label:"SQL","min-width":"420","show-overflow-tooltip":""}),u(n,{prop:"duration_ms",label:"耗时",width:"110"}),u(n,{prop:"params",label:"参数","min-width":"130","show-overflow-tooltip":""})]),_:1},8,["data"])])])]),_:1},8,["modelValue"])])}}},_t=vl(at,[["__scopeId","data-v-d610e788"]]);export{_t as default}; +import{f as tl,g as al,h as sl,k as ul,j as ol,n as nl,o as rl}from"./vendor-element-B5S5pUKo.js";import{c as il,a as cl,_ as vl,f as dl}from"./index-DOvMEmc8.js";import{f as _l}from"./email-Mh1SHQbX.js";import{f as ml,a as pl,b as bl,c as fl,d as hl,e as wl}from"./tasks-B7oNpIBD.js";import{f as gl}from"./system-CYbWdReq.js";import{M as kl}from"./MetricGrid-C3Xjc9mZ.js";import{i as de,r as m,c as a,o as yl,O as Sl,aj as R,n as S,q as k,t as s,L as u,G as D,J as d,K as _e,a3 as me,E as w,I as pe,D as ql,y as xl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-misc-BeoNyvBp.js";import"./vendor-axios-B9ygI19o.js";const $l=il(async()=>{const{data:P}=await cl.get("/browser_pool/stats");return P},4e3);async function Tl(P={}){return $l.run(P)}const Ll={class:"page-stack"},Rl={class:"report-hero"},Ml={class:"hero-head"},Al={class:"hero-main"},Pl={class:"hero-meta app-muted"},Cl={key:0},Nl={key:1,class:"hero-dot"},Il={key:2},Dl={class:"mobile-report"},El={class:"mobile-module-head"},Wl={class:"mobile-module-title"},Ql={class:"mobile-module-desc app-muted"},Vl={class:"mobile-metrics"},zl={class:"mobile-metric-label app-muted"},Bl={class:"mobile-metric-value"},Ol={key:0,class:"module-extra-actions"},Ul={class:"request-dialog-summary app-muted"},Fl={class:"request-dialog-block"},Gl={class:"table-wrap"},jl={class:"request-dialog-block"},Hl={class:"table-wrap"},Zl={class:"request-dialog-summary app-muted"},Yl={class:"request-dialog-block"},Jl={class:"table-wrap"},Kl={class:"request-dialog-block"},Xl={class:"table-wrap"},et=3,lt=5e3,tt=2e4,at={__name:"ReportPage",setup(P){const be=de("refreshStats",null),fe=de("adminStats",null),E=m(!1),W=m(!1),T=m(""),Q=m(null),b=m(null),p=m(null),y=m(null),g=m(null),C=m(null),L=m(null),f=m(null),v=m(null),r=m(null),V=m(!1),z=m(!1);m("running");function he(){try{T.value=new Date().toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{T.value=""}}function l(t){const e=Number(t);return Number.isFinite(e)?e:0}function we(t){const e=String(t??"").trim();if(!e)return 0;const o=e.endsWith("%")?e.slice(0,-1):e,_=Number(o);return!Number.isFinite(_)||_<0?0:_>1e3?1e3:_}function B(t){return`${Math.round(we(t))}%`}function c(t){const e=Number(t);return!Number.isFinite(e)||e<0?"-":e>=100?`${Math.round(e)}ms`:`${e.toFixed(1)}ms`}function Z(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleTimeString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function O(t){const e=Number(t);if(!Number.isFinite(e)||e<=0)return"-";try{return new Date(e*1e3).toLocaleString("zh-CN",{hour12:!1,timeZone:"Asia/Shanghai"})}catch{return"-"}}function ge(t){const e=String(t??"").trim();return!e||e==="manual"?"手动":e==="scheduled"?"系统定时":e==="batch"?"批量执行":e==="resumed"?"断点续跑":e.startsWith("user_scheduled:")?"用户定时":e}const Y=a(()=>{const t=fe?.value||{},e=l(b.value?.max_concurrent);return[{label:"总用户数",value:l(t.total_users),icon:tl,tone:"blue"},{label:"今日注册",value:l(t.new_users_today),icon:al,tone:"green"},{label:"近7天注册",value:l(t.new_users_7d),icon:sl,tone:"purple"},{label:"总账号数",value:l(t.total_accounts),icon:ul,tone:"cyan"},{label:"VIP用户",value:l(t.vip_users),icon:ol,tone:"orange"},{label:"运行中任务",value:l(b.value?.running_count),icon:nl,tone:"green",sub:e?`并发上限 ${e}`:""},{label:"排队任务",value:l(b.value?.queuing_count),icon:rl,tone:"purple"}]}),h=a(()=>Q.value?.today||{}),q=a(()=>Q.value?.total||{});a(()=>b.value?.running||[]);const N=a(()=>b.value?.queuing||[]),ke=a(()=>l(b.value?.running_count)),ye=a(()=>l(b.value?.queuing_count)),Se=a(()=>{const t=L.value?.workers;return Array.isArray(t)?[...t].sort((e,o)=>l(e?.worker_id)-l(o?.worker_id)):[]}),J=a(()=>l(L.value?.total_workers)),U=a(()=>Se.value.filter(t=>!!t?.has_browser).length),K=a(()=>l(L.value?.idle_workers)),X=a(()=>l(L.value?.queue_size)),F=a(()=>l(L.value?.active_workers)),ee=a(()=>{const t=l(h.value.success_tasks),e=l(h.value.failed_tasks),o=t+e;return o>0?Math.round(t/o*1e3)/10:0}),G=a(()=>l(p.value?.success_rate));a(()=>[{label:"总任务",value:l(h.value.total_tasks),tone:"blue"},{label:"成功",value:l(h.value.success_tasks),tone:"green"},{label:"失败",value:l(h.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(h.value.total_items),tone:"purple"},{label:"查看附件",value:l(h.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总任务",value:l(q.value.total_tasks),tone:"blue"},{label:"成功",value:l(q.value.success_tasks),tone:"green"},{label:"失败",value:l(q.value.failed_tasks),tone:"red"},{label:"浏览内容",value:l(q.value.total_items),tone:"purple"},{label:"查看附件",value:l(q.value.total_attachments),tone:"cyan"}]),a(()=>[{label:"总发送",value:l(p.value?.total_sent),tone:"blue"},{label:"成功",value:l(p.value?.total_success),tone:"green"},{label:"失败",value:l(p.value?.total_failed),tone:"red"},{label:"成功率",value:`${G.value}%`,tone:"purple"}]),a(()=>[{label:"注册验证",value:l(p.value?.register_sent),tone:"cyan"},{label:"密码重置",value:l(p.value?.reset_sent),tone:"orange"},{label:"邮箱绑定",value:l(p.value?.bind_sent),tone:"purple"},{label:"任务完成",value:l(p.value?.task_complete_sent),tone:"green"}]),a(()=>[{label:"总反馈",value:l(y.value?.total),tone:"blue"},{label:"待处理",value:l(y.value?.pending),tone:"orange"},{label:"已回复",value:l(y.value?.replied),tone:"green"}]),a(()=>[{label:"总 Worker",value:J.value,tone:"blue"},{label:"活跃 Worker",value:U.value,tone:"green"},{label:"空闲 Worker",value:K.value,tone:"cyan"},{label:"忙碌 Worker",value:F.value,tone:"orange"},{label:"队列",value:X.value,tone:"purple"}]);const qe=a(()=>(f.value?.schedule_enabled??0)===1),xe=a(()=>f.value?.schedule_time||"-"),$e=a(()=>f.value?.schedule_browse_type||"-"),Te=a(()=>String(f.value?.schedule_weekdays||"").trim());a(()=>{const t=Te.value;if(!t)return"";const e={1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"},o=t.split(",").map(_=>_.trim()).filter(Boolean);return o.length?o.map(_=>e[Number(_)]||_).join("、"):t});const Le=a(()=>(f.value?.proxy_enabled??0)===1);a(()=>f.value?.proxy_api_url||"");const le=a(()=>l(f.value?.proxy_expire_minutes)),j=a(()=>l(f.value?.max_concurrent_global)),Re=a(()=>l(f.value?.max_concurrent_per_account)),Me=a(()=>l(f.value?.max_screenshot_concurrent)),Ae=a(()=>{const t=l(b.value?.running_count),e=l(b.value?.queuing_count),o=l(b.value?.max_concurrent);return`运行中 ${t} / 排队 ${e} / 并发上限 ${o||j.value||"-"}`}),Pe=a(()=>Y.value.map(t=>({label:t.label,value:t.sub?`${t.value}(${t.sub})`:t.value}))),Ce=a(()=>[{label:"今日总任务",value:l(h.value.total_tasks)},{label:"今日成功",value:l(h.value.success_tasks)},{label:"今日失败",value:l(h.value.failed_tasks)},{label:"今日成功率",value:`${ee.value}%`},{label:"累计任务",value:l(q.value.total_tasks)},{label:"累计成功",value:l(q.value.success_tasks)}]),Ne=a(()=>[{label:"运行中",value:ke.value},{label:"排队中",value:ye.value},{label:"并发上限",value:l(b.value?.max_concurrent)||j.value||"-"},{label:"排队首条来源",value:ge(N.value[0]?.source)},{label:"排队首条状态",value:N.value[0]?.detail_status||N.value[0]?.status||"-"},{label:"最长等待",value:N.value[0]?.elapsed_display||"-"}]),Ie=a(()=>[{label:"总发送",value:l(p.value?.total_sent)},{label:"成功",value:l(p.value?.total_success)},{label:"失败",value:l(p.value?.total_failed)},{label:"成功率",value:`${G.value}%`},{label:"注册验证",value:l(p.value?.register_sent)},{label:"重置密码",value:l(p.value?.reset_sent)}]),De=a(()=>[{label:"总反馈",value:l(y.value?.total)},{label:"待处理",value:l(y.value?.pending)},{label:"已回复",value:l(y.value?.replied)}]),Ee=a(()=>[{label:"CPU",value:B(g.value?.cpu_percent)},{label:"内存",value:B(g.value?.memory_percent)},{label:"磁盘",value:B(g.value?.disk_percent)},{label:"容器状态",value:C.value?.status||"-"},{label:"容器名",value:C.value?.container_name||"-"},{label:"容器运行",value:C.value?.uptime||"-"}]),We=a(()=>[{label:"总 Worker",value:J.value},{label:"活跃 Worker",value:U.value},{label:"忙碌 Worker",value:F.value},{label:"空闲 Worker",value:K.value},{label:"任务队列",value:X.value}]),Qe=a(()=>{const t=v.value?.top_paths;return Array.isArray(t)?t.slice(0,3):[]}),Ve=a(()=>{const t=[{label:"总请求",value:l(v.value?.total_requests)},{label:"API请求",value:l(v.value?.api_requests)},{label:"慢请求",value:l(v.value?.slow_requests)},{label:"错误请求",value:l(v.value?.error_requests)}];return Qe.value.forEach((e,o)=>{const _=String(e?.path||"-");t.push({label:`慢接口${o+1}`,value:`${_} · 峰值 ${c(e?.max_ms)}`})}),t}),ze=a(()=>{const t=c(v.value?.avg_duration_ms),e=c(v.value?.max_duration_ms),o=Z(v.value?.last_request_ts),_=c(v.value?.slow_threshold_ms);return`均值 ${t} · 峰值 ${e} · 慢阈 ${_} · 最近 ${o}`}),Be=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).slice(0,3)),te=a(()=>{const t=l(r.value?.window_seconds);return t<=0?24:Math.max(1,Math.round(t/3600))}),Oe=a(()=>{const t=[{label:`慢SQL(${te.value}h)`,value:l(r.value?.total_slow_queries)},{label:"去重SQL",value:l(r.value?.unique_sql)},{label:"平均耗时",value:c(r.value?.avg_duration_ms)},{label:"峰值耗时",value:c(r.value?.max_duration_ms)}];return Be.value.forEach((e,o)=>{t.push({label:`慢SQL${o+1}`,value:`${c(e?.max_ms)} · ${String(e?.sql||"-")}`})}),t}),Ue=a(()=>{const t=c(r.value?.slow_threshold_ms),e=Z(r.value?.last_slow_ts);return`窗口 ${te.value}h · 慢阈 ${t} · 最近 ${e}`}),Fe=a(()=>(Array.isArray(r.value?.top_sql)?r.value.top_sql:[]).map((e,o)=>({rank:o+1,sql:String(e?.sql||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),last_seen:O(e?.last_ts),sample_params:String(e?.sample_params||"-")}))),Ge=a(()=>[...Array.isArray(r.value?.recent_slow_sql)?r.value.recent_slow_sql:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),sql:String(e?.sql||"-"),duration_ms:c(e?.duration_ms),params:String(e?.params||"-")}))),je=a(()=>(Array.isArray(v.value?.top_paths)?v.value.top_paths:[]).map((e,o)=>({rank:o+1,path:String(e?.path||"-"),count:l(e?.count),avg_ms:c(e?.avg_ms),max_ms:c(e?.max_ms),status_5xx:l(e?.status_5xx)}))),He=a(()=>[...Array.isArray(v.value?.recent_slow)?v.value.recent_slow:[]].sort((e,o)=>Number(o?.time||0)-Number(e?.time||0)).map(e=>({time_text:O(e?.time),method:String(e?.method||"-").toUpperCase(),path:String(e?.path||"-"),status:l(e?.status),duration_ms:c(e?.duration_ms)})));function Ze(t){const e=l(t);return e>=500?"danger":e>=400?"warning":e>=300?"info":"success"}function Ye(){V.value=!0}function Je(){z.value=!0}const ae=a(()=>{const t=r.value?.slow_threshold_ms;if(t!=null)return c(t);const e=f.value?.db_slow_query_ms;return e!=null?c(e):"-"}),Ke=a(()=>[{label:"定时任务",value:qe.value?"启用":"关闭"},{label:"执行时间",value:xe.value||"-"},{label:"浏览类型",value:$e.value||"-"},{label:"代理",value:Le.value?"启用":"关闭"},{label:"代理有效期",value:le.value?`${le.value} 分钟`:"-"},{label:"全局并发",value:j.value||"-"},{label:"单账号并发",value:Re.value||"-"},{label:"截图并发",value:Me.value||"-"},{label:"慢SQL阈值",value:ae.value}]),Xe=a(()=>[{key:"overview",title:"平台概览",desc:T.value?`更新 ${T.value}`:"核心指标",tone:"blue",items:Pe.value},{key:"task",title:"任务概览",desc:l(h.value.total_tasks)>0?`今日成功率 ${ee.value}%`:"今日暂无任务",tone:"purple",items:Ce.value},{key:"queue",title:"队列监控",desc:Ae.value,tone:"blue",items:Ne.value},{key:"email",title:"邮件报表",desc:`成功率 ${G.value}%`,tone:"cyan",items:Ie.value},{key:"feedback",title:"反馈概览",desc:`待处理 ${l(y.value?.pending)} 条`,tone:"orange",items:De.value},{key:"resource",title:"系统资源",desc:g.value?.uptime?`运行 ${g.value.uptime}`:"运行状态获取中",tone:"green",items:Ee.value},{key:"request",title:"接口性能",desc:ze.value,tone:"purple",items:Ve.value},{key:"slow_sql",title:"慢SQL监控",desc:Ue.value,tone:"red",items:Oe.value},{key:"worker",title:"截图线程池",desc:`活跃 ${U.value} · 忙碌 ${F.value}`,tone:"cyan",items:We.value},{key:"config",title:"配置概览",desc:"并发 / 代理 / 定时任务",tone:"red",items:Ke.value}]);let se=1;async function ue(t={}){const e=t.showLoading??!0;if(W.value)return;const o=!!t.forceStatsSync,_=o||se%et===0;se+=1,W.value=!0,e&&(E.value=!0);try{const[n,x,I,A,i,$,re,ie,ce,ve]=await Promise.allSettled([ml(),pl(),_l(),dl(),bl(),fl(),Tl(),hl(),wl(),gl()]);n.status==="fulfilled"&&(Q.value=n.value),x.status==="fulfilled"&&(b.value=x.value),I.status==="fulfilled"&&(p.value=I.value),A.status==="fulfilled"&&(y.value=A.value),i.status==="fulfilled"&&(g.value=i.value),$.status==="fulfilled"&&(C.value=$.value),re.status==="fulfilled"&&(L.value=re.value),ie.status==="fulfilled"&&(v.value=ie.value),ce.status==="fulfilled"&&(r.value=ce.value),ve.status==="fulfilled"&&(f.value=ve.value),_&&await be?.({force:o}),he()}finally{W.value=!1,e&&(E.value=!1)}}let M=null;function el(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function ll(){return el()?tt:lt}function oe(){M&&(clearTimeout(M),M=null)}function H(){oe(),M=window.setTimeout(async()=>{M=null,await ue({showLoading:!1}).catch(()=>{}),H()},ll())}function ne(){H()}return yl(()=>{ue({showLoading:!1}).catch(()=>{}).finally(()=>{H()}),window.addEventListener("visibilitychange",ne)}),Sl(()=>{oe(),window.removeEventListener("visibilitychange",ne)}),(t,e)=>{const o=R("el-button"),_=R("el-card"),n=R("el-table-column"),x=R("el-table"),I=R("el-tag"),A=R("el-dialog");return k(),S("div",Ll,[s("section",Rl,[s("div",Ml,[s("div",Al,[e[3]||(e[3]=s("h2",null,"报表中心",-1)),s("div",Pl,[T.value?(k(),S("span",Cl,"更新时间:"+d(T.value),1)):D("",!0),e[2]||(e[2]=s("span",{class:"hero-dot"},"·",-1)),s("span",null,"慢SQL阈值 "+d(ae.value),1),g.value?.uptime?(k(),S("span",Nl,"·")):D("",!0),g.value?.uptime?(k(),S("span",Il,"运行 "+d(g.value.uptime),1)):D("",!0)])])]),u(kl,{class:"hero-overview-grid",items:Y.value,loading:E.value,"min-width":165},null,8,["items","loading"])]),s("section",Dl,[(k(!0),S(_e,null,me(Xe.value,i=>(k(),ql(_,{key:i.key,shadow:"never",class:xl(["mobile-module-card",`mobile-tone-${i.tone}`]),"body-style":{padding:"12px"}},{default:w(()=>[s("div",El,[s("div",Wl,d(i.title),1),s("div",Ql,d(i.desc),1)]),s("div",Vl,[(k(!0),S(_e,null,me(i.items,$=>(k(),S("div",{key:`${i.key}-${$.label}`,class:"mobile-metric-item"},[s("div",zl,d($.label),1),s("div",Bl,d($.value),1)]))),128))]),i.key==="request"||i.key==="slow_sql"?(k(),S("div",Ol,[u(o,{size:"small",type:"primary",plain:"",onClick:$=>i.key==="request"?Ye():Je()},{default:w(()=>[pe(d(i.key==="request"?"查看慢接口详情":"查看慢SQL详情"),1)]),_:2},1032,["onClick"])])):D("",!0)]),_:2},1032,["class"]))),128))]),u(A,{modelValue:V.value,"onUpdate:modelValue":e[0]||(e[0]=i=>V.value=i),title:"慢接口详情",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Ul,[s("span",null,"总请求:"+d(l(v.value?.total_requests)),1),s("span",null,"API请求:"+d(l(v.value?.api_requests)),1),s("span",null,"慢请求:"+d(l(v.value?.slow_requests)),1),s("span",null,"错误请求:"+d(l(v.value?.error_requests)),1)]),s("div",Fl,[e[4]||(e[4]=s("div",{class:"request-dialog-title"},"慢接口排行榜",-1)),s("div",Gl,[u(x,{data:je.value,size:"small","max-height":"280"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"path",label:"接口路径","min-width":"340","show-overflow-tooltip":""}),u(n,{prop:"count",label:"请求数",width:"100"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"status_5xx",label:"5xx",width:"90"})]),_:1},8,["data"])])]),s("div",jl,[e[5]||(e[5]=s("div",{class:"request-dialog-title"},"最近慢请求",-1)),s("div",Hl,[u(x,{data:He.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"method",label:"方法",width:"90"}),u(n,{prop:"path",label:"接口路径","min-width":"320","show-overflow-tooltip":""}),u(n,{label:"状态",width:"100"},{default:w(i=>[u(I,{size:"small",type:Ze(i.row.status)},{default:w(()=>[pe(d(i.row.status||"-"),1)]),_:2},1032,["type"])]),_:1}),u(n,{prop:"duration_ms",label:"耗时",width:"110"})]),_:1},8,["data"])])])]),_:1},8,["modelValue"]),u(A,{modelValue:z.value,"onUpdate:modelValue":e[1]||(e[1]=i=>z.value=i),title:"慢SQL详情(近24小时)",width:"min(1080px, 96vw)"},{default:w(()=>[s("div",Zl,[s("span",null,"慢SQL总数:"+d(l(r.value?.total_slow_queries)),1),s("span",null,"去重SQL:"+d(l(r.value?.unique_sql)),1),s("span",null,"平均耗时:"+d(c(r.value?.avg_duration_ms)),1),s("span",null,"峰值耗时:"+d(c(r.value?.max_duration_ms)),1),s("span",null,"慢阈值:"+d(c(r.value?.slow_threshold_ms)),1)]),s("div",Yl,[e[6]||(e[6]=s("div",{class:"request-dialog-title"},"TOP 慢SQL(按出现次数)",-1)),s("div",Jl,[u(x,{data:Fe.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"rank",label:"#",width:"60"}),u(n,{prop:"sql",label:"SQL","min-width":"400","show-overflow-tooltip":""}),u(n,{prop:"count",label:"次数",width:"90"}),u(n,{prop:"avg_ms",label:"平均耗时",width:"120"}),u(n,{prop:"max_ms",label:"峰值耗时",width:"120"}),u(n,{prop:"last_seen",label:"最近出现",width:"180"}),u(n,{prop:"sample_params",label:"参数样本","min-width":"140","show-overflow-tooltip":""})]),_:1},8,["data"])])]),s("div",Kl,[e[7]||(e[7]=s("div",{class:"request-dialog-title"},"最近慢SQL",-1)),s("div",Xl,[u(x,{data:Ge.value,size:"small","max-height":"320"},{default:w(()=>[u(n,{prop:"time_text",label:"时间",width:"180"}),u(n,{prop:"sql",label:"SQL","min-width":"420","show-overflow-tooltip":""}),u(n,{prop:"duration_ms",label:"耗时",width:"110"}),u(n,{prop:"params",label:"参数","min-width":"130","show-overflow-tooltip":""})]),_:1},8,["data"])])])]),_:1},8,["modelValue"])])}}},_t=vl(at,[["__scopeId","data-v-6101337a"]]);export{_t as default}; diff --git a/static/admin/assets/ReportPage-IaDpUFfl.css b/static/admin/assets/ReportPage-IaDpUFfl.css new file mode 100644 index 0000000..c8edcdc --- /dev/null +++ b/static/admin/assets/ReportPage-IaDpUFfl.css @@ -0,0 +1 @@ +.page-stack[data-v-6101337a]{display:flex;flex-direction:column;gap:14px}.report-hero[data-v-6101337a]{position:relative;overflow:hidden;border-radius:18px;border:1px solid rgba(17,24,39,.1);background:radial-gradient(circle at 10% 10%,rgba(59,130,246,.18),transparent 48%),radial-gradient(circle at 80% 0%,rgba(236,72,153,.16),transparent 45%),radial-gradient(circle at 90% 90%,rgba(16,185,129,.14),transparent 42%),#ffffffb8;box-shadow:0 14px 40px #0f172a14;-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);padding:16px}.hero-head[data-v-6101337a]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.hero-main h2[data-v-6101337a]{margin:0;font-size:19px;font-weight:900;letter-spacing:.2px}.hero-meta[data-v-6101337a]{margin-top:6px;font-size:12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.hero-dot[data-v-6101337a]{opacity:.65}.hero-actions[data-v-6101337a]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.mobile-report[data-v-6101337a]{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.mobile-module-card[data-v-6101337a]{position:relative;overflow:hidden;border-radius:14px;border:1px solid rgba(17,24,39,.12);background:#ffffffe6;box-shadow:var(--app-shadow-soft)}.mobile-module-card[data-v-6101337a]:before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--mobile-accent, #3b82f6)}.mobile-tone-blue[data-v-6101337a]{--mobile-accent: linear-gradient(90deg, #3b82f6, #06b6d4)}.mobile-tone-cyan[data-v-6101337a]{--mobile-accent: linear-gradient(90deg, #06b6d4, #3b82f6)}.mobile-tone-purple[data-v-6101337a]{--mobile-accent: linear-gradient(90deg, #8b5cf6, #ec4899)}.mobile-tone-orange[data-v-6101337a]{--mobile-accent: linear-gradient(90deg, #f59e0b, #f97316)}.mobile-tone-green[data-v-6101337a]{--mobile-accent: linear-gradient(90deg, #10b981, #22c55e)}.mobile-tone-red[data-v-6101337a]{--mobile-accent: linear-gradient(90deg, #ef4444, #f43f5e)}.mobile-module-head[data-v-6101337a]{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.mobile-module-title[data-v-6101337a]{font-size:13px;font-weight:900;color:#0f172a}.mobile-module-desc[data-v-6101337a]{min-width:0;max-width:68%;font-size:11px;line-height:1.4;text-align:right}.mobile-metrics[data-v-6101337a]{margin-top:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mobile-metric-item[data-v-6101337a]{padding:8px 10px;border-radius:10px;border:1px solid rgba(17,24,39,.08);background:#f8fafce6}.mobile-metric-label[data-v-6101337a]{font-size:11px;line-height:1.35}.mobile-metric-value[data-v-6101337a]{margin-top:4px;font-size:14px;font-weight:800;color:#0f172a;line-height:1.3;word-break:break-word}.module-extra-actions[data-v-6101337a]{margin-top:10px;display:flex;justify-content:flex-end}.request-dialog-summary[data-v-6101337a]{display:flex;flex-wrap:wrap;gap:10px 16px;font-size:12px;margin-bottom:12px}.request-dialog-block+.request-dialog-block[data-v-6101337a]{margin-top:14px}.request-dialog-title[data-v-6101337a]{font-size:13px;font-weight:800;margin-bottom:8px}.hero-overview-grid[data-v-6101337a]{display:none}.panel[data-v-6101337a]{border-radius:18px;border:1px solid rgba(17,24,39,.1);background:#ffffffb8;box-shadow:var(--app-shadow);-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px)}.panel-head[data-v-6101337a]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.head-left[data-v-6101337a]{display:flex;align-items:center;gap:12px;min-width:0}.head-text[data-v-6101337a]{min-width:0}.head-icon[data-v-6101337a]{width:40px;height:40px;border-radius:16px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(17,24,39,.08);flex:0 0 auto}.tone-blue[data-v-6101337a]{background:#3b82f61f;color:#1d4ed8}.tone-cyan[data-v-6101337a]{background:#22d3ee1f;color:#0369a1}.tone-purple[data-v-6101337a]{background:#8b5cf61f;color:#6d28d9}.tone-orange[data-v-6101337a]{background:#f59e0b1f;color:#b45309}.tone-green[data-v-6101337a]{background:#10b9811f;color:#047857}.tone-red[data-v-6101337a]{background:#ef44441f;color:#b91c1c}.panel-title[data-v-6101337a]{font-size:14px;font-weight:900}.panel-sub[data-v-6101337a]{margin-top:4px;font-size:12px;color:var(--app-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metrics-block[data-v-6101337a]{display:flex;flex-direction:column;gap:10px}.block-title[data-v-6101337a]{font-size:13px;font-weight:900;letter-spacing:.2px}.divider[data-v-6101337a]{height:1px;background:linear-gradient(90deg,transparent,rgba(17,24,39,.12),transparent);margin:14px 0}.queue-tabs[data-v-6101337a] .el-tabs__header{margin:0 0 10px}.tab-label[data-v-6101337a]{display:inline-flex;align-items:center;gap:6px}.table-wrap[data-v-6101337a]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.help[data-v-6101337a]{margin-top:10px;font-size:12px}.resource-grid[data-v-6101337a]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.resource-item[data-v-6101337a]{border:1px solid rgba(17,24,39,.08);border-radius:16px;padding:12px;background:#ffffffb3}.resource-k[data-v-6101337a]{font-size:12px;margin-bottom:8px}.resource-sub[data-v-6101337a]{margin-top:8px;font-size:12px}.config-grid[data-v-6101337a]{display:grid;grid-template-columns:1fr;gap:10px}.config-item[data-v-6101337a]{border:1px solid rgba(17,24,39,.08);border-radius:16px;padding:12px;background:#ffffffb3}.config-k[data-v-6101337a]{font-size:12px}.config-v[data-v-6101337a]{margin-top:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.config-inline[data-v-6101337a]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.config-split[data-v-6101337a]{opacity:.65}.config-sub[data-v-6101337a]{margin-top:8px;font-size:12px}.err[data-v-6101337a]{color:#b91c1c}[data-v-6101337a] .el-table{--el-table-border-color: rgba(17, 24, 39, .08);--el-table-header-bg-color: rgba(246, 247, 251, .8)}[data-v-6101337a] .el-table th.el-table__cell{background:#f6f7fbcc}@media(max-width:1200px){.mobile-report[data-v-6101337a]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.mobile-report[data-v-6101337a]{grid-template-columns:1fr;gap:10px}.report-hero[data-v-6101337a]{border-radius:14px;padding:12px}.hero-main h2[data-v-6101337a]{font-size:17px}.hero-meta[data-v-6101337a]{margin-top:4px;gap:6px;font-size:11px}.resource-grid[data-v-6101337a]{grid-template-columns:1fr}}@media(max-width:420px){.mobile-metrics[data-v-6101337a]{grid-template-columns:1fr}.mobile-module-desc[data-v-6101337a]{max-width:62%}} diff --git a/static/admin/assets/SecurityPage-C2-mJ7eD.css b/static/admin/assets/SecurityPage-C2-mJ7eD.css new file mode 100644 index 0000000..bd729f4 --- /dev/null +++ b/static/admin/assets/SecurityPage-C2-mJ7eD.css @@ -0,0 +1 @@ +.page-stack[data-v-c89794eb]{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar[data-v-c89794eb]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card[data-v-c89794eb]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.sub-card[data-v-c89794eb]{margin-top:12px;border-radius:var(--app-radius);border:1px solid var(--app-border)}.filters[data-v-c89794eb]{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.table-wrap[data-v-c89794eb]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-c89794eb]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mono[data-v-c89794eb]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.pagination[data-v-c89794eb]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint[data-v-c89794eb]{font-size:12px}.inner-tabs[data-v-c89794eb]{margin-top:6px}.risk-head[data-v-c89794eb]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.risk-title[data-v-c89794eb]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dialog-actions[data-v-c89794eb]{display:flex;align-items:center;gap:10px}.spacer[data-v-c89794eb]{flex:1} diff --git a/static/admin/assets/SecurityPage-DN76ndc_.css b/static/admin/assets/SecurityPage-DN76ndc_.css deleted file mode 100644 index 4428459..0000000 --- a/static/admin/assets/SecurityPage-DN76ndc_.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-94e0bde6]{display:flex;flex-direction:column;gap:14px;min-width:0}.toolbar[data-v-94e0bde6]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card[data-v-94e0bde6]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.sub-card[data-v-94e0bde6]{margin-top:12px;border-radius:var(--app-radius);border:1px solid var(--app-border)}.filters[data-v-94e0bde6]{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.table-wrap[data-v-94e0bde6]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.ellipsis[data-v-94e0bde6]{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mono[data-v-94e0bde6]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.pagination[data-v-94e0bde6]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint[data-v-94e0bde6]{font-size:12px}.inner-tabs[data-v-94e0bde6]{margin-top:6px}.risk-head[data-v-94e0bde6]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.risk-title[data-v-94e0bde6]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dialog-actions[data-v-94e0bde6]{display:flex;align-items:center;gap:10px}.spacer[data-v-94e0bde6]{flex:1} diff --git a/static/admin/assets/SecurityPage-xwMQfhuh.js b/static/admin/assets/SecurityPage-yzYEGeTN.js similarity index 99% rename from static/admin/assets/SecurityPage-xwMQfhuh.js rename to static/admin/assets/SecurityPage-yzYEGeTN.js index abef170..45ee885 100644 --- a/static/admin/assets/SecurityPage-xwMQfhuh.js +++ b/static/admin/assets/SecurityPage-yzYEGeTN.js @@ -1,5 +1,5 @@ -import{a as g,_ as qe}from"./index-C1f9ticl.js";import{M as Ee}from"./MetricGrid-BnihYB_8.js";import{E as ee,a as w}from"./vendor-element-B5S5pUKo.js";import{r as d,c as oe,o as ze,aj as v,ap as Ae,n as P,q as c,t as p,L as a,E as l,I as i,K as Ge,a3 as Ke,D as b,F as te,J as f,G as ue}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Oe(){const{data:u}=await g.get("/admin/security/dashboard");return u}async function He(u){const{data:m}=await g.get("/admin/security/threats",{params:u});return m}async function Je(){const{data:u}=await g.get("/admin/security/banned-ips");return u}async function Qe(){const{data:u}=await g.get("/admin/security/banned-users");return u}async function We(u){const{data:m}=await g.post("/admin/security/ban-ip",u);return m}async function Xe(u){const{data:m}=await g.post("/admin/security/unban-ip",{ip:u});return m}async function Ye(u){const{data:m}=await g.post("/admin/security/ban-user",u);return m}async function Ze(u){const{data:m}=await g.post("/admin/security/unban-user",{user_id:u});return m}async function et(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/ip-risk/${m}`);return V}async function tt(u){const{data:m}=await g.post("/admin/security/ip-risk/clear",{ip:u});return m}async function at(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/user-risk/${m}`);return V}async function lt(){const{data:u}=await g.post("/admin/security/cleanup",{});return u}const nt={class:"page-stack"},it={class:"app-page-title"},st={class:"toolbar"},ot={class:"filters"},ut={class:"table-wrap"},rt={key:1},dt={key:1},pt={class:"mono ellipsis"},ct={class:"ellipsis"},ft={class:"pagination"},mt={class:"page-hint app-muted"},vt={class:"toolbar"},_t={class:"table-wrap"},yt={class:"table-wrap"},bt={class:"filters"},gt={class:"filters"},kt={class:"risk-head"},ht={class:"risk-title"},wt={key:0},It={key:1},Vt={class:"toolbar"},xt={class:"table-wrap"},Ct={class:"mono ellipsis"},St={class:"ellipsis"},Tt={class:"dialog-actions"},re=20,Pt={__name:"SecurityPage",setup(u){const m=d("threats"),V=d(!1),L=d(null),ae=d(!1),q=d([]),E=d(0),C=d(1),U=d(""),B=d(""),$=d(!1),de=d([]),pe=d([]),ce=d("ips"),S=d(!1),R=d(!1),o=d({kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}),z=d("ip"),k=d(!1),A=d(""),G=d(""),_=d(null),h=d(""),Ie=["sql_injection","xss","path_traversal","command_injection","ssrf","scanner","bruteforce","csrf","xxe","file_upload"];function le(n){const e=Number(n);return Number.isFinite(e)?e:0}function D(n){const e=Number(n||0);return e>=80?{label:"高",type:"danger"}:e>=50?{label:"中",type:"warning"}:{label:"低",type:"success"}}function fe(n){const e=String(n||"").trim();return e||"永久"}function me(n){const e=[];return n?.field_name&&e.push(`字段: ${n.field_name}`),n?.rule&&e.push(`规则: ${n.rule}`),n?.matched&&e.push(`匹配: ${n.matched}`),n?.value_preview&&e.push(`值: ${n.value_preview}`),e.length?e.join(" · "):"-"}function K(n){const e=String(n?.request_method||"").trim(),s=String(n?.request_path||"").trim();return`${e} ${s}`.trim()||"-"}const Ve=oe(()=>{const n=new Set(Ie),e=L.value?.recent_threat_events||[];for(const s of e){const y=String(s?.threat_type||"").trim();y&&n.add(y)}for(const s of q.value||[]){const y=String(s?.threat_type||"").trim();y&&n.add(y)}return Array.from(n).sort((s,y)=>s.localeCompare(y)).map(s=>({label:s,value:s}))}),xe=oe(()=>{const n=L.value||{};return[{key:"threat_events_24h",label:"最近24小时威胁事件",value:le(n.threat_events_24h),tone:"red",hint:"用于衡量当前攻击面活跃度"},{key:"banned_ip_count",label:"当前封禁 IP 数",value:le(n.banned_ip_count),tone:"orange",hint:"自动与人工封禁总量"},{key:"banned_user_count",label:"当前封禁用户数",value:le(n.banned_user_count),tone:"purple",hint:"高风险账户拦截情况"}]}),Ce=oe(()=>Math.max(1,Math.ceil((E.value||0)/re)));async function N(){V.value=!0;try{L.value=await Oe()}catch{L.value=null}finally{V.value=!1}}async function O(){ae.value=!0;try{const n={page:C.value,per_page:re};U.value&&(n.event_type=U.value),B.value&&(n.severity=B.value);const e=await He(n);q.value=e?.items||[],E.value=e?.total||0}catch{q.value=[],E.value=0}finally{ae.value=!1}}async function F(){if(!$.value){$.value=!0;try{const[n,e]=await Promise.allSettled([Je(),Qe()]);de.value=n.status==="fulfilled"?n.value?.items||[]:[],pe.value=e.status==="fulfilled"?e.value?.items||[]:[]}finally{$.value=!1}}}async function ve(){await Promise.allSettled([N(),O(),F()])}function Se(){C.value=1,O()}function Te(){U.value="",B.value="",C.value=1,O()}function _e(){o.value={kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}}function H(n="ip",e={}){_e(),o.value.kind=n==="user"?"user":"ip",o.value.kind==="ip"?o.value.ip=String(e.ip||"").trim():o.value.user_id=String(e.user_id||"").trim(),e.reason&&(o.value.reason=String(e.reason||"").trim()),S.value=!0}async function Pe(){const n=o.value.kind,e=String(o.value.reason||"").trim(),s=!!o.value.permanent,y=Number(o.value.duration_hours||24);if(!e){w.error("原因不能为空");return}if(n==="ip"){const I=String(o.value.ip||"").trim();if(!I){w.error("IP不能为空");return}R.value=!0;try{await We({ip:I,reason:e,duration_hours:y,permanent:s}),w.success("IP已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}return}const Q=String(o.value.user_id||"").trim(),r=Number.parseInt(Q,10);if(!Number.isFinite(r)){w.error("用户ID无效");return}R.value=!0;try{await Ye({user_id:r,reason:e,duration_hours:y,permanent:s}),w.success("用户已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}}async function ye(n){const e=String(n||"").trim();if(e){try{await ee.confirm(`确定解除对 IP ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Xe(e),w.success("已解除IP封禁"),await Promise.allSettled([N(),F()])}catch{}}}async function be(n){const e=Number.parseInt(String(n||"").trim(),10);if(Number.isFinite(e)){try{await ee.confirm(`确定解除对 用户ID ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Ze(e),w.success("已解除用户封禁"),await Promise.allSettled([N(),F()])}catch{}}}function ge(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="ip",A.value=e,J())}function ke(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="user",G.value=e,ne())}async function J(){const n=String(A.value||"").trim();if(!n){w.error("请输入IP");return}k.value=!0;try{_.value=await et(n),h.value="ip"}catch{_.value=null,h.value=""}finally{k.value=!1}}async function ne(){const n=String(G.value||"").trim(),e=Number.parseInt(n,10);if(!Number.isFinite(e)){w.error("请输入有效的用户ID");return}k.value=!0;try{_.value=await at(e),h.value="user"}catch{_.value=null,h.value=""}finally{k.value=!1}}function Ue(){!_.value||!h.value||(h.value==="ip"?H("ip",{ip:_.value?.ip,reason:"风险查询手动封禁"}):H("user",{user_id:_.value?.user_id,reason:"风险查询手动封禁"}))}async function Be(){!_.value||!h.value||(h.value==="ip"?(await ye(_.value?.ip),await J()):(await be(_.value?.user_id),await ne()))}async function $e(){if(h.value!=="ip")return;const n=String(_.value?.ip||"").trim();if(n){try{await ee.confirm(`确定清除 IP ${n} 的风险分吗? +import{a as g,_ as qe}from"./index-DOvMEmc8.js";import{M as Ee}from"./MetricGrid-C3Xjc9mZ.js";import{E as ee,a as w}from"./vendor-element-B5S5pUKo.js";import{r as d,c as oe,o as ze,aj as v,ap as Ae,n as P,q as c,t as p,L as a,E as l,I as i,K as Ge,a3 as Ke,D as b,F as te,J as f,G as ue}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Oe(){const{data:u}=await g.get("/admin/security/dashboard");return u}async function He(u){const{data:m}=await g.get("/admin/security/threats",{params:u});return m}async function Je(){const{data:u}=await g.get("/admin/security/banned-ips");return u}async function Qe(){const{data:u}=await g.get("/admin/security/banned-users");return u}async function We(u){const{data:m}=await g.post("/admin/security/ban-ip",u);return m}async function Xe(u){const{data:m}=await g.post("/admin/security/unban-ip",{ip:u});return m}async function Ye(u){const{data:m}=await g.post("/admin/security/ban-user",u);return m}async function Ze(u){const{data:m}=await g.post("/admin/security/unban-user",{user_id:u});return m}async function et(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/ip-risk/${m}`);return V}async function tt(u){const{data:m}=await g.post("/admin/security/ip-risk/clear",{ip:u});return m}async function at(u){const m=encodeURIComponent(String(u||"").trim()),{data:V}=await g.get(`/admin/security/user-risk/${m}`);return V}async function lt(){const{data:u}=await g.post("/admin/security/cleanup",{});return u}const nt={class:"page-stack"},it={class:"app-page-title"},st={class:"toolbar"},ot={class:"filters"},ut={class:"table-wrap"},rt={key:1},dt={key:1},pt={class:"mono ellipsis"},ct={class:"ellipsis"},ft={class:"pagination"},mt={class:"page-hint app-muted"},vt={class:"toolbar"},_t={class:"table-wrap"},yt={class:"table-wrap"},bt={class:"filters"},gt={class:"filters"},kt={class:"risk-head"},ht={class:"risk-title"},wt={key:0},It={key:1},Vt={class:"toolbar"},xt={class:"table-wrap"},Ct={class:"mono ellipsis"},St={class:"ellipsis"},Tt={class:"dialog-actions"},re=20,Pt={__name:"SecurityPage",setup(u){const m=d("threats"),V=d(!1),L=d(null),ae=d(!1),q=d([]),E=d(0),C=d(1),U=d(""),B=d(""),$=d(!1),de=d([]),pe=d([]),ce=d("ips"),S=d(!1),R=d(!1),o=d({kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}),z=d("ip"),k=d(!1),A=d(""),G=d(""),_=d(null),h=d(""),Ie=["sql_injection","xss","path_traversal","command_injection","ssrf","scanner","bruteforce","csrf","xxe","file_upload"];function le(n){const e=Number(n);return Number.isFinite(e)?e:0}function D(n){const e=Number(n||0);return e>=80?{label:"高",type:"danger"}:e>=50?{label:"中",type:"warning"}:{label:"低",type:"success"}}function fe(n){const e=String(n||"").trim();return e||"永久"}function me(n){const e=[];return n?.field_name&&e.push(`字段: ${n.field_name}`),n?.rule&&e.push(`规则: ${n.rule}`),n?.matched&&e.push(`匹配: ${n.matched}`),n?.value_preview&&e.push(`值: ${n.value_preview}`),e.length?e.join(" · "):"-"}function K(n){const e=String(n?.request_method||"").trim(),s=String(n?.request_path||"").trim();return`${e} ${s}`.trim()||"-"}const Ve=oe(()=>{const n=new Set(Ie),e=L.value?.recent_threat_events||[];for(const s of e){const y=String(s?.threat_type||"").trim();y&&n.add(y)}for(const s of q.value||[]){const y=String(s?.threat_type||"").trim();y&&n.add(y)}return Array.from(n).sort((s,y)=>s.localeCompare(y)).map(s=>({label:s,value:s}))}),xe=oe(()=>{const n=L.value||{};return[{key:"threat_events_24h",label:"最近24小时威胁事件",value:le(n.threat_events_24h),tone:"red",hint:"用于衡量当前攻击面活跃度"},{key:"banned_ip_count",label:"当前封禁 IP 数",value:le(n.banned_ip_count),tone:"orange",hint:"自动与人工封禁总量"},{key:"banned_user_count",label:"当前封禁用户数",value:le(n.banned_user_count),tone:"purple",hint:"高风险账户拦截情况"}]}),Ce=oe(()=>Math.max(1,Math.ceil((E.value||0)/re)));async function N(){V.value=!0;try{L.value=await Oe()}catch{L.value=null}finally{V.value=!1}}async function O(){ae.value=!0;try{const n={page:C.value,per_page:re};U.value&&(n.event_type=U.value),B.value&&(n.severity=B.value);const e=await He(n);q.value=e?.items||[],E.value=e?.total||0}catch{q.value=[],E.value=0}finally{ae.value=!1}}async function F(){if(!$.value){$.value=!0;try{const[n,e]=await Promise.allSettled([Je(),Qe()]);de.value=n.status==="fulfilled"?n.value?.items||[]:[],pe.value=e.status==="fulfilled"?e.value?.items||[]:[]}finally{$.value=!1}}}async function ve(){await Promise.allSettled([N(),O(),F()])}function Se(){C.value=1,O()}function Te(){U.value="",B.value="",C.value=1,O()}function _e(){o.value={kind:"ip",ip:"",user_id:"",reason:"",duration_hours:24,permanent:!1}}function H(n="ip",e={}){_e(),o.value.kind=n==="user"?"user":"ip",o.value.kind==="ip"?o.value.ip=String(e.ip||"").trim():o.value.user_id=String(e.user_id||"").trim(),e.reason&&(o.value.reason=String(e.reason||"").trim()),S.value=!0}async function Pe(){const n=o.value.kind,e=String(o.value.reason||"").trim(),s=!!o.value.permanent,y=Number(o.value.duration_hours||24);if(!e){w.error("原因不能为空");return}if(n==="ip"){const I=String(o.value.ip||"").trim();if(!I){w.error("IP不能为空");return}R.value=!0;try{await We({ip:I,reason:e,duration_hours:y,permanent:s}),w.success("IP已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}return}const Q=String(o.value.user_id||"").trim(),r=Number.parseInt(Q,10);if(!Number.isFinite(r)){w.error("用户ID无效");return}R.value=!0;try{await Ye({user_id:r,reason:e,duration_hours:y,permanent:s}),w.success("用户已封禁"),S.value=!1,await Promise.allSettled([N(),F()])}catch{}finally{R.value=!1}}async function ye(n){const e=String(n||"").trim();if(e){try{await ee.confirm(`确定解除对 IP ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Xe(e),w.success("已解除IP封禁"),await Promise.allSettled([N(),F()])}catch{}}}async function be(n){const e=Number.parseInt(String(n||"").trim(),10);if(Number.isFinite(e)){try{await ee.confirm(`确定解除对 用户ID ${e} 的封禁吗?`,"解除封禁",{confirmButtonText:"解除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Ze(e),w.success("已解除用户封禁"),await Promise.allSettled([N(),F()])}catch{}}}function ge(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="ip",A.value=e,J())}function ke(n){const e=String(n||"").trim();e&&(m.value="risk",z.value="user",G.value=e,ne())}async function J(){const n=String(A.value||"").trim();if(!n){w.error("请输入IP");return}k.value=!0;try{_.value=await et(n),h.value="ip"}catch{_.value=null,h.value=""}finally{k.value=!1}}async function ne(){const n=String(G.value||"").trim(),e=Number.parseInt(n,10);if(!Number.isFinite(e)){w.error("请输入有效的用户ID");return}k.value=!0;try{_.value=await at(e),h.value="user"}catch{_.value=null,h.value=""}finally{k.value=!1}}function Ue(){!_.value||!h.value||(h.value==="ip"?H("ip",{ip:_.value?.ip,reason:"风险查询手动封禁"}):H("user",{user_id:_.value?.user_id,reason:"风险查询手动封禁"}))}async function Be(){!_.value||!h.value||(h.value==="ip"?(await ye(_.value?.ip),await J()):(await be(_.value?.user_id),await ne()))}async function $e(){if(h.value!=="ip")return;const n=String(_.value?.ip||"").trim();if(n){try{await ee.confirm(`确定清除 IP ${n} 的风险分吗? 清除风险分不会删除威胁历史,也不会解除封禁。`,"清除风险分",{confirmButtonText:"清除",cancelButtonText:"取消",type:"warning"})}catch{return}if(!k.value){k.value=!0;try{await tt(n),w.success("IP风险分已清零")}catch{}finally{k.value=!1}await J()}}}const ie=d(!1);async function Re(){try{await ee.confirm(`确定清理过期封禁记录,并衰减风险分吗? -该操作不会影响仍在有效期内的封禁。`,"清理过期记录",{confirmButtonText:"清理",cancelButtonText:"取消",type:"warning"})}catch{return}ie.value=!0;try{await lt(),w.success("清理完成"),await ve()}catch{}finally{ie.value=!1}}return ze(async()=>{await ve()}),(n,e)=>{const s=v("el-button"),y=v("el-option"),Q=v("el-select"),r=v("el-table-column"),I=v("el-tag"),W=v("el-link"),X=v("el-tooltip"),Y=v("el-table"),De=v("el-pagination"),x=v("el-tab-pane"),se=v("el-tabs"),M=v("el-input"),he=v("el-card"),we=v("el-radio-button"),Ne=v("el-radio-group"),T=v("el-form-item"),Fe=v("el-switch"),Me=v("el-input-number"),je=v("el-form"),Le=v("el-dialog"),Z=Ae("loading");return c(),P("div",nt,[p("div",it,[e[20]||(e[20]=p("h2",null,"安全防护",-1)),p("div",st,[a(s,{type:"warning",plain:"",loading:ie.value,onClick:Re},{default:l(()=>[...e[18]||(e[18]=[i("清理过期记录",-1)])]),_:1},8,["loading"]),a(s,{type:"primary",onClick:e[0]||(e[0]=t=>H())},{default:l(()=>[...e[19]||(e[19]=[i("手动封禁",-1)])]),_:1})])]),a(Ee,{items:xe.value,loading:V.value,"min-width":220},null,8,["items","loading"]),a(he,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[a(se,{modelValue:m.value,"onUpdate:modelValue":e[9]||(e[9]=t=>m.value=t)},{default:l(()=>[a(x,{label:"威胁事件",name:"threats"},{default:l(()=>[p("div",ot,[a(Q,{modelValue:U.value,"onUpdate:modelValue":e[1]||(e[1]=t=>U.value=t),placeholder:"类型",style:{width:"220px"},filterable:"",clearable:"","allow-create":"","default-first-option":""},{default:l(()=>[a(y,{label:"全部",value:""}),(c(!0),P(Ge,null,Ke(Ve.value,t=>(c(),b(y,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),a(Q,{modelValue:B.value,"onUpdate:modelValue":e[2]||(e[2]=t=>B.value=t),placeholder:"严重程度",style:{width:"200px"},clearable:""},{default:l(()=>[a(y,{label:"全部",value:""}),a(y,{label:"高风险(>=80)",value:"high"}),a(y,{label:"中风险(50-79)",value:"medium"}),a(y,{label:"低风险(<50)",value:"low"})]),_:1},8,["modelValue"]),a(s,{type:"primary",onClick:Se},{default:l(()=>[...e[21]||(e[21]=[i("筛选",-1)])]),_:1}),a(s,{onClick:Te},{default:l(()=>[...e[22]||(e[22]=[i("重置",-1)])]),_:1})]),p("div",ut,[te((c(),b(Y,{data:q.value,style:{width:"100%"}},{default:l(()=>[a(r,{prop:"created_at",label:"时间",width:"180"}),a(r,{label:"类型",width:"170"},{default:l(({row:t})=>[a(I,{effect:"light",type:"info"},{default:l(()=>[i(f(t.threat_type||"unknown"),1)]),_:2},1024)]),_:1}),a(r,{label:"严重程度",width:"120"},{default:l(({row:t})=>[a(I,{type:D(t.score).type,effect:"light"},{default:l(()=>[i(f(D(t.score).label)+" ("+f(t.score??0)+") ",1)]),_:2},1032,["type"])]),_:1}),a(r,{label:"IP",width:"150"},{default:l(({row:t})=>[t.ip?(c(),b(W,{key:0,type:"primary",underline:!1,onClick:j=>ge(t.ip)},{default:l(()=>[i(f(t.ip),1)]),_:2},1032,["onClick"])):(c(),P("span",rt,"-"))]),_:1}),a(r,{label:"用户",width:"120"},{default:l(({row:t})=>[t.user_id!==null&&t.user_id!==void 0?(c(),b(W,{key:0,type:"primary",underline:!1,onClick:j=>ke(t.user_id)},{default:l(()=>[i(f(t.user_id),1)]),_:2},1032,["onClick"])):(c(),P("span",dt,"-"))]),_:1}),a(r,{label:"操作路径","min-width":"220"},{default:l(({row:t})=>[a(X,{content:K(t),placement:"top","show-after":300},{default:l(()=>[p("span",pt,f(K(t)),1)]),_:2},1032,["content"])]),_:1}),a(r,{label:"Payload预览","min-width":"240"},{default:l(({row:t})=>[a(X,{content:me(t),placement:"top","show-after":300},{default:l(()=>[p("span",ct,f(t.value_preview||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[Z,ae.value]])]),p("div",ft,[a(De,{"current-page":C.value,"onUpdate:currentPage":e[3]||(e[3]=t=>C.value=t),"page-size":re,total:E.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:O},null,8,["current-page","total"]),p("div",mt,"第 "+f(C.value)+" / "+f(Ce.value)+" 页",1)])]),_:1}),a(x,{label:"封禁管理",name:"bans"},{default:l(()=>[p("div",vt,[a(s,{type:"primary",onClick:e[4]||(e[4]=t=>H())},{default:l(()=>[...e[23]||(e[23]=[i("手动封禁",-1)])]),_:1})]),a(se,{modelValue:ce.value,"onUpdate:modelValue":e[5]||(e[5]=t=>ce.value=t),class:"inner-tabs"},{default:l(()=>[a(x,{label:"IP黑名单",name:"ips"},{default:l(()=>[p("div",_t,[te((c(),b(Y,{data:de.value,style:{width:"100%"}},{default:l(()=>[a(r,{label:"IP",width:"180"},{default:l(({row:t})=>[a(W,{type:"primary",underline:!1,onClick:j=>ge(t.ip)},{default:l(()=>[i(f(t.ip||"-"),1)]),_:2},1032,["onClick"])]),_:1}),a(r,{prop:"reason",label:"原因","min-width":"260"}),a(r,{label:"过期时间",width:"190"},{default:l(({row:t})=>[i(f(fe(t.expires_at)),1)]),_:1}),a(r,{label:"操作",width:"120",fixed:"right"},{default:l(({row:t})=>[a(s,{size:"small",type:"danger",plain:"",onClick:j=>ye(t.ip)},{default:l(()=>[...e[24]||(e[24]=[i("解除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Z,$.value]])])]),_:1}),a(x,{label:"用户黑名单",name:"users"},{default:l(()=>[p("div",yt,[te((c(),b(Y,{data:pe.value,style:{width:"100%"}},{default:l(()=>[a(r,{label:"用户ID",width:"180"},{default:l(({row:t})=>[a(W,{type:"primary",underline:!1,onClick:j=>ke(t.user_id)},{default:l(()=>[i(f(t.user_id??"-"),1)]),_:2},1032,["onClick"])]),_:1}),a(r,{prop:"reason",label:"原因","min-width":"260"}),a(r,{label:"过期时间",width:"190"},{default:l(({row:t})=>[i(f(fe(t.expires_at)),1)]),_:1}),a(r,{label:"操作",width:"120",fixed:"right"},{default:l(({row:t})=>[a(s,{size:"small",type:"danger",plain:"",onClick:j=>be(t.user_id)},{default:l(()=>[...e[25]||(e[25]=[i("解除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Z,$.value]])])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(x,{label:"风险查询",name:"risk"},{default:l(()=>[a(se,{modelValue:z.value,"onUpdate:modelValue":e[8]||(e[8]=t=>z.value=t),class:"inner-tabs"},{default:l(()=>[a(x,{label:"IP查询",name:"ip"},{default:l(()=>[p("div",bt,[a(M,{modelValue:A.value,"onUpdate:modelValue":e[6]||(e[6]=t=>A.value=t),placeholder:"输入IP,如 1.2.3.4",style:{width:"260px"},clearable:""},null,8,["modelValue"]),a(s,{type:"primary",loading:k.value,onClick:J},{default:l(()=>[...e[26]||(e[26]=[i("查询",-1)])]),_:1},8,["loading"])])]),_:1}),a(x,{label:"用户查询",name:"user"},{default:l(()=>[p("div",gt,[a(M,{modelValue:G.value,"onUpdate:modelValue":e[7]||(e[7]=t=>G.value=t),placeholder:"输入用户ID,如 123",style:{width:"260px"},clearable:""},null,8,["modelValue"]),a(s,{type:"primary",loading:k.value,onClick:ne},{default:l(()=>[...e[27]||(e[27]=[i("查询",-1)])]),_:1},8,["loading"])])]),_:1})]),_:1},8,["modelValue"]),_.value?(c(),b(he,{key:0,shadow:"never","body-style":{padding:"16px"},class:"sub-card"},{default:l(()=>[p("div",kt,[p("div",ht,[h.value==="ip"?(c(),P("strong",wt,"IP: "+f(_.value.ip),1)):(c(),P("strong",It,"用户ID: "+f(_.value.user_id),1)),e[30]||(e[30]=p("span",{class:"app-muted"},"风险分",-1)),a(I,{type:D(_.value.risk_score).type,effect:"light"},{default:l(()=>[i(f(_.value.risk_score??0),1)]),_:1},8,["type"]),_.value.is_banned?(c(),b(I,{key:2,type:"danger",effect:"light"},{default:l(()=>[...e[28]||(e[28]=[i("已封禁",-1)])]),_:1})):(c(),b(I,{key:3,type:"success",effect:"light"},{default:l(()=>[...e[29]||(e[29]=[i("未封禁",-1)])]),_:1}))]),p("div",Vt,[_.value.is_banned?(c(),b(s,{key:1,type:"danger",plain:"",onClick:Be},{default:l(()=>[...e[32]||(e[32]=[i("解除封禁",-1)])]),_:1})):(c(),b(s,{key:0,type:"primary",plain:"",onClick:Ue},{default:l(()=>[...e[31]||(e[31]=[i("封禁",-1)])]),_:1})),h.value==="ip"?(c(),b(s,{key:2,type:"warning",plain:"",loading:k.value,onClick:$e},{default:l(()=>[...e[33]||(e[33]=[i(" 清除风险分 ",-1)])]),_:1},8,["loading"])):ue("",!0)])]),p("div",xt,[te((c(),b(Y,{data:_.value.threat_history||[],style:{width:"100%"}},{default:l(()=>[a(r,{prop:"created_at",label:"时间",width:"180"}),a(r,{label:"类型",width:"170"},{default:l(({row:t})=>[a(I,{effect:"light",type:"info"},{default:l(()=>[i(f(t.threat_type||"unknown"),1)]),_:2},1024)]),_:1}),a(r,{label:"严重程度",width:"120"},{default:l(({row:t})=>[a(I,{type:D(t.score).type,effect:"light"},{default:l(()=>[i(f(D(t.score).label)+" ("+f(t.score??0)+") ",1)]),_:2},1032,["type"])]),_:1}),a(r,{label:"操作路径","min-width":"220"},{default:l(({row:t})=>[a(X,{content:K(t),placement:"top","show-after":300},{default:l(()=>[p("span",Ct,f(K(t)),1)]),_:2},1032,["content"])]),_:1}),a(r,{label:"Payload预览","min-width":"240"},{default:l(({row:t})=>[a(X,{content:me(t),placement:"top","show-after":300},{default:l(()=>[p("span",St,f(t.value_preview||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[Z,k.value]])])]),_:1})):ue("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(Le,{modelValue:S.value,"onUpdate:modelValue":e[17]||(e[17]=t=>S.value=t),title:"手动封禁",width:"min(520px, 92vw)",onClosed:_e},{footer:l(()=>[p("div",Tt,[e[38]||(e[38]=p("div",{class:"spacer"},null,-1)),a(s,{onClick:e[16]||(e[16]=t=>S.value=!1)},{default:l(()=>[...e[36]||(e[36]=[i("取消",-1)])]),_:1}),a(s,{type:"primary",loading:R.value,onClick:Pe},{default:l(()=>[...e[37]||(e[37]=[i("确认封禁",-1)])]),_:1},8,["loading"])])]),default:l(()=>[a(je,{"label-width":"120px"},{default:l(()=>[a(T,{label:"类型"},{default:l(()=>[a(Ne,{modelValue:o.value.kind,"onUpdate:modelValue":e[10]||(e[10]=t=>o.value.kind=t)},{default:l(()=>[a(we,{label:"ip"},{default:l(()=>[...e[34]||(e[34]=[i("IP",-1)])]),_:1}),a(we,{label:"user"},{default:l(()=>[...e[35]||(e[35]=[i("用户",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o.value.kind==="ip"?(c(),b(T,{key:0,label:"IP"},{default:l(()=>[a(M,{modelValue:o.value.ip,"onUpdate:modelValue":e[11]||(e[11]=t=>o.value.ip=t),placeholder:"例如 1.2.3.4"},null,8,["modelValue"])]),_:1})):(c(),b(T,{key:1,label:"用户ID"},{default:l(()=>[a(M,{modelValue:o.value.user_id,"onUpdate:modelValue":e[12]||(e[12]=t=>o.value.user_id=t),placeholder:"例如 123"},null,8,["modelValue"])]),_:1})),a(T,{label:"原因"},{default:l(()=>[a(M,{modelValue:o.value.reason,"onUpdate:modelValue":e[13]||(e[13]=t=>o.value.reason=t),type:"textarea",rows:3,placeholder:"请输入封禁原因"},null,8,["modelValue"])]),_:1}),a(T,{label:"永久封禁"},{default:l(()=>[a(Fe,{modelValue:o.value.permanent,"onUpdate:modelValue":e[14]||(e[14]=t=>o.value.permanent=t)},null,8,["modelValue"])]),_:1}),o.value.permanent?ue("",!0):(c(),b(T,{key:2,label:"持续(小时)"},{default:l(()=>[a(Me,{modelValue:o.value.duration_hours,"onUpdate:modelValue":e[15]||(e[15]=t=>o.value.duration_hours=t),min:1,max:8760},null,8,["modelValue"])]),_:1}))]),_:1})]),_:1},8,["modelValue"])])}}},Ft=qe(Pt,[["__scopeId","data-v-94e0bde6"]]);export{Ft as default}; +该操作不会影响仍在有效期内的封禁。`,"清理过期记录",{confirmButtonText:"清理",cancelButtonText:"取消",type:"warning"})}catch{return}ie.value=!0;try{await lt(),w.success("清理完成"),await ve()}catch{}finally{ie.value=!1}}return ze(async()=>{await ve()}),(n,e)=>{const s=v("el-button"),y=v("el-option"),Q=v("el-select"),r=v("el-table-column"),I=v("el-tag"),W=v("el-link"),X=v("el-tooltip"),Y=v("el-table"),De=v("el-pagination"),x=v("el-tab-pane"),se=v("el-tabs"),M=v("el-input"),he=v("el-card"),we=v("el-radio-button"),Ne=v("el-radio-group"),T=v("el-form-item"),Fe=v("el-switch"),Me=v("el-input-number"),je=v("el-form"),Le=v("el-dialog"),Z=Ae("loading");return c(),P("div",nt,[p("div",it,[e[20]||(e[20]=p("h2",null,"安全防护",-1)),p("div",st,[a(s,{type:"warning",plain:"",loading:ie.value,onClick:Re},{default:l(()=>[...e[18]||(e[18]=[i("清理过期记录",-1)])]),_:1},8,["loading"]),a(s,{type:"primary",onClick:e[0]||(e[0]=t=>H())},{default:l(()=>[...e[19]||(e[19]=[i("手动封禁",-1)])]),_:1})])]),a(Ee,{items:xe.value,loading:V.value,"min-width":220},null,8,["items","loading"]),a(he,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:l(()=>[a(se,{modelValue:m.value,"onUpdate:modelValue":e[9]||(e[9]=t=>m.value=t)},{default:l(()=>[a(x,{label:"威胁事件",name:"threats"},{default:l(()=>[p("div",ot,[a(Q,{modelValue:U.value,"onUpdate:modelValue":e[1]||(e[1]=t=>U.value=t),placeholder:"类型",style:{width:"220px"},filterable:"",clearable:"","allow-create":"","default-first-option":""},{default:l(()=>[a(y,{label:"全部",value:""}),(c(!0),P(Ge,null,Ke(Ve.value,t=>(c(),b(y,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),a(Q,{modelValue:B.value,"onUpdate:modelValue":e[2]||(e[2]=t=>B.value=t),placeholder:"严重程度",style:{width:"200px"},clearable:""},{default:l(()=>[a(y,{label:"全部",value:""}),a(y,{label:"高风险(>=80)",value:"high"}),a(y,{label:"中风险(50-79)",value:"medium"}),a(y,{label:"低风险(<50)",value:"low"})]),_:1},8,["modelValue"]),a(s,{type:"primary",onClick:Se},{default:l(()=>[...e[21]||(e[21]=[i("筛选",-1)])]),_:1}),a(s,{onClick:Te},{default:l(()=>[...e[22]||(e[22]=[i("重置",-1)])]),_:1})]),p("div",ut,[te((c(),b(Y,{data:q.value,style:{width:"100%"}},{default:l(()=>[a(r,{prop:"created_at",label:"时间",width:"180"}),a(r,{label:"类型",width:"170"},{default:l(({row:t})=>[a(I,{effect:"light",type:"info"},{default:l(()=>[i(f(t.threat_type||"unknown"),1)]),_:2},1024)]),_:1}),a(r,{label:"严重程度",width:"120"},{default:l(({row:t})=>[a(I,{type:D(t.score).type,effect:"light"},{default:l(()=>[i(f(D(t.score).label)+" ("+f(t.score??0)+") ",1)]),_:2},1032,["type"])]),_:1}),a(r,{label:"IP",width:"150"},{default:l(({row:t})=>[t.ip?(c(),b(W,{key:0,type:"primary",underline:!1,onClick:j=>ge(t.ip)},{default:l(()=>[i(f(t.ip),1)]),_:2},1032,["onClick"])):(c(),P("span",rt,"-"))]),_:1}),a(r,{label:"用户",width:"120"},{default:l(({row:t})=>[t.user_id!==null&&t.user_id!==void 0?(c(),b(W,{key:0,type:"primary",underline:!1,onClick:j=>ke(t.user_id)},{default:l(()=>[i(f(t.user_id),1)]),_:2},1032,["onClick"])):(c(),P("span",dt,"-"))]),_:1}),a(r,{label:"操作路径","min-width":"220"},{default:l(({row:t})=>[a(X,{content:K(t),placement:"top","show-after":300},{default:l(()=>[p("span",pt,f(K(t)),1)]),_:2},1032,["content"])]),_:1}),a(r,{label:"Payload预览","min-width":"240"},{default:l(({row:t})=>[a(X,{content:me(t),placement:"top","show-after":300},{default:l(()=>[p("span",ct,f(t.value_preview||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[Z,ae.value]])]),p("div",ft,[a(De,{"current-page":C.value,"onUpdate:currentPage":e[3]||(e[3]=t=>C.value=t),"page-size":re,total:E.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:O},null,8,["current-page","total"]),p("div",mt,"第 "+f(C.value)+" / "+f(Ce.value)+" 页",1)])]),_:1}),a(x,{label:"封禁管理",name:"bans"},{default:l(()=>[p("div",vt,[a(s,{type:"primary",onClick:e[4]||(e[4]=t=>H())},{default:l(()=>[...e[23]||(e[23]=[i("手动封禁",-1)])]),_:1})]),a(se,{modelValue:ce.value,"onUpdate:modelValue":e[5]||(e[5]=t=>ce.value=t),class:"inner-tabs"},{default:l(()=>[a(x,{label:"IP黑名单",name:"ips"},{default:l(()=>[p("div",_t,[te((c(),b(Y,{data:de.value,style:{width:"100%"}},{default:l(()=>[a(r,{label:"IP",width:"180"},{default:l(({row:t})=>[a(W,{type:"primary",underline:!1,onClick:j=>ge(t.ip)},{default:l(()=>[i(f(t.ip||"-"),1)]),_:2},1032,["onClick"])]),_:1}),a(r,{prop:"reason",label:"原因","min-width":"260"}),a(r,{label:"过期时间",width:"190"},{default:l(({row:t})=>[i(f(fe(t.expires_at)),1)]),_:1}),a(r,{label:"操作",width:"120",fixed:"right"},{default:l(({row:t})=>[a(s,{size:"small",type:"danger",plain:"",onClick:j=>ye(t.ip)},{default:l(()=>[...e[24]||(e[24]=[i("解除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Z,$.value]])])]),_:1}),a(x,{label:"用户黑名单",name:"users"},{default:l(()=>[p("div",yt,[te((c(),b(Y,{data:pe.value,style:{width:"100%"}},{default:l(()=>[a(r,{label:"用户ID",width:"180"},{default:l(({row:t})=>[a(W,{type:"primary",underline:!1,onClick:j=>ke(t.user_id)},{default:l(()=>[i(f(t.user_id??"-"),1)]),_:2},1032,["onClick"])]),_:1}),a(r,{prop:"reason",label:"原因","min-width":"260"}),a(r,{label:"过期时间",width:"190"},{default:l(({row:t})=>[i(f(fe(t.expires_at)),1)]),_:1}),a(r,{label:"操作",width:"120",fixed:"right"},{default:l(({row:t})=>[a(s,{size:"small",type:"danger",plain:"",onClick:j=>be(t.user_id)},{default:l(()=>[...e[25]||(e[25]=[i("解除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Z,$.value]])])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(x,{label:"风险查询",name:"risk"},{default:l(()=>[a(se,{modelValue:z.value,"onUpdate:modelValue":e[8]||(e[8]=t=>z.value=t),class:"inner-tabs"},{default:l(()=>[a(x,{label:"IP查询",name:"ip"},{default:l(()=>[p("div",bt,[a(M,{modelValue:A.value,"onUpdate:modelValue":e[6]||(e[6]=t=>A.value=t),placeholder:"输入IP,如 1.2.3.4",style:{width:"260px"},clearable:""},null,8,["modelValue"]),a(s,{type:"primary",loading:k.value,onClick:J},{default:l(()=>[...e[26]||(e[26]=[i("查询",-1)])]),_:1},8,["loading"])])]),_:1}),a(x,{label:"用户查询",name:"user"},{default:l(()=>[p("div",gt,[a(M,{modelValue:G.value,"onUpdate:modelValue":e[7]||(e[7]=t=>G.value=t),placeholder:"输入用户ID,如 123",style:{width:"260px"},clearable:""},null,8,["modelValue"]),a(s,{type:"primary",loading:k.value,onClick:ne},{default:l(()=>[...e[27]||(e[27]=[i("查询",-1)])]),_:1},8,["loading"])])]),_:1})]),_:1},8,["modelValue"]),_.value?(c(),b(he,{key:0,shadow:"never","body-style":{padding:"16px"},class:"sub-card"},{default:l(()=>[p("div",kt,[p("div",ht,[h.value==="ip"?(c(),P("strong",wt,"IP: "+f(_.value.ip),1)):(c(),P("strong",It,"用户ID: "+f(_.value.user_id),1)),e[30]||(e[30]=p("span",{class:"app-muted"},"风险分",-1)),a(I,{type:D(_.value.risk_score).type,effect:"light"},{default:l(()=>[i(f(_.value.risk_score??0),1)]),_:1},8,["type"]),_.value.is_banned?(c(),b(I,{key:2,type:"danger",effect:"light"},{default:l(()=>[...e[28]||(e[28]=[i("已封禁",-1)])]),_:1})):(c(),b(I,{key:3,type:"success",effect:"light"},{default:l(()=>[...e[29]||(e[29]=[i("未封禁",-1)])]),_:1}))]),p("div",Vt,[_.value.is_banned?(c(),b(s,{key:1,type:"danger",plain:"",onClick:Be},{default:l(()=>[...e[32]||(e[32]=[i("解除封禁",-1)])]),_:1})):(c(),b(s,{key:0,type:"primary",plain:"",onClick:Ue},{default:l(()=>[...e[31]||(e[31]=[i("封禁",-1)])]),_:1})),h.value==="ip"?(c(),b(s,{key:2,type:"warning",plain:"",loading:k.value,onClick:$e},{default:l(()=>[...e[33]||(e[33]=[i(" 清除风险分 ",-1)])]),_:1},8,["loading"])):ue("",!0)])]),p("div",xt,[te((c(),b(Y,{data:_.value.threat_history||[],style:{width:"100%"}},{default:l(()=>[a(r,{prop:"created_at",label:"时间",width:"180"}),a(r,{label:"类型",width:"170"},{default:l(({row:t})=>[a(I,{effect:"light",type:"info"},{default:l(()=>[i(f(t.threat_type||"unknown"),1)]),_:2},1024)]),_:1}),a(r,{label:"严重程度",width:"120"},{default:l(({row:t})=>[a(I,{type:D(t.score).type,effect:"light"},{default:l(()=>[i(f(D(t.score).label)+" ("+f(t.score??0)+") ",1)]),_:2},1032,["type"])]),_:1}),a(r,{label:"操作路径","min-width":"220"},{default:l(({row:t})=>[a(X,{content:K(t),placement:"top","show-after":300},{default:l(()=>[p("span",Ct,f(K(t)),1)]),_:2},1032,["content"])]),_:1}),a(r,{label:"Payload预览","min-width":"240"},{default:l(({row:t})=>[a(X,{content:me(t),placement:"top","show-after":300},{default:l(()=>[p("span",St,f(t.value_preview||"-"),1)]),_:2},1032,["content"])]),_:1})]),_:1},8,["data"])),[[Z,k.value]])])]),_:1})):ue("",!0)]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(Le,{modelValue:S.value,"onUpdate:modelValue":e[17]||(e[17]=t=>S.value=t),title:"手动封禁",width:"min(520px, 92vw)",onClosed:_e},{footer:l(()=>[p("div",Tt,[e[38]||(e[38]=p("div",{class:"spacer"},null,-1)),a(s,{onClick:e[16]||(e[16]=t=>S.value=!1)},{default:l(()=>[...e[36]||(e[36]=[i("取消",-1)])]),_:1}),a(s,{type:"primary",loading:R.value,onClick:Pe},{default:l(()=>[...e[37]||(e[37]=[i("确认封禁",-1)])]),_:1},8,["loading"])])]),default:l(()=>[a(je,{"label-width":"120px"},{default:l(()=>[a(T,{label:"类型"},{default:l(()=>[a(Ne,{modelValue:o.value.kind,"onUpdate:modelValue":e[10]||(e[10]=t=>o.value.kind=t)},{default:l(()=>[a(we,{label:"ip"},{default:l(()=>[...e[34]||(e[34]=[i("IP",-1)])]),_:1}),a(we,{label:"user"},{default:l(()=>[...e[35]||(e[35]=[i("用户",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),o.value.kind==="ip"?(c(),b(T,{key:0,label:"IP"},{default:l(()=>[a(M,{modelValue:o.value.ip,"onUpdate:modelValue":e[11]||(e[11]=t=>o.value.ip=t),placeholder:"例如 1.2.3.4"},null,8,["modelValue"])]),_:1})):(c(),b(T,{key:1,label:"用户ID"},{default:l(()=>[a(M,{modelValue:o.value.user_id,"onUpdate:modelValue":e[12]||(e[12]=t=>o.value.user_id=t),placeholder:"例如 123"},null,8,["modelValue"])]),_:1})),a(T,{label:"原因"},{default:l(()=>[a(M,{modelValue:o.value.reason,"onUpdate:modelValue":e[13]||(e[13]=t=>o.value.reason=t),type:"textarea",rows:3,placeholder:"请输入封禁原因"},null,8,["modelValue"])]),_:1}),a(T,{label:"永久封禁"},{default:l(()=>[a(Fe,{modelValue:o.value.permanent,"onUpdate:modelValue":e[14]||(e[14]=t=>o.value.permanent=t)},null,8,["modelValue"])]),_:1}),o.value.permanent?ue("",!0):(c(),b(T,{key:2,label:"持续(小时)"},{default:l(()=>[a(Me,{modelValue:o.value.duration_hours,"onUpdate:modelValue":e[15]||(e[15]=t=>o.value.duration_hours=t),min:1,max:8760},null,8,["modelValue"])]),_:1}))]),_:1})]),_:1},8,["modelValue"])])}}},Ft=qe(Pt,[["__scopeId","data-v-c89794eb"]]);export{Ft as default}; diff --git a/static/admin/assets/SettingsPage-BAa-Qu3q.css b/static/admin/assets/SettingsPage-BAa-Qu3q.css deleted file mode 100644 index a4f0e76..0000000 --- a/static/admin/assets/SettingsPage-BAa-Qu3q.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-fb202365]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-fb202365]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-fb202365]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-fb202365]{margin-top:10px;font-size:12px;color:var(--app-muted)}.help-alert[data-v-fb202365]{margin-bottom:12px} diff --git a/static/admin/assets/SettingsPage-D-iYz1zh.css b/static/admin/assets/SettingsPage-D-iYz1zh.css new file mode 100644 index 0000000..fa64dc3 --- /dev/null +++ b/static/admin/assets/SettingsPage-D-iYz1zh.css @@ -0,0 +1 @@ +.page-stack[data-v-1418d488]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-1418d488]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-1418d488]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-1418d488]{margin-top:10px;font-size:12px;color:var(--app-muted)}.help-alert[data-v-1418d488]{margin-bottom:12px} diff --git a/static/admin/assets/SettingsPage-DRqlQLxJ.js b/static/admin/assets/SettingsPage-DF5fL8gq.js similarity index 98% rename from static/admin/assets/SettingsPage-DRqlQLxJ.js rename to static/admin/assets/SettingsPage-DF5fL8gq.js index 415e6da..2f2ad25 100644 --- a/static/admin/assets/SettingsPage-DRqlQLxJ.js +++ b/static/admin/assets/SettingsPage-DF5fL8gq.js @@ -1 +1 @@ -import{a as v,_ as L}from"./index-C1f9ticl.js";import{a as u,E as O}from"./vendor-element-B5S5pUKo.js";import{r as p,o as Y,aj as m,ap as Z,n as N,q as C,t as b,L as r,E as o,I as S,F as Q,D as K}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function W(t){const{data:e}=await v.put("/admin/username",{new_username:t});return e}async function ee(t={}){const e=String(t.currentPassword||""),n=String(t.newPassword||""),{data:l}=await v.put("/admin/password",{current_password:e,new_password:n});return l}async function te(){const{data:t}=await v.post("/logout");return t}async function ae(){const{data:t}=await v.get("/admin/passkeys");return t}async function $(t={}){const{data:e}=await v.post("/admin/passkeys/register/options",t);return e}async function ne(t={}){const{data:e}=await v.post("/admin/passkeys/register/verify",t);return e}async function se(t){const{data:e}=await v.delete(`/admin/passkeys/${t}`);return e}async function re(t={}){const{data:e}=await v.post("/admin/passkeys/client-error",t);return e}function le(t){if(!t||typeof t!="object")throw new Error("Passkey参数无效");return t.publicKey&&typeof t.publicKey=="object"?t.publicKey:t}function D(t){const e=String(t||""),n="=".repeat((4-e.length%4)%4),l=(e+n).replace(/-/g,"+").replace(/_/g,"/"),y=window.atob(l),i=new Uint8Array(y.length);for(let w=0;w({...l,id:D(l.id)}))),n}function ie(t){if(!t)return null;const e=t.response||{},n={id:t.id,rawId:h(t.rawId),type:t.type,authenticatorAttachment:t.authenticatorAttachment||void 0,response:{}};return e.clientDataJSON&&(n.response.clientDataJSON=h(e.clientDataJSON)),e.attestationObject&&(n.response.attestationObject=h(e.attestationObject)),e.authenticatorData&&(n.response.authenticatorData=h(e.authenticatorData)),e.signature&&(n.response.signature=h(e.signature)),e.userHandle?n.response.userHandle=h(e.userHandle):n.response.userHandle=null,typeof e.getTransports=="function"&&(n.response.transports=e.getTransports()||[]),n}function ue(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}function de(){const t=String(window?.navigator?.userAgent||"");return/MiuiBrowser|XiaoMi\/MiuiBrowser/i.test(t)}function ce(t,e="Passkey操作"){const n=String(t?.name||"").trim(),l=String(t?.message||"").trim();return n==="NotAllowedError"?`${e}未完成(可能已取消、超时或设备未响应)`:n==="NotReadableError"?/credential manager/i.test(l)&&de()?"当前小米浏览器与系统凭据管理器兼容性较差,请改用系统 Chrome 或 Edge 后重试。":/credential manager/i.test(l)?"系统凭据管理器返回异常,请确认已设置系统锁屏并改用系统 Chrome/Edge 后重试。":l||`${e}失败(设备读取异常)`:n==="SecurityError"?"当前环境安全策略不满足 Passkey 要求,请确认使用 HTTPS 且证书有效。":l||`${e}失败`}async function pe(t){const e=oe(t),n=await navigator.credentials.create({publicKey:e});return ie(n)}const fe={class:"page-stack"},me=24e4,ye={__name:"SettingsPage",setup(t){const e=p(""),n=p(""),l=p(""),y=p(""),i=p(!1),w=p(!1),V=p(!1),A=p(""),k=p([]),g=p(null),_=p(0);function H(s){const a=String(s||"");return a.length<8?{ok:!1,message:"密码长度至少8位"}:a.length>128?{ok:!1,message:"密码长度不能超过128个字符"}:!/[a-zA-Z]/.test(a)||!/\d/.test(a)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}async function U(){try{await te()}catch{}finally{window.location.href="/yuyx"}}async function I(){const s=e.value.trim();if(!s){u.error("请输入新用户名");return}try{await O.confirm(`确定将管理员用户名修改为「${s}」吗?修改后需要重新登录。`,"修改用户名",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}i.value=!0;try{await W(s),u.success("用户名修改成功,请重新登录"),e.value="",setTimeout(U,1200)}catch{}finally{i.value=!1}}async function R(){const s=n.value,a=l.value,d=y.value;if(!s){u.error("请输入当前密码");return}if(!a){u.error("请输入新密码");return}const f=H(a);if(!f.ok){u.error(f.message);return}if(a!==d){u.error("两次输入的新密码不一致");return}try{await O.confirm("确定修改管理员密码吗?修改后需要重新登录。","修改密码",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}i.value=!0;try{await ee({currentPassword:s,newPassword:a}),u.success("密码修改成功,请重新登录"),n.value="",l.value="",y.value="",setTimeout(U,1200)}catch{}finally{i.value=!1}}async function T(){w.value=!0;try{const s=await ae();k.value=Array.isArray(s?.items)?s.items:[],k.value.length<3?await M():(g.value=null,_.value=0)}catch{k.value=[],g.value=null,_.value=0}finally{w.value=!1}}function j(){return!g.value||Date.now()-Number(_.value||0)>me?null:g.value}async function M(){try{const s=await $({});g.value=s,_.value=Date.now()}catch{g.value=null,_.value=0}}async function z(){if(!ue()){u.error("当前浏览器或环境不支持Passkey(需 HTTPS)");return}if(k.value.length>=3){u.error("最多可绑定3台设备");return}V.value=!0;try{let s=j();s||(s=await $({}));const a=await pe(s?.publicKey||{});await ne({credential:a,device_name:A.value.trim()}),g.value=null,_.value=0,A.value="",u.success("Passkey设备添加成功"),await T()}catch(s){try{await re({stage:"register",source:"admin-settings",name:s?.name||"",message:s?.message||"",code:s?.code||"",user_agent:navigator.userAgent||""})}catch{}g.value=null,_.value=0,await M();const d=s?.response?.data?.error||ce(s,"Passkey注册");u.error(d)}finally{V.value=!1}}async function J(s){try{await O.confirm(`确定删除设备「${s?.device_name||"未命名设备"}」吗?`,"删除Passkey设备",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await se(s.id),u.success("设备已删除"),await T()}catch(a){const d=a?.response?.data;u.error(d?.error||"删除失败")}}return Y(()=>{T()}),(s,a)=>{const d=m("el-input"),f=m("el-form-item"),E=m("el-form"),x=m("el-button"),B=m("el-card"),F=m("el-alert"),X=m("el-empty"),P=m("el-table-column"),q=m("el-table"),G=Z("loading");return C(),N("div",fe,[a[13]||(a[13]=b("div",{class:"app-page-title"},[b("h2",null,"设置"),b("span",{class:"app-muted"},"管理员账号设置")],-1)),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[6]||(a[6]=b("h3",{class:"section-title"},"修改管理员用户名",-1)),r(E,{"label-width":"120px"},{default:o(()=>[r(f,{label:"新用户名"},{default:o(()=>[r(d,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=c=>e.value=c),placeholder:"输入新用户名",disabled:i.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),r(x,{type:"primary",loading:i.value,onClick:I},{default:o(()=>[...a[5]||(a[5]=[S("保存用户名",-1)])]),_:1},8,["loading"])]),_:1}),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[8]||(a[8]=b("h3",{class:"section-title"},"修改管理员密码",-1)),r(E,{"label-width":"120px"},{default:o(()=>[r(f,{label:"当前密码"},{default:o(()=>[r(d,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=c=>n.value=c),type:"password","show-password":"",placeholder:"输入当前密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1}),r(f,{label:"新密码"},{default:o(()=>[r(d,{modelValue:l.value,"onUpdate:modelValue":a[2]||(a[2]=c=>l.value=c),type:"password","show-password":"",placeholder:"输入新密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1}),r(f,{label:"确认新密码"},{default:o(()=>[r(d,{modelValue:y.value,"onUpdate:modelValue":a[3]||(a[3]=c=>y.value=c),type:"password","show-password":"",placeholder:"再次输入新密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),r(x,{type:"primary",loading:i.value,onClick:R},{default:o(()=>[...a[7]||(a[7]=[S("保存密码",-1)])]),_:1},8,["loading"]),a[9]||(a[9]=b("div",{class:"help"},"建议使用更强密码(至少8位且包含字母与数字)。",-1))]),_:1}),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[12]||(a[12]=b("h3",{class:"section-title"},"Passkey设备",-1)),r(F,{type:"info",closable:!1,title:"最多可绑定3台设备,可用于管理员无密码登录。","show-icon":"",class:"help-alert"}),r(E,{inline:""},{default:o(()=>[r(f,{label:"设备备注"},{default:o(()=>[r(d,{modelValue:A.value,"onUpdate:modelValue":a[4]||(a[4]=c=>A.value=c),placeholder:"例如:值班iPhone / 办公Mac",maxlength:"40","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(f,null,{default:o(()=>[r(x,{type:"primary",loading:V.value,onClick:z},{default:o(()=>[...a[10]||(a[10]=[S("添加Passkey设备",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),Q((C(),N("div",null,[k.value.length===0?(C(),K(X,{key:0,description:"暂无Passkey设备"})):(C(),K(q,{key:1,data:k.value,size:"small",style:{width:"100%"}},{default:o(()=>[r(P,{prop:"device_name",label:"设备备注","min-width":"160"}),r(P,{prop:"credential_id_preview",label:"凭据ID","min-width":"180"}),r(P,{prop:"last_used_at",label:"最近使用","min-width":"140"}),r(P,{prop:"created_at",label:"创建时间","min-width":"140"}),r(P,{label:"操作",width:"100",fixed:"right"},{default:o(({row:c})=>[r(x,{type:"danger",text:"",onClick:we=>J(c)},{default:o(()=>[...a[11]||(a[11]=[S("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])),[[G,w.value]])]),_:1})])}}},he=L(ye,[["__scopeId","data-v-fb202365"]]);export{he as default}; +import{a as v,_ as L}from"./index-DOvMEmc8.js";import{a as u,E as O}from"./vendor-element-B5S5pUKo.js";import{r as p,o as Y,aj as m,ap as Z,n as N,q as C,t as b,L as r,E as o,I as S,F as Q,D as K}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function W(t){const{data:e}=await v.put("/admin/username",{new_username:t});return e}async function ee(t={}){const e=String(t.currentPassword||""),n=String(t.newPassword||""),{data:l}=await v.put("/admin/password",{current_password:e,new_password:n});return l}async function te(){const{data:t}=await v.post("/logout");return t}async function ae(){const{data:t}=await v.get("/admin/passkeys");return t}async function $(t={}){const{data:e}=await v.post("/admin/passkeys/register/options",t);return e}async function ne(t={}){const{data:e}=await v.post("/admin/passkeys/register/verify",t);return e}async function se(t){const{data:e}=await v.delete(`/admin/passkeys/${t}`);return e}async function re(t={}){const{data:e}=await v.post("/admin/passkeys/client-error",t);return e}function le(t){if(!t||typeof t!="object")throw new Error("Passkey参数无效");return t.publicKey&&typeof t.publicKey=="object"?t.publicKey:t}function D(t){const e=String(t||""),n="=".repeat((4-e.length%4)%4),l=(e+n).replace(/-/g,"+").replace(/_/g,"/"),y=window.atob(l),i=new Uint8Array(y.length);for(let w=0;w({...l,id:D(l.id)}))),n}function ie(t){if(!t)return null;const e=t.response||{},n={id:t.id,rawId:h(t.rawId),type:t.type,authenticatorAttachment:t.authenticatorAttachment||void 0,response:{}};return e.clientDataJSON&&(n.response.clientDataJSON=h(e.clientDataJSON)),e.attestationObject&&(n.response.attestationObject=h(e.attestationObject)),e.authenticatorData&&(n.response.authenticatorData=h(e.authenticatorData)),e.signature&&(n.response.signature=h(e.signature)),e.userHandle?n.response.userHandle=h(e.userHandle):n.response.userHandle=null,typeof e.getTransports=="function"&&(n.response.transports=e.getTransports()||[]),n}function ue(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}function de(){const t=String(window?.navigator?.userAgent||"");return/MiuiBrowser|XiaoMi\/MiuiBrowser/i.test(t)}function ce(t,e="Passkey操作"){const n=String(t?.name||"").trim(),l=String(t?.message||"").trim();return n==="NotAllowedError"?`${e}未完成(可能已取消、超时或设备未响应)`:n==="NotReadableError"?/credential manager/i.test(l)&&de()?"当前小米浏览器与系统凭据管理器兼容性较差,请改用系统 Chrome 或 Edge 后重试。":/credential manager/i.test(l)?"系统凭据管理器返回异常,请确认已设置系统锁屏并改用系统 Chrome/Edge 后重试。":l||`${e}失败(设备读取异常)`:n==="SecurityError"?"当前环境安全策略不满足 Passkey 要求,请确认使用 HTTPS 且证书有效。":l||`${e}失败`}async function pe(t){const e=oe(t),n=await navigator.credentials.create({publicKey:e});return ie(n)}const fe={class:"page-stack"},me=24e4,ye={__name:"SettingsPage",setup(t){const e=p(""),n=p(""),l=p(""),y=p(""),i=p(!1),w=p(!1),V=p(!1),A=p(""),k=p([]),g=p(null),_=p(0);function H(s){const a=String(s||"");return a.length<8?{ok:!1,message:"密码长度至少8位"}:a.length>128?{ok:!1,message:"密码长度不能超过128个字符"}:!/[a-zA-Z]/.test(a)||!/\d/.test(a)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}async function U(){try{await te()}catch{}finally{window.location.href="/yuyx"}}async function I(){const s=e.value.trim();if(!s){u.error("请输入新用户名");return}try{await O.confirm(`确定将管理员用户名修改为「${s}」吗?修改后需要重新登录。`,"修改用户名",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}i.value=!0;try{await W(s),u.success("用户名修改成功,请重新登录"),e.value="",setTimeout(U,1200)}catch{}finally{i.value=!1}}async function R(){const s=n.value,a=l.value,d=y.value;if(!s){u.error("请输入当前密码");return}if(!a){u.error("请输入新密码");return}const f=H(a);if(!f.ok){u.error(f.message);return}if(a!==d){u.error("两次输入的新密码不一致");return}try{await O.confirm("确定修改管理员密码吗?修改后需要重新登录。","修改密码",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}i.value=!0;try{await ee({currentPassword:s,newPassword:a}),u.success("密码修改成功,请重新登录"),n.value="",l.value="",y.value="",setTimeout(U,1200)}catch{}finally{i.value=!1}}async function T(){w.value=!0;try{const s=await ae();k.value=Array.isArray(s?.items)?s.items:[],k.value.length<3?await M():(g.value=null,_.value=0)}catch{k.value=[],g.value=null,_.value=0}finally{w.value=!1}}function j(){return!g.value||Date.now()-Number(_.value||0)>me?null:g.value}async function M(){try{const s=await $({});g.value=s,_.value=Date.now()}catch{g.value=null,_.value=0}}async function z(){if(!ue()){u.error("当前浏览器或环境不支持Passkey(需 HTTPS)");return}if(k.value.length>=3){u.error("最多可绑定3台设备");return}V.value=!0;try{let s=j();s||(s=await $({}));const a=await pe(s?.publicKey||{});await ne({credential:a,device_name:A.value.trim()}),g.value=null,_.value=0,A.value="",u.success("Passkey设备添加成功"),await T()}catch(s){try{await re({stage:"register",source:"admin-settings",name:s?.name||"",message:s?.message||"",code:s?.code||"",user_agent:navigator.userAgent||""})}catch{}g.value=null,_.value=0,await M();const d=s?.response?.data?.error||ce(s,"Passkey注册");u.error(d)}finally{V.value=!1}}async function J(s){try{await O.confirm(`确定删除设备「${s?.device_name||"未命名设备"}」吗?`,"删除Passkey设备",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await se(s.id),u.success("设备已删除"),await T()}catch(a){const d=a?.response?.data;u.error(d?.error||"删除失败")}}return Y(()=>{T()}),(s,a)=>{const d=m("el-input"),f=m("el-form-item"),E=m("el-form"),x=m("el-button"),B=m("el-card"),F=m("el-alert"),X=m("el-empty"),P=m("el-table-column"),q=m("el-table"),G=Z("loading");return C(),N("div",fe,[a[13]||(a[13]=b("div",{class:"app-page-title"},[b("h2",null,"设置"),b("span",{class:"app-muted"},"管理员账号设置")],-1)),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[6]||(a[6]=b("h3",{class:"section-title"},"修改管理员用户名",-1)),r(E,{"label-width":"120px"},{default:o(()=>[r(f,{label:"新用户名"},{default:o(()=>[r(d,{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=c=>e.value=c),placeholder:"输入新用户名",disabled:i.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),r(x,{type:"primary",loading:i.value,onClick:I},{default:o(()=>[...a[5]||(a[5]=[S("保存用户名",-1)])]),_:1},8,["loading"])]),_:1}),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[8]||(a[8]=b("h3",{class:"section-title"},"修改管理员密码",-1)),r(E,{"label-width":"120px"},{default:o(()=>[r(f,{label:"当前密码"},{default:o(()=>[r(d,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=c=>n.value=c),type:"password","show-password":"",placeholder:"输入当前密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1}),r(f,{label:"新密码"},{default:o(()=>[r(d,{modelValue:l.value,"onUpdate:modelValue":a[2]||(a[2]=c=>l.value=c),type:"password","show-password":"",placeholder:"输入新密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1}),r(f,{label:"确认新密码"},{default:o(()=>[r(d,{modelValue:y.value,"onUpdate:modelValue":a[3]||(a[3]=c=>y.value=c),type:"password","show-password":"",placeholder:"再次输入新密码",disabled:i.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),r(x,{type:"primary",loading:i.value,onClick:R},{default:o(()=>[...a[7]||(a[7]=[S("保存密码",-1)])]),_:1},8,["loading"]),a[9]||(a[9]=b("div",{class:"help"},"建议使用更强密码(至少8位且包含字母与数字)。",-1))]),_:1}),r(B,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[a[12]||(a[12]=b("h3",{class:"section-title"},"Passkey设备",-1)),r(F,{type:"info",closable:!1,title:"最多可绑定3台设备,可用于管理员无密码登录。","show-icon":"",class:"help-alert"}),r(E,{inline:""},{default:o(()=>[r(f,{label:"设备备注"},{default:o(()=>[r(d,{modelValue:A.value,"onUpdate:modelValue":a[4]||(a[4]=c=>A.value=c),placeholder:"例如:值班iPhone / 办公Mac",maxlength:"40","show-word-limit":""},null,8,["modelValue"])]),_:1}),r(f,null,{default:o(()=>[r(x,{type:"primary",loading:V.value,onClick:z},{default:o(()=>[...a[10]||(a[10]=[S("添加Passkey设备",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),Q((C(),N("div",null,[k.value.length===0?(C(),K(X,{key:0,description:"暂无Passkey设备"})):(C(),K(q,{key:1,data:k.value,size:"small",style:{width:"100%"}},{default:o(()=>[r(P,{prop:"device_name",label:"设备备注","min-width":"160"}),r(P,{prop:"credential_id_preview",label:"凭据ID","min-width":"180"}),r(P,{prop:"last_used_at",label:"最近使用","min-width":"140"}),r(P,{prop:"created_at",label:"创建时间","min-width":"140"}),r(P,{label:"操作",width:"100",fixed:"right"},{default:o(({row:c})=>[r(x,{type:"danger",text:"",onClick:we=>J(c)},{default:o(()=>[...a[11]||(a[11]=[S("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])),[[G,w.value]])]),_:1})])}}},he=L(ye,[["__scopeId","data-v-1418d488"]]);export{he as default}; diff --git a/static/admin/assets/SystemPage-BhhEz4Qz.css b/static/admin/assets/SystemPage-BhhEz4Qz.css deleted file mode 100644 index 041cecc..0000000 --- a/static/admin/assets/SystemPage-BhhEz4Qz.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-ca313705]{display:flex;flex-direction:column;gap:14px;min-width:0}.config-grid[data-v-ca313705]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.card[data-v-ca313705]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-card[data-v-ca313705]{min-width:0}.section-title[data-v-ca313705]{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.section-sub[data-v-ca313705]{margin-top:6px;margin-bottom:10px;font-size:12px}.section-head[data-v-ca313705]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.status-inline[data-v-ca313705]{font-size:12px;display:inline-flex;align-items:center;gap:6px}.status-chip[data-v-ca313705]{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid transparent}.status-chip.is-checking[data-v-ca313705]{color:#1d4ed8;background:#dbeafe;border-color:#93c5fd}.status-chip.is-online[data-v-ca313705]{color:#065f46;background:#d1fae5;border-color:#6ee7b7}.status-chip.is-offline[data-v-ca313705]{color:#92400e;background:#fef3c7;border-color:#fcd34d}.status-chip.is-error[data-v-ca313705]{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.status-chip.is-unknown[data-v-ca313705]{color:#374151;background:#f3f4f6;border-color:#d1d5db}.status-dots[data-v-ca313705]{display:inline-flex;align-items:center;gap:3px;margin-left:3px}.status-dots i[data-v-ca313705]{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.25;animation:dotPulse-ca313705 1.2s infinite ease-in-out}.status-dots i[data-v-ca313705]:nth-child(2){animation-delay:.2s}.status-dots i[data-v-ca313705]:nth-child(3){animation-delay:.4s}@keyframes dotPulse-ca313705{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-1px)}}.kdocs-form[data-v-ca313705]{margin-top:6px}.kdocs-inline[data-v-ca313705]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}.kdocs-range[data-v-ca313705]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kdocs-qr[data-v-ca313705]{display:flex;flex-direction:column;align-items:center;gap:12px}.kdocs-qr img[data-v-ca313705]{width:260px;max-width:100%;border:1px solid var(--app-border);border-radius:8px;padding:8px;background:#fff}.help[data-v-ca313705]{margin-top:6px;font-size:12px;color:var(--app-muted)}.row-actions[data-v-ca313705]{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:1200px){.config-grid[data-v-ca313705]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.config-grid[data-v-ca313705],.kdocs-inline[data-v-ca313705]{grid-template-columns:1fr}.kdocs-range[data-v-ca313705]{align-items:stretch}} diff --git a/static/admin/assets/SystemPage-CTs6qr36.css b/static/admin/assets/SystemPage-CTs6qr36.css new file mode 100644 index 0000000..e07bf65 --- /dev/null +++ b/static/admin/assets/SystemPage-CTs6qr36.css @@ -0,0 +1 @@ +.page-stack[data-v-3820d834]{display:flex;flex-direction:column;gap:14px;min-width:0}.config-grid[data-v-3820d834]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.card[data-v-3820d834]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-card[data-v-3820d834]{min-width:0}.section-title[data-v-3820d834]{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.section-sub[data-v-3820d834]{margin-top:6px;margin-bottom:10px;font-size:12px}.section-head[data-v-3820d834]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.status-inline[data-v-3820d834]{font-size:12px;display:inline-flex;align-items:center;gap:6px}.status-chip[data-v-3820d834]{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid transparent}.status-chip.is-checking[data-v-3820d834]{color:#1d4ed8;background:#dbeafe;border-color:#93c5fd}.status-chip.is-online[data-v-3820d834]{color:#065f46;background:#d1fae5;border-color:#6ee7b7}.status-chip.is-offline[data-v-3820d834]{color:#92400e;background:#fef3c7;border-color:#fcd34d}.status-chip.is-error[data-v-3820d834]{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.status-chip.is-unknown[data-v-3820d834]{color:#374151;background:#f3f4f6;border-color:#d1d5db}.status-dots[data-v-3820d834]{display:inline-flex;align-items:center;gap:3px;margin-left:3px}.status-dots i[data-v-3820d834]{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.25;animation:dotPulse-3820d834 1.2s infinite ease-in-out}.status-dots i[data-v-3820d834]:nth-child(2){animation-delay:.2s}.status-dots i[data-v-3820d834]:nth-child(3){animation-delay:.4s}@keyframes dotPulse-3820d834{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-1px)}}.kdocs-form[data-v-3820d834]{margin-top:6px}.kdocs-inline[data-v-3820d834]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}.kdocs-range[data-v-3820d834]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kdocs-qr[data-v-3820d834]{display:flex;flex-direction:column;align-items:center;gap:12px}.kdocs-qr img[data-v-3820d834]{width:260px;max-width:100%;border:1px solid var(--app-border);border-radius:8px;padding:8px;background:#fff}.help[data-v-3820d834]{margin-top:6px;font-size:12px;color:var(--app-muted)}.row-actions[data-v-3820d834]{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:1200px){.config-grid[data-v-3820d834]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1201px){.social-card[data-v-3820d834]{grid-column:span 3}}@media(max-width:768px){.config-grid[data-v-3820d834],.kdocs-inline[data-v-3820d834]{grid-template-columns:1fr}.kdocs-range[data-v-3820d834]{align-items:stretch}} diff --git a/static/admin/assets/SystemPage-D3eBPCNe.js b/static/admin/assets/SystemPage-D3eBPCNe.js deleted file mode 100644 index d1d1c0e..0000000 --- a/static/admin/assets/SystemPage-D3eBPCNe.js +++ /dev/null @@ -1,6 +0,0 @@ -import{f as Ae,u as se}from"./system-ZDPnxnIu.js";import{a as ne,_ as Ie,g as ve,h as Ne,i as Ke,u as ue,j as ce,p as De}from"./index-C1f9ticl.js";import{E as pe,a as m}from"./vendor-element-B5S5pUKo.js";import{r as u,c as ee,l as Ee,R as Le,o as Qe,aj as v,ap as Te,F as qe,q as U,n as P,t as o,L as l,E as s,I as c,G as le,y as Be,J as ae}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function Me(){const{data:g}=await ne.get("/proxy/config");return g}async function he(g){const{data:p}=await ne.post("/proxy/config",g);return p}async function $e(g){const{data:p}=await ne.post("/proxy/test",g);return p}const Re={class:"page-stack"},Fe={class:"config-grid"},ze={class:"row-actions"},He={class:"row-actions"},je={class:"row-actions"},Ge={class:"section-head"},Oe={class:"status-inline app-muted"},Je={key:0,class:"status-dots","aria-hidden":"true"},We={class:"kdocs-inline"},Xe={class:"kdocs-range"},Ye={class:"row-actions"},Ze={key:0,class:"help"},el={key:1,class:"help"},ll={class:"kdocs-qr"},al=["src"],tl={__name:"SystemPage",setup(g){const p=u(!1),A=u(2),I=u(1),N=u(3),K=u(120),S=u(!1),f=u(""),D=u(3),E=u(!1),L=u(10),Q=u(7),T=u(!1),q=u(""),B=u(""),M=u(""),h=u(0),$=u("A"),R=u("D"),F=u(0),z=u(0),H=u(!1),j=u(""),de=ve({maxAgeMs:600*1e3}),r=u(de||{}),V=u(!1),x=u(""),te=u(!1),k=u(!1),b=u(!1),w=u(!1),C=u(!de),G=u("");let O=null;const ie=ee(()=>k.value||b.value||w.value),oe=ee(()=>C.value||k.value||te.value),J=ee(()=>{if(oe.value)return"检测中";const t=r.value||{};return t?.logged_in===!0||t?.last_login_ok===!0?"已登录":t?.logged_in===!1||t?.last_login_ok===!1||t?.login_required===!0?"未登录":t?.last_error?"异常":"未知"}),fe=ee(()=>oe.value?"is-checking":J.value==="已登录"?"is-online":J.value==="未登录"?"is-offline":J.value==="异常"?"is-error":"is-unknown");function i(t){if(!t){G.value="";return}const e=new Date().toLocaleTimeString("zh-CN",{hour12:!1});G.value=`${t} (${e})`}async function _e(){p.value=!0;try{const[e,d]=await Promise.all([Ae(),Me()]);A.value=e.max_concurrent_global??2,I.value=e.max_concurrent_per_account??1,N.value=e.max_screenshot_concurrent??3,K.value=e.db_slow_query_ms??120,E.value=(e.auto_approve_enabled??0)===1,L.value=e.auto_approve_hourly_limit??10,Q.value=e.auto_approve_vip_days??7,S.value=(d.proxy_enabled??0)===1,f.value=d.proxy_api_url||"",D.value=d.proxy_expire_minutes??3,T.value=(e.kdocs_enabled??0)===1,q.value=e.kdocs_doc_url||"",B.value=e.kdocs_default_unit||"",M.value=e.kdocs_sheet_name||"",h.value=e.kdocs_sheet_index??0,$.value=(e.kdocs_unit_column||"A").toUpperCase(),R.value=(e.kdocs_image_column||"D").toUpperCase(),F.value=e.kdocs_row_start??0,z.value=e.kdocs_row_end??0,H.value=(e.kdocs_admin_notify_enabled??0)===1,j.value=e.kdocs_admin_notify_email||""}catch{}finally{p.value=!1}const t=ve({maxAgeMs:600*1e3});t&&(r.value=t,C.value=!1),ye()}async function ye(){if(!(C.value||k.value)){C.value=!0;try{const t=await De({force:!1,maxAgeMs:6e4,silent:!0,live:0});r.value=t||{}}catch{}finally{C.value=!1}}}async function ge(){const t={max_concurrent_global:Number(A.value),max_concurrent_per_account:Number(I.value),max_screenshot_concurrent:Number(N.value),db_slow_query_ms:Number(K.value)};try{await pe.confirm(`确定更新并发配置吗? - -全局并发数: ${t.max_concurrent_global} -单账号并发数: ${t.max_concurrent_per_account} -截图并发数: ${t.max_screenshot_concurrent} -慢 SQL 阈值: ${t.db_slow_query_ms}ms`,"保存并发配置",{confirmButtonText:"保存",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await se(t);m.success(e?.message||"并发配置已更新")}catch{}}async function Ve(){if(S.value&&!f.value.trim()){m.error("启用代理时,API地址不能为空");return}const t={proxy_enabled:S.value?1:0,proxy_api_url:f.value.trim(),proxy_expire_minutes:Number(D.value)||3};try{const e=await he(t);m.success(e?.message||"代理配置已更新")}catch{}}async function xe(){if(!f.value.trim()){m.error("请先输入代理API地址");return}try{const t=await $e({api_url:f.value.trim()});await pe.alert(t?.message||"测试完成","代理测试",{confirmButtonText:"知道了"})}catch{}}async function ke(){const t=Number(L.value),e=Number(Q.value);if(!Number.isFinite(t)||t<1){m.error("每小时注册限制必须大于0");return}if(!Number.isFinite(e)||e<0){m.error("VIP天数不能为负数");return}const d={auto_approve_enabled:E.value?1:0,auto_approve_hourly_limit:t,auto_approve_vip_days:e};try{const n=await se(d);m.success(n?.message||"注册设置已保存")}catch{}}async function be(){const t={kdocs_enabled:T.value?1:0,kdocs_doc_url:q.value.trim(),kdocs_default_unit:B.value.trim(),kdocs_sheet_name:M.value.trim(),kdocs_sheet_index:Number(h.value)||0,kdocs_unit_column:$.value.trim().toUpperCase(),kdocs_image_column:R.value.trim().toUpperCase(),kdocs_row_start:Number(F.value)||0,kdocs_row_end:Number(z.value)||0,kdocs_admin_notify_enabled:H.value?1:0,kdocs_admin_notify_email:j.value.trim()};try{const e=await se(t);m.success(e?.message||"表格配置已更新")}catch{}}async function re(){if(!k.value){k.value=!0,i("正在刷新状态");try{const t=await ce({live:1});r.value=t||{},ue(r.value),i("状态已刷新")}catch{i("刷新失败,请稍后重试")}finally{k.value=!1}}}async function me(){try{const t=await ce({live:1});r.value=t||{},ue(r.value),(t?.logged_in===!0||t?.last_login_ok===!0)&&(m.success("扫码成功,已登录"),i("扫码成功,已登录"),V.value=!1,W())}catch{}}function we(){W(),te.value=!0,i("扫码检测中"),me(),O=setInterval(me,2e3)}function W(){O&&(clearInterval(O),O=null),te.value=!1}async function Se(){if(!b.value){b.value=!0,i("正在获取二维码");try{x.value="";const t=await Ne();if(x.value=t?.qr_image||"",!x.value){if(t?.logged_in){m.success("当前已登录,无需扫码"),i("当前已登录,无需扫码"),await re();return}m.warning("未获取到二维码"),i("未获取到二维码");return}i("二维码已获取"),V.value=!0}catch{i("获取二维码失败")}finally{b.value=!1}}}async function Ce(){if(!w.value){w.value=!0,i("正在清除登录态");try{await Ke(),V.value=!1,x.value="",r.value=ue({...r.value||{},logged_in:!1,last_login_ok:!1,login_required:!0}),m.success("登录态已清除"),i("登录态已清除"),await re()}catch{i("清除登录态失败")}finally{w.value=!1}}}return Ee(V,t=>{t?we():W()}),Le(()=>{W()}),Qe(_e),(t,e)=>{const d=v("el-input-number"),n=v("el-form-item"),X=v("el-form"),_=v("el-button"),Y=v("el-card"),Z=v("el-switch"),y=v("el-input"),Ue=v("el-dialog"),Pe=Te("loading");return qe((U(),P("div",Re,[e[50]||(e[50]=o("div",{class:"app-page-title"},[o("h2",null,"系统配置")],-1)),o("div",Fe,[l(Y,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:s(()=>[e[27]||(e[27]=o("h3",{class:"section-title"},"并发配置",-1)),e[28]||(e[28]=o("div",{class:"section-sub app-muted"},"控制任务与截图的并发资源上限",-1)),l(X,{"label-width":"122px"},{default:s(()=>[l(n,{label:"全局最大并发数"},{default:s(()=>[l(d,{modelValue:A.value,"onUpdate:modelValue":e[0]||(e[0]=a=>A.value=a),min:1,max:200},null,8,["modelValue"]),e[22]||(e[22]=o("div",{class:"help"},"同时最多运行账号数(浏览任务 API 执行,资源占用较低)。",-1))]),_:1}),l(n,{label:"单账号最大并发数"},{default:s(()=>[l(d,{modelValue:I.value,"onUpdate:modelValue":e[1]||(e[1]=a=>I.value=a),min:1,max:50},null,8,["modelValue"]),e[23]||(e[23]=o("div",{class:"help"},"建议保持为 1,避免同账号任务抢占。",-1))]),_:1}),l(n,{label:"截图最大并发数"},{default:s(()=>[l(d,{modelValue:N.value,"onUpdate:modelValue":e[2]||(e[2]=a=>N.value=a),min:1,max:50},null,8,["modelValue"]),e[24]||(e[24]=o("div",{class:"help"},"截图资源占用较低,可按机器性能逐步提高。",-1))]),_:1}),l(n,{label:"慢 SQL 阈值(ms)"},{default:s(()=>[l(d,{modelValue:K.value,"onUpdate:modelValue":e[3]||(e[3]=a=>K.value=a),min:0,max:6e4},null,8,["modelValue"]),e[25]||(e[25]=o("div",{class:"help"},"低于该阈值不会计入慢 SQL(0 表示关闭慢 SQL 采样)。",-1))]),_:1})]),_:1}),o("div",ze,[l(_,{type:"primary",onClick:ge},{default:s(()=>[...e[26]||(e[26]=[c("保存并发配置",-1)])]),_:1})])]),_:1}),l(Y,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:s(()=>[e[33]||(e[33]=o("h3",{class:"section-title"},"代理设置",-1)),e[34]||(e[34]=o("div",{class:"section-sub app-muted"},"用于任务出网代理与连接有效期管理",-1)),l(X,{"label-width":"122px"},{default:s(()=>[l(n,{label:"启用 IP 代理"},{default:s(()=>[l(Z,{modelValue:S.value,"onUpdate:modelValue":e[4]||(e[4]=a=>S.value=a)},null,8,["modelValue"]),e[29]||(e[29]=o("div",{class:"help"},"开启后,浏览任务通过代理访问,失败自动重试。",-1))]),_:1}),l(n,{label:"代理 API 地址"},{default:s(()=>[l(y,{modelValue:f.value,"onUpdate:modelValue":e[5]||(e[5]=a=>f.value=a),placeholder:"http://api.xxx/Tools/IP.ashx?..."},null,8,["modelValue"]),e[30]||(e[30]=o("div",{class:"help"},"API 应返回 `IP:PORT`(例:123.45.67.89:8888)。",-1))]),_:1}),l(n,{label:"有效期(分钟)"},{default:s(()=>[l(d,{modelValue:D.value,"onUpdate:modelValue":e[6]||(e[6]=a=>D.value=a),min:1,max:60},null,8,["modelValue"])]),_:1})]),_:1}),o("div",He,[l(_,{type:"primary",onClick:Ve},{default:s(()=>[...e[31]||(e[31]=[c("保存代理配置",-1)])]),_:1}),l(_,{onClick:xe},{default:s(()=>[...e[32]||(e[32]=[c("测试代理",-1)])]),_:1})])]),_:1}),l(Y,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:s(()=>[e[37]||(e[37]=o("h3",{class:"section-title"},"注册设置",-1)),e[38]||(e[38]=o("div",{class:"section-sub app-muted"},"控制注册节流与新用户赠送 VIP",-1)),l(X,{"label-width":"122px"},{default:s(()=>[l(n,{label:"注册赠送 VIP"},{default:s(()=>[l(Z,{modelValue:E.value,"onUpdate:modelValue":e[7]||(e[7]=a=>E.value=a)},null,8,["modelValue"]),e[35]||(e[35]=o("div",{class:"help"},"开启后,新用户注册成功自动赠送下方设定的 VIP 天数。",-1))]),_:1}),l(n,{label:"每小时注册限制"},{default:s(()=>[l(d,{modelValue:L.value,"onUpdate:modelValue":e[8]||(e[8]=a=>L.value=a),min:1,max:1e4},null,8,["modelValue"])]),_:1}),l(n,{label:"赠送 VIP 天数"},{default:s(()=>[l(d,{modelValue:Q.value,"onUpdate:modelValue":e[9]||(e[9]=a=>Q.value=a),min:0,max:999999},null,8,["modelValue"])]),_:1})]),_:1}),o("div",je,[l(_,{type:"primary",onClick:ke},{default:s(()=>[...e[36]||(e[36]=[c("保存注册设置",-1)])]),_:1})])]),_:1})]),l(Y,{shadow:"never","body-style":{padding:"16px"},class:"card kdocs-card"},{default:s(()=>[o("div",Ge,[e[41]||(e[41]=o("h3",{class:"section-title"},"金山文档上传",-1)),o("div",Oe,[e[40]||(e[40]=o("span",null,"登录状态:",-1)),o("span",{class:Be(["status-chip",fe.value])},[c(ae(J.value)+" ",1),oe.value?(U(),P("span",Je,[...e[39]||(e[39]=[o("i",null,null,-1),o("i",null,null,-1),o("i",null,null,-1)])])):le("",!0)],2),o("span",null,"· 待上传 "+ae(r.value.queue_size||0),1)])]),l(X,{"label-width":"118px",class:"kdocs-form"},{default:s(()=>[l(n,{label:"启用上传"},{default:s(()=>[l(Z,{modelValue:T.value,"onUpdate:modelValue":e[10]||(e[10]=a=>T.value=a)},null,8,["modelValue"]),e[42]||(e[42]=o("div",{class:"help"},"表格结构变化时可先关闭,避免错误上传。",-1))]),_:1}),l(n,{label:"文档链接"},{default:s(()=>[l(y,{modelValue:q.value,"onUpdate:modelValue":e[11]||(e[11]=a=>q.value=a),placeholder:"https://kdocs.cn/..."},null,8,["modelValue"])]),_:1}),l(n,{label:"默认县区"},{default:s(()=>[l(y,{modelValue:B.value,"onUpdate:modelValue":e[12]||(e[12]=a=>B.value=a),placeholder:"如:道县(用户可覆盖)"},null,8,["modelValue"])]),_:1}),l(n,{label:"Sheet 名称"},{default:s(()=>[l(y,{modelValue:M.value,"onUpdate:modelValue":e[13]||(e[13]=a=>M.value=a),placeholder:"留空使用第一个 Sheet"},null,8,["modelValue"])]),_:1}),l(n,{label:"Sheet 序号"},{default:s(()=>[l(d,{modelValue:h.value,"onUpdate:modelValue":e[14]||(e[14]=a=>h.value=a),min:0,max:50},null,8,["modelValue"]),e[43]||(e[43]=o("div",{class:"help"},"0 表示第一个 Sheet。",-1))]),_:1}),l(n,{label:"列配置"},{default:s(()=>[o("div",We,[l(y,{modelValue:$.value,"onUpdate:modelValue":e[15]||(e[15]=a=>$.value=a),placeholder:"县区列,如 A"},null,8,["modelValue"]),l(y,{modelValue:R.value,"onUpdate:modelValue":e[16]||(e[16]=a=>R.value=a),placeholder:"图片列,如 D"},null,8,["modelValue"])])]),_:1}),l(n,{label:"有效行范围"},{default:s(()=>[o("div",Xe,[l(d,{modelValue:F.value,"onUpdate:modelValue":e[17]||(e[17]=a=>F.value=a),min:0,max:1e4,placeholder:"起始行",style:{width:"140px"}},null,8,["modelValue"]),e[44]||(e[44]=o("span",{class:"app-muted"},"至",-1)),l(d,{modelValue:z.value,"onUpdate:modelValue":e[18]||(e[18]=a=>z.value=a),min:0,max:1e4,placeholder:"结束行",style:{width:"140px"}},null,8,["modelValue"])]),e[45]||(e[45]=o("div",{class:"help"},"用于限制上传区间(如 50-100),0 表示不限制。",-1))]),_:1}),l(n,{label:"管理员通知"},{default:s(()=>[l(Z,{modelValue:H.value,"onUpdate:modelValue":e[19]||(e[19]=a=>H.value=a)},null,8,["modelValue"])]),_:1}),l(n,{label:"通知邮箱"},{default:s(()=>[l(y,{modelValue:j.value,"onUpdate:modelValue":e[20]||(e[20]=a=>j.value=a),placeholder:"admin@example.com"},null,8,["modelValue"])]),_:1})]),_:1}),o("div",Ye,[l(_,{type:"primary",onClick:be},{default:s(()=>[...e[46]||(e[46]=[c("保存表格配置",-1)])]),_:1}),l(_,{type:"success",plain:"",loading:b.value,disabled:ie.value&&!b.value,onClick:Se},{default:s(()=>[...e[47]||(e[47]=[c(" 获取二维码 ",-1)])]),_:1},8,["loading","disabled"]),l(_,{type:"danger",plain:"",loading:w.value,disabled:ie.value&&!w.value,onClick:Ce},{default:s(()=>[...e[48]||(e[48]=[c(" 清除登录 ",-1)])]),_:1},8,["loading","disabled"])]),r.value.last_error?(U(),P("div",Ze,"最近错误:"+ae(r.value.last_error),1)):le("",!0),G.value?(U(),P("div",el,"操作提示:"+ae(G.value),1)):le("",!0)]),_:1}),l(Ue,{modelValue:V.value,"onUpdate:modelValue":e[21]||(e[21]=a=>V.value=a),title:"扫码登录",width:"min(420px, 92vw)"},{default:s(()=>[o("div",ll,[x.value?(U(),P("img",{key:0,src:`data:image/png;base64,${x.value}`,alt:"KDocs QR"},null,8,al)):le("",!0),e[49]||(e[49]=o("div",{class:"help"},"请使用管理员微信扫码登录。",-1))])]),_:1},8,["modelValue"])])),[[Pe,p.value]])}}},rl=Ie(tl,[["__scopeId","data-v-ca313705"]]);export{rl as default}; diff --git a/static/admin/assets/SystemPage-DrM9-RI5.js b/static/admin/assets/SystemPage-DrM9-RI5.js new file mode 100644 index 0000000..ded5a8d --- /dev/null +++ b/static/admin/assets/SystemPage-DrM9-RI5.js @@ -0,0 +1,6 @@ +import{f as Fe,a as He,u as me,b as Oe,t as je}from"./system-CYbWdReq.js";import{a as ge,_ as Ge,g as Se,h as Ye,i as Je,u as fe,j as Pe,p as We}from"./index-DOvMEmc8.js";import{E as _e,a as d}from"./vendor-element-B5S5pUKo.js";import{r as s,c as de,l as Xe,R as Ze,o as el,aj as m,ap as ll,F as al,q as y,n as b,t as n,L as l,E as t,I as v,K as ol,a3 as tl,J as A,G as T,y as sl}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function nl(){const{data:k}=await ge.get("/proxy/config");return k}async function ul(k){const{data:_}=await ge.post("/proxy/config",k);return _}async function il(k){const{data:_}=await ge.post("/proxy/test",k);return _}const dl={class:"page-stack"},rl={class:"config-grid"},cl={class:"row-actions"},vl={class:"row-actions"},pl={class:"row-actions"},ml={key:0,class:"help"},fl={class:"row-actions"},_l={class:"section-head"},gl={class:"status-inline app-muted"},yl={key:0,class:"status-dots","aria-hidden":"true"},bl={class:"kdocs-inline"},kl={class:"kdocs-range"},Vl={class:"row-actions"},xl={key:0,class:"help"},wl={key:1,class:"help"},Sl={class:"kdocs-qr"},Pl=["src"],Cl={__name:"SystemPage",setup(k){const _=s(!1),B=s(2),q=s(1),M=s(3),z=s(120),L=s(!1),g=s(""),R=s(3),$=s(!1),F=s(10),H=s(7),I=s(!1),h=s("https://www.spacezs.cn/connect.php"),K=s(""),V=s(""),O=s(""),j=s(!1),x=s(["wx"]),re=s(!1),ce=s(!1),Ce=[{label:"QQ",value:"qq"},{label:"微信",value:"wx"},{label:"支付宝",value:"alipay"}],G=s(!1),Y=s(""),J=s(""),W=s(""),X=s(0),Z=s("A"),ee=s("D"),le=s(0),ae=s(0),oe=s(!1),te=s(""),ye=Se({maxAgeMs:600*1e3}),c=s(ye||{}),w=s(!1),S=s(""),ve=s(!1),P=s(!1),C=s(!1),U=s(!1),N=s(!ye),se=s("");let ne=null;const be=de(()=>P.value||C.value||U.value),pe=de(()=>N.value||P.value||ve.value),ue=de(()=>{if(pe.value)return"检测中";const o=c.value||{};return o?.logged_in===!0||o?.last_login_ok===!0?"已登录":o?.logged_in===!1||o?.last_login_ok===!1||o?.login_required===!0?"未登录":o?.last_error?"异常":"未知"}),Ue=de(()=>pe.value?"is-checking":ue.value==="已登录"?"is-online":ue.value==="未登录"?"is-offline":ue.value==="异常"?"is-error":"is-unknown");function r(o){if(!o){se.value="";return}const e=new Date().toLocaleTimeString("zh-CN",{hour12:!1});se.value=`${o} (${e})`}async function Ae(){_.value=!0;try{const[e,i,u]=await Promise.all([Fe(),nl(),He()]);B.value=e.max_concurrent_global??2,q.value=e.max_concurrent_per_account??1,M.value=e.max_screenshot_concurrent??3,z.value=e.db_slow_query_ms??120,$.value=(e.auto_approve_enabled??0)===1,F.value=e.auto_approve_hourly_limit??10,H.value=e.auto_approve_vip_days??7,L.value=(i.proxy_enabled??0)===1,g.value=i.proxy_api_url||"",R.value=i.proxy_expire_minutes??3,G.value=(e.kdocs_enabled??0)===1,Y.value=e.kdocs_doc_url||"",J.value=e.kdocs_default_unit||"",W.value=e.kdocs_sheet_name||"",X.value=e.kdocs_sheet_index??0,Z.value=(e.kdocs_unit_column||"A").toUpperCase(),ee.value=(e.kdocs_image_column||"D").toUpperCase(),le.value=e.kdocs_row_start??0,ae.value=e.kdocs_row_end??0,oe.value=(e.kdocs_admin_notify_enabled??0)===1,te.value=e.kdocs_admin_notify_email||"",I.value=(u.social_login_enabled??0)===1,h.value=u.social_login_endpoint||"https://www.spacezs.cn/connect.php",K.value=u.social_login_appid||"",V.value="",O.value=u.social_login_appkey_masked||"",j.value=!!u.social_login_appkey_configured,x.value=Array.isArray(u.social_login_providers)&&u.social_login_providers.length?u.social_login_providers:["wx"]}catch{}finally{_.value=!1}const o=Se({maxAgeMs:600*1e3});o&&(c.value=o,N.value=!1),Le()}async function Le(){if(!(N.value||P.value)){N.value=!0;try{const o=await We({force:!1,maxAgeMs:6e4,silent:!0,live:0});c.value=o||{}}catch{}finally{N.value=!1}}}async function Ie(){const o={max_concurrent_global:Number(B.value),max_concurrent_per_account:Number(q.value),max_screenshot_concurrent:Number(M.value),db_slow_query_ms:Number(z.value)};try{await _e.confirm(`确定更新并发配置吗? + +全局并发数: ${o.max_concurrent_global} +单账号并发数: ${o.max_concurrent_per_account} +截图并发数: ${o.max_screenshot_concurrent} +慢 SQL 阈值: ${o.db_slow_query_ms}ms`,"保存并发配置",{confirmButtonText:"保存",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await me(o);d.success(e?.message||"并发配置已更新")}catch{}}async function he(){if(L.value&&!g.value.trim()){d.error("启用代理时,API地址不能为空");return}const o={proxy_enabled:L.value?1:0,proxy_api_url:g.value.trim(),proxy_expire_minutes:Number(R.value)||3};try{const e=await ul(o);d.success(e?.message||"代理配置已更新")}catch{}}async function Ke(){if(!g.value.trim()){d.error("请先输入代理API地址");return}try{const o=await il({api_url:g.value.trim()});await _e.alert(o?.message||"测试完成","代理测试",{confirmButtonText:"知道了"})}catch{}}async function Ne(){const o=Number(F.value),e=Number(H.value);if(!Number.isFinite(o)||o<1){d.error("每小时注册限制必须大于0");return}if(!Number.isFinite(e)||e<0){d.error("VIP天数不能为负数");return}const i={auto_approve_enabled:$.value?1:0,auto_approve_hourly_limit:o,auto_approve_vip_days:e};try{const u=await me(i);d.success(u?.message||"注册设置已保存")}catch{}}function ke(){return{social_login_enabled:I.value?1:0,social_login_endpoint:h.value.trim()||"https://www.spacezs.cn/connect.php",social_login_appid:K.value.trim(),social_login_appkey:V.value.trim(),social_login_providers:x.value}}function Ve(){return I.value?x.value.length?h.value.trim()?K.value.trim()?!V.value.trim()&&!j.value?(d.error("请输入 APPKEY"),!1):!0:(d.error("请输入 APPID"),!1):(d.error("请输入聚合接口地址"),!1):(d.error("请选择至少一种登录方式"),!1):!0}async function De(){if(Ve()){re.value=!0;try{const o=await Oe(ke()),e=o?.config||{};V.value="",O.value=e.social_login_appkey_masked||O.value,j.value=!!e.social_login_appkey_configured,d.success(o?.message||"聚合登录配置已保存")}catch{}finally{re.value=!1}}}async function Ee(){if(Ve()){ce.value=!0;try{const o=new URL(window.location.href);o.pathname="/login",o.search="",o.hash="";const e=x.value[0]||"wx",i=await je({...ke(),provider:e,redirect_uri:o.toString()});await _e.alert(i?.success?"连接正常":"测试完成","聚合登录测试",{confirmButtonText:"知道了"})}catch{}finally{ce.value=!1}}}async function Qe(){const o={kdocs_enabled:G.value?1:0,kdocs_doc_url:Y.value.trim(),kdocs_default_unit:J.value.trim(),kdocs_sheet_name:W.value.trim(),kdocs_sheet_index:Number(X.value)||0,kdocs_unit_column:Z.value.trim().toUpperCase(),kdocs_image_column:ee.value.trim().toUpperCase(),kdocs_row_start:Number(le.value)||0,kdocs_row_end:Number(ae.value)||0,kdocs_admin_notify_enabled:oe.value?1:0,kdocs_admin_notify_email:te.value.trim()};try{const e=await me(o);d.success(e?.message||"表格配置已更新")}catch{}}async function xe(){if(!P.value){P.value=!0,r("正在刷新状态");try{const o=await Pe({live:1});c.value=o||{},fe(c.value),r("状态已刷新")}catch{r("刷新失败,请稍后重试")}finally{P.value=!1}}}async function we(){try{const o=await Pe({live:1});c.value=o||{},fe(c.value),(o?.logged_in===!0||o?.last_login_ok===!0)&&(d.success("扫码成功,已登录"),r("扫码成功,已登录"),w.value=!1,ie())}catch{}}function Te(){ie(),ve.value=!0,r("扫码检测中"),we(),ne=setInterval(we,2e3)}function ie(){ne&&(clearInterval(ne),ne=null),ve.value=!1}async function Be(){if(!C.value){C.value=!0,r("正在获取二维码");try{S.value="";const o=await Ye();if(S.value=o?.qr_image||"",!S.value){if(o?.logged_in){d.success("当前已登录,无需扫码"),r("当前已登录,无需扫码"),await xe();return}d.warning("未获取到二维码"),r("未获取到二维码");return}r("二维码已获取"),w.value=!0}catch{r("获取二维码失败")}finally{C.value=!1}}}async function qe(){if(!U.value){U.value=!0,r("正在清除登录态");try{await Je(),w.value=!1,S.value="",c.value=fe({...c.value||{},logged_in:!1,last_login_ok:!1,login_required:!0}),d.success("登录态已清除"),r("登录态已清除"),await xe()}catch{r("清除登录态失败")}finally{U.value=!1}}}return Xe(w,o=>{o?Te():ie()}),Ze(()=>{ie()}),el(Ae),(o,e)=>{const i=m("el-input-number"),u=m("el-form-item"),D=m("el-form"),f=m("el-button"),E=m("el-card"),Q=m("el-switch"),p=m("el-input"),Me=m("el-checkbox"),ze=m("el-checkbox-group"),Re=m("el-dialog"),$e=ll("loading");return al((y(),b("div",dl,[e[59]||(e[59]=n("div",{class:"app-page-title"},[n("h2",null,"系统配置")],-1)),n("div",rl,[l(E,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:t(()=>[e[32]||(e[32]=n("h3",{class:"section-title"},"并发配置",-1)),e[33]||(e[33]=n("div",{class:"section-sub app-muted"},"控制任务与截图的并发资源上限",-1)),l(D,{"label-width":"122px"},{default:t(()=>[l(u,{label:"全局最大并发数"},{default:t(()=>[l(i,{modelValue:B.value,"onUpdate:modelValue":e[0]||(e[0]=a=>B.value=a),min:1,max:200},null,8,["modelValue"]),e[27]||(e[27]=n("div",{class:"help"},"同时最多运行账号数(浏览任务 API 执行,资源占用较低)。",-1))]),_:1}),l(u,{label:"单账号最大并发数"},{default:t(()=>[l(i,{modelValue:q.value,"onUpdate:modelValue":e[1]||(e[1]=a=>q.value=a),min:1,max:50},null,8,["modelValue"]),e[28]||(e[28]=n("div",{class:"help"},"建议保持为 1,避免同账号任务抢占。",-1))]),_:1}),l(u,{label:"截图最大并发数"},{default:t(()=>[l(i,{modelValue:M.value,"onUpdate:modelValue":e[2]||(e[2]=a=>M.value=a),min:1,max:50},null,8,["modelValue"]),e[29]||(e[29]=n("div",{class:"help"},"截图资源占用较低,可按机器性能逐步提高。",-1))]),_:1}),l(u,{label:"慢 SQL 阈值(ms)"},{default:t(()=>[l(i,{modelValue:z.value,"onUpdate:modelValue":e[3]||(e[3]=a=>z.value=a),min:0,max:6e4},null,8,["modelValue"]),e[30]||(e[30]=n("div",{class:"help"},"低于该阈值不会计入慢 SQL(0 表示关闭慢 SQL 采样)。",-1))]),_:1})]),_:1}),n("div",cl,[l(f,{type:"primary",onClick:Ie},{default:t(()=>[...e[31]||(e[31]=[v("保存并发配置",-1)])]),_:1})])]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:t(()=>[e[38]||(e[38]=n("h3",{class:"section-title"},"代理设置",-1)),e[39]||(e[39]=n("div",{class:"section-sub app-muted"},"用于任务出网代理与连接有效期管理",-1)),l(D,{"label-width":"122px"},{default:t(()=>[l(u,{label:"启用 IP 代理"},{default:t(()=>[l(Q,{modelValue:L.value,"onUpdate:modelValue":e[4]||(e[4]=a=>L.value=a)},null,8,["modelValue"]),e[34]||(e[34]=n("div",{class:"help"},"开启后,浏览任务通过代理访问,失败自动重试。",-1))]),_:1}),l(u,{label:"代理 API 地址"},{default:t(()=>[l(p,{modelValue:g.value,"onUpdate:modelValue":e[5]||(e[5]=a=>g.value=a),placeholder:"http://api.xxx/Tools/IP.ashx?..."},null,8,["modelValue"]),e[35]||(e[35]=n("div",{class:"help"},"API 应返回 `IP:PORT`(例:123.45.67.89:8888)。",-1))]),_:1}),l(u,{label:"有效期(分钟)"},{default:t(()=>[l(i,{modelValue:R.value,"onUpdate:modelValue":e[6]||(e[6]=a=>R.value=a),min:1,max:60},null,8,["modelValue"])]),_:1})]),_:1}),n("div",vl,[l(f,{type:"primary",onClick:he},{default:t(()=>[...e[36]||(e[36]=[v("保存代理配置",-1)])]),_:1}),l(f,{onClick:Ke},{default:t(()=>[...e[37]||(e[37]=[v("测试代理",-1)])]),_:1})])]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:t(()=>[e[42]||(e[42]=n("h3",{class:"section-title"},"注册设置",-1)),e[43]||(e[43]=n("div",{class:"section-sub app-muted"},"控制注册节流与新用户赠送 VIP",-1)),l(D,{"label-width":"122px"},{default:t(()=>[l(u,{label:"注册赠送 VIP"},{default:t(()=>[l(Q,{modelValue:$.value,"onUpdate:modelValue":e[7]||(e[7]=a=>$.value=a)},null,8,["modelValue"]),e[40]||(e[40]=n("div",{class:"help"},"开启后,新用户注册成功自动赠送下方设定的 VIP 天数。",-1))]),_:1}),l(u,{label:"每小时注册限制"},{default:t(()=>[l(i,{modelValue:F.value,"onUpdate:modelValue":e[8]||(e[8]=a=>F.value=a),min:1,max:1e4},null,8,["modelValue"])]),_:1}),l(u,{label:"赠送 VIP 天数"},{default:t(()=>[l(i,{modelValue:H.value,"onUpdate:modelValue":e[9]||(e[9]=a=>H.value=a),min:0,max:999999},null,8,["modelValue"])]),_:1})]),_:1}),n("div",pl,[l(f,{type:"primary",onClick:Ne},{default:t(()=>[...e[41]||(e[41]=[v("保存注册设置",-1)])]),_:1})])]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card section-card social-card"},{default:t(()=>[e[46]||(e[46]=n("h3",{class:"section-title"},"聚合登录",-1)),e[47]||(e[47]=n("div",{class:"section-sub app-muted"},"QQ、微信、支付宝快捷登录",-1)),l(D,{"label-width":"122px"},{default:t(()=>[l(u,{label:"启用"},{default:t(()=>[l(Q,{modelValue:I.value,"onUpdate:modelValue":e[10]||(e[10]=a=>I.value=a)},null,8,["modelValue"])]),_:1}),l(u,{label:"登录方式"},{default:t(()=>[l(ze,{modelValue:x.value,"onUpdate:modelValue":e[11]||(e[11]=a=>x.value=a)},{default:t(()=>[(y(),b(ol,null,tl(Ce,a=>l(Me,{key:a.value,label:a.value},{default:t(()=>[v(A(a.label),1)]),_:2},1032,["label"])),64))]),_:1},8,["modelValue"])]),_:1}),l(u,{label:"接口地址"},{default:t(()=>[l(p,{modelValue:h.value,"onUpdate:modelValue":e[12]||(e[12]=a=>h.value=a),placeholder:"https://www.spacezs.cn/connect.php"},null,8,["modelValue"])]),_:1}),l(u,{label:"APPID"},{default:t(()=>[l(p,{modelValue:K.value,"onUpdate:modelValue":e[13]||(e[13]=a=>K.value=a),placeholder:"Space APPID"},null,8,["modelValue"])]),_:1}),l(u,{label:"APPKEY"},{default:t(()=>[l(p,{modelValue:V.value,"onUpdate:modelValue":e[14]||(e[14]=a=>V.value=a),type:"password","show-password":"",placeholder:"留空则保持当前密钥"},null,8,["modelValue"]),j.value?(y(),b("div",ml,"当前:"+A(O.value),1)):T("",!0)]),_:1})]),_:1}),n("div",fl,[l(f,{type:"primary",loading:re.value,onClick:De},{default:t(()=>[...e[44]||(e[44]=[v("保存聚合登录",-1)])]),_:1},8,["loading"]),l(f,{loading:ce.value,onClick:Ee},{default:t(()=>[...e[45]||(e[45]=[v("测试连接",-1)])]),_:1},8,["loading"])])]),_:1})]),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card kdocs-card"},{default:t(()=>[n("div",_l,[e[50]||(e[50]=n("h3",{class:"section-title"},"金山文档上传",-1)),n("div",gl,[e[49]||(e[49]=n("span",null,"登录状态:",-1)),n("span",{class:sl(["status-chip",Ue.value])},[v(A(ue.value)+" ",1),pe.value?(y(),b("span",yl,[...e[48]||(e[48]=[n("i",null,null,-1),n("i",null,null,-1),n("i",null,null,-1)])])):T("",!0)],2),n("span",null,"· 待上传 "+A(c.value.queue_size||0),1)])]),l(D,{"label-width":"118px",class:"kdocs-form"},{default:t(()=>[l(u,{label:"启用上传"},{default:t(()=>[l(Q,{modelValue:G.value,"onUpdate:modelValue":e[15]||(e[15]=a=>G.value=a)},null,8,["modelValue"]),e[51]||(e[51]=n("div",{class:"help"},"表格结构变化时可先关闭,避免错误上传。",-1))]),_:1}),l(u,{label:"文档链接"},{default:t(()=>[l(p,{modelValue:Y.value,"onUpdate:modelValue":e[16]||(e[16]=a=>Y.value=a),placeholder:"https://kdocs.cn/..."},null,8,["modelValue"])]),_:1}),l(u,{label:"默认县区"},{default:t(()=>[l(p,{modelValue:J.value,"onUpdate:modelValue":e[17]||(e[17]=a=>J.value=a),placeholder:"如:道县(用户可覆盖)"},null,8,["modelValue"])]),_:1}),l(u,{label:"Sheet 名称"},{default:t(()=>[l(p,{modelValue:W.value,"onUpdate:modelValue":e[18]||(e[18]=a=>W.value=a),placeholder:"留空使用第一个 Sheet"},null,8,["modelValue"])]),_:1}),l(u,{label:"Sheet 序号"},{default:t(()=>[l(i,{modelValue:X.value,"onUpdate:modelValue":e[19]||(e[19]=a=>X.value=a),min:0,max:50},null,8,["modelValue"]),e[52]||(e[52]=n("div",{class:"help"},"0 表示第一个 Sheet。",-1))]),_:1}),l(u,{label:"列配置"},{default:t(()=>[n("div",bl,[l(p,{modelValue:Z.value,"onUpdate:modelValue":e[20]||(e[20]=a=>Z.value=a),placeholder:"县区列,如 A"},null,8,["modelValue"]),l(p,{modelValue:ee.value,"onUpdate:modelValue":e[21]||(e[21]=a=>ee.value=a),placeholder:"图片列,如 D"},null,8,["modelValue"])])]),_:1}),l(u,{label:"有效行范围"},{default:t(()=>[n("div",kl,[l(i,{modelValue:le.value,"onUpdate:modelValue":e[22]||(e[22]=a=>le.value=a),min:0,max:1e4,placeholder:"起始行",style:{width:"140px"}},null,8,["modelValue"]),e[53]||(e[53]=n("span",{class:"app-muted"},"至",-1)),l(i,{modelValue:ae.value,"onUpdate:modelValue":e[23]||(e[23]=a=>ae.value=a),min:0,max:1e4,placeholder:"结束行",style:{width:"140px"}},null,8,["modelValue"])]),e[54]||(e[54]=n("div",{class:"help"},"用于限制上传区间(如 50-100),0 表示不限制。",-1))]),_:1}),l(u,{label:"管理员通知"},{default:t(()=>[l(Q,{modelValue:oe.value,"onUpdate:modelValue":e[24]||(e[24]=a=>oe.value=a)},null,8,["modelValue"])]),_:1}),l(u,{label:"通知邮箱"},{default:t(()=>[l(p,{modelValue:te.value,"onUpdate:modelValue":e[25]||(e[25]=a=>te.value=a),placeholder:"admin@example.com"},null,8,["modelValue"])]),_:1})]),_:1}),n("div",Vl,[l(f,{type:"primary",onClick:Qe},{default:t(()=>[...e[55]||(e[55]=[v("保存表格配置",-1)])]),_:1}),l(f,{type:"success",plain:"",loading:C.value,disabled:be.value&&!C.value,onClick:Be},{default:t(()=>[...e[56]||(e[56]=[v(" 获取二维码 ",-1)])]),_:1},8,["loading","disabled"]),l(f,{type:"danger",plain:"",loading:U.value,disabled:be.value&&!U.value,onClick:qe},{default:t(()=>[...e[57]||(e[57]=[v(" 清除登录 ",-1)])]),_:1},8,["loading","disabled"])]),c.value.last_error?(y(),b("div",xl,"最近错误:"+A(c.value.last_error),1)):T("",!0),se.value?(y(),b("div",wl,"操作提示:"+A(se.value),1)):T("",!0)]),_:1}),l(Re,{modelValue:w.value,"onUpdate:modelValue":e[26]||(e[26]=a=>w.value=a),title:"扫码登录",width:"min(420px, 92vw)"},{default:t(()=>[n("div",Sl,[S.value?(y(),b("img",{key:0,src:`data:image/png;base64,${S.value}`,alt:"KDocs QR"},null,8,Pl)):T("",!0),e[58]||(e[58]=n("div",{class:"help"},"请使用管理员微信扫码登录。",-1))])]),_:1},8,["modelValue"])])),[[$e,_.value]])}}},Nl=Ge(Cl,[["__scopeId","data-v-3820d834"]]);export{Nl as default}; diff --git a/static/admin/assets/UsersPage-BNDnhJe0.css b/static/admin/assets/UsersPage-BNDnhJe0.css deleted file mode 100644 index faecdcd..0000000 --- a/static/admin/assets/UsersPage-BNDnhJe0.css +++ /dev/null @@ -1 +0,0 @@ -.page-stack[data-v-11f4f270]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-11f4f270]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-11f4f270]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-11f4f270]{margin-top:10px;font-size:12px}.table-wrap[data-v-11f4f270]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.user-block[data-v-11f4f270]{display:flex;flex-direction:column;gap:2px}.user-main[data-v-11f4f270]{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.user-sub[data-v-11f4f270]{font-size:12px}.vip-sub[data-v-11f4f270]{font-size:12px;color:#7c3aed}.actions[data-v-11f4f270]{display:flex;flex-wrap:wrap;gap:8px} diff --git a/static/admin/assets/UsersPage-CgYh6JHW.css b/static/admin/assets/UsersPage-CgYh6JHW.css new file mode 100644 index 0000000..cd99aa2 --- /dev/null +++ b/static/admin/assets/UsersPage-CgYh6JHW.css @@ -0,0 +1 @@ +.page-stack[data-v-3e2dc1eb]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-3e2dc1eb]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-3e2dc1eb]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-3e2dc1eb]{margin-top:10px;font-size:12px}.table-wrap[data-v-3e2dc1eb]{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.user-block[data-v-3e2dc1eb]{display:flex;flex-direction:column;gap:2px}.user-main[data-v-3e2dc1eb]{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.user-sub[data-v-3e2dc1eb]{font-size:12px}.vip-sub[data-v-3e2dc1eb]{font-size:12px;color:#7c3aed}.actions[data-v-3e2dc1eb]{display:flex;flex-wrap:wrap;gap:8px} diff --git a/static/admin/assets/UsersPage-DJZUCpfb.js b/static/admin/assets/UsersPage-RI5S3snx.js similarity index 98% rename from static/admin/assets/UsersPage-DJZUCpfb.js rename to static/admin/assets/UsersPage-RI5S3snx.js index 3f6cf4a..4f95a33 100644 --- a/static/admin/assets/UsersPage-DJZUCpfb.js +++ b/static/admin/assets/UsersPage-RI5S3snx.js @@ -1 +1 @@ -import{a as W,r as Z,s as F,b as G,c as J,d as H,f as K}from"./users-te9ySk34.js";import{_ as O}from"./index-C1f9ticl.js";import{E as v,a as h}from"./vendor-element-B5S5pUKo.js";import{i as Q,r as P,o as X,aj as _,ap as Y,n as V,q as r,t as y,L as l,E as s,F as ee,D as f,G as p,J as b,I as c}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";function I(g){if(!g)return null;if(g instanceof Date)return g;let a=String(g).trim();if(!a)return null;/^\d{4}-\d{2}-\d{2}$/.test(a)&&(a=`${a}T00:00:00`);let o=a.includes("T")?a:a.replace(" ","T");o=o.replace(/\.(\d{3})\d+/,".$1"),/([zZ]|[+-]\d{2}:\d{2})$/.test(o)||(o=`${o}+08:00`);const u=new Date(o);return Number.isNaN(u.getTime())?null:u}function D(g){const a=String(g||"");if(!a)return{ok:!1,message:"密码不能为空"};if(a.length<8)return{ok:!1,message:"密码长度不能少于8个字符"};if(a.length>128)return{ok:!1,message:"密码长度不能超过128个字符"};const o=/[a-zA-Z]/.test(a),x=/\d/.test(a);return!o||!x?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}const te={class:"page-stack"},ne={class:"table-wrap"},se={class:"user-block"},ae={class:"user-main"},ie={key:0,class:"app-muted user-sub"},re={key:1,class:"vip-sub"},oe={key:0,class:"app-muted"},le={class:"actions"},ce={__name:"UsersPage",setup(g){const a=Q("refreshStats",null),o=P(!1),x=P([]);function u(n){const e=n?.vip_expire_time;if(!e)return!1;if(String(e).startsWith("2099-12-31"))return!0;const i=I(e);return i?i.getTime()>Date.now():!1}function C(n){const e=n?.vip_expire_time;if(!e||!u(n))return"";if(String(e).startsWith("2099-12-31"))return"永久VIP";const i=I(e);if(!i)return`到期: ${e}`;const d=Math.ceil((i.getTime()-Date.now())/(1e3*60*60*24));return`到期: ${e}(剩${d}天)`}function B(n){return n==="rejected"?{label:"禁用",type:"danger"}:{label:"正常",type:"success"}}async function w(){o.value=!0;try{x.value=await K()}catch{x.value=[]}finally{o.value=!1}}async function U(){await w()}async function z(n){try{await v.confirm(`确定启用用户「${n.username}」吗?启用后用户可正常登录。`,"启用用户",{confirmButtonText:"启用",cancelButtonText:"取消",type:"success"})}catch{return}try{await W(n.id),h.success("用户已启用"),await w(),await a?.({force:!0})}catch{}}async function S(n){try{await v.confirm(`确定禁用用户「${n.username}」吗?禁用后用户将无法登录。`,"禁用用户",{confirmButtonText:"禁用",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Z(n.id),h.success("用户已禁用"),await w(),await a?.({force:!0})}catch{}}async function E(n){try{await v.confirm(`确定删除用户「${n.username}」吗?此操作将删除该用户的所有数据,不可恢复!`,"删除用户",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{await H(n.id),h.success("用户已删除"),await w(),await a?.({force:!0})}catch{}}async function $(n,e){const i={7:"一周",30:"一个月",365:"一年",999999:"永久"}[e]||`${e}天`;try{await v.confirm(`确定为用户「${n.username}」开通 ${i} VIP 吗?`,"设置VIP",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await F(n.id,e);h.success(d?.message||"VIP设置成功"),await w(),await a?.({force:!0})}catch{}}async function N(n){try{await v.confirm(`确定移除用户「${n.username}」的 VIP 吗?`,"移除VIP",{confirmButtonText:"移除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await G(n.id);h.success(e?.message||"VIP已移除"),await w(),await a?.({force:!0})}catch{}}async function M(n){let e;try{e=(await v.prompt("请输入新密码(至少8位且包含字母和数字)","重置密码",{confirmButtonText:"提交",cancelButtonText:"取消",inputType:"password",inputPlaceholder:"新密码",inputValidator:k=>D(k).ok,inputErrorMessage:"密码至少8位且包含字母和数字"})).value}catch{return}const i=D(e);if(!i.ok){h.error(i.message);return}try{await v.confirm(`确定将用户「${n.username}」的密码重置为该新密码吗?`,"二次确认",{confirmButtonText:"确认重置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await J(n.id,e);h.success(d?.message||"密码重置成功")}catch{}}return X(U),(n,e)=>{const i=_("el-table-column"),d=_("el-tag"),k=_("el-button"),T=_("el-dropdown-item"),j=_("el-dropdown-menu"),L=_("el-dropdown"),A=_("el-table"),R=_("el-card"),q=Y("loading");return r(),V("div",te,[e[11]||(e[11]=y("div",{class:"app-page-title"},[y("h2",null,"用户")],-1)),l(R,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[y("div",ne,[ee((r(),f(A,{data:x.value,style:{width:"100%"}},{default:s(()=>[l(i,{prop:"id",label:"ID",width:"80"}),l(i,{label:"用户","min-width":"240"},{default:s(({row:t})=>[y("div",se,[y("div",ae,[y("strong",null,b(t.username),1),u(t)?(r(),f(d,{key:0,type:"warning",effect:"light",size:"small"},{default:s(()=>[...e[0]||(e[0]=[c("VIP",-1)])]),_:1})):p("",!0)]),t.email?(r(),V("div",ie,b(t.email),1)):p("",!0),C(t)?(r(),V("div",re,b(C(t)),1)):p("",!0)])]),_:1}),l(i,{label:"状态",width:"120"},{default:s(({row:t})=>[l(d,{type:B(t.status).type,effect:"light"},{default:s(()=>[c(b(B(t.status).label),1)]),_:2},1032,["type"])]),_:1}),l(i,{label:"时间","min-width":"220"},{default:s(({row:t})=>[y("div",null,b(t.created_at),1),t.vip_expire_time?(r(),V("div",oe,"VIP到期: "+b(t.vip_expire_time),1)):p("",!0)]),_:1}),l(i,{label:"操作",width:"280",fixed:"right"},{default:s(({row:t})=>[y("div",le,[t.status==="rejected"?(r(),f(k,{key:0,type:"success",size:"small",onClick:m=>z(t)},{default:s(()=>[...e[1]||(e[1]=[c("启用",-1)])]),_:1},8,["onClick"])):(r(),f(k,{key:1,type:"warning",size:"small",onClick:m=>S(t)},{default:s(()=>[...e[2]||(e[2]=[c("禁用",-1)])]),_:1},8,["onClick"])),l(L,{trigger:"click"},{dropdown:s(()=>[l(j,null,{default:s(()=>[u(t)?p("",!0):(r(),f(T,{key:0,onClick:m=>$(t,7)},{default:s(()=>[...e[4]||(e[4]=[c("开通一周",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:1,onClick:m=>$(t,30)},{default:s(()=>[...e[5]||(e[5]=[c("开通一月",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:2,onClick:m=>$(t,365)},{default:s(()=>[...e[6]||(e[6]=[c("开通一年",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:3,onClick:m=>$(t,999999)},{default:s(()=>[...e[7]||(e[7]=[c("永久VIP",-1)])]),_:1},8,["onClick"])),u(t)?(r(),f(T,{key:4,onClick:m=>N(t)},{default:s(()=>[...e[8]||(e[8]=[c("移除VIP",-1)])]),_:1},8,["onClick"])):p("",!0)]),_:2},1024)]),default:s(()=>[l(k,{size:"small"},{default:s(()=>[...e[3]||(e[3]=[c("VIP",-1)])]),_:1})]),_:2},1024),l(k,{size:"small",onClick:m=>M(t)},{default:s(()=>[...e[9]||(e[9]=[c("重置密码",-1)])]),_:1},8,["onClick"]),l(k,{type:"danger",size:"small",onClick:m=>E(t)},{default:s(()=>[...e[10]||(e[10]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[q,o.value]])])]),_:1})])}}},ye=O(ce,[["__scopeId","data-v-11f4f270"]]);export{ye as default}; +import{a as W,r as Z,s as F,b as G,c as J,d as H,f as K}from"./users-DzDcz9C_.js";import{_ as O}from"./index-DOvMEmc8.js";import{E as v,a as h}from"./vendor-element-B5S5pUKo.js";import{i as Q,r as P,o as X,aj as _,ap as Y,n as V,q as r,t as y,L as l,E as s,F as ee,D as f,G as p,J as b,I as c}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";function I(g){if(!g)return null;if(g instanceof Date)return g;let a=String(g).trim();if(!a)return null;/^\d{4}-\d{2}-\d{2}$/.test(a)&&(a=`${a}T00:00:00`);let o=a.includes("T")?a:a.replace(" ","T");o=o.replace(/\.(\d{3})\d+/,".$1"),/([zZ]|[+-]\d{2}:\d{2})$/.test(o)||(o=`${o}+08:00`);const u=new Date(o);return Number.isNaN(u.getTime())?null:u}function D(g){const a=String(g||"");if(!a)return{ok:!1,message:"密码不能为空"};if(a.length<8)return{ok:!1,message:"密码长度不能少于8个字符"};if(a.length>128)return{ok:!1,message:"密码长度不能超过128个字符"};const o=/[a-zA-Z]/.test(a),x=/\d/.test(a);return!o||!x?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}const te={class:"page-stack"},ne={class:"table-wrap"},se={class:"user-block"},ae={class:"user-main"},ie={key:0,class:"app-muted user-sub"},re={key:1,class:"vip-sub"},oe={key:0,class:"app-muted"},le={class:"actions"},ce={__name:"UsersPage",setup(g){const a=Q("refreshStats",null),o=P(!1),x=P([]);function u(n){const e=n?.vip_expire_time;if(!e)return!1;if(String(e).startsWith("2099-12-31"))return!0;const i=I(e);return i?i.getTime()>Date.now():!1}function C(n){const e=n?.vip_expire_time;if(!e||!u(n))return"";if(String(e).startsWith("2099-12-31"))return"永久VIP";const i=I(e);if(!i)return`到期: ${e}`;const d=Math.ceil((i.getTime()-Date.now())/(1e3*60*60*24));return`到期: ${e}(剩${d}天)`}function B(n){return n==="rejected"?{label:"禁用",type:"danger"}:{label:"正常",type:"success"}}async function w(){o.value=!0;try{x.value=await K()}catch{x.value=[]}finally{o.value=!1}}async function U(){await w()}async function z(n){try{await v.confirm(`确定启用用户「${n.username}」吗?启用后用户可正常登录。`,"启用用户",{confirmButtonText:"启用",cancelButtonText:"取消",type:"success"})}catch{return}try{await W(n.id),h.success("用户已启用"),await w(),await a?.({force:!0})}catch{}}async function S(n){try{await v.confirm(`确定禁用用户「${n.username}」吗?禁用后用户将无法登录。`,"禁用用户",{confirmButtonText:"禁用",cancelButtonText:"取消",type:"warning"})}catch{return}try{await Z(n.id),h.success("用户已禁用"),await w(),await a?.({force:!0})}catch{}}async function E(n){try{await v.confirm(`确定删除用户「${n.username}」吗?此操作将删除该用户的所有数据,不可恢复!`,"删除用户",{confirmButtonText:"删除",cancelButtonText:"取消",type:"error"})}catch{return}try{await H(n.id),h.success("用户已删除"),await w(),await a?.({force:!0})}catch{}}async function $(n,e){const i={7:"一周",30:"一个月",365:"一年",999999:"永久"}[e]||`${e}天`;try{await v.confirm(`确定为用户「${n.username}」开通 ${i} VIP 吗?`,"设置VIP",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await F(n.id,e);h.success(d?.message||"VIP设置成功"),await w(),await a?.({force:!0})}catch{}}async function N(n){try{await v.confirm(`确定移除用户「${n.username}」的 VIP 吗?`,"移除VIP",{confirmButtonText:"移除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await G(n.id);h.success(e?.message||"VIP已移除"),await w(),await a?.({force:!0})}catch{}}async function M(n){let e;try{e=(await v.prompt("请输入新密码(至少8位且包含字母和数字)","重置密码",{confirmButtonText:"提交",cancelButtonText:"取消",inputType:"password",inputPlaceholder:"新密码",inputValidator:k=>D(k).ok,inputErrorMessage:"密码至少8位且包含字母和数字"})).value}catch{return}const i=D(e);if(!i.ok){h.error(i.message);return}try{await v.confirm(`确定将用户「${n.username}」的密码重置为该新密码吗?`,"二次确认",{confirmButtonText:"确认重置",cancelButtonText:"取消",type:"warning"})}catch{return}try{const d=await J(n.id,e);h.success(d?.message||"密码重置成功")}catch{}}return X(U),(n,e)=>{const i=_("el-table-column"),d=_("el-tag"),k=_("el-button"),T=_("el-dropdown-item"),j=_("el-dropdown-menu"),L=_("el-dropdown"),A=_("el-table"),R=_("el-card"),q=Y("loading");return r(),V("div",te,[e[11]||(e[11]=y("div",{class:"app-page-title"},[y("h2",null,"用户")],-1)),l(R,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[y("div",ne,[ee((r(),f(A,{data:x.value,style:{width:"100%"}},{default:s(()=>[l(i,{prop:"id",label:"ID",width:"80"}),l(i,{label:"用户","min-width":"240"},{default:s(({row:t})=>[y("div",se,[y("div",ae,[y("strong",null,b(t.username),1),u(t)?(r(),f(d,{key:0,type:"warning",effect:"light",size:"small"},{default:s(()=>[...e[0]||(e[0]=[c("VIP",-1)])]),_:1})):p("",!0)]),t.email?(r(),V("div",ie,b(t.email),1)):p("",!0),C(t)?(r(),V("div",re,b(C(t)),1)):p("",!0)])]),_:1}),l(i,{label:"状态",width:"120"},{default:s(({row:t})=>[l(d,{type:B(t.status).type,effect:"light"},{default:s(()=>[c(b(B(t.status).label),1)]),_:2},1032,["type"])]),_:1}),l(i,{label:"时间","min-width":"220"},{default:s(({row:t})=>[y("div",null,b(t.created_at),1),t.vip_expire_time?(r(),V("div",oe,"VIP到期: "+b(t.vip_expire_time),1)):p("",!0)]),_:1}),l(i,{label:"操作",width:"280",fixed:"right"},{default:s(({row:t})=>[y("div",le,[t.status==="rejected"?(r(),f(k,{key:0,type:"success",size:"small",onClick:m=>z(t)},{default:s(()=>[...e[1]||(e[1]=[c("启用",-1)])]),_:1},8,["onClick"])):(r(),f(k,{key:1,type:"warning",size:"small",onClick:m=>S(t)},{default:s(()=>[...e[2]||(e[2]=[c("禁用",-1)])]),_:1},8,["onClick"])),l(L,{trigger:"click"},{dropdown:s(()=>[l(j,null,{default:s(()=>[u(t)?p("",!0):(r(),f(T,{key:0,onClick:m=>$(t,7)},{default:s(()=>[...e[4]||(e[4]=[c("开通一周",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:1,onClick:m=>$(t,30)},{default:s(()=>[...e[5]||(e[5]=[c("开通一月",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:2,onClick:m=>$(t,365)},{default:s(()=>[...e[6]||(e[6]=[c("开通一年",-1)])]),_:1},8,["onClick"])),u(t)?p("",!0):(r(),f(T,{key:3,onClick:m=>$(t,999999)},{default:s(()=>[...e[7]||(e[7]=[c("永久VIP",-1)])]),_:1},8,["onClick"])),u(t)?(r(),f(T,{key:4,onClick:m=>N(t)},{default:s(()=>[...e[8]||(e[8]=[c("移除VIP",-1)])]),_:1},8,["onClick"])):p("",!0)]),_:2},1024)]),default:s(()=>[l(k,{size:"small"},{default:s(()=>[...e[3]||(e[3]=[c("VIP",-1)])]),_:1})]),_:2},1024),l(k,{size:"small",onClick:m=>M(t)},{default:s(()=>[...e[9]||(e[9]=[c("重置密码",-1)])]),_:1},8,["onClick"]),l(k,{type:"danger",size:"small",onClick:m=>E(t)},{default:s(()=>[...e[10]||(e[10]=[c("删除",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["data"])),[[q,o.value]])])]),_:1})])}}},ye=O(ce,[["__scopeId","data-v-3e2dc1eb"]]);export{ye as default}; diff --git a/static/admin/assets/email-px7YBG2O.js b/static/admin/assets/email-Mh1SHQbX.js similarity index 88% rename from static/admin/assets/email-px7YBG2O.js rename to static/admin/assets/email-Mh1SHQbX.js index d7e7ca4..6db2f8e 100644 --- a/static/admin/assets/email-px7YBG2O.js +++ b/static/admin/assets/email-Mh1SHQbX.js @@ -1 +1 @@ -import{c as s,a as e}from"./index-C1f9ticl.js";const n=s(async()=>{const{data:a}=await e.get("/email/stats");return a},1e4);async function i(){const{data:a}=await e.get("/email/settings");return a}async function r(a){const{data:t}=await e.post("/email/settings",a);return n.clear(),t}async function o(a={}){return n.run(a)}async function l(a){const{data:t}=await e.get("/email/logs",{params:a});return t}async function u(a){const{data:t}=await e.post("/email/logs/cleanup",{days:a});return n.clear(),t}export{l as a,i as b,u as c,o as f,r as u}; +import{c as s,a as e}from"./index-DOvMEmc8.js";const n=s(async()=>{const{data:a}=await e.get("/email/stats");return a},1e4);async function i(){const{data:a}=await e.get("/email/settings");return a}async function r(a){const{data:t}=await e.post("/email/settings",a);return n.clear(),t}async function o(a={}){return n.run(a)}async function l(a){const{data:t}=await e.get("/email/logs",{params:a});return t}async function u(a){const{data:t}=await e.post("/email/logs/cleanup",{days:a});return n.clear(),t}export{l as a,i as b,u as c,o as f,r as u}; diff --git a/static/admin/assets/index-Dh0BbqTX.css b/static/admin/assets/index-CPs_XZ2s.css similarity index 66% rename from static/admin/assets/index-Dh0BbqTX.css rename to static/admin/assets/index-CPs_XZ2s.css index 1929763..01fe5d7 100644 --- a/static/admin/assets/index-Dh0BbqTX.css +++ b/static/admin/assets/index-CPs_XZ2s.css @@ -1 +1 @@ -.layout-root[data-v-c6ed865d]{height:100%}.layout-aside[data-v-c6ed865d]{background:linear-gradient(180deg,#fffffffa,#f8fafcf0);border-right:1px solid var(--app-border);box-shadow:4px 0 16px #0f172a0a}.brand[data-v-c6ed865d],.drawer-brand[data-v-c6ed865d]{padding:18px 16px 14px}.brand[data-v-c6ed865d]{border-bottom:1px solid rgba(15,23,42,.06)}.brand-title[data-v-c6ed865d]{font-size:16px;font-weight:800;letter-spacing:.2px}.brand-sub[data-v-c6ed865d]{margin-top:4px;font-size:12px}.aside-menu[data-v-c6ed865d]{border-right:none;padding:8px;background:transparent}.aside-menu[data-v-c6ed865d] .el-menu-item{height:42px;line-height:42px;margin:3px 0;border-radius:10px;color:#334155;font-weight:600}.aside-menu[data-v-c6ed865d] .el-menu-item .el-icon{margin-right:10px}.aside-menu[data-v-c6ed865d] .el-menu-item:hover{background:#3b82f614;color:#1d4ed8}.aside-menu[data-v-c6ed865d] .el-menu-item.is-active{background:linear-gradient(135deg,#2563eb1f,#7c3aed1a);color:#1e40af}.menu-label[data-v-c6ed865d]{display:inline-flex;align-items:center;min-width:0}.menu-badge[data-v-c6ed865d]{display:inline-flex;align-items:center}.fallback-card[data-v-c6ed865d]{min-height:160px;border-radius:var(--app-radius-lg);border:1px solid var(--app-border)}.layout-header[data-v-c6ed865d]{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;height:58px;padding:0 18px;background:#ffffffc7;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--app-border)}.header-left[data-v-c6ed865d]{display:flex;align-items:center;gap:10px;min-width:0}.header-title[data-v-c6ed865d]{font-size:15px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-menu-btn[data-v-c6ed865d]{padding-left:0;padding-right:0}.header-right[data-v-c6ed865d]{display:flex;align-items:center;gap:12px}.admin-name[data-v-c6ed865d]{display:flex;align-items:baseline;gap:8px;font-size:13px;color:#334155}.admin-name strong[data-v-c6ed865d]{color:#0f172a;font-weight:800}.logout-btn[data-v-c6ed865d]{min-width:74px}.layout-main[data-v-c6ed865d]{padding:18px}.main-shell[data-v-c6ed865d]{width:100%;max-width:1600px;margin:0 auto}@media(max-width:768px){.layout-header[data-v-c6ed865d]{flex-wrap:wrap;height:auto;padding:10px 12px}.header-right[data-v-c6ed865d]{width:100%;justify-content:flex-end}.admin-name .app-muted[data-v-c6ed865d],.admin-name strong[data-v-c6ed865d]{display:none}.layout-main[data-v-c6ed865d]{padding:12px}}:root{--app-bg: #f4f6fb;--app-text: #111827;--app-muted: #6b7280;--app-border: rgba(15, 23, 42, .1);--app-border-strong: rgba(15, 23, 42, .14);--app-radius: 12px;--app-radius-lg: 14px;--app-shadow-soft: 0 8px 24px rgba(15, 23, 42, .05);--app-shadow: 0 12px 30px rgba(15, 23, 42, .08);--app-card-bg: rgba(255, 255, 255, .94);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#app{height:100%}*{box-sizing:border-box}body{margin:0;color:var(--app-text);background:radial-gradient(1200px 500px at -10% -10%,rgba(59,130,246,.12),transparent 55%),radial-gradient(1000px 420px at 110% 0%,rgba(139,92,246,.1),transparent 50%),var(--app-bg)}a{color:inherit;text-decoration:none}.app-page-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.app-page-title h2{margin:0;font-size:19px;font-weight:800;letter-spacing:.2px}.app-muted{color:var(--app-muted)}.page-stack{display:flex;flex-direction:column;gap:14px;min-width:0}.el-card{border-radius:var(--app-radius-lg);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.el-button{border-radius:10px;font-weight:600}.el-input__wrapper,.el-textarea__inner,.el-select__wrapper,.el-input-number,.el-picker__wrapper{border-radius:10px}.el-table{border-radius:10px;overflow:hidden}.el-table th.el-table__cell{background:#f8fafc;color:#334155;font-weight:700}.el-table td.el-table__cell,.el-table th.el-table__cell{padding-top:11px;padding-bottom:11px}.el-table .el-table__row:hover>td.el-table__cell{background:#f8fbff}.el-tag{border-radius:999px}.el-dialog{border-radius:var(--app-radius-lg)}@media(max-width:768px){.app-page-title{flex-wrap:wrap;align-items:flex-start}.app-page-title h2{font-size:17px}.el-dialog{max-width:92vw}.el-form-item{flex-direction:column;align-items:stretch}.el-form-item__label{width:auto!important;justify-content:flex-start!important;padding:0 0 6px!important;line-height:1.4;text-align:left!important}.el-form-item__content{margin-left:0!important;width:100%}}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.section-title{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint{font-size:12px}.el-tabs__item{font-weight:700}.el-form-item{margin-bottom:18px}@media(max-width:768px){.pagination{justify-content:flex-start}}@media(max-width:900px){.toolbar{width:100%}.toolbar>*{min-width:0}}@media(max-width:768px){.app-page-title>div{width:100%}.app-page-title .toolbar{width:100%}.toolbar>*{flex:1 1 calc(50% - 6px)}.toolbar .el-button,.toolbar .el-select,.toolbar .el-input,.toolbar .el-input-number{width:100%!important}.section-head{align-items:flex-start}.section-head>*{width:100%}.table-wrap{-webkit-overflow-scrolling:touch}.table-wrap .el-table{min-width:700px}.el-pagination{width:100%;justify-content:flex-start}}@media(max-width:520px){.toolbar>*{flex-basis:100%}.table-wrap .el-table{min-width:620px}} +.layout-root[data-v-520fd502]{height:100%}.layout-aside[data-v-520fd502]{background:linear-gradient(180deg,#fffffffa,#f8fafcf0);border-right:1px solid var(--app-border);box-shadow:4px 0 16px #0f172a0a}.brand[data-v-520fd502],.drawer-brand[data-v-520fd502]{padding:18px 16px 14px}.brand[data-v-520fd502]{border-bottom:1px solid rgba(15,23,42,.06)}.brand-title[data-v-520fd502]{font-size:16px;font-weight:800;letter-spacing:.2px}.brand-sub[data-v-520fd502]{margin-top:4px;font-size:12px}.aside-menu[data-v-520fd502]{border-right:none;padding:8px;background:transparent}.aside-menu[data-v-520fd502] .el-menu-item{height:42px;line-height:42px;margin:3px 0;border-radius:10px;color:#334155;font-weight:600}.aside-menu[data-v-520fd502] .el-menu-item .el-icon{margin-right:10px}.aside-menu[data-v-520fd502] .el-menu-item:hover{background:#3b82f614;color:#1d4ed8}.aside-menu[data-v-520fd502] .el-menu-item.is-active{background:linear-gradient(135deg,#2563eb1f,#7c3aed1a);color:#1e40af}.menu-label[data-v-520fd502]{display:inline-flex;align-items:center;min-width:0}.menu-badge[data-v-520fd502]{display:inline-flex;align-items:center}.fallback-card[data-v-520fd502]{min-height:160px;border-radius:var(--app-radius-lg);border:1px solid var(--app-border)}.layout-header[data-v-520fd502]{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;height:58px;padding:0 18px;background:#ffffffc7;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--app-border)}.header-left[data-v-520fd502]{display:flex;align-items:center;gap:10px;min-width:0}.header-title[data-v-520fd502]{font-size:15px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-menu-btn[data-v-520fd502]{padding-left:0;padding-right:0}.header-right[data-v-520fd502]{display:flex;align-items:center;gap:12px}.admin-name[data-v-520fd502]{display:flex;align-items:baseline;gap:8px;font-size:13px;color:#334155}.admin-name strong[data-v-520fd502]{color:#0f172a;font-weight:800}.logout-btn[data-v-520fd502]{min-width:74px}.layout-main[data-v-520fd502]{padding:18px}.main-shell[data-v-520fd502]{width:100%;max-width:1600px;margin:0 auto}@media(max-width:768px){.layout-header[data-v-520fd502]{flex-wrap:wrap;height:auto;padding:10px 12px}.header-right[data-v-520fd502]{width:100%;justify-content:flex-end}.admin-name .app-muted[data-v-520fd502],.admin-name strong[data-v-520fd502]{display:none}.layout-main[data-v-520fd502]{padding:12px}}:root{--app-bg: #f4f6fb;--app-text: #111827;--app-muted: #6b7280;--app-border: rgba(15, 23, 42, .1);--app-border-strong: rgba(15, 23, 42, .14);--app-radius: 12px;--app-radius-lg: 14px;--app-shadow-soft: 0 8px 24px rgba(15, 23, 42, .05);--app-shadow: 0 12px 30px rgba(15, 23, 42, .08);--app-card-bg: rgba(255, 255, 255, .94);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#app{height:100%}*{box-sizing:border-box}body{margin:0;color:var(--app-text);background:radial-gradient(1200px 500px at -10% -10%,rgba(59,130,246,.12),transparent 55%),radial-gradient(1000px 420px at 110% 0%,rgba(139,92,246,.1),transparent 50%),var(--app-bg)}a{color:inherit;text-decoration:none}.app-page-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.app-page-title h2{margin:0;font-size:19px;font-weight:800;letter-spacing:.2px}.app-muted{color:var(--app-muted)}.page-stack{display:flex;flex-direction:column;gap:14px;min-width:0}.el-card{border-radius:var(--app-radius-lg);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.el-button{border-radius:10px;font-weight:600}.el-input__wrapper,.el-textarea__inner,.el-select__wrapper,.el-input-number,.el-picker__wrapper{border-radius:10px}.el-table{border-radius:10px;overflow:hidden}.el-table th.el-table__cell{background:#f8fafc;color:#334155;font-weight:700}.el-table td.el-table__cell,.el-table th.el-table__cell{padding-top:11px;padding-bottom:11px}.el-table .el-table__row:hover>td.el-table__cell{background:#f8fbff}.el-tag{border-radius:999px}.el-dialog{border-radius:var(--app-radius-lg)}@media(max-width:768px){.app-page-title{flex-wrap:wrap;align-items:flex-start}.app-page-title h2{font-size:17px}.el-dialog{max-width:92vw}.el-form-item{flex-direction:column;align-items:stretch}.el-form-item__label{width:auto!important;justify-content:flex-start!important;padding:0 0 6px!important;line-height:1.4;text-align:left!important}.el-form-item__content{margin-left:0!important;width:100%}}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.section-title{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.table-wrap{overflow-x:auto;border-radius:10px;border:1px solid var(--app-border);background:#fff}.pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;flex-wrap:wrap}.page-hint{font-size:12px}.el-tabs__item{font-weight:700}.el-form-item{margin-bottom:18px}@media(max-width:768px){.pagination{justify-content:flex-start}}@media(max-width:900px){.toolbar{width:100%}.toolbar>*{min-width:0}}@media(max-width:768px){.app-page-title>div{width:100%}.app-page-title .toolbar{width:100%}.toolbar>*{flex:1 1 calc(50% - 6px)}.toolbar .el-button,.toolbar .el-select,.toolbar .el-input,.toolbar .el-input-number{width:100%!important}.section-head{align-items:flex-start}.section-head>*{width:100%}.table-wrap{-webkit-overflow-scrolling:touch}.table-wrap .el-table{min-width:700px}.el-pagination{width:100%;justify-content:flex-start}}@media(max-width:520px){.toolbar>*{flex-basis:100%}.table-wrap .el-table{min-width:620px}} diff --git a/static/admin/assets/index-C1f9ticl.js b/static/admin/assets/index-DOvMEmc8.js similarity index 90% rename from static/admin/assets/index-C1f9ticl.js rename to static/admin/assets/index-DOvMEmc8.js index 40d8c53..5251037 100644 --- a/static/admin/assets/index-C1f9ticl.js +++ b/static/admin/assets/index-DOvMEmc8.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ReportPage-fzVH-d9u.js","./vendor-element-B5S5pUKo.js","./vendor-vue-CVxSw_oJ.js","./vendor-misc-BeoNyvBp.js","./vendor-element-C68yOrAy.css","./email-px7YBG2O.js","./tasks-Bep0SUyu.js","./system-ZDPnxnIu.js","./MetricGrid-BnihYB_8.js","./MetricGrid-yP_dkP6X.css","./vendor-axios-B9ygI19o.js","./ReportPage-BCQBCnjY.css","./UsersPage-DJZUCpfb.js","./users-te9ySk34.js","./UsersPage-BNDnhJe0.css","./FeedbacksPage-BAnFKHSL.js","./FeedbacksPage-mrXjCiV2.css","./LogsPage-DFPeq0bL.js","./LogsPage-D1bozCEo.css","./AnnouncementsPage-C6UgwLIT.js","./AnnouncementsPage-DOwZaaOu.css","./EmailPage-CATruPK6.js","./EmailPage-BmPCDPYC.css","./SecurityPage-xwMQfhuh.js","./SecurityPage-DN76ndc_.css","./SystemPage-D3eBPCNe.js","./SystemPage-BhhEz4Qz.css","./SettingsPage-DRqlQLxJ.js","./SettingsPage-BAa-Qu3q.css"])))=>i.map(i=>d[i]); -import{aj as h,D as S,q as y,ax as Se,ay as ke,r as O,c as Z,o as Te,R as Ae,E as i,G as ee,L as _,t as m,n as I,K as te,a3 as ne,H as ae,J as C,I as se,az as Pe,p as $,aA as Re,aB as Le,as as xe}from"./vendor-vue-CVxSw_oJ.js";import{E as ie,a as le,d as Ne,u as Oe,c as Ce,l as Be,b as De,m as Me,e as Ve,t as Ie,s as Fe,i as Ke,z as $e}from"./vendor-element-B5S5pUKo.js";import{a as qe}from"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();const ue=(e,t)=>{const n=e.__vccOpts||e;for(const[s,a]of t)n[s]=a;return n},Ue={};function Ge(e,t){const n=h("RouterView");return y(),S(n)}const je=ue(Ue,[["render",Ge]]),He="modulepreload",Ye=function(e,t){return new URL(e,t).href},oe={},k=function(t,n,s){let a=Promise.resolve();if(n&&n.length>0){let T=function(f){return Promise.all(f.map(g=>Promise.resolve(g).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};const l=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),v=r?.nonce||r?.getAttribute("nonce");a=T(n.map(f=>{if(f=Ye(f,s),f in oe)return;oe[f]=!0;const g=f.endsWith(".css"),w=g?'[rel="stylesheet"]':"";if(s)for(let A=l.length-1;A>=0;A--){const E=l[A];if(E.href===f&&(!g||E.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${w}`))return;const b=document.createElement("link");if(b.rel=g?"stylesheet":He,g||(b.as="script"),b.crossOrigin="",b.href=f,v&&b.setAttribute("nonce",v),document.head.appendChild(b),g)return new Promise((A,E)=>{b.addEventListener("load",A),b.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(l){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=l,window.dispatchEvent(r),!r.defaultPrevented)throw l}return a.then(l=>{for(const r of l||[])r.status==="rejected"&&o(r.reason);return t().catch(o)})};let re="",ce=0;const ze=new Set([408,425,429,500,502,503,504]),We=1,Je=300;function B(e,t,n=1500){const s=Date.now();e===re&&s-ce=We)return!1;const s=String(e?.code||"");if(s==="ECONNABORTED"||s==="ERR_NETWORK")return!0;const a=Number(e?.response?.status||0);return ze.has(a)}function et(e){return new Promise(t=>{window.setTimeout(t,Math.max(0,Number(e||0)))})}async function tt(e,t){const n=e?.config||{},s=Number(n.__retry_count||0);n.__retry_count=s+1;const a=Je*(s+1);return await et(a),t.request(n)}const p=qe.create({baseURL:"/yuyx/api",timeout:3e4,withCredentials:!0});let D=null;async function nt(){return D||(D=ie.prompt("请输入管理员密码进行二次确认","安全确认",{inputType:"password",inputPlaceholder:"管理员密码",confirmButtonText:"确认",cancelButtonText:"取消",inputValidator:e=>!!String(e||"").trim(),inputErrorMessage:"密码不能为空"}).then(async e=>{const t=String(e.value||"").trim();await p.post("/admin/reauth",{password:t}),le.success("已通过安全确认")}).finally(()=>{D=null}),D)}p.interceptors.request.use(e=>{const t=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(t)){const n=Xe("csrf_token");n&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=n)}return e});p.interceptors.response.use(e=>e,async e=>{const t=e?.response?.status,n=e?.response?.data,s=n?.error||n?.message||e?.message||"请求失败",a=!!e?.config?.__silent;if(n?.code==="reauth_required"&&e?.config&&!e.config.__reauth_retry)try{return e.config.__reauth_retry=!0,await nt(),p.request(e.config)}catch{return Promise.reject(e)}return Ze(e)?tt(e,p):(t===401?(a||B("401",s,3e3),(window.location?.pathname||"").startsWith("/yuyx")||(window.location.href="/yuyx")):t===403?a||B("403",s,5e3):t?a||B(`http:${t}:${s}`,s):e?.code==="ECONNABORTED"?a||B("timeout","请求超时",3e3):a||B(`net:${s}`,s,3e3),Promise.reject(e))});function de(e,t=0){let n=!1,s=null,a=0,o=null;async function l(v={}){const T=!!v?.force,f=Date.now();return!T&&n&&fe()).then(g=>{s=g,n=!0;const w=Math.max(0,Number(t)||0);return a=Date.now()+w,g}).finally(()=>{o=null})),o)}function r(){n=!1,s=null,a=0,o=null}return{run:l,clear:r}}const at=1e4,fe=de(async()=>{const{data:e}=await p.get("/feedbacks",{params:{limit:1,offset:0}});return e?.stats},at);async function Ut(e=""){const{data:t}=await p.get("/feedbacks",{params:e?{status:e}:{}});return t}async function st(e={}){return fe.run(e)}function q(){fe.clear()}async function Gt(e,t){const{data:n}=await p.post(`/feedbacks/${e}/reply`,{reply:t});return q(),n}async function jt(e){const{data:t}=await p.post(`/feedbacks/${e}/close`);return q(),t}async function Ht(e){const{data:t}=await p.delete(`/feedbacks/${e}`);return q(),t}const ot=15e3,rt=de(async()=>{const{data:e}=await p.get("/stats");return e},ot);async function ct(e={}){return rt.run(e)}async function it(e={},t={}){const{data:n}=await p.get("/kdocs/status",{params:e,...t});return n}async function Yt(e={}){const t={force:!0,...e},{data:n}=await p.post("/kdocs/qr",t);return n}async function zt(){const{data:e}=await p.post("/kdocs/clear-login",{});return e}const U="admin:kdocs:status:v1",me=300*1e3;let P=null,L=0,R=null;function G(){return Date.now()}function F(e){return!e||typeof e!="object"?{}:e}function lt(){try{const e=window.sessionStorage.getItem(U);if(!e)return null;const t=JSON.parse(e);if(!t||typeof t!="object")return null;const n=Number(t.updated_at||0),s=F(t.status);return n?{status:s,updatedAt:n}:null}catch{return null}}function ut(e,t){try{window.sessionStorage.setItem(U,JSON.stringify({status:F(e),updated_at:Number(t||G())}))}catch{}}function dt(){if(P!==null)return;const e=lt();e&&(P=e.status,L=e.updatedAt)}function pe(e){return P=F(e),L=G(),ut(P,L),P}function ft(e){if(P===null||!L)return!1;const t=Number(e);return!Number.isFinite(t)||t<0?!0:G()-L<=t}function mt(e={}){dt();const t=e.maxAgeMs??me;return ft(t)?F(P):null}function Wt(e){return pe(e)}function pt(){P=null,L=0,R=null;try{window.sessionStorage.removeItem(U)}catch{}}async function _t(e={}){const{force:t=!1,maxAgeMs:n=me,silent:s=!0,live:a=0}=e;if(!t){const r=mt({maxAgeMs:n});if(r)return r}return R||(R=it(a?{live:1}:{},{__silent:!!s,__no_retry:!0,timeout:8e3}).then(r=>pe(r||{})).finally(()=>{R=null}),R)}const ht={class:"menu-label"},yt={key:1,class:"menu-label"},gt={class:"header-left"},bt={class:"header-right"},vt={class:"admin-name"},wt={class:"main-shell"},Et={class:"menu-label"},St={key:1,class:"menu-label"},kt=6e4,Tt=18e4,At={__name:"AdminLayout",setup(e){const t=Se(),n=ke(),s=O({}),a=Z(()=>s.value?.admin_username||"");async function o(d={}){s.value=await ct(d)}const l=O(!1),r=O(0);let v=null;async function T(d=null){if(d&&typeof d=="object"){Object.prototype.hasOwnProperty.call(d,"pendingFeedbacks")&&(r.value=Number(d.pendingFeedbacks||0));return}if(!l.value){l.value=!0;try{const c=await st();r.value=Number(c?.pending||0)}finally{l.value=!1}}}function f(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function g(){return f()?Tt:kt}function w(){v&&(window.clearTimeout(v),v=null)}function b(){w(),v=window.setTimeout(async()=>{v=null,await T().catch(()=>{}),b()},g())}function A(){b()}$("refreshStats",o),$("adminStats",s),$("refreshNavBadges",T);const E=O(!1),x=O(!1);let M;function K(){E.value=!!M?.matches,E.value||(x.value=!1)}Te(async()=>{M=window.matchMedia("(max-width: 768px)"),M.addEventListener?.("change",K),K(),_t({maxAgeMs:6e4,silent:!0}).catch(()=>{}),await o(),await T(),b(),window.addEventListener("visibilitychange",A)}),Ae(()=>{M?.removeEventListener?.("change",K),w(),window.removeEventListener("visibilitychange",A)});const j=[{path:"/reports",label:"报表",icon:Ne},{path:"/users",label:"用户",icon:Oe},{path:"/feedbacks",label:"反馈",icon:Ce,badgeKey:"feedbacks"},{path:"/logs",label:"任务日志",icon:Be},{path:"/announcements",label:"公告",icon:De},{path:"/email",label:"邮件",icon:Me},{path:"/security",label:"安全防护",icon:Ve},{path:"/system",label:"系统配置",icon:Ie},{path:"/settings",label:"设置",icon:Fe}],H=Z(()=>t.path);function V(d){return d?.badgeKey&&d.badgeKey==="feedbacks"?Number(r.value||0):0}async function _e(){let d=!1;try{await ie.confirm("确定退出管理员登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"}),d=!0}catch(c){const N=String(c||"").toLowerCase();if(N==="cancel"||N==="close")return;try{d=window.confirm("确定退出管理员登录吗?")}catch{d=!1}}if(d)try{await p.post("/logout")}finally{pt(),window.location.href="/yuyx"}}async function Y(d){await n.push(d),x.value=!1}return(d,c)=>{const N=h("el-icon"),z=h("el-badge"),W=h("el-menu-item"),J=h("el-menu"),he=h("el-aside"),X=h("el-button"),ye=h("el-header"),ge=h("RouterView"),be=h("el-skeleton"),ve=h("el-card"),we=h("el-main"),Q=h("el-container"),Ee=h("el-drawer");return y(),S(Q,{class:"layout-root"},{default:i(()=>[E.value?ee("",!0):(y(),S(he,{key:0,width:"220px",class:"layout-aside"},{default:i(()=>[c[2]||(c[2]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(N,null,{default:i(()=>[(y(),S(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),S(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",ht,C(u.label),1)]),_:2},1032,["value"])):(y(),I("span",yt,C(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),_(Q,null,{default:i(()=>[_(ye,{class:"layout-header"},{default:i(()=>[m("div",gt,[E.value?(y(),S(X,{key:0,text:"",class:"header-menu-btn",onClick:c[0]||(c[0]=u=>x.value=!0)},{default:i(()=>[...c[3]||(c[3]=[se(" 菜单 ",-1)])]),_:1})):ee("",!0),c[4]||(c[4]=m("div",{class:"header-title"},"后台管理系统",-1))]),m("div",bt,[m("div",vt,[c[5]||(c[5]=m("span",{class:"app-muted"},"管理员",-1)),m("strong",null,C(a.value||"-"),1)]),_(X,{type:"primary",plain:"",class:"logout-btn",onClick:_e},{default:i(()=>[...c[6]||(c[6]=[se("退出",-1)])]),_:1})])]),_:1}),_(we,{class:"layout-main"},{default:i(()=>[m("div",wt,[(y(),S(Pe,null,{default:i(()=>[_(ge)]),fallback:i(()=>[_(ve,{shadow:"never","body-style":{padding:"16px"},class:"fallback-card"},{default:i(()=>[_(be,{rows:5,animated:""})]),_:1})]),_:1}))])]),_:1})]),_:1}),_(Ee,{modelValue:x.value,"onUpdate:modelValue":c[1]||(c[1]=u=>x.value=u),size:"min(82vw, 280px)",direction:"ltr","with-header":!1},{default:i(()=>[c[7]||(c[7]=m("div",{class:"drawer-brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(N,null,{default:i(()=>[(y(),S(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),S(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",Et,C(u.label),1)]),_:2},1032,["value"])):(y(),I("span",St,C(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1},8,["modelValue"])]),_:1})}}},Pt=ue(At,[["__scopeId","data-v-c6ed865d"]]),Rt=()=>k(()=>import("./ReportPage-fzVH-d9u.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]),import.meta.url),Lt=()=>k(()=>import("./UsersPage-DJZUCpfb.js"),__vite__mapDeps([12,13,1,2,3,4,10,14]),import.meta.url),xt=()=>k(()=>import("./FeedbacksPage-BAnFKHSL.js"),__vite__mapDeps([15,8,2,9,1,3,4,10,16]),import.meta.url),Nt=()=>k(()=>import("./LogsPage-DFPeq0bL.js"),__vite__mapDeps([17,13,6,1,2,3,4,10,18]),import.meta.url),Ot=()=>k(()=>import("./AnnouncementsPage-C6UgwLIT.js"),__vite__mapDeps([19,1,2,3,4,10,20]),import.meta.url),Ct=()=>k(()=>import("./EmailPage-CATruPK6.js"),__vite__mapDeps([21,5,8,2,9,1,3,4,10,22]),import.meta.url),Bt=()=>k(()=>import("./SecurityPage-xwMQfhuh.js"),__vite__mapDeps([23,8,2,9,1,3,4,10,24]),import.meta.url),Dt=()=>k(()=>import("./SystemPage-D3eBPCNe.js"),__vite__mapDeps([25,7,1,2,3,4,10,26]),import.meta.url),Mt=()=>k(()=>import("./SettingsPage-DRqlQLxJ.js"),__vite__mapDeps([27,1,2,3,4,10,28]),import.meta.url),Vt=[{path:"/",component:Pt,children:[{path:"",redirect:"/reports"},{path:"/pending",redirect:"/reports"},{path:"/stats",redirect:"/reports"},{path:"/reports",name:"reports",component:Rt},{path:"/users",name:"users",component:Lt},{path:"/feedbacks",name:"feedbacks",component:xt},{path:"/logs",name:"logs",component:Nt},{path:"/announcements",name:"announcements",component:Ot},{path:"/email",name:"email",component:Ct},{path:"/security",name:"security",component:Bt},{path:"/system",name:"system",component:Dt},{path:"/settings",name:"settings",component:Mt}]}],It=Re({history:Le(),routes:Vt});xe(je).use(It).use(Ke,{locale:$e}).mount("#app");export{ue as _,p as a,Ut as b,de as c,jt as d,Ht as e,st as f,mt as g,Yt as h,zt as i,it as j,_t as p,Gt as r,Wt as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ReportPage-BMEJM5Hr.js","./vendor-element-B5S5pUKo.js","./vendor-vue-CVxSw_oJ.js","./vendor-misc-BeoNyvBp.js","./vendor-element-C68yOrAy.css","./email-Mh1SHQbX.js","./tasks-B7oNpIBD.js","./system-CYbWdReq.js","./MetricGrid-C3Xjc9mZ.js","./MetricGrid-BR486o_b.css","./vendor-axios-B9ygI19o.js","./ReportPage-IaDpUFfl.css","./UsersPage-RI5S3snx.js","./users-DzDcz9C_.js","./UsersPage-CgYh6JHW.css","./FeedbacksPage-DrMVqBKf.js","./FeedbacksPage-CPmSqIaj.css","./LogsPage-Cy6Q0ave.js","./LogsPage-BUgx3sZr.css","./AnnouncementsPage-Dagm5PzE.js","./AnnouncementsPage-tpO97PUg.css","./EmailPage-DiZA9Kx_.js","./EmailPage-CTHxGzDv.css","./SecurityPage-yzYEGeTN.js","./SecurityPage-C2-mJ7eD.css","./SystemPage-DrM9-RI5.js","./SystemPage-CTs6qr36.css","./SettingsPage-DF5fL8gq.js","./SettingsPage-D-iYz1zh.css"])))=>i.map(i=>d[i]); +import{aj as h,D as S,q as y,ax as Se,ay as ke,r as O,c as Z,o as Te,R as Ae,E as i,G as ee,L as _,t as m,n as I,K as te,a3 as ne,H as ae,J as C,I as se,az as Pe,p as $,aA as Re,aB as Le,as as xe}from"./vendor-vue-CVxSw_oJ.js";import{E as ie,a as le,d as Ne,u as Oe,c as Ce,l as Be,b as De,m as Me,e as Ve,t as Ie,s as Fe,i as Ke,z as $e}from"./vendor-element-B5S5pUKo.js";import{a as qe}from"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const o of a)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(a){const o={};return a.integrity&&(o.integrity=a.integrity),a.referrerPolicy&&(o.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?o.credentials="include":a.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(a){if(a.ep)return;a.ep=!0;const o=n(a);fetch(a.href,o)}})();const ue=(e,t)=>{const n=e.__vccOpts||e;for(const[s,a]of t)n[s]=a;return n},Ue={};function Ge(e,t){const n=h("RouterView");return y(),S(n)}const je=ue(Ue,[["render",Ge]]),He="modulepreload",Ye=function(e,t){return new URL(e,t).href},oe={},k=function(t,n,s){let a=Promise.resolve();if(n&&n.length>0){let T=function(f){return Promise.all(f.map(g=>Promise.resolve(g).then(w=>({status:"fulfilled",value:w}),w=>({status:"rejected",reason:w}))))};const l=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),v=r?.nonce||r?.getAttribute("nonce");a=T(n.map(f=>{if(f=Ye(f,s),f in oe)return;oe[f]=!0;const g=f.endsWith(".css"),w=g?'[rel="stylesheet"]':"";if(s)for(let A=l.length-1;A>=0;A--){const E=l[A];if(E.href===f&&(!g||E.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${w}`))return;const b=document.createElement("link");if(b.rel=g?"stylesheet":He,g||(b.as="script"),b.crossOrigin="",b.href=f,v&&b.setAttribute("nonce",v),document.head.appendChild(b),g)return new Promise((A,E)=>{b.addEventListener("load",A),b.addEventListener("error",()=>E(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(l){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=l,window.dispatchEvent(r),!r.defaultPrevented)throw l}return a.then(l=>{for(const r of l||[])r.status==="rejected"&&o(r.reason);return t().catch(o)})};let re="",ce=0;const ze=new Set([408,425,429,500,502,503,504]),We=1,Je=300;function B(e,t,n=1500){const s=Date.now();e===re&&s-ce=We)return!1;const s=String(e?.code||"");if(s==="ECONNABORTED"||s==="ERR_NETWORK")return!0;const a=Number(e?.response?.status||0);return ze.has(a)}function et(e){return new Promise(t=>{window.setTimeout(t,Math.max(0,Number(e||0)))})}async function tt(e,t){const n=e?.config||{},s=Number(n.__retry_count||0);n.__retry_count=s+1;const a=Je*(s+1);return await et(a),t.request(n)}const p=qe.create({baseURL:"/yuyx/api",timeout:3e4,withCredentials:!0});let D=null;async function nt(){return D||(D=ie.prompt("请输入管理员密码进行二次确认","安全确认",{inputType:"password",inputPlaceholder:"管理员密码",confirmButtonText:"确认",cancelButtonText:"取消",inputValidator:e=>!!String(e||"").trim(),inputErrorMessage:"密码不能为空"}).then(async e=>{const t=String(e.value||"").trim();await p.post("/admin/reauth",{password:t}),le.success("已通过安全确认")}).finally(()=>{D=null}),D)}p.interceptors.request.use(e=>{const t=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(t)){const n=Xe("csrf_token");n&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=n)}return e});p.interceptors.response.use(e=>e,async e=>{const t=e?.response?.status,n=e?.response?.data,s=n?.error||n?.message||e?.message||"请求失败",a=!!e?.config?.__silent;if(n?.code==="reauth_required"&&e?.config&&!e.config.__reauth_retry)try{return e.config.__reauth_retry=!0,await nt(),p.request(e.config)}catch{return Promise.reject(e)}return Ze(e)?tt(e,p):(t===401?(a||B("401",s,3e3),(window.location?.pathname||"").startsWith("/yuyx")||(window.location.href="/yuyx")):t===403?a||B("403",s,5e3):t?a||B(`http:${t}:${s}`,s):e?.code==="ECONNABORTED"?a||B("timeout","请求超时",3e3):a||B(`net:${s}`,s,3e3),Promise.reject(e))});function de(e,t=0){let n=!1,s=null,a=0,o=null;async function l(v={}){const T=!!v?.force,f=Date.now();return!T&&n&&fe()).then(g=>{s=g,n=!0;const w=Math.max(0,Number(t)||0);return a=Date.now()+w,g}).finally(()=>{o=null})),o)}function r(){n=!1,s=null,a=0,o=null}return{run:l,clear:r}}const at=1e4,fe=de(async()=>{const{data:e}=await p.get("/feedbacks",{params:{limit:1,offset:0}});return e?.stats},at);async function Ut(e=""){const{data:t}=await p.get("/feedbacks",{params:e?{status:e}:{}});return t}async function st(e={}){return fe.run(e)}function q(){fe.clear()}async function Gt(e,t){const{data:n}=await p.post(`/feedbacks/${e}/reply`,{reply:t});return q(),n}async function jt(e){const{data:t}=await p.post(`/feedbacks/${e}/close`);return q(),t}async function Ht(e){const{data:t}=await p.delete(`/feedbacks/${e}`);return q(),t}const ot=15e3,rt=de(async()=>{const{data:e}=await p.get("/stats");return e},ot);async function ct(e={}){return rt.run(e)}async function it(e={},t={}){const{data:n}=await p.get("/kdocs/status",{params:e,...t});return n}async function Yt(e={}){const t={force:!0,...e},{data:n}=await p.post("/kdocs/qr",t);return n}async function zt(){const{data:e}=await p.post("/kdocs/clear-login",{});return e}const U="admin:kdocs:status:v1",me=300*1e3;let P=null,L=0,R=null;function G(){return Date.now()}function F(e){return!e||typeof e!="object"?{}:e}function lt(){try{const e=window.sessionStorage.getItem(U);if(!e)return null;const t=JSON.parse(e);if(!t||typeof t!="object")return null;const n=Number(t.updated_at||0),s=F(t.status);return n?{status:s,updatedAt:n}:null}catch{return null}}function ut(e,t){try{window.sessionStorage.setItem(U,JSON.stringify({status:F(e),updated_at:Number(t||G())}))}catch{}}function dt(){if(P!==null)return;const e=lt();e&&(P=e.status,L=e.updatedAt)}function pe(e){return P=F(e),L=G(),ut(P,L),P}function ft(e){if(P===null||!L)return!1;const t=Number(e);return!Number.isFinite(t)||t<0?!0:G()-L<=t}function mt(e={}){dt();const t=e.maxAgeMs??me;return ft(t)?F(P):null}function Wt(e){return pe(e)}function pt(){P=null,L=0,R=null;try{window.sessionStorage.removeItem(U)}catch{}}async function _t(e={}){const{force:t=!1,maxAgeMs:n=me,silent:s=!0,live:a=0}=e;if(!t){const r=mt({maxAgeMs:n});if(r)return r}return R||(R=it(a?{live:1}:{},{__silent:!!s,__no_retry:!0,timeout:8e3}).then(r=>pe(r||{})).finally(()=>{R=null}),R)}const ht={class:"menu-label"},yt={key:1,class:"menu-label"},gt={class:"header-left"},bt={class:"header-right"},vt={class:"admin-name"},wt={class:"main-shell"},Et={class:"menu-label"},St={key:1,class:"menu-label"},kt=6e4,Tt=18e4,At={__name:"AdminLayout",setup(e){const t=Se(),n=ke(),s=O({}),a=Z(()=>s.value?.admin_username||"");async function o(d={}){s.value=await ct(d)}const l=O(!1),r=O(0);let v=null;async function T(d=null){if(d&&typeof d=="object"){Object.prototype.hasOwnProperty.call(d,"pendingFeedbacks")&&(r.value=Number(d.pendingFeedbacks||0));return}if(!l.value){l.value=!0;try{const c=await st();r.value=Number(c?.pending||0)}finally{l.value=!1}}}function f(){return typeof document>"u"?!1:document.visibilityState==="hidden"}function g(){return f()?Tt:kt}function w(){v&&(window.clearTimeout(v),v=null)}function b(){w(),v=window.setTimeout(async()=>{v=null,await T().catch(()=>{}),b()},g())}function A(){b()}$("refreshStats",o),$("adminStats",s),$("refreshNavBadges",T);const E=O(!1),x=O(!1);let M;function K(){E.value=!!M?.matches,E.value||(x.value=!1)}Te(async()=>{M=window.matchMedia("(max-width: 768px)"),M.addEventListener?.("change",K),K(),_t({maxAgeMs:6e4,silent:!0}).catch(()=>{}),await o(),await T(),b(),window.addEventListener("visibilitychange",A)}),Ae(()=>{M?.removeEventListener?.("change",K),w(),window.removeEventListener("visibilitychange",A)});const j=[{path:"/reports",label:"报表",icon:Ne},{path:"/users",label:"用户",icon:Oe},{path:"/feedbacks",label:"反馈",icon:Ce,badgeKey:"feedbacks"},{path:"/logs",label:"任务日志",icon:Be},{path:"/announcements",label:"公告",icon:De},{path:"/email",label:"邮件",icon:Me},{path:"/security",label:"安全防护",icon:Ve},{path:"/system",label:"系统配置",icon:Ie},{path:"/settings",label:"设置",icon:Fe}],H=Z(()=>t.path);function V(d){return d?.badgeKey&&d.badgeKey==="feedbacks"?Number(r.value||0):0}async function _e(){let d=!1;try{await ie.confirm("确定退出管理员登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"}),d=!0}catch(c){const N=String(c||"").toLowerCase();if(N==="cancel"||N==="close")return;try{d=window.confirm("确定退出管理员登录吗?")}catch{d=!1}}if(d)try{await p.post("/logout")}finally{pt(),window.location.href="/yuyx"}}async function Y(d){await n.push(d),x.value=!1}return(d,c)=>{const N=h("el-icon"),z=h("el-badge"),W=h("el-menu-item"),J=h("el-menu"),he=h("el-aside"),X=h("el-button"),ye=h("el-header"),ge=h("RouterView"),be=h("el-skeleton"),ve=h("el-card"),we=h("el-main"),Q=h("el-container"),Ee=h("el-drawer");return y(),S(Q,{class:"layout-root"},{default:i(()=>[E.value?ee("",!0):(y(),S(he,{key:0,width:"220px",class:"layout-aside"},{default:i(()=>[c[2]||(c[2]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(N,null,{default:i(()=>[(y(),S(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),S(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",ht,C(u.label),1)]),_:2},1032,["value"])):(y(),I("span",yt,C(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),_(Q,null,{default:i(()=>[_(ye,{class:"layout-header"},{default:i(()=>[m("div",gt,[E.value?(y(),S(X,{key:0,text:"",class:"header-menu-btn",onClick:c[0]||(c[0]=u=>x.value=!0)},{default:i(()=>[...c[3]||(c[3]=[se(" 菜单 ",-1)])]),_:1})):ee("",!0),c[4]||(c[4]=m("div",{class:"header-title"},"后台管理系统",-1))]),m("div",bt,[m("div",vt,[c[5]||(c[5]=m("span",{class:"app-muted"},"管理员",-1)),m("strong",null,C(a.value||"-"),1)]),_(X,{type:"primary",plain:"",class:"logout-btn",onClick:_e},{default:i(()=>[...c[6]||(c[6]=[se("退出",-1)])]),_:1})])]),_:1}),_(we,{class:"layout-main"},{default:i(()=>[m("div",wt,[(y(),S(Pe,null,{default:i(()=>[_(ge)]),fallback:i(()=>[_(ve,{shadow:"never","body-style":{padding:"16px"},class:"fallback-card"},{default:i(()=>[_(be,{rows:5,animated:""})]),_:1})]),_:1}))])]),_:1})]),_:1}),_(Ee,{modelValue:x.value,"onUpdate:modelValue":c[1]||(c[1]=u=>x.value=u),size:"min(82vw, 280px)",direction:"ltr","with-header":!1},{default:i(()=>[c[7]||(c[7]=m("div",{class:"drawer-brand"},[m("div",{class:"brand-title"},"后台管理"),m("div",{class:"brand-sub app-muted"},"知识管理平台")],-1)),_(J,{"default-active":H.value,class:"aside-menu",router:"",onSelect:Y},{default:i(()=>[(y(),I(te,null,ne(j,u=>_(W,{key:u.path,index:u.path},{default:i(()=>[_(N,null,{default:i(()=>[(y(),S(ae(u.icon)))]),_:2},1024),V(u)>0?(y(),S(z,{key:0,value:V(u),max:99,class:"menu-badge"},{default:i(()=>[m("span",Et,C(u.label),1)]),_:2},1032,["value"])):(y(),I("span",St,C(u.label),1))]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1},8,["modelValue"])]),_:1})}}},Pt=ue(At,[["__scopeId","data-v-520fd502"]]),Rt=()=>k(()=>import("./ReportPage-BMEJM5Hr.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11]),import.meta.url),Lt=()=>k(()=>import("./UsersPage-RI5S3snx.js"),__vite__mapDeps([12,13,1,2,3,4,10,14]),import.meta.url),xt=()=>k(()=>import("./FeedbacksPage-DrMVqBKf.js"),__vite__mapDeps([15,8,2,9,1,3,4,10,16]),import.meta.url),Nt=()=>k(()=>import("./LogsPage-Cy6Q0ave.js"),__vite__mapDeps([17,13,6,1,2,3,4,10,18]),import.meta.url),Ot=()=>k(()=>import("./AnnouncementsPage-Dagm5PzE.js"),__vite__mapDeps([19,1,2,3,4,10,20]),import.meta.url),Ct=()=>k(()=>import("./EmailPage-DiZA9Kx_.js"),__vite__mapDeps([21,5,8,2,9,1,3,4,10,22]),import.meta.url),Bt=()=>k(()=>import("./SecurityPage-yzYEGeTN.js"),__vite__mapDeps([23,8,2,9,1,3,4,10,24]),import.meta.url),Dt=()=>k(()=>import("./SystemPage-DrM9-RI5.js"),__vite__mapDeps([25,7,1,2,3,4,10,26]),import.meta.url),Mt=()=>k(()=>import("./SettingsPage-DF5fL8gq.js"),__vite__mapDeps([27,1,2,3,4,10,28]),import.meta.url),Vt=[{path:"/",component:Pt,children:[{path:"",redirect:"/reports"},{path:"/pending",redirect:"/reports"},{path:"/stats",redirect:"/reports"},{path:"/reports",name:"reports",component:Rt},{path:"/users",name:"users",component:Lt},{path:"/feedbacks",name:"feedbacks",component:xt},{path:"/logs",name:"logs",component:Nt},{path:"/announcements",name:"announcements",component:Ot},{path:"/email",name:"email",component:Ct},{path:"/security",name:"security",component:Bt},{path:"/system",name:"system",component:Dt},{path:"/settings",name:"settings",component:Mt}]}],It=Re({history:Le(),routes:Vt});xe(je).use(It).use(Ke,{locale:$e}).mount("#app");export{ue as _,p as a,Ut as b,de as c,jt as d,Ht as e,st as f,mt as g,Yt as h,zt as i,it as j,_t as p,Gt as r,Wt as u}; diff --git a/static/admin/assets/system-CYbWdReq.js b/static/admin/assets/system-CYbWdReq.js new file mode 100644 index 0000000..933b17c --- /dev/null +++ b/static/admin/assets/system-CYbWdReq.js @@ -0,0 +1 @@ +import{c as s,a as n}from"./index-DOvMEmc8.js";const o=s(async()=>{const{data:t}=await n.get("/system/config");return t},15e3);async function i(t={}){return o.run(t)}async function e(t){const{data:a}=await n.post("/system/config",t);return o.clear(),a}async function r(){const{data:t}=await n.get("/social-login/config");return t}async function f(t){const{data:a}=await n.post("/social-login/config",t||{});return o.clear(),a}async function g(t){const{data:a}=await n.post("/social-login/test",t||{});return a}export{r as a,f as b,i as f,g as t,e as u}; diff --git a/static/admin/assets/system-ZDPnxnIu.js b/static/admin/assets/system-ZDPnxnIu.js deleted file mode 100644 index 25fa192..0000000 --- a/static/admin/assets/system-ZDPnxnIu.js +++ /dev/null @@ -1 +0,0 @@ -import{c as s,a}from"./index-C1f9ticl.js";const e=s(async()=>{const{data:t}=await a.get("/system/config");return t},15e3);async function o(t={}){return e.run(t)}async function r(t){const{data:n}=await a.post("/system/config",t);return e.clear(),n}export{o as f,r as u}; diff --git a/static/admin/assets/tasks-Bep0SUyu.js b/static/admin/assets/tasks-B7oNpIBD.js similarity index 93% rename from static/admin/assets/tasks-Bep0SUyu.js rename to static/admin/assets/tasks-B7oNpIBD.js index 0aa11cf..653acb4 100644 --- a/static/admin/assets/tasks-Bep0SUyu.js +++ b/static/admin/assets/tasks-B7oNpIBD.js @@ -1 +1 @@ -import{c as s,a}from"./index-C1f9ticl.js";const c=s(async()=>{const{data:t}=await a.get("/server/info");return t},3e4),o=s(async()=>{const{data:t}=await a.get("/docker_stats");return t},8e3),u=s(async()=>{const{data:t}=await a.get("/request_metrics");return t},1e4),i=s(async()=>{const{data:t}=await a.get("/slow_sql_metrics");return t},1e4),e=s(async()=>{const{data:t}=await a.get("/task/stats");return t},4e3),r=s(async()=>{const{data:t}=await a.get("/task/running");return t},2e3);async function g(t={}){return c.run(t)}async function y(t={}){return o.run(t)}async function d(t={}){return u.run(t)}async function k(t={}){return i.run(t)}async function l(t={}){return e.run(t)}async function w(t={}){return r.run(t)}async function _(t){const{data:n}=await a.get("/task/logs",{params:t});return n}async function h(t){const{data:n}=await a.post("/task/logs/clear",{days:t});return e.clear(),r.clear(),n}export{w as a,g as b,y as c,d,k as e,l as f,_ as g,h}; +import{c as s,a}from"./index-DOvMEmc8.js";const c=s(async()=>{const{data:t}=await a.get("/server/info");return t},3e4),o=s(async()=>{const{data:t}=await a.get("/docker_stats");return t},8e3),u=s(async()=>{const{data:t}=await a.get("/request_metrics");return t},1e4),i=s(async()=>{const{data:t}=await a.get("/slow_sql_metrics");return t},1e4),e=s(async()=>{const{data:t}=await a.get("/task/stats");return t},4e3),r=s(async()=>{const{data:t}=await a.get("/task/running");return t},2e3);async function g(t={}){return c.run(t)}async function y(t={}){return o.run(t)}async function d(t={}){return u.run(t)}async function k(t={}){return i.run(t)}async function l(t={}){return e.run(t)}async function w(t={}){return r.run(t)}async function _(t){const{data:n}=await a.get("/task/logs",{params:t});return n}async function h(t){const{data:n}=await a.post("/task/logs/clear",{days:t});return e.clear(),r.clear(),n}export{w as a,g as b,y as c,d,k as e,l as f,_ as g,h}; diff --git a/static/admin/assets/users-te9ySk34.js b/static/admin/assets/users-DzDcz9C_.js similarity index 90% rename from static/admin/assets/users-te9ySk34.js rename to static/admin/assets/users-DzDcz9C_.js index 35d9d92..ccb411b 100644 --- a/static/admin/assets/users-te9ySk34.js +++ b/static/admin/assets/users-DzDcz9C_.js @@ -1 +1 @@ -import{a as t}from"./index-C1f9ticl.js";async function n(){const{data:s}=await t.get("/users");return s}async function o(s){const{data:a}=await t.post(`/users/${s}/approve`);return a}async function c(s){const{data:a}=await t.post(`/users/${s}/reject`);return a}async function i(s){const{data:a}=await t.delete(`/users/${s}`);return a}async function u(s,a){const{data:e}=await t.post(`/users/${s}/vip`,{days:a});return e}async function p(s){const{data:a}=await t.delete(`/users/${s}/vip`);return a}async function d(s,a){const{data:e}=await t.post(`/users/${s}/reset_password`,{new_password:a});return e}export{o as a,p as b,d as c,i as d,n as f,c as r,u as s}; +import{a as t}from"./index-DOvMEmc8.js";async function n(){const{data:s}=await t.get("/users");return s}async function o(s){const{data:a}=await t.post(`/users/${s}/approve`);return a}async function c(s){const{data:a}=await t.post(`/users/${s}/reject`);return a}async function i(s){const{data:a}=await t.delete(`/users/${s}`);return a}async function u(s,a){const{data:e}=await t.post(`/users/${s}/vip`,{days:a});return e}async function p(s){const{data:a}=await t.delete(`/users/${s}/vip`);return a}async function d(s,a){const{data:e}=await t.post(`/users/${s}/reset_password`,{new_password:a});return e}export{o as a,p as b,d as c,i as d,n as f,c as r,u as s}; diff --git a/static/admin/index.html b/static/admin/index.html index 8727cf6..725cf66 100644 --- a/static/admin/index.html +++ b/static/admin/index.html @@ -5,15 +5,16 @@ 后台管理 - 知识管理平台 - + - +
+ diff --git a/static/app/.vite/manifest.json b/static/app/.vite/manifest.json index b4f56b3..2c2d8ca 100644 --- a/static/app/.vite/manifest.json +++ b/static/app/.vite/manifest.json @@ -1,111 +1,203 @@ { - "_accounts-3bM7Wy59.js": { - "file": "assets/accounts-3bM7Wy59.js", - "name": "accounts", + "_SocialLoginButtons-BlVSr6Mm.js": { + "file": "assets/SocialLoginButtons-BlVSr6Mm.js", + "name": "SocialLoginButtons", "imports": [ - "_http-CdvgQxJu.js" + "_base-xgxQQEpV.js", + "_el-overlay-hge8bsIn.js", + "_vendor-vue-WbiK4TmU.js", + "_auth-B5cl_nsV.js", + "_style-CEbARg1o.js", + "_http-BoPYlvwK.js" ], "css": [ - "assets/accounts-D_6SYB2i.css" + "assets/SocialLoginButtons-qO3SCoE7.css" ] }, + "_SocialLoginButtons-qO3SCoE7.css": { + "file": "assets/SocialLoginButtons-qO3SCoE7.css", + "src": "_SocialLoginButtons-qO3SCoE7.css" + }, "_accounts-D_6SYB2i.css": { "file": "assets/accounts-D_6SYB2i.css", "src": "_accounts-D_6SYB2i.css" }, - "_auth-CX9p6ZYg.js": { - "file": "assets/auth-CX9p6ZYg.js", + "_accounts-DzntEHJR.js": { + "file": "assets/accounts-DzntEHJR.js", + "name": "accounts", + "imports": [ + "_http-BoPYlvwK.js" + ], + "css": [ + "assets/accounts-D_6SYB2i.css" + ] + }, + "_aria-DLpFpzDe.js": { + "file": "assets/aria-DLpFpzDe.js", + "name": "aria" + }, + "_auth-B5cl_nsV.js": { + "file": "assets/auth-B5cl_nsV.js", "name": "auth", "imports": [ - "_http-CdvgQxJu.js" + "_http-BoPYlvwK.js" + ] + }, + "_base-CiSqh4F9.css": { + "file": "assets/base-CiSqh4F9.css", + "src": "_base-CiSqh4F9.css" + }, + "_base-xgxQQEpV.js": { + "file": "assets/base-xgxQQEpV.js", + "name": "base", + "imports": [ + "_vendor-vue-WbiK4TmU.js" + ], + "css": [ + "assets/base-CiSqh4F9.css" ] }, "_el-alert-B-NgiIln.css": { "file": "assets/el-alert-B-NgiIln.css", "src": "_el-alert-B-NgiIln.css" }, - "_el-alert-DB2IQLpH.js": { - "file": "assets/el-alert-DB2IQLpH.js", + "_el-alert-DTUOkrAB.js": { + "file": "assets/el-alert-DTUOkrAB.js", "name": "el-alert", "imports": [ - "_vendor-vue-DxN60LNb.js", - "_el-button-DWxIvzz-.js", - "_http-CdvgQxJu.js" + "_vendor-vue-WbiK4TmU.js", + "_base-xgxQQEpV.js", + "_el-button-LKkD3jQh.js", + "_el-input-BaZNy9Kg.js", + "_aria-DLpFpzDe.js", + "_http-BoPYlvwK.js", + "_index-CoYtSGUZ.js" ], "css": [ "assets/el-alert-B-NgiIln.css" ] }, - "_el-button-DF1Fi_iE.css": { - "file": "assets/el-button-DF1Fi_iE.css", - "src": "_el-button-DF1Fi_iE.css" + "_el-button-BRDnKxwT.css": { + "file": "assets/el-button-BRDnKxwT.css", + "src": "_el-button-BRDnKxwT.css" }, - "_el-button-DWxIvzz-.js": { - "file": "assets/el-button-DWxIvzz-.js", + "_el-button-LKkD3jQh.js": { + "file": "assets/el-button-LKkD3jQh.js", "name": "el-button", "imports": [ - "_vendor-vue-DxN60LNb.js" + "_base-xgxQQEpV.js", + "_index-CoYtSGUZ.js", + "_vendor-vue-WbiK4TmU.js" ], "css": [ - "assets/el-button-DF1Fi_iE.css" + "assets/el-button-BRDnKxwT.css" ] }, "_el-card-BqOrgVp1.css": { "file": "assets/el-card-BqOrgVp1.css", "src": "_el-card-BqOrgVp1.css" }, - "_el-card-DfVpO1U5.js": { - "file": "assets/el-card-DfVpO1U5.js", + "_el-card-CfK866jr.js": { + "file": "assets/el-card-CfK866jr.js", "name": "el-card", "imports": [ - "_el-button-DWxIvzz-.js", - "_vendor-vue-DxN60LNb.js" + "_base-xgxQQEpV.js", + "_vendor-vue-WbiK4TmU.js" ], "css": [ "assets/el-card-BqOrgVp1.css" ] }, - "_el-overlay-Bd56Lw6C.css": { - "file": "assets/el-overlay-Bd56Lw6C.css", - "src": "_el-overlay-Bd56Lw6C.css" - }, - "_el-overlay-C_JJBVfE.js": { - "file": "assets/el-overlay-C_JJBVfE.js", - "name": "el-overlay", + "_el-empty-B4_NEFfq.js": { + "file": "assets/el-empty-B4_NEFfq.js", + "name": "el-empty", "imports": [ - "_el-button-DWxIvzz-.js", - "_http-CdvgQxJu.js", - "_vendor-vue-DxN60LNb.js" + "_base-xgxQQEpV.js", + "_el-input-BaZNy9Kg.js", + "_http-BoPYlvwK.js", + "_vendor-vue-WbiK4TmU.js", + "_aria-DLpFpzDe.js", + "_el-overlay-hge8bsIn.js", + "_index-CoYtSGUZ.js", + "_el-button-LKkD3jQh.js" ], "css": [ - "assets/el-overlay-Bd56Lw6C.css" + "assets/el-empty-D4G4LZ50.css" ] }, + "_el-empty-D4G4LZ50.css": { + "file": "assets/el-empty-D4G4LZ50.css", + "src": "_el-empty-D4G4LZ50.css" + }, + "_el-input-BaZNy9Kg.js": { + "file": "assets/el-input-BaZNy9Kg.js", + "name": "el-input", + "imports": [ + "_base-xgxQQEpV.js", + "_vendor-vue-WbiK4TmU.js", + "_http-BoPYlvwK.js", + "_aria-DLpFpzDe.js", + "_el-button-LKkD3jQh.js" + ], + "css": [ + "assets/el-input-D6B3r8CH.css" + ] + }, + "_el-input-D6B3r8CH.css": { + "file": "assets/el-input-D6B3r8CH.css", + "src": "_el-input-D6B3r8CH.css" + }, + "_el-overlay-hge8bsIn.js": { + "file": "assets/el-overlay-hge8bsIn.js", + "name": "el-overlay", + "imports": [ + "_vendor-vue-WbiK4TmU.js", + "_base-xgxQQEpV.js", + "_aria-DLpFpzDe.js", + "_http-BoPYlvwK.js", + "_index-CoYtSGUZ.js" + ], + "css": [ + "assets/el-overlay-hkg5a9kt.css" + ] + }, + "_el-overlay-hkg5a9kt.css": { + "file": "assets/el-overlay-hkg5a9kt.css", + "src": "_el-overlay-hkg5a9kt.css" + }, "_el-pagination-B1FwbX1n.css": { "file": "assets/el-pagination-B1FwbX1n.css", "src": "_el-pagination-B1FwbX1n.css" }, - "_el-pagination-BY1uI-wO.js": { - "file": "assets/el-pagination-BY1uI-wO.js", + "_el-pagination-kVJ2XlAP.js": { + "file": "assets/el-pagination-kVJ2XlAP.js", "name": "el-pagination", "imports": [ - "_el-button-DWxIvzz-.js", - "_vendor-vue-DxN60LNb.js", - "_el-select-B0VMg2td.js", - "_http-CdvgQxJu.js" + "_base-xgxQQEpV.js", + "_vendor-vue-WbiK4TmU.js", + "_el-select-CBs1QjJm.js", + "_http-BoPYlvwK.js", + "_el-input-BaZNy9Kg.js", + "_aria-DLpFpzDe.js", + "_index-CoYtSGUZ.js" ], "css": [ "assets/el-pagination-B1FwbX1n.css" ] }, - "_el-select-B0VMg2td.js": { - "file": "assets/el-select-B0VMg2td.js", + "_el-select-CBs1QjJm.js": { + "file": "assets/el-select-CBs1QjJm.js", "name": "el-select", "imports": [ - "_vendor-vue-DxN60LNb.js", - "_el-overlay-C_JJBVfE.js", - "_el-button-DWxIvzz-.js", - "_http-CdvgQxJu.js" + "_vendor-vue-WbiK4TmU.js", + "_el-empty-B4_NEFfq.js", + "_base-xgxQQEpV.js", + "_aria-DLpFpzDe.js", + "_el-input-BaZNy9Kg.js", + "_index-CoYtSGUZ.js", + "_http-BoPYlvwK.js", + "_el-button-LKkD3jQh.js", + "_el-overlay-hge8bsIn.js" ], "css": [ "assets/el-select-D_oyzAZN.css" @@ -115,40 +207,56 @@ "file": "assets/el-select-D_oyzAZN.css", "src": "_el-select-D_oyzAZN.css" }, - "_http-CdvgQxJu.js": { - "file": "assets/http-CdvgQxJu.js", - "name": "http", + "_el-skeleton-item-BLY1jEuR.css": { + "file": "assets/el-skeleton-item-BLY1jEuR.css", + "src": "_el-skeleton-item-BLY1jEuR.css" + }, + "_el-skeleton-item-CD5Idavp.js": { + "file": "assets/el-skeleton-item-CD5Idavp.js", + "name": "el-skeleton-item", "imports": [ - "_el-button-DWxIvzz-.js", - "_vendor-vue-DxN60LNb.js", - "_vendor-axios-B9ygI19o.js" + "_base-xgxQQEpV.js", + "_vendor-vue-WbiK4TmU.js" ], "css": [ - "assets/http-D6B3r8CH.css" + "assets/el-skeleton-item-BLY1jEuR.css" ] }, - "_http-D6B3r8CH.css": { - "file": "assets/http-D6B3r8CH.css", - "src": "_http-D6B3r8CH.css" + "_http-BoPYlvwK.js": { + "file": "assets/http-BoPYlvwK.js", + "name": "http", + "imports": [ + "_vendor-vue-WbiK4TmU.js", + "_base-xgxQQEpV.js", + "_vendor-axios-B9ygI19o.js" + ] }, - "_isArrayLikeObject-BjIRF-cS.js": { - "file": "assets/isArrayLikeObject-BjIRF-cS.js", + "_index-CoYtSGUZ.js": { + "file": "assets/index-CoYtSGUZ.js", + "name": "index", + "imports": [ + "_base-xgxQQEpV.js", + "_vendor-vue-WbiK4TmU.js" + ] + }, + "_isArrayLikeObject-B5fs56rA.js": { + "file": "assets/isArrayLikeObject-B5fs56rA.js", "name": "isArrayLikeObject", "imports": [ - "_http-CdvgQxJu.js", - "_el-button-DWxIvzz-.js", - "_el-overlay-C_JJBVfE.js" + "_el-input-BaZNy9Kg.js", + "_base-xgxQQEpV.js", + "_el-empty-B4_NEFfq.js" ] }, "_password-7ryi82gE.js": { "file": "assets/password-7ryi82gE.js", "name": "password" }, - "_settings-Ddo8isuv.js": { - "file": "assets/settings-Ddo8isuv.js", + "_settings-Db4PmPGC.js": { + "file": "assets/settings-Db4PmPGC.js", "name": "settings", "imports": [ - "_http-CdvgQxJu.js" + "_http-BoPYlvwK.js" ] }, "_style-BHGuKLUF.css": { @@ -166,15 +274,19 @@ "file": "assets/user-B7bO5p8k.css", "src": "_user-B7bO5p8k.css" }, - "_user-Bl59IefW.js": { - "file": "assets/user-Bl59IefW.js", + "_user-BlXB4Zbh.js": { + "file": "assets/user-BlXB4Zbh.js", "name": "user", "imports": [ - "_vendor-vue-DxN60LNb.js", - "_el-button-DWxIvzz-.js", - "_http-CdvgQxJu.js", - "_el-alert-DB2IQLpH.js", - "_el-overlay-C_JJBVfE.js" + "_vendor-vue-WbiK4TmU.js", + "_base-xgxQQEpV.js", + "_el-input-BaZNy9Kg.js", + "_aria-DLpFpzDe.js", + "_el-button-LKkD3jQh.js", + "_index-CoYtSGUZ.js", + "_el-alert-DTUOkrAB.js", + "_el-empty-B4_NEFfq.js", + "_http-BoPYlvwK.js" ], "css": [ "assets/user-B7bO5p8k.css" @@ -188,23 +300,24 @@ "file": "assets/vendor-realtime-CA1CrNgP.js", "name": "vendor-realtime" }, - "_vendor-vue-DxN60LNb.js": { - "file": "assets/vendor-vue-DxN60LNb.js", + "_vendor-vue-WbiK4TmU.js": { + "file": "assets/vendor-vue-WbiK4TmU.js", "name": "vendor-vue" }, "index.html": { - "file": "assets/app-BmSIJu6s.js", + "file": "assets/app-CV_JALyE.js", "name": "app", "src": "index.html", "isEntry": true, "imports": [ "_style-CEbARg1o.js", - "_vendor-vue-DxN60LNb.js" + "_vendor-vue-WbiK4TmU.js" ], "dynamicImports": [ "src/pages/LoginPage.vue", "src/pages/RegisterPage.vue", "src/pages/ResetPasswordPage.vue", + "src/pages/SocialBindCallbackPage.vue", "src/pages/VerifyResultPage.vue", "src/layouts/AppLayout.vue", "src/pages/AccountsPage.vue", @@ -213,172 +326,244 @@ ] }, "login.html": { - "file": "assets/login-BtMsx-ZC.js", + "file": "assets/login-rQcRwu0T.js", "name": "login", "src": "login.html", "isEntry": true, "imports": [ "_style-CEbARg1o.js", - "_vendor-vue-DxN60LNb.js", - "src/pages/LoginPage.vue" + "_vendor-vue-WbiK4TmU.js", + "src/pages/LoginPage.vue", + "_SocialLoginButtons-BlVSr6Mm.js", + "_base-xgxQQEpV.js", + "_el-overlay-hge8bsIn.js", + "_aria-DLpFpzDe.js", + "_http-BoPYlvwK.js", + "_vendor-axios-B9ygI19o.js", + "_index-CoYtSGUZ.js", + "_auth-B5cl_nsV.js" ] }, "src/layouts/AppLayout.vue": { - "file": "assets/AppLayout-xWeMM3hH.js", + "file": "assets/AppLayout-D9A8Va7K.js", "name": "AppLayout", "src": "src/layouts/AppLayout.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_user-Bl59IefW.js", - "_el-overlay-C_JJBVfE.js", - "_el-alert-DB2IQLpH.js", - "_http-CdvgQxJu.js", - "_vendor-vue-DxN60LNb.js", - "_settings-Ddo8isuv.js", + "_base-xgxQQEpV.js", + "_user-BlXB4Zbh.js", + "_el-empty-B4_NEFfq.js", + "_el-alert-DTUOkrAB.js", + "_el-skeleton-item-CD5Idavp.js", + "_el-input-BaZNy9Kg.js", + "_el-overlay-hge8bsIn.js", + "_el-button-LKkD3jQh.js", + "_vendor-vue-WbiK4TmU.js", + "_http-BoPYlvwK.js", + "_auth-B5cl_nsV.js", + "_settings-Db4PmPGC.js", + "_SocialLoginButtons-BlVSr6Mm.js", "_password-7ryi82gE.js", "_style-CEbARg1o.js", - "_isArrayLikeObject-BjIRF-cS.js", + "_aria-DLpFpzDe.js", + "_index-CoYtSGUZ.js", + "_isArrayLikeObject-B5fs56rA.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/AppLayout-DxoFHO3h.css" + "assets/AppLayout-CJKAa2WS.css" ] }, "src/pages/AccountsPage.vue": { - "file": "assets/AccountsPage-DnOxRP7e.js", + "file": "assets/AccountsPage-B7MLZrfr.js", "name": "AccountsPage", "src": "src/pages/AccountsPage.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_el-overlay-C_JJBVfE.js", - "_el-alert-DB2IQLpH.js", - "_http-CdvgQxJu.js", - "_user-Bl59IefW.js", - "_accounts-3bM7Wy59.js", - "_el-select-B0VMg2td.js", - "_el-card-DfVpO1U5.js", - "_settings-Ddo8isuv.js", + "_base-xgxQQEpV.js", + "_el-overlay-hge8bsIn.js", + "_el-alert-DTUOkrAB.js", + "_el-input-BaZNy9Kg.js", + "_user-BlXB4Zbh.js", + "_accounts-DzntEHJR.js", + "_el-empty-B4_NEFfq.js", + "_el-skeleton-item-CD5Idavp.js", + "_el-select-CBs1QjJm.js", + "_el-button-LKkD3jQh.js", + "_el-card-CfK866jr.js", + "_settings-Db4PmPGC.js", + "_http-BoPYlvwK.js", "_vendor-realtime-CA1CrNgP.js", "_style-CEbARg1o.js", - "_vendor-vue-DxN60LNb.js", + "_vendor-vue-WbiK4TmU.js", + "_aria-DLpFpzDe.js", + "_index-CoYtSGUZ.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/AccountsPage-iiBFNme8.css" + "assets/AccountsPage-DKewJ7S7.css" ] }, "src/pages/LoginPage.vue": { - "file": "assets/LoginPage-D5iXLq7p.js", + "file": "assets/LoginPage-BtooAZsk.js", "name": "LoginPage", "src": "src/pages/LoginPage.vue", "isDynamicEntry": true, "imports": [ - "_vendor-vue-DxN60LNb.js", - "_style-CEbARg1o.js" + "_vendor-vue-WbiK4TmU.js", + "_SocialLoginButtons-BlVSr6Mm.js", + "_style-CEbARg1o.js", + "_base-xgxQQEpV.js", + "_el-overlay-hge8bsIn.js", + "_aria-DLpFpzDe.js", + "_http-BoPYlvwK.js", + "_vendor-axios-B9ygI19o.js", + "_index-CoYtSGUZ.js", + "_auth-B5cl_nsV.js" ], "css": [ - "assets/LoginPage-DTj5KeC4.css" + "assets/LoginPage-vCVLchWz.css" ] }, "src/pages/RegisterPage.vue": { - "file": "assets/RegisterPage-4xFnBJCQ.js", + "file": "assets/RegisterPage-Cb1mme2j.js", "name": "RegisterPage", "src": "src/pages/RegisterPage.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_el-card-DfVpO1U5.js", - "_el-alert-DB2IQLpH.js", - "_http-CdvgQxJu.js", - "_vendor-vue-DxN60LNb.js", - "_auth-CX9p6ZYg.js", + "_base-xgxQQEpV.js", + "_el-card-CfK866jr.js", + "_el-alert-DTUOkrAB.js", + "_el-button-LKkD3jQh.js", + "_el-input-BaZNy9Kg.js", + "_vendor-vue-WbiK4TmU.js", + "_auth-B5cl_nsV.js", "_password-7ryi82gE.js", "_style-CEbARg1o.js", + "_http-BoPYlvwK.js", + "_aria-DLpFpzDe.js", + "_index-CoYtSGUZ.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/RegisterPage-BOcNcW5D.css" + "assets/RegisterPage-LYXwWYc1.css" ] }, "src/pages/ResetPasswordPage.vue": { - "file": "assets/ResetPasswordPage-lX7l6Nbu.js", + "file": "assets/ResetPasswordPage-CUOK0fe1.js", "name": "ResetPasswordPage", "src": "src/pages/ResetPasswordPage.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_el-card-DfVpO1U5.js", - "_el-alert-DB2IQLpH.js", - "_http-CdvgQxJu.js", - "_vendor-vue-DxN60LNb.js", - "_auth-CX9p6ZYg.js", + "_base-xgxQQEpV.js", + "_el-card-CfK866jr.js", + "_el-alert-DTUOkrAB.js", + "_el-input-BaZNy9Kg.js", + "_el-button-LKkD3jQh.js", + "_vendor-vue-WbiK4TmU.js", + "_auth-B5cl_nsV.js", "_password-7ryi82gE.js", "_style-CEbARg1o.js", + "_http-BoPYlvwK.js", + "_aria-DLpFpzDe.js", + "_index-CoYtSGUZ.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/ResetPasswordPage-DybfLMAw.css" + "assets/ResetPasswordPage-DAB63ins.css" ] }, "src/pages/SchedulesPage.vue": { - "file": "assets/SchedulesPage-TUv7nqYq.js", + "file": "assets/SchedulesPage-0TKGPmUl.js", "name": "SchedulesPage", "src": "src/pages/SchedulesPage.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_el-overlay-C_JJBVfE.js", - "_el-alert-DB2IQLpH.js", - "_el-select-B0VMg2td.js", - "_user-Bl59IefW.js", - "_accounts-3bM7Wy59.js", - "_http-CdvgQxJu.js", - "_el-pagination-BY1uI-wO.js", - "_el-card-DfVpO1U5.js", + "_base-xgxQQEpV.js", + "_el-empty-B4_NEFfq.js", + "_el-overlay-hge8bsIn.js", + "_el-alert-DTUOkrAB.js", + "_el-select-CBs1QjJm.js", + "_user-BlXB4Zbh.js", + "_accounts-DzntEHJR.js", + "_el-input-BaZNy9Kg.js", + "_el-pagination-kVJ2XlAP.js", + "_el-card-CfK866jr.js", + "_el-skeleton-item-CD5Idavp.js", + "_el-button-LKkD3jQh.js", + "_http-BoPYlvwK.js", "_style-CEbARg1o.js", - "_vendor-vue-DxN60LNb.js", - "_isArrayLikeObject-BjIRF-cS.js", + "_vendor-vue-WbiK4TmU.js", + "_aria-DLpFpzDe.js", + "_isArrayLikeObject-B5fs56rA.js", + "_index-CoYtSGUZ.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/SchedulesPage-BIuHs5oJ.css" + "assets/SchedulesPage-Dxq2ghmQ.css" ] }, "src/pages/ScreenshotsPage.vue": { - "file": "assets/ScreenshotsPage-7CRd3Hlo.js", + "file": "assets/ScreenshotsPage-F6GpvKGW.js", "name": "ScreenshotsPage", "src": "src/pages/ScreenshotsPage.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_el-overlay-C_JJBVfE.js", - "_el-pagination-BY1uI-wO.js", - "_el-select-B0VMg2td.js", - "_http-CdvgQxJu.js", - "_el-card-DfVpO1U5.js", + "_base-xgxQQEpV.js", + "_el-overlay-hge8bsIn.js", + "_el-pagination-kVJ2XlAP.js", + "_el-empty-B4_NEFfq.js", + "_el-select-CBs1QjJm.js", + "_el-input-BaZNy9Kg.js", + "_el-card-CfK866jr.js", + "_el-skeleton-item-CD5Idavp.js", + "_el-button-LKkD3jQh.js", + "_http-BoPYlvwK.js", "_style-CEbARg1o.js", - "_vendor-vue-DxN60LNb.js", + "_vendor-vue-WbiK4TmU.js", + "_aria-DLpFpzDe.js", + "_index-CoYtSGUZ.js", "_vendor-axios-B9ygI19o.js" ], "css": [ - "assets/ScreenshotsPage-30dzddw-.css" + "assets/ScreenshotsPage-BhLfAzHf.css" + ] + }, + "src/pages/SocialBindCallbackPage.vue": { + "file": "assets/SocialBindCallbackPage-DraQ_mks.js", + "name": "SocialBindCallbackPage", + "src": "src/pages/SocialBindCallbackPage.vue", + "isDynamicEntry": true, + "imports": [ + "_base-xgxQQEpV.js", + "_el-card-CfK866jr.js", + "_el-skeleton-item-CD5Idavp.js", + "_vendor-vue-WbiK4TmU.js", + "_auth-B5cl_nsV.js", + "_settings-Db4PmPGC.js", + "_style-CEbARg1o.js", + "_http-BoPYlvwK.js", + "_vendor-axios-B9ygI19o.js" + ], + "css": [ + "assets/SocialBindCallbackPage-BZgzv_7a.css" ] }, "src/pages/VerifyResultPage.vue": { - "file": "assets/VerifyResultPage-bifpPyoE.js", + "file": "assets/VerifyResultPage-BUSE4fL8.js", "name": "VerifyResultPage", "src": "src/pages/VerifyResultPage.vue", "isDynamicEntry": true, "imports": [ - "_el-button-DWxIvzz-.js", - "_el-card-DfVpO1U5.js", - "_vendor-vue-DxN60LNb.js", - "_style-CEbARg1o.js" + "_base-xgxQQEpV.js", + "_el-card-CfK866jr.js", + "_el-button-LKkD3jQh.js", + "_vendor-vue-WbiK4TmU.js", + "_style-CEbARg1o.js", + "_index-CoYtSGUZ.js" ], "css": [ - "assets/VerifyResultPage-efSXaaKI.css" + "assets/VerifyResultPage-BnGv8vyq.css" ] } } \ No newline at end of file diff --git a/static/app/assets/AccountsPage-DnOxRP7e.js b/static/app/assets/AccountsPage-B7MLZrfr.js similarity index 76% rename from static/app/assets/AccountsPage-DnOxRP7e.js rename to static/app/assets/AccountsPage-B7MLZrfr.js index 3f37fba..b464d54 100644 --- a/static/app/assets/AccountsPage-DnOxRP7e.js +++ b/static/app/assets/AccountsPage-B7MLZrfr.js @@ -1,6 +1,6 @@ -import{b as ge,t as z,_ as _e,u as ve,s as Ue,d as we,w as wt,a7 as bt,a8 as ht,a9 as kt,H as St,A as xt,E as $t}from"./el-button-DWxIvzz-.js";import{m as Vt,l as Ct,n as Tt,o as Et,p as ee}from"./el-overlay-C_JJBVfE.js";import{E as At,a as Pt,b as Nt}from"./el-alert-DB2IQLpH.js";import{m as te,p as Bt,E as It,a as f}from"./http-CdvgQxJu.js";import{u as Ot,a as Lt,b as Ut,E as Dt}from"./user-Bl59IefW.js";import{f as Rt,b as De,a as Re,c as Kt,s as jt,d as Mt,t as zt,e as Ft,g as qt,u as Ht,h as Wt}from"./accounts-3bM7Wy59.js";import{E as Gt,a as Jt}from"./el-select-B0VMg2td.js";import{E as Qt}from"./el-card-DfVpO1U5.js";import{k as Xt,l as Yt,g as Zt}from"./settings-Ddo8isuv.js";import{l as es}from"./vendor-realtime-CA1CrNgP.js";import{_ as ts}from"./style-CEbARg1o.js";import{A as Y,Q as ss,h as g,X as as,c as L,o as y,s as o,B as ie,U as j,n as N,C as u,D as be,a0 as ns,J as Ke,j as $,l as M,k as i,t as b,M as os,g as P,f as X,L as me,i as ls,z as rs,q as n,x as _,F as le,a4 as ye}from"./vendor-vue-DxN60LNb.js";import"./vendor-axios-B9ygI19o.js";const is=ge({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:z([Number,Object]),default:()=>te({})},sm:{type:z([Number,Object]),default:()=>te({})},md:{type:z([Number,Object]),default:()=>te({})},lg:{type:z([Number,Object]),default:()=>te({})},xl:{type:z([Number,Object]),default:()=>te({})}}),Me=Symbol("rowContextKey"),us=Y({name:"ElCol"}),ds=Y({...us,props:is,setup(V){const l=V,{gutter:h}=ss(Me,{gutter:g(()=>0)}),c=ve("col"),U=g(()=>{const p={};return h.value&&(p.paddingLeft=p.paddingRight=`${h.value/2}px`),p}),k=g(()=>{const p=[];return["span","offset","pull","push"].forEach(v=>{const B=l[v];Ue(B)&&(v==="span"?p.push(c.b(`${l[v]}`)):B>0&&p.push(c.b(`${v}-${l[v]}`)))}),["xs","sm","md","lg","xl"].forEach(v=>{Ue(l[v])?p.push(c.b(`${v}-${l[v]}`)):as(l[v])&&Object.entries(l[v]).forEach(([B,E])=>{p.push(B!=="span"?c.b(`${v}-${B}-${E}`):c.b(`${v}-${E}`))})}),h.value&&p.push(c.is("guttered")),[c.b(),p]});return(p,S)=>(y(),L(be(p.tag),{class:N(u(k)),style:j(u(U))},{default:o(()=>[ie(p.$slots,"default")]),_:3},8,["class","style"]))}});var cs=_e(ds,[["__file","col.vue"]]);const ps=we(cs),fs=ge({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:V=>V>=0&&V<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:z(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:z([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:z(Function),default:V=>`${V}%`}}),ms=Y({name:"ElProgress"}),ys=Y({...ms,props:fs,setup(V){const l=V,h={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},c=ve("progress"),U=g(()=>{const a={width:`${l.percentage}%`,animationDuration:`${l.duration}s`},d=K(l.percentage);return d.includes("gradient")?a.background=d:a.backgroundColor=d,a}),k=g(()=>(l.strokeWidth/l.width*100).toFixed(1)),p=g(()=>["circle","dashboard"].includes(l.type)?Number.parseInt(`${50-Number.parseFloat(k.value)/2}`,10):0),S=g(()=>{const a=p.value,d=l.type==="dashboard";return` +import{b as ge,t as z,_ as _e,u as ve,s as Ue,d as we,w as wt,a2 as bt,a3 as ht,a4 as kt,D as St,E as xt}from"./base-xgxQQEpV.js";import{e as $t}from"./el-overlay-hge8bsIn.js";import{E as Vt,a as Ct,b as Tt}from"./el-alert-DTUOkrAB.js";import{E as Et}from"./el-input-BaZNy9Kg.js";import{u as At,a as Pt,b as Nt,E as Bt}from"./user-BlXB4Zbh.js";import{f as It,b as De,a as Re,c as Ot,s as Lt,d as Ut,t as Dt,e as Rt,g as Kt,u as jt,h as Mt}from"./accounts-DzntEHJR.js";import{e as zt,f as Ft,g as ee}from"./el-empty-B4_NEFfq.js";import{E as qt}from"./el-skeleton-item-CD5Idavp.js";import{E as Wt,a as Gt}from"./el-select-CBs1QjJm.js";import{E as Ht}from"./el-button-LKkD3jQh.js";import{E as Jt}from"./el-card-CfK866jr.js";import{n as Qt,o as Xt,i as Yt}from"./settings-Db4PmPGC.js";import{m as te,p as Zt,E as f}from"./http-BoPYlvwK.js";import{l as es}from"./vendor-realtime-CA1CrNgP.js";import{_ as ts}from"./style-CEbARg1o.js";import{A as Y,Q as ss,h as g,X as as,c as L,o as y,s as o,B as ie,U as j,n as N,C as u,D as be,a0 as ns,J as Ke,j as $,l as M,k as i,t as b,M as os,g as P,f as X,L as me,i as ls,z as rs,p as n,x as _,F as le,a4 as ye}from"./vendor-vue-WbiK4TmU.js";import"./aria-DLpFpzDe.js";import"./index-CoYtSGUZ.js";import"./vendor-axios-B9ygI19o.js";const is=ge({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:z([Number,Object]),default:()=>te({})},sm:{type:z([Number,Object]),default:()=>te({})},md:{type:z([Number,Object]),default:()=>te({})},lg:{type:z([Number,Object]),default:()=>te({})},xl:{type:z([Number,Object]),default:()=>te({})}}),Me=Symbol("rowContextKey"),us=Y({name:"ElCol"}),ds=Y({...us,props:is,setup(V){const l=V,{gutter:h}=ss(Me,{gutter:g(()=>0)}),c=ve("col"),U=g(()=>{const p={};return h.value&&(p.paddingLeft=p.paddingRight=`${h.value/2}px`),p}),k=g(()=>{const p=[];return["span","offset","pull","push"].forEach(v=>{const B=l[v];Ue(B)&&(v==="span"?p.push(c.b(`${l[v]}`)):B>0&&p.push(c.b(`${v}-${l[v]}`)))}),["xs","sm","md","lg","xl"].forEach(v=>{Ue(l[v])?p.push(c.b(`${v}-${l[v]}`)):as(l[v])&&Object.entries(l[v]).forEach(([B,E])=>{p.push(B!=="span"?c.b(`${v}-${B}-${E}`):c.b(`${v}-${E}`))})}),h.value&&p.push(c.is("guttered")),[c.b(),p]});return(p,S)=>(y(),L(be(p.tag),{class:N(u(k)),style:j(u(U))},{default:o(()=>[ie(p.$slots,"default")]),_:3},8,["class","style"]))}});var cs=_e(ds,[["__file","col.vue"]]);const ps=we(cs),fs=ge({type:{type:String,default:"line",values:["line","circle","dashboard"]},percentage:{type:Number,default:0,validator:V=>V>=0&&V<=100},status:{type:String,default:"",values:["","success","exception","warning"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:z(String),default:"round"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:z([String,Array,Function]),default:""},striped:Boolean,stripedFlow:Boolean,format:{type:z(Function),default:V=>`${V}%`}}),ms=Y({name:"ElProgress"}),ys=Y({...ms,props:fs,setup(V){const l=V,h={success:"#13ce66",exception:"#ff4949",warning:"#e6a23c",default:"#20a0ff"},c=ve("progress"),U=g(()=>{const a={width:`${l.percentage}%`,animationDuration:`${l.duration}s`},d=K(l.percentage);return d.includes("gradient")?a.background=d:a.backgroundColor=d,a}),k=g(()=>(l.strokeWidth/l.width*100).toFixed(1)),p=g(()=>["circle","dashboard"].includes(l.type)?Number.parseInt(`${50-Number.parseFloat(k.value)/2}`,10):0),S=g(()=>{const a=p.value,d=l.type==="dashboard";return` M 50 50 m 0 ${d?"":"-"}${a} a ${a} ${a} 0 1 1 0 ${d?"-":""}${a*2} a ${a} ${a} 0 1 1 0 ${d?"":"-"}${a*2} - `}),C=g(()=>2*Math.PI*p.value),v=g(()=>l.type==="dashboard"?.75:1),B=g(()=>`${-1*C.value*(1-v.value)/2}px`),E=g(()=>({strokeDasharray:`${C.value*v.value}px, ${C.value}px`,strokeDashoffset:B.value})),F=g(()=>({strokeDasharray:`${C.value*v.value*(l.percentage/100)}px, ${C.value}px`,strokeDashoffset:B.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),q=g(()=>{let a;return l.color?a=K(l.percentage):a=h[l.status]||h.default,a}),A=g(()=>l.status==="warning"?wt:l.type==="line"?l.status==="success"?bt:ht:l.status==="success"?kt:St),se=g(()=>l.type==="line"?12+l.strokeWidth*.4:l.width*.111111+2),D=g(()=>l.format(l.percentage));function R(a){const d=100/a.length;return a.map((w,I)=>Ke(w)?{color:w,percentage:(I+1)*d}:w).sort((w,I)=>w.percentage-I.percentage)}const K=a=>{var d;const{color:O}=l;if(ns(O))return O(a);if(Ke(O))return O;{const w=R(O);for(const I of w)if(I.percentage>a)return I.color;return(d=w[w.length-1])==null?void 0:d.color}};return(a,d)=>(y(),$("div",{class:N([u(c).b(),u(c).m(a.type),u(c).is(a.status),{[u(c).m("without-text")]:!a.showText,[u(c).m("text-inside")]:a.textInside}]),role:"progressbar","aria-valuenow":a.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[a.type==="line"?(y(),$("div",{key:0,class:N(u(c).b("bar"))},[i("div",{class:N(u(c).be("bar","outer")),style:j({height:`${a.strokeWidth}px`})},[i("div",{class:N([u(c).be("bar","inner"),{[u(c).bem("bar","inner","indeterminate")]:a.indeterminate},{[u(c).bem("bar","inner","striped")]:a.striped},{[u(c).bem("bar","inner","striped-flow")]:a.stripedFlow}]),style:j(u(U))},[(a.showText||a.$slots.default)&&a.textInside?(y(),$("div",{key:0,class:N(u(c).be("bar","innerText"))},[ie(a.$slots,"default",{percentage:a.percentage},()=>[i("span",null,b(u(D)),1)])],2)):M("v-if",!0)],6)],6)],2)):(y(),$("div",{key:1,class:N(u(c).b("circle")),style:j({height:`${a.width}px`,width:`${a.width}px`})},[(y(),$("svg",{viewBox:"0 0 100 100"},[i("path",{class:N(u(c).be("circle","track")),d:u(S),stroke:`var(${u(c).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":a.strokeLinecap,"stroke-width":u(k),fill:"none",style:j(u(E))},null,14,["d","stroke","stroke-linecap","stroke-width"]),i("path",{class:N(u(c).be("circle","path")),d:u(S),stroke:u(q),fill:"none",opacity:a.percentage?1:0,"stroke-linecap":a.strokeLinecap,"stroke-width":u(k),style:j(u(F))},null,14,["d","stroke","opacity","stroke-linecap","stroke-width"])]))],6)),(a.showText||a.$slots.default)&&!a.textInside?(y(),$("div",{key:2,class:N(u(c).e("text")),style:j({fontSize:`${u(se)}px`})},[ie(a.$slots,"default",{percentage:a.percentage},()=>[a.status?(y(),L(u(xt),{key:1},{default:o(()=>[(y(),L(be(u(A))))]),_:1})):(y(),$("span",{key:0},b(u(D)),1))])],6)):M("v-if",!0)],10,["aria-valuenow"]))}});var gs=_e(ys,[["__file","progress.vue"]]);const _s=we(gs),vs=["start","center","end","space-around","space-between","space-evenly"],ws=["top","middle","bottom"],bs=ge({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:vs,default:"start"},align:{type:String,values:ws}}),hs=Y({name:"ElRow"}),ks=Y({...hs,props:bs,setup(V){const l=V,h=ve("row"),c=g(()=>l.gutter);os(Me,{gutter:c});const U=g(()=>{const p={};return l.gutter&&(p.marginRight=p.marginLeft=`-${l.gutter/2}px`),p}),k=g(()=>[h.b(),h.is(`justify-${l.justify}`,l.justify!=="start"),h.is(`align-${l.align}`,!!l.align)]);return(p,S)=>(y(),L(be(p.tag),{class:N(u(k)),style:j(u(U))},{default:o(()=>[ie(p.$slots,"default")]),_:3},8,["class","style"]))}});var Ss=_e(ks,[["__file","row.vue"]]);const xs=we(Ss);async function $s(){const{data:V}=await Bt.get("/run_stats");return V}let re=null;function Vs(){return re||(re=es({transports:["websocket","polling"],withCredentials:!0}),re)}const Cs={class:"page"},Ts={class:"stat-value"},Es={class:"stat-value"},As={class:"stat-value"},Ps={class:"stat-value"},Ns={class:"stat-value"},Bs={class:"stat-value"},Is={class:"stat-suffix app-muted"},Os={class:"upgrade-actions"},Ls={class:"panel-head"},Us={class:"panel-actions"},Ds={class:"toolbar"},Rs={class:"toolbar-left"},Ks={class:"app-muted"},js={class:"toolbar-middle"},Ms={class:"toolbar-right"},zs={key:1,class:"grid"},Fs={class:"card-top"},qs={class:"card-main"},Hs={class:"card-title"},Ws={class:"card-name"},Gs={class:"card-sub app-muted"},Js={key:0},Qs={key:1},Xs={key:2},Ys={key:3},Zs={key:0,class:"progress"},ea={class:"progress-meta app-muted"},ta={class:"card-controls"},sa={class:"card-buttons"},je="zsglpt:accounts:enable_screenshot",aa=1e4,na=3e4,oa=6e4,la=18e4,ra={__name:"AccountsPage",setup(V){const l=Ot(),h=Vs(),c=P(!1),U=P(!1),k=X({today_completed:0,today_failed:0,current_running:0,today_items:0,today_attachments:0}),p=X({}),S=P([]),C=X({}),v=P("应读");function B(){try{const t=window.localStorage.getItem(je);if(t==="0"||t==="false")return!1;if(t==="1"||t==="true")return!0}catch{}return!0}const E=P(B());me(E,t=>{try{window.localStorage.setItem(je,t?"1":"0")}catch{}});const F=P(!1),q=P(!1),A=X({enabled:!1,online:!1,message:""}),se=P(!1),D=P(!1),R=P(!1),K=P(!1),a=X({username:"",password:"",remark:""}),d=X({id:"",username:"",password:"",remark:"",originalRemark:""}),O=[{label:"应读",value:"应读"},{label:"注册前未读",value:"注册前未读"}],w=g(()=>Object.values(p).sort((t,e)=>String(t.username||"").localeCompare(String(e.username||""),"zh-CN"))),I=g(()=>w.value.length),ze=g(()=>l.isVip?999:3),he=g(()=>S.value.length),Fe=g(()=>I.value>0&&he.value===I.value),qe=g(()=>!l.isVip);function Z(t){const e=p[t.id]||{};p[t.id]={...e,...t}}function ue(t){const e=Array.isArray(t)?t:[],r=new Set(e.map(m=>String(m?.id||"")));for(const m of Object.keys(p))r.has(m)||delete p[m];for(const m of e)Z(m)}function He(){for(const t of w.value)C[t.id]||(C[t.id]="应读")}me(w,He,{immediate:!0});function We(t){t?S.value=w.value.map(e=>e.id):S.value=[]}function ae(t){return l.isVip?!0:(f.warning(`${t}是VIP专属功能`),K.value=!0,!1)}function Ge(t){const e=Number(t.total_items||0),r=Number(t.progress_items||0);return e?Math.max(0,Math.min(100,Math.round(r/e*100))):0}function Je(t=""){const e=String(t);return e.includes("已完成")||e.includes("完成")?"success":e.includes("失败")||e.includes("错误")||e.includes("异常")||e.includes("登录失败")||e.includes("上传截图")?"danger":e.includes("等待上传")||e.includes("排队")||e.includes("运行")||e.includes("截图")?"warning":"info"}function ne(t){if(!t?.is_running)return!1;const e=String(t.status||""),r=String(t.detail_status||"");return!(!e||e==="未开始"||!e.includes("运行")||e.includes("截图")||e.includes("等待截图")||r.includes("截图")||r.includes("等待截图")||r.includes("浏览完成")||r.includes("任务完成")||e.includes("已完成"))}async function H(t={}){const e=!!t?.silent;e||(U.value=!0);try{const r=await $s();k.today_completed=Number(r?.today_completed||0),k.today_failed=Number(r?.today_failed||0),k.current_running=Number(r?.current_running||0),k.today_items=Number(r?.today_items||0),k.today_attachments=Number(r?.today_attachments||0)}catch(r){r?.response?.status===401&&(window.location.href="/login")}finally{e||(U.value=!1)}}async function ke(){c.value=!0;try{const t=await Rt({refresh:!0});ue(t)}catch(t){t?.response?.status===401&&(window.location.href="/login")}finally{c.value=!1}}async function Qe(){q.value=!0;try{const t=await Xt();F.value=Number(t?.kdocs_auto_upload||0)===1}catch{F.value=!1}finally{q.value=!1}}async function Se(){se.value=!0;try{const t=await Yt();A.enabled=!!t?.enabled,A.online=!!t?.online,A.message=t?.message||""}catch{A.enabled=!1,A.online=!1,A.message=""}finally{se.value=!1}}async function Xe(t){q.value=!0;try{await Zt({kdocs_auto_upload:t?1:0}),f.success(t?"已开启自动上传(测试)":"已关闭自动上传")}catch{F.value=!t}finally{q.value=!1}}async function Ye(t){try{await jt(t.id,{browse_type:C[t.id]||"应读",enable_screenshot:E.value})}catch(e){const r=e?.response?.data;f.error(r?.error||"启动失败")}}async function Ze(t){try{await Mt(t.id)}catch(e){const r=e?.response?.data;f.error(r?.error||"停止失败")}}async function et(t){try{await zt(t.id,{browse_type:C[t.id]||"应读"}),f.success("已提交截图")}catch(e){const r=e?.response?.data;f.error(r?.error||"截图失败")}}async function tt(t){try{await ee.confirm(`确定要删除账号「${t.username}」吗?`,"删除账号",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await Ft(t.id);e?.success?(delete p[t.id],S.value=S.value.filter(r=>r!==t.id),f.success("已删除"),await H()):f.error(e?.error||"删除失败")}catch(e){const r=e?.response?.data;f.error(r?.error||"删除失败")}}function st(){a.username="",a.password="",a.remark="",D.value=!0}async function at(){const t=a.username.trim();if(!t||!a.password.trim()){f.error("用户名和密码不能为空");return}try{await qt({username:t,password:a.password,remember:!0,remark:a.remark.trim()}),f.success("添加成功"),D.value=!1,await H()}catch(e){const r=e?.response?.data;f.error(r?.error||"添加失败")}}function nt(t){d.id=t.id,d.username=t.username,d.password="",d.remark=String(t.remark||""),d.originalRemark=String(t.remark||""),R.value=!0}async function ot(){if(!d.id)return;const t=d.password.trim(),e=d.remark.trim();if(!t&&e===d.originalRemark){f.info("没有修改"),R.value=!1;return}try{if(t){const r=await Ht(d.id,{password:t,remember:!0});r?.account&&Z(r.account)}e!==d.originalRemark&&(await Wt(d.id,{remark:e}),Z({id:d.id,remark:e})),f.success("已更新"),R.value=!1}catch(r){const m=r?.response?.data;f.error(m?.error||"更新失败")}}async function lt(){if(ae("批量操作")){if(S.value.length===0){f.warning("请先选择账号");return}try{const t=await De({account_ids:S.value,browse_type:v.value,enable_screenshot:E.value});f.success(`已启动 ${t?.started_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function rt(){if(ae("批量操作")){if(S.value.length===0){f.warning("请先选择账号");return}try{const t=await Re({account_ids:S.value});f.success(`已停止 ${t?.stopped_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function it(){if(ae("全部启动")){if(w.value.length===0){f.warning("没有账号");return}try{await ee.confirm("确定要启动全部账号吗?","全部启动",{confirmButtonText:"启动",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await De({account_ids:w.value.map(e=>e.id),browse_type:v.value,enable_screenshot:E.value});f.success(`已启动 ${t?.started_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function ut(){if(ae("全部停止")){if(w.value.length===0){f.warning("没有账号");return}try{await ee.confirm("确定要停止全部账号吗?","全部停止",{confirmButtonText:"停止",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await Re({account_ids:w.value.map(e=>e.id)});f.success(`已停止 ${t?.stopped_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function dt(){if(w.value.length===0){f.warning("没有账号");return}try{await ee.confirm("确定要清空所有账号吗?此操作不可恢复!","清空账号",{confirmButtonText:"继续",cancelButtonText:"取消",type:"warning"}),await ee.confirm("再次确认:真的要删除所有账号吗?","二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await Kt();if(t?.success){ue([]),S.value=[],f.success("已清空所有账号"),await H();return}f.error(t?.error||"操作失败")}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}function ct(){const t=m=>{ue(m)},e=m=>{Z(m)},r=m=>{m?.account_id&&Z({id:m.account_id,detail_status:m.stage||"",total_items:m.total_items,progress_items:m.browsed_items,total_attachments:m.total_attachments,progress_attachments:m.viewed_attachments,elapsed_seconds:m.elapsed_seconds,elapsed_display:m.elapsed_display})};return h.on("accounts_list",t),h.on("account_update",e),h.on("task_progress",r),h.connected||h.connect(),()=>{h.off("accounts_list",t),h.off("account_update",e),h.off("task_progress",r)}}let de=null,W=null,G=null;function xe(){return typeof document>"u"?!1:document.visibilityState==="hidden"}const oe=g(()=>w.value.some(t=>!(!t?.is_running||String(t.status||"").includes("排队"))));function pt(){return xe()?na:aa}function ce(){W&&(window.clearTimeout(W),W=null)}function $e(){W||!oe.value||(W=window.setTimeout(async()=>{W=null,await H({silent:!0}).catch(()=>{}),$e()},pt()))}function Ve(){$e()}function Ce(t=null){const e=oe.value;t===!0&&e===!1&&H({silent:!0}).catch(()=>{}),e?Ve():ce()}me(oe,(t,e)=>{Ce(e)});function ft(){return xe()?la:oa}function Te(){G&&(window.clearTimeout(G),G=null)}function pe(){G||(G=window.setTimeout(async()=>{G=null,await Se().catch(()=>{}),pe()},ft()))}function Ee(){oe.value&&(ce(),Ve()),Te(),pe()}return ls(async()=>{l.vipInfo||l.refreshVipInfo().catch(()=>{window.location.href="/login"}),de=ct(),await ke(),await Qe(),await Se(),await H(),Ce(),pe(),window.addEventListener("visibilitychange",Ee)}),rs(()=>{de&&de(),ce(),Te(),window.removeEventListener("visibilitychange",Ee)}),(t,e)=>{const r=Qt,m=ps,mt=xs,x=$t,Ae=At,Pe=Lt,Ne=Jt,Be=Gt,Ie=Ut,Oe=Ct,yt=Tt,gt=Et,_t=Dt,vt=_s,J=It,Q=Nt,Le=Pt,fe=Vt;return y(),$("div",Cs,[n(mt,{gutter:12,class:"stats-row"},{default:o(()=>[n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[17]||(e[17]=i("div",{class:"stat-label app-muted"},"今日完成",-1)),i("div",Ts,b(k.today_completed),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[18]||(e[18]=i("div",{class:"stat-label app-muted"},"今日失败",-1)),i("div",Es,b(k.today_failed),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[19]||(e[19]=i("div",{class:"stat-label app-muted"},"运行中",-1)),i("div",As,b(k.current_running),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[20]||(e[20]=i("div",{class:"stat-label app-muted"},"浏览内容",-1)),i("div",Ps,b(k.today_items),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[21]||(e[21]=i("div",{class:"stat-label app-muted"},"查看附件",-1)),i("div",Ns,b(k.today_attachments),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[22]||(e[22]=i("div",{class:"stat-label app-muted"},"账号数",-1)),i("div",Bs,[_(b(I.value),1),i("span",Is,"/ "+b(u(l).isVip?"∞":ze.value),1)])]),_:1})]),_:1})]),_:1}),qe.value?(y(),L(Ae,{key:0,type:"info","show-icon":"",closable:!1,class:"upgrade-banner",title:"升级 VIP,解锁更多功能:无限账号 · 优先排队 · 定时任务 · 批量操作"},{default:o(()=>[i("div",Os,[n(x,{type:"primary",plain:"",onClick:e[0]||(e[0]=s=>K.value=!0)},{default:o(()=>[...e[23]||(e[23]=[_("了解VIP特权",-1)])]),_:1})])]),_:1})):M("",!0),n(r,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:o(()=>[i("div",Ls,[e[26]||(e[26]=i("div",{class:"panel-title"},"账号管理",-1)),i("div",Us,[n(x,{loading:c.value,onClick:ke},{default:o(()=>[...e[24]||(e[24]=[_("刷新",-1)])]),_:1},8,["loading"]),n(x,{type:"primary",onClick:st},{default:o(()=>[...e[25]||(e[25]=[_("添加账号",-1)])]),_:1})])]),i("div",Ds,[i("div",Rs,[n(Pe,{"model-value":Fe.value,onChange:We},{default:o(()=>[...e[27]||(e[27]=[_("全选",-1)])]),_:1},8,["model-value"]),i("span",Ks,"已选 "+b(he.value)+" 个",1)]),i("div",js,[n(Be,{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=s=>v.value=s),size:"small",style:{width:"120px"}},{default:o(()=>[(y(),$(le,null,ye(O,s=>n(Ne,{key:s.value,label:s.label,value:s.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),n(Ie,{modelValue:E.value,"onUpdate:modelValue":e[2]||(e[2]=s=>E.value=s),"inline-prompt":"","active-text":"截图","inactive-text":"不截图"},null,8,["modelValue"]),n(Ie,{modelValue:F.value,"onUpdate:modelValue":e[3]||(e[3]=s=>F.value=s),disabled:q.value,"inline-prompt":"","active-text":"上传","inactive-text":"不传",onChange:Xe},null,8,["modelValue","disabled"]),e[28]||(e[28]=i("span",{class:"app-muted"},"表格(测试)",-1)),A.enabled?(y(),L(Oe,{key:0,type:A.online?"success":"warning",size:"small",effect:"plain"},{default:o(()=>[_(b(A.online?"✅ 就绪":"⚠️ 离线"),1)]),_:1},8,["type"])):M("",!0)]),i("div",Ms,[n(x,{type:"primary",onClick:lt},{default:o(()=>[...e[29]||(e[29]=[_("批量启动",-1)])]),_:1}),n(x,{onClick:rt},{default:o(()=>[...e[30]||(e[30]=[_("批量停止",-1)])]),_:1}),n(x,{type:"success",plain:"",onClick:it},{default:o(()=>[...e[31]||(e[31]=[_("全部启动",-1)])]),_:1}),n(x,{type:"danger",plain:"",onClick:ut},{default:o(()=>[...e[32]||(e[32]=[_("全部停止",-1)])]),_:1}),n(x,{type:"danger",text:"",onClick:dt},{default:o(()=>[...e[33]||(e[33]=[_("清空",-1)])]),_:1})])]),c.value?(y(),L(yt,{key:0,rows:5,animated:""})):(y(),$(le,{key:1},[w.value.length===0?(y(),L(gt,{key:0,description:"暂无账号,点击右上角添加"})):(y(),$("div",zs,[(y(!0),$(le,null,ye(w.value,s=>(y(),L(r,{key:s.id,shadow:"never",class:"account-card","body-style":{padding:"14px"}},{default:o(()=>[i("div",Fs,[n(_t,{modelValue:S.value,"onUpdate:modelValue":e[4]||(e[4]=T=>S.value=T),class:"card-check"},{default:o(()=>[n(Pe,{value:s.id},null,8,["value"])]),_:2},1032,["modelValue"]),i("div",qs,[i("div",Hs,[i("span",Ws,b(s.username),1),n(Oe,{size:"small",type:Je(s.status),effect:"light"},{default:o(()=>[_(b(s.status),1)]),_:2},1032,["type"])]),i("div",Gs,[_(b(s.remark||"—")+" ",1),ne(s)&&s.detail_status?(y(),$("span",Js," · "+b(s.detail_status),1)):M("",!0),ne(s)&&s.elapsed_display?(y(),$("span",Qs," · "+b(s.elapsed_display),1)):M("",!0),String(s.status||"").includes("排队")&&s.queue_ahead!=null?(y(),$("span",Xs," · 前面 "+b(s.queue_ahead)+" 个 · 运行中 "+b(s.queue_running_total??0)+" 个 ",1)):ne(s)&&(s.queue_pending_total!=null||s.queue_running_total!=null)?(y(),$("span",Ys," · 排队 "+b(s.queue_pending_total??0)+" 个 · 运行中 "+b(s.queue_running_total??0)+" 个 ",1)):M("",!0)])])]),ne(s)?(y(),$("div",Zs,[n(vt,{percentage:Ge(s),"stroke-width":10,"show-text":!1},null,8,["percentage"]),i("div",ea,[i("span",null,"内容 "+b(s.progress_items||0),1)])])):M("",!0),i("div",ta,[n(Be,{modelValue:C[s.id],"onUpdate:modelValue":T=>C[s.id]=T,size:"small",style:{width:"130px"}},{default:o(()=>[(y(),$(le,null,ye(O,T=>n(Ne,{key:T.value,label:T.label,value:T.value},null,8,["label","value"])),64))]),_:1},8,["modelValue","onUpdate:modelValue"]),i("div",sa,[n(x,{size:"small",type:"primary",disabled:s.is_running,onClick:T=>Ye(s)},{default:o(()=>[...e[34]||(e[34]=[_("启动",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",disabled:!s.is_running,onClick:T=>Ze(s)},{default:o(()=>[...e[35]||(e[35]=[_("停止",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",disabled:s.is_running,onClick:T=>et(s)},{default:o(()=>[...e[36]||(e[36]=[_("截图",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",disabled:s.is_running,onClick:T=>nt(s)},{default:o(()=>[...e[37]||(e[37]=[_("编辑",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",type:"danger",text:"",onClick:T=>tt(s)},{default:o(()=>[...e[38]||(e[38]=[_("删除",-1)])]),_:1},8,["onClick"])])])]),_:2},1024))),128))]))],64))]),_:1}),n(fe,{modelValue:D.value,"onUpdate:modelValue":e[9]||(e[9]=s=>D.value=s),title:"添加账号",width:"min(560px, 92vw)"},{footer:o(()=>[n(x,{onClick:e[8]||(e[8]=s=>D.value=!1)},{default:o(()=>[...e[39]||(e[39]=[_("取消",-1)])]),_:1}),n(x,{type:"primary",onClick:at},{default:o(()=>[...e[40]||(e[40]=[_("添加",-1)])]),_:1})]),default:o(()=>[n(Le,{"label-position":"top"},{default:o(()=>[n(Q,{label:"账号"},{default:o(()=>[n(J,{modelValue:a.username,"onUpdate:modelValue":e[5]||(e[5]=s=>a.username=s),placeholder:"请输入账号",autocomplete:"off"},null,8,["modelValue"])]),_:1}),n(Q,{label:"密码"},{default:o(()=>[n(J,{modelValue:a.password,"onUpdate:modelValue":e[6]||(e[6]=s=>a.password=s),type:"password","show-password":"",placeholder:"请输入密码",autocomplete:"off"},null,8,["modelValue"])]),_:1}),n(Q,{label:"备注(可选,最多200字)"},{default:o(()=>[n(J,{modelValue:a.remark,"onUpdate:modelValue":e[7]||(e[7]=s=>a.remark=s),type:"textarea",rows:3,maxlength:"200","show-word-limit":"",placeholder:"例如:部门/用途"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(fe,{modelValue:R.value,"onUpdate:modelValue":e[14]||(e[14]=s=>R.value=s),title:"编辑账号",width:"min(560px, 92vw)"},{footer:o(()=>[n(x,{onClick:e[13]||(e[13]=s=>R.value=!1)},{default:o(()=>[...e[41]||(e[41]=[_("取消",-1)])]),_:1}),n(x,{type:"primary",onClick:ot},{default:o(()=>[...e[42]||(e[42]=[_("保存",-1)])]),_:1})]),default:o(()=>[n(Le,{"label-position":"top"},{default:o(()=>[n(Q,{label:"账号"},{default:o(()=>[n(J,{modelValue:d.username,"onUpdate:modelValue":e[10]||(e[10]=s=>d.username=s),disabled:""},null,8,["modelValue"])]),_:1}),n(Q,{label:"新密码(可选)"},{default:o(()=>[n(J,{modelValue:d.password,"onUpdate:modelValue":e[11]||(e[11]=s=>d.password=s),type:"password","show-password":"",placeholder:"留空表示不修改密码",autocomplete:"off"},null,8,["modelValue"])]),_:1}),n(Q,{label:"备注(可选,最多200字)"},{default:o(()=>[n(J,{modelValue:d.remark,"onUpdate:modelValue":e[12]||(e[12]=s=>d.remark=s),type:"textarea",rows:3,maxlength:"200","show-word-limit":"",placeholder:"例如:部门/用途"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(fe,{modelValue:K.value,"onUpdate:modelValue":e[16]||(e[16]=s=>K.value=s),title:"VIP 特权",width:"min(560px, 92vw)"},{footer:o(()=>[n(x,{type:"primary",onClick:e[15]||(e[15]=s=>K.value=!1)},{default:o(()=>[...e[43]||(e[43]=[_("我知道了",-1)])]),_:1})]),default:o(()=>[n(Ae,{type:"info",closable:!1,title:"升级 VIP 后可解锁:无限账号、优先排队、定时任务、批量操作。","show-icon":""}),e[44]||(e[44]=i("div",{class:"vip-body"},[i("div",{class:"vip-tip app-muted"},"升级方式:请通过“反馈”联系管理员开通(与后台一致)。")],-1))]),_:1},8,["modelValue"])])}}},ha=ts(ra,[["__scopeId","data-v-a3d05837"]]);export{ha as default}; + `}),C=g(()=>2*Math.PI*p.value),v=g(()=>l.type==="dashboard"?.75:1),B=g(()=>`${-1*C.value*(1-v.value)/2}px`),E=g(()=>({strokeDasharray:`${C.value*v.value}px, ${C.value}px`,strokeDashoffset:B.value})),F=g(()=>({strokeDasharray:`${C.value*v.value*(l.percentage/100)}px, ${C.value}px`,strokeDashoffset:B.value,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s"})),q=g(()=>{let a;return l.color?a=K(l.percentage):a=h[l.status]||h.default,a}),A=g(()=>l.status==="warning"?wt:l.type==="line"?l.status==="success"?bt:ht:l.status==="success"?kt:St),se=g(()=>l.type==="line"?12+l.strokeWidth*.4:l.width*.111111+2),D=g(()=>l.format(l.percentage));function R(a){const d=100/a.length;return a.map((w,I)=>Ke(w)?{color:w,percentage:(I+1)*d}:w).sort((w,I)=>w.percentage-I.percentage)}const K=a=>{var d;const{color:O}=l;if(ns(O))return O(a);if(Ke(O))return O;{const w=R(O);for(const I of w)if(I.percentage>a)return I.color;return(d=w[w.length-1])==null?void 0:d.color}};return(a,d)=>(y(),$("div",{class:N([u(c).b(),u(c).m(a.type),u(c).is(a.status),{[u(c).m("without-text")]:!a.showText,[u(c).m("text-inside")]:a.textInside}]),role:"progressbar","aria-valuenow":a.percentage,"aria-valuemin":"0","aria-valuemax":"100"},[a.type==="line"?(y(),$("div",{key:0,class:N(u(c).b("bar"))},[i("div",{class:N(u(c).be("bar","outer")),style:j({height:`${a.strokeWidth}px`})},[i("div",{class:N([u(c).be("bar","inner"),{[u(c).bem("bar","inner","indeterminate")]:a.indeterminate},{[u(c).bem("bar","inner","striped")]:a.striped},{[u(c).bem("bar","inner","striped-flow")]:a.stripedFlow}]),style:j(u(U))},[(a.showText||a.$slots.default)&&a.textInside?(y(),$("div",{key:0,class:N(u(c).be("bar","innerText"))},[ie(a.$slots,"default",{percentage:a.percentage},()=>[i("span",null,b(u(D)),1)])],2)):M("v-if",!0)],6)],6)],2)):(y(),$("div",{key:1,class:N(u(c).b("circle")),style:j({height:`${a.width}px`,width:`${a.width}px`})},[(y(),$("svg",{viewBox:"0 0 100 100"},[i("path",{class:N(u(c).be("circle","track")),d:u(S),stroke:`var(${u(c).cssVarName("fill-color-light")}, #e5e9f2)`,"stroke-linecap":a.strokeLinecap,"stroke-width":u(k),fill:"none",style:j(u(E))},null,14,["d","stroke","stroke-linecap","stroke-width"]),i("path",{class:N(u(c).be("circle","path")),d:u(S),stroke:u(q),fill:"none",opacity:a.percentage?1:0,"stroke-linecap":a.strokeLinecap,"stroke-width":u(k),style:j(u(F))},null,14,["d","stroke","opacity","stroke-linecap","stroke-width"])]))],6)),(a.showText||a.$slots.default)&&!a.textInside?(y(),$("div",{key:2,class:N(u(c).e("text")),style:j({fontSize:`${u(se)}px`})},[ie(a.$slots,"default",{percentage:a.percentage},()=>[a.status?(y(),L(u(xt),{key:1},{default:o(()=>[(y(),L(be(u(A))))]),_:1})):(y(),$("span",{key:0},b(u(D)),1))])],6)):M("v-if",!0)],10,["aria-valuenow"]))}});var gs=_e(ys,[["__file","progress.vue"]]);const _s=we(gs),vs=["start","center","end","space-around","space-between","space-evenly"],ws=["top","middle","bottom"],bs=ge({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:vs,default:"start"},align:{type:String,values:ws}}),hs=Y({name:"ElRow"}),ks=Y({...hs,props:bs,setup(V){const l=V,h=ve("row"),c=g(()=>l.gutter);os(Me,{gutter:c});const U=g(()=>{const p={};return l.gutter&&(p.marginRight=p.marginLeft=`-${l.gutter/2}px`),p}),k=g(()=>[h.b(),h.is(`justify-${l.justify}`,l.justify!=="start"),h.is(`align-${l.align}`,!!l.align)]);return(p,S)=>(y(),L(be(p.tag),{class:N(u(k)),style:j(u(U))},{default:o(()=>[ie(p.$slots,"default")]),_:3},8,["class","style"]))}});var Ss=_e(ks,[["__file","row.vue"]]);const xs=we(Ss);async function $s(){const{data:V}=await Zt.get("/run_stats");return V}let re=null;function Vs(){return re||(re=es({transports:["websocket","polling"],withCredentials:!0}),re)}const Cs={class:"page"},Ts={class:"stat-value"},Es={class:"stat-value"},As={class:"stat-value"},Ps={class:"stat-value"},Ns={class:"stat-value"},Bs={class:"stat-value"},Is={class:"stat-suffix app-muted"},Os={class:"upgrade-actions"},Ls={class:"panel-head"},Us={class:"panel-actions"},Ds={class:"toolbar"},Rs={class:"toolbar-left"},Ks={class:"app-muted"},js={class:"toolbar-middle"},Ms={class:"toolbar-right"},zs={key:1,class:"grid"},Fs={class:"card-top"},qs={class:"card-main"},Ws={class:"card-title"},Gs={class:"card-name"},Hs={class:"card-sub app-muted"},Js={key:0},Qs={key:1},Xs={key:2},Ys={key:3},Zs={key:0,class:"progress"},ea={class:"progress-meta app-muted"},ta={class:"card-controls"},sa={class:"card-buttons"},je="zsglpt:accounts:enable_screenshot",aa=1e4,na=3e4,oa=6e4,la=18e4,ra={__name:"AccountsPage",setup(V){const l=At(),h=Vs(),c=P(!1),U=P(!1),k=X({today_completed:0,today_failed:0,current_running:0,today_items:0,today_attachments:0}),p=X({}),S=P([]),C=X({}),v=P("应读");function B(){try{const t=window.localStorage.getItem(je);if(t==="0"||t==="false")return!1;if(t==="1"||t==="true")return!0}catch{}return!0}const E=P(B());me(E,t=>{try{window.localStorage.setItem(je,t?"1":"0")}catch{}});const F=P(!1),q=P(!1),A=X({enabled:!1,online:!1,message:""}),se=P(!1),D=P(!1),R=P(!1),K=P(!1),a=X({username:"",password:"",remark:""}),d=X({id:"",username:"",password:"",remark:"",originalRemark:""}),O=[{label:"应读",value:"应读"},{label:"注册前未读",value:"注册前未读"}],w=g(()=>Object.values(p).sort((t,e)=>String(t.username||"").localeCompare(String(e.username||""),"zh-CN"))),I=g(()=>w.value.length),ze=g(()=>l.isVip?999:3),he=g(()=>S.value.length),Fe=g(()=>I.value>0&&he.value===I.value),qe=g(()=>!l.isVip);function Z(t){const e=p[t.id]||{};p[t.id]={...e,...t}}function ue(t){const e=Array.isArray(t)?t:[],r=new Set(e.map(m=>String(m?.id||"")));for(const m of Object.keys(p))r.has(m)||delete p[m];for(const m of e)Z(m)}function We(){for(const t of w.value)C[t.id]||(C[t.id]="应读")}me(w,We,{immediate:!0});function Ge(t){t?S.value=w.value.map(e=>e.id):S.value=[]}function ae(t){return l.isVip?!0:(f.warning(`${t}是VIP专属功能`),K.value=!0,!1)}function He(t){const e=Number(t.total_items||0),r=Number(t.progress_items||0);return e?Math.max(0,Math.min(100,Math.round(r/e*100))):0}function Je(t=""){const e=String(t);return e.includes("已完成")||e.includes("完成")?"success":e.includes("失败")||e.includes("错误")||e.includes("异常")||e.includes("登录失败")||e.includes("上传截图")?"danger":e.includes("等待上传")||e.includes("排队")||e.includes("运行")||e.includes("截图")?"warning":"info"}function ne(t){if(!t?.is_running)return!1;const e=String(t.status||""),r=String(t.detail_status||"");return!(!e||e==="未开始"||!e.includes("运行")||e.includes("截图")||e.includes("等待截图")||r.includes("截图")||r.includes("等待截图")||r.includes("浏览完成")||r.includes("任务完成")||e.includes("已完成"))}async function W(t={}){const e=!!t?.silent;e||(U.value=!0);try{const r=await $s();k.today_completed=Number(r?.today_completed||0),k.today_failed=Number(r?.today_failed||0),k.current_running=Number(r?.current_running||0),k.today_items=Number(r?.today_items||0),k.today_attachments=Number(r?.today_attachments||0)}catch(r){r?.response?.status===401&&(window.location.href="/login")}finally{e||(U.value=!1)}}async function ke(){c.value=!0;try{const t=await It({refresh:!0});ue(t)}catch(t){t?.response?.status===401&&(window.location.href="/login")}finally{c.value=!1}}async function Qe(){q.value=!0;try{const t=await Qt();F.value=Number(t?.kdocs_auto_upload||0)===1}catch{F.value=!1}finally{q.value=!1}}async function Se(){se.value=!0;try{const t=await Xt();A.enabled=!!t?.enabled,A.online=!!t?.online,A.message=t?.message||""}catch{A.enabled=!1,A.online=!1,A.message=""}finally{se.value=!1}}async function Xe(t){q.value=!0;try{await Yt({kdocs_auto_upload:t?1:0}),f.success(t?"已开启自动上传(测试)":"已关闭自动上传")}catch{F.value=!t}finally{q.value=!1}}async function Ye(t){try{await Lt(t.id,{browse_type:C[t.id]||"应读",enable_screenshot:E.value})}catch(e){const r=e?.response?.data;f.error(r?.error||"启动失败")}}async function Ze(t){try{await Ut(t.id)}catch(e){const r=e?.response?.data;f.error(r?.error||"停止失败")}}async function et(t){try{await Dt(t.id,{browse_type:C[t.id]||"应读"}),f.success("已提交截图")}catch(e){const r=e?.response?.data;f.error(r?.error||"截图失败")}}async function tt(t){try{await ee.confirm(`确定要删除账号「${t.username}」吗?`,"删除账号",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await Rt(t.id);e?.success?(delete p[t.id],S.value=S.value.filter(r=>r!==t.id),f.success("已删除"),await W()):f.error(e?.error||"删除失败")}catch(e){const r=e?.response?.data;f.error(r?.error||"删除失败")}}function st(){a.username="",a.password="",a.remark="",D.value=!0}async function at(){const t=a.username.trim();if(!t||!a.password.trim()){f.error("用户名和密码不能为空");return}try{await Kt({username:t,password:a.password,remember:!0,remark:a.remark.trim()}),f.success("添加成功"),D.value=!1,await W()}catch(e){const r=e?.response?.data;f.error(r?.error||"添加失败")}}function nt(t){d.id=t.id,d.username=t.username,d.password="",d.remark=String(t.remark||""),d.originalRemark=String(t.remark||""),R.value=!0}async function ot(){if(!d.id)return;const t=d.password.trim(),e=d.remark.trim();if(!t&&e===d.originalRemark){f.info("没有修改"),R.value=!1;return}try{if(t){const r=await jt(d.id,{password:t,remember:!0});r?.account&&Z(r.account)}e!==d.originalRemark&&(await Mt(d.id,{remark:e}),Z({id:d.id,remark:e})),f.success("已更新"),R.value=!1}catch(r){const m=r?.response?.data;f.error(m?.error||"更新失败")}}async function lt(){if(ae("批量操作")){if(S.value.length===0){f.warning("请先选择账号");return}try{const t=await De({account_ids:S.value,browse_type:v.value,enable_screenshot:E.value});f.success(`已启动 ${t?.started_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function rt(){if(ae("批量操作")){if(S.value.length===0){f.warning("请先选择账号");return}try{const t=await Re({account_ids:S.value});f.success(`已停止 ${t?.stopped_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function it(){if(ae("全部启动")){if(w.value.length===0){f.warning("没有账号");return}try{await ee.confirm("确定要启动全部账号吗?","全部启动",{confirmButtonText:"启动",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await De({account_ids:w.value.map(e=>e.id),browse_type:v.value,enable_screenshot:E.value});f.success(`已启动 ${t?.started_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function ut(){if(ae("全部停止")){if(w.value.length===0){f.warning("没有账号");return}try{await ee.confirm("确定要停止全部账号吗?","全部停止",{confirmButtonText:"停止",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await Re({account_ids:w.value.map(e=>e.id)});f.success(`已停止 ${t?.stopped_count||0} 个账号`)}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}}async function dt(){if(w.value.length===0){f.warning("没有账号");return}try{await ee.confirm("确定要清空所有账号吗?此操作不可恢复!","清空账号",{confirmButtonText:"继续",cancelButtonText:"取消",type:"warning"}),await ee.confirm("再次确认:真的要删除所有账号吗?","二次确认",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await Ot();if(t?.success){ue([]),S.value=[],f.success("已清空所有账号"),await W();return}f.error(t?.error||"操作失败")}catch(t){const e=t?.response?.data;f.error(e?.error||"操作失败")}}function ct(){const t=m=>{ue(m)},e=m=>{Z(m)},r=m=>{m?.account_id&&Z({id:m.account_id,detail_status:m.stage||"",total_items:m.total_items,progress_items:m.browsed_items,total_attachments:m.total_attachments,progress_attachments:m.viewed_attachments,elapsed_seconds:m.elapsed_seconds,elapsed_display:m.elapsed_display})};return h.on("accounts_list",t),h.on("account_update",e),h.on("task_progress",r),h.connected||h.connect(),()=>{h.off("accounts_list",t),h.off("account_update",e),h.off("task_progress",r)}}let de=null,G=null,H=null;function xe(){return typeof document>"u"?!1:document.visibilityState==="hidden"}const oe=g(()=>w.value.some(t=>!(!t?.is_running||String(t.status||"").includes("排队"))));function pt(){return xe()?na:aa}function ce(){G&&(window.clearTimeout(G),G=null)}function $e(){G||!oe.value||(G=window.setTimeout(async()=>{G=null,await W({silent:!0}).catch(()=>{}),$e()},pt()))}function Ve(){$e()}function Ce(t=null){const e=oe.value;t===!0&&e===!1&&W({silent:!0}).catch(()=>{}),e?Ve():ce()}me(oe,(t,e)=>{Ce(e)});function ft(){return xe()?la:oa}function Te(){H&&(window.clearTimeout(H),H=null)}function pe(){H||(H=window.setTimeout(async()=>{H=null,await Se().catch(()=>{}),pe()},ft()))}function Ee(){oe.value&&(ce(),Ve()),Te(),pe()}return ls(async()=>{l.vipInfo||l.refreshVipInfo().catch(()=>{window.location.href="/login"}),de=ct(),await ke(),await Qe(),await Se(),await W(),Ce(),pe(),window.addEventListener("visibilitychange",Ee)}),rs(()=>{de&&de(),ce(),Te(),window.removeEventListener("visibilitychange",Ee)}),(t,e)=>{const r=Jt,m=ps,mt=xs,x=Ht,Ae=Vt,Pe=Pt,Ne=Gt,Be=Wt,Ie=Nt,Oe=zt,yt=qt,gt=Ft,_t=Bt,vt=_s,J=Et,Q=Tt,Le=Ct,fe=$t;return y(),$("div",Cs,[n(mt,{gutter:12,class:"stats-row"},{default:o(()=>[n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[17]||(e[17]=i("div",{class:"stat-label app-muted"},"今日完成",-1)),i("div",Ts,b(k.today_completed),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[18]||(e[18]=i("div",{class:"stat-label app-muted"},"今日失败",-1)),i("div",Es,b(k.today_failed),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[19]||(e[19]=i("div",{class:"stat-label app-muted"},"运行中",-1)),i("div",As,b(k.current_running),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[20]||(e[20]=i("div",{class:"stat-label app-muted"},"浏览内容",-1)),i("div",Ps,b(k.today_items),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[21]||(e[21]=i("div",{class:"stat-label app-muted"},"查看附件",-1)),i("div",Ns,b(k.today_attachments),1)]),_:1})]),_:1}),n(m,{xs:12,sm:8,md:4},{default:o(()=>[n(r,{shadow:"never",class:"stat-card","body-style":{padding:"14px"}},{default:o(()=>[e[22]||(e[22]=i("div",{class:"stat-label app-muted"},"账号数",-1)),i("div",Bs,[_(b(I.value),1),i("span",Is,"/ "+b(u(l).isVip?"∞":ze.value),1)])]),_:1})]),_:1})]),_:1}),qe.value?(y(),L(Ae,{key:0,type:"info","show-icon":"",closable:!1,class:"upgrade-banner",title:"升级 VIP,解锁更多功能:无限账号 · 优先排队 · 定时任务 · 批量操作"},{default:o(()=>[i("div",Os,[n(x,{type:"primary",plain:"",onClick:e[0]||(e[0]=s=>K.value=!0)},{default:o(()=>[...e[23]||(e[23]=[_("了解VIP特权",-1)])]),_:1})])]),_:1})):M("",!0),n(r,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:o(()=>[i("div",Ls,[e[26]||(e[26]=i("div",{class:"panel-title"},"账号管理",-1)),i("div",Us,[n(x,{loading:c.value,onClick:ke},{default:o(()=>[...e[24]||(e[24]=[_("刷新",-1)])]),_:1},8,["loading"]),n(x,{type:"primary",onClick:st},{default:o(()=>[...e[25]||(e[25]=[_("添加账号",-1)])]),_:1})])]),i("div",Ds,[i("div",Rs,[n(Pe,{"model-value":Fe.value,onChange:Ge},{default:o(()=>[...e[27]||(e[27]=[_("全选",-1)])]),_:1},8,["model-value"]),i("span",Ks,"已选 "+b(he.value)+" 个",1)]),i("div",js,[n(Be,{modelValue:v.value,"onUpdate:modelValue":e[1]||(e[1]=s=>v.value=s),size:"small",style:{width:"120px"}},{default:o(()=>[(y(),$(le,null,ye(O,s=>n(Ne,{key:s.value,label:s.label,value:s.value},null,8,["label","value"])),64))]),_:1},8,["modelValue"]),n(Ie,{modelValue:E.value,"onUpdate:modelValue":e[2]||(e[2]=s=>E.value=s),"inline-prompt":"","active-text":"截图","inactive-text":"不截图"},null,8,["modelValue"]),n(Ie,{modelValue:F.value,"onUpdate:modelValue":e[3]||(e[3]=s=>F.value=s),disabled:q.value,"inline-prompt":"","active-text":"上传","inactive-text":"不传",onChange:Xe},null,8,["modelValue","disabled"]),e[28]||(e[28]=i("span",{class:"app-muted"},"表格(测试)",-1)),A.enabled?(y(),L(Oe,{key:0,type:A.online?"success":"warning",size:"small",effect:"plain"},{default:o(()=>[_(b(A.online?"✅ 就绪":"⚠️ 离线"),1)]),_:1},8,["type"])):M("",!0)]),i("div",Ms,[n(x,{type:"primary",onClick:lt},{default:o(()=>[...e[29]||(e[29]=[_("批量启动",-1)])]),_:1}),n(x,{onClick:rt},{default:o(()=>[...e[30]||(e[30]=[_("批量停止",-1)])]),_:1}),n(x,{type:"success",plain:"",onClick:it},{default:o(()=>[...e[31]||(e[31]=[_("全部启动",-1)])]),_:1}),n(x,{type:"danger",plain:"",onClick:ut},{default:o(()=>[...e[32]||(e[32]=[_("全部停止",-1)])]),_:1}),n(x,{type:"danger",text:"",onClick:dt},{default:o(()=>[...e[33]||(e[33]=[_("清空",-1)])]),_:1})])]),c.value?(y(),L(yt,{key:0,rows:5,animated:""})):(y(),$(le,{key:1},[w.value.length===0?(y(),L(gt,{key:0,description:"暂无账号,点击右上角添加"})):(y(),$("div",zs,[(y(!0),$(le,null,ye(w.value,s=>(y(),L(r,{key:s.id,shadow:"never",class:"account-card","body-style":{padding:"14px"}},{default:o(()=>[i("div",Fs,[n(_t,{modelValue:S.value,"onUpdate:modelValue":e[4]||(e[4]=T=>S.value=T),class:"card-check"},{default:o(()=>[n(Pe,{value:s.id},null,8,["value"])]),_:2},1032,["modelValue"]),i("div",qs,[i("div",Ws,[i("span",Gs,b(s.username),1),n(Oe,{size:"small",type:Je(s.status),effect:"light"},{default:o(()=>[_(b(s.status),1)]),_:2},1032,["type"])]),i("div",Hs,[_(b(s.remark||"—")+" ",1),ne(s)&&s.detail_status?(y(),$("span",Js," · "+b(s.detail_status),1)):M("",!0),ne(s)&&s.elapsed_display?(y(),$("span",Qs," · "+b(s.elapsed_display),1)):M("",!0),String(s.status||"").includes("排队")&&s.queue_ahead!=null?(y(),$("span",Xs," · 前面 "+b(s.queue_ahead)+" 个 · 运行中 "+b(s.queue_running_total??0)+" 个 ",1)):ne(s)&&(s.queue_pending_total!=null||s.queue_running_total!=null)?(y(),$("span",Ys," · 排队 "+b(s.queue_pending_total??0)+" 个 · 运行中 "+b(s.queue_running_total??0)+" 个 ",1)):M("",!0)])])]),ne(s)?(y(),$("div",Zs,[n(vt,{percentage:He(s),"stroke-width":10,"show-text":!1},null,8,["percentage"]),i("div",ea,[i("span",null,"内容 "+b(s.progress_items||0),1)])])):M("",!0),i("div",ta,[n(Be,{modelValue:C[s.id],"onUpdate:modelValue":T=>C[s.id]=T,size:"small",style:{width:"130px"}},{default:o(()=>[(y(),$(le,null,ye(O,T=>n(Ne,{key:T.value,label:T.label,value:T.value},null,8,["label","value"])),64))]),_:1},8,["modelValue","onUpdate:modelValue"]),i("div",sa,[n(x,{size:"small",type:"primary",disabled:s.is_running,onClick:T=>Ye(s)},{default:o(()=>[...e[34]||(e[34]=[_("启动",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",disabled:!s.is_running,onClick:T=>Ze(s)},{default:o(()=>[...e[35]||(e[35]=[_("停止",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",disabled:s.is_running,onClick:T=>et(s)},{default:o(()=>[...e[36]||(e[36]=[_("截图",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",disabled:s.is_running,onClick:T=>nt(s)},{default:o(()=>[...e[37]||(e[37]=[_("编辑",-1)])]),_:1},8,["disabled","onClick"]),n(x,{size:"small",type:"danger",text:"",onClick:T=>tt(s)},{default:o(()=>[...e[38]||(e[38]=[_("删除",-1)])]),_:1},8,["onClick"])])])]),_:2},1024))),128))]))],64))]),_:1}),n(fe,{modelValue:D.value,"onUpdate:modelValue":e[9]||(e[9]=s=>D.value=s),title:"添加账号",width:"min(560px, 92vw)"},{footer:o(()=>[n(x,{onClick:e[8]||(e[8]=s=>D.value=!1)},{default:o(()=>[...e[39]||(e[39]=[_("取消",-1)])]),_:1}),n(x,{type:"primary",onClick:at},{default:o(()=>[...e[40]||(e[40]=[_("添加",-1)])]),_:1})]),default:o(()=>[n(Le,{"label-position":"top"},{default:o(()=>[n(Q,{label:"账号"},{default:o(()=>[n(J,{modelValue:a.username,"onUpdate:modelValue":e[5]||(e[5]=s=>a.username=s),placeholder:"请输入账号",autocomplete:"off"},null,8,["modelValue"])]),_:1}),n(Q,{label:"密码"},{default:o(()=>[n(J,{modelValue:a.password,"onUpdate:modelValue":e[6]||(e[6]=s=>a.password=s),type:"password","show-password":"",placeholder:"请输入密码",autocomplete:"off"},null,8,["modelValue"])]),_:1}),n(Q,{label:"备注(可选,最多200字)"},{default:o(()=>[n(J,{modelValue:a.remark,"onUpdate:modelValue":e[7]||(e[7]=s=>a.remark=s),type:"textarea",rows:3,maxlength:"200","show-word-limit":"",placeholder:"例如:部门/用途"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(fe,{modelValue:R.value,"onUpdate:modelValue":e[14]||(e[14]=s=>R.value=s),title:"编辑账号",width:"min(560px, 92vw)"},{footer:o(()=>[n(x,{onClick:e[13]||(e[13]=s=>R.value=!1)},{default:o(()=>[...e[41]||(e[41]=[_("取消",-1)])]),_:1}),n(x,{type:"primary",onClick:ot},{default:o(()=>[...e[42]||(e[42]=[_("保存",-1)])]),_:1})]),default:o(()=>[n(Le,{"label-position":"top"},{default:o(()=>[n(Q,{label:"账号"},{default:o(()=>[n(J,{modelValue:d.username,"onUpdate:modelValue":e[10]||(e[10]=s=>d.username=s),disabled:""},null,8,["modelValue"])]),_:1}),n(Q,{label:"新密码(可选)"},{default:o(()=>[n(J,{modelValue:d.password,"onUpdate:modelValue":e[11]||(e[11]=s=>d.password=s),type:"password","show-password":"",placeholder:"留空表示不修改密码",autocomplete:"off"},null,8,["modelValue"])]),_:1}),n(Q,{label:"备注(可选,最多200字)"},{default:o(()=>[n(J,{modelValue:d.remark,"onUpdate:modelValue":e[12]||(e[12]=s=>d.remark=s),type:"textarea",rows:3,maxlength:"200","show-word-limit":"",placeholder:"例如:部门/用途"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),n(fe,{modelValue:K.value,"onUpdate:modelValue":e[16]||(e[16]=s=>K.value=s),title:"VIP 特权",width:"min(560px, 92vw)"},{footer:o(()=>[n(x,{type:"primary",onClick:e[15]||(e[15]=s=>K.value=!1)},{default:o(()=>[...e[43]||(e[43]=[_("我知道了",-1)])]),_:1})]),default:o(()=>[n(Ae,{type:"info",closable:!1,title:"升级 VIP 后可解锁:无限账号、优先排队、定时任务、批量操作。","show-icon":""}),e[44]||(e[44]=i("div",{class:"vip-body"},[i("div",{class:"vip-tip app-muted"},"升级方式:请通过“反馈”联系管理员开通(与后台一致)。")],-1))]),_:1},8,["modelValue"])])}}},Ca=ts(ra,[["__scopeId","data-v-307a0b95"]]);export{Ca as default}; diff --git a/static/app/assets/AccountsPage-iiBFNme8.css b/static/app/assets/AccountsPage-DKewJ7S7.css similarity index 94% rename from static/app/assets/AccountsPage-iiBFNme8.css rename to static/app/assets/AccountsPage-DKewJ7S7.css index 6f312c4..4c60f3e 100644 --- a/static/app/assets/AccountsPage-iiBFNme8.css +++ b/static/app/assets/AccountsPage-DKewJ7S7.css @@ -1 +1 @@ -.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.page[data-v-a3d05837]{display:flex;flex-direction:column;gap:12px}.stat-card[data-v-a3d05837],.panel[data-v-a3d05837]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.stat-label[data-v-a3d05837]{font-size:12px}.stat-value[data-v-a3d05837]{margin-top:6px;font-size:22px;font-weight:900;letter-spacing:.2px}.stat-suffix[data-v-a3d05837]{margin-left:6px;font-size:12px;font-weight:600}.upgrade-banner[data-v-a3d05837]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.upgrade-actions[data-v-a3d05837]{margin-top:10px}.panel-head[data-v-a3d05837]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-a3d05837]{font-size:16px;font-weight:900}.panel-actions[data-v-a3d05837]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.toolbar[data-v-a3d05837]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px;border:1px dashed rgba(17,24,39,.14);border-radius:12px;background:#f6f7fb99}.toolbar-left[data-v-a3d05837],.toolbar-middle[data-v-a3d05837],.toolbar-right[data-v-a3d05837]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar-right[data-v-a3d05837]{margin-left:auto;justify-content:flex-end}.grid[data-v-a3d05837]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;align-items:start}.account-card[data-v-a3d05837]{border-radius:14px;border:1px solid var(--app-border)}.card-top[data-v-a3d05837]{display:flex;gap:10px}.card-check[data-v-a3d05837]{padding-top:2px}.card-main[data-v-a3d05837]{min-width:0;flex:1}.card-title[data-v-a3d05837]{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-name[data-v-a3d05837]{font-size:14px;font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-sub[data-v-a3d05837]{margin-top:6px;font-size:12px;line-height:1.4;word-break:break-word}.progress[data-v-a3d05837]{margin-top:12px}.progress-meta[data-v-a3d05837]{margin-top:6px;display:flex;justify-content:space-between;gap:10px;font-size:12px}.card-controls[data-v-a3d05837]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-buttons[data-v-a3d05837]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.vip-body[data-v-a3d05837]{padding:12px 0 0}.vip-tip[data-v-a3d05837]{margin-top:10px;font-size:13px;line-height:1.6}@media(max-width:480px){.grid[data-v-a3d05837]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-a3d05837]{width:100%;justify-content:flex-end}.toolbar-left[data-v-a3d05837],.toolbar-middle[data-v-a3d05837],.toolbar-right[data-v-a3d05837]{width:100%}.toolbar-right[data-v-a3d05837]{margin-left:0;justify-content:flex-end}} +.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.page[data-v-307a0b95]{display:flex;flex-direction:column;gap:12px}.stat-card[data-v-307a0b95],.panel[data-v-307a0b95]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.stat-label[data-v-307a0b95]{font-size:12px}.stat-value[data-v-307a0b95]{margin-top:6px;font-size:22px;font-weight:900;letter-spacing:.2px}.stat-suffix[data-v-307a0b95]{margin-left:6px;font-size:12px;font-weight:600}.upgrade-banner[data-v-307a0b95]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.upgrade-actions[data-v-307a0b95]{margin-top:10px}.panel-head[data-v-307a0b95]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-307a0b95]{font-size:16px;font-weight:900}.panel-actions[data-v-307a0b95]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.toolbar[data-v-307a0b95]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px;border:1px dashed rgba(17,24,39,.14);border-radius:12px;background:#f6f7fb99}.toolbar-left[data-v-307a0b95],.toolbar-middle[data-v-307a0b95],.toolbar-right[data-v-307a0b95]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar-right[data-v-307a0b95]{margin-left:auto;justify-content:flex-end}.grid[data-v-307a0b95]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;align-items:start}.account-card[data-v-307a0b95]{border-radius:14px;border:1px solid var(--app-border)}.card-top[data-v-307a0b95]{display:flex;gap:10px}.card-check[data-v-307a0b95]{padding-top:2px}.card-main[data-v-307a0b95]{min-width:0;flex:1}.card-title[data-v-307a0b95]{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-name[data-v-307a0b95]{font-size:14px;font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-sub[data-v-307a0b95]{margin-top:6px;font-size:12px;line-height:1.4;word-break:break-word}.progress[data-v-307a0b95]{margin-top:12px}.progress-meta[data-v-307a0b95]{margin-top:6px;display:flex;justify-content:space-between;gap:10px;font-size:12px}.card-controls[data-v-307a0b95]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-buttons[data-v-307a0b95]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.vip-body[data-v-307a0b95]{padding:12px 0 0}.vip-tip[data-v-307a0b95]{margin-top:10px;font-size:13px;line-height:1.6}@media(max-width:480px){.grid[data-v-307a0b95]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-307a0b95]{width:100%;justify-content:flex-end}.toolbar-left[data-v-307a0b95],.toolbar-middle[data-v-307a0b95],.toolbar-right[data-v-307a0b95]{width:100%}.toolbar-right[data-v-307a0b95]{margin-left:0;justify-content:flex-end}} diff --git a/static/app/assets/AppLayout-DxoFHO3h.css b/static/app/assets/AppLayout-CJKAa2WS.css similarity index 94% rename from static/app/assets/AppLayout-DxoFHO3h.css rename to static/app/assets/AppLayout-CJKAa2WS.css index 69416dd..13009c7 100644 --- a/static/app/assets/AppLayout-DxoFHO3h.css +++ b/static/app/assets/AppLayout-CJKAa2WS.css @@ -1 +1 @@ -:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);inset:0;margin:0;position:absolute;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:23px;line-height:12px;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out;width:min(23px,100%)}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-flex;flex-direction:column;height:14px;margin:0;outline:none;overflow:initial;padding:0;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out;vertical-align:middle;width:24px}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-block;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;text-align:center;width:20px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;outline:none;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;outline:none;padding:0 10px}.el-table-filter__list-item:focus,.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);margin:0;outline:none;padding:0 3px;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;line-height:var(--el-collapse-header-height);min-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;overflow:hidden;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{background-color:transparent;position:absolute;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-drawer__dragger:before{background-color:transparent;content:"";position:absolute;transition:all .2s}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:-moz-fit-content;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}: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}.is-message-box .el-overlay-message-box{inset:0;overflow:auto;padding:16px;position:fixed;text-align:center}.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{border-color:var(--el-color-error)}.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}.el-message-box-parent--hidden{overflow:hidden}.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)}}.layout-root[data-v-986fd8d3]{height:100%}.layout-aside[data-v-986fd8d3]{background:#fff;border-right:1px solid var(--app-border)}.brand[data-v-986fd8d3],.drawer-brand[data-v-986fd8d3]{padding:18px 16px 10px}.brand-title[data-v-986fd8d3]{font-size:15px;font-weight:800;letter-spacing:.2px}.brand-sub[data-v-986fd8d3]{margin-top:2px;font-size:12px}.aside-menu[data-v-986fd8d3]{border-right:none}.layout-header[data-v-986fd8d3]{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f6f7fb99;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--app-border)}.header-left[data-v-986fd8d3]{display:flex;align-items:center;gap:10px;min-width:0}.header-title[data-v-986fd8d3]{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-menu-btn[data-v-986fd8d3]{padding-left:0;padding-right:0}.header-right[data-v-986fd8d3]{display:flex;align-items:center;gap:12px}.user-meta[data-v-986fd8d3]{display:flex;align-items:center;gap:8px;min-width:0}.user-name[data-v-986fd8d3]{font-size:13px;font-weight:700;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vip-warn[data-v-986fd8d3]{font-size:12px;color:var(--app-muted);white-space:nowrap}.layout-main[data-v-986fd8d3]{padding:16px}.drawer-user[data-v-986fd8d3]{padding:0 16px 10px;display:flex;align-items:center;gap:8px}.drawer-actions[data-v-986fd8d3]{padding:12px 16px 4px;border-top:1px solid var(--app-border)}.announcement-body[data-v-986fd8d3]{min-height:80px}.announcement-content[data-v-986fd8d3]{white-space:pre-wrap;line-height:1.6;font-size:14px}.announcement-image[data-v-986fd8d3]{margin-top:12px;display:flex;justify-content:center}.announcement-image img[data-v-986fd8d3]{max-width:100%;max-height:320px;border-radius:10px;border:1px solid var(--app-border);object-fit:contain}.feedback-title[data-v-986fd8d3]{display:flex;align-items:center;gap:10px;width:100%;min-width:0}.feedback-title-text[data-v-986fd8d3]{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-time[data-v-986fd8d3]{margin-left:auto;font-size:12px;white-space:nowrap}.feedback-body[data-v-986fd8d3]{padding:6px 0 2px}.feedback-section+.feedback-section[data-v-986fd8d3]{margin-top:12px}.feedback-label[data-v-986fd8d3]{font-size:12px;margin-bottom:6px}.feedback-text[data-v-986fd8d3]{white-space:pre-wrap;line-height:1.6;font-size:13px}.settings-section[data-v-986fd8d3]{padding:6px 2px 2px}.settings-alert[data-v-986fd8d3]{margin-bottom:12px}.email-row[data-v-986fd8d3]{display:flex;align-items:center;justify-content:space-between;gap:12px}.email-value[data-v-986fd8d3]{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis}.notify-row[data-v-986fd8d3]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.notify-title[data-v-986fd8d3]{font-weight:800}.notify-desc[data-v-986fd8d3]{margin-top:4px;font-size:12px}.settings-hint[data-v-986fd8d3]{margin-top:10px}.vip-info[data-v-986fd8d3]{margin-top:12px;display:grid;gap:10px}.vip-line[data-v-986fd8d3]{display:flex;align-items:center;justify-content:space-between;gap:12px}@media(max-width:768px){.layout-header[data-v-986fd8d3]{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:10px}.header-right[data-v-986fd8d3]{width:100%;justify-content:flex-end}.layout-main[data-v-986fd8d3]{padding:12px}.user-name[data-v-986fd8d3]{max-width:120px}} +:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);inset:0;margin:0;position:absolute;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:23px;line-height:12px;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out;width:min(23px,100%)}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-flex;flex-direction:column;height:14px;margin:0;outline:none;overflow:initial;padding:0;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out;vertical-align:middle;width:24px}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-block;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;text-align:center;width:20px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;outline:none;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;outline:none;padding:0 10px}.el-table-filter__list-item:focus,.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);margin:0;outline:none;padding:0 3px;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;line-height:var(--el-collapse-header-height);min-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-overlay.is-drawer{overflow:hidden}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);--el-drawer-dragger-size:8px;background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;overflow:hidden;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{overflow:hidden;padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.is-dragging{transition:none}.el-drawer__dragger{background-color:transparent;position:absolute;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-drawer__dragger:before{background-color:transparent;content:"";position:absolute;transition:all .2s}.el-drawer__dragger:hover:before{background-color:var(--el-color-primary)}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.ltr>.el-drawer__dragger,.el-drawer.rtl>.el-drawer__dragger{bottom:0;cursor:ew-resize;height:100%;top:0;width:var(--el-drawer-dragger-size)}.el-drawer.ltr>.el-drawer__dragger:before,.el-drawer.rtl>.el-drawer__dragger:before{bottom:0;top:0;width:3px}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger,.el-drawer.ttb>.el-drawer__dragger{cursor:ns-resize;height:var(--el-drawer-dragger-size);left:0;right:0;width:100%}.el-drawer.btt>.el-drawer__dragger:before,.el-drawer.ttb>.el-drawer__dragger:before{height:3px;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.ltr>.el-drawer__dragger{right:0}.el-drawer.ltr>.el-drawer__dragger:before{right:-2px}.el-drawer.rtl{right:0}.el-drawer.rtl>.el-drawer__dragger{left:0}.el-drawer.rtl>.el-drawer__dragger:before{left:-2px}.el-drawer.ttb{top:0}.el-drawer.ttb>.el-drawer__dragger{bottom:0}.el-drawer.ttb>.el-drawer__dragger:before{bottom:-2px}.el-drawer.btt{bottom:0}.el-drawer.btt>.el-drawer__dragger{top:0}.el-drawer.btt>.el-drawer__dragger:before{top:-2px}.el-modal-drawer.is-penetrable{pointer-events:none}.el-modal-drawer.is-penetrable .el-drawer{pointer-events:auto}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:-moz-fit-content;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}: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}.is-message-box .el-overlay-message-box{inset:0;overflow:auto;padding:16px;position:fixed;text-align:center}.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{border-color:var(--el-color-error)}.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}.el-message-box-parent--hidden{overflow:hidden}.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)}}.layout-root[data-v-931e2243]{height:100%}.layout-aside[data-v-931e2243]{background:#fff;border-right:1px solid var(--app-border)}.brand[data-v-931e2243],.drawer-brand[data-v-931e2243]{padding:18px 16px 10px}.brand-title[data-v-931e2243]{font-size:15px;font-weight:800;letter-spacing:.2px}.brand-sub[data-v-931e2243]{margin-top:2px;font-size:12px}.aside-menu[data-v-931e2243]{border-right:none}.layout-header[data-v-931e2243]{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f6f7fb99;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--app-border)}.header-left[data-v-931e2243]{display:flex;align-items:center;gap:10px;min-width:0}.header-title[data-v-931e2243]{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-menu-btn[data-v-931e2243]{padding-left:0;padding-right:0}.header-right[data-v-931e2243]{display:flex;align-items:center;gap:12px}.user-meta[data-v-931e2243]{display:flex;align-items:center;gap:8px;min-width:0}.user-name[data-v-931e2243]{font-size:13px;font-weight:700;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vip-warn[data-v-931e2243]{font-size:12px;color:var(--app-muted);white-space:nowrap}.layout-main[data-v-931e2243]{padding:16px}.drawer-user[data-v-931e2243]{padding:0 16px 10px;display:flex;align-items:center;gap:8px}.drawer-actions[data-v-931e2243]{padding:12px 16px 4px;border-top:1px solid var(--app-border)}.announcement-body[data-v-931e2243]{min-height:80px}.announcement-content[data-v-931e2243]{white-space:pre-wrap;line-height:1.6;font-size:14px}.announcement-image[data-v-931e2243]{margin-top:12px;display:flex;justify-content:center}.announcement-image img[data-v-931e2243]{max-width:100%;max-height:320px;border-radius:10px;border:1px solid var(--app-border);object-fit:contain}.feedback-title[data-v-931e2243]{display:flex;align-items:center;gap:10px;width:100%;min-width:0}.feedback-title-text[data-v-931e2243]{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-time[data-v-931e2243]{margin-left:auto;font-size:12px;white-space:nowrap}.feedback-body[data-v-931e2243]{padding:6px 0 2px}.feedback-section+.feedback-section[data-v-931e2243]{margin-top:12px}.feedback-label[data-v-931e2243]{font-size:12px;margin-bottom:6px}.feedback-text[data-v-931e2243]{white-space:pre-wrap;line-height:1.6;font-size:13px}.settings-section[data-v-931e2243]{padding:6px 2px 2px}.settings-alert[data-v-931e2243]{margin-bottom:12px}.email-row[data-v-931e2243]{display:flex;align-items:center;justify-content:space-between;gap:12px}.email-value[data-v-931e2243]{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis}.notify-row[data-v-931e2243]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.notify-title[data-v-931e2243]{font-weight:800}.notify-desc[data-v-931e2243]{margin-top:4px;font-size:12px}.settings-hint[data-v-931e2243]{margin-top:10px}.social-binding-list[data-v-931e2243]{display:grid;gap:10px;margin-bottom:14px}.social-binding-row[data-v-931e2243]{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--app-border);border-radius:10px;background:#fff}.social-binding-main[data-v-931e2243]{min-width:0}.social-binding-title[data-v-931e2243]{display:flex;align-items:center;gap:8px;font-weight:800}.social-binding-meta[data-v-931e2243]{margin-top:4px;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vip-info[data-v-931e2243]{margin-top:12px;display:grid;gap:10px}.vip-line[data-v-931e2243]{display:flex;align-items:center;justify-content:space-between;gap:12px}@media(max-width:768px){.layout-header[data-v-931e2243]{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:10px}.header-right[data-v-931e2243]{width:100%;justify-content:flex-end}.layout-main[data-v-931e2243]{padding:12px}.user-name[data-v-931e2243]{max-width:120px}} diff --git a/static/app/assets/AppLayout-D9A8Va7K.js b/static/app/assets/AppLayout-D9A8Va7K.js new file mode 100644 index 0000000..55f8d24 --- /dev/null +++ b/static/app/assets/AppLayout-D9A8Va7K.js @@ -0,0 +1 @@ +import{e as Yl,f as Xl,g as Ya,h as Bn,k as Xa,j as Ga,l as Ja,m as Qa,n as $l,o as vn,p as Za,S as eo,q as to,r as dt,s as ut,b as Ue,t as $e,u as re,v as rt,_ as Ne,d as ct,x as Kt,y as xt,E as Ke,z as Ze,A as lo,B as no,C as Dt,D as Hn,F as Qe,G as Ht,H as De,I as Wn,J as Re,K as pn,L as mn,M as ao,N as kt,O as zn,P as hn,Q as oo,R as so,T as ro,U as io,V as uo,W as co,X as gn,Y as fo,Z as Ft,$ as vo,a0 as po,a1 as mo}from"./base-xgxQQEpV.js";import{i as ho,E as go,a as zt,o as bo,u as yo,b as wo}from"./user-BlXB4Zbh.js";import{b as Co,E as dl,C as So,u as _o,a as Vn,c as it,d as Eo,e as xo,f as ko,g as Gt}from"./el-empty-B4_NEFfq.js";import{c as No,k as Kn,d as To,e as Mo,f as Ro,i as Oo,a as $o,b as Po,E as Lo}from"./el-alert-DTUOkrAB.js";import{E as Ao}from"./el-skeleton-item-CD5Idavp.js";import{b as Io,c as ol,E as Fo}from"./el-input-BaZNy9Kg.js";import{f as Dn,d as Bo,a as Ho,u as Wo,E as zo,b as Vo,c as Ko,e as Do}from"./el-overlay-hge8bsIn.js";import{T as Uo,u as jo,E as qo}from"./el-button-LKkD3jQh.js";import{E as Pl,A as te,G as Y,H as Qt,i as Xe,I as Gl,J as Se,K as Oe,g as w,L as be,h as I,M as Rt,N as bn,j as Z,o as H,B as ce,n as Q,C as b,c as se,s as A,O as Jl,P as Yo,T as cl,Q as ke,k as D,p as T,x as ie,t as we,D as Ll,m as Un,q as jn,w as Ie,R as ht,S as Ql,U as Ye,l as he,z as at,f as lt,V as Ee,F as Ae,W as Fe,X as gt,Y as sl,Z as Xo,_ as Tt,$ as qn,a0 as Ve,a1 as yn,a2 as Yn,a3 as Xn,r as We,a4 as Nt,a5 as Gn,a6 as Jn,a7 as Zl,a8 as Go,a9 as Jo,d as Qo,aa as Zo,y as es,u as ts}from"./vendor-vue-WbiK4TmU.js";import{m as Vt,u as ls,a as Wt,g as Ot,b as ge,c as $t,d as ns,i as as,e as os,f as ss,h as wn,p as fl,E as de}from"./http-BoPYlvwK.js";import{a as rs}from"./auth-B5cl_nsV.js";import{u as is,a as us,c as ds,d as cs,e as Cn,f as fs,r as vs,g as ps,h as ms,i as hs,j as gs,k as bs,l as Sn,m as ys,n as ws,b as Cs}from"./settings-Db4PmPGC.js";import{S as Ss}from"./SocialLoginButtons-BlVSr6Mm.js";import{v as _s}from"./password-7ryi82gE.js";import{_ as Es}from"./style-CEbARg1o.js";import{C as Qn,U as vl,t as nt,a as Zt,f as xs,d as ks}from"./aria-DLpFpzDe.js";import{u as Ns,a as Ts}from"./index-CoYtSGUZ.js";import{b as Ms,i as Rs,d as rl}from"./isArrayLikeObject-B5fs56rA.js";import"./vendor-axios-B9ygI19o.js";function Os(e,t,l){if(!Yl(l))return!1;var n=typeof t;return(n=="number"?Xl(l)&&Ya(t,l.length):n=="string"&&t in l)?Bn(l[t],e):!1}function $s(e){return Ms(function(t,l){var n=-1,a=l.length,s=a>1?l[a-1]:void 0,u=a>2?l[2]:void 0;for(s=e.length>3&&typeof s=="function"?(a--,s):void 0,u&&Os(l[0],l[1],u)&&(s=a<3?void 0:s,a=1),t=Object(t);++ndt?window.requestAnimationFrame(e):setTimeout(e,16),zs=e=>dt?window.cancelAnimationFrame(e):clearTimeout(e),Vs=(e,t,l)=>Dn(e.subTree).filter(s=>{var u;return Gl(s)&&((u=s.type)==null?void 0:u.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>l[s]).filter(s=>!!s),Ks=(e,t)=>{const l=Pl({}),n=Pl([]),a=new WeakMap,s=c=>{l.value[c.uid]=c,Qt(l),Xe(()=>{const f=c.getVnode().el,v=f.parentNode;if(!a.has(v)){a.set(v,[]);const d=v.insertBefore.bind(v);v.insertBefore=(p,m)=>(a.get(v).some(P=>p===P||m===P)&&Qt(l),d(p,m))}a.get(v).push(f)})},u=c=>{delete l.value[c.uid],Qt(l);const f=c.getVnode().el,v=f.parentNode,d=a.get(v),p=d.indexOf(f);d.splice(p,1)},o=()=>{n.value=Vs(e,t,l.value)},r=c=>c.render(),i=te({setup(c,{slots:f}){return()=>(o(),f.default?Y(r,{render:f.default}):null)}});return{children:n,addChild:s,removeChild:u,ChildrenSorter:i}},_n=e=>ut(e)||Se(e)||Oe(e),Ds=Ue({accordion:Boolean,modelValue:{type:$e([Array,String,Number]),default:()=>Vt([])},expandIconPosition:{type:$e([String]),default:"right"},beforeCollapse:{type:$e(Function)}}),Us={[vl]:_n,[Qn]:_n},aa=Symbol("collapseContextKey"),js="ElCollapse",qs=(e,t)=>{const l=w(ol(e.modelValue)),n=u=>{l.value=u;const o=e.accordion?l.value[0]:l.value;t(vl,o),t(Qn,o)},a=u=>{if(e.accordion)n([l.value[0]===u?"":u]);else{const o=[...l.value],r=o.indexOf(u);r>-1?o.splice(r,1):o.push(u),n(o)}},s=async u=>{const{beforeCollapse:o}=e;if(!o){a(u);return}const r=o(u);[bn(r),rt(r)].includes(!0)||nt(js,"beforeCollapse must return type `Promise` or `boolean`"),bn(r)?r.then(c=>{c!==!1&&a(u)}).catch(c=>{}):r&&a(u)};return be(()=>e.modelValue,()=>l.value=ol(e.modelValue),{deep:!0}),Rt(aa,{activeNames:l,handleItemClick:s}),{activeNames:l,setActiveNames:n}},Ys=e=>{const t=re("collapse");return{rootKls:I(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},Xs=te({name:"ElCollapse"}),Gs=te({...Xs,props:Ds,emits:Us,setup(e,{expose:t,emit:l}){const n=e,{activeNames:a,setActiveNames:s}=qs(n,l),{rootKls:u}=Ys(n);return t({activeNames:a,setActiveNames:s}),(o,r)=>(H(),Z("div",{class:Q(b(u))},[ce(o.$slots,"default")],2))}});var Js=Ne(Gs,[["__file","collapse.vue"]]);const Qs=te({name:"ElCollapseTransition"}),Zs=te({...Qs,setup(e){const t=re("collapse-transition"),l=a=>{a.style.maxHeight="",a.style.overflow=a.dataset.oldOverflow,a.style.paddingTop=a.dataset.oldPaddingTop,a.style.paddingBottom=a.dataset.oldPaddingBottom},n={beforeEnter(a){a.dataset||(a.dataset={}),a.dataset.oldPaddingTop=a.style.paddingTop,a.dataset.oldPaddingBottom=a.style.paddingBottom,a.style.height&&(a.dataset.elExistsHeight=a.style.height),a.style.maxHeight=0,a.style.paddingTop=0,a.style.paddingBottom=0},enter(a){requestAnimationFrame(()=>{a.dataset.oldOverflow=a.style.overflow,a.dataset.elExistsHeight?a.style.maxHeight=a.dataset.elExistsHeight:a.scrollHeight!==0?a.style.maxHeight=`${a.scrollHeight}px`:a.style.maxHeight=0,a.style.paddingTop=a.dataset.oldPaddingTop,a.style.paddingBottom=a.dataset.oldPaddingBottom,a.style.overflow="hidden"})},afterEnter(a){a.style.maxHeight="",a.style.overflow=a.dataset.oldOverflow},enterCancelled(a){l(a)},beforeLeave(a){a.dataset||(a.dataset={}),a.dataset.oldPaddingTop=a.style.paddingTop,a.dataset.oldPaddingBottom=a.style.paddingBottom,a.dataset.oldOverflow=a.style.overflow,a.style.maxHeight=`${a.scrollHeight}px`,a.style.overflow="hidden"},leave(a){a.scrollHeight!==0&&(a.style.maxHeight=0,a.style.paddingTop=0,a.style.paddingBottom=0)},afterLeave(a){l(a)},leaveCancelled(a){l(a)}};return(a,s)=>(H(),se(cl,Jl({name:b(t).b()},Yo(n)),{default:A(()=>[ce(a.$slots,"default")]),_:3},16,["name"]))}});var er=Ne(Zs,[["__file","collapse-transition.vue"]]);const oa=ct(er),tr=Ue({title:{type:String,default:""},name:{type:$e([String,Number]),default:void 0},icon:{type:xt,default:Kt},disabled:Boolean}),lr=e=>{const t=ke(aa),{namespace:l}=re("collapse"),n=w(!1),a=w(!1),s=Ns(),u=I(()=>s.current++),o=I(()=>{var v;return(v=e.name)!=null?v:`${l.value}-id-${s.prefix}-${b(u)}`}),r=I(()=>t?.activeNames.value.includes(b(o)));return{focusing:n,id:u,isActive:r,handleFocus:()=>{setTimeout(()=>{a.value?a.value=!1:n.value=!0},50)},handleHeaderClick:v=>{if(e.disabled)return;const d=v.target;d?.closest("input, textarea, select")||(t?.handleItemClick(b(o)),n.value=!1,a.value=!0)},handleEnterClick:v=>{const d=v.target;d?.closest("input, textarea, select")||(v.preventDefault(),t?.handleItemClick(b(o)))}}},nr=(e,{focusing:t,isActive:l,id:n})=>{const a=re("collapse"),s=I(()=>[a.b("item"),a.is("active",b(l)),a.is("disabled",e.disabled)]),u=I(()=>[a.be("item","header"),a.is("active",b(l)),{focusing:b(t)&&!e.disabled}]),o=I(()=>[a.be("item","arrow"),a.is("active",b(l))]),r=I(()=>[a.be("item","title")]),i=I(()=>a.be("item","wrap")),c=I(()=>a.be("item","content")),f=I(()=>a.b(`content-${b(n)}`)),v=I(()=>a.b(`head-${b(n)}`));return{itemTitleKls:r,arrowKls:o,headKls:u,rootKls:s,itemWrapperKls:i,itemContentKls:c,scopedContentId:f,scopedHeadId:v}},ar=te({name:"ElCollapseItem"}),or=te({...ar,props:tr,setup(e,{expose:t}){const l=e,{focusing:n,id:a,isActive:s,handleFocus:u,handleHeaderClick:o,handleEnterClick:r}=lr(l),{arrowKls:i,headKls:c,rootKls:f,itemTitleKls:v,itemWrapperKls:d,itemContentKls:p,scopedContentId:m,scopedHeadId:S}=nr(l,{focusing:n,isActive:s,id:a});return t({isActive:s}),(P,R)=>(H(),Z("div",{class:Q(b(f))},[D("div",{id:b(S),class:Q(b(c)),"aria-expanded":b(s),"aria-controls":b(m),"aria-describedby":b(m),tabindex:P.disabled?void 0:0,"aria-disabled":P.disabled,role:"button",onClick:b(o),onKeydown:Un(jn(b(r),["stop"]),["space","enter"]),onFocus:b(u),onBlur:x=>n.value=!1},[D("span",{class:Q(b(v))},[ce(P.$slots,"title",{isActive:b(s)},()=>[ie(we(P.title),1)])],2),ce(P.$slots,"icon",{isActive:b(s)},()=>[T(b(Ke),{class:Q(b(i))},{default:A(()=>[(H(),se(Ll(P.icon)))]),_:1},8,["class"])])],42,["id","aria-expanded","aria-controls","aria-describedby","tabindex","aria-disabled","onClick","onKeydown","onFocus","onBlur"]),T(b(oa),null,{default:A(()=>[Ie(D("div",{id:b(m),role:"region",class:Q(b(d)),"aria-hidden":!b(s),"aria-labelledby":b(S)},[D("div",{class:Q(b(p))},[ce(P.$slots,"default")],2)],10,["id","aria-hidden","aria-labelledby"]),[[ht,b(s)]])]),_:3})],2))}});var sa=Ne(or,[["__file","collapse-item.vue"]]);const sr=ct(Js,{CollapseItem:sa}),rr=Ze(sa),ir=te({name:"ElContainer"}),ur=te({...ir,props:Ue({direction:{type:String,values:["horizontal","vertical"]}}),setup(e){const t=e,l=Ql(),n=re("container"),a=I(()=>t.direction==="vertical"?!0:t.direction==="horizontal"?!1:l&&l.default?l.default().some(u=>{const o=u.type.name;return o==="ElHeader"||o==="ElFooter"}):!1);return(s,u)=>(H(),Z("section",{class:Q([b(n).b(),b(n).is("vertical",b(a))])},[ce(s.$slots,"default")],2))}});var dr=Ne(ur,[["__file","container.vue"]]);const cr=te({name:"ElAside"}),fr=te({...cr,props:{width:{type:String,default:null}},setup(e){const t=e,l=re("aside"),n=I(()=>t.width?l.cssVarBlock({width:t.width}):{});return(a,s)=>(H(),Z("aside",{class:Q(b(l).b()),style:Ye(b(n))},[ce(a.$slots,"default")],6))}});var ra=Ne(fr,[["__file","aside.vue"]]);const vr=te({name:"ElFooter"}),pr=te({...vr,props:{height:{type:String,default:null}},setup(e){const t=e,l=re("footer"),n=I(()=>t.height?l.cssVarBlock({height:t.height}):{});return(a,s)=>(H(),Z("footer",{class:Q(b(l).b()),style:Ye(b(n))},[ce(a.$slots,"default")],6))}});var ia=Ne(pr,[["__file","footer.vue"]]);const mr=te({name:"ElHeader"}),hr=te({...mr,props:{height:{type:String,default:null}},setup(e){const t=e,l=re("header"),n=I(()=>t.height?l.cssVarBlock({height:t.height}):{});return(a,s)=>(H(),Z("header",{class:Q(b(l).b()),style:Ye(b(n))},[ce(a.$slots,"default")],6))}});var ua=Ne(hr,[["__file","header.vue"]]);const gr=te({name:"ElMain"}),br=te({...gr,setup(e){const t=re("main");return(l,n)=>(H(),Z("main",{class:Q(b(t).b())},[ce(l.$slots,"default")],2))}});var da=Ne(br,[["__file","main.vue"]]);const yr=ct(dr,{Aside:ra,Footer:ia,Header:ua,Main:da}),wr=Ze(ra);Ze(ia);const Cr=Ze(ua),Sr=Ze(da),_r=Ue({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:$e(String),default:"solid"}}),Er=te({name:"ElDivider"}),xr=te({...Er,props:_r,setup(e){const t=e,l=re("divider"),n=I(()=>l.cssVar({"border-style":t.borderStyle}));return(a,s)=>(H(),Z("div",{class:Q([b(l).b(),b(l).m(a.direction)]),style:Ye(b(n)),role:"separator"},[a.$slots.default&&a.direction!=="vertical"?(H(),Z("div",{key:0,class:Q([b(l).e("text"),b(l).is(a.contentPosition)])},[ce(a.$slots,"default")],2)):he("v-if",!0)],6))}});var kr=Ne(xr,[["__file","divider.vue"]]);const Nr=ct(kr),Tr=Ue({...Ho,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},resizable:Boolean,size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),Mr={...Bo,"resize-start":(e,t)=>e instanceof MouseEvent&&typeof t=="number",resize:(e,t)=>e instanceof MouseEvent&&typeof t=="number","resize-end":(e,t)=>e instanceof MouseEvent&&typeof t=="number"};function Rr(e,t,l){const{width:n,height:a}=ls(),s=I(()=>["ltr","rtl"].includes(e.direction)),u=I(()=>["ltr","ttb"].includes(e.direction)?1:-1),o=I(()=>s.value?n.value:a.value),r=I(()=>lo(i.value+u.value*c.value,4,o.value)),i=w(0),c=w(0),f=w(!1),v=w(!1);let d=[],p=[];const m=()=>{var h;const g=(h=t.value)==null?void 0:h.closest('[aria-modal="true"]');return g?s.value?g.offsetWidth:g.offsetHeight:100};be(()=>[e.size,e.resizable],()=>{v.value=!1,i.value=0,c.value=0,R()});const S=h=>{e.resizable&&(v.value||(i.value=m(),v.value=!0),d=[h.pageX,h.pageY],f.value=!0,l("resize-start",h,i.value),p.push(Wt(window,"mouseup",R),Wt(window,"mousemove",P)))},P=h=>{const{pageX:g,pageY:E}=h,C=g-d[0],_=E-d[1];c.value=s.value?C:_,l("resize",h,r.value)},R=h=>{f.value&&(d=[],i.value=r.value,c.value=0,f.value=!1,p.forEach(g=>g?.()),p=[],h&&l("resize-end",h,i.value))},x=Wt(t,"mousedown",S);return at(()=>{x(),R()}),{size:I(()=>v.value?`${r.value}px`:no(e.size)),isResizing:f,isHorizontal:s}}const Or=te({name:"ElDrawer",inheritAttrs:!1}),$r=te({...Or,props:Tr,emits:Mr,setup(e,{expose:t,emit:l}){const n=e,a=Ql();Ts({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},I(()=>!!a.title));const s=w(),u=w(),o=w(),r=re("drawer"),{t:i}=Dt(),{afterEnter:c,afterLeave:f,beforeLeave:v,visible:d,rendered:p,titleId:m,bodyId:S,zIndex:P,onModalClick:R,onOpenAutoFocus:x,onCloseAutoFocus:h,onFocusoutPrevented:g,onCloseRequested:E,handleClose:C}=Wo(n,s),{isHorizontal:_,size:L,isResizing:F}=Rr(n,o,l),V=I(()=>n.modalPenetrable&&!n.modal);return t({handleClose:C,afterEnter:c,afterLeave:f}),(B,G)=>(H(),se(b(Ko),{to:B.appendTo,disabled:B.appendTo!=="body"?!1:!B.appendToBody},{default:A(()=>[T(cl,{name:b(r).b("fade"),onAfterEnter:b(c),onAfterLeave:b(f),onBeforeLeave:b(v),persisted:""},{default:A(()=>{var X;return[Ie(T(b(zo),{mask:B.modal,"overlay-class":[b(r).is("drawer"),(X=B.modalClass)!=null?X:"",`${b(r).namespace.value}-modal-drawer`,b(r).is("penetrable",b(V))],"z-index":b(P),onClick:b(R)},{default:A(()=>[T(b(Vo),{loop:"",trapped:b(d),"focus-trap-el":s.value,"focus-start-el":u.value,onFocusAfterTrapped:b(x),onFocusAfterReleased:b(h),onFocusoutPrevented:b(g),onReleaseRequested:b(E)},{default:A(()=>[D("div",Jl({ref_key:"drawerRef",ref:s,"aria-modal":"true","aria-label":B.title||void 0,"aria-labelledby":B.title?void 0:b(m),"aria-describedby":b(S)},B.$attrs,{class:[b(r).b(),B.direction,b(d)&&"open",b(r).is("dragging",b(F))],style:{[b(_)?"width":"height"]:b(L)},role:"dialog",onClick:jn(()=>{},["stop"])}),[D("span",{ref_key:"focusStartRef",ref:u,class:Q(b(r).e("sr-focus")),tabindex:"-1"},null,2),B.withHeader?(H(),Z("header",{key:0,class:Q([b(r).e("header"),B.headerClass])},[B.$slots.title?ce(B.$slots,"title",{key:1},()=>[he(" DEPRECATED SLOT ")]):ce(B.$slots,"header",{key:0,close:b(C),titleId:b(m),titleClass:b(r).e("title")},()=>[D("span",{id:b(m),role:"heading","aria-level":B.headerAriaLevel,class:Q(b(r).e("title"))},we(B.title),11,["id","aria-level"])]),B.showClose?(H(),Z("button",{key:2,"aria-label":b(i)("el.drawer.close"),class:Q(b(r).e("close-btn")),type:"button",onClick:b(C)},[T(b(Ke),{class:Q(b(r).e("close"))},{default:A(()=>[T(b(Hn))]),_:1},8,["class"])],10,["aria-label","onClick"])):he("v-if",!0)],2)):he("v-if",!0),b(p)?(H(),Z("div",{key:1,id:b(S),class:Q([b(r).e("body"),B.bodyClass])},[ce(B.$slots,"default")],10,["id"])):he("v-if",!0),B.$slots.footer?(H(),Z("div",{key:2,class:Q([b(r).e("footer"),B.footerClass])},[ce(B.$slots,"footer")],2)):he("v-if",!0),B.resizable?(H(),Z("div",{key:3,ref_key:"draggerRef",ref:o,style:Ye({zIndex:b(P)}),class:Q(b(r).e("dragger"))},null,6)):he("v-if",!0)],16,["aria-label","aria-labelledby","aria-describedby","onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[ht,b(d)]])]}),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])]),_:3},8,["to","disabled"]))}});var Pr=Ne($r,[["__file","drawer.vue"]]);const Lr=ct(Pr);let Ar=class{constructor(t,l){this.parent=t,this.domNode=l,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,l=>{l.addEventListener("keydown",n=>{const a=Ot(n);let s=!1;switch(a){case ge.down:{this.gotoSubIndex(this.subIndex+1),s=!0;break}case ge.up:{this.gotoSubIndex(this.subIndex-1),s=!0;break}case ge.tab:{Zt(t,"mouseleave");break}case ge.enter:case ge.numpadEnter:case ge.space:{s=!0,n.currentTarget.click();break}}return s&&(n.preventDefault(),n.stopPropagation()),!1})})}},Ir=class{constructor(t,l){this.domNode=t,this.submenu=null,this.submenu=null,this.init(l)}init(t){this.domNode.setAttribute("tabindex","0");const l=this.domNode.querySelector(`.${t}-menu`);l&&(this.submenu=new Ar(this,l)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{const l=Ot(t);let n=!1;switch(l){case ge.down:{Zt(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case ge.up:{Zt(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case ge.tab:{Zt(t.currentTarget,"mouseleave");break}case ge.enter:case ge.numpadEnter:case ge.space:{n=!0,t.currentTarget.click();break}}n&&t.preventDefault()})}},Fr=class{constructor(t,l){this.domNode=t,this.init(l)}init(t){const l=this.domNode.childNodes;Array.from(l).forEach(n=>{n.nodeType===1&&new Ir(n,t)})}};const Br=te({name:"ElMenuCollapseTransition"}),Hr=te({...Br,setup(e){const t=re("menu"),l={onBeforeEnter:n=>n.style.opacity="0.2",onEnter(n,a){Qe(n,`${t.namespace.value}-opacity-transition`),n.style.opacity="1",a()},onAfterEnter(n){De(n,`${t.namespace.value}-opacity-transition`),n.style.opacity=""},onBeforeLeave(n){n.dataset||(n.dataset={}),Ht(n,t.m("collapse"))?(De(n,t.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),Qe(n,t.m("collapse"))):(Qe(n,t.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),De(n,t.m("collapse"))),n.style.width=`${n.scrollWidth}px`,n.style.overflow="hidden"},onLeave(n){Qe(n,"horizontal-collapse-transition"),n.style.width=`${n.dataset.scrollWidth}px`}};return(n,a)=>(H(),se(cl,Jl({mode:"out-in"},b(l)),{default:A(()=>[ce(n.$slots,"default")]),_:3},16))}});var Wr=Ne(Hr,[["__file","menu-collapse-transition.vue"]]);function ca(e,t){const l=I(()=>{let a=e.parent;const s=[t.value];for(;a.type.name!=="ElMenu";)a.props.index&&s.unshift(a.props.index),a=a.parent;return s});return{parentMenu:I(()=>{let a=e.parent;for(;a&&!["ElMenu","ElSubMenu"].includes(a.type.name);)a=a.parent;return a}),indexPath:l}}function zr(e){return I(()=>{const l=e.backgroundColor;return l?new Uo(l).shade(20).toString():""})}const fa=(e,t)=>{const l=re("menu");return I(()=>l.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":zr(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},en="rootMenu",il="subMenu:",Vr=Ue({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,popperStyle:{type:$e([String,Object])},disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:xt},expandOpenIcon:{type:xt},collapseCloseIcon:{type:xt},collapseOpenIcon:{type:xt}}),kl="ElSubMenu";var tn=te({name:kl,props:Vr,setup(e,{slots:t,expose:l}){const n=Ee(),{indexPath:a,parentMenu:s}=ca(n,I(()=>e.index)),u=re("menu"),o=re("sub-menu"),r=ke(en);r||nt(kl,"can not inject root menu");const i=ke(`${il}${s.value.uid}`);i||nt(kl,"can not inject sub menu");const c=w({}),f=w({});let v;const d=w(!1),p=w(),m=w(),S=I(()=>i.level===0),P=I(()=>_.value==="horizontal"&&S.value?"bottom-start":"right-start"),R=I(()=>_.value==="horizontal"&&S.value||_.value==="vertical"&&!r.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?E.value?e.expandOpenIcon:e.expandCloseIcon:Wn:e.collapseCloseIcon&&e.collapseOpenIcon?E.value?e.collapseOpenIcon:e.collapseCloseIcon:Kt),x=I(()=>{const M=e.teleported;return Re(M)?S.value:M}),h=I(()=>r.props.collapse?`${u.namespace.value}-zoom-in-left`:`${u.namespace.value}-zoom-in-top`),g=I(()=>_.value==="horizontal"&&S.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),E=I(()=>r.openedMenus.includes(e.index)),C=I(()=>[...Object.values(c.value),...Object.values(f.value)].some(({active:M})=>M)),_=I(()=>r.props.mode),L=I(()=>r.props.persistent),F=lt({index:e.index,indexPath:a,active:C}),V=fa(r.props,i.level+1),B=I(()=>{var M;return(M=e.popperOffset)!=null?M:r.props.popperOffset}),G=I(()=>{var M;return(M=e.popperClass)!=null?M:r.props.popperClass}),X=I(()=>{var M;return(M=e.popperStyle)!=null?M:r.props.popperStyle}),ue=I(()=>{var M;return(M=e.showTimeout)!=null?M:r.props.showTimeout}),J=I(()=>{var M;return(M=e.hideTimeout)!=null?M:r.props.hideTimeout}),N=()=>{var M,K,j;return(j=(K=(M=m.value)==null?void 0:M.popperRef)==null?void 0:K.popperInstanceRef)==null?void 0:j.destroy()},O=M=>{M||N()},W=()=>{r.props.menuTrigger==="hover"&&r.props.mode==="horizontal"||r.props.collapse&&r.props.mode==="vertical"||e.disabled||r.handleSubMenuClick({index:e.index,indexPath:a.value,active:C.value})},k=(M,K=ue.value)=>{var j;if(M.type!=="focus"){if(r.props.menuTrigger==="click"&&r.props.mode==="horizontal"||!r.props.collapse&&r.props.mode==="vertical"||e.disabled){i.mouseInChild.value=!0;return}i.mouseInChild.value=!0,v?.(),{stop:v}=pn(()=>{r.openMenu(e.index,a.value)},K),x.value&&((j=s.value.vnode.el)==null||j.dispatchEvent(new MouseEvent("mouseenter"))),M.type==="mouseenter"&&M.target&&Fe(()=>{xs(M.target,{preventScroll:!0})})}},z=(M=!1)=>{var K;if(r.props.menuTrigger==="click"&&r.props.mode==="horizontal"||!r.props.collapse&&r.props.mode==="vertical"){i.mouseInChild.value=!1;return}v?.(),i.mouseInChild.value=!1,{stop:v}=pn(()=>!d.value&&r.closeMenu(e.index,a.value),J.value),x.value&&M&&((K=i.handleMouseleave)==null||K.call(i,!0))};be(()=>r.props.collapse,M=>O(!!M));{const M=j=>{f.value[j.index]=j},K=j=>{delete f.value[j.index]};Rt(`${il}${n.uid}`,{addSubMenu:M,removeSubMenu:K,handleMouseleave:z,mouseInChild:d,level:i.level+1})}return l({opened:E}),Xe(()=>{r.addSubMenu(F),i.addSubMenu(F)}),at(()=>{i.removeSubMenu(F),r.removeSubMenu(F)}),()=>{var M;const K=[(M=t.title)==null?void 0:M.call(t),Y(Ke,{class:o.e("icon-arrow"),style:{transform:E.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&r.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>Se(R.value)?Y(n.appContext.components[R.value]):Y(R.value)})],j=r.isMenuPopup?Y(dl,{ref:m,visible:E.value,effect:"light",pure:!0,offset:B.value,showArrow:!1,persistent:L.value,popperClass:G.value,popperStyle:X.value,placement:P.value,teleported:x.value,fallbackPlacements:g.value,transition:h.value,gpuAcceleration:!1},{content:()=>{var ee;return Y("div",{class:[u.m(_.value),u.m("popup-container"),G.value],onMouseenter:le=>k(le,100),onMouseleave:()=>z(!0),onFocus:le=>k(le,100)},[Y("ul",{class:[u.b(),u.m("popup"),u.m(`popup-${P.value}`)],style:V.value},[(ee=t.default)==null?void 0:ee.call(t)])])},default:()=>Y("div",{class:o.e("title"),onClick:W},K)}):Y(Ae,{},[Y("div",{class:o.e("title"),ref:p,onClick:W},K),Y(oa,{},{default:()=>{var ee;return Ie(Y("ul",{role:"menu",class:[u.b(),u.m("inline")],style:V.value},[(ee=t.default)==null?void 0:ee.call(t)]),[[ht,E.value]])}})]);return Y("li",{class:[o.b(),o.is("active",C.value),o.is("opened",E.value),o.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:E.value,onMouseenter:k,onMouseleave:()=>z(),onFocus:k},[j])}}});const Kr=Ue({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:$e(Array),default:()=>Vt([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:xt,default:()=>ao},popperEffect:{type:$e(String),default:"dark"},popperClass:String,popperStyle:{type:$e([String,Object])},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),Nl=e=>Oe(e)&&e.every(t=>Se(t)),Dr={close:(e,t)=>Se(e)&&Nl(t),open:(e,t)=>Se(e)&&Nl(t),select:(e,t,l,n)=>Se(e)&&Nl(t)&>(l)&&(Re(n)||n instanceof Promise)},En=64;var Ur=te({name:"ElMenu",props:Kr,emits:Dr,setup(e,{emit:t,slots:l,expose:n}){const a=Ee(),s=a.appContext.config.globalProperties.$router,u=w(),o=w(),r=re("menu"),i=re("sub-menu");let c=En;const f=w(-1),v=w(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),d=w(e.defaultActive),p=w({}),m=w({}),S=I(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),P=()=>{const N=d.value&&p.value[d.value];if(!N||e.mode==="horizontal"||e.collapse)return;N.indexPath.forEach(W=>{const k=m.value[W];k&&R(W,k.indexPath)})},R=(N,O)=>{v.value.includes(N)||(e.uniqueOpened&&(v.value=v.value.filter(W=>O.includes(W))),v.value.push(N),t("open",N,O))},x=N=>{const O=v.value.indexOf(N);O!==-1&&v.value.splice(O,1)},h=(N,O)=>{x(N),t("close",N,O)},g=({index:N,indexPath:O})=>{v.value.includes(N)?h(N,O):R(N,O)},E=N=>{(e.mode==="horizontal"||e.collapse)&&(v.value=[]);const{index:O,indexPath:W}=N;if(!(mn(O)||mn(W)))if(e.router&&s){const k=N.route||O,z=s.push(k).then(M=>(M||(d.value=O),M));t("select",O,W,{index:O,indexPath:W,route:k},z)}else d.value=O,t("select",O,W,{index:O,indexPath:W})},C=N=>{var O;const W=p.value,k=W[N]||d.value&&W[d.value]||W[e.defaultActive];d.value=(O=k?.index)!=null?O:N},_=N=>{const O=getComputedStyle(N),W=Number.parseInt(O.marginLeft,10),k=Number.parseInt(O.marginRight,10);return N.offsetWidth+W+k||0},L=()=>{if(!u.value)return-1;const N=Array.from(u.value.childNodes).filter(j=>j.nodeName!=="#comment"&&(j.nodeName!=="#text"||j.nodeValue)),O=getComputedStyle(u.value),W=Number.parseInt(O.paddingLeft,10),k=Number.parseInt(O.paddingRight,10),z=u.value.clientWidth-W-k;let M=0,K=0;return N.forEach((j,ee)=>{M+=_(j),M<=z-c&&(K=ee+1)}),K===N.length?-1:K},F=N=>m.value[N].indexPath,V=(N,O=33.34)=>{let W;return()=>{W&&clearTimeout(W),W=setTimeout(()=>{N()},O)}};let B=!0;const G=()=>{const N=ns(o);if(N&&(c=_(N)||En),f.value===L())return;const O=()=>{f.value=-1,Fe(()=>{f.value=L()})};B?O():V(O)(),B=!1};be(()=>e.defaultActive,N=>{p.value[N]||(d.value=""),C(N)}),be(()=>e.collapse,N=>{N&&(v.value=[])}),be(p.value,P);let X;sl(()=>{e.mode==="horizontal"&&e.ellipsis?X=$t(u,G).stop:X?.()});const ue=w(!1);{const N=z=>{m.value[z.index]=z},O=z=>{delete m.value[z.index]};Rt(en,lt({props:e,openedMenus:v,items:p,subMenus:m,activeIndex:d,isMenuPopup:S,addMenuItem:z=>{p.value[z.index]=z},removeMenuItem:z=>{delete p.value[z.index]},addSubMenu:N,removeSubMenu:O,openMenu:R,closeMenu:h,handleMenuItemClick:E,handleSubMenuClick:g})),Rt(`${il}${a.uid}`,{addSubMenu:N,removeSubMenu:O,mouseInChild:ue,level:0})}Xe(()=>{e.mode==="horizontal"&&new Fr(a.vnode.el,r.namespace.value)}),n({open:O=>{const{indexPath:W}=m.value[O];W.forEach(k=>R(k,W))},close:x,updateActiveIndex:C,handleResize:G});const J=fa(e,0);return()=>{var N,O;let W=(O=(N=l.default)==null?void 0:N.call(l))!=null?O:[];const k=[];if(e.mode==="horizontal"&&u.value){const K=Dn(W).filter(le=>le?.shapeFlag!==8),j=f.value===-1?K:K.slice(0,f.value),ee=f.value===-1?[]:K.slice(f.value);ee?.length&&e.ellipsis&&(W=j,k.push(Y(tn,{ref:o,index:"sub-menu-more",class:i.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>Y(Ke,{class:i.e("icon-more")},{default:()=>Y(e.ellipsisIcon)}),default:()=>ee})))}const z=e.closeOnClickOutside?[[So,()=>{v.value.length&&(ue.value||(v.value.forEach(K=>t("close",K,F(K))),v.value=[]))}]]:[],M=Ie(Y("ul",{key:String(e.collapse),role:"menubar",ref:u,style:J.value,class:{[r.b()]:!0,[r.m(e.mode)]:!0,[r.m("collapse")]:e.collapse}},[...W,...k]),z);return e.collapseTransition&&e.mode==="vertical"?Y(Wr,()=>M):M}}});const jr=Ue({index:{type:$e([String,null]),default:null},route:{type:$e([String,Object])},disabled:Boolean}),qr={click:e=>Se(e.index)&&Oe(e.indexPath)},Fl="ElMenuItem",Yr=te({name:Fl}),Xr=te({...Yr,props:jr,emits:qr,setup(e,{expose:t,emit:l}){const n=e;kt(n.index)&&ks();const a=Ee(),s=ke(en),u=re("menu"),o=re("menu-item");s||nt(Fl,"can not inject root menu");const{parentMenu:r,indexPath:i}=ca(a,Xo(n,"index")),c=ke(`${il}${r.value.uid}`);c||nt(Fl,"can not inject sub menu");const f=I(()=>n.index===s.activeIndex),v=lt({index:n.index,indexPath:i,active:f}),d=()=>{n.disabled||(s.handleMenuItemClick({index:n.index,indexPath:i.value,route:n.route}),l("click",v))};return Xe(()=>{c.addSubMenu(v),s.addMenuItem(v)}),at(()=>{c.removeSubMenu(v),s.removeMenuItem(v)}),t({parentMenu:r,rootMenu:s,active:f,nsMenu:u,nsMenuItem:o,handleClick:d}),(p,m)=>(H(),Z("li",{class:Q([b(o).b(),b(o).is("active",b(f)),b(o).is("disabled",p.disabled)]),role:"menuitem",tabindex:"-1",onClick:d},[b(r).type.name==="ElMenu"&&b(s).props.collapse&&p.$slots.title?(H(),se(b(dl),{key:0,effect:b(s).props.popperEffect,placement:"right","fallback-placements":["left"],"popper-class":b(s).props.popperClass,"popper-style":b(s).props.popperStyle,persistent:b(s).props.persistent,"focus-on-target":""},{content:A(()=>[ce(p.$slots,"title")]),default:A(()=>[D("div",{class:Q(b(u).be("tooltip","trigger"))},[ce(p.$slots,"default")],2)]),_:3},8,["effect","popper-class","popper-style","persistent"])):(H(),Z(Ae,{key:1},[ce(p.$slots,"default"),ce(p.$slots,"title")],64))],2))}});var va=Ne(Xr,[["__file","menu-item.vue"]]);const Gr={title:String},Jr=te({name:"ElMenuItemGroup"}),Qr=te({...Jr,props:Gr,setup(e){const t=re("menu-item-group");return(l,n)=>(H(),Z("li",{class:Q(b(t).b())},[D("div",{class:Q(b(t).e("title"))},[l.$slots.title?ce(l.$slots,"title",{key:1}):(H(),Z(Ae,{key:0},[ie(we(l.title),1)],64))],2),D("ul",null,[ce(l.$slots,"default")])],2))}});var pa=Ne(Qr,[["__file","menu-item-group.vue"]]);const Zr=ct(Ur,{MenuItem:va,MenuItemGroup:pa,SubMenu:tn}),ei=Ze(va);Ze(pa);Ze(tn);const ti="horizontal",li="vertical",ni={[ti]:"deltaX",[li]:"deltaY"},ai=({atEndEdge:e,atStartEdge:t,layout:l},n)=>{let a,s=0;const u=r=>r<0&&t.value||r>0&&e.value;return{hasReachedEdge:u,onWheel:r=>{zs(a);const i=r[ni[l.value]];u(s)&&u(s+i)||(s+=i,as()||r.preventDefault(),a=na(()=>{n(s),s=0}))}}},Tl=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},oi=function(e,t,l,n,a){if(!t&&!n&&(!a||Oe(a)&&!a.length))return e;Se(l)?l=l==="descending"?-1:1:l=l&&l<0?-1:1;const s=n?null:function(o,r){return a?ta(ol(a),i=>Se(i)?hn(o,i):i(o,r,e)):(t!=="$key"&>(o)&&"$value"in o&&(o=o.$value),[gt(o)?t?hn(o,t):null:o])},u=function(o,r){var i,c,f,v,d,p;if(n)return n(o.value,r.value);for(let m=0,S=(c=(i=o.key)==null?void 0:i.length)!=null?c:0;m((p=r.key)==null?void 0:p[m]))return 1}return 0};return e.map((o,r)=>({value:o,index:r,key:s?s(o,r):null})).sort((o,r)=>{let i=u(o,r);return i||(i=o.index-r.index),i*+l}).map(o=>o.value)},ma=function(e,t){let l=null;return e.columns.forEach(n=>{n.id===t&&(l=n)}),l},si=function(e,t){let l=null;for(let n=0;n{if(!e)throw new Error("Row is required when get row identity");if(Se(t)){if(!t.includes("."))return`${e[t]}`;const l=t.split(".");let n=e;for(const a of l)n=n[a];return`${n}`}else if(Ve(t))return t.call(null,e);return""},Mt=function(e,t,l=!1,n="children"){const a=e||[],s={};return a.forEach((u,o)=>{if(s[Te(u,t)]={row:u,index:o},l){const r=u[n];Oe(r)&&Object.assign(s,Mt(r,t,!0,n))}}),s};function ri(e,t){const l={};let n;for(n in e)l[n]=e[n];for(n in t)if(Tt(t,n)){const a=t[n];Re(a)||(l[n]=a)}return l}function ln(e){return e===""||Re(e)||(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function ha(e){return e===""||Re(e)||(e=ln(e),Number.isNaN(e)&&(e=80)),e}function ii(e){return ut(e)?e:Se(e)?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function ui(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,l)=>(...n)=>t(l(...n)))}function ul(e,t,l,n,a,s,u){let o=s??0,r=!1;const c=(()=>{if(!u)return e.indexOf(t);const m=Te(t,u);return e.findIndex(S=>Te(S,u)===m)})(),f=c!==-1,v=a?.call(null,t,o),d=m=>{m==="add"?e.push(t):e.splice(c,1),r=!0},p=m=>{let S=0;const P=n?.children&&m[n.children];return P&&Oe(P)&&(S+=P.length,P.forEach(R=>{S+=p(R)})),S};return(!a||v)&&(rt(l)?l&&!f?d("add"):!l&&f&&d("remove"):d(f?"remove":"add")),!n?.checkStrictly&&n?.children&&Oe(t[n.children])&&t[n.children].forEach(m=>{const S=ul(e,m,l??!f,n,a,o+1,u);o+=p(m)+1,S&&(r=S)}),r}function di(e,t,l="children",n="hasChildren",a=!1){const s=o=>!(Oe(o)&&o.length);function u(o,r,i){t(o,r,i),r.forEach(c=>{if(c[n]&&a){t(c,null,i+1);return}const f=c[l];s(f)||u(c,f,i+1)})}e.forEach(o=>{if(o[n]&&a){t(o,null,0);return}const r=o[l];s(r)||u(o,r,0)})}const ci=(e,t,l,n)=>{const a={strategy:"fixed",...e.popperOptions},s=Ve(n?.tooltipFormatter)?n.tooltipFormatter({row:l,column:n,cellValue:zn(l,n.property).value}):void 0;return Gl(s)?{slotContent:s,content:null,...e,popperOptions:a}:{slotContent:null,content:s??t,...e,popperOptions:a}};let Me=null;function fi(e,t,l,n,a,s){var u;const o=ci(e,t,l,n),r={...o,slotContent:void 0};if(Me?.trigger===a){const p=(u=Me.vm)==null?void 0:u.component;la(p?.props,r),p&&o.slotContent&&(p.slots.content=()=>[o.slotContent]);return}Me?.();const i=s?.refs.tableWrapper,c=i?.dataset.prefix,f=T(dl,{virtualTriggering:!0,virtualRef:a,appendTo:i,placement:"top",transition:"none",offset:0,hideAfter:0,...r},o.slotContent?{content:()=>o.slotContent}:void 0);f.appContext={...s.appContext,...s};const v=document.createElement("div");yn(f,v),f.component.exposed.onOpen();const d=i?.querySelector(`.${c}-scrollbar__wrap`);Me=()=>{var p,m;(m=(p=f.component)==null?void 0:p.exposed)!=null&&m.onClose&&f.component.exposed.onClose(),yn(null,v);const S=Me;d?.removeEventListener("scroll",S),S.trigger=void 0,S.vm=void 0,Me=null},Me.trigger=a??void 0,Me.vm=f,d?.addEventListener("scroll",Me)}function ga(e){return e.children?ta(e.children,ga):[e]}function kn(e,t){return e+t.colSpan}const ba=(e,t,l,n)=>{let a=0,s=e;const u=l.states.columns.value;if(n){const r=ga(n[e]);a=u.slice(0,u.indexOf(r[0])).reduce(kn,0),s=a+r.reduce(kn,0)-1}else a=e;let o;switch(t){case"left":s=u.length-l.states.rightFixedLeafColumnsLength.value&&(o="right");break;default:s=u.length-l.states.rightFixedLeafColumnsLength.value&&(o="right")}return o?{direction:o,start:a,after:s}:{}},nn=(e,t,l,n,a,s=0)=>{const u=[],{direction:o,start:r,after:i}=ba(t,l,n,a);if(o){const c=o==="left";u.push(`${e}-fixed-column--${o}`),c&&i+s===n.states.fixedLeafColumnsLength.value-1?u.push("is-last-column"):!c&&r-s===n.states.columns.value.length-n.states.rightFixedLeafColumnsLength.value&&u.push("is-first-column")}return u};function Nn(e,t){return e+(Ut(t.realWidth)||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const an=(e,t,l,n)=>{const{direction:a,start:s=0,after:u=0}=ba(e,t,l,n);if(!a)return;const o={},r=a==="left",i=l.states.columns.value;return r?o.left=i.slice(0,s).reduce(Nn,0):o.right=i.slice(u+1).reverse().reduce(Nn,0),o},Pt=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function ya(e){return e.some(t=>Gl(t)?!(t.type===qn||t.type===Ae&&!ya(t.children)):!0)?e:null}function vi(e){const t=Ee(),l=w(!1),n=w([]);return{updateExpandRows:()=>{const r=e.data.value||[],i=e.rowKey.value;if(l.value)n.value=r.slice();else if(i){const c=Mt(n.value,i);n.value=r.reduce((f,v)=>{const d=Te(v,i);return c[d]&&f.push(v),f},[])}else n.value=[]},toggleRowExpansion:(r,i)=>{ul(n.value,r,i,void 0,void 0,void 0,e.rowKey.value)&&t.emit("expand-change",r,n.value.slice())},setExpandRowKeys:r=>{t.store.assertRowKey();const i=e.data.value||[],c=e.rowKey.value,f=Mt(i,c);n.value=r.reduce((v,d)=>{const p=f[d];return p&&v.push(p.row),v},[])},isRowExpanded:r=>{const i=e.rowKey.value;return i?!!Mt(n.value,i)[Te(r,i)]:n.value.includes(r)},states:{expandRows:n,defaultExpandAll:l}}}function pi(e){const t=Ee(),l=w(null),n=w(null),a=i=>{t.store.assertRowKey(),l.value=i,u(i)},s=()=>{l.value=null},u=i=>{var c;const{data:f,rowKey:v}=e;let d=null;v.value&&(d=(c=(b(f)||[]).find(p=>Te(p,v.value)===i))!=null?c:null),n.value=d??null,t.emit("current-change",n.value,null)};return{setCurrentRowKey:a,restoreCurrentRowKey:s,setCurrentRowByKey:u,updateCurrentRow:i=>{const c=n.value;if(i&&i!==c){n.value=i,t.emit("current-change",n.value,c);return}!i&&c&&(n.value=null,t.emit("current-change",null,c))},updateCurrentRowData:()=>{const i=e.rowKey.value,c=e.data.value||[],f=n.value;if(f&&!c.includes(f)){if(i){const v=Te(f,i);u(v)}else n.value=null;Ut(n.value)&&t.emit("current-change",null,f)}else l.value&&(u(l.value),s())},states:{_currentRowKey:l,currentRow:n}}}function mi(e){const t=w([]),l=w({}),n=w(16),a=w(!1),s=w({}),u=w("hasChildren"),o=w("children"),r=w(!1),i=Ee(),c=I(()=>{if(!e.rowKey.value)return{};const h=e.data.value||[];return v(h)}),f=I(()=>{const h=e.rowKey.value,g=Object.keys(s.value),E={};return g.length&&g.forEach(C=>{if(s.value[C].length){const _={children:[]};s.value[C].forEach(L=>{const F=Te(L,h);_.children.push(F),L[u.value]&&!E[F]&&(E[F]={children:[]})}),E[C]=_}}),E}),v=h=>{const g=e.rowKey.value,E={};return di(h,(C,_,L)=>{const F=Te(C,g);Oe(_)?E[F]={children:_.map(V=>Te(V,g)),level:L}:a.value&&(E[F]={children:[],lazy:!0,level:L})},o.value,u.value,a.value),E},d=(h=!1,g)=>{var E,C;g||(g=(E=i.store)==null?void 0:E.states.defaultExpandAll.value);const _=c.value,L=f.value,F=Object.keys(_),V={};if(F.length){const B=b(l),G=[],X=(J,N)=>{if(h)return t.value?g||t.value.includes(N):!!(g||J?.expanded);{const O=g||t.value&&t.value.includes(N);return!!(J?.expanded||O)}};F.forEach(J=>{const N=B[J],O={..._[J]};if(O.expanded=X(N,J),O.lazy){const{loaded:W=!1,loading:k=!1}=N||{};O.loaded=!!W,O.loading=!!k,G.push(J)}V[J]=O});const ue=Object.keys(L);a.value&&ue.length&&G.length&&ue.forEach(J=>{var N;const O=B[J],W=L[J].children;if(G.includes(J)){if(((N=V[J].children)==null?void 0:N.length)!==0)throw new Error("[ElTable]children must be an empty array.");V[J].children=W}else{const{loaded:k=!1,loading:z=!1}=O||{};V[J]={lazy:!0,loaded:!!k,loading:!!z,expanded:X(O,J),children:W,level:void 0}}})}l.value=V,(C=i.store)==null||C.updateTableScrollY()};be(()=>t.value,()=>{d(!0)}),be(()=>c.value,()=>{d()}),be(()=>f.value,()=>{d()});const p=h=>{t.value=h,d()},m=h=>a.value&&h&&"loaded"in h&&!h.loaded,S=(h,g)=>{i.store.assertRowKey();const E=e.rowKey.value,C=Te(h,E),_=C&&l.value[C];if(C&&_&&"expanded"in _){const L=_.expanded;g=Re(g)?!_.expanded:g,l.value[C].expanded=g,L!==g&&i.emit("expand-change",h,g),g&&m(_)&&R(h,C,_),i.store.updateTableScrollY()}},P=h=>{i.store.assertRowKey();const g=e.rowKey.value,E=Te(h,g),C=l.value[E];m(C)?R(h,E,C):S(h,void 0)},R=(h,g,E)=>{const{load:C}=i.props;C&&!l.value[g].loaded&&(l.value[g].loading=!0,C(h,E,_=>{if(!Oe(_))throw new TypeError("[ElTable] data must be an array");l.value[g].loading=!1,l.value[g].loaded=!0,l.value[g].expanded=!0,_.length&&(s.value[g]=_),i.emit("expand-change",h,!0)}))};return{loadData:R,loadOrToggle:P,toggleTreeExpansion:S,updateTreeExpandKeys:p,updateTreeData:d,updateKeyChildren:(h,g)=>{const{lazy:E,rowKey:C}=i.props;if(E){if(!C)throw new Error("[Table] rowKey is required in updateKeyChild");s.value[h]&&(s.value[h]=g)}},normalize:v,states:{expandRowKeys:t,treeData:l,indent:n,lazy:a,lazyTreeNodeMap:s,lazyColumnIdentifier:u,childrenColumnName:o,checkStrictly:r}}}const hi=(e,t)=>{const l=t.sortingColumn;return!l||Se(l.sortable)?e:oi(e,t.sortProp,t.sortOrder,l.sortMethod,l.sortBy)},el=e=>{const t=[];return e.forEach(l=>{l.children&&l.children.length>0?t.push.apply(t,el(l.children)):t.push(l)}),t};function gi(){var e;const t=Ee(),{size:l}=Yn((e=t.proxy)==null?void 0:e.$props),n=w(null),a=w([]),s=w([]),u=w(!1),o=w([]),r=w([]),i=w([]),c=w([]),f=w([]),v=w([]),d=w([]),p=w([]),m=[],S=w(0),P=w(0),R=w(0),x=w(!1),h=w([]),g=w(!1),E=w(!1),C=w(null),_=w({}),L=w(null),F=w(null),V=w(null),B=w(null),G=w(null),X=I(()=>n.value?Mt(h.value,n.value):void 0);be(a,()=>{var q;t.state&&(O(!1),t.props.tableLayout==="auto"&&((q=t.refs.tableHeaderRef)==null||q.updateFixedColumnStyle()))},{deep:!0});const ue=()=>{if(!n.value)throw new Error("[ElTable] prop row-key is required")},J=q=>{var ne;(ne=q.children)==null||ne.forEach(oe=>{oe.fixed=q.fixed,J(oe)})},N=()=>{o.value.forEach(ye=>{J(ye)}),c.value=o.value.filter(ye=>[!0,"left"].includes(ye.fixed));const q=o.value.find(ye=>ye.type==="selection");let ne;q&&q.fixed!=="right"&&!c.value.includes(q)&&o.value.indexOf(q)===0&&c.value.length&&(c.value.unshift(q),ne=!0),f.value=o.value.filter(ye=>ye.fixed==="right");const oe=o.value.filter(ye=>(ne?ye.type!=="selection":!0)&&!ye.fixed);r.value=Array.from(c.value).concat(oe).concat(f.value);const ae=el(oe),fe=el(c.value),pe=el(f.value);S.value=ae.length,P.value=fe.length,R.value=pe.length,i.value=Array.from(fe).concat(ae).concat(pe),u.value=c.value.length>0||f.value.length>0},O=(q,ne=!1)=>{q&&N(),ne?t.state.doLayout():t.state.debouncedUpdateLayout()},W=q=>X.value?!!X.value[Te(q,n.value)]:h.value.includes(q),k=()=>{x.value=!1;const q=h.value;h.value=[],q.length&&t.emit("selection-change",[])},z=()=>{var q,ne;let oe;if(n.value){oe=[];const ae=(ne=(q=t?.store)==null?void 0:q.states)==null?void 0:ne.childrenColumnName.value,fe=Mt(a.value,n.value,!0,ae);for(const pe in X.value)Tt(X.value,pe)&&!fe[pe]&&oe.push(X.value[pe].row)}else oe=h.value.filter(ae=>!a.value.includes(ae));if(oe.length){const ae=h.value.filter(fe=>!oe.includes(fe));h.value=ae,t.emit("selection-change",ae.slice())}},M=()=>(h.value||[]).slice(),K=(q,ne,oe=!0,ae=!1)=>{var fe,pe,ye,ze;const qe={children:(pe=(fe=t?.store)==null?void 0:fe.states)==null?void 0:pe.childrenColumnName.value,checkStrictly:(ze=(ye=t?.store)==null?void 0:ye.states)==null?void 0:ze.checkStrictly.value};if(ul(h.value,q,ne,qe,ae?void 0:C.value,a.value.indexOf(q),n.value)){const St=(h.value||[]).slice();oe&&t.emit("select",St,q),t.emit("selection-change",St)}},j=()=>{var q,ne;const oe=E.value?!x.value:!(x.value||h.value.length);x.value=oe;let ae=!1,fe=0;const pe=(ne=(q=t?.store)==null?void 0:q.states)==null?void 0:ne.rowKey.value,{childrenColumnName:ye}=t.store.states,ze={children:ye.value,checkStrictly:!1};a.value.forEach((qe,Ct)=>{const St=Ct+fe;ul(h.value,qe,oe,ze,C.value,St,pe)&&(ae=!0),fe+=le(Te(qe,pe))}),ae&&t.emit("selection-change",h.value?h.value.slice():[]),t.emit("select-all",(h.value||[]).slice())},ee=()=>{var q;if(((q=a.value)==null?void 0:q.length)===0){x.value=!1;return}const{childrenColumnName:ne}=t.store.states;let oe=0,ae=0;const fe=ye=>{var ze;for(const qe of ye){const Ct=C.value&&C.value.call(null,qe,oe);if(W(qe))ae++;else if(!C.value||Ct)return!1;if(oe++,(ze=qe[ne.value])!=null&&ze.length&&!fe(qe[ne.value]))return!1}return!0},pe=fe(a.value||[]);x.value=ae===0?!1:pe},le=q=>{var ne;if(!t||!t.store)return 0;const{treeData:oe}=t.store.states;let ae=0;const fe=(ne=oe.value[q])==null?void 0:ne.children;return fe&&(ae+=fe.length,fe.forEach(pe=>{ae+=le(pe)})),ae},ve=(q,ne)=>{const oe={};return ol(q).forEach(ae=>{_.value[ae.id]=ne,oe[ae.columnKey||ae.id]=ne}),oe},Ce=(q,ne,oe)=>{F.value&&F.value!==q&&(F.value.order=null),F.value=q,V.value=ne,B.value=oe},xe=()=>{let q=b(s);Object.keys(_.value).forEach(ne=>{const oe=_.value[ne];if(!oe||oe.length===0)return;const ae=ma({columns:i.value},ne);ae&&ae.filterMethod&&(q=q.filter(fe=>oe.some(pe=>ae.filterMethod.call(null,pe,fe,ae))))}),L.value=q},Pe=()=>{var q;a.value=hi((q=L.value)!=null?q:[],{sortingColumn:F.value,sortProp:V.value,sortOrder:B.value})},je=(q=void 0)=>{q?.filter||xe(),Pe()},ot=q=>{const{tableHeaderRef:ne}=t.refs;if(!ne)return;const oe=Object.assign({},ne.filterPanels),ae=Object.keys(oe);if(ae.length)if(Se(q)&&(q=[q]),Oe(q)){const fe=q.map(pe=>si({columns:i.value},pe));ae.forEach(pe=>{const ye=fe.find(ze=>ze.id===pe);ye&&(ye.filteredValue=[])}),t.store.commit("filterChange",{column:fe,values:[],silent:!0,multi:!0})}else ae.forEach(fe=>{const pe=i.value.find(ye=>ye.id===fe);pe&&(pe.filteredValue=[])}),_.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},bt=()=>{F.value&&(Ce(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:yt,toggleRowExpansion:ft,updateExpandRows:Be,states:wt,isRowExpanded:ml}=vi({data:a,rowKey:n}),{updateTreeExpandKeys:hl,toggleTreeExpansion:jt,updateTreeData:gl,updateKeyChildren:bl,loadOrToggle:qt,states:yl}=mi({data:a,rowKey:n}),{updateCurrentRowData:wl,updateCurrentRow:Yt,setCurrentRowKey:Cl,states:Sl}=pi({data:a,rowKey:n});return{assertRowKey:ue,updateColumns:N,scheduleLayout:O,isSelected:W,clearSelection:k,cleanSelection:z,getSelectionRows:M,toggleRowSelection:K,_toggleAllSelection:j,toggleAllSelection:null,updateAllSelected:ee,updateFilters:ve,updateCurrentRow:Yt,updateSort:Ce,execFilter:xe,execSort:Pe,execQuery:je,clearFilter:ot,clearSort:bt,toggleRowExpansion:ft,setExpandRowKeysAdapter:q=>{yt(q),hl(q)},setCurrentRowKey:Cl,toggleRowExpansionAdapter:(q,ne)=>{i.value.some(({type:ae})=>ae==="expand")?ft(q,ne):jt(q,ne)},isRowExpanded:ml,updateExpandRows:Be,updateCurrentRowData:wl,loadOrToggle:qt,updateTreeData:gl,updateKeyChildren:bl,states:{tableSize:l,rowKey:n,data:a,_data:s,isComplex:u,_columns:o,originColumns:r,columns:i,fixedColumns:c,rightFixedColumns:f,leafColumns:v,fixedLeafColumns:d,rightFixedLeafColumns:p,updateOrderFns:m,leafColumnsLength:S,fixedLeafColumnsLength:P,rightFixedLeafColumnsLength:R,isAllSelected:x,selection:h,reserveSelection:g,selectOnIndeterminate:E,selectable:C,filters:_,filteredData:L,sortingColumn:F,sortProp:V,sortOrder:B,hoverRow:G,...wt,...yl,...Sl}}}function Bl(e,t){return e.map(l=>{var n;return l.id===t.id?t:((n=l.children)!=null&&n.length&&(l.children=Bl(l.children,t)),l)})}function Hl(e){e.forEach(t=>{var l,n;t.no=(l=t.getColumnIndex)==null?void 0:l.call(t),(n=t.children)!=null&&n.length&&Hl(t.children)}),e.sort((t,l)=>t.no-l.no)}function bi(){const e=Ee(),t=gi(),l=re("table"),{t:n}=Dt();return{ns:l,t:n,...t,mutations:{setData(o,r){const i=b(o._data)!==r;o.data.value=r,o._data.value=r,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),b(o.reserveSelection)?e.store.assertRowKey():i?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(o,r,i,c){var f;const v=b(o._columns);let d=[];i?(i&&!i.children&&(i.children=[]),(f=i.children)==null||f.push(r),d=Bl(v,i)):(v.push(r),d=v),Hl(d),o._columns.value=d,o.updateOrderFns.push(c),r.type==="selection"&&(o.selectable.value=r.selectable,o.reserveSelection.value=r.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(o,r){var i;((i=r.getColumnIndex)==null?void 0:i.call(r))!==r.no&&(Hl(o._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(o,r,i,c){var f;const v=b(o._columns)||[];if(i)(f=i.children)==null||f.splice(i.children.findIndex(p=>p.id===r.id),1),Fe(()=>{var p;((p=i.children)==null?void 0:p.length)===0&&delete i.children}),o._columns.value=Bl(v,i);else{const p=v.indexOf(r);p>-1&&(v.splice(p,1),o._columns.value=v)}const d=o.updateOrderFns.indexOf(c);d>-1&&o.updateOrderFns.splice(d,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(o,r){const{prop:i,order:c,init:f}=r;if(i){const v=b(o.columns).find(d=>d.property===i);v&&(v.order=c,e.store.updateSort(v,i,c),e.store.commit("changeSortCondition",{init:f}))}},changeSortCondition(o,r){const{sortingColumn:i,sortProp:c,sortOrder:f}=o,v=b(i),d=b(c),p=b(f);Ut(p)&&(o.sortingColumn.value=null,o.sortProp.value=null);const m={filter:!0};e.store.execQuery(m),(!r||!(r.silent||r.init))&&e.emit("sort-change",{column:v,prop:d,order:p}),e.store.updateTableScrollY()},filterChange(o,r){const{column:i,values:c,silent:f}=r,v=e.store.updateFilters(i,c);e.store.execQuery(),f||e.emit("filter-change",v),e.store.updateTableScrollY()},toggleAllSelection(){var o,r;(r=(o=e.store).toggleAllSelection)==null||r.call(o)},rowSelectedChanged(o,r){e.store.toggleRowSelection(r),e.store.updateAllSelected()},setHoverRow(o,r){o.hoverRow.value=r},setCurrentRow(o,r){e.store.updateCurrentRow(r)}},commit:function(o,...r){const i=e.store.mutations;if(i[o])i[o].apply(e,[e.store.states,...r]);else throw new Error(`Action not found: ${o}`)},updateTableScrollY:function(){Fe(()=>e.layout.updateScrollY.apply(e.layout))}}}const on={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"},"treeProps.checkStrictly":{key:"checkStrictly",default:!1}};function yi(e,t){if(!e)throw new Error("Table is required.");const l=bi();return l.toggleAllSelection=rl(l._toggleAllSelection,10),Object.keys(on).forEach(n=>{wa(Ca(t,n),n,l)}),wi(l,t),l}function wi(e,t){Object.keys(on).forEach(l=>{be(()=>Ca(t,l),n=>{wa(n,l,e)})})}function wa(e,t,l){let n=e,a=on[t];gt(a)&&(n=n||a.default,a=a.key),l.states[a].value=n}function Ca(e,t){if(t.includes(".")){const l=t.split(".");let n=e;return l.forEach(a=>{n=n[a]}),n}else return e[t]}class Ci{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=w(null),this.scrollX=w(!1),this.scrollY=w(!1),this.bodyWidth=w(null),this.fixedWidth=w(null),this.rightFixedWidth=w(null),this.gutterWidth=0;for(const l in t)Tt(t,l)&&(Xn(this[l])?this[l].value=t[l]:this[l]=t[l]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){const t=this.height.value;if(Ut(t))return!1;const l=this.table.refs.scrollBarRef;if(this.table.vnode.el&&l?.wrapRef){let n=!0;const a=this.scrollY.value;return n=l.wrapRef.scrollHeight>l.wrapRef.clientHeight,this.scrollY.value=n,a!==n}return!1}setHeight(t,l="height"){if(!dt)return;const n=this.table.vnode.el;if(t=ii(t),this.height.value=Number(t),!n&&(t||t===0)){Fe(()=>this.setHeight(t,l));return}n&&ut(t)?(n.style[l]=`${t}px`,this.updateElsHeight()):n&&Se(t)&&(n.style[l]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(n=>{n.isColumnGroup?t.push.apply(t,n.columns):t.push(n)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let l=t;for(;l.tagName!=="DIV";){if(getComputedStyle(l).display==="none")return!0;l=l.parentElement}return!1}updateColumnsWidth(){var t;if(!dt)return;const l=this.fit,n=(t=this.table.vnode.el)==null?void 0:t.clientWidth;let a=0;const s=this.getFlattenColumns(),u=s.filter(i=>!ut(i.width));if(s.forEach(i=>{ut(i.width)&&i.realWidth&&(i.realWidth=null)}),u.length>0&&l){if(s.forEach(i=>{a+=Number(i.width||i.minWidth||80)}),a<=n){this.scrollX.value=!1;const i=n-a;if(u.length===1)u[0].realWidth=Number(u[0].minWidth||80)+i;else{const c=u.reduce((d,p)=>d+Number(p.minWidth||80),0),f=i/c;let v=0;u.forEach((d,p)=>{if(p===0)return;const m=Math.floor(Number(d.minWidth||80)*f);v+=m,d.realWidth=Number(d.minWidth||80)+m}),u[0].realWidth=Number(u[0].minWidth||80)+i-v}}else this.scrollX.value=!0,u.forEach(i=>{i.realWidth=Number(i.minWidth)});this.bodyWidth.value=Math.max(a,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else s.forEach(i=>{!i.width&&!i.minWidth?i.realWidth=80:i.realWidth=Number(i.width||i.minWidth),a+=i.realWidth}),this.scrollX.value=a>n,this.bodyWidth.value=a;const o=this.store.states.fixedColumns.value;if(o.length>0){let i=0;o.forEach(c=>{i+=Number(c.realWidth||c.width)}),this.fixedWidth.value=i}const r=this.store.states.rightFixedColumns.value;if(r.length>0){let i=0;r.forEach(c=>{i+=Number(c.realWidth||c.width)}),this.rightFixedWidth.value=i}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const l=this.observers.indexOf(t);l!==-1&&this.observers.splice(l,1)}notifyObservers(t){this.observers.forEach(n=>{var a,s;switch(t){case"columns":(a=n.state)==null||a.onColumnsChange(this);break;case"scrollable":(s=n.state)==null||s.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const Si=te({name:"ElTableFilterPanel",components:{ElCheckbox:zt,ElCheckboxGroup:go,ElScrollbar:Vn,ElTooltip:dl,ElIcon:Ke,ArrowDown:Wn,ArrowUp:oo},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:_o.appendTo},setup(e){const t=Ee(),{t:l}=Dt(),n=re("table-filter"),a=t?.parent;e.column&&!a.filterPanels.value[e.column.id]&&(a.filterPanels.value[e.column.id]=t);const s=w(null),u=w(null),o=w(0),r=I(()=>e.column&&e.column.filters),i=I(()=>e.column&&e.column.filterClassName?`${n.b()} ${e.column.filterClassName}`:n.b()),c=I({get:()=>{var C;return(((C=e.column)==null?void 0:C.filteredValue)||[])[0]},set:C=>{f.value&&(kt(C)?f.value.splice(0,1):f.value.splice(0,1,C))}}),f=I({get(){return e.column?e.column.filteredValue||[]:[]},set(C){var _;e.column&&((_=e.upDataColumn)==null||_.call(e,"filteredValue",C))}}),v=I(()=>e.column?e.column.filterMultiple:!0),d=C=>C.value===c.value,p=()=>{var C;(C=s.value)==null||C.onClose()},m=()=>{R(f.value),p()},S=()=>{f.value=[],R(f.value),p()},P=(C,_)=>{c.value=C,o.value=_,kt(C)?R([]):R(f.value),p()},R=C=>{var _,L;(_=e.store)==null||_.commit("filterChange",{column:e.column,values:C}),(L=e.store)==null||L.updateAllSelected()},x=()=>{var C,_;(C=u.value)==null||C.focus(),!v.value&&g(),e.column&&((_=e.upDataColumn)==null||_.call(e,"filterOpened",!0))},h=()=>{var C;e.column&&((C=e.upDataColumn)==null||C.call(e,"filterOpened",!1))},g=()=>{if(kt(c)){o.value=0;return}const C=(r.value||[]).findIndex(_=>_.value===c.value);o.value=C>=0?C+1:0};return{multiple:v,filterClassName:i,filteredValue:f,filterValue:c,filters:r,handleConfirm:m,handleReset:S,handleSelect:P,isPropAbsent:kt,isActive:d,t:l,ns:n,tooltipRef:s,rootRef:u,checkedIndex:o,handleShowTooltip:x,handleHideTooltip:h,handleKeydown:C=>{var _,L;const F=Ot(C),V=(r.value?r.value.length:0)+1;let B=o.value,G=!0;switch(F){case ge.down:case ge.right:B=(B+1)%V;break;case ge.up:case ge.left:B=(B-1+V)%V;break;case ge.tab:p(),G=!1;break;case ge.enter:case ge.space:if(B===0)P(null,0);else{const X=(r.value||[])[B-1];X.value&&P(X.value,B)}break;default:G=!1;break}G&&C.preventDefault(),o.value=B,(L=(_=u.value)==null?void 0:_.querySelector(`.${n.e("list-item")}:nth-child(${B+1})`))==null||L.focus()}}}});function _i(e,t,l,n,a,s){const u=We("el-checkbox"),o=We("el-checkbox-group"),r=We("el-scrollbar"),i=We("arrow-up"),c=We("arrow-down"),f=We("el-icon"),v=We("el-tooltip");return H(),se(v,{ref:"tooltipRef",offset:0,placement:e.placement,"show-arrow":!1,trigger:"click",role:"dialog",teleported:"",effect:"light",pure:"",loop:"","popper-class":e.filterClassName,persistent:"","append-to":e.appendTo,onShow:e.handleShowTooltip,onHide:e.handleHideTooltip},{content:A(()=>[e.multiple?(H(),Z("div",{key:0,ref:"rootRef",tabindex:"-1",class:Q(e.ns.e("multiple"))},[D("div",{class:Q(e.ns.e("content"))},[T(r,{"wrap-class":e.ns.e("wrap")},{default:A(()=>[T(o,{modelValue:e.filteredValue,"onUpdate:modelValue":d=>e.filteredValue=d,class:Q(e.ns.e("checkbox-group"))},{default:A(()=>[(H(!0),Z(Ae,null,Nt(e.filters,d=>(H(),se(u,{key:d.value,value:d.value},{default:A(()=>[ie(we(d.text),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","class"])]),_:1},8,["wrap-class"])],2),D("div",{class:Q(e.ns.e("bottom"))},[D("button",{class:Q(e.ns.is("disabled",e.filteredValue.length===0)),disabled:e.filteredValue.length===0,type:"button",onClick:e.handleConfirm},we(e.t("el.table.confirmFilter")),11,["disabled","onClick"]),D("button",{type:"button",onClick:e.handleReset},we(e.t("el.table.resetFilter")),9,["onClick"])],2)],2)):(H(),Z("ul",{key:1,ref:"rootRef",tabindex:"-1",role:"radiogroup",class:Q(e.ns.e("list")),onKeydown:e.handleKeydown},[D("li",{role:"radio",class:Q([e.ns.e("list-item"),e.ns.is("active",e.isPropAbsent(e.filterValue))]),tabindex:e.checkedIndex===0?0:-1,"aria-checked":e.isPropAbsent(e.filterValue),onClick:d=>e.handleSelect(null,0)},we(e.t("el.table.clearFilter")),11,["tabindex","aria-checked","onClick"]),(H(!0),Z(Ae,null,Nt(e.filters,(d,p)=>(H(),Z("li",{key:d.value,role:"radio",class:Q([e.ns.e("list-item"),e.ns.is("active",e.isActive(d))]),tabindex:e.checkedIndex===p+1?0:-1,"aria-checked":e.isActive(d),onClick:m=>e.handleSelect(d.value,p+1)},we(d.text),11,["tabindex","aria-checked","onClick"]))),128))],42,["onKeydown"]))]),default:A(()=>{var d;return[D("button",{type:"button",class:Q(`${e.ns.namespace.value}-table__column-filter-trigger`),"aria-label":e.t("el.table.filterLabel",{column:((d=e.column)==null?void 0:d.label)||""})},[T(f,null,{default:A(()=>[ce(e.$slots,"filter-icon",{},()=>{var p;return[(p=e.column)!=null&&p.filterOpened?(H(),se(i,{key:0})):(H(),se(c,{key:1}))]})]),_:3})],10,["aria-label"])]}),_:3},8,["placement","popper-class","append-to","onShow","onHide"])}var Ei=Ne(Si,[["render",_i],["__file","filter-panel.vue"]]);function sn(e){const t=Ee();Gn(()=>{l.value.addObserver(t)}),Xe(()=>{n(l.value),a(l.value)}),Jn(()=>{n(l.value),a(l.value)}),Zl(()=>{l.value.removeObserver(t)});const l=I(()=>{const s=e.layout;if(!s)throw new Error("Can not find table layout.");return s}),n=s=>{var u;const o=((u=e.vnode.el)==null?void 0:u.querySelectorAll("colgroup > col"))||[];if(!o.length)return;const r=s.getFlattenColumns(),i={};r.forEach(c=>{i[c.id]=c});for(let c=0,f=o.length;c{var u,o;const r=((u=e.vnode.el)==null?void 0:u.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let c=0,f=r.length;c{m.stopPropagation()},s=(m,S)=>{!S.filters&&S.sortable?p(m,S,!1):S.filterable&&!S.sortable&&a(m),n?.emit("header-click",S,m)},u=(m,S)=>{n?.emit("header-contextmenu",S,m)},o=w(null),r=w(!1),i=w(),c=(m,S)=>{var P,R;if(dt&&!(S.children&&S.children.length>0)&&o.value&&e.border&&o.value.id===S.id){r.value=!0;const x=n;t("set-drag-visible",!0);const h=x?.vnode.el,g=h?.getBoundingClientRect().left,E=(R=(P=l?.vnode)==null?void 0:P.el)==null?void 0:R.querySelector(`th.${S.id}`),C=E.getBoundingClientRect(),_=C.left-g+30;Qe(E,"noclick"),i.value={startMouseLeft:m.clientX,startLeft:C.right-g,startColumnLeft:C.left-g,tableLeft:g};const L=x?.refs.resizeProxy;L.style.left=`${i.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const F=B=>{const G=B.clientX-i.value.startMouseLeft,X=i.value.startLeft+G;L.style.left=`${Math.max(_,X)}px`},V=()=>{if(r.value){const{startColumnLeft:B,startLeft:G}=i.value,ue=Number.parseInt(L.style.left,10)-B;S.width=S.realWidth=ue,x?.emit("header-dragend",S.width,G-B,S,m),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",r.value=!1,o.value=null,i.value=void 0,t("set-drag-visible",!1)}document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",V),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{De(E,"noclick")},0)};document.addEventListener("mousemove",F),document.addEventListener("mouseup",V)}},f=(m,S)=>{var P;if(!e.border||S.children&&S.children.length>0)return;const R=m.target,x=so(R)?R.closest("th"):null;if(!x)return;const h=Ht(x,"is-sortable");if(h){const F=r.value?"col-resize":"";x.style.cursor=F;const V=x.querySelector(".caret-wrapper");V&&(V.style.cursor=F)}if(!S.resizable||r.value){o.value=null;return}const g=x.getBoundingClientRect(),E=((P=x.parentNode)==null?void 0:P.lastElementChild)===x,C=e.allowDragLastColumn||!E,_=g.width>12&&g.right-m.clientX<8&&C,L=_?"col-resize":"";document.body.style.cursor=L,o.value=_?S:null,h&&(x.style.cursor=L)},v=()=>{!dt||r.value||(document.body.style.cursor="")},d=({order:m,sortOrders:S})=>{if(m==="")return S[0];const P=S.indexOf(m||null);return S[P>S.length-2?0:P+1]},p=(m,S,P)=>{var R;m.stopPropagation();const x=S.order===P?null:P||d(S),h=(R=m.target)==null?void 0:R.closest("th");if(h&&Ht(h,"noclick")){De(h,"noclick");return}if(!S.sortable)return;const g=m.currentTarget;if(["ascending","descending"].some(F=>Ht(g,F)&&!S.sortOrders.includes(F)))return;const E=e.store.states;let C=E.sortProp.value,_;const L=E.sortingColumn.value;(L!==S||L===S&&Ut(L.order))&&(L&&(L.order=null),E.sortingColumn.value=S,C=S.property),x?_=S.order=x:_=S.order=null,E.sortProp.value=C,E.sortOrder.value=_,n?.store.commit("changeSortCondition")};return{handleHeaderClick:s,handleHeaderContextMenu:u,handleMouseDown:c,handleMouseMove:f,handleMouseOut:v,handleSortClick:p,handleFilterClick:a}}function ki(e){const t=ke(Ge),l=re("table");return{getHeaderRowStyle:o=>{const r=t?.props.headerRowStyle;return Ve(r)?r.call(null,{rowIndex:o}):r},getHeaderRowClass:o=>{const r=[],i=t?.props.headerRowClassName;return Se(i)?r.push(i):Ve(i)&&r.push(i.call(null,{rowIndex:o})),r.join(" ")},getHeaderCellStyle:(o,r,i,c)=>{var f;let v=(f=t?.props.headerCellStyle)!=null?f:{};Ve(v)&&(v=v.call(null,{rowIndex:o,columnIndex:r,row:i,column:c}));const d=an(r,c.fixed,e.store,i);return Pt(d,"left"),Pt(d,"right"),Object.assign({},v,d)},getHeaderCellClass:(o,r,i,c)=>{const f=nn(l.b(),r,c.fixed,e.store,i),v=[c.id,c.order,c.headerAlign,c.className,c.labelClassName,...f];c.children||v.push("is-leaf"),c.sortable&&v.push("is-sortable");const d=t?.props.headerCellClassName;return Se(d)?v.push(d):Ve(d)&&v.push(d.call(null,{rowIndex:o,columnIndex:r,row:i,column:c})),v.push(l.e("cell")),v.filter(p=>!!p).join(" ")}}}const Sa=e=>{const t=[];return e.forEach(l=>{l.children?(t.push(l),t.push.apply(t,Sa(l.children))):t.push(l)}),t},_a=e=>{let t=1;const l=(s,u)=>{if(u&&(s.level=u.level+1,t{l(r,s),o+=r.colSpan}),s.colSpan=o}else s.colSpan=1};e.forEach(s=>{s.level=1,l(s,void 0)});const n=[];for(let s=0;s{s.children?(s.rowSpan=1,s.children.forEach(u=>u.isSubColumn=!0)):s.rowSpan=t-s.level+1,n[s.level-1].push(s)}),n};function Ni(e){const t=ke(Ge),l=I(()=>_a(e.store.states.originColumns.value));return{isGroup:I(()=>{const s=l.value.length>1;return s&&t&&(t.state.isGroup.value=!0),s}),toggleAllSelection:s=>{s.stopPropagation(),t?.store.commit("toggleAllSelection")},columnRows:l}}var Ti=te({name:"ElTableHeader",components:{ElCheckbox:zt},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})},appendFilterPanelTo:{type:String},allowDragLastColumn:{type:Boolean}},setup(e,{emit:t}){const l=Ee(),n=ke(Ge),a=re("table"),s=w({}),{onColumnsChange:u,onScrollableChange:o}=sn(n),r=n?.props.tableLayout==="auto",i=lt(new Map),c=w();let f;const v=()=>{f=setTimeout(()=>{i.size>0&&(i.forEach((B,G)=>{const X=c.value.querySelector(`.${G.replace(/\s/g,".")}`);if(X){const ue=X.getBoundingClientRect().width;B.width=ue||B.width}}),i.clear())})};be(i,v),at(()=>{f&&(clearTimeout(f),f=void 0)}),Xe(async()=>{await Fe(),await Fe();const{prop:B,order:G}=e.defaultSort;n?.store.commit("sort",{prop:B,order:G,init:!0}),v()});const{handleHeaderClick:d,handleHeaderContextMenu:p,handleMouseDown:m,handleMouseMove:S,handleMouseOut:P,handleSortClick:R,handleFilterClick:x}=xi(e,t),{getHeaderRowStyle:h,getHeaderRowClass:g,getHeaderCellStyle:E,getHeaderCellClass:C}=ki(e),{isGroup:_,toggleAllSelection:L,columnRows:F}=Ni(e),{t:V}=Dt();return l.state={onColumnsChange:u,onScrollableChange:o},l.filterPanels=s,{ns:a,t:V,filterPanels:s,onColumnsChange:u,onScrollableChange:o,columnRows:F,getHeaderRowClass:g,getHeaderRowStyle:h,getHeaderCellClass:C,getHeaderCellStyle:E,handleHeaderClick:d,handleHeaderContextMenu:p,handleMouseDown:m,handleMouseMove:S,handleMouseOut:P,handleSortClick:R,handleFilterClick:x,isGroup:_,toggleAllSelection:L,saveIndexSelection:i,isTableLayoutAuto:r,theadRef:c,updateFixedColumnStyle:v}},render(){const{ns:e,t,isGroup:l,columnRows:n,getHeaderCellStyle:a,getHeaderCellClass:s,getHeaderRowClass:u,getHeaderRowStyle:o,handleHeaderClick:r,handleHeaderContextMenu:i,handleMouseDown:c,handleMouseMove:f,handleSortClick:v,handleMouseOut:d,store:p,$parent:m,saveIndexSelection:S,isTableLayoutAuto:P}=this;let R=1;return Y("thead",{ref:"theadRef",class:e.is("group",l)},n.map((x,h)=>Y("tr",{class:u(h),key:h,style:o(h)},x.map((g,E)=>{g.rowSpan>R&&(R=g.rowSpan);const C=s(h,E,x,g);return P&&g.fixed&&S.set(C,g),Y("th",{class:C,colspan:g.colSpan,key:`${g.id}-thead`,rowspan:g.rowSpan,scope:g.colSpan>1?"colgroup":"col",style:a(h,E,x,g),onClick:_=>{var L;(L=_.currentTarget)!=null&&L.classList.contains("noclick")||r(_,g)},onContextmenu:_=>i(_,g),onMousedown:_=>c(_,g),onMousemove:_=>f(_,g),onMouseout:d},[Y("div",{class:["cell",g.filteredValue&&g.filteredValue.length>0?"highlight":""]},[g.renderHeader?g.renderHeader({column:g,$index:E,store:p,_self:m}):g.label,g.sortable&&Y("button",{type:"button",class:"caret-wrapper","aria-label":t("el.table.sortLabel",{column:g.label||""}),onClick:_=>v(_,g)},[Y("i",{onClick:_=>v(_,g,"ascending"),class:"sort-caret ascending"}),Y("i",{onClick:_=>v(_,g,"descending"),class:"sort-caret descending"})]),g.filterable&&Y(Ei,{store:p,placement:g.filterPlacement||"bottom-start",appendTo:m?.appendFilterPanelTo,column:g,upDataColumn:(_,L)=>{g[_]=L}},{"filter-icon":()=>g.renderFilterIcon?g.renderFilterIcon({filterOpened:g.filterOpened}):null})])])}))))}});function Ml(e,t,l=.03){return e-t>l}function Mi(e){const t=ke(Ge),l=w(""),n=w(Y("div")),a=(p,m,S)=>{var P,R,x;const h=t,g=Tl(p);let E=null;const C=(P=h?.vnode.el)==null?void 0:P.dataset.prefix;g&&(E=xn({columns:(x=(R=e.store)==null?void 0:R.states.columns.value)!=null?x:[]},g,C),E&&h?.emit(`cell-${S}`,m,E,g,p)),h?.emit(`row-${S}`,m,E,p)},s=(p,m)=>{a(p,m,"dblclick")},u=(p,m)=>{var S;(S=e.store)==null||S.commit("setCurrentRow",m),a(p,m,"click")},o=(p,m)=>{a(p,m,"contextmenu")},r=rl(p=>{var m;(m=e.store)==null||m.commit("setHoverRow",p)},30),i=rl(()=>{var p;(p=e.store)==null||p.commit("setHoverRow",null)},30),c=p=>{const m=window.getComputedStyle(p,null),S=Number.parseInt(m.paddingLeft,10)||0,P=Number.parseInt(m.paddingRight,10)||0,R=Number.parseInt(m.paddingTop,10)||0,x=Number.parseInt(m.paddingBottom,10)||0;return{left:S,right:P,top:R,bottom:x}},f=(p,m,S)=>{var P;let R=(P=m?.target)==null?void 0:P.parentNode;for(;p>1&&(R=R?.nextSibling,!(!R||R.nodeName!=="TR"));)S(R,"hover-row hover-fixed-row"),p--};return{handleDoubleClick:s,handleClick:u,handleContextMenu:o,handleMouseEnter:r,handleMouseLeave:i,handleCellMouseEnter:(p,m,S)=>{var P,R,x,h,g,E,C,_,L;if(!t)return;const F=t,V=Tl(p),B=(P=F?.vnode.el)==null?void 0:P.dataset.prefix;let G=null;if(V){if(G=xn({columns:(x=(R=e.store)==null?void 0:R.states.columns.value)!=null?x:[]},V,B),!G)return;V.rowSpan>1&&f(V.rowSpan,p,Qe);const le=F.hoverState={cell:V,column:G,row:m};F?.emit("cell-mouse-enter",le.row,le.column,le.cell,p)}if(!S){((h=Me)==null?void 0:h.trigger)===V&&((g=Me)==null||g());return}const X=p.target.querySelector(".cell");if(!(Ht(X,`${B}-tooltip`)&&X.childNodes.length&&((E=X.textContent)!=null&&E.trim())))return;const ue=document.createRange();ue.setStart(X,0),ue.setEnd(X,X.childNodes.length);const{width:J,height:N}=ue.getBoundingClientRect(),{width:O,height:W}=X.getBoundingClientRect(),{top:k,left:z,right:M,bottom:K}=c(X),j=z+M,ee=k+K;Ml(J+j,O)||Ml(N+ee,W)||Ml(X.scrollWidth,O)?fi(S,(C=V?.innerText||V?.textContent)!=null?C:"",m,G,V,F):((_=Me)==null?void 0:_.trigger)===V&&((L=Me)==null||L())},handleCellMouseLeave:p=>{const m=Tl(p);if(!m)return;m.rowSpan>1&&f(m.rowSpan,p,De);const S=t?.hoverState;t?.emit("cell-mouse-leave",S?.row,S?.column,S?.cell,p)},tooltipContent:l,tooltipTrigger:n}}function Ri(e){const t=ke(Ge),l=re("table");return{getRowStyle:(i,c)=>{const f=t?.props.rowStyle;return Ve(f)?f.call(null,{row:i,rowIndex:c}):f||null},getRowClass:(i,c,f)=>{var v;const d=[l.e("row")];t?.props.highlightCurrentRow&&i===((v=e.store)==null?void 0:v.states.currentRow.value)&&d.push("current-row"),e.stripe&&f%2===1&&d.push(l.em("row","striped"));const p=t?.props.rowClassName;return Se(p)?d.push(p):Ve(p)&&d.push(p.call(null,{row:i,rowIndex:c})),d},getCellStyle:(i,c,f,v)=>{const d=t?.props.cellStyle;let p=d??{};Ve(d)&&(p=d.call(null,{rowIndex:i,columnIndex:c,row:f,column:v}));const m=an(c,e?.fixed,e.store);return Pt(m,"left"),Pt(m,"right"),Object.assign({},p,m)},getCellClass:(i,c,f,v,d)=>{const p=nn(l.b(),c,e?.fixed,e.store,void 0,d),m=[v.id,v.align,v.className,...p],S=t?.props.cellClassName;return Se(S)?m.push(S):Ve(S)&&m.push(S.call(null,{rowIndex:i,columnIndex:c,row:f,column:v})),m.push(l.e("cell")),m.filter(P=>!!P).join(" ")},getSpan:(i,c,f,v)=>{let d=1,p=1;const m=t?.props.spanMethod;if(Ve(m)){const S=m({row:i,column:c,rowIndex:f,columnIndex:v});Oe(S)?(d=S[0],p=S[1]):gt(S)&&(d=S.rowspan,p=S.colspan)}return{rowspan:d,colspan:p}},getColspanRealWidth:(i,c,f)=>{if(c<1)return i[f].realWidth;const v=i.map(({realWidth:d,width:p})=>d||p).slice(f,f+c);return Number(v.reduce((d,p)=>Number(d)+Number(p),-1))}}}const Oi=te({name:"TableTdWrapper"}),$i=te({...Oi,props:{colspan:{type:Number,default:1},rowspan:{type:Number,default:1}},setup(e){return(t,l)=>(H(),Z("td",{colspan:e.colspan,rowspan:e.rowspan},[ce(t.$slots,"default")],8,["colspan","rowspan"]))}});var Pi=Ne($i,[["__file","td-wrapper.vue"]]);function Li(e){const t=ke(Ge),l=re("table"),{handleDoubleClick:n,handleClick:a,handleContextMenu:s,handleMouseEnter:u,handleMouseLeave:o,handleCellMouseEnter:r,handleCellMouseLeave:i,tooltipContent:c,tooltipTrigger:f}=Mi(e),{getRowStyle:v,getRowClass:d,getCellStyle:p,getCellClass:m,getSpan:S,getColspanRealWidth:P}=Ri(e);let R=-1;const x=I(()=>{var _;return(_=e.store)==null?void 0:_.states.columns.value.findIndex(({type:L})=>L==="default")}),h=(_,L)=>{var F;const V=(F=t?.props)==null?void 0:F.rowKey;return V?Te(_,V):L},g=(_,L,F,V=!1)=>{const{tooltipEffect:B,tooltipOptions:G,store:X}=e,{indent:ue,columns:J}=X.states,N=[];let O=!0;return F&&(N.push(l.em("row",`level-${F.level}`)),O=!!F.display),L===0&&(R=-1),e.stripe&&O&&R++,N.push(...d(_,L,R)),Y("tr",{style:[O?null:{display:"none"},v(_,L)],class:N,key:h(_,L),onDblclick:k=>n(k,_),onClick:k=>a(k,_),onContextmenu:k=>s(k,_),onMouseenter:()=>u(L),onMouseleave:o},J.value.map((k,z)=>{const{rowspan:M,colspan:K}=S(_,k,L,z);if(!M||!K)return null;const j=Object.assign({},k);j.realWidth=P(J.value,K,z);const ee={store:X,_self:e.context||t,column:j,row:_,$index:L,cellIndex:z,expanded:V};z===x.value&&F&&(ee.treeNode={indent:F.level&&F.level*ue.value,level:F.level},rt(F.expanded)&&(ee.treeNode.expanded=F.expanded,"loading"in F&&(ee.treeNode.loading=F.loading),"noLazyChildren"in F&&(ee.treeNode.noLazyChildren=F.noLazyChildren)));const le=`${h(_,L)},${z}`,ve=j.columnKey||j.rawColumnKey||"",Ce=k.showOverflowTooltip&&la({effect:B},G,k.showOverflowTooltip);return Y(Pi,{style:p(L,z,_,k),class:m(L,z,_,k,K-1),key:`${ve}${le}`,rowspan:M,colspan:K,onMouseenter:xe=>r(xe,_,Ce),onMouseleave:i},{default:()=>E(z,k,ee)})}))},E=(_,L,F)=>L.renderCell(F);return{wrappedRowRender:(_,L)=>{const F=e.store,{isRowExpanded:V,assertRowKey:B}=F,{treeData:G,lazyTreeNodeMap:X,childrenColumnName:ue,rowKey:J}=F.states,N=F.states.columns.value;if(N.some(({type:W})=>W==="expand")){const W=V(_),k=g(_,L,void 0,W),z=t?.renderExpanded;if(!z)return console.error("[Element Error]renderExpanded is required."),k;const M=[[k]];return(t.props.preserveExpandedContent||W)&&M[0].push(Y("tr",{key:`expanded-row__${k.key}`,style:{display:W?"":"none"}},[Y("td",{colspan:N.length,class:`${l.e("cell")} ${l.e("expanded-cell")}`},[z({row:_,$index:L,store:F,expanded:W})])])),M}else if(Object.keys(G.value).length){B();const W=Te(_,J.value);let k=G.value[W],z=null;k&&(z={expanded:k.expanded,level:k.level,display:!0,noLazyChildren:void 0,loading:void 0},rt(k.lazy)&&(z&&rt(k.loaded)&&k.loaded&&(z.noLazyChildren=!(k.children&&k.children.length)),z.loading=k.loading));const M=[g(_,L,z??void 0)];if(k){let K=0;const j=(le,ve)=>{le&&le.length&&ve&&le.forEach(Ce=>{const xe={display:ve.display&&ve.expanded,level:ve.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Pe=Te(Ce,J.value);if(kt(Pe))throw new Error("For nested data item, row-key is required.");if(k={...G.value[Pe]},k&&(xe.expanded=k.expanded,k.level=k.level||xe.level,k.display=!!(k.expanded&&xe.display),rt(k.lazy)&&(rt(k.loaded)&&k.loaded&&(xe.noLazyChildren=!(k.children&&k.children.length)),xe.loading=k.loading)),K++,M.push(g(Ce,L+K,xe)),k){const je=X.value[Pe]||Ce[ue.value];j(je,k)}})};k.display=!0;const ee=X.value[W]||_[ue.value];j(ee,k)}return M}else return g(_,L,void 0)},tooltipContent:c,tooltipTrigger:f}}const Ai={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var Ii=te({name:"ElTableBody",props:Ai,setup(e){var t;const l=Ee(),n=ke(Ge),a=re("table"),{wrappedRowRender:s,tooltipContent:u,tooltipTrigger:o}=Li(e),{onColumnsChange:r,onScrollableChange:i}=sn(n),c=[];return be((t=e.store)==null?void 0:t.states.hoverRow,(f,v)=>{var d,p;const m=l?.vnode.el,S=Array.from(m?.children||[]).filter(x=>x?.classList.contains(`${a.e("row")}`));let P=f;const R=(d=S[P])==null?void 0:d.childNodes;if(R?.length){let x=0;Array.from(R).reduce((g,E,C)=>{var _,L;return((_=R[C])==null?void 0:_.colSpan)>1&&(x=(L=R[C])==null?void 0:L.colSpan),E.nodeName!=="TD"&&x===0&&g.push(C),x>0&&x--,g},[]).forEach(g=>{var E;for(P=f;P>0;){const C=(E=S[P-1])==null?void 0:E.childNodes;if(C[g]&&C[g].nodeName==="TD"&&C[g].rowSpan>1){Qe(C[g],"hover-cell"),c.push(C[g]);break}P--}})}else c.forEach(x=>De(x,"hover-cell")),c.length=0;!((p=e.store)!=null&&p.states.isComplex.value)||!dt||na(()=>{const x=S[v],h=S[f];x&&!x.classList.contains("hover-fixed-row")&&De(x,"hover-row"),h&&Qe(h,"hover-row")})}),Zl(()=>{var f;(f=Me)==null||f()}),{ns:a,onColumnsChange:r,onScrollableChange:i,wrappedRowRender:s,tooltipContent:u,tooltipTrigger:o}},render(){const{wrappedRowRender:e,store:t}=this,l=t?.states.data.value||[];return Y("tbody",{tabIndex:-1},[l.reduce((n,a)=>n.concat(e(a,n.length)),[])])}});function Fi(){const e=ke(Ge),t=e?.store,l=I(()=>{var o;return(o=t?.states.fixedLeafColumnsLength.value)!=null?o:0}),n=I(()=>{var o;return(o=t?.states.rightFixedColumns.value.length)!=null?o:0}),a=I(()=>{var o;return(o=t?.states.columns.value.length)!=null?o:0}),s=I(()=>{var o;return(o=t?.states.fixedColumns.value.length)!=null?o:0}),u=I(()=>{var o;return(o=t?.states.rightFixedColumns.value.length)!=null?o:0});return{leftFixedLeafCount:l,rightFixedLeafCount:n,columnsCount:a,leftFixedCount:s,rightFixedCount:u,columns:I(()=>{var o;return(o=t?.states.columns.value)!=null?o:[]})}}function Bi(e){const{columns:t}=Fi(),l=re("table");return{getCellClasses:(s,u)=>{const o=s[u],r=[l.e("cell"),o.id,o.align,o.labelClassName,...nn(l.b(),u,o.fixed,e.store)];return o.className&&r.push(o.className),o.children||r.push(l.is("leaf")),r},getCellStyles:(s,u)=>{const o=an(u,s.fixed,e.store);return Pt(o,"left"),Pt(o,"right"),o},columns:t}}var Hi=te({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const t=ke(Ge),l=re("table"),{getCellClasses:n,getCellStyles:a,columns:s}=Bi(e),{onScrollableChange:u,onColumnsChange:o}=sn(t);return{ns:l,onScrollableChange:u,onColumnsChange:o,getCellClasses:n,getCellStyles:a,columns:s}},render(){const{columns:e,getCellStyles:t,getCellClasses:l,summaryMethod:n,sumText:a}=this,s=this.store.states.data.value;let u=[];return n?u=n({columns:e,data:s}):e.forEach((o,r)=>{if(r===0){u[r]=a;return}const i=s.map(d=>Number(d[o.property])),c=[];let f=!0;i.forEach(d=>{if(!Number.isNaN(+d)){f=!1;const p=`${d}`.split(".")[1];c.push(p?p.length:0)}});const v=Math.max.apply(null,c);f?u[r]="":u[r]=i.reduce((d,p)=>{const m=Number(p);return Number.isNaN(+m)?d:Number.parseFloat((d+p).toFixed(Math.min(v,20)))},0)}),Y(Y("tfoot",[Y("tr",{},[...e.map((o,r)=>Y("td",{key:r,colspan:o.colSpan,rowspan:o.rowSpan,class:l(e,r),style:t(o,r)},[Y("div",{class:["cell",o.labelClassName]},[u[r]])]))])]))}});function Wi(e){return{setCurrentRow:f=>{e.commit("setCurrentRow",f)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(f,v,d=!0)=>{e.toggleRowSelection(f,v,!1,d),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:f=>{e.clearFilter(f)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(f,v)=>{e.toggleRowExpansionAdapter(f,v)},clearSort:()=>{e.clearSort()},sort:(f,v)=>{e.commit("sort",{prop:f,order:v})},updateKeyChildren:(f,v)=>{e.updateKeyChildren(f,v)}}}function zi(e,t,l,n){const a=w(!1),s=w(null),u=w(!1),o=N=>{u.value=N},r=w({width:null,height:null,headerHeight:null}),i=w(!1),c={display:"inline-block",verticalAlign:"middle"},f=w(),v=w(0),d=w(0),p=w(0),m=w(0),S=w(0);be(()=>e.height,N=>{t.setHeight(N??null)},{immediate:!0}),be(()=>e.maxHeight,N=>{t.setMaxHeight(N??null)},{immediate:!0}),be(()=>[e.currentRowKey,l.states.rowKey],([N,O])=>{!b(O)||!b(N)||l.setCurrentRowKey(`${N}`)},{immediate:!0}),be(()=>e.data,N=>{n.store.commit("setData",N)},{immediate:!0,deep:!0}),sl(()=>{e.expandRowKeys&&l.setExpandRowKeysAdapter(e.expandRowKeys)});const P=()=>{n.store.commit("setHoverRow",null),n.hoverState&&(n.hoverState=null)},R=(N,O)=>{const{pixelX:W,pixelY:k}=O;Math.abs(W)>=Math.abs(k)&&(n.refs.bodyWrapper.scrollLeft+=O.pixelX/5)},x=I(()=>e.height||e.maxHeight||l.states.fixedColumns.value.length>0||l.states.rightFixedColumns.value.length>0),h=I(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),g=()=>{x.value&&t.updateElsHeight(),t.updateColumnsWidth(),!(typeof window>"u")&&requestAnimationFrame(L)};Xe(async()=>{await Fe(),l.updateColumns(),F(),requestAnimationFrame(g);const N=n.vnode.el,O=n.refs.headerWrapper;e.flexible&&N&&N.parentElement&&(N.parentElement.style.minWidth="0"),r.value={width:f.value=N.offsetWidth,height:N.offsetHeight,headerHeight:e.showHeader&&O?O.offsetHeight:null},l.states.columns.value.forEach(W=>{W.filteredValue&&W.filteredValue.length&&n.store.commit("filterChange",{column:W,values:W.filteredValue,silent:!0})}),n.$ready=!0});const E=(N,O)=>{if(!N)return;const W=Array.from(N.classList).filter(k=>!k.startsWith("is-scrolling-"));W.push(t.scrollX.value?O:"is-scrolling-none"),N.className=W.join(" ")},C=N=>{const{tableWrapper:O}=n.refs;E(O,N)},_=N=>{const{tableWrapper:O}=n.refs;return!!(O&&O.classList.contains(N))},L=function(){if(!n.refs.scrollBarRef)return;if(!t.scrollX.value){const j="is-scrolling-none";_(j)||C(j);return}const N=n.refs.scrollBarRef.wrapRef;if(!N)return;const{scrollLeft:O,offsetWidth:W,scrollWidth:k}=N,{headerWrapper:z,footerWrapper:M}=n.refs;z&&(z.scrollLeft=O),M&&(M.scrollLeft=O);const K=k-W-1;O>=K?C("is-scrolling-right"):C(O===0?"is-scrolling-left":"is-scrolling-middle")},F=()=>{n.refs.scrollBarRef&&(n.refs.scrollBarRef.wrapRef&&Wt(n.refs.scrollBarRef.wrapRef,"scroll",L,{passive:!0}),e.fit?$t(n.vnode.el,V):Wt(window,"resize",V),$t(n.refs.tableInnerWrapper,()=>{var N,O;V(),(O=(N=n.refs)==null?void 0:N.scrollBarRef)==null||O.update()}))},V=()=>{var N,O,W,k;const z=n.vnode.el;if(!n.$ready||!z)return;let M=!1;const{width:K,height:j,headerHeight:ee}=r.value,le=f.value=z.offsetWidth;K!==le&&(M=!0);const ve=z.offsetHeight;(e.height||x.value)&&j!==ve&&(M=!0);const Ce=e.tableLayout==="fixed"?n.refs.headerWrapper:(N=n.refs.tableHeaderRef)==null?void 0:N.$el;e.showHeader&&Ce?.offsetHeight!==ee&&(M=!0),v.value=((O=n.refs.tableWrapper)==null?void 0:O.scrollHeight)||0,p.value=Ce?.scrollHeight||0,m.value=((W=n.refs.footerWrapper)==null?void 0:W.offsetHeight)||0,S.value=((k=n.refs.appendWrapper)==null?void 0:k.offsetHeight)||0,d.value=v.value-p.value-m.value-S.value,M&&(r.value={width:le,height:ve,headerHeight:e.showHeader&&Ce?.offsetHeight||0},g())},B=jo(),G=I(()=>{const{bodyWidth:N,scrollY:O,gutterWidth:W}=t;return N.value?`${N.value-(O.value?W:0)}px`:""}),X=I(()=>e.maxHeight?"fixed":e.tableLayout),ue=I(()=>{if(e.data&&e.data.length)return;let N="100%";e.height&&d.value&&(N=`${d.value}px`);const O=f.value;return{width:O?`${O}px`:"",height:N}}),J=I(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${p.value+m.value}px)`}:{maxHeight:`${+e.maxHeight-p.value-m.value}px`}:{});return{isHidden:a,renderExpanded:s,setDragVisible:o,isGroup:i,handleMouseLeave:P,handleHeaderFooterMousewheel:R,tableSize:B,emptyBlockStyle:ue,resizeProxyVisible:u,bodyWidth:G,resizeState:r,doLayout:g,tableBodyStyles:h,tableLayout:X,scrollbarViewStyle:c,scrollbarStyle:J}}function Vi(e){const t=w(),l=()=>{const a=e.vnode.el.querySelector(".hidden-columns"),s={childList:!0,subtree:!0},u=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{u.forEach(o=>o())}),t.value.observe(a,s)};Xe(()=>{l()}),Zl(()=>{var n;(n=t.value)==null||n.disconnect()})}var Ki={data:{type:Array,default:()=>[]},size:ro,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:[String,Object,Array],default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:[Boolean,Object],tooltipFormatter:Function,appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0},allowDragLastColumn:{type:Boolean,default:!0},preserveExpandedContent:Boolean,nativeScrollbar:Boolean};function Ea(e){const t=e.tableLayout==="auto";let l=e.columns||[];t&&l.every(({width:a})=>Re(a))&&(l=[]);const n=a=>{const s={key:`${e.tableLayout}_${a.id}`,style:{},name:void 0};return t?s.style={width:`${a.width}px`}:s.name=a.id,s};return Y("colgroup",{},l.map(a=>Y("col",n(a))))}Ea.props=["columns","tableLayout"];const Di=()=>{const e=w(),t=(s,u)=>{const o=e.value;o&&o.scrollTo(s,u)},l=(s,u)=>{const o=e.value;o&&ut(u)&&["Top","Left"].includes(s)&&o[`setScroll${s}`](u)};return{scrollBarRef:e,scrollTo:t,setScrollTop:s=>l("Top",s),setScrollLeft:s=>l("Left",s)}};var Tn=!1,mt,Wl,zl,tl,ll,xa,nl,Vl,Kl,Dl,ka,Ul,jl,Na,Ta;function Le(){if(!Tn){Tn=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),l=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Ul=/\b(iPhone|iP[ao]d)/.exec(e),jl=/\b(iP[ao]d)/.exec(e),Dl=/Android/i.exec(e),Na=/FBAN\/\w+;/i.exec(e),Ta=/Mobile/i.exec(e),ka=!!/Win64/.exec(e),t){mt=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,mt&&document&&document.documentMode&&(mt=document.documentMode);var n=/(?:Trident\/(\d+.\d+))/.exec(e);xa=n?parseFloat(n[1])+4:mt,Wl=t[2]?parseFloat(t[2]):NaN,zl=t[3]?parseFloat(t[3]):NaN,tl=t[4]?parseFloat(t[4]):NaN,tl?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),ll=t&&t[1]?parseFloat(t[1]):NaN):ll=NaN}else mt=Wl=zl=ll=tl=NaN;if(l){if(l[1]){var a=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);nl=a?parseFloat(a[1].replace("_",".")):!0}else nl=!1;Vl=!!l[2],Kl=!!l[3]}else nl=Vl=Kl=!1}}var ql={ie:function(){return Le()||mt},ieCompatibilityMode:function(){return Le()||xa>mt},ie64:function(){return ql.ie()&&ka},firefox:function(){return Le()||Wl},opera:function(){return Le()||zl},webkit:function(){return Le()||tl},safari:function(){return ql.webkit()},chrome:function(){return Le()||ll},windows:function(){return Le()||Vl},osx:function(){return Le()||nl},linux:function(){return Le()||Kl},iphone:function(){return Le()||Ul},mobile:function(){return Le()||Ul||jl||Dl||Ta},nativeApp:function(){return Le()||Na},android:function(){return Le()||Dl},ipad:function(){return Le()||jl}},Ui=ql,ji=!!(typeof window<"u"&&window.document&&window.document.createElement),qi={canUseDOM:ji},Ma=qi,Ra;Ma.canUseDOM&&(Ra=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function Yi(e,t){if(!Ma.canUseDOM||t&&!("addEventListener"in document))return!1;var l="on"+e,n=l in document;if(!n){var a=document.createElement("div");a.setAttribute(l,"return;"),n=typeof a[l]=="function"}return!n&&Ra&&e==="wheel"&&(n=document.implementation.hasFeature("Events.wheel","3.0")),n}var Xi=Yi,Mn=10,Rn=40,On=800;function Oa(e){var t=0,l=0,n=0,a=0;return"detail"in e&&(l=e.detail),"wheelDelta"in e&&(l=-e.wheelDelta/120),"wheelDeltaY"in e&&(l=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=l,l=0),n=t*Mn,a=l*Mn,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||a)&&e.deltaMode&&(e.deltaMode==1?(n*=Rn,a*=Rn):(n*=On,a*=On)),n&&!t&&(t=n<1?-1:1),a&&!l&&(l=a<1?-1:1),{spinX:t,spinY:l,pixelX:n,pixelY:a}}Oa.getEventType=function(){return Ui.firefox()?"DOMMouseScroll":Xi("wheel")?"wheel":"mousewheel"};var Gi=Oa;const al="_Mousewheel",$n=function(e,t){if(e&&e.addEventListener){$a(e);const l=function(n){const a=Gi(n);t&&Reflect.apply(t,this,[n,a])};e[al]={wheelHandler:l},e.addEventListener("wheel",l,{passive:!0})}},$a=e=>{var t;(t=e[al])!=null&&t.wheelHandler&&(e.removeEventListener("wheel",e[al].wheelHandler),e[al]=null)},Ji={beforeMount(e,t){$n(e,t.value)},unmounted(e){$a(e)},updated(e,t){t.value!==t.oldValue&&$n(e,t.value)}};let Qi=1;const Zi=te({name:"ElTable",directives:{Mousewheel:Ji},components:{TableHeader:Ti,TableBody:Ii,TableFooter:Hi,ElScrollbar:Vn,hColgroup:Ea},props:Ki,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e){const{t}=Dt(),l=re("table"),n=Ee();Rt(Ge,n);const a=yi(n,e);n.store=a;const s=new Ci({store:n.store,table:n,fit:e.fit,showHeader:e.showHeader});n.layout=s;const u=I(()=>(a.states.data.value||[]).length===0),{setCurrentRow:o,getSelectionRows:r,toggleRowSelection:i,clearSelection:c,clearFilter:f,toggleAllSelection:v,toggleRowExpansion:d,clearSort:p,sort:m,updateKeyChildren:S}=Wi(a),{isHidden:P,renderExpanded:R,setDragVisible:x,isGroup:h,handleMouseLeave:g,handleHeaderFooterMousewheel:E,tableSize:C,emptyBlockStyle:_,resizeProxyVisible:L,bodyWidth:F,resizeState:V,doLayout:B,tableBodyStyles:G,tableLayout:X,scrollbarViewStyle:ue,scrollbarStyle:J}=zi(e,s,a,n),{scrollBarRef:N,scrollTo:O,setScrollLeft:W,setScrollTop:k}=Di(),z=rl(B,50),M=`${l.namespace.value}-table_${Qi++}`;n.tableId=M,n.state={isGroup:h,resizeState:V,doLayout:B,debouncedUpdateLayout:z};const K=I(()=>{var le;return(le=e.sumText)!=null?le:t("el.table.sumText")}),j=I(()=>{var le;return(le=e.emptyText)!=null?le:t("el.table.emptyText")}),ee=I(()=>_a(a.states.originColumns.value)[0]);return Vi(n),at(()=>{z.cancel()}),{ns:l,layout:s,store:a,columns:ee,handleHeaderFooterMousewheel:E,handleMouseLeave:g,tableId:M,tableSize:C,isHidden:P,isEmpty:u,renderExpanded:R,resizeProxyVisible:L,resizeState:V,isGroup:h,bodyWidth:F,tableBodyStyles:G,emptyBlockStyle:_,debouncedUpdateLayout:z,setCurrentRow:o,getSelectionRows:r,toggleRowSelection:i,clearSelection:c,clearFilter:f,toggleAllSelection:v,toggleRowExpansion:d,clearSort:p,doLayout:B,sort:m,updateKeyChildren:S,t,setDragVisible:x,context:n,computedSumText:K,computedEmptyText:j,tableLayout:X,scrollbarViewStyle:ue,scrollbarStyle:J,scrollBarRef:N,scrollTo:O,setScrollLeft:W,setScrollTop:k,allowDragLastColumn:e.allowDragLastColumn}}});function eu(e,t,l,n,a,s){const u=We("hColgroup"),o=We("table-header"),r=We("table-body"),i=We("table-footer"),c=We("el-scrollbar"),f=Go("mousewheel");return H(),Z("div",{ref:"tableWrapper",class:Q([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:Ye(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:e.handleMouseLeave},[D("div",{ref:"tableInnerWrapper",class:Q(e.ns.e("inner-wrapper"))},[D("div",{ref:"hiddenColumns",class:"hidden-columns"},[ce(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?Ie((H(),Z("div",{key:0,ref:"headerWrapper",class:Q(e.ns.e("header-wrapper"))},[D("table",{ref:"tableHeader",class:Q(e.ns.e("header")),style:Ye(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[T(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),T(o,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[f,e.handleHeaderFooterMousewheel]]):he("v-if",!0),D("div",{ref:"bodyWrapper",class:Q(e.ns.e("body-wrapper"))},[T(c,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,native:e.nativeScrollbar,onScroll:v=>e.$emit("scroll",v)},{default:A(()=>[D("table",{ref:"tableBody",class:Q(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:Ye({width:e.bodyWidth,tableLayout:e.tableLayout})},[T(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(H(),se(o,{key:0,ref:"tableHeaderRef",class:Q(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):he("v-if",!0),T(r,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&e.tableLayout==="auto"?(H(),se(i,{key:1,class:Q(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):he("v-if",!0)],6),e.isEmpty?(H(),Z("div",{key:0,ref:"emptyBlock",style:Ye(e.emptyBlockStyle),class:Q(e.ns.e("empty-block"))},[D("span",{class:Q(e.ns.e("empty-text"))},[ce(e.$slots,"empty",{},()=>[ie(we(e.computedEmptyText),1)])],2)],6)):he("v-if",!0),e.$slots.append?(H(),Z("div",{key:1,ref:"appendWrapper",class:Q(e.ns.e("append-wrapper"))},[ce(e.$slots,"append")],2)):he("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","native","onScroll"])],2),e.showSummary&&e.tableLayout==="fixed"?Ie((H(),Z("div",{key:1,ref:"footerWrapper",class:Q(e.ns.e("footer-wrapper"))},[D("table",{class:Q(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:Ye(e.tableBodyStyles)},[T(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),T(i,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[ht,!e.isEmpty],[f,e.handleHeaderFooterMousewheel]]):he("v-if",!0),e.border||e.isGroup?(H(),Z("div",{key:2,class:Q(e.ns.e("border-left-patch"))},null,2)):he("v-if",!0)],2),Ie(D("div",{ref:"resizeProxy",class:Q(e.ns.e("column-resize-proxy"))},null,2),[[ht,e.resizeProxyVisible]])],46,["data-prefix","onMouseleave"])}var tu=Ne(Zi,[["render",eu],["__file","table.vue"]]);const lu={selection:"table-column--selection",expand:"table__expand-column"},nu={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},au=e=>lu[e]||"",ou={selection:{renderHeader({store:e}){var t;function l(){return e.states.data.value&&e.states.data.value.length===0}return Y(zt,{disabled:l(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":(t=e.toggleAllSelection)!=null?t:void 0,modelValue:e.states.isAllSelected.value,ariaLabel:e.t("el.table.selectAllLabel")})},renderCell({row:e,column:t,store:l,$index:n}){return Y(zt,{disabled:t.selectable?!t.selectable.call(null,e,n):!1,size:l.states.tableSize.value,onChange:()=>{l.commit("rowSelectedChanged",e)},onClick:a=>a.stopPropagation(),modelValue:l.isSelected(e),ariaLabel:l.t("el.table.selectRowLabel")})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let l=t+1;const n=e.index;return ut(n)?l=t+n:Ve(n)&&(l=n(t)),Y("div",{},[l])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:l,expanded:n}){const{ns:a}=l,s=[a.e("expand-icon")];!e.renderExpand&&n&&s.push(a.em("expand-icon","expanded"));const u=function(o){o.stopPropagation(),l.toggleRowExpansion(t)};return Y("button",{type:"button","aria-label":l.t(n?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":n,class:s,onClick:u},{default:()=>e.renderExpand?[e.renderExpand({expanded:n})]:[Y(Ke,null,{default:()=>[Y(Kt)]})]})},sortable:!1,resizable:!1}};function su({row:e,column:t,$index:l}){var n;const a=t.property,s=a&&zn(e,a).value;return t&&t.formatter?t.formatter(e,t,s,l):((n=s?.toString)==null?void 0:n.call(s))||""}function ru({row:e,treeNode:t,store:l},n=!1){const{ns:a}=l;if(!t)return n?[Y("span",{class:a.e("placeholder")})]:null;const s=[],u=function(o){o.stopPropagation(),!t.loading&&l.loadOrToggle(e)};if(t.indent&&s.push(Y("span",{class:a.e("indent"),style:{"padding-left":`${t.indent}px`}})),rt(t.expanded)&&!t.noLazyChildren){const o=[a.e("expand-icon"),t.expanded?a.em("expand-icon","expanded"):""];let r=Kt;t.loading&&(r=io),s.push(Y("button",{type:"button","aria-label":l.t(t.expanded?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":t.expanded,class:o,onClick:u},{default:()=>[Y(Ke,{class:a.is("loading",t.loading)},{default:()=>[Y(r)]})]}))}else s.push(Y("span",{class:a.e("placeholder")}));return s}function Pn(e,t){return e.reduce((l,n)=>(l[n]=n,l),t)}function iu(e,t){const l=Ee();return{registerComplexWatchers:()=>{const s=["fixed"],u={realWidth:"width",realMinWidth:"minWidth"},o=Pn(s,u);Object.keys(o).forEach(r=>{const i=u[r];Tt(t,i)&&be(()=>t[i],c=>{let f=c;i==="width"&&r==="realWidth"&&(f=ln(c)),i==="minWidth"&&r==="realMinWidth"&&(f=ha(c)),l.columnConfig.value[i]=f,l.columnConfig.value[r]=f;const v=i==="fixed";e.value.store.scheduleLayout(v)})})},registerNormalWatchers:()=>{const s=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter","resizable"],u=["showOverflowTooltip"],o={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},r=Pn(s,o);Object.keys(r).forEach(i=>{const c=o[i];Tt(t,c)&&be(()=>t[c],f=>{l.columnConfig.value[i]=f,(i==="filters"||i==="filterMethod")&&(l.columnConfig.value.filterable=!!(l.columnConfig.value.filters||l.columnConfig.value.filterMethod))})}),u.forEach(i=>{Tt(e.value.props,i)&&be(()=>e.value.props[i],c=>{l.columnConfig.value[i]=c})})}}}function uu(e,t,l){const n=Ee(),a=w(""),s=w(!1),u=w(),o=w(),r=re("table");sl(()=>{u.value=e.align?`is-${e.align}`:null,u.value}),sl(()=>{o.value=e.headerAlign?`is-${e.headerAlign}`:u.value,o.value});const i=I(()=>{let h=n.vnode.vParent||n.parent;for(;h&&!h.tableId&&!h.columnId;)h=h.vnode.vParent||h.parent;return h}),c=I(()=>{const{store:h}=n.parent;if(!h)return!1;const{treeData:g}=h.states,E=g.value;return E&&Object.keys(E).length>0}),f=w(ln(e.width)),v=w(ha(e.minWidth)),d=h=>(f.value&&(h.width=f.value),v.value&&(h.minWidth=v.value),!f.value&&v.value&&(h.width=void 0),h.minWidth||(h.minWidth=80),h.realWidth=Number(Re(h.width)?h.minWidth:h.width),h),p=h=>{const g=h.type,E=ou[g]||{};Object.keys(E).forEach(_=>{const L=E[_];_!=="className"&&!Re(L)&&(h[_]=L)});const C=au(g);if(C){const _=`${b(r.namespace)}-${C}`;h.className=h.className?`${h.className} ${_}`:_}return h},m=h=>{Oe(h)?h.forEach(E=>g(E)):g(h);function g(E){var C;((C=E?.type)==null?void 0:C.name)==="ElTableColumn"&&(E.vParent=n)}};return{columnId:a,realAlign:u,isSubColumn:s,realHeaderAlign:o,columnOrTableParent:i,setColumnWidth:d,setColumnForcedProps:p,setColumnRenders:h=>{e.renderHeader||h.type!=="selection"&&(h.renderHeader=E=>{if(n.columnConfig.value.label,t.header){const C=t.header(E);if(ya(C))return Y(Ae,C)}return ie(h.label)}),t["filter-icon"]&&(h.renderFilterIcon=E=>ce(t,"filter-icon",E)),t.expand&&(h.renderExpand=E=>ce(t,"expand",E));let g=h.renderCell;return h.type==="expand"?(h.renderCell=E=>Y("div",{class:"cell"},[g(E)]),l.value.renderExpanded=E=>t.default?t.default(E):t.default):(g=g||su,h.renderCell=E=>{let C=null;if(t.default){const G=t.default(E);C=G.some(X=>X.type!==qn)?G:g(E)}else C=g(E);const{columns:_}=l.value.store.states,L=_.value.findIndex(G=>G.type==="default"),F=c.value&&E.cellIndex===L,V=ru(E,F),B={class:"cell",style:{}};return h.showOverflowTooltip&&(B.class=`${B.class} ${b(r.namespace)}-tooltip`,B.style={width:`${(E.column.realWidth||Number(E.column.width))-1}px`}),m(C),Y("div",B,[V,C])}),h},getPropsData:(...h)=>h.reduce((g,E)=>(Oe(E)&&E.forEach(C=>{g[C]=e[C]}),g),{}),getColumnElIndex:(h,g)=>Array.prototype.indexOf.call(h,g),updateColumnOrder:()=>{l.value.store.commit("updateColumnOrder",n.columnConfig.value)}}}var du={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let cu=1;var Pa=te({name:"ElTableColumn",components:{ElCheckbox:zt},props:du,setup(e,{slots:t}){const l=Ee(),n=w({}),a=I(()=>{let x=l.parent;for(;x&&!x.tableId;)x=x.parent;return x}),{registerNormalWatchers:s,registerComplexWatchers:u}=iu(a,e),{columnId:o,isSubColumn:r,realHeaderAlign:i,columnOrTableParent:c,setColumnWidth:f,setColumnForcedProps:v,setColumnRenders:d,getPropsData:p,getColumnElIndex:m,realAlign:S,updateColumnOrder:P}=uu(e,t,a),R=c.value;o.value=`${"tableId"in R&&R.tableId||"columnId"in R&&R.columnId}_column_${cu++}`,Gn(()=>{r.value=a.value!==R;const x=e.type||"default",h=e.sortable===""?!0:e.sortable,g=x==="selection"?!1:Re(e.showOverflowTooltip)?R.props.showOverflowTooltip:e.showOverflowTooltip,E=Re(e.tooltipFormatter)?R.props.tooltipFormatter:e.tooltipFormatter,C={...nu[x],id:o.value,type:x,property:e.prop||e.property,align:S,headerAlign:i,showOverflowTooltip:g,tooltipFormatter:E,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:h,index:e.index,rawColumnKey:l.vnode.key};let B=p(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);B=ri(C,B),B=ui(d,f,v)(B),n.value=B,s(),u()}),Xe(()=>{var x,h;const g=c.value,E=r.value?(x=g.vnode.el)==null?void 0:x.children:(h=g.refs.hiddenColumns)==null?void 0:h.children,C=()=>m(E||[],l.vnode.el);n.value.getColumnIndex=C,C()>-1&&a.value.store.commit("insertColumn",n.value,r.value?"columnConfig"in g&&g.columnConfig.value:null,P)}),at(()=>{const x=n.value.getColumnIndex;(x?x():-1)>-1&&a.value.store.commit("removeColumn",n.value,r.value?"columnConfig"in R&&R.columnConfig.value:null,P)}),l.columnId=o.value,l.columnConfig=n},render(){var e,t,l;try{const n=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),a=[];if(Oe(n))for(const u of n)((l=u.type)==null?void 0:l.name)==="ElTableColumn"||u.shapeFlag&2?a.push(u):u.type===Ae&&Oe(u.children)&&u.children.forEach(o=>{o?.patchFlag!==1024&&!Se(o?.children)&&a.push(o)});return Y("div",a)}catch{return Y("div",[])}}});const fu=ct(tu,{TableColumn:Pa}),vu=Ze(Pa),pl=Symbol("tabsRootContextKey"),pu=Ue({tabs:{type:$e(Array),default:()=>Vt([])},tabRefs:{type:$e(Object),default:()=>Vt({})}}),La="ElTabBar",mu=te({name:La}),hu=te({...mu,props:pu,setup(e,{expose:t}){const l=e,n=ke(pl);n||nt(La,"");const a=re("tabs"),s=w(),u=w(),o=I(()=>{var d;return Re(n.props.defaultValue)||!!((d=u.value)!=null&&d.transform)}),r=()=>{let d=0,p=0;const m=["top","bottom"].includes(n.props.tabPosition)?"width":"height",S=m==="width"?"x":"y",P=S==="x"?"left":"top";return l.tabs.every(R=>{if(Re(R.paneName))return!1;const x=l.tabRefs[R.paneName];if(!x)return!1;if(!R.active)return!0;d=x[`offset${it(P)}`],p=x[`client${it(m)}`];const h=window.getComputedStyle(x);return m==="width"&&(p-=Number.parseFloat(h.paddingLeft)+Number.parseFloat(h.paddingRight),d+=Number.parseFloat(h.paddingLeft)),!1}),{[m]:`${p}px`,transform:`translate${it(S)}(${d}px)`}},i=()=>u.value=r(),c=[],f=()=>{c.forEach(d=>d.stop()),c.length=0,Object.values(l.tabRefs).forEach(d=>{c.push($t(d,i))})};be(()=>l.tabs,async()=>{await Fe(),i(),f()},{immediate:!0});const v=$t(s,()=>i());return at(()=>{c.forEach(d=>d.stop()),c.length=0,v.stop()}),t({ref:s,update:i}),(d,p)=>b(o)?(H(),Z("div",{key:0,ref_key:"barRef",ref:s,class:Q([b(a).e("active-bar"),b(a).is(b(n).props.tabPosition)]),style:Ye(u.value)},null,6)):he("v-if",!0)}});var gu=Ne(hu,[["__file","tab-bar.vue"]]);const bu=Ue({panes:{type:$e(Array),default:()=>Vt([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean,tabindex:{type:[String,Number],default:void 0}}),yu={tabClick:(e,t,l)=>l instanceof Event,tabRemove:(e,t)=>t instanceof Event},Ln="ElTabNav",wu=te({name:Ln,props:bu,emits:yu,setup(e,{expose:t,emit:l}){const n=ke(pl);n||nt(Ln,"");const a=re("tabs"),s=os(),u=ss(),o=w(),r=w(),i=w(),c=w({}),f=w(),v=w(!1),d=w(0),p=w(!1),m=w(!0),S=Pl(),P=I(()=>["top","bottom"].includes(n.props.tabPosition)),R=I(()=>P.value?"width":"height"),x=I(()=>({transform:`translate${R.value==="width"?"X":"Y"}(-${d.value}px)`})),{width:h,height:g}=wn(o),{width:E,height:C}=wn(r,{width:0,height:0},{box:"border-box"}),_=I(()=>P.value?h.value:g.value),L=I(()=>P.value?E.value:C.value),{onWheel:F}=ai({atStartEdge:I(()=>d.value<=0),atEndEdge:I(()=>L.value-d.value<=_.value),layout:I(()=>P.value?"horizontal":"vertical")},k=>{d.value=Eo(d.value+k,0,L.value-_.value)}),V=()=>{if(!o.value)return;const k=o.value[`offset${it(R.value)}`],z=d.value;if(!z)return;const M=z>k?z-k:0;d.value=M},B=()=>{if(!o.value||!r.value)return;const k=r.value[`offset${it(R.value)}`],z=o.value[`offset${it(R.value)}`],M=d.value;if(k-M<=z)return;const K=k-M>z*2?M+z:k-z;d.value=K},G=async()=>{const k=r.value;if(!v.value||!i.value||!o.value||!k)return;await Fe();const z=c.value[e.currentName];if(!z)return;const M=o.value,K=z.getBoundingClientRect(),j=M.getBoundingClientRect(),ee=P.value?k.offsetWidth-j.width:k.offsetHeight-j.height,le=d.value;let ve=le;P.value?(K.leftj.right&&(ve=le+K.right-j.right)):(K.topj.bottom&&(ve=le+(K.bottom-j.bottom))),ve=Math.max(ve,0),d.value=Math.min(ve,ee)},X=()=>{var k;if(!r.value||!o.value)return;e.stretch&&((k=f.value)==null||k.update());const z=r.value[`offset${it(R.value)}`],M=o.value[`offset${it(R.value)}`],K=d.value;M0&&(d.value=0))},ue=k=>{const z=Ot(k);let M=0;switch(z){case ge.left:case ge.up:M=-1;break;case ge.right:case ge.down:M=1;break;default:return}const K=Array.from(k.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));let ee=K.indexOf(k.target)+M;ee<0?ee=K.length-1:ee>=K.length&&(ee=0),K[ee].focus({preventScroll:!0}),K[ee].click(),J()},J=()=>{m.value&&(p.value=!0)},N=()=>p.value=!1,O=(k,z)=>{c.value[z]=k},W=async()=>{await Fe();const k=c.value[e.currentName];k?.focus({preventScroll:!0})};return be(s,k=>{k==="hidden"?m.value=!1:k==="visible"&&setTimeout(()=>m.value=!0,50)}),be(u,k=>{k?setTimeout(()=>m.value=!0,50):m.value=!1}),$t(i,X),Xe(()=>setTimeout(()=>G(),0)),Jn(()=>X()),t({scrollToActiveTab:G,removeFocus:N,focusActiveTab:W,tabListRef:r,tabBarRef:f,scheduleRender:()=>Qt(S)}),()=>{const k=v.value?[T("span",{class:[a.e("nav-prev"),a.is("disabled",!v.value.prev)],onClick:V},[T(Ke,null,{default:()=>[T(uo,null,null)]})]),T("span",{class:[a.e("nav-next"),a.is("disabled",!v.value.next)],onClick:B},[T(Ke,null,{default:()=>[T(Kt,null,null)]})])]:null,z=e.panes.map((M,K)=>{var j,ee,le,ve,Ce;const xe=M.uid,Pe=M.props.disabled,je=(ee=(j=M.props.name)!=null?j:M.index)!=null?ee:`${K}`,ot=!Pe&&(M.isClosable||M.props.closable!==!1&&e.editable);M.index=`${K}`;const bt=ot?T(Ke,{class:"is-icon-close",onClick:Be=>l("tabRemove",M,Be)},{default:()=>[T(Hn,null,null)]}):null,yt=((ve=(le=M.slots).label)==null?void 0:ve.call(le))||M.props.label,ft=!Pe&&M.active?(Ce=e.tabindex)!=null?Ce:n.props.tabindex:-1;return T("div",{ref:Be=>O(Be,je),class:[a.e("item"),a.is(n.props.tabPosition),a.is("active",M.active),a.is("disabled",Pe),a.is("closable",ot),a.is("focus",p.value)],id:`tab-${je}`,key:`tab-${xe}`,"aria-controls":`pane-${je}`,role:"tab","aria-selected":M.active,tabindex:ft,onFocus:()=>J(),onBlur:()=>N(),onClick:Be=>{N(),l("tabClick",M,je,Be)},onKeydown:Be=>{const wt=Ot(Be);ot&&(wt===ge.delete||wt===ge.backspace)&&l("tabRemove",M,Be)}},[yt,bt])});return S.value,T("div",{ref:i,class:[a.e("nav-wrap"),a.is("scrollable",!!v.value),a.is(n.props.tabPosition)]},[k,T("div",{class:a.e("nav-scroll"),ref:o},[e.panes.length>0?T("div",{class:[a.e("nav"),a.is(n.props.tabPosition),a.is("stretch",e.stretch&&["top","bottom"].includes(n.props.tabPosition))],ref:r,style:x.value,role:"tablist",onKeydown:ue,onWheel:F},[e.type?null:T(gu,{ref:f,tabs:[...e.panes],tabRefs:c.value},null),z]):null])])}}}),Cu=Ue({type:{type:String,values:["card","border-card",""],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},defaultValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:$e(Function),default:()=>!0},stretch:Boolean,tabindex:{type:[String,Number],default:0}}),Rl=e=>Se(e)||ut(e),Su={[vl]:e=>Rl(e),tabClick:(e,t)=>t instanceof Event,tabChange:e=>Rl(e),edit:(e,t)=>["remove","add"].includes(t),tabRemove:e=>Rl(e),tabAdd:()=>!0},_u=te({name:"ElTabs",props:Cu,emits:Su,setup(e,{emit:t,slots:l,expose:n}){var a;const s=re("tabs"),u=I(()=>["left","right"].includes(e.tabPosition)),{children:o,addChild:r,removeChild:i,ChildrenSorter:c}=Ks(Ee(),"ElTabPane"),f=w(),v=w((a=Re(e.modelValue)?e.defaultValue:e.modelValue)!=null?a:"0"),d=async(x,h=!1)=>{var g,E,C,_;if(!(v.value===x||Re(x)))try{let L;if(e.beforeLeave){const F=e.beforeLeave(x,v.value);L=F instanceof Promise?await F:F}else L=!0;if(L!==!1){const F=(g=o.value.find(V=>V.paneName===v.value))==null?void 0:g.isFocusInsidePane();v.value=x,h&&(t(vl,x),t("tabChange",x)),(C=(E=f.value)==null?void 0:E.removeFocus)==null||C.call(E),F&&((_=f.value)==null||_.focusActiveTab())}}catch{}},p=(x,h,g)=>{x.props.disabled||(t("tabClick",x,g),d(h,!0))},m=(x,h)=>{x.props.disabled||Re(x.props.name)||(h.stopPropagation(),t("edit",x.props.name,"remove"),t("tabRemove",x.props.name))},S=()=>{t("edit",void 0,"add"),t("tabAdd")},P=x=>{const h=Ot(x);[ge.enter,ge.numpadEnter].includes(h)&&S()},R=x=>{const h=x.el.firstChild,g=["bottom","right"].includes(e.tabPosition)?x.children[0].el:x.children[1].el;h!==g&&h.before(g)};return be(()=>e.modelValue,x=>d(x)),be(v,async()=>{var x;await Fe(),(x=f.value)==null||x.scrollToActiveTab()}),Rt(pl,{props:e,currentName:v,registerPane:r,unregisterPane:i,nav$:f}),n({currentName:v,get tabNavRef(){return bo(f.value,["scheduleRender"])}}),()=>{const x=l["add-icon"],h=e.editable||e.addable?T("div",{class:[s.e("new-tab"),u.value&&s.e("new-tab-vertical")],tabindex:e.tabindex,onClick:S,onKeydown:P},[x?ce(l,"add-icon"):T(Ke,{class:s.is("icon-plus")},{default:()=>[T(co,null,null)]})]):null,g=()=>T(wu,{ref:f,currentName:v.value,editable:e.editable,type:e.type,panes:o.value,stretch:e.stretch,onTabClick:p,onTabRemove:m},null),E=T("div",{class:[s.e("header"),u.value&&s.e("header-vertical"),s.is(e.tabPosition)]},[T(c,null,{default:g,$stable:!0}),h]),C=T("div",{class:s.e("content")},[ce(l,"default")]);return T("div",{class:[s.b(),s.m(e.tabPosition),{[s.m("card")]:e.type==="card",[s.m("border-card")]:e.type==="border-card"}],onVnodeMounted:R,onVnodeUpdated:R},[C,E])}}});var Eu=_u;const xu=Ue({label:{type:String,default:""},name:{type:[String,Number]},closable:{type:Boolean,default:void 0},disabled:Boolean,lazy:Boolean}),Aa="ElTabPane",ku=te({name:Aa}),Nu=te({...ku,props:xu,setup(e){const t=e,l=Ee(),n=Ql(),a=ke(pl);a||nt(Aa,"usage: ");const s=re("tab-pane"),u=w(),o=w(),r=I(()=>{var m;return(m=t.closable)!=null?m:a.props.closable}),i=gn(()=>{var m;return a.currentName.value===((m=t.name)!=null?m:o.value)}),c=w(i.value),f=I(()=>{var m;return(m=t.name)!=null?m:o.value}),v=gn(()=>!t.lazy||c.value||i.value),d=()=>{var m;return(m=u.value)==null?void 0:m.contains(document.activeElement)};be(i,m=>{m&&(c.value=!0)});const p=lt({uid:l.uid,getVnode:()=>l.vnode,slots:n,props:t,paneName:f,active:i,index:o,isClosable:r,isFocusInsidePane:d});return a.registerPane(p),at(()=>{a.unregisterPane(p)}),Jo(()=>{var m;n.label&&((m=a.nav$.value)==null||m.scheduleRender())}),(m,S)=>b(v)?Ie((H(),Z("div",{key:0,id:`pane-${b(f)}`,ref_key:"paneRef",ref:u,class:Q(b(s).b()),role:"tabpanel","aria-hidden":!b(i),"aria-labelledby":`tab-${b(f)}`},[ce(m.$slots,"default")],10,["id","aria-hidden","aria-labelledby"])),[[ht,b(i)]]):he("v-if",!0)}});var Ia=Ne(Nu,[["__file","tab-pane.vue"]]);const Tu=ct(Eu,{TabPane:Ia}),Mu=Ze(Ia);function Ru(e,t){let l;const n=w(!1),a=lt({...e,originalPosition:"",originalOverflow:"",visible:!1});function s(d){a.text=d}function u(){const d=a.parent,p=v.ns;if(!d.vLoadingAddClassList){let m=d.getAttribute("loading-number");m=Number.parseInt(m)-1,m?d.setAttribute("loading-number",m.toString()):(De(d,p.bm("parent","relative")),d.removeAttribute("loading-number")),De(d,p.bm("parent","hidden"))}o(),f.unmount()}function o(){var d,p;(p=(d=v.$el)==null?void 0:d.parentNode)==null||p.removeChild(v.$el)}function r(){var d;e.beforeClose&&!e.beforeClose()||(n.value=!0,clearTimeout(l),l=setTimeout(i,400),a.visible=!1,(d=e.closed)==null||d.call(e))}function i(){if(!n.value)return;const d=a.parent;n.value=!1,d.vLoadingAddClassList=void 0,u()}const c=te({name:"ElLoading",setup(d,{expose:p}){const{ns:m,zIndex:S}=fo("loading");return p({ns:m,zIndex:S}),()=>{const P=a.spinner||a.svg,R=Y("svg",{class:"circular",viewBox:a.svgViewBox?a.svgViewBox:"0 0 50 50",...P?{innerHTML:P}:{}},[Y("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),x=a.text?Y("p",{class:m.b("text")},[a.text]):void 0;return Y(cl,{name:m.b("fade"),onAfterLeave:i},{default:A(()=>[Ie(T("div",{style:{backgroundColor:a.background||""},class:[m.b("mask"),a.customClass,m.is("fullscreen",a.fullscreen)]},[Y("div",{class:m.b("spinner")},[R,x])]),[[ht,a.visible]])])})}}}),f=Qo(c);Object.assign(f._context,t??{});const v=f.mount(document.createElement("div"));return{...Yn(a),setText:s,removeElLoadingChild:o,close:r,handleAfterLeave:i,vm:v,get $el(){return v.$el}}}let Jt;const rn=function(e={},t){if(!dt)return;const l=Ou(e);if(l.fullscreen&&Jt)return Jt;const n=Ru({...l,closed:()=>{var s;(s=l.closed)==null||s.call(l),l.fullscreen&&(Jt=void 0)}},t??rn._context);$u(l,l.parent,n),An(l,l.parent,n),l.parent.vLoadingAddClassList=()=>An(l,l.parent,n);let a=l.parent.getAttribute("loading-number");return a?a=`${Number.parseInt(a)+1}`:a="1",l.parent.setAttribute("loading-number",a),l.parent.appendChild(n.$el),Fe(()=>n.visible.value=l.visible),l.fullscreen&&(Jt=n),n},Ou=e=>{var t,l,n,a;let s;return Se(e.target)?s=(t=document.querySelector(e.target))!=null?t:document.body:s=e.target||document.body,{parent:s===document.body||e.body?document.body:s,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:s===document.body&&((l=e.fullscreen)!=null?l:!0),lock:(n=e.lock)!=null?n:!1,customClass:e.customClass||"",visible:(a=e.visible)!=null?a:!0,beforeClose:e.beforeClose,closed:e.closed,target:s}},$u=async(e,t,l)=>{const{nextZIndex:n}=l.vm.zIndex||l.vm._.exposed.zIndex,a={};if(e.fullscreen)l.originalPosition.value=Ft(document.body,"position"),l.originalOverflow.value=Ft(document.body,"overflow"),a.zIndex=n();else if(e.parent===document.body){l.originalPosition.value=Ft(document.body,"position"),await Fe();for(const s of["top","left"]){const u=s==="top"?"scrollTop":"scrollLeft";a[s]=`${e.target.getBoundingClientRect()[s]+document.body[u]+document.documentElement[u]-Number.parseInt(Ft(document.body,`margin-${s}`),10)}px`}for(const s of["height","width"])a[s]=`${e.target.getBoundingClientRect()[s]}px`}else l.originalPosition.value=Ft(t,"position");for(const[s,u]of Object.entries(a))l.$el.style[s]=u},An=(e,t,l)=>{const n=l.vm.ns||l.vm._.exposed.ns;["absolute","fixed","sticky"].includes(l.originalPosition.value)?De(t,n.bm("parent","relative")):Qe(t,n.bm("parent","relative")),e.fullscreen&&e.lock?Qe(t,n.bm("parent","hidden")):De(t,n.bm("parent","hidden"))};rn._context=null;const Bt=Symbol("ElLoading"),pt=e=>`element-loading-${Zo(e)}`,In=(e,t)=>{var l,n,a,s;const u=t.instance,o=d=>gt(t.value)?t.value[d]:void 0,r=d=>{const p=Se(d)&&u?.[d]||d;return w(p)},i=d=>r(o(d)||e.getAttribute(pt(d))),c=(l=o("fullscreen"))!=null?l:t.modifiers.fullscreen,f={text:i("text"),svg:i("svg"),svgViewBox:i("svgViewBox"),spinner:i("spinner"),background:i("background"),customClass:i("customClass"),fullscreen:c,target:(n=o("target"))!=null?n:c?void 0:e,body:(a=o("body"))!=null?a:t.modifiers.body,lock:(s=o("lock"))!=null?s:t.modifiers.lock},v=rn(f);v._context=un._context,e[Bt]={options:f,instance:v}},Pu=(e,t)=>{for(const l of Object.keys(e))Xn(e[l])&&(e[l].value=t[l])},un={mounted(e,t){t.value&&In(e,t)},updated(e,t){const l=e[Bt];if(!t.value){l?.instance.close(),e[Bt]=null;return}l?Pu(l.options,gt(t.value)?t.value:{text:e.getAttribute(pt("text")),svg:e.getAttribute(pt("svg")),svgViewBox:e.getAttribute(pt("svgViewBox")),spinner:e.getAttribute(pt("spinner")),background:e.getAttribute(pt("background")),customClass:e.getAttribute(pt("customClass"))}):In(e,t)},unmounted(e){var t;(t=e[Bt])==null||t.instance.close(),e[Bt]=null}};un._context=null;async function Lu(){const{data:e}=await fl.get("/announcements/active");return e}async function Au(e){const{data:t}=await fl.post(`/announcements/${e}/dismiss`,{});return t}async function Iu(e){const{data:t}=await fl.post("/feedback",e);return t}async function Fu(){const{data:e}=await fl.get("/feedback");return e}function Bu(e){if(!e||typeof e!="object")throw new Error("Passkey参数无效");return e.publicKey&&typeof e.publicKey=="object"?e.publicKey:e}function Ol(e){const t=String(e||""),l="=".repeat((4-t.length%4)%4),n=(t+l).replace(/-/g,"+").replace(/_/g,"/"),a=window.atob(n),s=new Uint8Array(a.length);for(let u=0;u({...n,id:Ol(n.id)}))),l}function Wu(e){if(!e)return null;const t=e.response||{},l={id:e.id,rawId:Et(e.rawId),type:e.type,authenticatorAttachment:e.authenticatorAttachment||void 0,response:{}};return t.clientDataJSON&&(l.response.clientDataJSON=Et(t.clientDataJSON)),t.attestationObject&&(l.response.attestationObject=Et(t.attestationObject)),t.authenticatorData&&(l.response.authenticatorData=Et(t.authenticatorData)),t.signature&&(l.response.signature=Et(t.signature)),t.userHandle?l.response.userHandle=Et(t.userHandle):l.response.userHandle=null,typeof t.getTransports=="function"&&(l.response.transports=t.getTransports()||[]),l}function zu(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}function Vu(){const e=String(window?.navigator?.userAgent||"");return/MiuiBrowser|XiaoMi\/MiuiBrowser/i.test(e)}function Ku(e,t="Passkey操作"){const l=String(e?.name||"").trim(),n=String(e?.message||"").trim();return l==="NotAllowedError"?`${t}未完成(可能已取消、超时或设备未响应)`:l==="NotReadableError"?/credential manager/i.test(n)&&Vu()?"当前小米浏览器与系统凭据管理器兼容性较差,请改用系统 Chrome 或 Edge 后重试。":/credential manager/i.test(n)?"系统凭据管理器返回异常,请确认已设置系统锁屏并改用系统 Chrome/Edge 后重试。":n||`${t}失败(设备读取异常)`:l==="SecurityError"?"当前环境安全策略不满足 Passkey 要求,请确认使用 HTTPS 且证书有效。":n||`${t}失败`}async function Du(e){const t=Hu(e),l=await navigator.credentials.create({publicKey:t});return Wu(l)}const Uu={class:"header-left"},ju={class:"header-right"},qu={class:"user-meta"},Yu={class:"user-name"},Xu={key:2,class:"vip-warn"},Gu={class:"drawer-user"},Ju={class:"user-name"},Qu={class:"drawer-actions"},Zu={class:"announcement-body"},ed={class:"announcement-content"},td={key:0,class:"announcement-image"},ld=["src"],nd={class:"feedback-title"},ad={class:"feedback-title-text"},od={class:"feedback-time app-muted"},sd={class:"feedback-body"},rd={class:"feedback-section"},id={class:"feedback-text"},ud={key:0,class:"feedback-section"},dd={class:"feedback-text"},cd={class:"settings-section"},fd={class:"email-row"},vd={class:"email-value"},pd={class:"notify-row"},md={class:"settings-section"},hd={class:"settings-section"},gd={class:"settings-section"},bd={class:"social-binding-list"},yd={class:"social-binding-main"},wd={class:"social-binding-title"},Cd={key:0,class:"app-muted social-binding-meta"},Sd={class:"settings-section"},_d={class:"settings-section"},Ed={key:0,class:"vip-info"},xd={class:"vip-line"},kd={class:"vip-line"},Nd={key:1,class:"vip-info"},Td=24e4,Fn="zsglpt_social_settings_bind_token",Md={__name:"AppLayout",setup(e){const t=es(),l=ts(),n=yo(),a=w(!1),s=w(!1);let u;const o=w(!1),r=w(null),i=w(!1),c=(()=>{try{const $=window.performance?.timeOrigin;if(typeof $=="number"&&Number.isFinite($))return String($)}catch{}return String(Date.now())})();function f($){return`announcement_closed_once_${$}`}function v($){return`announcement_closed_${$}`}function d($){try{return window.sessionStorage.getItem(f($))===c}catch{return!1}}function p($){try{return window.localStorage.getItem(v($))==="1"}catch{return!1}}function m($){try{window.sessionStorage.setItem(f($),c)}catch{}}function S($){try{window.localStorage.setItem(v($),"1")}catch{}}const P=w(!1),R=w("new"),x=w(!1),h=w(!1),g=w([]),E=lt({title:"",description:"",contact:""}),C=w(!1),_=w("email"),L=w(!1),F=w(!1),V=lt({email:"",email_verified:!1}),B=w(""),G=w(!1),X=w(!0),ue=w(!1),J=lt({current_password:"",new_password:"",confirm_password:""}),N=w(!1),O=w(!1),W=w(""),k=w(!1),z=w(!1),M=w(""),K=w([]),j=w(null),ee=w(0),le=w({enabled:!1,providers:[]}),ve=w([]),Ce=w(!1),xe=w(!1);function Pe(){a.value=!!u?.matches,a.value||(s.value=!1)}Xe(()=>{u=window.matchMedia("(max-width: 768px)"),u.addEventListener?.("change",Pe),Pe(),n.refreshVipInfo().catch(()=>{window.location.href="/login"}),qe()}),at(()=>{u?.removeEventListener?.("change",Pe)});const je=[{path:"/app/accounts",label:"账号管理",icon:vo},{path:"/app/schedules",label:"定时任务",icon:po},{path:"/app/screenshots",label:"截图管理",icon:mo}],ot=I(()=>t.path);async function bt($){await l.push($),s.value=!1}async function yt(){let $=!1;try{await Gt.confirm("确定退出登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"}),$=!0}catch(y){const me=String(y||"").toLowerCase();if(me==="cancel"||me==="close")return;try{$=window.confirm("确定退出登录吗?")}catch{$=!1}}$&&(await n.logout(),window.location.href="/login")}function ft(){R.value="new",E.title="",E.description="",E.contact="",P.value=!0}async function Be(){h.value=!0;try{const $=await Fu();g.value=Array.isArray($)?$:[]}catch{g.value=[]}finally{h.value=!1}}function wt($){return $==="replied"?"已回复":$==="closed"?"已关闭":"待处理"}function ml($){return $==="replied"?"success":$==="closed"?"info":"warning"}async function hl(){const $=E.title.trim(),y=E.description.trim(),me=E.contact.trim();if(!$||!y){de.error("标题和描述不能为空");return}x.value=!0;try{const He=await Iu({title:$,description:y,contact:me});de.success(He?.message||"反馈提交成功"),P.value=!1,E.title="",E.description="",E.contact=""}catch(He){const et=He?.response?.data;de.error(et?.error||"提交失败")}finally{x.value=!1}}async function jt(){C.value=!0,_.value="email",await gl()}async function gl(){await Promise.all([Yt(),Cl(),Sl(),Xt(),qt()])}function bl(){const $=new URL(window.location.href);return $.pathname="/social-bind-callback",$.search="",$.hash="",$.toString()}async function qt(){Ce.value=!0;try{const[$,y]=await Promise.all([rs(),Sn()]);le.value={enabled:!!$?.enabled,providers:Array.isArray($?.providers)?$.providers:[]},ve.value=Array.isArray(y?.items)?y.items:[],await yl()}catch{le.value={enabled:!1,providers:[]},ve.value=[]}finally{Ce.value=!1}}async function yl(){let $="";try{$=window.sessionStorage.getItem(Fn)||""}catch{$=""}if(!(!$||xe.value)){xe.value=!0;try{await Cs({bind_token:$}),window.sessionStorage.removeItem(Fn),de.success("快捷登录已绑定");const y=await Sn();ve.value=Array.isArray(y?.items)?y.items:[]}catch(y){const me=y?.response?.data;de.error(me?.error||"快捷登录绑定失败")}finally{xe.value=!1}}}async function wl($){try{await Gt.confirm(`确定解绑${$?.provider_label||"快捷登录"}吗?`,"解绑快捷登录",{confirmButtonText:"解绑",cancelButtonText:"取消",type:"warning"})}catch{return}try{await ms($.provider),de.success("已解绑"),await qt()}catch(y){const me=y?.response?.data;de.error(me?.error||"解绑失败")}}async function Yt(){L.value=!0;try{const $=await gs();V.email=$?.email||"",V.email_verified=!!$?.email_verified,B.value=V.email||""}catch{V.email="",V.email_verified=!1,B.value=""}finally{L.value=!1}}async function Cl(){G.value=!0;try{const $=await ys();X.value=!!$?.enabled}catch{X.value=!0}finally{G.value=!1}}async function Sl(){N.value=!0;try{const $=await ws();W.value=$?.kdocs_unit||""}catch{W.value=""}finally{N.value=!1}}async function dn(){O.value=!0;try{await hs({kdocs_unit:W.value.trim()}),de.success("已更新表格县区设置")}catch{}finally{O.value=!1}}async function Xt(){k.value=!0;try{const $=await bs();K.value=Array.isArray($?.items)?$.items:[],K.value.length<3?await ne():(j.value=null,ee.value=0)}catch{K.value=[],j.value=null,ee.value=0}finally{k.value=!1}}function q(){return!j.value||Date.now()-Number(ee.value||0)>Td?null:j.value}async function ne(){try{const $=await Cn({});j.value=$,ee.value=Date.now()}catch{j.value=null,ee.value=0}}async function oe(){if(!zu()){de.error("当前浏览器或环境不支持Passkey(需 HTTPS)");return}if(K.value.length>=3){de.error("最多可绑定3台设备");return}z.value=!0;try{let $=q();$||($=await Cn({}));const y=await Du($?.publicKey||{});await fs({credential:y,device_name:M.value.trim()}),j.value=null,ee.value=0,M.value="",de.success("Passkey设备添加成功"),await Xt()}catch($){try{await vs({stage:"register",source:"user-settings",name:$?.name||"",message:$?.message||"",code:$?.code||"",user_agent:navigator.userAgent||""})}catch{}j.value=null,ee.value=0,await ne();const me=$?.response?.data?.error||Ku($,"Passkey注册");de.error(me)}finally{z.value=!1}}async function ae($){try{await Gt.confirm(`确定删除设备「${$?.device_name||"未命名设备"}」吗?`,"删除Passkey设备",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await ps($.id),de.success("设备已删除"),await Xt()}catch(y){const me=y?.response?.data;de.error(me?.error||"删除失败")}}async function fe(){const $=B.value.trim().toLowerCase();if(!$){de.error("请输入邮箱地址");return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($)){de.error("邮箱格式不正确");return}F.value=!0;try{const me=await us({email:$});de.success(me?.message||"验证邮件已发送"),V.email=$,V.email_verified=!1}catch(me){const He=me?.response?.data;de.error(He?.error||"绑定失败")}finally{F.value=!1}}async function pe(){try{await Gt.confirm("确定要解绑当前邮箱吗?","解绑邮箱",{confirmButtonText:"解绑",cancelButtonText:"取消",type:"warning"})}catch{return}try{const $=await is();if($?.success){de.success($?.message||"邮箱已解绑"),await Yt();return}de.error($?.error||"解绑失败")}catch($){const y=$?.response?.data;de.error(y?.error||"解绑失败")}}async function ye($){const y=X.value;X.value=!!$,G.value=!0;try{const me=await ds({enabled:!!$});if(me?.success){de.success("已更新");return}X.value=y,de.error(me?.error||"更新失败")}catch(me){X.value=y;const He=me?.response?.data;de.error(He?.error||"更新失败")}finally{G.value=!1}}async function ze(){const $=J.current_password,y=J.new_password,me=J.confirm_password;if(!$||!y||!me){de.error("请填写完整信息");return}const He=_s(y);if(!He.ok){de.error(He.message);return}if(y!==me){de.error("两次输入的新密码不一致");return}ue.value=!0;try{const et=await cs({current_password:$,new_password:y});if(et?.success){de.success("密码修改成功"),J.current_password="",J.new_password="",J.confirm_password="";return}de.error(et?.error||"修改失败")}catch(et){const _l=et?.response?.data;de.error(_l?.error||"修改失败")}finally{ue.value=!1}}async function qe(){i.value=!0;try{const y=(await Lu())?.announcement;if(!y?.id||p(y.id)||d(y.id))return;r.value=y,o.value=!0}catch{}finally{i.value=!1}}function Ct(){const $=r.value;$?.id&&m($.id),o.value=!1}async function St(){const $=r.value;if(!$?.id){o.value=!1;return}S($.id);try{(await Au($.id))?.success&&de.success("已永久关闭")}catch{}finally{o.value=!1}}return($,y)=>{const me=Ke,He=ei,et=Zr,_l=wr,_e=qo,vt=xo,Fa=Cr,Ba=We("RouterView"),Ha=Sr,cn=yr,Wa=Lr,El=Do,tt=Fo,Je=Po,Lt=$o,st=Mu,za=Ao,xl=ko,Va=rr,Ka=sr,fn=Tu,_t=Lo,Da=Nr,Ua=wo,At=vu,ja=fu,It=un;return H(),se(cn,{class:"layout-root"},{default:A(()=>[a.value?he("",!0):(H(),se(_l,{key:0,width:"220px",class:"layout-aside"},{default:A(()=>[y[20]||(y[20]=D("div",{class:"brand"},[D("div",{class:"brand-title"},"知识管理平台"),D("div",{class:"brand-sub app-muted"},"用户中心")],-1)),T(et,{"default-active":ot.value,class:"aside-menu",router:"",onSelect:bt},{default:A(()=>[(H(),Z(Ae,null,Nt(je,U=>T(He,{key:U.path,index:U.path},{default:A(()=>[T(me,null,{default:A(()=>[(H(),se(Ll(U.icon)))]),_:2},1024),D("span",null,we(U.label),1)]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),T(cn,null,{default:A(()=>[T(Fa,{class:"layout-header"},{default:A(()=>[D("div",Uu,[a.value?(H(),se(_e,{key:0,text:"",class:"header-menu-btn",onClick:y[0]||(y[0]=U=>s.value=!0)},{default:A(()=>[...y[21]||(y[21]=[ie(" 菜单 ",-1)])]),_:1})):he("",!0),y[22]||(y[22]=D("div",{class:"header-title"},"用户控制台",-1))]),D("div",ju,[D("div",qu,[b(n).isVip?(H(),se(vt,{key:0,type:"success",size:"small",effect:"light"},{default:A(()=>[...y[23]||(y[23]=[ie("VIP",-1)])]),_:1})):(H(),se(vt,{key:1,type:"info",size:"small",effect:"light"},{default:A(()=>[...y[24]||(y[24]=[ie("普通",-1)])]),_:1})),D("span",Yu,we(b(n).username||"用户"),1),b(n).isVip&&b(n).vipDaysLeft<=7&&b(n).vipDaysLeft>0?(H(),Z("span",Xu," ("+we(b(n).vipDaysLeft)+"天后到期) ",1)):he("",!0)]),T(_e,{text:"",type:"primary",onClick:ft},{default:A(()=>[...y[25]||(y[25]=[ie("反馈",-1)])]),_:1}),T(_e,{text:"",onClick:jt},{default:A(()=>[...y[26]||(y[26]=[ie("设置",-1)])]),_:1}),T(_e,{type:"primary",plain:"",onClick:yt},{default:A(()=>[...y[27]||(y[27]=[ie("退出",-1)])]),_:1})])]),_:1}),T(Ha,{class:"layout-main"},{default:A(()=>[T(Ba)]),_:1})]),_:1}),T(Wa,{modelValue:s.value,"onUpdate:modelValue":y[1]||(y[1]=U=>s.value=U),size:"240px","with-header":!1},{default:A(()=>[y[33]||(y[33]=D("div",{class:"drawer-brand"},[D("div",{class:"brand-title"},"知识管理平台"),D("div",{class:"brand-sub app-muted"},"用户中心")],-1)),D("div",Gu,[b(n).isVip?(H(),se(vt,{key:0,type:"success",size:"small",effect:"light"},{default:A(()=>[...y[28]||(y[28]=[ie("VIP",-1)])]),_:1})):(H(),se(vt,{key:1,type:"info",size:"small",effect:"light"},{default:A(()=>[...y[29]||(y[29]=[ie("普通",-1)])]),_:1})),D("span",Ju,we(b(n).username||"用户"),1)]),T(et,{"default-active":ot.value,class:"aside-menu",router:"",onSelect:bt},{default:A(()=>[(H(),Z(Ae,null,Nt(je,U=>T(He,{key:U.path,index:U.path},{default:A(()=>[T(me,null,{default:A(()=>[(H(),se(Ll(U.icon)))]),_:2},1024),D("span",null,we(U.label),1)]),_:2},1032,["index"])),64))]),_:1},8,["default-active"]),D("div",Qu,[T(_e,{text:"",type:"primary",style:{width:"100%"},onClick:ft},{default:A(()=>[...y[30]||(y[30]=[ie("问题反馈",-1)])]),_:1}),T(_e,{text:"",style:{width:"100%"},onClick:jt},{default:A(()=>[...y[31]||(y[31]=[ie("个人设置",-1)])]),_:1}),T(_e,{type:"primary",plain:"",style:{width:"100%"},onClick:yt},{default:A(()=>[...y[32]||(y[32]=[ie("退出登录",-1)])]),_:1})])]),_:1},8,["modelValue"]),T(El,{modelValue:o.value,"onUpdate:modelValue":y[2]||(y[2]=U=>o.value=U),width:"min(560px, 92vw)",title:r.value?.title||"系统公告"},{footer:A(()=>[T(_e,{onClick:Ct},{default:A(()=>[...y[34]||(y[34]=[ie("当次关闭",-1)])]),_:1}),T(_e,{type:"primary",onClick:St},{default:A(()=>[...y[35]||(y[35]=[ie("永久关闭",-1)])]),_:1})]),default:A(()=>[Ie((H(),Z("div",Zu,[D("div",ed,we(r.value?.content||""),1),r.value?.image_url?(H(),Z("div",td,[D("img",{src:r.value.image_url,alt:"公告图片",loading:"lazy"},null,8,ld)])):he("",!0)])),[[It,i.value]])]),_:1},8,["modelValue","title"]),T(El,{modelValue:P.value,"onUpdate:modelValue":y[9]||(y[9]=U=>P.value=U),title:"问题反馈",width:"min(720px, 92vw)"},{footer:A(()=>[T(_e,{onClick:y[8]||(y[8]=U=>P.value=!1)},{default:A(()=>[...y[38]||(y[38]=[ie("关闭",-1)])]),_:1}),R.value==="list"?(H(),se(_e,{key:0,onClick:Be},{default:A(()=>[...y[39]||(y[39]=[ie("刷新",-1)])]),_:1})):he("",!0),R.value==="new"?(H(),se(_e,{key:1,type:"primary",loading:x.value,onClick:hl},{default:A(()=>[...y[40]||(y[40]=[ie("提交",-1)])]),_:1},8,["loading"])):he("",!0)]),default:A(()=>[T(fn,{modelValue:R.value,"onUpdate:modelValue":y[6]||(y[6]=U=>R.value=U),onTabChange:y[7]||(y[7]=U=>U==="list"&&Be())},{default:A(()=>[T(st,{label:"提交反馈",name:"new"},{default:A(()=>[T(Lt,{"label-position":"top"},{default:A(()=>[T(Je,{label:"标题"},{default:A(()=>[T(tt,{modelValue:E.title,"onUpdate:modelValue":y[3]||(y[3]=U=>E.title=U),placeholder:"简要描述问题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),T(Je,{label:"详细描述"},{default:A(()=>[T(tt,{modelValue:E.description,"onUpdate:modelValue":y[4]||(y[4]=U=>E.description=U),type:"textarea",rows:5,placeholder:"请详细描述您遇到的问题",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),T(Je,{label:"联系方式(可选)"},{default:A(()=>[T(tt,{modelValue:E.contact,"onUpdate:modelValue":y[5]||(y[5]=U=>E.contact=U),placeholder:"方便我们联系您"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),T(st,{label:"我的反馈",name:"list"},{default:A(()=>[h.value?(H(),se(za,{key:0,rows:6,animated:""})):(H(),Z(Ae,{key:1},[g.value.length===0?(H(),se(xl,{key:0,description:"暂无反馈"})):(H(),se(Ka,{key:1,accordion:""},{default:A(()=>[(H(!0),Z(Ae,null,Nt(g.value,U=>(H(),se(Va,{key:U.id,name:String(U.id)},{title:A(()=>[D("div",nd,[D("span",ad,we(U.title),1),T(vt,{size:"small",effect:"light",type:ml(U.status)},{default:A(()=>[ie(we(wt(U.status)),1)]),_:2},1032,["type"]),D("span",od,we(U.created_at||""),1)])]),default:A(()=>[D("div",sd,[D("div",rd,[y[36]||(y[36]=D("div",{class:"feedback-label app-muted"},"描述",-1)),D("div",id,we(U.description),1)]),U.admin_reply?(H(),Z("div",ud,[y[37]||(y[37]=D("div",{class:"feedback-label app-muted"},"管理员回复",-1)),D("div",dd,we(U.admin_reply),1)])):he("",!0)])]),_:2},1032,["name"]))),128))]),_:1}))],64))]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),T(El,{modelValue:C.value,"onUpdate:modelValue":y[19]||(y[19]=U=>C.value=U),title:"个人设置",width:"min(720px, 92vw)"},{footer:A(()=>[T(_e,{onClick:y[18]||(y[18]=U=>C.value=!1)},{default:A(()=>[...y[54]||(y[54]=[ie("关闭",-1)])]),_:1})]),default:A(()=>[T(fn,{modelValue:_.value,"onUpdate:modelValue":y[17]||(y[17]=U=>_.value=U)},{default:A(()=>[T(st,{label:"邮箱绑定",name:"email"},{default:A(()=>[Ie((H(),Z("div",cd,[V.email&&V.email_verified?(H(),se(_t,{key:0,type:"success",closable:!1,title:"邮箱已绑定并验证","show-icon":"",class:"settings-alert"},{default:A(()=>[D("div",fd,[D("div",vd,we(V.email),1),T(_e,{type:"danger",text:"",onClick:pe},{default:A(()=>[...y[41]||(y[41]=[ie("解绑",-1)])]),_:1})])]),_:1})):V.email?(H(),se(_t,{key:1,type:"warning",closable:!1,title:"邮箱待验证:请查收验证邮件(含垃圾箱)","show-icon":"",class:"settings-alert"})):he("",!0),T(Lt,{"label-position":"top"},{default:A(()=>[T(Je,{label:"邮箱地址"},{default:A(()=>[T(tt,{modelValue:B.value,"onUpdate:modelValue":y[10]||(y[10]=U=>B.value=U),placeholder:"name@example.com"},null,8,["modelValue"])]),_:1}),T(_e,{type:"primary",loading:F.value,onClick:fe},{default:A(()=>[...y[42]||(y[42]=[ie("发送验证邮件",-1)])]),_:1},8,["loading"])]),_:1}),T(Da),D("div",pd,[y[43]||(y[43]=D("div",null,[D("div",{class:"notify-title"},"任务完成通知"),D("div",{class:"app-muted notify-desc"},"定时任务完成后发送邮件")],-1)),T(Ua,{"model-value":X.value,disabled:!V.email_verified||G.value,"inline-prompt":"","active-text":"开","inactive-text":"关",onChange:ye},null,8,["model-value","disabled"])]),V.email_verified?he("",!0):(H(),se(_t,{key:2,type:"info",closable:!1,title:"绑定并验证邮箱后可开启邮件通知。","show-icon":"",class:"settings-hint"}))])),[[It,L.value]])]),_:1}),T(st,{label:"修改密码",name:"password"},{default:A(()=>[D("div",md,[T(Lt,{"label-position":"top"},{default:A(()=>[T(Je,{label:"当前密码"},{default:A(()=>[T(tt,{modelValue:J.current_password,"onUpdate:modelValue":y[11]||(y[11]=U=>J.current_password=U),type:"password","show-password":"",autocomplete:"current-password"},null,8,["modelValue"])]),_:1}),T(Je,{label:"新密码(至少8位且包含字母和数字)"},{default:A(()=>[T(tt,{modelValue:J.new_password,"onUpdate:modelValue":y[12]||(y[12]=U=>J.new_password=U),type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),T(Je,{label:"确认新密码"},{default:A(()=>[T(tt,{modelValue:J.confirm_password,"onUpdate:modelValue":y[13]||(y[13]=U=>J.confirm_password=U),type:"password","show-password":"",autocomplete:"new-password",onKeyup:Un(ze,["enter"])},null,8,["modelValue"])]),_:1}),T(_e,{type:"primary",loading:ue.value,onClick:ze},{default:A(()=>[...y[44]||(y[44]=[ie("确认修改",-1)])]),_:1},8,["loading"])]),_:1})])]),_:1}),T(st,{label:"Passkey设备",name:"passkeys"},{default:A(()=>[Ie((H(),Z("div",hd,[T(_t,{type:"info",closable:!1,title:"最多可绑定3台设备,用于无密码登录。","show-icon":"",class:"settings-alert"}),T(Lt,{inline:""},{default:A(()=>[T(Je,{label:"设备备注"},{default:A(()=>[T(tt,{modelValue:M.value,"onUpdate:modelValue":y[14]||(y[14]=U=>M.value=U),placeholder:"例如:我的iPhone / 办公Mac",maxlength:"40","show-word-limit":""},null,8,["modelValue"])]),_:1}),T(Je,null,{default:A(()=>[T(_e,{type:"primary",loading:z.value,onClick:oe},{default:A(()=>[...y[45]||(y[45]=[ie(" 添加Passkey设备 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),K.value.length===0?(H(),se(xl,{key:0,description:"暂无Passkey设备"})):(H(),se(ja,{key:1,data:K.value,size:"small",style:{width:"100%"}},{default:A(()=>[T(At,{prop:"device_name",label:"设备备注","min-width":"160"}),T(At,{prop:"credential_id_preview",label:"凭据ID","min-width":"180"}),T(At,{prop:"last_used_at",label:"最近使用","min-width":"140"}),T(At,{prop:"created_at",label:"创建时间","min-width":"140"}),T(At,{label:"操作",width:"100",fixed:"right"},{default:A(({row:U})=>[T(_e,{type:"danger",text:"",onClick:qa=>ae(U)},{default:A(()=>[...y[46]||(y[46]=[ie("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])),[[It,k.value]])]),_:1}),T(st,{label:"快捷登录",name:"social"},{default:A(()=>[Ie((H(),Z("div",gd,[le.value.enabled?(H(),Z(Ae,{key:1},[D("div",bd,[(H(!0),Z(Ae,null,Nt(ve.value,U=>(H(),Z("div",{key:U.provider,class:"social-binding-row"},[D("div",yd,[D("div",wd,[ie(we(U.provider_label)+" ",1),U.bound?(H(),se(vt,{key:0,size:"small",type:"success"},{default:A(()=>[...y[47]||(y[47]=[ie("已绑定",-1)])]),_:1})):(H(),se(vt,{key:1,size:"small",type:"info"},{default:A(()=>[...y[48]||(y[48]=[ie("未绑定",-1)])]),_:1}))]),U.bound?(H(),Z("div",Cd,we(U.nickname||"已授权账号"),1)):he("",!0)]),U.bound?(H(),se(_e,{key:0,type:"danger",text:"",onClick:qa=>wl(U)},{default:A(()=>[...y[49]||(y[49]=[ie("解绑",-1)])]),_:1},8,["onClick"])):he("",!0)]))),128))]),T(Ss,{providers:le.value.providers,mode:"bind","redirect-uri":bl(),block:"",onError:y[15]||(y[15]=U=>b(de).error(U))},null,8,["providers","redirect-uri"])],64)):(H(),se(xl,{key:0,description:"暂未启用快捷登录"}))])),[[It,Ce.value||xe.value]])]),_:1}),T(st,{label:"表格上传",name:"kdocs"},{default:A(()=>[Ie((H(),Z("div",Sd,[T(Lt,{"label-position":"top"},{default:A(()=>[T(Je,{label:"县区(可选)"},{default:A(()=>[T(tt,{modelValue:W.value,"onUpdate:modelValue":y[16]||(y[16]=U=>W.value=U),placeholder:"留空使用系统默认县区"},null,8,["modelValue"])]),_:1}),T(_e,{type:"primary",loading:O.value,onClick:dn},{default:A(()=>[...y[50]||(y[50]=[ie("保存",-1)])]),_:1},8,["loading"])]),_:1}),T(_t,{type:"info",closable:!1,title:"自动上传开关在“账号管理”页面设置(测试功能)。","show-icon":"",class:"settings-hint"})])),[[It,N.value]])]),_:1}),T(st,{label:"VIP信息",name:"vip"},{default:A(()=>[D("div",_d,[T(_t,{type:b(n).isVip?"success":"info",closable:!1,title:b(n).isVip?"当前为 VIP 会员":"当前为普通用户","show-icon":"",class:"settings-alert"},null,8,["type","title"]),b(n).isVip?(H(),Z("div",Ed,[D("div",xd,[y[51]||(y[51]=D("span",{class:"app-muted"},"到期时间",-1)),D("span",null,we(b(n).vipExpireTime||"未知"),1)]),D("div",kd,[y[52]||(y[52]=D("span",{class:"app-muted"},"剩余天数",-1)),D("span",null,we(b(n).vipDaysLeft),1)])])):(H(),Z("div",Nd,[...y[53]||(y[53]=[D("div",{class:"app-muted"},"升级方式:请通过“反馈”联系管理员开通。",-1)])]))])]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})}}},Qd=Es(Md,[["__scopeId","data-v-931e2243"]]);export{Qd as default}; diff --git a/static/app/assets/AppLayout-xWeMM3hH.js b/static/app/assets/AppLayout-xWeMM3hH.js deleted file mode 100644 index 2d5182e..0000000 --- a/static/app/assets/AppLayout-xWeMM3hH.js +++ /dev/null @@ -1 +0,0 @@ -import{e as Hl,f as Wl,g as Fa,h as Tn,k as Ba,j as Ha,l as Wa,m as Va,n as _l,o as an,p as za,S as Ka,q as Da,r as ot,s as at,b as ze,t as Re,u as re,v as lt,_ as xe,d as st,x as It,y as ht,z as Ua,A as We,B as Ge,C as ja,D as qa,F as Ya,G as Ft,H as Mn,I as Xe,J as Ot,K as Ve,T as Xa,L as Rn,M as Te,N as on,O as sn,P as Ga,Q as gt,R as On,U as rn,V as Ja,W as Qa,X as Za,Y as eo,Z as to,$ as lo,a0 as no,a1 as un,a2 as ao,a3 as Mt,a4 as oo,a5 as so,a6 as ro,E as io}from"./el-button-DWxIvzz-.js";import{i as uo,E as co,a as Lt,o as fo,u as vo,b as po}from"./user-Bl59IefW.js";import{b as mo,f as $n,d as ho,a as go,u as bo,E as yo,c as Co,e as wo,g as tl,C as So,h as _o,i as Pn,j as nt,k as xo,l as Eo,m as ko,n as No,o as To,p as hl}from"./el-overlay-C_JJBVfE.js";import{c as Mo,k as Ln,d as Ro,e as Oo,f as $o,i as Po,a as Lo,b as Ao,E as Io}from"./el-alert-DB2IQLpH.js";import{b as Fo,C as An,U as ll,m as At,c as Gt,t as Ze,u as Bo,d as $t,g as Ct,e as ve,f as Kt,h as Ho,i as wt,j as Wo,k as Vo,l as zo,n as Ko,o as Do,q as dn,p as nl,E as Uo,a as fe}from"./http-CdvgQxJu.js";import{E as xl,A as le,G as q,H as Dt,i as Ue,I as Vl,J as ye,K as Me,g as S,L as pe,h as I,M as St,N as cn,j as te,o as z,B as ue,n as Q,C as y,c as de,s as A,O as zl,P as jo,T as al,Q as _e,k as D,q as M,x as ce,t as be,D as El,m as In,p as Fn,w as Fe,R as dt,S as Kl,U as De,l as he,z as et,f as Qe,V as Se,F as He,W as $e,X as ct,Y as Jt,Z as qo,_ as bt,$ as Bn,a0 as Be,a1 as fn,a2 as Hn,a3 as Wn,r as Ie,a4 as Pt,a5 as Vn,a6 as zn,a7 as Dl,a8 as Yo,a9 as Xo,d as Go,aa as Jo,y as Qo,u as Zo}from"./vendor-vue-DxN60LNb.js";import{u as es,b as ts,a as ls,c as ns,d as vn,e as as,r as os,f as ss,g as rs,h as is,i as us,j as ds,k as cs}from"./settings-Ddo8isuv.js";import{v as fs}from"./password-7ryi82gE.js";import{_ as vs}from"./style-CEbARg1o.js";import{b as ps,i as ms,d as Qt}from"./isArrayLikeObject-BjIRF-cS.js";import"./vendor-axios-B9ygI19o.js";function hs(e,t,l){if(!Hl(l))return!1;var n=typeof t;return(n=="number"?Wl(l)&&Fa(t,l.length):n=="string"&&t in l)?Tn(l[t],e):!1}function gs(e){return ps(function(t,l){var n=-1,a=l.length,s=a>1?l[a-1]:void 0,u=a>2?l[2]:void 0;for(s=e.length>3&&typeof s=="function"?(a--,s):void 0,u&&hs(l[0],l[1],u)&&(s=a<3?void 0:s,a=1),t=Object(t);++not?window.requestAnimationFrame(e):setTimeout(e,16),ks=e=>ot?window.cancelAnimationFrame(e):clearTimeout(e),Ns=(e,t,l)=>$n(e.subTree).filter(s=>{var u;return Vl(s)&&((u=s.type)==null?void 0:u.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>l[s]).filter(s=>!!s),Ts=(e,t)=>{const l=xl({}),n=xl([]),a=new WeakMap,s=c=>{l.value[c.uid]=c,Dt(l),Ue(()=>{const f=c.getVnode().el,v=f.parentNode;if(!a.has(v)){a.set(v,[]);const d=v.insertBefore.bind(v);v.insertBefore=(p,m)=>(a.get(v).some(P=>p===P||m===P)&&Dt(l),d(p,m))}a.get(v).push(f)})},u=c=>{delete l.value[c.uid],Dt(l);const f=c.getVnode().el,v=f.parentNode,d=a.get(v),p=d.indexOf(f);d.splice(p,1)},o=()=>{n.value=Ns(e,t,l.value)},r=c=>c.render(),i=le({setup(c,{slots:f}){return()=>(o(),f.default?q(r,{render:f.default}):null)}});return{children:n,addChild:s,removeChild:u,ChildrenSorter:i}},pn=e=>at(e)||ye(e)||Me(e),Ms=ze({accordion:Boolean,modelValue:{type:Re([Array,String,Number]),default:()=>At([])},expandIconPosition:{type:Re([String]),default:"right"},beforeCollapse:{type:Re(Function)}}),Rs={[ll]:pn,[An]:pn},Yn=Symbol("collapseContextKey"),Os="ElCollapse",$s=(e,t)=>{const l=S(Gt(e.modelValue)),n=u=>{l.value=u;const o=e.accordion?l.value[0]:l.value;t(ll,o),t(An,o)},a=u=>{if(e.accordion)n([l.value[0]===u?"":u]);else{const o=[...l.value],r=o.indexOf(u);r>-1?o.splice(r,1):o.push(u),n(o)}},s=async u=>{const{beforeCollapse:o}=e;if(!o){a(u);return}const r=o(u);[cn(r),lt(r)].includes(!0)||Ze(Os,"beforeCollapse must return type `Promise` or `boolean`"),cn(r)?r.then(c=>{c!==!1&&a(u)}).catch(c=>{}):r&&a(u)};return pe(()=>e.modelValue,()=>l.value=Gt(e.modelValue),{deep:!0}),St(Yn,{activeNames:l,handleItemClick:s}),{activeNames:l,setActiveNames:n}},Ps=e=>{const t=re("collapse");return{rootKls:I(()=>[t.b(),t.b(`icon-position-${e.expandIconPosition}`)])}},Ls=le({name:"ElCollapse"}),As=le({...Ls,props:Ms,emits:Rs,setup(e,{expose:t,emit:l}){const n=e,{activeNames:a,setActiveNames:s}=$s(n,l),{rootKls:u}=Ps(n);return t({activeNames:a,setActiveNames:s}),(o,r)=>(z(),te("div",{class:Q(y(u))},[ue(o.$slots,"default")],2))}});var Is=xe(As,[["__file","collapse.vue"]]);const Fs=le({name:"ElCollapseTransition"}),Bs=le({...Fs,setup(e){const t=re("collapse-transition"),l=a=>{a.style.maxHeight="",a.style.overflow=a.dataset.oldOverflow,a.style.paddingTop=a.dataset.oldPaddingTop,a.style.paddingBottom=a.dataset.oldPaddingBottom},n={beforeEnter(a){a.dataset||(a.dataset={}),a.dataset.oldPaddingTop=a.style.paddingTop,a.dataset.oldPaddingBottom=a.style.paddingBottom,a.style.height&&(a.dataset.elExistsHeight=a.style.height),a.style.maxHeight=0,a.style.paddingTop=0,a.style.paddingBottom=0},enter(a){requestAnimationFrame(()=>{a.dataset.oldOverflow=a.style.overflow,a.dataset.elExistsHeight?a.style.maxHeight=a.dataset.elExistsHeight:a.scrollHeight!==0?a.style.maxHeight=`${a.scrollHeight}px`:a.style.maxHeight=0,a.style.paddingTop=a.dataset.oldPaddingTop,a.style.paddingBottom=a.dataset.oldPaddingBottom,a.style.overflow="hidden"})},afterEnter(a){a.style.maxHeight="",a.style.overflow=a.dataset.oldOverflow},enterCancelled(a){l(a)},beforeLeave(a){a.dataset||(a.dataset={}),a.dataset.oldPaddingTop=a.style.paddingTop,a.dataset.oldPaddingBottom=a.style.paddingBottom,a.dataset.oldOverflow=a.style.overflow,a.style.maxHeight=`${a.scrollHeight}px`,a.style.overflow="hidden"},leave(a){a.scrollHeight!==0&&(a.style.maxHeight=0,a.style.paddingTop=0,a.style.paddingBottom=0)},afterLeave(a){l(a)},leaveCancelled(a){l(a)}};return(a,s)=>(z(),de(al,zl({name:y(t).b()},jo(n)),{default:A(()=>[ue(a.$slots,"default")]),_:3},16,["name"]))}});var Hs=xe(Bs,[["__file","collapse-transition.vue"]]);const Xn=st(Hs),Ws=ze({title:{type:String,default:""},name:{type:Re([String,Number]),default:void 0},icon:{type:ht,default:It},disabled:Boolean}),Vs=e=>{const t=_e(Yn),{namespace:l}=re("collapse"),n=S(!1),a=S(!1),s=Ua(),u=I(()=>s.current++),o=I(()=>{var v;return(v=e.name)!=null?v:`${l.value}-id-${s.prefix}-${y(u)}`}),r=I(()=>t?.activeNames.value.includes(y(o)));return{focusing:n,id:u,isActive:r,handleFocus:()=>{setTimeout(()=>{a.value?a.value=!1:n.value=!0},50)},handleHeaderClick:v=>{if(e.disabled)return;const d=v.target;d?.closest("input, textarea, select")||(t?.handleItemClick(y(o)),n.value=!1,a.value=!0)},handleEnterClick:v=>{const d=v.target;d?.closest("input, textarea, select")||(v.preventDefault(),t?.handleItemClick(y(o)))}}},zs=(e,{focusing:t,isActive:l,id:n})=>{const a=re("collapse"),s=I(()=>[a.b("item"),a.is("active",y(l)),a.is("disabled",e.disabled)]),u=I(()=>[a.be("item","header"),a.is("active",y(l)),{focusing:y(t)&&!e.disabled}]),o=I(()=>[a.be("item","arrow"),a.is("active",y(l))]),r=I(()=>[a.be("item","title")]),i=I(()=>a.be("item","wrap")),c=I(()=>a.be("item","content")),f=I(()=>a.b(`content-${y(n)}`)),v=I(()=>a.b(`head-${y(n)}`));return{itemTitleKls:r,arrowKls:o,headKls:u,rootKls:s,itemWrapperKls:i,itemContentKls:c,scopedContentId:f,scopedHeadId:v}},Ks=le({name:"ElCollapseItem"}),Ds=le({...Ks,props:Ws,setup(e,{expose:t}){const l=e,{focusing:n,id:a,isActive:s,handleFocus:u,handleHeaderClick:o,handleEnterClick:r}=Vs(l),{arrowKls:i,headKls:c,rootKls:f,itemTitleKls:v,itemWrapperKls:d,itemContentKls:p,scopedContentId:m,scopedHeadId:w}=zs(l,{focusing:n,isActive:s,id:a});return t({isActive:s}),(P,O)=>(z(),te("div",{class:Q(y(f))},[D("div",{id:y(w),class:Q(y(c)),"aria-expanded":y(s),"aria-controls":y(m),"aria-describedby":y(m),tabindex:P.disabled?void 0:0,"aria-disabled":P.disabled,role:"button",onClick:y(o),onKeydown:In(Fn(y(r),["stop"]),["space","enter"]),onFocus:y(u),onBlur:E=>n.value=!1},[D("span",{class:Q(y(v))},[ue(P.$slots,"title",{isActive:y(s)},()=>[ce(be(P.title),1)])],2),ue(P.$slots,"icon",{isActive:y(s)},()=>[M(y(We),{class:Q(y(i))},{default:A(()=>[(z(),de(El(P.icon)))]),_:1},8,["class"])])],42,["id","aria-expanded","aria-controls","aria-describedby","tabindex","aria-disabled","onClick","onKeydown","onFocus","onBlur"]),M(y(Xn),null,{default:A(()=>[Fe(D("div",{id:y(m),role:"region",class:Q(y(d)),"aria-hidden":!y(s),"aria-labelledby":y(w)},[D("div",{class:Q(y(p))},[ue(P.$slots,"default")],2)],10,["id","aria-hidden","aria-labelledby"]),[[dt,y(s)]])]),_:3})],2))}});var Gn=xe(Ds,[["__file","collapse-item.vue"]]);const Us=st(Is,{CollapseItem:Gn}),js=Ge(Gn),qs=le({name:"ElContainer"}),Ys=le({...qs,props:ze({direction:{type:String,values:["horizontal","vertical"]}}),setup(e){const t=e,l=Kl(),n=re("container"),a=I(()=>t.direction==="vertical"?!0:t.direction==="horizontal"?!1:l&&l.default?l.default().some(u=>{const o=u.type.name;return o==="ElHeader"||o==="ElFooter"}):!1);return(s,u)=>(z(),te("section",{class:Q([y(n).b(),y(n).is("vertical",y(a))])},[ue(s.$slots,"default")],2))}});var Xs=xe(Ys,[["__file","container.vue"]]);const Gs=le({name:"ElAside"}),Js=le({...Gs,props:{width:{type:String,default:null}},setup(e){const t=e,l=re("aside"),n=I(()=>t.width?l.cssVarBlock({width:t.width}):{});return(a,s)=>(z(),te("aside",{class:Q(y(l).b()),style:De(y(n))},[ue(a.$slots,"default")],6))}});var Jn=xe(Js,[["__file","aside.vue"]]);const Qs=le({name:"ElFooter"}),Zs=le({...Qs,props:{height:{type:String,default:null}},setup(e){const t=e,l=re("footer"),n=I(()=>t.height?l.cssVarBlock({height:t.height}):{});return(a,s)=>(z(),te("footer",{class:Q(y(l).b()),style:De(y(n))},[ue(a.$slots,"default")],6))}});var Qn=xe(Zs,[["__file","footer.vue"]]);const er=le({name:"ElHeader"}),tr=le({...er,props:{height:{type:String,default:null}},setup(e){const t=e,l=re("header"),n=I(()=>t.height?l.cssVarBlock({height:t.height}):{});return(a,s)=>(z(),te("header",{class:Q(y(l).b()),style:De(y(n))},[ue(a.$slots,"default")],6))}});var Zn=xe(tr,[["__file","header.vue"]]);const lr=le({name:"ElMain"}),nr=le({...lr,setup(e){const t=re("main");return(l,n)=>(z(),te("main",{class:Q(y(t).b())},[ue(l.$slots,"default")],2))}});var ea=xe(nr,[["__file","main.vue"]]);const ar=st(Xs,{Aside:Jn,Footer:Qn,Header:Zn,Main:ea}),or=Ge(Jn);Ge(Qn);const sr=Ge(Zn),rr=Ge(ea),ir=ze({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:Re(String),default:"solid"}}),ur=le({name:"ElDivider"}),dr=le({...ur,props:ir,setup(e){const t=e,l=re("divider"),n=I(()=>l.cssVar({"border-style":t.borderStyle}));return(a,s)=>(z(),te("div",{class:Q([y(l).b(),y(l).m(a.direction)]),style:De(y(n)),role:"separator"},[a.$slots.default&&a.direction!=="vertical"?(z(),te("div",{key:0,class:Q([y(l).e("text"),y(l).is(a.contentPosition)])},[ue(a.$slots,"default")],2)):he("v-if",!0)],6))}});var cr=xe(dr,[["__file","divider.vue"]]);const fr=st(cr),vr=ze({...go,direction:{type:String,default:"rtl",values:["ltr","rtl","ttb","btt"]},resizable:Boolean,size:{type:[String,Number],default:"30%"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:"2"}}),pr={...ho,"resize-start":(e,t)=>e instanceof MouseEvent&&typeof t=="number",resize:(e,t)=>e instanceof MouseEvent&&typeof t=="number","resize-end":(e,t)=>e instanceof MouseEvent&&typeof t=="number"};function mr(e,t,l){const{width:n,height:a}=Bo(),s=I(()=>["ltr","rtl"].includes(e.direction)),u=I(()=>["ltr","ttb"].includes(e.direction)?1:-1),o=I(()=>s.value?n.value:a.value),r=I(()=>ja(i.value+u.value*c.value,4,o.value)),i=S(0),c=S(0),f=S(!1),v=S(!1);let d=[],p=[];const m=()=>{var h;const g=(h=t.value)==null?void 0:h.closest('[aria-modal="true"]');return g?s.value?g.offsetWidth:g.offsetHeight:100};pe(()=>[e.size,e.resizable],()=>{v.value=!1,i.value=0,c.value=0,O()});const w=h=>{e.resizable&&(v.value||(i.value=m(),v.value=!0),d=[h.pageX,h.pageY],f.value=!0,l("resize-start",h,i.value),p.push($t(window,"mouseup",O),$t(window,"mousemove",P)))},P=h=>{const{pageX:g,pageY:x}=h,C=g-d[0],_=x-d[1];c.value=s.value?C:_,l("resize",h,r.value)},O=h=>{f.value&&(d=[],i.value=r.value,c.value=0,f.value=!1,p.forEach(g=>g?.()),p=[],h&&l("resize-end",h,i.value))},E=$t(t,"mousedown",w);return et(()=>{E(),O()}),{size:I(()=>v.value?`${r.value}px`:qa(e.size)),isResizing:f,isHorizontal:s}}const hr=le({name:"ElDrawer",inheritAttrs:!1}),gr=le({...hr,props:vr,emits:pr,setup(e,{expose:t,emit:l}){const n=e,a=Kl();Ya({scope:"el-drawer",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/drawer.html#slots"},I(()=>!!a.title));const s=S(),u=S(),o=S(),r=re("drawer"),{t:i}=Ft(),{afterEnter:c,afterLeave:f,beforeLeave:v,visible:d,rendered:p,titleId:m,bodyId:w,zIndex:P,onModalClick:O,onOpenAutoFocus:E,onCloseAutoFocus:h,onFocusoutPrevented:g,onCloseRequested:x,handleClose:C}=bo(n,s),{isHorizontal:_,size:L,isResizing:F}=mr(n,o,l),V=I(()=>n.modalPenetrable&&!n.modal);return t({handleClose:C,afterEnter:c,afterLeave:f}),(B,G)=>(z(),de(y(wo),{to:B.appendTo,disabled:B.appendTo!=="body"?!1:!B.appendToBody},{default:A(()=>[M(al,{name:y(r).b("fade"),onAfterEnter:y(c),onAfterLeave:y(f),onBeforeLeave:y(v),persisted:""},{default:A(()=>{var Y;return[Fe(M(y(yo),{mask:B.modal,"overlay-class":[y(r).is("drawer"),(Y=B.modalClass)!=null?Y:"",`${y(r).namespace.value}-modal-drawer`,y(r).is("penetrable",y(V))],"z-index":y(P),onClick:y(O)},{default:A(()=>[M(y(Co),{loop:"",trapped:y(d),"focus-trap-el":s.value,"focus-start-el":u.value,onFocusAfterTrapped:y(E),onFocusAfterReleased:y(h),onFocusoutPrevented:y(g),onReleaseRequested:y(x)},{default:A(()=>[D("div",zl({ref_key:"drawerRef",ref:s,"aria-modal":"true","aria-label":B.title||void 0,"aria-labelledby":B.title?void 0:y(m),"aria-describedby":y(w)},B.$attrs,{class:[y(r).b(),B.direction,y(d)&&"open",y(r).is("dragging",y(F))],style:{[y(_)?"width":"height"]:y(L)},role:"dialog",onClick:Fn(()=>{},["stop"])}),[D("span",{ref_key:"focusStartRef",ref:u,class:Q(y(r).e("sr-focus")),tabindex:"-1"},null,2),B.withHeader?(z(),te("header",{key:0,class:Q([y(r).e("header"),B.headerClass])},[B.$slots.title?ue(B.$slots,"title",{key:1},()=>[he(" DEPRECATED SLOT ")]):ue(B.$slots,"header",{key:0,close:y(C),titleId:y(m),titleClass:y(r).e("title")},()=>[D("span",{id:y(m),role:"heading","aria-level":B.headerAriaLevel,class:Q(y(r).e("title"))},be(B.title),11,["id","aria-level"])]),B.showClose?(z(),te("button",{key:2,"aria-label":y(i)("el.drawer.close"),class:Q(y(r).e("close-btn")),type:"button",onClick:y(C)},[M(y(We),{class:Q(y(r).e("close"))},{default:A(()=>[M(y(Mn))]),_:1},8,["class"])],10,["aria-label","onClick"])):he("v-if",!0)],2)):he("v-if",!0),y(p)?(z(),te("div",{key:1,id:y(w),class:Q([y(r).e("body"),B.bodyClass])},[ue(B.$slots,"default")],10,["id"])):he("v-if",!0),B.$slots.footer?(z(),te("div",{key:2,class:Q([y(r).e("footer"),B.footerClass])},[ue(B.$slots,"footer")],2)):he("v-if",!0),B.resizable?(z(),te("div",{key:3,ref_key:"draggerRef",ref:o,style:De({zIndex:y(P)}),class:Q(y(r).e("dragger"))},null,6)):he("v-if",!0)],16,["aria-label","aria-labelledby","aria-describedby","onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])]),_:3},8,["mask","overlay-class","z-index","onClick"]),[[dt,y(d)]])]}),_:3},8,["name","onAfterEnter","onAfterLeave","onBeforeLeave"])]),_:3},8,["to","disabled"]))}});var br=xe(gr,[["__file","drawer.vue"]]);const yr=st(br);let Cr=class{constructor(t,l){this.parent=t,this.domNode=l,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,l=>{l.addEventListener("keydown",n=>{const a=Ct(n);let s=!1;switch(a){case ve.down:{this.gotoSubIndex(this.subIndex+1),s=!0;break}case ve.up:{this.gotoSubIndex(this.subIndex-1),s=!0;break}case ve.tab:{Kt(t,"mouseleave");break}case ve.enter:case ve.numpadEnter:case ve.space:{s=!0,n.currentTarget.click();break}}return s&&(n.preventDefault(),n.stopPropagation()),!1})})}},wr=class{constructor(t,l){this.domNode=t,this.submenu=null,this.submenu=null,this.init(l)}init(t){this.domNode.setAttribute("tabindex","0");const l=this.domNode.querySelector(`.${t}-menu`);l&&(this.submenu=new Cr(this,l)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{const l=Ct(t);let n=!1;switch(l){case ve.down:{Kt(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case ve.up:{Kt(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case ve.tab:{Kt(t.currentTarget,"mouseleave");break}case ve.enter:case ve.numpadEnter:case ve.space:{n=!0,t.currentTarget.click();break}}n&&t.preventDefault()})}},Sr=class{constructor(t,l){this.domNode=t,this.init(l)}init(t){const l=this.domNode.childNodes;Array.from(l).forEach(n=>{n.nodeType===1&&new wr(n,t)})}};const _r=le({name:"ElMenuCollapseTransition"}),xr=le({..._r,setup(e){const t=re("menu"),l={onBeforeEnter:n=>n.style.opacity="0.2",onEnter(n,a){Xe(n,`${t.namespace.value}-opacity-transition`),n.style.opacity="1",a()},onAfterEnter(n){Ve(n,`${t.namespace.value}-opacity-transition`),n.style.opacity=""},onBeforeLeave(n){n.dataset||(n.dataset={}),Ot(n,t.m("collapse"))?(Ve(n,t.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),Xe(n,t.m("collapse"))):(Xe(n,t.m("collapse")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),Ve(n,t.m("collapse"))),n.style.width=`${n.scrollWidth}px`,n.style.overflow="hidden"},onLeave(n){Xe(n,"horizontal-collapse-transition"),n.style.width=`${n.dataset.scrollWidth}px`}};return(n,a)=>(z(),de(al,zl({mode:"out-in"},y(l)),{default:A(()=>[ue(n.$slots,"default")]),_:3},16))}});var Er=xe(xr,[["__file","menu-collapse-transition.vue"]]);function ta(e,t){const l=I(()=>{let a=e.parent;const s=[t.value];for(;a.type.name!=="ElMenu";)a.props.index&&s.unshift(a.props.index),a=a.parent;return s});return{parentMenu:I(()=>{let a=e.parent;for(;a&&!["ElMenu","ElSubMenu"].includes(a.type.name);)a=a.parent;return a}),indexPath:l}}function kr(e){return I(()=>{const l=e.backgroundColor;return l?new Xa(l).shade(20).toString():""})}const la=(e,t)=>{const l=re("menu");return I(()=>l.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":kr(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},Ul="rootMenu",Zt="subMenu:",Nr=ze({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,popperStyle:{type:Re([String,Object])},disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:ht},expandOpenIcon:{type:ht},collapseCloseIcon:{type:ht},collapseOpenIcon:{type:ht}}),gl="ElSubMenu";var jl=le({name:gl,props:Nr,setup(e,{slots:t,expose:l}){const n=Se(),{indexPath:a,parentMenu:s}=ta(n,I(()=>e.index)),u=re("menu"),o=re("sub-menu"),r=_e(Ul);r||Ze(gl,"can not inject root menu");const i=_e(`${Zt}${s.value.uid}`);i||Ze(gl,"can not inject sub menu");const c=S({}),f=S({});let v;const d=S(!1),p=S(),m=S(),w=I(()=>i.level===0),P=I(()=>_.value==="horizontal"&&w.value?"bottom-start":"right-start"),O=I(()=>_.value==="horizontal"&&w.value||_.value==="vertical"&&!r.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?x.value?e.expandOpenIcon:e.expandCloseIcon:Rn:e.collapseCloseIcon&&e.collapseOpenIcon?x.value?e.collapseOpenIcon:e.collapseCloseIcon:It),E=I(()=>{const R=e.teleported;return Te(R)?w.value:R}),h=I(()=>r.props.collapse?`${u.namespace.value}-zoom-in-left`:`${u.namespace.value}-zoom-in-top`),g=I(()=>_.value==="horizontal"&&w.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),x=I(()=>r.openedMenus.includes(e.index)),C=I(()=>[...Object.values(c.value),...Object.values(f.value)].some(({active:R})=>R)),_=I(()=>r.props.mode),L=I(()=>r.props.persistent),F=Qe({index:e.index,indexPath:a,active:C}),V=la(r.props,i.level+1),B=I(()=>{var R;return(R=e.popperOffset)!=null?R:r.props.popperOffset}),G=I(()=>{var R;return(R=e.popperClass)!=null?R:r.props.popperClass}),Y=I(()=>{var R;return(R=e.popperStyle)!=null?R:r.props.popperStyle}),ie=I(()=>{var R;return(R=e.showTimeout)!=null?R:r.props.showTimeout}),J=I(()=>{var R;return(R=e.hideTimeout)!=null?R:r.props.hideTimeout}),N=()=>{var R,K,U;return(U=(K=(R=m.value)==null?void 0:R.popperRef)==null?void 0:K.popperInstanceRef)==null?void 0:U.destroy()},$=R=>{R||N()},H=()=>{r.props.menuTrigger==="hover"&&r.props.mode==="horizontal"||r.props.collapse&&r.props.mode==="vertical"||e.disabled||r.handleSubMenuClick({index:e.index,indexPath:a.value,active:C.value})},k=(R,K=ie.value)=>{var U;if(R.type!=="focus"){if(r.props.menuTrigger==="click"&&r.props.mode==="horizontal"||!r.props.collapse&&r.props.mode==="vertical"||e.disabled){i.mouseInChild.value=!0;return}i.mouseInChild.value=!0,v?.(),{stop:v}=on(()=>{r.openMenu(e.index,a.value)},K),E.value&&((U=s.value.vnode.el)==null||U.dispatchEvent(new MouseEvent("mouseenter"))),R.type==="mouseenter"&&R.target&&$e(()=>{Ho(R.target,{preventScroll:!0})})}},W=(R=!1)=>{var K;if(r.props.menuTrigger==="click"&&r.props.mode==="horizontal"||!r.props.collapse&&r.props.mode==="vertical"){i.mouseInChild.value=!1;return}v?.(),i.mouseInChild.value=!1,{stop:v}=on(()=>!d.value&&r.closeMenu(e.index,a.value),J.value),E.value&&R&&((K=i.handleMouseleave)==null||K.call(i,!0))};pe(()=>r.props.collapse,R=>$(!!R));{const R=U=>{f.value[U.index]=U},K=U=>{delete f.value[U.index]};St(`${Zt}${n.uid}`,{addSubMenu:R,removeSubMenu:K,handleMouseleave:W,mouseInChild:d,level:i.level+1})}return l({opened:x}),Ue(()=>{r.addSubMenu(F),i.addSubMenu(F)}),et(()=>{i.removeSubMenu(F),r.removeSubMenu(F)}),()=>{var R;const K=[(R=t.title)==null?void 0:R.call(t),q(We,{class:o.e("icon-arrow"),style:{transform:x.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&r.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>ye(O.value)?q(n.appContext.components[O.value]):q(O.value)})],U=r.isMenuPopup?q(tl,{ref:m,visible:x.value,effect:"light",pure:!0,offset:B.value,showArrow:!1,persistent:L.value,popperClass:G.value,popperStyle:Y.value,placement:P.value,teleported:E.value,fallbackPlacements:g.value,transition:h.value,gpuAcceleration:!1},{content:()=>{var ee;return q("div",{class:[u.m(_.value),u.m("popup-container"),G.value],onMouseenter:ne=>k(ne,100),onMouseleave:()=>W(!0),onFocus:ne=>k(ne,100)},[q("ul",{class:[u.b(),u.m("popup"),u.m(`popup-${P.value}`)],style:V.value},[(ee=t.default)==null?void 0:ee.call(t)])])},default:()=>q("div",{class:o.e("title"),onClick:H},K)}):q(He,{},[q("div",{class:o.e("title"),ref:p,onClick:H},K),q(Xn,{},{default:()=>{var ee;return Fe(q("ul",{role:"menu",class:[u.b(),u.m("inline")],style:V.value},[(ee=t.default)==null?void 0:ee.call(t)]),[[dt,x.value]])}})]);return q("li",{class:[o.b(),o.is("active",C.value),o.is("opened",x.value),o.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:x.value,onMouseenter:k,onMouseleave:()=>W(),onFocus:k},[U])}}});const Tr=ze({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:Re(Array),default:()=>At([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:ht,default:()=>Ga},popperEffect:{type:Re(String),default:"dark"},popperClass:String,popperStyle:{type:Re([String,Object])},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},persistent:{type:Boolean,default:!0}}),bl=e=>Me(e)&&e.every(t=>ye(t)),Mr={close:(e,t)=>ye(e)&&bl(t),open:(e,t)=>ye(e)&&bl(t),select:(e,t,l,n)=>ye(e)&&bl(t)&&ct(l)&&(Te(n)||n instanceof Promise)},mn=64;var Rr=le({name:"ElMenu",props:Tr,emits:Mr,setup(e,{emit:t,slots:l,expose:n}){const a=Se(),s=a.appContext.config.globalProperties.$router,u=S(),o=S(),r=re("menu"),i=re("sub-menu");let c=mn;const f=S(-1),v=S(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),d=S(e.defaultActive),p=S({}),m=S({}),w=I(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),P=()=>{const N=d.value&&p.value[d.value];if(!N||e.mode==="horizontal"||e.collapse)return;N.indexPath.forEach(H=>{const k=m.value[H];k&&O(H,k.indexPath)})},O=(N,$)=>{v.value.includes(N)||(e.uniqueOpened&&(v.value=v.value.filter(H=>$.includes(H))),v.value.push(N),t("open",N,$))},E=N=>{const $=v.value.indexOf(N);$!==-1&&v.value.splice($,1)},h=(N,$)=>{E(N),t("close",N,$)},g=({index:N,indexPath:$})=>{v.value.includes(N)?h(N,$):O(N,$)},x=N=>{(e.mode==="horizontal"||e.collapse)&&(v.value=[]);const{index:$,indexPath:H}=N;if(!(sn($)||sn(H)))if(e.router&&s){const k=N.route||$,W=s.push(k).then(R=>(R||(d.value=$),R));t("select",$,H,{index:$,indexPath:H,route:k},W)}else d.value=$,t("select",$,H,{index:$,indexPath:H})},C=N=>{var $;const H=p.value,k=H[N]||d.value&&H[d.value]||H[e.defaultActive];d.value=($=k?.index)!=null?$:N},_=N=>{const $=getComputedStyle(N),H=Number.parseInt($.marginLeft,10),k=Number.parseInt($.marginRight,10);return N.offsetWidth+H+k||0},L=()=>{if(!u.value)return-1;const N=Array.from(u.value.childNodes).filter(U=>U.nodeName!=="#comment"&&(U.nodeName!=="#text"||U.nodeValue)),$=getComputedStyle(u.value),H=Number.parseInt($.paddingLeft,10),k=Number.parseInt($.paddingRight,10),W=u.value.clientWidth-H-k;let R=0,K=0;return N.forEach((U,ee)=>{R+=_(U),R<=W-c&&(K=ee+1)}),K===N.length?-1:K},F=N=>m.value[N].indexPath,V=(N,$=33.34)=>{let H;return()=>{H&&clearTimeout(H),H=setTimeout(()=>{N()},$)}};let B=!0;const G=()=>{const N=Wo(o);if(N&&(c=_(N)||mn),f.value===L())return;const $=()=>{f.value=-1,$e(()=>{f.value=L()})};B?$():V($)(),B=!1};pe(()=>e.defaultActive,N=>{p.value[N]||(d.value=""),C(N)}),pe(()=>e.collapse,N=>{N&&(v.value=[])}),pe(p.value,P);let Y;Jt(()=>{e.mode==="horizontal"&&e.ellipsis?Y=wt(u,G).stop:Y?.()});const ie=S(!1);{const N=W=>{m.value[W.index]=W},$=W=>{delete m.value[W.index]};St(Ul,Qe({props:e,openedMenus:v,items:p,subMenus:m,activeIndex:d,isMenuPopup:w,addMenuItem:W=>{p.value[W.index]=W},removeMenuItem:W=>{delete p.value[W.index]},addSubMenu:N,removeSubMenu:$,openMenu:O,closeMenu:h,handleMenuItemClick:x,handleSubMenuClick:g})),St(`${Zt}${a.uid}`,{addSubMenu:N,removeSubMenu:$,mouseInChild:ie,level:0})}Ue(()=>{e.mode==="horizontal"&&new Sr(a.vnode.el,r.namespace.value)}),n({open:$=>{const{indexPath:H}=m.value[$];H.forEach(k=>O(k,H))},close:E,updateActiveIndex:C,handleResize:G});const J=la(e,0);return()=>{var N,$;let H=($=(N=l.default)==null?void 0:N.call(l))!=null?$:[];const k=[];if(e.mode==="horizontal"&&u.value){const K=$n(H).filter(ne=>ne?.shapeFlag!==8),U=f.value===-1?K:K.slice(0,f.value),ee=f.value===-1?[]:K.slice(f.value);ee?.length&&e.ellipsis&&(H=U,k.push(q(jl,{ref:o,index:"sub-menu-more",class:i.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>q(We,{class:i.e("icon-more")},{default:()=>q(e.ellipsisIcon)}),default:()=>ee})))}const W=e.closeOnClickOutside?[[So,()=>{v.value.length&&(ie.value||(v.value.forEach(K=>t("close",K,F(K))),v.value=[]))}]]:[],R=Fe(q("ul",{key:String(e.collapse),role:"menubar",ref:u,style:J.value,class:{[r.b()]:!0,[r.m(e.mode)]:!0,[r.m("collapse")]:e.collapse}},[...H,...k]),W);return e.collapseTransition&&e.mode==="vertical"?q(Er,()=>R):R}}});const Or=ze({index:{type:Re([String,null]),default:null},route:{type:Re([String,Object])},disabled:Boolean}),$r={click:e=>ye(e.index)&&Me(e.indexPath)},Tl="ElMenuItem",Pr=le({name:Tl}),Lr=le({...Pr,props:Or,emits:$r,setup(e,{expose:t,emit:l}){const n=e;gt(n.index)&&Vo();const a=Se(),s=_e(Ul),u=re("menu"),o=re("menu-item");s||Ze(Tl,"can not inject root menu");const{parentMenu:r,indexPath:i}=ta(a,qo(n,"index")),c=_e(`${Zt}${r.value.uid}`);c||Ze(Tl,"can not inject sub menu");const f=I(()=>n.index===s.activeIndex),v=Qe({index:n.index,indexPath:i,active:f}),d=()=>{n.disabled||(s.handleMenuItemClick({index:n.index,indexPath:i.value,route:n.route}),l("click",v))};return Ue(()=>{c.addSubMenu(v),s.addMenuItem(v)}),et(()=>{c.removeSubMenu(v),s.removeMenuItem(v)}),t({parentMenu:r,rootMenu:s,active:f,nsMenu:u,nsMenuItem:o,handleClick:d}),(p,m)=>(z(),te("li",{class:Q([y(o).b(),y(o).is("active",y(f)),y(o).is("disabled",p.disabled)]),role:"menuitem",tabindex:"-1",onClick:d},[y(r).type.name==="ElMenu"&&y(s).props.collapse&&p.$slots.title?(z(),de(y(tl),{key:0,effect:y(s).props.popperEffect,placement:"right","fallback-placements":["left"],"popper-class":y(s).props.popperClass,"popper-style":y(s).props.popperStyle,persistent:y(s).props.persistent,"focus-on-target":""},{content:A(()=>[ue(p.$slots,"title")]),default:A(()=>[D("div",{class:Q(y(u).be("tooltip","trigger"))},[ue(p.$slots,"default")],2)]),_:3},8,["effect","popper-class","popper-style","persistent"])):(z(),te(He,{key:1},[ue(p.$slots,"default"),ue(p.$slots,"title")],64))],2))}});var na=xe(Lr,[["__file","menu-item.vue"]]);const Ar={title:String},Ir=le({name:"ElMenuItemGroup"}),Fr=le({...Ir,props:Ar,setup(e){const t=re("menu-item-group");return(l,n)=>(z(),te("li",{class:Q(y(t).b())},[D("div",{class:Q(y(t).e("title"))},[l.$slots.title?ue(l.$slots,"title",{key:1}):(z(),te(He,{key:0},[ce(be(l.title),1)],64))],2),D("ul",null,[ue(l.$slots,"default")])],2))}});var aa=xe(Fr,[["__file","menu-item-group.vue"]]);const Br=st(Rr,{MenuItem:na,MenuItemGroup:aa,SubMenu:jl}),Hr=Ge(na);Ge(aa);Ge(jl);const Wr="horizontal",Vr="vertical",zr={[Wr]:"deltaX",[Vr]:"deltaY"},Kr=({atEndEdge:e,atStartEdge:t,layout:l},n)=>{let a,s=0;const u=r=>r<0&&t.value||r>0&&e.value;return{hasReachedEdge:u,onWheel:r=>{ks(a);const i=r[zr[l.value]];u(s)&&u(s+i)||(s+=i,zo()||r.preventDefault(),a=qn(()=>{n(s),s=0}))}}},yl=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},Dr=function(e,t,l,n,a){if(!t&&!n&&(!a||Me(a)&&!a.length))return e;ye(l)?l=l==="descending"?-1:1:l=l&&l<0?-1:1;const s=n?null:function(o,r){return a?Un(Gt(a),i=>ye(i)?rn(o,i):i(o,r,e)):(t!=="$key"&&ct(o)&&"$value"in o&&(o=o.$value),[ct(o)?t?rn(o,t):null:o])},u=function(o,r){var i,c,f,v,d,p;if(n)return n(o.value,r.value);for(let m=0,w=(c=(i=o.key)==null?void 0:i.length)!=null?c:0;m((p=r.key)==null?void 0:p[m]))return 1}return 0};return e.map((o,r)=>({value:o,index:r,key:s?s(o,r):null})).sort((o,r)=>{let i=u(o,r);return i||(i=o.index-r.index),i*+l}).map(o=>o.value)},oa=function(e,t){let l=null;return e.columns.forEach(n=>{n.id===t&&(l=n)}),l},Ur=function(e,t){let l=null;for(let n=0;n{if(!e)throw new Error("Row is required when get row identity");if(ye(t)){if(!t.includes("."))return`${e[t]}`;const l=t.split(".");let n=e;for(const a of l)n=n[a];return`${n}`}else if(Be(t))return t.call(null,e);return""},yt=function(e,t,l=!1,n="children"){const a=e||[],s={};return a.forEach((u,o)=>{if(s[Ee(u,t)]={row:u,index:o},l){const r=u[n];Me(r)&&Object.assign(s,yt(r,t,!0,n))}}),s};function jr(e,t){const l={};let n;for(n in e)l[n]=e[n];for(n in t)if(bt(t,n)){const a=t[n];Te(a)||(l[n]=a)}return l}function ql(e){return e===""||Te(e)||(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function sa(e){return e===""||Te(e)||(e=ql(e),Number.isNaN(e)&&(e=80)),e}function qr(e){return at(e)?e:ye(e)?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function Yr(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,l)=>(...n)=>t(l(...n)))}function el(e,t,l,n,a,s,u){let o=s??0,r=!1;const c=(()=>{if(!u)return e.indexOf(t);const m=Ee(t,u);return e.findIndex(w=>Ee(w,u)===m)})(),f=c!==-1,v=a?.call(null,t,o),d=m=>{m==="add"?e.push(t):e.splice(c,1),r=!0},p=m=>{let w=0;const P=n?.children&&m[n.children];return P&&Me(P)&&(w+=P.length,P.forEach(O=>{w+=p(O)})),w};return(!a||v)&&(lt(l)?l&&!f?d("add"):!l&&f&&d("remove"):d(f?"remove":"add")),!n?.checkStrictly&&n?.children&&Me(t[n.children])&&t[n.children].forEach(m=>{const w=el(e,m,l??!f,n,a,o+1,u);o+=p(m)+1,w&&(r=w)}),r}function Xr(e,t,l="children",n="hasChildren",a=!1){const s=o=>!(Me(o)&&o.length);function u(o,r,i){t(o,r,i),r.forEach(c=>{if(c[n]&&a){t(c,null,i+1);return}const f=c[l];s(f)||u(c,f,i+1)})}e.forEach(o=>{if(o[n]&&a){t(o,null,0);return}const r=o[l];s(r)||u(o,r,0)})}const Gr=(e,t,l,n)=>{const a={strategy:"fixed",...e.popperOptions},s=Be(n?.tooltipFormatter)?n.tooltipFormatter({row:l,column:n,cellValue:On(l,n.property).value}):void 0;return Vl(s)?{slotContent:s,content:null,...e,popperOptions:a}:{slotContent:null,content:s??t,...e,popperOptions:a}};let Ne=null;function Jr(e,t,l,n,a,s){var u;const o=Gr(e,t,l,n),r={...o,slotContent:void 0};if(Ne?.trigger===a){const p=(u=Ne.vm)==null?void 0:u.component;jn(p?.props,r),p&&o.slotContent&&(p.slots.content=()=>[o.slotContent]);return}Ne?.();const i=s?.refs.tableWrapper,c=i?.dataset.prefix,f=M(tl,{virtualTriggering:!0,virtualRef:a,appendTo:i,placement:"top",transition:"none",offset:0,hideAfter:0,...r},o.slotContent?{content:()=>o.slotContent}:void 0);f.appContext={...s.appContext,...s};const v=document.createElement("div");fn(f,v),f.component.exposed.onOpen();const d=i?.querySelector(`.${c}-scrollbar__wrap`);Ne=()=>{var p,m;(m=(p=f.component)==null?void 0:p.exposed)!=null&&m.onClose&&f.component.exposed.onClose(),fn(null,v);const w=Ne;d?.removeEventListener("scroll",w),w.trigger=void 0,w.vm=void 0,Ne=null},Ne.trigger=a??void 0,Ne.vm=f,d?.addEventListener("scroll",Ne)}function ra(e){return e.children?Un(e.children,ra):[e]}function gn(e,t){return e+t.colSpan}const ia=(e,t,l,n)=>{let a=0,s=e;const u=l.states.columns.value;if(n){const r=ra(n[e]);a=u.slice(0,u.indexOf(r[0])).reduce(gn,0),s=a+r.reduce(gn,0)-1}else a=e;let o;switch(t){case"left":s=u.length-l.states.rightFixedLeafColumnsLength.value&&(o="right");break;default:s=u.length-l.states.rightFixedLeafColumnsLength.value&&(o="right")}return o?{direction:o,start:a,after:s}:{}},Yl=(e,t,l,n,a,s=0)=>{const u=[],{direction:o,start:r,after:i}=ia(t,l,n,a);if(o){const c=o==="left";u.push(`${e}-fixed-column--${o}`),c&&i+s===n.states.fixedLeafColumnsLength.value-1?u.push("is-last-column"):!c&&r-s===n.states.columns.value.length-n.states.rightFixedLeafColumnsLength.value&&u.push("is-first-column")}return u};function bn(e,t){return e+(Bt(t.realWidth)||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Xl=(e,t,l,n)=>{const{direction:a,start:s=0,after:u=0}=ia(e,t,l,n);if(!a)return;const o={},r=a==="left",i=l.states.columns.value;return r?o.left=i.slice(0,s).reduce(bn,0):o.right=i.slice(u+1).reverse().reduce(bn,0),o},_t=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function ua(e){return e.some(t=>Vl(t)?!(t.type===Bn||t.type===He&&!ua(t.children)):!0)?e:null}function Qr(e){const t=Se(),l=S(!1),n=S([]);return{updateExpandRows:()=>{const r=e.data.value||[],i=e.rowKey.value;if(l.value)n.value=r.slice();else if(i){const c=yt(n.value,i);n.value=r.reduce((f,v)=>{const d=Ee(v,i);return c[d]&&f.push(v),f},[])}else n.value=[]},toggleRowExpansion:(r,i)=>{el(n.value,r,i,void 0,void 0,void 0,e.rowKey.value)&&t.emit("expand-change",r,n.value.slice())},setExpandRowKeys:r=>{t.store.assertRowKey();const i=e.data.value||[],c=e.rowKey.value,f=yt(i,c);n.value=r.reduce((v,d)=>{const p=f[d];return p&&v.push(p.row),v},[])},isRowExpanded:r=>{const i=e.rowKey.value;return i?!!yt(n.value,i)[Ee(r,i)]:n.value.includes(r)},states:{expandRows:n,defaultExpandAll:l}}}function Zr(e){const t=Se(),l=S(null),n=S(null),a=i=>{t.store.assertRowKey(),l.value=i,u(i)},s=()=>{l.value=null},u=i=>{var c;const{data:f,rowKey:v}=e;let d=null;v.value&&(d=(c=(y(f)||[]).find(p=>Ee(p,v.value)===i))!=null?c:null),n.value=d??null,t.emit("current-change",n.value,null)};return{setCurrentRowKey:a,restoreCurrentRowKey:s,setCurrentRowByKey:u,updateCurrentRow:i=>{const c=n.value;if(i&&i!==c){n.value=i,t.emit("current-change",n.value,c);return}!i&&c&&(n.value=null,t.emit("current-change",null,c))},updateCurrentRowData:()=>{const i=e.rowKey.value,c=e.data.value||[],f=n.value;if(f&&!c.includes(f)){if(i){const v=Ee(f,i);u(v)}else n.value=null;Bt(n.value)&&t.emit("current-change",null,f)}else l.value&&(u(l.value),s())},states:{_currentRowKey:l,currentRow:n}}}function ei(e){const t=S([]),l=S({}),n=S(16),a=S(!1),s=S({}),u=S("hasChildren"),o=S("children"),r=S(!1),i=Se(),c=I(()=>{if(!e.rowKey.value)return{};const h=e.data.value||[];return v(h)}),f=I(()=>{const h=e.rowKey.value,g=Object.keys(s.value),x={};return g.length&&g.forEach(C=>{if(s.value[C].length){const _={children:[]};s.value[C].forEach(L=>{const F=Ee(L,h);_.children.push(F),L[u.value]&&!x[F]&&(x[F]={children:[]})}),x[C]=_}}),x}),v=h=>{const g=e.rowKey.value,x={};return Xr(h,(C,_,L)=>{const F=Ee(C,g);Me(_)?x[F]={children:_.map(V=>Ee(V,g)),level:L}:a.value&&(x[F]={children:[],lazy:!0,level:L})},o.value,u.value,a.value),x},d=(h=!1,g)=>{var x,C;g||(g=(x=i.store)==null?void 0:x.states.defaultExpandAll.value);const _=c.value,L=f.value,F=Object.keys(_),V={};if(F.length){const B=y(l),G=[],Y=(J,N)=>{if(h)return t.value?g||t.value.includes(N):!!(g||J?.expanded);{const $=g||t.value&&t.value.includes(N);return!!(J?.expanded||$)}};F.forEach(J=>{const N=B[J],$={..._[J]};if($.expanded=Y(N,J),$.lazy){const{loaded:H=!1,loading:k=!1}=N||{};$.loaded=!!H,$.loading=!!k,G.push(J)}V[J]=$});const ie=Object.keys(L);a.value&&ie.length&&G.length&&ie.forEach(J=>{var N;const $=B[J],H=L[J].children;if(G.includes(J)){if(((N=V[J].children)==null?void 0:N.length)!==0)throw new Error("[ElTable]children must be an empty array.");V[J].children=H}else{const{loaded:k=!1,loading:W=!1}=$||{};V[J]={lazy:!0,loaded:!!k,loading:!!W,expanded:Y($,J),children:H,level:void 0}}})}l.value=V,(C=i.store)==null||C.updateTableScrollY()};pe(()=>t.value,()=>{d(!0)}),pe(()=>c.value,()=>{d()}),pe(()=>f.value,()=>{d()});const p=h=>{t.value=h,d()},m=h=>a.value&&h&&"loaded"in h&&!h.loaded,w=(h,g)=>{i.store.assertRowKey();const x=e.rowKey.value,C=Ee(h,x),_=C&&l.value[C];if(C&&_&&"expanded"in _){const L=_.expanded;g=Te(g)?!_.expanded:g,l.value[C].expanded=g,L!==g&&i.emit("expand-change",h,g),g&&m(_)&&O(h,C,_),i.store.updateTableScrollY()}},P=h=>{i.store.assertRowKey();const g=e.rowKey.value,x=Ee(h,g),C=l.value[x];m(C)?O(h,x,C):w(h,void 0)},O=(h,g,x)=>{const{load:C}=i.props;C&&!l.value[g].loaded&&(l.value[g].loading=!0,C(h,x,_=>{if(!Me(_))throw new TypeError("[ElTable] data must be an array");l.value[g].loading=!1,l.value[g].loaded=!0,l.value[g].expanded=!0,_.length&&(s.value[g]=_),i.emit("expand-change",h,!0)}))};return{loadData:O,loadOrToggle:P,toggleTreeExpansion:w,updateTreeExpandKeys:p,updateTreeData:d,updateKeyChildren:(h,g)=>{const{lazy:x,rowKey:C}=i.props;if(x){if(!C)throw new Error("[Table] rowKey is required in updateKeyChild");s.value[h]&&(s.value[h]=g)}},normalize:v,states:{expandRowKeys:t,treeData:l,indent:n,lazy:a,lazyTreeNodeMap:s,lazyColumnIdentifier:u,childrenColumnName:o,checkStrictly:r}}}const ti=(e,t)=>{const l=t.sortingColumn;return!l||ye(l.sortable)?e:Dr(e,t.sortProp,t.sortOrder,l.sortMethod,l.sortBy)},Ut=e=>{const t=[];return e.forEach(l=>{l.children&&l.children.length>0?t.push.apply(t,Ut(l.children)):t.push(l)}),t};function li(){var e;const t=Se(),{size:l}=Hn((e=t.proxy)==null?void 0:e.$props),n=S(null),a=S([]),s=S([]),u=S(!1),o=S([]),r=S([]),i=S([]),c=S([]),f=S([]),v=S([]),d=S([]),p=S([]),m=[],w=S(0),P=S(0),O=S(0),E=S(!1),h=S([]),g=S(!1),x=S(!1),C=S(null),_=S({}),L=S(null),F=S(null),V=S(null),B=S(null),G=S(null),Y=I(()=>n.value?yt(h.value,n.value):void 0);pe(a,()=>{var j;t.state&&($(!1),t.props.tableLayout==="auto"&&((j=t.refs.tableHeaderRef)==null||j.updateFixedColumnStyle()))},{deep:!0});const ie=()=>{if(!n.value)throw new Error("[ElTable] prop row-key is required")},J=j=>{var ae;(ae=j.children)==null||ae.forEach(se=>{se.fixed=j.fixed,J(se)})},N=()=>{o.value.forEach(oe=>{J(oe)}),c.value=o.value.filter(oe=>[!0,"left"].includes(oe.fixed));const j=o.value.find(oe=>oe.type==="selection");let ae;j&&j.fixed!=="right"&&!c.value.includes(j)&&o.value.indexOf(j)===0&&c.value.length&&(c.value.unshift(j),ae=!0),f.value=o.value.filter(oe=>oe.fixed==="right");const se=o.value.filter(oe=>(ae?oe.type!=="selection":!0)&&!oe.fixed);r.value=Array.from(c.value).concat(se).concat(f.value);const T=Ut(se),b=Ut(c.value),Z=Ut(f.value);w.value=T.length,P.value=b.length,O.value=Z.length,i.value=Array.from(b).concat(T).concat(Z),u.value=c.value.length>0||f.value.length>0},$=(j,ae=!1)=>{j&&N(),ae?t.state.doLayout():t.state.debouncedUpdateLayout()},H=j=>Y.value?!!Y.value[Ee(j,n.value)]:h.value.includes(j),k=()=>{E.value=!1;const j=h.value;h.value=[],j.length&&t.emit("selection-change",[])},W=()=>{var j,ae;let se;if(n.value){se=[];const T=(ae=(j=t?.store)==null?void 0:j.states)==null?void 0:ae.childrenColumnName.value,b=yt(a.value,n.value,!0,T);for(const Z in Y.value)bt(Y.value,Z)&&!b[Z]&&se.push(Y.value[Z].row)}else se=h.value.filter(T=>!a.value.includes(T));if(se.length){const T=h.value.filter(b=>!se.includes(b));h.value=T,t.emit("selection-change",T.slice())}},R=()=>(h.value||[]).slice(),K=(j,ae,se=!0,T=!1)=>{var b,Z,oe,we;const Ae={children:(Z=(b=t?.store)==null?void 0:b.states)==null?void 0:Z.childrenColumnName.value,checkStrictly:(we=(oe=t?.store)==null?void 0:oe.states)==null?void 0:we.checkStrictly.value};if(el(h.value,j,ae,Ae,T?void 0:C.value,a.value.indexOf(j),n.value)){const qe=(h.value||[]).slice();se&&t.emit("select",qe,j),t.emit("selection-change",qe)}},U=()=>{var j,ae;const se=x.value?!E.value:!(E.value||h.value.length);E.value=se;let T=!1,b=0;const Z=(ae=(j=t?.store)==null?void 0:j.states)==null?void 0:ae.rowKey.value,{childrenColumnName:oe}=t.store.states,we={children:oe.value,checkStrictly:!1};a.value.forEach((Ae,ge)=>{const qe=ge+b;el(h.value,Ae,se,we,C.value,qe,Z)&&(T=!0),b+=ne(Ee(Ae,Z))}),T&&t.emit("selection-change",h.value?h.value.slice():[]),t.emit("select-all",(h.value||[]).slice())},ee=()=>{var j;if(((j=a.value)==null?void 0:j.length)===0){E.value=!1;return}const{childrenColumnName:ae}=t.store.states;let se=0,T=0;const b=oe=>{var we;for(const Ae of oe){const ge=C.value&&C.value.call(null,Ae,se);if(H(Ae))T++;else if(!C.value||ge)return!1;if(se++,(we=Ae[ae.value])!=null&&we.length&&!b(Ae[ae.value]))return!1}return!0},Z=b(a.value||[]);E.value=T===0?!1:Z},ne=j=>{var ae;if(!t||!t.store)return 0;const{treeData:se}=t.store.states;let T=0;const b=(ae=se.value[j])==null?void 0:ae.children;return b&&(T+=b.length,b.forEach(Z=>{T+=ne(Z)})),T},me=(j,ae)=>{const se={};return Gt(j).forEach(T=>{_.value[T.id]=ae,se[T.columnKey||T.id]=ae}),se},Ce=(j,ae,se)=>{F.value&&F.value!==j&&(F.value.order=null),F.value=j,V.value=ae,B.value=se},ke=()=>{let j=y(s);Object.keys(_.value).forEach(ae=>{const se=_.value[ae];if(!se||se.length===0)return;const T=oa({columns:i.value},ae);T&&T.filterMethod&&(j=j.filter(b=>se.some(Z=>T.filterMethod.call(null,Z,b,T))))}),L.value=j},Pe=()=>{var j;a.value=ti((j=L.value)!=null?j:[],{sortingColumn:F.value,sortProp:V.value,sortOrder:B.value})},Ke=(j=void 0)=>{j?.filter||ke(),Pe()},tt=j=>{const{tableHeaderRef:ae}=t.refs;if(!ae)return;const se=Object.assign({},ae.filterPanels),T=Object.keys(se);if(T.length)if(ye(j)&&(j=[j]),Me(j)){const b=j.map(Z=>Ur({columns:i.value},Z));T.forEach(Z=>{const oe=b.find(we=>we.id===Z);oe&&(oe.filteredValue=[])}),t.store.commit("filterChange",{column:b,values:[],silent:!0,multi:!0})}else T.forEach(b=>{const Z=i.value.find(oe=>oe.id===b);Z&&(Z.filteredValue=[])}),_.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},xt=()=>{F.value&&(Ce(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:Et,toggleRowExpansion:ft,updateExpandRows:Le,states:vt,isRowExpanded:Ht}=Qr({data:a,rowKey:n}),{updateTreeExpandKeys:sl,toggleTreeExpansion:rl,updateTreeData:il,updateKeyChildren:kt,loadOrToggle:ul,states:Wt}=ei({data:a,rowKey:n}),{updateCurrentRowData:dl,updateCurrentRow:cl,setCurrentRowKey:fl,states:vl}=Zr({data:a,rowKey:n});return{assertRowKey:ie,updateColumns:N,scheduleLayout:$,isSelected:H,clearSelection:k,cleanSelection:W,getSelectionRows:R,toggleRowSelection:K,_toggleAllSelection:U,toggleAllSelection:null,updateAllSelected:ee,updateFilters:me,updateCurrentRow:cl,updateSort:Ce,execFilter:ke,execSort:Pe,execQuery:Ke,clearFilter:tt,clearSort:xt,toggleRowExpansion:ft,setExpandRowKeysAdapter:j=>{Et(j),sl(j)},setCurrentRowKey:fl,toggleRowExpansionAdapter:(j,ae)=>{i.value.some(({type:T})=>T==="expand")?ft(j,ae):rl(j,ae)},isRowExpanded:Ht,updateExpandRows:Le,updateCurrentRowData:dl,loadOrToggle:ul,updateTreeData:il,updateKeyChildren:kt,states:{tableSize:l,rowKey:n,data:a,_data:s,isComplex:u,_columns:o,originColumns:r,columns:i,fixedColumns:c,rightFixedColumns:f,leafColumns:v,fixedLeafColumns:d,rightFixedLeafColumns:p,updateOrderFns:m,leafColumnsLength:w,fixedLeafColumnsLength:P,rightFixedLeafColumnsLength:O,isAllSelected:E,selection:h,reserveSelection:g,selectOnIndeterminate:x,selectable:C,filters:_,filteredData:L,sortingColumn:F,sortProp:V,sortOrder:B,hoverRow:G,...vt,...Wt,...vl}}}function Ml(e,t){return e.map(l=>{var n;return l.id===t.id?t:((n=l.children)!=null&&n.length&&(l.children=Ml(l.children,t)),l)})}function Rl(e){e.forEach(t=>{var l,n;t.no=(l=t.getColumnIndex)==null?void 0:l.call(t),(n=t.children)!=null&&n.length&&Rl(t.children)}),e.sort((t,l)=>t.no-l.no)}function ni(){const e=Se(),t=li(),l=re("table"),{t:n}=Ft();return{ns:l,t:n,...t,mutations:{setData(o,r){const i=y(o._data)!==r;o.data.value=r,o._data.value=r,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),y(o.reserveSelection)?e.store.assertRowKey():i?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(o,r,i,c){var f;const v=y(o._columns);let d=[];i?(i&&!i.children&&(i.children=[]),(f=i.children)==null||f.push(r),d=Ml(v,i)):(v.push(r),d=v),Rl(d),o._columns.value=d,o.updateOrderFns.push(c),r.type==="selection"&&(o.selectable.value=r.selectable,o.reserveSelection.value=r.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(o,r){var i;((i=r.getColumnIndex)==null?void 0:i.call(r))!==r.no&&(Rl(o._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(o,r,i,c){var f;const v=y(o._columns)||[];if(i)(f=i.children)==null||f.splice(i.children.findIndex(p=>p.id===r.id),1),$e(()=>{var p;((p=i.children)==null?void 0:p.length)===0&&delete i.children}),o._columns.value=Ml(v,i);else{const p=v.indexOf(r);p>-1&&(v.splice(p,1),o._columns.value=v)}const d=o.updateOrderFns.indexOf(c);d>-1&&o.updateOrderFns.splice(d,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(o,r){const{prop:i,order:c,init:f}=r;if(i){const v=y(o.columns).find(d=>d.property===i);v&&(v.order=c,e.store.updateSort(v,i,c),e.store.commit("changeSortCondition",{init:f}))}},changeSortCondition(o,r){const{sortingColumn:i,sortProp:c,sortOrder:f}=o,v=y(i),d=y(c),p=y(f);Bt(p)&&(o.sortingColumn.value=null,o.sortProp.value=null);const m={filter:!0};e.store.execQuery(m),(!r||!(r.silent||r.init))&&e.emit("sort-change",{column:v,prop:d,order:p}),e.store.updateTableScrollY()},filterChange(o,r){const{column:i,values:c,silent:f}=r,v=e.store.updateFilters(i,c);e.store.execQuery(),f||e.emit("filter-change",v),e.store.updateTableScrollY()},toggleAllSelection(){var o,r;(r=(o=e.store).toggleAllSelection)==null||r.call(o)},rowSelectedChanged(o,r){e.store.toggleRowSelection(r),e.store.updateAllSelected()},setHoverRow(o,r){o.hoverRow.value=r},setCurrentRow(o,r){e.store.updateCurrentRow(r)}},commit:function(o,...r){const i=e.store.mutations;if(i[o])i[o].apply(e,[e.store.states,...r]);else throw new Error(`Action not found: ${o}`)},updateTableScrollY:function(){$e(()=>e.layout.updateScrollY.apply(e.layout))}}}const Gl={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"},"treeProps.checkStrictly":{key:"checkStrictly",default:!1}};function ai(e,t){if(!e)throw new Error("Table is required.");const l=ni();return l.toggleAllSelection=Qt(l._toggleAllSelection,10),Object.keys(Gl).forEach(n=>{da(ca(t,n),n,l)}),oi(l,t),l}function oi(e,t){Object.keys(Gl).forEach(l=>{pe(()=>ca(t,l),n=>{da(n,l,e)})})}function da(e,t,l){let n=e,a=Gl[t];ct(a)&&(n=n||a.default,a=a.key),l.states[a].value=n}function ca(e,t){if(t.includes(".")){const l=t.split(".");let n=e;return l.forEach(a=>{n=n[a]}),n}else return e[t]}class si{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=S(null),this.scrollX=S(!1),this.scrollY=S(!1),this.bodyWidth=S(null),this.fixedWidth=S(null),this.rightFixedWidth=S(null),this.gutterWidth=0;for(const l in t)bt(t,l)&&(Wn(this[l])?this[l].value=t[l]:this[l]=t[l]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){const t=this.height.value;if(Bt(t))return!1;const l=this.table.refs.scrollBarRef;if(this.table.vnode.el&&l?.wrapRef){let n=!0;const a=this.scrollY.value;return n=l.wrapRef.scrollHeight>l.wrapRef.clientHeight,this.scrollY.value=n,a!==n}return!1}setHeight(t,l="height"){if(!ot)return;const n=this.table.vnode.el;if(t=qr(t),this.height.value=Number(t),!n&&(t||t===0)){$e(()=>this.setHeight(t,l));return}n&&at(t)?(n.style[l]=`${t}px`,this.updateElsHeight()):n&&ye(t)&&(n.style[l]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(n=>{n.isColumnGroup?t.push.apply(t,n.columns):t.push(n)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let l=t;for(;l.tagName!=="DIV";){if(getComputedStyle(l).display==="none")return!0;l=l.parentElement}return!1}updateColumnsWidth(){var t;if(!ot)return;const l=this.fit,n=(t=this.table.vnode.el)==null?void 0:t.clientWidth;let a=0;const s=this.getFlattenColumns(),u=s.filter(i=>!at(i.width));if(s.forEach(i=>{at(i.width)&&i.realWidth&&(i.realWidth=null)}),u.length>0&&l){if(s.forEach(i=>{a+=Number(i.width||i.minWidth||80)}),a<=n){this.scrollX.value=!1;const i=n-a;if(u.length===1)u[0].realWidth=Number(u[0].minWidth||80)+i;else{const c=u.reduce((d,p)=>d+Number(p.minWidth||80),0),f=i/c;let v=0;u.forEach((d,p)=>{if(p===0)return;const m=Math.floor(Number(d.minWidth||80)*f);v+=m,d.realWidth=Number(d.minWidth||80)+m}),u[0].realWidth=Number(u[0].minWidth||80)+i-v}}else this.scrollX.value=!0,u.forEach(i=>{i.realWidth=Number(i.minWidth)});this.bodyWidth.value=Math.max(a,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else s.forEach(i=>{!i.width&&!i.minWidth?i.realWidth=80:i.realWidth=Number(i.width||i.minWidth),a+=i.realWidth}),this.scrollX.value=a>n,this.bodyWidth.value=a;const o=this.store.states.fixedColumns.value;if(o.length>0){let i=0;o.forEach(c=>{i+=Number(c.realWidth||c.width)}),this.fixedWidth.value=i}const r=this.store.states.rightFixedColumns.value;if(r.length>0){let i=0;r.forEach(c=>{i+=Number(c.realWidth||c.width)}),this.rightFixedWidth.value=i}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const l=this.observers.indexOf(t);l!==-1&&this.observers.splice(l,1)}notifyObservers(t){this.observers.forEach(n=>{var a,s;switch(t){case"columns":(a=n.state)==null||a.onColumnsChange(this);break;case"scrollable":(s=n.state)==null||s.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const ri=le({name:"ElTableFilterPanel",components:{ElCheckbox:Lt,ElCheckboxGroup:co,ElScrollbar:Pn,ElTooltip:tl,ElIcon:We,ArrowDown:Rn,ArrowUp:Ja},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:_o.appendTo},setup(e){const t=Se(),{t:l}=Ft(),n=re("table-filter"),a=t?.parent;e.column&&!a.filterPanels.value[e.column.id]&&(a.filterPanels.value[e.column.id]=t);const s=S(null),u=S(null),o=S(0),r=I(()=>e.column&&e.column.filters),i=I(()=>e.column&&e.column.filterClassName?`${n.b()} ${e.column.filterClassName}`:n.b()),c=I({get:()=>{var C;return(((C=e.column)==null?void 0:C.filteredValue)||[])[0]},set:C=>{f.value&&(gt(C)?f.value.splice(0,1):f.value.splice(0,1,C))}}),f=I({get(){return e.column?e.column.filteredValue||[]:[]},set(C){var _;e.column&&((_=e.upDataColumn)==null||_.call(e,"filteredValue",C))}}),v=I(()=>e.column?e.column.filterMultiple:!0),d=C=>C.value===c.value,p=()=>{var C;(C=s.value)==null||C.onClose()},m=()=>{O(f.value),p()},w=()=>{f.value=[],O(f.value),p()},P=(C,_)=>{c.value=C,o.value=_,gt(C)?O([]):O(f.value),p()},O=C=>{var _,L;(_=e.store)==null||_.commit("filterChange",{column:e.column,values:C}),(L=e.store)==null||L.updateAllSelected()},E=()=>{var C,_;(C=u.value)==null||C.focus(),!v.value&&g(),e.column&&((_=e.upDataColumn)==null||_.call(e,"filterOpened",!0))},h=()=>{var C;e.column&&((C=e.upDataColumn)==null||C.call(e,"filterOpened",!1))},g=()=>{if(gt(c)){o.value=0;return}const C=(r.value||[]).findIndex(_=>_.value===c.value);o.value=C>=0?C+1:0};return{multiple:v,filterClassName:i,filteredValue:f,filterValue:c,filters:r,handleConfirm:m,handleReset:w,handleSelect:P,isPropAbsent:gt,isActive:d,t:l,ns:n,tooltipRef:s,rootRef:u,checkedIndex:o,handleShowTooltip:E,handleHideTooltip:h,handleKeydown:C=>{var _,L;const F=Ct(C),V=(r.value?r.value.length:0)+1;let B=o.value,G=!0;switch(F){case ve.down:case ve.right:B=(B+1)%V;break;case ve.up:case ve.left:B=(B-1+V)%V;break;case ve.tab:p(),G=!1;break;case ve.enter:case ve.space:if(B===0)P(null,0);else{const Y=(r.value||[])[B-1];Y.value&&P(Y.value,B)}break;default:G=!1;break}G&&C.preventDefault(),o.value=B,(L=(_=u.value)==null?void 0:_.querySelector(`.${n.e("list-item")}:nth-child(${B+1})`))==null||L.focus()}}}});function ii(e,t,l,n,a,s){const u=Ie("el-checkbox"),o=Ie("el-checkbox-group"),r=Ie("el-scrollbar"),i=Ie("arrow-up"),c=Ie("arrow-down"),f=Ie("el-icon"),v=Ie("el-tooltip");return z(),de(v,{ref:"tooltipRef",offset:0,placement:e.placement,"show-arrow":!1,trigger:"click",role:"dialog",teleported:"",effect:"light",pure:"",loop:"","popper-class":e.filterClassName,persistent:"","append-to":e.appendTo,onShow:e.handleShowTooltip,onHide:e.handleHideTooltip},{content:A(()=>[e.multiple?(z(),te("div",{key:0,ref:"rootRef",tabindex:"-1",class:Q(e.ns.e("multiple"))},[D("div",{class:Q(e.ns.e("content"))},[M(r,{"wrap-class":e.ns.e("wrap")},{default:A(()=>[M(o,{modelValue:e.filteredValue,"onUpdate:modelValue":d=>e.filteredValue=d,class:Q(e.ns.e("checkbox-group"))},{default:A(()=>[(z(!0),te(He,null,Pt(e.filters,d=>(z(),de(u,{key:d.value,value:d.value},{default:A(()=>[ce(be(d.text),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","class"])]),_:1},8,["wrap-class"])],2),D("div",{class:Q(e.ns.e("bottom"))},[D("button",{class:Q(e.ns.is("disabled",e.filteredValue.length===0)),disabled:e.filteredValue.length===0,type:"button",onClick:e.handleConfirm},be(e.t("el.table.confirmFilter")),11,["disabled","onClick"]),D("button",{type:"button",onClick:e.handleReset},be(e.t("el.table.resetFilter")),9,["onClick"])],2)],2)):(z(),te("ul",{key:1,ref:"rootRef",tabindex:"-1",role:"radiogroup",class:Q(e.ns.e("list")),onKeydown:e.handleKeydown},[D("li",{role:"radio",class:Q([e.ns.e("list-item"),e.ns.is("active",e.isPropAbsent(e.filterValue))]),tabindex:e.checkedIndex===0?0:-1,"aria-checked":e.isPropAbsent(e.filterValue),onClick:d=>e.handleSelect(null,0)},be(e.t("el.table.clearFilter")),11,["tabindex","aria-checked","onClick"]),(z(!0),te(He,null,Pt(e.filters,(d,p)=>(z(),te("li",{key:d.value,role:"radio",class:Q([e.ns.e("list-item"),e.ns.is("active",e.isActive(d))]),tabindex:e.checkedIndex===p+1?0:-1,"aria-checked":e.isActive(d),onClick:m=>e.handleSelect(d.value,p+1)},be(d.text),11,["tabindex","aria-checked","onClick"]))),128))],42,["onKeydown"]))]),default:A(()=>{var d;return[D("button",{type:"button",class:Q(`${e.ns.namespace.value}-table__column-filter-trigger`),"aria-label":e.t("el.table.filterLabel",{column:((d=e.column)==null?void 0:d.label)||""})},[M(f,null,{default:A(()=>[ue(e.$slots,"filter-icon",{},()=>{var p;return[(p=e.column)!=null&&p.filterOpened?(z(),de(i,{key:0})):(z(),de(c,{key:1}))]})]),_:3})],10,["aria-label"])]}),_:3},8,["placement","popper-class","append-to","onShow","onHide"])}var ui=xe(ri,[["render",ii],["__file","filter-panel.vue"]]);function Jl(e){const t=Se();Vn(()=>{l.value.addObserver(t)}),Ue(()=>{n(l.value),a(l.value)}),zn(()=>{n(l.value),a(l.value)}),Dl(()=>{l.value.removeObserver(t)});const l=I(()=>{const s=e.layout;if(!s)throw new Error("Can not find table layout.");return s}),n=s=>{var u;const o=((u=e.vnode.el)==null?void 0:u.querySelectorAll("colgroup > col"))||[];if(!o.length)return;const r=s.getFlattenColumns(),i={};r.forEach(c=>{i[c.id]=c});for(let c=0,f=o.length;c{var u,o;const r=((u=e.vnode.el)==null?void 0:u.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let c=0,f=r.length;c{m.stopPropagation()},s=(m,w)=>{!w.filters&&w.sortable?p(m,w,!1):w.filterable&&!w.sortable&&a(m),n?.emit("header-click",w,m)},u=(m,w)=>{n?.emit("header-contextmenu",w,m)},o=S(null),r=S(!1),i=S(),c=(m,w)=>{var P,O;if(ot&&!(w.children&&w.children.length>0)&&o.value&&e.border&&o.value.id===w.id){r.value=!0;const E=n;t("set-drag-visible",!0);const h=E?.vnode.el,g=h?.getBoundingClientRect().left,x=(O=(P=l?.vnode)==null?void 0:P.el)==null?void 0:O.querySelector(`th.${w.id}`),C=x.getBoundingClientRect(),_=C.left-g+30;Xe(x,"noclick"),i.value={startMouseLeft:m.clientX,startLeft:C.right-g,startColumnLeft:C.left-g,tableLeft:g};const L=E?.refs.resizeProxy;L.style.left=`${i.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const F=B=>{const G=B.clientX-i.value.startMouseLeft,Y=i.value.startLeft+G;L.style.left=`${Math.max(_,Y)}px`},V=()=>{if(r.value){const{startColumnLeft:B,startLeft:G}=i.value,ie=Number.parseInt(L.style.left,10)-B;w.width=w.realWidth=ie,E?.emit("header-dragend",w.width,G-B,w,m),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",r.value=!1,o.value=null,i.value=void 0,t("set-drag-visible",!1)}document.removeEventListener("mousemove",F),document.removeEventListener("mouseup",V),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{Ve(x,"noclick")},0)};document.addEventListener("mousemove",F),document.addEventListener("mouseup",V)}},f=(m,w)=>{var P;if(!e.border||w.children&&w.children.length>0)return;const O=m.target,E=Qa(O)?O.closest("th"):null;if(!E)return;const h=Ot(E,"is-sortable");if(h){const F=r.value?"col-resize":"";E.style.cursor=F;const V=E.querySelector(".caret-wrapper");V&&(V.style.cursor=F)}if(!w.resizable||r.value){o.value=null;return}const g=E.getBoundingClientRect(),x=((P=E.parentNode)==null?void 0:P.lastElementChild)===E,C=e.allowDragLastColumn||!x,_=g.width>12&&g.right-m.clientX<8&&C,L=_?"col-resize":"";document.body.style.cursor=L,o.value=_?w:null,h&&(E.style.cursor=L)},v=()=>{!ot||r.value||(document.body.style.cursor="")},d=({order:m,sortOrders:w})=>{if(m==="")return w[0];const P=w.indexOf(m||null);return w[P>w.length-2?0:P+1]},p=(m,w,P)=>{var O;m.stopPropagation();const E=w.order===P?null:P||d(w),h=(O=m.target)==null?void 0:O.closest("th");if(h&&Ot(h,"noclick")){Ve(h,"noclick");return}if(!w.sortable)return;const g=m.currentTarget;if(["ascending","descending"].some(F=>Ot(g,F)&&!w.sortOrders.includes(F)))return;const x=e.store.states;let C=x.sortProp.value,_;const L=x.sortingColumn.value;(L!==w||L===w&&Bt(L.order))&&(L&&(L.order=null),x.sortingColumn.value=w,C=w.property),E?_=w.order=E:_=w.order=null,x.sortProp.value=C,x.sortOrder.value=_,n?.store.commit("changeSortCondition")};return{handleHeaderClick:s,handleHeaderContextMenu:u,handleMouseDown:c,handleMouseMove:f,handleMouseOut:v,handleSortClick:p,handleFilterClick:a}}function ci(e){const t=_e(je),l=re("table");return{getHeaderRowStyle:o=>{const r=t?.props.headerRowStyle;return Be(r)?r.call(null,{rowIndex:o}):r},getHeaderRowClass:o=>{const r=[],i=t?.props.headerRowClassName;return ye(i)?r.push(i):Be(i)&&r.push(i.call(null,{rowIndex:o})),r.join(" ")},getHeaderCellStyle:(o,r,i,c)=>{var f;let v=(f=t?.props.headerCellStyle)!=null?f:{};Be(v)&&(v=v.call(null,{rowIndex:o,columnIndex:r,row:i,column:c}));const d=Xl(r,c.fixed,e.store,i);return _t(d,"left"),_t(d,"right"),Object.assign({},v,d)},getHeaderCellClass:(o,r,i,c)=>{const f=Yl(l.b(),r,c.fixed,e.store,i),v=[c.id,c.order,c.headerAlign,c.className,c.labelClassName,...f];c.children||v.push("is-leaf"),c.sortable&&v.push("is-sortable");const d=t?.props.headerCellClassName;return ye(d)?v.push(d):Be(d)&&v.push(d.call(null,{rowIndex:o,columnIndex:r,row:i,column:c})),v.push(l.e("cell")),v.filter(p=>!!p).join(" ")}}}const fa=e=>{const t=[];return e.forEach(l=>{l.children?(t.push(l),t.push.apply(t,fa(l.children))):t.push(l)}),t},va=e=>{let t=1;const l=(s,u)=>{if(u&&(s.level=u.level+1,t{l(r,s),o+=r.colSpan}),s.colSpan=o}else s.colSpan=1};e.forEach(s=>{s.level=1,l(s,void 0)});const n=[];for(let s=0;s{s.children?(s.rowSpan=1,s.children.forEach(u=>u.isSubColumn=!0)):s.rowSpan=t-s.level+1,n[s.level-1].push(s)}),n};function fi(e){const t=_e(je),l=I(()=>va(e.store.states.originColumns.value));return{isGroup:I(()=>{const s=l.value.length>1;return s&&t&&(t.state.isGroup.value=!0),s}),toggleAllSelection:s=>{s.stopPropagation(),t?.store.commit("toggleAllSelection")},columnRows:l}}var vi=le({name:"ElTableHeader",components:{ElCheckbox:Lt},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})},appendFilterPanelTo:{type:String},allowDragLastColumn:{type:Boolean}},setup(e,{emit:t}){const l=Se(),n=_e(je),a=re("table"),s=S({}),{onColumnsChange:u,onScrollableChange:o}=Jl(n),r=n?.props.tableLayout==="auto",i=Qe(new Map),c=S();let f;const v=()=>{f=setTimeout(()=>{i.size>0&&(i.forEach((B,G)=>{const Y=c.value.querySelector(`.${G.replace(/\s/g,".")}`);if(Y){const ie=Y.getBoundingClientRect().width;B.width=ie||B.width}}),i.clear())})};pe(i,v),et(()=>{f&&(clearTimeout(f),f=void 0)}),Ue(async()=>{await $e(),await $e();const{prop:B,order:G}=e.defaultSort;n?.store.commit("sort",{prop:B,order:G,init:!0}),v()});const{handleHeaderClick:d,handleHeaderContextMenu:p,handleMouseDown:m,handleMouseMove:w,handleMouseOut:P,handleSortClick:O,handleFilterClick:E}=di(e,t),{getHeaderRowStyle:h,getHeaderRowClass:g,getHeaderCellStyle:x,getHeaderCellClass:C}=ci(e),{isGroup:_,toggleAllSelection:L,columnRows:F}=fi(e),{t:V}=Ft();return l.state={onColumnsChange:u,onScrollableChange:o},l.filterPanels=s,{ns:a,t:V,filterPanels:s,onColumnsChange:u,onScrollableChange:o,columnRows:F,getHeaderRowClass:g,getHeaderRowStyle:h,getHeaderCellClass:C,getHeaderCellStyle:x,handleHeaderClick:d,handleHeaderContextMenu:p,handleMouseDown:m,handleMouseMove:w,handleMouseOut:P,handleSortClick:O,handleFilterClick:E,isGroup:_,toggleAllSelection:L,saveIndexSelection:i,isTableLayoutAuto:r,theadRef:c,updateFixedColumnStyle:v}},render(){const{ns:e,t,isGroup:l,columnRows:n,getHeaderCellStyle:a,getHeaderCellClass:s,getHeaderRowClass:u,getHeaderRowStyle:o,handleHeaderClick:r,handleHeaderContextMenu:i,handleMouseDown:c,handleMouseMove:f,handleSortClick:v,handleMouseOut:d,store:p,$parent:m,saveIndexSelection:w,isTableLayoutAuto:P}=this;let O=1;return q("thead",{ref:"theadRef",class:e.is("group",l)},n.map((E,h)=>q("tr",{class:u(h),key:h,style:o(h)},E.map((g,x)=>{g.rowSpan>O&&(O=g.rowSpan);const C=s(h,x,E,g);return P&&g.fixed&&w.set(C,g),q("th",{class:C,colspan:g.colSpan,key:`${g.id}-thead`,rowspan:g.rowSpan,scope:g.colSpan>1?"colgroup":"col",style:a(h,x,E,g),onClick:_=>{var L;(L=_.currentTarget)!=null&&L.classList.contains("noclick")||r(_,g)},onContextmenu:_=>i(_,g),onMousedown:_=>c(_,g),onMousemove:_=>f(_,g),onMouseout:d},[q("div",{class:["cell",g.filteredValue&&g.filteredValue.length>0?"highlight":""]},[g.renderHeader?g.renderHeader({column:g,$index:x,store:p,_self:m}):g.label,g.sortable&&q("button",{type:"button",class:"caret-wrapper","aria-label":t("el.table.sortLabel",{column:g.label||""}),onClick:_=>v(_,g)},[q("i",{onClick:_=>v(_,g,"ascending"),class:"sort-caret ascending"}),q("i",{onClick:_=>v(_,g,"descending"),class:"sort-caret descending"})]),g.filterable&&q(ui,{store:p,placement:g.filterPlacement||"bottom-start",appendTo:m?.appendFilterPanelTo,column:g,upDataColumn:(_,L)=>{g[_]=L}},{"filter-icon":()=>g.renderFilterIcon?g.renderFilterIcon({filterOpened:g.filterOpened}):null})])])}))))}});function Cl(e,t,l=.03){return e-t>l}function pi(e){const t=_e(je),l=S(""),n=S(q("div")),a=(p,m,w)=>{var P,O,E;const h=t,g=yl(p);let x=null;const C=(P=h?.vnode.el)==null?void 0:P.dataset.prefix;g&&(x=hn({columns:(E=(O=e.store)==null?void 0:O.states.columns.value)!=null?E:[]},g,C),x&&h?.emit(`cell-${w}`,m,x,g,p)),h?.emit(`row-${w}`,m,x,p)},s=(p,m)=>{a(p,m,"dblclick")},u=(p,m)=>{var w;(w=e.store)==null||w.commit("setCurrentRow",m),a(p,m,"click")},o=(p,m)=>{a(p,m,"contextmenu")},r=Qt(p=>{var m;(m=e.store)==null||m.commit("setHoverRow",p)},30),i=Qt(()=>{var p;(p=e.store)==null||p.commit("setHoverRow",null)},30),c=p=>{const m=window.getComputedStyle(p,null),w=Number.parseInt(m.paddingLeft,10)||0,P=Number.parseInt(m.paddingRight,10)||0,O=Number.parseInt(m.paddingTop,10)||0,E=Number.parseInt(m.paddingBottom,10)||0;return{left:w,right:P,top:O,bottom:E}},f=(p,m,w)=>{var P;let O=(P=m?.target)==null?void 0:P.parentNode;for(;p>1&&(O=O?.nextSibling,!(!O||O.nodeName!=="TR"));)w(O,"hover-row hover-fixed-row"),p--};return{handleDoubleClick:s,handleClick:u,handleContextMenu:o,handleMouseEnter:r,handleMouseLeave:i,handleCellMouseEnter:(p,m,w)=>{var P,O,E,h,g,x,C,_,L;if(!t)return;const F=t,V=yl(p),B=(P=F?.vnode.el)==null?void 0:P.dataset.prefix;let G=null;if(V){if(G=hn({columns:(E=(O=e.store)==null?void 0:O.states.columns.value)!=null?E:[]},V,B),!G)return;V.rowSpan>1&&f(V.rowSpan,p,Xe);const ne=F.hoverState={cell:V,column:G,row:m};F?.emit("cell-mouse-enter",ne.row,ne.column,ne.cell,p)}if(!w){((h=Ne)==null?void 0:h.trigger)===V&&((g=Ne)==null||g());return}const Y=p.target.querySelector(".cell");if(!(Ot(Y,`${B}-tooltip`)&&Y.childNodes.length&&((x=Y.textContent)!=null&&x.trim())))return;const ie=document.createRange();ie.setStart(Y,0),ie.setEnd(Y,Y.childNodes.length);const{width:J,height:N}=ie.getBoundingClientRect(),{width:$,height:H}=Y.getBoundingClientRect(),{top:k,left:W,right:R,bottom:K}=c(Y),U=W+R,ee=k+K;Cl(J+U,$)||Cl(N+ee,H)||Cl(Y.scrollWidth,$)?Jr(w,(C=V?.innerText||V?.textContent)!=null?C:"",m,G,V,F):((_=Ne)==null?void 0:_.trigger)===V&&((L=Ne)==null||L())},handleCellMouseLeave:p=>{const m=yl(p);if(!m)return;m.rowSpan>1&&f(m.rowSpan,p,Ve);const w=t?.hoverState;t?.emit("cell-mouse-leave",w?.row,w?.column,w?.cell,p)},tooltipContent:l,tooltipTrigger:n}}function mi(e){const t=_e(je),l=re("table");return{getRowStyle:(i,c)=>{const f=t?.props.rowStyle;return Be(f)?f.call(null,{row:i,rowIndex:c}):f||null},getRowClass:(i,c,f)=>{var v;const d=[l.e("row")];t?.props.highlightCurrentRow&&i===((v=e.store)==null?void 0:v.states.currentRow.value)&&d.push("current-row"),e.stripe&&f%2===1&&d.push(l.em("row","striped"));const p=t?.props.rowClassName;return ye(p)?d.push(p):Be(p)&&d.push(p.call(null,{row:i,rowIndex:c})),d},getCellStyle:(i,c,f,v)=>{const d=t?.props.cellStyle;let p=d??{};Be(d)&&(p=d.call(null,{rowIndex:i,columnIndex:c,row:f,column:v}));const m=Xl(c,e?.fixed,e.store);return _t(m,"left"),_t(m,"right"),Object.assign({},p,m)},getCellClass:(i,c,f,v,d)=>{const p=Yl(l.b(),c,e?.fixed,e.store,void 0,d),m=[v.id,v.align,v.className,...p],w=t?.props.cellClassName;return ye(w)?m.push(w):Be(w)&&m.push(w.call(null,{rowIndex:i,columnIndex:c,row:f,column:v})),m.push(l.e("cell")),m.filter(P=>!!P).join(" ")},getSpan:(i,c,f,v)=>{let d=1,p=1;const m=t?.props.spanMethod;if(Be(m)){const w=m({row:i,column:c,rowIndex:f,columnIndex:v});Me(w)?(d=w[0],p=w[1]):ct(w)&&(d=w.rowspan,p=w.colspan)}return{rowspan:d,colspan:p}},getColspanRealWidth:(i,c,f)=>{if(c<1)return i[f].realWidth;const v=i.map(({realWidth:d,width:p})=>d||p).slice(f,f+c);return Number(v.reduce((d,p)=>Number(d)+Number(p),-1))}}}const hi=le({name:"TableTdWrapper"}),gi=le({...hi,props:{colspan:{type:Number,default:1},rowspan:{type:Number,default:1}},setup(e){return(t,l)=>(z(),te("td",{colspan:e.colspan,rowspan:e.rowspan},[ue(t.$slots,"default")],8,["colspan","rowspan"]))}});var bi=xe(gi,[["__file","td-wrapper.vue"]]);function yi(e){const t=_e(je),l=re("table"),{handleDoubleClick:n,handleClick:a,handleContextMenu:s,handleMouseEnter:u,handleMouseLeave:o,handleCellMouseEnter:r,handleCellMouseLeave:i,tooltipContent:c,tooltipTrigger:f}=pi(e),{getRowStyle:v,getRowClass:d,getCellStyle:p,getCellClass:m,getSpan:w,getColspanRealWidth:P}=mi(e);let O=-1;const E=I(()=>{var _;return(_=e.store)==null?void 0:_.states.columns.value.findIndex(({type:L})=>L==="default")}),h=(_,L)=>{var F;const V=(F=t?.props)==null?void 0:F.rowKey;return V?Ee(_,V):L},g=(_,L,F,V=!1)=>{const{tooltipEffect:B,tooltipOptions:G,store:Y}=e,{indent:ie,columns:J}=Y.states,N=[];let $=!0;return F&&(N.push(l.em("row",`level-${F.level}`)),$=!!F.display),L===0&&(O=-1),e.stripe&&$&&O++,N.push(...d(_,L,O)),q("tr",{style:[$?null:{display:"none"},v(_,L)],class:N,key:h(_,L),onDblclick:k=>n(k,_),onClick:k=>a(k,_),onContextmenu:k=>s(k,_),onMouseenter:()=>u(L),onMouseleave:o},J.value.map((k,W)=>{const{rowspan:R,colspan:K}=w(_,k,L,W);if(!R||!K)return null;const U=Object.assign({},k);U.realWidth=P(J.value,K,W);const ee={store:Y,_self:e.context||t,column:U,row:_,$index:L,cellIndex:W,expanded:V};W===E.value&&F&&(ee.treeNode={indent:F.level&&F.level*ie.value,level:F.level},lt(F.expanded)&&(ee.treeNode.expanded=F.expanded,"loading"in F&&(ee.treeNode.loading=F.loading),"noLazyChildren"in F&&(ee.treeNode.noLazyChildren=F.noLazyChildren)));const ne=`${h(_,L)},${W}`,me=U.columnKey||U.rawColumnKey||"",Ce=k.showOverflowTooltip&&jn({effect:B},G,k.showOverflowTooltip);return q(bi,{style:p(L,W,_,k),class:m(L,W,_,k,K-1),key:`${me}${ne}`,rowspan:R,colspan:K,onMouseenter:ke=>r(ke,_,Ce),onMouseleave:i},{default:()=>x(W,k,ee)})}))},x=(_,L,F)=>L.renderCell(F);return{wrappedRowRender:(_,L)=>{const F=e.store,{isRowExpanded:V,assertRowKey:B}=F,{treeData:G,lazyTreeNodeMap:Y,childrenColumnName:ie,rowKey:J}=F.states,N=F.states.columns.value;if(N.some(({type:H})=>H==="expand")){const H=V(_),k=g(_,L,void 0,H),W=t?.renderExpanded;if(!W)return console.error("[Element Error]renderExpanded is required."),k;const R=[[k]];return(t.props.preserveExpandedContent||H)&&R[0].push(q("tr",{key:`expanded-row__${k.key}`,style:{display:H?"":"none"}},[q("td",{colspan:N.length,class:`${l.e("cell")} ${l.e("expanded-cell")}`},[W({row:_,$index:L,store:F,expanded:H})])])),R}else if(Object.keys(G.value).length){B();const H=Ee(_,J.value);let k=G.value[H],W=null;k&&(W={expanded:k.expanded,level:k.level,display:!0,noLazyChildren:void 0,loading:void 0},lt(k.lazy)&&(W&<(k.loaded)&&k.loaded&&(W.noLazyChildren=!(k.children&&k.children.length)),W.loading=k.loading));const R=[g(_,L,W??void 0)];if(k){let K=0;const U=(ne,me)=>{ne&&ne.length&&me&&ne.forEach(Ce=>{const ke={display:me.display&&me.expanded,level:me.level+1,expanded:!1,noLazyChildren:!1,loading:!1},Pe=Ee(Ce,J.value);if(gt(Pe))throw new Error("For nested data item, row-key is required.");if(k={...G.value[Pe]},k&&(ke.expanded=k.expanded,k.level=k.level||ke.level,k.display=!!(k.expanded&&ke.display),lt(k.lazy)&&(lt(k.loaded)&&k.loaded&&(ke.noLazyChildren=!(k.children&&k.children.length)),ke.loading=k.loading)),K++,R.push(g(Ce,L+K,ke)),k){const Ke=Y.value[Pe]||Ce[ie.value];U(Ke,k)}})};k.display=!0;const ee=Y.value[H]||_[ie.value];U(ee,k)}return R}else return g(_,L,void 0)},tooltipContent:c,tooltipTrigger:f}}const Ci={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var wi=le({name:"ElTableBody",props:Ci,setup(e){var t;const l=Se(),n=_e(je),a=re("table"),{wrappedRowRender:s,tooltipContent:u,tooltipTrigger:o}=yi(e),{onColumnsChange:r,onScrollableChange:i}=Jl(n),c=[];return pe((t=e.store)==null?void 0:t.states.hoverRow,(f,v)=>{var d,p;const m=l?.vnode.el,w=Array.from(m?.children||[]).filter(E=>E?.classList.contains(`${a.e("row")}`));let P=f;const O=(d=w[P])==null?void 0:d.childNodes;if(O?.length){let E=0;Array.from(O).reduce((g,x,C)=>{var _,L;return((_=O[C])==null?void 0:_.colSpan)>1&&(E=(L=O[C])==null?void 0:L.colSpan),x.nodeName!=="TD"&&E===0&&g.push(C),E>0&&E--,g},[]).forEach(g=>{var x;for(P=f;P>0;){const C=(x=w[P-1])==null?void 0:x.childNodes;if(C[g]&&C[g].nodeName==="TD"&&C[g].rowSpan>1){Xe(C[g],"hover-cell"),c.push(C[g]);break}P--}})}else c.forEach(E=>Ve(E,"hover-cell")),c.length=0;!((p=e.store)!=null&&p.states.isComplex.value)||!ot||qn(()=>{const E=w[v],h=w[f];E&&!E.classList.contains("hover-fixed-row")&&Ve(E,"hover-row"),h&&Xe(h,"hover-row")})}),Dl(()=>{var f;(f=Ne)==null||f()}),{ns:a,onColumnsChange:r,onScrollableChange:i,wrappedRowRender:s,tooltipContent:u,tooltipTrigger:o}},render(){const{wrappedRowRender:e,store:t}=this,l=t?.states.data.value||[];return q("tbody",{tabIndex:-1},[l.reduce((n,a)=>n.concat(e(a,n.length)),[])])}});function Si(){const e=_e(je),t=e?.store,l=I(()=>{var o;return(o=t?.states.fixedLeafColumnsLength.value)!=null?o:0}),n=I(()=>{var o;return(o=t?.states.rightFixedColumns.value.length)!=null?o:0}),a=I(()=>{var o;return(o=t?.states.columns.value.length)!=null?o:0}),s=I(()=>{var o;return(o=t?.states.fixedColumns.value.length)!=null?o:0}),u=I(()=>{var o;return(o=t?.states.rightFixedColumns.value.length)!=null?o:0});return{leftFixedLeafCount:l,rightFixedLeafCount:n,columnsCount:a,leftFixedCount:s,rightFixedCount:u,columns:I(()=>{var o;return(o=t?.states.columns.value)!=null?o:[]})}}function _i(e){const{columns:t}=Si(),l=re("table");return{getCellClasses:(s,u)=>{const o=s[u],r=[l.e("cell"),o.id,o.align,o.labelClassName,...Yl(l.b(),u,o.fixed,e.store)];return o.className&&r.push(o.className),o.children||r.push(l.is("leaf")),r},getCellStyles:(s,u)=>{const o=Xl(u,s.fixed,e.store);return _t(o,"left"),_t(o,"right"),o},columns:t}}var xi=le({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const t=_e(je),l=re("table"),{getCellClasses:n,getCellStyles:a,columns:s}=_i(e),{onScrollableChange:u,onColumnsChange:o}=Jl(t);return{ns:l,onScrollableChange:u,onColumnsChange:o,getCellClasses:n,getCellStyles:a,columns:s}},render(){const{columns:e,getCellStyles:t,getCellClasses:l,summaryMethod:n,sumText:a}=this,s=this.store.states.data.value;let u=[];return n?u=n({columns:e,data:s}):e.forEach((o,r)=>{if(r===0){u[r]=a;return}const i=s.map(d=>Number(d[o.property])),c=[];let f=!0;i.forEach(d=>{if(!Number.isNaN(+d)){f=!1;const p=`${d}`.split(".")[1];c.push(p?p.length:0)}});const v=Math.max.apply(null,c);f?u[r]="":u[r]=i.reduce((d,p)=>{const m=Number(p);return Number.isNaN(+m)?d:Number.parseFloat((d+p).toFixed(Math.min(v,20)))},0)}),q(q("tfoot",[q("tr",{},[...e.map((o,r)=>q("td",{key:r,colspan:o.colSpan,rowspan:o.rowSpan,class:l(e,r),style:t(o,r)},[q("div",{class:["cell",o.labelClassName]},[u[r]])]))])]))}});function Ei(e){return{setCurrentRow:f=>{e.commit("setCurrentRow",f)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(f,v,d=!0)=>{e.toggleRowSelection(f,v,!1,d),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:f=>{e.clearFilter(f)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(f,v)=>{e.toggleRowExpansionAdapter(f,v)},clearSort:()=>{e.clearSort()},sort:(f,v)=>{e.commit("sort",{prop:f,order:v})},updateKeyChildren:(f,v)=>{e.updateKeyChildren(f,v)}}}function ki(e,t,l,n){const a=S(!1),s=S(null),u=S(!1),o=N=>{u.value=N},r=S({width:null,height:null,headerHeight:null}),i=S(!1),c={display:"inline-block",verticalAlign:"middle"},f=S(),v=S(0),d=S(0),p=S(0),m=S(0),w=S(0);pe(()=>e.height,N=>{t.setHeight(N??null)},{immediate:!0}),pe(()=>e.maxHeight,N=>{t.setMaxHeight(N??null)},{immediate:!0}),pe(()=>[e.currentRowKey,l.states.rowKey],([N,$])=>{!y($)||!y(N)||l.setCurrentRowKey(`${N}`)},{immediate:!0}),pe(()=>e.data,N=>{n.store.commit("setData",N)},{immediate:!0,deep:!0}),Jt(()=>{e.expandRowKeys&&l.setExpandRowKeysAdapter(e.expandRowKeys)});const P=()=>{n.store.commit("setHoverRow",null),n.hoverState&&(n.hoverState=null)},O=(N,$)=>{const{pixelX:H,pixelY:k}=$;Math.abs(H)>=Math.abs(k)&&(n.refs.bodyWrapper.scrollLeft+=$.pixelX/5)},E=I(()=>e.height||e.maxHeight||l.states.fixedColumns.value.length>0||l.states.rightFixedColumns.value.length>0),h=I(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),g=()=>{E.value&&t.updateElsHeight(),t.updateColumnsWidth(),!(typeof window>"u")&&requestAnimationFrame(L)};Ue(async()=>{await $e(),l.updateColumns(),F(),requestAnimationFrame(g);const N=n.vnode.el,$=n.refs.headerWrapper;e.flexible&&N&&N.parentElement&&(N.parentElement.style.minWidth="0"),r.value={width:f.value=N.offsetWidth,height:N.offsetHeight,headerHeight:e.showHeader&&$?$.offsetHeight:null},l.states.columns.value.forEach(H=>{H.filteredValue&&H.filteredValue.length&&n.store.commit("filterChange",{column:H,values:H.filteredValue,silent:!0})}),n.$ready=!0});const x=(N,$)=>{if(!N)return;const H=Array.from(N.classList).filter(k=>!k.startsWith("is-scrolling-"));H.push(t.scrollX.value?$:"is-scrolling-none"),N.className=H.join(" ")},C=N=>{const{tableWrapper:$}=n.refs;x($,N)},_=N=>{const{tableWrapper:$}=n.refs;return!!($&&$.classList.contains(N))},L=function(){if(!n.refs.scrollBarRef)return;if(!t.scrollX.value){const U="is-scrolling-none";_(U)||C(U);return}const N=n.refs.scrollBarRef.wrapRef;if(!N)return;const{scrollLeft:$,offsetWidth:H,scrollWidth:k}=N,{headerWrapper:W,footerWrapper:R}=n.refs;W&&(W.scrollLeft=$),R&&(R.scrollLeft=$);const K=k-H-1;$>=K?C("is-scrolling-right"):C($===0?"is-scrolling-left":"is-scrolling-middle")},F=()=>{n.refs.scrollBarRef&&(n.refs.scrollBarRef.wrapRef&&$t(n.refs.scrollBarRef.wrapRef,"scroll",L,{passive:!0}),e.fit?wt(n.vnode.el,V):$t(window,"resize",V),wt(n.refs.tableInnerWrapper,()=>{var N,$;V(),($=(N=n.refs)==null?void 0:N.scrollBarRef)==null||$.update()}))},V=()=>{var N,$,H,k;const W=n.vnode.el;if(!n.$ready||!W)return;let R=!1;const{width:K,height:U,headerHeight:ee}=r.value,ne=f.value=W.offsetWidth;K!==ne&&(R=!0);const me=W.offsetHeight;(e.height||E.value)&&U!==me&&(R=!0);const Ce=e.tableLayout==="fixed"?n.refs.headerWrapper:(N=n.refs.tableHeaderRef)==null?void 0:N.$el;e.showHeader&&Ce?.offsetHeight!==ee&&(R=!0),v.value=(($=n.refs.tableWrapper)==null?void 0:$.scrollHeight)||0,p.value=Ce?.scrollHeight||0,m.value=((H=n.refs.footerWrapper)==null?void 0:H.offsetHeight)||0,w.value=((k=n.refs.appendWrapper)==null?void 0:k.offsetHeight)||0,d.value=v.value-p.value-m.value-w.value,R&&(r.value={width:ne,height:me,headerHeight:e.showHeader&&Ce?.offsetHeight||0},g())},B=Za(),G=I(()=>{const{bodyWidth:N,scrollY:$,gutterWidth:H}=t;return N.value?`${N.value-($.value?H:0)}px`:""}),Y=I(()=>e.maxHeight?"fixed":e.tableLayout),ie=I(()=>{if(e.data&&e.data.length)return;let N="100%";e.height&&d.value&&(N=`${d.value}px`);const $=f.value;return{width:$?`${$}px`:"",height:N}}),J=I(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${p.value+m.value}px)`}:{maxHeight:`${+e.maxHeight-p.value-m.value}px`}:{});return{isHidden:a,renderExpanded:s,setDragVisible:o,isGroup:i,handleMouseLeave:P,handleHeaderFooterMousewheel:O,tableSize:B,emptyBlockStyle:ie,resizeProxyVisible:u,bodyWidth:G,resizeState:r,doLayout:g,tableBodyStyles:h,tableLayout:Y,scrollbarViewStyle:c,scrollbarStyle:J}}function Ni(e){const t=S(),l=()=>{const a=e.vnode.el.querySelector(".hidden-columns"),s={childList:!0,subtree:!0},u=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{u.forEach(o=>o())}),t.value.observe(a,s)};Ue(()=>{l()}),Dl(()=>{var n;(n=t.value)==null||n.disconnect()})}var Ti={data:{type:Array,default:()=>[]},size:eo,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:[String,Object,Array],default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:[Boolean,Object],tooltipFormatter:Function,appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0},allowDragLastColumn:{type:Boolean,default:!0},preserveExpandedContent:Boolean,nativeScrollbar:Boolean};function pa(e){const t=e.tableLayout==="auto";let l=e.columns||[];t&&l.every(({width:a})=>Te(a))&&(l=[]);const n=a=>{const s={key:`${e.tableLayout}_${a.id}`,style:{},name:void 0};return t?s.style={width:`${a.width}px`}:s.name=a.id,s};return q("colgroup",{},l.map(a=>q("col",n(a))))}pa.props=["columns","tableLayout"];const Mi=()=>{const e=S(),t=(s,u)=>{const o=e.value;o&&o.scrollTo(s,u)},l=(s,u)=>{const o=e.value;o&&at(u)&&["Top","Left"].includes(s)&&o[`setScroll${s}`](u)};return{scrollBarRef:e,scrollTo:t,setScrollTop:s=>l("Top",s),setScrollLeft:s=>l("Left",s)}};var yn=!1,ut,Ol,$l,jt,qt,ma,Yt,Pl,Ll,Al,ha,Il,Fl,ga,ba;function Oe(){if(!yn){yn=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),l=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Il=/\b(iPhone|iP[ao]d)/.exec(e),Fl=/\b(iP[ao]d)/.exec(e),Al=/Android/i.exec(e),ga=/FBAN\/\w+;/i.exec(e),ba=/Mobile/i.exec(e),ha=!!/Win64/.exec(e),t){ut=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,ut&&document&&document.documentMode&&(ut=document.documentMode);var n=/(?:Trident\/(\d+.\d+))/.exec(e);ma=n?parseFloat(n[1])+4:ut,Ol=t[2]?parseFloat(t[2]):NaN,$l=t[3]?parseFloat(t[3]):NaN,jt=t[4]?parseFloat(t[4]):NaN,jt?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),qt=t&&t[1]?parseFloat(t[1]):NaN):qt=NaN}else ut=Ol=$l=qt=jt=NaN;if(l){if(l[1]){var a=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);Yt=a?parseFloat(a[1].replace("_",".")):!0}else Yt=!1;Pl=!!l[2],Ll=!!l[3]}else Yt=Pl=Ll=!1}}var Bl={ie:function(){return Oe()||ut},ieCompatibilityMode:function(){return Oe()||ma>ut},ie64:function(){return Bl.ie()&&ha},firefox:function(){return Oe()||Ol},opera:function(){return Oe()||$l},webkit:function(){return Oe()||jt},safari:function(){return Bl.webkit()},chrome:function(){return Oe()||qt},windows:function(){return Oe()||Pl},osx:function(){return Oe()||Yt},linux:function(){return Oe()||Ll},iphone:function(){return Oe()||Il},mobile:function(){return Oe()||Il||Fl||Al||ba},nativeApp:function(){return Oe()||ga},android:function(){return Oe()||Al},ipad:function(){return Oe()||Fl}},Ri=Bl,Oi=!!(typeof window<"u"&&window.document&&window.document.createElement),$i={canUseDOM:Oi},ya=$i,Ca;ya.canUseDOM&&(Ca=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function Pi(e,t){if(!ya.canUseDOM||t&&!("addEventListener"in document))return!1;var l="on"+e,n=l in document;if(!n){var a=document.createElement("div");a.setAttribute(l,"return;"),n=typeof a[l]=="function"}return!n&&Ca&&e==="wheel"&&(n=document.implementation.hasFeature("Events.wheel","3.0")),n}var Li=Pi,Cn=10,wn=40,Sn=800;function wa(e){var t=0,l=0,n=0,a=0;return"detail"in e&&(l=e.detail),"wheelDelta"in e&&(l=-e.wheelDelta/120),"wheelDeltaY"in e&&(l=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=l,l=0),n=t*Cn,a=l*Cn,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||a)&&e.deltaMode&&(e.deltaMode==1?(n*=wn,a*=wn):(n*=Sn,a*=Sn)),n&&!t&&(t=n<1?-1:1),a&&!l&&(l=a<1?-1:1),{spinX:t,spinY:l,pixelX:n,pixelY:a}}wa.getEventType=function(){return Ri.firefox()?"DOMMouseScroll":Li("wheel")?"wheel":"mousewheel"};var Ai=wa;const Xt="_Mousewheel",_n=function(e,t){if(e&&e.addEventListener){Sa(e);const l=function(n){const a=Ai(n);t&&Reflect.apply(t,this,[n,a])};e[Xt]={wheelHandler:l},e.addEventListener("wheel",l,{passive:!0})}},Sa=e=>{var t;(t=e[Xt])!=null&&t.wheelHandler&&(e.removeEventListener("wheel",e[Xt].wheelHandler),e[Xt]=null)},Ii={beforeMount(e,t){_n(e,t.value)},unmounted(e){Sa(e)},updated(e,t){t.value!==t.oldValue&&_n(e,t.value)}};let Fi=1;const Bi=le({name:"ElTable",directives:{Mousewheel:Ii},components:{TableHeader:vi,TableBody:wi,TableFooter:xi,ElScrollbar:Pn,hColgroup:pa},props:Ti,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change","scroll"],setup(e){const{t}=Ft(),l=re("table"),n=Se();St(je,n);const a=ai(n,e);n.store=a;const s=new si({store:n.store,table:n,fit:e.fit,showHeader:e.showHeader});n.layout=s;const u=I(()=>(a.states.data.value||[]).length===0),{setCurrentRow:o,getSelectionRows:r,toggleRowSelection:i,clearSelection:c,clearFilter:f,toggleAllSelection:v,toggleRowExpansion:d,clearSort:p,sort:m,updateKeyChildren:w}=Ei(a),{isHidden:P,renderExpanded:O,setDragVisible:E,isGroup:h,handleMouseLeave:g,handleHeaderFooterMousewheel:x,tableSize:C,emptyBlockStyle:_,resizeProxyVisible:L,bodyWidth:F,resizeState:V,doLayout:B,tableBodyStyles:G,tableLayout:Y,scrollbarViewStyle:ie,scrollbarStyle:J}=ki(e,s,a,n),{scrollBarRef:N,scrollTo:$,setScrollLeft:H,setScrollTop:k}=Mi(),W=Qt(B,50),R=`${l.namespace.value}-table_${Fi++}`;n.tableId=R,n.state={isGroup:h,resizeState:V,doLayout:B,debouncedUpdateLayout:W};const K=I(()=>{var ne;return(ne=e.sumText)!=null?ne:t("el.table.sumText")}),U=I(()=>{var ne;return(ne=e.emptyText)!=null?ne:t("el.table.emptyText")}),ee=I(()=>va(a.states.originColumns.value)[0]);return Ni(n),et(()=>{W.cancel()}),{ns:l,layout:s,store:a,columns:ee,handleHeaderFooterMousewheel:x,handleMouseLeave:g,tableId:R,tableSize:C,isHidden:P,isEmpty:u,renderExpanded:O,resizeProxyVisible:L,resizeState:V,isGroup:h,bodyWidth:F,tableBodyStyles:G,emptyBlockStyle:_,debouncedUpdateLayout:W,setCurrentRow:o,getSelectionRows:r,toggleRowSelection:i,clearSelection:c,clearFilter:f,toggleAllSelection:v,toggleRowExpansion:d,clearSort:p,doLayout:B,sort:m,updateKeyChildren:w,t,setDragVisible:E,context:n,computedSumText:K,computedEmptyText:U,tableLayout:Y,scrollbarViewStyle:ie,scrollbarStyle:J,scrollBarRef:N,scrollTo:$,setScrollLeft:H,setScrollTop:k,allowDragLastColumn:e.allowDragLastColumn}}});function Hi(e,t,l,n,a,s){const u=Ie("hColgroup"),o=Ie("table-header"),r=Ie("table-body"),i=Ie("table-footer"),c=Ie("el-scrollbar"),f=Yo("mousewheel");return z(),te("div",{ref:"tableWrapper",class:Q([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:De(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:e.handleMouseLeave},[D("div",{ref:"tableInnerWrapper",class:Q(e.ns.e("inner-wrapper"))},[D("div",{ref:"hiddenColumns",class:"hidden-columns"},[ue(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?Fe((z(),te("div",{key:0,ref:"headerWrapper",class:Q(e.ns.e("header-wrapper"))},[D("table",{ref:"tableHeader",class:Q(e.ns.e("header")),style:De(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[M(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),M(o,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,"allow-drag-last-column":e.allowDragLastColumn,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","append-filter-panel-to","allow-drag-last-column","onSetDragVisible"])],6)],2)),[[f,e.handleHeaderFooterMousewheel]]):he("v-if",!0),D("div",{ref:"bodyWrapper",class:Q(e.ns.e("body-wrapper"))},[M(c,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,native:e.nativeScrollbar,onScroll:v=>e.$emit("scroll",v)},{default:A(()=>[D("table",{ref:"tableBody",class:Q(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:De({width:e.bodyWidth,tableLayout:e.tableLayout})},[M(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(z(),de(o,{key:0,ref:"tableHeaderRef",class:Q(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,"append-filter-panel-to":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","append-filter-panel-to","onSetDragVisible"])):he("v-if",!0),M(r,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&e.tableLayout==="auto"?(z(),de(i,{key:1,class:Q(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):he("v-if",!0)],6),e.isEmpty?(z(),te("div",{key:0,ref:"emptyBlock",style:De(e.emptyBlockStyle),class:Q(e.ns.e("empty-block"))},[D("span",{class:Q(e.ns.e("empty-text"))},[ue(e.$slots,"empty",{},()=>[ce(be(e.computedEmptyText),1)])],2)],6)):he("v-if",!0),e.$slots.append?(z(),te("div",{key:1,ref:"appendWrapper",class:Q(e.ns.e("append-wrapper"))},[ue(e.$slots,"append")],2)):he("v-if",!0)]),_:3},8,["view-style","wrap-style","always","tabindex","native","onScroll"])],2),e.showSummary&&e.tableLayout==="fixed"?Fe((z(),te("div",{key:1,ref:"footerWrapper",class:Q(e.ns.e("footer-wrapper"))},[D("table",{class:Q(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:De(e.tableBodyStyles)},[M(u,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),M(i,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[dt,!e.isEmpty],[f,e.handleHeaderFooterMousewheel]]):he("v-if",!0),e.border||e.isGroup?(z(),te("div",{key:2,class:Q(e.ns.e("border-left-patch"))},null,2)):he("v-if",!0)],2),Fe(D("div",{ref:"resizeProxy",class:Q(e.ns.e("column-resize-proxy"))},null,2),[[dt,e.resizeProxyVisible]])],46,["data-prefix","onMouseleave"])}var Wi=xe(Bi,[["render",Hi],["__file","table.vue"]]);const Vi={selection:"table-column--selection",expand:"table__expand-column"},zi={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Ki=e=>Vi[e]||"",Di={selection:{renderHeader({store:e}){var t;function l(){return e.states.data.value&&e.states.data.value.length===0}return q(Lt,{disabled:l(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":(t=e.toggleAllSelection)!=null?t:void 0,modelValue:e.states.isAllSelected.value,ariaLabel:e.t("el.table.selectAllLabel")})},renderCell({row:e,column:t,store:l,$index:n}){return q(Lt,{disabled:t.selectable?!t.selectable.call(null,e,n):!1,size:l.states.tableSize.value,onChange:()=>{l.commit("rowSelectedChanged",e)},onClick:a=>a.stopPropagation(),modelValue:l.isSelected(e),ariaLabel:l.t("el.table.selectRowLabel")})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let l=t+1;const n=e.index;return at(n)?l=t+n:Be(n)&&(l=n(t)),q("div",{},[l])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({column:e,row:t,store:l,expanded:n}){const{ns:a}=l,s=[a.e("expand-icon")];!e.renderExpand&&n&&s.push(a.em("expand-icon","expanded"));const u=function(o){o.stopPropagation(),l.toggleRowExpansion(t)};return q("button",{type:"button","aria-label":l.t(n?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":n,class:s,onClick:u},{default:()=>e.renderExpand?[e.renderExpand({expanded:n})]:[q(We,null,{default:()=>[q(It)]})]})},sortable:!1,resizable:!1}};function Ui({row:e,column:t,$index:l}){var n;const a=t.property,s=a&&On(e,a).value;return t&&t.formatter?t.formatter(e,t,s,l):((n=s?.toString)==null?void 0:n.call(s))||""}function ji({row:e,treeNode:t,store:l},n=!1){const{ns:a}=l;if(!t)return n?[q("span",{class:a.e("placeholder")})]:null;const s=[],u=function(o){o.stopPropagation(),!t.loading&&l.loadOrToggle(e)};if(t.indent&&s.push(q("span",{class:a.e("indent"),style:{"padding-left":`${t.indent}px`}})),lt(t.expanded)&&!t.noLazyChildren){const o=[a.e("expand-icon"),t.expanded?a.em("expand-icon","expanded"):""];let r=It;t.loading&&(r=to),s.push(q("button",{type:"button","aria-label":l.t(t.expanded?"el.table.collapseRowLabel":"el.table.expandRowLabel"),"aria-expanded":t.expanded,class:o,onClick:u},{default:()=>[q(We,{class:a.is("loading",t.loading)},{default:()=>[q(r)]})]}))}else s.push(q("span",{class:a.e("placeholder")}));return s}function xn(e,t){return e.reduce((l,n)=>(l[n]=n,l),t)}function qi(e,t){const l=Se();return{registerComplexWatchers:()=>{const s=["fixed"],u={realWidth:"width",realMinWidth:"minWidth"},o=xn(s,u);Object.keys(o).forEach(r=>{const i=u[r];bt(t,i)&&pe(()=>t[i],c=>{let f=c;i==="width"&&r==="realWidth"&&(f=ql(c)),i==="minWidth"&&r==="realMinWidth"&&(f=sa(c)),l.columnConfig.value[i]=f,l.columnConfig.value[r]=f;const v=i==="fixed";e.value.store.scheduleLayout(v)})})},registerNormalWatchers:()=>{const s=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip","tooltipFormatter","resizable"],u=["showOverflowTooltip"],o={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},r=xn(s,o);Object.keys(r).forEach(i=>{const c=o[i];bt(t,c)&&pe(()=>t[c],f=>{l.columnConfig.value[i]=f,(i==="filters"||i==="filterMethod")&&(l.columnConfig.value.filterable=!!(l.columnConfig.value.filters||l.columnConfig.value.filterMethod))})}),u.forEach(i=>{bt(e.value.props,i)&&pe(()=>e.value.props[i],c=>{l.columnConfig.value[i]=c})})}}}function Yi(e,t,l){const n=Se(),a=S(""),s=S(!1),u=S(),o=S(),r=re("table");Jt(()=>{u.value=e.align?`is-${e.align}`:null,u.value}),Jt(()=>{o.value=e.headerAlign?`is-${e.headerAlign}`:u.value,o.value});const i=I(()=>{let h=n.vnode.vParent||n.parent;for(;h&&!h.tableId&&!h.columnId;)h=h.vnode.vParent||h.parent;return h}),c=I(()=>{const{store:h}=n.parent;if(!h)return!1;const{treeData:g}=h.states,x=g.value;return x&&Object.keys(x).length>0}),f=S(ql(e.width)),v=S(sa(e.minWidth)),d=h=>(f.value&&(h.width=f.value),v.value&&(h.minWidth=v.value),!f.value&&v.value&&(h.width=void 0),h.minWidth||(h.minWidth=80),h.realWidth=Number(Te(h.width)?h.minWidth:h.width),h),p=h=>{const g=h.type,x=Di[g]||{};Object.keys(x).forEach(_=>{const L=x[_];_!=="className"&&!Te(L)&&(h[_]=L)});const C=Ki(g);if(C){const _=`${y(r.namespace)}-${C}`;h.className=h.className?`${h.className} ${_}`:_}return h},m=h=>{Me(h)?h.forEach(x=>g(x)):g(h);function g(x){var C;((C=x?.type)==null?void 0:C.name)==="ElTableColumn"&&(x.vParent=n)}};return{columnId:a,realAlign:u,isSubColumn:s,realHeaderAlign:o,columnOrTableParent:i,setColumnWidth:d,setColumnForcedProps:p,setColumnRenders:h=>{e.renderHeader||h.type!=="selection"&&(h.renderHeader=x=>{if(n.columnConfig.value.label,t.header){const C=t.header(x);if(ua(C))return q(He,C)}return ce(h.label)}),t["filter-icon"]&&(h.renderFilterIcon=x=>ue(t,"filter-icon",x)),t.expand&&(h.renderExpand=x=>ue(t,"expand",x));let g=h.renderCell;return h.type==="expand"?(h.renderCell=x=>q("div",{class:"cell"},[g(x)]),l.value.renderExpanded=x=>t.default?t.default(x):t.default):(g=g||Ui,h.renderCell=x=>{let C=null;if(t.default){const G=t.default(x);C=G.some(Y=>Y.type!==Bn)?G:g(x)}else C=g(x);const{columns:_}=l.value.store.states,L=_.value.findIndex(G=>G.type==="default"),F=c.value&&x.cellIndex===L,V=ji(x,F),B={class:"cell",style:{}};return h.showOverflowTooltip&&(B.class=`${B.class} ${y(r.namespace)}-tooltip`,B.style={width:`${(x.column.realWidth||Number(x.column.width))-1}px`}),m(C),q("div",B,[V,C])}),h},getPropsData:(...h)=>h.reduce((g,x)=>(Me(x)&&x.forEach(C=>{g[C]=e[C]}),g),{}),getColumnElIndex:(h,g)=>Array.prototype.indexOf.call(h,g),updateColumnOrder:()=>{l.value.store.commit("updateColumnOrder",n.columnConfig.value)}}}var Xi={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},tooltipFormatter:Function,fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let Gi=1;var _a=le({name:"ElTableColumn",components:{ElCheckbox:Lt},props:Xi,setup(e,{slots:t}){const l=Se(),n=S({}),a=I(()=>{let E=l.parent;for(;E&&!E.tableId;)E=E.parent;return E}),{registerNormalWatchers:s,registerComplexWatchers:u}=qi(a,e),{columnId:o,isSubColumn:r,realHeaderAlign:i,columnOrTableParent:c,setColumnWidth:f,setColumnForcedProps:v,setColumnRenders:d,getPropsData:p,getColumnElIndex:m,realAlign:w,updateColumnOrder:P}=Yi(e,t,a),O=c.value;o.value=`${"tableId"in O&&O.tableId||"columnId"in O&&O.columnId}_column_${Gi++}`,Vn(()=>{r.value=a.value!==O;const E=e.type||"default",h=e.sortable===""?!0:e.sortable,g=E==="selection"?!1:Te(e.showOverflowTooltip)?O.props.showOverflowTooltip:e.showOverflowTooltip,x=Te(e.tooltipFormatter)?O.props.tooltipFormatter:e.tooltipFormatter,C={...zi[E],id:o.value,type:E,property:e.prop||e.property,align:w,headerAlign:i,showOverflowTooltip:g,tooltipFormatter:x,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:h,index:e.index,rawColumnKey:l.vnode.key};let B=p(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);B=jr(C,B),B=Yr(d,f,v)(B),n.value=B,s(),u()}),Ue(()=>{var E,h;const g=c.value,x=r.value?(E=g.vnode.el)==null?void 0:E.children:(h=g.refs.hiddenColumns)==null?void 0:h.children,C=()=>m(x||[],l.vnode.el);n.value.getColumnIndex=C,C()>-1&&a.value.store.commit("insertColumn",n.value,r.value?"columnConfig"in g&&g.columnConfig.value:null,P)}),et(()=>{const E=n.value.getColumnIndex;(E?E():-1)>-1&&a.value.store.commit("removeColumn",n.value,r.value?"columnConfig"in O&&O.columnConfig.value:null,P)}),l.columnId=o.value,l.columnConfig=n},render(){var e,t,l;try{const n=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),a=[];if(Me(n))for(const u of n)((l=u.type)==null?void 0:l.name)==="ElTableColumn"||u.shapeFlag&2?a.push(u):u.type===He&&Me(u.children)&&u.children.forEach(o=>{o?.patchFlag!==1024&&!ye(o?.children)&&a.push(o)});return q("div",a)}catch{return q("div",[])}}});const Ji=st(Wi,{TableColumn:_a}),Qi=Ge(_a),ol=Symbol("tabsRootContextKey"),Zi=ze({tabs:{type:Re(Array),default:()=>At([])},tabRefs:{type:Re(Object),default:()=>At({})}}),xa="ElTabBar",eu=le({name:xa}),tu=le({...eu,props:Zi,setup(e,{expose:t}){const l=e,n=_e(ol);n||Ze(xa,"");const a=re("tabs"),s=S(),u=S(),o=I(()=>{var d;return Te(n.props.defaultValue)||!!((d=u.value)!=null&&d.transform)}),r=()=>{let d=0,p=0;const m=["top","bottom"].includes(n.props.tabPosition)?"width":"height",w=m==="width"?"x":"y",P=w==="x"?"left":"top";return l.tabs.every(O=>{if(Te(O.paneName))return!1;const E=l.tabRefs[O.paneName];if(!E)return!1;if(!O.active)return!0;d=E[`offset${nt(P)}`],p=E[`client${nt(m)}`];const h=window.getComputedStyle(E);return m==="width"&&(p-=Number.parseFloat(h.paddingLeft)+Number.parseFloat(h.paddingRight),d+=Number.parseFloat(h.paddingLeft)),!1}),{[m]:`${p}px`,transform:`translate${nt(w)}(${d}px)`}},i=()=>u.value=r(),c=[],f=()=>{c.forEach(d=>d.stop()),c.length=0,Object.values(l.tabRefs).forEach(d=>{c.push(wt(d,i))})};pe(()=>l.tabs,async()=>{await $e(),i(),f()},{immediate:!0});const v=wt(s,()=>i());return et(()=>{c.forEach(d=>d.stop()),c.length=0,v.stop()}),t({ref:s,update:i}),(d,p)=>y(o)?(z(),te("div",{key:0,ref_key:"barRef",ref:s,class:Q([y(a).e("active-bar"),y(a).is(y(n).props.tabPosition)]),style:De(u.value)},null,6)):he("v-if",!0)}});var lu=xe(tu,[["__file","tab-bar.vue"]]);const nu=ze({panes:{type:Re(Array),default:()=>At([])},currentName:{type:[String,Number],default:""},editable:Boolean,type:{type:String,values:["card","border-card",""],default:""},stretch:Boolean,tabindex:{type:[String,Number],default:void 0}}),au={tabClick:(e,t,l)=>l instanceof Event,tabRemove:(e,t)=>t instanceof Event},En="ElTabNav",ou=le({name:En,props:nu,emits:au,setup(e,{expose:t,emit:l}){const n=_e(ol);n||Ze(En,"");const a=re("tabs"),s=Ko(),u=Do(),o=S(),r=S(),i=S(),c=S({}),f=S(),v=S(!1),d=S(0),p=S(!1),m=S(!0),w=xl(),P=I(()=>["top","bottom"].includes(n.props.tabPosition)),O=I(()=>P.value?"width":"height"),E=I(()=>({transform:`translate${O.value==="width"?"X":"Y"}(-${d.value}px)`})),{width:h,height:g}=dn(o),{width:x,height:C}=dn(r,{width:0,height:0},{box:"border-box"}),_=I(()=>P.value?h.value:g.value),L=I(()=>P.value?x.value:C.value),{onWheel:F}=Kr({atStartEdge:I(()=>d.value<=0),atEndEdge:I(()=>L.value-d.value<=_.value),layout:I(()=>P.value?"horizontal":"vertical")},k=>{d.value=xo(d.value+k,0,L.value-_.value)}),V=()=>{if(!o.value)return;const k=o.value[`offset${nt(O.value)}`],W=d.value;if(!W)return;const R=W>k?W-k:0;d.value=R},B=()=>{if(!o.value||!r.value)return;const k=r.value[`offset${nt(O.value)}`],W=o.value[`offset${nt(O.value)}`],R=d.value;if(k-R<=W)return;const K=k-R>W*2?R+W:k-W;d.value=K},G=async()=>{const k=r.value;if(!v.value||!i.value||!o.value||!k)return;await $e();const W=c.value[e.currentName];if(!W)return;const R=o.value,K=W.getBoundingClientRect(),U=R.getBoundingClientRect(),ee=P.value?k.offsetWidth-U.width:k.offsetHeight-U.height,ne=d.value;let me=ne;P.value?(K.leftU.right&&(me=ne+K.right-U.right)):(K.topU.bottom&&(me=ne+(K.bottom-U.bottom))),me=Math.max(me,0),d.value=Math.min(me,ee)},Y=()=>{var k;if(!r.value||!o.value)return;e.stretch&&((k=f.value)==null||k.update());const W=r.value[`offset${nt(O.value)}`],R=o.value[`offset${nt(O.value)}`],K=d.value;R0&&(d.value=0))},ie=k=>{const W=Ct(k);let R=0;switch(W){case ve.left:case ve.up:R=-1;break;case ve.right:case ve.down:R=1;break;default:return}const K=Array.from(k.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)"));let ee=K.indexOf(k.target)+R;ee<0?ee=K.length-1:ee>=K.length&&(ee=0),K[ee].focus({preventScroll:!0}),K[ee].click(),J()},J=()=>{m.value&&(p.value=!0)},N=()=>p.value=!1,$=(k,W)=>{c.value[W]=k},H=async()=>{await $e();const k=c.value[e.currentName];k?.focus({preventScroll:!0})};return pe(s,k=>{k==="hidden"?m.value=!1:k==="visible"&&setTimeout(()=>m.value=!0,50)}),pe(u,k=>{k?setTimeout(()=>m.value=!0,50):m.value=!1}),wt(i,Y),Ue(()=>setTimeout(()=>G(),0)),zn(()=>Y()),t({scrollToActiveTab:G,removeFocus:N,focusActiveTab:H,tabListRef:r,tabBarRef:f,scheduleRender:()=>Dt(w)}),()=>{const k=v.value?[M("span",{class:[a.e("nav-prev"),a.is("disabled",!v.value.prev)],onClick:V},[M(We,null,{default:()=>[M(lo,null,null)]})]),M("span",{class:[a.e("nav-next"),a.is("disabled",!v.value.next)],onClick:B},[M(We,null,{default:()=>[M(It,null,null)]})])]:null,W=e.panes.map((R,K)=>{var U,ee,ne,me,Ce;const ke=R.uid,Pe=R.props.disabled,Ke=(ee=(U=R.props.name)!=null?U:R.index)!=null?ee:`${K}`,tt=!Pe&&(R.isClosable||R.props.closable!==!1&&e.editable);R.index=`${K}`;const xt=tt?M(We,{class:"is-icon-close",onClick:Le=>l("tabRemove",R,Le)},{default:()=>[M(Mn,null,null)]}):null,Et=((me=(ne=R.slots).label)==null?void 0:me.call(ne))||R.props.label,ft=!Pe&&R.active?(Ce=e.tabindex)!=null?Ce:n.props.tabindex:-1;return M("div",{ref:Le=>$(Le,Ke),class:[a.e("item"),a.is(n.props.tabPosition),a.is("active",R.active),a.is("disabled",Pe),a.is("closable",tt),a.is("focus",p.value)],id:`tab-${Ke}`,key:`tab-${ke}`,"aria-controls":`pane-${Ke}`,role:"tab","aria-selected":R.active,tabindex:ft,onFocus:()=>J(),onBlur:()=>N(),onClick:Le=>{N(),l("tabClick",R,Ke,Le)},onKeydown:Le=>{const vt=Ct(Le);tt&&(vt===ve.delete||vt===ve.backspace)&&l("tabRemove",R,Le)}},[Et,xt])});return w.value,M("div",{ref:i,class:[a.e("nav-wrap"),a.is("scrollable",!!v.value),a.is(n.props.tabPosition)]},[k,M("div",{class:a.e("nav-scroll"),ref:o},[e.panes.length>0?M("div",{class:[a.e("nav"),a.is(n.props.tabPosition),a.is("stretch",e.stretch&&["top","bottom"].includes(n.props.tabPosition))],ref:r,style:E.value,role:"tablist",onKeydown:ie,onWheel:F},[e.type?null:M(lu,{ref:f,tabs:[...e.panes],tabRefs:c.value},null),W]):null])])}}}),su=ze({type:{type:String,values:["card","border-card",""],default:""},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},defaultValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:["top","right","bottom","left"],default:"top"},beforeLeave:{type:Re(Function),default:()=>!0},stretch:Boolean,tabindex:{type:[String,Number],default:0}}),wl=e=>ye(e)||at(e),ru={[ll]:e=>wl(e),tabClick:(e,t)=>t instanceof Event,tabChange:e=>wl(e),edit:(e,t)=>["remove","add"].includes(t),tabRemove:e=>wl(e),tabAdd:()=>!0},iu=le({name:"ElTabs",props:su,emits:ru,setup(e,{emit:t,slots:l,expose:n}){var a;const s=re("tabs"),u=I(()=>["left","right"].includes(e.tabPosition)),{children:o,addChild:r,removeChild:i,ChildrenSorter:c}=Ts(Se(),"ElTabPane"),f=S(),v=S((a=Te(e.modelValue)?e.defaultValue:e.modelValue)!=null?a:"0"),d=async(E,h=!1)=>{var g,x,C,_;if(!(v.value===E||Te(E)))try{let L;if(e.beforeLeave){const F=e.beforeLeave(E,v.value);L=F instanceof Promise?await F:F}else L=!0;if(L!==!1){const F=(g=o.value.find(V=>V.paneName===v.value))==null?void 0:g.isFocusInsidePane();v.value=E,h&&(t(ll,E),t("tabChange",E)),(C=(x=f.value)==null?void 0:x.removeFocus)==null||C.call(x),F&&((_=f.value)==null||_.focusActiveTab())}}catch{}},p=(E,h,g)=>{E.props.disabled||(t("tabClick",E,g),d(h,!0))},m=(E,h)=>{E.props.disabled||Te(E.props.name)||(h.stopPropagation(),t("edit",E.props.name,"remove"),t("tabRemove",E.props.name))},w=()=>{t("edit",void 0,"add"),t("tabAdd")},P=E=>{const h=Ct(E);[ve.enter,ve.numpadEnter].includes(h)&&w()},O=E=>{const h=E.el.firstChild,g=["bottom","right"].includes(e.tabPosition)?E.children[0].el:E.children[1].el;h!==g&&h.before(g)};return pe(()=>e.modelValue,E=>d(E)),pe(v,async()=>{var E;await $e(),(E=f.value)==null||E.scrollToActiveTab()}),St(ol,{props:e,currentName:v,registerPane:r,unregisterPane:i,nav$:f}),n({currentName:v,get tabNavRef(){return fo(f.value,["scheduleRender"])}}),()=>{const E=l["add-icon"],h=e.editable||e.addable?M("div",{class:[s.e("new-tab"),u.value&&s.e("new-tab-vertical")],tabindex:e.tabindex,onClick:w,onKeydown:P},[E?ue(l,"add-icon"):M(We,{class:s.is("icon-plus")},{default:()=>[M(no,null,null)]})]):null,g=()=>M(ou,{ref:f,currentName:v.value,editable:e.editable,type:e.type,panes:o.value,stretch:e.stretch,onTabClick:p,onTabRemove:m},null),x=M("div",{class:[s.e("header"),u.value&&s.e("header-vertical"),s.is(e.tabPosition)]},[M(c,null,{default:g,$stable:!0}),h]),C=M("div",{class:s.e("content")},[ue(l,"default")]);return M("div",{class:[s.b(),s.m(e.tabPosition),{[s.m("card")]:e.type==="card",[s.m("border-card")]:e.type==="border-card"}],onVnodeMounted:O,onVnodeUpdated:O},[C,x])}}});var uu=iu;const du=ze({label:{type:String,default:""},name:{type:[String,Number]},closable:{type:Boolean,default:void 0},disabled:Boolean,lazy:Boolean}),Ea="ElTabPane",cu=le({name:Ea}),fu=le({...cu,props:du,setup(e){const t=e,l=Se(),n=Kl(),a=_e(ol);a||Ze(Ea,"usage: ");const s=re("tab-pane"),u=S(),o=S(),r=I(()=>{var m;return(m=t.closable)!=null?m:a.props.closable}),i=un(()=>{var m;return a.currentName.value===((m=t.name)!=null?m:o.value)}),c=S(i.value),f=I(()=>{var m;return(m=t.name)!=null?m:o.value}),v=un(()=>!t.lazy||c.value||i.value),d=()=>{var m;return(m=u.value)==null?void 0:m.contains(document.activeElement)};pe(i,m=>{m&&(c.value=!0)});const p=Qe({uid:l.uid,getVnode:()=>l.vnode,slots:n,props:t,paneName:f,active:i,index:o,isClosable:r,isFocusInsidePane:d});return a.registerPane(p),et(()=>{a.unregisterPane(p)}),Xo(()=>{var m;n.label&&((m=a.nav$.value)==null||m.scheduleRender())}),(m,w)=>y(v)?Fe((z(),te("div",{key:0,id:`pane-${y(f)}`,ref_key:"paneRef",ref:u,class:Q(y(s).b()),role:"tabpanel","aria-hidden":!y(i),"aria-labelledby":`tab-${y(f)}`},[ue(m.$slots,"default")],10,["id","aria-hidden","aria-labelledby"])),[[dt,y(i)]]):he("v-if",!0)}});var ka=xe(fu,[["__file","tab-pane.vue"]]);const vu=st(uu,{TabPane:ka}),pu=Ge(ka);function mu(e,t){let l;const n=S(!1),a=Qe({...e,originalPosition:"",originalOverflow:"",visible:!1});function s(d){a.text=d}function u(){const d=a.parent,p=v.ns;if(!d.vLoadingAddClassList){let m=d.getAttribute("loading-number");m=Number.parseInt(m)-1,m?d.setAttribute("loading-number",m.toString()):(Ve(d,p.bm("parent","relative")),d.removeAttribute("loading-number")),Ve(d,p.bm("parent","hidden"))}o(),f.unmount()}function o(){var d,p;(p=(d=v.$el)==null?void 0:d.parentNode)==null||p.removeChild(v.$el)}function r(){var d;e.beforeClose&&!e.beforeClose()||(n.value=!0,clearTimeout(l),l=setTimeout(i,400),a.visible=!1,(d=e.closed)==null||d.call(e))}function i(){if(!n.value)return;const d=a.parent;n.value=!1,d.vLoadingAddClassList=void 0,u()}const c=le({name:"ElLoading",setup(d,{expose:p}){const{ns:m,zIndex:w}=ao("loading");return p({ns:m,zIndex:w}),()=>{const P=a.spinner||a.svg,O=q("svg",{class:"circular",viewBox:a.svgViewBox?a.svgViewBox:"0 0 50 50",...P?{innerHTML:P}:{}},[q("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),E=a.text?q("p",{class:m.b("text")},[a.text]):void 0;return q(al,{name:m.b("fade"),onAfterLeave:i},{default:A(()=>[Fe(M("div",{style:{backgroundColor:a.background||""},class:[m.b("mask"),a.customClass,m.is("fullscreen",a.fullscreen)]},[q("div",{class:m.b("spinner")},[O,E])]),[[dt,a.visible]])])})}}}),f=Go(c);Object.assign(f._context,t??{});const v=f.mount(document.createElement("div"));return{...Hn(a),setText:s,removeElLoadingChild:o,close:r,handleAfterLeave:i,vm:v,get $el(){return v.$el}}}let zt;const Ql=function(e={},t){if(!ot)return;const l=hu(e);if(l.fullscreen&&zt)return zt;const n=mu({...l,closed:()=>{var s;(s=l.closed)==null||s.call(l),l.fullscreen&&(zt=void 0)}},t??Ql._context);gu(l,l.parent,n),kn(l,l.parent,n),l.parent.vLoadingAddClassList=()=>kn(l,l.parent,n);let a=l.parent.getAttribute("loading-number");return a?a=`${Number.parseInt(a)+1}`:a="1",l.parent.setAttribute("loading-number",a),l.parent.appendChild(n.$el),$e(()=>n.visible.value=l.visible),l.fullscreen&&(zt=n),n},hu=e=>{var t,l,n,a;let s;return ye(e.target)?s=(t=document.querySelector(e.target))!=null?t:document.body:s=e.target||document.body,{parent:s===document.body||e.body?document.body:s,background:e.background||"",svg:e.svg||"",svgViewBox:e.svgViewBox||"",spinner:e.spinner||!1,text:e.text||"",fullscreen:s===document.body&&((l=e.fullscreen)!=null?l:!0),lock:(n=e.lock)!=null?n:!1,customClass:e.customClass||"",visible:(a=e.visible)!=null?a:!0,beforeClose:e.beforeClose,closed:e.closed,target:s}},gu=async(e,t,l)=>{const{nextZIndex:n}=l.vm.zIndex||l.vm._.exposed.zIndex,a={};if(e.fullscreen)l.originalPosition.value=Mt(document.body,"position"),l.originalOverflow.value=Mt(document.body,"overflow"),a.zIndex=n();else if(e.parent===document.body){l.originalPosition.value=Mt(document.body,"position"),await $e();for(const s of["top","left"]){const u=s==="top"?"scrollTop":"scrollLeft";a[s]=`${e.target.getBoundingClientRect()[s]+document.body[u]+document.documentElement[u]-Number.parseInt(Mt(document.body,`margin-${s}`),10)}px`}for(const s of["height","width"])a[s]=`${e.target.getBoundingClientRect()[s]}px`}else l.originalPosition.value=Mt(t,"position");for(const[s,u]of Object.entries(a))l.$el.style[s]=u},kn=(e,t,l)=>{const n=l.vm.ns||l.vm._.exposed.ns;["absolute","fixed","sticky"].includes(l.originalPosition.value)?Ve(t,n.bm("parent","relative")):Xe(t,n.bm("parent","relative")),e.fullscreen&&e.lock?Xe(t,n.bm("parent","hidden")):Ve(t,n.bm("parent","hidden"))};Ql._context=null;const Rt=Symbol("ElLoading"),it=e=>`element-loading-${Jo(e)}`,Nn=(e,t)=>{var l,n,a,s;const u=t.instance,o=d=>ct(t.value)?t.value[d]:void 0,r=d=>{const p=ye(d)&&u?.[d]||d;return S(p)},i=d=>r(o(d)||e.getAttribute(it(d))),c=(l=o("fullscreen"))!=null?l:t.modifiers.fullscreen,f={text:i("text"),svg:i("svg"),svgViewBox:i("svgViewBox"),spinner:i("spinner"),background:i("background"),customClass:i("customClass"),fullscreen:c,target:(n=o("target"))!=null?n:c?void 0:e,body:(a=o("body"))!=null?a:t.modifiers.body,lock:(s=o("lock"))!=null?s:t.modifiers.lock},v=Ql(f);v._context=Zl._context,e[Rt]={options:f,instance:v}},bu=(e,t)=>{for(const l of Object.keys(e))Wn(e[l])&&(e[l].value=t[l])},Zl={mounted(e,t){t.value&&Nn(e,t)},updated(e,t){const l=e[Rt];if(!t.value){l?.instance.close(),e[Rt]=null;return}l?bu(l.options,ct(t.value)?t.value:{text:e.getAttribute(it("text")),svg:e.getAttribute(it("svg")),svgViewBox:e.getAttribute(it("svgViewBox")),spinner:e.getAttribute(it("spinner")),background:e.getAttribute(it("background")),customClass:e.getAttribute(it("customClass"))}):Nn(e,t)},unmounted(e){var t;(t=e[Rt])==null||t.instance.close(),e[Rt]=null}};Zl._context=null;async function yu(){const{data:e}=await nl.get("/announcements/active");return e}async function Cu(e){const{data:t}=await nl.post(`/announcements/${e}/dismiss`,{});return t}async function wu(e){const{data:t}=await nl.post("/feedback",e);return t}async function Su(){const{data:e}=await nl.get("/feedback");return e}function _u(e){if(!e||typeof e!="object")throw new Error("Passkey参数无效");return e.publicKey&&typeof e.publicKey=="object"?e.publicKey:e}function Sl(e){const t=String(e||""),l="=".repeat((4-t.length%4)%4),n=(t+l).replace(/-/g,"+").replace(/_/g,"/"),a=window.atob(n),s=new Uint8Array(a.length);for(let u=0;u({...n,id:Sl(n.id)}))),l}function Eu(e){if(!e)return null;const t=e.response||{},l={id:e.id,rawId:mt(e.rawId),type:e.type,authenticatorAttachment:e.authenticatorAttachment||void 0,response:{}};return t.clientDataJSON&&(l.response.clientDataJSON=mt(t.clientDataJSON)),t.attestationObject&&(l.response.attestationObject=mt(t.attestationObject)),t.authenticatorData&&(l.response.authenticatorData=mt(t.authenticatorData)),t.signature&&(l.response.signature=mt(t.signature)),t.userHandle?l.response.userHandle=mt(t.userHandle):l.response.userHandle=null,typeof t.getTransports=="function"&&(l.response.transports=t.getTransports()||[]),l}function ku(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}function Nu(){const e=String(window?.navigator?.userAgent||"");return/MiuiBrowser|XiaoMi\/MiuiBrowser/i.test(e)}function Tu(e,t="Passkey操作"){const l=String(e?.name||"").trim(),n=String(e?.message||"").trim();return l==="NotAllowedError"?`${t}未完成(可能已取消、超时或设备未响应)`:l==="NotReadableError"?/credential manager/i.test(n)&&Nu()?"当前小米浏览器与系统凭据管理器兼容性较差,请改用系统 Chrome 或 Edge 后重试。":/credential manager/i.test(n)?"系统凭据管理器返回异常,请确认已设置系统锁屏并改用系统 Chrome/Edge 后重试。":n||`${t}失败(设备读取异常)`:l==="SecurityError"?"当前环境安全策略不满足 Passkey 要求,请确认使用 HTTPS 且证书有效。":n||`${t}失败`}async function Mu(e){const t=xu(e),l=await navigator.credentials.create({publicKey:t});return Eu(l)}const Ru={class:"header-left"},Ou={class:"header-right"},$u={class:"user-meta"},Pu={class:"user-name"},Lu={key:2,class:"vip-warn"},Au={class:"drawer-user"},Iu={class:"user-name"},Fu={class:"drawer-actions"},Bu={class:"announcement-body"},Hu={class:"announcement-content"},Wu={key:0,class:"announcement-image"},Vu=["src"],zu={class:"feedback-title"},Ku={class:"feedback-title-text"},Du={class:"feedback-time app-muted"},Uu={class:"feedback-body"},ju={class:"feedback-section"},qu={class:"feedback-text"},Yu={key:0,class:"feedback-section"},Xu={class:"feedback-text"},Gu={class:"settings-section"},Ju={class:"email-row"},Qu={class:"email-value"},Zu={class:"notify-row"},ed={class:"settings-section"},td={class:"settings-section"},ld={class:"settings-section"},nd={class:"settings-section"},ad={key:0,class:"vip-info"},od={class:"vip-line"},sd={class:"vip-line"},rd={key:1,class:"vip-info"},id=24e4,ud={__name:"AppLayout",setup(e){const t=Qo(),l=Zo(),n=vo(),a=S(!1),s=S(!1);let u;const o=S(!1),r=S(null),i=S(!1),c=(()=>{try{const T=window.performance?.timeOrigin;if(typeof T=="number"&&Number.isFinite(T))return String(T)}catch{}return String(Date.now())})();function f(T){return`announcement_closed_once_${T}`}function v(T){return`announcement_closed_${T}`}function d(T){try{return window.sessionStorage.getItem(f(T))===c}catch{return!1}}function p(T){try{return window.localStorage.getItem(v(T))==="1"}catch{return!1}}function m(T){try{window.sessionStorage.setItem(f(T),c)}catch{}}function w(T){try{window.localStorage.setItem(v(T),"1")}catch{}}const P=S(!1),O=S("new"),E=S(!1),h=S(!1),g=S([]),x=Qe({title:"",description:"",contact:""}),C=S(!1),_=S("email"),L=S(!1),F=S(!1),V=Qe({email:"",email_verified:!1}),B=S(""),G=S(!1),Y=S(!0),ie=S(!1),J=Qe({current_password:"",new_password:"",confirm_password:""}),N=S(!1),$=S(!1),H=S(""),k=S(!1),W=S(!1),R=S(""),K=S([]),U=S(null),ee=S(0);function ne(){a.value=!!u?.matches,a.value||(s.value=!1)}Ue(()=>{u=window.matchMedia("(max-width: 768px)"),u.addEventListener?.("change",ne),ne(),n.refreshVipInfo().catch(()=>{window.location.href="/login"}),j()}),et(()=>{u?.removeEventListener?.("change",ne)});const me=[{path:"/app/accounts",label:"账号管理",icon:oo},{path:"/app/schedules",label:"定时任务",icon:so},{path:"/app/screenshots",label:"截图管理",icon:ro}],Ce=I(()=>t.path);async function ke(T){await l.push(T),s.value=!1}async function Pe(){let T=!1;try{await hl.confirm("确定退出登录吗?","退出登录",{confirmButtonText:"退出",cancelButtonText:"取消",type:"warning"}),T=!0}catch(b){const Z=String(b||"").toLowerCase();if(Z==="cancel"||Z==="close")return;try{T=window.confirm("确定退出登录吗?")}catch{T=!1}}T&&(await n.logout(),window.location.href="/login")}function Ke(){O.value="new",x.title="",x.description="",x.contact="",P.value=!0}async function tt(){h.value=!0;try{const T=await Su();g.value=Array.isArray(T)?T:[]}catch{g.value=[]}finally{h.value=!1}}function xt(T){return T==="replied"?"已回复":T==="closed"?"已关闭":"待处理"}function Et(T){return T==="replied"?"success":T==="closed"?"info":"warning"}async function ft(){const T=x.title.trim(),b=x.description.trim(),Z=x.contact.trim();if(!T||!b){fe.error("标题和描述不能为空");return}E.value=!0;try{const oe=await wu({title:T,description:b,contact:Z});fe.success(oe?.message||"反馈提交成功"),P.value=!1,x.title="",x.description="",x.contact=""}catch(oe){const we=oe?.response?.data;fe.error(we?.error||"提交失败")}finally{E.value=!1}}async function Le(){C.value=!0,_.value="email",await vt()}async function vt(){await Promise.all([Ht(),sl(),rl(),kt()])}async function Ht(){L.value=!0;try{const T=await is();V.email=T?.email||"",V.email_verified=!!T?.email_verified,B.value=V.email||""}catch{V.email="",V.email_verified=!1,B.value=""}finally{L.value=!1}}async function sl(){G.value=!0;try{const T=await ds();Y.value=!!T?.enabled}catch{Y.value=!0}finally{G.value=!1}}async function rl(){N.value=!0;try{const T=await cs();H.value=T?.kdocs_unit||""}catch{H.value=""}finally{N.value=!1}}async function il(){$.value=!0;try{await rs({kdocs_unit:H.value.trim()}),fe.success("已更新表格县区设置")}catch{}finally{$.value=!1}}async function kt(){k.value=!0;try{const T=await us();K.value=Array.isArray(T?.items)?T.items:[],K.value.length<3?await Wt():(U.value=null,ee.value=0)}catch{K.value=[],U.value=null,ee.value=0}finally{k.value=!1}}function ul(){return!U.value||Date.now()-Number(ee.value||0)>id?null:U.value}async function Wt(){try{const T=await vn({});U.value=T,ee.value=Date.now()}catch{U.value=null,ee.value=0}}async function dl(){if(!ku()){fe.error("当前浏览器或环境不支持Passkey(需 HTTPS)");return}if(K.value.length>=3){fe.error("最多可绑定3台设备");return}W.value=!0;try{let T=ul();T||(T=await vn({}));const b=await Mu(T?.publicKey||{});await as({credential:b,device_name:R.value.trim()}),U.value=null,ee.value=0,R.value="",fe.success("Passkey设备添加成功"),await kt()}catch(T){try{await os({stage:"register",source:"user-settings",name:T?.name||"",message:T?.message||"",code:T?.code||"",user_agent:navigator.userAgent||""})}catch{}U.value=null,ee.value=0,await Wt();const Z=T?.response?.data?.error||Tu(T,"Passkey注册");fe.error(Z)}finally{W.value=!1}}async function cl(T){try{await hl.confirm(`确定删除设备「${T?.device_name||"未命名设备"}」吗?`,"删除Passkey设备",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{await ss(T.id),fe.success("设备已删除"),await kt()}catch(b){const Z=b?.response?.data;fe.error(Z?.error||"删除失败")}}async function fl(){const T=B.value.trim().toLowerCase();if(!T){fe.error("请输入邮箱地址");return}if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(T)){fe.error("邮箱格式不正确");return}F.value=!0;try{const Z=await ts({email:T});fe.success(Z?.message||"验证邮件已发送"),V.email=T,V.email_verified=!1}catch(Z){const oe=Z?.response?.data;fe.error(oe?.error||"绑定失败")}finally{F.value=!1}}async function vl(){try{await hl.confirm("确定要解绑当前邮箱吗?","解绑邮箱",{confirmButtonText:"解绑",cancelButtonText:"取消",type:"warning"})}catch{return}try{const T=await es();if(T?.success){fe.success(T?.message||"邮箱已解绑"),await Ht();return}fe.error(T?.error||"解绑失败")}catch(T){const b=T?.response?.data;fe.error(b?.error||"解绑失败")}}async function en(T){const b=Y.value;Y.value=!!T,G.value=!0;try{const Z=await ls({enabled:!!T});if(Z?.success){fe.success("已更新");return}Y.value=b,fe.error(Z?.error||"更新失败")}catch(Z){Y.value=b;const oe=Z?.response?.data;fe.error(oe?.error||"更新失败")}finally{G.value=!1}}async function pl(){const T=J.current_password,b=J.new_password,Z=J.confirm_password;if(!T||!b||!Z){fe.error("请填写完整信息");return}const oe=fs(b);if(!oe.ok){fe.error(oe.message);return}if(b!==Z){fe.error("两次输入的新密码不一致");return}ie.value=!0;try{const we=await ns({current_password:T,new_password:b});if(we?.success){fe.success("密码修改成功"),J.current_password="",J.new_password="",J.confirm_password="";return}fe.error(we?.error||"修改失败")}catch(we){const Ae=we?.response?.data;fe.error(Ae?.error||"修改失败")}finally{ie.value=!1}}async function j(){i.value=!0;try{const b=(await yu())?.announcement;if(!b?.id||p(b.id)||d(b.id))return;r.value=b,o.value=!0}catch{}finally{i.value=!1}}function ae(){const T=r.value;T?.id&&m(T.id),o.value=!1}async function se(){const T=r.value;if(!T?.id){o.value=!1;return}w(T.id);try{(await Cu(T.id))?.success&&fe.success("已永久关闭")}catch{}finally{o.value=!1}}return(T,b)=>{const Z=We,oe=Hr,we=Br,Ae=or,ge=io,qe=Eo,Na=sr,Ta=Ie("RouterView"),Ma=rr,tn=ar,Ra=yr,ml=ko,Je=Uo,Ye=Ao,Nt=Lo,rt=pu,Oa=No,ln=To,$a=js,Pa=Us,nn=vu,pt=Io,La=fr,Aa=po,Tt=Qi,Ia=Ji,Vt=Zl;return z(),de(tn,{class:"layout-root"},{default:A(()=>[a.value?he("",!0):(z(),de(Ae,{key:0,width:"220px",class:"layout-aside"},{default:A(()=>[b[19]||(b[19]=D("div",{class:"brand"},[D("div",{class:"brand-title"},"知识管理平台"),D("div",{class:"brand-sub app-muted"},"用户中心")],-1)),M(we,{"default-active":Ce.value,class:"aside-menu",router:"",onSelect:ke},{default:A(()=>[(z(),te(He,null,Pt(me,X=>M(oe,{key:X.path,index:X.path},{default:A(()=>[M(Z,null,{default:A(()=>[(z(),de(El(X.icon)))]),_:2},1024),D("span",null,be(X.label),1)]),_:2},1032,["index"])),64))]),_:1},8,["default-active"])]),_:1})),M(tn,null,{default:A(()=>[M(Na,{class:"layout-header"},{default:A(()=>[D("div",Ru,[a.value?(z(),de(ge,{key:0,text:"",class:"header-menu-btn",onClick:b[0]||(b[0]=X=>s.value=!0)},{default:A(()=>[...b[20]||(b[20]=[ce(" 菜单 ",-1)])]),_:1})):he("",!0),b[21]||(b[21]=D("div",{class:"header-title"},"用户控制台",-1))]),D("div",Ou,[D("div",$u,[y(n).isVip?(z(),de(qe,{key:0,type:"success",size:"small",effect:"light"},{default:A(()=>[...b[22]||(b[22]=[ce("VIP",-1)])]),_:1})):(z(),de(qe,{key:1,type:"info",size:"small",effect:"light"},{default:A(()=>[...b[23]||(b[23]=[ce("普通",-1)])]),_:1})),D("span",Pu,be(y(n).username||"用户"),1),y(n).isVip&&y(n).vipDaysLeft<=7&&y(n).vipDaysLeft>0?(z(),te("span",Lu," ("+be(y(n).vipDaysLeft)+"天后到期) ",1)):he("",!0)]),M(ge,{text:"",type:"primary",onClick:Ke},{default:A(()=>[...b[24]||(b[24]=[ce("反馈",-1)])]),_:1}),M(ge,{text:"",onClick:Le},{default:A(()=>[...b[25]||(b[25]=[ce("设置",-1)])]),_:1}),M(ge,{type:"primary",plain:"",onClick:Pe},{default:A(()=>[...b[26]||(b[26]=[ce("退出",-1)])]),_:1})])]),_:1}),M(Ma,{class:"layout-main"},{default:A(()=>[M(Ta)]),_:1})]),_:1}),M(Ra,{modelValue:s.value,"onUpdate:modelValue":b[1]||(b[1]=X=>s.value=X),size:"240px","with-header":!1},{default:A(()=>[b[32]||(b[32]=D("div",{class:"drawer-brand"},[D("div",{class:"brand-title"},"知识管理平台"),D("div",{class:"brand-sub app-muted"},"用户中心")],-1)),D("div",Au,[y(n).isVip?(z(),de(qe,{key:0,type:"success",size:"small",effect:"light"},{default:A(()=>[...b[27]||(b[27]=[ce("VIP",-1)])]),_:1})):(z(),de(qe,{key:1,type:"info",size:"small",effect:"light"},{default:A(()=>[...b[28]||(b[28]=[ce("普通",-1)])]),_:1})),D("span",Iu,be(y(n).username||"用户"),1)]),M(we,{"default-active":Ce.value,class:"aside-menu",router:"",onSelect:ke},{default:A(()=>[(z(),te(He,null,Pt(me,X=>M(oe,{key:X.path,index:X.path},{default:A(()=>[M(Z,null,{default:A(()=>[(z(),de(El(X.icon)))]),_:2},1024),D("span",null,be(X.label),1)]),_:2},1032,["index"])),64))]),_:1},8,["default-active"]),D("div",Fu,[M(ge,{text:"",type:"primary",style:{width:"100%"},onClick:Ke},{default:A(()=>[...b[29]||(b[29]=[ce("问题反馈",-1)])]),_:1}),M(ge,{text:"",style:{width:"100%"},onClick:Le},{default:A(()=>[...b[30]||(b[30]=[ce("个人设置",-1)])]),_:1}),M(ge,{type:"primary",plain:"",style:{width:"100%"},onClick:Pe},{default:A(()=>[...b[31]||(b[31]=[ce("退出登录",-1)])]),_:1})])]),_:1},8,["modelValue"]),M(ml,{modelValue:o.value,"onUpdate:modelValue":b[2]||(b[2]=X=>o.value=X),width:"min(560px, 92vw)",title:r.value?.title||"系统公告"},{footer:A(()=>[M(ge,{onClick:ae},{default:A(()=>[...b[33]||(b[33]=[ce("当次关闭",-1)])]),_:1}),M(ge,{type:"primary",onClick:se},{default:A(()=>[...b[34]||(b[34]=[ce("永久关闭",-1)])]),_:1})]),default:A(()=>[Fe((z(),te("div",Bu,[D("div",Hu,be(r.value?.content||""),1),r.value?.image_url?(z(),te("div",Wu,[D("img",{src:r.value.image_url,alt:"公告图片",loading:"lazy"},null,8,Vu)])):he("",!0)])),[[Vt,i.value]])]),_:1},8,["modelValue","title"]),M(ml,{modelValue:P.value,"onUpdate:modelValue":b[9]||(b[9]=X=>P.value=X),title:"问题反馈",width:"min(720px, 92vw)"},{footer:A(()=>[M(ge,{onClick:b[8]||(b[8]=X=>P.value=!1)},{default:A(()=>[...b[37]||(b[37]=[ce("关闭",-1)])]),_:1}),O.value==="list"?(z(),de(ge,{key:0,onClick:tt},{default:A(()=>[...b[38]||(b[38]=[ce("刷新",-1)])]),_:1})):he("",!0),O.value==="new"?(z(),de(ge,{key:1,type:"primary",loading:E.value,onClick:ft},{default:A(()=>[...b[39]||(b[39]=[ce("提交",-1)])]),_:1},8,["loading"])):he("",!0)]),default:A(()=>[M(nn,{modelValue:O.value,"onUpdate:modelValue":b[6]||(b[6]=X=>O.value=X),onTabChange:b[7]||(b[7]=X=>X==="list"&&tt())},{default:A(()=>[M(rt,{label:"提交反馈",name:"new"},{default:A(()=>[M(Nt,{"label-position":"top"},{default:A(()=>[M(Ye,{label:"标题"},{default:A(()=>[M(Je,{modelValue:x.title,"onUpdate:modelValue":b[3]||(b[3]=X=>x.title=X),placeholder:"简要描述问题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),M(Ye,{label:"详细描述"},{default:A(()=>[M(Je,{modelValue:x.description,"onUpdate:modelValue":b[4]||(b[4]=X=>x.description=X),type:"textarea",rows:5,placeholder:"请详细描述您遇到的问题",maxlength:"2000","show-word-limit":""},null,8,["modelValue"])]),_:1}),M(Ye,{label:"联系方式(可选)"},{default:A(()=>[M(Je,{modelValue:x.contact,"onUpdate:modelValue":b[5]||(b[5]=X=>x.contact=X),placeholder:"方便我们联系您"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),M(rt,{label:"我的反馈",name:"list"},{default:A(()=>[h.value?(z(),de(Oa,{key:0,rows:6,animated:""})):(z(),te(He,{key:1},[g.value.length===0?(z(),de(ln,{key:0,description:"暂无反馈"})):(z(),de(Pa,{key:1,accordion:""},{default:A(()=>[(z(!0),te(He,null,Pt(g.value,X=>(z(),de($a,{key:X.id,name:String(X.id)},{title:A(()=>[D("div",zu,[D("span",Ku,be(X.title),1),M(qe,{size:"small",effect:"light",type:Et(X.status)},{default:A(()=>[ce(be(xt(X.status)),1)]),_:2},1032,["type"]),D("span",Du,be(X.created_at||""),1)])]),default:A(()=>[D("div",Uu,[D("div",ju,[b[35]||(b[35]=D("div",{class:"feedback-label app-muted"},"描述",-1)),D("div",qu,be(X.description),1)]),X.admin_reply?(z(),te("div",Yu,[b[36]||(b[36]=D("div",{class:"feedback-label app-muted"},"管理员回复",-1)),D("div",Xu,be(X.admin_reply),1)])):he("",!0)])]),_:2},1032,["name"]))),128))]),_:1}))],64))]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),M(ml,{modelValue:C.value,"onUpdate:modelValue":b[18]||(b[18]=X=>C.value=X),title:"个人设置",width:"min(720px, 92vw)"},{footer:A(()=>[M(ge,{onClick:b[17]||(b[17]=X=>C.value=!1)},{default:A(()=>[...b[50]||(b[50]=[ce("关闭",-1)])]),_:1})]),default:A(()=>[M(nn,{modelValue:_.value,"onUpdate:modelValue":b[16]||(b[16]=X=>_.value=X)},{default:A(()=>[M(rt,{label:"邮箱绑定",name:"email"},{default:A(()=>[Fe((z(),te("div",Gu,[V.email&&V.email_verified?(z(),de(pt,{key:0,type:"success",closable:!1,title:"邮箱已绑定并验证","show-icon":"",class:"settings-alert"},{default:A(()=>[D("div",Ju,[D("div",Qu,be(V.email),1),M(ge,{type:"danger",text:"",onClick:vl},{default:A(()=>[...b[40]||(b[40]=[ce("解绑",-1)])]),_:1})])]),_:1})):V.email?(z(),de(pt,{key:1,type:"warning",closable:!1,title:"邮箱待验证:请查收验证邮件(含垃圾箱)","show-icon":"",class:"settings-alert"})):he("",!0),M(Nt,{"label-position":"top"},{default:A(()=>[M(Ye,{label:"邮箱地址"},{default:A(()=>[M(Je,{modelValue:B.value,"onUpdate:modelValue":b[10]||(b[10]=X=>B.value=X),placeholder:"name@example.com"},null,8,["modelValue"])]),_:1}),M(ge,{type:"primary",loading:F.value,onClick:fl},{default:A(()=>[...b[41]||(b[41]=[ce("发送验证邮件",-1)])]),_:1},8,["loading"])]),_:1}),M(La),D("div",Zu,[b[42]||(b[42]=D("div",null,[D("div",{class:"notify-title"},"任务完成通知"),D("div",{class:"app-muted notify-desc"},"定时任务完成后发送邮件")],-1)),M(Aa,{"model-value":Y.value,disabled:!V.email_verified||G.value,"inline-prompt":"","active-text":"开","inactive-text":"关",onChange:en},null,8,["model-value","disabled"])]),V.email_verified?he("",!0):(z(),de(pt,{key:2,type:"info",closable:!1,title:"绑定并验证邮箱后可开启邮件通知。","show-icon":"",class:"settings-hint"}))])),[[Vt,L.value]])]),_:1}),M(rt,{label:"修改密码",name:"password"},{default:A(()=>[D("div",ed,[M(Nt,{"label-position":"top"},{default:A(()=>[M(Ye,{label:"当前密码"},{default:A(()=>[M(Je,{modelValue:J.current_password,"onUpdate:modelValue":b[11]||(b[11]=X=>J.current_password=X),type:"password","show-password":"",autocomplete:"current-password"},null,8,["modelValue"])]),_:1}),M(Ye,{label:"新密码(至少8位且包含字母和数字)"},{default:A(()=>[M(Je,{modelValue:J.new_password,"onUpdate:modelValue":b[12]||(b[12]=X=>J.new_password=X),type:"password","show-password":"",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),M(Ye,{label:"确认新密码"},{default:A(()=>[M(Je,{modelValue:J.confirm_password,"onUpdate:modelValue":b[13]||(b[13]=X=>J.confirm_password=X),type:"password","show-password":"",autocomplete:"new-password",onKeyup:In(pl,["enter"])},null,8,["modelValue"])]),_:1}),M(ge,{type:"primary",loading:ie.value,onClick:pl},{default:A(()=>[...b[43]||(b[43]=[ce("确认修改",-1)])]),_:1},8,["loading"])]),_:1})])]),_:1}),M(rt,{label:"Passkey设备",name:"passkeys"},{default:A(()=>[Fe((z(),te("div",td,[M(pt,{type:"info",closable:!1,title:"最多可绑定3台设备,用于无密码登录。","show-icon":"",class:"settings-alert"}),M(Nt,{inline:""},{default:A(()=>[M(Ye,{label:"设备备注"},{default:A(()=>[M(Je,{modelValue:R.value,"onUpdate:modelValue":b[14]||(b[14]=X=>R.value=X),placeholder:"例如:我的iPhone / 办公Mac",maxlength:"40","show-word-limit":""},null,8,["modelValue"])]),_:1}),M(Ye,null,{default:A(()=>[M(ge,{type:"primary",loading:W.value,onClick:dl},{default:A(()=>[...b[44]||(b[44]=[ce(" 添加Passkey设备 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1}),K.value.length===0?(z(),de(ln,{key:0,description:"暂无Passkey设备"})):(z(),de(Ia,{key:1,data:K.value,size:"small",style:{width:"100%"}},{default:A(()=>[M(Tt,{prop:"device_name",label:"设备备注","min-width":"160"}),M(Tt,{prop:"credential_id_preview",label:"凭据ID","min-width":"180"}),M(Tt,{prop:"last_used_at",label:"最近使用","min-width":"140"}),M(Tt,{prop:"created_at",label:"创建时间","min-width":"140"}),M(Tt,{label:"操作",width:"100",fixed:"right"},{default:A(({row:X})=>[M(ge,{type:"danger",text:"",onClick:dd=>cl(X)},{default:A(()=>[...b[45]||(b[45]=[ce("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"]))])),[[Vt,k.value]])]),_:1}),M(rt,{label:"表格上传",name:"kdocs"},{default:A(()=>[Fe((z(),te("div",ld,[M(Nt,{"label-position":"top"},{default:A(()=>[M(Ye,{label:"县区(可选)"},{default:A(()=>[M(Je,{modelValue:H.value,"onUpdate:modelValue":b[15]||(b[15]=X=>H.value=X),placeholder:"留空使用系统默认县区"},null,8,["modelValue"])]),_:1}),M(ge,{type:"primary",loading:$.value,onClick:il},{default:A(()=>[...b[46]||(b[46]=[ce("保存",-1)])]),_:1},8,["loading"])]),_:1}),M(pt,{type:"info",closable:!1,title:"自动上传开关在“账号管理”页面设置(测试功能)。","show-icon":"",class:"settings-hint"})])),[[Vt,N.value]])]),_:1}),M(rt,{label:"VIP信息",name:"vip"},{default:A(()=>[D("div",nd,[M(pt,{type:y(n).isVip?"success":"info",closable:!1,title:y(n).isVip?"当前为 VIP 会员":"当前为普通用户","show-icon":"",class:"settings-alert"},null,8,["type","title"]),y(n).isVip?(z(),te("div",ad,[D("div",od,[b[47]||(b[47]=D("span",{class:"app-muted"},"到期时间",-1)),D("span",null,be(y(n).vipExpireTime||"未知"),1)]),D("div",sd,[b[48]||(b[48]=D("span",{class:"app-muted"},"剩余天数",-1)),D("span",null,be(y(n).vipDaysLeft),1)])])):(z(),te("div",rd,[...b[49]||(b[49]=[D("div",{class:"app-muted"},"升级方式:请通过“反馈”联系管理员开通。",-1)])]))])]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])]),_:1})}}},Ed=vs(ud,[["__scopeId","data-v-986fd8d3"]]);export{Ed as default}; diff --git a/static/app/assets/LoginPage-BtooAZsk.js b/static/app/assets/LoginPage-BtooAZsk.js new file mode 100644 index 0000000..c698cbe --- /dev/null +++ b/static/app/assets/LoginPage-BtooAZsk.js @@ -0,0 +1 @@ +import{f as X,g as n,h as Ee,i as Le,j as l,k as s,l as u,n as ae,t as g,w,v as k,m as se,p as Re,q as oe,o as c}from"./vendor-vue-WbiK4TmU.js";import{S as Ve}from"./SocialLoginButtons-BlVSr6Mm.js";import{_ as Ne}from"./style-CEbARg1o.js";import"./base-xgxQQEpV.js";import"./el-overlay-hge8bsIn.js";import"./aria-DLpFpzDe.js";import"./http-BoPYlvwK.js";import"./vendor-axios-B9ygI19o.js";import"./index-CoYtSGUZ.js";import"./auth-B5cl_nsV.js";const Ie={class:"login-page"},$e={class:"login-container"},Be={class:"form-group"},Ke={class:"form-group"},De={key:1,class:"form-group"},ze={class:"captcha-row"},He=["src"],je=["disabled"],qe=["disabled"],Fe={key:2,class:"social-login-area"},Je={class:"action-links"},We={class:"modal-card"},Me={class:"modal-head"},Ge={key:0,class:"modal-tip warn"},Xe={key:1,class:"modal-tip error"},Qe={class:"form-group"},Ye={class:"form-group"},Ze={class:"captcha-row"},et=["src"],tt={class:"modal-actions"},at=["disabled"],st={class:"modal-card"},ot={class:"modal-head"},nt={key:0,class:"modal-tip error"},rt={class:"form-group"},it={class:"form-group"},lt={class:"captcha-row"},ct=["src"],ut={class:"modal-actions"},dt=["disabled"],pt={__name:"LoginPage",setup(mt){const i=X({username:"",password:"",captcha:""}),_=n(!1),A=n(""),H=n(""),U=n(!1),E=n(!1),C=n(!1),j=n(!1),q=n(""),L=n(""),S=n(!1),P=n(!1),p=X({username:"",captcha:""}),R=n(""),F=n(""),V=n(!1),T=n(""),y=n(""),m=X({email:"",captcha:""}),N=n(""),J=n(""),I=n(!1),h=n(""),ne=Ee(()=>!0),Q=n(!1),$=n({enabled:!1,providers:[]}),B=n(!1),K={token:"zsglpt_social_pending_bind_token",provider:"zsglpt_social_pending_bind_provider",nickname:"zsglpt_social_pending_bind_nickname",avatar:"zsglpt_social_pending_bind_avatar_url"};function re(t){const e=String(t).replace(/([.*+?^${}()|[\]\\])/g,"\\$1"),a=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return a?decodeURIComponent(a[1]):""}class ie extends Error{constructor(e,a,o){super(e||"请求失败"),this.name="ApiError",this.response={status:Number(a||0),data:o||{}}}}async function f(t,e={}){const a=String(e.method||"GET").toUpperCase(),o={...e.headers||{}},v=Object.prototype.hasOwnProperty.call(e,"body");if(v&&!o["Content-Type"]&&(o["Content-Type"]="application/json"),!["GET","HEAD","OPTIONS"].includes(a)){const te=re("csrf_token");te&&(o["X-CSRF-Token"]=te)}const b=await fetch(`/api${t}`,{method:a,headers:o,credentials:"include",body:v?JSON.stringify(e.body??{}):void 0});let d={};try{d=await b.json()}catch{d={}}if(!b.ok)throw new ie(d?.error||d?.message||`请求失败 (${b.status})`,b.status,d);return d}const le=()=>f("/email/verify-status"),W=()=>f("/generate_captcha",{method:"POST",body:{}}),ce=t=>f("/login",{method:"POST",body:t||{}}),ue=t=>f("/passkeys/login/options",{method:"POST",body:t||{}}),de=t=>f("/passkeys/login/verify",{method:"POST",body:t||{}}),pe=t=>f("/resend-verify-email",{method:"POST",body:t||{}}),me=t=>f("/forgot-password",{method:"POST",body:t||{}}),fe=()=>f("/auth/social/config"),ve=t=>f("/auth/social/callback",{method:"POST",body:t||{}});function Y(t){const e=String(t||""),a="=".repeat((4-e.length%4)%4),o=(e+a).replace(/-/g,"+").replace(/_/g,"/"),v=window.atob(o),b=new Uint8Array(v.length);for(let d=0;d({...o,id:Y(o.id)}))),a}function he(t){const e=t?.response||{},a={id:t?.id,rawId:O(t?.rawId),type:t?.type,authenticatorAttachment:t?.authenticatorAttachment||void 0,response:{}};return e.clientDataJSON&&(a.response.clientDataJSON=O(e.clientDataJSON)),e.authenticatorData&&(a.response.authenticatorData=O(e.authenticatorData)),e.signature&&(a.response.signature=O(e.signature)),e.userHandle?a.response.userHandle=O(e.userHandle):a.response.userHandle=null,a}function be(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}async function we(t){const e=ye(t),a=await navigator.credentials.get({publicKey:e});return he(a)}async function Z(){if(!Q.value)try{const t=await le();C.value=!!t?.email_enabled,j.value=!!t?.register_verify_enabled}catch{C.value=!1,j.value=!1}finally{Q.value=!0}}function r(t,e){q.value=String(t||""),L.value=String(e||"")}function ee(){q.value="",L.value=""}async function x(){try{const t=await W();H.value=t?.session_id||"",A.value=t?.captcha_image||"",i.captcha=""}catch{H.value="",A.value=""}}async function D(){try{const t=await W();F.value=t?.session_id||"",R.value=t?.captcha_image||"",p.captcha=""}catch{F.value="",R.value=""}}async function z(){try{const t=await W();J.value=t?.session_id||"",N.value=t?.captcha_image||"",m.captcha=""}catch{J.value="",N.value=""}}function M(){const t=new URLSearchParams(window.location.search||""),e=String(t.get("next")||"").trim(),a=e&&e.startsWith("/")&&!e.startsWith("//")&&!e.startsWith("/\\")?e:"";window.setTimeout(()=>{window.location.href=a||"/app"},300)}function ke(){const t=new URL(window.location.href);return t.pathname="/login",t.search="",t.hash="",t.toString()}async function _e(){try{const t=await fe();$.value={enabled:!!t?.enabled,providers:Array.isArray(t?.providers)?t.providers:[]}}catch{$.value={enabled:!1,providers:[]}}}function Ce(t){try{window.sessionStorage.setItem(K.token,t?.bind_token||""),window.sessionStorage.setItem(K.provider,t?.provider||""),window.sessionStorage.setItem(K.nickname,t?.nickname||""),window.sessionStorage.setItem(K.avatar,t?.avatar_url||"")}catch{}}async function Se(){const t=new URLSearchParams(window.location.search||""),e=String(t.get("provider")||t.get("type")||"").trim(),a=String(t.get("code")||"").trim();if(!e||!a)return!1;B.value=!0,r("success","正在完成快捷登录...");try{const o=await ve({provider:e,code:a,mode:"login"});if(o?.requires_register&&o?.bind_token)return Ce(o),r("success","请完成注册后继续"),window.setTimeout(()=>{window.location.href="/register"},500),!0;if(o?.success||o?.bound)return r("success","快捷登录成功,正在跳转..."),M(),!0;r("error","快捷登录失败")}catch(o){const v=o?.response?.data;r("error",v?.error||v?.message||"快捷登录失败")}finally{B.value=!1}return!0}async function G(){if(ee(),!i.username.trim()||!i.password.trim()){r("error","用户名和密码不能为空");return}if(_.value&&!i.captcha.trim()){r("error","请输入验证码");return}U.value=!0;try{const t=i.username.trim();await ce({username:t,password:i.password,captcha_session:H.value,captcha:i.captcha.trim(),need_captcha:_.value}),r("success","登录成功,正在跳转..."),M()}catch(t){const e=t?.response?.status,a=t?.response?.data,o=a?.error||a?.message||"登录失败";r("error",o),a?.need_captcha?(_.value=!0,await x()):_.value&&e===400&&await x()}finally{U.value=!1}}async function Pe(){ee();const t=i.username.trim();if(!be()){r("error","当前浏览器或环境不支持Passkey(需 HTTPS)");return}E.value=!0;try{const e=await ue(t?{username:t}:{}),a=await we(e?.publicKey||{});await de(t?{username:t,credential:a}:{credential:a}),r("success","Passkey 登录成功,正在跳转..."),M()}catch(e){const o=e?.response?.data?.error||(e?.name==="NotAllowedError"?"Passkey验证未完成(可能取消、超时或设备未响应)":e?.message||"Passkey登录失败");r("error",o)}finally{E.value=!1}}async function Te(){await Z(),S.value=!0,T.value="",y.value="",p.username="",p.captcha="",await D()}async function Oe(){if(y.value="",T.value="",!C.value){y.value="邮件功能未启用,请联系管理员重置密码。";return}const t=p.username.trim();if(!t){y.value="请输入用户名";return}if(!p.captcha.trim()){y.value="请输入验证码";return}V.value=!0;try{const e=await me({username:t,captcha_session:F.value,captcha:p.captcha.trim()});r("success",e?.message||"已发送重置邮件"),S.value=!1}catch(e){const a=e?.response?.data,o=a?.error||"发送失败";a?.code==="email_not_bound"?T.value=o:y.value=o,await D()}finally{V.value=!1}}async function xe(){if(await Z(),!j.value){r("error","当前未启用注册邮箱验证,无需重发验证邮件。");return}P.value=!0,m.email="",m.captcha="",h.value="",await z()}async function Ae(){h.value="";const t=m.email.trim();if(!t){h.value="请输入邮箱";return}if(!m.captcha.trim()){h.value="请输入验证码";return}I.value=!0;try{const e=await pe({email:t,captcha_session:J.value,captcha:m.captcha.trim()});r("success",e?.message||"验证邮件已发送,请查收"),P.value=!1}catch(e){const a=e?.response?.data;h.value=a?.error||"发送失败",await z()}finally{I.value=!1}}function Ue(){window.location.href="/register"}return Le(async()=>{await _e(),await Se(),_.value&&await x()}),(t,e)=>(c(),l("div",Ie,[s("div",$e,[e[19]||(e[19]=s("div",{class:"login-header"},[s("span",{class:"login-badge"},"用户登录"),s("h1",null,"用户登录系统"),s("p",null,"知识管理平台")],-1)),L.value?(c(),l("div",{key:0,class:ae(["notice",q.value==="success"?"is-success":"is-error"])},g(L.value),3)):u("",!0),s("div",Be,[e[14]||(e[14]=s("label",{for:"username"},"用户账号",-1)),w(s("input",{id:"username","onUpdate:modelValue":e[0]||(e[0]=a=>i.username=a),class:"text-input",placeholder:"请输入用户名",autocomplete:"username"},null,512),[[k,i.username]])]),s("div",Ke,[e[15]||(e[15]=s("label",{for:"password"},"密码",-1)),w(s("input",{id:"password","onUpdate:modelValue":e[1]||(e[1]=a=>i.password=a),class:"text-input",type:"password",placeholder:"请输入密码",autocomplete:"current-password",onKeyup:se(G,["enter"])},null,544),[[k,i.password]])]),_.value?(c(),l("div",De,[e[16]||(e[16]=s("label",{for:"captcha"},"验证码",-1)),s("div",ze,[w(s("input",{id:"captcha","onUpdate:modelValue":e[2]||(e[2]=a=>i.captcha=a),class:"text-input captcha-input",placeholder:"请输入验证码",onKeyup:se(G,["enter"])},null,544),[[k,i.captcha]]),A.value?(c(),l("img",{key:0,class:"captcha-img",src:A.value,alt:"验证码",title:"点击刷新",onClick:x},null,8,He)):u("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:x},"刷新")])])):u("",!0),s("button",{type:"button",class:"btn-login",disabled:U.value||B.value,onClick:G},g(U.value||B.value?"登录中...":"登录系统"),9,je),s("button",{type:"button",class:"btn-passkey",disabled:E.value,onClick:Pe},g(E.value?"Passkey验证中...":"使用 Passkey 登录"),9,qe),$.value.enabled?(c(),l("div",Fe,[e[17]||(e[17]=s("div",{class:"divider"},[s("span",null,"快捷登录")],-1)),Re(Ve,{providers:$.value.providers,mode:"login","redirect-uri":ke(),block:"",onError:e[3]||(e[3]=a=>r("error",a))},null,8,["providers","redirect-uri"])])):u("",!0),s("div",Je,[s("button",{type:"button",class:"link-btn",onClick:Te},"忘记密码?"),ne.value?(c(),l("button",{key:0,type:"button",class:"link-btn",onClick:xe},"重发验证邮件")):u("",!0)]),s("div",{class:"register-row"},[e[18]||(e[18]=s("span",null,"还没有账号?",-1)),s("button",{type:"button",class:"link-btn",onClick:Ue},"立即注册")])]),S.value?(c(),l("div",{key:0,class:"modal-mask",onClick:e[8]||(e[8]=oe(a=>S.value=!1,["self"]))},[s("section",We,[s("div",Me,[e[20]||(e[20]=s("h3",null,"找回密码",-1)),s("button",{type:"button",class:"modal-close",onClick:e[4]||(e[4]=a=>S.value=!1)},"关闭")]),s("p",{class:ae(["modal-tip",{warn:!C.value}])},g(C.value?"输入用户名并完成验证码,我们将向该账号绑定的邮箱发送重置链接。":"邮件功能未启用,无法通过邮箱找回密码。"),3),T.value?(c(),l("p",Ge,g(T.value),1)):u("",!0),y.value?(c(),l("p",Xe,g(y.value),1)):u("",!0),s("div",Qe,[e[21]||(e[21]=s("label",{for:"forgot-username"},"用户名",-1)),w(s("input",{id:"forgot-username","onUpdate:modelValue":e[5]||(e[5]=a=>p.username=a),class:"text-input",placeholder:"请输入用户名"},null,512),[[k,p.username]])]),s("div",Ye,[e[22]||(e[22]=s("label",{for:"forgot-captcha"},"验证码",-1)),s("div",Ze,[w(s("input",{id:"forgot-captcha","onUpdate:modelValue":e[6]||(e[6]=a=>p.captcha=a),class:"text-input captcha-input",placeholder:"请输入验证码"},null,512),[[k,p.captcha]]),R.value?(c(),l("img",{key:0,class:"captcha-img",src:R.value,alt:"验证码",title:"点击刷新",onClick:D},null,8,et)):u("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:D},"刷新")])]),s("div",tt,[s("button",{type:"button",class:"btn-ghost",onClick:e[7]||(e[7]=a=>S.value=!1)},"取消"),s("button",{type:"button",class:"btn-login",disabled:V.value||!C.value,onClick:Oe},g(V.value?"发送中...":"发送重置邮件"),9,at)])])])):u("",!0),P.value?(c(),l("div",{key:1,class:"modal-mask",onClick:e[13]||(e[13]=oe(a=>P.value=!1,["self"]))},[s("section",st,[s("div",ot,[e[23]||(e[23]=s("h3",null,"重发验证邮件",-1)),s("button",{type:"button",class:"modal-close",onClick:e[9]||(e[9]=a=>P.value=!1)},"关闭")]),e[26]||(e[26]=s("p",{class:"modal-tip"},"用于注册邮箱验证:请输入邮箱并完成验证码。",-1)),h.value?(c(),l("p",nt,g(h.value),1)):u("",!0),s("div",rt,[e[24]||(e[24]=s("label",{for:"resend-email"},"邮箱",-1)),w(s("input",{id:"resend-email","onUpdate:modelValue":e[10]||(e[10]=a=>m.email=a),class:"text-input",placeholder:"name@example.com"},null,512),[[k,m.email]])]),s("div",it,[e[25]||(e[25]=s("label",{for:"resend-captcha"},"验证码",-1)),s("div",lt,[w(s("input",{id:"resend-captcha","onUpdate:modelValue":e[11]||(e[11]=a=>m.captcha=a),class:"text-input captcha-input",placeholder:"请输入验证码"},null,512),[[k,m.captcha]]),N.value?(c(),l("img",{key:0,class:"captcha-img",src:N.value,alt:"验证码",title:"点击刷新",onClick:z},null,8,ct)):u("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:z},"刷新")])]),s("div",ut,[s("button",{type:"button",class:"btn-ghost",onClick:e[12]||(e[12]=a=>P.value=!1)},"取消"),s("button",{type:"button",class:"btn-login",disabled:I.value,onClick:Ae},g(I.value?"发送中...":"发送"),9,dt)])])])):u("",!0)]))}},St=Ne(pt,[["__scopeId","data-v-870324c7"]]);export{St as default}; diff --git a/static/app/assets/LoginPage-D5iXLq7p.js b/static/app/assets/LoginPage-D5iXLq7p.js deleted file mode 100644 index 1ce43ad..0000000 --- a/static/app/assets/LoginPage-D5iXLq7p.js +++ /dev/null @@ -1 +0,0 @@ -import{f as W,g as o,h as Ce,i as _e,j as r,k as s,l as u,n as Z,t as m,w as b,v as w,m as ee,p as te,o as i}from"./vendor-vue-DxN60LNb.js";import{_ as Se}from"./style-CEbARg1o.js";const Pe={class:"login-page"},Te={class:"login-container"},xe={class:"form-group"},Oe={class:"form-group"},Ae={key:1,class:"form-group"},Ee={class:"captcha-row"},Ue=["src"],Re=["disabled"],Ve=["disabled"],Le={class:"action-links"},Ne={class:"modal-card"},$e={class:"modal-head"},Ke={key:0,class:"modal-tip warn"},De={key:1,class:"modal-tip error"},Be={class:"form-group"},Ie={class:"form-group"},He={class:"captcha-row"},je=["src"],Fe={class:"modal-actions"},ze=["disabled"],Je={class:"modal-card"},We={class:"modal-head"},qe={key:0,class:"modal-tip error"},Me={class:"form-group"},Ge={class:"form-group"},Xe={class:"captcha-row"},Qe=["src"],Ye={class:"modal-actions"},Ze=["disabled"],et={__name:"LoginPage",setup(tt){const l=W({username:"",password:"",captcha:""}),k=o(!1),A=o(""),B=o(""),E=o(!1),U=o(!1),C=o(!1),I=o(!1),H=o(""),R=o(""),_=o(!1),S=o(!1),d=W({username:"",captcha:""}),V=o(""),j=o(""),L=o(!1),T=o(""),v=o(""),p=W({email:"",captcha:""}),N=o(""),F=o(""),$=o(!1),y=o(""),ae=Ce(()=>!0),q=o(!1);function se(t){const e=String(t).replace(/([.*+?^${}()|[\]\\])/g,"\\$1"),a=document.cookie.match(new RegExp(`(?:^|; )${e}=([^;]*)`));return a?decodeURIComponent(a[1]):""}class ne extends Error{constructor(e,a,n){super(e||"请求失败"),this.name="ApiError",this.response={status:Number(a||0),data:n||{}}}}async function h(t,e={}){const a=String(e.method||"GET").toUpperCase(),n={...e.headers||{}},P=Object.prototype.hasOwnProperty.call(e,"body");if(P&&!n["Content-Type"]&&(n["Content-Type"]="application/json"),!["GET","HEAD","OPTIONS"].includes(a)){const Y=se("csrf_token");Y&&(n["X-CSRF-Token"]=Y)}const g=await fetch(`/api${t}`,{method:a,headers:n,credentials:"include",body:P?JSON.stringify(e.body??{}):void 0});let c={};try{c=await g.json()}catch{c={}}if(!g.ok)throw new ne(c?.error||c?.message||`请求失败 (${g.status})`,g.status,c);return c}const oe=()=>h("/email/verify-status"),z=()=>h("/generate_captcha",{method:"POST",body:{}}),le=t=>h("/login",{method:"POST",body:t||{}}),re=t=>h("/passkeys/login/options",{method:"POST",body:t||{}}),ie=t=>h("/passkeys/login/verify",{method:"POST",body:t||{}}),ce=t=>h("/resend-verify-email",{method:"POST",body:t||{}}),ue=t=>h("/forgot-password",{method:"POST",body:t||{}});function M(t){const e=String(t||""),a="=".repeat((4-e.length%4)%4),n=(e+a).replace(/-/g,"+").replace(/_/g,"/"),P=window.atob(n),g=new Uint8Array(P.length);for(let c=0;c({...n,id:M(n.id)}))),a}function fe(t){const e=t?.response||{},a={id:t?.id,rawId:x(t?.rawId),type:t?.type,authenticatorAttachment:t?.authenticatorAttachment||void 0,response:{}};return e.clientDataJSON&&(a.response.clientDataJSON=x(e.clientDataJSON)),e.authenticatorData&&(a.response.authenticatorData=x(e.authenticatorData)),e.signature&&(a.response.signature=x(e.signature)),e.userHandle?a.response.userHandle=x(e.userHandle):a.response.userHandle=null,a}function me(){return typeof window<"u"&&window.isSecureContext&&!!window.PublicKeyCredential&&!!navigator.credentials}async function ve(t){const e=pe(t),a=await navigator.credentials.get({publicKey:e});return fe(a)}async function G(){if(!q.value)try{const t=await oe();C.value=!!t?.email_enabled,I.value=!!t?.register_verify_enabled}catch{C.value=!1,I.value=!1}finally{q.value=!0}}function f(t,e){H.value=String(t||""),R.value=String(e||"")}function X(){H.value="",R.value=""}async function O(){try{const t=await z();B.value=t?.session_id||"",A.value=t?.captcha_image||"",l.captcha=""}catch{B.value="",A.value=""}}async function K(){try{const t=await z();j.value=t?.session_id||"",V.value=t?.captcha_image||"",d.captcha=""}catch{j.value="",V.value=""}}async function D(){try{const t=await z();F.value=t?.session_id||"",N.value=t?.captcha_image||"",p.captcha=""}catch{F.value="",N.value=""}}function Q(){const t=new URLSearchParams(window.location.search||""),e=String(t.get("next")||"").trim(),a=e&&e.startsWith("/")&&!e.startsWith("//")&&!e.startsWith("/\\")?e:"";window.setTimeout(()=>{window.location.href=a||"/app"},300)}async function J(){if(X(),!l.username.trim()||!l.password.trim()){f("error","用户名和密码不能为空");return}if(k.value&&!l.captcha.trim()){f("error","请输入验证码");return}E.value=!0;try{const t=l.username.trim();await le({username:t,password:l.password,captcha_session:B.value,captcha:l.captcha.trim(),need_captcha:k.value}),f("success","登录成功,正在跳转..."),Q()}catch(t){const e=t?.response?.status,a=t?.response?.data,n=a?.error||a?.message||"登录失败";f("error",n),a?.need_captcha?(k.value=!0,await O()):k.value&&e===400&&await O()}finally{E.value=!1}}async function ye(){X();const t=l.username.trim();if(!me()){f("error","当前浏览器或环境不支持Passkey(需 HTTPS)");return}U.value=!0;try{const e=await re(t?{username:t}:{}),a=await ve(e?.publicKey||{});await ie(t?{username:t,credential:a}:{credential:a}),f("success","Passkey 登录成功,正在跳转..."),Q()}catch(e){const n=e?.response?.data?.error||(e?.name==="NotAllowedError"?"Passkey验证未完成(可能取消、超时或设备未响应)":e?.message||"Passkey登录失败");f("error",n)}finally{U.value=!1}}async function he(){await G(),_.value=!0,T.value="",v.value="",d.username="",d.captcha="",await K()}async function ge(){if(v.value="",T.value="",!C.value){v.value="邮件功能未启用,请联系管理员重置密码。";return}const t=d.username.trim();if(!t){v.value="请输入用户名";return}if(!d.captcha.trim()){v.value="请输入验证码";return}L.value=!0;try{const e=await ue({username:t,captcha_session:j.value,captcha:d.captcha.trim()});f("success",e?.message||"已发送重置邮件"),_.value=!1}catch(e){const a=e?.response?.data,n=a?.error||"发送失败";a?.code==="email_not_bound"?T.value=n:v.value=n,await K()}finally{L.value=!1}}async function be(){if(await G(),!I.value){f("error","当前未启用注册邮箱验证,无需重发验证邮件。");return}S.value=!0,p.email="",p.captcha="",y.value="",await D()}async function we(){y.value="";const t=p.email.trim();if(!t){y.value="请输入邮箱";return}if(!p.captcha.trim()){y.value="请输入验证码";return}$.value=!0;try{const e=await ce({email:t,captcha_session:F.value,captcha:p.captcha.trim()});f("success",e?.message||"验证邮件已发送,请查收"),S.value=!1}catch(e){const a=e?.response?.data;y.value=a?.error||"发送失败",await D()}finally{$.value=!1}}function ke(){window.location.href="/register"}return _e(async()=>{k.value&&await O()}),(t,e)=>(i(),r("div",Pe,[s("div",Te,[e[17]||(e[17]=s("div",{class:"login-header"},[s("span",{class:"login-badge"},"用户登录"),s("h1",null,"用户登录系统"),s("p",null,"知识管理平台")],-1)),R.value?(i(),r("div",{key:0,class:Z(["notice",H.value==="success"?"is-success":"is-error"])},m(R.value),3)):u("",!0),s("div",xe,[e[13]||(e[13]=s("label",{for:"username"},"用户账号",-1)),b(s("input",{id:"username","onUpdate:modelValue":e[0]||(e[0]=a=>l.username=a),class:"text-input",placeholder:"请输入用户名",autocomplete:"username"},null,512),[[w,l.username]])]),s("div",Oe,[e[14]||(e[14]=s("label",{for:"password"},"密码",-1)),b(s("input",{id:"password","onUpdate:modelValue":e[1]||(e[1]=a=>l.password=a),class:"text-input",type:"password",placeholder:"请输入密码",autocomplete:"current-password",onKeyup:ee(J,["enter"])},null,544),[[w,l.password]])]),k.value?(i(),r("div",Ae,[e[15]||(e[15]=s("label",{for:"captcha"},"验证码",-1)),s("div",Ee,[b(s("input",{id:"captcha","onUpdate:modelValue":e[2]||(e[2]=a=>l.captcha=a),class:"text-input captcha-input",placeholder:"请输入验证码",onKeyup:ee(J,["enter"])},null,544),[[w,l.captcha]]),A.value?(i(),r("img",{key:0,class:"captcha-img",src:A.value,alt:"验证码",title:"点击刷新",onClick:O},null,8,Ue)):u("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:O},"刷新")])])):u("",!0),s("button",{type:"button",class:"btn-login",disabled:E.value,onClick:J},m(E.value?"登录中...":"登录系统"),9,Re),s("button",{type:"button",class:"btn-passkey",disabled:U.value,onClick:ye},m(U.value?"Passkey验证中...":"使用 Passkey 登录"),9,Ve),s("div",Le,[s("button",{type:"button",class:"link-btn",onClick:he},"忘记密码?"),ae.value?(i(),r("button",{key:0,type:"button",class:"link-btn",onClick:be},"重发验证邮件")):u("",!0)]),s("div",{class:"register-row"},[e[16]||(e[16]=s("span",null,"还没有账号?",-1)),s("button",{type:"button",class:"link-btn",onClick:ke},"立即注册")])]),_.value?(i(),r("div",{key:0,class:"modal-mask",onClick:e[7]||(e[7]=te(a=>_.value=!1,["self"]))},[s("section",Ne,[s("div",$e,[e[18]||(e[18]=s("h3",null,"找回密码",-1)),s("button",{type:"button",class:"modal-close",onClick:e[3]||(e[3]=a=>_.value=!1)},"关闭")]),s("p",{class:Z(["modal-tip",{warn:!C.value}])},m(C.value?"输入用户名并完成验证码,我们将向该账号绑定的邮箱发送重置链接。":"邮件功能未启用,无法通过邮箱找回密码。"),3),T.value?(i(),r("p",Ke,m(T.value),1)):u("",!0),v.value?(i(),r("p",De,m(v.value),1)):u("",!0),s("div",Be,[e[19]||(e[19]=s("label",{for:"forgot-username"},"用户名",-1)),b(s("input",{id:"forgot-username","onUpdate:modelValue":e[4]||(e[4]=a=>d.username=a),class:"text-input",placeholder:"请输入用户名"},null,512),[[w,d.username]])]),s("div",Ie,[e[20]||(e[20]=s("label",{for:"forgot-captcha"},"验证码",-1)),s("div",He,[b(s("input",{id:"forgot-captcha","onUpdate:modelValue":e[5]||(e[5]=a=>d.captcha=a),class:"text-input captcha-input",placeholder:"请输入验证码"},null,512),[[w,d.captcha]]),V.value?(i(),r("img",{key:0,class:"captcha-img",src:V.value,alt:"验证码",title:"点击刷新",onClick:K},null,8,je)):u("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:K},"刷新")])]),s("div",Fe,[s("button",{type:"button",class:"btn-ghost",onClick:e[6]||(e[6]=a=>_.value=!1)},"取消"),s("button",{type:"button",class:"btn-login",disabled:L.value||!C.value,onClick:ge},m(L.value?"发送中...":"发送重置邮件"),9,ze)])])])):u("",!0),S.value?(i(),r("div",{key:1,class:"modal-mask",onClick:e[12]||(e[12]=te(a=>S.value=!1,["self"]))},[s("section",Je,[s("div",We,[e[21]||(e[21]=s("h3",null,"重发验证邮件",-1)),s("button",{type:"button",class:"modal-close",onClick:e[8]||(e[8]=a=>S.value=!1)},"关闭")]),e[24]||(e[24]=s("p",{class:"modal-tip"},"用于注册邮箱验证:请输入邮箱并完成验证码。",-1)),y.value?(i(),r("p",qe,m(y.value),1)):u("",!0),s("div",Me,[e[22]||(e[22]=s("label",{for:"resend-email"},"邮箱",-1)),b(s("input",{id:"resend-email","onUpdate:modelValue":e[9]||(e[9]=a=>p.email=a),class:"text-input",placeholder:"name@example.com"},null,512),[[w,p.email]])]),s("div",Ge,[e[23]||(e[23]=s("label",{for:"resend-captcha"},"验证码",-1)),s("div",Xe,[b(s("input",{id:"resend-captcha","onUpdate:modelValue":e[10]||(e[10]=a=>p.captcha=a),class:"text-input captcha-input",placeholder:"请输入验证码"},null,512),[[w,p.captcha]]),N.value?(i(),r("img",{key:0,class:"captcha-img",src:N.value,alt:"验证码",title:"点击刷新",onClick:D},null,8,Qe)):u("",!0),s("button",{type:"button",class:"captcha-refresh",onClick:D},"刷新")])]),s("div",Ye,[s("button",{type:"button",class:"btn-ghost",onClick:e[11]||(e[11]=a=>S.value=!1)},"取消"),s("button",{type:"button",class:"btn-login",disabled:$.value,onClick:we},m($.value?"发送中...":"发送"),9,Ze)])])])):u("",!0)]))}},nt=Se(et,[["__scopeId","data-v-01524203"]]);export{nt as default}; diff --git a/static/app/assets/LoginPage-DTj5KeC4.css b/static/app/assets/LoginPage-DTj5KeC4.css deleted file mode 100644 index 0898001..0000000 --- a/static/app/assets/LoginPage-DTj5KeC4.css +++ /dev/null @@ -1 +0,0 @@ -.login-page[data-v-01524203]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;background:linear-gradient(135deg,#eef2ff,#f6f7fb 45%,#ecfeff)}.login-page[data-v-01524203]:before{content:"";position:fixed;inset:0;background:radial-gradient(800px 500px at 15% 20%,rgba(59,130,246,.18),transparent 60%),radial-gradient(700px 420px at 85% 70%,rgba(124,58,237,.16),transparent 55%);pointer-events:none}.login-container[data-v-01524203]{width:100%;max-width:420px;background:#fff;border-radius:16px;box-shadow:0 18px 60px #11182726;border:1px solid rgba(17,24,39,.08);padding:36px 30px;position:relative;z-index:1}.login-header[data-v-01524203]{text-align:center;margin-bottom:26px}.login-badge[data-v-01524203]{display:inline-block;background:#3b82f61a;color:#1d4ed8;padding:6px 14px;border-radius:999px;font-size:12px;font-weight:700;margin-bottom:14px}.login-header h1[data-v-01524203]{font-size:24px;color:#111827;margin:0 0 10px;letter-spacing:.2px}.login-header p[data-v-01524203]{margin:0;color:#6b7280;font-size:14px}.notice[data-v-01524203]{margin-bottom:14px;padding:10px 12px;border-radius:10px;font-size:13px;font-weight:600}.notice.is-error[data-v-01524203]{color:#b91c1c;background:#fee2e2;border:1px solid #fecaca}.notice.is-success[data-v-01524203]{color:#065f46;background:#d1fae5;border:1px solid #a7f3d0}.form-group[data-v-01524203]{margin-bottom:16px}.form-group label[data-v-01524203]{display:block;margin-bottom:8px;color:#111827;font-weight:700;font-size:13px}.text-input[data-v-01524203]{width:100%;height:44px;border-radius:10px;border:1px solid rgba(17,24,39,.18);padding:0 12px;font-size:14px;color:#111827;background:#ffffffeb;outline:none;transition:border-color .18s,box-shadow .18s;box-sizing:border-box}.text-input[data-v-01524203]:focus{border-color:#3b82f6cc;box-shadow:0 0 0 4px #3b82f624}.btn-login[data-v-01524203]{width:100%;height:44px;border:none;border-radius:10px;background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;font-size:14px;font-weight:800;cursor:pointer;transition:transform .15s,filter .15s}.btn-passkey[data-v-01524203]{width:100%;height:42px;margin-top:10px;border-radius:10px;border:1px solid rgba(17,24,39,.14);background:#f8fafc;color:#0f172a;font-size:14px;font-weight:700;cursor:pointer}.btn-passkey[data-v-01524203]:hover:not(:disabled){background:#f1f5f9}.btn-passkey[data-v-01524203]:disabled,.btn-login[data-v-01524203]:disabled,.btn-ghost[data-v-01524203]:disabled,.captcha-refresh[data-v-01524203]:disabled{cursor:not-allowed;opacity:.72}.btn-login[data-v-01524203]:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.02)}.action-links[data-v-01524203]{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.link-btn[data-v-01524203]{border:none;background:none;color:#2563eb;font-size:13px;font-weight:700;cursor:pointer;padding:0}.link-btn[data-v-01524203]:hover{text-decoration:underline}.register-row[data-v-01524203]{margin-top:16px;display:flex;justify-content:center;align-items:center;gap:8px;color:#6b7280;font-size:13px}.captcha-row[data-v-01524203]{display:flex;align-items:center;gap:10px;width:100%}.captcha-input[data-v-01524203]{flex:1;min-width:0}.captcha-img[data-v-01524203]{height:44px;border:1px solid rgba(17,24,39,.14);border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.captcha-refresh[data-v-01524203]{height:42px;padding:0 12px;border:1px solid rgba(17,24,39,.14);border-radius:10px;background:#f8fafc;color:#111827;font-size:13px;cursor:pointer}.captcha-refresh[data-v-01524203]:hover{background:#f1f5f9}.modal-mask[data-v-01524203]{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}.modal-card[data-v-01524203]{width:min(560px,96vw);border-radius:14px;background:#fff;border:1px solid rgba(17,24,39,.08);box-shadow:0 16px 42px #0f172a47;padding:16px}.modal-head[data-v-01524203]{display:flex;align-items:center;justify-content:space-between;gap:10px}.modal-head h3[data-v-01524203]{margin:0;font-size:16px;font-weight:800;color:#0f172a}.modal-close[data-v-01524203]{height:30px;padding:0 10px;border-radius:8px;border:1px solid rgba(17,24,39,.16);background:#fff;color:#334155;cursor:pointer}.modal-tip[data-v-01524203]{margin:12px 0;padding:10px;border-radius:10px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;font-size:13px}.modal-tip.warn[data-v-01524203]{background:#fffbeb;border-color:#fde68a;color:#92400e}.modal-tip.error[data-v-01524203]{background:#fef2f2;border-color:#fecaca;color:#991b1b}.modal-actions[data-v-01524203]{margin-top:14px;display:flex;justify-content:flex-end;gap:10px}.btn-ghost[data-v-01524203]{min-width:86px;height:40px;border-radius:10px;border:1px solid rgba(17,24,39,.2);background:#fff;color:#334155;font-size:13px;font-weight:700;cursor:pointer}@media(max-width:480px){.login-page[data-v-01524203]{align-items:flex-start;padding:16px 10px 10px}.login-container[data-v-01524203]{max-width:100%;padding:26px 18px;border-radius:14px}.login-header h1[data-v-01524203]{font-size:22px}.captcha-img[data-v-01524203]{height:42px}.captcha-refresh[data-v-01524203]{height:40px;padding:0 10px}.modal-card[data-v-01524203]{padding:14px}} diff --git a/static/app/assets/LoginPage-vCVLchWz.css b/static/app/assets/LoginPage-vCVLchWz.css new file mode 100644 index 0000000..31bd5e5 --- /dev/null +++ b/static/app/assets/LoginPage-vCVLchWz.css @@ -0,0 +1 @@ +.login-page[data-v-870324c7]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;background:linear-gradient(135deg,#eef2ff,#f6f7fb 45%,#ecfeff)}.login-page[data-v-870324c7]:before{content:"";position:fixed;inset:0;background:radial-gradient(800px 500px at 15% 20%,rgba(59,130,246,.18),transparent 60%),radial-gradient(700px 420px at 85% 70%,rgba(124,58,237,.16),transparent 55%);pointer-events:none}.login-container[data-v-870324c7]{width:100%;max-width:420px;background:#fff;border-radius:16px;box-shadow:0 18px 60px #11182726;border:1px solid rgba(17,24,39,.08);padding:36px 30px;position:relative;z-index:1}.login-header[data-v-870324c7]{text-align:center;margin-bottom:26px}.login-badge[data-v-870324c7]{display:inline-block;background:#3b82f61a;color:#1d4ed8;padding:6px 14px;border-radius:999px;font-size:12px;font-weight:700;margin-bottom:14px}.login-header h1[data-v-870324c7]{font-size:24px;color:#111827;margin:0 0 10px;letter-spacing:.2px}.login-header p[data-v-870324c7]{margin:0;color:#6b7280;font-size:14px}.notice[data-v-870324c7]{margin-bottom:14px;padding:10px 12px;border-radius:10px;font-size:13px;font-weight:600}.notice.is-error[data-v-870324c7]{color:#b91c1c;background:#fee2e2;border:1px solid #fecaca}.notice.is-success[data-v-870324c7]{color:#065f46;background:#d1fae5;border:1px solid #a7f3d0}.form-group[data-v-870324c7]{margin-bottom:16px}.form-group label[data-v-870324c7]{display:block;margin-bottom:8px;color:#111827;font-weight:700;font-size:13px}.text-input[data-v-870324c7]{width:100%;height:44px;border-radius:10px;border:1px solid rgba(17,24,39,.18);padding:0 12px;font-size:14px;color:#111827;background:#ffffffeb;outline:none;transition:border-color .18s,box-shadow .18s;box-sizing:border-box}.text-input[data-v-870324c7]:focus{border-color:#3b82f6cc;box-shadow:0 0 0 4px #3b82f624}.btn-login[data-v-870324c7]{width:100%;height:44px;border:none;border-radius:10px;background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;font-size:14px;font-weight:800;cursor:pointer;transition:transform .15s,filter .15s}.btn-passkey[data-v-870324c7]{width:100%;height:42px;margin-top:10px;border-radius:10px;border:1px solid rgba(17,24,39,.14);background:#f8fafc;color:#0f172a;font-size:14px;font-weight:700;cursor:pointer}.btn-passkey[data-v-870324c7]:hover:not(:disabled){background:#f1f5f9}.social-login-area[data-v-870324c7]{margin-top:14px}.divider[data-v-870324c7]{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:#64748b;font-size:12px;font-weight:700}.divider[data-v-870324c7]:before,.divider[data-v-870324c7]:after{content:"";height:1px;flex:1;background:#1118271f}.btn-passkey[data-v-870324c7]:disabled,.btn-login[data-v-870324c7]:disabled,.btn-ghost[data-v-870324c7]:disabled,.captcha-refresh[data-v-870324c7]:disabled{cursor:not-allowed;opacity:.72}.btn-login[data-v-870324c7]:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.02)}.action-links[data-v-870324c7]{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.link-btn[data-v-870324c7]{border:none;background:none;color:#2563eb;font-size:13px;font-weight:700;cursor:pointer;padding:0}.link-btn[data-v-870324c7]:hover{text-decoration:underline}.register-row[data-v-870324c7]{margin-top:16px;display:flex;justify-content:center;align-items:center;gap:8px;color:#6b7280;font-size:13px}.captcha-row[data-v-870324c7]{display:flex;align-items:center;gap:10px;width:100%}.captcha-input[data-v-870324c7]{flex:1;min-width:0}.captcha-img[data-v-870324c7]{height:44px;border:1px solid rgba(17,24,39,.14);border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.captcha-refresh[data-v-870324c7]{height:42px;padding:0 12px;border:1px solid rgba(17,24,39,.14);border-radius:10px;background:#f8fafc;color:#111827;font-size:13px;cursor:pointer}.captcha-refresh[data-v-870324c7]:hover{background:#f1f5f9}.modal-mask[data-v-870324c7]{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}.modal-card[data-v-870324c7]{width:min(560px,96vw);border-radius:14px;background:#fff;border:1px solid rgba(17,24,39,.08);box-shadow:0 16px 42px #0f172a47;padding:16px}.modal-head[data-v-870324c7]{display:flex;align-items:center;justify-content:space-between;gap:10px}.modal-head h3[data-v-870324c7]{margin:0;font-size:16px;font-weight:800;color:#0f172a}.modal-close[data-v-870324c7]{height:30px;padding:0 10px;border-radius:8px;border:1px solid rgba(17,24,39,.16);background:#fff;color:#334155;cursor:pointer}.modal-tip[data-v-870324c7]{margin:12px 0;padding:10px;border-radius:10px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;font-size:13px}.modal-tip.warn[data-v-870324c7]{background:#fffbeb;border-color:#fde68a;color:#92400e}.modal-tip.error[data-v-870324c7]{background:#fef2f2;border-color:#fecaca;color:#991b1b}.modal-actions[data-v-870324c7]{margin-top:14px;display:flex;justify-content:flex-end;gap:10px}.btn-ghost[data-v-870324c7]{min-width:86px;height:40px;border-radius:10px;border:1px solid rgba(17,24,39,.2);background:#fff;color:#334155;font-size:13px;font-weight:700;cursor:pointer}@media(max-width:480px){.login-page[data-v-870324c7]{align-items:flex-start;padding:16px 10px 10px}.login-container[data-v-870324c7]{max-width:100%;padding:26px 18px;border-radius:14px}.login-header h1[data-v-870324c7]{font-size:22px}.captcha-img[data-v-870324c7]{height:42px}.captcha-refresh[data-v-870324c7]{height:40px;padding:0 10px}.modal-card[data-v-870324c7]{padding:14px}} diff --git a/static/app/assets/RegisterPage-4xFnBJCQ.js b/static/app/assets/RegisterPage-4xFnBJCQ.js deleted file mode 100644 index 95f7c7a..0000000 --- a/static/app/assets/RegisterPage-4xFnBJCQ.js +++ /dev/null @@ -1 +0,0 @@ -import{E as D}from"./el-button-DWxIvzz-.js";import{E as F}from"./el-card-DfVpO1U5.js";import{E as L,a as M,b as j}from"./el-alert-DB2IQLpH.js";import{E as q,a as c}from"./http-CdvgQxJu.js";import{f as H,g as d,h as B,i as z,j as S,q as s,s as o,u as G,o as g,k as n,c as U,l as C,m as I,t as J,x}from"./vendor-vue-DxN60LNb.js";import{g as O,f as Q,r as W}from"./auth-CX9p6ZYg.js";import{v as X}from"./password-7ryi82gE.js";import{_ as Y}from"./style-CEbARg1o.js";import"./vendor-axios-B9ygI19o.js";const Z={class:"auth-wrap"},$={class:"hint app-muted"},ee={class:"captcha-row"},ae=["src"],te={class:"actions"},se={__name:"RegisterPage",setup(le){const N=G(),a=H({username:"",password:"",confirm_password:"",email:"",captcha:""}),f=d(!1),v=d(""),h=d(""),b=d(!1),t=d(""),w=d(""),V=d(""),P=B(()=>f.value?"邮箱 *":"邮箱(可选)"),T=B(()=>f.value?"必填,用于账号验证":"选填,用于找回密码和接收通知");async function _(){try{const u=await O();h.value=u?.session_id||"",v.value=u?.captcha_image||"",a.captcha=""}catch{h.value="",v.value=""}}async function K(){try{const u=await Q();f.value=!!u?.register_verify_enabled}catch{f.value=!1}}function R(){t.value="",w.value="",V.value=""}async function E(){R();const u=a.username.trim(),e=a.password,y=a.confirm_password,l=a.email.trim(),i=a.captcha.trim();if(u.length<3){t.value="用户名至少3个字符",c.error(t.value);return}const p=X(e);if(!p.ok){t.value=p.message||"密码格式不正确",c.error(t.value);return}if(e!==y){t.value="两次输入的密码不一致",c.error(t.value);return}if(f.value&&!l){t.value="请填写邮箱地址用于账号验证",c.error(t.value);return}if(l&&!l.includes("@")){t.value="邮箱格式不正确",c.error(t.value);return}if(!i){t.value="请输入验证码",c.error(t.value);return}b.value=!0;try{const m=await W({username:u,password:e,email:l,captcha_session:h.value,captcha:i});w.value=m?.message||"注册成功",V.value=m?.need_verify?"请检查您的邮箱(包括垃圾邮件文件夹)":"",c.success("注册成功"),a.username="",a.password="",a.confirm_password="",a.email="",a.captcha="",setTimeout(()=>{window.location.href="/login"},3e3)}catch(m){const k=m?.response?.data;t.value=k?.error||"注册失败",c.error(t.value),await _()}finally{b.value=!1}}function A(){N.push("/login")}return z(async()=>{await _(),await K()}),(u,e)=>{const y=L,l=q,i=j,p=D,m=M,k=F;return g(),S("div",Z,[s(k,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:o(()=>[e[11]||(e[11]=n("div",{class:"brand"},[n("div",{class:"brand-title"},"知识管理平台"),n("div",{class:"brand-sub app-muted"},"用户注册")],-1)),t.value?(g(),U(y,{key:0,type:"error",closable:!1,title:t.value,"show-icon":"",class:"alert"},null,8,["title"])):C("",!0),w.value?(g(),U(y,{key:1,type:"success",closable:!1,title:w.value,description:V.value,"show-icon":"",class:"alert"},null,8,["title","description"])):C("",!0),s(m,{"label-position":"top"},{default:o(()=>[s(i,{label:"用户名 *"},{default:o(()=>[s(l,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=r=>a.username=r),placeholder:"至少3个字符",autocomplete:"username"},null,8,["modelValue"]),e[5]||(e[5]=n("div",{class:"hint app-muted"},"至少3个字符",-1))]),_:1}),s(i,{label:"密码 *"},{default:o(()=>[s(l,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=r=>a.password=r),type:"password","show-password":"",placeholder:"至少8位且包含字母和数字",autocomplete:"new-password"},null,8,["modelValue"]),e[6]||(e[6]=n("div",{class:"hint app-muted"},"至少8位且包含字母和数字",-1))]),_:1}),s(i,{label:"确认密码 *"},{default:o(()=>[s(l,{modelValue:a.confirm_password,"onUpdate:modelValue":e[2]||(e[2]=r=>a.confirm_password=r),type:"password","show-password":"",placeholder:"请再次输入密码",autocomplete:"new-password",onKeyup:I(E,["enter"])},null,8,["modelValue"])]),_:1}),s(i,{label:P.value},{default:o(()=>[s(l,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=r=>a.email=r),placeholder:"name@example.com",autocomplete:"email"},null,8,["modelValue"]),n("div",$,J(T.value),1)]),_:1},8,["label"]),s(i,{label:"验证码 *"},{default:o(()=>[n("div",ee,[s(l,{modelValue:a.captcha,"onUpdate:modelValue":e[4]||(e[4]=r=>a.captcha=r),placeholder:"请输入验证码",onKeyup:I(E,["enter"])},null,8,["modelValue"]),v.value?(g(),S("img",{key:0,class:"captcha-img",src:v.value,alt:"验证码",title:"点击刷新",onClick:_},null,8,ae)):C("",!0),s(p,{onClick:_},{default:o(()=>[...e[7]||(e[7]=[x("刷新",-1)])]),_:1})])]),_:1})]),_:1}),s(p,{type:"primary",class:"submit-btn",loading:b.value,onClick:E},{default:o(()=>[...e[8]||(e[8]=[x("注册",-1)])]),_:1},8,["loading"]),n("div",te,[e[10]||(e[10]=n("span",{class:"app-muted"},"已有账号?",-1)),s(p,{link:"",type:"primary",onClick:A},{default:o(()=>[...e[9]||(e[9]=[x("立即登录",-1)])]),_:1})])]),_:1})])}}},fe=Y(se,[["__scopeId","data-v-a9d7804f"]]);export{fe as default}; diff --git a/static/app/assets/RegisterPage-BOcNcW5D.css b/static/app/assets/RegisterPage-BOcNcW5D.css deleted file mode 100644 index 3f3b9ea..0000000 --- a/static/app/assets/RegisterPage-BOcNcW5D.css +++ /dev/null @@ -1 +0,0 @@ -.auth-wrap[data-v-a9d7804f]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-a9d7804f]{width:100%;max-width:420px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-a9d7804f]{margin-bottom:14px}.brand-title[data-v-a9d7804f]{font-size:18px;font-weight:900}.brand-sub[data-v-a9d7804f]{margin-top:4px;font-size:12px}.alert[data-v-a9d7804f]{margin-bottom:12px}.hint[data-v-a9d7804f]{margin-top:6px;font-size:12px}.captcha-row[data-v-a9d7804f]{display:flex;align-items:center;gap:10px;width:100%}.captcha-img[data-v-a9d7804f]{height:40px;border:1px solid var(--app-border);border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.submit-btn[data-v-a9d7804f]{width:100%;margin-top:4px}.actions[data-v-a9d7804f]{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:6px} diff --git a/static/app/assets/RegisterPage-Cb1mme2j.js b/static/app/assets/RegisterPage-Cb1mme2j.js new file mode 100644 index 0000000..ff9d0cd --- /dev/null +++ b/static/app/assets/RegisterPage-Cb1mme2j.js @@ -0,0 +1 @@ +import"./base-xgxQQEpV.js";import{E as M}from"./el-card-CfK866jr.js";import{E as Q,a as H,b as O}from"./el-alert-DTUOkrAB.js";import{E as $}from"./el-button-LKkD3jQh.js";import{E as G}from"./el-input-BaZNy9Kg.js";import{f as P,g as p,h as U,i as J,j as z,p as s,s as r,u as W,o as g,k as u,c as I,l as h,m as K,t as X,x as B}from"./vendor-vue-WbiK4TmU.js";import{g as Y,f as Z,r as ee}from"./auth-B5cl_nsV.js";import{v as ae}from"./password-7ryi82gE.js";import{_ as te}from"./style-CEbARg1o.js";import{E as d}from"./http-BoPYlvwK.js";import"./aria-DLpFpzDe.js";import"./index-CoYtSGUZ.js";import"./vendor-axios-B9ygI19o.js";const oe={class:"auth-wrap"},se={class:"hint app-muted"},le={class:"captcha-row"},ne=["src"],re={class:"actions"},ie={__name:"RegisterPage",setup(ue){const N=W(),a=P({username:"",password:"",confirm_password:"",email:"",captcha:""}),f=p(!1),y=p(""),V=p(""),E=p(!1),o=p(""),k=p(""),S=p(""),_={token:"zsglpt_social_pending_bind_token",provider:"zsglpt_social_pending_bind_provider",nickname:"zsglpt_social_pending_bind_nickname",avatar:"zsglpt_social_pending_bind_avatar_url"},T={qq:"QQ",wx:"微信",alipay:"支付宝"},t=P({token:"",provider:"",nickname:"",avatar_url:""}),L=U(()=>f.value?"邮箱 *":"邮箱(可选)"),R=U(()=>f.value?"必填,用于账号验证":"选填,用于找回密码和接收通知");async function b(){try{const l=await Y();V.value=l?.session_id||"",y.value=l?.captcha_image||"",a.captcha=""}catch{V.value="",y.value=""}}async function j(){try{const l=await Z();f.value=!!l?.register_verify_enabled}catch{f.value=!1}}function q(){o.value="",k.value="",S.value=""}function A(){try{t.token=window.sessionStorage.getItem(_.token)||"",t.provider=window.sessionStorage.getItem(_.provider)||"",t.nickname=window.sessionStorage.getItem(_.nickname)||"",t.avatar_url=window.sessionStorage.getItem(_.avatar)||"",t.nickname&&!a.username&&(a.username=t.nickname.replace(/[^\w\u4e00-\u9fa5]/g,"").slice(0,20))}catch{t.token="",t.provider="",t.nickname="",t.avatar_url=""}}function D(){try{Object.values(_).forEach(l=>window.sessionStorage.removeItem(l))}catch{}t.token="",t.provider="",t.nickname="",t.avatar_url=""}async function x(){q();const l=a.username.trim(),e=a.password,w=a.confirm_password,n=a.email.trim(),c=a.captcha.trim();if(l.length<3){o.value="用户名至少3个字符",d.error(o.value);return}const m=ae(e);if(!m.ok){o.value=m.message||"密码格式不正确",d.error(o.value);return}if(e!==w){o.value="两次输入的密码不一致",d.error(o.value);return}if(f.value&&!n){o.value="请填写邮箱地址用于账号验证",d.error(o.value);return}if(n&&!n.includes("@")){o.value="邮箱格式不正确",d.error(o.value);return}if(!c){o.value="请输入验证码",d.error(o.value);return}E.value=!0;try{const v=await ee({username:l,password:e,email:n,captcha_session:V.value,captcha:c,social_bind_token:t.token||void 0});k.value=v?.message||"注册成功",S.value=v?.need_verify?"请检查您的邮箱(包括垃圾邮件文件夹)":"",d.success("注册成功"),t.token&&D(),a.username="",a.password="",a.confirm_password="",a.email="",a.captcha="",setTimeout(()=>{window.location.href="/login"},3e3)}catch(v){const C=v?.response?.data;o.value=C?.error||"注册失败",d.error(o.value),await b()}finally{E.value=!1}}function F(){N.push("/login")}return J(async()=>{A(),await b(),await j()}),(l,e)=>{const w=Q,n=G,c=O,m=$,v=H,C=M;return g(),z("div",oe,[s(C,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:r(()=>[e[11]||(e[11]=u("div",{class:"brand"},[u("div",{class:"brand-title"},"知识管理平台"),u("div",{class:"brand-sub app-muted"},"用户注册")],-1)),o.value?(g(),I(w,{key:0,type:"error",closable:!1,title:o.value,"show-icon":"",class:"alert"},null,8,["title"])):h("",!0),k.value?(g(),I(w,{key:1,type:"success",closable:!1,title:k.value,description:S.value,"show-icon":"",class:"alert"},null,8,["title","description"])):h("",!0),t.token?(g(),I(w,{key:2,type:"info",closable:!1,"show-icon":"",class:"alert",title:`注册后绑定${T[t.provider]||"快捷登录"}`},null,8,["title"])):h("",!0),s(v,{"label-position":"top"},{default:r(()=>[s(c,{label:"用户名 *"},{default:r(()=>[s(n,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=i=>a.username=i),placeholder:"至少3个字符",autocomplete:"username"},null,8,["modelValue"]),e[5]||(e[5]=u("div",{class:"hint app-muted"},"至少3个字符",-1))]),_:1}),s(c,{label:"密码 *"},{default:r(()=>[s(n,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=i=>a.password=i),type:"password","show-password":"",placeholder:"至少8位且包含字母和数字",autocomplete:"new-password"},null,8,["modelValue"]),e[6]||(e[6]=u("div",{class:"hint app-muted"},"至少8位且包含字母和数字",-1))]),_:1}),s(c,{label:"确认密码 *"},{default:r(()=>[s(n,{modelValue:a.confirm_password,"onUpdate:modelValue":e[2]||(e[2]=i=>a.confirm_password=i),type:"password","show-password":"",placeholder:"请再次输入密码",autocomplete:"new-password",onKeyup:K(x,["enter"])},null,8,["modelValue"])]),_:1}),s(c,{label:L.value},{default:r(()=>[s(n,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=i=>a.email=i),placeholder:"name@example.com",autocomplete:"email"},null,8,["modelValue"]),u("div",se,X(R.value),1)]),_:1},8,["label"]),s(c,{label:"验证码 *"},{default:r(()=>[u("div",le,[s(n,{modelValue:a.captcha,"onUpdate:modelValue":e[4]||(e[4]=i=>a.captcha=i),placeholder:"请输入验证码",onKeyup:K(x,["enter"])},null,8,["modelValue"]),y.value?(g(),z("img",{key:0,class:"captcha-img",src:y.value,alt:"验证码",title:"点击刷新",onClick:b},null,8,ne)):h("",!0),s(m,{onClick:b},{default:r(()=>[...e[7]||(e[7]=[B("刷新",-1)])]),_:1})])]),_:1})]),_:1}),s(m,{type:"primary",class:"submit-btn",loading:E.value,onClick:x},{default:r(()=>[...e[8]||(e[8]=[B("注册",-1)])]),_:1},8,["loading"]),u("div",re,[e[10]||(e[10]=u("span",{class:"app-muted"},"已有账号?",-1)),s(m,{link:"",type:"primary",onClick:F},{default:r(()=>[...e[9]||(e[9]=[B("立即登录",-1)])]),_:1})])]),_:1})])}}},Ve=te(ie,[["__scopeId","data-v-64094e78"]]);export{Ve as default}; diff --git a/static/app/assets/RegisterPage-LYXwWYc1.css b/static/app/assets/RegisterPage-LYXwWYc1.css new file mode 100644 index 0000000..9d4e8d5 --- /dev/null +++ b/static/app/assets/RegisterPage-LYXwWYc1.css @@ -0,0 +1 @@ +.auth-wrap[data-v-64094e78]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-64094e78]{width:100%;max-width:420px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-64094e78]{margin-bottom:14px}.brand-title[data-v-64094e78]{font-size:18px;font-weight:900}.brand-sub[data-v-64094e78]{margin-top:4px;font-size:12px}.alert[data-v-64094e78]{margin-bottom:12px}.hint[data-v-64094e78]{margin-top:6px;font-size:12px}.captcha-row[data-v-64094e78]{display:flex;align-items:center;gap:10px;width:100%}.captcha-img[data-v-64094e78]{height:40px;border:1px solid var(--app-border);border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.submit-btn[data-v-64094e78]{width:100%;margin-top:4px}.actions[data-v-64094e78]{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:6px} diff --git a/static/app/assets/ResetPasswordPage-CUOK0fe1.js b/static/app/assets/ResetPasswordPage-CUOK0fe1.js new file mode 100644 index 0000000..17d40c3 --- /dev/null +++ b/static/app/assets/ResetPasswordPage-CUOK0fe1.js @@ -0,0 +1 @@ +import"./base-xgxQQEpV.js";import{E as R}from"./el-card-CfK866jr.js";import{E as F,a as L,b as M}from"./el-alert-DTUOkrAB.js";import{E as U}from"./el-input-BaZNy9Kg.js";import{E as j}from"./el-button-LKkD3jQh.js";import{g as n,y as K,f as z,h as D,i as q,z as G,j as _,p as s,s as t,u as H,o as p,k as m,F as V,x as b,c as J,l as h,m as O,t as Q}from"./vendor-vue-WbiK4TmU.js";import{c as W}from"./auth-B5cl_nsV.js";import{v as X}from"./password-7ryi82gE.js";import{_ as Y}from"./style-CEbARg1o.js";import{E as v}from"./http-BoPYlvwK.js";import"./aria-DLpFpzDe.js";import"./index-CoYtSGUZ.js";import"./vendor-axios-B9ygI19o.js";const Z={class:"auth-wrap"},$={class:"actions"},ee={class:"actions"},oe={key:0,class:"app-muted"},se={__name:"ResetPasswordPage",setup(te){const T=K(),x=H(),r=n(String(T.params.token||"")),l=n(!0),y=n(""),a=z({newPassword:"",confirmPassword:""}),g=n(!1),f=n(""),i=n(0);let d=null;function B(){if(typeof window>"u")return null;const o=window.__APP_INITIAL_STATE__;return!o||typeof o!="object"?null:(window.__APP_INITIAL_STATE__=null,o)}const k=D(()=>!!(l.value&&r.value&&!f.value));function E(){x.push("/login")}function A(){i.value=3,d=window.setInterval(()=>{i.value-=1,i.value<=0&&(window.clearInterval(d),d=null,window.location.href="/login")},1e3)}async function I(){if(!k.value)return;const o=a.newPassword,e=a.confirmPassword,u=X(o);if(!u.ok){v.error(u.message);return}if(o!==e){v.error("两次输入的密码不一致");return}g.value=!0;try{await W({token:r.value,new_password:o}),f.value="密码重置成功!3秒后跳转到登录页面...",v.success("密码重置成功"),A()}catch(c){const w=c?.response?.data;v.error(w?.error||"重置失败")}finally{g.value=!1}}return q(()=>{const o=B();o?.page==="reset_password"?(r.value=String(o?.token||r.value||""),l.value=!!o?.valid,y.value=o?.error_message||(l.value?"":"重置链接无效或已过期,请重新申请密码重置")):r.value||(l.value=!1,y.value="重置链接无效或已过期,请重新申请密码重置")}),G(()=>{d&&window.clearInterval(d)}),(o,e)=>{const u=F,c=j,w=U,S=M,C=L,N=R;return p(),_("div",Z,[s(N,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:t(()=>[e[5]||(e[5]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"知识管理平台"),m("div",{class:"brand-sub app-muted"},"重置密码")],-1)),l.value?(p(),_(V,{key:1},[f.value?(p(),J(u,{key:0,type:"success",closable:!1,title:"重置成功",description:f.value,"show-icon":"",class:"alert"},null,8,["description"])):h("",!0),s(C,{"label-position":"top"},{default:t(()=>[s(S,{label:"新密码(至少8位且包含字母和数字)"},{default:t(()=>[s(w,{modelValue:a.newPassword,"onUpdate:modelValue":e[0]||(e[0]=P=>a.newPassword=P),type:"password","show-password":"",placeholder:"请输入新密码",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),s(S,{label:"确认密码"},{default:t(()=>[s(w,{modelValue:a.confirmPassword,"onUpdate:modelValue":e[1]||(e[1]=P=>a.confirmPassword=P),type:"password","show-password":"",placeholder:"请再次输入新密码",autocomplete:"new-password",onKeyup:O(I,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),s(c,{type:"primary",class:"submit-btn",loading:g.value,disabled:!k.value,onClick:I},{default:t(()=>[...e[3]||(e[3]=[b(" 确认重置 ",-1)])]),_:1},8,["loading","disabled"]),m("div",ee,[s(c,{link:"",type:"primary",onClick:E},{default:t(()=>[...e[4]||(e[4]=[b("返回登录",-1)])]),_:1}),i.value>0?(p(),_("span",oe,Q(i.value)+" 秒后自动跳转…",1)):h("",!0)])],64)):(p(),_(V,{key:0},[s(u,{type:"error",closable:!1,title:"链接已失效",description:y.value,"show-icon":""},null,8,["description"]),m("div",$,[s(c,{type:"primary",onClick:E},{default:t(()=>[...e[2]||(e[2]=[b("返回登录",-1)])]),_:1})])],64))]),_:1})])}}},ve=Y(se,[["__scopeId","data-v-6a8fefa8"]]);export{ve as default}; diff --git a/static/app/assets/ResetPasswordPage-DAB63ins.css b/static/app/assets/ResetPasswordPage-DAB63ins.css new file mode 100644 index 0000000..5dfb94d --- /dev/null +++ b/static/app/assets/ResetPasswordPage-DAB63ins.css @@ -0,0 +1 @@ +.auth-wrap[data-v-6a8fefa8]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-6a8fefa8]{width:100%;max-width:420px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-6a8fefa8]{margin-bottom:14px}.brand-title[data-v-6a8fefa8]{font-size:18px;font-weight:900}.brand-sub[data-v-6a8fefa8]{margin-top:4px;font-size:12px}.alert[data-v-6a8fefa8]{margin-bottom:12px}.submit-btn[data-v-6a8fefa8]{width:100%;margin-top:4px}.actions[data-v-6a8fefa8]{margin-top:16px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap} diff --git a/static/app/assets/ResetPasswordPage-DybfLMAw.css b/static/app/assets/ResetPasswordPage-DybfLMAw.css deleted file mode 100644 index 152e25d..0000000 --- a/static/app/assets/ResetPasswordPage-DybfLMAw.css +++ /dev/null @@ -1 +0,0 @@ -.auth-wrap[data-v-0bbb511c]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-0bbb511c]{width:100%;max-width:420px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-0bbb511c]{margin-bottom:14px}.brand-title[data-v-0bbb511c]{font-size:18px;font-weight:900}.brand-sub[data-v-0bbb511c]{margin-top:4px;font-size:12px}.alert[data-v-0bbb511c]{margin-bottom:12px}.submit-btn[data-v-0bbb511c]{width:100%;margin-top:4px}.actions[data-v-0bbb511c]{margin-top:16px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap} diff --git a/static/app/assets/ResetPasswordPage-lX7l6Nbu.js b/static/app/assets/ResetPasswordPage-lX7l6Nbu.js deleted file mode 100644 index d9d335d..0000000 --- a/static/app/assets/ResetPasswordPage-lX7l6Nbu.js +++ /dev/null @@ -1 +0,0 @@ -import{E as R}from"./el-button-DWxIvzz-.js";import{E as F}from"./el-card-DfVpO1U5.js";import{E as L,a as M,b as U}from"./el-alert-DB2IQLpH.js";import{E as j,a as _}from"./http-CdvgQxJu.js";import{g as n,y as K,f as q,h as z,i as D,z as G,j as v,q as s,s as a,u as H,o as p,k as m,F as V,x as P,c as J,l as h,m as O,t as Q}from"./vendor-vue-DxN60LNb.js";import{c as W}from"./auth-CX9p6ZYg.js";import{v as X}from"./password-7ryi82gE.js";import{_ as Y}from"./style-CEbARg1o.js";import"./vendor-axios-B9ygI19o.js";const Z={class:"auth-wrap"},$={class:"actions"},ee={class:"actions"},oe={key:0,class:"app-muted"},se={__name:"ResetPasswordPage",setup(ae){const T=K(),x=H(),l=n(String(T.params.token||"")),r=n(!0),y=n(""),t=q({newPassword:"",confirmPassword:""}),b=n(!1),f=n(""),i=n(0);let d=null;function B(){if(typeof window>"u")return null;const o=window.__APP_INITIAL_STATE__;return!o||typeof o!="object"?null:(window.__APP_INITIAL_STATE__=null,o)}const k=z(()=>!!(r.value&&l.value&&!f.value));function E(){x.push("/login")}function A(){i.value=3,d=window.setInterval(()=>{i.value-=1,i.value<=0&&(window.clearInterval(d),d=null,window.location.href="/login")},1e3)}async function I(){if(!k.value)return;const o=t.newPassword,e=t.confirmPassword,u=X(o);if(!u.ok){_.error(u.message);return}if(o!==e){_.error("两次输入的密码不一致");return}b.value=!0;try{await W({token:l.value,new_password:o}),f.value="密码重置成功!3秒后跳转到登录页面...",_.success("密码重置成功"),A()}catch(c){const w=c?.response?.data;_.error(w?.error||"重置失败")}finally{b.value=!1}}return D(()=>{const o=B();o?.page==="reset_password"?(l.value=String(o?.token||l.value||""),r.value=!!o?.valid,y.value=o?.error_message||(r.value?"":"重置链接无效或已过期,请重新申请密码重置")):l.value||(r.value=!1,y.value="重置链接无效或已过期,请重新申请密码重置")}),G(()=>{d&&window.clearInterval(d)}),(o,e)=>{const u=L,c=R,w=j,S=U,C=M,N=F;return p(),v("div",Z,[s(N,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:a(()=>[e[5]||(e[5]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"知识管理平台"),m("div",{class:"brand-sub app-muted"},"重置密码")],-1)),r.value?(p(),v(V,{key:1},[f.value?(p(),J(u,{key:0,type:"success",closable:!1,title:"重置成功",description:f.value,"show-icon":"",class:"alert"},null,8,["description"])):h("",!0),s(C,{"label-position":"top"},{default:a(()=>[s(S,{label:"新密码(至少8位且包含字母和数字)"},{default:a(()=>[s(w,{modelValue:t.newPassword,"onUpdate:modelValue":e[0]||(e[0]=g=>t.newPassword=g),type:"password","show-password":"",placeholder:"请输入新密码",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),s(S,{label:"确认密码"},{default:a(()=>[s(w,{modelValue:t.confirmPassword,"onUpdate:modelValue":e[1]||(e[1]=g=>t.confirmPassword=g),type:"password","show-password":"",placeholder:"请再次输入新密码",autocomplete:"new-password",onKeyup:O(I,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),s(c,{type:"primary",class:"submit-btn",loading:b.value,disabled:!k.value,onClick:I},{default:a(()=>[...e[3]||(e[3]=[P(" 确认重置 ",-1)])]),_:1},8,["loading","disabled"]),m("div",ee,[s(c,{link:"",type:"primary",onClick:E},{default:a(()=>[...e[4]||(e[4]=[P("返回登录",-1)])]),_:1}),i.value>0?(p(),v("span",oe,Q(i.value)+" 秒后自动跳转…",1)):h("",!0)])],64)):(p(),v(V,{key:0},[s(u,{type:"error",closable:!1,title:"链接已失效",description:y.value,"show-icon":""},null,8,["description"]),m("div",$,[s(c,{type:"primary",onClick:E},{default:a(()=>[...e[2]||(e[2]=[P("返回登录",-1)])]),_:1})])],64))]),_:1})])}}},me=Y(se,[["__scopeId","data-v-0bbb511c"]]);export{me as default}; diff --git a/static/app/assets/SchedulesPage-0TKGPmUl.js b/static/app/assets/SchedulesPage-0TKGPmUl.js new file mode 100644 index 0000000..4c4d452 --- /dev/null +++ b/static/app/assets/SchedulesPage-0TKGPmUl.js @@ -0,0 +1 @@ +import{a5 as et,a6 as Dt,a7 as Qt,a8 as Xt,a9 as Pt,C as it,aa as en,b as Ee,t as pe,ab as tn,T as nn,a3 as an,_ as xe,u as Me,ac as sn,ad as on,a0 as rn,E as Ae,Q as ln,I as un,s as cn,Z as dn,J as pn,d as fn}from"./base-xgxQQEpV.js";import{h as mn,u as ft,E as vn,a as hn,f as gn,e as bn,g as mt}from"./el-empty-B4_NEFfq.js";import{e as yn}from"./el-overlay-hge8bsIn.js";import{E as wn,a as kn,b as _n}from"./el-alert-DTUOkrAB.js";import{b as Sn,E as $n,a as Cn}from"./el-select-CBs1QjJm.js";import{u as Mn,b as Dn,E as Pn,a as Vn}from"./user-BlXB4Zbh.js";import{f as In}from"./accounts-DzntEHJR.js";import{b as Tn,u as En,a as On,d as Vt,E as It}from"./el-input-BaZNy9Kg.js";import{E as An}from"./el-pagination-kVJ2XlAP.js";import{E as Rn}from"./el-card-CfK866jr.js";import{E as Ln}from"./el-skeleton-item-CD5Idavp.js";import{a as Tt,b as Fn,c as Nn,u as xn,E as Bn}from"./el-button-LKkD3jQh.js";import{o as Hn,g as ut,b as Ie,d as Yn,p as De,E as ge}from"./http-BoPYlvwK.js";import{_ as Un}from"./style-CEbARg1o.js";import{K as _e,ab as vt,g as X,h as J,A as Pe,f as Et,j as se,o as L,B as Ne,k as Y,O as qe,C as n,U as ot,n as ee,ac as jn,Q as Je,L as ct,z as zn,c as ce,s as x,q as Le,l as we,ad as ht,D as Ye,t as ae,W as Te,M as rt,a0 as gt,i as Ot,F as be,a4 as Ce,x as ve,w as bt,p as z,T as Kn}from"./vendor-vue-WbiK4TmU.js";import{U as We,C as Ze,d as yt}from"./aria-DLpFpzDe.js";import{b as qn,i as Wn,d as Zn}from"./isArrayLikeObject-B5fs56rA.js";import"./index-CoYtSGUZ.js";import"./vendor-axios-B9ygI19o.js";function Jn(){}function Gn(s){return s!==s}function Qn(s,i,a){for(var d=a-1,F=s.length;++d-1}var ta=1/0,na=et&&1/Dt(new et([,-0]))[1]==ta?function(s){return new et(s)}:Jn,aa=200;function sa(s,i,a){var d=-1,F=ea,$=s.length,u=!0,C=[],P=C;if($>=aa){var T=na(s);if(T)return Dt(T);u=!1,F=Xt,P=new Qt}else P=C;e:for(;++d<$;){var S=s[d],O=S;if(S=S!==0?S:0,u&&O===O){for(var B=P.length;B--;)if(P[B]===O)continue e;C.push(S)}else F(P,O,a)||(P!==C&&P.push(O),C.push(S))}return C}var tt=qn(function(s){return sa(Tn(s,1,Wn,!0))});function At(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var je={exports:{}},oa=je.exports,wt;function ra(){return wt||(wt=1,(function(s,i){(function(a,d){s.exports=d()})(oa,(function(){var a=1e3,d=6e4,F=36e5,$="millisecond",u="second",C="minute",P="hour",T="day",S="week",O="month",B="quarter",U="year",V="date",I="Invalid Date",r=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,H={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(b){var m=["th","st","nd","rd"],f=b%100;return"["+b+(m[(f-20)%10]||m[f]||m[0])+"]"}},_=function(b,m,f){var p=String(b);return!p||p.length>=m?b:""+Array(m+1-p.length).join(f)+b},k={s:_,z:function(b){var m=-b.utcOffset(),f=Math.abs(m),p=Math.floor(f/60),c=f%60;return(m<=0?"+":"-")+_(p,2,"0")+":"+_(c,2,"0")},m:function b(m,f){if(m.date()1)return b(D[0])}else{var R=m.name;Z[R]=m,c=R}return!p&&c&&(W=c),c||!p&&W},q=function(b,m){if(ne(b))return b.clone();var f=typeof m=="object"?m:{};return f.date=b,f.args=arguments,new te(f)},A=k;A.l=oe,A.i=ne,A.w=function(b,m){return q(b,{locale:m.$L,utc:m.$u,x:m.$x,$offset:m.$offset})};var te=(function(){function b(f){this.$L=oe(f.locale,null,!0),this.parse(f),this.$x=this.$x||f.x||{},this[h]=!0}var m=b.prototype;return m.parse=function(f){this.$d=(function(p){var c=p.date,w=p.utc;if(c===null)return new Date(NaN);if(A.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var D=c.match(r);if(D){var R=D[2]-1||0,t=(D[7]||"0").substring(0,3);return w?new Date(Date.UTC(D[1],R,D[3]||1,D[4]||0,D[5]||0,D[6]||0,t)):new Date(D[1],R,D[3]||1,D[4]||0,D[5]||0,D[6]||0,t)}}return new Date(c)})(f),this.init()},m.init=function(){var f=this.$d;this.$y=f.getFullYear(),this.$M=f.getMonth(),this.$D=f.getDate(),this.$W=f.getDay(),this.$H=f.getHours(),this.$m=f.getMinutes(),this.$s=f.getSeconds(),this.$ms=f.getMilliseconds()},m.$utils=function(){return A},m.isValid=function(){return this.$d.toString()!==I},m.isSame=function(f,p){var c=q(f);return this.startOf(p)<=c&&c<=this.endOf(p)},m.isAfter=function(f,p){return q(f)[s>0?s-1:void 0,s,skt(F,i[$])):!a&&!d?kt(s,i):!1},_t=function(s,i,a){const d=Pt(i)||i==="x"?Se(s).locale(a):Se(s,i).locale(a);return d.isValid()?d:void 0},St=function(s,i,a){return Pt(i)?s:i==="x"?+s:Se(s).locale(a).format(i)},at=(s,i)=>{var a;const d=[],F=i?.();for(let $=0;$_e(s)?s.map(i=>i.toDate()):s.toDate();var Ke={exports:{}},ia=Ke.exports,$t;function ua(){return $t||($t=1,(function(s,i){(function(a,d){s.exports=d()})(ia,(function(){var a={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},d=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,F=/\d/,$=/\d\d/,u=/\d\d?/,C=/\d*[^-_:/,()\s\d]+/,P={},T=function(r){return(r=+r)+(r>68?1900:2e3)},S=function(r){return function(M){this[r]=+M}},O=[/[+-]\d\d:?(\d\d)?|Z/,function(r){(this.zone||(this.zone={})).offset=(function(M){if(!M||M==="Z")return 0;var H=M.match(/([+-]|\d\d)/g),_=60*H[1]+(+H[2]||0);return _===0?0:H[0]==="+"?-_:_})(r)}],B=function(r){var M=P[r];return M&&(M.indexOf?M:M.s.concat(M.f))},U=function(r,M){var H,_=P.meridiem;if(_){for(var k=1;k<=24;k+=1)if(r.indexOf(_(k,0,M))>-1){H=k>12;break}}else H=r===(M?"pm":"PM");return H},V={A:[C,function(r){this.afternoon=U(r,!1)}],a:[C,function(r){this.afternoon=U(r,!0)}],Q:[F,function(r){this.month=3*(r-1)+1}],S:[F,function(r){this.milliseconds=100*+r}],SS:[$,function(r){this.milliseconds=10*+r}],SSS:[/\d{3}/,function(r){this.milliseconds=+r}],s:[u,S("seconds")],ss:[u,S("seconds")],m:[u,S("minutes")],mm:[u,S("minutes")],H:[u,S("hours")],h:[u,S("hours")],HH:[u,S("hours")],hh:[u,S("hours")],D:[u,S("day")],DD:[$,S("day")],Do:[C,function(r){var M=P.ordinal,H=r.match(/\d+/);if(this.day=H[0],M)for(var _=1;_<=31;_+=1)M(_).replace(/\[|\]/g,"")===r&&(this.day=_)}],w:[u,S("week")],ww:[$,S("week")],M:[u,S("month")],MM:[$,S("month")],MMM:[C,function(r){var M=B("months"),H=(B("monthsShort")||M.map((function(_){return _.slice(0,3)}))).indexOf(r)+1;if(H<1)throw new Error;this.month=H%12||H}],MMMM:[C,function(r){var M=B("months").indexOf(r)+1;if(M<1)throw new Error;this.month=M%12||M}],Y:[/[+-]?\d+/,S("year")],YY:[$,function(r){this.year=T(r)}],YYYY:[/\d{4}/,S("year")],Z:O,ZZ:O};function I(r){var M,H;M=r,H=P&&P.formats;for(var _=(r=M.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(q,A,te){var re=te&&te.toUpperCase();return A||H[te]||a[te]||H[re].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(b,m,f){return m||f.slice(1)}))}))).match(d),k=_.length,W=0;W-1)return new Date((c==="X"?1e3:1)*p);var R=I(c)(p),t=R.year,e=R.month,l=R.day,v=R.hours,N=R.minutes,G=R.seconds,fe=R.milliseconds,le=R.zone,g=R.week,E=new Date,j=l||(t||e?1:E.getDate()),Q=t||E.getFullYear(),ie=0;t&&!e||(ie=e>0?e-1:E.getMonth());var ue,de=v||0,he=N||0,ke=G||0,ye=fe||0;return le?new Date(Date.UTC(Q,ie,j,de,he,ke,ye+60*le.offset*1e3)):w?new Date(Date.UTC(Q,ie,j,de,he,ke,ye)):(ue=new Date(Q,ie,j,de,he,ke,ye),g&&(ue=D(ue).week(g).toDate()),ue)}catch{return new Date("")}})(Z,oe,h,H),this.init(),re&&re!==!0&&(this.$L=this.locale(re).$L),te&&Z!=this.format(oe)&&(this.$d=new Date("")),P={}}else if(oe instanceof Array)for(var b=oe.length,m=1;m<=b;m+=1){ne[1]=oe[m-1];var f=H.apply(this,ne);if(f.isValid()){this.$d=f.$d,this.$L=f.$L,this.init();break}m===b&&(this.$d=new Date(""))}else k.call(this,W)}}}))})(Ke)),Ke.exports}var ca=ua();const da=At(ca),Ct=["hours","minutes","seconds"],Ge="EP_PICKER_BASE",Lt="ElPopperOptions",pa=Symbol("commonPickerContextKey"),Ft="HH:mm:ss",fa=(s,i)=>{const{lang:a}=it(),d=X(!1),F=X(!1),$=X(null),u=J(()=>{const{modelValue:V}=s;return!V||_e(V)&&!V.filter(Boolean).length}),C=V=>{if(!Rt(s.modelValue,V)){let I;_e(V)?I=V.map(M=>St(M,s.valueFormat,a.value)):V&&(I=St(V,s.valueFormat,a.value)),i(We,V&&I,a.value)}},P=J(()=>{var V;let I;if(u.value?T.value.getDefaultValue&&(I=T.value.getDefaultValue()):_e(s.modelValue)?I=s.modelValue.map(r=>_t(r,s.valueFormat,a.value)):I=_t((V=s.modelValue)!=null?V:"",s.valueFormat,a.value),T.value.getRangeAvailableTime){const r=T.value.getRangeAvailableTime(I);en(r,I)||(I=r,u.value||C(ze(I)))}return _e(I)&&I.some(r=>!r)&&(I=[]),I}),T=X({});return{parsedValue:P,pickerActualVisible:F,pickerOptions:T,pickerVisible:d,userInput:$,valueIsEmpty:u,emitInput:C,onCalendarChange:V=>{i("calendar-change",V)},onPanelChange:(V,I,r)=>{i("panel-change",V,I,r)},onPick:(V="",I=!1)=>{d.value=I;let r;_e(V)?r=V.map(M=>M.toDate()):r=V&&V.toDate(),$.value=null,C(r)},onSetPickerOption:V=>{T.value[V[0]]=V[1],T.value.panelReady=!0}}},Nt=Ee({disabledHours:{type:pe(Function)},disabledMinutes:{type:pe(Function)},disabledSeconds:{type:pe(Function)}}),xt=Ee({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),Bt=Ee({automaticDropdown:{type:Boolean,default:!0},id:{type:pe([Array,String])},name:{type:pe([Array,String])},popperClass:ft.popperClass,popperStyle:ft.popperStyle,format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:pe([String,Object]),default:an},editable:{type:Boolean,default:!0},prefixIcon:{type:pe([String,Object]),default:""},size:nn,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:pe(Object),default:()=>({})},modelValue:{type:pe([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:pe([Date,Array])},defaultTime:{type:pe([Date,Array])},isRange:Boolean,...Nt,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:pe([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:pe(String),values:mn,default:"bottom"},fallbackPlacements:{type:pe(Array),default:["bottom","top","right","left"]},...tn,...En(["ariaLabel"]),showNow:{type:Boolean,default:!0},showConfirm:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean}),ma=Ee({id:{type:pe(Array)},name:{type:pe(Array)},modelValue:{type:pe([Array,String])},startPlaceholder:String,endPlaceholder:String,disabled:Boolean}),va=Pe({name:"PickerRangeTrigger",inheritAttrs:!1}),ha=Pe({...va,props:ma,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(s,{expose:i,emit:a}){const d=s,{formItem:F}=Tt(),{inputId:$}=Fn(Et({id:J(()=>{var h;return(h=d.id)==null?void 0:h[0]})}),{formItemContext:F}),u=On(),C=Me("date"),P=Me("range"),T=X(),S=X(),{wrapperRef:O,isFocused:B}=Vt(T,{disabled:J(()=>d.disabled)}),U=h=>{a("click",h)},V=h=>{a("mouseenter",h)},I=h=>{a("mouseleave",h)},r=h=>{a("touchstart",h)},M=h=>{a("startInput",h)},H=h=>{a("endInput",h)},_=h=>{a("startChange",h)},k=h=>{a("endChange",h)};return i({focus:()=>{var h;(h=T.value)==null||h.focus()},blur:()=>{var h,ne;(h=T.value)==null||h.blur(),(ne=S.value)==null||ne.blur()}}),(h,ne)=>(L(),se("div",{ref_key:"wrapperRef",ref:O,class:ee([n(C).is("active",n(B)),h.$attrs.class]),style:ot(h.$attrs.style),onClick:U,onMouseenter:V,onMouseleave:I,onTouchstartPassive:r},[Ne(h.$slots,"prefix"),Y("input",qe(n(u),{id:n($),ref_key:"inputRef",ref:T,name:h.name&&h.name[0],placeholder:h.startPlaceholder,value:h.modelValue&&h.modelValue[0],class:n(P).b("input"),disabled:h.disabled,onInput:M,onChange:_}),null,16,["id","name","placeholder","value","disabled"]),Ne(h.$slots,"range-separator"),Y("input",qe(n(u),{id:h.id&&h.id[1],ref_key:"endInputRef",ref:S,name:h.name&&h.name[1],placeholder:h.endPlaceholder,value:h.modelValue&&h.modelValue[1],class:n(P).b("input"),disabled:h.disabled,onInput:H,onChange:k}),null,16,["id","name","placeholder","value","disabled"]),Ne(h.$slots,"suffix")],38))}});var ga=xe(ha,[["__file","picker-range-trigger.vue"]]);const ba=Pe({name:"Picker"}),ya=Pe({...ba,props:Bt,emits:[We,Ze,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(s,{expose:i,emit:a}){const d=s,F=jn(),$=Me("date"),u=Me("input"),C=Me("range"),{formItem:P}=Tt(),T=Je(Lt,{}),S=sn(d,null),O=X(),B=X(),U=X(null);let V=!1;const I=Nn(),r=fa(d,a),{parsedValue:M,pickerActualVisible:H,userInput:_,pickerVisible:k,pickerOptions:W,valueIsEmpty:Z,emitInput:h,onPick:ne,onSetPickerOption:oe,onCalendarChange:q,onPanelChange:A}=r,{isFocused:te,handleFocus:re,handleBlur:b}=Vt(B,{disabled:I,beforeFocus(){return d.readonly},afterFocus(){d.automaticDropdown&&(k.value=!0)},beforeBlur(o){var K;return!V&&((K=O.value)==null?void 0:K.isFocusInsideContent(o))},afterBlur(){Qe(),k.value=!1,V=!1,d.validateEvent&&P?.validate("blur").catch(o=>yt())}}),m=X(!1),f=J(()=>[$.b("editor"),$.bm("editor",d.type),u.e("wrapper"),$.is("disabled",I.value),$.is("active",k.value),C.b("editor"),y?C.bm("editor",y.value):"",F.class]),p=J(()=>[u.e("icon"),C.e("close-icon"),ie.value?"":C.em("close-icon","hidden")]);ct(k,o=>{o?Te(()=>{o&&(U.value=d.modelValue)}):(_.value=null,Te(()=>{c(d.modelValue)}))});const c=(o,K)=>{(K||!Rt(o,U.value))&&(a(Ze,o),K&&(U.value=o),d.validateEvent&&P?.validate("change").catch(me=>yt()))},w=o=>{a("keydown",o)},D=J(()=>B.value?Array.from(B.value.$el.querySelectorAll("input")):[]),R=(o,K,me)=>{const $e=D.value;$e.length&&(!me||me==="min"?($e[0].setSelectionRange(o,K),$e[0].focus()):me==="max"&&($e[1].setSelectionRange(o,K),$e[1].focus()))},t=()=>{H.value=!0},e=()=>{a("visible-change",!0)},l=()=>{H.value=!1,k.value=!1,a("visible-change",!1)},v=()=>{k.value=!0},N=()=>{k.value=!1},G=J(()=>{const o=Xe(M.value);return _e(_.value)?[_.value[0]||o&&o[0]||"",_.value[1]||o&&o[1]||""]:_.value!==null?_.value:!le.value&&Z.value||!k.value&&Z.value?"":o?g.value||E.value||j.value?o.join(", "):o:""}),fe=J(()=>d.type.includes("time")),le=J(()=>d.type.startsWith("time")),g=J(()=>d.type==="dates"),E=J(()=>d.type==="months"),j=J(()=>d.type==="years"),Q=J(()=>d.prefixIcon||(fe.value?on:rn)),ie=J(()=>d.clearable&&!I.value&&!d.readonly&&!Z.value&&(m.value||te.value)),ue=o=>{d.readonly||I.value||(ie.value&&(o.stopPropagation(),W.value.handleClear?W.value.handleClear():h(S.valueOnClear.value),c(S.valueOnClear.value,!0),l()),a("clear"))},de=async o=>{var K;d.readonly||I.value||(((K=o.target)==null?void 0:K.tagName)!=="INPUT"||te.value||!d.automaticDropdown)&&(k.value=!0)},he=()=>{d.readonly||I.value||!Z.value&&d.clearable&&(m.value=!0)},ke=()=>{m.value=!1},ye=o=>{var K;d.readonly||I.value||(((K=o.touches[0].target)==null?void 0:K.tagName)!=="INPUT"||te.value||!d.automaticDropdown)&&(k.value=!0)},Oe=J(()=>d.type.includes("range")),y=xn(),Ve=J(()=>{var o,K;return(K=(o=n(O))==null?void 0:o.popperRef)==null?void 0:K.contentRef}),dt=Hn(B,o=>{const K=n(Ve),me=Yn(B);K&&(o.target===K||o.composedPath().includes(K))||o.target===me||me&&o.composedPath().includes(me)||(k.value=!1)});zn(()=>{dt?.()});const Qe=()=>{if(_.value){const o=Be(G.value);o&&(He(o)&&h(ze(o)),_.value=null)}_.value===""&&(h(S.valueOnClear.value),c(S.valueOnClear.value,!0),_.value=null)},Be=o=>o?W.value.parseUserInput(o):null,Xe=o=>o?_e(o)?o.map(me=>me.format(d.format)):o.format(d.format):null,He=o=>W.value.isValidValue(o),pt=async o=>{if(d.readonly||I.value)return;const K=ut(o);if(w(o),K===Ie.esc){k.value===!0&&(k.value=!1,o.preventDefault(),o.stopPropagation());return}if(K===Ie.down&&(W.value.handleFocusPicker&&(o.preventDefault(),o.stopPropagation()),k.value===!1&&(k.value=!0,await Te()),W.value.handleFocusPicker)){W.value.handleFocusPicker();return}if(K===Ie.tab){V=!0;return}if(K===Ie.enter||K===Ie.numpadEnter){k.value?(_.value===null||_.value===""||He(Be(G.value)))&&(Qe(),k.value=!1):k.value=!0,o.preventDefault(),o.stopPropagation();return}if(_.value){o.stopPropagation();return}W.value.handleKeydownInput&&W.value.handleKeydownInput(o)},zt=o=>{_.value=o,k.value||(k.value=!0)},Kt=o=>{const K=o.target;_.value?_.value=[K.value,_.value[1]]:_.value=[K.value,null]},qt=o=>{const K=o.target;_.value?_.value=[_.value[0],K.value]:_.value=[null,K.value]},Wt=()=>{var o;const K=_.value,me=Be(K&&K[0]),$e=n(M);if(me&&me.isValid()){_.value=[Xe(me),((o=G.value)==null?void 0:o[1])||null];const Re=[me,$e&&($e[1]||null)];He(Re)&&(h(ze(Re)),_.value=null)}},Zt=()=>{var o;const K=n(_),me=Be(K&&K[1]),$e=n(M);if(me&&me.isValid()){_.value=[((o=n(G))==null?void 0:o[0])||null,Xe(me)];const Re=[$e&&$e[0],me];He(Re)&&(h(ze(Re)),_.value=null)}},Jt=()=>{var o;(o=B.value)==null||o.focus()},Gt=()=>{var o;(o=B.value)==null||o.blur()};return rt(Ge,{props:d,emptyValues:S}),rt(pa,r),i({focus:Jt,blur:Gt,handleOpen:v,handleClose:N,onPick:ne}),(o,K)=>(L(),ce(n(vn),qe({ref_key:"refPopper",ref:O,visible:n(k),effect:"light",pure:"",trigger:"click"},o.$attrs,{role:"dialog",teleported:"",transition:`${n($).namespace.value}-zoom-in-top`,"popper-class":[`${n($).namespace.value}-picker__popper`,o.popperClass],"popper-style":o.popperStyle,"popper-options":n(T),"fallback-placements":o.fallbackPlacements,"gpu-acceleration":!1,placement:o.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:t,onShow:e,onHide:l}),{default:x(()=>[n(Oe)?(L(),ce(ga,{key:1,id:o.id,ref_key:"inputRef",ref:B,"model-value":n(G),name:o.name,disabled:n(I),readonly:!o.editable||o.readonly,"start-placeholder":o.startPlaceholder,"end-placeholder":o.endPlaceholder,class:ee(n(f)),style:ot(o.$attrs.style),"aria-label":o.ariaLabel,tabindex:o.tabindex,autocomplete:"off",role:"combobox",onClick:de,onFocus:n(re),onBlur:n(b),onStartInput:Kt,onStartChange:Wt,onEndInput:qt,onEndChange:Zt,onMousedown:de,onMouseenter:he,onMouseleave:ke,onTouchstartPassive:ye,onKeydown:pt},{prefix:x(()=>[n(Q)?(L(),ce(n(Ae),{key:0,class:ee([n(u).e("icon"),n(C).e("icon")])},{default:x(()=>[(L(),ce(Ye(n(Q))))]),_:1},8,["class"])):we("v-if",!0)]),"range-separator":x(()=>[Ne(o.$slots,"range-separator",{},()=>[Y("span",{class:ee(n(C).b("separator"))},ae(o.rangeSeparator),3)])]),suffix:x(()=>[o.clearIcon?(L(),ce(n(Ae),{key:0,class:ee(n(p)),onMousedown:Le(n(ht),["prevent"]),onClick:ue},{default:x(()=>[(L(),ce(Ye(o.clearIcon)))]),_:1},8,["class","onMousedown"])):we("v-if",!0)]),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):(L(),ce(n(It),{key:0,id:o.id,ref_key:"inputRef",ref:B,"container-role":"combobox","model-value":n(G),name:o.name,size:n(y),disabled:n(I),placeholder:o.placeholder,class:ee([n($).b("editor"),n($).bm("editor",o.type),n($).is("focus",n(k)),o.$attrs.class]),style:ot(o.$attrs.style),readonly:!o.editable||o.readonly||n(g)||n(E)||n(j)||o.type==="week","aria-label":o.ariaLabel,tabindex:o.tabindex,"validate-event":!1,onInput:zt,onFocus:n(re),onBlur:n(b),onKeydown:pt,onChange:Qe,onMousedown:de,onMouseenter:he,onMouseleave:ke,onTouchstartPassive:ye,onClick:Le(()=>{},["stop"])},{prefix:x(()=>[n(Q)?(L(),ce(n(Ae),{key:0,class:ee(n(u).e("icon")),onMousedown:Le(de,["prevent"]),onTouchstartPassive:ye},{default:x(()=>[(L(),ce(Ye(n(Q))))]),_:1},8,["class","onMousedown"])):we("v-if",!0)]),suffix:x(()=>[n(ie)&&o.clearIcon?(L(),ce(n(Ae),{key:0,class:ee(`${n(u).e("icon")} clear-icon`),onMousedown:Le(n(ht),["prevent"]),onClick:ue},{default:x(()=>[(L(),ce(Ye(o.clearIcon)))]),_:1},8,["class","onMousedown"])):we("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur","onClick"]))]),content:x(()=>[Ne(o.$slots,"default",{visible:n(k),actualVisible:n(H),parsedValue:n(M),format:o.format,dateFormat:o.dateFormat,timeFormat:o.timeFormat,unlinkPanels:o.unlinkPanels,type:o.type,defaultValue:o.defaultValue,showNow:o.showNow,showConfirm:o.showConfirm,showFooter:o.showFooter,showWeekNumber:o.showWeekNumber,onPick:n(ne),onSelectRange:R,onSetPickerOption:n(oe),onCalendarChange:n(q),onPanelChange:n(A),onMousedown:Le(()=>{},["stop"])})]),_:3},16,["visible","transition","popper-class","popper-style","popper-options","fallback-placements","placement"]))}});var wa=xe(ya,[["__file","picker.vue"]]);const ka=Ee({...xt,datetimeRole:String,parsedValue:{type:pe(Object)}}),Ht=({getAvailableHours:s,getAvailableMinutes:i,getAvailableSeconds:a})=>{const d=(u,C,P,T)=>{const S={hour:s,minute:i,second:a};let O=u;return["hour","minute","second"].forEach(B=>{if(S[B]){let U;const V=S[B];switch(B){case"minute":{U=V(O.hour(),C,T);break}case"second":{U=V(O.hour(),O.minute(),C,T);break}default:{U=V(C,T);break}}if(U?.length&&!U.includes(O[B]())){const I=P?0:U.length-1;O=O[B](U[I])}}}),O},F={};return{timePickerOptions:F,getAvailableTime:d,onSetOption:([u,C])=>{F[u]=C}}},st=s=>{const i=(d,F)=>d||F,a=d=>d!==!0;return s.map(i).filter(a)},Yt=(s,i,a)=>({getHoursList:(u,C)=>at(24,s&&(()=>s?.(u,C))),getMinutesList:(u,C,P)=>at(60,i&&(()=>i?.(u,C,P))),getSecondsList:(u,C,P,T)=>at(60,a&&(()=>a?.(u,C,P,T)))}),Ut=(s,i,a)=>{const{getHoursList:d,getMinutesList:F,getSecondsList:$}=Yt(s,i,a);return{getAvailableHours:(T,S)=>st(d(T,S)),getAvailableMinutes:(T,S,O)=>st(F(T,S,O)),getAvailableSeconds:(T,S,O,B)=>st($(T,S,O,B))}},jt=s=>{const i=X(s.parsedValue);return ct(()=>s.visible,a=>{a||(i.value=s.parsedValue)}),i},_a=Ee({role:{type:String,required:!0},spinnerDate:{type:pe(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:pe(String),default:""},...Nt}),Sa=100,$a=600,Ue="_RepeatClick",Mt={beforeMount(s,i){const a=i.value,{interval:d=Sa,delay:F=$a}=gt(a)?{}:a;let $,u;const C=()=>gt(a)?a():a.handler(),P=()=>{u&&(clearTimeout(u),u=void 0),$&&(clearInterval($),$=void 0)},T=S=>{S.button===0&&(P(),C(),document.addEventListener("mouseup",P,{once:!0}),u=setTimeout(()=>{$=setInterval(()=>{C()},d)},F))};s[Ue]={start:T,clear:P},s.addEventListener("mousedown",T)},unmounted(s){if(!s[Ue])return;const{start:i,clear:a}=s[Ue];i&&s.removeEventListener("mousedown",i),a&&(a(),document.removeEventListener("mouseup",a)),s[Ue]=null}},Ca=Pe({__name:"basic-time-spinner",props:_a,emits:[Ze,"select-range","set-option"],setup(s,{emit:i}){const a=s,d=Je(Ge),{isRange:F,format:$}=d.props,u=Me("time"),{getHoursList:C,getMinutesList:P,getSecondsList:T}=Yt(a.disabledHours,a.disabledMinutes,a.disabledSeconds);let S=!1;const O=X(),B=X(),U=X(),V=X(),I={hours:B,minutes:U,seconds:V},r=J(()=>a.showSeconds?Ct:Ct.slice(0,2)),M=J(()=>{const{spinnerDate:t}=a,e=t.hour(),l=t.minute(),v=t.second();return{hours:e,minutes:l,seconds:v}}),H=J(()=>{const{hours:t,minutes:e}=n(M),{role:l,spinnerDate:v}=a,N=F?void 0:v;return{hours:C(l,N),minutes:P(t,l,N),seconds:T(t,e,l,N)}}),_=J(()=>{const{hours:t,minutes:e,seconds:l}=n(M);return{hours:nt(t,23),minutes:nt(e,59),seconds:nt(l,59)}}),k=Zn(t=>{S=!1,h(t)},200),W=t=>{if(!!!a.amPmMode)return"";const l=a.amPmMode==="A";let v=t<12?" am":" pm";return l&&(v=v.toUpperCase()),v},Z=t=>{let e=[0,0];const l=$||Ft,v=l.indexOf("HH"),N=l.indexOf("mm"),G=l.indexOf("ss");switch(t){case"hours":v!==-1&&(e=[v,v+2]);break;case"minutes":N!==-1&&(e=[N,N+2]);break;case"seconds":G!==-1&&(e=[G,G+2]);break}const[fe,le]=e;i("select-range",fe,le),O.value=t},h=t=>{q(t,n(M)[t])},ne=()=>{h("hours"),h("minutes"),h("seconds")},oe=t=>t.querySelector(`.${u.namespace.value}-scrollbar__wrap`),q=(t,e)=>{if(a.arrowControl)return;const l=n(I[t]);l&&l.$el&&(oe(l.$el).scrollTop=Math.max(0,e*A(t)))},A=t=>{const e=n(I[t]),l=e?.$el.querySelector("li");return l&&Number.parseFloat(dn(l,"height"))||0},te=()=>{b(1)},re=()=>{b(-1)},b=t=>{O.value||Z("hours");const e=O.value,l=n(M)[e],v=O.value==="hours"?24:60,N=m(e,l,t,v);f(e,N),q(e,N),Te(()=>Z(e))},m=(t,e,l,v)=>{let N=(e+l+v)%v;const G=n(H)[t];for(;G[N]&&N!==e;)N=(N+l+v)%v;return N},f=(t,e)=>{if(n(H)[t][e])return;const{hours:N,minutes:G,seconds:fe}=n(M);let le;switch(t){case"hours":le=a.spinnerDate.hour(e).minute(G).second(fe);break;case"minutes":le=a.spinnerDate.hour(N).minute(e).second(fe);break;case"seconds":le=a.spinnerDate.hour(N).minute(G).second(e);break}i(Ze,le)},p=(t,{value:e,disabled:l})=>{l||(f(t,e),Z(t),q(t,e))},c=t=>{const e=n(I[t]);if(!e)return;S=!0,k(t);const l=Math.min(Math.round((oe(e.$el).scrollTop-(w(t)*.5-10)/A(t)+3)/A(t)),t==="hours"?23:59);f(t,l)},w=t=>n(I[t]).$el.offsetHeight,D=()=>{const t=e=>{const l=n(I[e]);l&&l.$el&&(oe(l.$el).onscroll=()=>{c(e)})};t("hours"),t("minutes"),t("seconds")};Ot(()=>{Te(()=>{!a.arrowControl&&D(),ne(),a.role==="start"&&Z("hours")})});const R=(t,e)=>{I[e].value=t??void 0};return i("set-option",[`${a.role}_scrollDown`,b]),i("set-option",[`${a.role}_emitSelectRange`,Z]),ct(()=>a.spinnerDate,()=>{S||ne()}),(t,e)=>(L(),se("div",{class:ee([n(u).b("spinner"),{"has-seconds":t.showSeconds}])},[t.arrowControl?we("v-if",!0):(L(!0),se(be,{key:0},Ce(n(r),l=>(L(),ce(n(hn),{key:l,ref_for:!0,ref:v=>R(v,l),class:ee(n(u).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":n(u).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:v=>Z(l),onMousemove:v=>h(l)},{default:x(()=>[(L(!0),se(be,null,Ce(n(H)[l],(v,N)=>(L(),se("li",{key:N,class:ee([n(u).be("spinner","item"),n(u).is("active",N===n(M)[l]),n(u).is("disabled",v)]),onClick:G=>p(l,{value:N,disabled:v})},[l==="hours"?(L(),se(be,{key:0},[ve(ae(("0"+(t.amPmMode?N%12||12:N)).slice(-2))+ae(W(N)),1)],64)):(L(),se(be,{key:1},[ve(ae(("0"+N).slice(-2)),1)],64))],10,["onClick"]))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),t.arrowControl?(L(!0),se(be,{key:1},Ce(n(r),l=>(L(),se("div",{key:l,class:ee([n(u).be("spinner","wrapper"),n(u).is("arrow")]),onMouseenter:v=>Z(l)},[bt((L(),ce(n(Ae),{class:ee(["arrow-up",n(u).be("spinner","arrow")])},{default:x(()=>[z(n(ln))]),_:1},8,["class"])),[[n(Mt),re]]),bt((L(),ce(n(Ae),{class:ee(["arrow-down",n(u).be("spinner","arrow")])},{default:x(()=>[z(n(un))]),_:1},8,["class"])),[[n(Mt),te]]),Y("ul",{class:ee(n(u).be("spinner","list"))},[(L(!0),se(be,null,Ce(n(_)[l],(v,N)=>(L(),se("li",{key:N,class:ee([n(u).be("spinner","item"),n(u).is("active",v===n(M)[l]),n(u).is("disabled",n(H)[l][v])])},[n(cn)(v)?(L(),se(be,{key:0},[l==="hours"?(L(),se(be,{key:0},[ve(ae(("0"+(t.amPmMode?v%12||12:v)).slice(-2))+ae(W(v)),1)],64)):(L(),se(be,{key:1},[ve(ae(("0"+v).slice(-2)),1)],64))],64)):we("v-if",!0)],2))),128))],2)],42,["onMouseenter"]))),128)):we("v-if",!0)],2))}});var lt=xe(Ca,[["__file","basic-time-spinner.vue"]]);const Ma=Pe({__name:"panel-time-pick",props:ka,emits:["pick","select-range","set-picker-option"],setup(s,{emit:i}){const a=s,d=Je(Ge),{arrowControl:F,disabledHours:$,disabledMinutes:u,disabledSeconds:C,defaultValue:P}=d.props,{getAvailableHours:T,getAvailableMinutes:S,getAvailableSeconds:O}=Ut($,u,C),B=Me("time"),{t:U,lang:V}=it(),I=X([0,2]),r=jt(a),M=J(()=>pn(a.actualVisible)?`${B.namespace.value}-zoom-in-top`:""),H=J(()=>a.format.includes("ss")),_=J(()=>a.format.includes("A")?"A":a.format.includes("a")?"a":""),k=p=>{const c=Se(p).locale(V.value),w=b(c);return c.isSame(w)},W=()=>{const p=r.value;i("pick",p,!1),Te(()=>{r.value=p})},Z=(p=!1,c=!1)=>{c||i("pick",a.parsedValue,p)},h=p=>{if(!a.visible)return;const c=b(p).millisecond(0);i("pick",c,!0)},ne=(p,c)=>{i("select-range",p,c),I.value=[p,c]},oe=p=>{const c=a.format,w=c.indexOf("HH"),D=c.indexOf("mm"),R=c.indexOf("ss"),t=[],e=[];w!==-1&&(t.push(w),e.push("hours")),D!==-1&&(t.push(D),e.push("minutes")),R!==-1&&H.value&&(t.push(R),e.push("seconds"));const v=(t.indexOf(I.value[0])+p+t.length)%t.length;A.start_emitSelectRange(e[v])},q=p=>{const c=ut(p),{left:w,right:D,up:R,down:t}=Ie;if([w,D].includes(c)){oe(c===w?-1:1),p.preventDefault();return}if([R,t].includes(c)){const e=c===R?-1:1;A.start_scrollDown(e),p.preventDefault();return}},{timePickerOptions:A,onSetOption:te,getAvailableTime:re}=Ht({getAvailableHours:T,getAvailableMinutes:S,getAvailableSeconds:O}),b=p=>re(p,a.datetimeRole||"",!0),m=p=>p?Se(p,a.format).locale(V.value):null,f=()=>Se(P).locale(V.value);return i("set-picker-option",["isValidValue",k]),i("set-picker-option",["parseUserInput",m]),i("set-picker-option",["handleKeydownInput",q]),i("set-picker-option",["getRangeAvailableTime",b]),i("set-picker-option",["getDefaultValue",f]),(p,c)=>(L(),ce(Kn,{name:n(M)},{default:x(()=>[p.actualVisible||p.visible?(L(),se("div",{key:0,class:ee(n(B).b("panel"))},[Y("div",{class:ee([n(B).be("panel","content"),{"has-seconds":n(H)}])},[z(lt,{ref:"spinner",role:p.datetimeRole||"start","arrow-control":n(F),"show-seconds":n(H),"am-pm-mode":n(_),"spinner-date":p.parsedValue,"disabled-hours":n($),"disabled-minutes":n(u),"disabled-seconds":n(C),onChange:h,onSetOption:n(te),onSelectRange:ne},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),Y("div",{class:ee(n(B).be("panel","footer"))},[Y("button",{type:"button",class:ee([n(B).be("panel","btn"),"cancel"]),onClick:W},ae(n(U)("el.datepicker.cancel")),3),Y("button",{type:"button",class:ee([n(B).be("panel","btn"),"confirm"]),onClick:w=>Z()},ae(n(U)("el.datepicker.confirm")),11,["onClick"])],2)],2)):we("v-if",!0)]),_:1},8,["name"]))}});var Da=xe(Ma,[["__file","panel-time-pick.vue"]]);const Pa=Ee({...xt,parsedValue:{type:pe(Array)}}),Va=Pe({__name:"panel-time-range",props:Pa,emits:["pick","select-range","set-picker-option"],setup(s,{emit:i}){const a=s,d=(g,E)=>{const j=[];for(let Q=g;Q<=E;Q++)j.push(Q);return j},{t:F,lang:$}=it(),u=Me("time"),C=Me("picker"),P=Je(Ge),{arrowControl:T,disabledHours:S,disabledMinutes:O,disabledSeconds:B,defaultValue:U}=P.props,V=J(()=>[u.be("range-picker","body"),u.be("panel","content"),u.is("arrow",T),k.value?"has-seconds":""]),I=J(()=>[u.be("range-picker","body"),u.be("panel","content"),u.is("arrow",T),k.value?"has-seconds":""]),r=J(()=>a.parsedValue[0]),M=J(()=>a.parsedValue[1]),H=jt(a),_=()=>{const g=H.value;i("pick",g,!1),Te(()=>{H.value=g})},k=J(()=>a.format.includes("ss")),W=J(()=>a.format.includes("A")?"A":a.format.includes("a")?"a":""),Z=(g=!1)=>{i("pick",[r.value,M.value],g)},h=g=>{q(g.millisecond(0),M.value)},ne=g=>{q(r.value,g.millisecond(0))},oe=g=>{const E=g.map(Q=>Se(Q).locale($.value)),j=R(E);return E[0].isSame(j[0])&&E[1].isSame(j[1])},q=(g,E)=>{a.visible&&i("pick",[g,E],!0)},A=J(()=>r.value>M.value),te=X([0,2]),re=(g,E)=>{i("select-range",g,E,"min"),te.value=[g,E]},b=J(()=>k.value?11:8),m=(g,E)=>{i("select-range",g,E,"max");const j=n(b);te.value=[g+j,E+j]},f=g=>{const E=k.value?[0,3,6,11,14,17]:[0,3,8,11],j=["hours","minutes"].concat(k.value?["seconds"]:[]),ie=(E.indexOf(te.value[0])+g+E.length)%E.length,ue=E.length/2;ie{const E=ut(g),{left:j,right:Q,up:ie,down:ue}=Ie;if([j,Q].includes(E)){f(E===j?-1:1),g.preventDefault();return}if([ie,ue].includes(E)){const de=E===ie?-1:1,he=te.value[0]{const j=S?S(g):[],Q=g==="start",ue=(E||(Q?M.value:r.value)).hour(),de=Q?d(ue+1,23):d(0,ue-1);return tt(j,de)},w=(g,E,j)=>{const Q=O?O(g,E):[],ie=E==="start",ue=j||(ie?M.value:r.value),de=ue.hour();if(g!==de)return Q;const he=ue.minute(),ke=ie?d(he+1,59):d(0,he-1);return tt(Q,ke)},D=(g,E,j,Q)=>{const ie=B?B(g,E,j):[],ue=j==="start",de=Q||(ue?M.value:r.value),he=de.hour(),ke=de.minute();if(g!==he||E!==ke)return ie;const ye=de.second(),Oe=ue?d(ye+1,59):d(0,ye-1);return tt(ie,Oe)},R=([g,E])=>[N(g,"start",!0,E),N(E,"end",!1,g)],{getAvailableHours:t,getAvailableMinutes:e,getAvailableSeconds:l}=Ut(c,w,D),{timePickerOptions:v,getAvailableTime:N,onSetOption:G}=Ht({getAvailableHours:t,getAvailableMinutes:e,getAvailableSeconds:l}),fe=g=>g?_e(g)?g.map(E=>Se(E,a.format).locale($.value)):Se(g,a.format).locale($.value):null,le=()=>{if(_e(U))return U.map(E=>Se(E).locale($.value));const g=Se(U).locale($.value);return[g,g.add(60,"m")]};return i("set-picker-option",["parseUserInput",fe]),i("set-picker-option",["isValidValue",oe]),i("set-picker-option",["handleKeydownInput",p]),i("set-picker-option",["getDefaultValue",le]),i("set-picker-option",["getRangeAvailableTime",R]),(g,E)=>g.actualVisible?(L(),se("div",{key:0,class:ee([n(u).b("range-picker"),n(C).b("panel")])},[Y("div",{class:ee(n(u).be("range-picker","content"))},[Y("div",{class:ee(n(u).be("range-picker","cell"))},[Y("div",{class:ee(n(u).be("range-picker","header"))},ae(n(F)("el.datepicker.startTime")),3),Y("div",{class:ee(n(V))},[z(lt,{ref:"minSpinner",role:"start","show-seconds":n(k),"am-pm-mode":n(W),"arrow-control":n(T),"spinner-date":n(r),"disabled-hours":c,"disabled-minutes":w,"disabled-seconds":D,onChange:h,onSetOption:n(G),onSelectRange:re},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),Y("div",{class:ee(n(u).be("range-picker","cell"))},[Y("div",{class:ee(n(u).be("range-picker","header"))},ae(n(F)("el.datepicker.endTime")),3),Y("div",{class:ee(n(I))},[z(lt,{ref:"maxSpinner",role:"end","show-seconds":n(k),"am-pm-mode":n(W),"arrow-control":n(T),"spinner-date":n(M),"disabled-hours":c,"disabled-minutes":w,"disabled-seconds":D,onChange:ne,onSetOption:n(G),onSelectRange:m},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),Y("div",{class:ee(n(u).be("panel","footer"))},[Y("button",{type:"button",class:ee([n(u).be("panel","btn"),"cancel"]),onClick:j=>_()},ae(n(F)("el.datepicker.cancel")),11,["onClick"]),Y("button",{type:"button",class:ee([n(u).be("panel","btn"),"confirm"]),disabled:n(A),onClick:j=>Z()},ae(n(F)("el.datepicker.confirm")),11,["disabled","onClick"])],2)],2)):we("v-if",!0)}});var Ia=xe(Va,[["__file","panel-time-range.vue"]]);Se.extend(da);var Ta=Pe({name:"ElTimePicker",install:null,props:{...Bt,isRange:Boolean},emits:[We],setup(s,i){const a=X(),[d,F]=s.isRange?["timerange",Ia]:["time",Da],$=u=>i.emit(We,u);return rt(Lt,s.popperOptions),i.expose({focus:()=>{var u;(u=a.value)==null||u.focus()},blur:()=>{var u;(u=a.value)==null||u.blur()},handleOpen:()=>{var u;(u=a.value)==null||u.handleOpen()},handleClose:()=>{var u;(u=a.value)==null||u.handleClose()}}),()=>{var u;const C=(u=s.format)!=null?u:Ft;return z(wa,qe(s,{ref:a,type:d,format:C,"onUpdate:modelValue":$}),{default:P=>z(F,P,null)})}}});const Ea=fn(Ta);async function Oa(s={}){const{data:i}=await De.get("/schedules",{params:s});return i}async function Aa(s){const{data:i}=await De.post("/schedules",s);return i}async function Ra(s,i){const{data:a}=await De.put(`/schedules/${s}`,i);return a}async function La(s){const{data:i}=await De.delete(`/schedules/${s}`);return i}async function Fa(s,i){const{data:a}=await De.post(`/schedules/${s}/toggle`,i);return a}async function Na(s){const{data:i}=await De.post(`/schedules/${s}/run`,{});return i}async function xa(s,i={}){const{data:a}=await De.get(`/schedules/${s}/logs`,{params:i});return a}async function Ba(s){const{data:i}=await De.delete(`/schedules/${s}/logs`);return i}const Ha={class:"page"},Ya={class:"vip-actions"},Ua={class:"panel-head"},ja={class:"panel-actions"},za={key:1,class:"grid"},Ka={class:"schedule-top"},qa={class:"schedule-main"},Wa={class:"schedule-title"},Za={class:"schedule-name"},Ja={class:"schedule-meta app-muted"},Ga={class:"schedule-meta app-muted"},Qa={key:0},Xa={class:"schedule-switch"},es={class:"schedule-actions"},ts={key:2,class:"pagination"},ns={class:"page-hint app-muted"},as={class:"switch-row"},ss={key:1,class:"logs"},os={class:"log-head"},rs={class:"app-muted"},ls={class:"log-body"},is={key:0,class:"log-error"},Fe=12,us={__name:"SchedulesPage",setup(s){const i=Mn(),a=X(!1),d=X([]),F=X(1),$=X(0),u=X(!1),C=X([]),P=X(!1),T=X(!1),S=X(null),O=X(!1),B=X(!1),U=X([]),V=X(null),I=X(!1),r=Et({name:"",schedule_time:"08:00",weekdays:["1","2","3","4","5"],browse_type:"应读",enable_screenshot:!0,random_delay:!1,account_ids:[]}),M=[{label:"应读",value:"应读"},{label:"注册前未读",value:"注册前未读"}];function H(t){return String(t)==="注册前未读"?"注册前未读":"应读"}const _=[{label:"周一",value:"1"},{label:"周二",value:"2"},{label:"周三",value:"3"},{label:"周四",value:"4"},{label:"周五",value:"5"},{label:"周六",value:"6"},{label:"周日",value:"7"}],k=J(()=>i.isVip),W=J(()=>Math.max(1,Math.ceil(($.value||0)/Fe)));function Z(t){const e=String(t||"").match(/^(\d{1,2}):(\d{2})$/);if(!e)return null;const l=Number(e[1]),v=Number(e[2]);return Number.isNaN(l)||Number.isNaN(v)||l<0||l>23||v<0||v>59?null:`${String(l).padStart(2,"0")}:${String(v).padStart(2,"0")}`}function h(t){const e=Array.isArray(t)?t:String(t||"").split(",").filter(Boolean),l=Object.fromEntries(_.map(v=>[v.value,v.label]));return e.map(v=>l[String(v)]||String(v)).join(" ")}async function ne(){u.value=!0;try{const t=await In({refresh:!1});C.value=(t||[]).map(e=>({label:e.username,value:e.id}))}catch{C.value=[]}finally{u.value=!1}}async function oe(){F.value>1&&d.value.length<=1&&(F.value-=1),await A()}async function q(t){F.value=t,await A()}async function A(){a.value=!0;try{const t={limit:Fe,offset:(F.value-1)*Fe},e=await Oa(t),l=Array.isArray(e)?e:Array.isArray(e?.items)?e.items:[],v=Array.isArray(e)?l.length:Number(e?.total??l.length);d.value=l.map(N=>({...N,browse_type:H(N?.browse_type)})),$.value=Number.isFinite(v)?Math.max(0,v):l.length}catch(t){t?.response?.status===401&&(window.location.href="/login"),d.value=[],$.value=0}finally{a.value=!1}}function te(){S.value=null,r.name="",r.schedule_time="08:00",r.weekdays=["1","2","3","4","5"],r.browse_type="应读",r.enable_screenshot=!0,r.random_delay=!1,r.account_ids=[],P.value=!0}function re(t){S.value=t.id,r.name=t.name||"",r.schedule_time=Z(t.schedule_time)||"08:00",r.weekdays=String(t.weekdays||"").split(",").filter(Boolean).map(e=>String(e)),r.weekdays.length===0&&(r.weekdays=["1","2","3","4","5"]),r.browse_type=H(t.browse_type),r.enable_screenshot=Number(t.enable_screenshot??1)!==0,r.random_delay=Number(t.random_delay??0)!==0,r.account_ids=Array.isArray(t.account_ids)?t.account_ids.slice():[],P.value=!0}async function b(){if(!k.value){I.value=!0;return}const t=Z(r.schedule_time);if(!t){ge.error("时间格式错误,请使用 HH:MM");return}if(!r.weekdays||r.weekdays.length===0){ge.warning("请选择至少一个执行日期");return}T.value=!0;try{const e={name:r.name.trim()||"我的定时任务",schedule_time:t,weekdays:r.weekdays.join(","),browse_type:r.browse_type,enable_screenshot:r.enable_screenshot?1:0,random_delay:r.random_delay?1:0,account_ids:r.account_ids};S.value?(await Ra(S.value,e),ge.success("保存成功")):(await Aa(e),ge.success("创建成功"),F.value=1),P.value=!1,await A()}catch(e){const l=e?.response?.data;ge.error(l?.error||"保存失败")}finally{T.value=!1}}async function m(t){try{await mt.confirm(`确定要删除定时任务「${t.name||"未命名任务"}」吗?`,"删除任务",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await La(t.id);e?.success?(ge.success("已删除"),await oe()):ge.error(e?.error||"删除失败")}catch(e){const l=e?.response?.data;ge.error(l?.error||"删除失败")}}async function f(t,e){if(!k.value){I.value=!0;return}try{(await Fa(t.id,{enabled:e}))?.success&&(t.enabled=e?1:0,ge.success(e?"已启用":"已禁用"))}catch{ge.error("操作失败")}}async function p(t){if(!k.value){I.value=!0;return}try{const e=await Na(t.id);e?.success?ge.success(e?.message||"已开始执行"):ge.error(e?.error||"执行失败")}catch(e){const l=e?.response?.data;ge.error(l?.error||"执行失败")}}async function c(t){V.value=t,O.value=!0,B.value=!0;try{U.value=await xa(t.id,{limit:20})}catch{U.value=[]}finally{B.value=!1}}async function w(){const t=V.value;if(t){try{await mt.confirm("确定要清空该任务的所有执行日志吗?","清空日志",{confirmButtonText:"清空",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await Ba(t.id);e?.success?(ge.success(`已清空 ${e?.deleted||0} 条日志`),U.value=[]):ge.error(e?.error||"操作失败")}catch{ge.error("操作失败")}}}function D(t){const e=String(t||"");return e==="success"||e==="completed"?"success":e==="failed"?"danger":"info"}function R(t){const e=Number(t||0),l=Math.floor(e/60),v=e%60;return l<=0?`${v} 秒`:`${l} 分 ${v} 秒`}return Ot(async()=>{i.vipInfo||i.refreshVipInfo().catch(()=>{window.location.href="/login"}),await Promise.all([ne(),A()])}),(t,e)=>{const l=Bn,v=wn,N=Ln,G=gn,fe=Dn,le=Rn,g=An,E=It,j=_n,Q=Ea,ie=Vn,ue=Pn,de=Cn,he=$n,ke=kn,ye=yn,Oe=bn;return L(),se("div",Ha,[k.value?we("",!0):(L(),ce(v,{key:0,type:"warning","show-icon":"",closable:!1,title:"定时任务为 VIP 专属功能,升级后可使用。",class:"vip-alert"},{default:x(()=>[Y("div",Ya,[z(l,{type:"primary",plain:"",onClick:e[0]||(e[0]=y=>I.value=!0)},{default:x(()=>[...e[15]||(e[15]=[ve("了解VIP特权",-1)])]),_:1})])]),_:1})),z(le,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:x(()=>[Y("div",Ua,[e[18]||(e[18]=Y("div",{class:"panel-title"},"定时任务",-1)),Y("div",ja,[z(l,{loading:a.value,onClick:A},{default:x(()=>[...e[16]||(e[16]=[ve("刷新",-1)])]),_:1},8,["loading"]),z(l,{type:"primary",disabled:!k.value,onClick:te},{default:x(()=>[...e[17]||(e[17]=[ve("新建任务",-1)])]),_:1},8,["disabled"])])]),a.value?(L(),ce(N,{key:0,rows:6,animated:""})):(L(),se(be,{key:1},[d.value.length===0?(L(),ce(G,{key:0,description:"暂无定时任务"})):(L(),se("div",za,[(L(!0),se(be,null,Ce(d.value,y=>(L(),ce(le,{key:y.id,shadow:"never",class:"schedule-card","body-style":{padding:"14px"}},{default:x(()=>[Y("div",Ka,[Y("div",qa,[Y("div",Wa,[Y("span",Za,ae(y.name||"未命名任务"),1)]),Y("div",Ja,[Y("span",null,"⏰ "+ae(Z(y.schedule_time)||y.schedule_time),1),Y("span",null,"📅 "+ae(h(y.weekdays)),1)]),Y("div",Ga,[Y("span",null,"📋 "+ae(y.browse_type||"应读"),1),Y("span",null,"👥 "+ae((y.account_ids||[]).length)+" 个账号",1),Y("span",null,ae(Number(y.enable_screenshot??1)!==0?"📸 截图":"📷 不截图"),1),Number(y.random_delay??0)!==0?(L(),se("span",Qa,"🎲 随机±15分钟")):we("",!0)])]),Y("div",Xa,[z(fe,{"model-value":!!Number(y.enabled),disabled:!k.value,"inline-prompt":"","active-text":"启用","inactive-text":"停用",onChange:Ve=>f(y,Ve)},null,8,["model-value","disabled","onChange"])])]),Y("div",es,[z(l,{size:"small",type:"primary",disabled:!k.value,onClick:Ve=>p(y)},{default:x(()=>[...e[19]||(e[19]=[ve("立即执行",-1)])]),_:1},8,["disabled","onClick"]),z(l,{size:"small",onClick:Ve=>c(y)},{default:x(()=>[...e[20]||(e[20]=[ve("日志",-1)])]),_:1},8,["onClick"]),z(l,{size:"small",disabled:!k.value,onClick:Ve=>re(y)},{default:x(()=>[...e[21]||(e[21]=[ve("编辑",-1)])]),_:1},8,["disabled","onClick"]),z(l,{size:"small",type:"danger",text:"",disabled:!k.value,onClick:Ve=>m(y)},{default:x(()=>[...e[22]||(e[22]=[ve("删除",-1)])]),_:1},8,["disabled","onClick"])])]),_:2},1024))),128))])),$.value>Fe?(L(),se("div",ts,[z(g,{"current-page":F.value,"onUpdate:currentPage":e[1]||(e[1]=y=>F.value=y),"page-size":Fe,total:$.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:q},null,8,["current-page","total"]),Y("div",ns,"第 "+ae(F.value)+" / "+ae(W.value)+" 页",1)])):we("",!0)],64))]),_:1}),z(ye,{modelValue:P.value,"onUpdate:modelValue":e[10]||(e[10]=y=>P.value=y),title:S.value?"编辑定时任务":"新建定时任务",width:"min(720px, 92vw)"},{footer:x(()=>[z(l,{onClick:e[9]||(e[9]=y=>P.value=!1)},{default:x(()=>[...e[23]||(e[23]=[ve("取消",-1)])]),_:1}),z(l,{type:"primary",loading:T.value,disabled:!k.value,onClick:b},{default:x(()=>[...e[24]||(e[24]=[ve("保存",-1)])]),_:1},8,["loading","disabled"])]),default:x(()=>[z(ke,{"label-position":"top"},{default:x(()=>[z(j,{label:"任务名称"},{default:x(()=>[z(E,{modelValue:r.name,"onUpdate:modelValue":e[2]||(e[2]=y=>r.name=y),placeholder:"我的定时任务",disabled:!k.value},null,8,["modelValue","disabled"])]),_:1}),z(j,{label:"执行时间(HH:MM)"},{default:x(()=>[z(Q,{modelValue:r.schedule_time,"onUpdate:modelValue":e[3]||(e[3]=y=>r.schedule_time=y),placeholder:"选择时间",format:"HH:mm","value-format":"HH:mm",style:{width:"180px"},disabled:!k.value},null,8,["modelValue","disabled"])]),_:1}),z(j,{label:"执行日期"},{default:x(()=>[z(ue,{modelValue:r.weekdays,"onUpdate:modelValue":e[4]||(e[4]=y=>r.weekdays=y),disabled:!k.value},{default:x(()=>[(L(),se(be,null,Ce(_,y=>z(ie,{key:y.value,label:y.value},{default:x(()=>[ve(ae(y.label),1)]),_:2},1032,["label"])),64))]),_:1},8,["modelValue","disabled"])]),_:1}),z(j,{label:"浏览类型"},{default:x(()=>[z(he,{modelValue:r.browse_type,"onUpdate:modelValue":e[5]||(e[5]=y=>r.browse_type=y),style:{width:"160px"},disabled:!k.value},{default:x(()=>[(L(),se(be,null,Ce(M,y=>z(de,{key:y.value,label:y.label,value:y.value},null,8,["label","value"])),64))]),_:1},8,["modelValue","disabled"])]),_:1}),z(j,{label:"截图"},{default:x(()=>[Y("div",as,[z(fe,{modelValue:r.enable_screenshot,"onUpdate:modelValue":e[6]||(e[6]=y=>r.enable_screenshot=y),disabled:!k.value,"inline-prompt":"","active-text":"截图","inactive-text":"不截图"},null,8,["modelValue","disabled"]),z(fe,{modelValue:r.random_delay,"onUpdate:modelValue":e[7]||(e[7]=y=>r.random_delay=y),disabled:!k.value,"inline-prompt":"","active-text":"随机±15分钟","inactive-text":"固定时间"},null,8,["modelValue","disabled"])])]),_:1}),z(j,{label:"参与账号"},{default:x(()=>[z(he,{modelValue:r.account_ids,"onUpdate:modelValue":e[8]||(e[8]=y=>r.account_ids=y),multiple:"",filterable:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择账号(可多选)",style:{width:"100%"},loading:u.value,disabled:!k.value},{default:x(()=>[(L(!0),se(be,null,Ce(C.value,y=>(L(),ce(de,{key:y.value,label:y.label,value:y.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),z(ye,{modelValue:O.value,"onUpdate:modelValue":e[12]||(e[12]=y=>O.value=y),title:V.value?`【${V.value.name||"未命名任务"}】执行日志`:"执行日志",width:"min(760px, 92vw)"},{footer:x(()=>[z(l,{onClick:e[11]||(e[11]=y=>O.value=!1)},{default:x(()=>[...e[25]||(e[25]=[ve("关闭",-1)])]),_:1}),z(l,{type:"danger",plain:"",disabled:U.value.length===0,onClick:w},{default:x(()=>[...e[26]||(e[26]=[ve("清空日志",-1)])]),_:1},8,["disabled"])]),default:x(()=>[B.value?(L(),ce(N,{key:0,rows:6,animated:""})):(L(),se(be,{key:1},[U.value.length===0?(L(),ce(G,{key:0,description:"暂无执行日志"})):(L(),se("div",ss,[(L(!0),se(be,null,Ce(U.value,y=>(L(),ce(le,{key:y.id,shadow:"never",class:"log-card","body-style":{padding:"12px"}},{default:x(()=>[Y("div",os,[z(Oe,{size:"small",effect:"light",type:D(y.status)},{default:x(()=>[ve(ae(y.status==="failed"?"失败":y.status==="running"?"进行中":"成功"),1)]),_:2},1032,["type"]),Y("span",rs,ae(y.created_at||""),1)]),Y("div",ls,[Y("div",null,"账号数:"+ae(y.total_accounts||0)+" 个",1),Y("div",null,"成功:"+ae(y.success_count||0)+" 个 · 失败:"+ae(y.failed_count||0)+" 个",1),Y("div",null,"耗时:"+ae(R(y.duration||0)),1),y.error_message?(L(),se("div",is,"错误:"+ae(y.error_message),1)):we("",!0)])]),_:2},1024))),128))]))],64))]),_:1},8,["modelValue","title"]),z(ye,{modelValue:I.value,"onUpdate:modelValue":e[14]||(e[14]=y=>I.value=y),title:"VIP 特权",width:"min(560px, 92vw)"},{footer:x(()=>[z(l,{type:"primary",onClick:e[13]||(e[13]=y=>I.value=!1)},{default:x(()=>[...e[27]||(e[27]=[ve("我知道了",-1)])]),_:1})]),default:x(()=>[z(v,{type:"info",closable:!1,title:"升级 VIP 后可解锁:无限账号、优先排队、定时任务、批量操作。","show-icon":""}),e[28]||(e[28]=Y("div",{class:"vip-body"},[Y("div",{class:"vip-tip app-muted"},"升级方式:请通过“反馈”联系管理员开通。")],-1))]),_:1},8,["modelValue"])])}}},Vs=Un(us,[["__scopeId","data-v-fecc7a21"]]);export{Vs as default}; diff --git a/static/app/assets/SchedulesPage-BIuHs5oJ.css b/static/app/assets/SchedulesPage-Dxq2ghmQ.css similarity index 89% rename from static/app/assets/SchedulesPage-BIuHs5oJ.css rename to static/app/assets/SchedulesPage-Dxq2ghmQ.css index cfa7bf5..e75ed87 100644 --- a/static/app/assets/SchedulesPage-BIuHs5oJ.css +++ b/static/app/assets/SchedulesPage-Dxq2ghmQ.css @@ -1 +1 @@ -.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;line-height:1;outline:none;padding:1px 6px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.page[data-v-ee274c7a]{display:flex;flex-direction:column;gap:12px}.switch-row[data-v-ee274c7a]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.vip-alert[data-v-ee274c7a]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.vip-actions[data-v-ee274c7a]{margin-top:10px}.panel[data-v-ee274c7a]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-ee274c7a]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-ee274c7a]{font-size:16px;font-weight:900}.panel-actions[data-v-ee274c7a]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-ee274c7a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;align-items:start}.schedule-card[data-v-ee274c7a]{border-radius:14px;border:1px solid var(--app-border)}.schedule-top[data-v-ee274c7a]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.schedule-main[data-v-ee274c7a]{min-width:0;flex:1}.schedule-title[data-v-ee274c7a]{display:flex;align-items:center;justify-content:space-between;gap:10px}.schedule-name[data-v-ee274c7a]{font-size:14px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-meta[data-v-ee274c7a]{margin-top:6px;display:flex;gap:10px;flex-wrap:wrap;font-size:12px}.schedule-actions[data-v-ee274c7a]{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}.pagination[data-v-ee274c7a]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.page-hint[data-v-ee274c7a]{font-size:12px}.logs[data-v-ee274c7a]{display:flex;flex-direction:column;gap:10px}.log-card[data-v-ee274c7a]{border-radius:12px;border:1px solid var(--app-border)}.log-head[data-v-ee274c7a]{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}.log-body[data-v-ee274c7a]{margin-top:8px;font-size:13px;line-height:1.6}.log-error[data-v-ee274c7a]{margin-top:6px;color:#b91c1c}.vip-body[data-v-ee274c7a]{padding:12px 0 0}.vip-tip[data-v-ee274c7a]{margin-top:10px;font-size:13px;line-height:1.6}@media(max-width:480px){.grid[data-v-ee274c7a]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-ee274c7a]{width:100%;justify-content:flex-end}.schedule-switch[data-v-ee274c7a]{width:100%;display:flex;justify-content:flex-end}} +.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;line-height:1;outline:none;padding:1px 6px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn.is-disabled .el-icon{cursor:inherit}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel.is-disabled .el-picker-panel__prev-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__prev-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__prev-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__next-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__next-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__next-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__icon-btn{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__icon-btn:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__icon-btn .el-icon{cursor:inherit}.el-picker-panel.is-disabled .el-picker-panel__shortcut{color:var(--el-text-color-disabled)}.el-picker-panel.is-disabled .el-picker-panel__shortcut:hover{cursor:not-allowed}.el-picker-panel.is-disabled .el-picker-panel__shortcut .el-icon{cursor:inherit}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.page[data-v-fecc7a21]{display:flex;flex-direction:column;gap:12px}.switch-row[data-v-fecc7a21]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.vip-alert[data-v-fecc7a21]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.vip-actions[data-v-fecc7a21]{margin-top:10px}.panel[data-v-fecc7a21]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-fecc7a21]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-fecc7a21]{font-size:16px;font-weight:900}.panel-actions[data-v-fecc7a21]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-fecc7a21]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;align-items:start}.schedule-card[data-v-fecc7a21]{border-radius:14px;border:1px solid var(--app-border)}.schedule-top[data-v-fecc7a21]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.schedule-main[data-v-fecc7a21]{min-width:0;flex:1}.schedule-title[data-v-fecc7a21]{display:flex;align-items:center;justify-content:space-between;gap:10px}.schedule-name[data-v-fecc7a21]{font-size:14px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-meta[data-v-fecc7a21]{margin-top:6px;display:flex;gap:10px;flex-wrap:wrap;font-size:12px}.schedule-actions[data-v-fecc7a21]{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}.pagination[data-v-fecc7a21]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.page-hint[data-v-fecc7a21]{font-size:12px}.logs[data-v-fecc7a21]{display:flex;flex-direction:column;gap:10px}.log-card[data-v-fecc7a21]{border-radius:12px;border:1px solid var(--app-border)}.log-head[data-v-fecc7a21]{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}.log-body[data-v-fecc7a21]{margin-top:8px;font-size:13px;line-height:1.6}.log-error[data-v-fecc7a21]{margin-top:6px;color:#b91c1c}.vip-body[data-v-fecc7a21]{padding:12px 0 0}.vip-tip[data-v-fecc7a21]{margin-top:10px;font-size:13px;line-height:1.6}@media(max-width:480px){.grid[data-v-fecc7a21]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-fecc7a21]{width:100%;justify-content:flex-end}.schedule-switch[data-v-fecc7a21]{width:100%;display:flex;justify-content:flex-end}} diff --git a/static/app/assets/SchedulesPage-TUv7nqYq.js b/static/app/assets/SchedulesPage-TUv7nqYq.js deleted file mode 100644 index 891346e..0000000 --- a/static/app/assets/SchedulesPage-TUv7nqYq.js +++ /dev/null @@ -1 +0,0 @@ -import{aa as et,ab as Dt,ac as Qt,ad as Xt,ae as Pt,G as it,af as en,b as Ee,t as pe,ag as tn,Y as nn,a8 as an,_ as xe,ah as Vt,ai as sn,u as Ce,aj as on,ak as ln,X as rn,al as un,a5 as cn,A as Ae,V as dn,L as pn,s as fn,a3 as mn,M as vn,d as hn,E as gn}from"./el-button-DWxIvzz-.js";import{q as bn,h as ft,g as yn,i as wn,m as kn,n as _n,o as Sn,l as $n,p as mt}from"./el-overlay-C_JJBVfE.js";import{E as Mn,a as Cn,b as Dn}from"./el-alert-DB2IQLpH.js";import{b as Pn,E as Vn,a as In}from"./el-select-B0VMg2td.js";import{u as Tn,b as En,E as On,a as An}from"./user-Bl59IefW.js";import{f as Rn}from"./accounts-3bM7Wy59.js";import{b as Ln,U as qe,r as Fn,s as Nn,v as It,C as We,k as vt,w as xn,E as Tt,g as ut,e as Ie,j as Bn,p as De,a as ge}from"./http-CdvgQxJu.js";import{E as Hn}from"./el-pagination-BY1uI-wO.js";import{E as Yn}from"./el-card-DfVpO1U5.js";import{_ as Un}from"./style-CEbARg1o.js";import{K as _e,ab as ht,g as X,h as J,A as Pe,f as Et,j as se,o as L,B as Ne,k as Y,O as Ze,C as n,U as ot,n as ee,ac as jn,Q as Je,L as ct,z as zn,c as ce,s as x,p as Le,l as we,ad as gt,D as Ye,t as ae,W as Te,M as lt,a0 as bt,i as Ot,F as be,a4 as Me,x as ve,w as yt,q as z,T as Kn}from"./vendor-vue-DxN60LNb.js";import{b as qn,i as Wn,d as Zn}from"./isArrayLikeObject-BjIRF-cS.js";import"./vendor-axios-B9ygI19o.js";function Jn(){}function Gn(s){return s!==s}function Qn(s,i,a){for(var d=a-1,F=s.length;++d-1}var ta=1/0,na=et&&1/Dt(new et([,-0]))[1]==ta?function(s){return new et(s)}:Jn,aa=200;function sa(s,i,a){var d=-1,F=ea,$=s.length,u=!0,M=[],P=M;if($>=aa){var T=na(s);if(T)return Dt(T);u=!1,F=Xt,P=new Qt}else P=M;e:for(;++d<$;){var S=s[d],O=S;if(S=S!==0?S:0,u&&O===O){for(var B=P.length;B--;)if(P[B]===O)continue e;M.push(S)}else F(P,O,a)||(P!==M&&P.push(O),M.push(S))}return M}var tt=qn(function(s){return sa(Ln(s,1,Wn,!0))});function At(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var je={exports:{}},oa=je.exports,wt;function la(){return wt||(wt=1,(function(s,i){(function(a,d){s.exports=d()})(oa,(function(){var a=1e3,d=6e4,F=36e5,$="millisecond",u="second",M="minute",P="hour",T="day",S="week",O="month",B="quarter",U="year",V="date",I="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,C=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,H={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(b){var m=["th","st","nd","rd"],f=b%100;return"["+b+(m[(f-20)%10]||m[f]||m[0])+"]"}},_=function(b,m,f){var p=String(b);return!p||p.length>=m?b:""+Array(m+1-p.length).join(f)+b},k={s:_,z:function(b){var m=-b.utcOffset(),f=Math.abs(m),p=Math.floor(f/60),c=f%60;return(m<=0?"+":"-")+_(p,2,"0")+":"+_(c,2,"0")},m:function b(m,f){if(m.date()1)return b(D[0])}else{var R=m.name;Z[R]=m,c=R}return!p&&c&&(W=c),c||!p&&W},q=function(b,m){if(ne(b))return b.clone();var f=typeof m=="object"?m:{};return f.date=b,f.args=arguments,new te(f)},A=k;A.l=oe,A.i=ne,A.w=function(b,m){return q(b,{locale:m.$L,utc:m.$u,x:m.$x,$offset:m.$offset})};var te=(function(){function b(f){this.$L=oe(f.locale,null,!0),this.parse(f),this.$x=this.$x||f.x||{},this[h]=!0}var m=b.prototype;return m.parse=function(f){this.$d=(function(p){var c=p.date,w=p.utc;if(c===null)return new Date(NaN);if(A.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var D=c.match(l);if(D){var R=D[2]-1||0,t=(D[7]||"0").substring(0,3);return w?new Date(Date.UTC(D[1],R,D[3]||1,D[4]||0,D[5]||0,D[6]||0,t)):new Date(D[1],R,D[3]||1,D[4]||0,D[5]||0,D[6]||0,t)}}return new Date(c)})(f),this.init()},m.init=function(){var f=this.$d;this.$y=f.getFullYear(),this.$M=f.getMonth(),this.$D=f.getDate(),this.$W=f.getDay(),this.$H=f.getHours(),this.$m=f.getMinutes(),this.$s=f.getSeconds(),this.$ms=f.getMilliseconds()},m.$utils=function(){return A},m.isValid=function(){return this.$d.toString()!==I},m.isSame=function(f,p){var c=q(f);return this.startOf(p)<=c&&c<=this.endOf(p)},m.isAfter=function(f,p){return q(f)[s>0?s-1:void 0,s,skt(F,i[$])):!a&&!d?kt(s,i):!1},_t=function(s,i,a){const d=Pt(i)||i==="x"?Se(s).locale(a):Se(s,i).locale(a);return d.isValid()?d:void 0},St=function(s,i,a){return Pt(i)?s:i==="x"?+s:Se(s).locale(a).format(i)},at=(s,i)=>{var a;const d=[],F=i?.();for(let $=0;$_e(s)?s.map(i=>i.toDate()):s.toDate();var Ke={exports:{}},ia=Ke.exports,$t;function ua(){return $t||($t=1,(function(s,i){(function(a,d){s.exports=d()})(ia,(function(){var a={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},d=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,F=/\d/,$=/\d\d/,u=/\d\d?/,M=/\d*[^-_:/,()\s\d]+/,P={},T=function(l){return(l=+l)+(l>68?1900:2e3)},S=function(l){return function(C){this[l]=+C}},O=[/[+-]\d\d:?(\d\d)?|Z/,function(l){(this.zone||(this.zone={})).offset=(function(C){if(!C||C==="Z")return 0;var H=C.match(/([+-]|\d\d)/g),_=60*H[1]+(+H[2]||0);return _===0?0:H[0]==="+"?-_:_})(l)}],B=function(l){var C=P[l];return C&&(C.indexOf?C:C.s.concat(C.f))},U=function(l,C){var H,_=P.meridiem;if(_){for(var k=1;k<=24;k+=1)if(l.indexOf(_(k,0,C))>-1){H=k>12;break}}else H=l===(C?"pm":"PM");return H},V={A:[M,function(l){this.afternoon=U(l,!1)}],a:[M,function(l){this.afternoon=U(l,!0)}],Q:[F,function(l){this.month=3*(l-1)+1}],S:[F,function(l){this.milliseconds=100*+l}],SS:[$,function(l){this.milliseconds=10*+l}],SSS:[/\d{3}/,function(l){this.milliseconds=+l}],s:[u,S("seconds")],ss:[u,S("seconds")],m:[u,S("minutes")],mm:[u,S("minutes")],H:[u,S("hours")],h:[u,S("hours")],HH:[u,S("hours")],hh:[u,S("hours")],D:[u,S("day")],DD:[$,S("day")],Do:[M,function(l){var C=P.ordinal,H=l.match(/\d+/);if(this.day=H[0],C)for(var _=1;_<=31;_+=1)C(_).replace(/\[|\]/g,"")===l&&(this.day=_)}],w:[u,S("week")],ww:[$,S("week")],M:[u,S("month")],MM:[$,S("month")],MMM:[M,function(l){var C=B("months"),H=(B("monthsShort")||C.map((function(_){return _.slice(0,3)}))).indexOf(l)+1;if(H<1)throw new Error;this.month=H%12||H}],MMMM:[M,function(l){var C=B("months").indexOf(l)+1;if(C<1)throw new Error;this.month=C%12||C}],Y:[/[+-]?\d+/,S("year")],YY:[$,function(l){this.year=T(l)}],YYYY:[/\d{4}/,S("year")],Z:O,ZZ:O};function I(l){var C,H;C=l,H=P&&P.formats;for(var _=(l=C.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(q,A,te){var le=te&&te.toUpperCase();return A||H[te]||a[te]||H[le].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(b,m,f){return m||f.slice(1)}))}))).match(d),k=_.length,W=0;W-1)return new Date((c==="X"?1e3:1)*p);var R=I(c)(p),t=R.year,e=R.month,r=R.day,v=R.hours,N=R.minutes,G=R.seconds,fe=R.milliseconds,re=R.zone,g=R.week,E=new Date,j=r||(t||e?1:E.getDate()),Q=t||E.getFullYear(),ie=0;t&&!e||(ie=e>0?e-1:E.getMonth());var ue,de=v||0,he=N||0,ke=G||0,ye=fe||0;return re?new Date(Date.UTC(Q,ie,j,de,he,ke,ye+60*re.offset*1e3)):w?new Date(Date.UTC(Q,ie,j,de,he,ke,ye)):(ue=new Date(Q,ie,j,de,he,ke,ye),g&&(ue=D(ue).week(g).toDate()),ue)}catch{return new Date("")}})(Z,oe,h,H),this.init(),le&&le!==!0&&(this.$L=this.locale(le).$L),te&&Z!=this.format(oe)&&(this.$d=new Date("")),P={}}else if(oe instanceof Array)for(var b=oe.length,m=1;m<=b;m+=1){ne[1]=oe[m-1];var f=H.apply(this,ne);if(f.isValid()){this.$d=f.$d,this.$L=f.$L,this.init();break}m===b&&(this.$d=new Date(""))}else k.call(this,W)}}}))})(Ke)),Ke.exports}var ca=ua();const da=At(ca),Mt=["hours","minutes","seconds"],Ge="EP_PICKER_BASE",Lt="ElPopperOptions",pa=Symbol("commonPickerContextKey"),Ft="HH:mm:ss",fa=(s,i)=>{const{lang:a}=it(),d=X(!1),F=X(!1),$=X(null),u=J(()=>{const{modelValue:V}=s;return!V||_e(V)&&!V.filter(Boolean).length}),M=V=>{if(!Rt(s.modelValue,V)){let I;_e(V)?I=V.map(C=>St(C,s.valueFormat,a.value)):V&&(I=St(V,s.valueFormat,a.value)),i(qe,V&&I,a.value)}},P=J(()=>{var V;let I;if(u.value?T.value.getDefaultValue&&(I=T.value.getDefaultValue()):_e(s.modelValue)?I=s.modelValue.map(l=>_t(l,s.valueFormat,a.value)):I=_t((V=s.modelValue)!=null?V:"",s.valueFormat,a.value),T.value.getRangeAvailableTime){const l=T.value.getRangeAvailableTime(I);en(l,I)||(I=l,u.value||M(ze(I)))}return _e(I)&&I.some(l=>!l)&&(I=[]),I}),T=X({});return{parsedValue:P,pickerActualVisible:F,pickerOptions:T,pickerVisible:d,userInput:$,valueIsEmpty:u,emitInput:M,onCalendarChange:V=>{i("calendar-change",V)},onPanelChange:(V,I,l)=>{i("panel-change",V,I,l)},onPick:(V="",I=!1)=>{d.value=I;let l;_e(V)?l=V.map(C=>C.toDate()):l=V&&V.toDate(),$.value=null,M(l)},onSetPickerOption:V=>{T.value[V[0]]=V[1],T.value.panelReady=!0}}},Nt=Ee({disabledHours:{type:pe(Function)},disabledMinutes:{type:pe(Function)},disabledSeconds:{type:pe(Function)}}),xt=Ee({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:""}}),Bt=Ee({automaticDropdown:{type:Boolean,default:!0},id:{type:pe([Array,String])},name:{type:pe([Array,String])},popperClass:ft.popperClass,popperStyle:ft.popperStyle,format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:""},clearable:{type:Boolean,default:!0},clearIcon:{type:pe([String,Object]),default:an},editable:{type:Boolean,default:!0},prefixIcon:{type:pe([String,Object]),default:""},size:nn,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:""},popperOptions:{type:pe(Object),default:()=>({})},modelValue:{type:pe([Date,Array,String,Number]),default:""},rangeSeparator:{type:String,default:"-"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:pe([Date,Array])},defaultTime:{type:pe([Date,Array])},isRange:Boolean,...Nt,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:pe([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:pe(String),values:bn,default:"bottom"},fallbackPlacements:{type:pe(Array),default:["bottom","top","right","left"]},...tn,...Fn(["ariaLabel"]),showNow:{type:Boolean,default:!0},showConfirm:{type:Boolean,default:!0},showFooter:{type:Boolean,default:!0},showWeekNumber:Boolean}),ma=Ee({id:{type:pe(Array)},name:{type:pe(Array)},modelValue:{type:pe([Array,String])},startPlaceholder:String,endPlaceholder:String,disabled:Boolean}),va=Pe({name:"PickerRangeTrigger",inheritAttrs:!1}),ha=Pe({...va,props:ma,emits:["mouseenter","mouseleave","click","touchstart","focus","blur","startInput","endInput","startChange","endChange"],setup(s,{expose:i,emit:a}){const d=s,{formItem:F}=Vt(),{inputId:$}=sn(Et({id:J(()=>{var h;return(h=d.id)==null?void 0:h[0]})}),{formItemContext:F}),u=Nn(),M=Ce("date"),P=Ce("range"),T=X(),S=X(),{wrapperRef:O,isFocused:B}=It(T,{disabled:J(()=>d.disabled)}),U=h=>{a("click",h)},V=h=>{a("mouseenter",h)},I=h=>{a("mouseleave",h)},l=h=>{a("touchstart",h)},C=h=>{a("startInput",h)},H=h=>{a("endInput",h)},_=h=>{a("startChange",h)},k=h=>{a("endChange",h)};return i({focus:()=>{var h;(h=T.value)==null||h.focus()},blur:()=>{var h,ne;(h=T.value)==null||h.blur(),(ne=S.value)==null||ne.blur()}}),(h,ne)=>(L(),se("div",{ref_key:"wrapperRef",ref:O,class:ee([n(M).is("active",n(B)),h.$attrs.class]),style:ot(h.$attrs.style),onClick:U,onMouseenter:V,onMouseleave:I,onTouchstartPassive:l},[Ne(h.$slots,"prefix"),Y("input",Ze(n(u),{id:n($),ref_key:"inputRef",ref:T,name:h.name&&h.name[0],placeholder:h.startPlaceholder,value:h.modelValue&&h.modelValue[0],class:n(P).b("input"),disabled:h.disabled,onInput:C,onChange:_}),null,16,["id","name","placeholder","value","disabled"]),Ne(h.$slots,"range-separator"),Y("input",Ze(n(u),{id:h.id&&h.id[1],ref_key:"endInputRef",ref:S,name:h.name&&h.name[1],placeholder:h.endPlaceholder,value:h.modelValue&&h.modelValue[1],class:n(P).b("input"),disabled:h.disabled,onInput:H,onChange:k}),null,16,["id","name","placeholder","value","disabled"]),Ne(h.$slots,"suffix")],38))}});var ga=xe(ha,[["__file","picker-range-trigger.vue"]]);const ba=Pe({name:"Picker"}),ya=Pe({...ba,props:Bt,emits:[qe,We,"focus","blur","clear","calendar-change","panel-change","visible-change","keydown"],setup(s,{expose:i,emit:a}){const d=s,F=jn(),$=Ce("date"),u=Ce("input"),M=Ce("range"),{formItem:P}=Vt(),T=Je(Lt,{}),S=on(d,null),O=X(),B=X(),U=X(null);let V=!1;const I=ln(),l=fa(d,a),{parsedValue:C,pickerActualVisible:H,userInput:_,pickerVisible:k,pickerOptions:W,valueIsEmpty:Z,emitInput:h,onPick:ne,onSetPickerOption:oe,onCalendarChange:q,onPanelChange:A}=l,{isFocused:te,handleFocus:le,handleBlur:b}=It(B,{disabled:I,beforeFocus(){return d.readonly},afterFocus(){d.automaticDropdown&&(k.value=!0)},beforeBlur(o){var K;return!V&&((K=O.value)==null?void 0:K.isFocusInsideContent(o))},afterBlur(){Qe(),k.value=!1,V=!1,d.validateEvent&&P?.validate("blur").catch(o=>vt())}}),m=X(!1),f=J(()=>[$.b("editor"),$.bm("editor",d.type),u.e("wrapper"),$.is("disabled",I.value),$.is("active",k.value),M.b("editor"),y?M.bm("editor",y.value):"",F.class]),p=J(()=>[u.e("icon"),M.e("close-icon"),ie.value?"":M.em("close-icon","hidden")]);ct(k,o=>{o?Te(()=>{o&&(U.value=d.modelValue)}):(_.value=null,Te(()=>{c(d.modelValue)}))});const c=(o,K)=>{(K||!Rt(o,U.value))&&(a(We,o),K&&(U.value=o),d.validateEvent&&P?.validate("change").catch(me=>vt()))},w=o=>{a("keydown",o)},D=J(()=>B.value?Array.from(B.value.$el.querySelectorAll("input")):[]),R=(o,K,me)=>{const $e=D.value;$e.length&&(!me||me==="min"?($e[0].setSelectionRange(o,K),$e[0].focus()):me==="max"&&($e[1].setSelectionRange(o,K),$e[1].focus()))},t=()=>{H.value=!0},e=()=>{a("visible-change",!0)},r=()=>{H.value=!1,k.value=!1,a("visible-change",!1)},v=()=>{k.value=!0},N=()=>{k.value=!1},G=J(()=>{const o=Xe(C.value);return _e(_.value)?[_.value[0]||o&&o[0]||"",_.value[1]||o&&o[1]||""]:_.value!==null?_.value:!re.value&&Z.value||!k.value&&Z.value?"":o?g.value||E.value||j.value?o.join(", "):o:""}),fe=J(()=>d.type.includes("time")),re=J(()=>d.type.startsWith("time")),g=J(()=>d.type==="dates"),E=J(()=>d.type==="months"),j=J(()=>d.type==="years"),Q=J(()=>d.prefixIcon||(fe.value?un:cn)),ie=J(()=>d.clearable&&!I.value&&!d.readonly&&!Z.value&&(m.value||te.value)),ue=o=>{d.readonly||I.value||(ie.value&&(o.stopPropagation(),W.value.handleClear?W.value.handleClear():h(S.valueOnClear.value),c(S.valueOnClear.value,!0),r()),a("clear"))},de=async o=>{var K;d.readonly||I.value||(((K=o.target)==null?void 0:K.tagName)!=="INPUT"||te.value||!d.automaticDropdown)&&(k.value=!0)},he=()=>{d.readonly||I.value||!Z.value&&d.clearable&&(m.value=!0)},ke=()=>{m.value=!1},ye=o=>{var K;d.readonly||I.value||(((K=o.touches[0].target)==null?void 0:K.tagName)!=="INPUT"||te.value||!d.automaticDropdown)&&(k.value=!0)},Oe=J(()=>d.type.includes("range")),y=rn(),Ve=J(()=>{var o,K;return(K=(o=n(O))==null?void 0:o.popperRef)==null?void 0:K.contentRef}),dt=xn(B,o=>{const K=n(Ve),me=Bn(B);K&&(o.target===K||o.composedPath().includes(K))||o.target===me||me&&o.composedPath().includes(me)||(k.value=!1)});zn(()=>{dt?.()});const Qe=()=>{if(_.value){const o=Be(G.value);o&&(He(o)&&h(ze(o)),_.value=null)}_.value===""&&(h(S.valueOnClear.value),c(S.valueOnClear.value,!0),_.value=null)},Be=o=>o?W.value.parseUserInput(o):null,Xe=o=>o?_e(o)?o.map(me=>me.format(d.format)):o.format(d.format):null,He=o=>W.value.isValidValue(o),pt=async o=>{if(d.readonly||I.value)return;const K=ut(o);if(w(o),K===Ie.esc){k.value===!0&&(k.value=!1,o.preventDefault(),o.stopPropagation());return}if(K===Ie.down&&(W.value.handleFocusPicker&&(o.preventDefault(),o.stopPropagation()),k.value===!1&&(k.value=!0,await Te()),W.value.handleFocusPicker)){W.value.handleFocusPicker();return}if(K===Ie.tab){V=!0;return}if(K===Ie.enter||K===Ie.numpadEnter){k.value?(_.value===null||_.value===""||He(Be(G.value)))&&(Qe(),k.value=!1):k.value=!0,o.preventDefault(),o.stopPropagation();return}if(_.value){o.stopPropagation();return}W.value.handleKeydownInput&&W.value.handleKeydownInput(o)},zt=o=>{_.value=o,k.value||(k.value=!0)},Kt=o=>{const K=o.target;_.value?_.value=[K.value,_.value[1]]:_.value=[K.value,null]},qt=o=>{const K=o.target;_.value?_.value=[_.value[0],K.value]:_.value=[null,K.value]},Wt=()=>{var o;const K=_.value,me=Be(K&&K[0]),$e=n(C);if(me&&me.isValid()){_.value=[Xe(me),((o=G.value)==null?void 0:o[1])||null];const Re=[me,$e&&($e[1]||null)];He(Re)&&(h(ze(Re)),_.value=null)}},Zt=()=>{var o;const K=n(_),me=Be(K&&K[1]),$e=n(C);if(me&&me.isValid()){_.value=[((o=n(G))==null?void 0:o[0])||null,Xe(me)];const Re=[$e&&$e[0],me];He(Re)&&(h(ze(Re)),_.value=null)}},Jt=()=>{var o;(o=B.value)==null||o.focus()},Gt=()=>{var o;(o=B.value)==null||o.blur()};return lt(Ge,{props:d,emptyValues:S}),lt(pa,l),i({focus:Jt,blur:Gt,handleOpen:v,handleClose:N,onPick:ne}),(o,K)=>(L(),ce(n(yn),Ze({ref_key:"refPopper",ref:O,visible:n(k),effect:"light",pure:"",trigger:"click"},o.$attrs,{role:"dialog",teleported:"",transition:`${n($).namespace.value}-zoom-in-top`,"popper-class":[`${n($).namespace.value}-picker__popper`,o.popperClass],"popper-style":o.popperStyle,"popper-options":n(T),"fallback-placements":o.fallbackPlacements,"gpu-acceleration":!1,placement:o.placement,"stop-popper-mouse-event":!1,"hide-after":0,persistent:"",onBeforeShow:t,onShow:e,onHide:r}),{default:x(()=>[n(Oe)?(L(),ce(ga,{key:1,id:o.id,ref_key:"inputRef",ref:B,"model-value":n(G),name:o.name,disabled:n(I),readonly:!o.editable||o.readonly,"start-placeholder":o.startPlaceholder,"end-placeholder":o.endPlaceholder,class:ee(n(f)),style:ot(o.$attrs.style),"aria-label":o.ariaLabel,tabindex:o.tabindex,autocomplete:"off",role:"combobox",onClick:de,onFocus:n(le),onBlur:n(b),onStartInput:Kt,onStartChange:Wt,onEndInput:qt,onEndChange:Zt,onMousedown:de,onMouseenter:he,onMouseleave:ke,onTouchstartPassive:ye,onKeydown:pt},{prefix:x(()=>[n(Q)?(L(),ce(n(Ae),{key:0,class:ee([n(u).e("icon"),n(M).e("icon")])},{default:x(()=>[(L(),ce(Ye(n(Q))))]),_:1},8,["class"])):we("v-if",!0)]),"range-separator":x(()=>[Ne(o.$slots,"range-separator",{},()=>[Y("span",{class:ee(n(M).b("separator"))},ae(o.rangeSeparator),3)])]),suffix:x(()=>[o.clearIcon?(L(),ce(n(Ae),{key:0,class:ee(n(p)),onMousedown:Le(n(gt),["prevent"]),onClick:ue},{default:x(()=>[(L(),ce(Ye(o.clearIcon)))]),_:1},8,["class","onMousedown"])):we("v-if",!0)]),_:3},8,["id","model-value","name","disabled","readonly","start-placeholder","end-placeholder","class","style","aria-label","tabindex","onFocus","onBlur"])):(L(),ce(n(Tt),{key:0,id:o.id,ref_key:"inputRef",ref:B,"container-role":"combobox","model-value":n(G),name:o.name,size:n(y),disabled:n(I),placeholder:o.placeholder,class:ee([n($).b("editor"),n($).bm("editor",o.type),n($).is("focus",n(k)),o.$attrs.class]),style:ot(o.$attrs.style),readonly:!o.editable||o.readonly||n(g)||n(E)||n(j)||o.type==="week","aria-label":o.ariaLabel,tabindex:o.tabindex,"validate-event":!1,onInput:zt,onFocus:n(le),onBlur:n(b),onKeydown:pt,onChange:Qe,onMousedown:de,onMouseenter:he,onMouseleave:ke,onTouchstartPassive:ye,onClick:Le(()=>{},["stop"])},{prefix:x(()=>[n(Q)?(L(),ce(n(Ae),{key:0,class:ee(n(u).e("icon")),onMousedown:Le(de,["prevent"]),onTouchstartPassive:ye},{default:x(()=>[(L(),ce(Ye(n(Q))))]),_:1},8,["class","onMousedown"])):we("v-if",!0)]),suffix:x(()=>[n(ie)&&o.clearIcon?(L(),ce(n(Ae),{key:0,class:ee(`${n(u).e("icon")} clear-icon`),onMousedown:Le(n(gt),["prevent"]),onClick:ue},{default:x(()=>[(L(),ce(Ye(o.clearIcon)))]),_:1},8,["class","onMousedown"])):we("v-if",!0)]),_:1},8,["id","model-value","name","size","disabled","placeholder","class","style","readonly","aria-label","tabindex","onFocus","onBlur","onClick"]))]),content:x(()=>[Ne(o.$slots,"default",{visible:n(k),actualVisible:n(H),parsedValue:n(C),format:o.format,dateFormat:o.dateFormat,timeFormat:o.timeFormat,unlinkPanels:o.unlinkPanels,type:o.type,defaultValue:o.defaultValue,showNow:o.showNow,showConfirm:o.showConfirm,showFooter:o.showFooter,showWeekNumber:o.showWeekNumber,onPick:n(ne),onSelectRange:R,onSetPickerOption:n(oe),onCalendarChange:n(q),onPanelChange:n(A),onMousedown:Le(()=>{},["stop"])})]),_:3},16,["visible","transition","popper-class","popper-style","popper-options","fallback-placements","placement"]))}});var wa=xe(ya,[["__file","picker.vue"]]);const ka=Ee({...xt,datetimeRole:String,parsedValue:{type:pe(Object)}}),Ht=({getAvailableHours:s,getAvailableMinutes:i,getAvailableSeconds:a})=>{const d=(u,M,P,T)=>{const S={hour:s,minute:i,second:a};let O=u;return["hour","minute","second"].forEach(B=>{if(S[B]){let U;const V=S[B];switch(B){case"minute":{U=V(O.hour(),M,T);break}case"second":{U=V(O.hour(),O.minute(),M,T);break}default:{U=V(M,T);break}}if(U?.length&&!U.includes(O[B]())){const I=P?0:U.length-1;O=O[B](U[I])}}}),O},F={};return{timePickerOptions:F,getAvailableTime:d,onSetOption:([u,M])=>{F[u]=M}}},st=s=>{const i=(d,F)=>d||F,a=d=>d!==!0;return s.map(i).filter(a)},Yt=(s,i,a)=>({getHoursList:(u,M)=>at(24,s&&(()=>s?.(u,M))),getMinutesList:(u,M,P)=>at(60,i&&(()=>i?.(u,M,P))),getSecondsList:(u,M,P,T)=>at(60,a&&(()=>a?.(u,M,P,T)))}),Ut=(s,i,a)=>{const{getHoursList:d,getMinutesList:F,getSecondsList:$}=Yt(s,i,a);return{getAvailableHours:(T,S)=>st(d(T,S)),getAvailableMinutes:(T,S,O)=>st(F(T,S,O)),getAvailableSeconds:(T,S,O,B)=>st($(T,S,O,B))}},jt=s=>{const i=X(s.parsedValue);return ct(()=>s.visible,a=>{a||(i.value=s.parsedValue)}),i},_a=Ee({role:{type:String,required:!0},spinnerDate:{type:pe(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:pe(String),default:""},...Nt}),Sa=100,$a=600,Ue="_RepeatClick",Ct={beforeMount(s,i){const a=i.value,{interval:d=Sa,delay:F=$a}=bt(a)?{}:a;let $,u;const M=()=>bt(a)?a():a.handler(),P=()=>{u&&(clearTimeout(u),u=void 0),$&&(clearInterval($),$=void 0)},T=S=>{S.button===0&&(P(),M(),document.addEventListener("mouseup",P,{once:!0}),u=setTimeout(()=>{$=setInterval(()=>{M()},d)},F))};s[Ue]={start:T,clear:P},s.addEventListener("mousedown",T)},unmounted(s){if(!s[Ue])return;const{start:i,clear:a}=s[Ue];i&&s.removeEventListener("mousedown",i),a&&(a(),document.removeEventListener("mouseup",a)),s[Ue]=null}},Ma=Pe({__name:"basic-time-spinner",props:_a,emits:[We,"select-range","set-option"],setup(s,{emit:i}){const a=s,d=Je(Ge),{isRange:F,format:$}=d.props,u=Ce("time"),{getHoursList:M,getMinutesList:P,getSecondsList:T}=Yt(a.disabledHours,a.disabledMinutes,a.disabledSeconds);let S=!1;const O=X(),B=X(),U=X(),V=X(),I={hours:B,minutes:U,seconds:V},l=J(()=>a.showSeconds?Mt:Mt.slice(0,2)),C=J(()=>{const{spinnerDate:t}=a,e=t.hour(),r=t.minute(),v=t.second();return{hours:e,minutes:r,seconds:v}}),H=J(()=>{const{hours:t,minutes:e}=n(C),{role:r,spinnerDate:v}=a,N=F?void 0:v;return{hours:M(r,N),minutes:P(t,r,N),seconds:T(t,e,r,N)}}),_=J(()=>{const{hours:t,minutes:e,seconds:r}=n(C);return{hours:nt(t,23),minutes:nt(e,59),seconds:nt(r,59)}}),k=Zn(t=>{S=!1,h(t)},200),W=t=>{if(!!!a.amPmMode)return"";const r=a.amPmMode==="A";let v=t<12?" am":" pm";return r&&(v=v.toUpperCase()),v},Z=t=>{let e=[0,0];const r=$||Ft,v=r.indexOf("HH"),N=r.indexOf("mm"),G=r.indexOf("ss");switch(t){case"hours":v!==-1&&(e=[v,v+2]);break;case"minutes":N!==-1&&(e=[N,N+2]);break;case"seconds":G!==-1&&(e=[G,G+2]);break}const[fe,re]=e;i("select-range",fe,re),O.value=t},h=t=>{q(t,n(C)[t])},ne=()=>{h("hours"),h("minutes"),h("seconds")},oe=t=>t.querySelector(`.${u.namespace.value}-scrollbar__wrap`),q=(t,e)=>{if(a.arrowControl)return;const r=n(I[t]);r&&r.$el&&(oe(r.$el).scrollTop=Math.max(0,e*A(t)))},A=t=>{const e=n(I[t]),r=e?.$el.querySelector("li");return r&&Number.parseFloat(mn(r,"height"))||0},te=()=>{b(1)},le=()=>{b(-1)},b=t=>{O.value||Z("hours");const e=O.value,r=n(C)[e],v=O.value==="hours"?24:60,N=m(e,r,t,v);f(e,N),q(e,N),Te(()=>Z(e))},m=(t,e,r,v)=>{let N=(e+r+v)%v;const G=n(H)[t];for(;G[N]&&N!==e;)N=(N+r+v)%v;return N},f=(t,e)=>{if(n(H)[t][e])return;const{hours:N,minutes:G,seconds:fe}=n(C);let re;switch(t){case"hours":re=a.spinnerDate.hour(e).minute(G).second(fe);break;case"minutes":re=a.spinnerDate.hour(N).minute(e).second(fe);break;case"seconds":re=a.spinnerDate.hour(N).minute(G).second(e);break}i(We,re)},p=(t,{value:e,disabled:r})=>{r||(f(t,e),Z(t),q(t,e))},c=t=>{const e=n(I[t]);if(!e)return;S=!0,k(t);const r=Math.min(Math.round((oe(e.$el).scrollTop-(w(t)*.5-10)/A(t)+3)/A(t)),t==="hours"?23:59);f(t,r)},w=t=>n(I[t]).$el.offsetHeight,D=()=>{const t=e=>{const r=n(I[e]);r&&r.$el&&(oe(r.$el).onscroll=()=>{c(e)})};t("hours"),t("minutes"),t("seconds")};Ot(()=>{Te(()=>{!a.arrowControl&&D(),ne(),a.role==="start"&&Z("hours")})});const R=(t,e)=>{I[e].value=t??void 0};return i("set-option",[`${a.role}_scrollDown`,b]),i("set-option",[`${a.role}_emitSelectRange`,Z]),ct(()=>a.spinnerDate,()=>{S||ne()}),(t,e)=>(L(),se("div",{class:ee([n(u).b("spinner"),{"has-seconds":t.showSeconds}])},[t.arrowControl?we("v-if",!0):(L(!0),se(be,{key:0},Me(n(l),r=>(L(),ce(n(wn),{key:r,ref_for:!0,ref:v=>R(v,r),class:ee(n(u).be("spinner","wrapper")),"wrap-style":"max-height: inherit;","view-class":n(u).be("spinner","list"),noresize:"",tag:"ul",onMouseenter:v=>Z(r),onMousemove:v=>h(r)},{default:x(()=>[(L(!0),se(be,null,Me(n(H)[r],(v,N)=>(L(),se("li",{key:N,class:ee([n(u).be("spinner","item"),n(u).is("active",N===n(C)[r]),n(u).is("disabled",v)]),onClick:G=>p(r,{value:N,disabled:v})},[r==="hours"?(L(),se(be,{key:0},[ve(ae(("0"+(t.amPmMode?N%12||12:N)).slice(-2))+ae(W(N)),1)],64)):(L(),se(be,{key:1},[ve(ae(("0"+N).slice(-2)),1)],64))],10,["onClick"]))),128))]),_:2},1032,["class","view-class","onMouseenter","onMousemove"]))),128)),t.arrowControl?(L(!0),se(be,{key:1},Me(n(l),r=>(L(),se("div",{key:r,class:ee([n(u).be("spinner","wrapper"),n(u).is("arrow")]),onMouseenter:v=>Z(r)},[yt((L(),ce(n(Ae),{class:ee(["arrow-up",n(u).be("spinner","arrow")])},{default:x(()=>[z(n(dn))]),_:1},8,["class"])),[[n(Ct),le]]),yt((L(),ce(n(Ae),{class:ee(["arrow-down",n(u).be("spinner","arrow")])},{default:x(()=>[z(n(pn))]),_:1},8,["class"])),[[n(Ct),te]]),Y("ul",{class:ee(n(u).be("spinner","list"))},[(L(!0),se(be,null,Me(n(_)[r],(v,N)=>(L(),se("li",{key:N,class:ee([n(u).be("spinner","item"),n(u).is("active",v===n(C)[r]),n(u).is("disabled",n(H)[r][v])])},[n(fn)(v)?(L(),se(be,{key:0},[r==="hours"?(L(),se(be,{key:0},[ve(ae(("0"+(t.amPmMode?v%12||12:v)).slice(-2))+ae(W(v)),1)],64)):(L(),se(be,{key:1},[ve(ae(("0"+v).slice(-2)),1)],64))],64)):we("v-if",!0)],2))),128))],2)],42,["onMouseenter"]))),128)):we("v-if",!0)],2))}});var rt=xe(Ma,[["__file","basic-time-spinner.vue"]]);const Ca=Pe({__name:"panel-time-pick",props:ka,emits:["pick","select-range","set-picker-option"],setup(s,{emit:i}){const a=s,d=Je(Ge),{arrowControl:F,disabledHours:$,disabledMinutes:u,disabledSeconds:M,defaultValue:P}=d.props,{getAvailableHours:T,getAvailableMinutes:S,getAvailableSeconds:O}=Ut($,u,M),B=Ce("time"),{t:U,lang:V}=it(),I=X([0,2]),l=jt(a),C=J(()=>vn(a.actualVisible)?`${B.namespace.value}-zoom-in-top`:""),H=J(()=>a.format.includes("ss")),_=J(()=>a.format.includes("A")?"A":a.format.includes("a")?"a":""),k=p=>{const c=Se(p).locale(V.value),w=b(c);return c.isSame(w)},W=()=>{const p=l.value;i("pick",p,!1),Te(()=>{l.value=p})},Z=(p=!1,c=!1)=>{c||i("pick",a.parsedValue,p)},h=p=>{if(!a.visible)return;const c=b(p).millisecond(0);i("pick",c,!0)},ne=(p,c)=>{i("select-range",p,c),I.value=[p,c]},oe=p=>{const c=a.format,w=c.indexOf("HH"),D=c.indexOf("mm"),R=c.indexOf("ss"),t=[],e=[];w!==-1&&(t.push(w),e.push("hours")),D!==-1&&(t.push(D),e.push("minutes")),R!==-1&&H.value&&(t.push(R),e.push("seconds"));const v=(t.indexOf(I.value[0])+p+t.length)%t.length;A.start_emitSelectRange(e[v])},q=p=>{const c=ut(p),{left:w,right:D,up:R,down:t}=Ie;if([w,D].includes(c)){oe(c===w?-1:1),p.preventDefault();return}if([R,t].includes(c)){const e=c===R?-1:1;A.start_scrollDown(e),p.preventDefault();return}},{timePickerOptions:A,onSetOption:te,getAvailableTime:le}=Ht({getAvailableHours:T,getAvailableMinutes:S,getAvailableSeconds:O}),b=p=>le(p,a.datetimeRole||"",!0),m=p=>p?Se(p,a.format).locale(V.value):null,f=()=>Se(P).locale(V.value);return i("set-picker-option",["isValidValue",k]),i("set-picker-option",["parseUserInput",m]),i("set-picker-option",["handleKeydownInput",q]),i("set-picker-option",["getRangeAvailableTime",b]),i("set-picker-option",["getDefaultValue",f]),(p,c)=>(L(),ce(Kn,{name:n(C)},{default:x(()=>[p.actualVisible||p.visible?(L(),se("div",{key:0,class:ee(n(B).b("panel"))},[Y("div",{class:ee([n(B).be("panel","content"),{"has-seconds":n(H)}])},[z(rt,{ref:"spinner",role:p.datetimeRole||"start","arrow-control":n(F),"show-seconds":n(H),"am-pm-mode":n(_),"spinner-date":p.parsedValue,"disabled-hours":n($),"disabled-minutes":n(u),"disabled-seconds":n(M),onChange:h,onSetOption:n(te),onSelectRange:ne},null,8,["role","arrow-control","show-seconds","am-pm-mode","spinner-date","disabled-hours","disabled-minutes","disabled-seconds","onSetOption"])],2),Y("div",{class:ee(n(B).be("panel","footer"))},[Y("button",{type:"button",class:ee([n(B).be("panel","btn"),"cancel"]),onClick:W},ae(n(U)("el.datepicker.cancel")),3),Y("button",{type:"button",class:ee([n(B).be("panel","btn"),"confirm"]),onClick:w=>Z()},ae(n(U)("el.datepicker.confirm")),11,["onClick"])],2)],2)):we("v-if",!0)]),_:1},8,["name"]))}});var Da=xe(Ca,[["__file","panel-time-pick.vue"]]);const Pa=Ee({...xt,parsedValue:{type:pe(Array)}}),Va=Pe({__name:"panel-time-range",props:Pa,emits:["pick","select-range","set-picker-option"],setup(s,{emit:i}){const a=s,d=(g,E)=>{const j=[];for(let Q=g;Q<=E;Q++)j.push(Q);return j},{t:F,lang:$}=it(),u=Ce("time"),M=Ce("picker"),P=Je(Ge),{arrowControl:T,disabledHours:S,disabledMinutes:O,disabledSeconds:B,defaultValue:U}=P.props,V=J(()=>[u.be("range-picker","body"),u.be("panel","content"),u.is("arrow",T),k.value?"has-seconds":""]),I=J(()=>[u.be("range-picker","body"),u.be("panel","content"),u.is("arrow",T),k.value?"has-seconds":""]),l=J(()=>a.parsedValue[0]),C=J(()=>a.parsedValue[1]),H=jt(a),_=()=>{const g=H.value;i("pick",g,!1),Te(()=>{H.value=g})},k=J(()=>a.format.includes("ss")),W=J(()=>a.format.includes("A")?"A":a.format.includes("a")?"a":""),Z=(g=!1)=>{i("pick",[l.value,C.value],g)},h=g=>{q(g.millisecond(0),C.value)},ne=g=>{q(l.value,g.millisecond(0))},oe=g=>{const E=g.map(Q=>Se(Q).locale($.value)),j=R(E);return E[0].isSame(j[0])&&E[1].isSame(j[1])},q=(g,E)=>{a.visible&&i("pick",[g,E],!0)},A=J(()=>l.value>C.value),te=X([0,2]),le=(g,E)=>{i("select-range",g,E,"min"),te.value=[g,E]},b=J(()=>k.value?11:8),m=(g,E)=>{i("select-range",g,E,"max");const j=n(b);te.value=[g+j,E+j]},f=g=>{const E=k.value?[0,3,6,11,14,17]:[0,3,8,11],j=["hours","minutes"].concat(k.value?["seconds"]:[]),ie=(E.indexOf(te.value[0])+g+E.length)%E.length,ue=E.length/2;ie{const E=ut(g),{left:j,right:Q,up:ie,down:ue}=Ie;if([j,Q].includes(E)){f(E===j?-1:1),g.preventDefault();return}if([ie,ue].includes(E)){const de=E===ie?-1:1,he=te.value[0]{const j=S?S(g):[],Q=g==="start",ue=(E||(Q?C.value:l.value)).hour(),de=Q?d(ue+1,23):d(0,ue-1);return tt(j,de)},w=(g,E,j)=>{const Q=O?O(g,E):[],ie=E==="start",ue=j||(ie?C.value:l.value),de=ue.hour();if(g!==de)return Q;const he=ue.minute(),ke=ie?d(he+1,59):d(0,he-1);return tt(Q,ke)},D=(g,E,j,Q)=>{const ie=B?B(g,E,j):[],ue=j==="start",de=Q||(ue?C.value:l.value),he=de.hour(),ke=de.minute();if(g!==he||E!==ke)return ie;const ye=de.second(),Oe=ue?d(ye+1,59):d(0,ye-1);return tt(ie,Oe)},R=([g,E])=>[N(g,"start",!0,E),N(E,"end",!1,g)],{getAvailableHours:t,getAvailableMinutes:e,getAvailableSeconds:r}=Ut(c,w,D),{timePickerOptions:v,getAvailableTime:N,onSetOption:G}=Ht({getAvailableHours:t,getAvailableMinutes:e,getAvailableSeconds:r}),fe=g=>g?_e(g)?g.map(E=>Se(E,a.format).locale($.value)):Se(g,a.format).locale($.value):null,re=()=>{if(_e(U))return U.map(E=>Se(E).locale($.value));const g=Se(U).locale($.value);return[g,g.add(60,"m")]};return i("set-picker-option",["parseUserInput",fe]),i("set-picker-option",["isValidValue",oe]),i("set-picker-option",["handleKeydownInput",p]),i("set-picker-option",["getDefaultValue",re]),i("set-picker-option",["getRangeAvailableTime",R]),(g,E)=>g.actualVisible?(L(),se("div",{key:0,class:ee([n(u).b("range-picker"),n(M).b("panel")])},[Y("div",{class:ee(n(u).be("range-picker","content"))},[Y("div",{class:ee(n(u).be("range-picker","cell"))},[Y("div",{class:ee(n(u).be("range-picker","header"))},ae(n(F)("el.datepicker.startTime")),3),Y("div",{class:ee(n(V))},[z(rt,{ref:"minSpinner",role:"start","show-seconds":n(k),"am-pm-mode":n(W),"arrow-control":n(T),"spinner-date":n(l),"disabled-hours":c,"disabled-minutes":w,"disabled-seconds":D,onChange:h,onSetOption:n(G),onSelectRange:le},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2),Y("div",{class:ee(n(u).be("range-picker","cell"))},[Y("div",{class:ee(n(u).be("range-picker","header"))},ae(n(F)("el.datepicker.endTime")),3),Y("div",{class:ee(n(I))},[z(rt,{ref:"maxSpinner",role:"end","show-seconds":n(k),"am-pm-mode":n(W),"arrow-control":n(T),"spinner-date":n(C),"disabled-hours":c,"disabled-minutes":w,"disabled-seconds":D,onChange:ne,onSetOption:n(G),onSelectRange:m},null,8,["show-seconds","am-pm-mode","arrow-control","spinner-date","onSetOption"])],2)],2)],2),Y("div",{class:ee(n(u).be("panel","footer"))},[Y("button",{type:"button",class:ee([n(u).be("panel","btn"),"cancel"]),onClick:j=>_()},ae(n(F)("el.datepicker.cancel")),11,["onClick"]),Y("button",{type:"button",class:ee([n(u).be("panel","btn"),"confirm"]),disabled:n(A),onClick:j=>Z()},ae(n(F)("el.datepicker.confirm")),11,["disabled","onClick"])],2)],2)):we("v-if",!0)}});var Ia=xe(Va,[["__file","panel-time-range.vue"]]);Se.extend(da);var Ta=Pe({name:"ElTimePicker",install:null,props:{...Bt,isRange:Boolean},emits:[qe],setup(s,i){const a=X(),[d,F]=s.isRange?["timerange",Ia]:["time",Da],$=u=>i.emit(qe,u);return lt(Lt,s.popperOptions),i.expose({focus:()=>{var u;(u=a.value)==null||u.focus()},blur:()=>{var u;(u=a.value)==null||u.blur()},handleOpen:()=>{var u;(u=a.value)==null||u.handleOpen()},handleClose:()=>{var u;(u=a.value)==null||u.handleClose()}}),()=>{var u;const M=(u=s.format)!=null?u:Ft;return z(wa,Ze(s,{ref:a,type:d,format:M,"onUpdate:modelValue":$}),{default:P=>z(F,P,null)})}}});const Ea=hn(Ta);async function Oa(s={}){const{data:i}=await De.get("/schedules",{params:s});return i}async function Aa(s){const{data:i}=await De.post("/schedules",s);return i}async function Ra(s,i){const{data:a}=await De.put(`/schedules/${s}`,i);return a}async function La(s){const{data:i}=await De.delete(`/schedules/${s}`);return i}async function Fa(s,i){const{data:a}=await De.post(`/schedules/${s}/toggle`,i);return a}async function Na(s){const{data:i}=await De.post(`/schedules/${s}/run`,{});return i}async function xa(s,i={}){const{data:a}=await De.get(`/schedules/${s}/logs`,{params:i});return a}async function Ba(s){const{data:i}=await De.delete(`/schedules/${s}/logs`);return i}const Ha={class:"page"},Ya={class:"vip-actions"},Ua={class:"panel-head"},ja={class:"panel-actions"},za={key:1,class:"grid"},Ka={class:"schedule-top"},qa={class:"schedule-main"},Wa={class:"schedule-title"},Za={class:"schedule-name"},Ja={class:"schedule-meta app-muted"},Ga={class:"schedule-meta app-muted"},Qa={key:0},Xa={class:"schedule-switch"},es={class:"schedule-actions"},ts={key:2,class:"pagination"},ns={class:"page-hint app-muted"},as={class:"switch-row"},ss={key:1,class:"logs"},os={class:"log-head"},ls={class:"app-muted"},rs={class:"log-body"},is={key:0,class:"log-error"},Fe=12,us={__name:"SchedulesPage",setup(s){const i=Tn(),a=X(!1),d=X([]),F=X(1),$=X(0),u=X(!1),M=X([]),P=X(!1),T=X(!1),S=X(null),O=X(!1),B=X(!1),U=X([]),V=X(null),I=X(!1),l=Et({name:"",schedule_time:"08:00",weekdays:["1","2","3","4","5"],browse_type:"应读",enable_screenshot:!0,random_delay:!1,account_ids:[]}),C=[{label:"应读",value:"应读"},{label:"注册前未读",value:"注册前未读"}];function H(t){return String(t)==="注册前未读"?"注册前未读":"应读"}const _=[{label:"周一",value:"1"},{label:"周二",value:"2"},{label:"周三",value:"3"},{label:"周四",value:"4"},{label:"周五",value:"5"},{label:"周六",value:"6"},{label:"周日",value:"7"}],k=J(()=>i.isVip),W=J(()=>Math.max(1,Math.ceil(($.value||0)/Fe)));function Z(t){const e=String(t||"").match(/^(\d{1,2}):(\d{2})$/);if(!e)return null;const r=Number(e[1]),v=Number(e[2]);return Number.isNaN(r)||Number.isNaN(v)||r<0||r>23||v<0||v>59?null:`${String(r).padStart(2,"0")}:${String(v).padStart(2,"0")}`}function h(t){const e=Array.isArray(t)?t:String(t||"").split(",").filter(Boolean),r=Object.fromEntries(_.map(v=>[v.value,v.label]));return e.map(v=>r[String(v)]||String(v)).join(" ")}async function ne(){u.value=!0;try{const t=await Rn({refresh:!1});M.value=(t||[]).map(e=>({label:e.username,value:e.id}))}catch{M.value=[]}finally{u.value=!1}}async function oe(){F.value>1&&d.value.length<=1&&(F.value-=1),await A()}async function q(t){F.value=t,await A()}async function A(){a.value=!0;try{const t={limit:Fe,offset:(F.value-1)*Fe},e=await Oa(t),r=Array.isArray(e)?e:Array.isArray(e?.items)?e.items:[],v=Array.isArray(e)?r.length:Number(e?.total??r.length);d.value=r.map(N=>({...N,browse_type:H(N?.browse_type)})),$.value=Number.isFinite(v)?Math.max(0,v):r.length}catch(t){t?.response?.status===401&&(window.location.href="/login"),d.value=[],$.value=0}finally{a.value=!1}}function te(){S.value=null,l.name="",l.schedule_time="08:00",l.weekdays=["1","2","3","4","5"],l.browse_type="应读",l.enable_screenshot=!0,l.random_delay=!1,l.account_ids=[],P.value=!0}function le(t){S.value=t.id,l.name=t.name||"",l.schedule_time=Z(t.schedule_time)||"08:00",l.weekdays=String(t.weekdays||"").split(",").filter(Boolean).map(e=>String(e)),l.weekdays.length===0&&(l.weekdays=["1","2","3","4","5"]),l.browse_type=H(t.browse_type),l.enable_screenshot=Number(t.enable_screenshot??1)!==0,l.random_delay=Number(t.random_delay??0)!==0,l.account_ids=Array.isArray(t.account_ids)?t.account_ids.slice():[],P.value=!0}async function b(){if(!k.value){I.value=!0;return}const t=Z(l.schedule_time);if(!t){ge.error("时间格式错误,请使用 HH:MM");return}if(!l.weekdays||l.weekdays.length===0){ge.warning("请选择至少一个执行日期");return}T.value=!0;try{const e={name:l.name.trim()||"我的定时任务",schedule_time:t,weekdays:l.weekdays.join(","),browse_type:l.browse_type,enable_screenshot:l.enable_screenshot?1:0,random_delay:l.random_delay?1:0,account_ids:l.account_ids};S.value?(await Ra(S.value,e),ge.success("保存成功")):(await Aa(e),ge.success("创建成功"),F.value=1),P.value=!1,await A()}catch(e){const r=e?.response?.data;ge.error(r?.error||"保存失败")}finally{T.value=!1}}async function m(t){try{await mt.confirm(`确定要删除定时任务「${t.name||"未命名任务"}」吗?`,"删除任务",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await La(t.id);e?.success?(ge.success("已删除"),await oe()):ge.error(e?.error||"删除失败")}catch(e){const r=e?.response?.data;ge.error(r?.error||"删除失败")}}async function f(t,e){if(!k.value){I.value=!0;return}try{(await Fa(t.id,{enabled:e}))?.success&&(t.enabled=e?1:0,ge.success(e?"已启用":"已禁用"))}catch{ge.error("操作失败")}}async function p(t){if(!k.value){I.value=!0;return}try{const e=await Na(t.id);e?.success?ge.success(e?.message||"已开始执行"):ge.error(e?.error||"执行失败")}catch(e){const r=e?.response?.data;ge.error(r?.error||"执行失败")}}async function c(t){V.value=t,O.value=!0,B.value=!0;try{U.value=await xa(t.id,{limit:20})}catch{U.value=[]}finally{B.value=!1}}async function w(){const t=V.value;if(t){try{await mt.confirm("确定要清空该任务的所有执行日志吗?","清空日志",{confirmButtonText:"清空",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await Ba(t.id);e?.success?(ge.success(`已清空 ${e?.deleted||0} 条日志`),U.value=[]):ge.error(e?.error||"操作失败")}catch{ge.error("操作失败")}}}function D(t){const e=String(t||"");return e==="success"||e==="completed"?"success":e==="failed"?"danger":"info"}function R(t){const e=Number(t||0),r=Math.floor(e/60),v=e%60;return r<=0?`${v} 秒`:`${r} 分 ${v} 秒`}return Ot(async()=>{i.vipInfo||i.refreshVipInfo().catch(()=>{window.location.href="/login"}),await Promise.all([ne(),A()])}),(t,e)=>{const r=gn,v=Mn,N=_n,G=Sn,fe=En,re=Yn,g=Hn,E=Tt,j=Dn,Q=Ea,ie=An,ue=On,de=In,he=Vn,ke=Cn,ye=kn,Oe=$n;return L(),se("div",Ha,[k.value?we("",!0):(L(),ce(v,{key:0,type:"warning","show-icon":"",closable:!1,title:"定时任务为 VIP 专属功能,升级后可使用。",class:"vip-alert"},{default:x(()=>[Y("div",Ya,[z(r,{type:"primary",plain:"",onClick:e[0]||(e[0]=y=>I.value=!0)},{default:x(()=>[...e[15]||(e[15]=[ve("了解VIP特权",-1)])]),_:1})])]),_:1})),z(re,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:x(()=>[Y("div",Ua,[e[18]||(e[18]=Y("div",{class:"panel-title"},"定时任务",-1)),Y("div",ja,[z(r,{loading:a.value,onClick:A},{default:x(()=>[...e[16]||(e[16]=[ve("刷新",-1)])]),_:1},8,["loading"]),z(r,{type:"primary",disabled:!k.value,onClick:te},{default:x(()=>[...e[17]||(e[17]=[ve("新建任务",-1)])]),_:1},8,["disabled"])])]),a.value?(L(),ce(N,{key:0,rows:6,animated:""})):(L(),se(be,{key:1},[d.value.length===0?(L(),ce(G,{key:0,description:"暂无定时任务"})):(L(),se("div",za,[(L(!0),se(be,null,Me(d.value,y=>(L(),ce(re,{key:y.id,shadow:"never",class:"schedule-card","body-style":{padding:"14px"}},{default:x(()=>[Y("div",Ka,[Y("div",qa,[Y("div",Wa,[Y("span",Za,ae(y.name||"未命名任务"),1)]),Y("div",Ja,[Y("span",null,"⏰ "+ae(Z(y.schedule_time)||y.schedule_time),1),Y("span",null,"📅 "+ae(h(y.weekdays)),1)]),Y("div",Ga,[Y("span",null,"📋 "+ae(y.browse_type||"应读"),1),Y("span",null,"👥 "+ae((y.account_ids||[]).length)+" 个账号",1),Y("span",null,ae(Number(y.enable_screenshot??1)!==0?"📸 截图":"📷 不截图"),1),Number(y.random_delay??0)!==0?(L(),se("span",Qa,"🎲 随机±15分钟")):we("",!0)])]),Y("div",Xa,[z(fe,{"model-value":!!Number(y.enabled),disabled:!k.value,"inline-prompt":"","active-text":"启用","inactive-text":"停用",onChange:Ve=>f(y,Ve)},null,8,["model-value","disabled","onChange"])])]),Y("div",es,[z(r,{size:"small",type:"primary",disabled:!k.value,onClick:Ve=>p(y)},{default:x(()=>[...e[19]||(e[19]=[ve("立即执行",-1)])]),_:1},8,["disabled","onClick"]),z(r,{size:"small",onClick:Ve=>c(y)},{default:x(()=>[...e[20]||(e[20]=[ve("日志",-1)])]),_:1},8,["onClick"]),z(r,{size:"small",disabled:!k.value,onClick:Ve=>le(y)},{default:x(()=>[...e[21]||(e[21]=[ve("编辑",-1)])]),_:1},8,["disabled","onClick"]),z(r,{size:"small",type:"danger",text:"",disabled:!k.value,onClick:Ve=>m(y)},{default:x(()=>[...e[22]||(e[22]=[ve("删除",-1)])]),_:1},8,["disabled","onClick"])])]),_:2},1024))),128))])),$.value>Fe?(L(),se("div",ts,[z(g,{"current-page":F.value,"onUpdate:currentPage":e[1]||(e[1]=y=>F.value=y),"page-size":Fe,total:$.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:q},null,8,["current-page","total"]),Y("div",ns,"第 "+ae(F.value)+" / "+ae(W.value)+" 页",1)])):we("",!0)],64))]),_:1}),z(ye,{modelValue:P.value,"onUpdate:modelValue":e[10]||(e[10]=y=>P.value=y),title:S.value?"编辑定时任务":"新建定时任务",width:"min(720px, 92vw)"},{footer:x(()=>[z(r,{onClick:e[9]||(e[9]=y=>P.value=!1)},{default:x(()=>[...e[23]||(e[23]=[ve("取消",-1)])]),_:1}),z(r,{type:"primary",loading:T.value,disabled:!k.value,onClick:b},{default:x(()=>[...e[24]||(e[24]=[ve("保存",-1)])]),_:1},8,["loading","disabled"])]),default:x(()=>[z(ke,{"label-position":"top"},{default:x(()=>[z(j,{label:"任务名称"},{default:x(()=>[z(E,{modelValue:l.name,"onUpdate:modelValue":e[2]||(e[2]=y=>l.name=y),placeholder:"我的定时任务",disabled:!k.value},null,8,["modelValue","disabled"])]),_:1}),z(j,{label:"执行时间(HH:MM)"},{default:x(()=>[z(Q,{modelValue:l.schedule_time,"onUpdate:modelValue":e[3]||(e[3]=y=>l.schedule_time=y),placeholder:"选择时间",format:"HH:mm","value-format":"HH:mm",style:{width:"180px"},disabled:!k.value},null,8,["modelValue","disabled"])]),_:1}),z(j,{label:"执行日期"},{default:x(()=>[z(ue,{modelValue:l.weekdays,"onUpdate:modelValue":e[4]||(e[4]=y=>l.weekdays=y),disabled:!k.value},{default:x(()=>[(L(),se(be,null,Me(_,y=>z(ie,{key:y.value,label:y.value},{default:x(()=>[ve(ae(y.label),1)]),_:2},1032,["label"])),64))]),_:1},8,["modelValue","disabled"])]),_:1}),z(j,{label:"浏览类型"},{default:x(()=>[z(he,{modelValue:l.browse_type,"onUpdate:modelValue":e[5]||(e[5]=y=>l.browse_type=y),style:{width:"160px"},disabled:!k.value},{default:x(()=>[(L(),se(be,null,Me(C,y=>z(de,{key:y.value,label:y.label,value:y.value},null,8,["label","value"])),64))]),_:1},8,["modelValue","disabled"])]),_:1}),z(j,{label:"截图"},{default:x(()=>[Y("div",as,[z(fe,{modelValue:l.enable_screenshot,"onUpdate:modelValue":e[6]||(e[6]=y=>l.enable_screenshot=y),disabled:!k.value,"inline-prompt":"","active-text":"截图","inactive-text":"不截图"},null,8,["modelValue","disabled"]),z(fe,{modelValue:l.random_delay,"onUpdate:modelValue":e[7]||(e[7]=y=>l.random_delay=y),disabled:!k.value,"inline-prompt":"","active-text":"随机±15分钟","inactive-text":"固定时间"},null,8,["modelValue","disabled"])])]),_:1}),z(j,{label:"参与账号"},{default:x(()=>[z(he,{modelValue:l.account_ids,"onUpdate:modelValue":e[8]||(e[8]=y=>l.account_ids=y),multiple:"",filterable:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择账号(可多选)",style:{width:"100%"},loading:u.value,disabled:!k.value},{default:x(()=>[(L(!0),se(be,null,Me(M.value,y=>(L(),ce(de,{key:y.value,label:y.label,value:y.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),z(ye,{modelValue:O.value,"onUpdate:modelValue":e[12]||(e[12]=y=>O.value=y),title:V.value?`【${V.value.name||"未命名任务"}】执行日志`:"执行日志",width:"min(760px, 92vw)"},{footer:x(()=>[z(r,{onClick:e[11]||(e[11]=y=>O.value=!1)},{default:x(()=>[...e[25]||(e[25]=[ve("关闭",-1)])]),_:1}),z(r,{type:"danger",plain:"",disabled:U.value.length===0,onClick:w},{default:x(()=>[...e[26]||(e[26]=[ve("清空日志",-1)])]),_:1},8,["disabled"])]),default:x(()=>[B.value?(L(),ce(N,{key:0,rows:6,animated:""})):(L(),se(be,{key:1},[U.value.length===0?(L(),ce(G,{key:0,description:"暂无执行日志"})):(L(),se("div",ss,[(L(!0),se(be,null,Me(U.value,y=>(L(),ce(re,{key:y.id,shadow:"never",class:"log-card","body-style":{padding:"12px"}},{default:x(()=>[Y("div",os,[z(Oe,{size:"small",effect:"light",type:D(y.status)},{default:x(()=>[ve(ae(y.status==="failed"?"失败":y.status==="running"?"进行中":"成功"),1)]),_:2},1032,["type"]),Y("span",ls,ae(y.created_at||""),1)]),Y("div",rs,[Y("div",null,"账号数:"+ae(y.total_accounts||0)+" 个",1),Y("div",null,"成功:"+ae(y.success_count||0)+" 个 · 失败:"+ae(y.failed_count||0)+" 个",1),Y("div",null,"耗时:"+ae(R(y.duration||0)),1),y.error_message?(L(),se("div",is,"错误:"+ae(y.error_message),1)):we("",!0)])]),_:2},1024))),128))]))],64))]),_:1},8,["modelValue","title"]),z(ye,{modelValue:I.value,"onUpdate:modelValue":e[14]||(e[14]=y=>I.value=y),title:"VIP 特权",width:"min(560px, 92vw)"},{footer:x(()=>[z(r,{type:"primary",onClick:e[13]||(e[13]=y=>I.value=!1)},{default:x(()=>[...e[27]||(e[27]=[ve("我知道了",-1)])]),_:1})]),default:x(()=>[z(v,{type:"info",closable:!1,title:"升级 VIP 后可解锁:无限账号、优先排队、定时任务、批量操作。","show-icon":""}),e[28]||(e[28]=Y("div",{class:"vip-body"},[Y("div",{class:"vip-tip app-muted"},"升级方式:请通过“反馈”联系管理员开通。")],-1))]),_:1},8,["modelValue"])])}}},Ss=Un(us,[["__scopeId","data-v-ee274c7a"]]);export{Ss as default}; diff --git a/static/app/assets/ScreenshotsPage-30dzddw-.css b/static/app/assets/ScreenshotsPage-30dzddw-.css deleted file mode 100644 index a513623..0000000 --- a/static/app/assets/ScreenshotsPage-30dzddw-.css +++ /dev/null @@ -1 +0,0 @@ -.panel[data-v-07cdff63]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-07cdff63]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-07cdff63]{font-size:16px;font-weight:900}.panel-actions[data-v-07cdff63]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-07cdff63]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:start}.pagination[data-v-07cdff63]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.page-hint[data-v-07cdff63]{font-size:12px}.shot-card[data-v-07cdff63]{border-radius:14px;border:1px solid var(--app-border);overflow:hidden}.shot-img[data-v-07cdff63]{width:100%;aspect-ratio:16/9;object-fit:cover;cursor:pointer;display:block}.shot-body[data-v-07cdff63]{padding:12px}.shot-name[data-v-07cdff63]{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shot-meta[data-v-07cdff63]{margin-top:4px;font-size:12px}.shot-actions[data-v-07cdff63]{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.preview[data-v-07cdff63]{display:flex;justify-content:center}.preview-img[data-v-07cdff63]{max-width:100%;max-height:78vh;object-fit:contain;border-radius:10px;border:1px solid var(--app-border);background:#fff}@media(max-width:480px){.grid[data-v-07cdff63]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-07cdff63]{width:100%;justify-content:flex-end}} diff --git a/static/app/assets/ScreenshotsPage-7CRd3Hlo.js b/static/app/assets/ScreenshotsPage-7CRd3Hlo.js deleted file mode 100644 index 2ca3088..0000000 --- a/static/app/assets/ScreenshotsPage-7CRd3Hlo.js +++ /dev/null @@ -1 +0,0 @@ -import{E as G}from"./el-button-DWxIvzz-.js";import{n as J,o as K,m as Q,p as L}from"./el-overlay-C_JJBVfE.js";import{E as X}from"./el-pagination-BY1uI-wO.js";import"./el-select-B0VMg2td.js";import{p as P,a as s}from"./http-CdvgQxJu.js";import{E as Y}from"./el-card-DfVpO1U5.js";import{_ as Z}from"./style-CEbARg1o.js";import{g as f,h as ee,i as te,c as k,s as i,o as u,k as r,j as x,q as p,x as w,F as S,l as ae,a4 as ne,t as E}from"./vendor-vue-DxN60LNb.js";import"./vendor-axios-B9ygI19o.js";async function oe(m={}){const{data:l}=await P.get("/screenshots",{params:m});return l}async function re(m){const{data:l}=await P.delete(`/screenshots/${encodeURIComponent(m)}`);return l}async function se(){const{data:m}=await P.post("/screenshots/clear",{});return m}const ie={class:"panel-head"},le={class:"panel-actions"},ce={key:1,class:"grid"},de=["src","alt","onError","onClick"],ue={class:"shot-body"},pe=["title"],fe={class:"shot-meta app-muted"},me={class:"shot-actions"},ve={key:2,class:"pagination"},ge={class:"page-hint app-muted"},we={class:"preview"},ye=["src","alt"],_=24,he={__name:"ScreenshotsPage",setup(m){const l=f(!1),y=f([]),c=f(1),d=f(0),A=ee(()=>Math.max(1,Math.ceil((d.value||0)/_))),v=f(!1),B=f(""),T=f("");function b(t){return`/screenshots/${encodeURIComponent(t)}`}function R(t){return`/screenshots/thumb/${encodeURIComponent(t)}`}async function C(){l.value=!0;try{const t={limit:_,offset:(c.value-1)*_},e=await oe(t),a=Array.isArray(e)?e:Array.isArray(e?.items)?e.items:[],o=Array.isArray(e)?a.length:Number(e?.total??a.length);y.value=a,d.value=Number.isFinite(o)?Math.max(0,o):a.length}catch(t){t?.response?.status===401&&(window.location.href="/login"),y.value=[],d.value=0}finally{l.value=!1}}async function V(t){c.value=t,await C()}function z(t){T.value=t.display_name||t.filename||"截图预览",B.value=b(t.filename),v.value=!0}function M(t,e){const a=t?.target;a&&a.dataset.fullLoaded!=="1"&&(a.dataset.fullLoaded="1",a.src=b(e.filename))}function I(t){return new Promise((e,a)=>{t.toBlob(o=>o?e(o):a(new Error("toBlob_failed")),"image/png")})}async function N(t){if(!t)throw new Error("no_image");(!t.complete||t.naturalWidth<=0)&&(typeof t.decode=="function"?await t.decode():await new Promise((o,g)=>{t.addEventListener("load",o,{once:!0}),t.addEventListener("error",g,{once:!0})}));const e=document.createElement("canvas");e.width=t.naturalWidth,e.height=t.naturalHeight;const a=e.getContext("2d");if(!a)throw new Error("no_canvas");return a.drawImage(t,0,0),await I(e)}async function j(t){if(!t)throw new Error("no_blob");if(t.type==="image/png")return t;if(typeof createImageBitmap=="function"){const a=await createImageBitmap(t),o=document.createElement("canvas");o.width=a.width,o.height=a.height;const g=o.getContext("2d");if(!g)throw new Error("no_canvas");return g.drawImage(a,0,0),await I(o)}const e=URL.createObjectURL(t);try{const a=new Image;return a.src=e,typeof a.decode=="function"&&await a.decode(),await N(a)}finally{URL.revokeObjectURL(e)}}async function U(t){const e=await fetch(t,{credentials:"include",cache:"no-store"});if(!e.ok)throw new Error("fetch_failed");const a=await e.blob();if(!(e.headers.get("Content-Type")||a.type||"").startsWith("image/"))throw new Error("not_image");return await j(a)}async function D(){try{await L.confirm("确定要清空全部截图吗?","清空截图",{confirmButtonText:"清空",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await se();if(t?.success){s.success(`已清空(删除 ${t?.deleted||0} 张)`),y.value=[],d.value=0,c.value=1,v.value=!1;return}s.error(t?.error||"操作失败")}catch(t){const e=t?.response?.data;s.error(e?.error||"操作失败")}}async function F(t){try{await L.confirm(`确定要删除截图「${t.display_name||t.filename}」吗?`,"删除截图",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await re(t.filename);if(e?.success){B.value.includes(encodeURIComponent(t.filename))&&(v.value=!1),c.value>1&&y.value.length<=1&&(c.value-=1),await C(),s.success("已删除");return}s.error(e?.error||"删除失败")}catch(e){const a=e?.response?.data;s.error(a?.error||"删除失败")}}async function O(t){const e=b(t.filename);if(!navigator.clipboard||typeof navigator.clipboard.write!="function"||typeof window.ClipboardItem>"u"){s.warning("当前环境不支持复制图片(建议使用 Chrome/Edge 并通过 HTTPS 访问);可用“下载”。");return}try{try{await navigator.clipboard.write([new ClipboardItem({"image/png":U(e)})])}catch{const a=await U(e);await navigator.clipboard.write([new ClipboardItem({"image/png":a})])}s.success("图片已复制到剪贴板")}catch{try{if(navigator.clipboard&&typeof navigator.clipboard.writeText=="function"){await navigator.clipboard.writeText(`${window.location.origin}${e}`),s.warning("复制图片失败,已复制图片链接(可直接粘贴到浏览器打开)");return}}catch{}s.warning("复制图片失败:请确认允许剪贴板权限;可用“下载”。")}}function W(t){const e=document.createElement("a");e.href=b(t.filename),e.download=t.display_name||t.filename,document.body.appendChild(e),e.click(),e.remove()}return te(C),(t,e)=>{const a=G,o=J,g=K,$=Y,H=X,q=Q;return u(),k($,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:i(()=>[r("div",ie,[e[5]||(e[5]=r("div",{class:"panel-title"},"截图管理",-1)),r("div",le,[p(a,{loading:l.value,onClick:C},{default:i(()=>[...e[3]||(e[3]=[w("刷新",-1)])]),_:1},8,["loading"]),p(a,{type:"danger",plain:"",disabled:d.value===0,onClick:D},{default:i(()=>[...e[4]||(e[4]=[w("清空全部",-1)])]),_:1},8,["disabled"])])]),l.value?(u(),k(o,{key:0,rows:6,animated:""})):(u(),x(S,{key:1},[d.value===0?(u(),k(g,{key:0,description:"暂无截图"})):(u(),x("div",ce,[(u(!0),x(S,null,ne(y.value,n=>(u(),k($,{key:n.filename,shadow:"never",class:"shot-card","body-style":{padding:"0"}},{default:i(()=>[r("img",{class:"shot-img",src:R(n.filename),alt:n.display_name||n.filename,loading:"lazy",onError:h=>M(h,n),onClick:h=>z(n)},null,40,de),r("div",ue,[r("div",{class:"shot-name",title:n.display_name||n.filename},E(n.display_name||n.filename),9,pe),r("div",fe,E(n.created||""),1),r("div",me,[p(a,{size:"small",text:"",type:"primary",onClick:h=>O(n)},{default:i(()=>[...e[6]||(e[6]=[w("复制图片",-1)])]),_:1},8,["onClick"]),p(a,{size:"small",text:"",onClick:h=>W(n)},{default:i(()=>[...e[7]||(e[7]=[w("下载",-1)])]),_:1},8,["onClick"]),p(a,{size:"small",text:"",type:"danger",onClick:h=>F(n)},{default:i(()=>[...e[8]||(e[8]=[w("删除",-1)])]),_:1},8,["onClick"])])])]),_:2},1024))),128))])),d.value>_?(u(),x("div",ve,[p(H,{"current-page":c.value,"onUpdate:currentPage":e[0]||(e[0]=n=>c.value=n),"page-size":_,total:d.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:V},null,8,["current-page","total"]),r("div",ge,"第 "+E(c.value)+" / "+E(A.value)+" 页",1)])):ae("",!0)],64)),p(q,{modelValue:v.value,"onUpdate:modelValue":e[2]||(e[2]=n=>v.value=n),title:T.value,width:"min(920px, 94vw)"},{footer:i(()=>[p(a,{onClick:e[1]||(e[1]=n=>v.value=!1)},{default:i(()=>[...e[9]||(e[9]=[w("关闭",-1)])]),_:1})]),default:i(()=>[r("div",we,[r("img",{src:B.value,alt:T.value,class:"preview-img"},null,8,ye)])]),_:1},8,["modelValue","title"])]),_:1})}}},Ie=Z(he,[["__scopeId","data-v-07cdff63"]]);export{Ie as default}; diff --git a/static/app/assets/ScreenshotsPage-BhLfAzHf.css b/static/app/assets/ScreenshotsPage-BhLfAzHf.css new file mode 100644 index 0000000..8bfbdac --- /dev/null +++ b/static/app/assets/ScreenshotsPage-BhLfAzHf.css @@ -0,0 +1 @@ +.panel[data-v-4a5df754]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-4a5df754]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-4a5df754]{font-size:16px;font-weight:900}.panel-actions[data-v-4a5df754]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-4a5df754]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:start}.pagination[data-v-4a5df754]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.page-hint[data-v-4a5df754]{font-size:12px}.shot-card[data-v-4a5df754]{border-radius:14px;border:1px solid var(--app-border);overflow:hidden}.shot-img[data-v-4a5df754]{width:100%;aspect-ratio:16/9;object-fit:cover;cursor:pointer;display:block}.shot-body[data-v-4a5df754]{padding:12px}.shot-name[data-v-4a5df754]{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shot-meta[data-v-4a5df754]{margin-top:4px;font-size:12px}.shot-actions[data-v-4a5df754]{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.preview[data-v-4a5df754]{display:flex;justify-content:center}.preview-img[data-v-4a5df754]{max-width:100%;max-height:78vh;object-fit:contain;border-radius:10px;border:1px solid var(--app-border);background:#fff}@media(max-width:480px){.grid[data-v-4a5df754]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-4a5df754]{width:100%;justify-content:flex-end}} diff --git a/static/app/assets/ScreenshotsPage-F6GpvKGW.js b/static/app/assets/ScreenshotsPage-F6GpvKGW.js new file mode 100644 index 0000000..c065ac7 --- /dev/null +++ b/static/app/assets/ScreenshotsPage-F6GpvKGW.js @@ -0,0 +1 @@ +import"./base-xgxQQEpV.js";import{e as G}from"./el-overlay-hge8bsIn.js";import{E as J}from"./el-pagination-kVJ2XlAP.js";import{f as K,g as L}from"./el-empty-B4_NEFfq.js";import"./el-select-CBs1QjJm.js";import"./el-input-BaZNy9Kg.js";import{E as Q}from"./el-card-CfK866jr.js";import{E as X}from"./el-skeleton-item-CD5Idavp.js";import{E as Y}from"./el-button-LKkD3jQh.js";import{p as P,E as s}from"./http-BoPYlvwK.js";import{_ as Z}from"./style-CEbARg1o.js";import{g as f,h as ee,i as te,c as k,s as i,o as u,k as r,j as x,p,x as w,F as S,l as ae,a4 as ne,t as E}from"./vendor-vue-WbiK4TmU.js";import"./aria-DLpFpzDe.js";import"./index-CoYtSGUZ.js";import"./vendor-axios-B9ygI19o.js";async function oe(m={}){const{data:l}=await P.get("/screenshots",{params:m});return l}async function re(m){const{data:l}=await P.delete(`/screenshots/${encodeURIComponent(m)}`);return l}async function se(){const{data:m}=await P.post("/screenshots/clear",{});return m}const ie={class:"panel-head"},le={class:"panel-actions"},ce={key:1,class:"grid"},de=["src","alt","onError","onClick"],ue={class:"shot-body"},pe=["title"],fe={class:"shot-meta app-muted"},me={class:"shot-actions"},ve={key:2,class:"pagination"},ge={class:"page-hint app-muted"},we={class:"preview"},ye=["src","alt"],_=24,he={__name:"ScreenshotsPage",setup(m){const l=f(!1),y=f([]),c=f(1),d=f(0),A=ee(()=>Math.max(1,Math.ceil((d.value||0)/_))),v=f(!1),B=f(""),T=f("");function b(t){return`/screenshots/${encodeURIComponent(t)}`}function R(t){return`/screenshots/thumb/${encodeURIComponent(t)}`}async function C(){l.value=!0;try{const t={limit:_,offset:(c.value-1)*_},e=await oe(t),a=Array.isArray(e)?e:Array.isArray(e?.items)?e.items:[],o=Array.isArray(e)?a.length:Number(e?.total??a.length);y.value=a,d.value=Number.isFinite(o)?Math.max(0,o):a.length}catch(t){t?.response?.status===401&&(window.location.href="/login"),y.value=[],d.value=0}finally{l.value=!1}}async function V(t){c.value=t,await C()}function z(t){T.value=t.display_name||t.filename||"截图预览",B.value=b(t.filename),v.value=!0}function M(t,e){const a=t?.target;a&&a.dataset.fullLoaded!=="1"&&(a.dataset.fullLoaded="1",a.src=b(e.filename))}function I(t){return new Promise((e,a)=>{t.toBlob(o=>o?e(o):a(new Error("toBlob_failed")),"image/png")})}async function N(t){if(!t)throw new Error("no_image");(!t.complete||t.naturalWidth<=0)&&(typeof t.decode=="function"?await t.decode():await new Promise((o,g)=>{t.addEventListener("load",o,{once:!0}),t.addEventListener("error",g,{once:!0})}));const e=document.createElement("canvas");e.width=t.naturalWidth,e.height=t.naturalHeight;const a=e.getContext("2d");if(!a)throw new Error("no_canvas");return a.drawImage(t,0,0),await I(e)}async function j(t){if(!t)throw new Error("no_blob");if(t.type==="image/png")return t;if(typeof createImageBitmap=="function"){const a=await createImageBitmap(t),o=document.createElement("canvas");o.width=a.width,o.height=a.height;const g=o.getContext("2d");if(!g)throw new Error("no_canvas");return g.drawImage(a,0,0),await I(o)}const e=URL.createObjectURL(t);try{const a=new Image;return a.src=e,typeof a.decode=="function"&&await a.decode(),await N(a)}finally{URL.revokeObjectURL(e)}}async function U(t){const e=await fetch(t,{credentials:"include",cache:"no-store"});if(!e.ok)throw new Error("fetch_failed");const a=await e.blob();if(!(e.headers.get("Content-Type")||a.type||"").startsWith("image/"))throw new Error("not_image");return await j(a)}async function D(){try{await L.confirm("确定要清空全部截图吗?","清空截图",{confirmButtonText:"清空",cancelButtonText:"取消",type:"warning"})}catch{return}try{const t=await se();if(t?.success){s.success(`已清空(删除 ${t?.deleted||0} 张)`),y.value=[],d.value=0,c.value=1,v.value=!1;return}s.error(t?.error||"操作失败")}catch(t){const e=t?.response?.data;s.error(e?.error||"操作失败")}}async function F(t){try{await L.confirm(`确定要删除截图「${t.display_name||t.filename}」吗?`,"删除截图",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await re(t.filename);if(e?.success){B.value.includes(encodeURIComponent(t.filename))&&(v.value=!1),c.value>1&&y.value.length<=1&&(c.value-=1),await C(),s.success("已删除");return}s.error(e?.error||"删除失败")}catch(e){const a=e?.response?.data;s.error(a?.error||"删除失败")}}async function O(t){const e=b(t.filename);if(!navigator.clipboard||typeof navigator.clipboard.write!="function"||typeof window.ClipboardItem>"u"){s.warning("当前环境不支持复制图片(建议使用 Chrome/Edge 并通过 HTTPS 访问);可用“下载”。");return}try{try{await navigator.clipboard.write([new ClipboardItem({"image/png":U(e)})])}catch{const a=await U(e);await navigator.clipboard.write([new ClipboardItem({"image/png":a})])}s.success("图片已复制到剪贴板")}catch{try{if(navigator.clipboard&&typeof navigator.clipboard.writeText=="function"){await navigator.clipboard.writeText(`${window.location.origin}${e}`),s.warning("复制图片失败,已复制图片链接(可直接粘贴到浏览器打开)");return}}catch{}s.warning("复制图片失败:请确认允许剪贴板权限;可用“下载”。")}}function W(t){const e=document.createElement("a");e.href=b(t.filename),e.download=t.display_name||t.filename,document.body.appendChild(e),e.click(),e.remove()}return te(C),(t,e)=>{const a=Y,o=X,g=K,$=Q,H=J,q=G;return u(),k($,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:i(()=>[r("div",ie,[e[5]||(e[5]=r("div",{class:"panel-title"},"截图管理",-1)),r("div",le,[p(a,{loading:l.value,onClick:C},{default:i(()=>[...e[3]||(e[3]=[w("刷新",-1)])]),_:1},8,["loading"]),p(a,{type:"danger",plain:"",disabled:d.value===0,onClick:D},{default:i(()=>[...e[4]||(e[4]=[w("清空全部",-1)])]),_:1},8,["disabled"])])]),l.value?(u(),k(o,{key:0,rows:6,animated:""})):(u(),x(S,{key:1},[d.value===0?(u(),k(g,{key:0,description:"暂无截图"})):(u(),x("div",ce,[(u(!0),x(S,null,ne(y.value,n=>(u(),k($,{key:n.filename,shadow:"never",class:"shot-card","body-style":{padding:"0"}},{default:i(()=>[r("img",{class:"shot-img",src:R(n.filename),alt:n.display_name||n.filename,loading:"lazy",onError:h=>M(h,n),onClick:h=>z(n)},null,40,de),r("div",ue,[r("div",{class:"shot-name",title:n.display_name||n.filename},E(n.display_name||n.filename),9,pe),r("div",fe,E(n.created||""),1),r("div",me,[p(a,{size:"small",text:"",type:"primary",onClick:h=>O(n)},{default:i(()=>[...e[6]||(e[6]=[w("复制图片",-1)])]),_:1},8,["onClick"]),p(a,{size:"small",text:"",onClick:h=>W(n)},{default:i(()=>[...e[7]||(e[7]=[w("下载",-1)])]),_:1},8,["onClick"]),p(a,{size:"small",text:"",type:"danger",onClick:h=>F(n)},{default:i(()=>[...e[8]||(e[8]=[w("删除",-1)])]),_:1},8,["onClick"])])])]),_:2},1024))),128))])),d.value>_?(u(),x("div",ve,[p(H,{"current-page":c.value,"onUpdate:currentPage":e[0]||(e[0]=n=>c.value=n),"page-size":_,total:d.value,layout:"prev, pager, next, jumper, ->, total",onCurrentChange:V},null,8,["current-page","total"]),r("div",ge,"第 "+E(c.value)+" / "+E(A.value)+" 页",1)])):ae("",!0)],64)),p(q,{modelValue:v.value,"onUpdate:modelValue":e[2]||(e[2]=n=>v.value=n),title:T.value,width:"min(920px, 94vw)"},{footer:i(()=>[p(a,{onClick:e[1]||(e[1]=n=>v.value=!1)},{default:i(()=>[...e[9]||(e[9]=[w("关闭",-1)])]),_:1})]),default:i(()=>[r("div",we,[r("img",{src:B.value,alt:T.value,class:"preview-img"},null,8,ye)])]),_:1},8,["modelValue","title"])]),_:1})}}},Re=Z(he,[["__scopeId","data-v-4a5df754"]]);export{Re as default}; diff --git a/static/app/assets/SocialBindCallbackPage-BZgzv_7a.css b/static/app/assets/SocialBindCallbackPage-BZgzv_7a.css new file mode 100644 index 0000000..a2b2a4e --- /dev/null +++ b/static/app/assets/SocialBindCallbackPage-BZgzv_7a.css @@ -0,0 +1 @@ +.callback-wrap[data-v-2c9ef71e]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.callback-card[data-v-2c9ef71e]{width:min(420px,94vw);border-radius:var(--app-radius);border:1px solid var(--app-border)}.callback-text[data-v-2c9ef71e]{margin-top:12px;color:var(--app-muted);font-size:13px;text-align:center} diff --git a/static/app/assets/SocialBindCallbackPage-DraQ_mks.js b/static/app/assets/SocialBindCallbackPage-DraQ_mks.js new file mode 100644 index 0000000..831bdd7 --- /dev/null +++ b/static/app/assets/SocialBindCallbackPage-DraQ_mks.js @@ -0,0 +1 @@ +import"./base-xgxQQEpV.js";import{E as l}from"./el-card-CfK866jr.js";import{E as p}from"./el-skeleton-item-CD5Idavp.js";import{g as d,i as _,u as m,j as u,p as i,s as f,o as g,k,t as b}from"./vendor-vue-WbiK4TmU.js";import{s as w}from"./auth-B5cl_nsV.js";import{b as h}from"./settings-Db4PmPGC.js";import{_ as S}from"./style-CEbARg1o.js";import{E as t}from"./http-BoPYlvwK.js";import"./vendor-axios-B9ygI19o.js";const v={class:"callback-wrap"},y={class:"callback-text"},E="zsglpt_social_settings_bind_token",x={__name:"SocialBindCallbackPage",setup(B){const a=m(),c=d("正在完成绑定");return _(async()=>{const o=new URLSearchParams(window.location.search||""),n=String(o.get("provider")||o.get("type")||"").trim(),s=String(o.get("code")||"").trim();if(!n||!s){t.error("快捷登录回调参数不完整"),a.replace("/app/accounts");return}try{const e=await w({provider:n,code:s,mode:"bind"});if(e?.success&&e?.bound){t.success("快捷登录已绑定"),a.replace("/app/accounts");return}if(!e?.bind_token){t.warning("未获取到绑定凭证"),a.replace("/app/accounts");return}try{await h({bind_token:e.bind_token}),t.success("快捷登录已绑定")}catch(r){if(r?.response?.status===401){window.sessionStorage.setItem(E,e.bind_token),t.info("请先登录后完成绑定"),a.replace("/login");return}throw r}a.replace("/app/accounts")}catch(e){const r=e?.response?.data;c.value=r?.error||"快捷登录绑定失败",t.error(c.value),a.replace("/app/accounts")}}),(o,n)=>{const s=p,e=l;return g(),u("div",v,[i(e,{shadow:"never",class:"callback-card"},{default:f(()=>[i(s,{rows:3,animated:""}),k("div",y,b(c.value),1)]),_:1})])}}},D=S(x,[["__scopeId","data-v-2c9ef71e"]]);export{D as default}; diff --git a/static/app/assets/SocialLoginButtons-BlVSr6Mm.js b/static/app/assets/SocialLoginButtons-BlVSr6Mm.js new file mode 100644 index 0000000..bc452e8 --- /dev/null +++ b/static/app/assets/SocialLoginButtons-BlVSr6Mm.js @@ -0,0 +1 @@ +import"./base-xgxQQEpV.js";import{e as ee}from"./el-overlay-hge8bsIn.js";import{A as G,G as p,h as y,g as T,i as te,Y as re,F as $,z as ae,j as U,l as Y,p as ne,a4 as oe,s as ie,n as K,o as D,k,t as q,c as ue}from"./vendor-vue-WbiK4TmU.js";import{b as le,d as se}from"./auth-B5cl_nsV.js";import{_ as ce}from"./style-CEbARg1o.js";import{E as H}from"./http-BoPYlvwK.js";var A=function(){return A=Object.assign||function(v){for(var f,l=1,s=arguments.length;la.MAX_VERSION)throw new RangeError("Version value out of range");if(n<-1||n>7)throw new RangeError("Mask value out of range");this.size=e*4+17;for(var i=[],u=0;u7)throw new RangeError("Invalid value");var d,E;for(d=r;;d++){var M=a.getNumDataCodewords(d,t)*8,R=c.getTotalBits(e,d);if(R<=M){E=R;break}if(d>=n)throw new RangeError("Data too long")}for(var w=0,S=[a.Ecc.MEDIUM,a.Ecc.QUARTILE,a.Ecc.HIGH];w>>3]|=Q<<7-(O&7)}),new a(d,t,L,i)},a.prototype.getModule=function(e,t){return 0<=e&&e>>9)*1335;var i=(t<<10|r)^21522;s(i>>>15==0);for(var n=0;n<=5;n++)this.setFunctionModule(8,n,l(i,n));this.setFunctionModule(8,7,l(i,6)),this.setFunctionModule(8,8,l(i,7)),this.setFunctionModule(7,8,l(i,8));for(var n=9;n<15;n++)this.setFunctionModule(14-n,8,l(i,n));for(var n=0;n<8;n++)this.setFunctionModule(this.size-1-n,8,l(i,n));for(var n=8;n<15;n++)this.setFunctionModule(8,this.size-15+n,l(i,n));this.setFunctionModule(8,this.size-8,!0)},a.prototype.drawVersion=function(){if(!(this.version<7)){for(var e=this.version,t=0;t<12;t++)e=e<<1^(e>>>11)*7973;var r=this.version<<12|e;s(r>>>18==0);for(var t=0;t<18;t++){var n=l(r,t),i=this.size-11+t%3,u=Math.floor(t/3);this.setFunctionModule(i,u,n),this.setFunctionModule(u,i,n)}}},a.prototype.drawFinderPattern=function(e,t){for(var r=-4;r<=4;r++)for(var n=-4;n<=4;n++){var i=Math.max(Math.abs(n),Math.abs(r)),u=e+n,d=t+r;0<=u&&u=d)&&g.push(I[P])})},w=0;w=1;r-=2){r==6&&(r=5);for(var n=0;n>>3],7-(t&7)),t++)}}s(t==e.length*8)},a.prototype.applyMask=function(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(var t=0;t5&&e++):(this.finderPenaltyAddHistory(n,i),r||(e+=this.finderPenaltyCountPatterns(i)*a.PENALTY_N3),r=this.modules[t][u],n=1);e+=this.finderPenaltyTerminateAndCount(r,n,i)*a.PENALTY_N3}for(var u=0;u5&&e++):(this.finderPenaltyAddHistory(d,i),r||(e+=this.finderPenaltyCountPatterns(i)*a.PENALTY_N3),r=this.modules[t][u],d=1);e+=this.finderPenaltyTerminateAndCount(r,d,i)*a.PENALTY_N3}for(var t=0;ta.MAX_VERSION)throw new RangeError("Version number out of range");var t=(16*e+128)*e+64;if(e>=2){var r=Math.floor(e/7)+2;t-=(25*r-10)*r-55,e>=7&&(t-=36)}return s(208<=t&&t<=29648),t},a.getNumDataCodewords=function(e,t){return Math.floor(a.getNumRawDataModules(e)/8)-a.ECC_CODEWORDS_PER_BLOCK[t.ordinal][e]*a.NUM_ERROR_CORRECTION_BLOCKS[t.ordinal][e]},a.reedSolomonComputeDivisor=function(e){if(e<1||e>255)throw new RangeError("Degree out of range");for(var t=[],r=0;r>>8||t>>>8)throw new RangeError("Byte out of range");for(var r=0,n=7;n>=0;n--)r=r<<1^(r>>>7)*285,r^=(t>>>n&1)*e;return s(r>>>8==0),r},a.prototype.finderPenaltyCountPatterns=function(e){var t=e[1];s(t<=this.size*3);var r=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(r&&e[0]>=t*4&&e[6]>=t?1:0)+(r&&e[6]>=t*4&&e[0]>=t?1:0)},a.prototype.finderPenaltyTerminateAndCount=function(e,t,r){return e&&(this.finderPenaltyAddHistory(t,r),t=0),t+=this.size,this.finderPenaltyAddHistory(t,r),this.finderPenaltyCountPatterns(r)},a.prototype.finderPenaltyAddHistory=function(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)},a.MIN_VERSION=1,a.MAX_VERSION=40,a.PENALTY_N1=3,a.PENALTY_N2=3,a.PENALTY_N3=40,a.PENALTY_N4=10,a.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],a.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],a})();o.QrCode=v;function f(a,e,t){if(e<0||e>31||a>>>e)throw new RangeError("Value out of range");for(var r=e-1;r>=0;r--)t.push(a>>>r&1)}function l(a,e){return(a>>>e&1)!=0}function s(a){if(!a)throw new Error("Assertion error")}var c=(function(){function a(e,t,r){if(this.mode=e,this.numChars=t,this.bitData=r,t<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}return a.makeBytes=function(e){for(var t=[],r=0,n=e;r=1<0?o[v-1][f]:!1,s=v0?o[v][f-1]:!1,a=f>>0}),f=y(function(){var e=J(o.level)?o.level:W;return B.QrCode.encodeText(o.value,Z[e]).getModules()}),l=y(function(){return f.value.length+v.value*2}),s=y(function(){return o.radius>0?Ce(f.value,v.value,o.radius):we(f.value,v.value)}),c=y(function(){if(!o.imageSettings.src)return null;var e=Me(f.value,o.size,v.value,o.imageSettings);return{x:e.x+v.value,y:e.y+v.value,width:e.w,height:e.h,borderRadius:e.borderRadius}}),a=y(function(){if(!o.imageSettings.excavate||!c.value)return null;var e=ge/(o.size/l.value);return{x:c.value.x-e,y:c.value.y-e,width:c.value.width+e*2,height:c.value.height+e*2,borderRadius:c.value.borderRadius}});return{margin:v,numCells:l,cells:f,fgPath:s,imageProps:c,imageBorderProps:a}}var V={value:{type:String,required:!0,default:""},size:{type:Number,default:ve},level:{type:String,default:W,validator:function(o){return J(o)}},background:{type:String,default:"#fff"},foreground:{type:String,default:"#000"},margin:{type:Number,required:!1,default:X},imageSettings:{type:Object,required:!1,default:function(){return{}}},gradient:{type:Boolean,required:!1,default:!1},gradientType:{type:String,required:!1,default:"linear",validator:function(o){return["linear","radial"].indexOf(o)>-1}},gradientStartColor:{type:String,required:!1,default:"#000"},gradientEndColor:{type:String,required:!1,default:"#fff"},radius:{type:Number,required:!1,default:0,validator:function(o){return!isNaN(o)&&o>=0&&o<=.5}},id:{type:String,required:!1}},Re=A(A({},V),{renderAs:{type:String,required:!1,default:"canvas",validator:function(o){return["canvas","svg"].indexOf(o)>-1}}}),Pe=G({name:"QRCodeSvg",props:V,setup:function(o){var v=x(o),f=v.numCells,l=v.fgPath,s=v.imageProps,c=v.imageBorderProps,a=de(o.id),e="qrcode.vue-gradient-".concat(a),t="qrcode.vue-logo-clip-path-".concat(a),r=y(function(){if(!o.gradient)return null;var i=o.gradientType==="linear"?{x1:"0%",y1:"0%",x2:"100%",y2:"100%"}:{cx:"50%",cy:"50%",r:"50%",fx:"50%",fy:"50%"};return p(o.gradientType==="linear"?"linearGradient":"radialGradient",A({id:e},i),[p("stop",{offset:"0%",style:{stopColor:o.gradientStartColor}}),p("stop",{offset:"100%",style:{stopColor:o.gradientEndColor}})])}),n=y(function(){if(!s.value)return null;var i=s.value.borderRadius;return i<=0?null:p("clipPath",{id:t},[p("rect",{x:s.value.x,y:s.value.y,width:s.value.width,height:s.value.height,rx:i,ry:i})])});return function(){return p("svg",{width:o.size,height:o.size,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(f.value," ").concat(f.value),role:"img","aria-label":o.value},[p("defs",{},[r.value,n.value]),p("rect",{width:"100%",height:"100%",fill:o.background}),p("path",{fill:o.gradient?"url(#".concat(e,")"):o.foreground,d:l.value}),c.value&&p("rect",{x:c.value.x,y:c.value.y,width:c.value.width,height:c.value.height,fill:o.background,rx:c.value.borderRadius,ry:c.value.borderRadius}),o.imageSettings.src&&s.value&&p("image",A(A({href:o.imageSettings.src},s.value),s.value.borderRadius>0?{"clip-path":"url(#".concat(t,")")}:{}))])}}}),pe=G({name:"QRCodeCanvas",props:V,setup:function(o,v){var f=x(o),l=f.margin,s=f.cells,c=f.numCells,a=f.fgPath,e=f.imageProps,t=f.imageBorderProps,r=T(null),n=T(null),i=function(d,E,M,R,w,S){d.beginPath(),d.roundRect?d.roundRect(E,M,R,w,S):d.rect(E,M,R,w)},u=function(){var d=o.size,E=o.background,M=o.foreground,R=o.gradient,w=o.gradientType,S=o.gradientStartColor,m=o.gradientEndColor,h=r.value;if(h){var g=h.getContext("2d");if(g){var C=n.value,P=typeof window<"u"&&window.devicePixelRatio||1,I=d/c.value*P;if(h.height=h.width=d*P,g.setTransform(I,0,0,I,0,0),g.fillStyle=E,g.fillRect(0,0,c.value,c.value),R){var N=void 0;w==="linear"?N=g.createLinearGradient(0,0,c.value,c.value):N=g.createRadialGradient(c.value/2,c.value/2,0,c.value/2,c.value/2,c.value/2),N.addColorStop(0,S),N.addColorStop(1,m),g.fillStyle=N}else g.fillStyle=M;me?g.fill(new Path2D(a.value)):s.value.forEach(function(L,Q){L.forEach(function(O,j){O&&g.fillRect(j+l.value,Q+l.value,1,1)})});var F=o.imageSettings.src&&C&&C.naturalWidth!==0&&C.naturalHeight!==0;if(F&&e.value){if(t.value){var b=t.value;g.fillStyle=o.background,i(g,b.x,b.y,b.width,b.height,b.borderRadius),g.fill()}var z=e.value.borderRadius;z>0?(g.save(),i(g,e.value.x,e.value.y,e.value.width,e.value.height,z),g.clip(),g.drawImage(C,e.value.x,e.value.y,e.value.width,e.value.height),g.restore()):g.drawImage(C,e.value.x,e.value.y,e.value.width,e.value.height)}}}};return te(u),re(u),function(){return p($,[p("canvas",A(A({},v.attrs),{ref:r,role:"img","aria-label":o.value,style:A(A({},v.attrs.style),{width:"".concat(o.size,"px"),height:"".concat(o.size,"px")})})),o.imageSettings.src&&p("img",{ref:n,src:o.imageSettings.src,style:{display:"none"},onLoad:u})])}}}),Se=G({name:"Qrcode",props:Re,setup:function(o){return function(){return p(o.renderAs==="svg"?Pe:pe,{value:o.value,size:o.size,margin:o.margin,level:o.level,background:o.background,foreground:o.foreground,imageSettings:o.imageSettings,gradient:o.gradient,gradientType:o.gradientType,gradientStartColor:o.gradientStartColor,gradientEndColor:o.gradientEndColor,radius:o.radius,id:o.id})}}});const Ae=["disabled","onClick"],Ne={class:"social-icon"},be={class:"social-qr-box"},ye={class:"social-qr-prompt"},Ie={__name:"SocialLoginButtons",props:{providers:{type:Array,default:()=>[]},mode:{type:String,default:"login"},redirectUri:{type:String,required:!0},block:{type:Boolean,default:!1}},emits:["error"],setup(o,{emit:v}){const f=o,l=v,s={qq:"QQ",wx:"微信",alipay:"支付宝"},c=T(""),a=T(!1),e=T(""),t=T("wx");let r=null,n=0;const i=y(()=>f.providers.filter(m=>s[m]));function u(){r&&(window.clearTimeout(r),r=null)}function d(){u(),a.value=!1,e.value=""}function E(m){return m==="wx"?"请使用微信扫描二维码点关注后登录":m==="qq"?"请使用 QQ 扫描二维码登录":"请使用支付宝扫描二维码登录"}function M(m){return m==="wx"?"微":m==="qq"?"Q":"支"}function R(m,h){const g=m?.response?.data,C=g?.error||g?.message||h;l("error",C),H.error(C)}function w(m,h,g){u(),n=Date.now();const C=async()=>{if(Date.now()-n>300*1e3){d(),H.warning("二维码已过期,请重新获取");return}try{const P=await se({provider:m,state:h});if(P?.status==="authorized"&&P?.url){d(),window.location.assign(P.url);return}r=window.setTimeout(C,Math.max(Number(g||2),2)*1e3)}catch(P){d(),R(P,"扫码状态获取失败,请重新尝试")}};r=window.setTimeout(C,Math.max(Number(g),2)*1e3)}async function S(m){if(!c.value){c.value=m;try{const h=await le({provider:m,mode:f.mode==="bind"?"bind":"login",redirect_uri:f.redirectUri});if(m!=="wx"){window.location.assign(h.url);return}const g=h.scan_url||h.qrcode||h.url;if(!g||!h.scan_state){H.error("微信二维码获取失败");return}t.value=m,e.value=g,a.value=!0,w(m,h.scan_state,h.scan_poll_interval||2)}catch(h){R(h,"获取聚合登录地址失败")}finally{c.value=""}}}return ae(()=>{u()}),(m,h)=>{const g=ee;return i.value.length?(D(),U("div",{key:0,class:K(["social-login-buttons",{block:o.block}])},[(D(!0),U($,null,oe(i.value,C=>(D(),U("button",{key:C,type:"button",class:K(["social-btn",`provider-${C}`]),disabled:!!c.value,onClick:P=>S(C)},[k("span",Ne,q(M(C)),1),k("span",null,q(o.mode==="bind"?`绑定${s[C]}`:`${s[C]}登录`),1)],10,Ae))),128)),ne(g,{modelValue:a.value,"onUpdate:modelValue":h[0]||(h[0]=C=>a.value=C),title:`${s[t.value]}登录`,width:"min(340px, 92vw)",onClose:d},{default:ie(()=>[k("div",be,[e.value?(D(),ue(Se,{key:0,value:e.value,size:220,level:"M"},null,8,["value"])):Y("",!0),k("div",ye,q(E(t.value)),1)])]),_:1},8,["modelValue","title"])],2)):Y("",!0)}}},De=ce(Ie,[["__scopeId","data-v-809d50db"]]);export{De as S}; diff --git a/static/app/assets/SocialLoginButtons-qO3SCoE7.css b/static/app/assets/SocialLoginButtons-qO3SCoE7.css new file mode 100644 index 0000000..b7b2830 --- /dev/null +++ b/static/app/assets/SocialLoginButtons-qO3SCoE7.css @@ -0,0 +1 @@ +.social-login-buttons[data-v-809d50db]{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.social-login-buttons.block[data-v-809d50db]{align-items:stretch;flex-direction:column}.social-btn[data-v-809d50db]{height:40px;border-radius:10px;border:1px solid rgba(17,24,39,.14);background:#fff;color:#111827;font-size:13px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px}.block .social-btn[data-v-809d50db]{width:100%}.social-btn[data-v-809d50db]:disabled{cursor:not-allowed;opacity:.7}.social-btn[data-v-809d50db]:hover:not(:disabled){background:#f8fafc}.social-icon[data-v-809d50db]{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px;line-height:1}.provider-wx .social-icon[data-v-809d50db]{background:#16a34a}.provider-qq .social-icon[data-v-809d50db]{background:#2563eb}.provider-alipay .social-icon[data-v-809d50db]{background:#1677ff}.social-qr-box[data-v-809d50db]{display:flex;flex-direction:column;align-items:center;gap:12px}.social-qr-prompt[data-v-809d50db]{font-size:13px;color:#374151;text-align:center} diff --git a/static/app/assets/VerifyResultPage-BUSE4fL8.js b/static/app/assets/VerifyResultPage-BUSE4fL8.js new file mode 100644 index 0000000..2f599e3 --- /dev/null +++ b/static/app/assets/VerifyResultPage-BUSE4fL8.js @@ -0,0 +1 @@ +import{b as W,i as N,c as q,w as F,a as G,_ as H,u as J,d as K}from"./base-xgxQQEpV.js";import{E as O}from"./el-card-CfK866jr.js";import{E as Q}from"./el-button-LKkD3jQh.js";import{A as R,h as T,j as p,o as l,k as i,l as f,B as w,c as V,C as a,n as d,D as X,t as m,g as o,i as Y,z as Z,p as C,s as b,u as ee,x as P}from"./vendor-vue-WbiK4TmU.js";import{_ as se}from"./style-CEbARg1o.js";import"./index-CoYtSGUZ.js";const r={primary:"icon-primary",success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},A={[r.primary]:N,[r.success]:G,[r.warning]:F,[r.error]:q,[r.info]:N},te=W({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["primary","success","warning","info","error"],default:"info"}}),oe=R({name:"ElResult"}),ne=R({...oe,props:te,setup($){const g=$,n=J("result"),c=T(()=>{const s=g.icon,u=s&&r[s]?r[s]:"icon-info",y=A[u]||A["icon-info"];return{class:u,component:y}});return(s,u)=>(l(),p("div",{class:d(a(n).b())},[i("div",{class:d(a(n).e("icon"))},[w(s.$slots,"icon",{},()=>[a(c).component?(l(),V(X(a(c).component),{key:0,class:d(a(c).class)},null,8,["class"])):f("v-if",!0)])],2),s.title||s.$slots.title?(l(),p("div",{key:0,class:d(a(n).e("title"))},[w(s.$slots,"title",{},()=>[i("p",null,m(s.title),1)])],2)):f("v-if",!0),s.subTitle||s.$slots["sub-title"]?(l(),p("div",{key:1,class:d(a(n).e("subtitle"))},[w(s.$slots,"sub-title",{},()=>[i("p",null,m(s.subTitle),1)])],2)):f("v-if",!0),s.$slots.extra?(l(),p("div",{key:2,class:d(a(n).e("extra"))},[w(s.$slots,"extra")],2)):f("v-if",!0)],2))}});var ae=H(ne,[["__file","result.vue"]]);const le=K(ae),re={class:"auth-wrap"},ie={class:"actions"},ce={key:0,class:"countdown app-muted"},ue={__name:"VerifyResultPage",setup($){const g=ee(),n=o(!1),c=o(""),s=o(""),u=o(""),y=o(""),h=o(""),I=o(""),k=o(""),_=o(0);let v=null;function L(){if(typeof window>"u")return null;const e=window.__APP_INITIAL_STATE__;return!e||typeof e!="object"?null:(window.__APP_INITIAL_STATE__=null,e)}function U(e){const t=!!e?.success;n.value=t,c.value=e?.title||(t?"验证成功":"验证失败"),s.value=e?.message||e?.error_message||(t?"操作已完成,现在可以继续使用系统。":"操作失败,请稍后重试。"),u.value=e?.primary_label||(t?"立即登录":"重新注册"),y.value=e?.primary_url||(t?"/login":"/register"),h.value=e?.secondary_label||(t?"":"返回登录"),I.value=e?.secondary_url||(t?"":"/login"),k.value=e?.redirect_url||(t?"/login":""),_.value=Number(e?.redirect_seconds||(t?5:0))||0}const z=T(()=>!!(h.value&&I.value)),B=T(()=>!!(k.value&&_.value>0));async function E(e){if(e){if(e.startsWith("http://")||e.startsWith("https://")){window.location.href=e;return}await g.push(e)}}function D(){B.value&&(v=window.setInterval(()=>{_.value-=1,_.value<=0&&(window.clearInterval(v),v=null,window.location.href=k.value)},1e3))}return Y(()=>{const e=L();U(e),D()}),Z(()=>{v&&window.clearInterval(v)}),(e,t)=>{const S=Q,M=le,j=O;return l(),p("div",re,[C(j,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:b(()=>[t[2]||(t[2]=i("div",{class:"brand"},[i("div",{class:"brand-title"},"知识管理平台"),i("div",{class:"brand-sub app-muted"},"验证结果")],-1)),C(M,{icon:n.value?"success":"error",title:c.value,"sub-title":s.value,class:"result"},{extra:b(()=>[i("div",ie,[C(S,{type:"primary",onClick:t[0]||(t[0]=x=>E(y.value))},{default:b(()=>[P(m(u.value),1)]),_:1}),z.value?(l(),V(S,{key:0,onClick:t[1]||(t[1]=x=>E(I.value))},{default:b(()=>[P(m(h.value),1)]),_:1})):f("",!0)]),B.value?(l(),p("div",ce,m(_.value)+" 秒后自动跳转... ",1)):f("",!0)]),_:1},8,["icon","title","sub-title"])]),_:1})])}}},ye=se(ue,[["__scopeId","data-v-c1f8a7e0"]]);export{ye as default}; diff --git a/static/app/assets/VerifyResultPage-efSXaaKI.css b/static/app/assets/VerifyResultPage-BnGv8vyq.css similarity index 78% rename from static/app/assets/VerifyResultPage-efSXaaKI.css rename to static/app/assets/VerifyResultPage-BnGv8vyq.css index 801e221..c61d84e 100644 --- a/static/app/assets/VerifyResultPage-efSXaaKI.css +++ b/static/app/assets/VerifyResultPage-BnGv8vyq.css @@ -1 +1 @@ -.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.auth-wrap[data-v-1fc6b081]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-1fc6b081]{width:100%;max-width:520px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-1fc6b081]{margin-bottom:14px}.brand-title[data-v-1fc6b081]{font-size:18px;font-weight:900}.brand-sub[data-v-1fc6b081]{margin-top:4px;font-size:12px}.result[data-v-1fc6b081]{padding:8px 0 2px}.actions[data-v-1fc6b081]{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.countdown[data-v-1fc6b081]{margin-top:10px;text-align:center;font-size:13px} +.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.auth-wrap[data-v-c1f8a7e0]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-c1f8a7e0]{width:100%;max-width:520px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-c1f8a7e0]{margin-bottom:14px}.brand-title[data-v-c1f8a7e0]{font-size:18px;font-weight:900}.brand-sub[data-v-c1f8a7e0]{margin-top:4px;font-size:12px}.result[data-v-c1f8a7e0]{padding:8px 0 2px}.actions[data-v-c1f8a7e0]{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.countdown[data-v-c1f8a7e0]{margin-top:10px;text-align:center;font-size:13px} diff --git a/static/app/assets/VerifyResultPage-bifpPyoE.js b/static/app/assets/VerifyResultPage-bifpPyoE.js deleted file mode 100644 index ab10ed9..0000000 --- a/static/app/assets/VerifyResultPage-bifpPyoE.js +++ /dev/null @@ -1 +0,0 @@ -import{b as W,i as N,c as q,w as F,a as G,_ as H,u as J,d as K,E as O}from"./el-button-DWxIvzz-.js";import{E as Q}from"./el-card-DfVpO1U5.js";import{A as R,h as T,j as f,o as a,k as i,l as p,B as w,c as V,C as l,n as d,D as X,t as m,g as n,i as Y,z as Z,q as C,s as b,u as ee,x as P}from"./vendor-vue-DxN60LNb.js";import{_ as se}from"./style-CEbARg1o.js";const r={primary:"icon-primary",success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},A={[r.primary]:N,[r.success]:G,[r.warning]:F,[r.error]:q,[r.info]:N},te=W({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["primary","success","warning","info","error"],default:"info"}}),ne=R({name:"ElResult"}),oe=R({...ne,props:te,setup($){const g=$,o=J("result"),c=T(()=>{const s=g.icon,u=s&&r[s]?r[s]:"icon-info",y=A[u]||A["icon-info"];return{class:u,component:y}});return(s,u)=>(a(),f("div",{class:d(l(o).b())},[i("div",{class:d(l(o).e("icon"))},[w(s.$slots,"icon",{},()=>[l(c).component?(a(),V(X(l(c).component),{key:0,class:d(l(c).class)},null,8,["class"])):p("v-if",!0)])],2),s.title||s.$slots.title?(a(),f("div",{key:0,class:d(l(o).e("title"))},[w(s.$slots,"title",{},()=>[i("p",null,m(s.title),1)])],2)):p("v-if",!0),s.subTitle||s.$slots["sub-title"]?(a(),f("div",{key:1,class:d(l(o).e("subtitle"))},[w(s.$slots,"sub-title",{},()=>[i("p",null,m(s.subTitle),1)])],2)):p("v-if",!0),s.$slots.extra?(a(),f("div",{key:2,class:d(l(o).e("extra"))},[w(s.$slots,"extra")],2)):p("v-if",!0)],2))}});var le=H(oe,[["__file","result.vue"]]);const ae=K(le),re={class:"auth-wrap"},ie={class:"actions"},ce={key:0,class:"countdown app-muted"},ue={__name:"VerifyResultPage",setup($){const g=ee(),o=n(!1),c=n(""),s=n(""),u=n(""),y=n(""),h=n(""),I=n(""),k=n(""),_=n(0);let v=null;function L(){if(typeof window>"u")return null;const e=window.__APP_INITIAL_STATE__;return!e||typeof e!="object"?null:(window.__APP_INITIAL_STATE__=null,e)}function U(e){const t=!!e?.success;o.value=t,c.value=e?.title||(t?"验证成功":"验证失败"),s.value=e?.message||e?.error_message||(t?"操作已完成,现在可以继续使用系统。":"操作失败,请稍后重试。"),u.value=e?.primary_label||(t?"立即登录":"重新注册"),y.value=e?.primary_url||(t?"/login":"/register"),h.value=e?.secondary_label||(t?"":"返回登录"),I.value=e?.secondary_url||(t?"":"/login"),k.value=e?.redirect_url||(t?"/login":""),_.value=Number(e?.redirect_seconds||(t?5:0))||0}const z=T(()=>!!(h.value&&I.value)),B=T(()=>!!(k.value&&_.value>0));async function E(e){if(e){if(e.startsWith("http://")||e.startsWith("https://")){window.location.href=e;return}await g.push(e)}}function D(){B.value&&(v=window.setInterval(()=>{_.value-=1,_.value<=0&&(window.clearInterval(v),v=null,window.location.href=k.value)},1e3))}return Y(()=>{const e=L();U(e),D()}),Z(()=>{v&&window.clearInterval(v)}),(e,t)=>{const S=O,M=ae,j=Q;return a(),f("div",re,[C(j,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:b(()=>[t[2]||(t[2]=i("div",{class:"brand"},[i("div",{class:"brand-title"},"知识管理平台"),i("div",{class:"brand-sub app-muted"},"验证结果")],-1)),C(M,{icon:o.value?"success":"error",title:c.value,"sub-title":s.value,class:"result"},{extra:b(()=>[i("div",ie,[C(S,{type:"primary",onClick:t[0]||(t[0]=x=>E(y.value))},{default:b(()=>[P(m(u.value),1)]),_:1}),z.value?(a(),V(S,{key:0,onClick:t[1]||(t[1]=x=>E(I.value))},{default:b(()=>[P(m(h.value),1)]),_:1})):p("",!0)]),B.value?(a(),f("div",ce,m(_.value)+" 秒后自动跳转... ",1)):p("",!0)]),_:1},8,["icon","title","sub-title"])]),_:1})])}}},ve=se(ue,[["__scopeId","data-v-1fc6b081"]]);export{ve as default}; diff --git a/static/app/assets/accounts-3bM7Wy59.js b/static/app/assets/accounts-DzntEHJR.js similarity index 93% rename from static/app/assets/accounts-3bM7Wy59.js rename to static/app/assets/accounts-DzntEHJR.js index 3d43e68..e386135 100644 --- a/static/app/assets/accounts-3bM7Wy59.js +++ b/static/app/assets/accounts-DzntEHJR.js @@ -1 +1 @@ -import{p as c}from"./http-CdvgQxJu.js";async function o(t={}){const{data:a}=await c.get("/accounts",{params:t});return a}async function u(t){const{data:a}=await c.post("/accounts",t);return a}async function r(t,a){const{data:n}=await c.put(`/accounts/${t}`,a);return n}async function e(t){const{data:a}=await c.delete(`/accounts/${t}`);return a}async function i(t,a){const{data:n}=await c.put(`/accounts/${t}/remark`,a);return n}async function p(t,a){const{data:n}=await c.post(`/accounts/${t}/start`,a);return n}async function d(t){const{data:a}=await c.post(`/accounts/${t}/stop`,{});return a}async function f(t){const{data:a}=await c.post("/accounts/batch/start",t);return a}async function w(t){const{data:a}=await c.post("/accounts/batch/stop",t);return a}async function y(){const{data:t}=await c.post("/accounts/clear",{});return t}async function A(t,a={}){const{data:n}=await c.post(`/accounts/${t}/screenshot`,a);return n}export{w as a,f as b,y as c,d,e,o as f,u as g,i as h,p as s,A as t,r as u}; +import{p as c}from"./http-BoPYlvwK.js";async function o(t={}){const{data:a}=await c.get("/accounts",{params:t});return a}async function u(t){const{data:a}=await c.post("/accounts",t);return a}async function r(t,a){const{data:n}=await c.put(`/accounts/${t}`,a);return n}async function e(t){const{data:a}=await c.delete(`/accounts/${t}`);return a}async function i(t,a){const{data:n}=await c.put(`/accounts/${t}/remark`,a);return n}async function p(t,a){const{data:n}=await c.post(`/accounts/${t}/start`,a);return n}async function d(t){const{data:a}=await c.post(`/accounts/${t}/stop`,{});return a}async function f(t){const{data:a}=await c.post("/accounts/batch/start",t);return a}async function w(t){const{data:a}=await c.post("/accounts/batch/stop",t);return a}async function y(){const{data:t}=await c.post("/accounts/clear",{});return t}async function A(t,a={}){const{data:n}=await c.post(`/accounts/${t}/screenshot`,a);return n}export{w as a,f as b,y as c,d,e,o as f,u as g,i as h,p as s,A as t,r as u}; diff --git a/static/app/assets/app-BmSIJu6s.js b/static/app/assets/app-BmSIJu6s.js deleted file mode 100644 index 20c0c6d..0000000 --- a/static/app/assets/app-BmSIJu6s.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-D5iXLq7p.js","./vendor-vue-DxN60LNb.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./LoginPage-DTj5KeC4.css","./RegisterPage-4xFnBJCQ.js","./el-button-DWxIvzz-.js","./el-button-DF1Fi_iE.css","./el-card-DfVpO1U5.js","./el-card-BqOrgVp1.css","./el-alert-DB2IQLpH.js","./http-CdvgQxJu.js","./vendor-axios-B9ygI19o.js","./http-D6B3r8CH.css","./el-alert-B-NgiIln.css","./auth-CX9p6ZYg.js","./password-7ryi82gE.js","./RegisterPage-BOcNcW5D.css","./ResetPasswordPage-lX7l6Nbu.js","./ResetPasswordPage-DybfLMAw.css","./VerifyResultPage-bifpPyoE.js","./VerifyResultPage-efSXaaKI.css","./AppLayout-xWeMM3hH.js","./user-Bl59IefW.js","./el-overlay-C_JJBVfE.js","./el-overlay-Bd56Lw6C.css","./user-B7bO5p8k.css","./settings-Ddo8isuv.js","./isArrayLikeObject-BjIRF-cS.js","./AppLayout-DxoFHO3h.css","./AccountsPage-DnOxRP7e.js","./accounts-3bM7Wy59.js","./accounts-D_6SYB2i.css","./el-select-B0VMg2td.js","./el-select-D_oyzAZN.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-iiBFNme8.css","./SchedulesPage-TUv7nqYq.js","./el-pagination-BY1uI-wO.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-BIuHs5oJ.css","./ScreenshotsPage-7CRd3Hlo.js","./ScreenshotsPage-30dzddw-.css"])))=>i.map(i=>d[i]); -import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as w,e as k}from"./vendor-vue-DxN60LNb.js";const V={};function O(p,l){const a=g("RouterView");return y(),R(a)}const T=v(V,[["render",O]]),b="modulepreload",D=function(p,l){return new URL(p,l).href},f={},r=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const o=document.createElement("link");if(o.rel=s?"stylesheet":b,s||(o.as="script"),o.crossOrigin="",o.href=e,h&&o.setAttribute("nonce",h),document.head.appendChild(o),s)return new Promise((i,m)=>{o.addEventListener("load",i),o.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>r(()=>import("./LoginPage-D5iXLq7p.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),S=()=>r(()=>import("./RegisterPage-4xFnBJCQ.js"),__vite__mapDeps([5,6,1,7,8,9,10,11,12,13,14,15,16,2,3,17]),import.meta.url),$=()=>r(()=>import("./ResetPasswordPage-lX7l6Nbu.js"),__vite__mapDeps([18,6,1,7,8,9,10,11,12,13,14,15,16,2,3,19]),import.meta.url),E=()=>r(()=>import("./VerifyResultPage-bifpPyoE.js"),__vite__mapDeps([20,6,1,7,8,9,2,3,21]),import.meta.url),C=()=>r(()=>import("./AppLayout-xWeMM3hH.js"),__vite__mapDeps([22,6,1,7,23,11,12,13,10,14,24,25,26,27,16,2,3,28,29]),import.meta.url),B=()=>r(()=>import("./AccountsPage-DnOxRP7e.js"),__vite__mapDeps([30,6,1,7,24,11,12,13,25,10,14,23,26,31,32,33,34,8,9,27,35,2,3,36]),import.meta.url),N=()=>r(()=>import("./SchedulesPage-TUv7nqYq.js"),__vite__mapDeps([37,6,1,7,24,11,12,13,25,10,14,33,34,23,26,31,32,38,39,8,9,2,3,28,40]),import.meta.url),j=()=>r(()=>import("./ScreenshotsPage-7CRd3Hlo.js"),__vite__mapDeps([41,6,1,7,24,11,12,13,25,38,33,34,39,8,9,2,3,42]),import.meta.url),q=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:C,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:B},{path:"schedules",name:"schedules",component:N},{path:"screenshots",name:"screenshots",component:j}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],x=A({history:L(),routes:q});w(T).use(k()).use(x).mount("#app"); diff --git a/static/app/assets/app-CV_JALyE.js b/static/app/assets/app-CV_JALyE.js new file mode 100644 index 0000000..e0be07b --- /dev/null +++ b/static/app/assets/app-CV_JALyE.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-BtooAZsk.js","./vendor-vue-WbiK4TmU.js","./SocialLoginButtons-BlVSr6Mm.js","./base-xgxQQEpV.js","./base-CiSqh4F9.css","./el-overlay-hge8bsIn.js","./aria-DLpFpzDe.js","./http-BoPYlvwK.js","./vendor-axios-B9ygI19o.js","./index-CoYtSGUZ.js","./el-overlay-hkg5a9kt.css","./auth-B5cl_nsV.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./SocialLoginButtons-qO3SCoE7.css","./LoginPage-vCVLchWz.css","./RegisterPage-Cb1mme2j.js","./el-card-CfK866jr.js","./el-card-BqOrgVp1.css","./el-alert-DTUOkrAB.js","./el-button-LKkD3jQh.js","./el-button-BRDnKxwT.css","./el-input-BaZNy9Kg.js","./el-input-D6B3r8CH.css","./el-alert-B-NgiIln.css","./password-7ryi82gE.js","./RegisterPage-LYXwWYc1.css","./ResetPasswordPage-CUOK0fe1.js","./ResetPasswordPage-DAB63ins.css","./SocialBindCallbackPage-DraQ_mks.js","./el-skeleton-item-CD5Idavp.js","./el-skeleton-item-BLY1jEuR.css","./settings-Db4PmPGC.js","./SocialBindCallbackPage-BZgzv_7a.css","./VerifyResultPage-BUSE4fL8.js","./VerifyResultPage-BnGv8vyq.css","./AppLayout-D9A8Va7K.js","./user-BlXB4Zbh.js","./el-empty-B4_NEFfq.js","./el-empty-D4G4LZ50.css","./user-B7bO5p8k.css","./isArrayLikeObject-B5fs56rA.js","./AppLayout-CJKAa2WS.css","./AccountsPage-B7MLZrfr.js","./accounts-DzntEHJR.js","./accounts-D_6SYB2i.css","./el-select-CBs1QjJm.js","./el-select-D_oyzAZN.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-DKewJ7S7.css","./SchedulesPage-0TKGPmUl.js","./el-pagination-kVJ2XlAP.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-Dxq2ghmQ.css","./ScreenshotsPage-F6GpvKGW.js","./ScreenshotsPage-BhLfAzHf.css"])))=>i.map(i=>d[i]); +import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as k,e as b}from"./vendor-vue-WbiK4TmU.js";const w={};function V(p,l){const a=g("RouterView");return y(),R(a)}const O=v(w,[["render",V]]),T="modulepreload",D=function(p,l){return new URL(p,l).href},f={},o=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const r=document.createElement("link");if(r.rel=s?"stylesheet":T,s||(r.as="script"),r.crossOrigin="",r.href=e,h&&r.setAttribute("nonce",h),document.head.appendChild(r),s)return new Promise((i,m)=>{r.addEventListener("load",i),r.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>o(()=>import("./LoginPage-BtooAZsk.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),S=()=>o(()=>import("./RegisterPage-Cb1mme2j.js"),__vite__mapDeps([16,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,26]),import.meta.url),C=()=>o(()=>import("./ResetPasswordPage-CUOK0fe1.js"),__vite__mapDeps([27,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,28]),import.meta.url),$=()=>o(()=>import("./SocialBindCallbackPage-DraQ_mks.js"),__vite__mapDeps([29,3,1,4,17,18,30,31,11,7,8,32,12,13,33]),import.meta.url),E=()=>o(()=>import("./VerifyResultPage-BUSE4fL8.js"),__vite__mapDeps([34,3,1,4,17,18,20,9,21,12,13,35]),import.meta.url),B=()=>o(()=>import("./AppLayout-D9A8Va7K.js"),__vite__mapDeps([36,3,1,4,37,22,7,8,6,20,9,21,23,19,24,38,5,10,39,40,30,31,11,32,2,12,13,14,25,41,42]),import.meta.url),N=()=>o(()=>import("./AccountsPage-B7MLZrfr.js"),__vite__mapDeps([43,3,1,4,5,6,7,8,9,10,19,20,21,22,23,24,37,38,39,40,44,45,30,31,46,47,17,18,32,48,12,13,49]),import.meta.url),j=()=>o(()=>import("./SchedulesPage-0TKGPmUl.js"),__vite__mapDeps([50,3,1,4,38,22,7,8,6,20,9,21,23,5,10,39,19,24,46,47,37,40,44,45,51,52,17,18,30,31,12,13,41,53]),import.meta.url),q=()=>o(()=>import("./ScreenshotsPage-F6GpvKGW.js"),__vite__mapDeps([54,3,1,4,5,6,7,8,9,10,51,46,38,22,20,21,23,39,47,52,17,18,30,31,12,13,55]),import.meta.url),x=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:C},{path:"/social-bind-callback",name:"social_bind_callback",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:B,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:N},{path:"schedules",name:"schedules",component:j},{path:"screenshots",name:"screenshots",component:q}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],M=A({history:L(),routes:x});k(O).use(b()).use(M).mount("#app"); diff --git a/static/app/assets/aria-DLpFpzDe.js b/static/app/assets/aria-DLpFpzDe.js new file mode 100644 index 0000000..375ad88 --- /dev/null +++ b/static/app/assets/aria-DLpFpzDe.js @@ -0,0 +1 @@ +class a extends Error{constructor(e){super(e),this.name="ElementPlusError"}}function d(t,e){throw new a(`[${t}] ${e}`)}function E(t,e){}const f="update:modelValue",l="change",b="input",u='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',o=t=>typeof Element>"u"?!1:t instanceof Element,c=t=>getComputedStyle(t).position==="fixed"?!1:t.offsetParent!==null,p=t=>Array.from(t.querySelectorAll(u)).filter(e=>i(e)&&c(e)),i=t=>{if(t.tabIndex>0||t.tabIndex===0&&t.getAttribute("tabIndex")!==null)return!0;if(t.tabIndex<0||t.hasAttribute("disabled")||t.getAttribute("aria-disabled")==="true")return!1;switch(t.nodeName){case"A":return!!t.href&&t.rel!=="ignore";case"INPUT":return!(t.type==="hidden"||t.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},A=function(t,e,...n){let s;e.includes("mouse")||e.includes("click")?s="MouseEvents":e.includes("key")?s="KeyboardEvent":s="HTMLEvents";const r=document.createEvent(s);return r.initEvent(e,...n),t.dispatchEvent(r),t},T=(t,e)=>{if(!t||!t.focus)return;let n=!1;o(t)&&!i(t)&&!t.getAttribute("tabindex")&&(t.setAttribute("tabindex","-1"),n=!0),t.focus(e),o(t)&&n&&t.removeAttribute("tabindex")};export{l as C,b as I,f as U,A as a,E as d,T as f,i,p as o,d as t}; diff --git a/static/app/assets/auth-B5cl_nsV.js b/static/app/assets/auth-B5cl_nsV.js new file mode 100644 index 0000000..d8be017 --- /dev/null +++ b/static/app/assets/auth-B5cl_nsV.js @@ -0,0 +1 @@ +import{p as s}from"./http-BoPYlvwK.js";async function c(){const{data:a}=await s.get("/email/verify-status");return a}async function o(){const{data:a}=await s.post("/generate_captcha",{});return a}async function i(a){const{data:t}=await s.post("/register",a);return t}async function r(a){const{data:t}=await s.post("/reset-password-confirm",a);return t}async function e(){const{data:a}=await s.get("/auth/social/config");return a}async function u(a){const{data:t}=await s.post("/auth/social/login-url",a||{});return t}async function l(a){const{data:t}=await s.post("/auth/social/poll",a||{});return t}async function f(a){const{data:t}=await s.post("/auth/social/callback",a||{});return t}export{e as a,u as b,r as c,l as d,c as f,o as g,i as r,f as s}; diff --git a/static/app/assets/auth-CX9p6ZYg.js b/static/app/assets/auth-CX9p6ZYg.js deleted file mode 100644 index b799aa0..0000000 --- a/static/app/assets/auth-CX9p6ZYg.js +++ /dev/null @@ -1 +0,0 @@ -import{p as a}from"./http-CdvgQxJu.js";async function e(){const{data:t}=await a.get("/email/verify-status");return t}async function n(){const{data:t}=await a.post("/generate_captcha",{});return t}async function c(t){const{data:s}=await a.post("/register",t);return s}async function i(t){const{data:s}=await a.post("/reset-password-confirm",t);return s}export{i as c,e as f,n as g,c as r}; diff --git a/static/app/assets/base-CiSqh4F9.css b/static/app/assets/base-CiSqh4F9.css new file mode 100644 index 0000000..f24eb01 --- /dev/null +++ b/static/app/assets/base-CiSqh4F9.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px}:root{color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em} diff --git a/static/app/assets/base-xgxQQEpV.js b/static/app/assets/base-xgxQQEpV.js new file mode 100644 index 0000000..3d29978 --- /dev/null +++ b/static/app/assets/base-xgxQQEpV.js @@ -0,0 +1 @@ +import{V as N,Q as L,g as O,h as w,C as T,J as Xe,K as de,X as _e,E as Mt,Y as It,ao as Qe,aw as jt,at as Nt,i as zt,W as Dt,L as Ft,a3 as Bt,_ as ye,ax as Rt,a0 as se,M as Vt,ay as Ht,ad as Ut,A as d,j as _,o as g,B as Gt,O as Kt,k as f}from"./vendor-vue-WbiK4TmU.js";const ke=Symbol(),W="el",Jt="is-",j=(e,t,r,a,n)=>{let s=`${e}-${t}`;return r&&(s+=`-${r}`),a&&(s+=`__${a}`),n&&(s+=`--${n}`),s},et=Symbol("namespaceContextKey"),qt=e=>{const t=e||(N()?L(et,O(W)):O(W));return w(()=>T(t)||W)},tt=(e,t)=>{const r=qt(t);return{namespace:r,b:(l="")=>j(r.value,e,l,"",""),e:l=>l?j(r.value,e,"",l,""):"",m:l=>l?j(r.value,e,"","",l):"",be:(l,p)=>l&&p?j(r.value,e,l,p,""):"",em:(l,p)=>l&&p?j(r.value,e,"",l,p):"",bm:(l,p)=>l&&p?j(r.value,e,l,"",p):"",bem:(l,p,b)=>l&&p&&b?j(r.value,e,l,p,b):"",is:(l,...p)=>{const b=p.length>=1?p[0]:!0;return l&&b?`${Jt}${l}`:""},cssVar:l=>{const p={};for(const b in l)l[b]&&(p[`--${r.value}-${b}`]=l[b]);return p},cssVarName:l=>`--${r.value}-${l}`,cssVarBlock:l=>{const p={};for(const b in l)l[b]&&(p[`--${r.value}-${e}-${b}`]=l[b]);return p},cssVarBlockName:l=>`--${r.value}-${e}-${l}`}};var rt=typeof global=="object"&&global&&global.Object===Object&&global,Zt=typeof self=="object"&&self&&self.Object===Object&&self,P=rt||Zt||Function("return this")(),M=P.Symbol,at=Object.prototype,Wt=at.hasOwnProperty,Yt=at.toString,H=M?M.toStringTag:void 0;function Xt(e){var t=Wt.call(e,H),r=e[H];try{e[H]=void 0;var a=!0}catch{}var n=Yt.call(e);return a&&(t?e[H]=r:delete e[H]),n}var Qt=Object.prototype,kt=Qt.toString;function er(e){return kt.call(e)}var tr="[object Null]",rr="[object Undefined]",be=M?M.toStringTag:void 0;function V(e){return e==null?e===void 0?rr:tr:be&&be in Object(e)?Xt(e):er(e)}function R(e){return e!=null&&typeof e=="object"}var ar="[object Symbol]";function ge(e){return typeof e=="symbol"||R(e)&&V(e)==ar}function nr(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r-1&&e%1==0&&e-1&&e%1==0&&e<=Sr}function Ar(e){return e!=null&&it(e.length)&&!st(e)}var $r=Object.prototype;function Lr(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||$r;return e===r}function Er(e,t){for(var r=-1,a=Array(e);++r-1}function Va(e,t){var r=this.__data__,a=k(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}function S(e){var t=-1,r=e==null?0:e.length;for(this.clear();++to))return!1;var c=s.get(e),h=s.get(t);if(c&&h)return c==t&&h==e;var m=-1,y=!0,C=r&An?new X:void 0;for(s.set(e,t),s.set(t,e);++me===void 0,fo=e=>typeof e=="boolean",vt=e=>typeof e=="number",po=e=>!e&&e!==0||de(e)&&e.length===0||_e(e)&&!Object.keys(e).length,_o=e=>typeof Element>"u"?!1:e instanceof Element,go=e=>es(e),as=e=>Xe(e)?!Number.isNaN(Number(e)):!1;var ns=Object.defineProperty,ss=Object.defineProperties,os=Object.getOwnPropertyDescriptors,Ue=Object.getOwnPropertySymbols,is=Object.prototype.hasOwnProperty,ls=Object.prototype.propertyIsEnumerable,Ge=(e,t,r)=>t in e?ns(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,cs=(e,t)=>{for(var r in t||(t={}))is.call(t,r)&&Ge(e,r,t[r]);if(Ue)for(var r of Ue(t))ls.call(t,r)&&Ge(e,r,t[r]);return e},us=(e,t)=>ss(e,os(t));function ho(e,t){var r;const a=Mt();return It(()=>{a.value=e()},us(cs({},t),{flush:(r=void 0)!=null?r:"sync"})),Qe(a)}var Ke;const te=typeof window<"u",vo=e=>typeof e=="string",mo=(e,t,r)=>Math.min(r,Math.max(t,e)),Je=()=>{},wo=te&&((Ke=window?.navigator)==null?void 0:Ke.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function fe(e){return typeof e=="function"?e():T(e)}function fs(e,t){function r(...a){return new Promise((n,s)=>{Promise.resolve(e(()=>t.apply(this,a),{fn:t,thisArg:this,args:a})).then(n).catch(s)})}return r}function ps(e,t={}){let r,a,n=Je;const s=o=>{clearTimeout(o),n(),n=Je};return o=>{const u=fe(e),c=fe(t.maxWait);return r&&s(r),u<=0||c!==void 0&&c<=0?(a&&(s(a),a=null),Promise.resolve(o())):new Promise((h,m)=>{n=t.rejectOnCancel?m:h,c&&!a&&(a=setTimeout(()=>{r&&s(r),a=null,h(o())},c)),r=setTimeout(()=>{a&&s(a),a=null,h(o())},u)})}}function yo(e){return e}function ds(e){return jt()?(Nt(e),!0):!1}function _s(e,t=200,r={}){return fs(ps(t,r),e)}function bo(e,t=200,r={}){const a=O(e.value),n=_s(()=>{a.value=e.value},t,r);return Ft(e,()=>n()),a}function xo(e,t=!0){N()?zt(e):t?e():Dt(e)}function Co(e,t,r={}){const{immediate:a=!0}=r,n=O(!1);let s=null;function i(){s&&(clearTimeout(s),s=null)}function o(){n.value=!1,i()}function u(...c){i(),n.value=!0,s=setTimeout(()=>{n.value=!1,s=null,e(...c)},fe(t))}return a&&(n.value=!0,te&&u()),ds(o),{isPending:Qe(n),start:u,stop:o}}const qe={current:0},Ze=O(0),mt=2e3,We=Symbol("elZIndexContextKey"),wt=Symbol("zIndexContextKey"),gs=e=>{const t=N()?L(We,qe):qe,r=e||(N()?L(wt,void 0):void 0),a=w(()=>{const i=T(r);return vt(i)?i:mt}),n=w(()=>a.value+Ze.value),s=()=>(t.current++,Ze.value=t.current,n.value);return!te&&L(We),{initialZIndex:a,currentZIndex:n,nextZIndex:s}};var hs={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value",alphaDescription:"alpha {alpha}, current color is {color}",hueLabel:"pick hue value",hueDescription:"hue {hue}, current color is {color}",svLabel:"pick saturation and brightness value",svDescription:"saturation {saturation}, brightness {brightness}, current color is {color}",predefineDescription:"select {value} as the color"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum",selectAllLabel:"Select all rows",selectRowLabel:"Select this row",expandRowLabel:"Expand this row",collapseRowLabel:"Collapse this row",sortLabel:"Sort by {column}",filterLabel:"Filter by {column}"},tag:{close:"Close this tag"},tour:{next:"Next",previous:"Previous",finish:"Finish",close:"Close this dialog"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const vs=e=>(t,r)=>ms(t,r,T(e)),ms=(e,t,r)=>_t(r,e,e).replace(/\{(\w+)\}/g,(a,n)=>{var s;return`${(s=t?.[n])!=null?s:`{${n}}`}`}),ws=e=>{const t=w(()=>T(e).name),r=Bt(e)?e:O(e);return{lang:t,locale:r,t:vs(e)}},yt=Symbol("localeContextKey"),ys=e=>{const t=e||L(yt,O());return ws(w(()=>t.value||hs))},bt="__epPropKey",me=e=>e,bs=e=>_e(e)&&!!e[bt],xt=(e,t)=>{if(!_e(e)||bs(e))return e;const{values:r,required:a,default:n,type:s,validator:i}=e,u={type:s,required:!!a,validator:r||i?c=>{let h=!1,m=[];if(r&&(m=Array.from(r),ye(e,"default")&&m.push(n),h||(h=m.includes(c))),i&&(h||(h=i(c))),!h&&m.length>0){const y=[...new Set(m)].map(C=>JSON.stringify(C)).join(", ");Rt(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${y}], got value ${JSON.stringify(c)}.`)}return h}:void 0,[bt]:!0};return ye(e,"default")&&(u.default=n),u},Ct=e=>Qn(Object.entries(e).map(([t,r])=>[t,xt(r,t)])),xs=["","default","small","large"],To=xt({type:String,values:xs,required:!1}),Tt=Symbol("size"),Oo=()=>{const e=L(Tt,{});return w(()=>T(e.size)||"")},Ot=Symbol("emptyValuesContextKey"),Cs=["",void 0,null],Ts=void 0,Po=Ct({emptyValues:Array,valueOnClear:{type:me([String,Number,Boolean,Function]),default:void 0,validator:e=>(e=se(e)?e():e,de(e)?e.every(t=>!t):!e)}}),So=(e,t)=>{const r=N()?L(Ot,O({})):O({}),a=w(()=>e.emptyValues||r.value.emptyValues||Cs),n=w(()=>se(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:se(r.value.valueOnClear)?r.value.valueOnClear():r.value.valueOnClear!==void 0?r.value.valueOnClear:t!==void 0?t:Ts),s=i=>{let o=!0;return de(i)?o=a.value.some(u=>kn(i,u)):o=a.value.includes(i),o};return s(n.value),{emptyValues:a,valueOnClear:n,isEmptyValue:s}},Ye=e=>Object.keys(e),Ao=(e,t,r)=>({get value(){return _t(e,t,r)},set value(a){rs(e,t,a)}}),Q=O();function Pt(e,t=void 0){const r=N()?L(ke,Q):Q;return e?w(()=>{var a,n;return(n=(a=r.value)==null?void 0:a[e])!=null?n:t}):r}function $o(e,t){const r=Pt(),a=tt(e,w(()=>{var o;return((o=r.value)==null?void 0:o.namespace)||W})),n=ys(w(()=>{var o;return(o=r.value)==null?void 0:o.locale})),s=gs(w(()=>{var o;return((o=r.value)==null?void 0:o.zIndex)||mt})),i=w(()=>{var o;return T(t)||((o=r.value)==null?void 0:o.size)||""});return Os(w(()=>T(r)||{})),{ns:a,locale:n,zIndex:s,size:i}}const Os=(e,t,r=!1)=>{var a;const n=!!N(),s=n?Pt():void 0,i=(a=void 0)!=null?a:n?Vt:void 0;if(!i)return;const o=w(()=>{const u=T(e);return s?.value?Ps(s.value,u):u});return i(ke,o),i(yt,w(()=>o.value.locale)),i(et,w(()=>o.value.namespace)),i(wt,w(()=>o.value.zIndex)),i(Tt,{size:w(()=>o.value.size||"")}),i(Ot,w(()=>({emptyValues:o.value.emptyValues,valueOnClear:o.value.valueOnClear}))),(r||!Q.value)&&(Q.value=o.value),o},Ps=(e,t)=>{const r=[...new Set([...Ye(e),...Ye(t)])],a={};for(const n of r)a[n]=t[n]!==void 0?t[n]:e[n];return a};var Ss=(e,t)=>{const r=e.__vccOpts||e;for(const[a,n]of t)r[a]=n;return r};const St=(e="")=>e.split(" ").filter(t=>!!t.trim()),Lo=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Eo=(e,t)=>{!e||!t.trim()||e.classList.add(...St(t))},Mo=(e,t)=>{!e||!t.trim()||e.classList.remove(...St(t))},Io=(e,t)=>{var r;if(!te||!e||!t)return"";let a=Ht(t);a==="float"&&(a="cssFloat");try{const n=e.style[a];if(n)return n;const s=(r=document.defaultView)==null?void 0:r.getComputedStyle(e,"");return s?s[a]:""}catch{return e.style[a]}};function As(e,t="px"){if(!e&&e!==0)return"";if(vt(e)||as(e))return`${e}${t}`;if(Xe(e))return e}const $s=(e,t)=>{if(e.install=r=>{for(const a of[e,...Object.values(t??{})])r.component(a.name,a)},t)for(const[r,a]of Object.entries(t))e[r]=a;return e},jo=(e,t)=>(e.install=r=>{e._context=r._context,r.config.globalProperties[t]=e},e),No=e=>(e.install=Ut,e),Ls=Ct({size:{type:me([Number,String])},color:{type:String}}),Es=d({name:"ElIcon",inheritAttrs:!1}),Ms=d({...Es,props:Ls,setup(e){const t=e,r=tt("icon"),a=w(()=>{const{size:n,color:s}=t,i=As(n);return!i&&!s?{}:{fontSize:i,"--color":s}});return(n,s)=>(g(),_("i",Kt({class:T(r).b(),style:T(a)},n.$attrs),[Gt(n.$slots,"default")],16))}});var Is=Ss(Ms,[["__file","icon.vue"]]);const zo=$s(Is);var js=d({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),Do=js,Ns=d({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0"})]))}}),Fo=Ns,zs=d({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Bo=zs,Ds=d({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),Ro=Ds,Fs=d({name:"Calendar",__name:"calendar",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),Vo=Fs,Bs=d({name:"Camera",__name:"camera",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M896 256H128v576h768zm-199.424-64-32.064-64h-304.96l-32 64zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32m416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320m0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448"})]))}}),Ho=Bs,Rs=d({name:"Check",__name:"check",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),Uo=Rs,Vs=d({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Go=Vs,Hs=d({name:"CircleCheck",__name:"circle-check",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),f("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z"})]))}}),Us=Hs,Gs=d({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),At=Gs,Ks=d({name:"CircleClose",__name:"circle-close",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),f("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),Js=Ks,qs=d({name:"Clock",__name:"clock",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),f("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),f("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),Ko=qs,Zs=d({name:"Close",__name:"close",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),$t=Zs,Ws=d({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z"})]))}}),Jo=Ws,Ys=d({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688"})]))}}),qo=Ys,Xs=d({name:"Hide",__name:"hide",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176"}),f("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48"})]))}}),Zo=Xs,Qs=d({name:"InfoFilled",__name:"info-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),pe=Qs,ks=d({name:"Loading",__name:"loading",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0"})]))}}),eo=ks,to=d({name:"MoreFilled",__name:"more-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),Wo=to,ro=d({name:"More",__name:"more",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),Yo=ro,ao=d({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),Xo=ao,no=d({name:"Plus",__name:"plus",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),Qo=no,so=d({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Lt=so,oo=d({name:"User",__name:"user",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"})]))}}),ko=oo,io=d({name:"View",__name:"view",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),e0=io,lo=d({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,r)=>(g(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[f("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),Et=lo;const t0=me([String,Object,Function]),r0={Close:$t},a0={Close:$t,SuccessFilled:Lt,InfoFilled:pe,WarningFilled:Et,CircleCloseFilled:At},n0={primary:pe,success:Lt,warning:Et,error:At,info:pe},s0={validating:eo,success:Us,error:Js};export{ko as $,mo as A,As as B,ys as C,$t as D,zo as E,Eo as F,Lo as G,Mo as H,Do as I,uo as J,Co as K,es as L,Yo as M,go as N,Ao as O,_t as P,Ro as Q,_o as R,E as S,To as T,eo as U,Fo as V,Qo as W,ho as X,$o as Y,Io as Z,Ss as _,Go as a,vo as a$,Vo as a0,Ho as a1,Us as a2,Js as a3,Uo as a4,ue as a5,Ln as a6,X as a7,Pn as a8,po as a9,a0 as aA,xs as aB,bo as aC,Jo as aD,Wo as aE,qo as aF,Oo as aG,s0 as aH,wo as aI,_s as aJ,Pt as aK,ge as aL,ht as aM,Ca as aN,Qn as aO,gs as aP,ds as aQ,xt as aR,qt as aS,r0 as aT,W as aU,Oe as aV,it as aW,ts as aX,e0 as aY,Zo as aZ,Xo as a_,kn as aa,Po as ab,So as ac,Ko as ad,P as ae,R as af,V as ag,tn as ah,pt as ai,dt as aj,Pr as ak,Lr as al,_a as am,ga as an,_n as ao,fn as ap,rn as aq,gn as ar,Fe as as,M as at,$ as au,ua as av,$e as aw,Me as ax,Ye as ay,n0 as az,Ct as b,Je as b0,xo as b1,fe as b2,yo as b3,jo as b4,At as c,$s as d,Y as e,Ar as f,ot as g,he as h,pe as i,Cr as j,ya as k,ie as l,ft as m,z as n,Nr as o,st as p,nr as q,te as r,vt as s,me as t,tt as u,fo as v,Et as w,Bo as x,t0 as y,No as z}; diff --git a/static/app/assets/el-alert-DB2IQLpH.js b/static/app/assets/el-alert-DB2IQLpH.js deleted file mode 100644 index 06b5471..0000000 --- a/static/app/assets/el-alert-DB2IQLpH.js +++ /dev/null @@ -1,12 +0,0 @@ -import{A as K,S as ft,g as V,h as E,c as X,o as B,s as Q,w as zt,k as ue,n as C,C as g,l as k,B as z,D as ut,j as H,x as xe,t as te,F as dt,q as ne,R as Kt,T as Gt,K as de,J as De,f as qe,L as ce,M as ct,a2 as pt,a0 as vt,Q as pe,i as gt,z as mt,a6 as Jt,W as yt,U as Ue,ah as Yt}from"./vendor-vue-DxN60LNb.js";import{e as Ie,j as Zt,at as ht,au as bt,av as kt,f as Ht,aw as Qt,k as wt,am as Xt,ax as Ft,ay as er,az as tr,aA as rr,aB as ze,aC as Ke,an as At,aD as Me,aE as Ot,aF as ve,l as nr,S as ir,n as ar,aG as sr,b as me,aH as or,aI as xt,_ as Le,u as ye,A as Ge,aJ as lr,d as qt,v as Et,t as ge,aK as jt,X as Tt,as as Re,aL as Ee,aM as fr,aN as ur,D as Je,R as Ae,B as dr}from"./el-button-DWxIvzz-.js";import{c as je,k as cr,t as pr,i as vr}from"./http-CdvgQxJu.js";var Ye=Object.create,gr=(function(){function r(){}return function(e){if(!Ie(e))return{};if(Ye)return Ye(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function mr(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++tr instanceof MouseEvent},Dn=K({name:"ElAlert"}),Un=K({...Dn,props:Wn,emits:Vn,setup(r,{emit:e}){const t=r,{Close:n}=lr,i=ft(),a=ye("alert"),s=V(!0),o=E(()=>xt[t.type]),l=E(()=>!!(t.description||i.default)),b=f=>{s.value=!1,e("close",f)};return t.showAfter||t.hideAfter||t.autoClose,(f,m)=>(B(),X(Gt,{name:g(a).b("fade"),persisted:""},{default:Q(()=>[zt(ue("div",{class:C([g(a).b(),g(a).m(f.type),g(a).is("center",f.center),g(a).is(f.effect)]),role:"alert"},[f.showIcon&&(f.$slots.icon||g(o))?(B(),X(g(Ge),{key:0,class:C([g(a).e("icon"),g(a).is("big",g(l))])},{default:Q(()=>[z(f.$slots,"icon",{},()=>[(B(),X(ut(g(o))))])]),_:3},8,["class"])):k("v-if",!0),ue("div",{class:C(g(a).e("content"))},[f.title||f.$slots.title?(B(),H("span",{key:0,class:C([g(a).e("title"),{"with-description":g(l)}])},[z(f.$slots,"title",{},()=>[xe(te(f.title),1)])],2)):k("v-if",!0),g(l)?(B(),H("p",{key:1,class:C(g(a).e("description"))},[z(f.$slots,"default",{},()=>[xe(te(f.description),1)])],2)):k("v-if",!0),f.closable?(B(),H(dt,{key:2},[f.closeText?(B(),H("div",{key:0,class:C([g(a).e("close-btn"),g(a).is("customed")]),onClick:b},te(f.closeText),3)):(B(),X(g(Ge),{key:1,class:C(g(a).e("close-btn")),onClick:b},{default:Q(()=>[ne(g(n))]),_:1},8,["class"]))],64)):k("v-if",!0)],2)],2),[[Kt,s.value]])]),_:3},8,["name"]))}});var zn=Le(Un,[["__file","alert.vue"]]);const Bi=qt(zn),Kn=me({size:{type:String,values:jt},disabled:Boolean}),Gn=me({...Kn,model:Object,rules:{type:ge(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:ge([Object,Boolean]),default:!0}}),Jn={validate:(r,e,t)=>(de(r)||De(r))&&Et(e)&&De(t)};function Yn(){const r=V([]),e=E(()=>{if(!r.value.length)return"0";const a=Math.max(...r.value);return a?`${a}px`:""});function t(a){const s=r.value.indexOf(a);return s===-1&&e.value,s}function n(a,s){if(a&&s){const o=t(s);r.value.splice(o,1,a)}else a&&r.value.push(a)}function i(a){const s=t(a);s>-1&&r.value.splice(s,1)}return{autoLabelWidth:e,registerLabelWidth:n,deregisterLabelWidth:i}}const se=(r,e)=>{const t=je(e).map(n=>de(n)?n.join("."):n);return t.length>0?r.filter(n=>n.propString&&t.includes(n.propString)):r},Zn="ElForm",kn=K({name:Zn}),Hn=K({...kn,props:Gn,emits:Jn,setup(r,{expose:e,emit:t}){const n=r,i=V(),a=qe([]),s=Tt(),o=ye("form"),l=E(()=>{const{labelPosition:d,inline:h}=n;return[o.b(),o.m(s.value||"default"),{[o.m(`label-${d}`)]:d,[o.m("inline")]:h}]}),b=d=>se(a,[d])[0],f=d=>{a.push(d)},m=d=>{d.prop&&a.splice(a.indexOf(d),1)},F=(d=[])=>{n.model&&se(a,d).forEach(h=>h.resetField())},q=(d=[])=>{se(a,d).forEach(h=>h.clearValidate())},j=E(()=>!!n.model),p=d=>{if(a.length===0)return[];const h=se(a,d);return h.length?h:[]},v=async d=>_(void 0,d),u=async(d=[])=>{if(!j.value)return!1;const h=p(d);if(h.length===0)return!0;let A={};for(const $ of h)try{await $.validate(""),$.validateState==="error"&&!$.error&&$.resetField()}catch(T){A={...A,...T}}return Object.keys(A).length===0?!0:Promise.reject(A)},_=async(d=[],h)=>{let A=!1;const $=!vt(h);try{return A=await u(d),A===!0&&await h?.(A),A}catch(T){if(T instanceof Error)throw T;const R=T;if(n.scrollToError&&i.value){const D=i.value.querySelector(`.${o.b()}-item.is-error`);D?.scrollIntoView(n.scrollIntoViewOptions)}return!A&&await h?.(!1,R),$&&Promise.reject(R)}},y=d=>{var h;const A=b(d);A&&((h=A.$el)==null||h.scrollIntoView(n.scrollIntoViewOptions))};return ce(()=>n.rules,()=>{n.validateOnRuleChange&&v().catch(d=>cr())},{deep:!0,flush:"post"}),ct(Re,qe({...pt(n),emit:t,resetFields:F,clearValidate:q,validateField:_,getField:b,addField:f,removeField:m,...Yn()})),e({validate:v,validateField:_,resetFields:F,clearValidate:q,scrollToField:y,getField:b,fields:a}),(d,h)=>(B(),H("form",{ref_key:"formRef",ref:i,class:C(g(l))},[z(d.$slots,"default")],2))}});var Qn=Le(Hn,[["__file","form.vue"]]);function U(){return U=Object.assign?Object.assign.bind():function(r){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function fe(r,e,t){return ei()?fe=Reflect.construct.bind():fe=function(i,a,s){var o=[null];o.push.apply(o,a);var l=Function.bind.apply(i,o),b=new l;return s&&ie(b,s.prototype),b},fe.apply(null,arguments)}function ti(r){return Function.toString.call(r).indexOf("[native code]")!==-1}function Se(r){var e=typeof Map=="function"?new Map:void 0;return Se=function(n){if(n===null||!ti(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(n))return e.get(n);e.set(n,i)}function i(){return fe(n,arguments,Te(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),ie(i,n)},Se(r)}var ri=/%[sdj%]/g,ni=function(){};function Pe(r){if(!r||!r.length)return null;var e={};return r.forEach(function(t){var n=t.field;e[n]=e[n]||[],e[n].push(t)}),e}function L(r){for(var e=arguments.length,t=new Array(e>1?e-1:0),n=1;n=a)return o;switch(o){case"%s":return String(t[i++]);case"%d":return Number(t[i++]);case"%j":try{return JSON.stringify(t[i++])}catch{return"[Circular]"}break;default:return o}});return s}return r}function ii(r){return r==="string"||r==="url"||r==="hex"||r==="email"||r==="date"||r==="pattern"}function S(r,e){return!!(r==null||e==="array"&&Array.isArray(r)&&!r.length||ii(e)&&typeof r=="string"&&!r)}function ai(r,e,t){var n=[],i=0,a=r.length;function s(o){n.push.apply(n,o||[]),i++,i===a&&t(n)}r.forEach(function(o){e(o,s)})}function nt(r,e,t){var n=0,i=r.length;function a(s){if(s&&s.length){t(s);return}var o=n;n=n+1,o()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},ee={integer:function(e){return ee.number(e)&&parseInt(e,10)===e},float:function(e){return ee.number(e)&&!ee.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!ee.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(ot.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(di())},hex:function(e){return typeof e=="string"&&!!e.match(ot.hex)}},ci=function(e,t,n,i,a){if(e.required&&t===void 0){Lt(e,t,n,i,a);return}var s=["integer","float","array","regexp","object","method","email","number","date","url","hex"],o=e.type;s.indexOf(o)>-1?ee[o](t)||i.push(L(a.messages.types[o],e.fullField,e.type)):o&&typeof t!==e.type&&i.push(L(a.messages.types[o],e.fullField,e.type))},pi=function(e,t,n,i,a){var s=typeof e.len=="number",o=typeof e.min=="number",l=typeof e.max=="number",b=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=t,m=null,F=typeof t=="number",q=typeof t=="string",j=Array.isArray(t);if(F?m="number":q?m="string":j&&(m="array"),!m)return!1;j&&(f=t.length),q&&(f=t.replace(b,"_").length),s?f!==e.len&&i.push(L(a.messages[m].len,e.fullField,e.len)):o&&!l&&fe.max?i.push(L(a.messages[m].max,e.fullField,e.max)):o&&l&&(fe.max)&&i.push(L(a.messages[m].range,e.fullField,e.min,e.max))},Z="enum",vi=function(e,t,n,i,a){e[Z]=Array.isArray(e[Z])?e[Z]:[],e[Z].indexOf(t)===-1&&i.push(L(a.messages[Z],e.fullField,e[Z].join(", ")))},gi=function(e,t,n,i,a){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||i.push(L(a.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var s=new RegExp(e.pattern);s.test(t)||i.push(L(a.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},w={required:Lt,whitespace:ui,type:ci,range:pi,enum:vi,pattern:gi},mi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t,"string")&&!e.required)return n();w.required(e,t,i,s,a,"string"),S(t,"string")||(w.type(e,t,i,s,a),w.range(e,t,i,s,a),w.pattern(e,t,i,s,a),e.whitespace===!0&&w.whitespace(e,t,i,s,a))}n(s)},yi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w.type(e,t,i,s,a)}n(s)},hi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(t===""&&(t=void 0),S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},bi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w.type(e,t,i,s,a)}n(s)},wi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),S(t)||w.type(e,t,i,s,a)}n(s)},Fi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},Ai=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},Oi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(t==null&&!e.required)return n();w.required(e,t,i,s,a,"array"),t!=null&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},xi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w.type(e,t,i,s,a)}n(s)},qi="enum",Ei=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w[qi](e,t,i,s,a)}n(s)},ji=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t,"string")&&!e.required)return n();w.required(e,t,i,s,a),S(t,"string")||w.pattern(e,t,i,s,a)}n(s)},Ti=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t,"date")&&!e.required)return n();if(w.required(e,t,i,s,a),!S(t,"date")){var l;t instanceof Date?l=t:l=new Date(t),w.type(e,l,i,s,a),l&&w.range(e,l.getTime(),i,s,a)}}n(s)},Si=function(e,t,n,i,a){var s=[],o=Array.isArray(t)?"array":typeof t;w.required(e,t,i,s,a,o),n(s)},Oe=function(e,t,n,i,a){var s=e.type,o=[],l=e.required||!e.required&&i.hasOwnProperty(e.field);if(l){if(S(t,s)&&!e.required)return n();w.required(e,t,i,o,a,s),S(t,s)||w.type(e,t,i,o,a)}n(o)},Pi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a)}n(s)},re={string:mi,method:yi,number:hi,boolean:bi,regexp:wi,integer:Fi,float:Ai,array:Oi,object:xi,enum:Ei,pattern:ji,date:Ti,url:Oe,hex:Oe,email:Oe,required:Si,any:Pi};function _e(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var $e=_e(),ae=(function(){function r(t){this.rules=null,this._messages=$e,this.define(t)}var e=r.prototype;return e.define=function(n){var i=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(a){var s=n[a];i.rules[a]=Array.isArray(s)?s:[s]})},e.messages=function(n){return n&&(this._messages=st(_e(),n)),this._messages},e.validate=function(n,i,a){var s=this;i===void 0&&(i={}),a===void 0&&(a=function(){});var o=n,l=i,b=a;if(typeof l=="function"&&(b=l,l={}),!this.rules||Object.keys(this.rules).length===0)return b&&b(null,o),Promise.resolve(o);function f(p){var v=[],u={};function _(d){if(Array.isArray(d)){var h;v=(h=v).concat.apply(h,d)}else v.push(d)}for(var y=0;y");const i=ye("form"),a=V(),s=V(0),o=()=>{var f;if((f=a.value)!=null&&f.firstElementChild){const m=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(m))}else return 0},l=(f="update")=>{yt(()=>{e.default&&r.isAutoWidth&&(f==="update"?s.value=o():f==="remove"&&t?.deregisterLabelWidth(s.value))})},b=()=>l("update");return gt(()=>{b()}),mt(()=>{l("remove")}),Jt(()=>b()),ce(s,(f,m)=>{r.updateAll&&t?.registerLabelWidth(f,m)}),vr(E(()=>{var f,m;return(m=(f=a.value)==null?void 0:f.firstElementChild)!=null?m:null}),b),()=>{var f,m;if(!e)return null;const{isAutoWidth:F}=r;if(F){const q=t?.autoLabelWidth,j=n?.hasLabel,p={};if(j&&q&&q!=="auto"){const v=Math.max(0,Number.parseInt(q,10)-s.value),_=(n.labelPosition||t.labelPosition)==="left"?"marginRight":"marginLeft";v&&(p[_]=`${v}px`)}return ne("div",{ref:a,class:[i.be("item","label-wrap")],style:p},[(f=e.default)==null?void 0:f.call(e)])}else return ne(dt,{ref:a},[(m=e.default)==null?void 0:m.call(e)])}}});const Mi=K({name:"ElFormItem"}),Li=K({...Mi,props:$i,setup(r,{expose:e}){const t=r,n=ft(),i=pe(Re,void 0),a=pe(Ee,void 0),s=Tt(void 0,{formItem:!1}),o=ye("form-item"),l=fr().value,b=V([]),f=V(""),m=ur(f,100),F=V(""),q=V();let j,p=!1;const v=E(()=>t.labelPosition||i?.labelPosition),u=E(()=>{var c;return v.value==="top"?{}:{width:Je((c=t.labelWidth)!=null?c:i?.labelWidth)}}),_=E(()=>{var c;if(v.value==="top"||i?.inline)return{};if(!t.label&&!t.labelWidth&&D)return{};const O=Je((c=t.labelWidth)!=null?c:i?.labelWidth);return!t.label&&!n.label?{marginLeft:O}:{}}),y=E(()=>[o.b(),o.m(s.value),o.is("error",f.value==="error"),o.is("validating",f.value==="validating"),o.is("success",f.value==="success"),o.is("required",Nt.value||t.required),o.is("no-asterisk",i?.hideRequiredAsterisk),i?.requireAsteriskPosition==="right"?"asterisk-right":"asterisk-left",{[o.m("feedback")]:i?.statusIcon,[o.m(`label-${v.value}`)]:v.value}]),d=E(()=>Et(t.inlineMessage)?t.inlineMessage:i?.inlineMessage||!1),h=E(()=>[o.e("error"),{[o.em("error","inline")]:d.value}]),A=E(()=>t.prop?de(t.prop)?t.prop.join("."):t.prop:""),$=E(()=>!!(t.label||n.label)),T=E(()=>{var c;return(c=t.for)!=null?c:b.value.length===1?b.value[0]:void 0}),R=E(()=>!T.value&&$.value),D=!!a,G=E(()=>{const c=i?.model;if(!(!c||!t.prop))return Ae(c,t.prop).value}),M=E(()=>{const{required:c}=t,O=[];t.rules&&O.push(...je(t.rules));const I=i?.rules;if(I&&t.prop){const P=Ae(I,t.prop).value;P&&O.push(...je(P))}if(c!==void 0){const P=O.map((W,Y)=>[W,Y]).filter(([W])=>"required"in W);if(P.length>0)for(const[W,Y]of P)W.required!==c&&(O[Y]={...W,required:c});else O.push({required:c})}return O}),N=E(()=>M.value.length>0),be=c=>M.value.filter(I=>!I.trigger||!c?!0:de(I.trigger)?I.trigger.includes(c):I.trigger===c).map(({trigger:I,...P})=>P),Nt=E(()=>M.value.some(c=>c.required)),Ct=E(()=>{var c;return m.value==="error"&&t.showMessage&&((c=i?.showMessage)!=null?c:!0)}),Be=E(()=>`${t.label||""}${i?.labelSuffix||""}`),J=c=>{f.value=c},Bt=c=>{var O,I;const{errors:P,fields:W}=c;(!P||!W)&&console.error(c),J("error"),F.value=P?(I=(O=P?.[0])==null?void 0:O.message)!=null?I:`${t.prop} is required`:"",i?.emit("validate",t.prop,!1,F.value)},Wt=()=>{J("success"),i?.emit("validate",t.prop,!0,"")},Vt=async c=>{const O=A.value;return new ae({[O]:c}).validate({[O]:G.value},{firstFields:!0}).then(()=>(Wt(),!0)).catch(P=>(Bt(P),Promise.reject(P)))},We=async(c,O)=>{if(p||!t.prop)return!1;const I=vt(O);if(!N.value)return O?.(!1),!1;const P=be(c);return P.length===0?(O?.(!0),!0):(J("validating"),Vt(P).then(()=>(O?.(!0),!0)).catch(W=>{const{fields:Y}=W;return O?.(!1,Y),I?!1:Promise.reject(Y)}))},we=()=>{J(""),F.value="",p=!1},Ve=async()=>{const c=i?.model;if(!c||!t.prop)return;const O=Ae(c,t.prop);p=!0,O.value=rt(j),await yt(),we(),p=!1},Dt=c=>{b.value.includes(c)||b.value.push(c)},Ut=c=>{b.value=b.value.filter(O=>O!==c)};ce(()=>t.error,c=>{F.value=c||"",J(c?"error":"")},{immediate:!0}),ce(()=>t.validateStatus,c=>J(c||""));const Fe=qe({...pt(t),$el:q,size:s,validateMessage:F,validateState:f,labelId:l,inputIds:b,isGroup:R,hasLabel:$,fieldValue:G,addInputId:Dt,removeInputId:Ut,resetField:Ve,clearValidate:we,validate:We,propString:A});return ct(Ee,Fe),gt(()=>{t.prop&&(i?.addField(Fe),j=rt(G.value))}),mt(()=>{i?.removeField(Fe)}),e({size:s,validateMessage:F,validateState:f,validate:We,clearValidate:we,resetField:Ve}),(c,O)=>{var I;return B(),H("div",{ref_key:"formItemRef",ref:q,class:C(g(y)),role:g(R)?"group":void 0,"aria-labelledby":g(R)?g(l):void 0},[ne(g(Ii),{"is-auto-width":g(u).width==="auto","update-all":((I=g(i))==null?void 0:I.labelWidth)==="auto"},{default:Q(()=>[c.label||c.$slots.label?(B(),X(ut(g(T)?"label":"div"),{key:0,id:g(l),for:g(T),class:C(g(o).e("label")),style:Ue(g(u))},{default:Q(()=>[z(c.$slots,"label",{label:g(Be)},()=>[xe(te(g(Be)),1)])]),_:3},8,["id","for","class","style"])):k("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),ue("div",{class:C(g(o).e("content")),style:Ue(g(_))},[z(c.$slots,"default"),ne(Yt,{name:`${g(o).namespace.value}-zoom-in-top`},{default:Q(()=>[g(Ct)?z(c.$slots,"error",{key:0,error:F.value},()=>[ue("div",{class:C(g(h))},te(F.value),3)]):k("v-if",!0)]),_:3},8,["name"])],6)],10,["role","aria-labelledby"])}}});var Rt=Le(Li,[["__file","form-item.vue"]]);const Wi=qt(Qn,{FormItem:Rt}),Vi=dr(Rt);export{Bi as E,Wi as a,Vi as b,he as c,mr as d,qr as e,Nr as f,St as g,Sr as h,an as i,le as j,Ne as k}; diff --git a/static/app/assets/el-alert-DTUOkrAB.js b/static/app/assets/el-alert-DTUOkrAB.js new file mode 100644 index 0000000..a4bfc36 --- /dev/null +++ b/static/app/assets/el-alert-DTUOkrAB.js @@ -0,0 +1,12 @@ +import{A as K,S as lt,g as V,h as E,c as X,o as B,s as H,w as zt,k as ue,n as N,C as g,l as k,B as z,D as ut,j as Q,x as xe,t as te,F as dt,p as ne,R as Kt,T as Gt,K as de,J as De,f as qe,L as ce,M as ct,a2 as pt,a0 as vt,Q as pe,i as gt,z as mt,a6 as Jt,W as yt,U as Ue,ah as Yt}from"./vendor-vue-WbiK4TmU.js";import{e as Ie,j as Zt,ak as ht,al as bt,am as kt,f as Qt,an as Ht,k as wt,ae as Xt,ao as Ft,ap as er,aq as tr,ar as rr,as as ze,at as Ke,af as Ot,au as Me,av as At,aw as ve,l as nr,S as ir,n as ar,ax as sr,b as me,ay as or,az as xt,_ as Le,u as ye,E as Ge,aA as fr,d as qt,v as Et,t as ge,aB as jt,aC as lr,B as Je,O as Oe,z as ur}from"./base-xgxQQEpV.js";import{u as Tt,f as Re,d as Ee}from"./el-button-LKkD3jQh.js";import{c as je}from"./el-input-BaZNy9Kg.js";import{d as dr,t as cr}from"./aria-DLpFpzDe.js";import{c as pr}from"./http-BoPYlvwK.js";import{b as vr}from"./index-CoYtSGUZ.js";var Ye=Object.create,gr=(function(){function r(){}return function(e){if(!Ie(e))return{};if(Ye)return Ye(e);r.prototype=e;var t=new r;return r.prototype=void 0,t}})();function mr(r,e){var t=-1,n=r.length;for(e||(e=Array(n));++tr instanceof MouseEvent},Dn=K({name:"ElAlert"}),Un=K({...Dn,props:Wn,emits:Vn,setup(r,{emit:e}){const t=r,{Close:n}=fr,i=lt(),a=ye("alert"),s=V(!0),o=E(()=>xt[t.type]),f=E(()=>!!(t.description||i.default)),b=l=>{s.value=!1,e("close",l)};return t.showAfter||t.hideAfter||t.autoClose,(l,m)=>(B(),X(Gt,{name:g(a).b("fade"),persisted:""},{default:H(()=>[zt(ue("div",{class:N([g(a).b(),g(a).m(l.type),g(a).is("center",l.center),g(a).is(l.effect)]),role:"alert"},[l.showIcon&&(l.$slots.icon||g(o))?(B(),X(g(Ge),{key:0,class:N([g(a).e("icon"),g(a).is("big",g(f))])},{default:H(()=>[z(l.$slots,"icon",{},()=>[(B(),X(ut(g(o))))])]),_:3},8,["class"])):k("v-if",!0),ue("div",{class:N(g(a).e("content"))},[l.title||l.$slots.title?(B(),Q("span",{key:0,class:N([g(a).e("title"),{"with-description":g(f)}])},[z(l.$slots,"title",{},()=>[xe(te(l.title),1)])],2)):k("v-if",!0),g(f)?(B(),Q("p",{key:1,class:N(g(a).e("description"))},[z(l.$slots,"default",{},()=>[xe(te(l.description),1)])],2)):k("v-if",!0),l.closable?(B(),Q(dt,{key:2},[l.closeText?(B(),Q("div",{key:0,class:N([g(a).e("close-btn"),g(a).is("customed")]),onClick:b},te(l.closeText),3)):(B(),X(g(Ge),{key:1,class:N(g(a).e("close-btn")),onClick:b},{default:H(()=>[ne(g(n))]),_:1},8,["class"]))],64)):k("v-if",!0)],2)],2),[[Kt,s.value]])]),_:3},8,["name"]))}});var zn=Le(Un,[["__file","alert.vue"]]);const Ui=qt(zn),Kn=me({size:{type:String,values:jt},disabled:Boolean}),Gn=me({...Kn,model:Object,rules:{type:ge(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:ge([Object,Boolean]),default:!0}}),Jn={validate:(r,e,t)=>(de(r)||De(r))&&Et(e)&&De(t)};function Yn(){const r=V([]),e=E(()=>{if(!r.value.length)return"0";const a=Math.max(...r.value);return a?`${a}px`:""});function t(a){const s=r.value.indexOf(a);return s===-1&&e.value,s}function n(a,s){if(a&&s){const o=t(s);r.value.splice(o,1,a)}else a&&r.value.push(a)}function i(a){const s=t(a);s>-1&&r.value.splice(s,1)}return{autoLabelWidth:e,registerLabelWidth:n,deregisterLabelWidth:i}}const se=(r,e)=>{const t=je(e).map(n=>de(n)?n.join("."):n);return t.length>0?r.filter(n=>n.propString&&t.includes(n.propString)):r},Zn="ElForm",kn=K({name:Zn}),Qn=K({...kn,props:Gn,emits:Jn,setup(r,{expose:e,emit:t}){const n=r,i=V(),a=qe([]),s=Tt(),o=ye("form"),f=E(()=>{const{labelPosition:d,inline:h}=n;return[o.b(),o.m(s.value||"default"),{[o.m(`label-${d}`)]:d,[o.m("inline")]:h}]}),b=d=>se(a,[d])[0],l=d=>{a.push(d)},m=d=>{d.prop&&a.splice(a.indexOf(d),1)},F=(d=[])=>{n.model&&se(a,d).forEach(h=>h.resetField())},q=(d=[])=>{se(a,d).forEach(h=>h.clearValidate())},j=E(()=>!!n.model),p=d=>{if(a.length===0)return[];const h=se(a,d);return h.length?h:[]},v=async d=>_(void 0,d),u=async(d=[])=>{if(!j.value)return!1;const h=p(d);if(h.length===0)return!0;let O={};for(const $ of h)try{await $.validate(""),$.validateState==="error"&&!$.error&&$.resetField()}catch(T){O={...O,...T}}return Object.keys(O).length===0?!0:Promise.reject(O)},_=async(d=[],h)=>{let O=!1;const $=!vt(h);try{return O=await u(d),O===!0&&await h?.(O),O}catch(T){if(T instanceof Error)throw T;const R=T;if(n.scrollToError&&i.value){const D=i.value.querySelector(`.${o.b()}-item.is-error`);D?.scrollIntoView(n.scrollIntoViewOptions)}return!O&&await h?.(!1,R),$&&Promise.reject(R)}},y=d=>{var h;const O=b(d);O&&((h=O.$el)==null||h.scrollIntoView(n.scrollIntoViewOptions))};return ce(()=>n.rules,()=>{n.validateOnRuleChange&&v().catch(d=>dr())},{deep:!0,flush:"post"}),ct(Re,qe({...pt(n),emit:t,resetFields:F,clearValidate:q,validateField:_,getField:b,addField:l,removeField:m,...Yn()})),e({validate:v,validateField:_,resetFields:F,clearValidate:q,scrollToField:y,getField:b,fields:a}),(d,h)=>(B(),Q("form",{ref_key:"formRef",ref:i,class:N(g(f))},[z(d.$slots,"default")],2))}});var Hn=Le(Qn,[["__file","form.vue"]]);function U(){return U=Object.assign?Object.assign.bind():function(r){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function le(r,e,t){return ei()?le=Reflect.construct.bind():le=function(i,a,s){var o=[null];o.push.apply(o,a);var f=Function.bind.apply(i,o),b=new f;return s&&ie(b,s.prototype),b},le.apply(null,arguments)}function ti(r){return Function.toString.call(r).indexOf("[native code]")!==-1}function Se(r){var e=typeof Map=="function"?new Map:void 0;return Se=function(n){if(n===null||!ti(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(n))return e.get(n);e.set(n,i)}function i(){return le(n,arguments,Te(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),ie(i,n)},Se(r)}var ri=/%[sdj%]/g,ni=function(){};function Pe(r){if(!r||!r.length)return null;var e={};return r.forEach(function(t){var n=t.field;e[n]=e[n]||[],e[n].push(t)}),e}function L(r){for(var e=arguments.length,t=new Array(e>1?e-1:0),n=1;n=a)return o;switch(o){case"%s":return String(t[i++]);case"%d":return Number(t[i++]);case"%j":try{return JSON.stringify(t[i++])}catch{return"[Circular]"}break;default:return o}});return s}return r}function ii(r){return r==="string"||r==="url"||r==="hex"||r==="email"||r==="date"||r==="pattern"}function S(r,e){return!!(r==null||e==="array"&&Array.isArray(r)&&!r.length||ii(e)&&typeof r=="string"&&!r)}function ai(r,e,t){var n=[],i=0,a=r.length;function s(o){n.push.apply(n,o||[]),i++,i===a&&t(n)}r.forEach(function(o){e(o,s)})}function nt(r,e,t){var n=0,i=r.length;function a(s){if(s&&s.length){t(s);return}var o=n;n=n+1,o()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},ee={integer:function(e){return ee.number(e)&&parseInt(e,10)===e},float:function(e){return ee.number(e)&&!ee.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!ee.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(ot.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(di())},hex:function(e){return typeof e=="string"&&!!e.match(ot.hex)}},ci=function(e,t,n,i,a){if(e.required&&t===void 0){Lt(e,t,n,i,a);return}var s=["integer","float","array","regexp","object","method","email","number","date","url","hex"],o=e.type;s.indexOf(o)>-1?ee[o](t)||i.push(L(a.messages.types[o],e.fullField,e.type)):o&&typeof t!==e.type&&i.push(L(a.messages.types[o],e.fullField,e.type))},pi=function(e,t,n,i,a){var s=typeof e.len=="number",o=typeof e.min=="number",f=typeof e.max=="number",b=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=t,m=null,F=typeof t=="number",q=typeof t=="string",j=Array.isArray(t);if(F?m="number":q?m="string":j&&(m="array"),!m)return!1;j&&(l=t.length),q&&(l=t.replace(b,"_").length),s?l!==e.len&&i.push(L(a.messages[m].len,e.fullField,e.len)):o&&!f&&le.max?i.push(L(a.messages[m].max,e.fullField,e.max)):o&&f&&(le.max)&&i.push(L(a.messages[m].range,e.fullField,e.min,e.max))},Z="enum",vi=function(e,t,n,i,a){e[Z]=Array.isArray(e[Z])?e[Z]:[],e[Z].indexOf(t)===-1&&i.push(L(a.messages[Z],e.fullField,e[Z].join(", ")))},gi=function(e,t,n,i,a){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||i.push(L(a.messages.pattern.mismatch,e.fullField,t,e.pattern));else if(typeof e.pattern=="string"){var s=new RegExp(e.pattern);s.test(t)||i.push(L(a.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},w={required:Lt,whitespace:ui,type:ci,range:pi,enum:vi,pattern:gi},mi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t,"string")&&!e.required)return n();w.required(e,t,i,s,a,"string"),S(t,"string")||(w.type(e,t,i,s,a),w.range(e,t,i,s,a),w.pattern(e,t,i,s,a),e.whitespace===!0&&w.whitespace(e,t,i,s,a))}n(s)},yi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w.type(e,t,i,s,a)}n(s)},hi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(t===""&&(t=void 0),S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},bi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w.type(e,t,i,s,a)}n(s)},wi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),S(t)||w.type(e,t,i,s,a)}n(s)},Fi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},Oi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},Ai=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(t==null&&!e.required)return n();w.required(e,t,i,s,a,"array"),t!=null&&(w.type(e,t,i,s,a),w.range(e,t,i,s,a))}n(s)},xi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w.type(e,t,i,s,a)}n(s)},qi="enum",Ei=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a),t!==void 0&&w[qi](e,t,i,s,a)}n(s)},ji=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t,"string")&&!e.required)return n();w.required(e,t,i,s,a),S(t,"string")||w.pattern(e,t,i,s,a)}n(s)},Ti=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t,"date")&&!e.required)return n();if(w.required(e,t,i,s,a),!S(t,"date")){var f;t instanceof Date?f=t:f=new Date(t),w.type(e,f,i,s,a),f&&w.range(e,f.getTime(),i,s,a)}}n(s)},Si=function(e,t,n,i,a){var s=[],o=Array.isArray(t)?"array":typeof t;w.required(e,t,i,s,a,o),n(s)},Ae=function(e,t,n,i,a){var s=e.type,o=[],f=e.required||!e.required&&i.hasOwnProperty(e.field);if(f){if(S(t,s)&&!e.required)return n();w.required(e,t,i,o,a,s),S(t,s)||w.type(e,t,i,o,a)}n(o)},Pi=function(e,t,n,i,a){var s=[],o=e.required||!e.required&&i.hasOwnProperty(e.field);if(o){if(S(t)&&!e.required)return n();w.required(e,t,i,s,a)}n(s)},re={string:mi,method:yi,number:hi,boolean:bi,regexp:wi,integer:Fi,float:Oi,array:Ai,object:xi,enum:Ei,pattern:ji,date:Ti,url:Ae,hex:Ae,email:Ae,required:Si,any:Pi};function _e(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var $e=_e(),ae=(function(){function r(t){this.rules=null,this._messages=$e,this.define(t)}var e=r.prototype;return e.define=function(n){var i=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(a){var s=n[a];i.rules[a]=Array.isArray(s)?s:[s]})},e.messages=function(n){return n&&(this._messages=st(_e(),n)),this._messages},e.validate=function(n,i,a){var s=this;i===void 0&&(i={}),a===void 0&&(a=function(){});var o=n,f=i,b=a;if(typeof f=="function"&&(b=f,f={}),!this.rules||Object.keys(this.rules).length===0)return b&&b(null,o),Promise.resolve(o);function l(p){var v=[],u={};function _(d){if(Array.isArray(d)){var h;v=(h=v).concat.apply(h,d)}else v.push(d)}for(var y=0;y");const i=ye("form"),a=V(),s=V(0),o=()=>{var l;if((l=a.value)!=null&&l.firstElementChild){const m=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(m))}else return 0},f=(l="update")=>{yt(()=>{e.default&&r.isAutoWidth&&(l==="update"?s.value=o():l==="remove"&&t?.deregisterLabelWidth(s.value))})},b=()=>f("update");return gt(()=>{b()}),mt(()=>{f("remove")}),Jt(()=>b()),ce(s,(l,m)=>{r.updateAll&&t?.registerLabelWidth(l,m)}),pr(E(()=>{var l,m;return(m=(l=a.value)==null?void 0:l.firstElementChild)!=null?m:null}),b),()=>{var l,m;if(!e)return null;const{isAutoWidth:F}=r;if(F){const q=t?.autoLabelWidth,j=n?.hasLabel,p={};if(j&&q&&q!=="auto"){const v=Math.max(0,Number.parseInt(q,10)-s.value),_=(n.labelPosition||t.labelPosition)==="left"?"marginRight":"marginLeft";v&&(p[_]=`${v}px`)}return ne("div",{ref:a,class:[i.be("item","label-wrap")],style:p},[(l=e.default)==null?void 0:l.call(e)])}else return ne(dt,{ref:a},[(m=e.default)==null?void 0:m.call(e)])}}});const Mi=K({name:"ElFormItem"}),Li=K({...Mi,props:$i,setup(r,{expose:e}){const t=r,n=lt(),i=pe(Re,void 0),a=pe(Ee,void 0),s=Tt(void 0,{formItem:!1}),o=ye("form-item"),f=vr().value,b=V([]),l=V(""),m=lr(l,100),F=V(""),q=V();let j,p=!1;const v=E(()=>t.labelPosition||i?.labelPosition),u=E(()=>{var c;return v.value==="top"?{}:{width:Je((c=t.labelWidth)!=null?c:i?.labelWidth)}}),_=E(()=>{var c;if(v.value==="top"||i?.inline)return{};if(!t.label&&!t.labelWidth&&D)return{};const A=Je((c=t.labelWidth)!=null?c:i?.labelWidth);return!t.label&&!n.label?{marginLeft:A}:{}}),y=E(()=>[o.b(),o.m(s.value),o.is("error",l.value==="error"),o.is("validating",l.value==="validating"),o.is("success",l.value==="success"),o.is("required",Ct.value||t.required),o.is("no-asterisk",i?.hideRequiredAsterisk),i?.requireAsteriskPosition==="right"?"asterisk-right":"asterisk-left",{[o.m("feedback")]:i?.statusIcon,[o.m(`label-${v.value}`)]:v.value}]),d=E(()=>Et(t.inlineMessage)?t.inlineMessage:i?.inlineMessage||!1),h=E(()=>[o.e("error"),{[o.em("error","inline")]:d.value}]),O=E(()=>t.prop?de(t.prop)?t.prop.join("."):t.prop:""),$=E(()=>!!(t.label||n.label)),T=E(()=>{var c;return(c=t.for)!=null?c:b.value.length===1?b.value[0]:void 0}),R=E(()=>!T.value&&$.value),D=!!a,G=E(()=>{const c=i?.model;if(!(!c||!t.prop))return Oe(c,t.prop).value}),M=E(()=>{const{required:c}=t,A=[];t.rules&&A.push(...je(t.rules));const I=i?.rules;if(I&&t.prop){const P=Oe(I,t.prop).value;P&&A.push(...je(P))}if(c!==void 0){const P=A.map((W,Y)=>[W,Y]).filter(([W])=>"required"in W);if(P.length>0)for(const[W,Y]of P)W.required!==c&&(A[Y]={...W,required:c});else A.push({required:c})}return A}),C=E(()=>M.value.length>0),be=c=>M.value.filter(I=>!I.trigger||!c?!0:de(I.trigger)?I.trigger.includes(c):I.trigger===c).map(({trigger:I,...P})=>P),Ct=E(()=>M.value.some(c=>c.required)),Nt=E(()=>{var c;return m.value==="error"&&t.showMessage&&((c=i?.showMessage)!=null?c:!0)}),Be=E(()=>`${t.label||""}${i?.labelSuffix||""}`),J=c=>{l.value=c},Bt=c=>{var A,I;const{errors:P,fields:W}=c;(!P||!W)&&console.error(c),J("error"),F.value=P?(I=(A=P?.[0])==null?void 0:A.message)!=null?I:`${t.prop} is required`:"",i?.emit("validate",t.prop,!1,F.value)},Wt=()=>{J("success"),i?.emit("validate",t.prop,!0,"")},Vt=async c=>{const A=O.value;return new ae({[A]:c}).validate({[A]:G.value},{firstFields:!0}).then(()=>(Wt(),!0)).catch(P=>(Bt(P),Promise.reject(P)))},We=async(c,A)=>{if(p||!t.prop)return!1;const I=vt(A);if(!C.value)return A?.(!1),!1;const P=be(c);return P.length===0?(A?.(!0),!0):(J("validating"),Vt(P).then(()=>(A?.(!0),!0)).catch(W=>{const{fields:Y}=W;return A?.(!1,Y),I?!1:Promise.reject(Y)}))},we=()=>{J(""),F.value="",p=!1},Ve=async()=>{const c=i?.model;if(!c||!t.prop)return;const A=Oe(c,t.prop);p=!0,A.value=rt(j),await yt(),we(),p=!1},Dt=c=>{b.value.includes(c)||b.value.push(c)},Ut=c=>{b.value=b.value.filter(A=>A!==c)};ce(()=>t.error,c=>{F.value=c||"",J(c?"error":"")},{immediate:!0}),ce(()=>t.validateStatus,c=>J(c||""));const Fe=qe({...pt(t),$el:q,size:s,validateMessage:F,validateState:l,labelId:f,inputIds:b,isGroup:R,hasLabel:$,fieldValue:G,addInputId:Dt,removeInputId:Ut,resetField:Ve,clearValidate:we,validate:We,propString:O});return ct(Ee,Fe),gt(()=>{t.prop&&(i?.addField(Fe),j=rt(G.value))}),mt(()=>{i?.removeField(Fe)}),e({size:s,validateMessage:F,validateState:l,validate:We,clearValidate:we,resetField:Ve}),(c,A)=>{var I;return B(),Q("div",{ref_key:"formItemRef",ref:q,class:N(g(y)),role:g(R)?"group":void 0,"aria-labelledby":g(R)?g(f):void 0},[ne(g(Ii),{"is-auto-width":g(u).width==="auto","update-all":((I=g(i))==null?void 0:I.labelWidth)==="auto"},{default:H(()=>[c.label||c.$slots.label?(B(),X(ut(g(T)?"label":"div"),{key:0,id:g(f),for:g(T),class:N(g(o).e("label")),style:Ue(g(u))},{default:H(()=>[z(c.$slots,"label",{label:g(Be)},()=>[xe(te(g(Be)),1)])]),_:3},8,["id","for","class","style"])):k("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),ue("div",{class:N(g(o).e("content")),style:Ue(g(_))},[z(c.$slots,"default"),ne(Yt,{name:`${g(o).namespace.value}-zoom-in-top`},{default:H(()=>[g(Nt)?z(c.$slots,"error",{key:0,error:F.value},()=>[ue("div",{class:N(g(h))},te(F.value),3)]):k("v-if",!0)]),_:3},8,["name"])],6)],10,["role","aria-labelledby"])}}});var Rt=Le(Li,[["__file","form-item.vue"]]);const zi=qt(Hn,{FormItem:Rt}),Ki=ur(Rt);export{Ui as E,zi as a,Ki as b,he as c,mr as d,qr as e,Cr as f,St as g,Sr as h,an as i,fe as j,Ce as k}; diff --git a/static/app/assets/el-button-BRDnKxwT.css b/static/app/assets/el-button-BRDnKxwT.css new file mode 100644 index 0000000..343a183 --- /dev/null +++ b/static/app/assets/el-button-BRDnKxwT.css @@ -0,0 +1 @@ +.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;content:"";inset:-1px;pointer-events:none;position:absolute;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)} diff --git a/static/app/assets/el-button-DF1Fi_iE.css b/static/app/assets/el-button-DF1Fi_iE.css deleted file mode 100644 index 104f6a3..0000000 --- a/static/app/assets/el-button-DF1Fi_iE.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px}:root{color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;content:"";inset:-1px;pointer-events:none;position:absolute;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)} diff --git a/static/app/assets/el-button-DWxIvzz-.js b/static/app/assets/el-button-DWxIvzz-.js deleted file mode 100644 index 108b155..0000000 --- a/static/app/assets/el-button-DWxIvzz-.js +++ /dev/null @@ -1 +0,0 @@ -import{V as E,Q as P,g as O,h as p,C as y,J as It,K as Fe,X as je,E as wr,Y as xr,ap as Et,aw as Sr,ar as Cr,i as Lt,W as Tr,L as ze,a3 as Ar,_ as Ke,ax as Mr,a0 as Ce,M as Bt,ay as Pr,ad as Or,A as _,j as b,o as h,B as Q,O as Nt,k as m,Z as Te,a7 as $r,S as Ir,an as Er,c as Y,s as ve,l as We,F as Lr,n as Ae,D as _e,f as Br}from"./vendor-vue-DxN60LNb.js";const Ft=Symbol(),ce="el",Nr="is-",H=(e,t,r,a,n)=>{let o=`${e}-${t}`;return r&&(o+=`-${r}`),a&&(o+=`__${a}`),n&&(o+=`--${n}`),o},jt=Symbol("namespaceContextKey"),zt=e=>{const t=e||(E()?P(jt,O(ce)):O(ce));return p(()=>y(t)||ce)},ae=(e,t)=>{const r=zt(t);return{namespace:r,b:(f="")=>H(r.value,e,f,"",""),e:f=>f?H(r.value,e,"",f,""):"",m:f=>f?H(r.value,e,"","",f):"",be:(f,v)=>f&&v?H(r.value,e,f,v,""):"",em:(f,v)=>f&&v?H(r.value,e,"",f,v):"",bm:(f,v)=>f&&v?H(r.value,e,f,"",v):"",bem:(f,v,u)=>f&&v&&u?H(r.value,e,f,v,u):"",is:(f,...v)=>{const u=v.length>=1?v[0]:!0;return f&&u?`${Nr}${f}`:""},cssVar:f=>{const v={};for(const u in f)f[u]&&(v[`--${r.value}-${u}`]=f[u]);return v},cssVarName:f=>`--${r.value}-${f}`,cssVarBlock:f=>{const v={};for(const u in f)f[u]&&(v[`--${r.value}-${e}-${u}`]=f[u]);return v},cssVarBlockName:f=>`--${r.value}-${e}-${f}`}};var Rt=typeof global=="object"&&global&&global.Object===Object&&global,Fr=typeof self=="object"&&self&&self.Object===Object&&self,B=Rt||Fr||Function("return this")(),D=B.Symbol,kt=Object.prototype,jr=kt.hasOwnProperty,zr=kt.toString,X=D?D.toStringTag:void 0;function Rr(e){var t=jr.call(e,X),r=e[X];try{e[X]=void 0;var a=!0}catch{}var n=zr.call(e);return a&&(t?e[X]=r:delete e[X]),n}var kr=Object.prototype,Dr=kr.toString;function Hr(e){return Dr.call(e)}var Vr="[object Null]",Gr="[object Undefined]",qe=D?D.toStringTag:void 0;function Z(e){return e==null?e===void 0?Gr:Vr:qe&&qe in Object(e)?Rr(e):Hr(e)}function J(e){return e!=null&&typeof e=="object"}var Ur="[object Symbol]";function Re(e){return typeof e=="symbol"||J(e)&&Z(e)==Ur}function Kr(e,t){for(var r=-1,a=e==null?0:e.length,n=Array(a);++r-1&&e%1==0&&e-1&&e%1==0&&e<=ga}function va(e){return e!=null&&Gt(e.length)&&!Ht(e)}var _a=Object.prototype;function ma(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||_a;return e===r}function ba(e,t){for(var r=-1,a=Array(e);++r-1}function $n(e,t){var r=this.__data__,a=pe(r,e);return a<0?(++this.size,r.push([e,t])):r[a][1]=t,this}function N(e){var t=-1,r=e==null?0:e.length;for(this.clear();++ti))return!1;var c=o.get(e),d=o.get(t);if(c&&d)return c==t&&d==e;var g=-1,x=!0,M=r&_o?new fe:void 0;for(o.set(e,t),o.set(t,e);++ge===void 0,Ii=e=>typeof e=="boolean",er=e=>typeof e=="number",Ei=e=>!e&&e!==0||Fe(e)&&e.length===0||je(e)&&!Object.keys(e).length,Li=e=>typeof Element>"u"?!1:e instanceof Element,Bi=e=>Vo(e),Ko=e=>It(e)?!Number.isNaN(Number(e)):!1;var Wo=Object.defineProperty,qo=Object.defineProperties,Jo=Object.getOwnPropertyDescriptors,vt=Object.getOwnPropertySymbols,Zo=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable,_t=(e,t,r)=>t in e?Wo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Xo=(e,t)=>{for(var r in t||(t={}))Zo.call(t,r)&&_t(e,r,t[r]);if(vt)for(var r of vt(t))Yo.call(t,r)&&_t(e,r,t[r]);return e},Qo=(e,t)=>qo(e,Jo(t));function es(e,t){var r;const a=wr();return xr(()=>{a.value=e()},Qo(Xo({},t),{flush:(r=void 0)!=null?r:"sync"})),Et(a)}var mt;const ge=typeof window<"u",Ni=e=>typeof e=="string",Fi=(e,t,r)=>Math.min(r,Math.max(t,e)),bt=()=>{},ji=ge&&((mt=window?.navigator)==null?void 0:mt.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Ee(e){return typeof e=="function"?e():y(e)}function ts(e,t){function r(...a){return new Promise((n,o)=>{Promise.resolve(e(()=>t.apply(this,a),{fn:t,thisArg:this,args:a})).then(n).catch(o)})}return r}function rs(e,t={}){let r,a,n=bt;const o=i=>{clearTimeout(i),n(),n=bt};return i=>{const l=Ee(e),c=Ee(t.maxWait);return r&&o(r),l<=0||c!==void 0&&c<=0?(a&&(o(a),a=null),Promise.resolve(i())):new Promise((d,g)=>{n=t.rejectOnCancel?g:d,c&&!a&&(a=setTimeout(()=>{r&&o(r),a=null,d(i())},c)),r=setTimeout(()=>{a&&o(a),a=null,d(i())},l)})}}function zi(e){return e}function as(e){return Sr()?(Cr(e),!0):!1}function ns(e,t=200,r={}){return ts(rs(t,r),e)}function Ri(e,t=200,r={}){const a=O(e.value),n=ns(()=>{a.value=e.value},t,r);return ze(e,()=>n()),a}function ki(e,t=!0){E()?Lt(e):t?e():Tr(e)}function Di(e,t,r={}){const{immediate:a=!0}=r,n=O(!1);let o=null;function s(){o&&(clearTimeout(o),o=null)}function i(){n.value=!1,s()}function l(...c){s(),n.value=!0,o=setTimeout(()=>{n.value=!1,o=null,e(...c)},Ee(t))}return a&&(n.value=!0,ge&&l()),as(i),{isPending:Et(n),start:l,stop:i}}const yt={current:0},wt=O(0),tr=2e3,xt=Symbol("elZIndexContextKey"),rr=Symbol("zIndexContextKey"),os=e=>{const t=E()?P(xt,yt):yt,r=e||(E()?P(rr,void 0):void 0),a=p(()=>{const s=y(r);return er(s)?s:tr}),n=p(()=>a.value+wt.value),o=()=>(t.current++,wt.value=t.current,n.value);return!ge&&P(xt),{initialZIndex:a,currentZIndex:n,nextZIndex:o}};var ss={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value",alphaDescription:"alpha {alpha}, current color is {color}",hueLabel:"pick hue value",hueDescription:"hue {hue}, current color is {color}",svLabel:"pick saturation and brightness value",svDescription:"saturation {saturation}, brightness {brightness}, current color is {color}",predefineDescription:"select {value} as the color"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum",selectAllLabel:"Select all rows",selectRowLabel:"Select this row",expandRowLabel:"Expand this row",collapseRowLabel:"Collapse this row",sortLabel:"Sort by {column}",filterLabel:"Filter by {column}"},tag:{close:"Close this tag"},tour:{next:"Next",previous:"Previous",finish:"Finish",close:"Close this dialog"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const is=e=>(t,r)=>ls(t,r,y(e)),ls=(e,t,r)=>Yt(r,e,e).replace(/\{(\w+)\}/g,(a,n)=>{var o;return`${(o=t?.[n])!=null?o:`{${n}}`}`}),cs=e=>{const t=p(()=>y(e).name),r=Ar(e)?e:O(e);return{lang:t,locale:r,t:is(e)}},ar=Symbol("localeContextKey"),us=e=>{const t=e||P(ar,O());return cs(p(()=>t.value||ss))},nr="__epPropKey",ne=e=>e,fs=e=>je(e)&&!!e[nr],or=(e,t)=>{if(!je(e)||fs(e))return e;const{values:r,required:a,default:n,type:o,validator:s}=e,l={type:o,required:!!a,validator:r||s?c=>{let d=!1,g=[];if(r&&(g=Array.from(r),Ke(e,"default")&&g.push(n),d||(d=g.includes(c))),s&&(d||(d=s(c))),!d&&g.length>0){const x=[...new Set(g)].map(M=>JSON.stringify(M)).join(", ");Mr(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${x}], got value ${JSON.stringify(c)}.`)}return d}:void 0,[nr]:!0};return Ke(e,"default")&&(l.default=n),l},He=e=>Do(Object.entries(e).map(([t,r])=>[t,or(r,t)])),ds=["","default","small","large"],ps=or({type:String,values:ds,required:!1}),sr=Symbol("size"),hs=()=>{const e=P(sr,{});return p(()=>y(e.size)||"")},ir=Symbol("emptyValuesContextKey"),gs=["",void 0,null],vs=void 0,Hi=He({emptyValues:Array,valueOnClear:{type:ne([String,Number,Boolean,Function]),default:void 0,validator:e=>(e=Ce(e)?e():e,Fe(e)?e.every(t=>!t):!e)}}),Vi=(e,t)=>{const r=E()?P(ir,O({})):O({}),a=p(()=>e.emptyValues||r.value.emptyValues||gs),n=p(()=>Ce(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Ce(r.value.valueOnClear)?r.value.valueOnClear():r.value.valueOnClear!==void 0?r.value.valueOnClear:t!==void 0?t:vs),o=s=>{let i=!0;return Fe(s)?i=a.value.some(l=>Ho(s,l)):i=a.value.includes(s),i};return o(n.value),{emptyValues:a,valueOnClear:n,isEmptyValue:o}},St=e=>Object.keys(e),Gi=(e,t,r)=>({get value(){return Yt(e,t,r)},set value(a){Uo(e,t,a)}}),de=O();function Ve(e,t=void 0){const r=E()?P(Ft,de):de;return e?p(()=>{var a,n;return(n=(a=r.value)==null?void 0:a[e])!=null?n:t}):r}function Ui(e,t){const r=Ve(),a=ae(e,p(()=>{var i;return((i=r.value)==null?void 0:i.namespace)||ce})),n=us(p(()=>{var i;return(i=r.value)==null?void 0:i.locale})),o=os(p(()=>{var i;return((i=r.value)==null?void 0:i.zIndex)||tr})),s=p(()=>{var i;return y(t)||((i=r.value)==null?void 0:i.size)||""});return _s(p(()=>y(r)||{})),{ns:a,locale:n,zIndex:o,size:s}}const _s=(e,t,r=!1)=>{var a;const n=!!E(),o=n?Ve():void 0,s=(a=void 0)!=null?a:n?Bt:void 0;if(!s)return;const i=p(()=>{const l=y(e);return o?.value?ms(o.value,l):l});return s(Ft,i),s(ar,p(()=>i.value.locale)),s(jt,p(()=>i.value.namespace)),s(rr,p(()=>i.value.zIndex)),s(sr,{size:p(()=>i.value.size||"")}),s(ir,p(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(r||!de.value)&&(de.value=i.value),i},ms=(e,t)=>{const r=[...new Set([...St(e),...St(t)])],a={};for(const n of r)a[n]=t[n]!==void 0?t[n]:e[n];return a};var Ge=(e,t)=>{const r=e.__vccOpts||e;for(const[a,n]of t)r[a]=n;return r};const lr=(e="")=>e.split(" ").filter(t=>!!t.trim()),Ki=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Wi=(e,t)=>{!e||!t.trim()||e.classList.add(...lr(t))},qi=(e,t)=>{!e||!t.trim()||e.classList.remove(...lr(t))},Ji=(e,t)=>{var r;if(!ge||!e||!t)return"";let a=Pr(t);a==="float"&&(a="cssFloat");try{const n=e.style[a];if(n)return n;const o=(r=document.defaultView)==null?void 0:r.getComputedStyle(e,"");return o?o[a]:""}catch{return e.style[a]}};function bs(e,t="px"){if(!e&&e!==0)return"";if(er(e)||Ko(e))return`${e}${t}`;if(It(e))return e}const cr=(e,t)=>{if(e.install=r=>{for(const a of[e,...Object.values(t??{})])r.component(a.name,a)},t)for(const[r,a]of Object.entries(t))e[r]=a;return e},Zi=(e,t)=>(e.install=r=>{e._context=r._context,r.config.globalProperties[t]=e},e),ys=e=>(e.install=Or,e),ws=He({size:{type:ne([Number,String])},color:{type:String}}),xs=_({name:"ElIcon",inheritAttrs:!1}),Ss=_({...xs,props:ws,setup(e){const t=e,r=ae("icon"),a=p(()=>{const{size:n,color:o}=t,s=bs(n);return!s&&!o?{}:{fontSize:s,"--color":o}});return(n,o)=>(h(),b("i",Nt({class:y(r).b(),style:y(a)},n.$attrs),[Q(n.$slots,"default")],16))}});var Cs=Ge(Ss,[["__file","icon.vue"]]);const Ct=cr(Cs);var Ts=_({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.59 30.59 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.59 30.59 0 0 0-42.752 0z"})]))}}),Yi=Ts,As=_({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.59 30.59 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.59 30.59 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0"})]))}}),Xi=As,Ms=_({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M340.864 149.312a30.59 30.59 0 0 0 0 42.752L652.736 512 340.864 831.872a30.59 30.59 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Qi=Ms,Ps=_({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),e0=Ps,Os=_({name:"Calendar",__name:"calendar",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),t0=Os,$s=_({name:"Camera",__name:"camera",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M896 256H128v576h768zm-199.424-64-32.064-64h-304.96l-32 64zM96 192h160l46.336-92.608A64 64 0 0 1 359.552 64h304.96a64 64 0 0 1 57.216 35.328L768.192 192H928a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V224a32 32 0 0 1 32-32m416 512a160 160 0 1 0 0-320 160 160 0 0 0 0 320m0 64a224 224 0 1 1 0-448 224 224 0 0 1 0 448"})]))}}),r0=$s,Is=_({name:"Check",__name:"check",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),a0=Is,Es=_({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),n0=Es,Ls=_({name:"CircleCheck",__name:"circle-check",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),m("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752z"})]))}}),Bs=Ls,Ns=_({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),ur=Ns,Fs=_({name:"CircleClose",__name:"circle-close",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),m("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),js=Fs,zs=_({name:"Clock",__name:"clock",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),m("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),m("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),o0=zs,Rs=_({name:"Close",__name:"close",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),fr=Rs,ks=_({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672zm256 0a29.12 29.12 0 0 1 41.728 0 30.59 30.59 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.59 30.59 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672z"})]))}}),s0=ks,Ds=_({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L764.736 512 452.864 192a30.59 30.59 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.59 30.59 0 0 1 0-42.752L508.736 512 196.864 192a30.59 30.59 0 0 1 0-42.688"})]))}}),i0=Ds,Hs=_({name:"Hide",__name:"hide",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4s-12.8-9.6-22.4-9.6-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176S0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4m-646.4 528Q115.2 579.2 76.8 512q43.2-72 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4m140.8-96Q352 555.2 352 512c0-44.8 16-83.2 48-112s67.2-48 112-48c28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6q-43.2 72-153.6 172.8c-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176S1024 528 1024 512s-48.001-73.6-134.401-176"}),m("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112s-67.2 48-112 48"})]))}}),l0=Hs,Vs=_({name:"InfoFilled",__name:"info-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Le=Vs,Gs=_({name:"Loading",__name:"loading",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248m452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248M828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0"})]))}}),dr=Gs,Us=_({name:"MoreFilled",__name:"more-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),c0=Us,Ks=_({name:"More",__name:"more",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),u0=Ks,Ws=_({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),f0=Ws,qs=_({name:"Plus",__name:"plus",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),d0=qs,Js=_({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),pr=Js,Zs=_({name:"User",__name:"user",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0"})]))}}),p0=Zs,Ys=_({name:"View",__name:"view",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288m0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.19 160.19 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),h0=Ys,Xs=_({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,r)=>(h(),b("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[m("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),hr=Xs;const Tt=ne([String,Object,Function]),g0={Close:fr},v0={Close:fr,SuccessFilled:pr,InfoFilled:Le,WarningFilled:hr,CircleCloseFilled:ur},_0={primary:Le,success:pr,warning:hr,error:ur,info:Le},m0={validating:dr,success:Bs,error:js},At={prefix:Math.floor(Math.random()*1e4),current:0},Qs=Symbol("elIdInjection"),ei=()=>E()?P(Qs,At):At,ti=e=>{const t=ei(),r=zt();return es(()=>y(e)||`${r.value}-id-${t.prefix}-${t.current++}`)},Ue=Symbol("formContextKey"),gr=Symbol("formItemContextKey"),ri=()=>{const e=P(Ue,void 0),t=P(gr,void 0);return{form:e,formItem:t}},b0=(e,{formItemContext:t,disableIdGeneration:r,disableIdManagement:a})=>{r||(r=O(!1)),a||(a=O(!1));const n=E(),o=()=>{let c=n?.parent;for(;c;){if(c.type.name==="ElFormItem")return!1;if(c.type.name==="ElLabelWrap")return!0;c=c.parent}return!1},s=O();let i;const l=p(()=>{var c;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((c=t.inputIds)==null?void 0:c.length)<=1)});return Lt(()=>{i=ze([Te(e,"id"),r],([c,d])=>{const g=c??(d?void 0:ti().value);g!==s.value&&(t?.removeInputId&&!o()&&(s.value&&t.removeInputId(s.value),!a?.value&&!d&&g&&t.addInputId(g)),s.value=g)},{immediate:!0})}),$r(()=>{i&&i(),t?.removeInputId&&s.value&&t.removeInputId(s.value)}),{isLabeledByFormItem:l,inputId:s}},vr=e=>{const t=E();return p(()=>{var r,a;return(a=(r=t?.proxy)==null?void 0:r.$props)==null?void 0:a[e]})},ai=(e,t={})=>{const r=O(void 0),a=t.prop?r:vr("size"),n=t.global?r:hs(),o=t.form?{size:void 0}:P(Ue,void 0),s=t.formItem?{size:void 0}:P(gr,void 0);return p(()=>a.value||y(e)||s?.size||o?.size||n.value||"")},_r=e=>{const t=vr("disabled"),r=P(Ue,void 0);return p(()=>{var a,n,o;return(o=(n=(a=t.value)!=null?a:y(e))!=null?n:r?.disabled)!=null?o:!1})},mr=Symbol("buttonGroupContextKey"),ni=({from:e,replacement:t,scope:r,version:a,ref:n,type:o="API"},s)=>{ze(()=>y(s),i=>{},{immediate:!0})},oi=(e,t)=>{ni({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},p(()=>e.type==="text"));const r=P(mr,void 0),a=Ve("button"),{form:n}=ri(),o=ai(p(()=>r?.size)),s=_r(),i=O(),l=Ir(),c=p(()=>{var u;return e.type||r?.type||((u=a.value)==null?void 0:u.type)||""}),d=p(()=>{var u,S,T;return(T=(S=e.autoInsertSpace)!=null?S:(u=a.value)==null?void 0:u.autoInsertSpace)!=null?T:!1}),g=p(()=>{var u,S,T;return(T=(S=e.plain)!=null?S:(u=a.value)==null?void 0:u.plain)!=null?T:!1}),x=p(()=>{var u,S,T;return(T=(S=e.round)!=null?S:(u=a.value)==null?void 0:u.round)!=null?T:!1}),M=p(()=>{var u,S,T;return(T=(S=e.text)!=null?S:(u=a.value)==null?void 0:u.text)!=null?T:!1}),C=p(()=>e.tag==="button"?{ariaDisabled:s.value||e.loading,disabled:s.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),f=p(()=>{var u;const S=(u=l.default)==null?void 0:u.call(l);if(d.value&&S?.length===1){const T=S[0];if(T?.type===Er){const q=T.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(q.trim())}}return!1});return{_disabled:s,_size:o,_type:c,_ref:i,_props:C,_plain:g,_round:x,_text:M,shouldAddSpace:f,handleClick:u=>{if(s.value||e.loading){u.stopPropagation();return}e.nativeType==="reset"&&n?.resetFields(),t("click",u)}}},si=["default","primary","success","warning","info","danger","text",""],ii=["button","submit","reset"],Be=He({size:ps,disabled:{type:Boolean,default:void 0},type:{type:String,values:si,default:""},icon:{type:Tt},nativeType:{type:String,values:ii,default:"button"},loading:Boolean,loadingIcon:{type:Tt,default:()=>dr},plain:{type:Boolean,default:void 0},text:{type:Boolean,default:void 0},link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:ne([String,Object]),default:"button"}}),li={click:e=>e instanceof MouseEvent};function A(e,t){ci(e)&&(e="100%");var r=ui(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function ie(e){return Math.min(1,Math.max(0,e))}function ci(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function ui(e){return typeof e=="string"&&e.indexOf("%")!==-1}function br(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function le(e){return e<=1?"".concat(Number(e)*100,"%"):e}function V(e){return e.length===1?"0"+e:String(e)}function fi(e,t,r){return{r:A(e,255)*255,g:A(t,255)*255,b:A(r,255)*255}}function Mt(e,t,r){e=A(e,255),t=A(t,255),r=A(r,255);var a=Math.max(e,t,r),n=Math.min(e,t,r),o=0,s=0,i=(a+n)/2;if(a===n)s=0,o=0;else{var l=a-n;switch(s=i>.5?l/(2-a-n):l/(a+n),a){case e:o=(t-r)/l+(t1&&(r-=1),r<1/6?e+(t-e)*(6*r):r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function di(e,t,r){var a,n,o;if(e=A(e,360),t=A(t,100),r=A(r,100),t===0)n=r,o=r,a=r;else{var s=r<.5?r*(1+t):r+t-r*t,i=2*r-s;a=we(i,s,e+1/3),n=we(i,s,e),o=we(i,s,e-1/3)}return{r:a*255,g:n*255,b:o*255}}function Pt(e,t,r){e=A(e,255),t=A(t,255),r=A(r,255);var a=Math.max(e,t,r),n=Math.min(e,t,r),o=0,s=a,i=a-n,l=a===0?0:i/a;if(a===n)o=0;else{switch(a){case e:o=(t-r)/i+(t>16,g:(e&65280)>>8,b:e&255}}var Ne={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function _i(e){var t={r:0,g:0,b:0},r=1,a=null,n=null,o=null,s=!1,i=!1;return typeof e=="string"&&(e=yi(e)),typeof e=="object"&&(L(e.r)&&L(e.g)&&L(e.b)?(t=fi(e.r,e.g,e.b),s=!0,i=String(e.r).substr(-1)==="%"?"prgb":"rgb"):L(e.h)&&L(e.s)&&L(e.v)?(a=le(e.s),n=le(e.v),t=pi(e.h,a,n),s=!0,i="hsv"):L(e.h)&&L(e.s)&&L(e.l)&&(a=le(e.s),o=le(e.l),t=di(e.h,a,o),s=!0,i="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(r=e.a)),r=br(r),{ok:s,format:e.format||i,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}var mi="[-\\+]?\\d+%?",bi="[-\\+]?\\d*\\.\\d+%?",R="(?:".concat(bi,")|(?:").concat(mi,")"),xe="[\\s|\\(]+(".concat(R,")[,|\\s]+(").concat(R,")[,|\\s]+(").concat(R,")\\s*\\)?"),Se="[\\s|\\(]+(".concat(R,")[,|\\s]+(").concat(R,")[,|\\s]+(").concat(R,")[,|\\s]+(").concat(R,")\\s*\\)?"),I={CSS_UNIT:new RegExp(R),rgb:new RegExp("rgb"+xe),rgba:new RegExp("rgba"+Se),hsl:new RegExp("hsl"+xe),hsla:new RegExp("hsla"+Se),hsv:new RegExp("hsv"+xe),hsva:new RegExp("hsva"+Se),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function yi(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(Ne[e])e=Ne[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r=I.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=I.rgba.exec(e),r?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=I.hsl.exec(e),r?{h:r[1],s:r[2],l:r[3]}:(r=I.hsla.exec(e),r?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=I.hsv.exec(e),r?{h:r[1],s:r[2],v:r[3]}:(r=I.hsva.exec(e),r?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=I.hex8.exec(e),r?{r:$(r[1]),g:$(r[2]),b:$(r[3]),a:$t(r[4]),format:t?"name":"hex8"}:(r=I.hex6.exec(e),r?{r:$(r[1]),g:$(r[2]),b:$(r[3]),format:t?"name":"hex"}:(r=I.hex4.exec(e),r?{r:$(r[1]+r[1]),g:$(r[2]+r[2]),b:$(r[3]+r[3]),a:$t(r[4]+r[4]),format:t?"name":"hex8"}:(r=I.hex3.exec(e),r?{r:$(r[1]+r[1]),g:$(r[2]+r[2]),b:$(r[3]+r[3]),format:t?"name":"hex"}:!1)))))))))}function L(e){return!!I.CSS_UNIT.exec(String(e))}var wi=(function(){function e(t,r){t===void 0&&(t=""),r===void 0&&(r={});var a;if(t instanceof e)return t;typeof t=="number"&&(t=vi(t)),this.originalInput=t;var n=_i(t);this.originalInput=t,this.r=n.r,this.g=n.g,this.b=n.b,this.a=n.a,this.roundA=Math.round(100*this.a)/100,this.format=(a=r.format)!==null&&a!==void 0?a:n.format,this.gradientType=r.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=n.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),r,a,n,o=t.r/255,s=t.g/255,i=t.b/255;return o<=.03928?r=o/12.92:r=Math.pow((o+.055)/1.055,2.4),s<=.03928?a=s/12.92:a=Math.pow((s+.055)/1.055,2.4),i<=.03928?n=i/12.92:n=Math.pow((i+.055)/1.055,2.4),.2126*r+.7152*a+.0722*n},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=br(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=Pt(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=Pt(this.r,this.g,this.b),r=Math.round(t.h*360),a=Math.round(t.s*100),n=Math.round(t.v*100);return this.a===1?"hsv(".concat(r,", ").concat(a,"%, ").concat(n,"%)"):"hsva(".concat(r,", ").concat(a,"%, ").concat(n,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=Mt(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=Mt(this.r,this.g,this.b),r=Math.round(t.h*360),a=Math.round(t.s*100),n=Math.round(t.l*100);return this.a===1?"hsl(".concat(r,", ").concat(a,"%, ").concat(n,"%)"):"hsla(".concat(r,", ").concat(a,"%, ").concat(n,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),Ot(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),hi(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),r=Math.round(this.g),a=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(r,", ").concat(a,")"):"rgba(".concat(t,", ").concat(r,", ").concat(a,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(r){return"".concat(Math.round(A(r,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(r){return Math.round(A(r,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+Ot(this.r,this.g,this.b,!1),r=0,a=Object.entries(Ne);r=0,o=!r&&n&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(a=this.toRgbString()),t==="prgb"&&(a=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(a=this.toHexString()),t==="hex3"&&(a=this.toHexString(!0)),t==="hex4"&&(a=this.toHex8String(!0)),t==="hex8"&&(a=this.toHex8String()),t==="name"&&(a=this.toName()),t==="hsl"&&(a=this.toHslString()),t==="hsv"&&(a=this.toHsvString()),a||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l+=t/100,r.l=ie(r.l),new e(r)},e.prototype.brighten=function(t){t===void 0&&(t=10);var r=this.toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(255*-(t/100)))),r.g=Math.max(0,Math.min(255,r.g-Math.round(255*-(t/100)))),r.b=Math.max(0,Math.min(255,r.b-Math.round(255*-(t/100)))),new e(r)},e.prototype.darken=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l-=t/100,r.l=ie(r.l),new e(r)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s-=t/100,r.s=ie(r.s),new e(r)},e.prototype.saturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s+=t/100,r.s=ie(r.s),new e(r)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var r=this.toHsl(),a=(r.h+t)%360;return r.h=a<0?360+a:a,new e(r)},e.prototype.mix=function(t,r){r===void 0&&(r=50);var a=this.toRgb(),n=new e(t).toRgb(),o=r/100,s={r:(n.r-a.r)*o+a.r,g:(n.g-a.g)*o+a.g,b:(n.b-a.b)*o+a.b,a:(n.a-a.a)*o+a.a};return new e(s)},e.prototype.analogous=function(t,r){t===void 0&&(t=6),r===void 0&&(r=30);var a=this.toHsl(),n=360/r,o=[this];for(a.h=(a.h-(n*t>>1)+720)%360;--t;)a.h=(a.h+n)%360,o.push(new e(a));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var r=this.toHsv(),a=r.h,n=r.s,o=r.v,s=[],i=1/t;t--;)s.push(new e({h:a,s:n,v:o})),o=(o+i)%1;return s},e.prototype.splitcomplement=function(){var t=this.toHsl(),r=t.h;return[this,new e({h:(r+72)%360,s:t.s,l:t.l}),new e({h:(r+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var r=this.toRgb(),a=new e(t).toRgb(),n=r.a+a.a*(1-r.a);return new e({r:(r.r*r.a+a.r*a.a*(1-r.a))/n,g:(r.g*r.a+a.g*a.a*(1-r.a))/n,b:(r.b*r.a+a.b*a.a*(1-r.a))/n,a:n})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var r=this.toHsl(),a=r.h,n=[this],o=360/t,s=1;s{let a={},n=e.color;if(n){const o=n.match(/var\((.*?)\)/);o&&(n=window.getComputedStyle(window.document.documentElement).getPropertyValue(o[1]));const s=new wi(n),i=e.dark?s.tint(20).toString():j(s,20);if(e.plain)a=r.cssVarBlock({"bg-color":e.dark?j(s,90):s.tint(90).toString(),"text-color":n,"border-color":e.dark?j(s,50):s.tint(50).toString(),"hover-text-color":`var(${r.cssVarName("color-white")})`,"hover-bg-color":n,"hover-border-color":n,"active-bg-color":i,"active-text-color":`var(${r.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(a[r.cssVarBlockName("disabled-bg-color")]=e.dark?j(s,90):s.tint(90).toString(),a[r.cssVarBlockName("disabled-text-color")]=e.dark?j(s,50):s.tint(50).toString(),a[r.cssVarBlockName("disabled-border-color")]=e.dark?j(s,80):s.tint(80).toString());else{const l=e.dark?j(s,30):s.tint(30).toString(),c=s.isDark()?`var(${r.cssVarName("color-white")})`:`var(${r.cssVarName("color-black")})`;if(a=r.cssVarBlock({"bg-color":n,"text-color":c,"border-color":n,"hover-bg-color":l,"hover-text-color":c,"hover-border-color":l,"active-bg-color":i,"active-border-color":i}),t.value){const d=e.dark?j(s,50):s.tint(50).toString();a[r.cssVarBlockName("disabled-bg-color")]=d,a[r.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${r.cssVarName("color-white")})`,a[r.cssVarBlockName("disabled-border-color")]=d}}}return a})}const Si=_({name:"ElButton"}),Ci=_({...Si,props:Be,emits:li,setup(e,{expose:t,emit:r}){const a=e,n=xi(a),o=ae("button"),{_ref:s,_size:i,_type:l,_disabled:c,_props:d,_plain:g,_round:x,_text:M,shouldAddSpace:C,handleClick:f}=oi(a,r),v=p(()=>[o.b(),o.m(l.value),o.m(i.value),o.is("disabled",c.value),o.is("loading",a.loading),o.is("plain",g.value),o.is("round",x.value),o.is("circle",a.circle),o.is("text",M.value),o.is("link",a.link),o.is("has-bg",a.bg)]);return t({ref:s,size:i,type:l,disabled:c,shouldAddSpace:C}),(u,S)=>(h(),Y(_e(u.tag),Nt({ref_key:"_ref",ref:s},y(d),{class:y(v),style:y(n),onClick:y(f)}),{default:ve(()=>[u.loading?(h(),b(Lr,{key:0},[u.$slots.loading?Q(u.$slots,"loading",{key:0}):(h(),Y(y(Ct),{key:1,class:Ae(y(o).is("loading"))},{default:ve(()=>[(h(),Y(_e(u.loadingIcon)))]),_:1},8,["class"]))],64)):u.icon||u.$slots.icon?(h(),Y(y(Ct),{key:1},{default:ve(()=>[u.icon?(h(),Y(_e(u.icon),{key:0})):Q(u.$slots,"icon",{key:1})]),_:3})):We("v-if",!0),u.$slots.default?(h(),b("span",{key:2,class:Ae({[y(o).em("text","expand")]:y(C)})},[Q(u.$slots,"default")],2)):We("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var Ti=Ge(Ci,[["__file","button.vue"]]);const Ai={size:Be.size,type:Be.type,direction:{type:ne(String),values:["horizontal","vertical"],default:"horizontal"}},Mi=_({name:"ElButtonGroup"}),Pi=_({...Mi,props:Ai,setup(e){const t=e;Bt(mr,Br({size:Te(t,"size"),type:Te(t,"type")}));const r=ae("button");return(a,n)=>(h(),b("div",{class:Ae([y(r).b("group"),y(r).bm("group",t.direction)])},[Q(a.$slots,"default")],2))}});var yr=Ge(Pi,[["__file","button-group.vue"]]);const y0=cr(Ti,{ButtonGroup:yr});ys(yr);export{Xi as $,Ct as A,ys as B,Fi as C,bs as D,y0 as E,ni as F,us as G,fr as H,Wi as I,Ki as J,qi as K,Yi as L,$i as M,Di as N,Vo as O,u0 as P,Bi as Q,Gi as R,k as S,wi as T,Yt as U,e0 as V,Li as W,ai as X,ps as Y,dr as Z,Ge as _,n0 as a,as as a$,d0 as a0,es as a1,Ui as a2,Ji as a3,p0 as a4,t0 as a5,r0 as a6,Bs as a7,js as a8,a0 as a9,ao as aA,ft as aB,D as aC,z as aD,Xa as aE,rt as aF,ot as aG,St as aH,_0 as aI,v0 as aJ,ds as aK,gr as aL,ti as aM,Ri as aN,s0 as aO,c0 as aP,i0 as aQ,hs as aR,m0 as aS,ji as aT,ns as aU,Ve as aV,Re as aW,Qt as aX,dn as aY,Do as aZ,os as a_,Ie as aa,bo as ab,fe as ac,go as ad,Ei as ae,Ho as af,Hi as ag,ri as ah,b0 as ai,Vi as aj,_r as ak,o0 as al,B as am,J as an,Z as ao,Gn as ap,Jt as aq,Zt as ar,Ue as as,ha as at,ma as au,rn as av,an as aw,ro as ax,Qn as ay,Un as az,He as b,or as b0,zt as b1,g0 as b2,ce as b3,f0 as b4,Xe as b5,Gt as b6,Go as b7,Ni as b8,bt as b9,ki as ba,Ee as bb,zi as bc,h0 as bd,l0 as be,Zi as bf,ur as c,cr as d,ue as e,va as f,Vt as g,ke as h,Le as i,fa as j,cn as k,Pe as l,qt as m,G as n,Sa as o,Ht as p,Kr as q,ge as r,er as s,ne as t,ae as u,Ii as v,hr as w,Qi as x,Tt as y,ei as z}; diff --git a/static/app/assets/el-button-LKkD3jQh.js b/static/app/assets/el-button-LKkD3jQh.js new file mode 100644 index 0000000..f5e33ba --- /dev/null +++ b/static/app/assets/el-button-LKkD3jQh.js @@ -0,0 +1 @@ +import{aG as ht,aK as dt,b as vt,t as rt,U as gt,y as Z,T as bt,u as K,_ as at,E as Q,d as pt,z as yt}from"./base-xgxQQEpV.js";import{b as mt,a as kt}from"./index-CoYtSGUZ.js";import{Q as _,g as A,h as v,i as St,L as xt,Z as j,a7 as wt,V as nt,C as b,S as Mt,an as _t,A as F,c as B,o as x,s as C,j as D,l as J,F as Bt,B as T,n as O,D as P,O as At,M as Ht,f as Rt}from"./vendor-vue-WbiK4TmU.js";const L=Symbol("formContextKey"),ot=Symbol("formItemContextKey"),It=()=>{const r=_(L,void 0),t=_(ot,void 0);return{form:r,formItem:t}},oe=(r,{formItemContext:t,disableIdGeneration:e,disableIdManagement:a})=>{e||(e=A(!1)),a||(a=A(!1));const n=nt(),o=()=>{let f=n?.parent;for(;f;){if(f.type.name==="ElFormItem")return!1;if(f.type.name==="ElLabelWrap")return!0;f=f.parent}return!1},i=A();let s;const l=v(()=>{var f;return!!(!(r.label||r.ariaLabel)&&t&&t.inputIds&&((f=t.inputIds)==null?void 0:f.length)<=1)});return St(()=>{s=xt([j(r,"id"),e],([f,p])=>{const m=f??(p?void 0:mt().value);m!==i.value&&(t?.removeInputId&&!o()&&(i.value&&t.removeInputId(i.value),!a?.value&&!p&&m&&t.addInputId(m)),i.value=m)},{immediate:!0})}),wt(()=>{s&&s(),t?.removeInputId&&i.value&&t.removeInputId(i.value)}),{isLabeledByFormItem:l,inputId:i}},it=r=>{const t=nt();return v(()=>{var e,a;return(a=(e=t?.proxy)==null?void 0:e.$props)==null?void 0:a[r]})},Tt=(r,t={})=>{const e=A(void 0),a=t.prop?e:it("size"),n=t.global?e:ht(),o=t.form?{size:void 0}:_(L,void 0),i=t.formItem?{size:void 0}:_(ot,void 0);return v(()=>a.value||b(r)||i?.size||o?.size||n.value||"")},st=r=>{const t=it("disabled"),e=_(L,void 0);return v(()=>{var a,n,o;return(o=(n=(a=t.value)!=null?a:b(r))!=null?n:e?.disabled)!=null?o:!1})},ut=Symbol("buttonGroupContextKey"),Ft=(r,t)=>{kt({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},v(()=>r.type==="text"));const e=_(ut,void 0),a=dt("button"),{form:n}=It(),o=Tt(v(()=>e?.size)),i=st(),s=A(),l=Mt(),f=v(()=>{var u;return r.type||e?.type||((u=a.value)==null?void 0:u.type)||""}),p=v(()=>{var u,h,d;return(d=(h=r.autoInsertSpace)!=null?h:(u=a.value)==null?void 0:u.autoInsertSpace)!=null?d:!1}),m=v(()=>{var u,h,d;return(d=(h=r.plain)!=null?h:(u=a.value)==null?void 0:u.plain)!=null?d:!1}),N=v(()=>{var u,h,d;return(d=(h=r.round)!=null?h:(u=a.value)==null?void 0:u.round)!=null?d:!1}),E=v(()=>{var u,h,d;return(d=(h=r.text)!=null?h:(u=a.value)==null?void 0:u.text)!=null?d:!1}),H=v(()=>r.tag==="button"?{ariaDisabled:i.value||r.loading,disabled:i.value||r.loading,autofocus:r.autofocus,type:r.nativeType}:{}),z=v(()=>{var u;const h=(u=l.default)==null?void 0:u.call(l);if(p.value&&h?.length===1){const d=h[0];if(d?.type===_t){const ct=d.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(ct.trim())}}return!1});return{_disabled:i,_size:o,_type:f,_ref:s,_props:H,_plain:m,_round:N,_text:E,shouldAddSpace:z,handleClick:u=>{if(i.value||r.loading){u.stopPropagation();return}r.nativeType==="reset"&&n?.resetFields(),t("click",u)}}},Nt=["default","primary","success","warning","info","danger","text",""],Et=["button","submit","reset"],U=vt({size:bt,disabled:{type:Boolean,default:void 0},type:{type:String,values:Nt,default:""},icon:{type:Z},nativeType:{type:String,values:Et,default:"button"},loading:Boolean,loadingIcon:{type:Z,default:()=>gt},plain:{type:Boolean,default:void 0},text:{type:Boolean,default:void 0},link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:rt([String,Object]),default:"button"}}),zt={click:r=>r instanceof MouseEvent};function c(r,t){Ct(r)&&(r="100%");var e=Pt(r);return r=t===360?r:Math.min(t,Math.max(0,parseFloat(r))),e&&(r=parseInt(String(r*t),10)/100),Math.abs(r-t)<1e-6?1:(t===360?r=(r<0?r%t+t:r%t)/parseFloat(String(t)):r=r%t/parseFloat(String(t)),r)}function R(r){return Math.min(1,Math.max(0,r))}function Ct(r){return typeof r=="string"&&r.indexOf(".")!==-1&&parseFloat(r)===1}function Pt(r){return typeof r=="string"&&r.indexOf("%")!==-1}function lt(r){return r=parseFloat(r),(isNaN(r)||r<0||r>1)&&(r=1),r}function I(r){return r<=1?"".concat(Number(r)*100,"%"):r}function M(r){return r.length===1?"0"+r:String(r)}function Vt(r,t,e){return{r:c(r,255)*255,g:c(t,255)*255,b:c(e,255)*255}}function X(r,t,e){r=c(r,255),t=c(t,255),e=c(e,255);var a=Math.max(r,t,e),n=Math.min(r,t,e),o=0,i=0,s=(a+n)/2;if(a===n)i=0,o=0;else{var l=a-n;switch(i=s>.5?l/(2-a-n):l/(a+n),a){case r:o=(t-e)/l+(t1&&(e-=1),e<1/6?r+(t-r)*(6*e):e<1/2?t:e<2/3?r+(t-r)*(2/3-e)*6:r}function $t(r,t,e){var a,n,o;if(r=c(r,360),t=c(t,100),e=c(e,100),t===0)n=e,o=e,a=e;else{var i=e<.5?e*(1+t):e+t-e*t,s=2*e-i;a=V(s,i,r+1/3),n=V(s,i,r),o=V(s,i,r-1/3)}return{r:a*255,g:n*255,b:o*255}}function Y(r,t,e){r=c(r,255),t=c(t,255),e=c(e,255);var a=Math.max(r,t,e),n=Math.min(r,t,e),o=0,i=a,s=a-n,l=a===0?0:s/a;if(a===n)o=0;else{switch(a){case r:o=(t-e)/s+(t>16,g:(r&65280)>>8,b:r&255}}var W={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function Ut(r){var t={r:0,g:0,b:0},e=1,a=null,n=null,o=null,i=!1,s=!1;return typeof r=="string"&&(r=Lt(r)),typeof r=="object"&&(k(r.r)&&k(r.g)&&k(r.b)?(t=Vt(r.r,r.g,r.b),i=!0,s=String(r.r).substr(-1)==="%"?"prgb":"rgb"):k(r.h)&&k(r.s)&&k(r.v)?(a=I(r.s),n=I(r.v),t=Gt(r.h,a,n),i=!0,s="hsv"):k(r.h)&&k(r.s)&&k(r.l)&&(a=I(r.s),o=I(r.l),t=$t(r.h,a,o),i=!0,s="hsl"),Object.prototype.hasOwnProperty.call(r,"a")&&(e=r.a)),e=lt(e),{ok:i,format:r.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:e}}var Wt="[-\\+]?\\d+%?",Kt="[-\\+]?\\d*\\.\\d+%?",w="(?:".concat(Kt,")|(?:").concat(Wt,")"),$="[\\s|\\(]+(".concat(w,")[,|\\s]+(").concat(w,")[,|\\s]+(").concat(w,")\\s*\\)?"),G="[\\s|\\(]+(".concat(w,")[,|\\s]+(").concat(w,")[,|\\s]+(").concat(w,")[,|\\s]+(").concat(w,")\\s*\\)?"),y={CSS_UNIT:new RegExp(w),rgb:new RegExp("rgb"+$),rgba:new RegExp("rgba"+G),hsl:new RegExp("hsl"+$),hsla:new RegExp("hsla"+G),hsv:new RegExp("hsv"+$),hsva:new RegExp("hsva"+G),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Lt(r){if(r=r.trim().toLowerCase(),r.length===0)return!1;var t=!1;if(W[r])r=W[r],t=!0;else if(r==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var e=y.rgb.exec(r);return e?{r:e[1],g:e[2],b:e[3]}:(e=y.rgba.exec(r),e?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=y.hsl.exec(r),e?{h:e[1],s:e[2],l:e[3]}:(e=y.hsla.exec(r),e?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=y.hsv.exec(r),e?{h:e[1],s:e[2],v:e[3]}:(e=y.hsva.exec(r),e?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=y.hex8.exec(r),e?{r:g(e[1]),g:g(e[2]),b:g(e[3]),a:et(e[4]),format:t?"name":"hex8"}:(e=y.hex6.exec(r),e?{r:g(e[1]),g:g(e[2]),b:g(e[3]),format:t?"name":"hex"}:(e=y.hex4.exec(r),e?{r:g(e[1]+e[1]),g:g(e[2]+e[2]),b:g(e[3]+e[3]),a:et(e[4]+e[4]),format:t?"name":"hex8"}:(e=y.hex3.exec(r),e?{r:g(e[1]+e[1]),g:g(e[2]+e[2]),b:g(e[3]+e[3]),format:t?"name":"hex"}:!1)))))))))}function k(r){return!!y.CSS_UNIT.exec(String(r))}var qt=(function(){function r(t,e){t===void 0&&(t=""),e===void 0&&(e={});var a;if(t instanceof r)return t;typeof t=="number"&&(t=Ot(t)),this.originalInput=t;var n=Ut(t);this.originalInput=t,this.r=n.r,this.g=n.g,this.b=n.b,this.a=n.a,this.roundA=Math.round(100*this.a)/100,this.format=(a=e.format)!==null&&a!==void 0?a:n.format,this.gradientType=e.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=n.ok}return r.prototype.isDark=function(){return this.getBrightness()<128},r.prototype.isLight=function(){return!this.isDark()},r.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},r.prototype.getLuminance=function(){var t=this.toRgb(),e,a,n,o=t.r/255,i=t.g/255,s=t.b/255;return o<=.03928?e=o/12.92:e=Math.pow((o+.055)/1.055,2.4),i<=.03928?a=i/12.92:a=Math.pow((i+.055)/1.055,2.4),s<=.03928?n=s/12.92:n=Math.pow((s+.055)/1.055,2.4),.2126*e+.7152*a+.0722*n},r.prototype.getAlpha=function(){return this.a},r.prototype.setAlpha=function(t){return this.a=lt(t),this.roundA=Math.round(100*this.a)/100,this},r.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},r.prototype.toHsv=function(){var t=Y(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},r.prototype.toHsvString=function(){var t=Y(this.r,this.g,this.b),e=Math.round(t.h*360),a=Math.round(t.s*100),n=Math.round(t.v*100);return this.a===1?"hsv(".concat(e,", ").concat(a,"%, ").concat(n,"%)"):"hsva(".concat(e,", ").concat(a,"%, ").concat(n,"%, ").concat(this.roundA,")")},r.prototype.toHsl=function(){var t=X(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},r.prototype.toHslString=function(){var t=X(this.r,this.g,this.b),e=Math.round(t.h*360),a=Math.round(t.s*100),n=Math.round(t.l*100);return this.a===1?"hsl(".concat(e,", ").concat(a,"%, ").concat(n,"%)"):"hsla(".concat(e,", ").concat(a,"%, ").concat(n,"%, ").concat(this.roundA,")")},r.prototype.toHex=function(t){return t===void 0&&(t=!1),tt(this.r,this.g,this.b,t)},r.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},r.prototype.toHex8=function(t){return t===void 0&&(t=!1),jt(this.r,this.g,this.b,this.a,t)},r.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},r.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},r.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},r.prototype.toRgbString=function(){var t=Math.round(this.r),e=Math.round(this.g),a=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(e,", ").concat(a,")"):"rgba(".concat(t,", ").concat(e,", ").concat(a,", ").concat(this.roundA,")")},r.prototype.toPercentageRgb=function(){var t=function(e){return"".concat(Math.round(c(e,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},r.prototype.toPercentageRgbString=function(){var t=function(e){return Math.round(c(e,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},r.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+tt(this.r,this.g,this.b,!1),e=0,a=Object.entries(W);e=0,o=!e&&n&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(a=this.toRgbString()),t==="prgb"&&(a=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(a=this.toHexString()),t==="hex3"&&(a=this.toHexString(!0)),t==="hex4"&&(a=this.toHex8String(!0)),t==="hex8"&&(a=this.toHex8String()),t==="name"&&(a=this.toName()),t==="hsl"&&(a=this.toHslString()),t==="hsv"&&(a=this.toHsvString()),a||this.toHexString())},r.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},r.prototype.clone=function(){return new r(this.toString())},r.prototype.lighten=function(t){t===void 0&&(t=10);var e=this.toHsl();return e.l+=t/100,e.l=R(e.l),new r(e)},r.prototype.brighten=function(t){t===void 0&&(t=10);var e=this.toRgb();return e.r=Math.max(0,Math.min(255,e.r-Math.round(255*-(t/100)))),e.g=Math.max(0,Math.min(255,e.g-Math.round(255*-(t/100)))),e.b=Math.max(0,Math.min(255,e.b-Math.round(255*-(t/100)))),new r(e)},r.prototype.darken=function(t){t===void 0&&(t=10);var e=this.toHsl();return e.l-=t/100,e.l=R(e.l),new r(e)},r.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},r.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},r.prototype.desaturate=function(t){t===void 0&&(t=10);var e=this.toHsl();return e.s-=t/100,e.s=R(e.s),new r(e)},r.prototype.saturate=function(t){t===void 0&&(t=10);var e=this.toHsl();return e.s+=t/100,e.s=R(e.s),new r(e)},r.prototype.greyscale=function(){return this.desaturate(100)},r.prototype.spin=function(t){var e=this.toHsl(),a=(e.h+t)%360;return e.h=a<0?360+a:a,new r(e)},r.prototype.mix=function(t,e){e===void 0&&(e=50);var a=this.toRgb(),n=new r(t).toRgb(),o=e/100,i={r:(n.r-a.r)*o+a.r,g:(n.g-a.g)*o+a.g,b:(n.b-a.b)*o+a.b,a:(n.a-a.a)*o+a.a};return new r(i)},r.prototype.analogous=function(t,e){t===void 0&&(t=6),e===void 0&&(e=30);var a=this.toHsl(),n=360/e,o=[this];for(a.h=(a.h-(n*t>>1)+720)%360;--t;)a.h=(a.h+n)%360,o.push(new r(a));return o},r.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new r(t)},r.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var e=this.toHsv(),a=e.h,n=e.s,o=e.v,i=[],s=1/t;t--;)i.push(new r({h:a,s:n,v:o})),o=(o+s)%1;return i},r.prototype.splitcomplement=function(){var t=this.toHsl(),e=t.h;return[this,new r({h:(e+72)%360,s:t.s,l:t.l}),new r({h:(e+216)%360,s:t.s,l:t.l})]},r.prototype.onBackground=function(t){var e=this.toRgb(),a=new r(t).toRgb(),n=e.a+a.a*(1-e.a);return new r({r:(e.r*e.a+a.r*a.a*(1-e.a))/n,g:(e.g*e.a+a.g*a.a*(1-e.a))/n,b:(e.b*e.a+a.b*a.a*(1-e.a))/n,a:n})},r.prototype.triad=function(){return this.polyad(3)},r.prototype.tetrad=function(){return this.polyad(4)},r.prototype.polyad=function(t){for(var e=this.toHsl(),a=e.h,n=[this],o=360/t,i=1;i{let a={},n=r.color;if(n){const o=n.match(/var\((.*?)\)/);o&&(n=window.getComputedStyle(window.document.documentElement).getPropertyValue(o[1]));const i=new qt(n),s=r.dark?i.tint(20).toString():S(i,20);if(r.plain)a=e.cssVarBlock({"bg-color":r.dark?S(i,90):i.tint(90).toString(),"text-color":n,"border-color":r.dark?S(i,50):i.tint(50).toString(),"hover-text-color":`var(${e.cssVarName("color-white")})`,"hover-bg-color":n,"hover-border-color":n,"active-bg-color":s,"active-text-color":`var(${e.cssVarName("color-white")})`,"active-border-color":s}),t.value&&(a[e.cssVarBlockName("disabled-bg-color")]=r.dark?S(i,90):i.tint(90).toString(),a[e.cssVarBlockName("disabled-text-color")]=r.dark?S(i,50):i.tint(50).toString(),a[e.cssVarBlockName("disabled-border-color")]=r.dark?S(i,80):i.tint(80).toString());else{const l=r.dark?S(i,30):i.tint(30).toString(),f=i.isDark()?`var(${e.cssVarName("color-white")})`:`var(${e.cssVarName("color-black")})`;if(a=e.cssVarBlock({"bg-color":n,"text-color":f,"border-color":n,"hover-bg-color":l,"hover-text-color":f,"hover-border-color":l,"active-bg-color":s,"active-border-color":s}),t.value){const p=r.dark?S(i,50):i.tint(50).toString();a[e.cssVarBlockName("disabled-bg-color")]=p,a[e.cssVarBlockName("disabled-text-color")]=r.dark?"rgba(255, 255, 255, 0.5)":`var(${e.cssVarName("color-white")})`,a[e.cssVarBlockName("disabled-border-color")]=p}}}return a})}const Qt=F({name:"ElButton"}),Jt=F({...Qt,props:U,emits:zt,setup(r,{expose:t,emit:e}){const a=r,n=Zt(a),o=K("button"),{_ref:i,_size:s,_type:l,_disabled:f,_props:p,_plain:m,_round:N,_text:E,shouldAddSpace:H,handleClick:z}=Ft(a,e),q=v(()=>[o.b(),o.m(l.value),o.m(s.value),o.is("disabled",f.value),o.is("loading",a.loading),o.is("plain",m.value),o.is("round",N.value),o.is("circle",a.circle),o.is("text",E.value),o.is("link",a.link),o.is("has-bg",a.bg)]);return t({ref:i,size:s,type:l,disabled:f,shouldAddSpace:H}),(u,h)=>(x(),B(P(u.tag),At({ref_key:"_ref",ref:i},b(p),{class:b(q),style:b(n),onClick:b(z)}),{default:C(()=>[u.loading?(x(),D(Bt,{key:0},[u.$slots.loading?T(u.$slots,"loading",{key:0}):(x(),B(b(Q),{key:1,class:O(b(o).is("loading"))},{default:C(()=>[(x(),B(P(u.loadingIcon)))]),_:1},8,["class"]))],64)):u.icon||u.$slots.icon?(x(),B(b(Q),{key:1},{default:C(()=>[u.icon?(x(),B(P(u.icon),{key:0})):T(u.$slots,"icon",{key:1})]),_:3})):J("v-if",!0),u.$slots.default?(x(),D("span",{key:2,class:O({[b(o).em("text","expand")]:b(H)})},[T(u.$slots,"default")],2)):J("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var Xt=at(Jt,[["__file","button.vue"]]);const Yt={size:U.size,type:U.type,direction:{type:rt(String),values:["horizontal","vertical"],default:"horizontal"}},te=F({name:"ElButtonGroup"}),ee=F({...te,props:Yt,setup(r){const t=r;Ht(ut,Rt({size:j(t,"size"),type:j(t,"type")}));const e=K("button");return(a,n)=>(x(),D("div",{class:O([b(e).b("group"),b(e).bm("group",t.direction)])},[T(a.$slots,"default")],2))}});var ft=at(ee,[["__file","button-group.vue"]]);const ie=pt(Xt,{ButtonGroup:ft});yt(ft);export{ie as E,qt as T,It as a,oe as b,st as c,ot as d,L as f,Tt as u}; diff --git a/static/app/assets/el-card-CfK866jr.js b/static/app/assets/el-card-CfK866jr.js new file mode 100644 index 0000000..ccc21ee --- /dev/null +++ b/static/app/assets/el-card-CfK866jr.js @@ -0,0 +1 @@ +import{b as u,t as h,aK as C,u as v,_ as c,d as m}from"./base-xgxQQEpV.js";import{A as p,j as r,o as t,l as n,k as S,n as o,C as a,B as l,x as i,t as f,U as b}from"./vendor-vue-WbiK4TmU.js";const g=u({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:h([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),w=p({name:"ElCard"}),$=p({...w,props:g,setup(B){const y=C("card"),s=v("card");return(e,E)=>{var d;return t(),r("div",{class:o([a(s).b(),a(s).is(`${e.shadow||((d=a(y))==null?void 0:d.shadow)||"always"}-shadow`)])},[e.$slots.header||e.header?(t(),r("div",{key:0,class:o([a(s).e("header"),e.headerClass])},[l(e.$slots,"header",{},()=>[i(f(e.header),1)])],2)):n("v-if",!0),S("div",{class:o([a(s).e("body"),e.bodyClass]),style:b(e.bodyStyle)},[l(e.$slots,"default")],6),e.$slots.footer||e.footer?(t(),r("div",{key:1,class:o([a(s).e("footer"),e.footerClass])},[l(e.$slots,"footer",{},()=>[i(f(e.footer),1)])],2)):n("v-if",!0)],2)}}});var k=c($,[["__file","card.vue"]]);const V=m(k);export{V as E}; diff --git a/static/app/assets/el-card-DfVpO1U5.js b/static/app/assets/el-card-DfVpO1U5.js deleted file mode 100644 index 3fc4163..0000000 --- a/static/app/assets/el-card-DfVpO1U5.js +++ /dev/null @@ -1 +0,0 @@ -import{b as u,t as h,aV as C,u as v,_ as c,d as m}from"./el-button-DWxIvzz-.js";import{A as p,j as r,o as t,l as n,k as S,n as o,C as a,B as l,x as i,t as f,U as b}from"./vendor-vue-DxN60LNb.js";const g=u({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:h([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),w=p({name:"ElCard"}),$=p({...w,props:g,setup(B){const y=C("card"),s=v("card");return(e,E)=>{var d;return t(),r("div",{class:o([a(s).b(),a(s).is(`${e.shadow||((d=a(y))==null?void 0:d.shadow)||"always"}-shadow`)])},[e.$slots.header||e.header?(t(),r("div",{key:0,class:o([a(s).e("header"),e.headerClass])},[l(e.$slots,"header",{},()=>[i(f(e.header),1)])],2)):n("v-if",!0),S("div",{class:o([a(s).e("body"),e.bodyClass]),style:b(e.bodyStyle)},[l(e.$slots,"default")],6),e.$slots.footer||e.footer?(t(),r("div",{key:1,class:o([a(s).e("footer"),e.footerClass])},[l(e.$slots,"footer",{},()=>[i(f(e.footer),1)])],2)):n("v-if",!0)],2)}}});var k=c($,[["__file","card.vue"]]);const P=m(k);export{P as E}; diff --git a/static/app/assets/el-empty-B4_NEFfq.js b/static/app/assets/el-empty-B4_NEFfq.js new file mode 100644 index 0000000..4bcfd83 --- /dev/null +++ b/static/app/assets/el-empty-B4_NEFfq.js @@ -0,0 +1 @@ +import{aL as yo,e as yt,S as bo,aM as Sn,k as wo,aN as kn,aj as Bn,P as Eo,ah as Co,n as To,b as Q,_ as ee,u as ae,r as we,s as ye,t as x,B as bt,d as et,R as de,L as Rn,aO as Jt,aP as Oo,aQ as So,aR as An,v as Mn,aS as ko,X as Bo,aB as Pn,C as In,D as Qt,E as wt,aA as Ro,Y as Ao,U as en,az as tn,J as Mo}from"./base-xgxQQEpV.js";import{h as Po,i as Io,u as Bt,E as $o}from"./el-input-BaZNy9Kg.js";import{a as Et,c as nn,d as $n,b as lt,k as fe,g as Ln,o as Lo}from"./http-BoPYlvwK.js";import{A as F,Q as me,g as z,h as B,z as ue,Z as Se,c as W,o as L,s as V,w as Le,k as M,q as ke,n as N,C as f,U as pe,R as Ge,T as dt,j as q,p as U,F as zn,L as K,M as ze,f as Nn,al as zo,i as xe,W as be,a6 as No,l as X,B as Z,D as $e,X as pt,ad as Ct,am as Do,$ as on,an as Ho,O as Rt,E as Fo,V as _o,a0 as Be,K as At,a5 as xo,ao as jo,ap as Vo,t as Oe,aq as Wo,r as Ue,m as st,x as rn,ar as Tt,a2 as Ko,J as Mt,I as Dn,a1 as Hn,_ as an}from"./vendor-vue-WbiK4TmU.js";import{t as Uo,i as sn,f as Fn,o as ln}from"./aria-DLpFpzDe.js";import{b as _n,t as qo,c as Go,E as Xo,g as Zo,h as Yo,i as Jo}from"./el-overlay-hge8bsIn.js";import{u as Qo,b as ct}from"./index-CoYtSGUZ.js";import{d as un,u as er,E as tr}from"./el-button-LKkD3jQh.js";var nr=/\s/;function or(e){for(var t=e.length;t--&&nr.test(e.charAt(t)););return t}var rr=/^\s+/;function ar(e){return e&&e.slice(0,or(e)+1).replace(rr,"")}var cn=NaN,sr=/^[-+]0x[0-9a-f]+$/i,ir=/^0b[01]+$/i,lr=/^0o[0-7]+$/i,ur=parseInt;function ht(e){if(typeof e=="number")return e;if(yo(e))return cn;if(yt(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=yt(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=ar(e);var n=ir.test(e);return n||lr.test(e)?ur(e.slice(2),n?2:8):sr.test(e)?cn:+e}function cr(e,t,n){return e===e&&(n!==void 0&&(e=e<=n?e:n),t!==void 0&&(e=e>=t?e:t)),e}function gi(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=ht(n),n=n===n?n:0),t!==void 0&&(t=ht(t),t=t===t?t:0),cr(ht(e),t,n)}var fr=1,dr=2;function pr(e,t,n,o){var r=n.length,a=r;if(e==null)return!a;for(e=Object(e);r--;){var i=n[r];if(i[2]?i[1]!==e[i[0]]:!(i[0]in e))return!1}for(;++r({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Pt=Symbol("scrollbarContextKey"),Sr=Q({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),kr="Thumb",Br=F({__name:"thumb",props:Sr,setup(e){const t=e,n=me(Pt),o=ae("scrollbar");n||Uo(kr,"can not inject scrollbar context");const r=z(),a=z(),i=z({}),u=z(!1);let l=!1,s=!1,d=0,p=0,v=we?document.onselectstart:null;const c=B(()=>Tr[t.vertical?"vertical":"horizontal"]),h=B(()=>Or({size:t.size,move:t.move,bar:c.value})),g=B(()=>r.value[c.value.offset]**2/n.wrapElement[c.value.scrollSize]/t.ratio/a.value[c.value.offset]),O=C=>{var I;if(C.stopPropagation(),C.ctrlKey||[1,2].includes(C.button))return;(I=window.getSelection())==null||I.removeAllRanges(),T(C);const $=C.currentTarget;$&&(i.value[c.value.axis]=$[c.value.offset]-(C[c.value.client]-$.getBoundingClientRect()[c.value.direction]))},E=C=>{if(!a.value||!r.value||!n.wrapElement)return;const I=Math.abs(C.target.getBoundingClientRect()[c.value.direction]-C[c.value.client]),$=a.value[c.value.offset]/2,b=(I-$)*100*g.value/r.value[c.value.offset];n.wrapElement[c.value.scroll]=b*n.wrapElement[c.value.scrollSize]/100},T=C=>{C.stopImmediatePropagation(),l=!0,d=n.wrapElement.scrollHeight,p=n.wrapElement.scrollWidth,document.addEventListener("mousemove",m),document.addEventListener("mouseup",y),v=document.onselectstart,document.onselectstart=()=>!1},m=C=>{if(!r.value||!a.value||l===!1)return;const I=i.value[c.value.axis];if(!I)return;const $=(r.value.getBoundingClientRect()[c.value.direction]-C[c.value.client])*-1,b=a.value[c.value.offset]-I,k=($-b)*100*g.value/r.value[c.value.offset];c.value.scroll==="scrollLeft"?n.wrapElement[c.value.scroll]=k*p/100:n.wrapElement[c.value.scroll]=k*d/100},y=()=>{l=!1,i.value[c.value.axis]=0,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",y),S(),s&&(u.value=!1)},R=()=>{s=!1,u.value=!!t.size},P=()=>{s=!0,u.value=l};ue(()=>{S(),document.removeEventListener("mouseup",y)});const S=()=>{document.onselectstart!==v&&(document.onselectstart=v)};return Et(Se(n,"scrollbarElement"),"mousemove",R),Et(Se(n,"scrollbarElement"),"mouseleave",P),(C,I)=>(L(),W(dt,{name:f(o).b("fade"),persisted:""},{default:V(()=>[Le(M("div",{ref_key:"instance",ref:r,class:N([f(o).e("bar"),f(o).is(f(c).key)]),onMousedown:E,onClick:ke(()=>{},["stop"])},[M("div",{ref_key:"thumb",ref:a,class:N(f(o).e("thumb")),style:pe(f(h)),onMousedown:O},null,38)],42,["onClick"]),[[Ge,C.always||u.value]])]),_:1},8,["name"]))}});var fn=ee(Br,[["__file","thumb.vue"]]);const Rr=Q({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Ar=F({__name:"bar",props:Rr,setup(e,{expose:t}){const n=e,o=me(Pt),r=z(0),a=z(0),i=z(""),u=z(""),l=z(1),s=z(1);return t({handleScroll:v=>{if(v){const c=v.offsetHeight-Pe,h=v.offsetWidth-Pe;a.value=v.scrollTop*100/c*l.value,r.value=v.scrollLeft*100/h*s.value}},update:()=>{const v=o?.wrapElement;if(!v)return;const c=v.offsetHeight-Pe,h=v.offsetWidth-Pe,g=c**2/v.scrollHeight,O=h**2/v.scrollWidth,E=Math.max(g,n.minSize),T=Math.max(O,n.minSize);l.value=g/(c-g)/(E/(c-E)),s.value=O/(h-O)/(T/(h-T)),u.value=E+Pe(L(),q(zn,null,[U(fn,{move:r.value,ratio:s.value,size:i.value,always:v.always},null,8,["move","ratio","size","always"]),U(fn,{move:a.value,ratio:l.value,size:u.value,vertical:"",always:v.always},null,8,["move","ratio","size","always"])],64))}});var Mr=ee(Ar,[["__file","bar.vue"]]);const Pr=Q({distance:{type:Number,default:0},height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:x([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...Bt(["ariaLabel","ariaOrientation"])}),Ir={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(ye)},$r="ElScrollbar",Lr=F({name:$r}),zr=F({...Lr,props:Pr,emits:Ir,setup(e,{expose:t,emit:n}){const o=e,r=ae("scrollbar");let a,i,u,l=0,s=0,d="";const p={bottom:!1,top:!1,right:!1,left:!1},v=z(),c=z(),h=z(),g=z(),O=B(()=>{const b={},k=bt(o.height),D=bt(o.maxHeight);return k&&(b.height=k),D&&(b.maxHeight=D),[o.wrapStyle,b]}),E=B(()=>[o.wrapClass,r.e("wrap"),{[r.em("wrap","hidden-default")]:!o.native}]),T=B(()=>[r.e("view"),o.viewClass]),m=b=>{var k;return(k=p[b])!=null?k:!1},y={top:"bottom",bottom:"top",left:"right",right:"left"},R=b=>{const k=y[d];if(!k)return;const D=b[d],_=b[k];D&&!p[d]&&(p[d]=!0),!_&&p[k]&&(p[k]=!1)},P=()=>{var b;if(c.value){(b=g.value)==null||b.handleScroll(c.value);const k=l,D=s;l=c.value.scrollTop,s=c.value.scrollLeft;const _={bottom:l+c.value.clientHeight>=c.value.scrollHeight-o.distance,top:l<=o.distance&&k!==0,right:s+c.value.clientWidth>=c.value.scrollWidth-o.distance&&D!==s,left:s<=o.distance&&D!==0};if(n("scroll",{scrollTop:l,scrollLeft:s}),k!==l&&(d=l>k?"bottom":"top"),D!==s&&(d=s>D?"right":"left"),o.distance>0){if(m(d))return;R(_)}_[d]&&n("end-reached",d)}};function S(b,k){pt(b)?c.value.scrollTo(b):ye(b)&&ye(k)&&c.value.scrollTo(b,k)}const C=b=>{ye(b)&&(c.value.scrollTop=b)},I=b=>{ye(b)&&(c.value.scrollLeft=b)},$=()=>{var b;(b=g.value)==null||b.update(),p[d]=!1};return K(()=>o.noresize,b=>{b?(a?.(),i?.(),u?.()):({stop:a}=nn(h,$),{stop:i}=nn(c,$),u=Et("resize",$))},{immediate:!0}),K(()=>[o.maxHeight,o.height],()=>{o.native||be(()=>{var b;$(),c.value&&((b=g.value)==null||b.handleScroll(c.value))})}),ze(Pt,Nn({scrollbarElement:v,wrapElement:c})),zo(()=>{c.value&&(c.value.scrollTop=l,c.value.scrollLeft=s)}),xe(()=>{o.native||be(()=>{$()})}),No(()=>$()),t({wrapRef:c,update:$,scrollTo:S,setScrollTop:C,setScrollLeft:I,handleScroll:P}),(b,k)=>(L(),q("div",{ref_key:"scrollbarRef",ref:v,class:N(f(r).b())},[M("div",{ref_key:"wrapRef",ref:c,class:N(f(E)),style:pe(f(O)),tabindex:b.tabindex,onScroll:P},[(L(),W($e(b.tag),{id:b.id,ref_key:"resizeRef",ref:h,class:N(f(T)),style:pe(b.viewStyle),role:b.role,"aria-label":b.ariaLabel,"aria-orientation":b.ariaOrientation},{default:V(()=>[Z(b.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),b.native?X("v-if",!0):(L(),W(Mr,{key:0,ref_key:"barRef",ref:g,always:b.always,"min-size":b.minSize},null,8,["always","min-size"]))],2))}});var Nr=ee(zr,[["__file","scrollbar.vue"]]);const yi=et(Nr),It=Symbol("popper"),Vn=Symbol("popperContent"),Dr=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Wn=Q({role:{type:String,values:Dr,default:"tooltip"}}),Hr=F({name:"ElPopper",inheritAttrs:!1}),Fr=F({...Hr,props:Wn,setup(e,{expose:t}){const n=e,o=z(),r=z(),a=z(),i=z(),u=B(()=>n.role),l={triggerRef:o,popperInstanceRef:r,contentRef:a,referenceRef:i,role:u};return t(l),ze(It,l),(s,d)=>Z(s.$slots,"default")}});var _r=ee(Fr,[["__file","popper.vue"]]);const xr=F({name:"ElPopperArrow",inheritAttrs:!1}),jr=F({...xr,setup(e,{expose:t}){const n=ae("popper"),{arrowRef:o,arrowStyle:r}=me(Vn,void 0);return ue(()=>{o.value=void 0}),t({arrowRef:o}),(a,i)=>(L(),q("span",{ref_key:"arrowRef",ref:o,class:N(f(n).e("arrow")),style:pe(f(r)),"data-popper-arrow":""},null,6))}});var Vr=ee(jr,[["__file","arrow.vue"]]);const Kn=Q({virtualRef:{type:x(Object)},virtualTriggering:Boolean,onMouseenter:{type:x(Function)},onMouseleave:{type:x(Function)},onClick:{type:x(Function)},onKeydown:{type:x(Function)},onFocus:{type:x(Function)},onBlur:{type:x(Function)},onContextmenu:{type:x(Function)},id:String,open:Boolean}),Un=Symbol("elForwardRef"),Wr=e=>{ze(Un,{setForwardRef:n=>{e.value=n}})},Kr=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Ur="ElOnlyChild",qr=F({name:Ur,setup(e,{slots:t,attrs:n}){var o;const r=me(Un),a=Kr((o=r?.setForwardRef)!=null?o:Ct);return()=>{var i;const u=(i=t.default)==null?void 0:i.call(t,n);if(!u)return null;const[l,s]=qn(u);return l?Le(Do(l,n),[[a]]):null}}});function qn(e){if(!e)return[null,0];const t=e,n=t.filter(o=>o.type!==on).length;for(const o of t){if(pt(o))switch(o.type){case on:continue;case Ho:case"svg":return[dn(o),n];case zn:return qn(o.children);default:return[o,n]}return[dn(o),n]}return[null,0]}function dn(e){const t=ae("only-child");return U("span",{class:t.e("content")},[e])}const Gr=F({name:"ElPopperTrigger",inheritAttrs:!1}),Xr=F({...Gr,props:Kn,setup(e,{expose:t}){const n=e,{role:o,triggerRef:r}=me(It,void 0);Wr(r);const a=B(()=>u.value?n.id:void 0),i=B(()=>{if(o&&o.value==="tooltip")return n.open&&n.id?n.id:void 0}),u=B(()=>{if(o&&o.value!=="tooltip")return o.value}),l=B(()=>u.value?`${n.open}`:void 0);let s;const d=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return xe(()=>{K(()=>n.virtualRef,p=>{p&&(r.value=$n(p))},{immediate:!0}),K(r,(p,v)=>{s?.(),s=void 0,de(v)&&d.forEach(c=>{const h=n[c];h&&v.removeEventListener(c.slice(2).toLowerCase(),h,["onFocus","onBlur"].includes(c))}),de(p)&&(d.forEach(c=>{const h=n[c];h&&p.addEventListener(c.slice(2).toLowerCase(),h,["onFocus","onBlur"].includes(c))}),sn(p)&&(s=K([a,i,u,l],c=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,g)=>{Rn(c[g])?p.removeAttribute(h):p.setAttribute(h,c[g])})},{immediate:!0}))),de(v)&&sn(v)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(c=>v.removeAttribute(c))},{immediate:!0})}),ue(()=>{if(s?.(),s=void 0,r.value&&de(r.value)){const p=r.value;d.forEach(v=>{const c=n[v];c&&p.removeEventListener(v.slice(2).toLowerCase(),c,["onFocus","onBlur"].includes(v))}),r.value=void 0}}),t({triggerRef:r}),(p,v)=>p.virtualTriggering?X("v-if",!0):(L(),W(f(qr),Rt({key:0},p.$attrs,{"aria-controls":f(a),"aria-describedby":f(i),"aria-expanded":f(l),"aria-haspopup":f(u)}),{default:V(()=>[Z(p.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var Zr=ee(Xr,[["__file","trigger.vue"]]),Y="top",oe="bottom",re="right",J="left",$t="auto",tt=[Y,oe,re,J],Ne="start",Ye="end",Yr="clippingParents",Gn="viewport",qe="popper",Jr="reference",pn=tt.reduce(function(e,t){return e.concat([t+"-"+Ne,t+"-"+Ye])},[]),Lt=[].concat(tt,[$t]).reduce(function(e,t){return e.concat([t,t+"-"+Ne,t+"-"+Ye])},[]),Qr="beforeRead",ea="read",ta="afterRead",na="beforeMain",oa="main",ra="afterMain",aa="beforeWrite",sa="write",ia="afterWrite",la=[Qr,ea,ta,na,oa,ra,aa,sa,ia];function le(e){return e?(e.nodeName||"").toLowerCase():null}function se(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function De(e){var t=se(e).Element;return e instanceof t||e instanceof Element}function ne(e){var t=se(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function zt(e){if(typeof ShadowRoot>"u")return!1;var t=se(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function ua(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var o=t.styles[n]||{},r=t.attributes[n]||{},a=t.elements[n];!ne(a)||!le(a)||(Object.assign(a.style,o),Object.keys(r).forEach(function(i){var u=r[i];u===!1?a.removeAttribute(i):a.setAttribute(i,u===!0?"":u)}))})}function ca(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(o){var r=t.elements[o],a=t.attributes[o]||{},i=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:n[o]),u=i.reduce(function(l,s){return l[s]="",l},{});!ne(r)||!le(r)||(Object.assign(r.style,u),Object.keys(a).forEach(function(l){r.removeAttribute(l)}))})}}var Xn={name:"applyStyles",enabled:!0,phase:"write",fn:ua,effect:ca,requires:["computeStyles"]};function ie(e){return e.split("-")[0]}var Ae=Math.max,ft=Math.min,He=Math.round;function Fe(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),o=1,r=1;if(ne(e)&&t){var a=e.offsetHeight,i=e.offsetWidth;i>0&&(o=He(n.width)/i||1),a>0&&(r=He(n.height)/a||1)}return{width:n.width/o,height:n.height/r,top:n.top/r,right:n.right/o,bottom:n.bottom/r,left:n.left/o,x:n.left/o,y:n.top/r}}function Nt(e){var t=Fe(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function Zn(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&zt(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function ve(e){return se(e).getComputedStyle(e)}function fa(e){return["table","td","th"].indexOf(le(e))>=0}function Ee(e){return((De(e)?e.ownerDocument:e.document)||window.document).documentElement}function vt(e){return le(e)==="html"?e:e.assignedSlot||e.parentNode||(zt(e)?e.host:null)||Ee(e)}function vn(e){return!ne(e)||ve(e).position==="fixed"?null:e.offsetParent}function da(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&ne(e)){var o=ve(e);if(o.position==="fixed")return null}var r=vt(e);for(zt(r)&&(r=r.host);ne(r)&&["html","body"].indexOf(le(r))<0;){var a=ve(r);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return r;r=r.parentNode}return null}function nt(e){for(var t=se(e),n=vn(e);n&&fa(n)&&ve(n).position==="static";)n=vn(n);return n&&(le(n)==="html"||le(n)==="body"&&ve(n).position==="static")?t:n||da(e)||t}function Dt(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Xe(e,t,n){return Ae(e,ft(t,n))}function pa(e,t,n){var o=Xe(e,t,n);return o>n?n:o}function Yn(){return{top:0,right:0,bottom:0,left:0}}function Jn(e){return Object.assign({},Yn(),e)}function Qn(e,t){return t.reduce(function(n,o){return n[o]=e,n},{})}var va=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,Jn(typeof e!="number"?e:Qn(e,tt))};function ma(e){var t,n=e.state,o=e.name,r=e.options,a=n.elements.arrow,i=n.modifiersData.popperOffsets,u=ie(n.placement),l=Dt(u),s=[J,re].indexOf(u)>=0,d=s?"height":"width";if(!(!a||!i)){var p=va(r.padding,n),v=Nt(a),c=l==="y"?Y:J,h=l==="y"?oe:re,g=n.rects.reference[d]+n.rects.reference[l]-i[l]-n.rects.popper[d],O=i[l]-n.rects.reference[l],E=nt(a),T=E?l==="y"?E.clientHeight||0:E.clientWidth||0:0,m=g/2-O/2,y=p[c],R=T-v[d]-p[h],P=T/2-v[d]/2+m,S=Xe(y,P,R),C=l;n.modifiersData[o]=(t={},t[C]=S,t.centerOffset=S-P,t)}}function ga(e){var t=e.state,n=e.options,o=n.element,r=o===void 0?"[data-popper-arrow]":o;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||!Zn(t.elements.popper,r)||(t.elements.arrow=r))}var ha={name:"arrow",enabled:!0,phase:"main",fn:ma,effect:ga,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function _e(e){return e.split("-")[1]}var ya={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ba(e){var t=e.x,n=e.y,o=window,r=o.devicePixelRatio||1;return{x:He(t*r)/r||0,y:He(n*r)/r||0}}function mn(e){var t,n=e.popper,o=e.popperRect,r=e.placement,a=e.variation,i=e.offsets,u=e.position,l=e.gpuAcceleration,s=e.adaptive,d=e.roundOffsets,p=e.isFixed,v=i.x,c=v===void 0?0:v,h=i.y,g=h===void 0?0:h,O=typeof d=="function"?d({x:c,y:g}):{x:c,y:g};c=O.x,g=O.y;var E=i.hasOwnProperty("x"),T=i.hasOwnProperty("y"),m=J,y=Y,R=window;if(s){var P=nt(n),S="clientHeight",C="clientWidth";if(P===se(n)&&(P=Ee(n),ve(P).position!=="static"&&u==="absolute"&&(S="scrollHeight",C="scrollWidth")),P=P,r===Y||(r===J||r===re)&&a===Ye){y=oe;var I=p&&P===R&&R.visualViewport?R.visualViewport.height:P[S];g-=I-o.height,g*=l?1:-1}if(r===J||(r===Y||r===oe)&&a===Ye){m=re;var $=p&&P===R&&R.visualViewport?R.visualViewport.width:P[C];c-=$-o.width,c*=l?1:-1}}var b=Object.assign({position:u},s&&ya),k=d===!0?ba({x:c,y:g}):{x:c,y:g};if(c=k.x,g=k.y,l){var D;return Object.assign({},b,(D={},D[y]=T?"0":"",D[m]=E?"0":"",D.transform=(R.devicePixelRatio||1)<=1?"translate("+c+"px, "+g+"px)":"translate3d("+c+"px, "+g+"px, 0)",D))}return Object.assign({},b,(t={},t[y]=T?g+"px":"",t[m]=E?c+"px":"",t.transform="",t))}function wa(e){var t=e.state,n=e.options,o=n.gpuAcceleration,r=o===void 0?!0:o,a=n.adaptive,i=a===void 0?!0:a,u=n.roundOffsets,l=u===void 0?!0:u,s={placement:ie(t.placement),variation:_e(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,mn(Object.assign({},s,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,mn(Object.assign({},s,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var eo={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:wa,data:{}},it={passive:!0};function Ea(e){var t=e.state,n=e.instance,o=e.options,r=o.scroll,a=r===void 0?!0:r,i=o.resize,u=i===void 0?!0:i,l=se(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&s.forEach(function(d){d.addEventListener("scroll",n.update,it)}),u&&l.addEventListener("resize",n.update,it),function(){a&&s.forEach(function(d){d.removeEventListener("scroll",n.update,it)}),u&&l.removeEventListener("resize",n.update,it)}}var to={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Ea,data:{}},Ca={left:"right",right:"left",bottom:"top",top:"bottom"};function ut(e){return e.replace(/left|right|bottom|top/g,function(t){return Ca[t]})}var Ta={start:"end",end:"start"};function gn(e){return e.replace(/start|end/g,function(t){return Ta[t]})}function Ht(e){var t=se(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}}function Ft(e){return Fe(Ee(e)).left+Ht(e).scrollLeft}function Oa(e){var t=se(e),n=Ee(e),o=t.visualViewport,r=n.clientWidth,a=n.clientHeight,i=0,u=0;return o&&(r=o.width,a=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(i=o.offsetLeft,u=o.offsetTop)),{width:r,height:a,x:i+Ft(e),y:u}}function Sa(e){var t,n=Ee(e),o=Ht(e),r=(t=e.ownerDocument)==null?void 0:t.body,a=Ae(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),i=Ae(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),u=-o.scrollLeft+Ft(e),l=-o.scrollTop;return ve(r||n).direction==="rtl"&&(u+=Ae(n.clientWidth,r?r.clientWidth:0)-a),{width:a,height:i,x:u,y:l}}function _t(e){var t=ve(e),n=t.overflow,o=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+o)}function no(e){return["html","body","#document"].indexOf(le(e))>=0?e.ownerDocument.body:ne(e)&&_t(e)?e:no(vt(e))}function Ze(e,t){var n;t===void 0&&(t=[]);var o=no(e),r=o===((n=e.ownerDocument)==null?void 0:n.body),a=se(o),i=r?[a].concat(a.visualViewport||[],_t(o)?o:[]):o,u=t.concat(i);return r?u:u.concat(Ze(vt(i)))}function Ot(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ka(e){var t=Fe(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function hn(e,t){return t===Gn?Ot(Oa(e)):De(t)?ka(t):Ot(Sa(Ee(e)))}function Ba(e){var t=Ze(vt(e)),n=["absolute","fixed"].indexOf(ve(e).position)>=0,o=n&&ne(e)?nt(e):e;return De(o)?t.filter(function(r){return De(r)&&Zn(r,o)&&le(r)!=="body"}):[]}function Ra(e,t,n){var o=t==="clippingParents"?Ba(e):[].concat(t),r=[].concat(o,[n]),a=r[0],i=r.reduce(function(u,l){var s=hn(e,l);return u.top=Ae(s.top,u.top),u.right=ft(s.right,u.right),u.bottom=ft(s.bottom,u.bottom),u.left=Ae(s.left,u.left),u},hn(e,a));return i.width=i.right-i.left,i.height=i.bottom-i.top,i.x=i.left,i.y=i.top,i}function oo(e){var t=e.reference,n=e.element,o=e.placement,r=o?ie(o):null,a=o?_e(o):null,i=t.x+t.width/2-n.width/2,u=t.y+t.height/2-n.height/2,l;switch(r){case Y:l={x:i,y:t.y-n.height};break;case oe:l={x:i,y:t.y+t.height};break;case re:l={x:t.x+t.width,y:u};break;case J:l={x:t.x-n.width,y:u};break;default:l={x:t.x,y:t.y}}var s=r?Dt(r):null;if(s!=null){var d=s==="y"?"height":"width";switch(a){case Ne:l[s]=l[s]-(t[d]/2-n[d]/2);break;case Ye:l[s]=l[s]+(t[d]/2-n[d]/2);break}}return l}function Je(e,t){t===void 0&&(t={});var n=t,o=n.placement,r=o===void 0?e.placement:o,a=n.boundary,i=a===void 0?Yr:a,u=n.rootBoundary,l=u===void 0?Gn:u,s=n.elementContext,d=s===void 0?qe:s,p=n.altBoundary,v=p===void 0?!1:p,c=n.padding,h=c===void 0?0:c,g=Jn(typeof h!="number"?h:Qn(h,tt)),O=d===qe?Jr:qe,E=e.rects.popper,T=e.elements[v?O:d],m=Ra(De(T)?T:T.contextElement||Ee(e.elements.popper),i,l),y=Fe(e.elements.reference),R=oo({reference:y,element:E,placement:r}),P=Ot(Object.assign({},E,R)),S=d===qe?P:y,C={top:m.top-S.top+g.top,bottom:S.bottom-m.bottom+g.bottom,left:m.left-S.left+g.left,right:S.right-m.right+g.right},I=e.modifiersData.offset;if(d===qe&&I){var $=I[r];Object.keys(C).forEach(function(b){var k=[re,oe].indexOf(b)>=0?1:-1,D=[Y,oe].indexOf(b)>=0?"y":"x";C[b]+=$[D]*k})}return C}function Aa(e,t){t===void 0&&(t={});var n=t,o=n.placement,r=n.boundary,a=n.rootBoundary,i=n.padding,u=n.flipVariations,l=n.allowedAutoPlacements,s=l===void 0?Lt:l,d=_e(o),p=d?u?pn:pn.filter(function(h){return _e(h)===d}):tt,v=p.filter(function(h){return s.indexOf(h)>=0});v.length===0&&(v=p);var c=v.reduce(function(h,g){return h[g]=Je(e,{placement:g,boundary:r,rootBoundary:a,padding:i})[ie(g)],h},{});return Object.keys(c).sort(function(h,g){return c[h]-c[g]})}function Ma(e){if(ie(e)===$t)return[];var t=ut(e);return[gn(e),t,gn(t)]}function Pa(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var r=n.mainAxis,a=r===void 0?!0:r,i=n.altAxis,u=i===void 0?!0:i,l=n.fallbackPlacements,s=n.padding,d=n.boundary,p=n.rootBoundary,v=n.altBoundary,c=n.flipVariations,h=c===void 0?!0:c,g=n.allowedAutoPlacements,O=t.options.placement,E=ie(O),T=E===O,m=l||(T||!h?[ut(O)]:Ma(O)),y=[O].concat(m).reduce(function(Ce,ce){return Ce.concat(ie(ce)===$t?Aa(t,{placement:ce,boundary:d,rootBoundary:p,padding:s,flipVariations:h,allowedAutoPlacements:g}):ce)},[]),R=t.rects.reference,P=t.rects.popper,S=new Map,C=!0,I=y[0],$=0;$=0,G=_?"width":"height",j=Je(t,{placement:b,boundary:d,rootBoundary:p,altBoundary:v,padding:s}),A=_?D?re:J:D?oe:Y;R[G]>P[G]&&(A=ut(A));var w=ut(A),H=[];if(a&&H.push(j[k]<=0),u&&H.push(j[A]<=0,j[w]<=0),H.every(function(Ce){return Ce})){I=b,C=!1;break}S.set(b,H)}if(C)for(var te=h?3:1,Ve=function(Ce){var ce=y.find(function(rt){var Ke=S.get(rt);if(Ke)return Ke.slice(0,Ce).every(function(Me){return Me})});if(ce)return I=ce,"break"},We=te;We>0;We--){var ot=Ve(We);if(ot==="break")break}t.placement!==I&&(t.modifiersData[o]._skip=!0,t.placement=I,t.reset=!0)}}var Ia={name:"flip",enabled:!0,phase:"main",fn:Pa,requiresIfExists:["offset"],data:{_skip:!1}};function yn(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bn(e){return[Y,re,oe,J].some(function(t){return e[t]>=0})}function $a(e){var t=e.state,n=e.name,o=t.rects.reference,r=t.rects.popper,a=t.modifiersData.preventOverflow,i=Je(t,{elementContext:"reference"}),u=Je(t,{altBoundary:!0}),l=yn(i,o),s=yn(u,r,a),d=bn(l),p=bn(s);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:s,isReferenceHidden:d,hasPopperEscaped:p},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":p})}var La={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:$a};function za(e,t,n){var o=ie(e),r=[J,Y].indexOf(o)>=0?-1:1,a=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,i=a[0],u=a[1];return i=i||0,u=(u||0)*r,[J,re].indexOf(o)>=0?{x:u,y:i}:{x:i,y:u}}function Na(e){var t=e.state,n=e.options,o=e.name,r=n.offset,a=r===void 0?[0,0]:r,i=Lt.reduce(function(d,p){return d[p]=za(p,t.rects,a),d},{}),u=i[t.placement],l=u.x,s=u.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=s),t.modifiersData[o]=i}var Da={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Na};function Ha(e){var t=e.state,n=e.name;t.modifiersData[n]=oo({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}var ro={name:"popperOffsets",enabled:!0,phase:"read",fn:Ha,data:{}};function Fa(e){return e==="x"?"y":"x"}function _a(e){var t=e.state,n=e.options,o=e.name,r=n.mainAxis,a=r===void 0?!0:r,i=n.altAxis,u=i===void 0?!1:i,l=n.boundary,s=n.rootBoundary,d=n.altBoundary,p=n.padding,v=n.tether,c=v===void 0?!0:v,h=n.tetherOffset,g=h===void 0?0:h,O=Je(t,{boundary:l,rootBoundary:s,padding:p,altBoundary:d}),E=ie(t.placement),T=_e(t.placement),m=!T,y=Dt(E),R=Fa(y),P=t.modifiersData.popperOffsets,S=t.rects.reference,C=t.rects.popper,I=typeof g=="function"?g(Object.assign({},t.rects,{placement:t.placement})):g,$=typeof I=="number"?{mainAxis:I,altAxis:I}:Object.assign({mainAxis:0,altAxis:0},I),b=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,k={x:0,y:0};if(P){if(a){var D,_=y==="y"?Y:J,G=y==="y"?oe:re,j=y==="y"?"height":"width",A=P[y],w=A+O[_],H=A-O[G],te=c?-C[j]/2:0,Ve=T===Ne?S[j]:C[j],We=T===Ne?-C[j]:-S[j],ot=t.elements.arrow,Ce=c&&ot?Nt(ot):{width:0,height:0},ce=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Yn(),rt=ce[_],Ke=ce[G],Me=Xe(0,S[j],Ce[j]),co=m?S[j]/2-te-Me-rt-$.mainAxis:Ve-Me-rt-$.mainAxis,fo=m?-S[j]/2+te+Me+Ke+$.mainAxis:We+Me+Ke+$.mainAxis,mt=t.elements.arrow&&nt(t.elements.arrow),po=mt?y==="y"?mt.clientTop||0:mt.clientLeft||0:0,Vt=(D=b?.[y])!=null?D:0,vo=A+co-Vt-po,mo=A+fo-Vt,Wt=Xe(c?ft(w,vo):w,A,c?Ae(H,mo):H);P[y]=Wt,k[y]=Wt-A}if(u){var Kt,go=y==="x"?Y:J,ho=y==="x"?oe:re,Te=P[R],at=R==="y"?"height":"width",Ut=Te+O[go],qt=Te-O[ho],gt=[Y,J].indexOf(E)!==-1,Gt=(Kt=b?.[R])!=null?Kt:0,Xt=gt?Ut:Te-S[at]-C[at]-Gt+$.altAxis,Zt=gt?Te+S[at]+C[at]-Gt-$.altAxis:qt,Yt=c&>?pa(Xt,Te,Zt):Xe(c?Xt:Ut,Te,c?Zt:qt);P[R]=Yt,k[R]=Yt-Te}t.modifiersData[o]=k}}var xa={name:"preventOverflow",enabled:!0,phase:"main",fn:_a,requiresIfExists:["offset"]};function ja(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Va(e){return e===se(e)||!ne(e)?Ht(e):ja(e)}function Wa(e){var t=e.getBoundingClientRect(),n=He(t.width)/e.offsetWidth||1,o=He(t.height)/e.offsetHeight||1;return n!==1||o!==1}function Ka(e,t,n){n===void 0&&(n=!1);var o=ne(t),r=ne(t)&&Wa(t),a=Ee(t),i=Fe(e,r),u={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(o||!o&&!n)&&((le(t)!=="body"||_t(a))&&(u=Va(t)),ne(t)?(l=Fe(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Ft(a))),{x:i.left+u.scrollLeft-l.x,y:i.top+u.scrollTop-l.y,width:i.width,height:i.height}}function Ua(e){var t=new Map,n=new Set,o=[];e.forEach(function(a){t.set(a.name,a)});function r(a){n.add(a.name);var i=[].concat(a.requires||[],a.requiresIfExists||[]);i.forEach(function(u){if(!n.has(u)){var l=t.get(u);l&&r(l)}}),o.push(a)}return e.forEach(function(a){n.has(a.name)||r(a)}),o}function qa(e){var t=Ua(e);return la.reduce(function(n,o){return n.concat(t.filter(function(r){return r.phase===o}))},[])}function Ga(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function Xa(e){var t=e.reduce(function(n,o){var r=n[o.name];return n[o.name]=r?Object.assign({},r,o,{options:Object.assign({},r.options,o.options),data:Object.assign({},r.data,o.data)}):o,n},{});return Object.keys(t).map(function(n){return t[n]})}var wn={placement:"bottom",modifiers:[],strategy:"absolute"};function En(){for(var e=arguments.length,t=new Array(e),n=0;n({})},strategy:{type:String,values:Qa,default:"absolute"}}),so=Q({...es,...ao,id:String,style:{type:x([String,Array,Object])},className:{type:x([String,Array,Object])},effect:{type:x(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:x([String,Array,Object])},popperStyle:{type:x([String,Array,Object])},referenceEl:{type:x(Object)},triggerTargetEl:{type:x(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...Bt(["ariaLabel"]),loop:Boolean}),ts={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},ns=(e,t)=>{const n=z(!1),o=z(),r=()=>{t("focus")},a=s=>{var d;((d=s.detail)==null?void 0:d.focusReason)!=="pointer"&&(o.value="first",t("blur"))},i=s=>{e.visible&&!n.value&&(s.target&&(o.value=s.target),n.value=!0)},u=s=>{e.trapping||(s.detail.focusReason==="pointer"&&s.preventDefault(),n.value=!1)},l=()=>{n.value=!1,t("close")};return ue(()=>{o.value=void 0}),{focusStartRef:o,trapped:n,onFocusAfterReleased:a,onFocusAfterTrapped:r,onFocusInTrap:i,onFocusoutPrevented:u,onReleaseRequested:l}},os=(e,t=[])=>{const{placement:n,strategy:o,popperOptions:r}=e,a={placement:n,strategy:o,...r,modifiers:[...as(e),...t]};return ss(a,r?.modifiers),a},rs=e=>{if(we)return $n(e)};function as(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:o}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:0,bottom:0,left:0,right:0}}},{name:"flip",options:{padding:5,fallbackPlacements:o}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function ss(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const is=(e,t,n={})=>{const o={name:"updateState",enabled:!0,phase:"write",fn:({state:l})=>{const s=ls(l);Object.assign(i.value,s)},requires:["computeStyles"]},r=B(()=>{const{onFirstUpdate:l,placement:s,strategy:d,modifiers:p}=f(n);return{onFirstUpdate:l,placement:s||"bottom",strategy:d||"absolute",modifiers:[...p||[],o,{name:"applyStyles",enabled:!1}]}}),a=Fo(),i=z({styles:{popper:{position:f(r).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),u=()=>{a.value&&(a.value.destroy(),a.value=void 0)};return K(r,l=>{const s=f(a);s&&s.setOptions(l)},{deep:!0}),K([e,t],([l,s])=>{u(),!(!l||!s)&&(a.value=Ja(l,s,f(r)))}),ue(()=>{u()}),{state:B(()=>{var l;return{...((l=f(a))==null?void 0:l.state)||{}}}),styles:B(()=>f(i).styles),attributes:B(()=>f(i).attributes),update:()=>{var l;return(l=f(a))==null?void 0:l.update()},forceUpdate:()=>{var l;return(l=f(a))==null?void 0:l.forceUpdate()},instanceRef:B(()=>f(a))}};function ls(e){const t=Object.keys(e.elements),n=Jt(t.map(r=>[r,e.styles[r]||{}])),o=Jt(t.map(r=>[r,e.attributes[r]]));return{styles:n,attributes:o}}const us=0,cs=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:o,role:r}=me(It,void 0),a=z(),i=B(()=>e.arrowOffset),u=B(()=>({name:"eventListeners",enabled:!!e.visible})),l=B(()=>{var E;const T=f(a),m=(E=f(i))!=null?E:us;return{name:"arrow",enabled:!Cr(T),options:{element:T,padding:m}}}),s=B(()=>({onFirstUpdate:()=>{h()},...os(e,[f(l),f(u)])})),d=B(()=>rs(e.referenceEl)||f(o)),{attributes:p,state:v,styles:c,update:h,forceUpdate:g,instanceRef:O}=is(d,n,s);return K(O,E=>t.value=E,{flush:"sync"}),xe(()=>{K(()=>{var E,T;return(T=(E=f(d))==null?void 0:E.getBoundingClientRect)==null?void 0:T.call(E)},()=>{h()})}),ue(()=>{t.value=void 0}),{attributes:p,arrowRef:a,contentRef:n,instanceRef:O,state:v,styles:c,role:r,forceUpdate:g,update:h}},fs=(e,{attributes:t,styles:n,role:o})=>{const{nextZIndex:r}=Oo(),a=ae("popper"),i=B(()=>f(t).popper),u=z(ye(e.zIndex)?e.zIndex:r()),l=B(()=>[a.b(),a.is("pure",e.pure),a.is(e.effect),e.popperClass]),s=B(()=>[{zIndex:f(u)},f(n).popper,e.popperStyle||{}]),d=B(()=>o.value==="dialog"?"false":void 0),p=B(()=>f(n).arrow||{});return{ariaModal:d,arrowStyle:p,contentAttrs:i,contentClass:l,contentStyle:s,contentZIndex:u,updateZIndex:()=>{u.value=ye(e.zIndex)?e.zIndex:r()}}},ds=F({name:"ElPopperContent"}),ps=F({...ds,props:so,emits:ts,setup(e,{expose:t,emit:n}){const o=e,{focusStartRef:r,trapped:a,onFocusAfterReleased:i,onFocusAfterTrapped:u,onFocusInTrap:l,onFocusoutPrevented:s,onReleaseRequested:d}=ns(o,n),{attributes:p,arrowRef:v,contentRef:c,styles:h,instanceRef:g,role:O,update:E}=cs(o),{ariaModal:T,arrowStyle:m,contentAttrs:y,contentClass:R,contentStyle:P,updateZIndex:S}=fs(o,{styles:h,attributes:p,role:O}),C=me(un,void 0);ze(Vn,{arrowStyle:m,arrowRef:v}),C&&ze(un,{...C,addInputId:Ct,removeInputId:Ct});let I;const $=(k=!0)=>{E(),k&&S()},b=()=>{$(!1),o.visible&&o.focusOnShow?a.value=!0:o.visible===!1&&(a.value=!1)};return xe(()=>{K(()=>o.triggerTargetEl,(k,D)=>{I?.(),I=void 0;const _=f(k||c.value),G=f(D||c.value);de(_)&&(I=K([O,()=>o.ariaLabel,T,()=>o.id],j=>{["role","aria-label","aria-modal","id"].forEach((A,w)=>{Rn(j[w])?_.removeAttribute(A):_.setAttribute(A,j[w])})},{immediate:!0})),G!==_&&de(G)&&["role","aria-label","aria-modal","id"].forEach(j=>{G.removeAttribute(j)})},{immediate:!0}),K(()=>o.visible,b,{immediate:!0})}),ue(()=>{I?.(),I=void 0,c.value=void 0}),t({popperContentRef:c,popperInstanceRef:g,updatePopper:$,contentStyle:P}),(k,D)=>(L(),q("div",Rt({ref_key:"contentRef",ref:c},f(y),{style:f(P),class:f(R),tabindex:"-1",onMouseenter:_=>k.$emit("mouseenter",_),onMouseleave:_=>k.$emit("mouseleave",_)}),[U(f(_n),{loop:k.loop,trapped:f(a),"trap-on-focus-in":!0,"focus-trap-el":f(c),"focus-start-el":f(r),onFocusAfterTrapped:f(u),onFocusAfterReleased:f(i),onFocusin:f(l),onFocusoutPrevented:f(s),onReleaseRequested:f(d)},{default:V(()=>[Z(k.$slots,"default")]),_:3},8,["loop","trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var vs=ee(ps,[["__file","content.vue"]]);const ms=et(_r),jt=Symbol("elTooltip");function Cn(){let e;const t=(o,r)=>{n(),e=window.setTimeout(o,r)},n=()=>window.clearTimeout(e);return So(()=>n()),{registerTimeout:t,cancelTimeout:n}}const gs=Q({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),hs=({showAfter:e,hideAfter:t,autoClose:n,open:o,close:r})=>{const{registerTimeout:a}=Cn(),{registerTimeout:i,cancelTimeout:u}=Cn();return{onOpen:(d,p=f(e))=>{a(()=>{o(d);const v=f(n);ye(v)&&v>0&&i(()=>{r(d)},v)},p)},onClose:(d,p=f(t))=>{u(),a(()=>{r(d)},p)}}},io=Q({...gs,...so,appendTo:{type:qo.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:x(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...Bt(["ariaLabel"])}),lo=Q({...Kn,disabled:Boolean,trigger:{type:x([String,Array]),default:"hover"},triggerKeys:{type:x(Array),default:()=>[lt.enter,lt.numpadEnter,lt.space]},focusOnTarget:Boolean}),ys=An({type:x(Boolean),default:null}),bs=An({type:x(Function)}),ws=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,o=[t],r={[e]:ys,[n]:bs};return{useModelToggle:({indicator:i,toggleReason:u,shouldHideWhenRouteChanges:l,shouldProceed:s,onShow:d,onHide:p})=>{const v=_o(),{emit:c}=v,h=v.props,g=B(()=>Be(h[n])),O=B(()=>h[e]===null),E=S=>{i.value!==!0&&(i.value=!0,u&&(u.value=S),Be(d)&&d(S))},T=S=>{i.value!==!1&&(i.value=!1,u&&(u.value=S),Be(p)&&p(S))},m=S=>{if(h.disabled===!0||Be(s)&&!s())return;const C=g.value&&we;C&&c(t,!0),(O.value||!C)&&E(S)},y=S=>{if(h.disabled===!0||!we)return;const C=g.value&&we;C&&c(t,!1),(O.value||!C)&&T(S)},R=S=>{Mn(S)&&(h.disabled&&S?g.value&&c(t,!1):i.value!==S&&(S?E():T()))},P=()=>{i.value?y():m()};return K(()=>h[e],R),l&&v.appContext.config.globalProperties.$route!==void 0&&K(()=>({...v.proxy.$route}),()=>{l.value&&i.value&&y()}),xe(()=>{R(h[e])}),{hide:y,show:m,toggle:P,hasUpdateHandler:g}},useModelToggleProps:r,useModelToggleEmits:o}},{useModelToggleProps:Es,useModelToggleEmits:Cs,useModelToggle:Ts}=ws("visible"),Os=Q({...Wn,...Es,...io,...lo,...ao,showArrow:{type:Boolean,default:!0}}),Ss=[...Cs,"before-show","before-hide","show","hide","open","close"],St=(e,t)=>At(e)?e.includes(t):e===t,Ie=(e,t,n)=>o=>{St(f(e),t)&&n(o)},ks=F({name:"ElTooltipTrigger"}),Bs=F({...ks,props:lo,setup(e,{expose:t}){const n=e,o=ae("tooltip"),{controlled:r,id:a,open:i,onOpen:u,onClose:l,onToggle:s}=me(jt,void 0),d=z(null),p=()=>{if(f(r)||n.disabled)return!0},v=Se(n,"trigger"),c=fe(p,Ie(v,"hover",y=>{u(y),n.focusOnTarget&&y.target&&be(()=>{Fn(y.target,{preventScroll:!0})})})),h=fe(p,Ie(v,"hover",l)),g=fe(p,Ie(v,"click",y=>{y.button===0&&s(y)})),O=fe(p,Ie(v,"focus",u)),E=fe(p,Ie(v,"focus",l)),T=fe(p,Ie(v,"contextmenu",y=>{y.preventDefault(),s(y)})),m=fe(p,y=>{const R=Ln(y);n.triggerKeys.includes(R)&&(y.preventDefault(),s(y))});return t({triggerRef:d}),(y,R)=>(L(),W(f(Zr),{id:f(a),"virtual-ref":y.virtualRef,open:f(i),"virtual-triggering":y.virtualTriggering,class:N(f(o).e("trigger")),onBlur:f(E),onClick:f(g),onContextmenu:f(T),onFocus:f(O),onMouseenter:f(c),onMouseleave:f(h),onKeydown:f(m)},{default:V(()=>[Z(y.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Rs=ee(Bs,[["__file","trigger.vue"]]);const uo=()=>{const e=ko(),t=Qo(),n=B(()=>`${e.value}-popper-container-${t.prefix}`),o=B(()=>`#${n.value}`);return{id:n,selector:o}},As=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},Ms=()=>{const{id:e,selector:t}=uo();return xo(()=>{we&&(document.body.querySelector(t.value)||As(e.value))}),{id:e,selector:t}},Ps=e=>!e&&e!==0?[]:At(e)?e:[e],Is=F({name:"ElTooltipContent",inheritAttrs:!1}),$s=F({...Is,props:io,setup(e,{expose:t}){const n=e,{selector:o}=uo(),r=ae("tooltip"),a=z(),i=Bo(()=>{var w;return(w=a.value)==null?void 0:w.popperContentRef});let u;const{controlled:l,id:s,open:d,trigger:p,onClose:v,onOpen:c,onShow:h,onHide:g,onBeforeShow:O,onBeforeHide:E}=me(jt,void 0),T=B(()=>n.transition||`${r.namespace.value}-fade-in-linear`),m=B(()=>n.persistent);ue(()=>{u?.()});const y=B(()=>f(m)?!0:f(d)),R=B(()=>n.disabled?!1:f(d)),P=B(()=>n.appendTo||o.value),S=B(()=>{var w;return(w=n.style)!=null?w:{}}),C=z(!0),I=()=>{g(),A()&&Fn(document.body,{preventScroll:!0}),C.value=!0},$=()=>{if(f(l))return!0},b=fe($,()=>{n.enterable&&St(f(p),"hover")&&c()}),k=fe($,()=>{St(f(p),"hover")&&v()}),D=()=>{var w,H;(H=(w=a.value)==null?void 0:w.updatePopper)==null||H.call(w),O?.()},_=()=>{E?.()},G=()=>{h()},j=()=>{n.virtualTriggering||v()},A=w=>{var H;const te=(H=a.value)==null?void 0:H.popperContentRef,Ve=w?.relatedTarget||document.activeElement;return te?.contains(Ve)};return K(()=>f(d),w=>{w?(C.value=!1,u=Lo(i,()=>{if(f(l))return;Ps(f(p)).every(te=>te!=="hover"&&te!=="focus")&&v()},{detectIframe:!0})):u?.()},{flush:"post"}),K(()=>n.content,()=>{var w,H;(H=(w=a.value)==null?void 0:w.updatePopper)==null||H.call(w)}),t({contentRef:a,isFocusInsideContent:A}),(w,H)=>(L(),W(f(Go),{disabled:!w.teleported,to:f(P)},{default:V(()=>[f(y)||!C.value?(L(),W(dt,{key:0,name:f(T),appear:!f(m),onAfterLeave:I,onBeforeEnter:D,onAfterEnter:G,onBeforeLeave:_,persisted:""},{default:V(()=>[Le(U(f(vs),Rt({id:f(s),ref_key:"contentRef",ref:a},w.$attrs,{"aria-label":w.ariaLabel,"aria-hidden":C.value,"boundaries-padding":w.boundariesPadding,"fallback-placements":w.fallbackPlacements,"gpu-acceleration":w.gpuAcceleration,offset:w.offset,placement:w.placement,"popper-options":w.popperOptions,"arrow-offset":w.arrowOffset,strategy:w.strategy,effect:w.effect,enterable:w.enterable,pure:w.pure,"popper-class":w.popperClass,"popper-style":[w.popperStyle,f(S)],"reference-el":w.referenceEl,"trigger-target-el":w.triggerTargetEl,visible:f(R),"z-index":w.zIndex,loop:w.loop,onMouseenter:f(b),onMouseleave:f(k),onBlur:j,onClose:f(v)}),{default:V(()=>[Z(w.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","loop","onMouseenter","onMouseleave","onClose"]),[[Ge,f(R)]])]),_:3},8,["name","appear"])):X("v-if",!0)]),_:3},8,["disabled","to"]))}});var Ls=ee($s,[["__file","content.vue"]]);const zs=F({name:"ElTooltip"}),Ns=F({...zs,props:Os,emits:Ss,setup(e,{expose:t,emit:n}){const o=e;Ms();const r=ae("tooltip"),a=ct(),i=z(),u=z(),l=()=>{var m;const y=f(i);y&&((m=y.popperInstanceRef)==null||m.update())},s=z(!1),d=z(),{show:p,hide:v,hasUpdateHandler:c}=Ts({indicator:s,toggleReason:d}),{onOpen:h,onClose:g}=hs({showAfter:Se(o,"showAfter"),hideAfter:Se(o,"hideAfter"),autoClose:Se(o,"autoClose"),open:p,close:v}),O=B(()=>Mn(o.visible)&&!c.value),E=B(()=>[r.b(),o.popperClass]);ze(jt,{controlled:O,id:a,open:jo(s),trigger:Se(o,"trigger"),onOpen:h,onClose:g,onToggle:m=>{f(s)?g(m):h(m)},onShow:()=>{n("show",d.value)},onHide:()=>{n("hide",d.value)},onBeforeShow:()=>{n("before-show",d.value)},onBeforeHide:()=>{n("before-hide",d.value)},updatePopper:l}),K(()=>o.disabled,m=>{m&&s.value&&(s.value=!1)});const T=m=>{var y;return(y=u.value)==null?void 0:y.isFocusInsideContent(m)};return Vo(()=>s.value&&v()),ue(()=>{d.value=void 0}),t({popperRef:i,contentRef:u,isFocusInsideContent:T,updatePopper:l,onOpen:h,onClose:g,hide:v}),(m,y)=>(L(),W(f(ms),{ref_key:"popperRef",ref:i,role:m.role},{default:V(()=>[U(Rs,{disabled:m.disabled,trigger:m.trigger,"trigger-keys":m.triggerKeys,"virtual-ref":m.virtualRef,"virtual-triggering":m.virtualTriggering,"focus-on-target":m.focusOnTarget},{default:V(()=>[m.$slots.default?Z(m.$slots,"default",{key:0}):X("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering","focus-on-target"]),U(Ls,{ref_key:"contentRef",ref:u,"aria-label":m.ariaLabel,"boundaries-padding":m.boundariesPadding,content:m.content,disabled:m.disabled,effect:m.effect,enterable:m.enterable,"fallback-placements":m.fallbackPlacements,"hide-after":m.hideAfter,"gpu-acceleration":m.gpuAcceleration,offset:m.offset,persistent:m.persistent,"popper-class":f(E),"popper-style":m.popperStyle,placement:m.placement,"popper-options":m.popperOptions,"arrow-offset":m.arrowOffset,pure:m.pure,"raw-content":m.rawContent,"reference-el":m.referenceEl,"trigger-target-el":m.triggerTargetEl,"show-after":m.showAfter,strategy:m.strategy,teleported:m.teleported,transition:m.transition,"virtual-triggering":m.virtualTriggering,"z-index":m.zIndex,"append-to":m.appendTo,loop:m.loop},{default:V(()=>[Z(m.$slots,"content",{},()=>[m.rawContent?(L(),q("span",{key:0,innerHTML:m.content},null,8,["innerHTML"])):(L(),q("span",{key:1},Oe(m.content),1))]),m.showArrow?(L(),W(f(Vr),{key:0})):X("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to","loop"])]),_:3},8,["role"]))}});var Ds=ee(Ns,[["__file","tooltip.vue"]]);const bi=et(Ds),Hs=Q({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:Pn},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),Fs={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},_s=F({name:"ElTag"}),xs=F({..._s,props:Hs,emits:Fs,setup(e,{emit:t}){const n=e,o=er(),{t:r}=In(),a=ae("tag"),i=B(()=>{const{type:d,hit:p,effect:v,closable:c,round:h}=n;return[a.b(),a.is("closable",c),a.m(d||"primary"),a.m(o.value),a.m(v),a.is("hit",p),a.is("round",h)]}),u=d=>{t("close",d)},l=d=>{t("click",d)},s=d=>{var p,v,c;(c=(v=(p=d?.component)==null?void 0:p.subTree)==null?void 0:v.component)!=null&&c.bum&&(d.component.subTree.component.bum=null)};return(d,p)=>d.disableTransitions?(L(),q("span",{key:0,class:N(f(i)),style:pe({backgroundColor:d.color}),onClick:l},[M("span",{class:N(f(a).e("content"))},[Z(d.$slots,"default")],2),d.closable?(L(),q("button",{key:0,"aria-label":f(r)("el.tag.close"),class:N(f(a).e("close")),type:"button",onClick:ke(u,["stop"])},[U(f(wt),null,{default:V(()=>[U(f(Qt))]),_:1})],10,["aria-label","onClick"])):X("v-if",!0)],6)):(L(),W(dt,{key:1,name:`${f(a).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:s},{default:V(()=>[M("span",{class:N(f(i)),style:pe({backgroundColor:d.color}),onClick:l},[M("span",{class:N(f(a).e("content"))},[Z(d.$slots,"default")],2),d.closable?(L(),q("button",{key:0,"aria-label":f(r)("el.tag.close"),class:N(f(a).e("close")),type:"button",onClick:ke(u,["stop"])},[U(f(wt),null,{default:V(()=>[U(f(Qt))]),_:1})],10,["aria-label","onClick"])):X("v-if",!0)],6)]),_:3},8,["name"]))}});var js=ee(xs,[["__file","tag.vue"]]);const wi=et(js),ge=new Map;if(we){let e;document.addEventListener("mousedown",t=>e=t),document.addEventListener("mouseup",t=>{if(e){for(const n of ge.values())for(const{documentHandler:o}of n)o(t,e);e=void 0}})}function Tn(e,t){let n=[];return At(t.arg)?n=t.arg:de(t.arg)&&n.push(t.arg),function(o,r){const a=t.instance.popperRef,i=o.target,u=r?.target,l=!t||!t.instance,s=!i||!u,d=e.contains(i)||e.contains(u),p=e===i,v=n.length&&n.some(h=>h?.contains(i))||n.length&&n.includes(u),c=a&&(a.contains(i)||a.contains(u));l||s||d||p||v||c||t.value(o,r)}}const Ei={beforeMount(e,t){ge.has(e)||ge.set(e,[]),ge.get(e).push({documentHandler:Tn(e,t),bindingFn:t.value})},updated(e,t){ge.has(e)||ge.set(e,[]);const n=ge.get(e),o=n.findIndex(a=>a.bindingFn===t.oldValue),r={documentHandler:Tn(e,t),bindingFn:t.value};o>=0?n.splice(o,1,r):n.push(r)},unmounted(e){ge.delete(e)}},Vs=F({name:"ImgEmpty"}),Ws=F({...Vs,setup(e){const t=ae("empty"),n=ct();return(o,r)=>(L(),q("svg",{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[M("defs",null,[M("linearGradient",{id:`linearGradient-1-${f(n)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[M("stop",{"stop-color":`var(${f(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),M("stop",{"stop-color":`var(${f(t).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),M("linearGradient",{id:`linearGradient-2-${f(n)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[M("stop",{"stop-color":`var(${f(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),M("stop",{"stop-color":`var(${f(t).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),M("rect",{id:`path-3-${f(n)}`,x:"0",y:"0",width:"17",height:"36"},null,8,["id"])]),M("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[M("g",{transform:"translate(-1268.000000, -535.000000)"},[M("g",{transform:"translate(1268.000000, 535.000000)"},[M("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(${f(t).cssVarBlockName("fill-color-3")})`},null,8,["fill"]),M("polygon",{fill:`var(${f(t).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"]),M("g",{transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},[M("polygon",{fill:`var(${f(t).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"]),M("polygon",{fill:`var(${f(t).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,["fill"]),M("rect",{fill:`url(#linearGradient-1-${f(n)})`,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"]),M("polygon",{fill:`var(${f(t).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"])]),M("rect",{fill:`url(#linearGradient-2-${f(n)})`,x:"13",y:"45",width:"40",height:"36"},null,8,["fill"]),M("g",{transform:"translate(53.000000, 45.000000)"},[M("use",{fill:`var(${f(t).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${f(n)}`},null,8,["fill","xlink:href"]),M("polygon",{fill:`var(${f(t).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${f(n)})`,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"])]),M("polygon",{fill:`var(${f(t).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 Ks=ee(Ws,[["__file","img-empty.vue"]]);const Us=Q({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),qs=F({name:"ElEmpty"}),Gs=F({...qs,props:Us,setup(e){const t=e,{t:n}=In(),o=ae("empty"),r=B(()=>t.description||n("el.table.emptyText")),a=B(()=>({width:bt(t.imageSize)}));return(i,u)=>(L(),q("div",{class:N(f(o).b())},[M("div",{class:N(f(o).e("image")),style:pe(f(a))},[i.image?(L(),q("img",{key:0,src:i.image,ondragstart:"return false"},null,8,["src"])):Z(i.$slots,"image",{key:1},()=>[U(Ks)])],6),M("div",{class:N(f(o).e("description"))},[i.$slots.description?Z(i.$slots,"description",{key:0}):(L(),q("p",{key:1},Oe(f(r)),1))],2),i.$slots.default?(L(),q("div",{key:0,class:N(f(o).e("bottom"))},[Z(i.$slots,"default")],2)):X("v-if",!0)],2))}});var Xs=ee(Gs,[["__file","empty.vue"]]);const Ci=et(Xs),Ti=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),Oi=e=>Wo(e),Zs=e=>["",...Pn].includes(e),kt="_trap-focus-children",Re=[],On=e=>{if(Re.length===0)return;const t=Ln(e),n=Re[Re.length-1][kt];if(n.length>0&&t===lt.tab){if(n.length===1){e.preventDefault(),document.activeElement!==n[0]&&n[0].focus();return}const o=e.shiftKey,r=e.target===n[0],a=e.target===n[n.length-1];r&&o&&(e.preventDefault(),n[n.length-1].focus()),a&&!o&&(e.preventDefault(),n[0].focus())}},Ys={beforeMount(e){e[kt]=ln(e),Re.push(e),Re.length<=1&&document.addEventListener("keydown",On)},updated(e){be(()=>{e[kt]=ln(e)})},unmounted(){Re.shift(),Re.length===0&&document.removeEventListener("keydown",On)}},Js=F({name:"ElMessageBox",directives:{TrapFocus:Ys},components:{ElButton:tr,ElFocusTrap:_n,ElInput:$o,ElOverlay:Xo,ElIcon:wt,...Ro},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Zs},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:o,ns:r,size:a}=Ao("message-box",B(()=>e.buttonSize)),{t:i}=n,{nextZIndex:u}=o,l=z(!1),s=Nn({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:Tt(en),cancelButtonLoadingIcon:Tt(en),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:u()}),d=B(()=>{const A=s.type;return{[r.bm("icon",A)]:A&&tn[A]}}),p=ct(),v=ct(),c=B(()=>{const A=s.type;return s.icon||A&&tn[A]||""}),h=B(()=>!!s.message),g=z(),O=z(),E=z(),T=z(),m=z(),y=B(()=>s.confirmButtonClass);K(()=>s.inputValue,async A=>{await be(),e.boxType==="prompt"&&A&&D()},{immediate:!0}),K(()=>l.value,A=>{var w,H;A&&(e.boxType!=="prompt"&&(s.autofocus?E.value=(H=(w=m.value)==null?void 0:w.$el)!=null?H:g.value:E.value=g.value),s.zIndex=u()),e.boxType==="prompt"&&(A?be().then(()=>{var te;T.value&&T.value.$el&&(s.autofocus?E.value=(te=_())!=null?te:g.value:E.value=g.value)}):(s.editorErrorMessage="",s.validateError=!1))});const R=B(()=>e.draggable),P=B(()=>e.overflow),{isDragging:S}=Zo(g,O,R,P);xe(async()=>{await be(),e.closeOnHashChange&&window.addEventListener("hashchange",C)}),ue(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",C)});function C(){l.value&&(l.value=!1,be(()=>{s.action&&t("action",s.action)}))}const I=()=>{e.closeOnClickModal&&k(s.distinguishCancelAndClose?"close":"cancel")},$=Jo(I),b=A=>{if(s.inputType!=="textarea")return A.preventDefault(),k("confirm")},k=A=>{var w;e.boxType==="prompt"&&A==="confirm"&&!D()||(s.action=A,s.beforeClose?(w=s.beforeClose)==null||w.call(s,A,s,C):C())},D=()=>{if(e.boxType==="prompt"){const A=s.inputPattern;if(A&&!A.test(s.inputValue||""))return s.editorErrorMessage=s.inputErrorMessage||i("el.messagebox.error"),s.validateError=!0,!1;const w=s.inputValidator;if(Be(w)){const H=w(s.inputValue);if(H===!1)return s.editorErrorMessage=s.inputErrorMessage||i("el.messagebox.error"),s.validateError=!0,!1;if(Mt(H))return s.editorErrorMessage=H,s.validateError=!0,!1}}return s.editorErrorMessage="",s.validateError=!1,!0},_=()=>{var A,w;const H=(A=T.value)==null?void 0:A.$refs;return(w=H?.input)!=null?w:H?.textarea},G=()=>{k("close")},j=()=>{e.closeOnPressEscape&&G()};return e.lockScroll&&Yo(l,{ns:r}),{...Ko(s),ns:r,overlayEvent:$,visible:l,hasMessage:h,typeClass:d,contentId:p,inputId:v,btnSize:a,iconComponent:c,confirmButtonClasses:y,rootRef:g,focusStartRef:E,headerRef:O,inputRef:T,isDragging:S,confirmRef:m,doClose:C,handleClose:G,onCloseRequested:j,handleWrapperClick:I,handleInputEnter:b,handleAction:k,t:i}}});function Qs(e,t,n,o,r,a){const i=Ue("el-icon"),u=Ue("el-input"),l=Ue("el-button"),s=Ue("el-focus-trap"),d=Ue("el-overlay");return L(),W(dt,{name:"fade-in-linear",onAfterLeave:p=>e.$emit("vanish"),persisted:""},{default:V(()=>[Le(U(d,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:V(()=>[M("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:N(`${e.ns.namespace.value}-overlay-message-box`),onClick:e.overlayEvent.onClick,onMousedown:e.overlayEvent.onMousedown,onMouseup:e.overlayEvent.onMouseup},[U(s,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:V(()=>[M("div",{ref:"rootRef",class:N([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:pe(e.customStyle),tabindex:"-1",onClick:ke(()=>{},["stop"])},[e.title!==null&&e.title!==void 0?(L(),q("div",{key:0,ref:"headerRef",class:N([e.ns.e("header"),{"show-close":e.showClose}])},[M("div",{class:N(e.ns.e("title"))},[e.iconComponent&&e.center?(L(),W(i,{key:0,class:N([e.ns.e("status"),e.typeClass])},{default:V(()=>[(L(),W($e(e.iconComponent)))]),_:1},8,["class"])):X("v-if",!0),M("span",null,Oe(e.title),1)],2),e.showClose?(L(),q("button",{key:0,type:"button",class:N(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:p=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),onKeydown:st(ke(p=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"])},[U(i,{class:N(e.ns.e("close"))},{default:V(()=>[(L(),W($e(e.closeIcon||"close")))]),_:1},8,["class"])],42,["aria-label","onClick","onKeydown"])):X("v-if",!0)],2)):X("v-if",!0),M("div",{id:e.contentId,class:N(e.ns.e("content"))},[M("div",{class:N(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(L(),W(i,{key:0,class:N([e.ns.e("status"),e.typeClass])},{default:V(()=>[(L(),W($e(e.iconComponent)))]),_:1},8,["class"])):X("v-if",!0),e.hasMessage?(L(),q("div",{key:1,class:N(e.ns.e("message"))},[Z(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(L(),W($e(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(L(),W($e(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:Oe(e.message)},null,8,["for","textContent"]))])],2)):X("v-if",!0)],2),Le(M("div",{class:N(e.ns.e("input"))},[U(u,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":p=>e.inputValue=p,type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:N({invalid:e.validateError}),onKeydown:st(e.handleInputEnter,["enter"])},null,8,["id","modelValue","onUpdate:modelValue","type","placeholder","aria-invalid","class","onKeydown"]),M("div",{class:N(e.ns.e("errormsg")),style:pe({visibility:e.editorErrorMessage?"visible":"hidden"})},Oe(e.editorErrorMessage),7)],2),[[Ge,e.showInput]])],10,["id"]),M("div",{class:N(e.ns.e("btns"))},[e.showCancelButton?(L(),W(l,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:N([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:p=>e.handleAction("cancel"),onKeydown:st(ke(p=>e.handleAction("cancel"),["prevent"]),["enter"])},{default:V(()=>[rn(Oe(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size","onClick","onKeydown"])):X("v-if",!0),Le(U(l,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:N([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:p=>e.handleAction("confirm"),onKeydown:st(ke(p=>e.handleAction("confirm"),["prevent"]),["enter"])},{default:V(()=>[rn(Oe(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size","onClick","onKeydown"]),[[Ge,e.showConfirmButton]])],2)],14,["onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,["aria-label","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["z-index","overlay-class","mask"]),[[Ge,e.visible]])]),_:3},8,["onAfterLeave"])}var ei=ee(Js,[["render",Qs],["__file","index.vue"]]);const Qe=new Map,ti=e=>{let t=document.body;return e.appendTo&&(Mt(e.appendTo)&&(t=document.querySelector(e.appendTo)),de(e.appendTo)&&(t=e.appendTo),de(t)||(t=document.body)),t},ni=(e,t,n=null)=>{const o=U(ei,e,Be(e.message)||Dn(e.message)?{default:Be(e.message)?e.message:()=>e.message}:null);return o.appContext=n,Hn(o,t),ti(e).appendChild(t.firstElementChild),o.component},oi=()=>document.createElement("div"),ri=(e,t)=>{const n=oi();e.onVanish=()=>{Hn(null,n),Qe.delete(r)},e.onAction=a=>{const i=Qe.get(r);let u;e.showInput?u={value:r.inputValue,action:a}:u=a,e.callback?e.callback(u,o.proxy):a==="cancel"||a==="close"?e.distinguishCancelAndClose&&a!=="cancel"?i.reject("close"):i.reject("cancel"):i.resolve(u)};const o=ni(e,n,t),r=o.proxy;for(const a in e)an(e,a)&&!an(r.$props,a)&&(a==="closeIcon"&&pt(e[a])?r[a]=Tt(e[a]):r[a]=e[a]);return r.visible=!0,r};function je(e,t=null){if(!we)return Promise.reject();let n;return Mt(e)||Dn(e)?e={message:e}:n=e.callback,new Promise((o,r)=>{const a=ri(e,t??je._context);Qe.set(a,{options:e,callback:n,resolve:o,reject:r})})}const ai=["alert","confirm","prompt"],si={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};ai.forEach(e=>{je[e]=ii(e)});function ii(e){return(t,n,o,r)=>{let a="";return pt(n)?(o=n,a=""):Mo(n)?a="":a=n,je(Object.assign({title:a,message:t,type:"",...si[e]},o,{boxType:e}),r)}}je.close=()=>{Qe.forEach((e,t)=>{t.doClose()}),Qe.clear()};je._context=null;const he=je;he.install=e=>{he._context=e._context,e.config.globalProperties.$msgbox=he,e.config.globalProperties.$messageBox=he,e.config.globalProperties.$alert=he.alert,e.config.globalProperties.$confirm=he.confirm,e.config.globalProperties.$prompt=he.prompt};const Si=he;export{Ei as C,bi as E,yi as a,hi as b,Oi as c,gi as d,wi as e,Ci as f,Si as g,Lt as h,Zs as i,Ti as j,Hs as k,Ir as s,ht as t,io as u}; diff --git a/static/app/assets/el-overlay-Bd56Lw6C.css b/static/app/assets/el-empty-D4G4LZ50.css similarity index 66% rename from static/app/assets/el-overlay-Bd56Lw6C.css rename to static/app/assets/el-empty-D4G4LZ50.css index 925b2ee..2c2ff44 100644 --- a/static/app/assets/el-overlay-Bd56Lw6C.css +++ b/static/app/assets/el-empty-D4G4LZ50.css @@ -1 +1 @@ -.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;word-break:normal;z-index:2000}.el-popper.is-dark{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary);color:var(--el-bg-color)}.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary);right:0}.el-popper.is-light{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";height:10px;position:absolute;transform:rotate(45deg);width:10px;z-index:-1}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.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}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;display:flex;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{background-color:transparent;border:none;border-radius:50%;margin-left:6px;outline:none;overflow:hidden;padding:0}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.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)}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}: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-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.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}}.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} +.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;word-break:normal;z-index:2000}.el-popper.is-dark{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary);color:var(--el-bg-color)}.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary);right:0}.el-popper.is-light{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";height:10px;position:absolute;transform:rotate(45deg);width:10px;z-index:-1}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.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}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;display:flex;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{background-color:transparent;border:none;border-radius:50%;margin-left:6px;outline:none;overflow:hidden;padding:0}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.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)} diff --git a/static/app/assets/el-input-BaZNy9Kg.js b/static/app/assets/el-input-BaZNy9Kg.js new file mode 100644 index 0000000..8204be0 --- /dev/null +++ b/static/app/assets/el-input-BaZNy9Kg.js @@ -0,0 +1 @@ +import{aV as Ce,at as Ee,n as de,o as Ae,aq as st,ai as Be,aj as it,aW as rt,g as lt,ah as ut,aX as dt,s as Ie,b as He,t as F,y as oe,a3 as ct,T as ft,aO as pt,_ as vt,u as Pe,aH as mt,aY as ht,aZ as gt,L as yt,E as H,r as bt,d as wt}from"./base-xgxQQEpV.js";import{J as ae,h as g,V as $e,E as q,g as K,L as G,a0 as Ne,C as a,W as M,A as De,ac as xt,S as St,i as Ct,Z as Et,j as E,o as h,l as y,F as se,k as L,n as x,B as _,c as I,s as $,D,O as ze,q as ie,ad as re,t as Z,U as Te,X as Fe}from"./vendor-vue-WbiK4TmU.js";import{i as It,m as Pt,a as le,c as Nt}from"./http-BoPYlvwK.js";import{U as J,i as zt,I as ue,C as Me,d as ke}from"./aria-DLpFpzDe.js";import{u as Tt,c as Ft,a as Mt,b as kt}from"./el-button-LKkD3jQh.js";function Vt(e){return e}function Ot(e,o,s){switch(s.length){case 0:return e.call(o);case 1:return e.call(o,s[0]);case 2:return e.call(o,s[0],s[1]);case 3:return e.call(o,s[0],s[1],s[2])}return e.apply(o,s)}var Lt=800,Rt=16,At=Date.now;function Bt(e){var o=0,s=0;return function(){var n=At(),i=Rt-(n-s);if(s=n,i>0){if(++o>=Lt)return arguments[0]}else o=0;return e.apply(void 0,arguments)}}function Ht(e){return function(){return e}}var $t=Ce?function(e,o){return Ce(e,"toString",{configurable:!0,enumerable:!1,value:Ht(o),writable:!0})}:Vt,Dt=Bt($t),Ve=Math.max;function Kt(e,o,s){return o=Ve(o===void 0?e.length-1:o,0),function(){for(var n=arguments,i=-1,l=Ve(n.length-o,0),u=Array(l);++i{const o=Number.parseFloat(e);return Number.isNaN(o)?e:o};function tn(e){const o=window.getComputedStyle(e),s=o.getPropertyValue("box-sizing"),n=Number.parseFloat(o.getPropertyValue("padding-bottom"))+Number.parseFloat(o.getPropertyValue("padding-top")),i=Number.parseFloat(o.getPropertyValue("border-bottom-width"))+Number.parseFloat(o.getPropertyValue("border-top-width"));return{contextStyle:en.map(u=>[u,o.getPropertyValue(u)]),paddingSize:n,borderSize:i,boxSizing:s}}function Re(e,o=1,s){var n,i;S||(S=document.createElement("textarea"),((n=e.parentNode)!=null?n:document.body).appendChild(S));const{paddingSize:l,borderSize:u,boxSizing:d,contextStyle:p}=tn(e);p.forEach(([w,f])=>S?.style.setProperty(w,f)),Object.entries(jt).forEach(([w,f])=>S?.style.setProperty(w,f,"important")),S.value=e.value||e.placeholder||"";let v=S.scrollHeight;const m={};d==="border-box"?v=v+u:d==="content-box"&&(v=v-l),S.value="";const N=S.scrollHeight-l;if(Ie(o)){let w=N*o;d==="border-box"&&(w=w+l+u),v=Math.max(w,v),m.minHeight=`${w}px`}if(Ie(s)){let w=N*s;d==="border-box"&&(w=w+l+u),v=Math.min(w,v)}return m.height=`${v}px`,(i=S.parentNode)==null||i.removeChild(S),S=void 0,m}const nn=He({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),on=e=>Qt(nn,e),an=He({id:{type:String,default:void 0},size:ft,disabled:{type:Boolean,default:void 0},modelValue:{type:F([String,Number,Object]),default:""},modelModifiers:{type:F(Object),default:()=>({})},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:F(String),default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:F([Boolean,Object]),default:!1},autocomplete:{type:F(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:oe,default:ct},showPassword:Boolean,showWordLimit:Boolean,wordLimitPosition:{type:String,values:["inside","outside"],default:"inside"},suffixIcon:{type:oe},prefixIcon:{type:oe},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:F([Object,Array,String]),default:()=>Pt({})},autofocus:Boolean,rows:{type:Number,default:2},...on(["ariaLabel"]),inputmode:{type:F(String),default:void 0},name:String}),sn={[J]:e=>ae(e),input:e=>ae(e),change:(e,o)=>ae(e)&&(o instanceof Event||o===void 0),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},rn=["class","style"],ln=/^on[A-Z]/,un=(e={})=>{const{excludeListeners:o=!1,excludeKeys:s}=e,n=g(()=>(s?.value||[]).concat(rn)),i=$e();return i?g(()=>{var l;return pt(Object.entries((l=i.proxy)==null?void 0:l.$attrs).filter(([u])=>!n.value.includes(u)&&!(o&&ln.test(u))))}):g(()=>({}))};function dn(e,{disabled:o,beforeFocus:s,afterFocus:n,beforeBlur:i,afterBlur:l}={}){const u=$e(),{emit:d}=u,p=q(),v=K(!1),m=f=>{const r=Ne(s)?s(f):!1;a(o)||v.value||r||(v.value=!0,d("focus",f),n?.())},N=f=>{var r;const z=Ne(i)?i(f):!1;a(o)||f.relatedTarget&&((r=p.value)!=null&&r.contains(f.relatedTarget))||z||(v.value=!1,d("blur",f),l?.())},w=f=>{var r,z;a(o)||zt(f.target)||(r=p.value)!=null&&r.contains(document.activeElement)&&p.value!==document.activeElement||(z=e.value)==null||z.focus()};return G([p,()=>a(o)],([f,r])=>{f&&(r?f.removeAttribute("tabindex"):f.setAttribute("tabindex","-1"))}),le(p,"focus",m,!0),le(p,"blur",N,!0),le(p,"click",w,!0),{isFocused:v,wrapperRef:p,handleFocus:m,handleBlur:N}}const cn=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function fn({afterComposition:e,emit:o}){const s=K(!1),n=d=>{o?.("compositionstart",d),s.value=!0},i=d=>{var p;o?.("compositionupdate",d);const v=(p=d.target)==null?void 0:p.value,m=v[v.length-1]||"";s.value=!cn(m)},l=d=>{o?.("compositionend",d),s.value&&(s.value=!1,M(()=>e(d)))};return{isComposing:s,handleComposition:d=>{d.type==="compositionend"?l(d):i(d)},handleCompositionStart:n,handleCompositionUpdate:i,handleCompositionEnd:l}}function pn(e){let o;function s(){if(e.value==null)return;const{selectionStart:i,selectionEnd:l,value:u}=e.value;if(i==null||l==null)return;const d=u.slice(0,Math.max(0,i)),p=u.slice(Math.max(0,l));o={selectionStart:i,selectionEnd:l,value:u,beforeTxt:d,afterTxt:p}}function n(){if(e.value==null||o==null)return;const{value:i}=e.value,{beforeTxt:l,afterTxt:u,selectionStart:d}=o;if(l==null||u==null||d==null)return;let p=i.length;if(i.endsWith(u))p=i.length-u.length;else if(i.startsWith(l))p=l.length;else{const v=l[d-1],m=i.indexOf(v,d-1);m!==-1&&(p=m+1)}e.value.setSelectionRange(p,p)}return[s,n]}const vn="ElInput",mn=De({name:vn,inheritAttrs:!1}),hn=De({...mn,props:an,emits:sn,setup(e,{expose:o,emit:s}){const n=e,i=xt(),l=un(),u=St(),d=g(()=>[n.type==="textarea"?z.b():r.b(),r.m(w.value),r.is("disabled",f.value),r.is("exceed",_e.value),{[r.b("group")]:u.prepend||u.append,[r.m("prefix")]:u.prefix||n.prefixIcon,[r.m("suffix")]:u.suffix||n.suffixIcon||n.clearable||n.showPassword,[r.bm("suffix","password-clear")]:Y.value&&ee.value,[r.b("hidden")]:n.type==="hidden"},i.class]),p=g(()=>[r.e("wrapper"),r.is("focus",j.value)]),{form:v,formItem:m}=Mt(),{inputId:N}=kt(n,{formItemContext:m}),w=Tt(),f=Ft(),r=Pe("input"),z=Pe("textarea"),U=q(),P=q(),Q=K(!1),W=K(!1),ce=K(),X=q(n.inputStyle),C=g(()=>U.value||P.value),{wrapperRef:Ke,isFocused:j,handleFocus:Ue,handleBlur:We}=dn(C,{disabled:f,afterBlur(){var t;n.validateEvent&&((t=m?.validate)==null||t.call(m,"blur").catch(c=>ke()))}}),fe=g(()=>{var t;return(t=v?.statusIcon)!=null?t:!1}),R=g(()=>m?.validateState||""),pe=g(()=>R.value&&mt[R.value]),Xe=g(()=>W.value?ht:gt),Ye=g(()=>[i.style]),ve=g(()=>[n.inputStyle,X.value,{resize:n.resize}]),T=g(()=>yt(n.modelValue)?"":String(n.modelValue)),Y=g(()=>n.clearable&&!f.value&&!n.readonly&&!!T.value&&(j.value||Q.value)),ee=g(()=>n.showPassword&&!f.value&&!!T.value),k=g(()=>n.showWordLimit&&!!n.maxlength&&(n.type==="text"||n.type==="textarea")&&!f.value&&!n.readonly&&!n.showPassword),te=g(()=>T.value.length),_e=g(()=>!!k.value&&te.value>Number(n.maxlength)),Ze=g(()=>!!u.suffix||!!n.suffixIcon||Y.value||n.showPassword||k.value||!!R.value&&fe.value),qe=g(()=>!!Object.keys(n.modelModifiers).length),[Ge,Je]=pn(U);Nt(P,t=>{if(Qe(),!k.value||n.resize!=="both"&&n.resize!=="horizontal")return;const c=t[0],{width:b}=c.contentRect;ce.value={right:`calc(100% - ${b+22-10}px)`}});const A=()=>{const{type:t,autosize:c}=n;if(!(!bt||t!=="textarea"||!P.value))if(c){const b=Fe(c)?c.minRows:void 0,O=Fe(c)?c.maxRows:void 0,B=Re(P.value,b,O);X.value={overflowY:"hidden",...B},M(()=>{P.value.offsetHeight,X.value=B})}else X.value={minHeight:Re(P.value).minHeight}},Qe=(t=>{let c=!1;return()=>{var b;if(c||!n.autosize)return;((b=P.value)==null?void 0:b.offsetParent)===null||(setTimeout(t),c=!0)}})(A),V=()=>{const t=C.value,c=n.formatter?n.formatter(T.value):T.value;!t||t.value===c||n.type==="file"||(t.value=c)},me=t=>{const{trim:c,number:b}=n.modelModifiers;return c&&(t=t.trim()),b&&(t=`${Le(t)}`),n.formatter&&n.parser&&(t=n.parser(t)),t},ne=async t=>{if(ge.value)return;const{lazy:c}=n.modelModifiers;let{value:b}=t.target;if(c){s(ue,b);return}if(b=me(b),String(b)===T.value){n.formatter&&V();return}Ge(),s(J,b),s(ue,b),await M(),(n.formatter&&n.parser||!qe.value)&&V(),Je()},he=async t=>{let{value:c}=t.target;c=me(c),n.modelModifiers.lazy&&s(J,c),s(Me,c,t),await M(),V()},{isComposing:ge,handleCompositionStart:ye,handleCompositionUpdate:be,handleCompositionEnd:we}=fn({emit:s,afterComposition:ne}),je=()=>{W.value=!W.value},et=()=>{var t;return(t=C.value)==null?void 0:t.focus()},tt=()=>{var t;return(t=C.value)==null?void 0:t.blur()},nt=t=>{Q.value=!1,s("mouseleave",t)},ot=t=>{Q.value=!0,s("mouseenter",t)},xe=t=>{s("keydown",t)},at=()=>{var t;(t=C.value)==null||t.select()},Se=()=>{s(J,""),s(Me,""),s("clear"),s(ue,"")};return G(()=>n.modelValue,()=>{var t;M(()=>A()),n.validateEvent&&((t=m?.validate)==null||t.call(m,"change").catch(c=>ke()))}),G(T,t=>{if(!C.value)return;const{trim:c,number:b}=n.modelModifiers,O=C.value.value,B=(b||n.type==="number")&&!/^0\d/.test(O)?`${Le(O)}`:O;B!==t&&(document.activeElement===C.value&&C.value.type!=="range"&&c&&B.trim()===t||V())}),G(()=>n.type,async()=>{await M(),V(),A()}),Ct(()=>{!n.formatter&&n.parser,V(),M(A)}),o({input:U,textarea:P,ref:C,textareaStyle:ve,autosize:Et(n,"autosize"),isComposing:ge,focus:et,blur:tt,select:at,clear:Se,resizeTextarea:A}),(t,c)=>(h(),E("div",{class:x([a(d),{[a(r).bm("group","append")]:t.$slots.append,[a(r).bm("group","prepend")]:t.$slots.prepend}]),style:Te(a(Ye)),onMouseenter:ot,onMouseleave:nt},[y(" input "),t.type!=="textarea"?(h(),E(se,{key:0},[y(" prepend slot "),t.$slots.prepend?(h(),E("div",{key:0,class:x(a(r).be("group","prepend"))},[_(t.$slots,"prepend")],2)):y("v-if",!0),L("div",{ref_key:"wrapperRef",ref:Ke,class:x(a(p))},[y(" prefix slot "),t.$slots.prefix||t.prefixIcon?(h(),E("span",{key:0,class:x(a(r).e("prefix"))},[L("span",{class:x(a(r).e("prefix-inner"))},[_(t.$slots,"prefix"),t.prefixIcon?(h(),I(a(H),{key:0,class:x(a(r).e("icon"))},{default:$(()=>[(h(),I(D(t.prefixIcon)))]),_:1},8,["class"])):y("v-if",!0)],2)],2)):y("v-if",!0),L("input",ze({id:a(N),ref_key:"input",ref:U,class:a(r).e("inner")},a(l),{name:t.name,minlength:t.minlength,maxlength:t.maxlength,type:t.showPassword?W.value?"text":"password":t.type,disabled:a(f),readonly:t.readonly,autocomplete:t.autocomplete,tabindex:t.tabindex,"aria-label":t.ariaLabel,placeholder:t.placeholder,style:t.inputStyle,form:t.form,autofocus:t.autofocus,role:t.containerRole,inputmode:t.inputmode,onCompositionstart:a(ye),onCompositionupdate:a(be),onCompositionend:a(we),onInput:ne,onChange:he,onKeydown:xe}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),y(" suffix slot "),a(Ze)?(h(),E("span",{key:1,class:x(a(r).e("suffix"))},[L("span",{class:x(a(r).e("suffix-inner"))},[!a(Y)||!a(ee)||!a(k)?(h(),E(se,{key:0},[_(t.$slots,"suffix"),t.suffixIcon?(h(),I(a(H),{key:0,class:x(a(r).e("icon"))},{default:$(()=>[(h(),I(D(t.suffixIcon)))]),_:1},8,["class"])):y("v-if",!0)],64)):y("v-if",!0),a(Y)?(h(),I(a(H),{key:1,class:x([a(r).e("icon"),a(r).e("clear")]),onMousedown:ie(a(re),["prevent"]),onClick:Se},{default:$(()=>[(h(),I(D(t.clearIcon)))]),_:1},8,["class","onMousedown"])):y("v-if",!0),a(ee)?(h(),I(a(H),{key:2,class:x([a(r).e("icon"),a(r).e("password")]),onClick:je,onMousedown:ie(a(re),["prevent"]),onMouseup:ie(a(re),["prevent"])},{default:$(()=>[(h(),I(D(a(Xe))))]),_:1},8,["class","onMousedown","onMouseup"])):y("v-if",!0),a(k)?(h(),E("span",{key:3,class:x([a(r).e("count"),a(r).is("outside",t.wordLimitPosition==="outside")])},[L("span",{class:x(a(r).e("count-inner"))},Z(a(te))+" / "+Z(t.maxlength),3)],2)):y("v-if",!0),a(R)&&a(pe)&&a(fe)?(h(),I(a(H),{key:4,class:x([a(r).e("icon"),a(r).e("validateIcon"),a(r).is("loading",a(R)==="validating")])},{default:$(()=>[(h(),I(D(a(pe))))]),_:1},8,["class"])):y("v-if",!0)],2)],2)):y("v-if",!0)],2),y(" append slot "),t.$slots.append?(h(),E("div",{key:1,class:x(a(r).be("group","append"))},[_(t.$slots,"append")],2)):y("v-if",!0)],64)):(h(),E(se,{key:1},[y(" textarea "),L("textarea",ze({id:a(N),ref_key:"textarea",ref:P,class:[a(z).e("inner"),a(r).is("focus",a(j))]},a(l),{name:t.name,minlength:t.minlength,maxlength:t.maxlength,tabindex:t.tabindex,disabled:a(f),readonly:t.readonly,autocomplete:t.autocomplete,style:a(ve),"aria-label":t.ariaLabel,placeholder:t.placeholder,form:t.form,autofocus:t.autofocus,rows:t.rows,role:t.containerRole,onCompositionstart:a(ye),onCompositionupdate:a(be),onCompositionend:a(we),onInput:ne,onFocus:a(Ue),onBlur:a(We),onChange:he,onKeydown:xe}),null,16,["id","name","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),a(k)?(h(),E("span",{key:0,style:Te(ce.value),class:x([a(r).e("count"),a(r).is("outside",t.wordLimitPosition==="outside")])},Z(a(te))+" / "+Z(t.maxlength),7)):y("v-if",!0)],64))],38))}});var gn=vt(hn,[["__file","input.vue"]]);const In=wt(gn);export{In as E,un as a,Wt as b,En as c,dn as d,fn as e,Yt as f,qt as h,Vt as i,Kt as o,Qt as p,Dt as s,on as u}; diff --git a/static/app/assets/http-D6B3r8CH.css b/static/app/assets/el-input-D6B3r8CH.css similarity index 100% rename from static/app/assets/http-D6B3r8CH.css rename to static/app/assets/el-input-D6B3r8CH.css diff --git a/static/app/assets/el-overlay-C_JJBVfE.js b/static/app/assets/el-overlay-C_JJBVfE.js deleted file mode 100644 index b6fe4a0..0000000 --- a/static/app/assets/el-overlay-C_JJBVfE.js +++ /dev/null @@ -1 +0,0 @@ -import{aW as rr,e as jt,S as sr,aX as io,k as ar,aY as uo,ar as co,U as lr,ap as ir,n as ur,r as ie,b as Z,_ as J,u as ne,s as Se,t as V,D as Je,d as _e,W as Oe,O as qt,aZ as On,a_ as fo,aL as kn,a$ as cr,b0 as po,v as Gt,b1 as fr,z as dr,a1 as pr,aM as Qe,aK as vo,X as vr,G as Yt,H as An,A as Bt,y as mr,b2 as gr,J as yr,I as hr,a3 as br,K as Er,aV as wr,b3 as Cr,N as Rn,F as Tr,b4 as Sr,M as mo,B as Or,aJ as kr,E as Ar,a2 as Rr,Z as Bn,aI as Ln}from"./el-button-DWxIvzz-.js";import{G as Br,z as Lr,t as go,d as Kt,r as Xt,i as Pn,j as yo,H as Mn,h as Zt,g as Mt,e as Ye,J as Te,w as Pr,U as ho,K as In,E as Mr}from"./http-CdvgQxJu.js";import{A as F,Q as ye,g as M,h as k,z as le,Z as Me,c as G,o as P,s as K,w as He,k as $,p as Fe,n as _,C as i,U as he,R as Xe,T as mt,j as Y,q as X,F as it,L as x,M as Ie,f as bo,al as Ir,i as de,W as ge,a6 as _r,l as ee,B as U,D as Ne,X as Ve,ad as Ze,am as $r,$ as _n,an as Dr,O as We,J as It,E as Nr,V as Eo,a0 as ke,K as je,ao as Fr,a5 as zr,ap as Hr,aq as jr,t as Pe,I as ut,G as Kr,Y as Vr,a3 as Wr,ar as Ur,S as xr,as as qr,at as Gr,a4 as $n,aj as Yr,r as at,m as Et,x as Dn,au as Vt,a2 as Xr,a1 as wo,_ as Nn}from"./vendor-vue-DxN60LNb.js";var Zr=/\s/;function Jr(e){for(var t=e.length;t--&&Zr.test(e.charAt(t)););return t}var Qr=/^\s+/;function es(e){return e&&e.slice(0,Jr(e)+1).replace(Qr,"")}var Fn=NaN,ts=/^[-+]0x[0-9a-f]+$/i,ns=/^0b[01]+$/i,os=/^0o[0-7]+$/i,rs=parseInt;function Ft(e){if(typeof e=="number")return e;if(rr(e))return Fn;if(jt(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=jt(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=es(e);var n=ns.test(e);return n||os.test(e)?rs(e.slice(2),n?2:8):ts.test(e)?Fn:+e}function ss(e,t,n){return e===e&&(n!==void 0&&(e=e<=n?e:n),t!==void 0&&(e=e>=t?e:t)),e}function Wi(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=Ft(n),n=n===n?n:0),t!==void 0&&(t=Ft(t),t=t===t?t:0),ss(Ft(e),t,n)}var as=1,ls=2;function is(e,t,n,o){var r=n.length,s=r;if(e==null)return!s;for(e=Object(e);r--;){var a=n[r];if(a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++r{var t;if(!ie)return 0;if(wt!==void 0)return wt;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const o=n.offsetWidth;n.style.overflow="scroll";const r=document.createElement("div");r.style.width="100%",n.appendChild(r);const s=r.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),wt=o-s,wt};function xi(e,t){if(!ie)return;if(!t){e.scrollTop=0;return}const n=[];let o=t.offsetParent;for(;o!==null&&e!==o&&e.contains(o);)n.push(o),o=o.offsetParent;const r=t.offsetTop+n.reduce((u,l)=>u+l.offsetTop,0),s=r+t.offsetHeight,a=e.scrollTop,c=a+e.clientHeight;rc&&(e.scrollTop=s-e.clientHeight)}const xe=4,bs={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},Es=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Jt=Symbol("scrollbarContextKey"),ws=Z({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),Cs="Thumb",Ts=F({__name:"thumb",props:ws,setup(e){const t=e,n=ye(Jt),o=ne("scrollbar");n||go(Cs,"can not inject scrollbar context");const r=M(),s=M(),a=M({}),c=M(!1);let u=!1,l=!1,p=0,v=0,g=ie?document.onselectstart:null;const f=k(()=>bs[t.vertical?"vertical":"horizontal"]),d=k(()=>Es({size:t.size,move:t.move,bar:f.value})),m=k(()=>r.value[f.value.offset]**2/n.wrapElement[f.value.scrollSize]/t.ratio/s.value[f.value.offset]),C=S=>{var R;if(S.stopPropagation(),S.ctrlKey||[1,2].includes(S.button))return;(R=window.getSelection())==null||R.removeAllRanges(),h(S);const L=S.currentTarget;L&&(a.value[f.value.axis]=L[f.value.offset]-(S[f.value.client]-L.getBoundingClientRect()[f.value.direction]))},E=S=>{if(!s.value||!r.value||!n.wrapElement)return;const R=Math.abs(S.target.getBoundingClientRect()[f.value.direction]-S[f.value.client]),L=s.value[f.value.offset]/2,T=(R-L)*100*m.value/r.value[f.value.offset];n.wrapElement[f.value.scroll]=T*n.wrapElement[f.value.scrollSize]/100},h=S=>{S.stopImmediatePropagation(),u=!0,p=n.wrapElement.scrollHeight,v=n.wrapElement.scrollWidth,document.addEventListener("mousemove",y),document.addEventListener("mouseup",w),g=document.onselectstart,document.onselectstart=()=>!1},y=S=>{if(!r.value||!s.value||u===!1)return;const R=a.value[f.value.axis];if(!R)return;const L=(r.value.getBoundingClientRect()[f.value.direction]-S[f.value.client])*-1,T=s.value[f.value.offset]-R,b=(L-T)*100*m.value/r.value[f.value.offset];f.value.scroll==="scrollLeft"?n.wrapElement[f.value.scroll]=b*v/100:n.wrapElement[f.value.scroll]=b*p/100},w=()=>{u=!1,a.value[f.value.axis]=0,document.removeEventListener("mousemove",y),document.removeEventListener("mouseup",w),A(),l&&(c.value=!1)},B=()=>{l=!1,c.value=!!t.size},I=()=>{l=!0,c.value=u};le(()=>{A(),document.removeEventListener("mouseup",w)});const A=()=>{document.onselectstart!==g&&(document.onselectstart=g)};return Kt(Me(n,"scrollbarElement"),"mousemove",B),Kt(Me(n,"scrollbarElement"),"mouseleave",I),(S,R)=>(P(),G(mt,{name:i(o).b("fade"),persisted:""},{default:K(()=>[He($("div",{ref_key:"instance",ref:r,class:_([i(o).e("bar"),i(o).is(i(f).key)]),onMousedown:E,onClick:Fe(()=>{},["stop"])},[$("div",{ref_key:"thumb",ref:s,class:_(i(o).e("thumb")),style:he(i(d)),onMousedown:C},null,38)],42,["onClick"]),[[Xe,S.always||c.value]])]),_:1},8,["name"]))}});var zn=J(Ts,[["__file","thumb.vue"]]);const Ss=Z({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Os=F({__name:"bar",props:Ss,setup(e,{expose:t}){const n=e,o=ye(Jt),r=M(0),s=M(0),a=M(""),c=M(""),u=M(1),l=M(1);return t({handleScroll:g=>{if(g){const f=g.offsetHeight-xe,d=g.offsetWidth-xe;s.value=g.scrollTop*100/f*u.value,r.value=g.scrollLeft*100/d*l.value}},update:()=>{const g=o?.wrapElement;if(!g)return;const f=g.offsetHeight-xe,d=g.offsetWidth-xe,m=f**2/g.scrollHeight,C=d**2/g.scrollWidth,E=Math.max(m,n.minSize),h=Math.max(C,n.minSize);u.value=m/(f-m)/(E/(f-E)),l.value=C/(d-C)/(h/(d-h)),c.value=E+xe(P(),Y(it,null,[X(zn,{move:r.value,ratio:l.value,size:a.value,always:g.always},null,8,["move","ratio","size","always"]),X(zn,{move:s.value,ratio:u.value,size:c.value,vertical:"",always:g.always},null,8,["move","ratio","size","always"])],64))}});var ks=J(Os,[["__file","bar.vue"]]);const As=Z({distance:{type:Number,default:0},height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:V([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...Xt(["ariaLabel","ariaOrientation"])}),Rs={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Se)},Bs="ElScrollbar",Ls=F({name:Bs}),Ps=F({...Ls,props:As,emits:Rs,setup(e,{expose:t,emit:n}){const o=e,r=ne("scrollbar");let s,a,c,u=0,l=0,p="";const v={bottom:!1,top:!1,right:!1,left:!1},g=M(),f=M(),d=M(),m=M(),C=k(()=>{const T={},b=Je(o.height),z=Je(o.maxHeight);return b&&(T.height=b),z&&(T.maxHeight=z),[o.wrapStyle,T]}),E=k(()=>[o.wrapClass,r.e("wrap"),{[r.em("wrap","hidden-default")]:!o.native}]),h=k(()=>[r.e("view"),o.viewClass]),y=T=>{var b;return(b=v[T])!=null?b:!1},w={top:"bottom",bottom:"top",left:"right",right:"left"},B=T=>{const b=w[p];if(!b)return;const z=T[p],W=T[b];z&&!v[p]&&(v[p]=!0),!W&&v[b]&&(v[b]=!1)},I=()=>{var T;if(f.value){(T=m.value)==null||T.handleScroll(f.value);const b=u,z=l;u=f.value.scrollTop,l=f.value.scrollLeft;const W={bottom:u+f.value.clientHeight>=f.value.scrollHeight-o.distance,top:u<=o.distance&&b!==0,right:l+f.value.clientWidth>=f.value.scrollWidth-o.distance&&z!==l,left:l<=o.distance&&z!==0};if(n("scroll",{scrollTop:u,scrollLeft:l}),b!==u&&(p=u>b?"bottom":"top"),z!==l&&(p=l>z?"right":"left"),o.distance>0){if(y(p))return;B(W)}W[p]&&n("end-reached",p)}};function A(T,b){Ve(T)?f.value.scrollTo(T):Se(T)&&Se(b)&&f.value.scrollTo(T,b)}const S=T=>{Se(T)&&(f.value.scrollTop=T)},R=T=>{Se(T)&&(f.value.scrollLeft=T)},L=()=>{var T;(T=m.value)==null||T.update(),v[p]=!1};return x(()=>o.noresize,T=>{T?(s?.(),a?.(),c?.()):({stop:s}=Pn(d,L),{stop:a}=Pn(f,L),c=Kt("resize",L))},{immediate:!0}),x(()=>[o.maxHeight,o.height],()=>{o.native||ge(()=>{var T;L(),f.value&&((T=m.value)==null||T.handleScroll(f.value))})}),Ie(Jt,bo({scrollbarElement:g,wrapElement:f})),Ir(()=>{f.value&&(f.value.scrollTop=u,f.value.scrollLeft=l)}),de(()=>{o.native||ge(()=>{L()})}),_r(()=>L()),t({wrapRef:f,update:L,scrollTo:A,setScrollTop:S,setScrollLeft:R,handleScroll:I}),(T,b)=>(P(),Y("div",{ref_key:"scrollbarRef",ref:g,class:_(i(r).b())},[$("div",{ref_key:"wrapRef",ref:f,class:_(i(E)),style:he(i(C)),tabindex:T.tabindex,onScroll:I},[(P(),G(Ne(T.tag),{id:T.id,ref_key:"resizeRef",ref:d,class:_(i(h)),style:he(T.viewStyle),role:T.role,"aria-label":T.ariaLabel,"aria-orientation":T.ariaOrientation},{default:K(()=>[U(T.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),T.native?ee("v-if",!0):(P(),G(ks,{key:0,ref_key:"barRef",ref:m,always:T.always,"min-size":T.minSize},null,8,["always","min-size"]))],2))}});var Ms=J(Ps,[["__file","scrollbar.vue"]]);const qi=_e(Ms),Qt=Symbol("popper"),So=Symbol("popperContent"),Is=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Oo=Z({role:{type:String,values:Is,default:"tooltip"}}),_s=F({name:"ElPopper",inheritAttrs:!1}),$s=F({..._s,props:Oo,setup(e,{expose:t}){const n=e,o=M(),r=M(),s=M(),a=M(),c=k(()=>n.role),u={triggerRef:o,popperInstanceRef:r,contentRef:s,referenceRef:a,role:c};return t(u),Ie(Qt,u),(l,p)=>U(l.$slots,"default")}});var Ds=J($s,[["__file","popper.vue"]]);const Ns=F({name:"ElPopperArrow",inheritAttrs:!1}),Fs=F({...Ns,setup(e,{expose:t}){const n=ne("popper"),{arrowRef:o,arrowStyle:r}=ye(So,void 0);return le(()=>{o.value=void 0}),t({arrowRef:o}),(s,a)=>(P(),Y("span",{ref_key:"arrowRef",ref:o,class:_(i(n).e("arrow")),style:he(i(r)),"data-popper-arrow":""},null,6))}});var zs=J(Fs,[["__file","arrow.vue"]]);const ko=Z({virtualRef:{type:V(Object)},virtualTriggering:Boolean,onMouseenter:{type:V(Function)},onMouseleave:{type:V(Function)},onClick:{type:V(Function)},onKeydown:{type:V(Function)},onFocus:{type:V(Function)},onBlur:{type:V(Function)},onContextmenu:{type:V(Function)},id:String,open:Boolean}),Ao=Symbol("elForwardRef"),Hs=e=>{Ie(Ao,{setForwardRef:n=>{e.value=n}})},js=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Ks="ElOnlyChild",Vs=F({name:Ks,setup(e,{slots:t,attrs:n}){var o;const r=ye(Ao),s=js((o=r?.setForwardRef)!=null?o:Ze);return()=>{var a;const c=(a=t.default)==null?void 0:a.call(t,n);if(!c)return null;const[u,l]=Ro(c);return u?He($r(u,n),[[s]]):null}}});function Ro(e){if(!e)return[null,0];const t=e,n=t.filter(o=>o.type!==_n).length;for(const o of t){if(Ve(o))switch(o.type){case _n:continue;case Dr:case"svg":return[Hn(o),n];case it:return Ro(o.children);default:return[o,n]}return[Hn(o),n]}return[null,0]}function Hn(e){const t=ne("only-child");return X("span",{class:t.e("content")},[e])}const Ws=F({name:"ElPopperTrigger",inheritAttrs:!1}),Us=F({...Ws,props:ko,setup(e,{expose:t}){const n=e,{role:o,triggerRef:r}=ye(Qt,void 0);Hs(r);const s=k(()=>c.value?n.id:void 0),a=k(()=>{if(o&&o.value==="tooltip")return n.open&&n.id?n.id:void 0}),c=k(()=>{if(o&&o.value!=="tooltip")return o.value}),u=k(()=>c.value?`${n.open}`:void 0);let l;const p=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return de(()=>{x(()=>n.virtualRef,v=>{v&&(r.value=yo(v))},{immediate:!0}),x(r,(v,g)=>{l?.(),l=void 0,Oe(g)&&p.forEach(f=>{const d=n[f];d&&g.removeEventListener(f.slice(2).toLowerCase(),d,["onFocus","onBlur"].includes(f))}),Oe(v)&&(p.forEach(f=>{const d=n[f];d&&v.addEventListener(f.slice(2).toLowerCase(),d,["onFocus","onBlur"].includes(f))}),Mn(v)&&(l=x([s,a,c,u],f=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((d,m)=>{qt(f[m])?v.removeAttribute(d):v.setAttribute(d,f[m])})},{immediate:!0}))),Oe(g)&&Mn(g)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(f=>g.removeAttribute(f))},{immediate:!0})}),le(()=>{if(l?.(),l=void 0,r.value&&Oe(r.value)){const v=r.value;p.forEach(g=>{const f=n[g];f&&v.removeEventListener(g.slice(2).toLowerCase(),f,["onFocus","onBlur"].includes(g))}),r.value=void 0}}),t({triggerRef:r}),(v,g)=>v.virtualTriggering?ee("v-if",!0):(P(),G(i(Vs),We({key:0},v.$attrs,{"aria-controls":i(s),"aria-describedby":i(a),"aria-expanded":i(u),"aria-haspopup":i(c)}),{default:K(()=>[U(v.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var xs=J(Us,[["__file","trigger.vue"]]);const zt="focus-trap.focus-after-trapped",Ht="focus-trap.focus-after-released",qs="focus-trap.focusout-prevented",jn={cancelable:!0,bubbles:!1},Gs={cancelable:!0,bubbles:!1},Kn="focusAfterTrapped",Vn="focusAfterReleased",Bo=Symbol("elFocusTrap"),en=M(),_t=M(0),tn=M(0);let Ct=0;const Lo=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0||o===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Wn=(e,t)=>{for(const n of e)if(!Ys(n,t))return n},Ys=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},Xs=e=>{const t=Lo(e),n=Wn(t,e),o=Wn(t.reverse(),e);return[n,o]},Zs=e=>e instanceof HTMLInputElement&&"select"in e,Re=(e,t)=>{if(e){const n=document.activeElement;Zt(e,{preventScroll:!0}),tn.value=window.performance.now(),e!==n&&Zs(e)&&t&&e.select()}};function Un(e,t){const n=[...e],o=e.indexOf(t);return o!==-1&&n.splice(o,1),n}const Js=()=>{let e=[];return{push:o=>{const r=e[0];r&&o!==r&&r.pause(),e=Un(e,o),e.unshift(o)},remove:o=>{var r,s;e=Un(e,o),(s=(r=e[0])==null?void 0:r.resume)==null||s.call(r)}}},Qs=(e,t=!1)=>{const n=document.activeElement;for(const o of e)if(Re(o,t),document.activeElement!==n)return},xn=Js(),ea=()=>_t.value>tn.value,Tt=()=>{en.value="pointer",_t.value=window.performance.now()},qn=()=>{en.value="keyboard",_t.value=window.performance.now()},ta=()=>(de(()=>{Ct===0&&(document.addEventListener("mousedown",Tt),document.addEventListener("touchstart",Tt),document.addEventListener("keydown",qn)),Ct++}),le(()=>{Ct--,Ct<=0&&(document.removeEventListener("mousedown",Tt),document.removeEventListener("touchstart",Tt),document.removeEventListener("keydown",qn))}),{focusReason:en,lastUserFocusTimestamp:_t,lastAutomatedFocusTimestamp:tn}),St=e=>new CustomEvent(qs,{...Gs,detail:e});let Ge=[];const Gn=e=>{Mt(e)===Ye.esc&&Ge.forEach(n=>n(e))},na=e=>{de(()=>{Ge.length===0&&document.addEventListener("keydown",Gn),ie&&Ge.push(e)}),le(()=>{Ge=Ge.filter(t=>t!==e),Ge.length===0&&ie&&document.removeEventListener("keydown",Gn)})},oa=F({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[Kn,Vn,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=M();let o,r;const{focusReason:s}=ta();na(d=>{e.trapped&&!a.paused&&t("release-requested",d)});const a={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},c=d=>{if(!e.loop&&!e.trapped||a.paused)return;const{altKey:m,ctrlKey:C,metaKey:E,currentTarget:h,shiftKey:y}=d,{loop:w}=e,I=Mt(d)===Ye.tab&&!m&&!C&&!E,A=document.activeElement;if(I&&A){const S=h,[R,L]=Xs(S);if(R&&L){if(!y&&A===L){const b=St({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||(d.preventDefault(),w&&Re(R,!0))}else if(y&&[R,S].includes(A)){const b=St({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||(d.preventDefault(),w&&Re(L,!0))}}else if(A===S){const b=St({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||d.preventDefault()}}};Ie(Bo,{focusTrapRef:n,onKeydown:c}),x(()=>e.focusTrapEl,d=>{d&&(n.value=d)},{immediate:!0}),x([n],([d],[m])=>{d&&(d.addEventListener("keydown",c),d.addEventListener("focusin",p),d.addEventListener("focusout",v)),m&&(m.removeEventListener("keydown",c),m.removeEventListener("focusin",p),m.removeEventListener("focusout",v))});const u=d=>{t(Kn,d)},l=d=>t(Vn,d),p=d=>{const m=i(n);if(!m)return;const C=d.target,E=d.relatedTarget,h=C&&m.contains(C);e.trapped||E&&m.contains(E)||(o=E),h&&t("focusin",d),!a.paused&&e.trapped&&(h?r=C:Re(r,!0))},v=d=>{const m=i(n);if(!(a.paused||!m))if(e.trapped){const C=d.relatedTarget;!qt(C)&&!m.contains(C)&&setTimeout(()=>{if(!a.paused&&e.trapped){const E=St({focusReason:s.value});t("focusout-prevented",E),E.defaultPrevented||Re(r,!0)}},0)}else{const C=d.target;C&&m.contains(C)||t("focusout",d)}};async function g(){await ge();const d=i(n);if(d){xn.push(a);const m=d.contains(document.activeElement)?o:document.activeElement;if(o=m,!d.contains(m)){const E=new Event(zt,jn);d.addEventListener(zt,u),d.dispatchEvent(E),E.defaultPrevented||ge(()=>{let h=e.focusStartEl;It(h)||(Re(h),document.activeElement!==h&&(h="first")),h==="first"&&Qs(Lo(d),!0),(document.activeElement===m||h==="container")&&Re(d)})}}}function f(){const d=i(n);if(d){d.removeEventListener(zt,u);const m=new CustomEvent(Ht,{...jn,detail:{focusReason:s.value}});d.addEventListener(Ht,l),d.dispatchEvent(m),!m.defaultPrevented&&(s.value=="keyboard"||!ea()||d.contains(document.activeElement))&&Re(o??document.body),d.removeEventListener(Ht,l),xn.remove(a),o=null,r=null}}return de(()=>{e.trapped&&g(),x(()=>e.trapped,d=>{d?g():f()})}),le(()=>{e.trapped&&f(),n.value&&(n.value.removeEventListener("keydown",c),n.value.removeEventListener("focusin",p),n.value.removeEventListener("focusout",v),n.value=void 0),o=null,r=null}),{onKeydown:c}}});function ra(e,t,n,o,r,s){return U(e.$slots,"default",{handleKeydown:e.onKeydown})}var nn=J(oa,[["render",ra],["__file","focus-trap.vue"]]),se="top",ce="bottom",fe="right",ae="left",on="auto",gt=[se,ce,fe,ae],et="start",dt="end",sa="clippingParents",Po="viewport",lt="popper",aa="reference",Yn=gt.reduce(function(e,t){return e.concat([t+"-"+et,t+"-"+dt])},[]),rn=[].concat(gt,[on]).reduce(function(e,t){return e.concat([t,t+"-"+et,t+"-"+dt])},[]),la="beforeRead",ia="read",ua="afterRead",ca="beforeMain",fa="main",da="afterMain",pa="beforeWrite",va="write",ma="afterWrite",ga=[la,ia,ua,ca,fa,da,pa,va,ma];function we(e){return e?(e.nodeName||"").toLowerCase():null}function be(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function tt(e){var t=be(e).Element;return e instanceof t||e instanceof Element}function ue(e){var t=be(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function sn(e){if(typeof ShadowRoot>"u")return!1;var t=be(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function ya(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var o=t.styles[n]||{},r=t.attributes[n]||{},s=t.elements[n];!ue(s)||!we(s)||(Object.assign(s.style,o),Object.keys(r).forEach(function(a){var c=r[a];c===!1?s.removeAttribute(a):s.setAttribute(a,c===!0?"":c)}))})}function ha(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(o){var r=t.elements[o],s=t.attributes[o]||{},a=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:n[o]),c=a.reduce(function(u,l){return u[l]="",u},{});!ue(r)||!we(r)||(Object.assign(r.style,c),Object.keys(s).forEach(function(u){r.removeAttribute(u)}))})}}var Mo={name:"applyStyles",enabled:!0,phase:"write",fn:ya,effect:ha,requires:["computeStyles"]};function Ee(e){return e.split("-")[0]}var Ke=Math.max,Lt=Math.min,nt=Math.round;function ot(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),o=1,r=1;if(ue(e)&&t){var s=e.offsetHeight,a=e.offsetWidth;a>0&&(o=nt(n.width)/a||1),s>0&&(r=nt(n.height)/s||1)}return{width:n.width/o,height:n.height/r,top:n.top/r,right:n.right/o,bottom:n.bottom/r,left:n.left/o,x:n.left/o,y:n.top/r}}function an(e){var t=ot(e),n=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:o}}function Io(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&sn(n)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function Ae(e){return be(e).getComputedStyle(e)}function ba(e){return["table","td","th"].indexOf(we(e))>=0}function $e(e){return((tt(e)?e.ownerDocument:e.document)||window.document).documentElement}function $t(e){return we(e)==="html"?e:e.assignedSlot||e.parentNode||(sn(e)?e.host:null)||$e(e)}function Xn(e){return!ue(e)||Ae(e).position==="fixed"?null:e.offsetParent}function Ea(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&ue(e)){var o=Ae(e);if(o.position==="fixed")return null}var r=$t(e);for(sn(r)&&(r=r.host);ue(r)&&["html","body"].indexOf(we(r))<0;){var s=Ae(r);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return r;r=r.parentNode}return null}function yt(e){for(var t=be(e),n=Xn(e);n&&ba(n)&&Ae(n).position==="static";)n=Xn(n);return n&&(we(n)==="html"||we(n)==="body"&&Ae(n).position==="static")?t:n||Ea(e)||t}function ln(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function ct(e,t,n){return Ke(e,Lt(t,n))}function wa(e,t,n){var o=ct(e,t,n);return o>n?n:o}function _o(){return{top:0,right:0,bottom:0,left:0}}function $o(e){return Object.assign({},_o(),e)}function Do(e,t){return t.reduce(function(n,o){return n[o]=e,n},{})}var Ca=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,$o(typeof e!="number"?e:Do(e,gt))};function Ta(e){var t,n=e.state,o=e.name,r=e.options,s=n.elements.arrow,a=n.modifiersData.popperOffsets,c=Ee(n.placement),u=ln(c),l=[ae,fe].indexOf(c)>=0,p=l?"height":"width";if(!(!s||!a)){var v=Ca(r.padding,n),g=an(s),f=u==="y"?se:ae,d=u==="y"?ce:fe,m=n.rects.reference[p]+n.rects.reference[u]-a[u]-n.rects.popper[p],C=a[u]-n.rects.reference[u],E=yt(s),h=E?u==="y"?E.clientHeight||0:E.clientWidth||0:0,y=m/2-C/2,w=v[f],B=h-g[p]-v[d],I=h/2-g[p]/2+y,A=ct(w,I,B),S=u;n.modifiersData[o]=(t={},t[S]=A,t.centerOffset=A-I,t)}}function Sa(e){var t=e.state,n=e.options,o=n.element,r=o===void 0?"[data-popper-arrow]":o;r!=null&&(typeof r=="string"&&(r=t.elements.popper.querySelector(r),!r)||!Io(t.elements.popper,r)||(t.elements.arrow=r))}var Oa={name:"arrow",enabled:!0,phase:"main",fn:Ta,effect:Sa,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function rt(e){return e.split("-")[1]}var ka={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Aa(e){var t=e.x,n=e.y,o=window,r=o.devicePixelRatio||1;return{x:nt(t*r)/r||0,y:nt(n*r)/r||0}}function Zn(e){var t,n=e.popper,o=e.popperRect,r=e.placement,s=e.variation,a=e.offsets,c=e.position,u=e.gpuAcceleration,l=e.adaptive,p=e.roundOffsets,v=e.isFixed,g=a.x,f=g===void 0?0:g,d=a.y,m=d===void 0?0:d,C=typeof p=="function"?p({x:f,y:m}):{x:f,y:m};f=C.x,m=C.y;var E=a.hasOwnProperty("x"),h=a.hasOwnProperty("y"),y=ae,w=se,B=window;if(l){var I=yt(n),A="clientHeight",S="clientWidth";if(I===be(n)&&(I=$e(n),Ae(I).position!=="static"&&c==="absolute"&&(A="scrollHeight",S="scrollWidth")),I=I,r===se||(r===ae||r===fe)&&s===dt){w=ce;var R=v&&I===B&&B.visualViewport?B.visualViewport.height:I[A];m-=R-o.height,m*=u?1:-1}if(r===ae||(r===se||r===ce)&&s===dt){y=fe;var L=v&&I===B&&B.visualViewport?B.visualViewport.width:I[S];f-=L-o.width,f*=u?1:-1}}var T=Object.assign({position:c},l&&ka),b=p===!0?Aa({x:f,y:m}):{x:f,y:m};if(f=b.x,m=b.y,u){var z;return Object.assign({},T,(z={},z[w]=h?"0":"",z[y]=E?"0":"",z.transform=(B.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",z))}return Object.assign({},T,(t={},t[w]=h?m+"px":"",t[y]=E?f+"px":"",t.transform="",t))}function Ra(e){var t=e.state,n=e.options,o=n.gpuAcceleration,r=o===void 0?!0:o,s=n.adaptive,a=s===void 0?!0:s,c=n.roundOffsets,u=c===void 0?!0:c,l={placement:Ee(t.placement),variation:rt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Zn(Object.assign({},l,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:u})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Zn(Object.assign({},l,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var No={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Ra,data:{}},Ot={passive:!0};function Ba(e){var t=e.state,n=e.instance,o=e.options,r=o.scroll,s=r===void 0?!0:r,a=o.resize,c=a===void 0?!0:a,u=be(t.elements.popper),l=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&l.forEach(function(p){p.addEventListener("scroll",n.update,Ot)}),c&&u.addEventListener("resize",n.update,Ot),function(){s&&l.forEach(function(p){p.removeEventListener("scroll",n.update,Ot)}),c&&u.removeEventListener("resize",n.update,Ot)}}var Fo={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Ba,data:{}},La={left:"right",right:"left",bottom:"top",top:"bottom"};function At(e){return e.replace(/left|right|bottom|top/g,function(t){return La[t]})}var Pa={start:"end",end:"start"};function Jn(e){return e.replace(/start|end/g,function(t){return Pa[t]})}function un(e){var t=be(e),n=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:n,scrollTop:o}}function cn(e){return ot($e(e)).left+un(e).scrollLeft}function Ma(e){var t=be(e),n=$e(e),o=t.visualViewport,r=n.clientWidth,s=n.clientHeight,a=0,c=0;return o&&(r=o.width,s=o.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=o.offsetLeft,c=o.offsetTop)),{width:r,height:s,x:a+cn(e),y:c}}function Ia(e){var t,n=$e(e),o=un(e),r=(t=e.ownerDocument)==null?void 0:t.body,s=Ke(n.scrollWidth,n.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),a=Ke(n.scrollHeight,n.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),c=-o.scrollLeft+cn(e),u=-o.scrollTop;return Ae(r||n).direction==="rtl"&&(c+=Ke(n.clientWidth,r?r.clientWidth:0)-s),{width:s,height:a,x:c,y:u}}function fn(e){var t=Ae(e),n=t.overflow,o=t.overflowX,r=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+r+o)}function zo(e){return["html","body","#document"].indexOf(we(e))>=0?e.ownerDocument.body:ue(e)&&fn(e)?e:zo($t(e))}function ft(e,t){var n;t===void 0&&(t=[]);var o=zo(e),r=o===((n=e.ownerDocument)==null?void 0:n.body),s=be(o),a=r?[s].concat(s.visualViewport||[],fn(o)?o:[]):o,c=t.concat(a);return r?c:c.concat(ft($t(a)))}function Wt(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _a(e){var t=ot(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Qn(e,t){return t===Po?Wt(Ma(e)):tt(t)?_a(t):Wt(Ia($e(e)))}function $a(e){var t=ft($t(e)),n=["absolute","fixed"].indexOf(Ae(e).position)>=0,o=n&&ue(e)?yt(e):e;return tt(o)?t.filter(function(r){return tt(r)&&Io(r,o)&&we(r)!=="body"}):[]}function Da(e,t,n){var o=t==="clippingParents"?$a(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce(function(c,u){var l=Qn(e,u);return c.top=Ke(l.top,c.top),c.right=Lt(l.right,c.right),c.bottom=Lt(l.bottom,c.bottom),c.left=Ke(l.left,c.left),c},Qn(e,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function Ho(e){var t=e.reference,n=e.element,o=e.placement,r=o?Ee(o):null,s=o?rt(o):null,a=t.x+t.width/2-n.width/2,c=t.y+t.height/2-n.height/2,u;switch(r){case se:u={x:a,y:t.y-n.height};break;case ce:u={x:a,y:t.y+t.height};break;case fe:u={x:t.x+t.width,y:c};break;case ae:u={x:t.x-n.width,y:c};break;default:u={x:t.x,y:t.y}}var l=r?ln(r):null;if(l!=null){var p=l==="y"?"height":"width";switch(s){case et:u[l]=u[l]-(t[p]/2-n[p]/2);break;case dt:u[l]=u[l]+(t[p]/2-n[p]/2);break}}return u}function pt(e,t){t===void 0&&(t={});var n=t,o=n.placement,r=o===void 0?e.placement:o,s=n.boundary,a=s===void 0?sa:s,c=n.rootBoundary,u=c===void 0?Po:c,l=n.elementContext,p=l===void 0?lt:l,v=n.altBoundary,g=v===void 0?!1:v,f=n.padding,d=f===void 0?0:f,m=$o(typeof d!="number"?d:Do(d,gt)),C=p===lt?aa:lt,E=e.rects.popper,h=e.elements[g?C:p],y=Da(tt(h)?h:h.contextElement||$e(e.elements.popper),a,u),w=ot(e.elements.reference),B=Ho({reference:w,element:E,placement:r}),I=Wt(Object.assign({},E,B)),A=p===lt?I:w,S={top:y.top-A.top+m.top,bottom:A.bottom-y.bottom+m.bottom,left:y.left-A.left+m.left,right:A.right-y.right+m.right},R=e.modifiersData.offset;if(p===lt&&R){var L=R[r];Object.keys(S).forEach(function(T){var b=[fe,ce].indexOf(T)>=0?1:-1,z=[se,ce].indexOf(T)>=0?"y":"x";S[T]+=L[z]*b})}return S}function Na(e,t){t===void 0&&(t={});var n=t,o=n.placement,r=n.boundary,s=n.rootBoundary,a=n.padding,c=n.flipVariations,u=n.allowedAutoPlacements,l=u===void 0?rn:u,p=rt(o),v=p?c?Yn:Yn.filter(function(d){return rt(d)===p}):gt,g=v.filter(function(d){return l.indexOf(d)>=0});g.length===0&&(g=v);var f=g.reduce(function(d,m){return d[m]=pt(e,{placement:m,boundary:r,rootBoundary:s,padding:a})[Ee(m)],d},{});return Object.keys(f).sort(function(d,m){return f[d]-f[m]})}function Fa(e){if(Ee(e)===on)return[];var t=At(e);return[Jn(e),t,Jn(t)]}function za(e){var t=e.state,n=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var r=n.mainAxis,s=r===void 0?!0:r,a=n.altAxis,c=a===void 0?!0:a,u=n.fallbackPlacements,l=n.padding,p=n.boundary,v=n.rootBoundary,g=n.altBoundary,f=n.flipVariations,d=f===void 0?!0:f,m=n.allowedAutoPlacements,C=t.options.placement,E=Ee(C),h=E===C,y=u||(h||!d?[At(C)]:Fa(C)),w=[C].concat(y).reduce(function(pe,ve){return pe.concat(Ee(ve)===on?Na(t,{placement:ve,boundary:p,rootBoundary:v,padding:l,flipVariations:d,allowedAutoPlacements:m}):ve)},[]),B=t.rects.reference,I=t.rects.popper,A=new Map,S=!0,R=w[0],L=0;L=0,te=W?"width":"height",q=pt(t,{placement:T,boundary:p,rootBoundary:v,altBoundary:g,padding:l}),D=W?z?fe:ae:z?ce:se;B[te]>I[te]&&(D=At(D));var O=At(D),H=[];if(s&&H.push(q[b]<=0),c&&H.push(q[D]<=0,q[O]<=0),H.every(function(pe){return pe})){R=T,S=!1;break}A.set(T,H)}if(S)for(var oe=d?3:1,N=function(pe){var ve=w.find(function(re){var Ce=A.get(re);if(Ce)return Ce.slice(0,pe).every(function(me){return me})});if(ve)return R=ve,"break"},j=oe;j>0;j--){var Q=N(j);if(Q==="break")break}t.placement!==R&&(t.modifiersData[o]._skip=!0,t.placement=R,t.reset=!0)}}var Ha={name:"flip",enabled:!0,phase:"main",fn:za,requiresIfExists:["offset"],data:{_skip:!1}};function eo(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function to(e){return[se,fe,ce,ae].some(function(t){return e[t]>=0})}function ja(e){var t=e.state,n=e.name,o=t.rects.reference,r=t.rects.popper,s=t.modifiersData.preventOverflow,a=pt(t,{elementContext:"reference"}),c=pt(t,{altBoundary:!0}),u=eo(a,o),l=eo(c,r,s),p=to(u),v=to(l);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:l,isReferenceHidden:p,hasPopperEscaped:v},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":v})}var Ka={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ja};function Va(e,t,n){var o=Ee(e),r=[ae,se].indexOf(o)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,a=s[0],c=s[1];return a=a||0,c=(c||0)*r,[ae,fe].indexOf(o)>=0?{x:c,y:a}:{x:a,y:c}}function Wa(e){var t=e.state,n=e.options,o=e.name,r=n.offset,s=r===void 0?[0,0]:r,a=rn.reduce(function(p,v){return p[v]=Va(v,t.rects,s),p},{}),c=a[t.placement],u=c.x,l=c.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=l),t.modifiersData[o]=a}var Ua={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Wa};function xa(e){var t=e.state,n=e.name;t.modifiersData[n]=Ho({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}var jo={name:"popperOffsets",enabled:!0,phase:"read",fn:xa,data:{}};function qa(e){return e==="x"?"y":"x"}function Ga(e){var t=e.state,n=e.options,o=e.name,r=n.mainAxis,s=r===void 0?!0:r,a=n.altAxis,c=a===void 0?!1:a,u=n.boundary,l=n.rootBoundary,p=n.altBoundary,v=n.padding,g=n.tether,f=g===void 0?!0:g,d=n.tetherOffset,m=d===void 0?0:d,C=pt(t,{boundary:u,rootBoundary:l,padding:v,altBoundary:p}),E=Ee(t.placement),h=rt(t.placement),y=!h,w=ln(E),B=qa(w),I=t.modifiersData.popperOffsets,A=t.rects.reference,S=t.rects.popper,R=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,L=typeof R=="number"?{mainAxis:R,altAxis:R}:Object.assign({mainAxis:0,altAxis:0},R),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,b={x:0,y:0};if(I){if(s){var z,W=w==="y"?se:ae,te=w==="y"?ce:fe,q=w==="y"?"height":"width",D=I[w],O=D+C[W],H=D-C[te],oe=f?-S[q]/2:0,N=h===et?A[q]:S[q],j=h===et?-S[q]:-A[q],Q=t.elements.arrow,pe=f&&Q?an(Q):{width:0,height:0},ve=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:_o(),re=ve[W],Ce=ve[te],me=ct(0,A[q],pe[q]),Dt=y?A[q]/2-oe-me-re-L.mainAxis:N-me-re-L.mainAxis,ht=y?-A[q]/2+oe+me+Ce+L.mainAxis:j+me+Ce+L.mainAxis,Ue=t.elements.arrow&&yt(t.elements.arrow),Qo=Ue?w==="y"?Ue.clientTop||0:Ue.clientLeft||0:0,gn=(z=T?.[w])!=null?z:0,er=D+Dt-gn-Qo,tr=D+ht-gn,yn=ct(f?Lt(O,er):O,D,f?Ke(H,tr):H);I[w]=yn,b[w]=yn-D}if(c){var hn,nr=w==="x"?se:ae,or=w==="x"?ce:fe,De=I[B],bt=B==="y"?"height":"width",bn=De+C[nr],En=De-C[or],Nt=[se,ae].indexOf(E)!==-1,wn=(hn=T?.[B])!=null?hn:0,Cn=Nt?bn:De-A[bt]-S[bt]-wn+L.altAxis,Tn=Nt?De+A[bt]+S[bt]-wn-L.altAxis:En,Sn=f&&Nt?wa(Cn,De,Tn):ct(f?Cn:bn,De,f?Tn:En);I[B]=Sn,b[B]=Sn-De}t.modifiersData[o]=b}}var Ya={name:"preventOverflow",enabled:!0,phase:"main",fn:Ga,requiresIfExists:["offset"]};function Xa(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Za(e){return e===be(e)||!ue(e)?un(e):Xa(e)}function Ja(e){var t=e.getBoundingClientRect(),n=nt(t.width)/e.offsetWidth||1,o=nt(t.height)/e.offsetHeight||1;return n!==1||o!==1}function Qa(e,t,n){n===void 0&&(n=!1);var o=ue(t),r=ue(t)&&Ja(t),s=$e(t),a=ot(e,r),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(o||!o&&!n)&&((we(t)!=="body"||fn(s))&&(c=Za(t)),ue(t)?(u=ot(t,!0),u.x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=cn(s))),{x:a.left+c.scrollLeft-u.x,y:a.top+c.scrollTop-u.y,width:a.width,height:a.height}}function el(e){var t=new Map,n=new Set,o=[];e.forEach(function(s){t.set(s.name,s)});function r(s){n.add(s.name);var a=[].concat(s.requires||[],s.requiresIfExists||[]);a.forEach(function(c){if(!n.has(c)){var u=t.get(c);u&&r(u)}}),o.push(s)}return e.forEach(function(s){n.has(s.name)||r(s)}),o}function tl(e){var t=el(e);return ga.reduce(function(n,o){return n.concat(t.filter(function(r){return r.phase===o}))},[])}function nl(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function ol(e){var t=e.reduce(function(n,o){var r=n[o.name];return n[o.name]=r?Object.assign({},r,o,{options:Object.assign({},r.options,o.options),data:Object.assign({},r.data,o.data)}):o,n},{});return Object.keys(t).map(function(n){return t[n]})}var no={placement:"bottom",modifiers:[],strategy:"absolute"};function oo(){for(var e=arguments.length,t=new Array(e),n=0;n({})},strategy:{type:String,values:ll,default:"absolute"}}),Vo=Z({...il,...Ko,id:String,style:{type:V([String,Array,Object])},className:{type:V([String,Array,Object])},effect:{type:V(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:V([String,Array,Object])},popperStyle:{type:V([String,Array,Object])},referenceEl:{type:V(Object)},triggerTargetEl:{type:V(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...Xt(["ariaLabel"]),loop:Boolean}),ul={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},cl=(e,t)=>{const n=M(!1),o=M(),r=()=>{t("focus")},s=l=>{var p;((p=l.detail)==null?void 0:p.focusReason)!=="pointer"&&(o.value="first",t("blur"))},a=l=>{e.visible&&!n.value&&(l.target&&(o.value=l.target),n.value=!0)},c=l=>{e.trapping||(l.detail.focusReason==="pointer"&&l.preventDefault(),n.value=!1)},u=()=>{n.value=!1,t("close")};return le(()=>{o.value=void 0}),{focusStartRef:o,trapped:n,onFocusAfterReleased:s,onFocusAfterTrapped:r,onFocusInTrap:a,onFocusoutPrevented:c,onReleaseRequested:u}},fl=(e,t=[])=>{const{placement:n,strategy:o,popperOptions:r}=e,s={placement:n,strategy:o,...r,modifiers:[...pl(e),...t]};return vl(s,r?.modifiers),s},dl=e=>{if(ie)return yo(e)};function pl(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:o}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:0,bottom:0,left:0,right:0}}},{name:"flip",options:{padding:5,fallbackPlacements:o}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function vl(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const ml=(e,t,n={})=>{const o={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const l=gl(u);Object.assign(a.value,l)},requires:["computeStyles"]},r=k(()=>{const{onFirstUpdate:u,placement:l,strategy:p,modifiers:v}=i(n);return{onFirstUpdate:u,placement:l||"bottom",strategy:p||"absolute",modifiers:[...v||[],o,{name:"applyStyles",enabled:!1}]}}),s=Nr(),a=M({styles:{popper:{position:i(r).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),c=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return x(r,u=>{const l=i(s);l&&l.setOptions(u)},{deep:!0}),x([e,t],([u,l])=>{c(),!(!u||!l)&&(s.value=al(u,l,i(r)))}),le(()=>{c()}),{state:k(()=>{var u;return{...((u=i(s))==null?void 0:u.state)||{}}}),styles:k(()=>i(a).styles),attributes:k(()=>i(a).attributes),update:()=>{var u;return(u=i(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=i(s))==null?void 0:u.forceUpdate()},instanceRef:k(()=>i(s))}};function gl(e){const t=Object.keys(e.elements),n=On(t.map(r=>[r,e.styles[r]||{}])),o=On(t.map(r=>[r,e.attributes[r]]));return{styles:n,attributes:o}}const yl=0,hl=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:o,role:r}=ye(Qt,void 0),s=M(),a=k(()=>e.arrowOffset),c=k(()=>({name:"eventListeners",enabled:!!e.visible})),u=k(()=>{var E;const h=i(s),y=(E=i(a))!=null?E:yl;return{name:"arrow",enabled:!ys(h),options:{element:h,padding:y}}}),l=k(()=>({onFirstUpdate:()=>{d()},...fl(e,[i(u),i(c)])})),p=k(()=>dl(e.referenceEl)||i(o)),{attributes:v,state:g,styles:f,update:d,forceUpdate:m,instanceRef:C}=ml(p,n,l);return x(C,E=>t.value=E,{flush:"sync"}),de(()=>{x(()=>{var E,h;return(h=(E=i(p))==null?void 0:E.getBoundingClientRect)==null?void 0:h.call(E)},()=>{d()})}),le(()=>{t.value=void 0}),{attributes:v,arrowRef:s,contentRef:n,instanceRef:C,state:g,styles:f,role:r,forceUpdate:m,update:d}},bl=(e,{attributes:t,styles:n,role:o})=>{const{nextZIndex:r}=fo(),s=ne("popper"),a=k(()=>i(t).popper),c=M(Se(e.zIndex)?e.zIndex:r()),u=k(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),l=k(()=>[{zIndex:i(c)},i(n).popper,e.popperStyle||{}]),p=k(()=>o.value==="dialog"?"false":void 0),v=k(()=>i(n).arrow||{});return{ariaModal:p,arrowStyle:v,contentAttrs:a,contentClass:u,contentStyle:l,contentZIndex:c,updateZIndex:()=>{c.value=Se(e.zIndex)?e.zIndex:r()}}},El=F({name:"ElPopperContent"}),wl=F({...El,props:Vo,emits:ul,setup(e,{expose:t,emit:n}){const o=e,{focusStartRef:r,trapped:s,onFocusAfterReleased:a,onFocusAfterTrapped:c,onFocusInTrap:u,onFocusoutPrevented:l,onReleaseRequested:p}=cl(o,n),{attributes:v,arrowRef:g,contentRef:f,styles:d,instanceRef:m,role:C,update:E}=hl(o),{ariaModal:h,arrowStyle:y,contentAttrs:w,contentClass:B,contentStyle:I,updateZIndex:A}=bl(o,{styles:d,attributes:v,role:C}),S=ye(kn,void 0);Ie(So,{arrowStyle:y,arrowRef:g}),S&&Ie(kn,{...S,addInputId:Ze,removeInputId:Ze});let R;const L=(b=!0)=>{E(),b&&A()},T=()=>{L(!1),o.visible&&o.focusOnShow?s.value=!0:o.visible===!1&&(s.value=!1)};return de(()=>{x(()=>o.triggerTargetEl,(b,z)=>{R?.(),R=void 0;const W=i(b||f.value),te=i(z||f.value);Oe(W)&&(R=x([C,()=>o.ariaLabel,h,()=>o.id],q=>{["role","aria-label","aria-modal","id"].forEach((D,O)=>{qt(q[O])?W.removeAttribute(D):W.setAttribute(D,q[O])})},{immediate:!0})),te!==W&&Oe(te)&&["role","aria-label","aria-modal","id"].forEach(q=>{te.removeAttribute(q)})},{immediate:!0}),x(()=>o.visible,T,{immediate:!0})}),le(()=>{R?.(),R=void 0,f.value=void 0}),t({popperContentRef:f,popperInstanceRef:m,updatePopper:L,contentStyle:I}),(b,z)=>(P(),Y("div",We({ref_key:"contentRef",ref:f},i(w),{style:i(I),class:i(B),tabindex:"-1",onMouseenter:W=>b.$emit("mouseenter",W),onMouseleave:W=>b.$emit("mouseleave",W)}),[X(i(nn),{loop:b.loop,trapped:i(s),"trap-on-focus-in":!0,"focus-trap-el":i(f),"focus-start-el":i(r),onFocusAfterTrapped:i(c),onFocusAfterReleased:i(a),onFocusin:i(u),onFocusoutPrevented:i(l),onReleaseRequested:i(p)},{default:K(()=>[U(b.$slots,"default")]),_:3},8,["loop","trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var Cl=J(wl,[["__file","content.vue"]]);const Tl=_e(Ds),pn=Symbol("elTooltip");function ro(){let e;const t=(o,r)=>{n(),e=window.setTimeout(o,r)},n=()=>window.clearTimeout(e);return cr(()=>n()),{registerTimeout:t,cancelTimeout:n}}const Sl=Z({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),Ol=({showAfter:e,hideAfter:t,autoClose:n,open:o,close:r})=>{const{registerTimeout:s}=ro(),{registerTimeout:a,cancelTimeout:c}=ro();return{onOpen:(p,v=i(e))=>{s(()=>{o(p);const g=i(n);Se(g)&&g>0&&a(()=>{r(p)},g)},v)},onClose:(p,v=i(t))=>{c(),s(()=>{r(p)},v)}}},vn=Z({to:{type:V([String,Object]),required:!0},disabled:Boolean}),Wo=Z({...Sl,...Vo,appendTo:{type:vn.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:V(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...Xt(["ariaLabel"])}),Uo=Z({...ko,disabled:Boolean,trigger:{type:V([String,Array]),default:"hover"},triggerKeys:{type:V(Array),default:()=>[Ye.enter,Ye.numpadEnter,Ye.space]},focusOnTarget:Boolean}),kl=po({type:V(Boolean),default:null}),Al=po({type:V(Function)}),Rl=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,o=[t],r={[e]:kl,[n]:Al};return{useModelToggle:({indicator:a,toggleReason:c,shouldHideWhenRouteChanges:u,shouldProceed:l,onShow:p,onHide:v})=>{const g=Eo(),{emit:f}=g,d=g.props,m=k(()=>ke(d[n])),C=k(()=>d[e]===null),E=A=>{a.value!==!0&&(a.value=!0,c&&(c.value=A),ke(p)&&p(A))},h=A=>{a.value!==!1&&(a.value=!1,c&&(c.value=A),ke(v)&&v(A))},y=A=>{if(d.disabled===!0||ke(l)&&!l())return;const S=m.value&&ie;S&&f(t,!0),(C.value||!S)&&E(A)},w=A=>{if(d.disabled===!0||!ie)return;const S=m.value&&ie;S&&f(t,!1),(C.value||!S)&&h(A)},B=A=>{Gt(A)&&(d.disabled&&A?m.value&&f(t,!1):a.value!==A&&(A?E():h()))},I=()=>{a.value?w():y()};return x(()=>d[e],B),u&&g.appContext.config.globalProperties.$route!==void 0&&x(()=>({...g.proxy.$route}),()=>{u.value&&a.value&&w()}),de(()=>{B(d[e])}),{hide:w,show:y,toggle:I,hasUpdateHandler:m}},useModelToggleProps:r,useModelToggleEmits:o}},{useModelToggleProps:Bl,useModelToggleEmits:Ll,useModelToggle:Pl}=Rl("visible"),Ml=Z({...Oo,...Bl,...Wo,...Uo,...Ko,showArrow:{type:Boolean,default:!0}}),Il=[...Ll,"before-show","before-hide","show","hide","open","close"],Ut=(e,t)=>je(e)?e.includes(t):e===t,qe=(e,t,n)=>o=>{Ut(i(e),t)&&n(o)},_l=F({name:"ElTooltipTrigger"}),$l=F({..._l,props:Uo,setup(e,{expose:t}){const n=e,o=ne("tooltip"),{controlled:r,id:s,open:a,onOpen:c,onClose:u,onToggle:l}=ye(pn,void 0),p=M(null),v=()=>{if(i(r)||n.disabled)return!0},g=Me(n,"trigger"),f=Te(v,qe(g,"hover",w=>{c(w),n.focusOnTarget&&w.target&&ge(()=>{Zt(w.target,{preventScroll:!0})})})),d=Te(v,qe(g,"hover",u)),m=Te(v,qe(g,"click",w=>{w.button===0&&l(w)})),C=Te(v,qe(g,"focus",c)),E=Te(v,qe(g,"focus",u)),h=Te(v,qe(g,"contextmenu",w=>{w.preventDefault(),l(w)})),y=Te(v,w=>{const B=Mt(w);n.triggerKeys.includes(B)&&(w.preventDefault(),l(w))});return t({triggerRef:p}),(w,B)=>(P(),G(i(xs),{id:i(s),"virtual-ref":w.virtualRef,open:i(a),"virtual-triggering":w.virtualTriggering,class:_(i(o).e("trigger")),onBlur:i(E),onClick:i(m),onContextmenu:i(h),onFocus:i(C),onMouseenter:i(f),onMouseleave:i(d),onKeydown:i(y)},{default:K(()=>[U(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Dl=J($l,[["__file","trigger.vue"]]);const Nl=F({__name:"teleport",props:vn,setup(e){return(t,n)=>t.disabled?U(t.$slots,"default",{key:0}):(P(),G(Fr,{key:1,to:t.to},[U(t.$slots,"default")],8,["to"]))}});var Fl=J(Nl,[["__file","teleport.vue"]]);const xo=_e(Fl),qo=()=>{const e=fr(),t=dr(),n=k(()=>`${e.value}-popper-container-${t.prefix}`),o=k(()=>`#${n.value}`);return{id:n,selector:o}},zl=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},Hl=()=>{const{id:e,selector:t}=qo();return zr(()=>{ie&&(document.body.querySelector(t.value)||zl(e.value))}),{id:e,selector:t}},jl=e=>!e&&e!==0?[]:je(e)?e:[e],Kl=F({name:"ElTooltipContent",inheritAttrs:!1}),Vl=F({...Kl,props:Wo,setup(e,{expose:t}){const n=e,{selector:o}=qo(),r=ne("tooltip"),s=M(),a=pr(()=>{var O;return(O=s.value)==null?void 0:O.popperContentRef});let c;const{controlled:u,id:l,open:p,trigger:v,onClose:g,onOpen:f,onShow:d,onHide:m,onBeforeShow:C,onBeforeHide:E}=ye(pn,void 0),h=k(()=>n.transition||`${r.namespace.value}-fade-in-linear`),y=k(()=>n.persistent);le(()=>{c?.()});const w=k(()=>i(y)?!0:i(p)),B=k(()=>n.disabled?!1:i(p)),I=k(()=>n.appendTo||o.value),A=k(()=>{var O;return(O=n.style)!=null?O:{}}),S=M(!0),R=()=>{m(),D()&&Zt(document.body,{preventScroll:!0}),S.value=!0},L=()=>{if(i(u))return!0},T=Te(L,()=>{n.enterable&&Ut(i(v),"hover")&&f()}),b=Te(L,()=>{Ut(i(v),"hover")&&g()}),z=()=>{var O,H;(H=(O=s.value)==null?void 0:O.updatePopper)==null||H.call(O),C?.()},W=()=>{E?.()},te=()=>{d()},q=()=>{n.virtualTriggering||g()},D=O=>{var H;const oe=(H=s.value)==null?void 0:H.popperContentRef,N=O?.relatedTarget||document.activeElement;return oe?.contains(N)};return x(()=>i(p),O=>{O?(S.value=!1,c=Pr(a,()=>{if(i(u))return;jl(i(v)).every(oe=>oe!=="hover"&&oe!=="focus")&&g()},{detectIframe:!0})):c?.()},{flush:"post"}),x(()=>n.content,()=>{var O,H;(H=(O=s.value)==null?void 0:O.updatePopper)==null||H.call(O)}),t({contentRef:s,isFocusInsideContent:D}),(O,H)=>(P(),G(i(xo),{disabled:!O.teleported,to:i(I)},{default:K(()=>[i(w)||!S.value?(P(),G(mt,{key:0,name:i(h),appear:!i(y),onAfterLeave:R,onBeforeEnter:z,onAfterEnter:te,onBeforeLeave:W,persisted:""},{default:K(()=>[He(X(i(Cl),We({id:i(l),ref_key:"contentRef",ref:s},O.$attrs,{"aria-label":O.ariaLabel,"aria-hidden":S.value,"boundaries-padding":O.boundariesPadding,"fallback-placements":O.fallbackPlacements,"gpu-acceleration":O.gpuAcceleration,offset:O.offset,placement:O.placement,"popper-options":O.popperOptions,"arrow-offset":O.arrowOffset,strategy:O.strategy,effect:O.effect,enterable:O.enterable,pure:O.pure,"popper-class":O.popperClass,"popper-style":[O.popperStyle,i(A)],"reference-el":O.referenceEl,"trigger-target-el":O.triggerTargetEl,visible:i(B),"z-index":O.zIndex,loop:O.loop,onMouseenter:i(T),onMouseleave:i(b),onBlur:q,onClose:i(g)}),{default:K(()=>[U(O.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","loop","onMouseenter","onMouseleave","onClose"]),[[Xe,i(B)]])]),_:3},8,["name","appear"])):ee("v-if",!0)]),_:3},8,["disabled","to"]))}});var Wl=J(Vl,[["__file","content.vue"]]);const Ul=F({name:"ElTooltip"}),xl=F({...Ul,props:Ml,emits:Il,setup(e,{expose:t,emit:n}){const o=e;Hl();const r=ne("tooltip"),s=Qe(),a=M(),c=M(),u=()=>{var y;const w=i(a);w&&((y=w.popperInstanceRef)==null||y.update())},l=M(!1),p=M(),{show:v,hide:g,hasUpdateHandler:f}=Pl({indicator:l,toggleReason:p}),{onOpen:d,onClose:m}=Ol({showAfter:Me(o,"showAfter"),hideAfter:Me(o,"hideAfter"),autoClose:Me(o,"autoClose"),open:v,close:g}),C=k(()=>Gt(o.visible)&&!f.value),E=k(()=>[r.b(),o.popperClass]);Ie(pn,{controlled:C,id:s,open:Hr(l),trigger:Me(o,"trigger"),onOpen:d,onClose:m,onToggle:y=>{i(l)?m(y):d(y)},onShow:()=>{n("show",p.value)},onHide:()=>{n("hide",p.value)},onBeforeShow:()=>{n("before-show",p.value)},onBeforeHide:()=>{n("before-hide",p.value)},updatePopper:u}),x(()=>o.disabled,y=>{y&&l.value&&(l.value=!1)});const h=y=>{var w;return(w=c.value)==null?void 0:w.isFocusInsideContent(y)};return jr(()=>l.value&&g()),le(()=>{p.value=void 0}),t({popperRef:a,contentRef:c,isFocusInsideContent:h,updatePopper:u,onOpen:d,onClose:m,hide:g}),(y,w)=>(P(),G(i(Tl),{ref_key:"popperRef",ref:a,role:y.role},{default:K(()=>[X(Dl,{disabled:y.disabled,trigger:y.trigger,"trigger-keys":y.triggerKeys,"virtual-ref":y.virtualRef,"virtual-triggering":y.virtualTriggering,"focus-on-target":y.focusOnTarget},{default:K(()=>[y.$slots.default?U(y.$slots,"default",{key:0}):ee("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering","focus-on-target"]),X(Wl,{ref_key:"contentRef",ref:c,"aria-label":y.ariaLabel,"boundaries-padding":y.boundariesPadding,content:y.content,disabled:y.disabled,effect:y.effect,enterable:y.enterable,"fallback-placements":y.fallbackPlacements,"hide-after":y.hideAfter,"gpu-acceleration":y.gpuAcceleration,offset:y.offset,persistent:y.persistent,"popper-class":i(E),"popper-style":y.popperStyle,placement:y.placement,"popper-options":y.popperOptions,"arrow-offset":y.arrowOffset,pure:y.pure,"raw-content":y.rawContent,"reference-el":y.referenceEl,"trigger-target-el":y.triggerTargetEl,"show-after":y.showAfter,strategy:y.strategy,teleported:y.teleported,transition:y.transition,"virtual-triggering":y.virtualTriggering,"z-index":y.zIndex,"append-to":y.appendTo,loop:y.loop},{default:K(()=>[U(y.$slots,"content",{},()=>[y.rawContent?(P(),Y("span",{key:0,innerHTML:y.content},null,8,["innerHTML"])):(P(),Y("span",{key:1},Pe(y.content),1))]),y.showArrow?(P(),G(i(zs),{key:0})):ee("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to","loop"])]),_:3},8,["role"]))}});var ql=J(xl,[["__file","tooltip.vue"]]);const Gi=_e(ql);var Rt=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Rt||{});const kt=e=>{const t=je(e)?e:[e],n=[];return t.forEach(o=>{var r;je(o)?n.push(...kt(o)):ut(o)&&((r=o.component)!=null&&r.subTree)?n.push(o,...kt(o.component.subTree)):ut(o)&&je(o.children)?n.push(...kt(o.children)):ut(o)&&o.shapeFlag===2?n.push(...kt(o.type())):n.push(o)}),n},Gl=Z({type:{type:String,values:["primary","success","info","warning","danger"],default:"primary"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:vo},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),Yl={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},Xl=F({name:"ElTag"}),Zl=F({...Xl,props:Gl,emits:Yl,setup(e,{emit:t}){const n=e,o=vr(),{t:r}=Yt(),s=ne("tag"),a=k(()=>{const{type:p,hit:v,effect:g,closable:f,round:d}=n;return[s.b(),s.is("closable",f),s.m(p||"primary"),s.m(o.value),s.m(g),s.is("hit",v),s.is("round",d)]}),c=p=>{t("close",p)},u=p=>{t("click",p)},l=p=>{var v,g,f;(f=(g=(v=p?.component)==null?void 0:v.subTree)==null?void 0:g.component)!=null&&f.bum&&(p.component.subTree.component.bum=null)};return(p,v)=>p.disableTransitions?(P(),Y("span",{key:0,class:_(i(a)),style:he({backgroundColor:p.color}),onClick:u},[$("span",{class:_(i(s).e("content"))},[U(p.$slots,"default")],2),p.closable?(P(),Y("button",{key:0,"aria-label":i(r)("el.tag.close"),class:_(i(s).e("close")),type:"button",onClick:Fe(c,["stop"])},[X(i(Bt),null,{default:K(()=>[X(i(An))]),_:1})],10,["aria-label","onClick"])):ee("v-if",!0)],6)):(P(),G(mt,{key:1,name:`${i(s).namespace.value}-zoom-in-center`,appear:"",onVnodeMounted:l},{default:K(()=>[$("span",{class:_(i(a)),style:he({backgroundColor:p.color}),onClick:u},[$("span",{class:_(i(s).e("content"))},[U(p.$slots,"default")],2),p.closable?(P(),Y("button",{key:0,"aria-label":i(r)("el.tag.close"),class:_(i(s).e("close")),type:"button",onClick:Fe(c,["stop"])},[X(i(Bt),null,{default:K(()=>[X(i(An))]),_:1})],10,["aria-label","onClick"])):ee("v-if",!0)],6)]),_:3},8,["name"]))}});var Jl=J(Zl,[["__file","tag.vue"]]);const Yi=_e(Jl),Be=new Map;if(ie){let e;document.addEventListener("mousedown",t=>e=t),document.addEventListener("mouseup",t=>{if(e){for(const n of Be.values())for(const{documentHandler:o}of n)o(t,e);e=void 0}})}function so(e,t){let n=[];return je(t.arg)?n=t.arg:Oe(t.arg)&&n.push(t.arg),function(o,r){const s=t.instance.popperRef,a=o.target,c=r?.target,u=!t||!t.instance,l=!a||!c,p=e.contains(a)||e.contains(c),v=e===a,g=n.length&&n.some(d=>d?.contains(a))||n.length&&n.includes(c),f=s&&(s.contains(a)||s.contains(c));u||l||p||v||g||f||t.value(o,r)}}const Xi={beforeMount(e,t){Be.has(e)||Be.set(e,[]),Be.get(e).push({documentHandler:so(e,t),bindingFn:t.value})},updated(e,t){Be.has(e)||Be.set(e,[]);const n=Be.get(e),o=n.findIndex(s=>s.bindingFn===t.oldValue),r={documentHandler:so(e,t),bindingFn:t.value};o>=0?n.splice(o,1,r):n.push(r)},unmounted(e){Be.delete(e)}},mn=e=>{if(!e)return{onClick:Ze,onMousedown:Ze,onMouseup:Ze};let t=!1,n=!1;return{onClick:a=>{t&&n&&e(a),t=n=!1},onMousedown:a=>{t=a.target===a.currentTarget},onMouseup:a=>{n=a.target===a.currentTarget}}},Ql=Z({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:V([String,Array,Object])},zIndex:{type:V([String,Number])}}),ei={click:e=>e instanceof MouseEvent},ti="overlay";var ni=F({name:"ElOverlay",props:Ql,emits:ei,setup(e,{slots:t,emit:n}){const o=ne(ti),r=u=>{n("click",u)},{onClick:s,onMousedown:a,onMouseup:c}=mn(e.customMaskEvent?void 0:r);return()=>e.mask?X("div",{class:[o.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:s,onMousedown:a,onMouseup:c},[U(t,"default")],Rt.STYLE|Rt.CLASS|Rt.PROPS,["onClick","onMouseup","onMousedown"]):Kr("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[U(t,"default")])}});const Go=ni,Yo=Symbol("dialogInjectionKey"),ao="dialog-fade",Xo=Z({center:Boolean,alignCenter:{type:Boolean,default:void 0},closeIcon:{type:mr},draggable:{type:Boolean,default:void 0},overflow:{type:Boolean,default:void 0},fullscreen:Boolean,headerClass:String,bodyClass:String,footerClass:String,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),oi={close:()=>!0},Zo=(e,t,n,o)=>{const r={offsetX:0,offsetY:0},s=M(!1),a=(g,f)=>{if(e.value){const{offsetX:d,offsetY:m}=r,C=e.value.getBoundingClientRect(),E=C.left,h=C.top,y=C.width,w=C.height,B=document.documentElement.clientWidth,I=document.documentElement.clientHeight,A=-E+d,S=-h+m,R=B-E-y+d,L=I-h-(w{const f=g.clientX,d=g.clientY,{offsetX:m,offsetY:C}=r,E=y=>{s.value||(s.value=!0);const w=m+y.clientX-f,B=C+y.clientY-d;a(w,B)},h=()=>{s.value=!1,document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",h)};document.addEventListener("mousemove",E),document.addEventListener("mouseup",h)},u=()=>{t.value&&e.value&&(t.value.addEventListener("mousedown",c),window.addEventListener("resize",v))},l=()=>{t.value&&e.value&&(t.value.removeEventListener("mousedown",c),window.removeEventListener("resize",v))},p=()=>{r.offsetX=0,r.offsetY=0,e.value&&(e.value.style.transform="")},v=()=>{const{offsetX:g,offsetY:f}=r;a(g,f)};return de(()=>{Vr(()=>{n.value?u():l()})}),le(()=>{l()}),{isDragging:s,resetPosition:p,updatePosition:v}},ri=(...e)=>t=>{e.forEach(n=>{n.value=t})},si=F({name:"ElDialogContent"}),ai=F({...si,props:Xo,emits:oi,setup(e,{expose:t}){const n=e,{t:o}=Yt(),{Close:r}=gr,{dialogRef:s,headerRef:a,bodyId:c,ns:u,style:l}=ye(Yo),{focusTrapRef:p}=ye(Bo),v=ri(p,s),g=k(()=>!!n.draggable),f=k(()=>!!n.overflow),{resetPosition:d,updatePosition:m,isDragging:C}=Zo(s,a,g,f),E=k(()=>[u.b(),u.is("fullscreen",n.fullscreen),u.is("draggable",g.value),u.is("dragging",C.value),u.is("align-center",!!n.alignCenter),{[u.m("center")]:n.center}]);return t({resetPosition:d,updatePosition:m}),(h,y)=>(P(),Y("div",{ref:i(v),class:_(i(E)),style:he(i(l)),tabindex:"-1"},[$("header",{ref_key:"headerRef",ref:a,class:_([i(u).e("header"),h.headerClass,{"show-close":h.showClose}])},[U(h.$slots,"header",{},()=>[$("span",{role:"heading","aria-level":h.ariaLevel,class:_(i(u).e("title"))},Pe(h.title),11,["aria-level"])]),h.showClose?(P(),Y("button",{key:0,"aria-label":i(o)("el.dialog.close"),class:_(i(u).e("headerbtn")),type:"button",onClick:w=>h.$emit("close")},[X(i(Bt),{class:_(i(u).e("close"))},{default:K(()=>[(P(),G(Ne(h.closeIcon||i(r))))]),_:1},8,["class"])],10,["aria-label","onClick"])):ee("v-if",!0)],2),$("div",{id:i(c),class:_([i(u).e("body"),h.bodyClass])},[U(h.$slots,"default")],10,["id"]),h.$slots.footer?(P(),Y("footer",{key:0,class:_([i(u).e("footer"),h.footerClass])},[U(h.$slots,"footer")],2)):ee("v-if",!0)],6))}});var li=J(ai,[["__file","dialog-content.vue"]]);const ii=Z({...Xo,appendToBody:Boolean,appendTo:{type:vn.to.type,default:"body"},beforeClose:{type:V(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},modalPenetrable:Boolean,openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,headerClass:String,bodyClass:String,footerClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:Boolean,headerAriaLevel:{type:String,default:"2"},transition:{type:V([String,Object]),default:void 0}}),ui={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[ho]:e=>Gt(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},Jo=(e,t={})=>{Wr(e)||go("[useLockscreen]","You need to pass a ref param to this function");const n=t.ns||ne("popup"),o=k(()=>n.bm("parent","hidden"));let r=0,s=!1,a="0";const c=()=>{setTimeout(()=>{typeof document>"u"||s&&document&&(document.body.style.width=a,Er(document.body,o.value))},200)};x(e,u=>{if(!u){c();return}s=!yr(document.body,o.value),s&&(a=document.body.style.width,hr(document.body,o.value)),r=hs(n.namespace.value);const l=document.documentElement.clientHeight0&&(l||p==="scroll")&&s&&(document.body.style.width=`calc(100% - ${r}px)`)}),Ur(()=>c())},ci=(e,t)=>{var n;const r=Eo().emit,{nextZIndex:s}=fo();let a="";const c=Qe(),u=Qe(),l=M(!1),p=M(!1),v=M(!1),g=M((n=e.zIndex)!=null?n:s());let f,d;const m=wr(),C=k(()=>{var N,j;return(j=(N=m.value)==null?void 0:N.namespace)!=null?j:Cr}),E=k(()=>{var N;return(N=m.value)==null?void 0:N.dialog}),h=k(()=>{const N={},j=`--${C.value}-dialog`;if(!e.fullscreen){e.top&&(N[`${j}-margin-top`]=e.top);const Q=Je(e.width);Q&&(N[`${j}-width`]=Q)}return N}),y=k(()=>{var N,j,Q;return((Q=(j=e.draggable)!=null?j:(N=E.value)==null?void 0:N.draggable)!=null?Q:!1)&&!e.fullscreen}),w=k(()=>{var N,j,Q;return(Q=(j=e.alignCenter)!=null?j:(N=E.value)==null?void 0:N.alignCenter)!=null?Q:!1}),B=k(()=>{var N,j,Q;return(Q=(j=e.overflow)!=null?j:(N=E.value)==null?void 0:N.overflow)!=null?Q:!1}),I=k(()=>w.value?{display:"flex"}:{}),A=k(()=>{var N,j,Q;const pe=(Q=(j=e.transition)!=null?j:(N=E.value)==null?void 0:N.transition)!=null?Q:ao,ve={name:pe,onAfterEnter:S,onBeforeLeave:L,onAfterLeave:R};if(Ve(pe)){const re={...pe},Ce=(me,Dt)=>ht=>{je(me)?me.forEach(Ue=>{ke(Ue)&&Ue(ht)}):ke(me)&&me(ht),Dt()};return re.onAfterEnter=Ce(re.onAfterEnter,S),re.onBeforeLeave=Ce(re.onBeforeLeave,L),re.onAfterLeave=Ce(re.onAfterLeave,R),re.name||(re.name=ao),re}return ve});function S(){r("opened")}function R(){r("closed"),r(ho,!1),e.destroyOnClose&&(v.value=!1)}function L(){r("close")}function T(){d?.(),f?.(),e.openDelay&&e.openDelay>0?{stop:f}=Rn(()=>te(),e.openDelay):te()}function b(){f?.(),d?.(),e.closeDelay&&e.closeDelay>0?{stop:d}=Rn(()=>q(),e.closeDelay):q()}function z(){function N(j){j||(p.value=!0,l.value=!1)}e.beforeClose?e.beforeClose(N):b()}function W(){e.closeOnClickModal&&z()}function te(){ie&&(l.value=!0)}function q(){l.value=!1}function D(){r("openAutoFocus")}function O(){r("closeAutoFocus")}function H(N){var j;((j=N.detail)==null?void 0:j.focusReason)==="pointer"&&N.preventDefault()}e.lockScroll&&Jo(l);function oe(){e.closeOnPressEscape&&z()}return x(()=>e.zIndex,()=>{var N;g.value=(N=e.zIndex)!=null?N:s()}),x(()=>e.modelValue,N=>{var j;N?(p.value=!1,T(),v.value=!0,g.value=(j=e.zIndex)!=null?j:s(),ge(()=>{r("open"),t.value&&(t.value.parentElement.scrollTop=0,t.value.parentElement.scrollLeft=0,t.value.scrollTop=0)})):l.value&&b()}),x(()=>e.fullscreen,N=>{t.value&&(N?(a=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=a)}),de(()=>{e.modelValue&&(l.value=!0,v.value=!0,T())}),{afterEnter:S,afterLeave:R,beforeLeave:L,handleClose:z,onModalClick:W,close:b,doClose:q,onOpenAutoFocus:D,onCloseAutoFocus:O,onCloseRequested:oe,onFocusoutPrevented:H,titleId:c,bodyId:u,closed:p,style:h,overlayDialogStyle:I,rendered:v,visible:l,zIndex:g,transitionConfig:A,_draggable:y,_alignCenter:w,_overflow:B}},fi=F({name:"ElDialog",inheritAttrs:!1}),di=F({...fi,props:ii,emits:ui,setup(e,{expose:t}){const n=e,o=xr();Tr({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},k(()=>!!o.title));const r=ne("dialog"),s=M(),a=M(),c=M(),{visible:u,titleId:l,bodyId:p,style:v,overlayDialogStyle:g,rendered:f,transitionConfig:d,zIndex:m,_draggable:C,_alignCenter:E,_overflow:h,handleClose:y,onModalClick:w,onOpenAutoFocus:B,onCloseAutoFocus:I,onCloseRequested:A,onFocusoutPrevented:S}=ci(n,s);Ie(Yo,{dialogRef:s,headerRef:a,bodyId:p,ns:r,rendered:f,style:v});const R=mn(w),L=k(()=>n.modalPenetrable&&!n.modal&&!n.fullscreen);return t({visible:u,dialogContentRef:c,resetPosition:()=>{var b;(b=c.value)==null||b.resetPosition()},handleClose:y}),(b,z)=>(P(),G(i(xo),{to:b.appendTo,disabled:b.appendTo!=="body"?!1:!b.appendToBody},{default:K(()=>[X(mt,We(i(d),{persisted:""}),{default:K(()=>{var W;return[He(X(i(Go),{"custom-mask-event":"",mask:b.modal,"overlay-class":[(W=b.modalClass)!=null?W:"",`${i(r).namespace.value}-modal-dialog`,i(r).is("penetrable",i(L))],"z-index":i(m)},{default:K(()=>[$("div",{role:"dialog","aria-modal":"true","aria-label":b.title||void 0,"aria-labelledby":b.title?void 0:i(l),"aria-describedby":i(p),class:_(`${i(r).namespace.value}-overlay-dialog`),style:he(i(g)),onClick:i(R).onClick,onMousedown:i(R).onMousedown,onMouseup:i(R).onMouseup},[X(i(nn),{loop:"",trapped:i(u),"focus-start-el":"container",onFocusAfterTrapped:i(B),onFocusAfterReleased:i(I),onFocusoutPrevented:i(S),onReleaseRequested:i(A)},{default:K(()=>[i(f)?(P(),G(li,We({key:0,ref_key:"dialogContentRef",ref:c},b.$attrs,{center:b.center,"align-center":i(E),"close-icon":b.closeIcon,draggable:i(C),overflow:i(h),fullscreen:b.fullscreen,"header-class":b.headerClass,"body-class":b.bodyClass,"footer-class":b.footerClass,"show-close":b.showClose,title:b.title,"aria-level":b.headerAriaLevel,onClose:i(y)}),qr({header:K(()=>[b.$slots.title?U(b.$slots,"title",{key:1}):U(b.$slots,"header",{key:0,close:i(y),titleId:i(l),titleClass:i(r).e("title")})]),default:K(()=>[U(b.$slots,"default")]),_:2},[b.$slots.footer?{name:"footer",fn:K(()=>[U(b.$slots,"footer")])}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","header-class","body-class","footer-class","show-close","title","aria-level","onClose"])):ee("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,["aria-label","aria-labelledby","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["mask","overlay-class","z-index"]),[[Xe,i(u)]])]}),_:3},16)]),_:3},8,["to","disabled"]))}});var pi=J(di,[["__file","dialog.vue"]]);const Zi=_e(pi),vi=F({name:"ImgEmpty"}),mi=F({...vi,setup(e){const t=ne("empty"),n=Qe();return(o,r)=>(P(),Y("svg",{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},[$("defs",null,[$("linearGradient",{id:`linearGradient-1-${i(n)}`,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"},[$("stop",{"stop-color":`var(${i(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),$("stop",{"stop-color":`var(${i(t).cssVarBlockName("fill-color-4")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),$("linearGradient",{id:`linearGradient-2-${i(n)}`,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"},[$("stop",{"stop-color":`var(${i(t).cssVarBlockName("fill-color-1")})`,offset:"0%"},null,8,["stop-color"]),$("stop",{"stop-color":`var(${i(t).cssVarBlockName("fill-color-6")})`,offset:"100%"},null,8,["stop-color"])],8,["id"]),$("rect",{id:`path-3-${i(n)}`,x:"0",y:"0",width:"17",height:"36"},null,8,["id"])]),$("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},[$("g",{transform:"translate(-1268.000000, -535.000000)"},[$("g",{transform:"translate(1268.000000, 535.000000)"},[$("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(${i(t).cssVarBlockName("fill-color-3")})`},null,8,["fill"]),$("polygon",{fill:`var(${i(t).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"]),$("g",{transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"},[$("polygon",{fill:`var(${i(t).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"]),$("polygon",{fill:`var(${i(t).cssVarBlockName("fill-color-5")})`,points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"},null,8,["fill"]),$("rect",{fill:`url(#linearGradient-1-${i(n)})`,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"]),$("polygon",{fill:`var(${i(t).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"])]),$("rect",{fill:`url(#linearGradient-2-${i(n)})`,x:"13",y:"45",width:"40",height:"36"},null,8,["fill"]),$("g",{transform:"translate(53.000000, 45.000000)"},[$("use",{fill:`var(${i(t).cssVarBlockName("fill-color-8")})`,transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":`#path-3-${i(n)}`},null,8,["fill","xlink:href"]),$("polygon",{fill:`var(${i(t).cssVarBlockName("fill-color-9")})`,mask:`url(#mask-4-${i(n)})`,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"])]),$("polygon",{fill:`var(${i(t).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 gi=J(mi,[["__file","img-empty.vue"]]);const yi=Z({image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}}),hi=F({name:"ElEmpty"}),bi=F({...hi,props:yi,setup(e){const t=e,{t:n}=Yt(),o=ne("empty"),r=k(()=>t.description||n("el.table.emptyText")),s=k(()=>({width:Je(t.imageSize)}));return(a,c)=>(P(),Y("div",{class:_(i(o).b())},[$("div",{class:_(i(o).e("image")),style:he(i(s))},[a.image?(P(),Y("img",{key:0,src:a.image,ondragstart:"return false"},null,8,["src"])):U(a.$slots,"image",{key:1},()=>[X(gi)])],6),$("div",{class:_(i(o).e("description"))},[a.$slots.description?U(a.$slots,"description",{key:0}):(P(),Y("p",{key:1},Pe(i(r)),1))],2),a.$slots.default?(P(),Y("div",{key:0,class:_(i(o).e("bottom"))},[U(a.$slots,"default")],2)):ee("v-if",!0)],2))}});var Ei=J(bi,[["__file","empty.vue"]]);const Ji=_e(Ei),Qi=(e="")=>e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),eu=e=>Gr(e),wi=Z({animated:Boolean,count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:V([Number,Object])}}),Ci=Z({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),Ti=F({name:"ElSkeletonItem"}),Si=F({...Ti,props:Ci,setup(e){const t=ne("skeleton");return(n,o)=>(P(),Y("div",{class:_([i(t).e("item"),i(t).e(n.variant)])},[n.variant==="image"?(P(),G(i(Sr),{key:0})):ee("v-if",!0)],2))}});var Pt=J(Si,[["__file","skeleton-item.vue"]]);const Oi=(e,t=0)=>{if(t===0)return e;const n=Ve(t)&&!!t.initVal,o=M(n);let r=null;const s=c=>{if(mo(c)){o.value=e.value;return}r&&clearTimeout(r),r=setTimeout(()=>{o.value=e.value},c)},a=c=>{c==="leading"?Se(t)?s(t):s(t.leading):Ve(t)?s(t.trailing):o.value=!1};return de(()=>a("leading")),x(()=>e.value,c=>{a(c?"leading":"trailing")}),o},ki=F({name:"ElSkeleton"}),Ai=F({...ki,props:wi,setup(e,{expose:t}){const n=e,o=ne("skeleton"),r=Oi(Me(n,"loading"),n.throttle);return t({uiLoading:r}),(s,a)=>i(r)?(P(),Y("div",We({key:0,class:[i(o).b(),i(o).is("animated",s.animated)]},s.$attrs),[(P(!0),Y(it,null,$n(s.count,c=>(P(),Y(it,{key:c},[i(r)?U(s.$slots,"template",{key:c},()=>[X(Pt,{class:_(i(o).is("first")),variant:"p"},null,8,["class"]),(P(!0),Y(it,null,$n(s.rows,u=>(P(),G(Pt,{key:u,class:_([i(o).e("paragraph"),i(o).is("last",u===s.rows&&s.rows>1)]),variant:"p"},null,8,["class"]))),128))]):ee("v-if",!0)],64))),128))],16)):U(s.$slots,"default",Yr(We({key:1},s.$attrs)))}});var Ri=J(Ai,[["__file","skeleton.vue"]]);const tu=_e(Ri,{SkeletonItem:Pt});Or(Pt);const Bi=e=>["",...vo].includes(e),xt="_trap-focus-children",ze=[],lo=e=>{if(ze.length===0)return;const t=Mt(e),n=ze[ze.length-1][xt];if(n.length>0&&t===Ye.tab){if(n.length===1){e.preventDefault(),document.activeElement!==n[0]&&n[0].focus();return}const o=e.shiftKey,r=e.target===n[0],s=e.target===n[n.length-1];r&&o&&(e.preventDefault(),n[n.length-1].focus()),s&&!o&&(e.preventDefault(),n[0].focus())}},Li={beforeMount(e){e[xt]=In(e),ze.push(e),ze.length<=1&&document.addEventListener("keydown",lo)},updated(e){ge(()=>{e[xt]=In(e)})},unmounted(){ze.shift(),ze.length===0&&document.removeEventListener("keydown",lo)}},Pi=F({name:"ElMessageBox",directives:{TrapFocus:Li},components:{ElButton:Ar,ElFocusTrap:nn,ElInput:Mr,ElOverlay:Go,ElIcon:Bt,...kr},inheritAttrs:!1,props:{buttonSize:{type:String,validator:Bi},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:Boolean,container:{type:String,default:"body"},boxType:{type:String,default:""}},emits:["vanish","action"],setup(e,{emit:t}){const{locale:n,zIndex:o,ns:r,size:s}=Rr("message-box",k(()=>e.buttonSize)),{t:a}=n,{nextZIndex:c}=o,u=M(!1),l=bo({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:"",cancelButtonClass:"",confirmButtonText:"",confirmButtonClass:"",customClass:"",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:"",closeIcon:"",inputPattern:null,inputPlaceholder:"",inputType:"text",inputValue:"",inputValidator:void 0,inputErrorMessage:"",message:"",modalFade:!0,modalClass:"",showCancelButton:!1,showConfirmButton:!0,type:"",title:void 0,showInput:!1,action:"",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:Vt(Bn),cancelButtonLoadingIcon:Vt(Bn),confirmButtonDisabled:!1,editorErrorMessage:"",validateError:!1,zIndex:c()}),p=k(()=>{const D=l.type;return{[r.bm("icon",D)]:D&&Ln[D]}}),v=Qe(),g=Qe(),f=k(()=>{const D=l.type;return l.icon||D&&Ln[D]||""}),d=k(()=>!!l.message),m=M(),C=M(),E=M(),h=M(),y=M(),w=k(()=>l.confirmButtonClass);x(()=>l.inputValue,async D=>{await ge(),e.boxType==="prompt"&&D&&z()},{immediate:!0}),x(()=>u.value,D=>{var O,H;D&&(e.boxType!=="prompt"&&(l.autofocus?E.value=(H=(O=y.value)==null?void 0:O.$el)!=null?H:m.value:E.value=m.value),l.zIndex=c()),e.boxType==="prompt"&&(D?ge().then(()=>{var oe;h.value&&h.value.$el&&(l.autofocus?E.value=(oe=W())!=null?oe:m.value:E.value=m.value)}):(l.editorErrorMessage="",l.validateError=!1))});const B=k(()=>e.draggable),I=k(()=>e.overflow),{isDragging:A}=Zo(m,C,B,I);de(async()=>{await ge(),e.closeOnHashChange&&window.addEventListener("hashchange",S)}),le(()=>{e.closeOnHashChange&&window.removeEventListener("hashchange",S)});function S(){u.value&&(u.value=!1,ge(()=>{l.action&&t("action",l.action)}))}const R=()=>{e.closeOnClickModal&&b(l.distinguishCancelAndClose?"close":"cancel")},L=mn(R),T=D=>{if(l.inputType!=="textarea")return D.preventDefault(),b("confirm")},b=D=>{var O;e.boxType==="prompt"&&D==="confirm"&&!z()||(l.action=D,l.beforeClose?(O=l.beforeClose)==null||O.call(l,D,l,S):S())},z=()=>{if(e.boxType==="prompt"){const D=l.inputPattern;if(D&&!D.test(l.inputValue||""))return l.editorErrorMessage=l.inputErrorMessage||a("el.messagebox.error"),l.validateError=!0,!1;const O=l.inputValidator;if(ke(O)){const H=O(l.inputValue);if(H===!1)return l.editorErrorMessage=l.inputErrorMessage||a("el.messagebox.error"),l.validateError=!0,!1;if(It(H))return l.editorErrorMessage=H,l.validateError=!0,!1}}return l.editorErrorMessage="",l.validateError=!1,!0},W=()=>{var D,O;const H=(D=h.value)==null?void 0:D.$refs;return(O=H?.input)!=null?O:H?.textarea},te=()=>{b("close")},q=()=>{e.closeOnPressEscape&&te()};return e.lockScroll&&Jo(u,{ns:r}),{...Xr(l),ns:r,overlayEvent:L,visible:u,hasMessage:d,typeClass:p,contentId:v,inputId:g,btnSize:s,iconComponent:f,confirmButtonClasses:w,rootRef:m,focusStartRef:E,headerRef:C,inputRef:h,isDragging:A,confirmRef:y,doClose:S,handleClose:te,onCloseRequested:q,handleWrapperClick:R,handleInputEnter:T,handleAction:b,t:a}}});function Mi(e,t,n,o,r,s){const a=at("el-icon"),c=at("el-input"),u=at("el-button"),l=at("el-focus-trap"),p=at("el-overlay");return P(),G(mt,{name:"fade-in-linear",onAfterLeave:v=>e.$emit("vanish"),persisted:""},{default:K(()=>[He(X(p,{"z-index":e.zIndex,"overlay-class":[e.ns.is("message-box"),e.modalClass],mask:e.modal},{default:K(()=>[$("div",{role:"dialog","aria-label":e.title,"aria-modal":"true","aria-describedby":e.showInput?void 0:e.contentId,class:_(`${e.ns.namespace.value}-overlay-message-box`),onClick:e.overlayEvent.onClick,onMousedown:e.overlayEvent.onMousedown,onMouseup:e.overlayEvent.onMouseup},[X(l,{loop:"",trapped:e.visible,"focus-trap-el":e.rootRef,"focus-start-el":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:K(()=>[$("div",{ref:"rootRef",class:_([e.ns.b(),e.customClass,e.ns.is("draggable",e.draggable),e.ns.is("dragging",e.isDragging),{[e.ns.m("center")]:e.center}]),style:he(e.customStyle),tabindex:"-1",onClick:Fe(()=>{},["stop"])},[e.title!==null&&e.title!==void 0?(P(),Y("div",{key:0,ref:"headerRef",class:_([e.ns.e("header"),{"show-close":e.showClose}])},[$("div",{class:_(e.ns.e("title"))},[e.iconComponent&&e.center?(P(),G(a,{key:0,class:_([e.ns.e("status"),e.typeClass])},{default:K(()=>[(P(),G(Ne(e.iconComponent)))]),_:1},8,["class"])):ee("v-if",!0),$("span",null,Pe(e.title),1)],2),e.showClose?(P(),Y("button",{key:0,type:"button",class:_(e.ns.e("headerbtn")),"aria-label":e.t("el.messagebox.close"),onClick:v=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),onKeydown:Et(Fe(v=>e.handleAction(e.distinguishCancelAndClose?"close":"cancel"),["prevent"]),["enter"])},[X(a,{class:_(e.ns.e("close"))},{default:K(()=>[(P(),G(Ne(e.closeIcon||"close")))]),_:1},8,["class"])],42,["aria-label","onClick","onKeydown"])):ee("v-if",!0)],2)):ee("v-if",!0),$("div",{id:e.contentId,class:_(e.ns.e("content"))},[$("div",{class:_(e.ns.e("container"))},[e.iconComponent&&!e.center&&e.hasMessage?(P(),G(a,{key:0,class:_([e.ns.e("status"),e.typeClass])},{default:K(()=>[(P(),G(Ne(e.iconComponent)))]),_:1},8,["class"])):ee("v-if",!0),e.hasMessage?(P(),Y("div",{key:1,class:_(e.ns.e("message"))},[U(e.$slots,"default",{},()=>[e.dangerouslyUseHTMLString?(P(),G(Ne(e.showInput?"label":"p"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,["for","innerHTML"])):(P(),G(Ne(e.showInput?"label":"p"),{key:0,for:e.showInput?e.inputId:void 0,textContent:Pe(e.message)},null,8,["for","textContent"]))])],2)):ee("v-if",!0)],2),He($("div",{class:_(e.ns.e("input"))},[X(c,{id:e.inputId,ref:"inputRef",modelValue:e.inputValue,"onUpdate:modelValue":v=>e.inputValue=v,type:e.inputType,placeholder:e.inputPlaceholder,"aria-invalid":e.validateError,class:_({invalid:e.validateError}),onKeydown:Et(e.handleInputEnter,["enter"])},null,8,["id","modelValue","onUpdate:modelValue","type","placeholder","aria-invalid","class","onKeydown"]),$("div",{class:_(e.ns.e("errormsg")),style:he({visibility:e.editorErrorMessage?"visible":"hidden"})},Pe(e.editorErrorMessage),7)],2),[[Xe,e.showInput]])],10,["id"]),$("div",{class:_(e.ns.e("btns"))},[e.showCancelButton?(P(),G(u,{key:0,loading:e.cancelButtonLoading,"loading-icon":e.cancelButtonLoadingIcon,class:_([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:v=>e.handleAction("cancel"),onKeydown:Et(Fe(v=>e.handleAction("cancel"),["prevent"]),["enter"])},{default:K(()=>[Dn(Pe(e.cancelButtonText||e.t("el.messagebox.cancel")),1)]),_:1},8,["loading","loading-icon","class","round","size","onClick","onKeydown"])):ee("v-if",!0),He(X(u,{ref:"confirmRef",type:"primary",loading:e.confirmButtonLoading,"loading-icon":e.confirmButtonLoadingIcon,class:_([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:v=>e.handleAction("confirm"),onKeydown:Et(Fe(v=>e.handleAction("confirm"),["prevent"]),["enter"])},{default:K(()=>[Dn(Pe(e.confirmButtonText||e.t("el.messagebox.confirm")),1)]),_:1},8,["loading","loading-icon","class","round","disabled","size","onClick","onKeydown"]),[[Xe,e.showConfirmButton]])],2)],14,["onClick"])]),_:3},8,["trapped","focus-trap-el","focus-start-el","onReleaseRequested"])],42,["aria-label","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["z-index","overlay-class","mask"]),[[Xe,e.visible]])]),_:3},8,["onAfterLeave"])}var Ii=J(Pi,[["render",Mi],["__file","index.vue"]]);const vt=new Map,_i=e=>{let t=document.body;return e.appendTo&&(It(e.appendTo)&&(t=document.querySelector(e.appendTo)),Oe(e.appendTo)&&(t=e.appendTo),Oe(t)||(t=document.body)),t},$i=(e,t,n=null)=>{const o=X(Ii,e,ke(e.message)||ut(e.message)?{default:ke(e.message)?e.message:()=>e.message}:null);return o.appContext=n,wo(o,t),_i(e).appendChild(t.firstElementChild),o.component},Di=()=>document.createElement("div"),Ni=(e,t)=>{const n=Di();e.onVanish=()=>{wo(null,n),vt.delete(r)},e.onAction=s=>{const a=vt.get(r);let c;e.showInput?c={value:r.inputValue,action:s}:c=s,e.callback?e.callback(c,o.proxy):s==="cancel"||s==="close"?e.distinguishCancelAndClose&&s!=="cancel"?a.reject("close"):a.reject("cancel"):a.resolve(c)};const o=$i(e,n,t),r=o.proxy;for(const s in e)Nn(e,s)&&!Nn(r.$props,s)&&(s==="closeIcon"&&Ve(e[s])?r[s]=Vt(e[s]):r[s]=e[s]);return r.visible=!0,r};function st(e,t=null){if(!ie)return Promise.reject();let n;return It(e)||ut(e)?e={message:e}:n=e.callback,new Promise((o,r)=>{const s=Ni(e,t??st._context);vt.set(s,{options:e,callback:n,resolve:o,reject:r})})}const Fi=["alert","confirm","prompt"],zi={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};Fi.forEach(e=>{st[e]=Hi(e)});function Hi(e){return(t,n,o,r)=>{let s="";return Ve(n)?(o=n,s=""):mo(n)?s="":s=n,st(Object.assign({title:s,message:t,type:"",...zi[e]},o,{boxType:e}),r)}}st.close=()=>{vt.forEach((e,t)=>{t.doClose()}),vt.clear()};st._context=null;const Le=st;Le.install=e=>{Le._context=e._context,e.config.globalProperties.$msgbox=Le,e.config.globalProperties.$messageBox=Le,e.config.globalProperties.$alert=Le.alert,e.config.globalProperties.$confirm=Le.confirm,e.config.globalProperties.$prompt=Le.prompt};const nu=Le;export{Xi as C,Go as E,ii as a,Ui as b,nn as c,ui as d,xo as e,kt as f,Gi as g,Wo as h,qi as i,eu as j,Wi as k,Yi as l,Zi as m,tu as n,Ji as o,nu as p,rn as q,Bi as r,Qi as s,Ft as t,ci as u,xi as v,Gl as w,Rs as x}; diff --git a/static/app/assets/el-overlay-hge8bsIn.js b/static/app/assets/el-overlay-hge8bsIn.js new file mode 100644 index 0000000..7896d4e --- /dev/null +++ b/static/app/assets/el-overlay-hge8bsIn.js @@ -0,0 +1 @@ +import{i as j,z as le,g as O,A as Y,B as I,L as K,C as l,W as be,J as at,M as Ye,c as ae,o as U,as as lt,K as oe,I as ve,ad as pe,p as z,G as rt,Y as ut,Q as Ae,h as _,j as me,k as ne,l as Ce,n as R,t as it,s as M,D as ct,U as He,a3 as dt,at as ft,V as vt,X as pt,a0 as Oe,S as mt,T as Et,O as Ie,w as yt,au as bt,R as Ct}from"./vendor-vue-WbiK4TmU.js";import{r as V,_ as re,L as Tt,b as ue,t as W,d as ze,u as ge,y as gt,B as Te,C as ht,aT as wt,E as St,v as _t,G as Lt,F as At,Z as Ot,H as It,aP as kt,aK as Dt,aU as Ft,K as ke}from"./base-xgxQQEpV.js";import{f as Nt,U as Ve,t as Pt}from"./aria-DLpFpzDe.js";import{g as We,b as je}from"./http-BoPYlvwK.js";import{b as De,a as Bt}from"./index-CoYtSGUZ.js";let x;const Rt=e=>{var o;if(!V)return 0;if(x!==void 0)return x;const t=document.createElement("div");t.className=`${e}-scrollbar__wrap`,t.style.visibility="hidden",t.style.width="100px",t.style.position="absolute",t.style.top="-9999px",document.body.appendChild(t);const n=t.offsetWidth;t.style.overflow="scroll";const a=document.createElement("div");a.style.width="100%",t.appendChild(a);const u=a.offsetWidth;return(o=t.parentNode)==null||o.removeChild(t),x=n-u,x};function wo(e,o){if(!V)return;if(!o){e.scrollTop=0;return}const t=[];let n=o.offsetParent;for(;n!==null&&e!==n&&e.contains(n);)t.push(n),n=n.offsetParent;const a=o.offsetTop+t.reduce((v,b)=>v+b.offsetTop,0),u=a+o.offsetHeight,c=e.scrollTop,y=c+e.clientHeight;ay&&(e.scrollTop=u-e.clientHeight)}const Ee="focus-trap.focus-after-trapped",ye="focus-trap.focus-after-released",Mt="focus-trap.focusout-prevented",Fe={cancelable:!0,bubbles:!1},$t={cancelable:!0,bubbles:!1},Ne="focusAfterTrapped",Pe="focusAfterReleased",Ge=Symbol("elFocusTrap"),he=O(),ie=O(0),we=O(0);let J=0;const Xe=e=>{const o=[],t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const a=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||a?NodeFilter.FILTER_SKIP:n.tabIndex>=0||n===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)o.push(t.currentNode);return o},Be=(e,o)=>{for(const t of e)if(!Ut(t,o))return t},Ut=(e,o)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(o&&e===o)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},Kt=e=>{const o=Xe(e),t=Be(o,e),n=Be(o.reverse(),e);return[t,n]},Yt=e=>e instanceof HTMLInputElement&&"select"in e,$=(e,o)=>{if(e){const t=document.activeElement;Nt(e,{preventScroll:!0}),we.value=window.performance.now(),e!==t&&Yt(e)&&o&&e.select()}};function Re(e,o){const t=[...e],n=e.indexOf(o);return n!==-1&&t.splice(n,1),t}const Ht=()=>{let e=[];return{push:n=>{const a=e[0];a&&n!==a&&a.pause(),e=Re(e,n),e.unshift(n)},remove:n=>{var a,u;e=Re(e,n),(u=(a=e[0])==null?void 0:a.resume)==null||u.call(a)}}},zt=(e,o=!1)=>{const t=document.activeElement;for(const n of e)if($(n,o),document.activeElement!==t)return},Me=Ht(),Vt=()=>ie.value>we.value,Q=()=>{he.value="pointer",ie.value=window.performance.now()},$e=()=>{he.value="keyboard",ie.value=window.performance.now()},Wt=()=>(j(()=>{J===0&&(document.addEventListener("mousedown",Q),document.addEventListener("touchstart",Q),document.addEventListener("keydown",$e)),J++}),le(()=>{J--,J<=0&&(document.removeEventListener("mousedown",Q),document.removeEventListener("touchstart",Q),document.removeEventListener("keydown",$e))}),{focusReason:he,lastUserFocusTimestamp:ie,lastAutomatedFocusTimestamp:we}),ee=e=>new CustomEvent(Mt,{...$t,detail:e});let H=[];const Ue=e=>{We(e)===je.esc&&H.forEach(t=>t(e))},jt=e=>{j(()=>{H.length===0&&document.addEventListener("keydown",Ue),V&&H.push(e)}),le(()=>{H=H.filter(o=>o!==e),H.length===0&&V&&document.removeEventListener("keydown",Ue)})},Gt=Y({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[Ne,Pe,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:o}){const t=O();let n,a;const{focusReason:u}=Wt();jt(s=>{e.trapped&&!c.paused&&o("release-requested",s)});const c={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},y=s=>{if(!e.loop&&!e.trapped||c.paused)return;const{altKey:d,ctrlKey:m,metaKey:p,currentTarget:i,shiftKey:w}=s,{loop:L}=e,B=We(s)===je.tab&&!d&&!m&&!p,F=document.activeElement;if(B&&F){const k=i,[A,D]=Kt(k);if(A&&D){if(!w&&F===D){const r=ee({focusReason:u.value});o("focusout-prevented",r),r.defaultPrevented||(s.preventDefault(),L&&$(A,!0))}else if(w&&[A,k].includes(F)){const r=ee({focusReason:u.value});o("focusout-prevented",r),r.defaultPrevented||(s.preventDefault(),L&&$(D,!0))}}else if(F===k){const r=ee({focusReason:u.value});o("focusout-prevented",r),r.defaultPrevented||s.preventDefault()}}};Ye(Ge,{focusTrapRef:t,onKeydown:y}),K(()=>e.focusTrapEl,s=>{s&&(t.value=s)},{immediate:!0}),K([t],([s],[d])=>{s&&(s.addEventListener("keydown",y),s.addEventListener("focusin",g),s.addEventListener("focusout",h)),d&&(d.removeEventListener("keydown",y),d.removeEventListener("focusin",g),d.removeEventListener("focusout",h))});const v=s=>{o(Ne,s)},b=s=>o(Pe,s),g=s=>{const d=l(t);if(!d)return;const m=s.target,p=s.relatedTarget,i=m&&d.contains(m);e.trapped||p&&d.contains(p)||(n=p),i&&o("focusin",s),!c.paused&&e.trapped&&(i?a=m:$(a,!0))},h=s=>{const d=l(t);if(!(c.paused||!d))if(e.trapped){const m=s.relatedTarget;!Tt(m)&&!d.contains(m)&&setTimeout(()=>{if(!c.paused&&e.trapped){const p=ee({focusReason:u.value});o("focusout-prevented",p),p.defaultPrevented||$(a,!0)}},0)}else{const m=s.target;m&&d.contains(m)||o("focusout",s)}};async function T(){await be();const s=l(t);if(s){Me.push(c);const d=s.contains(document.activeElement)?n:document.activeElement;if(n=d,!s.contains(d)){const p=new Event(Ee,Fe);s.addEventListener(Ee,v),s.dispatchEvent(p),p.defaultPrevented||be(()=>{let i=e.focusStartEl;at(i)||($(i),document.activeElement!==i&&(i="first")),i==="first"&&zt(Xe(s),!0),(document.activeElement===d||i==="container")&&$(s)})}}}function C(){const s=l(t);if(s){s.removeEventListener(Ee,v);const d=new CustomEvent(ye,{...Fe,detail:{focusReason:u.value}});s.addEventListener(ye,b),s.dispatchEvent(d),!d.defaultPrevented&&(u.value=="keyboard"||!Vt()||s.contains(document.activeElement))&&$(n??document.body),s.removeEventListener(ye,b),Me.remove(c),n=null,a=null}}return j(()=>{e.trapped&&T(),K(()=>e.trapped,s=>{s?T():C()})}),le(()=>{e.trapped&&C(),t.value&&(t.value.removeEventListener("keydown",y),t.value.removeEventListener("focusin",g),t.value.removeEventListener("focusout",h),t.value=void 0),n=null,a=null}),{onKeydown:y}}});function Xt(e,o,t,n,a,u){return I(e.$slots,"default",{handleKeydown:e.onKeydown})}var qt=re(Gt,[["render",Xt],["__file","focus-trap.vue"]]);const qe=ue({to:{type:W([String,Object]),required:!0},disabled:Boolean}),Zt=Y({__name:"teleport",props:qe,setup(e){return(o,t)=>o.disabled?I(o.$slots,"default",{key:0}):(U(),ae(lt,{key:1,to:o.to},[I(o.$slots,"default")],8,["to"]))}});var xt=re(Zt,[["__file","teleport.vue"]]);const Jt=ze(xt);var se=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(se||{});const te=e=>{const o=oe(e)?e:[e],t=[];return o.forEach(n=>{var a;oe(n)?t.push(...te(n)):ve(n)&&((a=n.component)!=null&&a.subTree)?t.push(n,...te(n.component.subTree)):ve(n)&&oe(n.children)?t.push(...te(n.children)):ve(n)&&n.shapeFlag===2?t.push(...te(n.type())):t.push(n)}),t},Ze=e=>{if(!e)return{onClick:pe,onMousedown:pe,onMouseup:pe};let o=!1,t=!1;return{onClick:c=>{o&&t&&e(c),o=t=!1},onMousedown:c=>{o=c.target===c.currentTarget},onMouseup:c=>{t=c.target===c.currentTarget}}},Qt=ue({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:W([String,Array,Object])},zIndex:{type:W([String,Number])}}),eo={click:e=>e instanceof MouseEvent},to="overlay";var oo=Y({name:"ElOverlay",props:Qt,emits:eo,setup(e,{slots:o,emit:t}){const n=ge(to),a=v=>{t("click",v)},{onClick:u,onMousedown:c,onMouseup:y}=Ze(e.customMaskEvent?void 0:a);return()=>e.mask?z("div",{class:[n.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:u,onMousedown:c,onMouseup:y},[I(o,"default")],se.STYLE|se.CLASS|se.PROPS,["onClick","onMouseup","onMousedown"]):rt("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[I(o,"default")])}});const no=oo,xe=Symbol("dialogInjectionKey"),Ke="dialog-fade",Je=ue({center:Boolean,alignCenter:{type:Boolean,default:void 0},closeIcon:{type:gt},draggable:{type:Boolean,default:void 0},overflow:{type:Boolean,default:void 0},fullscreen:Boolean,headerClass:String,bodyClass:String,footerClass:String,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),so={close:()=>!0},ao=(e,o,t,n)=>{const a={offsetX:0,offsetY:0},u=O(!1),c=(T,C)=>{if(e.value){const{offsetX:s,offsetY:d}=a,m=e.value.getBoundingClientRect(),p=m.left,i=m.top,w=m.width,L=m.height,P=document.documentElement.clientWidth,B=document.documentElement.clientHeight,F=-p+s,k=-i+d,A=P-p-w+s,D=B-i-(L{const C=T.clientX,s=T.clientY,{offsetX:d,offsetY:m}=a,p=w=>{u.value||(u.value=!0);const L=d+w.clientX-C,P=m+w.clientY-s;c(L,P)},i=()=>{u.value=!1,document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",i)};document.addEventListener("mousemove",p),document.addEventListener("mouseup",i)},v=()=>{o.value&&e.value&&(o.value.addEventListener("mousedown",y),window.addEventListener("resize",h))},b=()=>{o.value&&e.value&&(o.value.removeEventListener("mousedown",y),window.removeEventListener("resize",h))},g=()=>{a.offsetX=0,a.offsetY=0,e.value&&(e.value.style.transform="")},h=()=>{const{offsetX:T,offsetY:C}=a;c(T,C)};return j(()=>{ut(()=>{t.value?v():b()})}),le(()=>{b()}),{isDragging:u,resetPosition:g,updatePosition:h}},lo=(...e)=>o=>{e.forEach(t=>{t.value=o})},ro=Y({name:"ElDialogContent"}),uo=Y({...ro,props:Je,emits:so,setup(e,{expose:o}){const t=e,{t:n}=ht(),{Close:a}=wt,{dialogRef:u,headerRef:c,bodyId:y,ns:v,style:b}=Ae(xe),{focusTrapRef:g}=Ae(Ge),h=lo(g,u),T=_(()=>!!t.draggable),C=_(()=>!!t.overflow),{resetPosition:s,updatePosition:d,isDragging:m}=ao(u,c,T,C),p=_(()=>[v.b(),v.is("fullscreen",t.fullscreen),v.is("draggable",T.value),v.is("dragging",m.value),v.is("align-center",!!t.alignCenter),{[v.m("center")]:t.center}]);return o({resetPosition:s,updatePosition:d}),(i,w)=>(U(),me("div",{ref:l(h),class:R(l(p)),style:He(l(b)),tabindex:"-1"},[ne("header",{ref_key:"headerRef",ref:c,class:R([l(v).e("header"),i.headerClass,{"show-close":i.showClose}])},[I(i.$slots,"header",{},()=>[ne("span",{role:"heading","aria-level":i.ariaLevel,class:R(l(v).e("title"))},it(i.title),11,["aria-level"])]),i.showClose?(U(),me("button",{key:0,"aria-label":l(n)("el.dialog.close"),class:R(l(v).e("headerbtn")),type:"button",onClick:L=>i.$emit("close")},[z(l(St),{class:R(l(v).e("close"))},{default:M(()=>[(U(),ae(ct(i.closeIcon||l(a))))]),_:1},8,["class"])],10,["aria-label","onClick"])):Ce("v-if",!0)],2),ne("div",{id:l(y),class:R([l(v).e("body"),i.bodyClass])},[I(i.$slots,"default")],10,["id"]),i.$slots.footer?(U(),me("footer",{key:0,class:R([l(v).e("footer"),i.footerClass])},[I(i.$slots,"footer")],2)):Ce("v-if",!0)],6))}});var io=re(uo,[["__file","dialog-content.vue"]]);const co=ue({...Je,appendToBody:Boolean,appendTo:{type:qe.to.type,default:"body"},beforeClose:{type:W(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},modalPenetrable:Boolean,openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,headerClass:String,bodyClass:String,footerClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:Boolean,headerAriaLevel:{type:String,default:"2"},transition:{type:W([String,Object]),default:void 0}}),fo={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[Ve]:e=>_t(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},vo=(e,o={})=>{dt(e)||Pt("[useLockscreen]","You need to pass a ref param to this function");const t=o.ns||ge("popup"),n=_(()=>t.bm("parent","hidden"));let a=0,u=!1,c="0";const y=()=>{setTimeout(()=>{typeof document>"u"||u&&document&&(document.body.style.width=c,It(document.body,n.value))},200)};K(e,v=>{if(!v){y();return}u=!Lt(document.body,n.value),u&&(c=document.body.style.width,At(document.body,n.value)),a=Rt(t.namespace.value);const b=document.documentElement.clientHeight0&&(b||g==="scroll")&&u&&(document.body.style.width=`calc(100% - ${a}px)`)}),ft(()=>y())},po=(e,o)=>{var t;const a=vt().emit,{nextZIndex:u}=kt();let c="";const y=De(),v=De(),b=O(!1),g=O(!1),h=O(!1),T=O((t=e.zIndex)!=null?t:u());let C,s;const d=Dt(),m=_(()=>{var f,E;return(E=(f=d.value)==null?void 0:f.namespace)!=null?E:Ft}),p=_(()=>{var f;return(f=d.value)==null?void 0:f.dialog}),i=_(()=>{const f={},E=`--${m.value}-dialog`;if(!e.fullscreen){e.top&&(f[`${E}-margin-top`]=e.top);const S=Te(e.width);S&&(f[`${E}-width`]=S)}return f}),w=_(()=>{var f,E,S;return((S=(E=e.draggable)!=null?E:(f=p.value)==null?void 0:f.draggable)!=null?S:!1)&&!e.fullscreen}),L=_(()=>{var f,E,S;return(S=(E=e.alignCenter)!=null?E:(f=p.value)==null?void 0:f.alignCenter)!=null?S:!1}),P=_(()=>{var f,E,S;return(S=(E=e.overflow)!=null?E:(f=p.value)==null?void 0:f.overflow)!=null?S:!1}),B=_(()=>L.value?{display:"flex"}:{}),F=_(()=>{var f,E,S;const de=(S=(E=e.transition)!=null?E:(f=p.value)==null?void 0:f.transition)!=null?S:Ke,nt={name:de,onAfterEnter:k,onBeforeLeave:D,onAfterLeave:A};if(pt(de)){const N={...de},fe=(Z,st)=>_e=>{oe(Z)?Z.forEach(Le=>{Oe(Le)&&Le(_e)}):Oe(Z)&&Z(_e),st()};return N.onAfterEnter=fe(N.onAfterEnter,k),N.onBeforeLeave=fe(N.onBeforeLeave,D),N.onAfterLeave=fe(N.onAfterLeave,A),N.name||(N.name=Ke),N}return nt});function k(){a("opened")}function A(){a("closed"),a(Ve,!1),e.destroyOnClose&&(h.value=!1)}function D(){a("close")}function G(){s?.(),C?.(),e.openDelay&&e.openDelay>0?{stop:C}=ke(()=>Se(),e.openDelay):Se()}function r(){C?.(),s?.(),e.closeDelay&&e.closeDelay>0?{stop:s}=ke(()=>ce(),e.closeDelay):ce()}function X(){function f(E){E||(g.value=!0,b.value=!1)}e.beforeClose?e.beforeClose(f):r()}function q(){e.closeOnClickModal&&X()}function Se(){V&&(b.value=!0)}function ce(){b.value=!1}function Qe(){a("openAutoFocus")}function et(){a("closeAutoFocus")}function tt(f){var E;((E=f.detail)==null?void 0:E.focusReason)==="pointer"&&f.preventDefault()}e.lockScroll&&vo(b);function ot(){e.closeOnPressEscape&&X()}return K(()=>e.zIndex,()=>{var f;T.value=(f=e.zIndex)!=null?f:u()}),K(()=>e.modelValue,f=>{var E;f?(g.value=!1,G(),h.value=!0,T.value=(E=e.zIndex)!=null?E:u(),be(()=>{a("open"),o.value&&(o.value.parentElement.scrollTop=0,o.value.parentElement.scrollLeft=0,o.value.scrollTop=0)})):b.value&&r()}),K(()=>e.fullscreen,f=>{o.value&&(f?(c=o.value.style.transform,o.value.style.transform=""):o.value.style.transform=c)}),j(()=>{e.modelValue&&(b.value=!0,h.value=!0,G())}),{afterEnter:k,afterLeave:A,beforeLeave:D,handleClose:X,onModalClick:q,close:r,doClose:ce,onOpenAutoFocus:Qe,onCloseAutoFocus:et,onCloseRequested:ot,onFocusoutPrevented:tt,titleId:y,bodyId:v,closed:g,style:i,overlayDialogStyle:B,rendered:h,visible:b,zIndex:T,transitionConfig:F,_draggable:w,_alignCenter:L,_overflow:P}},mo=Y({name:"ElDialog",inheritAttrs:!1}),Eo=Y({...mo,props:co,emits:fo,setup(e,{expose:o}){const t=e,n=mt();Bt({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},_(()=>!!n.title));const a=ge("dialog"),u=O(),c=O(),y=O(),{visible:v,titleId:b,bodyId:g,style:h,overlayDialogStyle:T,rendered:C,transitionConfig:s,zIndex:d,_draggable:m,_alignCenter:p,_overflow:i,handleClose:w,onModalClick:L,onOpenAutoFocus:P,onCloseAutoFocus:B,onCloseRequested:F,onFocusoutPrevented:k}=po(t,u);Ye(xe,{dialogRef:u,headerRef:c,bodyId:g,ns:a,rendered:C,style:h});const A=Ze(L),D=_(()=>t.modalPenetrable&&!t.modal&&!t.fullscreen);return o({visible:v,dialogContentRef:y,resetPosition:()=>{var r;(r=y.value)==null||r.resetPosition()},handleClose:w}),(r,X)=>(U(),ae(l(Jt),{to:r.appendTo,disabled:r.appendTo!=="body"?!1:!r.appendToBody},{default:M(()=>[z(Et,Ie(l(s),{persisted:""}),{default:M(()=>{var q;return[yt(z(l(no),{"custom-mask-event":"",mask:r.modal,"overlay-class":[(q=r.modalClass)!=null?q:"",`${l(a).namespace.value}-modal-dialog`,l(a).is("penetrable",l(D))],"z-index":l(d)},{default:M(()=>[ne("div",{role:"dialog","aria-modal":"true","aria-label":r.title||void 0,"aria-labelledby":r.title?void 0:l(b),"aria-describedby":l(g),class:R(`${l(a).namespace.value}-overlay-dialog`),style:He(l(T)),onClick:l(A).onClick,onMousedown:l(A).onMousedown,onMouseup:l(A).onMouseup},[z(l(qt),{loop:"",trapped:l(v),"focus-start-el":"container",onFocusAfterTrapped:l(P),onFocusAfterReleased:l(B),onFocusoutPrevented:l(k),onReleaseRequested:l(F)},{default:M(()=>[l(C)?(U(),ae(io,Ie({key:0,ref_key:"dialogContentRef",ref:y},r.$attrs,{center:r.center,"align-center":l(p),"close-icon":r.closeIcon,draggable:l(m),overflow:l(i),fullscreen:r.fullscreen,"header-class":r.headerClass,"body-class":r.bodyClass,"footer-class":r.footerClass,"show-close":r.showClose,title:r.title,"aria-level":r.headerAriaLevel,onClose:l(w)}),bt({header:M(()=>[r.$slots.title?I(r.$slots,"title",{key:1}):I(r.$slots,"header",{key:0,close:l(w),titleId:l(b),titleClass:l(a).e("title")})]),default:M(()=>[I(r.$slots,"default")]),_:2},[r.$slots.footer?{name:"footer",fn:M(()=>[I(r.$slots,"footer")])}:void 0]),1040,["center","align-center","close-icon","draggable","overflow","fullscreen","header-class","body-class","footer-class","show-close","title","aria-level","onClose"])):Ce("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,["aria-label","aria-labelledby","aria-describedby","onClick","onMousedown","onMouseup"])]),_:3},8,["mask","overlay-class","z-index"]),[[Ct,l(v)]])]}),_:3},16)]),_:3},8,["to","disabled"]))}});var yo=re(Eo,[["__file","dialog.vue"]]);const So=ze(yo);export{no as E,co as a,qt as b,Jt as c,fo as d,So as e,te as f,ao as g,vo as h,Ze as i,wo as s,qe as t,po as u}; diff --git a/static/app/assets/el-overlay-hkg5a9kt.css b/static/app/assets/el-overlay-hkg5a9kt.css new file mode 100644 index 0000000..a813786 --- /dev/null +++ b/static/app/assets/el-overlay-hkg5a9kt.css @@ -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-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.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}}.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} diff --git a/static/app/assets/el-pagination-BY1uI-wO.js b/static/app/assets/el-pagination-BY1uI-wO.js deleted file mode 100644 index eded6b4..0000000 --- a/static/app/assets/el-pagination-BY1uI-wO.js +++ /dev/null @@ -1 +0,0 @@ -import{b as q,y as J,_ as F,G as A,A as te,aK as ne,t as R,u as j,af as ce,aO as pe,aP as Z,aQ as de,s as M,aR as ge,F as fe,Y as ve,x as be,$ as me,d as Pe}from"./el-button-DWxIvzz-.js";import{A as S,h as P,j as C,o as c,c as B,t as I,s as Y,D as ie,C as a,Q as Ce,g as T,L as U,q as le,F as re,a4 as se,n as N,K as he,k as ee,l as G,m as ye,V as ze,M as Se,G as w}from"./vendor-vue-DxN60LNb.js";import{a as _e,E as ke}from"./el-select-B0VMg2td.js";import{m as oe,E as Ne,C as H,k as xe}from"./http-CdvgQxJu.js";const ue=Symbol("elPaginationKey"),Ee=q({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:J}}),Te={click:e=>e instanceof MouseEvent},Me=S({name:"ElPaginationPrev"}),Be=S({...Me,props:Ee,emits:Te,setup(e){const s=e,{t:l}=A(),p=P(()=>s.disabled||s.currentPage<=1);return(r,d)=>(c(),C("button",{type:"button",class:"btn-prev",disabled:a(p),"aria-label":r.prevText||a(l)("el.pagination.prev"),"aria-disabled":a(p),onClick:b=>r.$emit("click",b)},[r.prevText?(c(),C("span",{key:0},I(r.prevText),1)):(c(),B(a(te),{key:1},{default:Y(()=>[(c(),B(ie(r.prevIcon)))]),_:1}))],8,["disabled","aria-label","aria-disabled","onClick"]))}});var $e=F(Be,[["__file","prev.vue"]]);const we=q({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:J}}),Ie=S({name:"ElPaginationNext"}),qe=S({...Ie,props:we,emits:["click"],setup(e){const s=e,{t:l}=A(),p=P(()=>s.disabled||s.currentPage===s.pageCount||s.pageCount===0);return(r,d)=>(c(),C("button",{type:"button",class:"btn-next",disabled:a(p),"aria-label":r.nextText||a(l)("el.pagination.next"),"aria-disabled":a(p),onClick:b=>r.$emit("click",b)},[r.nextText?(c(),C("span",{key:0},I(r.nextText),1)):(c(),B(a(te),{key:1},{default:Y(()=>[(c(),B(ie(r.nextIcon)))]),_:1}))],8,["disabled","aria-label","aria-disabled","onClick"]))}});var Ae=F(qe,[["__file","next.vue"]]);const X=()=>Ce(ue,{}),Le=q({pageSize:{type:Number,required:!0},pageSizes:{type:R(Array),default:()=>oe([10,20,30,40,50,100])},popperClass:{type:String},popperStyle:{type:R([String,Object])},disabled:Boolean,teleported:Boolean,size:{type:String,values:ne},appendSizeTo:String}),je=S({name:"ElPaginationSizes"}),Fe=S({...je,props:Le,emits:["page-size-change"],setup(e,{emit:s}){const l=e,{t:p}=A(),r=j("pagination"),d=X(),b=T(l.pageSize);U(()=>l.pageSizes,(o,y)=>{if(!ce(o,y)&&he(o)){const u=o.includes(l.pageSize)?l.pageSize:l.pageSizes[0];s("page-size-change",u)}}),U(()=>l.pageSize,o=>{b.value=o});const _=P(()=>l.pageSizes);function k(o){var y;o!==b.value&&(b.value=o,(y=d.handleSizeChange)==null||y.call(d,Number(o)))}return(o,y)=>(c(),C("span",{class:N(a(r).e("sizes"))},[le(a(ke),{"model-value":b.value,disabled:o.disabled,"popper-class":o.popperClass,"popper-style":o.popperStyle,size:o.size,teleported:o.teleported,"validate-event":!1,"append-to":o.appendSizeTo,onChange:k},{default:Y(()=>[(c(!0),C(re,null,se(a(_),u=>(c(),B(a(_e),{key:u,value:u,label:u+a(p)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","popper-style","size","teleported","append-to"])],2))}});var Ke=F(Fe,[["__file","sizes.vue"]]);const Oe=q({size:{type:String,values:ne}}),De=S({name:"ElPaginationJumper"}),Ue=S({...De,props:Oe,setup(e){const{t:s}=A(),l=j("pagination"),{pageCount:p,disabled:r,currentPage:d,changeEvent:b}=X(),_=T(),k=P(()=>{var u;return(u=_.value)!=null?u:d?.value});function o(u){_.value=u?+u:""}function y(u){u=Math.trunc(+u),b?.(u),_.value=void 0}return(u,K)=>(c(),C("span",{class:N(a(l).e("jump")),disabled:a(r)},[ee("span",{class:N([a(l).e("goto")])},I(a(s)("el.pagination.goto")),3),le(a(Ne),{size:u.size,class:N([a(l).e("editor"),a(l).is("in-pagination")]),min:1,max:a(p),disabled:a(r),"model-value":a(k),"validate-event":!1,"aria-label":a(s)("el.pagination.page"),type:"number","onUpdate:modelValue":o,onChange:y},null,8,["size","class","max","disabled","model-value","aria-label"]),ee("span",{class:N([a(l).e("classifier")])},I(a(s)("el.pagination.pageClassifier")),3)],10,["disabled"]))}});var Ve=F(Ue,[["__file","jumper.vue"]]);const We=q({total:{type:Number,default:1e3}}),Ge=S({name:"ElPaginationTotal"}),He=S({...Ge,props:We,setup(e){const{t:s}=A(),l=j("pagination"),{disabled:p}=X();return(r,d)=>(c(),C("span",{class:N(a(l).e("total")),disabled:a(p)},I(a(s)("el.pagination.total",{total:r.total})),11,["disabled"]))}});var Je=F(He,[["__file","total.vue"]]);const Re=q({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),Qe=S({name:"ElPaginationPager"}),Ye=S({...Qe,props:Re,emits:[H],setup(e,{emit:s}){const l=e,p=j("pager"),r=j("icon"),{t:d}=A(),b=T(!1),_=T(!1),k=T(!1),o=T(!1),y=T(!1),u=T(!1),K=P(()=>{const i=l.pagerCount,t=(i-1)/2,n=Number(l.currentPage),v=Number(l.pageCount);let f=!1,z=!1;v>i&&(n>i-t&&(f=!0),n["more","btn-quickprev",r.b(),p.is("disabled",l.disabled)]),E=P(()=>["more","btn-quicknext",r.b(),p.is("disabled",l.disabled)]),g=P(()=>l.disabled?-1:0);U(()=>[l.pageCount,l.pagerCount,l.currentPage],([i,t,n])=>{const v=(t-1)/2;let f=!1,z=!1;i>t&&(f=n>t-v,z=nv&&(n=v)),n!==f&&s(H,n)}return(i,t)=>(c(),C("ul",{class:N(a(p).b()),onClick:W,onKeyup:ye(Q,["enter"])},[i.pageCount>0?(c(),C("li",{key:0,class:N([[a(p).is("active",i.currentPage===1),a(p).is("disabled",i.disabled)],"number"]),"aria-current":i.currentPage===1,"aria-label":a(d)("el.pagination.currentPage",{pager:1}),tabindex:a(g)}," 1 ",10,["aria-current","aria-label","tabindex"])):G("v-if",!0),b.value?(c(),C("li",{key:1,class:N(a(L)),tabindex:a(g),"aria-label":a(d)("el.pagination.prevPages",{pager:i.pagerCount-2}),onMouseenter:n=>O(!0),onMouseleave:n=>k.value=!1,onFocus:n=>V(!0),onBlur:n=>y.value=!1},[(k.value||y.value)&&!i.disabled?(c(),B(a(pe),{key:0})):(c(),B(a(Z),{key:1}))],42,["tabindex","aria-label","onMouseenter","onMouseleave","onFocus","onBlur"])):G("v-if",!0),(c(!0),C(re,null,se(a(K),n=>(c(),C("li",{key:n,class:N([[a(p).is("active",i.currentPage===n),a(p).is("disabled",i.disabled)],"number"]),"aria-current":i.currentPage===n,"aria-label":a(d)("el.pagination.currentPage",{pager:n}),tabindex:a(g)},I(n),11,["aria-current","aria-label","tabindex"]))),128)),_.value?(c(),C("li",{key:2,class:N(a(E)),tabindex:a(g),"aria-label":a(d)("el.pagination.nextPages",{pager:i.pagerCount-2}),onMouseenter:n=>O(),onMouseleave:n=>o.value=!1,onFocus:n=>V(),onBlur:n=>u.value=!1},[(o.value||u.value)&&!i.disabled?(c(),B(a(de),{key:0})):(c(),B(a(Z),{key:1}))],42,["tabindex","aria-label","onMouseenter","onMouseleave","onFocus","onBlur"])):G("v-if",!0),i.pageCount>1?(c(),C("li",{key:3,class:N([[a(p).is("active",i.currentPage===i.pageCount),a(p).is("disabled",i.disabled)],"number"]),"aria-current":i.currentPage===i.pageCount,"aria-label":a(d)("el.pagination.currentPage",{pager:i.pageCount}),tabindex:a(g)},I(i.pageCount),11,["aria-current","aria-label","tabindex"])):G("v-if",!0)],42,["onKeyup"]))}});var Xe=F(Ye,[["__file","pager.vue"]]);const m=e=>typeof e!="number",Ze=q({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>M(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:R(Array),default:()=>oe([10,20,30,40,50,100])},popperClass:{type:String,default:""},popperStyle:{type:R([String,Object])},prevText:{type:String,default:""},prevIcon:{type:J,default:()=>me},nextText:{type:String,default:""},nextIcon:{type:J,default:()=>be},teleported:{type:Boolean,default:!0},small:Boolean,size:ve,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean,appendSizeTo:String}),ea={"update:current-page":e=>M(e),"update:page-size":e=>M(e),"size-change":e=>M(e),change:(e,s)=>M(e)&&M(s),"current-change":e=>M(e),"prev-click":e=>M(e),"next-click":e=>M(e)},ae="ElPagination";var aa=S({name:ae,props:Ze,emits:ea,setup(e,{emit:s,slots:l}){const{t:p}=A(),r=j("pagination"),d=ze().vnode.props||{},b=ge(),_=P(()=>{var t;return e.small?"small":(t=e.size)!=null?t:b.value});fe({from:"small",replacement:"size",version:"3.0.0",scope:"el-pagination",ref:"https://element-plus.org/zh-CN/component/pagination.html"},P(()=>!!e.small));const k="onUpdate:currentPage"in d||"onUpdate:current-page"in d||"onCurrentChange"in d,o="onUpdate:pageSize"in d||"onUpdate:page-size"in d||"onSizeChange"in d,y=P(()=>{if(m(e.total)&&m(e.pageCount)||!m(e.currentPage)&&!k)return!1;if(e.layout.includes("sizes")){if(m(e.pageCount)){if(!m(e.total)&&!m(e.pageSize)&&!o)return!1}else if(!o)return!1}return!0}),u=T(m(e.defaultPageSize)?10:e.defaultPageSize),K=T(m(e.defaultCurrentPage)?1:e.defaultCurrentPage),L=P({get(){return m(e.pageSize)?u.value:e.pageSize},set(t){m(e.pageSize)&&(u.value=t),o&&(s("update:page-size",t),s("size-change",t))}}),E=P(()=>{let t=0;return m(e.pageCount)?m(e.total)||(t=Math.max(1,Math.ceil(e.total/L.value))):t=e.pageCount,t}),g=P({get(){return m(e.currentPage)?K.value:e.currentPage},set(t){let n=t;t<1?n=1:t>E.value&&(n=E.value),m(e.currentPage)&&(K.value=n),k&&(s("update:current-page",n),s("current-change",n))}});U(E,t=>{g.value>t&&(g.value=t)}),U([g,L],t=>{s(H,...t)},{flush:"post"});function O(t){g.value=t}function V(t){L.value=t;const n=E.value;g.value>n&&(g.value=n)}function Q(){e.disabled||(g.value-=1,s("prev-click",g.value))}function W(){e.disabled||(g.value+=1,s("next-click",g.value))}function i(t,n){t&&(t.props||(t.props={}),t.props.class=[t.props.class,n].join(" "))}return Se(ue,{pageCount:E,disabled:P(()=>e.disabled),currentPage:g,changeEvent:O,handleSizeChange:V}),()=>{var t,n;if(!y.value)return xe(ae,p("el.pagination.deprecationWarning")),null;if(!e.layout||e.hideOnSinglePage&&E.value<=1)return null;const v=[],f=[],z=w("div",{class:r.e("rightwrapper")},f),$={prev:w($e,{disabled:e.disabled,currentPage:g.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:Q}),jumper:w(Ve,{size:_.value}),pager:w(Xe,{currentPage:g.value,pageCount:E.value,pagerCount:e.pagerCount,onChange:O,disabled:e.disabled}),next:w(Ae,{disabled:e.disabled,currentPage:g.value,pageCount:E.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:W}),sizes:w(Ke,{pageSize:L.value,pageSizes:e.pageSizes,popperClass:e.popperClass,popperStyle:e.popperStyle,disabled:e.disabled,teleported:e.teleported,size:_.value,appendSizeTo:e.appendSizeTo}),slot:(n=(t=l?.default)==null?void 0:t.call(l))!=null?n:null,total:w(Je,{total:m(e.total)?0:e.total})},h=e.layout.split(",").map(D=>D.trim());let x=!1;return h.forEach(D=>{if(D==="->"){x=!0;return}x?f.push($[D]):v.push($[D])}),i(v[0],r.is("first")),i(v[v.length-1],r.is("last")),x&&f.length>0&&(i(f[0],r.is("first")),i(f[f.length-1],r.is("last")),v.push(z)),w("div",{class:[r.b(),r.is("background",e.background),r.m(_.value)]},v)}}});const ra=Pe(aa);export{ra as E}; diff --git a/static/app/assets/el-pagination-kVJ2XlAP.js b/static/app/assets/el-pagination-kVJ2XlAP.js new file mode 100644 index 0000000..522bf91 --- /dev/null +++ b/static/app/assets/el-pagination-kVJ2XlAP.js @@ -0,0 +1 @@ +import{b as q,y as J,_ as F,C as L,E as te,aB as ne,t as R,u as A,aa as ce,aD as pe,aE as Z,aF as de,s as M,aG as ge,T as fe,x as ve,V as be,d as me}from"./base-xgxQQEpV.js";import{A as S,h as P,j as C,o as c,c as B,t as I,s as X,D as ie,C as a,Q as Pe,g as T,L as O,p as le,F as re,a4 as se,n as k,K as Ce,k as ee,l as G,m as he,V as ye,M as ze,G as $}from"./vendor-vue-WbiK4TmU.js";import{a as Se,E as _e}from"./el-select-CBs1QjJm.js";import{m as oe}from"./http-BoPYlvwK.js";import{E as Ne}from"./el-input-BaZNy9Kg.js";import{C as H,d as ke}from"./aria-DLpFpzDe.js";import{a as xe}from"./index-CoYtSGUZ.js";const ue=Symbol("elPaginationKey"),Ee=q({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:J}}),Te={click:e=>e instanceof MouseEvent},Me=S({name:"ElPaginationPrev"}),Be=S({...Me,props:Ee,emits:Te,setup(e){const s=e,{t:l}=L(),p=P(()=>s.disabled||s.currentPage<=1);return(r,d)=>(c(),C("button",{type:"button",class:"btn-prev",disabled:a(p),"aria-label":r.prevText||a(l)("el.pagination.prev"),"aria-disabled":a(p),onClick:b=>r.$emit("click",b)},[r.prevText?(c(),C("span",{key:0},I(r.prevText),1)):(c(),B(a(te),{key:1},{default:X(()=>[(c(),B(ie(r.prevIcon)))]),_:1}))],8,["disabled","aria-label","aria-disabled","onClick"]))}});var we=F(Be,[["__file","prev.vue"]]);const $e=q({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:J}}),Ie=S({name:"ElPaginationNext"}),qe=S({...Ie,props:$e,emits:["click"],setup(e){const s=e,{t:l}=L(),p=P(()=>s.disabled||s.currentPage===s.pageCount||s.pageCount===0);return(r,d)=>(c(),C("button",{type:"button",class:"btn-next",disabled:a(p),"aria-label":r.nextText||a(l)("el.pagination.next"),"aria-disabled":a(p),onClick:b=>r.$emit("click",b)},[r.nextText?(c(),C("span",{key:0},I(r.nextText),1)):(c(),B(a(te),{key:1},{default:X(()=>[(c(),B(ie(r.nextIcon)))]),_:1}))],8,["disabled","aria-label","aria-disabled","onClick"]))}});var Le=F(qe,[["__file","next.vue"]]);const Y=()=>Pe(ue,{}),je=q({pageSize:{type:Number,required:!0},pageSizes:{type:R(Array),default:()=>oe([10,20,30,40,50,100])},popperClass:{type:String},popperStyle:{type:R([String,Object])},disabled:Boolean,teleported:Boolean,size:{type:String,values:ne},appendSizeTo:String}),Ae=S({name:"ElPaginationSizes"}),Fe=S({...Ae,props:je,emits:["page-size-change"],setup(e,{emit:s}){const l=e,{t:p}=L(),r=A("pagination"),d=Y(),b=T(l.pageSize);O(()=>l.pageSizes,(o,y)=>{if(!ce(o,y)&&Ce(o)){const u=o.includes(l.pageSize)?l.pageSize:l.pageSizes[0];s("page-size-change",u)}}),O(()=>l.pageSize,o=>{b.value=o});const _=P(()=>l.pageSizes);function N(o){var y;o!==b.value&&(b.value=o,(y=d.handleSizeChange)==null||y.call(d,Number(o)))}return(o,y)=>(c(),C("span",{class:k(a(r).e("sizes"))},[le(a(_e),{"model-value":b.value,disabled:o.disabled,"popper-class":o.popperClass,"popper-style":o.popperStyle,size:o.size,teleported:o.teleported,"validate-event":!1,"append-to":o.appendSizeTo,onChange:N},{default:X(()=>[(c(!0),C(re,null,se(a(_),u=>(c(),B(a(Se),{key:u,value:u,label:u+a(p)("el.pagination.pagesize")},null,8,["value","label"]))),128))]),_:1},8,["model-value","disabled","popper-class","popper-style","size","teleported","append-to"])],2))}});var Ke=F(Fe,[["__file","sizes.vue"]]);const De=q({size:{type:String,values:ne}}),Ve=S({name:"ElPaginationJumper"}),Oe=S({...Ve,props:De,setup(e){const{t:s}=L(),l=A("pagination"),{pageCount:p,disabled:r,currentPage:d,changeEvent:b}=Y(),_=T(),N=P(()=>{var u;return(u=_.value)!=null?u:d?.value});function o(u){_.value=u?+u:""}function y(u){u=Math.trunc(+u),b?.(u),_.value=void 0}return(u,K)=>(c(),C("span",{class:k(a(l).e("jump")),disabled:a(r)},[ee("span",{class:k([a(l).e("goto")])},I(a(s)("el.pagination.goto")),3),le(a(Ne),{size:u.size,class:k([a(l).e("editor"),a(l).is("in-pagination")]),min:1,max:a(p),disabled:a(r),"model-value":a(N),"validate-event":!1,"aria-label":a(s)("el.pagination.page"),type:"number","onUpdate:modelValue":o,onChange:y},null,8,["size","class","max","disabled","model-value","aria-label"]),ee("span",{class:k([a(l).e("classifier")])},I(a(s)("el.pagination.pageClassifier")),3)],10,["disabled"]))}});var Ue=F(Oe,[["__file","jumper.vue"]]);const We=q({total:{type:Number,default:1e3}}),Ge=S({name:"ElPaginationTotal"}),He=S({...Ge,props:We,setup(e){const{t:s}=L(),l=A("pagination"),{disabled:p}=Y();return(r,d)=>(c(),C("span",{class:k(a(l).e("total")),disabled:a(p)},I(a(s)("el.pagination.total",{total:r.total})),11,["disabled"]))}});var Je=F(He,[["__file","total.vue"]]);const Re=q({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),Qe=S({name:"ElPaginationPager"}),Xe=S({...Qe,props:Re,emits:[H],setup(e,{emit:s}){const l=e,p=A("pager"),r=A("icon"),{t:d}=L(),b=T(!1),_=T(!1),N=T(!1),o=T(!1),y=T(!1),u=T(!1),K=P(()=>{const i=l.pagerCount,t=(i-1)/2,n=Number(l.currentPage),v=Number(l.pageCount);let f=!1,z=!1;v>i&&(n>i-t&&(f=!0),n["more","btn-quickprev",r.b(),p.is("disabled",l.disabled)]),E=P(()=>["more","btn-quicknext",r.b(),p.is("disabled",l.disabled)]),g=P(()=>l.disabled?-1:0);O(()=>[l.pageCount,l.pagerCount,l.currentPage],([i,t,n])=>{const v=(t-1)/2;let f=!1,z=!1;i>t&&(f=n>t-v,z=nv&&(n=v)),n!==f&&s(H,n)}return(i,t)=>(c(),C("ul",{class:k(a(p).b()),onClick:W,onKeyup:he(Q,["enter"])},[i.pageCount>0?(c(),C("li",{key:0,class:k([[a(p).is("active",i.currentPage===1),a(p).is("disabled",i.disabled)],"number"]),"aria-current":i.currentPage===1,"aria-label":a(d)("el.pagination.currentPage",{pager:1}),tabindex:a(g)}," 1 ",10,["aria-current","aria-label","tabindex"])):G("v-if",!0),b.value?(c(),C("li",{key:1,class:k(a(j)),tabindex:a(g),"aria-label":a(d)("el.pagination.prevPages",{pager:i.pagerCount-2}),onMouseenter:n=>D(!0),onMouseleave:n=>N.value=!1,onFocus:n=>U(!0),onBlur:n=>y.value=!1},[(N.value||y.value)&&!i.disabled?(c(),B(a(pe),{key:0})):(c(),B(a(Z),{key:1}))],42,["tabindex","aria-label","onMouseenter","onMouseleave","onFocus","onBlur"])):G("v-if",!0),(c(!0),C(re,null,se(a(K),n=>(c(),C("li",{key:n,class:k([[a(p).is("active",i.currentPage===n),a(p).is("disabled",i.disabled)],"number"]),"aria-current":i.currentPage===n,"aria-label":a(d)("el.pagination.currentPage",{pager:n}),tabindex:a(g)},I(n),11,["aria-current","aria-label","tabindex"]))),128)),_.value?(c(),C("li",{key:2,class:k(a(E)),tabindex:a(g),"aria-label":a(d)("el.pagination.nextPages",{pager:i.pagerCount-2}),onMouseenter:n=>D(),onMouseleave:n=>o.value=!1,onFocus:n=>U(),onBlur:n=>u.value=!1},[(o.value||u.value)&&!i.disabled?(c(),B(a(de),{key:0})):(c(),B(a(Z),{key:1}))],42,["tabindex","aria-label","onMouseenter","onMouseleave","onFocus","onBlur"])):G("v-if",!0),i.pageCount>1?(c(),C("li",{key:3,class:k([[a(p).is("active",i.currentPage===i.pageCount),a(p).is("disabled",i.disabled)],"number"]),"aria-current":i.currentPage===i.pageCount,"aria-label":a(d)("el.pagination.currentPage",{pager:i.pageCount}),tabindex:a(g)},I(i.pageCount),11,["aria-current","aria-label","tabindex"])):G("v-if",!0)],42,["onKeyup"]))}});var Ye=F(Xe,[["__file","pager.vue"]]);const m=e=>typeof e!="number",Ze=q({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>M(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:["prev","pager","next","jumper","->","total"].join(", ")},pageSizes:{type:R(Array),default:()=>oe([10,20,30,40,50,100])},popperClass:{type:String,default:""},popperStyle:{type:R([String,Object])},prevText:{type:String,default:""},prevIcon:{type:J,default:()=>be},nextText:{type:String,default:""},nextIcon:{type:J,default:()=>ve},teleported:{type:Boolean,default:!0},small:Boolean,size:fe,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean,appendSizeTo:String}),ea={"update:current-page":e=>M(e),"update:page-size":e=>M(e),"size-change":e=>M(e),change:(e,s)=>M(e)&&M(s),"current-change":e=>M(e),"prev-click":e=>M(e),"next-click":e=>M(e)},ae="ElPagination";var aa=S({name:ae,props:Ze,emits:ea,setup(e,{emit:s,slots:l}){const{t:p}=L(),r=A("pagination"),d=ye().vnode.props||{},b=ge(),_=P(()=>{var t;return e.small?"small":(t=e.size)!=null?t:b.value});xe({from:"small",replacement:"size",version:"3.0.0",scope:"el-pagination",ref:"https://element-plus.org/zh-CN/component/pagination.html"},P(()=>!!e.small));const N="onUpdate:currentPage"in d||"onUpdate:current-page"in d||"onCurrentChange"in d,o="onUpdate:pageSize"in d||"onUpdate:page-size"in d||"onSizeChange"in d,y=P(()=>{if(m(e.total)&&m(e.pageCount)||!m(e.currentPage)&&!N)return!1;if(e.layout.includes("sizes")){if(m(e.pageCount)){if(!m(e.total)&&!m(e.pageSize)&&!o)return!1}else if(!o)return!1}return!0}),u=T(m(e.defaultPageSize)?10:e.defaultPageSize),K=T(m(e.defaultCurrentPage)?1:e.defaultCurrentPage),j=P({get(){return m(e.pageSize)?u.value:e.pageSize},set(t){m(e.pageSize)&&(u.value=t),o&&(s("update:page-size",t),s("size-change",t))}}),E=P(()=>{let t=0;return m(e.pageCount)?m(e.total)||(t=Math.max(1,Math.ceil(e.total/j.value))):t=e.pageCount,t}),g=P({get(){return m(e.currentPage)?K.value:e.currentPage},set(t){let n=t;t<1?n=1:t>E.value&&(n=E.value),m(e.currentPage)&&(K.value=n),N&&(s("update:current-page",n),s("current-change",n))}});O(E,t=>{g.value>t&&(g.value=t)}),O([g,j],t=>{s(H,...t)},{flush:"post"});function D(t){g.value=t}function U(t){j.value=t;const n=E.value;g.value>n&&(g.value=n)}function Q(){e.disabled||(g.value-=1,s("prev-click",g.value))}function W(){e.disabled||(g.value+=1,s("next-click",g.value))}function i(t,n){t&&(t.props||(t.props={}),t.props.class=[t.props.class,n].join(" "))}return ze(ue,{pageCount:E,disabled:P(()=>e.disabled),currentPage:g,changeEvent:D,handleSizeChange:U}),()=>{var t,n;if(!y.value)return ke(ae,p("el.pagination.deprecationWarning")),null;if(!e.layout||e.hideOnSinglePage&&E.value<=1)return null;const v=[],f=[],z=$("div",{class:r.e("rightwrapper")},f),w={prev:$(we,{disabled:e.disabled,currentPage:g.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:Q}),jumper:$(Ue,{size:_.value}),pager:$(Ye,{currentPage:g.value,pageCount:E.value,pagerCount:e.pagerCount,onChange:D,disabled:e.disabled}),next:$(Le,{disabled:e.disabled,currentPage:g.value,pageCount:E.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:W}),sizes:$(Ke,{pageSize:j.value,pageSizes:e.pageSizes,popperClass:e.popperClass,popperStyle:e.popperStyle,disabled:e.disabled,teleported:e.teleported,size:_.value,appendSizeTo:e.appendSizeTo}),slot:(n=(t=l?.default)==null?void 0:t.call(l))!=null?n:null,total:$(Je,{total:m(e.total)?0:e.total})},h=e.layout.split(",").map(V=>V.trim());let x=!1;return h.forEach(V=>{if(V==="->"){x=!0;return}x?f.push(w[V]):v.push(w[V])}),i(v[0],r.is("first")),i(v[v.length-1],r.is("last")),x&&f.length>0&&(i(f[0],r.is("first")),i(f[f.length-1],r.is("last")),v.push(z)),$("div",{class:[r.b(),r.is("background",e.background),r.m(_.value)]},v)}}});const ua=me(aa);export{ua as E}; diff --git a/static/app/assets/el-select-B0VMg2td.js b/static/app/assets/el-select-B0VMg2td.js deleted file mode 100644 index 960a3a3..0000000 --- a/static/app/assets/el-select-B0VMg2td.js +++ /dev/null @@ -1 +0,0 @@ -import{E as pt,g as V,h as p,L as A,Q as Te,X as q,ae as ft,V as ke,A as he,w as pe,R as Ae,j as I,o as h,B as M,k as D,t as G,p as de,n as g,C as Pe,a2 as Ke,f as fe,z as Sl,W as j,l as N,U as Ee,i as Ue,K as Q,Y as vt,a0 as ce,ai as bt,J as ht,M as Ol,I as gt,r as Y,a8 as mt,q as ee,s as B,c as F,F as ue,a4 as Ie,O as cl,aj as yt,x as pl,v as St,D as Fe,ak as Ot}from"./vendor-vue-DxN60LNb.js";import{b as Ct,s as wt,v as It,k as Vt,h as fl,q as Et,w as vl,x as Tt,C as kt,g as Dt,i as Rt,l as Mt,f as Lt}from"./el-overlay-C_JJBVfE.js";import{U as K,af as te,b as Cl,_ as De,u as ve,aM as wl,G as $t,ah as Bt,ai as Nt,aj as Wt,ak as Pt,aS as Ft,X as zt,ae as Ht,M as Ve,aT as bl,aU as At,O as Kt,r as Ut,s as jt,ag as Gt,t as H,L as qt,y as hl,a8 as Qt,Y as Xt,A as Yt,d as Jt,B as Il}from"./el-button-DWxIvzz-.js";import{i as le,t as Zt,c as J,D as _t,v as xt,k as gl,g as ml,e as z,U as ne,C as Vl,r as en,F as ln}from"./http-CdvgQxJu.js";function tn(e,a,i,v){for(var c=e.length,f=i+(v?1:-1);v?f--:++f({minWidth:`${Math.max(a.value,El)}px`}));return le(e,()=>{var c,f;a.value=(f=(c=e.value)==null?void 0:c.getBoundingClientRect().width)!=null?f:0}),{calculatorRef:e,calculatorWidth:a,inputStyle:i}}const ze={label:"label",value:"value",disabled:"disabled",options:"options"};function sn(e){const a=V({...ze,...e.props});let i={...e.props};return A(()=>e.props,r=>{te(r,i)||(a.value={...ze,...r},i={...r})},{deep:!0}),{aliasProps:a,getLabel:r=>K(r,a.value.label),getValue:r=>K(r,a.value.value),getDisabled:r=>K(r,a.value.disabled),getOptions:r=>K(r,a.value.options)}}const Tl=Symbol("ElSelectGroup"),Re=Symbol("ElSelect"),He="ElOption",rn=Cl({value:{type:[String,Number,Boolean,Object],required:!0},label:{type:[String,Number]},created:Boolean,disabled:Boolean});function un(e,a){const i=Te(Re);i||Zt(He,"usage: ");const v=Te(Tl,{disabled:!1}),c=p(()=>y(J(i.props.modelValue),e.value)),f=p(()=>{var u;if(i.props.multiple){const C=J((u=i.props.modelValue)!=null?u:[]);return!c.value&&C.length>=i.props.multipleLimit&&i.props.multipleLimit>0}else return!1}),t=p(()=>{var u;return(u=e.label)!=null?u:q(e.value)?"":e.value}),r=p(()=>e.value||e.label||""),m=p(()=>e.disabled||a.groupDisabled||f.value),O=ke(),y=(u=[],C)=>{if(q(e.value)){const E=i.props.valueKey;return u&&u.some(L=>ft(K(L,E))===K(C,E))}else return u&&u.includes(C)},b=()=>{m.value||(i.states.hoveringIndex=i.optionsArray.indexOf(O.proxy))},d=u=>{const C=new RegExp(wt(u),"i");a.visible=C.test(String(t.value))||e.created};return A(()=>t.value,()=>{!e.created&&!i.props.remote&&i.setSelected()}),A(()=>e.value,(u,C)=>{const{remote:E,valueKey:L}=i.props;if((E?u!==C:!te(u,C))&&(i.onOptionDestroy(C,O.proxy),i.onOptionCreate(O.proxy)),!e.created&&!E){if(L&&q(u)&&q(C)&&u[L]===C[L])return;i.setSelected()}}),A(()=>v.disabled,()=>{a.groupDisabled=v.disabled},{immediate:!0}),{select:i,currentLabel:t,currentValue:r,itemSelected:c,isDisabled:m,hoverItem:b,updateOption:d}}const dn=he({name:He,componentName:He,props:rn,setup(e){const a=ve("select"),i=wl(),v=p(()=>[a.be("dropdown","item"),a.is("disabled",Pe(r)),a.is("selected",Pe(t)),a.is("hovering",Pe(d))]),c=fe({index:-1,groupDisabled:!1,visible:!0,hover:!1}),{currentLabel:f,itemSelected:t,isDisabled:r,select:m,hoverItem:O,updateOption:y}=un(e,c),{visible:b,hover:d}=Ke(c),u=ke().proxy;m.onOptionCreate(u),Sl(()=>{const E=u.value;j(()=>{const{selected:L}=m.states,X=L.some(o=>o.value===u.value);m.states.cachedOptions.get(E)===u&&!X&&m.states.cachedOptions.delete(E)}),m.onOptionDestroy(E,u)});function C(){r.value||m.handleOptionSelect(u)}return{ns:a,id:i,containerKls:v,currentLabel:f,itemSelected:t,isDisabled:r,select:m,visible:b,hover:d,states:c,hoverItem:O,updateOption:y,selectOptionClick:C}}});function cn(e,a){return pe((h(),I("li",{id:e.id,class:g(e.containerKls),role:"option","aria-disabled":e.isDisabled||void 0,"aria-selected":e.itemSelected,onMousemove:e.hoverItem,onClick:de(e.selectOptionClick,["stop"])},[M(e.$slots,"default",{},()=>[D("span",null,G(e.currentLabel),1)])],42,["id","aria-disabled","aria-selected","onMousemove","onClick"])),[[Ae,e.visible]])}var je=De(dn,[["render",cn],["__file","option.vue"]]);const pn=he({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=Te(Re),a=ve("select"),i=p(()=>e.props.popperClass),v=p(()=>e.props.multiple),c=p(()=>e.props.fitInputWidth),f=V("");function t(){var r;const m=(r=e.selectRef)==null?void 0:r.offsetWidth;m?f.value=`${m-an}px`:f.value=""}return Ue(()=>{t(),le(e.selectRef,t)}),{ns:a,minWidth:f,popperClass:i,isMultiple:v,isFitInputWidth:c}}});function fn(e,a,i,v,c,f){return h(),I("div",{class:g([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:Ee({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[e.$slots.header?(h(),I("div",{key:0,class:g(e.ns.be("dropdown","header"))},[M(e.$slots,"header")],2)):N("v-if",!0),M(e.$slots,"default"),e.$slots.footer?(h(),I("div",{key:1,class:g(e.ns.be("dropdown","footer"))},[M(e.$slots,"footer")],2)):N("v-if",!0)],6)}var vn=De(pn,[["render",fn],["__file","select-dropdown.vue"]]);const bn=(e,a)=>{const{t:i}=$t(),v=wl(),c=ve("select"),f=ve("input"),t=fe({inputValue:"",options:new Map,cachedOptions:new Map,optionValues:[],selected:[],selectionWidth:0,collapseItemWidth:0,selectedLabel:"",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1}),r=V(),m=V(),O=V(),y=V(),b=V(),d=V(),u=V(),C=V(),E=V(),L=V(),X=V(),o=V(!1),R=V(),T=V(!1),{form:ae,formItem:P}=Bt(),{inputId:U}=Nt(e,{formItemContext:P}),{valueOnClear:qe,isEmptyValue:Z}=Wt(e),{isComposing:Me,handleCompositionStart:kl,handleCompositionUpdate:Dl,handleCompositionEnd:Rl}=_t({afterComposition:l=>ll(l)}),oe=Pt(),{wrapperRef:Qe,isFocused:Le,handleBlur:Ml}=xt(b,{disabled:oe,afterFocus(){e.automaticDropdown&&!o.value&&(o.value=!0,t.menuVisibleOnFocus=!0)},beforeBlur(l){var n,s;return((n=O.value)==null?void 0:n.isFocusInsideContent(l))||((s=y.value)==null?void 0:s.isFocusInsideContent(l))},afterBlur(){var l;o.value=!1,t.menuVisibleOnFocus=!1,e.validateEvent&&((l=P?.validate)==null||l.call(P,"blur").catch(n=>gl()))}}),$e=p(()=>Q(e.modelValue)?e.modelValue.length>0:!Z(e.modelValue)),Ll=p(()=>{var l;return(l=ae?.statusIcon)!=null?l:!1}),$l=p(()=>e.clearable&&!oe.value&&$e.value&&(Le.value||t.inputHovering)),Xe=p(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),Bl=p(()=>c.is("reverse",!!(Xe.value&&o.value))),Be=p(()=>P?.validateState||""),Nl=p(()=>Be.value&&Ft[Be.value]),Wl=p(()=>e.remote?e.debounce:0),Pl=p(()=>e.remote&&!t.inputValue&&t.options.size===0),Fl=p(()=>e.loading?e.loadingText||i("el.select.loading"):e.filterable&&t.inputValue&&t.options.size>0&&se.value===0?e.noMatchText||i("el.select.noMatch"):t.options.size===0?e.noDataText||i("el.select.noData"):null),se=p(()=>k.value.filter(l=>l.visible).length),k=p(()=>{const l=Array.from(t.options.values()),n=[];return t.optionValues.forEach(s=>{const S=l.findIndex(w=>w.value===s);S>-1&&n.push(l[S])}),n.length>=l.length?n:l}),zl=p(()=>Array.from(t.cachedOptions.values())),Hl=p(()=>{const l=k.value.filter(n=>!n.created).some(n=>n.currentLabel===t.inputValue);return e.filterable&&e.allowCreate&&t.inputValue!==""&&!l}),Ye=()=>{e.filterable&&ce(e.filterMethod)||e.filterable&&e.remote&&ce(e.remoteMethod)||k.value.forEach(l=>{var n;(n=l.updateOption)==null||n.call(l,t.inputValue)})},Je=zt(),Al=p(()=>["small"].includes(Je.value)?"small":"default"),Ze=p({get(){return o.value&&(e.loading||!Pl.value)&&(!T.value||!Ht(t.previousQuery))},set(l){o.value=l}}),Kl=p(()=>{if(e.multiple&&!Ve(e.modelValue))return J(e.modelValue).length===0&&!t.inputValue;const l=Q(e.modelValue)?e.modelValue[0]:e.modelValue;return e.filterable||Ve(l)?!t.inputValue:!0}),Ul=p(()=>{var l;const n=(l=e.placeholder)!=null?l:i("el.select.placeholder");return e.multiple||!$e.value?n:t.selectedLabel}),jl=p(()=>bl?null:"mouseenter");A(()=>e.modelValue,(l,n)=>{e.multiple&&e.filterable&&!e.reserveKeyword&&(t.inputValue="",ge("")),me(),!te(l,n)&&e.validateEvent&&P?.validate("change").catch(s=>gl())},{flush:"post",deep:!0}),A(()=>o.value,l=>{l?ge(t.inputValue):(t.inputValue="",t.previousQuery=null,t.isBeforeHide=!0)}),A(()=>t.options.entries(),()=>{Ut&&(me(),e.defaultFirstOption&&(e.filterable||e.remote)&&se.value&&_e())},{flush:"post"}),A([()=>t.hoveringIndex,k],([l])=>{jt(l)&&l>-1?R.value=k.value[l]||{}:R.value={},k.value.forEach(n=>{n.hover=R.value===n})}),vt(()=>{t.isBeforeHide||Ye()});const ge=l=>{t.previousQuery===l||Me.value||(t.previousQuery=l,e.filterable&&ce(e.filterMethod)?e.filterMethod(l):e.filterable&&e.remote&&ce(e.remoteMethod)&&e.remoteMethod(l),e.defaultFirstOption&&(e.filterable||e.remote)&&se.value?j(_e):j(Gl))},_e=()=>{const l=k.value.filter(w=>w.visible&&!w.disabled&&!w.states.groupDisabled),n=l.find(w=>w.created),s=l[0],S=k.value.map(w=>w.value);t.hoveringIndex=sl(S,n||s)},me=()=>{if(e.multiple)t.selectedLabel="";else{const n=Q(e.modelValue)?e.modelValue[0]:e.modelValue,s=Ne(n);t.selectedLabel=s.currentLabel,t.selected=[s];return}const l=[];Ve(e.modelValue)||J(e.modelValue).forEach(n=>{l.push(Ne(n))}),t.selected=l},Ne=l=>{let n;const s=bt(l);for(let $=t.cachedOptions.size-1;$>=0;$--){const W=zl.value[$];if(s?K(W.value,e.valueKey)===K(l,e.valueKey):W.value===l){n={index:k.value.filter(x=>!x.created).indexOf(W),value:l,currentLabel:W.currentLabel,get isDisabled(){return W.isDisabled}};break}}if(n)return n;const S=s?l.label:l??"";return{index:-1,value:l,currentLabel:S}},Gl=()=>{const l=t.selected.length;if(l>0){const n=t.selected[l-1];t.hoveringIndex=k.value.findIndex(s=>Se(n)===Se(s))}else t.hoveringIndex=-1},ql=()=>{t.selectionWidth=Number.parseFloat(window.getComputedStyle(m.value).width)},Ql=()=>{t.collapseItemWidth=L.value.getBoundingClientRect().width},We=()=>{var l,n;(n=(l=O.value)==null?void 0:l.updatePopper)==null||n.call(l)},xe=()=>{var l,n;(n=(l=y.value)==null?void 0:l.updatePopper)==null||n.call(l)},el=()=>{t.inputValue.length>0&&!o.value&&(o.value=!0),ge(t.inputValue)},ll=l=>{if(t.inputValue=l.target.value,e.remote)T.value=!0,tl();else return el()},tl=At(()=>{el(),T.value=!1},Wl),ie=l=>{te(e.modelValue,l)||a(Vl,l)},Xl=l=>nn(l,n=>{const s=t.cachedOptions.get(n);return!s?.disabled&&!s?.states.groupDisabled}),nl=l=>{const n=ml(l);if(e.multiple&&n!==z.delete&&l.target.value.length<=0){const s=J(e.modelValue).slice(),S=Xl(s);if(S<0)return;const w=s[S];s.splice(S,1),a(ne,s),ie(s),a("remove-tag",w)}},Yl=(l,n)=>{const s=t.selected.indexOf(n);if(s>-1&&!oe.value){const S=J(e.modelValue).slice();S.splice(s,1),a(ne,S),ie(S),a("remove-tag",n.value)}l.stopPropagation(),ye()},al=l=>{l.stopPropagation();const n=e.multiple?[]:qe.value;if(e.multiple)for(const s of t.selected)s.isDisabled&&n.push(s.value);a(ne,n),ie(n),t.hoveringIndex=-1,o.value=!1,a("clear"),ye()},ol=l=>{var n;if(e.multiple){const s=J((n=e.modelValue)!=null?n:[]).slice(),S=sl(s,l);S>-1?s.splice(S,1):(e.multipleLimit<=0||s.length{re(l)})},sl=(l,n)=>Ve(n)?-1:q(n.value)?l.findIndex(s=>te(K(s,e.valueKey),Se(n))):l.indexOf(n.value),re=l=>{var n,s,S,w,$;const W=Q(l)?l[l.length-1]:l;let _=null;if(!Kt(W?.value)){const x=k.value.filter(ct=>ct.value===W.value);x.length>0&&(_=x[0].$el)}if(O.value&&_){const x=(w=(S=(s=(n=O.value)==null?void 0:n.popperRef)==null?void 0:s.contentRef)==null?void 0:S.querySelector)==null?void 0:w.call(S,`.${c.be("dropdown","wrap")}`);x&&It(x,_)}($=X.value)==null||$.handleScroll()},Jl=l=>{t.options.set(l.value,l),t.cachedOptions.set(l.value,l)},Zl=(l,n)=>{t.options.get(l)===n&&t.options.delete(l)},_l=p(()=>{var l,n;return(n=(l=O.value)==null?void 0:l.popperRef)==null?void 0:n.contentRef}),xl=()=>{t.isBeforeHide=!1,j(()=>{var l;(l=X.value)==null||l.update(),re(t.selected)})},ye=()=>{var l;(l=b.value)==null||l.focus()},et=()=>{var l;if(o.value){o.value=!1,j(()=>{var n;return(n=b.value)==null?void 0:n.blur()});return}(l=b.value)==null||l.blur()},lt=l=>{al(l)},tt=l=>{if(o.value=!1,Le.value){const n=new FocusEvent("blur",l);j(()=>Ml(n))}},il=()=>{t.inputValue.length>0?t.inputValue="":o.value=!1},rl=l=>{var n;oe.value||e.filterable&&o.value&&l&&!((n=u.value)!=null&&n.contains(l.target))||(bl&&(t.inputHovering=!0),t.menuVisibleOnFocus?t.menuVisibleOnFocus=!1:o.value=!o.value)},ul=()=>{if(!o.value)rl();else{const l=k.value[t.hoveringIndex];l&&!l.isDisabled&&ol(l)}},Se=l=>q(l.value)?K(l.value,e.valueKey):l.value,nt=p(()=>k.value.filter(l=>l.visible).every(l=>l.isDisabled)),at=p(()=>e.multiple?e.collapseTags?t.selected.slice(0,e.maxCollapseTags):t.selected:[]),ot=p(()=>e.multiple?e.collapseTags?t.selected.slice(e.maxCollapseTags):[]:[]),Oe=l=>{if(!o.value){o.value=!0;return}if(!(t.options.size===0||se.value===0||Me.value)&&!nt.value){l==="next"?(t.hoveringIndex++,t.hoveringIndex===t.options.size&&(t.hoveringIndex=0)):l==="prev"&&(t.hoveringIndex--,t.hoveringIndex<0&&(t.hoveringIndex=t.options.size-1));const n=k.value[t.hoveringIndex];(n.isDisabled||!n.visible)&&Oe(l),j(()=>re(R.value))}},dl=(l,n,s,S)=>{for(let w=n;w>=0&&w{var s;const S=t.options.size;if(S===0)return;const w=Vt(l,0,S-1),$=k.value,W=n==="up"?-1:1,_=(s=dl($,w,W,S))!=null?s:dl($,w-W,-W,S);_!=null&&(t.hoveringIndex=_,j(()=>re(R.value)))},st=l=>{const n=ml(l);let s=!0;switch(n){case z.up:Oe("prev");break;case z.down:Oe("next");break;case z.enter:case z.numpadEnter:Me.value||ul();break;case z.esc:il();break;case z.backspace:s=!1,nl(l);return;case z.home:if(!o.value)return;Ce(0,"down");break;case z.end:if(!o.value)return;Ce(t.options.size-1,"up");break;case z.pageUp:if(!o.value)return;Ce(t.hoveringIndex-10,"up");break;case z.pageDown:if(!o.value)return;Ce(t.hoveringIndex+10,"down");break;default:s=!1;break}s&&(l.preventDefault(),l.stopPropagation())},it=()=>{if(!m.value)return 0;const l=window.getComputedStyle(m.value);return Number.parseFloat(l.gap||"6px")},rt=p(()=>{const l=it(),n=e.filterable?l+El:0;return{maxWidth:`${L.value&&e.maxCollapseTags===1?t.selectionWidth-t.collapseItemWidth-l-n:t.selectionWidth-n}px`}}),ut=p(()=>({maxWidth:`${t.selectionWidth}px`})),dt=l=>{a("popup-scroll",l)};le(m,ql),le(Qe,We),le(E,xe),le(L,Ql);let we;return A(()=>Ze.value,l=>{l?we=le(C,We).stop:(we?.(),we=void 0),a("visible-change",l)}),Ue(()=>{me()}),{inputId:U,contentId:v,nsSelect:c,nsInput:f,states:t,isFocused:Le,expanded:o,optionsArray:k,hoverOption:R,selectSize:Je,filteredOptionsCount:se,updateTooltip:We,updateTagTooltip:xe,debouncedOnInputChange:tl,onInput:ll,deletePrevTag:nl,deleteTag:Yl,deleteSelected:al,handleOptionSelect:ol,scrollToOption:re,hasModelValue:$e,shouldShowPlaceholder:Kl,currentPlaceholder:Ul,mouseEnterEventName:jl,needStatusIcon:Ll,showClearBtn:$l,iconComponent:Xe,iconReverse:Bl,validateState:Be,validateIcon:Nl,showNewOption:Hl,updateOptions:Ye,collapseTagSize:Al,setSelected:me,selectDisabled:oe,emptyText:Fl,handleCompositionStart:kl,handleCompositionUpdate:Dl,handleCompositionEnd:Rl,handleKeydown:st,onOptionCreate:Jl,onOptionDestroy:Zl,handleMenuEnter:xl,focus:ye,blur:et,handleClearClick:lt,handleClickOutside:tt,handleEsc:il,toggleMenu:rl,selectOption:ul,getValueKey:Se,navigateOptions:Oe,dropdownMenuVisible:Ze,showTagList:at,collapseTagList:ot,popupScroll:dt,getOption:Ne,tagStyle:rt,collapseTagStyle:ut,popperRef:_l,inputRef:b,tooltipRef:O,tagTooltipRef:y,prefixRef:d,suffixRef:u,selectRef:r,wrapperRef:Qe,selectionRef:m,scrollbarRef:X,menuRef:C,tagMenuRef:E,collapseItemRef:L}};var hn=he({name:"ElOptions",setup(e,{slots:a}){const i=Te(Re);let v=[];return()=>{var c,f;const t=(c=a.default)==null?void 0:c.call(a),r=[];function m(O){Q(O)&&O.forEach(y=>{var b,d,u,C;const E=(b=y?.type||{})==null?void 0:b.name;E==="ElOptionGroup"?m(!ht(y.children)&&!Q(y.children)&&ce((d=y.children)==null?void 0:d.default)?(u=y.children)==null?void 0:u.default():y.children):E==="ElOption"?r.push((C=y.props)==null?void 0:C.value):Q(y.children)&&m(y.children)})}return t.length&&m((f=t[0])==null?void 0:f.children),te(r,v)||(v=r,i&&(i.states.optionValues=r)),t}}});const gn=Cl({name:String,id:String,modelValue:{type:H([Array,String,Number,Boolean,Object]),default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:Xt,effect:{type:H(String),default:"light"},disabled:{type:Boolean,default:void 0},clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperStyle:{type:H([String,Object])},popperOptions:{type:H(Object),default:()=>({})},remote:Boolean,debounce:{type:Number,default:300},loadingText:String,noMatchText:String,noDataText:String,remoteMethod:{type:H(Function)},filterMethod:{type:H(Function)},multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:fl.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:hl,default:Qt},fitInputWidth:Boolean,suffixIcon:{type:hl,default:qt},tagType:{...vl.type,default:"info"},tagEffect:{...vl.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:H(String),values:Et,default:"bottom-start"},fallbackPlacements:{type:H(Array),default:["bottom-start","top-start","right","left"]},tabindex:{type:[String,Number],default:0},appendTo:fl.appendTo,options:{type:H(Array)},props:{type:H(Object),default:()=>ze},...Gt,...en(["ariaLabel"])});Tt.scroll;const mn=he({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:Boolean},setup(e){const a=ve("select"),i=V(),v=ke(),c=V([]);Ol(Tl,fe({...Ke(e)}));const f=p(()=>c.value.some(O=>O.visible===!0)),t=O=>{var y;return O.type.name==="ElOption"&&!!((y=O.component)!=null&&y.proxy)},r=O=>{const y=J(O),b=[];return y.forEach(d=>{var u;gt(d)&&(t(d)?b.push(d.component.proxy):Q(d.children)&&d.children.length?b.push(...r(d.children)):(u=d.component)!=null&&u.subTree&&b.push(...r(d.component.subTree)))}),b},m=()=>{c.value=r(v.subTree)};return Ue(()=>{m()}),ln(i,m,{attributes:!0,subtree:!0,childList:!0}),{groupRef:i,visible:f,ns:a}}});function yn(e,a,i,v,c,f){return pe((h(),I("ul",{ref:"groupRef",class:g(e.ns.be("group","wrap"))},[D("li",{class:g(e.ns.be("group","title"))},G(e.label),3),D("li",null,[D("ul",{class:g(e.ns.b("group"))},[M(e.$slots,"default")],2)])],2)),[[Ae,e.visible]])}var Ge=De(mn,[["render",yn],["__file","option-group.vue"]]);const yl="ElSelect",be=new WeakMap,Sn=e=>(...a)=>{var i,v;const c=a[0];if(!c||c.includes('Slot "default" invoked outside of the render function')&&((i=a[2])!=null&&i.includes("ElTreeSelect")))return;const f=(v=be.get(e))==null?void 0:v.originalWarnHandler;if(f){f(...a);return}console.warn(...a)},On=e=>{let a=be.get(e);return a||(a={originalWarnHandler:e.config.warnHandler,handler:Sn(e),count:0},be.set(e,a)),a},Cn=he({name:yl,componentName:yl,components:{ElSelectMenu:vn,ElOption:je,ElOptions:hn,ElOptionGroup:Ge,ElTag:Mt,ElScrollbar:Rt,ElTooltip:Dt,ElIcon:Yt},directives:{ClickOutside:kt},props:gn,emits:[ne,Vl,"remove-tag","clear","visible-change","focus","blur","popup-scroll"],setup(e,{emit:a,slots:i}){const v=ke(),c=On(v.appContext);c.count+=1,v.appContext.config.warnHandler=c.handler;const f=p(()=>{const{modelValue:o,multiple:R}=e,T=R?[]:void 0;return Q(o)?R?o:T:R?T:o}),t=fe({...Ke(e),modelValue:f}),r=bn(t,a),{calculatorRef:m,inputStyle:O}=on(),{getLabel:y,getValue:b,getOptions:d,getDisabled:u}=sn(e),C=o=>({label:y(o),value:b(o),disabled:u(o)}),E=o=>o.reduce((R,T)=>(R.push(T),T.children&&T.children.length>0&&R.push(...E(T.children)),R),[]),L=o=>{Lt(o||[]).forEach(T=>{var ae;if(q(T)&&(T.type.name==="ElOption"||T.type.name==="ElTree")){const P=T.type.name;if(P==="ElTree"){const U=((ae=T.props)==null?void 0:ae.data)||[];E(U).forEach(Z=>{Z.currentLabel=Z.label||(q(Z.value)?"":Z.value),r.onOptionCreate(Z)})}else if(P==="ElOption"){const U={...T.props};U.currentLabel=U.label||(q(U.value)?"":U.value),r.onOptionCreate(U)}}})};A(()=>{var o;return[(o=i.default)==null?void 0:o.call(i),f.value]},()=>{var o;e.persistent||r.expanded.value||(r.states.options.clear(),L((o=i.default)==null?void 0:o.call(i)))},{immediate:!0}),Ol(Re,fe({props:t,states:r.states,selectRef:r.selectRef,optionsArray:r.optionsArray,setSelected:r.setSelected,handleOptionSelect:r.handleOptionSelect,onOptionCreate:r.onOptionCreate,onOptionDestroy:r.onOptionDestroy}));const X=p(()=>e.multiple?r.states.selected.map(o=>o.currentLabel):r.states.selectedLabel);return Sl(()=>{const o=be.get(v.appContext);o&&(o.count-=1,o.count<=0&&(v.appContext.config.warnHandler=o.originalWarnHandler,be.delete(v.appContext)))}),{...r,modelValue:f,selectedLabel:X,calculatorRef:m,inputStyle:O,getLabel:y,getValue:b,getOptions:d,getDisabled:u,getOptionProps:C}}});function wn(e,a){const i=Y("el-tag"),v=Y("el-tooltip"),c=Y("el-icon"),f=Y("el-option"),t=Y("el-option-group"),r=Y("el-options"),m=Y("el-scrollbar"),O=Y("el-select-menu"),y=mt("click-outside");return pe((h(),I("div",{ref:"selectRef",class:g([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),[Ot(e.mouseEnterEventName)]:b=>e.states.inputHovering=!0,onMouseleave:b=>e.states.inputHovering=!1},[ee(v,{ref:"tooltipRef",visible:e.dropdownMenuVisible,placement:e.placement,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:b=>e.states.isBeforeHide=!1},{default:B(()=>{var b;return[D("div",{ref:"wrapperRef",class:g([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:de(e.toggleMenu,["prevent"])},[e.$slots.prefix?(h(),I("div",{key:0,ref:"prefixRef",class:g(e.nsSelect.e("prefix"))},[M(e.$slots,"prefix")],2)):N("v-if",!0),D("div",{ref:"selectionRef",class:g([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.states.selected.length)])},[e.multiple?M(e.$slots,"tag",{key:0,data:e.states.selected,deleteTag:e.deleteTag,selectDisabled:e.selectDisabled},()=>[(h(!0),I(ue,null,Ie(e.showTagList,d=>(h(),I("div",{key:e.getValueKey(d),class:g(e.nsSelect.e("selected-item"))},[ee(i,{closable:!e.selectDisabled&&!d.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Ee(e.tagStyle),onClose:u=>e.deleteTag(u,d)},{default:B(()=>[D("span",{class:g(e.nsSelect.e("tags-text"))},[M(e.$slots,"label",{index:d.index,label:d.currentLabel,value:d.value},()=>[pl(G(d.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.states.selected.length>e.maxCollapseTags?(h(),F(v,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom","popper-class":e.popperClass,"popper-style":e.popperStyle,teleported:e.teleported},{default:B(()=>[D("div",{ref:"collapseItemRef",class:g(e.nsSelect.e("selected-item"))},[ee(i,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Ee(e.collapseTagStyle)},{default:B(()=>[D("span",{class:g(e.nsSelect.e("tags-text"))}," + "+G(e.states.selected.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:B(()=>[D("div",{ref:"tagMenuRef",class:g(e.nsSelect.e("selection"))},[(h(!0),I(ue,null,Ie(e.collapseTagList,d=>(h(),I("div",{key:e.getValueKey(d),class:g(e.nsSelect.e("selected-item"))},[ee(i,{class:"in-tooltip",closable:!e.selectDisabled&&!d.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:u=>e.deleteTag(u,d)},{default:B(()=>[D("span",{class:g(e.nsSelect.e("tags-text"))},[M(e.$slots,"label",{index:d.index,label:d.currentLabel,value:d.value},()=>[pl(G(d.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","effect","popper-class","popper-style","teleported"])):N("v-if",!0)]):N("v-if",!0),D("div",{class:g([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable||e.selectDisabled)])},[pe(D("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":d=>e.states.inputValue=d,type:"text",name:e.name,class:g([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Ee(e.inputStyle),tabindex:e.tabindex,role:"combobox",readonly:!e.filterable,spellcheck:"false","aria-activedescendant":((b=e.hoverOption)==null?void 0:b.id)||"","aria-controls":e.contentId,"aria-expanded":e.dropdownMenuVisible,"aria-label":e.ariaLabel,"aria-autocomplete":"none","aria-haspopup":"listbox",onKeydown:e.handleKeydown,onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onInput:e.onInput,onClick:de(e.toggleMenu,["stop"])},null,46,["id","onUpdate:modelValue","name","disabled","autocomplete","tabindex","readonly","aria-activedescendant","aria-controls","aria-expanded","aria-label","onKeydown","onCompositionstart","onCompositionupdate","onCompositionend","onInput","onClick"]),[[St,e.states.inputValue]]),e.filterable?(h(),I("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:g(e.nsSelect.e("input-calculator")),textContent:G(e.states.inputValue)},null,10,["textContent"])):N("v-if",!0)],2),e.shouldShowPlaceholder?(h(),I("div",{key:1,class:g([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?M(e.$slots,"label",{key:0,index:e.getOption(e.modelValue).index,label:e.currentPlaceholder,value:e.modelValue},()=>[D("span",null,G(e.currentPlaceholder),1)]):(h(),I("span",{key:1},G(e.currentPlaceholder),1))],2)):N("v-if",!0)],2),D("div",{ref:"suffixRef",class:g(e.nsSelect.e("suffix"))},[e.iconComponent&&!e.showClearBtn?(h(),F(c,{key:0,class:g([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:B(()=>[(h(),F(Fe(e.iconComponent)))]),_:1},8,["class"])):N("v-if",!0),e.showClearBtn&&e.clearIcon?(h(),F(c,{key:1,class:g([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.nsSelect.e("clear")]),onClick:e.handleClearClick},{default:B(()=>[(h(),F(Fe(e.clearIcon)))]),_:1},8,["class","onClick"])):N("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?(h(),F(c,{key:2,class:g([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading",e.validateState==="validating")])},{default:B(()=>[(h(),F(Fe(e.validateIcon)))]),_:1},8,["class"])):N("v-if",!0)],2)],10,["onClick"])]}),content:B(()=>[ee(O,{ref:"menuRef"},{default:B(()=>[e.$slots.header?(h(),I("div",{key:0,class:g(e.nsSelect.be("dropdown","header")),onClick:de(()=>{},["stop"])},[M(e.$slots,"header")],10,["onClick"])):N("v-if",!0),pe(ee(m,{id:e.contentId,ref:"scrollbarRef",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:g([e.nsSelect.is("empty",e.filteredOptionsCount===0)]),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical",onScroll:e.popupScroll},{default:B(()=>[e.showNewOption?(h(),F(f,{key:0,value:e.states.inputValue,created:!0},null,8,["value"])):N("v-if",!0),ee(r,null,{default:B(()=>[M(e.$slots,"default",{},()=>[(h(!0),I(ue,null,Ie(e.options,(b,d)=>{var u;return h(),I(ue,{key:d},[(u=e.getOptions(b))!=null&&u.length?(h(),F(t,{key:0,label:e.getLabel(b),disabled:e.getDisabled(b)},{default:B(()=>[(h(!0),I(ue,null,Ie(e.getOptions(b),C=>(h(),F(f,cl({key:e.getValue(C)},e.getOptionProps(C)),null,16))),128))]),_:2},1032,["label","disabled"])):(h(),F(f,yt(cl({key:1},e.getOptionProps(b))),null,16))],64)}),128))])]),_:3})]),_:3},8,["id","wrap-class","view-class","class","aria-label","onScroll"]),[[Ae,e.states.options.size>0&&!e.loading]]),e.$slots.loading&&e.loading?(h(),I("div",{key:1,class:g(e.nsSelect.be("dropdown","loading"))},[M(e.$slots,"loading")],2)):e.loading||e.filteredOptionsCount===0?(h(),I("div",{key:2,class:g(e.nsSelect.be("dropdown","empty"))},[M(e.$slots,"empty",{},()=>[D("span",null,G(e.emptyText),1)])],2)):N("v-if",!0),e.$slots.footer?(h(),I("div",{key:3,class:g(e.nsSelect.be("dropdown","footer")),onClick:de(()=>{},["stop"])},[M(e.$slots,"footer")],10,["onClick"])):N("v-if",!0)]),_:3},512)]),_:3},8,["visible","placement","teleported","popper-class","popper-style","popper-options","fallback-placements","effect","transition","persistent","append-to","show-arrow","offset","onBeforeShow","onHide"])],16,["onMouseleave"])),[[y,e.handleClickOutside,e.popperRef]])}var In=De(Cn,[["render",wn],["__file","select.vue"]]);const Dn=Jt(In,{Option:je,OptionGroup:Ge}),Rn=Il(je);Il(Ge);export{Dn as E,Rn as a,tn as b}; diff --git a/static/app/assets/el-select-CBs1QjJm.js b/static/app/assets/el-select-CBs1QjJm.js new file mode 100644 index 0000000..9e5cae5 --- /dev/null +++ b/static/app/assets/el-select-CBs1QjJm.js @@ -0,0 +1 @@ +import{E as pt,g as V,h as p,L as K,Q as Te,X as Q,ae as ft,V as ke,A as me,w as pe,R as Ke,j as I,o as m,B as M,k as D,t as G,q as de,n as h,C as Pe,a2 as Ae,f as fe,z as Sl,W as U,l as N,U as Ee,i as je,K as q,Y as vt,a0 as ce,ai as bt,J as mt,M as Ol,I as ht,r as X,a8 as gt,p as ee,s as B,c as z,F as ue,a4 as Ie,O as cl,aj as yt,x as pl,v as St,D as ze,ak as Ot}from"./vendor-vue-WbiK4TmU.js";import{b as Ct,j as wt,d as It,u as fl,h as Vt,k as vl,s as Et,C as Tt,E as kt,a as Dt,e as Rt}from"./el-empty-B4_NEFfq.js";import{P as A,aa as te,b as Cl,_ as De,u as ve,C as Mt,ac as Lt,aH as $t,a9 as Bt,J as Ve,aI as bl,aJ as Nt,L as Wt,r as Pt,s as zt,ab as Ft,t as H,I as Ht,y as ml,a3 as Kt,T as At,E as jt,d as Ut,z as wl}from"./base-xgxQQEpV.js";import{t as Gt,d as hl,U as ne,C as Il}from"./aria-DLpFpzDe.js";import{c as Y,e as Qt,d as qt,u as Jt}from"./el-input-BaZNy9Kg.js";import{b as Vl}from"./index-CoYtSGUZ.js";import{c as le,g as gl,b as F,j as Xt}from"./http-BoPYlvwK.js";import{a as Yt,b as Zt,c as _t,u as xt}from"./el-button-LKkD3jQh.js";import{s as en,f as ln}from"./el-overlay-hge8bsIn.js";function tn(e,a,i,v){for(var c=e.length,f=i+(v?1:-1);v?f--:++f({minWidth:`${Math.max(a.value,El)}px`}));return le(e,()=>{var c,f;a.value=(f=(c=e.value)==null?void 0:c.getBoundingClientRect().width)!=null?f:0}),{calculatorRef:e,calculatorWidth:a,inputStyle:i}}const Fe={label:"label",value:"value",disabled:"disabled",options:"options"};function sn(e){const a=V({...Fe,...e.props});let i={...e.props};return K(()=>e.props,r=>{te(r,i)||(a.value={...Fe,...r},i={...r})},{deep:!0}),{aliasProps:a,getLabel:r=>A(r,a.value.label),getValue:r=>A(r,a.value.value),getDisabled:r=>A(r,a.value.disabled),getOptions:r=>A(r,a.value.options)}}const Tl=Symbol("ElSelectGroup"),Re=Symbol("ElSelect"),He="ElOption",rn=Cl({value:{type:[String,Number,Boolean,Object],required:!0},label:{type:[String,Number]},created:Boolean,disabled:Boolean});function un(e,a){const i=Te(Re);i||Gt(He,"usage: ");const v=Te(Tl,{disabled:!1}),c=p(()=>y(Y(i.props.modelValue),e.value)),f=p(()=>{var u;if(i.props.multiple){const C=Y((u=i.props.modelValue)!=null?u:[]);return!c.value&&C.length>=i.props.multipleLimit&&i.props.multipleLimit>0}else return!1}),t=p(()=>{var u;return(u=e.label)!=null?u:Q(e.value)?"":e.value}),r=p(()=>e.value||e.label||""),g=p(()=>e.disabled||a.groupDisabled||f.value),O=ke(),y=(u=[],C)=>{if(Q(e.value)){const E=i.props.valueKey;return u&&u.some(L=>ft(A(L,E))===A(C,E))}else return u&&u.includes(C)},b=()=>{g.value||(i.states.hoveringIndex=i.optionsArray.indexOf(O.proxy))},d=u=>{const C=new RegExp(wt(u),"i");a.visible=C.test(String(t.value))||e.created};return K(()=>t.value,()=>{!e.created&&!i.props.remote&&i.setSelected()}),K(()=>e.value,(u,C)=>{const{remote:E,valueKey:L}=i.props;if((E?u!==C:!te(u,C))&&(i.onOptionDestroy(C,O.proxy),i.onOptionCreate(O.proxy)),!e.created&&!E){if(L&&Q(u)&&Q(C)&&u[L]===C[L])return;i.setSelected()}}),K(()=>v.disabled,()=>{a.groupDisabled=v.disabled},{immediate:!0}),{select:i,currentLabel:t,currentValue:r,itemSelected:c,isDisabled:g,hoverItem:b,updateOption:d}}const dn=me({name:He,componentName:He,props:rn,setup(e){const a=ve("select"),i=Vl(),v=p(()=>[a.be("dropdown","item"),a.is("disabled",Pe(r)),a.is("selected",Pe(t)),a.is("hovering",Pe(d))]),c=fe({index:-1,groupDisabled:!1,visible:!0,hover:!1}),{currentLabel:f,itemSelected:t,isDisabled:r,select:g,hoverItem:O,updateOption:y}=un(e,c),{visible:b,hover:d}=Ae(c),u=ke().proxy;g.onOptionCreate(u),Sl(()=>{const E=u.value;U(()=>{const{selected:L}=g.states,J=L.some(o=>o.value===u.value);g.states.cachedOptions.get(E)===u&&!J&&g.states.cachedOptions.delete(E)}),g.onOptionDestroy(E,u)});function C(){r.value||g.handleOptionSelect(u)}return{ns:a,id:i,containerKls:v,currentLabel:f,itemSelected:t,isDisabled:r,select:g,visible:b,hover:d,states:c,hoverItem:O,updateOption:y,selectOptionClick:C}}});function cn(e,a){return pe((m(),I("li",{id:e.id,class:h(e.containerKls),role:"option","aria-disabled":e.isDisabled||void 0,"aria-selected":e.itemSelected,onMousemove:e.hoverItem,onClick:de(e.selectOptionClick,["stop"])},[M(e.$slots,"default",{},()=>[D("span",null,G(e.currentLabel),1)])],42,["id","aria-disabled","aria-selected","onMousemove","onClick"])),[[Ke,e.visible]])}var Ue=De(dn,[["render",cn],["__file","option.vue"]]);const pn=me({name:"ElSelectDropdown",componentName:"ElSelectDropdown",setup(){const e=Te(Re),a=ve("select"),i=p(()=>e.props.popperClass),v=p(()=>e.props.multiple),c=p(()=>e.props.fitInputWidth),f=V("");function t(){var r;const g=(r=e.selectRef)==null?void 0:r.offsetWidth;g?f.value=`${g-an}px`:f.value=""}return je(()=>{t(),le(e.selectRef,t)}),{ns:a,minWidth:f,popperClass:i,isMultiple:v,isFitInputWidth:c}}});function fn(e,a,i,v,c,f){return m(),I("div",{class:h([e.ns.b("dropdown"),e.ns.is("multiple",e.isMultiple),e.popperClass]),style:Ee({[e.isFitInputWidth?"width":"minWidth"]:e.minWidth})},[e.$slots.header?(m(),I("div",{key:0,class:h(e.ns.be("dropdown","header"))},[M(e.$slots,"header")],2)):N("v-if",!0),M(e.$slots,"default"),e.$slots.footer?(m(),I("div",{key:1,class:h(e.ns.be("dropdown","footer"))},[M(e.$slots,"footer")],2)):N("v-if",!0)],6)}var vn=De(pn,[["render",fn],["__file","select-dropdown.vue"]]);const bn=(e,a)=>{const{t:i}=Mt(),v=Vl(),c=ve("select"),f=ve("input"),t=fe({inputValue:"",options:new Map,cachedOptions:new Map,optionValues:[],selected:[],selectionWidth:0,collapseItemWidth:0,selectedLabel:"",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1}),r=V(),g=V(),O=V(),y=V(),b=V(),d=V(),u=V(),C=V(),E=V(),L=V(),J=V(),o=V(!1),R=V(),T=V(!1),{form:ae,formItem:P}=Yt(),{inputId:j}=Zt(e,{formItemContext:P}),{valueOnClear:Qe,isEmptyValue:Z}=Lt(e),{isComposing:Me,handleCompositionStart:kl,handleCompositionUpdate:Dl,handleCompositionEnd:Rl}=Qt({afterComposition:l=>ll(l)}),oe=_t(),{wrapperRef:qe,isFocused:Le,handleBlur:Ml}=qt(b,{disabled:oe,afterFocus(){e.automaticDropdown&&!o.value&&(o.value=!0,t.menuVisibleOnFocus=!0)},beforeBlur(l){var n,s;return((n=O.value)==null?void 0:n.isFocusInsideContent(l))||((s=y.value)==null?void 0:s.isFocusInsideContent(l))},afterBlur(){var l;o.value=!1,t.menuVisibleOnFocus=!1,e.validateEvent&&((l=P?.validate)==null||l.call(P,"blur").catch(n=>hl()))}}),$e=p(()=>q(e.modelValue)?e.modelValue.length>0:!Z(e.modelValue)),Ll=p(()=>{var l;return(l=ae?.statusIcon)!=null?l:!1}),$l=p(()=>e.clearable&&!oe.value&&$e.value&&(Le.value||t.inputHovering)),Je=p(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?"":e.suffixIcon),Bl=p(()=>c.is("reverse",!!(Je.value&&o.value))),Be=p(()=>P?.validateState||""),Nl=p(()=>Be.value&&$t[Be.value]),Wl=p(()=>e.remote?e.debounce:0),Pl=p(()=>e.remote&&!t.inputValue&&t.options.size===0),zl=p(()=>e.loading?e.loadingText||i("el.select.loading"):e.filterable&&t.inputValue&&t.options.size>0&&se.value===0?e.noMatchText||i("el.select.noMatch"):t.options.size===0?e.noDataText||i("el.select.noData"):null),se=p(()=>k.value.filter(l=>l.visible).length),k=p(()=>{const l=Array.from(t.options.values()),n=[];return t.optionValues.forEach(s=>{const S=l.findIndex(w=>w.value===s);S>-1&&n.push(l[S])}),n.length>=l.length?n:l}),Fl=p(()=>Array.from(t.cachedOptions.values())),Hl=p(()=>{const l=k.value.filter(n=>!n.created).some(n=>n.currentLabel===t.inputValue);return e.filterable&&e.allowCreate&&t.inputValue!==""&&!l}),Xe=()=>{e.filterable&&ce(e.filterMethod)||e.filterable&&e.remote&&ce(e.remoteMethod)||k.value.forEach(l=>{var n;(n=l.updateOption)==null||n.call(l,t.inputValue)})},Ye=xt(),Kl=p(()=>["small"].includes(Ye.value)?"small":"default"),Ze=p({get(){return o.value&&(e.loading||!Pl.value)&&(!T.value||!Bt(t.previousQuery))},set(l){o.value=l}}),Al=p(()=>{if(e.multiple&&!Ve(e.modelValue))return Y(e.modelValue).length===0&&!t.inputValue;const l=q(e.modelValue)?e.modelValue[0]:e.modelValue;return e.filterable||Ve(l)?!t.inputValue:!0}),jl=p(()=>{var l;const n=(l=e.placeholder)!=null?l:i("el.select.placeholder");return e.multiple||!$e.value?n:t.selectedLabel}),Ul=p(()=>bl?null:"mouseenter");K(()=>e.modelValue,(l,n)=>{e.multiple&&e.filterable&&!e.reserveKeyword&&(t.inputValue="",he("")),ge(),!te(l,n)&&e.validateEvent&&P?.validate("change").catch(s=>hl())},{flush:"post",deep:!0}),K(()=>o.value,l=>{l?he(t.inputValue):(t.inputValue="",t.previousQuery=null,t.isBeforeHide=!0)}),K(()=>t.options.entries(),()=>{Pt&&(ge(),e.defaultFirstOption&&(e.filterable||e.remote)&&se.value&&_e())},{flush:"post"}),K([()=>t.hoveringIndex,k],([l])=>{zt(l)&&l>-1?R.value=k.value[l]||{}:R.value={},k.value.forEach(n=>{n.hover=R.value===n})}),vt(()=>{t.isBeforeHide||Xe()});const he=l=>{t.previousQuery===l||Me.value||(t.previousQuery=l,e.filterable&&ce(e.filterMethod)?e.filterMethod(l):e.filterable&&e.remote&&ce(e.remoteMethod)&&e.remoteMethod(l),e.defaultFirstOption&&(e.filterable||e.remote)&&se.value?U(_e):U(Gl))},_e=()=>{const l=k.value.filter(w=>w.visible&&!w.disabled&&!w.states.groupDisabled),n=l.find(w=>w.created),s=l[0],S=k.value.map(w=>w.value);t.hoveringIndex=sl(S,n||s)},ge=()=>{if(e.multiple)t.selectedLabel="";else{const n=q(e.modelValue)?e.modelValue[0]:e.modelValue,s=Ne(n);t.selectedLabel=s.currentLabel,t.selected=[s];return}const l=[];Ve(e.modelValue)||Y(e.modelValue).forEach(n=>{l.push(Ne(n))}),t.selected=l},Ne=l=>{let n;const s=bt(l);for(let $=t.cachedOptions.size-1;$>=0;$--){const W=Fl.value[$];if(s?A(W.value,e.valueKey)===A(l,e.valueKey):W.value===l){n={index:k.value.filter(x=>!x.created).indexOf(W),value:l,currentLabel:W.currentLabel,get isDisabled(){return W.isDisabled}};break}}if(n)return n;const S=s?l.label:l??"";return{index:-1,value:l,currentLabel:S}},Gl=()=>{const l=t.selected.length;if(l>0){const n=t.selected[l-1];t.hoveringIndex=k.value.findIndex(s=>Se(n)===Se(s))}else t.hoveringIndex=-1},Ql=()=>{t.selectionWidth=Number.parseFloat(window.getComputedStyle(g.value).width)},ql=()=>{t.collapseItemWidth=L.value.getBoundingClientRect().width},We=()=>{var l,n;(n=(l=O.value)==null?void 0:l.updatePopper)==null||n.call(l)},xe=()=>{var l,n;(n=(l=y.value)==null?void 0:l.updatePopper)==null||n.call(l)},el=()=>{t.inputValue.length>0&&!o.value&&(o.value=!0),he(t.inputValue)},ll=l=>{if(t.inputValue=l.target.value,e.remote)T.value=!0,tl();else return el()},tl=Nt(()=>{el(),T.value=!1},Wl),ie=l=>{te(e.modelValue,l)||a(Il,l)},Jl=l=>nn(l,n=>{const s=t.cachedOptions.get(n);return!s?.disabled&&!s?.states.groupDisabled}),nl=l=>{const n=gl(l);if(e.multiple&&n!==F.delete&&l.target.value.length<=0){const s=Y(e.modelValue).slice(),S=Jl(s);if(S<0)return;const w=s[S];s.splice(S,1),a(ne,s),ie(s),a("remove-tag",w)}},Xl=(l,n)=>{const s=t.selected.indexOf(n);if(s>-1&&!oe.value){const S=Y(e.modelValue).slice();S.splice(s,1),a(ne,S),ie(S),a("remove-tag",n.value)}l.stopPropagation(),ye()},al=l=>{l.stopPropagation();const n=e.multiple?[]:Qe.value;if(e.multiple)for(const s of t.selected)s.isDisabled&&n.push(s.value);a(ne,n),ie(n),t.hoveringIndex=-1,o.value=!1,a("clear"),ye()},ol=l=>{var n;if(e.multiple){const s=Y((n=e.modelValue)!=null?n:[]).slice(),S=sl(s,l);S>-1?s.splice(S,1):(e.multipleLimit<=0||s.length{re(l)})},sl=(l,n)=>Ve(n)?-1:Q(n.value)?l.findIndex(s=>te(A(s,e.valueKey),Se(n))):l.indexOf(n.value),re=l=>{var n,s,S,w,$;const W=q(l)?l[l.length-1]:l;let _=null;if(!Wt(W?.value)){const x=k.value.filter(ct=>ct.value===W.value);x.length>0&&(_=x[0].$el)}if(O.value&&_){const x=(w=(S=(s=(n=O.value)==null?void 0:n.popperRef)==null?void 0:s.contentRef)==null?void 0:S.querySelector)==null?void 0:w.call(S,`.${c.be("dropdown","wrap")}`);x&&en(x,_)}($=J.value)==null||$.handleScroll()},Yl=l=>{t.options.set(l.value,l),t.cachedOptions.set(l.value,l)},Zl=(l,n)=>{t.options.get(l)===n&&t.options.delete(l)},_l=p(()=>{var l,n;return(n=(l=O.value)==null?void 0:l.popperRef)==null?void 0:n.contentRef}),xl=()=>{t.isBeforeHide=!1,U(()=>{var l;(l=J.value)==null||l.update(),re(t.selected)})},ye=()=>{var l;(l=b.value)==null||l.focus()},et=()=>{var l;if(o.value){o.value=!1,U(()=>{var n;return(n=b.value)==null?void 0:n.blur()});return}(l=b.value)==null||l.blur()},lt=l=>{al(l)},tt=l=>{if(o.value=!1,Le.value){const n=new FocusEvent("blur",l);U(()=>Ml(n))}},il=()=>{t.inputValue.length>0?t.inputValue="":o.value=!1},rl=l=>{var n;oe.value||e.filterable&&o.value&&l&&!((n=u.value)!=null&&n.contains(l.target))||(bl&&(t.inputHovering=!0),t.menuVisibleOnFocus?t.menuVisibleOnFocus=!1:o.value=!o.value)},ul=()=>{if(!o.value)rl();else{const l=k.value[t.hoveringIndex];l&&!l.isDisabled&&ol(l)}},Se=l=>Q(l.value)?A(l.value,e.valueKey):l.value,nt=p(()=>k.value.filter(l=>l.visible).every(l=>l.isDisabled)),at=p(()=>e.multiple?e.collapseTags?t.selected.slice(0,e.maxCollapseTags):t.selected:[]),ot=p(()=>e.multiple?e.collapseTags?t.selected.slice(e.maxCollapseTags):[]:[]),Oe=l=>{if(!o.value){o.value=!0;return}if(!(t.options.size===0||se.value===0||Me.value)&&!nt.value){l==="next"?(t.hoveringIndex++,t.hoveringIndex===t.options.size&&(t.hoveringIndex=0)):l==="prev"&&(t.hoveringIndex--,t.hoveringIndex<0&&(t.hoveringIndex=t.options.size-1));const n=k.value[t.hoveringIndex];(n.isDisabled||!n.visible)&&Oe(l),U(()=>re(R.value))}},dl=(l,n,s,S)=>{for(let w=n;w>=0&&w{var s;const S=t.options.size;if(S===0)return;const w=It(l,0,S-1),$=k.value,W=n==="up"?-1:1,_=(s=dl($,w,W,S))!=null?s:dl($,w-W,-W,S);_!=null&&(t.hoveringIndex=_,U(()=>re(R.value)))},st=l=>{const n=gl(l);let s=!0;switch(n){case F.up:Oe("prev");break;case F.down:Oe("next");break;case F.enter:case F.numpadEnter:Me.value||ul();break;case F.esc:il();break;case F.backspace:s=!1,nl(l);return;case F.home:if(!o.value)return;Ce(0,"down");break;case F.end:if(!o.value)return;Ce(t.options.size-1,"up");break;case F.pageUp:if(!o.value)return;Ce(t.hoveringIndex-10,"up");break;case F.pageDown:if(!o.value)return;Ce(t.hoveringIndex+10,"down");break;default:s=!1;break}s&&(l.preventDefault(),l.stopPropagation())},it=()=>{if(!g.value)return 0;const l=window.getComputedStyle(g.value);return Number.parseFloat(l.gap||"6px")},rt=p(()=>{const l=it(),n=e.filterable?l+El:0;return{maxWidth:`${L.value&&e.maxCollapseTags===1?t.selectionWidth-t.collapseItemWidth-l-n:t.selectionWidth-n}px`}}),ut=p(()=>({maxWidth:`${t.selectionWidth}px`})),dt=l=>{a("popup-scroll",l)};le(g,Ql),le(qe,We),le(E,xe),le(L,ql);let we;return K(()=>Ze.value,l=>{l?we=le(C,We).stop:(we?.(),we=void 0),a("visible-change",l)}),je(()=>{ge()}),{inputId:j,contentId:v,nsSelect:c,nsInput:f,states:t,isFocused:Le,expanded:o,optionsArray:k,hoverOption:R,selectSize:Ye,filteredOptionsCount:se,updateTooltip:We,updateTagTooltip:xe,debouncedOnInputChange:tl,onInput:ll,deletePrevTag:nl,deleteTag:Xl,deleteSelected:al,handleOptionSelect:ol,scrollToOption:re,hasModelValue:$e,shouldShowPlaceholder:Al,currentPlaceholder:jl,mouseEnterEventName:Ul,needStatusIcon:Ll,showClearBtn:$l,iconComponent:Je,iconReverse:Bl,validateState:Be,validateIcon:Nl,showNewOption:Hl,updateOptions:Xe,collapseTagSize:Kl,setSelected:ge,selectDisabled:oe,emptyText:zl,handleCompositionStart:kl,handleCompositionUpdate:Dl,handleCompositionEnd:Rl,handleKeydown:st,onOptionCreate:Yl,onOptionDestroy:Zl,handleMenuEnter:xl,focus:ye,blur:et,handleClearClick:lt,handleClickOutside:tt,handleEsc:il,toggleMenu:rl,selectOption:ul,getValueKey:Se,navigateOptions:Oe,dropdownMenuVisible:Ze,showTagList:at,collapseTagList:ot,popupScroll:dt,getOption:Ne,tagStyle:rt,collapseTagStyle:ut,popperRef:_l,inputRef:b,tooltipRef:O,tagTooltipRef:y,prefixRef:d,suffixRef:u,selectRef:r,wrapperRef:qe,selectionRef:g,scrollbarRef:J,menuRef:C,tagMenuRef:E,collapseItemRef:L}};var mn=me({name:"ElOptions",setup(e,{slots:a}){const i=Te(Re);let v=[];return()=>{var c,f;const t=(c=a.default)==null?void 0:c.call(a),r=[];function g(O){q(O)&&O.forEach(y=>{var b,d,u,C;const E=(b=y?.type||{})==null?void 0:b.name;E==="ElOptionGroup"?g(!mt(y.children)&&!q(y.children)&&ce((d=y.children)==null?void 0:d.default)?(u=y.children)==null?void 0:u.default():y.children):E==="ElOption"?r.push((C=y.props)==null?void 0:C.value):q(y.children)&&g(y.children)})}return t.length&&g((f=t[0])==null?void 0:f.children),te(r,v)||(v=r,i&&(i.states.optionValues=r)),t}}});const hn=Cl({name:String,id:String,modelValue:{type:H([Array,String,Number,Boolean,Object]),default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:At,effect:{type:H(String),default:"light"},disabled:{type:Boolean,default:void 0},clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperStyle:{type:H([String,Object])},popperOptions:{type:H(Object),default:()=>({})},remote:Boolean,debounce:{type:Number,default:300},loadingText:String,noMatchText:String,noDataText:String,remoteMethod:{type:H(Function)},filterMethod:{type:H(Function)},multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:fl.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:ml,default:Kt},fitInputWidth:Boolean,suffixIcon:{type:ml,default:Ht},tagType:{...vl.type,default:"info"},tagEffect:{...vl.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:H(String),values:Vt,default:"bottom-start"},fallbackPlacements:{type:H(Array),default:["bottom-start","top-start","right","left"]},tabindex:{type:[String,Number],default:0},appendTo:fl.appendTo,options:{type:H(Array)},props:{type:H(Object),default:()=>Fe},...Ft,...Jt(["ariaLabel"])});Et.scroll;const gn=me({name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:Boolean},setup(e){const a=ve("select"),i=V(),v=ke(),c=V([]);Ol(Tl,fe({...Ae(e)}));const f=p(()=>c.value.some(O=>O.visible===!0)),t=O=>{var y;return O.type.name==="ElOption"&&!!((y=O.component)!=null&&y.proxy)},r=O=>{const y=Y(O),b=[];return y.forEach(d=>{var u;ht(d)&&(t(d)?b.push(d.component.proxy):q(d.children)&&d.children.length?b.push(...r(d.children)):(u=d.component)!=null&&u.subTree&&b.push(...r(d.component.subTree)))}),b},g=()=>{c.value=r(v.subTree)};return je(()=>{g()}),Xt(i,g,{attributes:!0,subtree:!0,childList:!0}),{groupRef:i,visible:f,ns:a}}});function yn(e,a,i,v,c,f){return pe((m(),I("ul",{ref:"groupRef",class:h(e.ns.be("group","wrap"))},[D("li",{class:h(e.ns.be("group","title"))},G(e.label),3),D("li",null,[D("ul",{class:h(e.ns.b("group"))},[M(e.$slots,"default")],2)])],2)),[[Ke,e.visible]])}var Ge=De(gn,[["render",yn],["__file","option-group.vue"]]);const yl="ElSelect",be=new WeakMap,Sn=e=>(...a)=>{var i,v;const c=a[0];if(!c||c.includes('Slot "default" invoked outside of the render function')&&((i=a[2])!=null&&i.includes("ElTreeSelect")))return;const f=(v=be.get(e))==null?void 0:v.originalWarnHandler;if(f){f(...a);return}console.warn(...a)},On=e=>{let a=be.get(e);return a||(a={originalWarnHandler:e.config.warnHandler,handler:Sn(e),count:0},be.set(e,a)),a},Cn=me({name:yl,componentName:yl,components:{ElSelectMenu:vn,ElOption:Ue,ElOptions:mn,ElOptionGroup:Ge,ElTag:Rt,ElScrollbar:Dt,ElTooltip:kt,ElIcon:jt},directives:{ClickOutside:Tt},props:hn,emits:[ne,Il,"remove-tag","clear","visible-change","focus","blur","popup-scroll"],setup(e,{emit:a,slots:i}){const v=ke(),c=On(v.appContext);c.count+=1,v.appContext.config.warnHandler=c.handler;const f=p(()=>{const{modelValue:o,multiple:R}=e,T=R?[]:void 0;return q(o)?R?o:T:R?T:o}),t=fe({...Ae(e),modelValue:f}),r=bn(t,a),{calculatorRef:g,inputStyle:O}=on(),{getLabel:y,getValue:b,getOptions:d,getDisabled:u}=sn(e),C=o=>({label:y(o),value:b(o),disabled:u(o)}),E=o=>o.reduce((R,T)=>(R.push(T),T.children&&T.children.length>0&&R.push(...E(T.children)),R),[]),L=o=>{ln(o||[]).forEach(T=>{var ae;if(Q(T)&&(T.type.name==="ElOption"||T.type.name==="ElTree")){const P=T.type.name;if(P==="ElTree"){const j=((ae=T.props)==null?void 0:ae.data)||[];E(j).forEach(Z=>{Z.currentLabel=Z.label||(Q(Z.value)?"":Z.value),r.onOptionCreate(Z)})}else if(P==="ElOption"){const j={...T.props};j.currentLabel=j.label||(Q(j.value)?"":j.value),r.onOptionCreate(j)}}})};K(()=>{var o;return[(o=i.default)==null?void 0:o.call(i),f.value]},()=>{var o;e.persistent||r.expanded.value||(r.states.options.clear(),L((o=i.default)==null?void 0:o.call(i)))},{immediate:!0}),Ol(Re,fe({props:t,states:r.states,selectRef:r.selectRef,optionsArray:r.optionsArray,setSelected:r.setSelected,handleOptionSelect:r.handleOptionSelect,onOptionCreate:r.onOptionCreate,onOptionDestroy:r.onOptionDestroy}));const J=p(()=>e.multiple?r.states.selected.map(o=>o.currentLabel):r.states.selectedLabel);return Sl(()=>{const o=be.get(v.appContext);o&&(o.count-=1,o.count<=0&&(v.appContext.config.warnHandler=o.originalWarnHandler,be.delete(v.appContext)))}),{...r,modelValue:f,selectedLabel:J,calculatorRef:g,inputStyle:O,getLabel:y,getValue:b,getOptions:d,getDisabled:u,getOptionProps:C}}});function wn(e,a){const i=X("el-tag"),v=X("el-tooltip"),c=X("el-icon"),f=X("el-option"),t=X("el-option-group"),r=X("el-options"),g=X("el-scrollbar"),O=X("el-select-menu"),y=gt("click-outside");return pe((m(),I("div",{ref:"selectRef",class:h([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),[Ot(e.mouseEnterEventName)]:b=>e.states.inputHovering=!0,onMouseleave:b=>e.states.inputHovering=!1},[ee(v,{ref:"tooltipRef",visible:e.dropdownMenuVisible,placement:e.placement,teleported:e.teleported,"popper-class":[e.nsSelect.e("popper"),e.popperClass],"popper-style":e.popperStyle,"popper-options":e.popperOptions,"fallback-placements":e.fallbackPlacements,effect:e.effect,pure:"",trigger:"click",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,"stop-popper-mouse-event":!1,"gpu-acceleration":!1,persistent:e.persistent,"append-to":e.appendTo,"show-arrow":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:b=>e.states.isBeforeHide=!1},{default:B(()=>{var b;return[D("div",{ref:"wrapperRef",class:h([e.nsSelect.e("wrapper"),e.nsSelect.is("focused",e.isFocused),e.nsSelect.is("hovering",e.states.inputHovering),e.nsSelect.is("filterable",e.filterable),e.nsSelect.is("disabled",e.selectDisabled)]),onClick:de(e.toggleMenu,["prevent"])},[e.$slots.prefix?(m(),I("div",{key:0,ref:"prefixRef",class:h(e.nsSelect.e("prefix"))},[M(e.$slots,"prefix")],2)):N("v-if",!0),D("div",{ref:"selectionRef",class:h([e.nsSelect.e("selection"),e.nsSelect.is("near",e.multiple&&!e.$slots.prefix&&!!e.states.selected.length)])},[e.multiple?M(e.$slots,"tag",{key:0,data:e.states.selected,deleteTag:e.deleteTag,selectDisabled:e.selectDisabled},()=>[(m(!0),I(ue,null,Ie(e.showTagList,d=>(m(),I("div",{key:e.getValueKey(d),class:h(e.nsSelect.e("selected-item"))},[ee(i,{closable:!e.selectDisabled&&!d.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Ee(e.tagStyle),onClose:u=>e.deleteTag(u,d)},{default:B(()=>[D("span",{class:h(e.nsSelect.e("tags-text"))},[M(e.$slots,"label",{index:d.index,label:d.currentLabel,value:d.value},()=>[pl(G(d.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","style","onClose"])],2))),128)),e.collapseTags&&e.states.selected.length>e.maxCollapseTags?(m(),z(v,{key:0,ref:"tagTooltipRef",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,"fallback-placements":["bottom","top","right","left"],effect:e.effect,placement:"bottom","popper-class":e.popperClass,"popper-style":e.popperStyle,teleported:e.teleported},{default:B(()=>[D("div",{ref:"collapseItemRef",class:h(e.nsSelect.e("selected-item"))},[ee(i,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",style:Ee(e.collapseTagStyle)},{default:B(()=>[D("span",{class:h(e.nsSelect.e("tags-text"))}," + "+G(e.states.selected.length-e.maxCollapseTags),3)]),_:1},8,["size","type","effect","style"])],2)]),content:B(()=>[D("div",{ref:"tagMenuRef",class:h(e.nsSelect.e("selection"))},[(m(!0),I(ue,null,Ie(e.collapseTagList,d=>(m(),I("div",{key:e.getValueKey(d),class:h(e.nsSelect.e("selected-item"))},[ee(i,{class:"in-tooltip",closable:!e.selectDisabled&&!d.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,"disable-transitions":"",onClose:u=>e.deleteTag(u,d)},{default:B(()=>[D("span",{class:h(e.nsSelect.e("tags-text"))},[M(e.$slots,"label",{index:d.index,label:d.currentLabel,value:d.value},()=>[pl(G(d.currentLabel),1)])],2)]),_:2},1032,["closable","size","type","effect","onClose"])],2))),128))],2)]),_:3},8,["disabled","effect","popper-class","popper-style","teleported"])):N("v-if",!0)]):N("v-if",!0),D("div",{class:h([e.nsSelect.e("selected-item"),e.nsSelect.e("input-wrapper"),e.nsSelect.is("hidden",!e.filterable||e.selectDisabled)])},[pe(D("input",{id:e.inputId,ref:"inputRef","onUpdate:modelValue":d=>e.states.inputValue=d,type:"text",name:e.name,class:h([e.nsSelect.e("input"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Ee(e.inputStyle),tabindex:e.tabindex,role:"combobox",readonly:!e.filterable,spellcheck:"false","aria-activedescendant":((b=e.hoverOption)==null?void 0:b.id)||"","aria-controls":e.contentId,"aria-expanded":e.dropdownMenuVisible,"aria-label":e.ariaLabel,"aria-autocomplete":"none","aria-haspopup":"listbox",onKeydown:e.handleKeydown,onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onInput:e.onInput,onClick:de(e.toggleMenu,["stop"])},null,46,["id","onUpdate:modelValue","name","disabled","autocomplete","tabindex","readonly","aria-activedescendant","aria-controls","aria-expanded","aria-label","onKeydown","onCompositionstart","onCompositionupdate","onCompositionend","onInput","onClick"]),[[St,e.states.inputValue]]),e.filterable?(m(),I("span",{key:0,ref:"calculatorRef","aria-hidden":"true",class:h(e.nsSelect.e("input-calculator")),textContent:G(e.states.inputValue)},null,10,["textContent"])):N("v-if",!0)],2),e.shouldShowPlaceholder?(m(),I("div",{key:1,class:h([e.nsSelect.e("selected-item"),e.nsSelect.e("placeholder"),e.nsSelect.is("transparent",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?M(e.$slots,"label",{key:0,index:e.getOption(e.modelValue).index,label:e.currentPlaceholder,value:e.modelValue},()=>[D("span",null,G(e.currentPlaceholder),1)]):(m(),I("span",{key:1},G(e.currentPlaceholder),1))],2)):N("v-if",!0)],2),D("div",{ref:"suffixRef",class:h(e.nsSelect.e("suffix"))},[e.iconComponent&&!e.showClearBtn?(m(),z(c,{key:0,class:h([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.iconReverse])},{default:B(()=>[(m(),z(ze(e.iconComponent)))]),_:1},8,["class"])):N("v-if",!0),e.showClearBtn&&e.clearIcon?(m(),z(c,{key:1,class:h([e.nsSelect.e("caret"),e.nsSelect.e("icon"),e.nsSelect.e("clear")]),onClick:e.handleClearClick},{default:B(()=>[(m(),z(ze(e.clearIcon)))]),_:1},8,["class","onClick"])):N("v-if",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?(m(),z(c,{key:2,class:h([e.nsInput.e("icon"),e.nsInput.e("validateIcon"),e.nsInput.is("loading",e.validateState==="validating")])},{default:B(()=>[(m(),z(ze(e.validateIcon)))]),_:1},8,["class"])):N("v-if",!0)],2)],10,["onClick"])]}),content:B(()=>[ee(O,{ref:"menuRef"},{default:B(()=>[e.$slots.header?(m(),I("div",{key:0,class:h(e.nsSelect.be("dropdown","header")),onClick:de(()=>{},["stop"])},[M(e.$slots,"header")],10,["onClick"])):N("v-if",!0),pe(ee(g,{id:e.contentId,ref:"scrollbarRef",tag:"ul","wrap-class":e.nsSelect.be("dropdown","wrap"),"view-class":e.nsSelect.be("dropdown","list"),class:h([e.nsSelect.is("empty",e.filteredOptionsCount===0)]),role:"listbox","aria-label":e.ariaLabel,"aria-orientation":"vertical",onScroll:e.popupScroll},{default:B(()=>[e.showNewOption?(m(),z(f,{key:0,value:e.states.inputValue,created:!0},null,8,["value"])):N("v-if",!0),ee(r,null,{default:B(()=>[M(e.$slots,"default",{},()=>[(m(!0),I(ue,null,Ie(e.options,(b,d)=>{var u;return m(),I(ue,{key:d},[(u=e.getOptions(b))!=null&&u.length?(m(),z(t,{key:0,label:e.getLabel(b),disabled:e.getDisabled(b)},{default:B(()=>[(m(!0),I(ue,null,Ie(e.getOptions(b),C=>(m(),z(f,cl({key:e.getValue(C)},e.getOptionProps(C)),null,16))),128))]),_:2},1032,["label","disabled"])):(m(),z(f,yt(cl({key:1},e.getOptionProps(b))),null,16))],64)}),128))])]),_:3})]),_:3},8,["id","wrap-class","view-class","class","aria-label","onScroll"]),[[Ke,e.states.options.size>0&&!e.loading]]),e.$slots.loading&&e.loading?(m(),I("div",{key:1,class:h(e.nsSelect.be("dropdown","loading"))},[M(e.$slots,"loading")],2)):e.loading||e.filteredOptionsCount===0?(m(),I("div",{key:2,class:h(e.nsSelect.be("dropdown","empty"))},[M(e.$slots,"empty",{},()=>[D("span",null,G(e.emptyText),1)])],2)):N("v-if",!0),e.$slots.footer?(m(),I("div",{key:3,class:h(e.nsSelect.be("dropdown","footer")),onClick:de(()=>{},["stop"])},[M(e.$slots,"footer")],10,["onClick"])):N("v-if",!0)]),_:3},512)]),_:3},8,["visible","placement","teleported","popper-class","popper-style","popper-options","fallback-placements","effect","transition","persistent","append-to","show-arrow","offset","onBeforeShow","onHide"])],16,["onMouseleave"])),[[y,e.handleClickOutside,e.popperRef]])}var In=De(Cn,[["render",wn],["__file","select.vue"]]);const Bn=Ut(In,{Option:Ue,OptionGroup:Ge}),Nn=wl(Ue);wl(Ge);export{Bn as E,Nn as a,tn as b}; diff --git a/static/app/assets/el-skeleton-item-BLY1jEuR.css b/static/app/assets/el-skeleton-item-BLY1jEuR.css new file mode 100644 index 0000000..b28fd2a --- /dev/null +++ b/static/app/assets/el-skeleton-item-BLY1jEuR.css @@ -0,0 +1 @@ +.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%} diff --git a/static/app/assets/el-skeleton-item-CD5Idavp.js b/static/app/assets/el-skeleton-item-CD5Idavp.js new file mode 100644 index 0000000..458618f --- /dev/null +++ b/static/app/assets/el-skeleton-item-CD5Idavp.js @@ -0,0 +1 @@ +import{b,t as S,_ as h,u as N,a_ as P,s as $,J as E,d as I,z as T}from"./base-xgxQQEpV.js";import{A as p,j as u,o as i,c as w,l as B,C as t,n as f,X as v,g as j,i as C,L as V,Z as z,B as _,F as m,a4 as g,p as L,O as y,aj as O}from"./vendor-vue-WbiK4TmU.js";const F=b({animated:Boolean,count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:S([Number,Object])}}),R=b({variant:{type:String,values:["circle","rect","h1","h3","text","caption","p","image","button"],default:"text"}}),A=p({name:"ElSkeletonItem"}),H=p({...A,props:R,setup(l){const e=N("skeleton");return(r,s)=>(i(),u("div",{class:f([t(e).e("item"),t(e).e(r.variant)])},[r.variant==="image"?(i(),w(t(P),{key:0})):B("v-if",!0)],2))}});var c=h(H,[["__file","skeleton-item.vue"]]);const J=(l,e=0)=>{if(e===0)return l;const r=v(e)&&!!e.initVal,s=j(r);let o=null;const a=n=>{if(E(n)){s.value=l.value;return}o&&clearTimeout(o),o=setTimeout(()=>{s.value=l.value},n)},d=n=>{n==="leading"?$(e)?a(e):a(e.leading):v(e)?a(e.trailing):s.value=!1};return C(()=>d("leading")),V(()=>l.value,n=>{d(n?"leading":"trailing")}),s},M=p({name:"ElSkeleton"}),U=p({...M,props:F,setup(l,{expose:e}){const r=l,s=N("skeleton"),o=J(z(r,"loading"),r.throttle);return e({uiLoading:o}),(a,d)=>t(o)?(i(),u("div",y({key:0,class:[t(s).b(),t(s).is("animated",a.animated)]},a.$attrs),[(i(!0),u(m,null,g(a.count,n=>(i(),u(m,{key:n},[t(o)?_(a.$slots,"template",{key:n},()=>[L(c,{class:f(t(s).is("first")),variant:"p"},null,8,["class"]),(i(!0),u(m,null,g(a.rows,k=>(i(),w(c,{key:k,class:f([t(s).e("paragraph"),t(s).is("last",k===a.rows&&a.rows>1)]),variant:"p"},null,8,["class"]))),128))]):B("v-if",!0)],64))),128))],16)):_(a.$slots,"default",O(y({key:1},a.$attrs)))}});var X=h(U,[["__file","skeleton.vue"]]);const D=I(X,{SkeletonItem:c});T(c);export{D as E}; diff --git a/static/app/assets/http-BoPYlvwK.js b/static/app/assets/http-BoPYlvwK.js new file mode 100644 index 0000000..e0335f3 --- /dev/null +++ b/static/app/assets/http-BoPYlvwK.js @@ -0,0 +1,31 @@ +import{L as R,g as b,h,A as D,j as W,o as C,B as j,p as V,s as M,w as ve,k as H,U as ye,C as l,n as S,x as Fe,t as he,R as be,T as we,av as Ee,i as We,c as N,l as $,D as je,F as He,q as Qe,W as qe,J as Y,I as Oe,a0 as Q,_ as Ge,a1 as te}from"./vendor-vue-WbiK4TmU.js";import{aQ as K,a$ as Ve,b0 as _e,r as x,b1 as Ce,aI as Ye,b2 as Se,b3 as Ke,b as Te,t as z,_ as Ie,u as Ze,s as P,B as ne,d as Xe,y as Je,Y as et,az as se,E as oe,aA as tt,K as nt,R as st,v as F,b4 as ot}from"./base-xgxQQEpV.js";import{a as at}from"./vendor-axios-B9ygI19o.js";function O(e){var n;const t=Se(e);return(n=t?.$el)!=null?n:t}const I=x?window:void 0,rt=x?window.document:void 0;function _(...e){let n,t,s,a;if(Ve(e[0])||Array.isArray(e[0])?([t,s,a]=e,n=I):[n,t,s,a]=e,!n)return _e;Array.isArray(t)||(t=[t]),Array.isArray(s)||(s=[s]);const r=[],o=()=>{r.forEach(d=>d()),r.length=0},i=(d,f,c,m)=>(d.addEventListener(f,c,m),()=>d.removeEventListener(f,c,m)),u=R(()=>[O(n),Se(a)],([d,f])=>{o(),d&&r.push(...t.flatMap(c=>s.map(m=>i(d,c,m,f))))},{immediate:!0,flush:"post"}),g=()=>{u(),o()};return K(g),g}let ae=!1;function sn(e,n,t={}){const{window:s=I,ignore:a=[],capture:r=!0,detectIframe:o=!1}=t;if(!s)return;Ye&&!ae&&(ae=!0,Array.from(s.document.body.children).forEach(c=>c.addEventListener("click",_e)));let i=!0;const u=c=>a.some(m=>{if(typeof m=="string")return Array.from(s.document.querySelectorAll(m)).some(w=>w===c.target||c.composedPath().includes(w));{const w=O(m);return w&&(c.target===w||c.composedPath().includes(w))}}),d=[_(s,"click",c=>{const m=O(e);if(!(!m||m===c.target||c.composedPath().includes(m))){if(c.detail===0&&(i=!u(c)),!i){i=!0;return}n(c)}},{passive:!0,capture:r}),_(s,"pointerdown",c=>{const m=O(e);m&&(i=!c.composedPath().includes(m)&&!u(c))},{passive:!0}),o&&_(s,"blur",c=>{var m;const w=O(e);((m=s.document.activeElement)==null?void 0:m.tagName)==="IFRAME"&&!w?.contains(s.document.activeElement)&&n(c)})].filter(Boolean);return()=>d.forEach(c=>c())}function xe(e,n=!1){const t=b(),s=()=>t.value=!!e();return s(),Ce(s,n),t}const re=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ie="__vueuse_ssr_handlers__";re[ie]=re[ie]||{};function on({document:e=rt}={}){if(!e)return b("visible");const n=b(e.visibilityState);return _(e,"visibilitychange",()=>{n.value=e.visibilityState}),n}var le=Object.getOwnPropertySymbols,it=Object.prototype.hasOwnProperty,lt=Object.prototype.propertyIsEnumerable,ut=(e,n)=>{var t={};for(var s in e)it.call(e,s)&&n.indexOf(s)<0&&(t[s]=e[s]);if(e!=null&&le)for(var s of le(e))n.indexOf(s)<0&<.call(e,s)&&(t[s]=e[s]);return t};function Ae(e,n,t={}){const s=t,{window:a=I}=s,r=ut(s,["window"]);let o;const i=xe(()=>a&&"ResizeObserver"in a),u=()=>{o&&(o.disconnect(),o=void 0)},g=R(()=>O(e),f=>{u(),i.value&&a&&f&&(o=new ResizeObserver(n),o.observe(f,r))},{immediate:!0,flush:"post"}),d=()=>{u(),g()};return K(d),{isSupported:i,stop:d}}function an(e,n={width:0,height:0},t={}){const{window:s=I,box:a="content-box"}=t,r=h(()=>{var u,g;return(g=(u=O(e))==null?void 0:u.namespaceURI)==null?void 0:g.includes("svg")}),o=b(n.width),i=b(n.height);return Ae(e,([u])=>{const g=a==="border-box"?u.borderBoxSize:a==="content-box"?u.contentBoxSize:u.devicePixelContentBoxSize;if(s&&r.value){const d=O(e);if(d){const f=s.getComputedStyle(d);o.value=parseFloat(f.width),i.value=parseFloat(f.height)}}else if(g){const d=Array.isArray(g)?g:[g];o.value=d.reduce((f,{inlineSize:c})=>f+c,0),i.value=d.reduce((f,{blockSize:c})=>f+c,0)}else o.value=u.contentRect.width,i.value=u.contentRect.height},t),R(()=>O(e),u=>{o.value=u?n.width:0,i.value=u?n.height:0}),{width:o,height:i}}var ue=Object.getOwnPropertySymbols,ct=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable,pt=(e,n)=>{var t={};for(var s in e)ct.call(e,s)&&n.indexOf(s)<0&&(t[s]=e[s]);if(e!=null&&ue)for(var s of ue(e))n.indexOf(s)<0&&dt.call(e,s)&&(t[s]=e[s]);return t};function rn(e,n,t={}){const s=t,{window:a=I}=s,r=pt(s,["window"]);let o;const i=xe(()=>a&&"MutationObserver"in a),u=()=>{o&&(o.disconnect(),o=void 0)},g=R(()=>O(e),f=>{u(),i.value&&a&&f&&(o=new MutationObserver(n),o.observe(f,r))},{immediate:!0}),d=()=>{u(),g()};return K(d),{isSupported:i,stop:d}}var ce;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(ce||(ce={}));var ft=Object.defineProperty,de=Object.getOwnPropertySymbols,mt=Object.prototype.hasOwnProperty,gt=Object.prototype.propertyIsEnumerable,pe=(e,n,t)=>n in e?ft(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,vt=(e,n)=>{for(var t in n||(n={}))mt.call(n,t)&&pe(e,t,n[t]);if(de)for(var t of de(n))gt.call(n,t)&&pe(e,t,n[t]);return e};const yt={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};vt({linear:Ke},yt);function ln({window:e=I}={}){if(!e)return b(!1);const n=b(e.document.hasFocus());return _(e,"blur",()=>{n.value=!1}),_(e,"focus",()=>{n.value=!0}),n}function un(e={}){const{window:n=I,initialWidth:t=1/0,initialHeight:s=1/0,listenOrientation:a=!0,includeScrollbar:r=!0}=e,o=b(t),i=b(s),u=()=>{n&&(r?(o.value=n.innerWidth,i.value=n.innerHeight):(o.value=n.document.documentElement.clientWidth,i.value=n.document.documentElement.clientHeight))};return u(),Ce(u),_("resize",u,{passive:!0}),a&&_("orientationchange",u,{passive:!0}),{width:o,height:i}}const cn=()=>x&&/firefox/i.test(window.navigator.userAgent),ht=()=>x&&/android/i.test(window.navigator.userAgent),bt=e=>e,q={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},dn=(e,n,{checkForDefaultPrevented:t=!0}={})=>a=>{const r=e?.(a);if(t===!1||!r)return n?.(a)},wt=e=>{if(e.code&&e.code!=="Unidentified")return e.code;const n=Et(e);if(n){if(Object.values(q).includes(n))return n;switch(n){case" ":return q.space;default:return""}}return""},Et=e=>{let n=e.key&&e.key!=="Unidentified"?e.key:"";if(!n&&e.type==="keyup"&&ht()){const t=e.target;n=t.value.charAt(t.selectionStart-1)}return n},Ot=Te({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:z([String,Object,Array])},offset:{type:z(Array),default:[0,0]},badgeClass:{type:String}}),_t=D({name:"ElBadge"}),Ct=D({..._t,props:Ot,setup(e,{expose:n}){const t=e,s=Ze("badge"),a=h(()=>t.isDot?"":P(t.value)&&P(t.max)?t.max{var o;return[{backgroundColor:t.color,marginRight:ne(-t.offset[0]),marginTop:ne(t.offset[1])},(o=t.badgeStyle)!=null?o:{}]});return n({content:a}),(o,i)=>(C(),W("div",{class:S(l(s).b())},[j(o.$slots,"default"),V(we,{name:`${l(s).namespace.value}-zoom-in-center`,persisted:""},{default:M(()=>[ve(H("sup",{class:S([l(s).e("content"),l(s).em("content",o.type),l(s).is("fixed",!!o.$slots.default),l(s).is("dot",o.isDot),l(s).is("hide-zero",!o.showZero&&o.value===0),o.badgeClass]),style:ye(l(r))},[j(o.$slots,"content",{value:l(a)},()=>[Fe(he(l(a)),1)])],6),[[be,!o.hidden&&(l(a)||o.isDot||o.$slots.content)]])]),_:3},8,["name"])],2))}});var St=Ie(Ct,[["__file","badge.vue"]]);const Tt=Xe(St),y={placement:"top"},Ne=["primary","success","info","warning","error"],Pe=["top","top-left","top-right","bottom","bottom-left","bottom-right"],B="top",v=bt({customClass:"",dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,placement:void 0,zIndex:0,grouping:!1,repeatNum:1,appendTo:x?document.body:void 0}),It=Te({customClass:{type:String,default:v.customClass},dangerouslyUseHTMLString:{type:Boolean,default:v.dangerouslyUseHTMLString},duration:{type:Number,default:v.duration},icon:{type:Je,default:v.icon},id:{type:String,default:v.id},message:{type:z([String,Object,Function]),default:v.message},onClose:{type:z(Function),default:v.onClose},showClose:{type:Boolean,default:v.showClose},type:{type:String,values:Ne,default:v.type},plain:{type:Boolean,default:v.plain},offset:{type:Number,default:v.offset},placement:{type:String,values:Pe,default:v.placement},zIndex:{type:Number,default:v.zIndex},grouping:{type:Boolean,default:v.grouping},repeatNum:{type:Number,default:v.repeatNum}}),xt={destroy:()=>!0},E=Ee({}),At=e=>(E[e]||(E[e]=Ee([])),E[e]),Nt=(e,n)=>{const t=E[n]||[],s=t.findIndex(o=>o.id===e),a=t[s];let r;return s>0&&(r=t[s-1]),{current:a,prev:r}},Pt=(e,n)=>{const{prev:t}=Nt(e,n);return t?t.vm.exposed.bottom.value:0},Bt=(e,n,t)=>(E[t]||[]).findIndex(r=>r.id===e)>0?16:n,Rt=D({name:"ElMessage"}),kt=D({...Rt,props:It,emits:xt,setup(e,{expose:n,emit:t}){const s=e,{Close:a}=tt,r=b(!1),{ns:o,zIndex:i}=et("message"),{currentZIndex:u,nextZIndex:g}=i,d=b(),f=b(!1),c=b(0);let m;const w=h(()=>s.type?s.type==="error"?"danger":s.type:"info"),Re=h(()=>{const p=s.type;return{[o.bm("icon",p)]:p&&se[p]}}),Z=h(()=>s.icon||se[s.type]||""),A=h(()=>s.placement||B),ke=h(()=>Pt(s.id,A.value)),X=h(()=>Bt(s.id,s.offset,A.value)+ke.value),$e=h(()=>c.value+X.value),Le=h(()=>A.value.includes("left")?o.is("left"):A.value.includes("right")?o.is("right"):o.is("center")),J=h(()=>A.value.startsWith("top")?"top":"bottom"),Me=h(()=>({[J.value]:`${X.value}px`,zIndex:u.value}));function U(){s.duration!==0&&({stop:m}=nt(()=>{k()},s.duration))}function ee(){m?.()}function k(){f.value=!1,qe(()=>{var p;r.value||((p=s.onClose)==null||p.call(s),t("destroy"))})}function ze(p){wt(p)===q.esc&&k()}return We(()=>{U(),g(),f.value=!0}),R(()=>s.repeatNum,()=>{ee(),U()}),_(document,"keydown",ze),Ae(d,()=>{c.value=d.value.getBoundingClientRect().height}),n({visible:f,bottom:$e,close:k}),(p,De)=>(C(),N(we,{name:l(o).b("fade"),onBeforeEnter:Ue=>r.value=!0,onBeforeLeave:p.onClose,onAfterLeave:Ue=>p.$emit("destroy"),persisted:""},{default:M(()=>[ve(H("div",{id:p.id,ref_key:"messageRef",ref:d,class:S([l(o).b(),{[l(o).m(p.type)]:p.type},l(o).is("closable",p.showClose),l(o).is("plain",p.plain),l(o).is("bottom",l(J)==="bottom"),l(Le),p.customClass]),style:ye(l(Me)),role:"alert",onMouseenter:ee,onMouseleave:U},[p.repeatNum>1?(C(),N(l(Tt),{key:0,value:p.repeatNum,type:l(w),class:S(l(o).e("badge"))},null,8,["value","type","class"])):$("v-if",!0),l(Z)?(C(),N(l(oe),{key:1,class:S([l(o).e("icon"),l(Re)])},{default:M(()=>[(C(),N(je(l(Z))))]),_:1},8,["class"])):$("v-if",!0),j(p.$slots,"default",{},()=>[p.dangerouslyUseHTMLString?(C(),W(He,{key:1},[$(" Caution here, message could've been compromised, never use user's input as message "),H("p",{class:S(l(o).e("content")),innerHTML:p.message},null,10,["innerHTML"])],2112)):(C(),W("p",{key:0,class:S(l(o).e("content"))},he(p.message),3))]),p.showClose?(C(),N(l(oe),{key:2,class:S(l(o).e("closeBtn")),onClick:Qe(k,["stop"])},{default:M(()=>[V(l(a))]),_:1},8,["class","onClick"])):$("v-if",!0)],46,["id"]),[[be,f.value]])]),_:3},8,["name","onBeforeEnter","onBeforeLeave","onAfterLeave"]))}});var $t=Ie(kt,[["__file","message.vue"]]);let Lt=1;const Mt=e=>{if(!e.appendTo)e.appendTo=document.body;else if(Y(e.appendTo)){let t=document.querySelector(e.appendTo);st(t)||(t=document.body),e.appendTo=t}},zt=e=>{!e.placement&&Y(y.placement)&&y.placement&&(e.placement=y.placement),e.placement||(e.placement=B),Pe.includes(e.placement)||(e.placement=B)},Be=e=>{const n=!e||Y(e)||Oe(e)||Q(e)?{message:e}:e,t={...v,...n};return Mt(t),zt(t),F(y.grouping)&&!t.grouping&&(t.grouping=y.grouping),P(y.duration)&&t.duration===3e3&&(t.duration=y.duration),P(y.offset)&&t.offset===16&&(t.offset=y.offset),F(y.showClose)&&!t.showClose&&(t.showClose=y.showClose),F(y.plain)&&!t.plain&&(t.plain=y.plain),t},Dt=e=>{const n=e.props.placement||B,t=E[n],s=t.indexOf(e);if(s===-1)return;t.splice(s,1);const{handler:a}=e;a.close()},Ut=({appendTo:e,...n},t)=>{const s=`message_${Lt++}`,a=n.onClose,r=document.createElement("div"),o={...n,id:s,onClose:()=>{a?.(),Dt(d)},onDestroy:()=>{te(null,r)}},i=V($t,o,Q(o.message)||Oe(o.message)?{default:Q(o.message)?o.message:()=>o.message}:null);i.appContext=t||T._context,te(i,r),e.appendChild(r.firstElementChild);const u=i.component,d={id:s,vnode:i,vm:u,handler:{close:()=>{u.exposed.close()}},props:i.component.props};return d},T=(e={},n)=>{if(!x)return{close:()=>{}};const t=Be(e),s=At(t.placement||B);if(t.grouping&&s.length){const r=s.find(({vnode:o})=>{var i;return((i=o.props)==null?void 0:i.message)===t.message});if(r)return r.props.repeatNum+=1,r.props.type=t.type,r.handler}if(P(y.max)&&s.length>=y.max)return{close:()=>{}};const a=Ut(t,n);return s.push(a),a.handler};Ne.forEach(e=>{T[e]=(n={},t)=>{const s=Be(n);return T({...s,type:e},t)}});function Ft(e){for(const n in E)if(Ge(E,n)){const t=[...E[n]];for(const s of t)(!e||e===s.props.type)&&s.handler.close()}}function Wt(e){if(!E[e])return;[...E[e]].forEach(t=>t.handler.close())}T.closeAll=Ft;T.closeAllByPlacement=Wt;T._context=null;const pn=ot(T,"$message");let fe="",me=0;const jt=new Set([408,425,429,500,502,503,504]),Ht=1,Qt=300,ge="zsglpt-lite-toast-style";function qt(){if(typeof document>"u"||document.getElementById(ge))return;const e=document.createElement("style");e.id=ge,e.textContent=` + .zsglpt-lite-toast-wrap { + position: fixed; + right: 16px; + top: 16px; + z-index: 9999; + display: flex; + flex-direction: column; + gap: 8px; + pointer-events: none; + } + .zsglpt-lite-toast { + max-width: min(88vw, 420px); + padding: 10px 12px; + border-radius: 10px; + color: #fff; + font-size: 13px; + font-weight: 600; + box-shadow: 0 8px 20px rgba(15, 23, 42, 0.24); + opacity: 0; + transform: translateY(-6px); + transition: all .18s ease; + } + .zsglpt-lite-toast.is-visible { + opacity: 1; + transform: translateY(0); + } + .zsglpt-lite-toast.is-error { + background: linear-gradient(135deg, #ef4444, #dc2626); + } + `,document.head.appendChild(e)}function Gt(){if(typeof document>"u")return null;qt();let e=document.querySelector(".zsglpt-lite-toast-wrap");return e||(e=document.createElement("div"),e.className="zsglpt-lite-toast-wrap",document.body.appendChild(e),e)}function Vt(e){const n=Gt();if(!n)return;const t=document.createElement("div");t.className="zsglpt-lite-toast is-error",t.textContent=String(e||"请求失败"),n.appendChild(t),requestAnimationFrame(()=>t.classList.add("is-visible")),window.setTimeout(()=>t.classList.remove("is-visible"),2300),window.setTimeout(()=>t.remove(),2600)}function L(e,n,t=1500){const s=Date.now();e===fe&&s-me=Ht)return!1;const s=String(e?.code||"");if(s==="ECONNABORTED"||s==="ERR_NETWORK")return!0;const a=Number(e?.response?.status||0);return jt.has(a)}function Xt(e){return new Promise(n=>{window.setTimeout(n,Math.max(0,Number(e||0)))})}async function Jt(e,n){const t=e?.config||{},s=Number(t.__retry_count||0);t.__retry_count=s+1;const a=Qt*(s+1);return await Xt(a),n.request(t)}const G=at.create({baseURL:"/api",timeout:3e4,withCredentials:!0});G.interceptors.request.use(e=>{const n=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(n)){const t=Yt("csrf_token");t&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=t)}return e});G.interceptors.response.use(e=>e,e=>{if(Zt(e))return Jt(e,G);const n=e?.response?.status,t=e?.response?.data,s=t?.error||t?.message||e?.message||"请求失败";return n===401?(window.location?.pathname||"").startsWith("/login")||(L("401",s,3e3),window.location.href="/login"):n===403?L("403",s,5e3):e?.code==="ECONNABORTED"?L("timeout","请求超时",3e3):n||L(`net:${s}`,s,3e3),Promise.reject(e)});export{pn as E,_ as a,q as b,Ae as c,O as d,on as e,ln as f,wt as g,an as h,cn as i,rn as j,dn as k,bt as m,sn as o,G as p,un as u}; diff --git a/static/app/assets/http-CdvgQxJu.js b/static/app/assets/http-CdvgQxJu.js deleted file mode 100644 index 32931ac..0000000 --- a/static/app/assets/http-CdvgQxJu.js +++ /dev/null @@ -1,31 +0,0 @@ -import{b5 as Qe,aC as Xe,n as Re,o as wt,az as Xt,aq as Et,ar as Zt,b6 as Jt,g as en,ap as tn,b7 as nn,a$ as Le,b8 as on,b9 as St,r as Y,ba as Ct,aT as sn,bb as xt,bc as an,s as q,b as Ce,t as M,y as he,a8 as rn,Y as ln,aZ as un,_ as Be,u as ke,X as cn,ak as dn,ah as pn,ai as fn,aS as mn,bd as vn,be as gn,O as hn,A as K,d as Ot,D as Ze,a2 as yn,aI as Je,aJ as bn,N as wn,W as En,v as Pe,bf as Sn}from"./el-button-DWxIvzz-.js";import{L as F,g as C,h as g,J as se,V as Tt,E as ye,a0 as ue,C as a,W as D,A as ae,ac as Cn,S as xn,i as It,Z as On,j as A,o as b,l as S,F as be,k as B,n as E,B as j,c as I,s as $,D as ne,O as et,p as we,ad as _e,t as oe,U as Se,X as tt,q as $e,w as Nt,x as Tn,R as Pt,T as _t,av as At,I as kt,_ as In,a1 as nt}from"./vendor-vue-DxN60LNb.js";import{a as Nn}from"./vendor-axios-B9ygI19o.js";function Pn(e){return e}function _n(e,t,o){switch(o.length){case 0:return e.call(t);case 1:return e.call(t,o[0]);case 2:return e.call(t,o[0],o[1]);case 3:return e.call(t,o[0],o[1],o[2])}return e.apply(t,o)}var An=800,kn=16,Mn=Date.now;function zn(e){var t=0,o=0;return function(){var n=Mn(),r=kn-(n-o);if(o=n,r>0){if(++t>=An)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Rn(e){return function(){return e}}var Ln=Qe?function(e,t){return Qe(e,"toString",{configurable:!0,enumerable:!1,value:Rn(t),writable:!0})}:Pn,Bn=zn(Ln),ot=Math.max;function $n(e,t,o){return t=ot(t===void 0?e.length-1:t,0),function(){for(var n=arguments,r=-1,l=ot(n.length-t,0),s=Array(l);++r{l.forEach(p=>p()),l.length=0},u=(p,h,f,m)=>(p.addEventListener(h,f,m),()=>p.removeEventListener(h,f,m)),d=F(()=>[R(t),xt(r)],([p,h])=>{s(),p&&l.push(...o.flatMap(f=>n.map(m=>u(p,f,m,h))))},{immediate:!0,flush:"post"}),v=()=>{d(),s()};return Le(v),v}let at=!1;function gs(e,t,o={}){const{window:n=Q,ignore:r=[],capture:l=!0,detectIframe:s=!1}=o;if(!n)return;sn&&!at&&(at=!0,Array.from(n.document.body.children).forEach(f=>f.addEventListener("click",St)));let u=!0;const d=f=>r.some(m=>{if(typeof m=="string")return Array.from(n.document.querySelectorAll(m)).some(c=>c===f.target||f.composedPath().includes(c));{const c=R(m);return c&&(f.target===c||f.composedPath().includes(c))}}),p=[k(n,"click",f=>{const m=R(e);if(!(!m||m===f.target||f.composedPath().includes(m))){if(f.detail===0&&(u=!d(f)),!u){u=!0;return}t(f)}},{passive:!0,capture:l}),k(n,"pointerdown",f=>{const m=R(e);m&&(u=!f.composedPath().includes(m)&&!d(f))},{passive:!0}),s&&k(n,"blur",f=>{var m;const c=R(e);((m=n.document.activeElement)==null?void 0:m.tagName)==="IFRAME"&&!c?.contains(n.document.activeElement)&&t(f)})].filter(Boolean);return()=>p.forEach(f=>f())}function Mt(e,t=!1){const o=C(),n=()=>o.value=!!e();return n(),Ct(n,t),o}const rt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},it="__vueuse_ssr_handlers__";rt[it]=rt[it]||{};function hs({document:e=Yn}={}){if(!e)return C("visible");const t=C(e.visibilityState);return k(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var lt=Object.getOwnPropertySymbols,Qn=Object.prototype.hasOwnProperty,Xn=Object.prototype.propertyIsEnumerable,Zn=(e,t)=>{var o={};for(var n in e)Qn.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(e!=null&<)for(var n of lt(e))t.indexOf(n)<0&&Xn.call(e,n)&&(o[n]=e[n]);return o};function Fe(e,t,o={}){const n=o,{window:r=Q}=n,l=Zn(n,["window"]);let s;const u=Mt(()=>r&&"ResizeObserver"in r),d=()=>{s&&(s.disconnect(),s=void 0)},v=F(()=>R(e),h=>{d(),u.value&&r&&h&&(s=new ResizeObserver(t),s.observe(h,l))},{immediate:!0,flush:"post"}),p=()=>{d(),v()};return Le(p),{isSupported:u,stop:p}}function ys(e,t={width:0,height:0},o={}){const{window:n=Q,box:r="content-box"}=o,l=g(()=>{var d,v;return(v=(d=R(e))==null?void 0:d.namespaceURI)==null?void 0:v.includes("svg")}),s=C(t.width),u=C(t.height);return Fe(e,([d])=>{const v=r==="border-box"?d.borderBoxSize:r==="content-box"?d.contentBoxSize:d.devicePixelContentBoxSize;if(n&&l.value){const p=R(e);if(p){const h=n.getComputedStyle(p);s.value=parseFloat(h.width),u.value=parseFloat(h.height)}}else if(v){const p=Array.isArray(v)?v:[v];s.value=p.reduce((h,{inlineSize:f})=>h+f,0),u.value=p.reduce((h,{blockSize:f})=>h+f,0)}else s.value=d.contentRect.width,u.value=d.contentRect.height},o),F(()=>R(e),d=>{s.value=d?t.width:0,u.value=d?t.height:0}),{width:s,height:u}}var ut=Object.getOwnPropertySymbols,Jn=Object.prototype.hasOwnProperty,eo=Object.prototype.propertyIsEnumerable,to=(e,t)=>{var o={};for(var n in e)Jn.call(e,n)&&t.indexOf(n)<0&&(o[n]=e[n]);if(e!=null&&ut)for(var n of ut(e))t.indexOf(n)<0&&eo.call(e,n)&&(o[n]=e[n]);return o};function bs(e,t,o={}){const n=o,{window:r=Q}=n,l=to(n,["window"]);let s;const u=Mt(()=>r&&"MutationObserver"in r),d=()=>{s&&(s.disconnect(),s=void 0)},v=F(()=>R(e),h=>{d(),u.value&&r&&h&&(s=new MutationObserver(t),s.observe(h,l))},{immediate:!0}),p=()=>{d(),v()};return Le(p),{isSupported:u,stop:p}}var ct;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(ct||(ct={}));var no=Object.defineProperty,dt=Object.getOwnPropertySymbols,oo=Object.prototype.hasOwnProperty,so=Object.prototype.propertyIsEnumerable,pt=(e,t,o)=>t in e?no(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,ao=(e,t)=>{for(var o in t||(t={}))oo.call(t,o)&&pt(e,o,t[o]);if(dt)for(var o of dt(t))so.call(t,o)&&pt(e,o,t[o]);return e};const ro={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};ao({linear:an},ro);function ws({window:e=Q}={}){if(!e)return C(!1);const t=C(e.document.hasFocus());return k(e,"blur",()=>{t.value=!1}),k(e,"focus",()=>{t.value=!0}),t}function Es(e={}){const{window:t=Q,initialWidth:o=1/0,initialHeight:n=1/0,listenOrientation:r=!0,includeScrollbar:l=!0}=e,s=C(o),u=C(n),d=()=>{t&&(l?(s.value=t.innerWidth,u.value=t.innerHeight):(s.value=t.document.documentElement.clientWidth,u.value=t.document.documentElement.clientHeight))};return d(),Ct(d),k("resize",d,{passive:!0}),r&&k("orientationchange",d,{passive:!0}),{width:s,height:u}}class io extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function Ss(e,t){throw new io(`[${e}] ${t}`)}function Cs(e,t){}const Ee="update:modelValue",ft="change",Ae="input",lo=()=>Y&&/firefox/i.test(window.navigator.userAgent),uo=()=>Y&&/android/i.test(window.navigator.userAgent);let P;const co={height:"0",visibility:"hidden",overflow:lo()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},po=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break"],mt=e=>{const t=Number.parseFloat(e);return Number.isNaN(t)?e:t};function fo(e){const t=window.getComputedStyle(e),o=t.getPropertyValue("box-sizing"),n=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),r=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:po.map(s=>[s,t.getPropertyValue(s)]),paddingSize:n,borderSize:r,boxSizing:o}}function vt(e,t=1,o){var n,r;P||(P=document.createElement("textarea"),((n=e.parentNode)!=null?n:document.body).appendChild(P));const{paddingSize:l,borderSize:s,boxSizing:u,contextStyle:d}=fo(e);d.forEach(([f,m])=>P?.style.setProperty(f,m)),Object.entries(co).forEach(([f,m])=>P?.style.setProperty(f,m,"important")),P.value=e.value||e.placeholder||"";let v=P.scrollHeight;const p={};u==="border-box"?v=v+s:u==="content-box"&&(v=v-l),P.value="";const h=P.scrollHeight-l;if(q(t)){let f=h*t;u==="border-box"&&(f=f+l+s),v=Math.max(f,v),p.minHeight=`${f}px`}if(q(o)){let f=h*o;u==="border-box"&&(f=f+l+s),v=Math.min(f,v)}return p.height=`${v}px`,(r=P.parentNode)==null||r.removeChild(P),P=void 0,p}const zt=e=>e,mo=Ce({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),vo=e=>Gn(mo,e),go=Ce({id:{type:String,default:void 0},size:ln,disabled:{type:Boolean,default:void 0},modelValue:{type:M([String,Number,Object]),default:""},modelModifiers:{type:M(Object),default:()=>({})},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:M(String),default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:M([Boolean,Object]),default:!1},autocomplete:{type:M(String),default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,clearIcon:{type:he,default:rn},showPassword:Boolean,showWordLimit:Boolean,wordLimitPosition:{type:String,values:["inside","outside"],default:"inside"},suffixIcon:{type:he},prefixIcon:{type:he},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:M([Object,Array,String]),default:()=>zt({})},autofocus:Boolean,rows:{type:Number,default:2},...vo(["ariaLabel"]),inputmode:{type:M(String),default:void 0},name:String}),ho={[Ee]:e=>se(e),input:e=>se(e),change:(e,t)=>se(e)&&(t instanceof Event||t===void 0),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},yo=["class","style"],bo=/^on[A-Z]/,wo=(e={})=>{const{excludeListeners:t=!1,excludeKeys:o}=e,n=g(()=>(o?.value||[]).concat(yo)),r=Tt();return r?g(()=>{var l;return un(Object.entries((l=r.proxy)==null?void 0:l.$attrs).filter(([s])=>!n.value.includes(s)&&!(t&&bo.test(s))))}):g(()=>({}))},Eo='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',gt=e=>typeof Element>"u"?!1:e instanceof Element,So=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,xs=e=>Array.from(e.querySelectorAll(Eo)).filter(t=>De(t)&&So(t)),De=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},Os=function(e,t,...o){let n;t.includes("mouse")||t.includes("click")?n="MouseEvents":t.includes("key")?n="KeyboardEvent":n="HTMLEvents";const r=document.createEvent(n);return r.initEvent(t,...o),e.dispatchEvent(r),e},Ts=(e,t)=>{if(!e||!e.focus)return;let o=!1;gt(e)&&!De(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),o=!0),e.focus(t),gt(e)&&o&&e.removeAttribute("tabindex")};function Co(e,{disabled:t,beforeFocus:o,afterFocus:n,beforeBlur:r,afterBlur:l}={}){const s=Tt(),{emit:u}=s,d=ye(),v=C(!1),p=m=>{const c=ue(o)?o(m):!1;a(t)||v.value||c||(v.value=!0,u("focus",m),n?.())},h=m=>{var c;const L=ue(r)?r(m):!1;a(t)||m.relatedTarget&&((c=d.value)!=null&&c.contains(m.relatedTarget))||L||(v.value=!1,u("blur",m),l?.())},f=m=>{var c,L;a(t)||De(m.target)||(c=d.value)!=null&&c.contains(document.activeElement)&&d.value!==document.activeElement||(L=e.value)==null||L.focus()};return F([d,()=>a(t)],([m,c])=>{m&&(c?m.removeAttribute("tabindex"):m.setAttribute("tabindex","-1"))}),k(d,"focus",p,!0),k(d,"blur",h,!0),k(d,"click",f,!0),{isFocused:v,wrapperRef:d,handleFocus:p,handleBlur:h}}const xo=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function Oo({afterComposition:e,emit:t}){const o=C(!1),n=u=>{t?.("compositionstart",u),o.value=!0},r=u=>{var d;t?.("compositionupdate",u);const v=(d=u.target)==null?void 0:d.value,p=v[v.length-1]||"";o.value=!xo(p)},l=u=>{t?.("compositionend",u),o.value&&(o.value=!1,D(()=>e(u)))};return{isComposing:o,handleComposition:u=>{u.type==="compositionend"?l(u):r(u)},handleCompositionStart:n,handleCompositionUpdate:r,handleCompositionEnd:l}}function To(e){let t;function o(){if(e.value==null)return;const{selectionStart:r,selectionEnd:l,value:s}=e.value;if(r==null||l==null)return;const u=s.slice(0,Math.max(0,r)),d=s.slice(Math.max(0,l));t={selectionStart:r,selectionEnd:l,value:s,beforeTxt:u,afterTxt:d}}function n(){if(e.value==null||t==null)return;const{value:r}=e.value,{beforeTxt:l,afterTxt:s,selectionStart:u}=t;if(l==null||s==null||u==null)return;let d=r.length;if(r.endsWith(s))d=r.length-s.length;else if(r.startsWith(l))d=l.length;else{const v=l[u-1],p=r.indexOf(v,u-1);p!==-1&&(d=p+1)}e.value.setSelectionRange(d,d)}return[o,n]}const Io="ElInput",No=ae({name:Io,inheritAttrs:!1}),Po=ae({...No,props:go,emits:ho,setup(e,{expose:t,emit:o}){const n=e,r=Cn(),l=wo(),s=xn(),u=g(()=>[n.type==="textarea"?L.b():c.b(),c.m(f.value),c.is("disabled",m.value),c.is("exceed",Ft.value),{[c.b("group")]:s.prepend||s.append,[c.m("prefix")]:s.prefix||n.prefixIcon,[c.m("suffix")]:s.suffix||n.suffixIcon||n.clearable||n.showPassword,[c.bm("suffix","password-clear")]:ve.value&&Te.value,[c.b("hidden")]:n.type==="hidden"},r.class]),d=g(()=>[c.e("wrapper"),c.is("focus",U.value)]),{form:v,formItem:p}=pn(),{inputId:h}=fn(n,{formItemContext:p}),f=cn(),m=dn(),c=ke("input"),L=ke("textarea"),V=ye(),T=ye(),re=C(!1),H=C(!1),de=C(),X=ye(n.inputStyle),_=g(()=>V.value||T.value),{wrapperRef:xe,isFocused:U,handleFocus:pe,handleBlur:Z}=Co(_,{disabled:m,afterBlur(){var i;n.validateEvent&&((i=p?.validate)==null||i.call(p,"blur").catch(w=>void 0))}}),fe=g(()=>{var i;return(i=v?.statusIcon)!=null?i:!1}),y=g(()=>p?.validateState||""),me=g(()=>y.value&&mn[y.value]),Oe=g(()=>H.value?vn:gn),$t=g(()=>[r.style]),Ve=g(()=>[n.inputStyle,X.value,{resize:n.resize}]),W=g(()=>hn(n.modelValue)?"":String(n.modelValue)),ve=g(()=>n.clearable&&!m.value&&!n.readonly&&!!W.value&&(U.value||re.value)),Te=g(()=>n.showPassword&&!m.value&&!!W.value),J=g(()=>n.showWordLimit&&!!n.maxlength&&(n.type==="text"||n.type==="textarea")&&!m.value&&!n.readonly&&!n.showPassword),Ie=g(()=>W.value.length),Ft=g(()=>!!J.value&&Ie.value>Number(n.maxlength)),Dt=g(()=>!!s.suffix||!!n.suffixIcon||ve.value||n.showPassword||J.value||!!y.value&&fe.value),Vt=g(()=>!!Object.keys(n.modelModifiers).length),[Ht,Ut]=To(V);Fe(T,i=>{if(Wt(),!J.value||n.resize!=="both"&&n.resize!=="horizontal")return;const w=i[0],{width:x}=w.contentRect;de.value={right:`calc(100% - ${x+22-10}px)`}});const ie=()=>{const{type:i,autosize:w}=n;if(!(!Y||i!=="textarea"||!T.value))if(w){const x=tt(w)?w.minRows:void 0,te=tt(w)?w.maxRows:void 0,le=vt(T.value,x,te);X.value={overflowY:"hidden",...le},D(()=>{T.value.offsetHeight,X.value=le})}else X.value={minHeight:vt(T.value).minHeight}},Wt=(i=>{let w=!1;return()=>{var x;if(w||!n.autosize)return;((x=T.value)==null?void 0:x.offsetParent)===null||(setTimeout(i),w=!0)}})(ie),ee=()=>{const i=_.value,w=n.formatter?n.formatter(W.value):W.value;!i||i.value===w||n.type==="file"||(i.value=w)},He=i=>{const{trim:w,number:x}=n.modelModifiers;return w&&(i=i.trim()),x&&(i=`${mt(i)}`),n.formatter&&n.parser&&(i=n.parser(i)),i},Ne=async i=>{if(We.value)return;const{lazy:w}=n.modelModifiers;let{value:x}=i.target;if(w){o(Ae,x);return}if(x=He(x),String(x)===W.value){n.formatter&&ee();return}Ht(),o(Ee,x),o(Ae,x),await D(),(n.formatter&&n.parser||!Vt.value)&&ee(),Ut()},Ue=async i=>{let{value:w}=i.target;w=He(w),n.modelModifiers.lazy&&o(Ee,w),o(ft,w,i),await D(),ee()},{isComposing:We,handleCompositionStart:Ke,handleCompositionUpdate:je,handleCompositionEnd:qe}=Oo({emit:o,afterComposition:Ne}),Kt=()=>{H.value=!H.value},jt=()=>{var i;return(i=_.value)==null?void 0:i.focus()},qt=()=>{var i;return(i=_.value)==null?void 0:i.blur()},Gt=i=>{re.value=!1,o("mouseleave",i)},Yt=i=>{re.value=!0,o("mouseenter",i)},Ge=i=>{o("keydown",i)},Qt=()=>{var i;(i=_.value)==null||i.select()},Ye=()=>{o(Ee,""),o(ft,""),o("clear"),o(Ae,"")};return F(()=>n.modelValue,()=>{var i;D(()=>ie()),n.validateEvent&&((i=p?.validate)==null||i.call(p,"change").catch(w=>void 0))}),F(W,i=>{if(!_.value)return;const{trim:w,number:x}=n.modelModifiers,te=_.value.value,le=(x||n.type==="number")&&!/^0\d/.test(te)?`${mt(te)}`:te;le!==i&&(document.activeElement===_.value&&_.value.type!=="range"&&w&&le.trim()===i||ee())}),F(()=>n.type,async()=>{await D(),ee(),ie()}),It(()=>{!n.formatter&&n.parser,ee(),D(ie)}),t({input:V,textarea:T,ref:_,textareaStyle:Ve,autosize:On(n,"autosize"),isComposing:We,focus:jt,blur:qt,select:Qt,clear:Ye,resizeTextarea:ie}),(i,w)=>(b(),A("div",{class:E([a(u),{[a(c).bm("group","append")]:i.$slots.append,[a(c).bm("group","prepend")]:i.$slots.prepend}]),style:Se(a($t)),onMouseenter:Yt,onMouseleave:Gt},[S(" input "),i.type!=="textarea"?(b(),A(be,{key:0},[S(" prepend slot "),i.$slots.prepend?(b(),A("div",{key:0,class:E(a(c).be("group","prepend"))},[j(i.$slots,"prepend")],2)):S("v-if",!0),B("div",{ref_key:"wrapperRef",ref:xe,class:E(a(d))},[S(" prefix slot "),i.$slots.prefix||i.prefixIcon?(b(),A("span",{key:0,class:E(a(c).e("prefix"))},[B("span",{class:E(a(c).e("prefix-inner"))},[j(i.$slots,"prefix"),i.prefixIcon?(b(),I(a(K),{key:0,class:E(a(c).e("icon"))},{default:$(()=>[(b(),I(ne(i.prefixIcon)))]),_:1},8,["class"])):S("v-if",!0)],2)],2)):S("v-if",!0),B("input",et({id:a(h),ref_key:"input",ref:V,class:a(c).e("inner")},a(l),{name:i.name,minlength:i.minlength,maxlength:i.maxlength,type:i.showPassword?H.value?"text":"password":i.type,disabled:a(m),readonly:i.readonly,autocomplete:i.autocomplete,tabindex:i.tabindex,"aria-label":i.ariaLabel,placeholder:i.placeholder,style:i.inputStyle,form:i.form,autofocus:i.autofocus,role:i.containerRole,inputmode:i.inputmode,onCompositionstart:a(Ke),onCompositionupdate:a(je),onCompositionend:a(qe),onInput:Ne,onChange:Ue,onKeydown:Ge}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),S(" suffix slot "),a(Dt)?(b(),A("span",{key:1,class:E(a(c).e("suffix"))},[B("span",{class:E(a(c).e("suffix-inner"))},[!a(ve)||!a(Te)||!a(J)?(b(),A(be,{key:0},[j(i.$slots,"suffix"),i.suffixIcon?(b(),I(a(K),{key:0,class:E(a(c).e("icon"))},{default:$(()=>[(b(),I(ne(i.suffixIcon)))]),_:1},8,["class"])):S("v-if",!0)],64)):S("v-if",!0),a(ve)?(b(),I(a(K),{key:1,class:E([a(c).e("icon"),a(c).e("clear")]),onMousedown:we(a(_e),["prevent"]),onClick:Ye},{default:$(()=>[(b(),I(ne(i.clearIcon)))]),_:1},8,["class","onMousedown"])):S("v-if",!0),a(Te)?(b(),I(a(K),{key:2,class:E([a(c).e("icon"),a(c).e("password")]),onClick:Kt,onMousedown:we(a(_e),["prevent"]),onMouseup:we(a(_e),["prevent"])},{default:$(()=>[(b(),I(ne(a(Oe))))]),_:1},8,["class","onMousedown","onMouseup"])):S("v-if",!0),a(J)?(b(),A("span",{key:3,class:E([a(c).e("count"),a(c).is("outside",i.wordLimitPosition==="outside")])},[B("span",{class:E(a(c).e("count-inner"))},oe(a(Ie))+" / "+oe(i.maxlength),3)],2)):S("v-if",!0),a(y)&&a(me)&&a(fe)?(b(),I(a(K),{key:4,class:E([a(c).e("icon"),a(c).e("validateIcon"),a(c).is("loading",a(y)==="validating")])},{default:$(()=>[(b(),I(ne(a(me))))]),_:1},8,["class"])):S("v-if",!0)],2)],2)):S("v-if",!0)],2),S(" append slot "),i.$slots.append?(b(),A("div",{key:1,class:E(a(c).be("group","append"))},[j(i.$slots,"append")],2)):S("v-if",!0)],64)):(b(),A(be,{key:1},[S(" textarea "),B("textarea",et({id:a(h),ref_key:"textarea",ref:T,class:[a(L).e("inner"),a(c).is("focus",a(U))]},a(l),{name:i.name,minlength:i.minlength,maxlength:i.maxlength,tabindex:i.tabindex,disabled:a(m),readonly:i.readonly,autocomplete:i.autocomplete,style:a(Ve),"aria-label":i.ariaLabel,placeholder:i.placeholder,form:i.form,autofocus:i.autofocus,rows:i.rows,role:i.containerRole,onCompositionstart:a(Ke),onCompositionupdate:a(je),onCompositionend:a(qe),onInput:Ne,onFocus:a(pe),onBlur:a(Z),onChange:Ue,onKeydown:Ge}),null,16,["id","name","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),a(J)?(b(),A("span",{key:0,style:Se(de.value),class:E([a(c).e("count"),a(c).is("outside",i.wordLimitPosition==="outside")])},oe(a(Ie))+" / "+oe(i.maxlength),7)):S("v-if",!0)],64))],38))}});var _o=Be(Po,[["__file","input.vue"]]);const Is=Ot(_o),Me={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},Ns=(e,t,{checkForDefaultPrevented:o=!0}={})=>r=>{const l=e?.(r);if(o===!1||!l)return t?.(r)},Ao=e=>{if(e.code&&e.code!=="Unidentified")return e.code;const t=ko(e);if(t){if(Object.values(Me).includes(t))return t;switch(t){case" ":return Me.space;default:return""}}return""},ko=e=>{let t=e.key&&e.key!=="Unidentified"?e.key:"";if(!t&&e.type==="keyup"&&uo()){const o=e.target;t=o.value.charAt(o.selectionStart-1)}return t},Mo=Ce({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:M([String,Object,Array])},offset:{type:M(Array),default:[0,0]},badgeClass:{type:String}}),zo=ae({name:"ElBadge"}),Ro=ae({...zo,props:Mo,setup(e,{expose:t}){const o=e,n=ke("badge"),r=g(()=>o.isDot?"":q(o.value)&&q(o.max)?o.max{var s;return[{backgroundColor:o.color,marginRight:Ze(-o.offset[0]),marginTop:Ze(o.offset[1])},(s=o.badgeStyle)!=null?s:{}]});return t({content:r}),(s,u)=>(b(),A("div",{class:E(a(n).b())},[j(s.$slots,"default"),$e(_t,{name:`${a(n).namespace.value}-zoom-in-center`,persisted:""},{default:$(()=>[Nt(B("sup",{class:E([a(n).e("content"),a(n).em("content",s.type),a(n).is("fixed",!!s.$slots.default),a(n).is("dot",s.isDot),a(n).is("hide-zero",!s.showZero&&s.value===0),s.badgeClass]),style:Se(a(l))},[j(s.$slots,"content",{value:a(r)},()=>[Tn(oe(a(r)),1)])],6),[[Pt,!s.hidden&&(a(r)||s.isDot||s.$slots.content)]])]),_:3},8,["name"])],2))}});var Lo=Be(Ro,[["__file","badge.vue"]]);const Bo=Ot(Lo),N={placement:"top"},Rt=["primary","success","info","warning","error"],Lt=["top","top-left","top-right","bottom","bottom-left","bottom-right"],ce="top",O=zt({customClass:"",dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",plain:!1,offset:16,placement:void 0,zIndex:0,grouping:!1,repeatNum:1,appendTo:Y?document.body:void 0}),$o=Ce({customClass:{type:String,default:O.customClass},dangerouslyUseHTMLString:{type:Boolean,default:O.dangerouslyUseHTMLString},duration:{type:Number,default:O.duration},icon:{type:he,default:O.icon},id:{type:String,default:O.id},message:{type:M([String,Object,Function]),default:O.message},onClose:{type:M(Function),default:O.onClose},showClose:{type:Boolean,default:O.showClose},type:{type:String,values:Rt,default:O.type},plain:{type:Boolean,default:O.plain},offset:{type:Number,default:O.offset},placement:{type:String,values:Lt,default:O.placement},zIndex:{type:Number,default:O.zIndex},grouping:{type:Boolean,default:O.grouping},repeatNum:{type:Number,default:O.repeatNum}}),Fo={destroy:()=>!0},z=At({}),Do=e=>(z[e]||(z[e]=At([])),z[e]),Vo=(e,t)=>{const o=z[t]||[],n=o.findIndex(s=>s.id===e),r=o[n];let l;return n>0&&(l=o[n-1]),{current:r,prev:l}},Ho=(e,t)=>{const{prev:o}=Vo(e,t);return o?o.vm.exposed.bottom.value:0},Uo=(e,t,o)=>(z[o]||[]).findIndex(l=>l.id===e)>0?16:t,Wo=ae({name:"ElMessage"}),Ko=ae({...Wo,props:$o,emits:Fo,setup(e,{expose:t,emit:o}){const n=e,{Close:r}=bn,l=C(!1),{ns:s,zIndex:u}=yn("message"),{currentZIndex:d,nextZIndex:v}=u,p=C(),h=C(!1),f=C(0);let m;const c=g(()=>n.type?n.type==="error"?"danger":n.type:"info"),L=g(()=>{const y=n.type;return{[s.bm("icon",y)]:y&&Je[y]}}),V=g(()=>n.icon||Je[n.type]||""),T=g(()=>n.placement||ce),re=g(()=>Ho(n.id,T.value)),H=g(()=>Uo(n.id,n.offset,T.value)+re.value),de=g(()=>f.value+H.value),X=g(()=>T.value.includes("left")?s.is("left"):T.value.includes("right")?s.is("right"):s.is("center")),_=g(()=>T.value.startsWith("top")?"top":"bottom"),xe=g(()=>({[_.value]:`${H.value}px`,zIndex:d.value}));function U(){n.duration!==0&&({stop:m}=wn(()=>{Z()},n.duration))}function pe(){m?.()}function Z(){h.value=!1,D(()=>{var y;l.value||((y=n.onClose)==null||y.call(n),o("destroy"))})}function fe(y){Ao(y)===Me.esc&&Z()}return It(()=>{U(),v(),h.value=!0}),F(()=>n.repeatNum,()=>{pe(),U()}),k(document,"keydown",fe),Fe(p,()=>{f.value=p.value.getBoundingClientRect().height}),t({visible:h,bottom:de,close:Z}),(y,me)=>(b(),I(_t,{name:a(s).b("fade"),onBeforeEnter:Oe=>l.value=!0,onBeforeLeave:y.onClose,onAfterLeave:Oe=>y.$emit("destroy"),persisted:""},{default:$(()=>[Nt(B("div",{id:y.id,ref_key:"messageRef",ref:p,class:E([a(s).b(),{[a(s).m(y.type)]:y.type},a(s).is("closable",y.showClose),a(s).is("plain",y.plain),a(s).is("bottom",a(_)==="bottom"),a(X),y.customClass]),style:Se(a(xe)),role:"alert",onMouseenter:pe,onMouseleave:U},[y.repeatNum>1?(b(),I(a(Bo),{key:0,value:y.repeatNum,type:a(c),class:E(a(s).e("badge"))},null,8,["value","type","class"])):S("v-if",!0),a(V)?(b(),I(a(K),{key:1,class:E([a(s).e("icon"),a(L)])},{default:$(()=>[(b(),I(ne(a(V))))]),_:1},8,["class"])):S("v-if",!0),j(y.$slots,"default",{},()=>[y.dangerouslyUseHTMLString?(b(),A(be,{key:1},[S(" Caution here, message could've been compromised, never use user's input as message "),B("p",{class:E(a(s).e("content")),innerHTML:y.message},null,10,["innerHTML"])],2112)):(b(),A("p",{key:0,class:E(a(s).e("content"))},oe(y.message),3))]),y.showClose?(b(),I(a(K),{key:2,class:E(a(s).e("closeBtn")),onClick:we(Z,["stop"])},{default:$(()=>[$e(a(r))]),_:1},8,["class","onClick"])):S("v-if",!0)],46,["id"]),[[Pt,h.value]])]),_:3},8,["name","onBeforeEnter","onBeforeLeave","onAfterLeave"]))}});var jo=Be(Ko,[["__file","message.vue"]]);let qo=1;const Go=e=>{if(!e.appendTo)e.appendTo=document.body;else if(se(e.appendTo)){let o=document.querySelector(e.appendTo);En(o)||(o=document.body),e.appendTo=o}},Yo=e=>{!e.placement&&se(N.placement)&&N.placement&&(e.placement=N.placement),e.placement||(e.placement=ce),Lt.includes(e.placement)||(e.placement=ce)},Bt=e=>{const t=!e||se(e)||kt(e)||ue(e)?{message:e}:e,o={...O,...t};return Go(o),Yo(o),Pe(N.grouping)&&!o.grouping&&(o.grouping=N.grouping),q(N.duration)&&o.duration===3e3&&(o.duration=N.duration),q(N.offset)&&o.offset===16&&(o.offset=N.offset),Pe(N.showClose)&&!o.showClose&&(o.showClose=N.showClose),Pe(N.plain)&&!o.plain&&(o.plain=N.plain),o},Qo=e=>{const t=e.props.placement||ce,o=z[t],n=o.indexOf(e);if(n===-1)return;o.splice(n,1);const{handler:r}=e;r.close()},Xo=({appendTo:e,...t},o)=>{const n=`message_${qo++}`,r=t.onClose,l=document.createElement("div"),s={...t,id:n,onClose:()=>{r?.(),Qo(p)},onDestroy:()=>{nt(null,l)}},u=$e(jo,s,ue(s.message)||kt(s.message)?{default:ue(s.message)?s.message:()=>s.message}:null);u.appContext=o||G._context,nt(u,l),e.appendChild(l.firstElementChild);const d=u.component,p={id:n,vnode:u,vm:d,handler:{close:()=>{d.exposed.close()}},props:u.component.props};return p},G=(e={},t)=>{if(!Y)return{close:()=>{}};const o=Bt(e),n=Do(o.placement||ce);if(o.grouping&&n.length){const l=n.find(({vnode:s})=>{var u;return((u=s.props)==null?void 0:u.message)===o.message});if(l)return l.props.repeatNum+=1,l.props.type=o.type,l.handler}if(q(N.max)&&n.length>=N.max)return{close:()=>{}};const r=Xo(o,t);return n.push(r),r.handler};Rt.forEach(e=>{G[e]=(t={},o)=>{const n=Bt(t);return G({...n,type:e},o)}});function Zo(e){for(const t in z)if(In(z,t)){const o=[...z[t]];for(const n of o)(!e||e===n.props.type)&&n.handler.close()}}function Jo(e){if(!z[e])return;[...z[e]].forEach(o=>o.handler.close())}G.closeAll=Zo;G.closeAllByPlacement=Jo;G._context=null;const Ps=Sn(G,"$message");let ht="",yt=0;const es=new Set([408,425,429,500,502,503,504]),ts=1,ns=300,bt="zsglpt-lite-toast-style";function os(){if(typeof document>"u"||document.getElementById(bt))return;const e=document.createElement("style");e.id=bt,e.textContent=` - .zsglpt-lite-toast-wrap { - position: fixed; - right: 16px; - top: 16px; - z-index: 9999; - display: flex; - flex-direction: column; - gap: 8px; - pointer-events: none; - } - .zsglpt-lite-toast { - max-width: min(88vw, 420px); - padding: 10px 12px; - border-radius: 10px; - color: #fff; - font-size: 13px; - font-weight: 600; - box-shadow: 0 8px 20px rgba(15, 23, 42, 0.24); - opacity: 0; - transform: translateY(-6px); - transition: all .18s ease; - } - .zsglpt-lite-toast.is-visible { - opacity: 1; - transform: translateY(0); - } - .zsglpt-lite-toast.is-error { - background: linear-gradient(135deg, #ef4444, #dc2626); - } - `,document.head.appendChild(e)}function ss(){if(typeof document>"u")return null;os();let e=document.querySelector(".zsglpt-lite-toast-wrap");return e||(e=document.createElement("div"),e.className="zsglpt-lite-toast-wrap",document.body.appendChild(e),e)}function as(e){const t=ss();if(!t)return;const o=document.createElement("div");o.className="zsglpt-lite-toast is-error",o.textContent=String(e||"请求失败"),t.appendChild(o),requestAnimationFrame(()=>o.classList.add("is-visible")),window.setTimeout(()=>o.classList.remove("is-visible"),2300),window.setTimeout(()=>o.remove(),2600)}function ge(e,t,o=1500){const n=Date.now();e===ht&&n-yt=ts)return!1;const n=String(e?.code||"");if(n==="ECONNABORTED"||n==="ERR_NETWORK")return!0;const r=Number(e?.response?.status||0);return es.has(r)}function us(e){return new Promise(t=>{window.setTimeout(t,Math.max(0,Number(e||0)))})}async function cs(e,t){const o=e?.config||{},n=Number(o.__retry_count||0);o.__retry_count=n+1;const r=ns*(n+1);return await us(r),t.request(o)}const ze=Nn.create({baseURL:"/api",timeout:3e4,withCredentials:!0});ze.interceptors.request.use(e=>{const t=String(e?.method||"GET").toUpperCase();if(!["GET","HEAD","OPTIONS"].includes(t)){const o=rs("csrf_token");o&&(e.headers=e.headers||{},e.headers["X-CSRF-Token"]=o)}return e});ze.interceptors.response.use(e=>e,e=>{if(ls(e))return cs(e,ze);const t=e?.response?.status,o=e?.response?.data,n=o?.error||o?.message||e?.message||"请求失败";return t===401?(window.location?.pathname||"").startsWith("/login")||(ge("401",n,3e3),window.location.href="/login"):t===403?ge("403",n,5e3):e?.code==="ECONNABORTED"?ge("timeout","请求超时",3e3):t||ge(`net:${n}`,n,3e3),Promise.reject(e)});export{Hn as A,Gn as B,ft as C,Oo as D,Is as E,bs as F,Kn as G,De as H,Ae as I,Ns as J,xs as K,Ee as U,Ps as a,Dn as b,vs as c,k as d,Me as e,Os as f,Ao as g,Ts as h,Fe as i,R as j,Cs as k,lo as l,zt as m,hs as n,ws as o,ze as p,ys as q,vo as r,wo as s,Ss as t,Es as u,Co as v,gs as w,Bn as x,$n as y,Pn as z}; diff --git a/static/app/assets/index-CoYtSGUZ.js b/static/app/assets/index-CoYtSGUZ.js new file mode 100644 index 0000000..5e5a9ea --- /dev/null +++ b/static/app/assets/index-CoYtSGUZ.js @@ -0,0 +1 @@ +import{aS as c,X as i}from"./base-xgxQQEpV.js";import{Q as u,V as d,C as a,L as m}from"./vendor-vue-WbiK4TmU.js";const r={prefix:Math.floor(Math.random()*1e4),current:0},I=Symbol("elIdInjection"),p=()=>d()?u(I,r):r,x=t=>{const e=p(),n=c();return i(()=>a(t)||`${n.value}-id-${e.prefix}-${e.current++}`)},C=({from:t,replacement:e,scope:n,version:s,ref:f,type:l="API"},o)=>{m(()=>a(o),j=>{},{immediate:!0})};export{C as a,x as b,p as u}; diff --git a/static/app/assets/isArrayLikeObject-B5fs56rA.js b/static/app/assets/isArrayLikeObject-B5fs56rA.js new file mode 100644 index 0000000..ef64a3c --- /dev/null +++ b/static/app/assets/isArrayLikeObject-B5fs56rA.js @@ -0,0 +1 @@ +import{s as W,o as A,i as C}from"./el-input-BaZNy9Kg.js";import{ae as M,e as O,af as j,f as F}from"./base-xgxQQEpV.js";import{t as y}from"./el-empty-B4_NEFfq.js";function z(t,i){return W(A(t,i,C),t+"")}var k=function(){return M.Date.now()},N="Expected a function",_=Math.max,D=Math.min;function B(t,i,u){var f,o,l,s,n,a,d=0,x=!1,c=!1,v=!0;if(typeof t!="function")throw new TypeError(N);i=y(i)||0,O(u)&&(x=!!u.leading,c="maxWait"in u,l=c?_(y(u.maxWait)||0,i):l,v="trailing"in u?!!u.trailing:v);function T(e){var r=f,m=o;return f=o=void 0,d=e,s=t.apply(m,r),s}function I(e){return d=e,n=setTimeout(g,i),x?T(e):s}function p(e){var r=e-a,m=e-d,L=i-r;return c?D(L,l-m):L}function b(e){var r=e-a,m=e-d;return a===void 0||r>=i||r<0||c&&m>=l}function g(){var e=k();if(b(e))return E(e);n=setTimeout(g,p(e))}function E(e){return n=void 0,v&&f?T(e):(f=o=void 0,s)}function R(){n!==void 0&&clearTimeout(n),d=0,f=a=o=n=void 0}function S(){return n===void 0?s:E(k())}function h(){var e=k(),r=b(e);if(f=arguments,o=this,a=e,r){if(n===void 0)return I(a);if(c)return clearTimeout(n),n=setTimeout(g,i),T(a)}return n===void 0&&(n=setTimeout(g,i)),s}return h.cancel=R,h.flush=S,h}function G(t){return j(t)&&F(t)}export{z as b,B as d,G as i}; diff --git a/static/app/assets/isArrayLikeObject-BjIRF-cS.js b/static/app/assets/isArrayLikeObject-BjIRF-cS.js deleted file mode 100644 index 1253fe5..0000000 --- a/static/app/assets/isArrayLikeObject-BjIRF-cS.js +++ /dev/null @@ -1 +0,0 @@ -import{x as W,y as A,z as C}from"./http-CdvgQxJu.js";import{am as M,e as O,an as j,f as F}from"./el-button-DWxIvzz-.js";import{t as L}from"./el-overlay-C_JJBVfE.js";function q(t,i){return W(A(t,i,C),t+"")}var h=function(){return M.Date.now()},N="Expected a function",_=Math.max,z=Math.min;function B(t,i,u){var f,o,l,s,n,a,d=0,k=!1,c=!1,v=!0;if(typeof t!="function")throw new TypeError(N);i=L(i)||0,O(u)&&(k=!!u.leading,c="maxWait"in u,l=c?_(L(u.maxWait)||0,i):l,v="trailing"in u?!!u.trailing:v);function T(e){var r=f,m=o;return f=o=void 0,d=e,s=t.apply(m,r),s}function I(e){return d=e,n=setTimeout(g,i),k?T(e):s}function p(e){var r=e-a,m=e-d,E=i-r;return c?z(E,l-m):E}function b(e){var r=e-a,m=e-d;return a===void 0||r>=i||r<0||c&&m>=l}function g(){var e=h();if(b(e))return y(e);n=setTimeout(g,p(e))}function y(e){return n=void 0,v&&f?T(e):(f=o=void 0,s)}function R(){n!==void 0&&clearTimeout(n),d=0,f=a=o=n=void 0}function S(){return n===void 0?s:y(h())}function x(){var e=h(),r=b(e);if(f=arguments,o=this,a=e,r){if(n===void 0)return I(a);if(c)return clearTimeout(n),n=setTimeout(g,i),T(a)}return n===void 0&&(n=setTimeout(g,i)),s}return x.cancel=R,x.flush=S,x}function G(t){return j(t)&&F(t)}export{q as b,B as d,G as i}; diff --git a/static/app/assets/login-BtMsx-ZC.js b/static/app/assets/login-BtMsx-ZC.js deleted file mode 100644 index 5d8d59d..0000000 --- a/static/app/assets/login-BtMsx-ZC.js +++ /dev/null @@ -1 +0,0 @@ -import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-DxN60LNb.js";import p from"./LoginPage-D5iXLq7p.js";o(p).mount("#app"); diff --git a/static/app/assets/login-rQcRwu0T.js b/static/app/assets/login-rQcRwu0T.js new file mode 100644 index 0000000..fb8d68a --- /dev/null +++ b/static/app/assets/login-rQcRwu0T.js @@ -0,0 +1 @@ +import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-WbiK4TmU.js";import p from"./LoginPage-BtooAZsk.js";import"./SocialLoginButtons-BlVSr6Mm.js";import"./base-xgxQQEpV.js";import"./el-overlay-hge8bsIn.js";import"./aria-DLpFpzDe.js";import"./http-BoPYlvwK.js";import"./vendor-axios-B9ygI19o.js";import"./index-CoYtSGUZ.js";import"./auth-B5cl_nsV.js";o(p).mount("#app"); diff --git a/static/app/assets/settings-Ddo8isuv.js b/static/app/assets/settings-Db4PmPGC.js similarity index 50% rename from static/app/assets/settings-Ddo8isuv.js rename to static/app/assets/settings-Db4PmPGC.js index 74d574c..ede3b96 100644 --- a/static/app/assets/settings-Ddo8isuv.js +++ b/static/app/assets/settings-Db4PmPGC.js @@ -1 +1 @@ -import{p as t}from"./http-CdvgQxJu.js";async function n(){const{data:a}=await t.get("/user/email");return a}async function r(a){const{data:s}=await t.post("/user/bind-email",a);return s}async function i(){const{data:a}=await t.post("/user/unbind-email",{});return a}async function c(){const{data:a}=await t.get("/user/email-notify");return a}async function o(a){const{data:s}=await t.post("/user/email-notify",a);return s}async function u(a){const{data:s}=await t.post("/user/password",a);return s}async function d(){const{data:a}=await t.get("/user/kdocs");return a}async function y(a){const{data:s}=await t.post("/user/kdocs",a);return s}async function f(){const{data:a}=await t.get("/kdocs/status");return a}async function p(){const{data:a}=await t.get("/user/passkeys");return a}async function l(a){const{data:s}=await t.post("/user/passkeys/register/options",a);return s}async function w(a){const{data:s}=await t.post("/user/passkeys/register/verify",a);return s}async function k(a){const{data:s}=await t.delete(`/user/passkeys/${a}`);return s}async function m(a){const{data:s}=await t.post("/user/passkeys/client-error",a||{});return s}export{o as a,r as b,u as c,l as d,w as e,k as f,y as g,n as h,p as i,c as j,d as k,f as l,m as r,i as u}; +import{p as t}from"./http-BoPYlvwK.js";async function e(){const{data:a}=await t.get("/user/email");return a}async function i(a){const{data:s}=await t.post("/user/bind-email",a);return s}async function r(){const{data:a}=await t.post("/user/unbind-email",{});return a}async function c(){const{data:a}=await t.get("/user/email-notify");return a}async function o(a){const{data:s}=await t.post("/user/email-notify",a);return s}async function u(a){const{data:s}=await t.post("/user/password",a);return s}async function d(){const{data:a}=await t.get("/user/kdocs");return a}async function y(a){const{data:s}=await t.post("/user/kdocs",a);return s}async function f(){const{data:a}=await t.get("/kdocs/status");return a}async function p(){const{data:a}=await t.get("/user/passkeys");return a}async function l(a){const{data:s}=await t.post("/user/passkeys/register/options",a);return s}async function w(a){const{data:s}=await t.post("/user/passkeys/register/verify",a);return s}async function g(a){const{data:s}=await t.delete(`/user/passkeys/${a}`);return s}async function k(a){const{data:s}=await t.post("/user/passkeys/client-error",a||{});return s}async function m(){const{data:a}=await t.get("/user/social-bindings");return a}async function b(a){const{data:s}=await t.post("/user/social-bindings",a||{});return s}async function h(a){const{data:s}=await t.delete(`/user/social-bindings/${encodeURIComponent(a)}`);return s}export{i as a,b,o as c,u as d,l as e,w as f,g,h,y as i,e as j,p as k,m as l,c as m,d as n,f as o,k as r,r as u}; diff --git a/static/app/assets/user-Bl59IefW.js b/static/app/assets/user-Bl59IefW.js deleted file mode 100644 index fed7e0f..0000000 --- a/static/app/assets/user-Bl59IefW.js +++ /dev/null @@ -1 +0,0 @@ -import{J as z,Q as F,h as b,V as be,L as q,W as le,g as Q,K as U,X as De,ae as de,A as N,S as fe,c as x,o as g,s as w,k as P,j as B,l as L,n as S,C as t,w as me,O as te,a3 as he,p as ne,af as pe,B as M,F as ge,x as ke,t as $,D as _,U as ye,M as Ge,a2 as ze,a4 as $e,E as Ke,i as Ue,m as Me,q as je,N as ve,ag as Re}from"./vendor-vue-DxN60LNb.js";import{an as qe,ao as Qe,ap as We,aq as Ce,ar as Xe,q as Ye,s as K,v as T,Y as Ve,as as He,M as J,ak as oe,ah as W,Q as Z,af as Se,X as ee,ai as ie,F as H,_ as X,u as Y,b as Ie,t as R,d as xe,B as Le,y as j,D as Je,A,Z as Ze}from"./el-button-DWxIvzz-.js";import{A as ea,r as se,U as O,C as D,k as ue,B as aa,I as ae,t as la,p as Ee}from"./http-CdvgQxJu.js";import{g as ta,c as na,h as oa,j as ia}from"./el-alert-DB2IQLpH.js";import{r as sa}from"./el-overlay-C_JJBVfE.js";var ua="[object Object]",ra=Function.prototype,ca=Object.prototype,Be=ra.toString,da=ca.hasOwnProperty,va=Be.call(Object);function ba(e){if(!qe(e)||Qe(e)!=ua)return!1;var a=ta(e);if(a===null)return!0;var o=da.call(a,"constructor")&&a.constructor;return typeof o=="function"&&o instanceof o&&Be.call(o)==va}function fa(e,a,o){var l=-1,u=e.length;a<0&&(a=-a>u?0:u+a),o=o>u?u:o,o<0&&(o+=u),u=a>o?0:o-a>>>0,a>>>=0;for(var v=Array(u);++l1),v}),na(e,oa(e),o),l&&(o=ia(o,ka|ya|Ca,ga));for(var u=a.length;u--;)pa(o,a[u]);return o});const we={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:{type:Boolean,default:void 0},checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Ve,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},ariaLabel:String,...se(["ariaControls"])},_e={[O]:e=>z(e)||K(e)||T(e),change:e=>z(e)||K(e)||T(e)},G=Symbol("checkboxGroupContextKey"),Sa=({model:e,isChecked:a})=>{const o=F(G,void 0),l=F(He,void 0),u=b(()=>{var s,r;const f=(s=o?.max)==null?void 0:s.value,y=(r=o?.min)==null?void 0:r.value;return!J(f)&&e.value.length>=f&&!a.value||!J(y)&&e.value.length<=y&&a.value});return{isDisabled:oe(b(()=>{var s,r;return o===void 0?(s=l?.disabled)!=null?s:u.value:((r=o.disabled)==null?void 0:r.value)||u.value})),isLimitDisabled:u}},Ia=(e,{model:a,isLimitExceeded:o,hasOwnLabel:l,isDisabled:u,isLabeledByFormItem:v})=>{const s=F(G,void 0),{formItem:r}=W(),{emit:f}=be();function y(k){var i,d,p,m;return[!0,e.trueValue,e.trueLabel].includes(k)?(d=(i=e.trueValue)!=null?i:e.trueLabel)!=null?d:!0:(m=(p=e.falseValue)!=null?p:e.falseLabel)!=null?m:!1}function c(k,i){f(D,y(k),i)}function C(k){if(o.value)return;const i=k.target;f(D,y(i.checked),k)}async function V(k){o.value||!l.value&&!u.value&&v.value&&(k.composedPath().some(p=>p.tagName==="LABEL")||(a.value=y([!1,e.falseValue,e.falseLabel].includes(a.value)),await le(),c(a.value,k)))}const h=b(()=>s?.validateEvent||e.validateEvent);return q(()=>e.modelValue,()=>{h.value&&r?.validate("change").catch(k=>ue())}),{handleChange:C,onClickRoot:V}},xa=e=>{const a=Q(!1),{emit:o}=be(),l=F(G,void 0),u=b(()=>J(l)===!1),v=Q(!1),s=b({get(){var r,f;return u.value?(r=l?.modelValue)==null?void 0:r.value:(f=e.modelValue)!=null?f:a.value},set(r){var f,y;u.value&&U(r)?(v.value=((f=l?.max)==null?void 0:f.value)!==void 0&&r.length>l?.max.value&&r.length>s.value.length,v.value===!1&&((y=l?.changeEvent)==null||y.call(l,r))):(o(O,r),a.value=r)}});return{model:s,isGroup:u,isLimitExceeded:v}},La=(e,a,{model:o})=>{const l=F(G,void 0),u=Q(!1),v=b(()=>Z(e.value)?e.label:e.value),s=b(()=>{const c=o.value;return T(c)?c:U(c)?De(v.value)?c.map(de).some(C=>Se(C,v.value)):c.map(de).includes(v.value):c!=null?c===e.trueValue||c===e.trueLabel:!!c}),r=ee(b(()=>{var c;return(c=l?.size)==null?void 0:c.value}),{prop:!0}),f=ee(b(()=>{var c;return(c=l?.size)==null?void 0:c.value})),y=b(()=>!!a.default||!Z(v.value));return{checkboxButtonSize:r,isChecked:s,isFocused:u,checkboxSize:f,hasOwnLabel:y,actualValue:v}},Ne=(e,a)=>{const{formItem:o}=W(),{model:l,isGroup:u,isLimitExceeded:v}=xa(e),{isFocused:s,isChecked:r,checkboxButtonSize:f,checkboxSize:y,hasOwnLabel:c,actualValue:C}=La(e,a,{model:l}),{isDisabled:V}=Sa({model:l,isChecked:r}),{inputId:h,isLabeledByFormItem:k}=ie(e,{formItemContext:o,disableIdGeneration:c,disableIdManagement:u}),{handleChange:i,onClickRoot:d}=Ia(e,{model:l,isLimitExceeded:v,hasOwnLabel:c,isDisabled:V,isLabeledByFormItem:k});return(()=>{function m(){var E,n;U(l.value)&&!l.value.includes(C.value)?l.value.push(C.value):l.value=(n=(E=e.trueValue)!=null?E:e.trueLabel)!=null?n:!0}e.checked&&m()})(),H({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>u.value&&Z(e.value))),H({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.trueLabel)),H({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.falseLabel)),{inputId:h,isLabeledByFormItem:k,isChecked:r,isDisabled:V,isFocused:s,checkboxButtonSize:f,checkboxSize:y,hasOwnLabel:c,model:l,actualValue:C,handleChange:i,onClickRoot:d}},Ea=N({name:"ElCheckbox"}),Ba=N({...Ea,props:we,emits:_e,setup(e){const a=e,o=fe(),{inputId:l,isLabeledByFormItem:u,isChecked:v,isDisabled:s,isFocused:r,checkboxSize:f,hasOwnLabel:y,model:c,actualValue:C,handleChange:V,onClickRoot:h}=Ne(a,o),k=b(()=>{var m,E,n,I;return a.trueValue||a.falseValue||a.trueLabel||a.falseLabel?{"true-value":(E=(m=a.trueValue)!=null?m:a.trueLabel)!=null?E:!0,"false-value":(I=(n=a.falseValue)!=null?n:a.falseLabel)!=null?I:!1}:{value:C.value}}),i=Y("checkbox"),d=b(()=>[i.b(),i.m(f.value),i.is("disabled",s.value),i.is("bordered",a.border),i.is("checked",v.value)]),p=b(()=>[i.e("input"),i.is("disabled",s.value),i.is("checked",v.value),i.is("indeterminate",a.indeterminate),i.is("focus",r.value)]);return(m,E)=>(g(),x(_(!t(y)&&t(u)?"span":"label"),{for:!t(y)&&t(u)?null:t(l),class:S(t(d)),"aria-controls":m.indeterminate?m.ariaControls:null,"aria-checked":m.indeterminate?"mixed":void 0,"aria-label":m.ariaLabel,onClick:t(h)},{default:w(()=>[P("span",{class:S(t(p))},[me(P("input",te({id:t(l),"onUpdate:modelValue":n=>he(c)?c.value=n:null,class:t(i).e("original"),type:"checkbox",indeterminate:m.indeterminate,name:m.name,tabindex:m.tabindex,disabled:t(s)},t(k),{onChange:t(V),onFocus:n=>r.value=!0,onBlur:n=>r.value=!1,onClick:ne(()=>{},["stop"])}),null,16,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[pe,t(c)]]),P("span",{class:S(t(i).e("inner"))},null,2)],2),t(y)?(g(),B("span",{key:0,class:S(t(i).e("label"))},[M(m.$slots,"default"),m.$slots.default?L("v-if",!0):(g(),B(ge,{key:0},[ke($(m.label),1)],64))],2)):L("v-if",!0)]),_:3},8,["for","class","aria-controls","aria-checked","aria-label","onClick"]))}});var Pe=X(Ba,[["__file","checkbox.vue"]]);const wa=N({name:"ElCheckboxButton"}),_a=N({...wa,props:we,emits:_e,setup(e){const a=e,o=fe(),{isFocused:l,isChecked:u,isDisabled:v,checkboxButtonSize:s,model:r,actualValue:f,handleChange:y}=Ne(a,o),c=b(()=>{var i,d,p,m;return a.trueValue||a.falseValue||a.trueLabel||a.falseLabel?{"true-value":(d=(i=a.trueValue)!=null?i:a.trueLabel)!=null?d:!0,"false-value":(m=(p=a.falseValue)!=null?p:a.falseLabel)!=null?m:!1}:{value:f.value}}),C=F(G,void 0),V=Y("checkbox"),h=b(()=>{var i,d,p,m;const E=(d=(i=C?.fill)==null?void 0:i.value)!=null?d:"";return{backgroundColor:E,borderColor:E,color:(m=(p=C?.textColor)==null?void 0:p.value)!=null?m:"",boxShadow:E?`-1px 0 0 0 ${E}`:void 0}}),k=b(()=>[V.b("button"),V.bm("button",s.value),V.is("disabled",v.value),V.is("checked",u.value),V.is("focus",l.value)]);return(i,d)=>(g(),B("label",{class:S(t(k))},[me(P("input",te({"onUpdate:modelValue":p=>he(r)?r.value=p:null,class:t(V).be("button","original"),type:"checkbox",name:i.name,tabindex:i.tabindex,disabled:t(v)},t(c),{onChange:t(y),onFocus:p=>l.value=!0,onBlur:p=>l.value=!1,onClick:ne(()=>{},["stop"])}),null,16,["onUpdate:modelValue","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[pe,t(r)]]),i.$slots.default||i.label?(g(),B("span",{key:0,class:S(t(V).be("button","inner")),style:ye(t(u)?t(h):void 0)},[M(i.$slots,"default",{},()=>[ke($(i.label),1)])],6)):L("v-if",!0)],2))}});var re=X(_a,[["__file","checkbox-button.vue"]]);const Na=Ie({modelValue:{type:R(Array),default:()=>[]},disabled:{type:Boolean,default:void 0},min:Number,max:Number,size:Ve,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:R(Array)},props:{type:R(Object),default:()=>Te},type:{type:String,values:["checkbox","button"],default:"checkbox"},...se(["ariaLabel"])}),Pa={[O]:e=>U(e),change:e=>U(e)},Te={label:"label",value:"value",disabled:"disabled"},Ta=N({name:"ElCheckboxGroup"}),Oa=N({...Ta,props:Na,emits:Pa,setup(e,{emit:a}){const o=e,l=Y("checkbox"),u=oe(),{formItem:v}=W(),{inputId:s,isLabeledByFormItem:r}=ie(o,{formItemContext:v}),f=async h=>{a(O,h),await le(),a(D,h)},y=b({get(){return o.modelValue},set(h){f(h)}}),c=b(()=>({...Te,...o.props})),C=h=>{const{label:k,value:i,disabled:d}=c.value,p={label:h[k],value:h[i],disabled:h[d]};return{...Va(h,[k,i,d]),...p}},V=b(()=>o.type==="button"?re:Pe);return Ge(G,{...aa(ze(o),["size","min","max","validateEvent","fill","textColor"]),disabled:u,modelValue:y,changeEvent:f}),q(()=>o.modelValue,(h,k)=>{o.validateEvent&&!Se(h,k)&&v?.validate("change").catch(i=>ue())}),(h,k)=>{var i;return g(),x(_(h.tag),{id:t(s),class:S(t(l).b("group")),role:"group","aria-label":t(r)?void 0:h.ariaLabel||"checkbox-group","aria-labelledby":t(r)?(i=t(v))==null?void 0:i.labelId:void 0},{default:w(()=>[M(h.$slots,"default",{},()=>[(g(!0),B(ge,null,$e(h.options,(d,p)=>(g(),x(_(t(V)),te({key:p},C(d)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var Oe=X(Oa,[["__file","checkbox-group.vue"]]);const Qa=xe(Pe,{CheckboxButton:re,CheckboxGroup:Oe});Le(re);const Wa=Le(Oe),Aa=Ie({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:void 0},loading:Boolean,size:{type:String,validator:sa},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:j},activeActionIcon:{type:j},activeIcon:{type:j},inactiveIcon:{type:j},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:R(Function)},id:String,tabindex:{type:[String,Number]},...se(["ariaLabel"])}),Fa={[O]:e=>T(e)||z(e)||K(e),[D]:e=>T(e)||z(e)||K(e),[ae]:e=>T(e)||z(e)||K(e)},Ae="ElSwitch",Da=N({name:Ae}),Ga=N({...Da,props:Aa,emits:Fa,setup(e,{expose:a,emit:o}){const l=e,{formItem:u}=W(),v=ee(),s=Y("switch"),{inputId:r}=ie(l,{formItemContext:u}),f=oe(b(()=>{if(l.loading)return!0})),y=Q(l.modelValue!==!1),c=Ke(),C=b(()=>[s.b(),s.m(v.value),s.is("disabled",f.value),s.is("checked",d.value)]),V=b(()=>[s.e("label"),s.em("label","left"),s.is("active",!d.value)]),h=b(()=>[s.e("label"),s.em("label","right"),s.is("active",d.value)]),k=b(()=>({width:Je(l.width)}));q(()=>l.modelValue,()=>{y.value=!0});const i=b(()=>y.value?l.modelValue:!1),d=b(()=>i.value===l.activeValue);[l.activeValue,l.inactiveValue].includes(i.value)||(o(O,l.inactiveValue),o(D,l.inactiveValue),o(ae,l.inactiveValue)),q(d,n=>{var I;c.value.checked=n,l.validateEvent&&((I=u?.validate)==null||I.call(u,"change").catch(Fe=>ue()))});const p=()=>{const n=d.value?l.inactiveValue:l.activeValue;o(O,n),o(D,n),o(ae,n),le(()=>{c.value.checked=d.value})},m=()=>{if(f.value)return;const{beforeChange:n}=l;if(!n){p();return}const I=n();[ve(I),T(I)].includes(!0)||la(Ae,"beforeChange must return type `Promise` or `boolean`"),ve(I)?I.then(ce=>{ce&&p()}).catch(ce=>{}):I&&p()},E=()=>{var n,I;(I=(n=c.value)==null?void 0:n.focus)==null||I.call(n)};return Ue(()=>{c.value.checked=d.value}),a({focus:E,checked:d}),(n,I)=>(g(),B("div",{class:S(t(C)),onClick:ne(m,["prevent"])},[P("input",{id:t(r),ref_key:"input",ref:c,class:S(t(s).e("input")),type:"checkbox",role:"switch","aria-checked":t(d),"aria-disabled":t(f),"aria-label":n.ariaLabel,name:n.name,"true-value":n.activeValue,"false-value":n.inactiveValue,disabled:t(f),tabindex:n.tabindex,onChange:p,onKeydown:Me(m,["enter"])},null,42,["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"]),!n.inlinePrompt&&(n.inactiveIcon||n.inactiveText)?(g(),B("span",{key:0,class:S(t(V))},[n.inactiveIcon?(g(),x(t(A),{key:0},{default:w(()=>[(g(),x(_(n.inactiveIcon)))]),_:1})):L("v-if",!0),!n.inactiveIcon&&n.inactiveText?(g(),B("span",{key:1,"aria-hidden":t(d)},$(n.inactiveText),9,["aria-hidden"])):L("v-if",!0)],2)):L("v-if",!0),P("span",{class:S(t(s).e("core")),style:ye(t(k))},[n.inlinePrompt?(g(),B("div",{key:0,class:S(t(s).e("inner"))},[n.activeIcon||n.inactiveIcon?(g(),x(t(A),{key:0,class:S(t(s).is("icon"))},{default:w(()=>[(g(),x(_(t(d)?n.activeIcon:n.inactiveIcon)))]),_:1},8,["class"])):n.activeText||n.inactiveText?(g(),B("span",{key:1,class:S(t(s).is("text")),"aria-hidden":!t(d)},$(t(d)?n.activeText:n.inactiveText),11,["aria-hidden"])):L("v-if",!0)],2)):L("v-if",!0),P("div",{class:S(t(s).e("action"))},[n.loading?(g(),x(t(A),{key:0,class:S(t(s).is("loading"))},{default:w(()=>[je(t(Ze))]),_:1},8,["class"])):t(d)?M(n.$slots,"active-action",{key:1},()=>[n.activeActionIcon?(g(),x(t(A),{key:0},{default:w(()=>[(g(),x(_(n.activeActionIcon)))]),_:1})):L("v-if",!0)]):t(d)?L("v-if",!0):M(n.$slots,"inactive-action",{key:2},()=>[n.inactiveActionIcon?(g(),x(t(A),{key:0},{default:w(()=>[(g(),x(_(n.inactiveActionIcon)))]),_:1})):L("v-if",!0)])],2)],6),!n.inlinePrompt&&(n.activeIcon||n.activeText)?(g(),B("span",{key:1,class:S(t(h))},[n.activeIcon?(g(),x(t(A),{key:0},{default:w(()=>[(g(),x(_(n.activeIcon)))]),_:1})):L("v-if",!0),!n.activeIcon&&n.activeText?(g(),B("span",{key:1,"aria-hidden":!t(d)},$(n.activeText),9,["aria-hidden"])):L("v-if",!0)],2)):L("v-if",!0)],10,["onClick"]))}});var za=X(Ga,[["__file","switch.vue"]]);const Xa=xe(za);async function $a(){const{data:e}=await Ee.get("/user/vip");return e}async function Ka(){const{data:e}=await Ee.post("/logout",{});return e}const Ya=Re("user",{state:()=>({vipInfo:null,loading:!1}),getters:{username:e=>e.vipInfo?.username||"",isVip:e=>!!e.vipInfo?.is_vip,vipDaysLeft:e=>Number(e.vipInfo?.days_left||0),vipExpireTime:e=>e.vipInfo?.expire_time||""},actions:{async refreshVipInfo(){this.loading=!0;try{this.vipInfo=await $a()}finally{this.loading=!1}},async logout(){try{await Ka()}catch{}}}});export{Wa as E,Qa as a,Xa as b,ba as i,Va as o,Ya as u}; diff --git a/static/app/assets/user-BlXB4Zbh.js b/static/app/assets/user-BlXB4Zbh.js new file mode 100644 index 0000000..db73d4e --- /dev/null +++ b/static/app/assets/user-BlXB4Zbh.js @@ -0,0 +1 @@ +import{J as z,Q as A,h as b,V as be,L as q,W as le,g as J,K,X as De,ae as de,A as N,S as fe,c as x,o as g,s as w,k as P,j as B,l as L,n as S,C as t,w as me,O as te,a3 as he,q as ne,af as pe,B as M,F as ge,x as ke,t as $,D as _,U as ye,M as Ge,a2 as ze,a4 as $e,E as Ue,i as Ke,m as Me,p as je,N as ve,ag as Re}from"./vendor-vue-WbiK4TmU.js";import{af as qe,ag as Je,ah as We,ai as Ce,aj as He,q as Qe,s as U,v as T,T as Ve,J as Y,N as Z,aa as Se,_ as W,u as H,b as Ie,t as R,d as xe,z as Le,y as j,B as Xe,E as F,U as Ye}from"./base-xgxQQEpV.js";import{f as Ze,u as oe,p as ea}from"./el-input-BaZNy9Kg.js";import{U as O,C as D,d as ie,I as ee,t as aa}from"./aria-DLpFpzDe.js";import{f as la,c as se,a as Q,u as ae,b as ue}from"./el-button-LKkD3jQh.js";import{a as X}from"./index-CoYtSGUZ.js";import{g as ta,c as na,h as oa,j as ia}from"./el-alert-DTUOkrAB.js";import{i as sa}from"./el-empty-B4_NEFfq.js";import{p as Ee}from"./http-BoPYlvwK.js";var ua="[object Object]",ra=Function.prototype,ca=Object.prototype,Be=ra.toString,da=ca.hasOwnProperty,va=Be.call(Object);function ba(e){if(!qe(e)||Je(e)!=ua)return!1;var a=ta(e);if(a===null)return!0;var o=da.call(a,"constructor")&&a.constructor;return typeof o=="function"&&o instanceof o&&Be.call(o)==va}function fa(e,a,o){var l=-1,u=e.length;a<0&&(a=-a>u?0:u+a),o=o>u?u:o,o<0&&(o+=u),u=a>o?0:o-a>>>0,a>>>=0;for(var v=Array(u);++l1),v}),na(e,oa(e),o),l&&(o=ia(o,ka|ya|Ca,ga));for(var u=a.length;u--;)pa(o,a[u]);return o});const we={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:{type:Boolean,default:void 0},checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Ve,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},ariaLabel:String,...oe(["ariaControls"])},_e={[O]:e=>z(e)||U(e)||T(e),change:e=>z(e)||U(e)||T(e)},G=Symbol("checkboxGroupContextKey"),Sa=({model:e,isChecked:a})=>{const o=A(G,void 0),l=A(la,void 0),u=b(()=>{var s,r;const f=(s=o?.max)==null?void 0:s.value,y=(r=o?.min)==null?void 0:r.value;return!Y(f)&&e.value.length>=f&&!a.value||!Y(y)&&e.value.length<=y&&a.value});return{isDisabled:se(b(()=>{var s,r;return o===void 0?(s=l?.disabled)!=null?s:u.value:((r=o.disabled)==null?void 0:r.value)||u.value})),isLimitDisabled:u}},Ia=(e,{model:a,isLimitExceeded:o,hasOwnLabel:l,isDisabled:u,isLabeledByFormItem:v})=>{const s=A(G,void 0),{formItem:r}=Q(),{emit:f}=be();function y(k){var i,d,p,m;return[!0,e.trueValue,e.trueLabel].includes(k)?(d=(i=e.trueValue)!=null?i:e.trueLabel)!=null?d:!0:(m=(p=e.falseValue)!=null?p:e.falseLabel)!=null?m:!1}function c(k,i){f(D,y(k),i)}function C(k){if(o.value)return;const i=k.target;f(D,y(i.checked),k)}async function V(k){o.value||!l.value&&!u.value&&v.value&&(k.composedPath().some(p=>p.tagName==="LABEL")||(a.value=y([!1,e.falseValue,e.falseLabel].includes(a.value)),await le(),c(a.value,k)))}const h=b(()=>s?.validateEvent||e.validateEvent);return q(()=>e.modelValue,()=>{h.value&&r?.validate("change").catch(k=>ie())}),{handleChange:C,onClickRoot:V}},xa=e=>{const a=J(!1),{emit:o}=be(),l=A(G,void 0),u=b(()=>Y(l)===!1),v=J(!1),s=b({get(){var r,f;return u.value?(r=l?.modelValue)==null?void 0:r.value:(f=e.modelValue)!=null?f:a.value},set(r){var f,y;u.value&&K(r)?(v.value=((f=l?.max)==null?void 0:f.value)!==void 0&&r.length>l?.max.value&&r.length>s.value.length,v.value===!1&&((y=l?.changeEvent)==null||y.call(l,r))):(o(O,r),a.value=r)}});return{model:s,isGroup:u,isLimitExceeded:v}},La=(e,a,{model:o})=>{const l=A(G,void 0),u=J(!1),v=b(()=>Z(e.value)?e.label:e.value),s=b(()=>{const c=o.value;return T(c)?c:K(c)?De(v.value)?c.map(de).some(C=>Se(C,v.value)):c.map(de).includes(v.value):c!=null?c===e.trueValue||c===e.trueLabel:!!c}),r=ae(b(()=>{var c;return(c=l?.size)==null?void 0:c.value}),{prop:!0}),f=ae(b(()=>{var c;return(c=l?.size)==null?void 0:c.value})),y=b(()=>!!a.default||!Z(v.value));return{checkboxButtonSize:r,isChecked:s,isFocused:u,checkboxSize:f,hasOwnLabel:y,actualValue:v}},Ne=(e,a)=>{const{formItem:o}=Q(),{model:l,isGroup:u,isLimitExceeded:v}=xa(e),{isFocused:s,isChecked:r,checkboxButtonSize:f,checkboxSize:y,hasOwnLabel:c,actualValue:C}=La(e,a,{model:l}),{isDisabled:V}=Sa({model:l,isChecked:r}),{inputId:h,isLabeledByFormItem:k}=ue(e,{formItemContext:o,disableIdGeneration:c,disableIdManagement:u}),{handleChange:i,onClickRoot:d}=Ia(e,{model:l,isLimitExceeded:v,hasOwnLabel:c,isDisabled:V,isLabeledByFormItem:k});return(()=>{function m(){var E,n;K(l.value)&&!l.value.includes(C.value)?l.value.push(C.value):l.value=(n=(E=e.trueValue)!=null?E:e.trueLabel)!=null?n:!0}e.checked&&m()})(),X({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>u.value&&Z(e.value))),X({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.trueLabel)),X({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},b(()=>!!e.falseLabel)),{inputId:h,isLabeledByFormItem:k,isChecked:r,isDisabled:V,isFocused:s,checkboxButtonSize:f,checkboxSize:y,hasOwnLabel:c,model:l,actualValue:C,handleChange:i,onClickRoot:d}},Ea=N({name:"ElCheckbox"}),Ba=N({...Ea,props:we,emits:_e,setup(e){const a=e,o=fe(),{inputId:l,isLabeledByFormItem:u,isChecked:v,isDisabled:s,isFocused:r,checkboxSize:f,hasOwnLabel:y,model:c,actualValue:C,handleChange:V,onClickRoot:h}=Ne(a,o),k=b(()=>{var m,E,n,I;return a.trueValue||a.falseValue||a.trueLabel||a.falseLabel?{"true-value":(E=(m=a.trueValue)!=null?m:a.trueLabel)!=null?E:!0,"false-value":(I=(n=a.falseValue)!=null?n:a.falseLabel)!=null?I:!1}:{value:C.value}}),i=H("checkbox"),d=b(()=>[i.b(),i.m(f.value),i.is("disabled",s.value),i.is("bordered",a.border),i.is("checked",v.value)]),p=b(()=>[i.e("input"),i.is("disabled",s.value),i.is("checked",v.value),i.is("indeterminate",a.indeterminate),i.is("focus",r.value)]);return(m,E)=>(g(),x(_(!t(y)&&t(u)?"span":"label"),{for:!t(y)&&t(u)?null:t(l),class:S(t(d)),"aria-controls":m.indeterminate?m.ariaControls:null,"aria-checked":m.indeterminate?"mixed":void 0,"aria-label":m.ariaLabel,onClick:t(h)},{default:w(()=>[P("span",{class:S(t(p))},[me(P("input",te({id:t(l),"onUpdate:modelValue":n=>he(c)?c.value=n:null,class:t(i).e("original"),type:"checkbox",indeterminate:m.indeterminate,name:m.name,tabindex:m.tabindex,disabled:t(s)},t(k),{onChange:t(V),onFocus:n=>r.value=!0,onBlur:n=>r.value=!1,onClick:ne(()=>{},["stop"])}),null,16,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[pe,t(c)]]),P("span",{class:S(t(i).e("inner"))},null,2)],2),t(y)?(g(),B("span",{key:0,class:S(t(i).e("label"))},[M(m.$slots,"default"),m.$slots.default?L("v-if",!0):(g(),B(ge,{key:0},[ke($(m.label),1)],64))],2)):L("v-if",!0)]),_:3},8,["for","class","aria-controls","aria-checked","aria-label","onClick"]))}});var Pe=W(Ba,[["__file","checkbox.vue"]]);const wa=N({name:"ElCheckboxButton"}),_a=N({...wa,props:we,emits:_e,setup(e){const a=e,o=fe(),{isFocused:l,isChecked:u,isDisabled:v,checkboxButtonSize:s,model:r,actualValue:f,handleChange:y}=Ne(a,o),c=b(()=>{var i,d,p,m;return a.trueValue||a.falseValue||a.trueLabel||a.falseLabel?{"true-value":(d=(i=a.trueValue)!=null?i:a.trueLabel)!=null?d:!0,"false-value":(m=(p=a.falseValue)!=null?p:a.falseLabel)!=null?m:!1}:{value:f.value}}),C=A(G,void 0),V=H("checkbox"),h=b(()=>{var i,d,p,m;const E=(d=(i=C?.fill)==null?void 0:i.value)!=null?d:"";return{backgroundColor:E,borderColor:E,color:(m=(p=C?.textColor)==null?void 0:p.value)!=null?m:"",boxShadow:E?`-1px 0 0 0 ${E}`:void 0}}),k=b(()=>[V.b("button"),V.bm("button",s.value),V.is("disabled",v.value),V.is("checked",u.value),V.is("focus",l.value)]);return(i,d)=>(g(),B("label",{class:S(t(k))},[me(P("input",te({"onUpdate:modelValue":p=>he(r)?r.value=p:null,class:t(V).be("button","original"),type:"checkbox",name:i.name,tabindex:i.tabindex,disabled:t(v)},t(c),{onChange:t(y),onFocus:p=>l.value=!0,onBlur:p=>l.value=!1,onClick:ne(()=>{},["stop"])}),null,16,["onUpdate:modelValue","name","tabindex","disabled","onChange","onFocus","onBlur","onClick"]),[[pe,t(r)]]),i.$slots.default||i.label?(g(),B("span",{key:0,class:S(t(V).be("button","inner")),style:ye(t(u)?t(h):void 0)},[M(i.$slots,"default",{},()=>[ke($(i.label),1)])],6)):L("v-if",!0)],2))}});var re=W(_a,[["__file","checkbox-button.vue"]]);const Na=Ie({modelValue:{type:R(Array),default:()=>[]},disabled:{type:Boolean,default:void 0},min:Number,max:Number,size:Ve,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},options:{type:R(Array)},props:{type:R(Object),default:()=>Te},type:{type:String,values:["checkbox","button"],default:"checkbox"},...oe(["ariaLabel"])}),Pa={[O]:e=>K(e),change:e=>K(e)},Te={label:"label",value:"value",disabled:"disabled"},Ta=N({name:"ElCheckboxGroup"}),Oa=N({...Ta,props:Na,emits:Pa,setup(e,{emit:a}){const o=e,l=H("checkbox"),u=se(),{formItem:v}=Q(),{inputId:s,isLabeledByFormItem:r}=ue(o,{formItemContext:v}),f=async h=>{a(O,h),await le(),a(D,h)},y=b({get(){return o.modelValue},set(h){f(h)}}),c=b(()=>({...Te,...o.props})),C=h=>{const{label:k,value:i,disabled:d}=c.value,p={label:h[k],value:h[i],disabled:h[d]};return{...Va(h,[k,i,d]),...p}},V=b(()=>o.type==="button"?re:Pe);return Ge(G,{...ea(ze(o),["size","min","max","validateEvent","fill","textColor"]),disabled:u,modelValue:y,changeEvent:f}),q(()=>o.modelValue,(h,k)=>{o.validateEvent&&!Se(h,k)&&v?.validate("change").catch(i=>ie())}),(h,k)=>{var i;return g(),x(_(h.tag),{id:t(s),class:S(t(l).b("group")),role:"group","aria-label":t(r)?void 0:h.ariaLabel||"checkbox-group","aria-labelledby":t(r)?(i=t(v))==null?void 0:i.labelId:void 0},{default:w(()=>[M(h.$slots,"default",{},()=>[(g(!0),B(ge,null,$e(h.options,(d,p)=>(g(),x(_(t(V)),te({key:p},C(d)),null,16))),128))])]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var Oe=W(Oa,[["__file","checkbox-group.vue"]]);const Xa=xe(Pe,{CheckboxButton:re,CheckboxGroup:Oe});Le(re);const Ya=Le(Oe),Fa=Ie({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:void 0},loading:Boolean,size:{type:String,validator:sa},width:{type:[String,Number],default:""},inlinePrompt:Boolean,inactiveActionIcon:{type:j},activeActionIcon:{type:j},activeIcon:{type:j},inactiveIcon:{type:j},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:R(Function)},id:String,tabindex:{type:[String,Number]},...oe(["ariaLabel"])}),Aa={[O]:e=>T(e)||z(e)||U(e),[D]:e=>T(e)||z(e)||U(e),[ee]:e=>T(e)||z(e)||U(e)},Fe="ElSwitch",Da=N({name:Fe}),Ga=N({...Da,props:Fa,emits:Aa,setup(e,{expose:a,emit:o}){const l=e,{formItem:u}=Q(),v=ae(),s=H("switch"),{inputId:r}=ue(l,{formItemContext:u}),f=se(b(()=>{if(l.loading)return!0})),y=J(l.modelValue!==!1),c=Ue(),C=b(()=>[s.b(),s.m(v.value),s.is("disabled",f.value),s.is("checked",d.value)]),V=b(()=>[s.e("label"),s.em("label","left"),s.is("active",!d.value)]),h=b(()=>[s.e("label"),s.em("label","right"),s.is("active",d.value)]),k=b(()=>({width:Xe(l.width)}));q(()=>l.modelValue,()=>{y.value=!0});const i=b(()=>y.value?l.modelValue:!1),d=b(()=>i.value===l.activeValue);[l.activeValue,l.inactiveValue].includes(i.value)||(o(O,l.inactiveValue),o(D,l.inactiveValue),o(ee,l.inactiveValue)),q(d,n=>{var I;c.value.checked=n,l.validateEvent&&((I=u?.validate)==null||I.call(u,"change").catch(Ae=>ie()))});const p=()=>{const n=d.value?l.inactiveValue:l.activeValue;o(O,n),o(D,n),o(ee,n),le(()=>{c.value.checked=d.value})},m=()=>{if(f.value)return;const{beforeChange:n}=l;if(!n){p();return}const I=n();[ve(I),T(I)].includes(!0)||aa(Fe,"beforeChange must return type `Promise` or `boolean`"),ve(I)?I.then(ce=>{ce&&p()}).catch(ce=>{}):I&&p()},E=()=>{var n,I;(I=(n=c.value)==null?void 0:n.focus)==null||I.call(n)};return Ke(()=>{c.value.checked=d.value}),a({focus:E,checked:d}),(n,I)=>(g(),B("div",{class:S(t(C)),onClick:ne(m,["prevent"])},[P("input",{id:t(r),ref_key:"input",ref:c,class:S(t(s).e("input")),type:"checkbox",role:"switch","aria-checked":t(d),"aria-disabled":t(f),"aria-label":n.ariaLabel,name:n.name,"true-value":n.activeValue,"false-value":n.inactiveValue,disabled:t(f),tabindex:n.tabindex,onChange:p,onKeydown:Me(m,["enter"])},null,42,["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"]),!n.inlinePrompt&&(n.inactiveIcon||n.inactiveText)?(g(),B("span",{key:0,class:S(t(V))},[n.inactiveIcon?(g(),x(t(F),{key:0},{default:w(()=>[(g(),x(_(n.inactiveIcon)))]),_:1})):L("v-if",!0),!n.inactiveIcon&&n.inactiveText?(g(),B("span",{key:1,"aria-hidden":t(d)},$(n.inactiveText),9,["aria-hidden"])):L("v-if",!0)],2)):L("v-if",!0),P("span",{class:S(t(s).e("core")),style:ye(t(k))},[n.inlinePrompt?(g(),B("div",{key:0,class:S(t(s).e("inner"))},[n.activeIcon||n.inactiveIcon?(g(),x(t(F),{key:0,class:S(t(s).is("icon"))},{default:w(()=>[(g(),x(_(t(d)?n.activeIcon:n.inactiveIcon)))]),_:1},8,["class"])):n.activeText||n.inactiveText?(g(),B("span",{key:1,class:S(t(s).is("text")),"aria-hidden":!t(d)},$(t(d)?n.activeText:n.inactiveText),11,["aria-hidden"])):L("v-if",!0)],2)):L("v-if",!0),P("div",{class:S(t(s).e("action"))},[n.loading?(g(),x(t(F),{key:0,class:S(t(s).is("loading"))},{default:w(()=>[je(t(Ye))]),_:1},8,["class"])):t(d)?M(n.$slots,"active-action",{key:1},()=>[n.activeActionIcon?(g(),x(t(F),{key:0},{default:w(()=>[(g(),x(_(n.activeActionIcon)))]),_:1})):L("v-if",!0)]):t(d)?L("v-if",!0):M(n.$slots,"inactive-action",{key:2},()=>[n.inactiveActionIcon?(g(),x(t(F),{key:0},{default:w(()=>[(g(),x(_(n.inactiveActionIcon)))]),_:1})):L("v-if",!0)])],2)],6),!n.inlinePrompt&&(n.activeIcon||n.activeText)?(g(),B("span",{key:1,class:S(t(h))},[n.activeIcon?(g(),x(t(F),{key:0},{default:w(()=>[(g(),x(_(n.activeIcon)))]),_:1})):L("v-if",!0),!n.activeIcon&&n.activeText?(g(),B("span",{key:1,"aria-hidden":!t(d)},$(n.activeText),9,["aria-hidden"])):L("v-if",!0)],2)):L("v-if",!0)],10,["onClick"]))}});var za=W(Ga,[["__file","switch.vue"]]);const Za=xe(za);async function $a(){const{data:e}=await Ee.get("/user/vip");return e}async function Ua(){const{data:e}=await Ee.post("/logout",{});return e}const el=Re("user",{state:()=>({vipInfo:null,loading:!1}),getters:{username:e=>e.vipInfo?.username||"",isVip:e=>!!e.vipInfo?.is_vip,vipDaysLeft:e=>Number(e.vipInfo?.days_left||0),vipExpireTime:e=>e.vipInfo?.expire_time||""},actions:{async refreshVipInfo(){this.loading=!0;try{this.vipInfo=await $a()}finally{this.loading=!1}},async logout(){try{await Ua()}catch{}}}});export{Ya as E,Xa as a,Za as b,ba as i,Va as o,el as u}; diff --git a/static/app/assets/vendor-vue-DxN60LNb.js b/static/app/assets/vendor-vue-WbiK4TmU.js similarity index 99% rename from static/app/assets/vendor-vue-DxN60LNb.js rename to static/app/assets/vendor-vue-WbiK4TmU.js index c5bd96d..b4891c7 100644 --- a/static/app/assets/vendor-vue-DxN60LNb.js +++ b/static/app/assets/vendor-vue-WbiK4TmU.js @@ -1 +1 @@ -function Qs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const oe={},Bt=[],He=()=>{},Ti=()=>!1,qn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ys=e=>e.startsWith("onUpdate:"),pe=Object.assign,Xs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Sl=Object.prototype.hasOwnProperty,ne=(e,t)=>Sl.call(e,t),V=Array.isArray,kt=e=>bn(e)==="[object Map]",Jn=e=>bn(e)==="[object Set]",Cr=e=>bn(e)==="[object Date]",W=e=>typeof e=="function",fe=e=>typeof e=="string",Be=e=>typeof e=="symbol",re=e=>e!==null&&typeof e=="object",Oi=e=>(re(e)||W(e))&&W(e.then)&&W(e.catch),Pi=Object.prototype.toString,bn=e=>Pi.call(e),Cl=e=>bn(e).slice(8,-1),Ii=e=>bn(e)==="[object Object]",zn=e=>fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,tn=Qs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Al=/-\w/g,Ve=Qn(e=>e.replace(Al,t=>t.slice(1).toUpperCase())),xl=/\B([A-Z])/g,Et=Qn(e=>e.replace(xl,"-$1").toLowerCase()),Yn=Qn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Pn=Qn(e=>e?`on${Yn(e)}`:""),vt=(e,t)=>!Object.is(e,t),In=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Zs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},wl=e=>{const t=fe(e)?Number(e):NaN;return isNaN(t)?e:t};let Ar;const Xn=()=>Ar||(Ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zn(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(Tl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function es(e){let t="";if(fe(e))t=e;else if(V(e))for(let n=0;nts(n,t))}const Li=e=>!!(e&&e.__v_isRef===!0),Dl=e=>fe(e)?e:e==null?"":V(e)||re(e)&&(e.toString===Pi||!W(e.toString))?Li(e)?Dl(e.value):JSON.stringify(e,Fi,2):String(e),Fi=(e,t)=>Li(t)?Fi(e,t.value):kt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[ps(s,i)+" =>"]=r,n),{})}:Jn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ps(n))}:Be(t)?ps(t):re(t)&&!V(t)&&!Ii(t)?String(t):t,ps=(e,t="")=>{var n;return Be(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let me;class Vi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=me,!t&&me&&(this.index=(me.scopes||(me.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(me=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(sn){let t=sn;for(sn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;nn;){let t=nn;for(nn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Ki(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Gi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),nr(s),Fl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ps(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Wi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Wi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===hn)||(e.globalVersion=hn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ps(e))))return;e.flags|=2;const t=e.dep,n=ce,s=je;ce=e,je=!0;try{Ki(e);const r=e.fn(e._value);(t.version===0||vt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,je=s,Gi(e),e.flags&=-3}}function nr(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)nr(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Fl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let je=!0;const $i=[];function ot(){$i.push(je),je=!1}function lt(){const e=$i.pop();je=e===void 0?!0:e}function xr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let hn=0;class Vl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class sr{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!je||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new Vl(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,qi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,hn++,this.notify(t)}notify(t){er();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{tr()}}}function qi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)qi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Fn=new WeakMap,Pt=Symbol(""),Is=Symbol(""),dn=Symbol("");function _e(e,t,n){if(je&&ce){let s=Fn.get(e);s||Fn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new sr),r.map=s,r.key=n),r.track()}}function st(e,t,n,s,r,i){const o=Fn.get(e);if(!o){hn++;return}const l=c=>{c&&c.trigger()};if(er(),t==="clear")o.forEach(l);else{const c=V(e),a=c&&zn(n);if(c&&n==="length"){const f=Number(s);o.forEach((h,p)=>{(p==="length"||p===dn||!Be(p)&&p>=f)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),a&&l(o.get(dn)),t){case"add":c?a&&l(o.get("length")):(l(o.get(Pt)),kt(e)&&l(o.get(Is)));break;case"delete":c||(l(o.get(Pt)),kt(e)&&l(o.get(Is)));break;case"set":kt(e)&&l(o.get(Pt));break}}tr()}function Hl(e,t){const n=Fn.get(e);return n&&n.get(t)}function Ft(e){const t=Z(e);return t===e?t:(_e(t,"iterate",dn),Ne(e)?t:t.map(ke))}function ns(e){return _e(e=Z(e),"iterate",dn),e}function gt(e,t){return ct(e)?it(e)?Wt(ke(t)):Wt(t):ke(t)}const jl={__proto__:null,[Symbol.iterator](){return ms(this,Symbol.iterator,e=>gt(this,e))},concat(...e){return Ft(this).concat(...e.map(t=>V(t)?Ft(t):t))},entries(){return ms(this,"entries",e=>(e[1]=gt(this,e[1]),e))},every(e,t){return Ze(this,"every",e,t,void 0,arguments)},filter(e,t){return Ze(this,"filter",e,t,n=>n.map(s=>gt(this,s)),arguments)},find(e,t){return Ze(this,"find",e,t,n=>gt(this,n),arguments)},findIndex(e,t){return Ze(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ze(this,"findLast",e,t,n=>gt(this,n),arguments)},findLastIndex(e,t){return Ze(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ze(this,"forEach",e,t,void 0,arguments)},includes(...e){return _s(this,"includes",e)},indexOf(...e){return _s(this,"indexOf",e)},join(e){return Ft(this).join(e)},lastIndexOf(...e){return _s(this,"lastIndexOf",e)},map(e,t){return Ze(this,"map",e,t,void 0,arguments)},pop(){return Qt(this,"pop")},push(...e){return Qt(this,"push",e)},reduce(e,...t){return wr(this,"reduce",e,t)},reduceRight(e,...t){return wr(this,"reduceRight",e,t)},shift(){return Qt(this,"shift")},some(e,t){return Ze(this,"some",e,t,void 0,arguments)},splice(...e){return Qt(this,"splice",e)},toReversed(){return Ft(this).toReversed()},toSorted(e){return Ft(this).toSorted(e)},toSpliced(...e){return Ft(this).toSpliced(...e)},unshift(...e){return Qt(this,"unshift",e)},values(){return ms(this,"values",e=>gt(this,e))}};function ms(e,t,n){const s=ns(e),r=s[t]();return s!==e&&!Ne(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Bl=Array.prototype;function Ze(e,t,n,s,r,i){const o=ns(e),l=o!==e&&!Ne(e),c=o[t];if(c!==Bl[t]){const h=c.apply(e,i);return l?ke(h):h}let a=n;o!==e&&(l?a=function(h,p){return n.call(this,gt(e,h),p,e)}:n.length>2&&(a=function(h,p){return n.call(this,h,p,e)}));const f=c.call(o,a,s);return l&&r?r(f):f}function wr(e,t,n,s){const r=ns(e);let i=n;return r!==e&&(Ne(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,gt(e,l),c,e)}),r[t](i,...s)}function _s(e,t,n){const s=Z(e);_e(s,"iterate",dn);const r=s[t](...n);return(r===-1||r===!1)&&ss(n[0])?(n[0]=Z(n[0]),s[t](...n)):r}function Qt(e,t,n=[]){ot(),er();const s=Z(e)[t].apply(e,n);return tr(),lt(),s}const kl=Qs("__proto__,__v_isRef,__isVue"),Ji=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Be));function Ul(e){Be(e)||(e=String(e));const t=Z(this);return _e(t,"has",e),t.hasOwnProperty(e)}class zi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Xl:Zi:i?Xi:Yi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=V(t);if(!r){let c;if(o&&(c=jl[n]))return c;if(n==="hasOwnProperty")return Ul}const l=Reflect.get(t,n,ae(t)?t:s);if((Be(n)?Ji.has(n):kl(n))||(r||_e(t,"get",n),i))return l;if(ae(l)){const c=o&&zn(n)?l:l.value;return r&&re(c)?Ms(c):c}return re(l)?r?Ms(l):En(l):l}}class Qi extends zi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const o=V(t)&&zn(n);if(!this._isShallow){const a=ct(i);if(!Ne(s)&&!ct(s)&&(i=Z(i),s=Z(s)),!o&&ae(i)&&!ae(s))return a||(i.value=s),!0}const l=o?Number(n)e,xn=e=>Reflect.getPrototypeOf(e);function ql(e,t,n){return function(...s){const r=this.__v_raw,i=Z(r),o=kt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),f=n?Ns:t?Wt:ke;return!t&&_e(i,"iterate",c?Is:Pt),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function wn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Jl(e,t){const n={get(r){const i=this.__v_raw,o=Z(i),l=Z(r);e||(vt(r,l)&&_e(o,"get",r),_e(o,"get",l));const{has:c}=xn(o),a=t?Ns:e?Wt:ke;if(c.call(o,r))return a(i.get(r));if(c.call(o,l))return a(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&_e(Z(r),"iterate",Pt),r.size},has(r){const i=this.__v_raw,o=Z(i),l=Z(r);return e||(vt(r,l)&&_e(o,"has",r),_e(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=Z(l),a=t?Ns:e?Wt:ke;return!e&&_e(c,"iterate",Pt),l.forEach((f,h)=>r.call(i,a(f),a(h),o))}};return pe(n,e?{add:wn("add"),set:wn("set"),delete:wn("delete"),clear:wn("clear")}:{add(r){!t&&!Ne(r)&&!ct(r)&&(r=Z(r));const i=Z(this);return xn(i).has.call(i,r)||(i.add(r),st(i,"add",r,r)),this},set(r,i){!t&&!Ne(i)&&!ct(i)&&(i=Z(i));const o=Z(this),{has:l,get:c}=xn(o);let a=l.call(o,r);a||(r=Z(r),a=l.call(o,r));const f=c.call(o,r);return o.set(r,i),a?vt(i,f)&&st(o,"set",r,i):st(o,"add",r,i),this},delete(r){const i=Z(this),{has:o,get:l}=xn(i);let c=o.call(i,r);c||(r=Z(r),c=o.call(i,r)),l&&l.call(i,r);const a=i.delete(r);return c&&st(i,"delete",r,void 0),a},clear(){const r=Z(this),i=r.size!==0,o=r.clear();return i&&st(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=ql(r,e,t)}),n}function rr(e,t){const n=Jl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(ne(n,r)&&r in s?n:s,r,i)}const zl={get:rr(!1,!1)},Ql={get:rr(!1,!0)},Yl={get:rr(!0,!1)};const Yi=new WeakMap,Xi=new WeakMap,Zi=new WeakMap,Xl=new WeakMap;function Zl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ec(e){return e.__v_skip||!Object.isExtensible(e)?0:Zl(Cl(e))}function En(e){return ct(e)?e:ir(e,!1,Gl,zl,Yi)}function eo(e){return ir(e,!1,$l,Ql,Xi)}function Ms(e){return ir(e,!0,Wl,Yl,Zi)}function ir(e,t,n,s,r){if(!re(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=ec(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function it(e){return ct(e)?it(e.__v_raw):!!(e&&e.__v_isReactive)}function ct(e){return!!(e&&e.__v_isReadonly)}function Ne(e){return!!(e&&e.__v_isShallow)}function ss(e){return e?!!e.__v_raw:!1}function Z(e){const t=e&&e.__v_raw;return t?Z(t):e}function or(e){return!ne(e,"__v_skip")&&Object.isExtensible(e)&&Ni(e,"__v_skip",!0),e}const ke=e=>re(e)?En(e):e,Wt=e=>re(e)?Ms(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function rs(e){return to(e,!1)}function tc(e){return to(e,!0)}function to(e,t){return ae(e)?e:new nc(e,t)}class nc{constructor(t,n){this.dep=new sr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Z(t),this._value=n?t:ke(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ne(t)||ct(t);t=s?t:Z(t),vt(t,n)&&(this._rawValue=t,this._value=s?t:ke(t),this.dep.trigger())}}function fu(e){e.dep&&e.dep.trigger()}function It(e){return ae(e)?e.value:e}const sc={get:(e,t,n)=>t==="__v_raw"?e:It(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function no(e){return it(e)?e:new Proxy(e,sc)}function rc(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=so(e,n);return t}class ic{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=Z(t);let r=!0,i=t;if(!V(t)||!zn(String(n)))do r=!ss(i)||Ne(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=It(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ae(this._raw[this._key])){const n=this._object[this._key];if(ae(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Hl(this._raw,this._key)}}class oc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function au(e,t,n){return ae(e)?e:W(e)?new oc(e):re(e)&&arguments.length>1?so(e,t,n):rs(e)}function so(e,t,n){return new ic(e,t,n)}class lc{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new sr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=hn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return Ui(this,!0),!0}get value(){const t=this.dep.track();return Wi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function cc(e,t,n=!1){let s,r;return W(e)?s=e:(s=e.get,r=e.set),new lc(s,r,n)}const Rn={},Vn=new WeakMap;let wt;function fc(e,t=!1,n=wt){if(n){let s=Vn.get(n);s||Vn.set(n,s=[]),s.push(e)}}function ac(e,t,n=oe){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,a=M=>r?M:Ne(M)||r===!1||r===0?rt(M,1):rt(M);let f,h,p,m,S=!1,C=!1;if(ae(e)?(h=()=>e.value,S=Ne(e)):it(e)?(h=()=>a(e),S=!0):V(e)?(C=!0,S=e.some(M=>it(M)||Ne(M)),h=()=>e.map(M=>{if(ae(M))return M.value;if(it(M))return a(M);if(W(M))return c?c(M,2):M()})):W(e)?t?h=c?()=>c(e,2):e:h=()=>{if(p){ot();try{p()}finally{lt()}}const M=wt;wt=f;try{return c?c(e,3,[m]):e(m)}finally{wt=M}}:h=He,t&&r){const M=h,B=r===!0?1/0:r;h=()=>rt(M(),B)}const L=ji(),N=()=>{f.stop(),L&&L.active&&Xs(L.effects,f)};if(i&&t){const M=t;t=(...B)=>{M(...B),N()}}let P=C?new Array(e.length).fill(Rn):Rn;const F=M=>{if(!(!(f.flags&1)||!f.dirty&&!M))if(t){const B=f.run();if(r||S||(C?B.some((J,q)=>vt(J,P[q])):vt(B,P))){p&&p();const J=wt;wt=f;try{const q=[B,P===Rn?void 0:C&&P[0]===Rn?[]:P,m];P=B,c?c(t,3,q):t(...q)}finally{wt=J}}}else f.run()};return l&&l(F),f=new Bi(h),f.scheduler=o?()=>o(F,!1):F,m=M=>fc(M,!1,f),p=f.onStop=()=>{const M=Vn.get(f);if(M){if(c)c(M,4);else for(const B of M)B();Vn.delete(f)}},t?s?F(!0):P=f.run():o?o(F.bind(null,!0),!0):f.run(),N.pause=f.pause.bind(f),N.resume=f.resume.bind(f),N.stop=N,N}function rt(e,t=1/0,n){if(t<=0||!re(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ae(e))rt(e.value,t,n);else if(V(e))for(let s=0;s{rt(s,t,n)});else if(Ii(e)){for(const s in e)rt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&rt(e[s],t,n)}return e}function Sn(e,t,n,s){try{return s?e(...s):e()}catch(r){is(r,t,n)}}function Ue(e,t,n,s){if(W(e)){const r=Sn(e,t,n,s);return r&&Oi(r)&&r.catch(i=>{is(i,t,n)}),r}if(V(e)){const r=[];for(let i=0;i>>1,r=Ae[s],i=pn(r);i=pn(n)?Ae.push(e):Ae.splice(hc(t),0,e),e.flags|=1,io()}}function io(){Hn||(Hn=ro.then(lo))}function dc(e){V(e)?Ut.push(...e):mt&&e.id===-1?mt.splice(Ht+1,0,e):e.flags&1||(Ut.push(e),e.flags|=1),io()}function Rr(e,t,n=Qe+1){for(;npn(n)-pn(s));if(Ut.length=0,mt){mt.push(...t);return}for(mt=t,Ht=0;Hte.id==null?e.flags&2?-1:1/0:e.id;function lo(e){try{for(Qe=0;Qe{s._d&&Un(-1);const i=jn(t);let o;try{o=e(...r)}finally{jn(i),s._d&&Un(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function uu(e,t){if(ge===null)return e;const n=as(ge),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,rn=e=>e&&(e.disabled||e.disabled===""),Tr=e=>e&&(e.defer||e.defer===""),Or=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Pr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ds=(e,t)=>{const n=e&&e.to;return fe(n)?t?t(n):null:n},uo={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:m,querySelector:S,createText:C,createComment:L}}=a,N=rn(t.props);let{shapeFlag:P,children:F,dynamicChildren:M}=t;if(e==null){const B=t.el=C(""),J=t.anchor=C("");m(B,n,s),m(J,n,s);const q=(A,U)=>{P&16&&f(F,A,U,r,i,o,l,c)},k=()=>{const A=t.target=Ds(t.props,S),U=ho(A,t,C,m);A&&(o!=="svg"&&Or(A)?o="svg":o!=="mathml"&&Pr(A)&&(o="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(A),N||(q(A,U),Nn(t,!1)))};N&&(q(n,J),Nn(t,!0)),Tr(t.props)?(t.el.__isMounted=!1,Se(()=>{k(),delete t.el.__isMounted},i)):k()}else{if(Tr(t.props)&&e.el.__isMounted===!1){Se(()=>{uo.process(e,t,n,s,r,i,o,l,c,a)},i);return}t.el=e.el,t.targetStart=e.targetStart;const B=t.anchor=e.anchor,J=t.target=e.target,q=t.targetAnchor=e.targetAnchor,k=rn(e.props),A=k?n:J,U=k?B:q;if(o==="svg"||Or(J)?o="svg":(o==="mathml"||Pr(J))&&(o="mathml"),M?(p(e.dynamicChildren,M,A,r,i,o,l),gr(e,t,!0)):c||h(e,t,A,U,r,i,o,l,!1),N)k?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Tn(t,n,B,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const z=t.target=Ds(t.props,S);z&&Tn(t,z,null,a,0)}else k&&Tn(t,J,q,a,1);Nn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:a,targetAnchor:f,target:h,props:p}=e;if(h&&(r(a),r(f)),i&&r(c),o&16){const m=i||!rn(p);for(let S=0;S{e.isMounted=!0}),Ao(()=>{e.isUnmounting=!0}),e}const De=[Function,Array],go={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:De,onEnter:De,onAfterEnter:De,onEnterCancelled:De,onBeforeLeave:De,onLeave:De,onAfterLeave:De,onLeaveCancelled:De,onBeforeAppear:De,onAppear:De,onAfterAppear:De,onAppearCancelled:De},mo=e=>{const t=e.subTree;return t.component?mo(t.component):t},mc={name:"BaseTransition",props:go,setup(e,{slots:t}){const n=Cn(),s=po();return()=>{const r=t.default&&fr(t.default(),!0);if(!r||!r.length)return;const i=_o(r),o=Z(e),{mode:l}=o;if(s.isLeaving)return ys(i);const c=Ir(i);if(!c)return ys(i);let a=gn(c,o,s,n,h=>a=h);c.type!==ye&&Mt(c,a);let f=n.subTree&&Ir(n.subTree);if(f&&f.type!==ye&&!Rt(f,c)&&mo(n).type!==ye){let h=gn(f,o,s,n);if(Mt(f,h),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,f=void 0},ys(i);l==="in-out"&&c.type!==ye?h.delayLeave=(p,m,S)=>{const C=yo(s,f);C[String(f.key)]=f,p[nt]=()=>{m(),p[nt]=void 0,delete a.delayedLeave,f=void 0},a.delayedLeave=()=>{S(),delete a.delayedLeave,f=void 0}}:f=void 0}else f&&(f=void 0);return i}}};function _o(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const _c=mc;function yo(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function gn(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:p,onLeave:m,onAfterLeave:S,onLeaveCancelled:C,onBeforeAppear:L,onAppear:N,onAfterAppear:P,onAppearCancelled:F}=t,M=String(e.key),B=yo(n,e),J=(A,U)=>{A&&Ue(A,s,9,U)},q=(A,U)=>{const z=U[1];J(A,U),V(A)?A.every(O=>O.length<=1)&&z():A.length<=1&&z()},k={mode:o,persisted:l,beforeEnter(A){let U=c;if(!n.isMounted)if(i)U=L||c;else return;A[nt]&&A[nt](!0);const z=B[M];z&&Rt(e,z)&&z.el[nt]&&z.el[nt](),J(U,[A])},enter(A){let U=a,z=f,O=h;if(!n.isMounted)if(i)U=N||a,z=P||f,O=F||h;else return;let Q=!1;const he=A[On]=be=>{Q||(Q=!0,be?J(O,[A]):J(z,[A]),k.delayedLeave&&k.delayedLeave(),A[On]=void 0)};U?q(U,[A,he]):he()},leave(A,U){const z=String(e.key);if(A[On]&&A[On](!0),n.isUnmounting)return U();J(p,[A]);let O=!1;const Q=A[nt]=he=>{O||(O=!0,U(),he?J(C,[A]):J(S,[A]),A[nt]=void 0,B[z]===e&&delete B[z])};B[z]=e,m?q(m,[A,Q]):Q()},clone(A){const U=gn(A,t,n,s,r);return r&&r(U),U}};return k}function ys(e){if(os(e))return e=bt(e),e.children=null,e}function Ir(e){if(!os(e))return ao(e.type)&&e.children?_o(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function Mt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function fr(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;ion(S,t&&(V(t)?t[C]:t),n,s,r));return}if(Kt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&on(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?as(s.component):s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,f=l.refs===oe?l.refs={}:l.refs,h=l.setupState,p=Z(h),m=h===oe?Ti:S=>ne(p,S);if(a!=null&&a!==c){if(Nr(t),fe(a))f[a]=null,m(a)&&(h[a]=null);else if(ae(a)){a.value=null;const S=t;S.k&&(f[S.k]=null)}}if(W(c))Sn(c,l,12,[o,f]);else{const S=fe(c),C=ae(c);if(S||C){const L=()=>{if(e.f){const N=S?m(c)?h[c]:f[c]:c.value;if(r)V(N)&&Xs(N,i);else if(V(N))N.includes(i)||N.push(i);else if(S)f[c]=[i],m(c)&&(h[c]=f[c]);else{const P=[i];c.value=P,e.k&&(f[e.k]=P)}}else S?(f[c]=o,m(c)&&(h[c]=o)):C&&(c.value=o,e.k&&(f[e.k]=o))};if(o){const N=()=>{L(),Bn.delete(e)};N.id=-1,Bn.set(e,N),Se(N,n)}else Nr(e),L()}}}function Nr(e){const t=Bn.get(e);t&&(t.flags|=8,Bn.delete(e))}Xn().requestIdleCallback;Xn().cancelIdleCallback;const Kt=e=>!!e.type.__asyncLoader,os=e=>e.type.__isKeepAlive;function yc(e,t){Eo(e,"a",t)}function vc(e,t){Eo(e,"da",t)}function Eo(e,t,n=ve){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ls(t,s,n),n){let r=n.parent;for(;r&&r.parent;)os(r.parent.vnode)&&bc(s,t,n,r),r=r.parent}}function bc(e,t,n,s){const r=ls(t,e,s,!0);xo(()=>{Xs(s[t],r)},n)}function ls(e,t,n=ve,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{ot();const l=An(n),c=Ue(t,n,e,o);return l(),lt(),c});return s?r.unshift(i):r.push(i),i}}const ft=e=>(t,n=ve)=>{(!yn||e==="sp")&&ls(e,(...s)=>t(...s),n)},Ec=ft("bm"),So=ft("m"),Sc=ft("bu"),Co=ft("u"),Ao=ft("bum"),xo=ft("um"),Cc=ft("sp"),Ac=ft("rtg"),xc=ft("rtc");function wc(e,t=ve){ls("ec",e,t)}const ar="components",Rc="directives";function du(e,t){return ur(ar,e,!0,t)||e}const wo=Symbol.for("v-ndc");function pu(e){return fe(e)?ur(ar,e,!1)||e:e||wo}function gu(e){return ur(Rc,e)}function ur(e,t,n=!0,s=!1){const r=ge||ve;if(r){const i=r.type;if(e===ar){const l=mf(i,!1);if(l&&(l===t||l===Ve(t)||l===Yn(Ve(t))))return i}const o=Mr(r[e]||i[e],t)||Mr(r.appContext[e],t);return!o&&s?i:o}}function Mr(e,t){return e&&(e[t]||e[Ve(t)]||e[Yn(Ve(t))])}function mu(e,t,n,s){let r;const i=n,o=V(e);if(o||fe(e)){const l=o&&it(e);let c=!1,a=!1;l&&(c=!Ne(e),a=ct(e),e=ns(e)),r=new Array(e.length);for(let f=0,h=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c{const i=s.fn(...r);return i&&(i.key=s.key),i}:s.fn)}return e}function yu(e,t,n={},s,r){if(ge.ce||ge.parent&&Kt(ge.parent)&&ge.parent.ce){const a=Object.keys(n).length>0;return t!=="default"&&(n.name=t),js(),Bs(Oe,null,[xe("slot",n,s&&s())],a?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),js();const o=i&&Ro(i(n)),l=n.key||o&&o.key,c=Bs(Oe,{key:(l&&!Be(l)?l:`_${t}`)+(!o&&s?"_fb":"")},o||(s?s():[]),o&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function Ro(e){return e.some(t=>_n(t)?!(t.type===ye||t.type===Oe&&!Ro(t.children)):!0)?e:null}function vu(e,t){const n={};for(const s in e)n[Pn(s)]=e[s];return n}const Ls=e=>e?qo(e)?as(e):Ls(e.parent):null,ln=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ls(e.parent),$root:e=>Ls(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Po(e),$forceUpdate:e=>e.f||(e.f=()=>{cr(e.update)}),$nextTick:e=>e.n||(e.n=lr.bind(e.proxy)),$watch:e=>jc.bind(e)}),vs=(e,t)=>e!==oe&&!e.__isScriptSetup&&ne(e,t),Tc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const p=o[t];if(p!==void 0)switch(p){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(vs(s,t))return o[t]=1,s[t];if(r!==oe&&ne(r,t))return o[t]=2,r[t];if(ne(i,t))return o[t]=3,i[t];if(n!==oe&&ne(n,t))return o[t]=4,n[t];Fs&&(o[t]=0)}}const a=ln[t];let f,h;if(a)return t==="$attrs"&&_e(e.attrs,"get",""),a(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==oe&&ne(n,t))return o[t]=4,n[t];if(h=c.config.globalProperties,ne(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return vs(r,t)?(r[t]=n,!0):s!==oe&&ne(s,t)?(s[t]=n,!0):ne(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:o}},l){let c;return!!(n[l]||e!==oe&&l[0]!=="$"&&ne(e,l)||vs(t,l)||ne(i,l)||ne(s,l)||ne(ln,l)||ne(r.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ne(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function bu(){return To().slots}function Eu(){return To().attrs}function To(e){const t=Cn();return t.setupContext||(t.setupContext=zo(t))}function Dr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Fs=!0;function Oc(e){const t=Po(e),n=e.proxy,s=e.ctx;Fs=!1,t.beforeCreate&&Lr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:m,updated:S,activated:C,deactivated:L,beforeDestroy:N,beforeUnmount:P,destroyed:F,unmounted:M,render:B,renderTracked:J,renderTriggered:q,errorCaptured:k,serverPrefetch:A,expose:U,inheritAttrs:z,components:O,directives:Q,filters:he}=t;if(a&&Pc(a,s,null),o)for(const $ in o){const ee=o[$];W(ee)&&(s[$]=ee.bind(n))}if(r){const $=r.call(n,n);re($)&&(e.data=En($))}if(Fs=!0,i)for(const $ in i){const ee=i[$],Xe=W(ee)?ee.bind(n,n):W(ee.get)?ee.get.bind(n,n):He,at=!W(ee)&&W(ee.set)?ee.set.bind(n):He,Ge=Le({get:Xe,set:at});Object.defineProperty(s,$,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:we=>Ge.value=we})}if(l)for(const $ in l)Oo(l[$],s,n,$);if(c){const $=W(c)?c.call(n):c;Reflect.ownKeys($).forEach(ee=>{Mn(ee,$[ee])})}f&&Lr(f,e,"c");function ie($,ee){V(ee)?ee.forEach(Xe=>$(Xe.bind(n))):ee&&$(ee.bind(n))}if(ie(Ec,h),ie(So,p),ie(Sc,m),ie(Co,S),ie(yc,C),ie(vc,L),ie(wc,k),ie(xc,J),ie(Ac,q),ie(Ao,P),ie(xo,M),ie(Cc,A),V(U))if(U.length){const $=e.exposed||(e.exposed={});U.forEach(ee=>{Object.defineProperty($,ee,{get:()=>n[ee],set:Xe=>n[ee]=Xe,enumerable:!0})})}else e.exposed||(e.exposed={});B&&e.render===He&&(e.render=B),z!=null&&(e.inheritAttrs=z),O&&(e.components=O),Q&&(e.directives=Q),A&&bo(e)}function Pc(e,t,n=He){V(e)&&(e=Vs(e));for(const s in e){const r=e[s];let i;re(r)?"default"in r?i=Fe(r.from||s,r.default,!0):i=Fe(r.from||s):i=Fe(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Lr(e,t,n){Ue(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Oo(e,t,n,s){let r=s.includes(".")?No(n,s):()=>n[s];if(fe(e)){const i=t[e];W(i)&&cn(r,i)}else if(W(e))cn(r,e.bind(n));else if(re(e))if(V(e))e.forEach(i=>Oo(i,t,n,s));else{const i=W(e.handler)?e.handler.bind(n):t[e.handler];W(i)&&cn(r,i,e)}}function Po(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>kn(c,a,o,!0)),kn(c,t,o)),re(t)&&i.set(t,c),c}function kn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&kn(e,i,n,!0),r&&r.forEach(o=>kn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Ic[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ic={data:Fr,props:Vr,emits:Vr,methods:en,computed:en,beforeCreate:Ee,created:Ee,beforeMount:Ee,mounted:Ee,beforeUpdate:Ee,updated:Ee,beforeDestroy:Ee,beforeUnmount:Ee,destroyed:Ee,unmounted:Ee,activated:Ee,deactivated:Ee,errorCaptured:Ee,serverPrefetch:Ee,components:en,directives:en,watch:Mc,provide:Fr,inject:Nc};function Fr(e,t){return t?e?function(){return pe(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Nc(e,t){return en(Vs(e),Vs(t))}function Vs(e){if(V(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}function Fc(){return!!(Cn()||Nt)}const Vc=Symbol.for("v-scx"),Hc=()=>Fe(Vc);function Su(e,t){return hr(e,null,t)}function cn(e,t,n){return hr(e,t,n)}function hr(e,t,n=oe){const{immediate:s,deep:r,flush:i,once:o}=n,l=pe({},n),c=t&&s||!t&&i!=="post";let a;if(yn){if(i==="sync"){const m=Hc();a=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=He,m.resume=He,m.pause=He,m}}const f=ve;l.call=(m,S,C)=>Ue(m,f,S,C);let h=!1;i==="post"?l.scheduler=m=>{Se(m,f&&f.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(m,S)=>{S?m():cr(m)}),l.augmentJob=m=>{t&&(m.flags|=4),h&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const p=ac(e,t,l);return yn&&(a?a.push(p):c&&p()),p}function jc(e,t,n){const s=this.proxy,r=fe(e)?e.includes(".")?No(s,e):()=>s[e]:e.bind(s,s);let i;W(t)?i=t:(i=t.handler,n=t);const o=An(this),l=hr(r,i.bind(s),n);return o(),l}function No(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ve(t)}Modifiers`]||e[`${Et(t)}Modifiers`];function kc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||oe;let r=n;const i=t.startsWith("update:"),o=i&&Bc(s,t.slice(7));o&&(o.trim&&(r=n.map(f=>fe(f)?f.trim():f)),o.number&&(r=n.map(Zs)));let l,c=s[l=Pn(t)]||s[l=Pn(Ve(t))];!c&&i&&(c=s[l=Pn(Et(t))]),c&&Ue(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ue(a,e,6,r)}}const Uc=new WeakMap;function Mo(e,t,n=!1){const s=n?Uc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!W(e)){const c=a=>{const f=Mo(a,t,!0);f&&(l=!0,pe(o,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(re(e)&&s.set(e,null),null):(V(i)?i.forEach(c=>o[c]=null):pe(o,i),re(e)&&s.set(e,o),o)}function cs(e,t){return!e||!qn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ne(e,t[0].toLowerCase()+t.slice(1))||ne(e,Et(t))||ne(e,t))}function Hr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:a,renderCache:f,props:h,data:p,setupState:m,ctx:S,inheritAttrs:C}=e,L=jn(e);let N,P;try{if(n.shapeFlag&4){const M=r||s,B=M;N=Ye(a.call(B,M,f,h,m,p,S)),P=l}else{const M=t;N=Ye(M.length>1?M(h,{attrs:l,slots:o,emit:c}):M(h,null)),P=t.props?l:Kc(l)}}catch(M){fn.length=0,is(M,e,1),N=xe(ye)}let F=N;if(P&&C!==!1){const M=Object.keys(P),{shapeFlag:B}=F;M.length&&B&7&&(i&&M.some(Ys)&&(P=Gc(P,i)),F=bt(F,P,!1,!0))}return n.dirs&&(F=bt(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(n.dirs):n.dirs),n.transition&&Mt(F,n.transition),N=F,jn(L),N}const Kc=e=>{let t;for(const n in e)(n==="class"||n==="style"||qn(n))&&((t||(t={}))[n]=e[n]);return t},Gc=(e,t)=>{const n={};for(const s in e)(!Ys(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Wc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?jr(s,o,a):!!o;if(c&8){const f=t.dynamicProps;for(let h=0;hObject.create(Do),Fo=e=>Object.getPrototypeOf(e)===Do;function qc(e,t,n,s=!1){const r={},i=Lo();e.propsDefaults=Object.create(null),Vo(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:eo(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Jc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=Z(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,m]=Ho(h,t,!0);pe(o,p),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!c)return re(e)&&s.set(e,Bt),Bt;if(V(i))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",pr=e=>V(e)?e.map(Ye):[Ye(e)],Qc=(e,t,n)=>{if(t._n)return t;const s=pc((...r)=>pr(t(...r)),n);return s._c=!1,s},jo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(dr(r))continue;const i=e[r];if(W(i))t[r]=Qc(r,i,s);else if(i!=null){const o=pr(i);t[r]=()=>o}}},Bo=(e,t)=>{const n=pr(t);e.slots.default=()=>n},ko=(e,t,n)=>{for(const s in t)(n||!dr(s))&&(e[s]=t[s])},Yc=(e,t,n)=>{const s=e.slots=Lo();if(e.vnode.shapeFlag&32){const r=t._;r?(ko(s,t,n),n&&Ni(s,"_",r,!0)):jo(t,s)}else t&&Bo(e,t)},Xc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=oe;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:ko(r,t,n):(i=!t.$stable,jo(t,r)),o=t}else t&&(Bo(e,t),o={default:1});if(i)for(const l in r)!dr(l)&&o[l]==null&&delete r[l]},Se=sf;function Zc(e){return ef(e)}function ef(e,t){const n=Xn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:m=He,insertStaticContent:S}=e,C=(u,d,g,y=null,b=null,_=null,R=void 0,w=null,x=!!d.dynamicChildren)=>{if(u===d)return;u&&!Rt(u,d)&&(y=v(u),we(u,b,_,!0),u=null),d.patchFlag===-2&&(x=!1,d.dynamicChildren=null);const{type:E,ref:K,shapeFlag:I}=d;switch(E){case fs:L(u,d,g,y);break;case ye:N(u,d,g,y);break;case Es:u==null&&P(d,g,y,R);break;case Oe:O(u,d,g,y,b,_,R,w,x);break;default:I&1?B(u,d,g,y,b,_,R,w,x):I&6?Q(u,d,g,y,b,_,R,w,x):(I&64||I&128)&&E.process(u,d,g,y,b,_,R,w,x,H)}K!=null&&b?on(K,u&&u.ref,_,d||u,!d):K==null&&u&&u.ref!=null&&on(u.ref,null,_,u,!0)},L=(u,d,g,y)=>{if(u==null)s(d.el=l(d.children),g,y);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},N=(u,d,g,y)=>{u==null?s(d.el=c(d.children||""),g,y):d.el=u.el},P=(u,d,g,y)=>{[u.el,u.anchor]=S(u.children,d,g,y,u.el,u.anchor)},F=({el:u,anchor:d},g,y)=>{let b;for(;u&&u!==d;)b=p(u),s(u,g,y),u=b;s(d,g,y)},M=({el:u,anchor:d})=>{let g;for(;u&&u!==d;)g=p(u),r(u),u=g;r(d)},B=(u,d,g,y,b,_,R,w,x)=>{if(d.type==="svg"?R="svg":d.type==="math"&&(R="mathml"),u==null)J(d,g,y,b,_,R,w,x);else{const E=u.el&&u.el._isVueCE?u.el:null;try{E&&E._beginPatch(),A(u,d,b,_,R,w,x)}finally{E&&E._endPatch()}}},J=(u,d,g,y,b,_,R,w)=>{let x,E;const{props:K,shapeFlag:I,transition:j,dirs:G}=u;if(x=u.el=o(u.type,_,K&&K.is,K),I&8?f(x,u.children):I&16&&k(u.children,x,null,y,b,bs(u,_),R,w),G&&Ct(u,null,y,"created"),q(x,u,u.scopeId,R,y),K){for(const le in K)le!=="value"&&!tn(le)&&i(x,le,null,K[le],_,y);"value"in K&&i(x,"value",null,K.value,_),(E=K.onVnodeBeforeMount)&&Je(E,y,u)}G&&Ct(u,null,y,"beforeMount");const X=tf(b,j);X&&j.beforeEnter(x),s(x,d,g),((E=K&&K.onVnodeMounted)||X||G)&&Se(()=>{E&&Je(E,y,u),X&&j.enter(x),G&&Ct(u,null,y,"mounted")},b)},q=(u,d,g,y,b)=>{if(g&&m(u,g),y)for(let _=0;_{for(let E=x;E{const w=d.el=u.el;let{patchFlag:x,dynamicChildren:E,dirs:K}=d;x|=u.patchFlag&16;const I=u.props||oe,j=d.props||oe;let G;if(g&&At(g,!1),(G=j.onVnodeBeforeUpdate)&&Je(G,g,d,u),K&&Ct(d,u,g,"beforeUpdate"),g&&At(g,!0),(I.innerHTML&&j.innerHTML==null||I.textContent&&j.textContent==null)&&f(w,""),E?U(u.dynamicChildren,E,w,g,y,bs(d,b),_):R||ee(u,d,w,null,g,y,bs(d,b),_,!1),x>0){if(x&16)z(w,I,j,g,b);else if(x&2&&I.class!==j.class&&i(w,"class",null,j.class,b),x&4&&i(w,"style",I.style,j.style,b),x&8){const X=d.dynamicProps;for(let le=0;le{G&&Je(G,g,d,u),K&&Ct(d,u,g,"updated")},y)},U=(u,d,g,y,b,_,R)=>{for(let w=0;w{if(d!==g){if(d!==oe)for(const _ in d)!tn(_)&&!(_ in g)&&i(u,_,d[_],null,b,y);for(const _ in g){if(tn(_))continue;const R=g[_],w=d[_];R!==w&&_!=="value"&&i(u,_,w,R,b,y)}"value"in g&&i(u,"value",d.value,g.value,b)}},O=(u,d,g,y,b,_,R,w,x)=>{const E=d.el=u?u.el:l(""),K=d.anchor=u?u.anchor:l("");let{patchFlag:I,dynamicChildren:j,slotScopeIds:G}=d;G&&(w=w?w.concat(G):G),u==null?(s(E,g,y),s(K,g,y),k(d.children||[],g,K,b,_,R,w,x)):I>0&&I&64&&j&&u.dynamicChildren?(U(u.dynamicChildren,j,g,b,_,R,w),(d.key!=null||b&&d===b.subTree)&&gr(u,d,!0)):ee(u,d,g,K,b,_,R,w,x)},Q=(u,d,g,y,b,_,R,w,x)=>{d.slotScopeIds=w,u==null?d.shapeFlag&512?b.ctx.activate(d,g,y,R,x):he(d,g,y,b,_,R,x):be(u,d,x)},he=(u,d,g,y,b,_,R)=>{const w=u.component=hf(u,y,b);if(os(u)&&(w.ctx.renderer=H),df(w,!1,R),w.asyncDep){if(b&&b.registerDep(w,ie,R),!u.el){const x=w.subTree=xe(ye);N(null,x,d,g),u.placeholder=x.el}}else ie(w,u,d,g,b,_,R)},be=(u,d,g)=>{const y=d.component=u.component;if(Wc(u,d,g))if(y.asyncDep&&!y.asyncResolved){$(y,d,g);return}else y.next=d,y.update();else d.el=u.el,y.vnode=d},ie=(u,d,g,y,b,_,R)=>{const w=()=>{if(u.isMounted){let{next:I,bu:j,u:G,parent:X,vnode:le}=u;{const $e=Uo(u);if($e){I&&(I.el=le.el,$(u,I,R)),$e.asyncDep.then(()=>{u.isUnmounted||w()});return}}let se=I,Re;At(u,!1),I?(I.el=le.el,$(u,I,R)):I=le,j&&In(j),(Re=I.props&&I.props.onVnodeBeforeUpdate)&&Je(Re,X,I,le),At(u,!0);const Te=Hr(u),We=u.subTree;u.subTree=Te,C(We,Te,h(We.el),v(We),u,b,_),I.el=Te.el,se===null&&$c(u,Te.el),G&&Se(G,b),(Re=I.props&&I.props.onVnodeUpdated)&&Se(()=>Je(Re,X,I,le),b)}else{let I;const{el:j,props:G}=d,{bm:X,m:le,parent:se,root:Re,type:Te}=u,We=Kt(d);At(u,!1),X&&In(X),!We&&(I=G&&G.onVnodeBeforeMount)&&Je(I,se,d),At(u,!0);{Re.ce&&Re.ce._def.shadowRoot!==!1&&Re.ce._injectChildStyle(Te);const $e=u.subTree=Hr(u);C(null,$e,g,y,u,b,_),d.el=$e.el}if(le&&Se(le,b),!We&&(I=G&&G.onVnodeMounted)){const $e=d;Se(()=>Je(I,se,$e),b)}(d.shapeFlag&256||se&&Kt(se.vnode)&&se.vnode.shapeFlag&256)&&u.a&&Se(u.a,b),u.isMounted=!0,d=g=y=null}};u.scope.on();const x=u.effect=new Bi(w);u.scope.off();const E=u.update=x.run.bind(x),K=u.job=x.runIfDirty.bind(x);K.i=u,K.id=u.uid,x.scheduler=()=>cr(K),At(u,!0),E()},$=(u,d,g)=>{d.component=u;const y=u.vnode.props;u.vnode=d,u.next=null,Jc(u,d.props,y,g),Xc(u,d.children,g),ot(),Rr(u),lt()},ee=(u,d,g,y,b,_,R,w,x=!1)=>{const E=u&&u.children,K=u?u.shapeFlag:0,I=d.children,{patchFlag:j,shapeFlag:G}=d;if(j>0){if(j&128){at(E,I,g,y,b,_,R,w,x);return}else if(j&256){Xe(E,I,g,y,b,_,R,w,x);return}}G&8?(K&16&&Me(E,b,_),I!==E&&f(g,I)):K&16?G&16?at(E,I,g,y,b,_,R,w,x):Me(E,b,_,!0):(K&8&&f(g,""),G&16&&k(I,g,y,b,_,R,w,x))},Xe=(u,d,g,y,b,_,R,w,x)=>{u=u||Bt,d=d||Bt;const E=u.length,K=d.length,I=Math.min(E,K);let j;for(j=0;jK?Me(u,b,_,!0,!1,I):k(d,g,y,b,_,R,w,x,I)},at=(u,d,g,y,b,_,R,w,x)=>{let E=0;const K=d.length;let I=u.length-1,j=K-1;for(;E<=I&&E<=j;){const G=u[E],X=d[E]=x?_t(d[E]):Ye(d[E]);if(Rt(G,X))C(G,X,g,null,b,_,R,w,x);else break;E++}for(;E<=I&&E<=j;){const G=u[I],X=d[j]=x?_t(d[j]):Ye(d[j]);if(Rt(G,X))C(G,X,g,null,b,_,R,w,x);else break;I--,j--}if(E>I){if(E<=j){const G=j+1,X=Gj)for(;E<=I;)we(u[E],b,_,!0),E++;else{const G=E,X=E,le=new Map;for(E=X;E<=j;E++){const Pe=d[E]=x?_t(d[E]):Ye(d[E]);Pe.key!=null&&le.set(Pe.key,E)}let se,Re=0;const Te=j-X+1;let We=!1,$e=0;const zt=new Array(Te);for(E=0;E=Te){we(Pe,b,_,!0);continue}let qe;if(Pe.key!=null)qe=le.get(Pe.key);else for(se=X;se<=j;se++)if(zt[se-X]===0&&Rt(Pe,d[se])){qe=se;break}qe===void 0?we(Pe,b,_,!0):(zt[qe-X]=E+1,qe>=$e?$e=qe:We=!0,C(Pe,d[qe],g,null,b,_,R,w,x),Re++)}const br=We?nf(zt):Bt;for(se=br.length-1,E=Te-1;E>=0;E--){const Pe=X+E,qe=d[Pe],Er=d[Pe+1],Sr=Pe+1{const{el:_,type:R,transition:w,children:x,shapeFlag:E}=u;if(E&6){Ge(u.component.subTree,d,g,y);return}if(E&128){u.suspense.move(d,g,y);return}if(E&64){R.move(u,d,g,H);return}if(R===Oe){s(_,d,g);for(let I=0;Iw.enter(_),b);else{const{leave:I,delayLeave:j,afterLeave:G}=w,X=()=>{u.ctx.isUnmounted?r(_):s(_,d,g)},le=()=>{_._isLeaving&&_[nt](!0),I(_,()=>{X(),G&&G()})};j?j(_,X,le):le()}else s(_,d,g)},we=(u,d,g,y=!1,b=!1)=>{const{type:_,props:R,ref:w,children:x,dynamicChildren:E,shapeFlag:K,patchFlag:I,dirs:j,cacheIndex:G}=u;if(I===-2&&(b=!1),w!=null&&(ot(),on(w,null,g,u,!0),lt()),G!=null&&(d.renderCache[G]=void 0),K&256){d.ctx.deactivate(u);return}const X=K&1&&j,le=!Kt(u);let se;if(le&&(se=R&&R.onVnodeBeforeUnmount)&&Je(se,d,u),K&6)St(u.component,g,y);else{if(K&128){u.suspense.unmount(g,y);return}X&&Ct(u,null,d,"beforeUnmount"),K&64?u.type.remove(u,d,g,H,y):E&&!E.hasOnce&&(_!==Oe||I>0&&I&64)?Me(E,d,g,!1,!0):(_===Oe&&I&384||!b&&K&16)&&Me(x,d,g),y&&Dt(u)}(le&&(se=R&&R.onVnodeUnmounted)||X)&&Se(()=>{se&&Je(se,d,u),X&&Ct(u,null,d,"unmounted")},g)},Dt=u=>{const{type:d,el:g,anchor:y,transition:b}=u;if(d===Oe){Lt(g,y);return}if(d===Es){M(u);return}const _=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:R,delayLeave:w}=b,x=()=>R(g,_);w?w(u.el,_,x):x()}else _()},Lt=(u,d)=>{let g;for(;u!==d;)g=p(u),r(u),u=g;r(d)},St=(u,d,g)=>{const{bum:y,scope:b,job:_,subTree:R,um:w,m:x,a:E}=u;kr(x),kr(E),y&&In(y),b.stop(),_&&(_.flags|=8,we(R,u,d,g)),w&&Se(w,d),Se(()=>{u.isUnmounted=!0},d)},Me=(u,d,g,y=!1,b=!1,_=0)=>{for(let R=_;R{if(u.shapeFlag&6)return v(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=p(u.anchor||u.el),g=d&&d[fo];return g?p(g):d};let D=!1;const T=(u,d,g)=>{u==null?d._vnode&&we(d._vnode,null,null,!0):C(d._vnode||null,u,d,null,null,null,g),d._vnode=u,D||(D=!0,Rr(),oo(),D=!1)},H={p:C,um:we,m:Ge,r:Dt,mt:he,mc:k,pc:ee,pbc:U,n:v,o:e};return{render:T,hydrate:void 0,createApp:Lc(T)}}function bs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function At({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function tf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function gr(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Uo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Uo(t)}function kr(e){if(e)for(let t=0;te.__isSuspense;function sf(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):dc(e)}const Oe=Symbol.for("v-fgt"),fs=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Es=Symbol.for("v-stc"),fn=[];let Ie=null;function js(e=!1){fn.push(Ie=e?null:[])}function rf(){fn.pop(),Ie=fn[fn.length-1]||null}let mn=1;function Un(e,t=!1){mn+=e,e<0&&Ie&&t&&(Ie.hasOnce=!0)}function Go(e){return e.dynamicChildren=mn>0?Ie||Bt:null,rf(),mn>0&&Ie&&Ie.push(e),e}function Cu(e,t,n,s,r,i){return Go($o(e,t,n,s,r,i,!0))}function Bs(e,t,n,s,r){return Go(xe(e,t,n,s,r,!0))}function _n(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const Wo=({key:e})=>e??null,Dn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?fe(e)||ae(e)||W(e)?{i:ge,r:e,k:t,f:!!n}:e:null);function $o(e,t=null,n=null,s=0,r=null,i=e===Oe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wo(t),ref:t&&Dn(t),scopeId:co,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ge};return l?(mr(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=fe(n)?8:16),mn>0&&!o&&Ie&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ie.push(c),c}const xe=of;function of(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===wo)&&(e=ye),_n(e)){const l=bt(e,t,!0);return n&&mr(l,n),mn>0&&!i&&Ie&&(l.shapeFlag&6?Ie[Ie.indexOf(e)]=l:Ie.push(l)),l.patchFlag=-2,l}if(_f(e)&&(e=e.__vccOpts),t){t=lf(t);let{class:l,style:c}=t;l&&!fe(l)&&(t.class=es(l)),re(c)&&(ss(c)&&!V(c)&&(c=pe({},c)),t.style=Zn(c))}const o=fe(e)?1:Ko(e)?128:ao(e)?64:re(e)?4:W(e)?2:0;return $o(e,t,n,s,r,o,i,!0)}function lf(e){return e?ss(e)||Fo(e)?pe({},e):e:null}function bt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,a=t?ff(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Wo(a),ref:t&&t.ref?n&&i?V(i)?i.concat(Dn(t)):[i,Dn(t)]:Dn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Oe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bt(e.ssContent),ssFallback:e.ssFallback&&bt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Mt(f,c.clone(f)),f}function cf(e=" ",t=0){return xe(fs,null,e,t)}function Au(e="",t=!1){return t?(js(),Bs(ye,null,e)):xe(ye,null,e)}function Ye(e){return e==null||typeof e=="boolean"?xe(ye):V(e)?xe(Oe,null,e.slice()):_n(e)?_t(e):xe(fs,null,String(e))}function _t(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function mr(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),mr(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Fo(t)?t._ctx=ge:r===3&&ge&&(ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ge},n=32):(t=String(t),s&64?(n=16,t=[cf(t)]):n=8);e.children=t,e.shapeFlag|=n}function ff(...e){const t={};for(let n=0;nve||ge;let Kn,ks;{const e=Xn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Kn=t("__VUE_INSTANCE_SETTERS__",n=>ve=n),ks=t("__VUE_SSR_SETTERS__",n=>yn=n)}const An=e=>{const t=ve;return Kn(e),e.scope.on(),()=>{e.scope.off(),Kn(t)}},Ur=()=>{ve&&ve.scope.off(),Kn(null)};function qo(e){return e.vnode.shapeFlag&4}let yn=!1;function df(e,t=!1,n=!1){t&&ks(t);const{props:s,children:r}=e.vnode,i=qo(e);qc(e,s,i,t),Yc(e,r,n||t);const o=i?pf(e,t):void 0;return t&&ks(!1),o}function pf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Tc);const{setup:s}=n;if(s){ot();const r=e.setupContext=s.length>1?zo(e):null,i=An(e),o=Sn(s,e,0,[e.props,r]),l=Oi(o);if(lt(),i(),(l||e.sp)&&!Kt(e)&&bo(e),l){if(o.then(Ur,Ur),t)return o.then(c=>{Kr(e,c)}).catch(c=>{is(c,e,0)});e.asyncDep=o}else Kr(e,o)}else Jo(e)}function Kr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:re(t)&&(e.setupState=no(t)),Jo(e)}function Jo(e,t,n){const s=e.type;e.render||(e.render=s.render||He);{const r=An(e);ot();try{Oc(e)}finally{lt(),r()}}}const gf={get(e,t){return _e(e,"get",""),e[t]}};function zo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,gf),slots:e.slots,emit:e.emit,expose:t}}function as(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(no(or(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ln)return ln[n](e)},has(t,n){return n in t||n in ln}})):e.proxy}function mf(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function _f(e){return W(e)&&"__vccOpts"in e}const Le=(e,t)=>cc(e,t,yn);function _r(e,t,n){try{Un(-1);const s=arguments.length;return s===2?re(t)&&!V(t)?_n(t)?xe(e,null,[t]):xe(e,t):xe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&_n(n)&&(n=[n]),xe(e,t,n))}finally{Un(1)}}const yf="3.5.25",xu=He;let Us;const Gr=typeof window<"u"&&window.trustedTypes;if(Gr)try{Us=Gr.createPolicy("vue",{createHTML:e=>e})}catch{}const Qo=Us?e=>Us.createHTML(e):e=>e,vf="http://www.w3.org/2000/svg",bf="http://www.w3.org/1998/Math/MathML",tt=typeof document<"u"?document:null,Wr=tt&&tt.createElement("template"),Ef={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?tt.createElementNS(vf,e):t==="mathml"?tt.createElementNS(bf,e):n?tt.createElement(e,{is:n}):tt.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>tt.createTextNode(e),createComment:e=>tt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>tt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Wr.innerHTML=Qo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Wr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ut="transition",Yt="animation",$t=Symbol("_vtc"),Yo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xo=pe({},go,Yo),Sf=e=>(e.displayName="Transition",e.props=Xo,e),wu=Sf((e,{slots:t})=>_r(_c,Zo(e),t)),xt=(e,t=[])=>{V(e)?e.forEach(n=>n(...t)):e&&e(...t)},$r=e=>e?V(e)?e.some(t=>t.length>1):e.length>1:!1;function Zo(e){const t={};for(const O in e)O in Yo||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:a=o,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,S=Cf(r),C=S&&S[0],L=S&&S[1],{onBeforeEnter:N,onEnter:P,onEnterCancelled:F,onLeave:M,onLeaveCancelled:B,onBeforeAppear:J=N,onAppear:q=P,onAppearCancelled:k=F}=t,A=(O,Q,he,be)=>{O._enterCancelled=be,dt(O,Q?f:l),dt(O,Q?a:o),he&&he()},U=(O,Q)=>{O._isLeaving=!1,dt(O,h),dt(O,m),dt(O,p),Q&&Q()},z=O=>(Q,he)=>{const be=O?q:P,ie=()=>A(Q,O,he);xt(be,[Q,ie]),qr(()=>{dt(Q,O?c:i),ze(Q,O?f:l),$r(be)||Jr(Q,s,C,ie)})};return pe(t,{onBeforeEnter(O){xt(N,[O]),ze(O,i),ze(O,o)},onBeforeAppear(O){xt(J,[O]),ze(O,c),ze(O,a)},onEnter:z(!1),onAppear:z(!0),onLeave(O,Q){O._isLeaving=!0;const he=()=>U(O,Q);ze(O,h),O._enterCancelled?(ze(O,p),Ks(O)):(Ks(O),ze(O,p)),qr(()=>{O._isLeaving&&(dt(O,h),ze(O,m),$r(M)||Jr(O,s,L,he))}),xt(M,[O,he])},onEnterCancelled(O){A(O,!1,void 0,!0),xt(F,[O])},onAppearCancelled(O){A(O,!0,void 0,!0),xt(k,[O])},onLeaveCancelled(O){U(O),xt(B,[O])}})}function Cf(e){if(e==null)return null;if(re(e))return[Ss(e.enter),Ss(e.leave)];{const t=Ss(e);return[t,t]}}function Ss(e){return wl(e)}function ze(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[$t]||(e[$t]=new Set)).add(t)}function dt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[$t];n&&(n.delete(t),n.size||(e[$t]=void 0))}function qr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Af=0;function Jr(e,t,n,s){const r=e._endId=++Af,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=el(e,t);if(!o)return s();const a=o+"end";let f=0;const h=()=>{e.removeEventListener(a,p),i()},p=m=>{m.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[S]||"").split(", "),r=s(`${ut}Delay`),i=s(`${ut}Duration`),o=zr(r,i),l=s(`${Yt}Delay`),c=s(`${Yt}Duration`),a=zr(l,c);let f=null,h=0,p=0;t===ut?o>0&&(f=ut,h=o,p=i.length):t===Yt?a>0&&(f=Yt,h=a,p=c.length):(h=Math.max(o,a),f=h>0?o>a?ut:Yt:null,p=f?f===ut?i.length:c.length:0);const m=f===ut&&/\b(?:transform|all)(?:,|$)/.test(s(`${ut}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:m}}function zr(e,t){for(;e.lengthQr(n)+Qr(e[s])))}function Qr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ks(e){return(e?e.ownerDocument:document).body.offsetHeight}function xf(e,t,n){const s=e[$t];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Gn=Symbol("_vod"),tl=Symbol("_vsh"),Ru={name:"show",beforeMount(e,{value:t},{transition:n}){e[Gn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Xt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Xt(e,!0),s.enter(e)):s.leave(e,()=>{Xt(e,!1)}):Xt(e,t))},beforeUnmount(e,{value:t}){Xt(e,t)}};function Xt(e,t){e.style.display=t?e[Gn]:"none",e[tl]=!t}const wf=Symbol(""),Rf=/(?:^|;)\s*display\s*:/;function Tf(e,t,n){const s=e.style,r=fe(n);let i=!1;if(n&&!r){if(t)if(fe(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Ln(s,l,"")}else for(const o in t)n[o]==null&&Ln(s,o,"");for(const o in n)o==="display"&&(i=!0),Ln(s,o,n[o])}else if(r){if(t!==n){const o=s[wf];o&&(n+=";"+o),s.cssText=n,i=Rf.test(n)}}else t&&e.removeAttribute("style");Gn in e&&(e[Gn]=i?s.display:"",e[tl]&&(s.display="none"))}const Yr=/\s*!important$/;function Ln(e,t,n){if(V(n))n.forEach(s=>Ln(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Of(e,t);Yr.test(n)?e.setProperty(Et(s),n.replace(Yr,""),"important"):e[s]=n}}const Xr=["Webkit","Moz","ms"],Cs={};function Of(e,t){const n=Cs[t];if(n)return n;let s=Ve(t);if(s!=="filter"&&s in e)return Cs[t]=s;s=Yn(s);for(let r=0;rAs||(Mf.then(()=>As=0),As=Date.now());function Lf(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ue(Ff(s,n.value),t,5,[s])};return n.value=e,n.attached=Df(),n}function Ff(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ri=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Vf=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?xf(e,s,o):t==="style"?Tf(e,n,s):qn(t)?Ys(t)||If(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hf(e,t,s,o))?(ti(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ei(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!fe(s))?ti(e,Ve(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ei(e,t,s,o))};function Hf(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ri(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ri(t)&&fe(n)?!1:t in e}const nl=new WeakMap,sl=new WeakMap,Wn=Symbol("_moveCb"),ii=Symbol("_enterCb"),jf=e=>(delete e.props.mode,e),Bf=jf({name:"TransitionGroup",props:pe({},Xo,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Cn(),s=po();let r,i;return Co(()=>{if(!r.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!Gf(r[0].el,n.vnode.el,o)){r=[];return}r.forEach(kf),r.forEach(Uf);const l=r.filter(Kf);Ks(n.vnode.el),l.forEach(c=>{const a=c.el,f=a.style;ze(a,o),f.transform=f.webkitTransform=f.transitionDuration="";const h=a[Wn]=p=>{p&&p.target!==a||(!p||p.propertyName.endsWith("transform"))&&(a.removeEventListener("transitionend",h),a[Wn]=null,dt(a,o))};a.addEventListener("transitionend",h)}),r=[]}),()=>{const o=Z(e),l=Zo(o);let c=o.tag||Oe;if(r=[],i)for(let a=0;a{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(s);const{hasTransform:o}=el(s);return i.removeChild(s),o}const $n=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>In(t,n):t};function Wf(e){e.target.composing=!0}function oi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Gt=Symbol("_assign");function li(e,t,n){return t&&(e=e.trim()),n&&(e=Zs(e)),e}const Ou={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Gt]=$n(r);const i=s||r.props&&r.props.type==="number";Tt(e,t?"change":"input",o=>{o.target.composing||e[Gt](li(e.value,n,i))}),(n||i)&&Tt(e,"change",()=>{e.value=li(e.value,n,i)}),t||(Tt(e,"compositionstart",Wf),Tt(e,"compositionend",oi),Tt(e,"change",oi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[Gt]=$n(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Zs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Pu={deep:!0,created(e,t,n){e[Gt]=$n(n),Tt(e,"change",()=>{const s=e._modelValue,r=$f(e),i=e.checked,o=e[Gt];if(V(s)){const l=Di(s,r),c=l!==-1;if(i&&!c)o(s.concat(r));else if(!i&&c){const a=[...s];a.splice(l,1),o(a)}}else if(Jn(s)){const l=new Set(s);i?l.add(r):l.delete(r),o(l)}else o(rl(e,i))})},mounted:ci,beforeUpdate(e,t,n){e[Gt]=$n(n),ci(e,t,n)}};function ci(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=Di(t,s.props.value)>-1;else if(Jn(t))r=t.has(s.props.value);else{if(t===n)return;r=ts(t,rl(e,!0))}e.checked!==r&&(e.checked=r)}function $f(e){return"_value"in e?e._value:e.value}function rl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const qf=["ctrl","shift","alt","meta"],Jf={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>qf.some(n=>e[`${n}Key`]&&!t.includes(n))},Iu=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const i=Et(r.key);if(t.some(o=>o===i||zf[o]===i))return e(r)}))},Qf=pe({patchProp:Vf},Ef);let fi;function il(){return fi||(fi=Zc(Qf))}const Mu=((...e)=>{il().render(...e)}),Du=((...e)=>{const t=il().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Xf(s);if(!r)return;const i=t._component;!W(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Yf(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function Yf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Xf(e){return fe(e)?document.querySelector(e):e}const jt=typeof document<"u";function ol(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Zf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ol(e.default)}const te=Object.assign;function xs(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ke(r)?r.map(e):e(r)}return n}const an=()=>{},Ke=Array.isArray;function ai(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const ll=/#/g,ea=/&/g,ta=/\//g,na=/=/g,sa=/\?/g,cl=/\+/g,ra=/%5B/g,ia=/%5D/g,fl=/%5E/g,oa=/%60/g,al=/%7B/g,la=/%7C/g,ul=/%7D/g,ca=/%20/g;function yr(e){return e==null?"":encodeURI(""+e).replace(la,"|").replace(ra,"[").replace(ia,"]")}function fa(e){return yr(e).replace(al,"{").replace(ul,"}").replace(fl,"^")}function Gs(e){return yr(e).replace(cl,"%2B").replace(ca,"+").replace(ll,"%23").replace(ea,"%26").replace(oa,"`").replace(al,"{").replace(ul,"}").replace(fl,"^")}function aa(e){return Gs(e).replace(na,"%3D")}function ua(e){return yr(e).replace(ll,"%23").replace(sa,"%3F")}function ha(e){return ua(e).replace(ta,"%2F")}function vn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const da=/\/$/,pa=e=>e.replace(da,"");function ws(e,t,n="/"){let s,r={},i="",o="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),i=t.slice(c,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(s=s||t.slice(0,l),o=t.slice(l,t.length)),s=ya(s??t,n),{fullPath:s+i+o,path:s,query:r,hash:vn(o)}}function ga(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ui(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ma(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&qt(t.matched[s],n.matched[r])&&hl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function qt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function hl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!_a(e[n],t[n]))return!1;return!0}function _a(e,t){return Ke(e)?hi(e,t):Ke(t)?hi(t,e):e?.valueOf()===t?.valueOf()}function hi(e,t){return Ke(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function ya(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let i=n.length-1,o,l;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(o).join("/")}const ht={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ws=(function(e){return e.pop="pop",e.push="push",e})({}),Rs=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function va(e){if(!e)if(jt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),pa(e)}const ba=/^[^#]+#/;function Ea(e,t){return e.replace(ba,"#")+t}function Sa(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const us=()=>({left:window.scrollX,top:window.scrollY});function Ca(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Sa(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function di(e,t){return(history.state?history.state.position-t:-1)+e}const $s=new Map;function Aa(e,t){$s.set(e,t)}function xa(e){const t=$s.get(e);return $s.delete(e),t}function wa(e){return typeof e=="string"||e&&typeof e=="object"}function dl(e){return typeof e=="string"||typeof e=="symbol"}let ue=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const pl=Symbol("");ue.MATCHER_NOT_FOUND+"",ue.NAVIGATION_GUARD_REDIRECT+"",ue.NAVIGATION_ABORTED+"",ue.NAVIGATION_CANCELLED+"",ue.NAVIGATION_DUPLICATED+"";function Jt(e,t){return te(new Error,{type:e,[pl]:!0},t)}function et(e,t){return e instanceof Error&&pl in e&&(t==null||!!(e.type&t))}const Ra=["params","query","hash"];function Ta(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Ra)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Oa(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Gs(r)):[s&&Gs(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Pa(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ke(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Ia=Symbol(""),gi=Symbol(""),hs=Symbol(""),vr=Symbol(""),qs=Symbol("");function Zt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function yt(e,t,n,s,r,i=o=>o()){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=p=>{p===!1?c(Jt(ue.NAVIGATION_ABORTED,{from:n,to:t})):p instanceof Error?c(p):wa(p)?c(Jt(ue.NAVIGATION_GUARD_REDIRECT,{from:t,to:p})):(o&&s.enterCallbacks[r]===o&&typeof p=="function"&&o.push(p),l())},f=i(()=>e.call(s&&s.instances[r],t,n,a));let h=Promise.resolve(f);e.length<3&&(h=h.then(a)),h.catch(p=>c(p))})}function Ts(e,t,n,s,r=i=>i()){const i=[];for(const o of e)for(const l in o.components){let c=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(ol(c)){const a=(c.__vccOpts||c)[t];a&&i.push(yt(a,n,s,o,l,r))}else{let a=c();i.push(()=>a.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${l}" at "${o.path}"`);const h=Zf(f)?f.default:f;o.mods[l]=f,o.components[l]=h;const p=(h.__vccOpts||h)[t];return p&&yt(p,n,s,o,l,r)()}))}}return i}function Na(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;oqt(a,l))?s.push(l):n.push(l));const c=e.matched[o];c&&(t.matched.find(a=>qt(a,c))||r.push(c))}return[n,s,r]}let Ma=()=>location.protocol+"//"+location.host;function gl(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),ui(l,"")}return ui(n,e)+s+r}function Da(e,t,n,s){let r=[],i=[],o=null;const l=({state:p})=>{const m=gl(e,location),S=n.value,C=t.value;let L=0;if(p){if(n.value=m,t.value=p,o&&o===S){o=null;return}L=C?p.position-C.position:0}else s(m);r.forEach(N=>{N(n.value,S,{delta:L,type:Ws.pop,direction:L?L>0?Rs.forward:Rs.back:Rs.unknown})})};function c(){o=n.value}function a(p){r.push(p);const m=()=>{const S=r.indexOf(p);S>-1&&r.splice(S,1)};return i.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(te({},p.state,{scroll:us()}),"")}}function h(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:a,destroy:h}}function mi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?us():null}}function La(e){const{history:t,location:n}=window,s={value:gl(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,a,f){const h=e.indexOf("#"),p=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:Ma()+e+c;try{t[f?"replaceState":"pushState"](a,"",p),r.value=a}catch(m){console.error(m),n[f?"replace":"assign"](p)}}function o(c,a){i(c,te({},t.state,mi(r.value.back,c,r.value.forward,!0),a,{position:r.value.position}),!0),s.value=c}function l(c,a){const f=te({},r.value,t.state,{forward:c,scroll:us()});i(f.current,f,!0),i(c,te({},mi(s.value,c,null),{position:f.position+1},a),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Lu(e){e=va(e);const t=La(e),n=Da(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=te({location:"",base:e,go:s,createHref:Ea.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Ot=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var de=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(de||{});const Fa={type:Ot.Static,value:""},Va=/[a-zA-Z0-9_]/;function Ha(e){if(!e)return[[]];if(e==="/")return[[Fa]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${a}": ${m}`)}let n=de.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,a="",f="";function h(){a&&(n===de.Static?i.push({type:Ot.Static,value:a}):n===de.Param||n===de.ParamRegExp||n===de.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Ot.Param,value:a,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function p(){a+=c}for(;lt.length?t.length===1&&t[0]===Ce.Static+Ce.Segment?1:-1:0}function ml(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Ka={strict:!1,end:!0,sensitive:!1};function Ga(e,t,n){const s=ka(Ha(e.path),n),r=te(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Wa(e,t){const n=[],s=new Map;t=ai(Ka,t);function r(h){return s.get(h)}function i(h,p,m){const S=!m,C=bi(h);C.aliasOf=m&&m.record;const L=ai(t,h),N=[C];if("alias"in h){const M=typeof h.alias=="string"?[h.alias]:h.alias;for(const B of M)N.push(bi(te({},C,{components:m?m.record.components:C.components,path:B,aliasOf:m?m.record:C})))}let P,F;for(const M of N){const{path:B}=M;if(p&&B[0]!=="/"){const J=p.record.path,q=J[J.length-1]==="/"?"":"/";M.path=p.record.path+(B&&q+B)}if(P=Ga(M,p,L),m?m.alias.push(P):(F=F||P,F!==P&&F.alias.push(P),S&&h.name&&!Ei(P)&&o(h.name)),_l(P)&&c(P),C.children){const J=C.children;for(let q=0;q{o(F)}:an}function o(h){if(dl(h)){const p=s.get(h);p&&(s.delete(h),n.splice(n.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=n.indexOf(h);p>-1&&(n.splice(p,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return n}function c(h){const p=Ja(h,n);n.splice(p,0,h),h.record.name&&!Ei(h)&&s.set(h.record.name,h)}function a(h,p){let m,S={},C,L;if("name"in h&&h.name){if(m=s.get(h.name),!m)throw Jt(ue.MATCHER_NOT_FOUND,{location:h});L=m.record.name,S=te(vi(p.params,m.keys.filter(F=>!F.optional).concat(m.parent?m.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),h.params&&vi(h.params,m.keys.map(F=>F.name))),C=m.stringify(S)}else if(h.path!=null)C=h.path,m=n.find(F=>F.re.test(C)),m&&(S=m.parse(C),L=m.record.name);else{if(m=p.name?s.get(p.name):n.find(F=>F.re.test(p.path)),!m)throw Jt(ue.MATCHER_NOT_FOUND,{location:h,currentLocation:p});L=m.record.name,S=te({},p.params,h.params),C=m.stringify(S)}const N=[];let P=m;for(;P;)N.unshift(P.record),P=P.parent;return{name:L,path:C,params:S,matched:N,meta:qa(N)}}e.forEach(h=>i(h));function f(){n.length=0,s.clear()}return{addRoute:i,resolve:a,removeRoute:o,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function vi(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function bi(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:$a(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function $a(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Ei(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function qa(e){return e.reduce((t,n)=>te(t,n.meta),{})}function Ja(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;ml(e,t[i])<0?s=i:n=i+1}const r=za(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function za(e){let t=e;for(;t=t.parent;)if(_l(t)&&ml(e,t)===0)return t}function _l({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Si(e){const t=Fe(hs),n=Fe(vr),s=Le(()=>{const c=It(e.to);return t.resolve(c)}),r=Le(()=>{const{matched:c}=s.value,{length:a}=c,f=c[a-1],h=n.matched;if(!f||!h.length)return-1;const p=h.findIndex(qt.bind(null,f));if(p>-1)return p;const m=Ci(c[a-2]);return a>1&&Ci(f)===m&&h[h.length-1].path!==m?h.findIndex(qt.bind(null,c[a-2])):p}),i=Le(()=>r.value>-1&&eu(n.params,s.value.params)),o=Le(()=>r.value>-1&&r.value===n.matched.length-1&&hl(n.params,s.value.params));function l(c={}){if(Za(c)){const a=t[It(e.replace)?"replace":"push"](It(e.to)).catch(an);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:Le(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function Qa(e){return e.length===1?e[0]:e}const Ya=vo({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Si,setup(e,{slots:t}){const n=En(Si(e)),{options:s}=Fe(hs),r=Le(()=>({[Ai(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ai(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Qa(t.default(n));return e.custom?i:_r("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Xa=Ya;function Za(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function eu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ke(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Ci(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ai=(e,t,n)=>e??t??n,tu=vo({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Fe(qs),r=Le(()=>e.route||s.value),i=Fe(gi,0),o=Le(()=>{let a=It(i);const{matched:f}=r.value;let h;for(;(h=f[a])&&!h.components;)a++;return a}),l=Le(()=>r.value.matched[o.value]);Mn(gi,Le(()=>o.value+1)),Mn(Ia,l),Mn(qs,r);const c=rs();return cn(()=>[c.value,l.value,e.name],([a,f,h],[p,m,S])=>{f&&(f.instances[h]=a,m&&m!==f&&a&&a===p&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),a&&f&&(!m||!qt(f,m)||!p)&&(f.enterCallbacks[h]||[]).forEach(C=>C(a))},{flush:"post"}),()=>{const a=r.value,f=e.name,h=l.value,p=h&&h.components[f];if(!p)return xi(n.default,{Component:p,route:a});const m=h.props[f],S=m?m===!0?a.params:typeof m=="function"?m(a):m:null,L=_r(p,te({},S,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(h.instances[f]=null)},ref:c}));return xi(n.default,{Component:L,route:a})||L}}});function xi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const nu=tu;function Fu(e){const t=Wa(e.routes,e),n=e.parseQuery||Oa,s=e.stringifyQuery||pi,r=e.history,i=Zt(),o=Zt(),l=Zt(),c=tc(ht);let a=ht;jt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=xs.bind(null,v=>""+v),h=xs.bind(null,ha),p=xs.bind(null,vn);function m(v,D){let T,H;return dl(v)?(T=t.getRecordMatcher(v),H=D):H=v,t.addRoute(H,T)}function S(v){const D=t.getRecordMatcher(v);D&&t.removeRoute(D)}function C(){return t.getRoutes().map(v=>v.record)}function L(v){return!!t.getRecordMatcher(v)}function N(v,D){if(D=te({},D||c.value),typeof v=="string"){const g=ws(n,v,D.path),y=t.resolve({path:g.path},D),b=r.createHref(g.fullPath);return te(g,y,{params:p(y.params),hash:vn(g.hash),redirectedFrom:void 0,href:b})}let T;if(v.path!=null)T=te({},v,{path:ws(n,v.path,D.path).path});else{const g=te({},v.params);for(const y in g)g[y]==null&&delete g[y];T=te({},v,{params:h(g)}),D.params=h(D.params)}const H=t.resolve(T,D),Y=v.hash||"";H.params=f(p(H.params));const u=ga(s,te({},v,{hash:fa(Y),path:H.path})),d=r.createHref(u);return te({fullPath:u,hash:Y,query:s===pi?Pa(v.query):v.query||{}},H,{redirectedFrom:void 0,href:d})}function P(v){return typeof v=="string"?ws(n,v,c.value.path):te({},v)}function F(v,D){if(a!==v)return Jt(ue.NAVIGATION_CANCELLED,{from:D,to:v})}function M(v){return q(v)}function B(v){return M(te(P(v),{replace:!0}))}function J(v,D){const T=v.matched[v.matched.length-1];if(T&&T.redirect){const{redirect:H}=T;let Y=typeof H=="function"?H(v,D):H;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=P(Y):{path:Y},Y.params={}),te({query:v.query,hash:v.hash,params:Y.path!=null?{}:v.params},Y)}}function q(v,D){const T=a=N(v),H=c.value,Y=v.state,u=v.force,d=v.replace===!0,g=J(T,H);if(g)return q(te(P(g),{state:typeof g=="object"?te({},Y,g.state):Y,force:u,replace:d}),D||T);const y=T;y.redirectedFrom=D;let b;return!u&&ma(s,H,T)&&(b=Jt(ue.NAVIGATION_DUPLICATED,{to:y,from:H}),Ge(H,H,!0,!1)),(b?Promise.resolve(b):U(y,H)).catch(_=>et(_)?et(_,ue.NAVIGATION_GUARD_REDIRECT)?_:at(_):ee(_,y,H)).then(_=>{if(_){if(et(_,ue.NAVIGATION_GUARD_REDIRECT))return q(te({replace:d},P(_.to),{state:typeof _.to=="object"?te({},Y,_.to.state):Y,force:u}),D||y)}else _=O(y,H,!0,d,Y);return z(y,H,_),_})}function k(v,D){const T=F(v,D);return T?Promise.reject(T):Promise.resolve()}function A(v){const D=Lt.values().next().value;return D&&typeof D.runWithContext=="function"?D.runWithContext(v):v()}function U(v,D){let T;const[H,Y,u]=Na(v,D);T=Ts(H.reverse(),"beforeRouteLeave",v,D);for(const g of H)g.leaveGuards.forEach(y=>{T.push(yt(y,v,D))});const d=k.bind(null,v,D);return T.push(d),Me(T).then(()=>{T=[];for(const g of i.list())T.push(yt(g,v,D));return T.push(d),Me(T)}).then(()=>{T=Ts(Y,"beforeRouteUpdate",v,D);for(const g of Y)g.updateGuards.forEach(y=>{T.push(yt(y,v,D))});return T.push(d),Me(T)}).then(()=>{T=[];for(const g of u)if(g.beforeEnter)if(Ke(g.beforeEnter))for(const y of g.beforeEnter)T.push(yt(y,v,D));else T.push(yt(g.beforeEnter,v,D));return T.push(d),Me(T)}).then(()=>(v.matched.forEach(g=>g.enterCallbacks={}),T=Ts(u,"beforeRouteEnter",v,D,A),T.push(d),Me(T))).then(()=>{T=[];for(const g of o.list())T.push(yt(g,v,D));return T.push(d),Me(T)}).catch(g=>et(g,ue.NAVIGATION_CANCELLED)?g:Promise.reject(g))}function z(v,D,T){l.list().forEach(H=>A(()=>H(v,D,T)))}function O(v,D,T,H,Y){const u=F(v,D);if(u)return u;const d=D===ht,g=jt?history.state:{};T&&(H||d?r.replace(v.fullPath,te({scroll:d&&g&&g.scroll},Y)):r.push(v.fullPath,Y)),c.value=v,Ge(v,D,T,d),at()}let Q;function he(){Q||(Q=r.listen((v,D,T)=>{if(!St.listening)return;const H=N(v),Y=J(H,St.currentRoute.value);if(Y){q(te(Y,{replace:!0,force:!0}),H).catch(an);return}a=H;const u=c.value;jt&&Aa(di(u.fullPath,T.delta),us()),U(H,u).catch(d=>et(d,ue.NAVIGATION_ABORTED|ue.NAVIGATION_CANCELLED)?d:et(d,ue.NAVIGATION_GUARD_REDIRECT)?(q(te(P(d.to),{force:!0}),H).then(g=>{et(g,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&!T.delta&&T.type===Ws.pop&&r.go(-1,!1)}).catch(an),Promise.reject()):(T.delta&&r.go(-T.delta,!1),ee(d,H,u))).then(d=>{d=d||O(H,u,!1),d&&(T.delta&&!et(d,ue.NAVIGATION_CANCELLED)?r.go(-T.delta,!1):T.type===Ws.pop&&et(d,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),z(H,u,d)}).catch(an)}))}let be=Zt(),ie=Zt(),$;function ee(v,D,T){at(v);const H=ie.list();return H.length?H.forEach(Y=>Y(v,D,T)):console.error(v),Promise.reject(v)}function Xe(){return $&&c.value!==ht?Promise.resolve():new Promise((v,D)=>{be.add([v,D])})}function at(v){return $||($=!v,he(),be.list().forEach(([D,T])=>v?T(v):D()),be.reset()),v}function Ge(v,D,T,H){const{scrollBehavior:Y}=e;if(!jt||!Y)return Promise.resolve();const u=!T&&xa(di(v.fullPath,0))||(H||!T)&&history.state&&history.state.scroll||null;return lr().then(()=>Y(v,D,u)).then(d=>d&&Ca(d)).catch(d=>ee(d,v,D))}const we=v=>r.go(v);let Dt;const Lt=new Set,St={currentRoute:c,listening:!0,addRoute:m,removeRoute:S,clearRoutes:t.clearRoutes,hasRoute:L,getRoutes:C,resolve:N,options:e,push:M,replace:B,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:ie.add,isReady:Xe,install(v){v.component("RouterLink",Xa),v.component("RouterView",nu),v.config.globalProperties.$router=St,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>It(c)}),jt&&!Dt&&c.value===ht&&(Dt=!0,M(r.location).catch(H=>{}));const D={};for(const H in ht)Object.defineProperty(D,H,{get:()=>c.value[H],enumerable:!0});v.provide(hs,St),v.provide(vr,eo(D)),v.provide(qs,c);const T=v.unmount;Lt.add(v),v.unmount=function(){Lt.delete(v),Lt.size<1&&(a=ht,Q&&Q(),Q=null,c.value=ht,Dt=!1,$=!1),T()}}};function Me(v){return v.reduce((D,T)=>D.then(()=>A(T)),Promise.resolve())}return St}function Vu(){return Fe(hs)}function Hu(e){return Fe(vr)}let yl;const ds=e=>yl=e,vl=Symbol();function Js(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var un;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(un||(un={}));function ju(){const e=Hi(!0),t=e.run(()=>rs({}));let n=[],s=[];const r=or({install(i){ds(r),r._a=i,i.provide(vl,r),i.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(i){return this._a?n.push(i):s.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const bl=()=>{};function wi(e,t,n,s=bl){e.add(t);const r=()=>{e.delete(t)&&s()};return!n&&ji()&&Ll(r),r}function Vt(e,...t){e.forEach(n=>{n(...t)})}const su=e=>e(),Ri=Symbol(),Os=Symbol();function zs(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];Js(r)&&Js(s)&&e.hasOwnProperty(n)&&!ae(s)&&!it(s)?e[n]=zs(r,s):e[n]=s}return e}const ru=Symbol();function iu(e){return!Js(e)||!Object.prototype.hasOwnProperty.call(e,ru)}const{assign:pt}=Object;function ou(e){return!!(ae(e)&&e.effect)}function lu(e,t,n,s){const{state:r,actions:i,getters:o}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const f=rc(n.state.value[e]);return pt(f,i,Object.keys(o||{}).reduce((h,p)=>(h[p]=or(Le(()=>{ds(n);const m=n._s.get(e);return o[p].call(m,m)})),h),{}))}return c=El(e,a,t,n,s,!0),c}function El(e,t,n={},s,r,i){let o;const l=pt({actions:{}},n),c={deep:!0};let a,f,h=new Set,p=new Set,m;const S=s.state.value[e];!i&&!S&&(s.state.value[e]={}),rs({});let C;function L(k){let A;a=f=!1,typeof k=="function"?(k(s.state.value[e]),A={type:un.patchFunction,storeId:e,events:m}):(zs(s.state.value[e],k),A={type:un.patchObject,payload:k,storeId:e,events:m});const U=C=Symbol();lr().then(()=>{C===U&&(a=!0)}),f=!0,Vt(h,A,s.state.value[e])}const N=i?function(){const{state:A}=n,U=A?A():{};this.$patch(z=>{pt(z,U)})}:bl;function P(){o.stop(),h.clear(),p.clear(),s._s.delete(e)}const F=(k,A="")=>{if(Ri in k)return k[Os]=A,k;const U=function(){ds(s);const z=Array.from(arguments),O=new Set,Q=new Set;function he($){O.add($)}function be($){Q.add($)}Vt(p,{args:z,name:U[Os],store:B,after:he,onError:be});let ie;try{ie=k.apply(this&&this.$id===e?this:B,z)}catch($){throw Vt(Q,$),$}return ie instanceof Promise?ie.then($=>(Vt(O,$),$)).catch($=>(Vt(Q,$),Promise.reject($))):(Vt(O,ie),ie)};return U[Ri]=!0,U[Os]=A,U},M={_p:s,$id:e,$onAction:wi.bind(null,p),$patch:L,$reset:N,$subscribe(k,A={}){const U=wi(h,k,A.detached,()=>z()),z=o.run(()=>cn(()=>s.state.value[e],O=>{(A.flush==="sync"?f:a)&&k({storeId:e,type:un.direct,events:m},O)},pt({},c,A)));return U},$dispose:P},B=En(M);s._s.set(e,B);const q=(s._a&&s._a.runWithContext||su)(()=>s._e.run(()=>(o=Hi()).run(()=>t({action:F}))));for(const k in q){const A=q[k];if(ae(A)&&!ou(A)||it(A))i||(S&&iu(A)&&(ae(A)?A.value=S[k]:zs(A,S[k])),s.state.value[e][k]=A);else if(typeof A=="function"){const U=F(A,k);q[k]=U,l.actions[k]=A}}return pt(B,q),pt(Z(B),q),Object.defineProperty(B,"$state",{get:()=>s.state.value[e],set:k=>{L(A=>{pt(A,k)})}}),s._p.forEach(k=>{pt(B,o.run(()=>k({store:B,app:s._a,pinia:s,options:l})))}),S&&i&&n.hydrate&&n.hydrate(B.$state,S),a=!0,f=!0,B}function Bu(e,t,n){let s;const r=typeof t=="function";s=r?n:t;function i(o,l){const c=Fc();return o=o||(c?Fe(vl,null):null),o&&ds(o),o=yl,o._s.has(e)||(r?El(e,t,s,o):lu(e,s,o)),o._s.get(e)}return i.$id=e,i}export{ye as $,vo as A,yu as B,It as C,pu as D,tc as E,Oe as F,_r as G,fu as H,_n as I,fe as J,V as K,cn as L,Mn as M,Oi as N,ff as O,vu as P,Fe as Q,Ru as R,bu as S,wu as T,Zn as U,Cn as V,lr as W,re as X,Su as Y,au as Z,ne as _,Fu as a,W as a0,Mu as a1,rc as a2,ae as a3,mu as a4,Ec as a5,Co as a6,xo as a7,gu as a8,Sc as a9,Et as aa,Cr as ab,Eu as ac,He as ad,Z as ae,Pu as af,Bu as ag,Tu as ah,Ii as ai,cu as aj,Pn as ak,yc as al,bt as am,fs as an,hu as ao,Ms as ap,vc as aq,Ll as ar,_u as as,Yn as at,or as au,eo as av,ji as aw,xu as ax,Ve as ay,Lu as b,Bs as c,Du as d,ju as e,En as f,rs as g,Le as h,So as i,Cu as j,$o as k,Au as l,Nu as m,es as n,js as o,Iu as p,xe as q,du as r,pc as s,Dl as t,Vu as u,Ou as v,uu as w,cf as x,Hu as y,Ao as z}; +function Qs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const oe={},Bt=[],He=()=>{},Ti=()=>!1,qn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ys=e=>e.startsWith("onUpdate:"),pe=Object.assign,Xs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Sl=Object.prototype.hasOwnProperty,ne=(e,t)=>Sl.call(e,t),V=Array.isArray,kt=e=>bn(e)==="[object Map]",Jn=e=>bn(e)==="[object Set]",Cr=e=>bn(e)==="[object Date]",W=e=>typeof e=="function",fe=e=>typeof e=="string",Be=e=>typeof e=="symbol",re=e=>e!==null&&typeof e=="object",Oi=e=>(re(e)||W(e))&&W(e.then)&&W(e.catch),Pi=Object.prototype.toString,bn=e=>Pi.call(e),Cl=e=>bn(e).slice(8,-1),Ii=e=>bn(e)==="[object Object]",zn=e=>fe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,tn=Qs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qn=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},Al=/-\w/g,Ve=Qn(e=>e.replace(Al,t=>t.slice(1).toUpperCase())),xl=/\B([A-Z])/g,Et=Qn(e=>e.replace(xl,"-$1").toLowerCase()),Yn=Qn(e=>e.charAt(0).toUpperCase()+e.slice(1)),Pn=Qn(e=>e?`on${Yn(e)}`:""),vt=(e,t)=>!Object.is(e,t),In=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Zs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},wl=e=>{const t=fe(e)?Number(e):NaN;return isNaN(t)?e:t};let Ar;const Xn=()=>Ar||(Ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Zn(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(Tl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function es(e){let t="";if(fe(e))t=e;else if(V(e))for(let n=0;nts(n,t))}const Li=e=>!!(e&&e.__v_isRef===!0),Dl=e=>fe(e)?e:e==null?"":V(e)||re(e)&&(e.toString===Pi||!W(e.toString))?Li(e)?Dl(e.value):JSON.stringify(e,Fi,2):String(e),Fi=(e,t)=>Li(t)?Fi(e,t.value):kt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[ps(s,i)+" =>"]=r,n),{})}:Jn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ps(n))}:Be(t)?ps(t):re(t)&&!V(t)&&!Ii(t)?String(t):t,ps=(e,t="")=>{var n;return Be(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let me;class Vi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=me,!t&&me&&(this.index=(me.scopes||(me.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(me=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(sn){let t=sn;for(sn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;nn;){let t=nn;for(nn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Ki(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Gi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),nr(s),Fl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ps(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Wi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Wi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===hn)||(e.globalVersion=hn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ps(e))))return;e.flags|=2;const t=e.dep,n=ce,s=je;ce=e,je=!0;try{Ki(e);const r=e.fn(e._value);(t.version===0||vt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,je=s,Gi(e),e.flags&=-3}}function nr(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)nr(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Fl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let je=!0;const $i=[];function ot(){$i.push(je),je=!1}function lt(){const e=$i.pop();je=e===void 0?!0:e}function xr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let hn=0;class Vl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class sr{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!je||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new Vl(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,qi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,hn++,this.notify(t)}notify(t){er();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{tr()}}}function qi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)qi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Fn=new WeakMap,Pt=Symbol(""),Is=Symbol(""),dn=Symbol("");function _e(e,t,n){if(je&&ce){let s=Fn.get(e);s||Fn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new sr),r.map=s,r.key=n),r.track()}}function st(e,t,n,s,r,i){const o=Fn.get(e);if(!o){hn++;return}const l=c=>{c&&c.trigger()};if(er(),t==="clear")o.forEach(l);else{const c=V(e),a=c&&zn(n);if(c&&n==="length"){const f=Number(s);o.forEach((h,p)=>{(p==="length"||p===dn||!Be(p)&&p>=f)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),a&&l(o.get(dn)),t){case"add":c?a&&l(o.get("length")):(l(o.get(Pt)),kt(e)&&l(o.get(Is)));break;case"delete":c||(l(o.get(Pt)),kt(e)&&l(o.get(Is)));break;case"set":kt(e)&&l(o.get(Pt));break}}tr()}function Hl(e,t){const n=Fn.get(e);return n&&n.get(t)}function Ft(e){const t=Z(e);return t===e?t:(_e(t,"iterate",dn),Ne(e)?t:t.map(ke))}function ns(e){return _e(e=Z(e),"iterate",dn),e}function gt(e,t){return ct(e)?it(e)?Wt(ke(t)):Wt(t):ke(t)}const jl={__proto__:null,[Symbol.iterator](){return ms(this,Symbol.iterator,e=>gt(this,e))},concat(...e){return Ft(this).concat(...e.map(t=>V(t)?Ft(t):t))},entries(){return ms(this,"entries",e=>(e[1]=gt(this,e[1]),e))},every(e,t){return Ze(this,"every",e,t,void 0,arguments)},filter(e,t){return Ze(this,"filter",e,t,n=>n.map(s=>gt(this,s)),arguments)},find(e,t){return Ze(this,"find",e,t,n=>gt(this,n),arguments)},findIndex(e,t){return Ze(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ze(this,"findLast",e,t,n=>gt(this,n),arguments)},findLastIndex(e,t){return Ze(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ze(this,"forEach",e,t,void 0,arguments)},includes(...e){return _s(this,"includes",e)},indexOf(...e){return _s(this,"indexOf",e)},join(e){return Ft(this).join(e)},lastIndexOf(...e){return _s(this,"lastIndexOf",e)},map(e,t){return Ze(this,"map",e,t,void 0,arguments)},pop(){return Qt(this,"pop")},push(...e){return Qt(this,"push",e)},reduce(e,...t){return wr(this,"reduce",e,t)},reduceRight(e,...t){return wr(this,"reduceRight",e,t)},shift(){return Qt(this,"shift")},some(e,t){return Ze(this,"some",e,t,void 0,arguments)},splice(...e){return Qt(this,"splice",e)},toReversed(){return Ft(this).toReversed()},toSorted(e){return Ft(this).toSorted(e)},toSpliced(...e){return Ft(this).toSpliced(...e)},unshift(...e){return Qt(this,"unshift",e)},values(){return ms(this,"values",e=>gt(this,e))}};function ms(e,t,n){const s=ns(e),r=s[t]();return s!==e&&!Ne(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Bl=Array.prototype;function Ze(e,t,n,s,r,i){const o=ns(e),l=o!==e&&!Ne(e),c=o[t];if(c!==Bl[t]){const h=c.apply(e,i);return l?ke(h):h}let a=n;o!==e&&(l?a=function(h,p){return n.call(this,gt(e,h),p,e)}:n.length>2&&(a=function(h,p){return n.call(this,h,p,e)}));const f=c.call(o,a,s);return l&&r?r(f):f}function wr(e,t,n,s){const r=ns(e);let i=n;return r!==e&&(Ne(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,gt(e,l),c,e)}),r[t](i,...s)}function _s(e,t,n){const s=Z(e);_e(s,"iterate",dn);const r=s[t](...n);return(r===-1||r===!1)&&ss(n[0])?(n[0]=Z(n[0]),s[t](...n)):r}function Qt(e,t,n=[]){ot(),er();const s=Z(e)[t].apply(e,n);return tr(),lt(),s}const kl=Qs("__proto__,__v_isRef,__isVue"),Ji=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Be));function Ul(e){Be(e)||(e=String(e));const t=Z(this);return _e(t,"has",e),t.hasOwnProperty(e)}class zi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Xl:Zi:i?Xi:Yi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=V(t);if(!r){let c;if(o&&(c=jl[n]))return c;if(n==="hasOwnProperty")return Ul}const l=Reflect.get(t,n,ae(t)?t:s);if((Be(n)?Ji.has(n):kl(n))||(r||_e(t,"get",n),i))return l;if(ae(l)){const c=o&&zn(n)?l:l.value;return r&&re(c)?Ms(c):c}return re(l)?r?Ms(l):En(l):l}}class Qi extends zi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const o=V(t)&&zn(n);if(!this._isShallow){const a=ct(i);if(!Ne(s)&&!ct(s)&&(i=Z(i),s=Z(s)),!o&&ae(i)&&!ae(s))return a||(i.value=s),!0}const l=o?Number(n)e,xn=e=>Reflect.getPrototypeOf(e);function ql(e,t,n){return function(...s){const r=this.__v_raw,i=Z(r),o=kt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,a=r[e](...s),f=n?Ns:t?Wt:ke;return!t&&_e(i,"iterate",c?Is:Pt),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function wn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Jl(e,t){const n={get(r){const i=this.__v_raw,o=Z(i),l=Z(r);e||(vt(r,l)&&_e(o,"get",r),_e(o,"get",l));const{has:c}=xn(o),a=t?Ns:e?Wt:ke;if(c.call(o,r))return a(i.get(r));if(c.call(o,l))return a(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&_e(Z(r),"iterate",Pt),r.size},has(r){const i=this.__v_raw,o=Z(i),l=Z(r);return e||(vt(r,l)&&_e(o,"has",r),_e(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=Z(l),a=t?Ns:e?Wt:ke;return!e&&_e(c,"iterate",Pt),l.forEach((f,h)=>r.call(i,a(f),a(h),o))}};return pe(n,e?{add:wn("add"),set:wn("set"),delete:wn("delete"),clear:wn("clear")}:{add(r){!t&&!Ne(r)&&!ct(r)&&(r=Z(r));const i=Z(this);return xn(i).has.call(i,r)||(i.add(r),st(i,"add",r,r)),this},set(r,i){!t&&!Ne(i)&&!ct(i)&&(i=Z(i));const o=Z(this),{has:l,get:c}=xn(o);let a=l.call(o,r);a||(r=Z(r),a=l.call(o,r));const f=c.call(o,r);return o.set(r,i),a?vt(i,f)&&st(o,"set",r,i):st(o,"add",r,i),this},delete(r){const i=Z(this),{has:o,get:l}=xn(i);let c=o.call(i,r);c||(r=Z(r),c=o.call(i,r)),l&&l.call(i,r);const a=i.delete(r);return c&&st(i,"delete",r,void 0),a},clear(){const r=Z(this),i=r.size!==0,o=r.clear();return i&&st(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=ql(r,e,t)}),n}function rr(e,t){const n=Jl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(ne(n,r)&&r in s?n:s,r,i)}const zl={get:rr(!1,!1)},Ql={get:rr(!1,!0)},Yl={get:rr(!0,!1)};const Yi=new WeakMap,Xi=new WeakMap,Zi=new WeakMap,Xl=new WeakMap;function Zl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ec(e){return e.__v_skip||!Object.isExtensible(e)?0:Zl(Cl(e))}function En(e){return ct(e)?e:ir(e,!1,Gl,zl,Yi)}function eo(e){return ir(e,!1,$l,Ql,Xi)}function Ms(e){return ir(e,!0,Wl,Yl,Zi)}function ir(e,t,n,s,r){if(!re(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=ec(e);if(i===0)return e;const o=r.get(e);if(o)return o;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function it(e){return ct(e)?it(e.__v_raw):!!(e&&e.__v_isReactive)}function ct(e){return!!(e&&e.__v_isReadonly)}function Ne(e){return!!(e&&e.__v_isShallow)}function ss(e){return e?!!e.__v_raw:!1}function Z(e){const t=e&&e.__v_raw;return t?Z(t):e}function or(e){return!ne(e,"__v_skip")&&Object.isExtensible(e)&&Ni(e,"__v_skip",!0),e}const ke=e=>re(e)?En(e):e,Wt=e=>re(e)?Ms(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function rs(e){return to(e,!1)}function tc(e){return to(e,!0)}function to(e,t){return ae(e)?e:new nc(e,t)}class nc{constructor(t,n){this.dep=new sr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Z(t),this._value=n?t:ke(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ne(t)||ct(t);t=s?t:Z(t),vt(t,n)&&(this._rawValue=t,this._value=s?t:ke(t),this.dep.trigger())}}function fu(e){e.dep&&e.dep.trigger()}function It(e){return ae(e)?e.value:e}const sc={get:(e,t,n)=>t==="__v_raw"?e:It(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function no(e){return it(e)?e:new Proxy(e,sc)}function rc(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=so(e,n);return t}class ic{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0,this._raw=Z(t);let r=!0,i=t;if(!V(t)||!zn(String(n)))do r=!ss(i)||Ne(i);while(r&&(i=i.__v_raw));this._shallow=r}get value(){let t=this._object[this._key];return this._shallow&&(t=It(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&ae(this._raw[this._key])){const n=this._object[this._key];if(ae(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return Hl(this._raw,this._key)}}class oc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function au(e,t,n){return ae(e)?e:W(e)?new oc(e):re(e)&&arguments.length>1?so(e,t,n):rs(e)}function so(e,t,n){return new ic(e,t,n)}class lc{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new sr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=hn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return Ui(this,!0),!0}get value(){const t=this.dep.track();return Wi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function cc(e,t,n=!1){let s,r;return W(e)?s=e:(s=e.get,r=e.set),new lc(s,r,n)}const Rn={},Vn=new WeakMap;let wt;function fc(e,t=!1,n=wt){if(n){let s=Vn.get(n);s||Vn.set(n,s=[]),s.push(e)}}function ac(e,t,n=oe){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,a=M=>r?M:Ne(M)||r===!1||r===0?rt(M,1):rt(M);let f,h,p,m,S=!1,C=!1;if(ae(e)?(h=()=>e.value,S=Ne(e)):it(e)?(h=()=>a(e),S=!0):V(e)?(C=!0,S=e.some(M=>it(M)||Ne(M)),h=()=>e.map(M=>{if(ae(M))return M.value;if(it(M))return a(M);if(W(M))return c?c(M,2):M()})):W(e)?t?h=c?()=>c(e,2):e:h=()=>{if(p){ot();try{p()}finally{lt()}}const M=wt;wt=f;try{return c?c(e,3,[m]):e(m)}finally{wt=M}}:h=He,t&&r){const M=h,B=r===!0?1/0:r;h=()=>rt(M(),B)}const L=ji(),N=()=>{f.stop(),L&&L.active&&Xs(L.effects,f)};if(i&&t){const M=t;t=(...B)=>{M(...B),N()}}let P=C?new Array(e.length).fill(Rn):Rn;const F=M=>{if(!(!(f.flags&1)||!f.dirty&&!M))if(t){const B=f.run();if(r||S||(C?B.some((J,q)=>vt(J,P[q])):vt(B,P))){p&&p();const J=wt;wt=f;try{const q=[B,P===Rn?void 0:C&&P[0]===Rn?[]:P,m];P=B,c?c(t,3,q):t(...q)}finally{wt=J}}}else f.run()};return l&&l(F),f=new Bi(h),f.scheduler=o?()=>o(F,!1):F,m=M=>fc(M,!1,f),p=f.onStop=()=>{const M=Vn.get(f);if(M){if(c)c(M,4);else for(const B of M)B();Vn.delete(f)}},t?s?F(!0):P=f.run():o?o(F.bind(null,!0),!0):f.run(),N.pause=f.pause.bind(f),N.resume=f.resume.bind(f),N.stop=N,N}function rt(e,t=1/0,n){if(t<=0||!re(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ae(e))rt(e.value,t,n);else if(V(e))for(let s=0;s{rt(s,t,n)});else if(Ii(e)){for(const s in e)rt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&rt(e[s],t,n)}return e}function Sn(e,t,n,s){try{return s?e(...s):e()}catch(r){is(r,t,n)}}function Ue(e,t,n,s){if(W(e)){const r=Sn(e,t,n,s);return r&&Oi(r)&&r.catch(i=>{is(i,t,n)}),r}if(V(e)){const r=[];for(let i=0;i>>1,r=Ae[s],i=pn(r);i=pn(n)?Ae.push(e):Ae.splice(hc(t),0,e),e.flags|=1,io()}}function io(){Hn||(Hn=ro.then(lo))}function dc(e){V(e)?Ut.push(...e):mt&&e.id===-1?mt.splice(Ht+1,0,e):e.flags&1||(Ut.push(e),e.flags|=1),io()}function Rr(e,t,n=Qe+1){for(;npn(n)-pn(s));if(Ut.length=0,mt){mt.push(...t);return}for(mt=t,Ht=0;Hte.id==null?e.flags&2?-1:1/0:e.id;function lo(e){try{for(Qe=0;Qe{s._d&&Un(-1);const i=jn(t);let o;try{o=e(...r)}finally{jn(i),s._d&&Un(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function uu(e,t){if(ge===null)return e;const n=as(ge),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,rn=e=>e&&(e.disabled||e.disabled===""),Tr=e=>e&&(e.defer||e.defer===""),Or=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Pr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ds=(e,t)=>{const n=e&&e.to;return fe(n)?t?t(n):null:n},uo={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:m,querySelector:S,createText:C,createComment:L}}=a,N=rn(t.props);let{shapeFlag:P,children:F,dynamicChildren:M}=t;if(e==null){const B=t.el=C(""),J=t.anchor=C("");m(B,n,s),m(J,n,s);const q=(A,U)=>{P&16&&f(F,A,U,r,i,o,l,c)},k=()=>{const A=t.target=Ds(t.props,S),U=ho(A,t,C,m);A&&(o!=="svg"&&Or(A)?o="svg":o!=="mathml"&&Pr(A)&&(o="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(A),N||(q(A,U),Nn(t,!1)))};N&&(q(n,J),Nn(t,!0)),Tr(t.props)?(t.el.__isMounted=!1,Se(()=>{k(),delete t.el.__isMounted},i)):k()}else{if(Tr(t.props)&&e.el.__isMounted===!1){Se(()=>{uo.process(e,t,n,s,r,i,o,l,c,a)},i);return}t.el=e.el,t.targetStart=e.targetStart;const B=t.anchor=e.anchor,J=t.target=e.target,q=t.targetAnchor=e.targetAnchor,k=rn(e.props),A=k?n:J,U=k?B:q;if(o==="svg"||Or(J)?o="svg":(o==="mathml"||Pr(J))&&(o="mathml"),M?(p(e.dynamicChildren,M,A,r,i,o,l),gr(e,t,!0)):c||h(e,t,A,U,r,i,o,l,!1),N)k?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Tn(t,n,B,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const z=t.target=Ds(t.props,S);z&&Tn(t,z,null,a,0)}else k&&Tn(t,J,q,a,1);Nn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:a,targetAnchor:f,target:h,props:p}=e;if(h&&(r(a),r(f)),i&&r(c),o&16){const m=i||!rn(p);for(let S=0;S{e.isMounted=!0}),Ao(()=>{e.isUnmounting=!0}),e}const De=[Function,Array],go={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:De,onEnter:De,onAfterEnter:De,onEnterCancelled:De,onBeforeLeave:De,onLeave:De,onAfterLeave:De,onLeaveCancelled:De,onBeforeAppear:De,onAppear:De,onAfterAppear:De,onAppearCancelled:De},mo=e=>{const t=e.subTree;return t.component?mo(t.component):t},mc={name:"BaseTransition",props:go,setup(e,{slots:t}){const n=Cn(),s=po();return()=>{const r=t.default&&fr(t.default(),!0);if(!r||!r.length)return;const i=_o(r),o=Z(e),{mode:l}=o;if(s.isLeaving)return ys(i);const c=Ir(i);if(!c)return ys(i);let a=gn(c,o,s,n,h=>a=h);c.type!==ye&&Mt(c,a);let f=n.subTree&&Ir(n.subTree);if(f&&f.type!==ye&&!Rt(f,c)&&mo(n).type!==ye){let h=gn(f,o,s,n);if(Mt(f,h),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,f=void 0},ys(i);l==="in-out"&&c.type!==ye?h.delayLeave=(p,m,S)=>{const C=yo(s,f);C[String(f.key)]=f,p[nt]=()=>{m(),p[nt]=void 0,delete a.delayedLeave,f=void 0},a.delayedLeave=()=>{S(),delete a.delayedLeave,f=void 0}}:f=void 0}else f&&(f=void 0);return i}}};function _o(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const _c=mc;function yo(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function gn(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:p,onLeave:m,onAfterLeave:S,onLeaveCancelled:C,onBeforeAppear:L,onAppear:N,onAfterAppear:P,onAppearCancelled:F}=t,M=String(e.key),B=yo(n,e),J=(A,U)=>{A&&Ue(A,s,9,U)},q=(A,U)=>{const z=U[1];J(A,U),V(A)?A.every(O=>O.length<=1)&&z():A.length<=1&&z()},k={mode:o,persisted:l,beforeEnter(A){let U=c;if(!n.isMounted)if(i)U=L||c;else return;A[nt]&&A[nt](!0);const z=B[M];z&&Rt(e,z)&&z.el[nt]&&z.el[nt](),J(U,[A])},enter(A){let U=a,z=f,O=h;if(!n.isMounted)if(i)U=N||a,z=P||f,O=F||h;else return;let Q=!1;const he=A[On]=be=>{Q||(Q=!0,be?J(O,[A]):J(z,[A]),k.delayedLeave&&k.delayedLeave(),A[On]=void 0)};U?q(U,[A,he]):he()},leave(A,U){const z=String(e.key);if(A[On]&&A[On](!0),n.isUnmounting)return U();J(p,[A]);let O=!1;const Q=A[nt]=he=>{O||(O=!0,U(),he?J(C,[A]):J(S,[A]),A[nt]=void 0,B[z]===e&&delete B[z])};B[z]=e,m?q(m,[A,Q]):Q()},clone(A){const U=gn(A,t,n,s,r);return r&&r(U),U}};return k}function ys(e){if(os(e))return e=bt(e),e.children=null,e}function Ir(e){if(!os(e))return ao(e.type)&&e.children?_o(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function Mt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Mt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function fr(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;ion(S,t&&(V(t)?t[C]:t),n,s,r));return}if(Kt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&on(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?as(s.component):s.el,o=r?null:i,{i:l,r:c}=e,a=t&&t.r,f=l.refs===oe?l.refs={}:l.refs,h=l.setupState,p=Z(h),m=h===oe?Ti:S=>ne(p,S);if(a!=null&&a!==c){if(Nr(t),fe(a))f[a]=null,m(a)&&(h[a]=null);else if(ae(a)){a.value=null;const S=t;S.k&&(f[S.k]=null)}}if(W(c))Sn(c,l,12,[o,f]);else{const S=fe(c),C=ae(c);if(S||C){const L=()=>{if(e.f){const N=S?m(c)?h[c]:f[c]:c.value;if(r)V(N)&&Xs(N,i);else if(V(N))N.includes(i)||N.push(i);else if(S)f[c]=[i],m(c)&&(h[c]=f[c]);else{const P=[i];c.value=P,e.k&&(f[e.k]=P)}}else S?(f[c]=o,m(c)&&(h[c]=o)):C&&(c.value=o,e.k&&(f[e.k]=o))};if(o){const N=()=>{L(),Bn.delete(e)};N.id=-1,Bn.set(e,N),Se(N,n)}else Nr(e),L()}}}function Nr(e){const t=Bn.get(e);t&&(t.flags|=8,Bn.delete(e))}Xn().requestIdleCallback;Xn().cancelIdleCallback;const Kt=e=>!!e.type.__asyncLoader,os=e=>e.type.__isKeepAlive;function yc(e,t){Eo(e,"a",t)}function vc(e,t){Eo(e,"da",t)}function Eo(e,t,n=ve){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ls(t,s,n),n){let r=n.parent;for(;r&&r.parent;)os(r.parent.vnode)&&bc(s,t,n,r),r=r.parent}}function bc(e,t,n,s){const r=ls(t,e,s,!0);xo(()=>{Xs(s[t],r)},n)}function ls(e,t,n=ve,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{ot();const l=An(n),c=Ue(t,n,e,o);return l(),lt(),c});return s?r.unshift(i):r.push(i),i}}const ft=e=>(t,n=ve)=>{(!yn||e==="sp")&&ls(e,(...s)=>t(...s),n)},Ec=ft("bm"),So=ft("m"),Sc=ft("bu"),Co=ft("u"),Ao=ft("bum"),xo=ft("um"),Cc=ft("sp"),Ac=ft("rtg"),xc=ft("rtc");function wc(e,t=ve){ls("ec",e,t)}const ar="components",Rc="directives";function du(e,t){return ur(ar,e,!0,t)||e}const wo=Symbol.for("v-ndc");function pu(e){return fe(e)?ur(ar,e,!1)||e:e||wo}function gu(e){return ur(Rc,e)}function ur(e,t,n=!0,s=!1){const r=ge||ve;if(r){const i=r.type;if(e===ar){const l=mf(i,!1);if(l&&(l===t||l===Ve(t)||l===Yn(Ve(t))))return i}const o=Mr(r[e]||i[e],t)||Mr(r.appContext[e],t);return!o&&s?i:o}}function Mr(e,t){return e&&(e[t]||e[Ve(t)]||e[Yn(Ve(t))])}function mu(e,t,n,s){let r;const i=n,o=V(e);if(o||fe(e)){const l=o&&it(e);let c=!1,a=!1;l&&(c=!Ne(e),a=ct(e),e=ns(e)),r=new Array(e.length);for(let f=0,h=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c{const i=s.fn(...r);return i&&(i.key=s.key),i}:s.fn)}return e}function yu(e,t,n={},s,r){if(ge.ce||ge.parent&&Kt(ge.parent)&&ge.parent.ce){const a=Object.keys(n).length>0;return t!=="default"&&(n.name=t),js(),Bs(Oe,null,[xe("slot",n,s&&s())],a?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),js();const o=i&&Ro(i(n)),l=n.key||o&&o.key,c=Bs(Oe,{key:(l&&!Be(l)?l:`_${t}`)+(!o&&s?"_fb":"")},o||(s?s():[]),o&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function Ro(e){return e.some(t=>_n(t)?!(t.type===ye||t.type===Oe&&!Ro(t.children)):!0)?e:null}function vu(e,t){const n={};for(const s in e)n[Pn(s)]=e[s];return n}const Ls=e=>e?qo(e)?as(e):Ls(e.parent):null,ln=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ls(e.parent),$root:e=>Ls(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Po(e),$forceUpdate:e=>e.f||(e.f=()=>{cr(e.update)}),$nextTick:e=>e.n||(e.n=lr.bind(e.proxy)),$watch:e=>jc.bind(e)}),vs=(e,t)=>e!==oe&&!e.__isScriptSetup&&ne(e,t),Tc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;if(t[0]!=="$"){const p=o[t];if(p!==void 0)switch(p){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(vs(s,t))return o[t]=1,s[t];if(r!==oe&&ne(r,t))return o[t]=2,r[t];if(ne(i,t))return o[t]=3,i[t];if(n!==oe&&ne(n,t))return o[t]=4,n[t];Fs&&(o[t]=0)}}const a=ln[t];let f,h;if(a)return t==="$attrs"&&_e(e.attrs,"get",""),a(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==oe&&ne(n,t))return o[t]=4,n[t];if(h=c.config.globalProperties,ne(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return vs(r,t)?(r[t]=n,!0):s!==oe&&ne(s,t)?(s[t]=n,!0):ne(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:o}},l){let c;return!!(n[l]||e!==oe&&l[0]!=="$"&&ne(e,l)||vs(t,l)||ne(i,l)||ne(s,l)||ne(ln,l)||ne(r.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ne(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function bu(){return To().slots}function Eu(){return To().attrs}function To(e){const t=Cn();return t.setupContext||(t.setupContext=zo(t))}function Dr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Fs=!0;function Oc(e){const t=Po(e),n=e.proxy,s=e.ctx;Fs=!1,t.beforeCreate&&Lr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:m,updated:S,activated:C,deactivated:L,beforeDestroy:N,beforeUnmount:P,destroyed:F,unmounted:M,render:B,renderTracked:J,renderTriggered:q,errorCaptured:k,serverPrefetch:A,expose:U,inheritAttrs:z,components:O,directives:Q,filters:he}=t;if(a&&Pc(a,s,null),o)for(const $ in o){const ee=o[$];W(ee)&&(s[$]=ee.bind(n))}if(r){const $=r.call(n,n);re($)&&(e.data=En($))}if(Fs=!0,i)for(const $ in i){const ee=i[$],Xe=W(ee)?ee.bind(n,n):W(ee.get)?ee.get.bind(n,n):He,at=!W(ee)&&W(ee.set)?ee.set.bind(n):He,Ge=Le({get:Xe,set:at});Object.defineProperty(s,$,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:we=>Ge.value=we})}if(l)for(const $ in l)Oo(l[$],s,n,$);if(c){const $=W(c)?c.call(n):c;Reflect.ownKeys($).forEach(ee=>{Mn(ee,$[ee])})}f&&Lr(f,e,"c");function ie($,ee){V(ee)?ee.forEach(Xe=>$(Xe.bind(n))):ee&&$(ee.bind(n))}if(ie(Ec,h),ie(So,p),ie(Sc,m),ie(Co,S),ie(yc,C),ie(vc,L),ie(wc,k),ie(xc,J),ie(Ac,q),ie(Ao,P),ie(xo,M),ie(Cc,A),V(U))if(U.length){const $=e.exposed||(e.exposed={});U.forEach(ee=>{Object.defineProperty($,ee,{get:()=>n[ee],set:Xe=>n[ee]=Xe,enumerable:!0})})}else e.exposed||(e.exposed={});B&&e.render===He&&(e.render=B),z!=null&&(e.inheritAttrs=z),O&&(e.components=O),Q&&(e.directives=Q),A&&bo(e)}function Pc(e,t,n=He){V(e)&&(e=Vs(e));for(const s in e){const r=e[s];let i;re(r)?"default"in r?i=Fe(r.from||s,r.default,!0):i=Fe(r.from||s):i=Fe(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Lr(e,t,n){Ue(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Oo(e,t,n,s){let r=s.includes(".")?No(n,s):()=>n[s];if(fe(e)){const i=t[e];W(i)&&cn(r,i)}else if(W(e))cn(r,e.bind(n));else if(re(e))if(V(e))e.forEach(i=>Oo(i,t,n,s));else{const i=W(e.handler)?e.handler.bind(n):t[e.handler];W(i)&&cn(r,i,e)}}function Po(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>kn(c,a,o,!0)),kn(c,t,o)),re(t)&&i.set(t,c),c}function kn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&kn(e,i,n,!0),r&&r.forEach(o=>kn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Ic[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Ic={data:Fr,props:Vr,emits:Vr,methods:en,computed:en,beforeCreate:Ee,created:Ee,beforeMount:Ee,mounted:Ee,beforeUpdate:Ee,updated:Ee,beforeDestroy:Ee,beforeUnmount:Ee,destroyed:Ee,unmounted:Ee,activated:Ee,deactivated:Ee,errorCaptured:Ee,serverPrefetch:Ee,components:en,directives:en,watch:Mc,provide:Fr,inject:Nc};function Fr(e,t){return t?e?function(){return pe(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Nc(e,t){return en(Vs(e),Vs(t))}function Vs(e){if(V(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}function Fc(){return!!(Cn()||Nt)}const Vc=Symbol.for("v-scx"),Hc=()=>Fe(Vc);function Su(e,t){return hr(e,null,t)}function cn(e,t,n){return hr(e,t,n)}function hr(e,t,n=oe){const{immediate:s,deep:r,flush:i,once:o}=n,l=pe({},n),c=t&&s||!t&&i!=="post";let a;if(yn){if(i==="sync"){const m=Hc();a=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=He,m.resume=He,m.pause=He,m}}const f=ve;l.call=(m,S,C)=>Ue(m,f,S,C);let h=!1;i==="post"?l.scheduler=m=>{Se(m,f&&f.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(m,S)=>{S?m():cr(m)}),l.augmentJob=m=>{t&&(m.flags|=4),h&&(m.flags|=2,f&&(m.id=f.uid,m.i=f))};const p=ac(e,t,l);return yn&&(a?a.push(p):c&&p()),p}function jc(e,t,n){const s=this.proxy,r=fe(e)?e.includes(".")?No(s,e):()=>s[e]:e.bind(s,s);let i;W(t)?i=t:(i=t.handler,n=t);const o=An(this),l=hr(r,i.bind(s),n);return o(),l}function No(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ve(t)}Modifiers`]||e[`${Et(t)}Modifiers`];function kc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||oe;let r=n;const i=t.startsWith("update:"),o=i&&Bc(s,t.slice(7));o&&(o.trim&&(r=n.map(f=>fe(f)?f.trim():f)),o.number&&(r=n.map(Zs)));let l,c=s[l=Pn(t)]||s[l=Pn(Ve(t))];!c&&i&&(c=s[l=Pn(Et(t))]),c&&Ue(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ue(a,e,6,r)}}const Uc=new WeakMap;function Mo(e,t,n=!1){const s=n?Uc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!W(e)){const c=a=>{const f=Mo(a,t,!0);f&&(l=!0,pe(o,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(re(e)&&s.set(e,null),null):(V(i)?i.forEach(c=>o[c]=null):pe(o,i),re(e)&&s.set(e,o),o)}function cs(e,t){return!e||!qn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ne(e,t[0].toLowerCase()+t.slice(1))||ne(e,Et(t))||ne(e,t))}function Hr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:a,renderCache:f,props:h,data:p,setupState:m,ctx:S,inheritAttrs:C}=e,L=jn(e);let N,P;try{if(n.shapeFlag&4){const M=r||s,B=M;N=Ye(a.call(B,M,f,h,m,p,S)),P=l}else{const M=t;N=Ye(M.length>1?M(h,{attrs:l,slots:o,emit:c}):M(h,null)),P=t.props?l:Kc(l)}}catch(M){fn.length=0,is(M,e,1),N=xe(ye)}let F=N;if(P&&C!==!1){const M=Object.keys(P),{shapeFlag:B}=F;M.length&&B&7&&(i&&M.some(Ys)&&(P=Gc(P,i)),F=bt(F,P,!1,!0))}return n.dirs&&(F=bt(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(n.dirs):n.dirs),n.transition&&Mt(F,n.transition),N=F,jn(L),N}const Kc=e=>{let t;for(const n in e)(n==="class"||n==="style"||qn(n))&&((t||(t={}))[n]=e[n]);return t},Gc=(e,t)=>{const n={};for(const s in e)(!Ys(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Wc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,a=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?jr(s,o,a):!!o;if(c&8){const f=t.dynamicProps;for(let h=0;hObject.create(Do),Fo=e=>Object.getPrototypeOf(e)===Do;function qc(e,t,n,s=!1){const r={},i=Lo();e.propsDefaults=Object.create(null),Vo(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:eo(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Jc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=Z(r),[c]=e.propsOptions;let a=!1;if((s||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,m]=Ho(h,t,!0);pe(o,p),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!i&&!c)return re(e)&&s.set(e,Bt),Bt;if(V(i))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",pr=e=>V(e)?e.map(Ye):[Ye(e)],Qc=(e,t,n)=>{if(t._n)return t;const s=pc((...r)=>pr(t(...r)),n);return s._c=!1,s},jo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(dr(r))continue;const i=e[r];if(W(i))t[r]=Qc(r,i,s);else if(i!=null){const o=pr(i);t[r]=()=>o}}},Bo=(e,t)=>{const n=pr(t);e.slots.default=()=>n},ko=(e,t,n)=>{for(const s in t)(n||!dr(s))&&(e[s]=t[s])},Yc=(e,t,n)=>{const s=e.slots=Lo();if(e.vnode.shapeFlag&32){const r=t._;r?(ko(s,t,n),n&&Ni(s,"_",r,!0)):jo(t,s)}else t&&Bo(e,t)},Xc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=oe;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:ko(r,t,n):(i=!t.$stable,jo(t,r)),o=t}else t&&(Bo(e,t),o={default:1});if(i)for(const l in r)!dr(l)&&o[l]==null&&delete r[l]},Se=sf;function Zc(e){return ef(e)}function ef(e,t){const n=Xn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:m=He,insertStaticContent:S}=e,C=(u,d,g,y=null,b=null,_=null,R=void 0,w=null,x=!!d.dynamicChildren)=>{if(u===d)return;u&&!Rt(u,d)&&(y=v(u),we(u,b,_,!0),u=null),d.patchFlag===-2&&(x=!1,d.dynamicChildren=null);const{type:E,ref:K,shapeFlag:I}=d;switch(E){case fs:L(u,d,g,y);break;case ye:N(u,d,g,y);break;case Es:u==null&&P(d,g,y,R);break;case Oe:O(u,d,g,y,b,_,R,w,x);break;default:I&1?B(u,d,g,y,b,_,R,w,x):I&6?Q(u,d,g,y,b,_,R,w,x):(I&64||I&128)&&E.process(u,d,g,y,b,_,R,w,x,H)}K!=null&&b?on(K,u&&u.ref,_,d||u,!d):K==null&&u&&u.ref!=null&&on(u.ref,null,_,u,!0)},L=(u,d,g,y)=>{if(u==null)s(d.el=l(d.children),g,y);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},N=(u,d,g,y)=>{u==null?s(d.el=c(d.children||""),g,y):d.el=u.el},P=(u,d,g,y)=>{[u.el,u.anchor]=S(u.children,d,g,y,u.el,u.anchor)},F=({el:u,anchor:d},g,y)=>{let b;for(;u&&u!==d;)b=p(u),s(u,g,y),u=b;s(d,g,y)},M=({el:u,anchor:d})=>{let g;for(;u&&u!==d;)g=p(u),r(u),u=g;r(d)},B=(u,d,g,y,b,_,R,w,x)=>{if(d.type==="svg"?R="svg":d.type==="math"&&(R="mathml"),u==null)J(d,g,y,b,_,R,w,x);else{const E=u.el&&u.el._isVueCE?u.el:null;try{E&&E._beginPatch(),A(u,d,b,_,R,w,x)}finally{E&&E._endPatch()}}},J=(u,d,g,y,b,_,R,w)=>{let x,E;const{props:K,shapeFlag:I,transition:j,dirs:G}=u;if(x=u.el=o(u.type,_,K&&K.is,K),I&8?f(x,u.children):I&16&&k(u.children,x,null,y,b,bs(u,_),R,w),G&&Ct(u,null,y,"created"),q(x,u,u.scopeId,R,y),K){for(const le in K)le!=="value"&&!tn(le)&&i(x,le,null,K[le],_,y);"value"in K&&i(x,"value",null,K.value,_),(E=K.onVnodeBeforeMount)&&Je(E,y,u)}G&&Ct(u,null,y,"beforeMount");const X=tf(b,j);X&&j.beforeEnter(x),s(x,d,g),((E=K&&K.onVnodeMounted)||X||G)&&Se(()=>{E&&Je(E,y,u),X&&j.enter(x),G&&Ct(u,null,y,"mounted")},b)},q=(u,d,g,y,b)=>{if(g&&m(u,g),y)for(let _=0;_{for(let E=x;E{const w=d.el=u.el;let{patchFlag:x,dynamicChildren:E,dirs:K}=d;x|=u.patchFlag&16;const I=u.props||oe,j=d.props||oe;let G;if(g&&At(g,!1),(G=j.onVnodeBeforeUpdate)&&Je(G,g,d,u),K&&Ct(d,u,g,"beforeUpdate"),g&&At(g,!0),(I.innerHTML&&j.innerHTML==null||I.textContent&&j.textContent==null)&&f(w,""),E?U(u.dynamicChildren,E,w,g,y,bs(d,b),_):R||ee(u,d,w,null,g,y,bs(d,b),_,!1),x>0){if(x&16)z(w,I,j,g,b);else if(x&2&&I.class!==j.class&&i(w,"class",null,j.class,b),x&4&&i(w,"style",I.style,j.style,b),x&8){const X=d.dynamicProps;for(let le=0;le{G&&Je(G,g,d,u),K&&Ct(d,u,g,"updated")},y)},U=(u,d,g,y,b,_,R)=>{for(let w=0;w{if(d!==g){if(d!==oe)for(const _ in d)!tn(_)&&!(_ in g)&&i(u,_,d[_],null,b,y);for(const _ in g){if(tn(_))continue;const R=g[_],w=d[_];R!==w&&_!=="value"&&i(u,_,w,R,b,y)}"value"in g&&i(u,"value",d.value,g.value,b)}},O=(u,d,g,y,b,_,R,w,x)=>{const E=d.el=u?u.el:l(""),K=d.anchor=u?u.anchor:l("");let{patchFlag:I,dynamicChildren:j,slotScopeIds:G}=d;G&&(w=w?w.concat(G):G),u==null?(s(E,g,y),s(K,g,y),k(d.children||[],g,K,b,_,R,w,x)):I>0&&I&64&&j&&u.dynamicChildren?(U(u.dynamicChildren,j,g,b,_,R,w),(d.key!=null||b&&d===b.subTree)&&gr(u,d,!0)):ee(u,d,g,K,b,_,R,w,x)},Q=(u,d,g,y,b,_,R,w,x)=>{d.slotScopeIds=w,u==null?d.shapeFlag&512?b.ctx.activate(d,g,y,R,x):he(d,g,y,b,_,R,x):be(u,d,x)},he=(u,d,g,y,b,_,R)=>{const w=u.component=hf(u,y,b);if(os(u)&&(w.ctx.renderer=H),df(w,!1,R),w.asyncDep){if(b&&b.registerDep(w,ie,R),!u.el){const x=w.subTree=xe(ye);N(null,x,d,g),u.placeholder=x.el}}else ie(w,u,d,g,b,_,R)},be=(u,d,g)=>{const y=d.component=u.component;if(Wc(u,d,g))if(y.asyncDep&&!y.asyncResolved){$(y,d,g);return}else y.next=d,y.update();else d.el=u.el,y.vnode=d},ie=(u,d,g,y,b,_,R)=>{const w=()=>{if(u.isMounted){let{next:I,bu:j,u:G,parent:X,vnode:le}=u;{const $e=Uo(u);if($e){I&&(I.el=le.el,$(u,I,R)),$e.asyncDep.then(()=>{u.isUnmounted||w()});return}}let se=I,Re;At(u,!1),I?(I.el=le.el,$(u,I,R)):I=le,j&&In(j),(Re=I.props&&I.props.onVnodeBeforeUpdate)&&Je(Re,X,I,le),At(u,!0);const Te=Hr(u),We=u.subTree;u.subTree=Te,C(We,Te,h(We.el),v(We),u,b,_),I.el=Te.el,se===null&&$c(u,Te.el),G&&Se(G,b),(Re=I.props&&I.props.onVnodeUpdated)&&Se(()=>Je(Re,X,I,le),b)}else{let I;const{el:j,props:G}=d,{bm:X,m:le,parent:se,root:Re,type:Te}=u,We=Kt(d);At(u,!1),X&&In(X),!We&&(I=G&&G.onVnodeBeforeMount)&&Je(I,se,d),At(u,!0);{Re.ce&&Re.ce._def.shadowRoot!==!1&&Re.ce._injectChildStyle(Te);const $e=u.subTree=Hr(u);C(null,$e,g,y,u,b,_),d.el=$e.el}if(le&&Se(le,b),!We&&(I=G&&G.onVnodeMounted)){const $e=d;Se(()=>Je(I,se,$e),b)}(d.shapeFlag&256||se&&Kt(se.vnode)&&se.vnode.shapeFlag&256)&&u.a&&Se(u.a,b),u.isMounted=!0,d=g=y=null}};u.scope.on();const x=u.effect=new Bi(w);u.scope.off();const E=u.update=x.run.bind(x),K=u.job=x.runIfDirty.bind(x);K.i=u,K.id=u.uid,x.scheduler=()=>cr(K),At(u,!0),E()},$=(u,d,g)=>{d.component=u;const y=u.vnode.props;u.vnode=d,u.next=null,Jc(u,d.props,y,g),Xc(u,d.children,g),ot(),Rr(u),lt()},ee=(u,d,g,y,b,_,R,w,x=!1)=>{const E=u&&u.children,K=u?u.shapeFlag:0,I=d.children,{patchFlag:j,shapeFlag:G}=d;if(j>0){if(j&128){at(E,I,g,y,b,_,R,w,x);return}else if(j&256){Xe(E,I,g,y,b,_,R,w,x);return}}G&8?(K&16&&Me(E,b,_),I!==E&&f(g,I)):K&16?G&16?at(E,I,g,y,b,_,R,w,x):Me(E,b,_,!0):(K&8&&f(g,""),G&16&&k(I,g,y,b,_,R,w,x))},Xe=(u,d,g,y,b,_,R,w,x)=>{u=u||Bt,d=d||Bt;const E=u.length,K=d.length,I=Math.min(E,K);let j;for(j=0;jK?Me(u,b,_,!0,!1,I):k(d,g,y,b,_,R,w,x,I)},at=(u,d,g,y,b,_,R,w,x)=>{let E=0;const K=d.length;let I=u.length-1,j=K-1;for(;E<=I&&E<=j;){const G=u[E],X=d[E]=x?_t(d[E]):Ye(d[E]);if(Rt(G,X))C(G,X,g,null,b,_,R,w,x);else break;E++}for(;E<=I&&E<=j;){const G=u[I],X=d[j]=x?_t(d[j]):Ye(d[j]);if(Rt(G,X))C(G,X,g,null,b,_,R,w,x);else break;I--,j--}if(E>I){if(E<=j){const G=j+1,X=Gj)for(;E<=I;)we(u[E],b,_,!0),E++;else{const G=E,X=E,le=new Map;for(E=X;E<=j;E++){const Pe=d[E]=x?_t(d[E]):Ye(d[E]);Pe.key!=null&&le.set(Pe.key,E)}let se,Re=0;const Te=j-X+1;let We=!1,$e=0;const zt=new Array(Te);for(E=0;E=Te){we(Pe,b,_,!0);continue}let qe;if(Pe.key!=null)qe=le.get(Pe.key);else for(se=X;se<=j;se++)if(zt[se-X]===0&&Rt(Pe,d[se])){qe=se;break}qe===void 0?we(Pe,b,_,!0):(zt[qe-X]=E+1,qe>=$e?$e=qe:We=!0,C(Pe,d[qe],g,null,b,_,R,w,x),Re++)}const br=We?nf(zt):Bt;for(se=br.length-1,E=Te-1;E>=0;E--){const Pe=X+E,qe=d[Pe],Er=d[Pe+1],Sr=Pe+1{const{el:_,type:R,transition:w,children:x,shapeFlag:E}=u;if(E&6){Ge(u.component.subTree,d,g,y);return}if(E&128){u.suspense.move(d,g,y);return}if(E&64){R.move(u,d,g,H);return}if(R===Oe){s(_,d,g);for(let I=0;Iw.enter(_),b);else{const{leave:I,delayLeave:j,afterLeave:G}=w,X=()=>{u.ctx.isUnmounted?r(_):s(_,d,g)},le=()=>{_._isLeaving&&_[nt](!0),I(_,()=>{X(),G&&G()})};j?j(_,X,le):le()}else s(_,d,g)},we=(u,d,g,y=!1,b=!1)=>{const{type:_,props:R,ref:w,children:x,dynamicChildren:E,shapeFlag:K,patchFlag:I,dirs:j,cacheIndex:G}=u;if(I===-2&&(b=!1),w!=null&&(ot(),on(w,null,g,u,!0),lt()),G!=null&&(d.renderCache[G]=void 0),K&256){d.ctx.deactivate(u);return}const X=K&1&&j,le=!Kt(u);let se;if(le&&(se=R&&R.onVnodeBeforeUnmount)&&Je(se,d,u),K&6)St(u.component,g,y);else{if(K&128){u.suspense.unmount(g,y);return}X&&Ct(u,null,d,"beforeUnmount"),K&64?u.type.remove(u,d,g,H,y):E&&!E.hasOnce&&(_!==Oe||I>0&&I&64)?Me(E,d,g,!1,!0):(_===Oe&&I&384||!b&&K&16)&&Me(x,d,g),y&&Dt(u)}(le&&(se=R&&R.onVnodeUnmounted)||X)&&Se(()=>{se&&Je(se,d,u),X&&Ct(u,null,d,"unmounted")},g)},Dt=u=>{const{type:d,el:g,anchor:y,transition:b}=u;if(d===Oe){Lt(g,y);return}if(d===Es){M(u);return}const _=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:R,delayLeave:w}=b,x=()=>R(g,_);w?w(u.el,_,x):x()}else _()},Lt=(u,d)=>{let g;for(;u!==d;)g=p(u),r(u),u=g;r(d)},St=(u,d,g)=>{const{bum:y,scope:b,job:_,subTree:R,um:w,m:x,a:E}=u;kr(x),kr(E),y&&In(y),b.stop(),_&&(_.flags|=8,we(R,u,d,g)),w&&Se(w,d),Se(()=>{u.isUnmounted=!0},d)},Me=(u,d,g,y=!1,b=!1,_=0)=>{for(let R=_;R{if(u.shapeFlag&6)return v(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=p(u.anchor||u.el),g=d&&d[fo];return g?p(g):d};let D=!1;const T=(u,d,g)=>{u==null?d._vnode&&we(d._vnode,null,null,!0):C(d._vnode||null,u,d,null,null,null,g),d._vnode=u,D||(D=!0,Rr(),oo(),D=!1)},H={p:C,um:we,m:Ge,r:Dt,mt:he,mc:k,pc:ee,pbc:U,n:v,o:e};return{render:T,hydrate:void 0,createApp:Lc(T)}}function bs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function At({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function tf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function gr(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function Uo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Uo(t)}function kr(e){if(e)for(let t=0;te.__isSuspense;function sf(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):dc(e)}const Oe=Symbol.for("v-fgt"),fs=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Es=Symbol.for("v-stc"),fn=[];let Ie=null;function js(e=!1){fn.push(Ie=e?null:[])}function rf(){fn.pop(),Ie=fn[fn.length-1]||null}let mn=1;function Un(e,t=!1){mn+=e,e<0&&Ie&&t&&(Ie.hasOnce=!0)}function Go(e){return e.dynamicChildren=mn>0?Ie||Bt:null,rf(),mn>0&&Ie&&Ie.push(e),e}function Cu(e,t,n,s,r,i){return Go($o(e,t,n,s,r,i,!0))}function Bs(e,t,n,s,r){return Go(xe(e,t,n,s,r,!0))}function _n(e){return e?e.__v_isVNode===!0:!1}function Rt(e,t){return e.type===t.type&&e.key===t.key}const Wo=({key:e})=>e??null,Dn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?fe(e)||ae(e)||W(e)?{i:ge,r:e,k:t,f:!!n}:e:null);function $o(e,t=null,n=null,s=0,r=null,i=e===Oe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wo(t),ref:t&&Dn(t),scopeId:co,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ge};return l?(mr(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=fe(n)?8:16),mn>0&&!o&&Ie&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ie.push(c),c}const xe=of;function of(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===wo)&&(e=ye),_n(e)){const l=bt(e,t,!0);return n&&mr(l,n),mn>0&&!i&&Ie&&(l.shapeFlag&6?Ie[Ie.indexOf(e)]=l:Ie.push(l)),l.patchFlag=-2,l}if(_f(e)&&(e=e.__vccOpts),t){t=lf(t);let{class:l,style:c}=t;l&&!fe(l)&&(t.class=es(l)),re(c)&&(ss(c)&&!V(c)&&(c=pe({},c)),t.style=Zn(c))}const o=fe(e)?1:Ko(e)?128:ao(e)?64:re(e)?4:W(e)?2:0;return $o(e,t,n,s,r,o,i,!0)}function lf(e){return e?ss(e)||Fo(e)?pe({},e):e:null}function bt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,a=t?ff(r||{},t):r,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&Wo(a),ref:t&&t.ref?n&&i?V(i)?i.concat(Dn(t)):[i,Dn(t)]:Dn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Oe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bt(e.ssContent),ssFallback:e.ssFallback&&bt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Mt(f,c.clone(f)),f}function cf(e=" ",t=0){return xe(fs,null,e,t)}function Au(e="",t=!1){return t?(js(),Bs(ye,null,e)):xe(ye,null,e)}function Ye(e){return e==null||typeof e=="boolean"?xe(ye):V(e)?xe(Oe,null,e.slice()):_n(e)?_t(e):xe(fs,null,String(e))}function _t(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bt(e)}function mr(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),mr(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Fo(t)?t._ctx=ge:r===3&&ge&&(ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ge},n=32):(t=String(t),s&64?(n=16,t=[cf(t)]):n=8);e.children=t,e.shapeFlag|=n}function ff(...e){const t={};for(let n=0;nve||ge;let Kn,ks;{const e=Xn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Kn=t("__VUE_INSTANCE_SETTERS__",n=>ve=n),ks=t("__VUE_SSR_SETTERS__",n=>yn=n)}const An=e=>{const t=ve;return Kn(e),e.scope.on(),()=>{e.scope.off(),Kn(t)}},Ur=()=>{ve&&ve.scope.off(),Kn(null)};function qo(e){return e.vnode.shapeFlag&4}let yn=!1;function df(e,t=!1,n=!1){t&&ks(t);const{props:s,children:r}=e.vnode,i=qo(e);qc(e,s,i,t),Yc(e,r,n||t);const o=i?pf(e,t):void 0;return t&&ks(!1),o}function pf(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Tc);const{setup:s}=n;if(s){ot();const r=e.setupContext=s.length>1?zo(e):null,i=An(e),o=Sn(s,e,0,[e.props,r]),l=Oi(o);if(lt(),i(),(l||e.sp)&&!Kt(e)&&bo(e),l){if(o.then(Ur,Ur),t)return o.then(c=>{Kr(e,c)}).catch(c=>{is(c,e,0)});e.asyncDep=o}else Kr(e,o)}else Jo(e)}function Kr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:re(t)&&(e.setupState=no(t)),Jo(e)}function Jo(e,t,n){const s=e.type;e.render||(e.render=s.render||He);{const r=An(e);ot();try{Oc(e)}finally{lt(),r()}}}const gf={get(e,t){return _e(e,"get",""),e[t]}};function zo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,gf),slots:e.slots,emit:e.emit,expose:t}}function as(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(no(or(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ln)return ln[n](e)},has(t,n){return n in t||n in ln}})):e.proxy}function mf(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function _f(e){return W(e)&&"__vccOpts"in e}const Le=(e,t)=>cc(e,t,yn);function _r(e,t,n){try{Un(-1);const s=arguments.length;return s===2?re(t)&&!V(t)?_n(t)?xe(e,null,[t]):xe(e,t):xe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&_n(n)&&(n=[n]),xe(e,t,n))}finally{Un(1)}}const yf="3.5.25",xu=He;let Us;const Gr=typeof window<"u"&&window.trustedTypes;if(Gr)try{Us=Gr.createPolicy("vue",{createHTML:e=>e})}catch{}const Qo=Us?e=>Us.createHTML(e):e=>e,vf="http://www.w3.org/2000/svg",bf="http://www.w3.org/1998/Math/MathML",tt=typeof document<"u"?document:null,Wr=tt&&tt.createElement("template"),Ef={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?tt.createElementNS(vf,e):t==="mathml"?tt.createElementNS(bf,e):n?tt.createElement(e,{is:n}):tt.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>tt.createTextNode(e),createComment:e=>tt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>tt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Wr.innerHTML=Qo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Wr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ut="transition",Yt="animation",$t=Symbol("_vtc"),Yo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xo=pe({},go,Yo),Sf=e=>(e.displayName="Transition",e.props=Xo,e),wu=Sf((e,{slots:t})=>_r(_c,Zo(e),t)),xt=(e,t=[])=>{V(e)?e.forEach(n=>n(...t)):e&&e(...t)},$r=e=>e?V(e)?e.some(t=>t.length>1):e.length>1:!1;function Zo(e){const t={};for(const O in e)O in Yo||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:a=o,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,S=Cf(r),C=S&&S[0],L=S&&S[1],{onBeforeEnter:N,onEnter:P,onEnterCancelled:F,onLeave:M,onLeaveCancelled:B,onBeforeAppear:J=N,onAppear:q=P,onAppearCancelled:k=F}=t,A=(O,Q,he,be)=>{O._enterCancelled=be,dt(O,Q?f:l),dt(O,Q?a:o),he&&he()},U=(O,Q)=>{O._isLeaving=!1,dt(O,h),dt(O,m),dt(O,p),Q&&Q()},z=O=>(Q,he)=>{const be=O?q:P,ie=()=>A(Q,O,he);xt(be,[Q,ie]),qr(()=>{dt(Q,O?c:i),ze(Q,O?f:l),$r(be)||Jr(Q,s,C,ie)})};return pe(t,{onBeforeEnter(O){xt(N,[O]),ze(O,i),ze(O,o)},onBeforeAppear(O){xt(J,[O]),ze(O,c),ze(O,a)},onEnter:z(!1),onAppear:z(!0),onLeave(O,Q){O._isLeaving=!0;const he=()=>U(O,Q);ze(O,h),O._enterCancelled?(ze(O,p),Ks(O)):(Ks(O),ze(O,p)),qr(()=>{O._isLeaving&&(dt(O,h),ze(O,m),$r(M)||Jr(O,s,L,he))}),xt(M,[O,he])},onEnterCancelled(O){A(O,!1,void 0,!0),xt(F,[O])},onAppearCancelled(O){A(O,!0,void 0,!0),xt(k,[O])},onLeaveCancelled(O){U(O),xt(B,[O])}})}function Cf(e){if(e==null)return null;if(re(e))return[Ss(e.enter),Ss(e.leave)];{const t=Ss(e);return[t,t]}}function Ss(e){return wl(e)}function ze(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[$t]||(e[$t]=new Set)).add(t)}function dt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[$t];n&&(n.delete(t),n.size||(e[$t]=void 0))}function qr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Af=0;function Jr(e,t,n,s){const r=e._endId=++Af,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=el(e,t);if(!o)return s();const a=o+"end";let f=0;const h=()=>{e.removeEventListener(a,p),i()},p=m=>{m.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[S]||"").split(", "),r=s(`${ut}Delay`),i=s(`${ut}Duration`),o=zr(r,i),l=s(`${Yt}Delay`),c=s(`${Yt}Duration`),a=zr(l,c);let f=null,h=0,p=0;t===ut?o>0&&(f=ut,h=o,p=i.length):t===Yt?a>0&&(f=Yt,h=a,p=c.length):(h=Math.max(o,a),f=h>0?o>a?ut:Yt:null,p=f?f===ut?i.length:c.length:0);const m=f===ut&&/\b(?:transform|all)(?:,|$)/.test(s(`${ut}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:m}}function zr(e,t){for(;e.lengthQr(n)+Qr(e[s])))}function Qr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Ks(e){return(e?e.ownerDocument:document).body.offsetHeight}function xf(e,t,n){const s=e[$t];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Gn=Symbol("_vod"),tl=Symbol("_vsh"),Ru={name:"show",beforeMount(e,{value:t},{transition:n}){e[Gn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Xt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Xt(e,!0),s.enter(e)):s.leave(e,()=>{Xt(e,!1)}):Xt(e,t))},beforeUnmount(e,{value:t}){Xt(e,t)}};function Xt(e,t){e.style.display=t?e[Gn]:"none",e[tl]=!t}const wf=Symbol(""),Rf=/(?:^|;)\s*display\s*:/;function Tf(e,t,n){const s=e.style,r=fe(n);let i=!1;if(n&&!r){if(t)if(fe(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Ln(s,l,"")}else for(const o in t)n[o]==null&&Ln(s,o,"");for(const o in n)o==="display"&&(i=!0),Ln(s,o,n[o])}else if(r){if(t!==n){const o=s[wf];o&&(n+=";"+o),s.cssText=n,i=Rf.test(n)}}else t&&e.removeAttribute("style");Gn in e&&(e[Gn]=i?s.display:"",e[tl]&&(s.display="none"))}const Yr=/\s*!important$/;function Ln(e,t,n){if(V(n))n.forEach(s=>Ln(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Of(e,t);Yr.test(n)?e.setProperty(Et(s),n.replace(Yr,""),"important"):e[s]=n}}const Xr=["Webkit","Moz","ms"],Cs={};function Of(e,t){const n=Cs[t];if(n)return n;let s=Ve(t);if(s!=="filter"&&s in e)return Cs[t]=s;s=Yn(s);for(let r=0;rAs||(Mf.then(()=>As=0),As=Date.now());function Lf(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ue(Ff(s,n.value),t,5,[s])};return n.value=e,n.attached=Df(),n}function Ff(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ri=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Vf=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?xf(e,s,o):t==="style"?Tf(e,n,s):qn(t)?Ys(t)||If(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hf(e,t,s,o))?(ti(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ei(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!fe(s))?ti(e,Ve(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ei(e,t,s,o))};function Hf(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ri(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ri(t)&&fe(n)?!1:t in e}const nl=new WeakMap,sl=new WeakMap,Wn=Symbol("_moveCb"),ii=Symbol("_enterCb"),jf=e=>(delete e.props.mode,e),Bf=jf({name:"TransitionGroup",props:pe({},Xo,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Cn(),s=po();let r,i;return Co(()=>{if(!r.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!Gf(r[0].el,n.vnode.el,o)){r=[];return}r.forEach(kf),r.forEach(Uf);const l=r.filter(Kf);Ks(n.vnode.el),l.forEach(c=>{const a=c.el,f=a.style;ze(a,o),f.transform=f.webkitTransform=f.transitionDuration="";const h=a[Wn]=p=>{p&&p.target!==a||(!p||p.propertyName.endsWith("transform"))&&(a.removeEventListener("transitionend",h),a[Wn]=null,dt(a,o))};a.addEventListener("transitionend",h)}),r=[]}),()=>{const o=Z(e),l=Zo(o);let c=o.tag||Oe;if(r=[],i)for(let a=0;a{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const i=t.nodeType===1?t:t.parentNode;i.appendChild(s);const{hasTransform:o}=el(s);return i.removeChild(s),o}const $n=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>In(t,n):t};function Wf(e){e.target.composing=!0}function oi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Gt=Symbol("_assign");function li(e,t,n){return t&&(e=e.trim()),n&&(e=Zs(e)),e}const Ou={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Gt]=$n(r);const i=s||r.props&&r.props.type==="number";Tt(e,t?"change":"input",o=>{o.target.composing||e[Gt](li(e.value,n,i))}),(n||i)&&Tt(e,"change",()=>{e.value=li(e.value,n,i)}),t||(Tt(e,"compositionstart",Wf),Tt(e,"compositionend",oi),Tt(e,"change",oi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[Gt]=$n(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Zs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Pu={deep:!0,created(e,t,n){e[Gt]=$n(n),Tt(e,"change",()=>{const s=e._modelValue,r=$f(e),i=e.checked,o=e[Gt];if(V(s)){const l=Di(s,r),c=l!==-1;if(i&&!c)o(s.concat(r));else if(!i&&c){const a=[...s];a.splice(l,1),o(a)}}else if(Jn(s)){const l=new Set(s);i?l.add(r):l.delete(r),o(l)}else o(rl(e,i))})},mounted:ci,beforeUpdate(e,t,n){e[Gt]=$n(n),ci(e,t,n)}};function ci(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=Di(t,s.props.value)>-1;else if(Jn(t))r=t.has(s.props.value);else{if(t===n)return;r=ts(t,rl(e,!0))}e.checked!==r&&(e.checked=r)}function $f(e){return"_value"in e?e._value:e.value}function rl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const qf=["ctrl","shift","alt","meta"],Jf={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>qf.some(n=>e[`${n}Key`]&&!t.includes(n))},Iu=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const i=Et(r.key);if(t.some(o=>o===i||zf[o]===i))return e(r)}))},Qf=pe({patchProp:Vf},Ef);let fi;function il(){return fi||(fi=Zc(Qf))}const Mu=((...e)=>{il().render(...e)}),Du=((...e)=>{const t=il().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Xf(s);if(!r)return;const i=t._component;!W(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Yf(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t});function Yf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Xf(e){return fe(e)?document.querySelector(e):e}const jt=typeof document<"u";function ol(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Zf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&ol(e.default)}const te=Object.assign;function xs(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ke(r)?r.map(e):e(r)}return n}const an=()=>{},Ke=Array.isArray;function ai(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const ll=/#/g,ea=/&/g,ta=/\//g,na=/=/g,sa=/\?/g,cl=/\+/g,ra=/%5B/g,ia=/%5D/g,fl=/%5E/g,oa=/%60/g,al=/%7B/g,la=/%7C/g,ul=/%7D/g,ca=/%20/g;function yr(e){return e==null?"":encodeURI(""+e).replace(la,"|").replace(ra,"[").replace(ia,"]")}function fa(e){return yr(e).replace(al,"{").replace(ul,"}").replace(fl,"^")}function Gs(e){return yr(e).replace(cl,"%2B").replace(ca,"+").replace(ll,"%23").replace(ea,"%26").replace(oa,"`").replace(al,"{").replace(ul,"}").replace(fl,"^")}function aa(e){return Gs(e).replace(na,"%3D")}function ua(e){return yr(e).replace(ll,"%23").replace(sa,"%3F")}function ha(e){return ua(e).replace(ta,"%2F")}function vn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const da=/\/$/,pa=e=>e.replace(da,"");function ws(e,t,n="/"){let s,r={},i="",o="";const l=t.indexOf("#");let c=t.indexOf("?");return c=l>=0&&c>l?-1:c,c>=0&&(s=t.slice(0,c),i=t.slice(c,l>0?l:t.length),r=e(i.slice(1))),l>=0&&(s=s||t.slice(0,l),o=t.slice(l,t.length)),s=ya(s??t,n),{fullPath:s+i+o,path:s,query:r,hash:vn(o)}}function ga(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function ui(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ma(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&qt(t.matched[s],n.matched[r])&&hl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function qt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function hl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!_a(e[n],t[n]))return!1;return!0}function _a(e,t){return Ke(e)?hi(e,t):Ke(t)?hi(t,e):e?.valueOf()===t?.valueOf()}function hi(e,t){return Ke(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function ya(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let i=n.length-1,o,l;for(o=0;o1&&i--;else break;return n.slice(0,i).join("/")+"/"+s.slice(o).join("/")}const ht={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Ws=(function(e){return e.pop="pop",e.push="push",e})({}),Rs=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function va(e){if(!e)if(jt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),pa(e)}const ba=/^[^#]+#/;function Ea(e,t){return e.replace(ba,"#")+t}function Sa(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const us=()=>({left:window.scrollX,top:window.scrollY});function Ca(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Sa(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function di(e,t){return(history.state?history.state.position-t:-1)+e}const $s=new Map;function Aa(e,t){$s.set(e,t)}function xa(e){const t=$s.get(e);return $s.delete(e),t}function wa(e){return typeof e=="string"||e&&typeof e=="object"}function dl(e){return typeof e=="string"||typeof e=="symbol"}let ue=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const pl=Symbol("");ue.MATCHER_NOT_FOUND+"",ue.NAVIGATION_GUARD_REDIRECT+"",ue.NAVIGATION_ABORTED+"",ue.NAVIGATION_CANCELLED+"",ue.NAVIGATION_DUPLICATED+"";function Jt(e,t){return te(new Error,{type:e,[pl]:!0},t)}function et(e,t){return e instanceof Error&&pl in e&&(t==null||!!(e.type&t))}const Ra=["params","query","hash"];function Ta(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Ra)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Oa(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Gs(r)):[s&&Gs(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Pa(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ke(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Ia=Symbol(""),gi=Symbol(""),hs=Symbol(""),vr=Symbol(""),qs=Symbol("");function Zt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function yt(e,t,n,s,r,i=o=>o()){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=p=>{p===!1?c(Jt(ue.NAVIGATION_ABORTED,{from:n,to:t})):p instanceof Error?c(p):wa(p)?c(Jt(ue.NAVIGATION_GUARD_REDIRECT,{from:t,to:p})):(o&&s.enterCallbacks[r]===o&&typeof p=="function"&&o.push(p),l())},f=i(()=>e.call(s&&s.instances[r],t,n,a));let h=Promise.resolve(f);e.length<3&&(h=h.then(a)),h.catch(p=>c(p))})}function Ts(e,t,n,s,r=i=>i()){const i=[];for(const o of e)for(const l in o.components){let c=o.components[l];if(!(t!=="beforeRouteEnter"&&!o.instances[l]))if(ol(c)){const a=(c.__vccOpts||c)[t];a&&i.push(yt(a,n,s,o,l,r))}else{let a=c();i.push(()=>a.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${l}" at "${o.path}"`);const h=Zf(f)?f.default:f;o.mods[l]=f,o.components[l]=h;const p=(h.__vccOpts||h)[t];return p&&yt(p,n,s,o,l,r)()}))}}return i}function Na(e,t){const n=[],s=[],r=[],i=Math.max(t.matched.length,e.matched.length);for(let o=0;oqt(a,l))?s.push(l):n.push(l));const c=e.matched[o];c&&(t.matched.find(a=>qt(a,c))||r.push(c))}return[n,s,r]}let Ma=()=>location.protocol+"//"+location.host;function gl(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),ui(l,"")}return ui(n,e)+s+r}function Da(e,t,n,s){let r=[],i=[],o=null;const l=({state:p})=>{const m=gl(e,location),S=n.value,C=t.value;let L=0;if(p){if(n.value=m,t.value=p,o&&o===S){o=null;return}L=C?p.position-C.position:0}else s(m);r.forEach(N=>{N(n.value,S,{delta:L,type:Ws.pop,direction:L?L>0?Rs.forward:Rs.back:Rs.unknown})})};function c(){o=n.value}function a(p){r.push(p);const m=()=>{const S=r.indexOf(p);S>-1&&r.splice(S,1)};return i.push(m),m}function f(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(te({},p.state,{scroll:us()}),"")}}function h(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:a,destroy:h}}function mi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?us():null}}function La(e){const{history:t,location:n}=window,s={value:gl(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,a,f){const h=e.indexOf("#"),p=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:Ma()+e+c;try{t[f?"replaceState":"pushState"](a,"",p),r.value=a}catch(m){console.error(m),n[f?"replace":"assign"](p)}}function o(c,a){i(c,te({},t.state,mi(r.value.back,c,r.value.forward,!0),a,{position:r.value.position}),!0),s.value=c}function l(c,a){const f=te({},r.value,t.state,{forward:c,scroll:us()});i(f.current,f,!0),i(c,te({},mi(s.value,c,null),{position:f.position+1},a),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Lu(e){e=va(e);const t=La(e),n=Da(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=te({location:"",base:e,go:s,createHref:Ea.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Ot=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var de=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(de||{});const Fa={type:Ot.Static,value:""},Va=/[a-zA-Z0-9_]/;function Ha(e){if(!e)return[[]];if(e==="/")return[[Fa]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${a}": ${m}`)}let n=de.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,a="",f="";function h(){a&&(n===de.Static?i.push({type:Ot.Static,value:a}):n===de.Param||n===de.ParamRegExp||n===de.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Ot.Param,value:a,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function p(){a+=c}for(;lt.length?t.length===1&&t[0]===Ce.Static+Ce.Segment?1:-1:0}function ml(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Ka={strict:!1,end:!0,sensitive:!1};function Ga(e,t,n){const s=ka(Ha(e.path),n),r=te(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Wa(e,t){const n=[],s=new Map;t=ai(Ka,t);function r(h){return s.get(h)}function i(h,p,m){const S=!m,C=bi(h);C.aliasOf=m&&m.record;const L=ai(t,h),N=[C];if("alias"in h){const M=typeof h.alias=="string"?[h.alias]:h.alias;for(const B of M)N.push(bi(te({},C,{components:m?m.record.components:C.components,path:B,aliasOf:m?m.record:C})))}let P,F;for(const M of N){const{path:B}=M;if(p&&B[0]!=="/"){const J=p.record.path,q=J[J.length-1]==="/"?"":"/";M.path=p.record.path+(B&&q+B)}if(P=Ga(M,p,L),m?m.alias.push(P):(F=F||P,F!==P&&F.alias.push(P),S&&h.name&&!Ei(P)&&o(h.name)),_l(P)&&c(P),C.children){const J=C.children;for(let q=0;q{o(F)}:an}function o(h){if(dl(h)){const p=s.get(h);p&&(s.delete(h),n.splice(n.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=n.indexOf(h);p>-1&&(n.splice(p,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return n}function c(h){const p=Ja(h,n);n.splice(p,0,h),h.record.name&&!Ei(h)&&s.set(h.record.name,h)}function a(h,p){let m,S={},C,L;if("name"in h&&h.name){if(m=s.get(h.name),!m)throw Jt(ue.MATCHER_NOT_FOUND,{location:h});L=m.record.name,S=te(vi(p.params,m.keys.filter(F=>!F.optional).concat(m.parent?m.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),h.params&&vi(h.params,m.keys.map(F=>F.name))),C=m.stringify(S)}else if(h.path!=null)C=h.path,m=n.find(F=>F.re.test(C)),m&&(S=m.parse(C),L=m.record.name);else{if(m=p.name?s.get(p.name):n.find(F=>F.re.test(p.path)),!m)throw Jt(ue.MATCHER_NOT_FOUND,{location:h,currentLocation:p});L=m.record.name,S=te({},p.params,h.params),C=m.stringify(S)}const N=[];let P=m;for(;P;)N.unshift(P.record),P=P.parent;return{name:L,path:C,params:S,matched:N,meta:qa(N)}}e.forEach(h=>i(h));function f(){n.length=0,s.clear()}return{addRoute:i,resolve:a,removeRoute:o,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function vi(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function bi(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:$a(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function $a(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Ei(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function qa(e){return e.reduce((t,n)=>te(t,n.meta),{})}function Ja(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;ml(e,t[i])<0?s=i:n=i+1}const r=za(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function za(e){let t=e;for(;t=t.parent;)if(_l(t)&&ml(e,t)===0)return t}function _l({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Si(e){const t=Fe(hs),n=Fe(vr),s=Le(()=>{const c=It(e.to);return t.resolve(c)}),r=Le(()=>{const{matched:c}=s.value,{length:a}=c,f=c[a-1],h=n.matched;if(!f||!h.length)return-1;const p=h.findIndex(qt.bind(null,f));if(p>-1)return p;const m=Ci(c[a-2]);return a>1&&Ci(f)===m&&h[h.length-1].path!==m?h.findIndex(qt.bind(null,c[a-2])):p}),i=Le(()=>r.value>-1&&eu(n.params,s.value.params)),o=Le(()=>r.value>-1&&r.value===n.matched.length-1&&hl(n.params,s.value.params));function l(c={}){if(Za(c)){const a=t[It(e.replace)?"replace":"push"](It(e.to)).catch(an);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:Le(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function Qa(e){return e.length===1?e[0]:e}const Ya=vo({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Si,setup(e,{slots:t}){const n=En(Si(e)),{options:s}=Fe(hs),r=Le(()=>({[Ai(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ai(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&Qa(t.default(n));return e.custom?i:_r("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),Xa=Ya;function Za(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function eu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ke(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function Ci(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ai=(e,t,n)=>e??t??n,tu=vo({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Fe(qs),r=Le(()=>e.route||s.value),i=Fe(gi,0),o=Le(()=>{let a=It(i);const{matched:f}=r.value;let h;for(;(h=f[a])&&!h.components;)a++;return a}),l=Le(()=>r.value.matched[o.value]);Mn(gi,Le(()=>o.value+1)),Mn(Ia,l),Mn(qs,r);const c=rs();return cn(()=>[c.value,l.value,e.name],([a,f,h],[p,m,S])=>{f&&(f.instances[h]=a,m&&m!==f&&a&&a===p&&(f.leaveGuards.size||(f.leaveGuards=m.leaveGuards),f.updateGuards.size||(f.updateGuards=m.updateGuards))),a&&f&&(!m||!qt(f,m)||!p)&&(f.enterCallbacks[h]||[]).forEach(C=>C(a))},{flush:"post"}),()=>{const a=r.value,f=e.name,h=l.value,p=h&&h.components[f];if(!p)return xi(n.default,{Component:p,route:a});const m=h.props[f],S=m?m===!0?a.params:typeof m=="function"?m(a):m:null,L=_r(p,te({},S,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(h.instances[f]=null)},ref:c}));return xi(n.default,{Component:L,route:a})||L}}});function xi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const nu=tu;function Fu(e){const t=Wa(e.routes,e),n=e.parseQuery||Oa,s=e.stringifyQuery||pi,r=e.history,i=Zt(),o=Zt(),l=Zt(),c=tc(ht);let a=ht;jt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=xs.bind(null,v=>""+v),h=xs.bind(null,ha),p=xs.bind(null,vn);function m(v,D){let T,H;return dl(v)?(T=t.getRecordMatcher(v),H=D):H=v,t.addRoute(H,T)}function S(v){const D=t.getRecordMatcher(v);D&&t.removeRoute(D)}function C(){return t.getRoutes().map(v=>v.record)}function L(v){return!!t.getRecordMatcher(v)}function N(v,D){if(D=te({},D||c.value),typeof v=="string"){const g=ws(n,v,D.path),y=t.resolve({path:g.path},D),b=r.createHref(g.fullPath);return te(g,y,{params:p(y.params),hash:vn(g.hash),redirectedFrom:void 0,href:b})}let T;if(v.path!=null)T=te({},v,{path:ws(n,v.path,D.path).path});else{const g=te({},v.params);for(const y in g)g[y]==null&&delete g[y];T=te({},v,{params:h(g)}),D.params=h(D.params)}const H=t.resolve(T,D),Y=v.hash||"";H.params=f(p(H.params));const u=ga(s,te({},v,{hash:fa(Y),path:H.path})),d=r.createHref(u);return te({fullPath:u,hash:Y,query:s===pi?Pa(v.query):v.query||{}},H,{redirectedFrom:void 0,href:d})}function P(v){return typeof v=="string"?ws(n,v,c.value.path):te({},v)}function F(v,D){if(a!==v)return Jt(ue.NAVIGATION_CANCELLED,{from:D,to:v})}function M(v){return q(v)}function B(v){return M(te(P(v),{replace:!0}))}function J(v,D){const T=v.matched[v.matched.length-1];if(T&&T.redirect){const{redirect:H}=T;let Y=typeof H=="function"?H(v,D):H;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=P(Y):{path:Y},Y.params={}),te({query:v.query,hash:v.hash,params:Y.path!=null?{}:v.params},Y)}}function q(v,D){const T=a=N(v),H=c.value,Y=v.state,u=v.force,d=v.replace===!0,g=J(T,H);if(g)return q(te(P(g),{state:typeof g=="object"?te({},Y,g.state):Y,force:u,replace:d}),D||T);const y=T;y.redirectedFrom=D;let b;return!u&&ma(s,H,T)&&(b=Jt(ue.NAVIGATION_DUPLICATED,{to:y,from:H}),Ge(H,H,!0,!1)),(b?Promise.resolve(b):U(y,H)).catch(_=>et(_)?et(_,ue.NAVIGATION_GUARD_REDIRECT)?_:at(_):ee(_,y,H)).then(_=>{if(_){if(et(_,ue.NAVIGATION_GUARD_REDIRECT))return q(te({replace:d},P(_.to),{state:typeof _.to=="object"?te({},Y,_.to.state):Y,force:u}),D||y)}else _=O(y,H,!0,d,Y);return z(y,H,_),_})}function k(v,D){const T=F(v,D);return T?Promise.reject(T):Promise.resolve()}function A(v){const D=Lt.values().next().value;return D&&typeof D.runWithContext=="function"?D.runWithContext(v):v()}function U(v,D){let T;const[H,Y,u]=Na(v,D);T=Ts(H.reverse(),"beforeRouteLeave",v,D);for(const g of H)g.leaveGuards.forEach(y=>{T.push(yt(y,v,D))});const d=k.bind(null,v,D);return T.push(d),Me(T).then(()=>{T=[];for(const g of i.list())T.push(yt(g,v,D));return T.push(d),Me(T)}).then(()=>{T=Ts(Y,"beforeRouteUpdate",v,D);for(const g of Y)g.updateGuards.forEach(y=>{T.push(yt(y,v,D))});return T.push(d),Me(T)}).then(()=>{T=[];for(const g of u)if(g.beforeEnter)if(Ke(g.beforeEnter))for(const y of g.beforeEnter)T.push(yt(y,v,D));else T.push(yt(g.beforeEnter,v,D));return T.push(d),Me(T)}).then(()=>(v.matched.forEach(g=>g.enterCallbacks={}),T=Ts(u,"beforeRouteEnter",v,D,A),T.push(d),Me(T))).then(()=>{T=[];for(const g of o.list())T.push(yt(g,v,D));return T.push(d),Me(T)}).catch(g=>et(g,ue.NAVIGATION_CANCELLED)?g:Promise.reject(g))}function z(v,D,T){l.list().forEach(H=>A(()=>H(v,D,T)))}function O(v,D,T,H,Y){const u=F(v,D);if(u)return u;const d=D===ht,g=jt?history.state:{};T&&(H||d?r.replace(v.fullPath,te({scroll:d&&g&&g.scroll},Y)):r.push(v.fullPath,Y)),c.value=v,Ge(v,D,T,d),at()}let Q;function he(){Q||(Q=r.listen((v,D,T)=>{if(!St.listening)return;const H=N(v),Y=J(H,St.currentRoute.value);if(Y){q(te(Y,{replace:!0,force:!0}),H).catch(an);return}a=H;const u=c.value;jt&&Aa(di(u.fullPath,T.delta),us()),U(H,u).catch(d=>et(d,ue.NAVIGATION_ABORTED|ue.NAVIGATION_CANCELLED)?d:et(d,ue.NAVIGATION_GUARD_REDIRECT)?(q(te(P(d.to),{force:!0}),H).then(g=>{et(g,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&!T.delta&&T.type===Ws.pop&&r.go(-1,!1)}).catch(an),Promise.reject()):(T.delta&&r.go(-T.delta,!1),ee(d,H,u))).then(d=>{d=d||O(H,u,!1),d&&(T.delta&&!et(d,ue.NAVIGATION_CANCELLED)?r.go(-T.delta,!1):T.type===Ws.pop&&et(d,ue.NAVIGATION_ABORTED|ue.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),z(H,u,d)}).catch(an)}))}let be=Zt(),ie=Zt(),$;function ee(v,D,T){at(v);const H=ie.list();return H.length?H.forEach(Y=>Y(v,D,T)):console.error(v),Promise.reject(v)}function Xe(){return $&&c.value!==ht?Promise.resolve():new Promise((v,D)=>{be.add([v,D])})}function at(v){return $||($=!v,he(),be.list().forEach(([D,T])=>v?T(v):D()),be.reset()),v}function Ge(v,D,T,H){const{scrollBehavior:Y}=e;if(!jt||!Y)return Promise.resolve();const u=!T&&xa(di(v.fullPath,0))||(H||!T)&&history.state&&history.state.scroll||null;return lr().then(()=>Y(v,D,u)).then(d=>d&&Ca(d)).catch(d=>ee(d,v,D))}const we=v=>r.go(v);let Dt;const Lt=new Set,St={currentRoute:c,listening:!0,addRoute:m,removeRoute:S,clearRoutes:t.clearRoutes,hasRoute:L,getRoutes:C,resolve:N,options:e,push:M,replace:B,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:ie.add,isReady:Xe,install(v){v.component("RouterLink",Xa),v.component("RouterView",nu),v.config.globalProperties.$router=St,Object.defineProperty(v.config.globalProperties,"$route",{enumerable:!0,get:()=>It(c)}),jt&&!Dt&&c.value===ht&&(Dt=!0,M(r.location).catch(H=>{}));const D={};for(const H in ht)Object.defineProperty(D,H,{get:()=>c.value[H],enumerable:!0});v.provide(hs,St),v.provide(vr,eo(D)),v.provide(qs,c);const T=v.unmount;Lt.add(v),v.unmount=function(){Lt.delete(v),Lt.size<1&&(a=ht,Q&&Q(),Q=null,c.value=ht,Dt=!1,$=!1),T()}}};function Me(v){return v.reduce((D,T)=>D.then(()=>A(T)),Promise.resolve())}return St}function Vu(){return Fe(hs)}function Hu(e){return Fe(vr)}let yl;const ds=e=>yl=e,vl=Symbol();function Js(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var un;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(un||(un={}));function ju(){const e=Hi(!0),t=e.run(()=>rs({}));let n=[],s=[];const r=or({install(i){ds(r),r._a=i,i.provide(vl,r),i.config.globalProperties.$pinia=r,s.forEach(o=>n.push(o)),s=[]},use(i){return this._a?n.push(i):s.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const bl=()=>{};function wi(e,t,n,s=bl){e.add(t);const r=()=>{e.delete(t)&&s()};return!n&&ji()&&Ll(r),r}function Vt(e,...t){e.forEach(n=>{n(...t)})}const su=e=>e(),Ri=Symbol(),Os=Symbol();function zs(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];Js(r)&&Js(s)&&e.hasOwnProperty(n)&&!ae(s)&&!it(s)?e[n]=zs(r,s):e[n]=s}return e}const ru=Symbol();function iu(e){return!Js(e)||!Object.prototype.hasOwnProperty.call(e,ru)}const{assign:pt}=Object;function ou(e){return!!(ae(e)&&e.effect)}function lu(e,t,n,s){const{state:r,actions:i,getters:o}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const f=rc(n.state.value[e]);return pt(f,i,Object.keys(o||{}).reduce((h,p)=>(h[p]=or(Le(()=>{ds(n);const m=n._s.get(e);return o[p].call(m,m)})),h),{}))}return c=El(e,a,t,n,s,!0),c}function El(e,t,n={},s,r,i){let o;const l=pt({actions:{}},n),c={deep:!0};let a,f,h=new Set,p=new Set,m;const S=s.state.value[e];!i&&!S&&(s.state.value[e]={}),rs({});let C;function L(k){let A;a=f=!1,typeof k=="function"?(k(s.state.value[e]),A={type:un.patchFunction,storeId:e,events:m}):(zs(s.state.value[e],k),A={type:un.patchObject,payload:k,storeId:e,events:m});const U=C=Symbol();lr().then(()=>{C===U&&(a=!0)}),f=!0,Vt(h,A,s.state.value[e])}const N=i?function(){const{state:A}=n,U=A?A():{};this.$patch(z=>{pt(z,U)})}:bl;function P(){o.stop(),h.clear(),p.clear(),s._s.delete(e)}const F=(k,A="")=>{if(Ri in k)return k[Os]=A,k;const U=function(){ds(s);const z=Array.from(arguments),O=new Set,Q=new Set;function he($){O.add($)}function be($){Q.add($)}Vt(p,{args:z,name:U[Os],store:B,after:he,onError:be});let ie;try{ie=k.apply(this&&this.$id===e?this:B,z)}catch($){throw Vt(Q,$),$}return ie instanceof Promise?ie.then($=>(Vt(O,$),$)).catch($=>(Vt(Q,$),Promise.reject($))):(Vt(O,ie),ie)};return U[Ri]=!0,U[Os]=A,U},M={_p:s,$id:e,$onAction:wi.bind(null,p),$patch:L,$reset:N,$subscribe(k,A={}){const U=wi(h,k,A.detached,()=>z()),z=o.run(()=>cn(()=>s.state.value[e],O=>{(A.flush==="sync"?f:a)&&k({storeId:e,type:un.direct,events:m},O)},pt({},c,A)));return U},$dispose:P},B=En(M);s._s.set(e,B);const q=(s._a&&s._a.runWithContext||su)(()=>s._e.run(()=>(o=Hi()).run(()=>t({action:F}))));for(const k in q){const A=q[k];if(ae(A)&&!ou(A)||it(A))i||(S&&iu(A)&&(ae(A)?A.value=S[k]:zs(A,S[k])),s.state.value[e][k]=A);else if(typeof A=="function"){const U=F(A,k);q[k]=U,l.actions[k]=A}}return pt(B,q),pt(Z(B),q),Object.defineProperty(B,"$state",{get:()=>s.state.value[e],set:k=>{L(A=>{pt(A,k)})}}),s._p.forEach(k=>{pt(B,o.run(()=>k({store:B,app:s._a,pinia:s,options:l})))}),S&&i&&n.hydrate&&n.hydrate(B.$state,S),a=!0,f=!0,B}function Bu(e,t,n){let s;const r=typeof t=="function";s=r?n:t;function i(o,l){const c=Fc();return o=o||(c?Fe(vl,null):null),o&&ds(o),o=yl,o._s.has(e)||(r?El(e,t,s,o):lu(e,s,o)),o._s.get(e)}return i.$id=e,i}export{ye as $,vo as A,yu as B,It as C,pu as D,tc as E,Oe as F,_r as G,fu as H,_n as I,fe as J,V as K,cn as L,Mn as M,Oi as N,ff as O,vu as P,Fe as Q,Ru as R,bu as S,wu as T,Zn as U,Cn as V,lr as W,re as X,Su as Y,au as Z,ne as _,Fu as a,W as a0,Mu as a1,rc as a2,ae as a3,mu as a4,Ec as a5,Co as a6,xo as a7,gu as a8,Sc as a9,Et as aa,Cr as ab,Eu as ac,He as ad,Z as ae,Pu as af,Bu as ag,Tu as ah,Ii as ai,cu as aj,Pn as ak,yc as al,bt as am,fs as an,Ms as ao,vc as ap,Yn as aq,or as ar,hu as as,Ll as at,_u as au,eo as av,ji as aw,xu as ax,Ve as ay,Lu as b,Bs as c,Du as d,ju as e,En as f,rs as g,Le as h,So as i,Cu as j,$o as k,Au as l,Nu as m,es as n,js as o,xe as p,Iu as q,du as r,pc as s,Dl as t,Vu as u,Ou as v,uu as w,cf as x,Hu as y,Ao as z}; diff --git a/static/app/index.html b/static/app/index.html index 2b45156..ee80ec5 100644 --- a/static/app/index.html +++ b/static/app/index.html @@ -4,14 +4,14 @@ 知识管理平台 - + - +
+ - diff --git a/static/app/login.html b/static/app/login.html index 1168b41..ec0391d 100644 --- a/static/app/login.html +++ b/static/app/login.html @@ -4,15 +4,27 @@ 知识管理平台 - + - - + + + + + + + + + + - + + + +
+ diff --git a/tests/test_social_login.py b/tests/test_social_login.py new file mode 100644 index 0000000..dedf6cb --- /dev/null +++ b/tests/test_social_login.py @@ -0,0 +1,46 @@ +import sys +from pathlib import Path + +PROJECT_ROOT = Path(__file__).resolve().parents[1] +if str(PROJECT_ROOT) not in sys.path: + sys.path.insert(0, str(PROJECT_ROOT)) + +from services import social_login +from services.social_login import normalize_social_endpoint, parse_space_scan_page, poll_social_scan + + +def test_normalize_social_endpoint_accepts_space_root(): + assert normalize_social_endpoint("") == "https://www.spacezs.cn/connect.php" + assert normalize_social_endpoint("https://www.spacezs.cn/") == "https://www.spacezs.cn/connect.php" + assert normalize_social_endpoint("https://www.spacezs.cn") == "https://www.spacezs.cn/connect.php" + + +def test_parse_space_scan_page_extracts_qr_and_state(): + html = 'var qrcode_url = "http://weixin.qq.com/q/test"; var state = "state-123";' + assert parse_space_scan_page(html) == ("http://weixin.qq.com/q/test", "state-123") + + +def test_poll_social_scan_treats_code_zero_as_authorized(monkeypatch): + class FakeResponse: + def json(self): + return {"code": 0, "url": "https://zsglpt.workyai.cn/login?type=wx&code=ok"} + + def fake_get(*_args, **_kwargs): + return FakeResponse() + + monkeypatch.setattr(social_login.requests, "get", fake_get) + monkeypatch.setattr(social_login, "social_appkey", lambda _cfg: "key") + + result = poll_social_scan( + { + "social_login_enabled": 1, + "social_login_endpoint": "https://www.spacezs.cn/connect.php", + "social_login_appid": "appid", + "social_login_appkey": "encrypted", + "social_login_providers": "wx", + }, + provider="wx", + state="state-123", + ) + + assert result == {"status": "authorized", "url": "https://zsglpt.workyai.cn/login?type=wx&code=ok"}