From 533353dbeb19b3fa45817e9f65874db4e2ce6f9e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 15 九月 2026 13:15:40 +0800
Subject: [PATCH] feat(login): 移除企业微信登录选项并调整样式
---
.gitignore | 1
src/views/login.vue | 65 ---------------
src/assets/styles/tokens.scss | 79 +++++++++++++++++++
src/views/home/useCountUp.js | 45 +++++++++++
src/views/login/components/LoginBrand.vue | 12 +-
5 files changed, 133 insertions(+), 69 deletions(-)
diff --git a/.gitignore b/.gitignore
index 78a752d..20a972d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,7 @@
# Editor directories and files
.idea
.vscode
+.claude
*.suo
*.ntvs*
*.njsproj
diff --git a/src/assets/styles/tokens.scss b/src/assets/styles/tokens.scss
new file mode 100644
index 0000000..2830da2
--- /dev/null
+++ b/src/assets/styles/tokens.scss
@@ -0,0 +1,79 @@
+// 鍏ㄥ眬璁捐浠ょ墝锛氶鑹层�佸渾瑙掋�侀槾褰便�侀棿璺濈粺涓�鏉ユ簮
+// 鐢ㄦ硶锛歷ar(--app-primary) 绛夛紱鏆楄壊妯″紡鎸� html.dark 鑷姩鐢熸晥
+:root {
+ // 鍝佺墝涓庤涔夎壊锛堝厠鍒朵娇鐢紝浠呯敤浜庡己璋冦�佺姸鎬侊級
+ --app-primary: #2c51d9;
+ --app-primary-hover: #4a6cf0;
+ --app-primary-soft: rgba(44, 81, 217, 0.08);
+ --app-success: #0f9960;
+ --app-success-soft: rgba(15, 153, 96, 0.1);
+ --app-warning: #d97706;
+ --app-warning-soft: rgba(217, 119, 6, 0.1);
+ --app-danger: #d54941;
+ --app-danger-soft: rgba(213, 73, 65, 0.1);
+ --app-info: #1377ef;
+ --app-info-soft: rgba(19, 119, 239, 0.1);
+
+ // 琛ㄩ潰涓庣嚎鏉�
+ --app-bg: #f4f6f9;
+ --app-surface: #ffffff;
+ --app-surface-hover: #f8fafc;
+ --app-border: #e8ecf1;
+ --app-divider: #f0f2f5;
+
+ // 鏂囧瓧
+ --app-text: #1d2129;
+ --app-text-secondary: #4e5969;
+ --app-text-tertiary: #86909c;
+ --app-text-inverse: #ffffff;
+
+ // 鍦嗚
+ --app-radius-sm: 6px;
+ --app-radius: 10px;
+ --app-radius-lg: 14px;
+
+ // 闃村奖锛堜綆楗卞拰銆佹祬锛�
+ --app-shadow: 0 1px 2px rgba(29, 33, 41, 0.04);
+ --app-shadow-md: 0 4px 16px rgba(29, 33, 41, 0.06);
+
+ // 甯冨眬
+ --app-gap: 16px;
+ --app-gap-lg: 20px;
+ --app-transition: 0.2s ease;
+}
+
+// 鏆楄壊妯″紡锛氫笌 element-plus dark 鍙橀噺鍗忓悓
+html.dark {
+ --app-primary-soft: rgba(74, 108, 240, 0.16);
+ --app-success-soft: rgba(15, 153, 96, 0.18);
+ --app-warning-soft: rgba(217, 119, 6, 0.18);
+ --app-danger-soft: rgba(213, 73, 65, 0.18);
+ --app-info-soft: rgba(19, 119, 239, 0.18);
+
+ --app-bg: #131720;
+ --app-surface: #1c212b;
+ --app-surface-hover: #232935;
+ --app-border: #2a3140;
+ --app-divider: #232935;
+
+ --app-text: #e8eaee;
+ --app-text-secondary: #a6adba;
+ --app-text-tertiary: #7b8494;
+
+ --app-shadow: none;
+ --app-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.35);
+}
+
+// 缁熶竴闈㈡澘鍗$墖
+.app-panel {
+ background: var(--app-surface);
+ border: 1px solid var(--app-border);
+ border-radius: var(--app-radius);
+ box-shadow: var(--app-shadow);
+}
+
+// 绛夊鏁板瓧锛岄伩鍏嶆暟鎹烦鍔�
+.app-num {
+ font-variant-numeric: tabular-nums;
+ font-feature-settings: 'tnum';
+}
diff --git a/src/views/home/useCountUp.js b/src/views/home/useCountUp.js
new file mode 100644
index 0000000..7be4aa7
--- /dev/null
+++ b/src/views/home/useCountUp.js
@@ -0,0 +1,45 @@
+import { ref, watch, onScopeDispose } from 'vue'
+
+const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches
+
+// 鏁板瓧婊氬姩锛氬彧鍦ㄥ�煎彉鍖栨椂鍋氫竴娆� 500ms 缂撳姩锛屽皧閲嶇郴缁熷噺寮卞姩鏁堣缃�
+export function useCountUp(source, duration = 500) {
+ const display = ref(0)
+ let raf = 0
+
+ const run = (to) => {
+ const target = Number(to)
+ if (!isFinite(target)) {
+ display.value = 0
+ return
+ }
+ if (reduceMotion || target === display.value) {
+ display.value = target
+ return
+ }
+ cancelAnimationFrame(raf)
+ const from = Number(display.value) || 0
+ const start = performance.now()
+ const step = (now) => {
+ const p = Math.min((now - start) / duration, 1)
+ const eased = 1 - Math.pow(1 - p, 3)
+ display.value = from + (target - from) * eased
+ if (p < 1) raf = requestAnimationFrame(step)
+ }
+ raf = requestAnimationFrame(step)
+ }
+
+ watch(source, (v) => run(v), { immediate: true })
+ onScopeDispose(() => cancelAnimationFrame(raf))
+
+ return display
+}
+
+// 鍗冨垎浣嶆牸寮忓寲锛堜繚鐣欐暣鏁版垨灏忔暟锛�
+export function formatNum(n, digits) {
+ const num = Number(n || 0)
+ if (digits !== undefined) {
+ return num.toLocaleString('zh-CN', { minimumFractionDigits: digits, maximumFractionDigits: digits })
+ }
+ return num.toLocaleString('zh-CN')
+}
diff --git a/src/views/login.vue b/src/views/login.vue
index d6c9ef3..ac7bca5 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -57,21 +57,7 @@
</el-button>
</el-form>
- <div class="login-card__others">
- <div class="login-card__divider">
- <span>鍏朵粬鐧诲綍鏂瑰紡</span>
- </div>
- <div class="login-card__wecom" @click="handleWecom">
- <svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true">
- <path fill="#2C51D9" d="M12 3C7.6 3 4 5.9 4 9.5c0 2 1.1 3.8 2.9 5l-.7 2.1 2.4-1.2c1 .3 2.1.5 3.4.5 4.4 0 8-2.9 8-6.4S16.4 3 12 3z"/>
- <circle cx="9" cy="9.5" r="1" fill="#fff"/>
- <circle cx="15" cy="9.5" r="1" fill="#fff"/>
- </svg>
- <span>浼佷笟寰俊鐧诲綍</span>
- </div>
- </div>
-
- <p class="login-card__foot">鍋ラ娇绉戞妧 路 鏈嶅姟鍏ㄧ悆</p>
+ <p class="login-card__foot">鍋ラ娇绉戞妧 路 鏈嶅姟鍏ㄥ浗</p>
</div>
</main>
</div>
@@ -133,10 +119,6 @@
function handleForgot() {
proxy.$modal.msg("璇疯仈绯荤郴缁熺鐞嗗憳閲嶇疆瀵嗙爜")
-}
-
-function handleWecom() {
- proxy.$modal.msg("浼佷笟寰俊鐧诲綍鏆傛湭寮�鏀�")
}
function getCookie() {
@@ -251,51 +233,8 @@
}
}
-.login-card__others {
- margin-top: 26px;
-}
-
-.login-card__divider {
- position: relative;
- text-align: center;
- font-size: 12px;
- color: var(--app-text-tertiary, #86909c);
-
- &::before {
- content: '';
- position: absolute;
- left: 0;
- right: 0;
- top: 50%;
- height: 1px;
- background: var(--app-border, #e8ecf1);
- }
-
- span {
- position: relative;
- padding: 0 12px;
- background: #fff;
- }
-}
-
-.login-card__wecom {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- margin-top: 18px;
- font-size: 14px;
- color: var(--app-text-secondary, #4e5969);
- cursor: pointer;
- transition: color var(--app-transition, 0.2s);
-
- &:hover {
- color: var(--app-primary, #2c51d9);
- }
-}
-
.login-card__foot {
- margin: 26px 0 0;
+ margin: 34px 0 0;
text-align: center;
font-size: 12px;
letter-spacing: 4px;
diff --git a/src/views/login/components/LoginBrand.vue b/src/views/login/components/LoginBrand.vue
index 3c7c097..57bb125 100644
--- a/src/views/login/components/LoginBrand.vue
+++ b/src/views/login/components/LoginBrand.vue
@@ -44,7 +44,7 @@
const features = [
{ icon: 'CircleCheck', label: '鍝佽川淇濋殰', sub: '涓ユ帶璐ㄩ噺鏍囧噯' },
{ icon: 'Setting', label: '鏅鸿兘鍒堕��', sub: '鏁板瓧鍖栫敓浜х鐞�' },
- { icon: 'Connection', label: '鏈嶅姟鍏ㄧ悆', sub: '鍔╁姏鍙h厰鍋ュ悍浜嬩笟' }
+ { icon: 'Connection', label: '鏈嶅姟鍏ㄥ浗', sub: '鍔╁姏鍙h厰鍋ュ悍浜嬩笟' }
]
</script>
@@ -72,13 +72,13 @@
.brand__logo {
position: relative;
z-index: 2;
+ // 鍘熷浘鑷甫鐧藉簳锛屾鐗囧彔搴曡鐧借壊閮ㄥ垎閫忓嚭鑳屾櫙锛岀瓑鏁堝幓搴�
+ mix-blend-mode: multiply;
img {
- height: 46px;
- padding: 6px 12px;
- background: #fff;
- border-radius: 8px;
- box-shadow: 0 4px 16px rgba(16, 42, 96, 0.08);
+ display: block;
+ height: 76px;
+ width: auto;
object-fit: contain;
}
}
--
Gitblit v1.9.3