fix(mobile): align employee home visual theme

This commit is contained in:
2026-07-14 02:54:41 +08:00
parent e25d71fe1b
commit fb86b4d328
3 changed files with 80 additions and 35 deletions
+1 -1
View File
@@ -143,7 +143,7 @@
}, },
"tabBar": { "tabBar": {
"color": "#7b8494", "color": "#7b8494",
"selectedColor": "#e60012", "selectedColor": "#2f6bff",
"backgroundColor": "#ffffff", "backgroundColor": "#ffffff",
"borderStyle": "white", "borderStyle": "white",
"height": "66px", "height": "66px",
+78 -33
View File
@@ -63,7 +63,7 @@
class="chip-icon" class="chip-icon"
:type="chipIcon(index)" :type="chipIcon(index)"
size="22" size="22"
color="#e70014" :color="chipColor(index)"
/> />
<text class="chip-text">{{ item }}</text> <text class="chip-text">{{ item }}</text>
<text class="chip-arrow">›</text> <text class="chip-arrow">›</text>
@@ -95,7 +95,7 @@
<view class="schedule-list"> <view class="schedule-list">
<view class="schedule-row" v-if="primaryScheduleTitle"> <view class="schedule-row" v-if="primaryScheduleTitle">
<view class="schedule-icon-wrap"> <view class="schedule-icon-wrap">
<uni-icons class="schedule-icon" type="compose" size="26" color="#e70014" /> <uni-icons class="schedule-icon" type="compose" size="26" color="#2f6bff" />
</view> </view>
<view class="schedule-copy"> <view class="schedule-copy">
<text class="schedule-title">{{ primaryScheduleTitle }}</text> <text class="schedule-title">{{ primaryScheduleTitle }}</text>
@@ -187,6 +187,8 @@ const pendingAssignmentKey = 'aihr_pending_assignment_id';
const chipIcons = ['chatbubble', 'help', 'wallet']; const chipIcons = ['chatbubble', 'help', 'wallet'];
const chipIcon = (index: number) => chipIcons[index] || 'chatbubble'; const chipIcon = (index: number) => chipIcons[index] || 'chatbubble';
const chipColors = ['#2f6bff', '#ff9b3d', '#34b368'];
const chipColor = (index: number) => chipColors[index] || '#2f6bff';
const mapTiles = computed(() => [ const mapTiles = computed(() => [
{ {
@@ -371,7 +373,10 @@ onShow(() => {
.today-page { .today-page {
min-height: 100vh; min-height: 100vh;
padding: 0 24px 112px; padding: 0 24px 112px;
background: linear-gradient(180deg, #ffffff 0%, #fbfbfb 62%, #f6f6f6 100%); --employee-primary: #2f6bff;
--employee-primary-soft: #eaf1ff;
--employee-card-shadow: 0 16px 40px rgba(47, 107, 255, 0.1);
background: linear-gradient(180deg, #f4f8ff 0%, #f7faff 58%, #f3f5f7 100%);
} }
.brand-bar { .brand-bar {
@@ -533,7 +538,7 @@ onShow(() => {
display: flex; display: flex;
align-items: center; align-items: center;
min-height: 82px; min-height: 82px;
gap: 2px; gap: 10px;
transform: translateY(7px); transform: translateY(7px);
} }
@@ -557,14 +562,22 @@ onShow(() => {
.voice-primary { .voice-primary {
flex: 1.7; flex: 1.7;
gap: 20px; min-height: 74px;
padding: 0 8px 0 14px; gap: 14px;
padding: 0 12px;
border-radius: 16px;
background: #2f6bff;
box-shadow: 0 10px 20px rgba(47, 107, 255, 0.22);
} }
.voice-secondary { .voice-secondary {
flex: 1; flex: 1;
gap: 10px; gap: 10px;
padding: 0 2px 0 16px; min-height: 74px;
padding: 0 8px;
border: 1px solid #e4eaf4;
border-radius: 16px;
background: #ffffff;
} }
.voice-divider { .voice-divider {
@@ -576,18 +589,18 @@ onShow(() => {
.voice-emblem { .voice-emblem {
display: flex; display: flex;
width: 80px; width: 52px;
height: 80px; height: 52px;
flex: none; flex: none;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 50%; border-radius: 50%;
background: #e70014; background: #ffffff;
box-shadow: 0 0 0 8px #fff1f2, 0 8px 16px rgba(231, 0, 20, 0.22); box-shadow: none;
} }
.voice-mark { .voice-mark {
color: #ffffff; color: #2f6bff;
font-size: 24px; font-size: 24px;
font-weight: 900; font-weight: 900;
line-height: 1; line-height: 1;
@@ -608,6 +621,10 @@ onShow(() => {
white-space: nowrap; white-space: nowrap;
} }
.voice-primary .voice-title {
color: #ffffff;
}
.secondary-title { .secondary-title {
font-size: 18px; font-size: 18px;
} }
@@ -620,6 +637,10 @@ onShow(() => {
white-space: nowrap; white-space: nowrap;
} }
.voice-primary .voice-desc {
color: rgba(255, 255, 255, 0.78);
}
.secondary-copy { .secondary-copy {
max-width: 108px; max-width: 108px;
} }
@@ -670,11 +691,19 @@ onShow(() => {
border: 1px solid #ececee; border: 1px solid #ececee;
border-radius: 12px; border-radius: 12px;
background: #ffffff; background: #ffffff;
color: #e70014; color: #2f6bff;
font-size: 13px; font-size: 13px;
font-weight: 700; font-weight: 700;
} }
.chip-1 {
color: #ff9b3d;
}
.chip-2 {
color: #34b368;
}
.chip-icon { .chip-icon {
font-size: 13px; font-size: 13px;
line-height: 1; line-height: 1;
@@ -738,11 +767,11 @@ onShow(() => {
min-height: 42px; min-height: 42px;
flex: 0 0 88px; flex: 0 0 88px;
border-radius: 12px; border-radius: 12px;
background: #e70014; background: var(--employee-primary);
color: #ffffff; color: #ffffff;
font-size: 15px; font-size: 15px;
font-weight: 800; font-weight: 800;
box-shadow: 0 8px 16px rgba(231, 0, 20, 0.18); box-shadow: 0 8px 16px rgba(47, 107, 255, 0.2);
} }
.section-head { .section-head {
@@ -765,7 +794,7 @@ onShow(() => {
width: 4px; width: 4px;
height: 22px; height: 22px;
border-radius: 2px; border-radius: 2px;
background: #e70014; background: #2f6bff;
} }
.section-link { .section-link {
@@ -793,7 +822,9 @@ onShow(() => {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 16px; gap: 16px;
padding: 4px 0; padding: 14px 12px;
border-radius: 18px;
background: #f8fbff;
} }
.schedule-icon-wrap { .schedule-icon-wrap {
@@ -804,7 +835,7 @@ onShow(() => {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 50%; border-radius: 50%;
background: #fff1f1; background: #eaf1ff;
} }
.review-icon { .review-icon {
@@ -857,8 +888,8 @@ onShow(() => {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 12px; border-radius: 12px;
background: #e70014; background: #2f6bff;
box-shadow: 0 8px 16px rgba(231, 0, 20, 0.18); box-shadow: 0 8px 16px rgba(47, 107, 255, 0.22);
color: #ffffff; color: #ffffff;
font-size: 18px; font-size: 18px;
font-weight: 800; font-weight: 800;
@@ -881,13 +912,27 @@ onShow(() => {
align-items: center; align-items: center;
gap: 10px; gap: 10px;
padding: 16px 14px; padding: 16px 14px;
border: 1px solid #f0f1f3; border: 0;
border-radius: 16px; border-radius: 16px;
background: #ffffff; background: #ffffff;
text-align: left; text-align: left;
overflow: hidden; overflow: hidden;
} }
.map-tile.ask,
.map-tile.practice,
.map-tile.learn,
.map-tile.report {
color: #ffffff;
border-color: transparent;
box-shadow: 0 10px 18px rgba(24, 28, 36, 0.08);
}
.map-tile.ask { background: #2f6bff; }
.map-tile.practice { background: #2ab673; }
.map-tile.learn { background: #ff961f; }
.map-tile.report { background: #ff6357; }
.map-symbol { .map-symbol {
display: flex; display: flex;
width: 56px; width: 56px;
@@ -895,30 +940,30 @@ onShow(() => {
flex: none; flex: none;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 50%; border-radius: 16px;
color: #ffffff; color: #ffffff;
font-size: 24px; font-size: 24px;
font-weight: 900; font-weight: 900;
} }
.map-symbol.ask { .map-symbol.ask {
background: #e70014; background: rgba(255, 255, 255, 0.2);
box-shadow: 0 6px 12px rgba(231, 0, 20, 0.2); box-shadow: none;
} }
.map-symbol.practice { .map-symbol.practice {
background: #1f9a4a; background: rgba(255, 255, 255, 0.2);
box-shadow: 0 6px 12px rgba(31, 154, 74, 0.2); box-shadow: none;
} }
.map-symbol.learn { .map-symbol.learn {
background: #e8900c; background: rgba(255, 255, 255, 0.2);
box-shadow: 0 6px 12px rgba(232, 144, 12, 0.2); box-shadow: none;
} }
.map-symbol.report { .map-symbol.report {
background: #4b5563; background: rgba(255, 255, 255, 0.2);
box-shadow: 0 6px 12px rgba(75, 85, 99, 0.18); box-shadow: none;
} }
.map-copy { .map-copy {
@@ -930,21 +975,21 @@ onShow(() => {
} }
.map-title { .map-title {
color: #1a1a1a; color: #ffffff;
font-size: 18px; font-size: 18px;
font-weight: 800; font-weight: 800;
line-height: 1.2; line-height: 1.2;
} }
.map-desc { .map-desc {
color: #9a9da3; color: rgba(255, 255, 255, 0.82);
font-size: 13px; font-size: 13px;
line-height: 1.35; line-height: 1.35;
white-space: pre-line; white-space: pre-line;
} }
.map-arrow { .map-arrow {
color: #c5c7cb; color: #ffffff;
font-size: 18px; font-size: 18px;
flex: none; flex: none;
} }
+1 -1
View File
@@ -46,7 +46,7 @@ test('manifest 明确声明为 uni-app Vue3 CLI 工程', async () => {
test('员工端 tabBar 继续保留四个固定入口', async () => { test('员工端 tabBar 继续保留四个固定入口', async () => {
const source = await pageSource('../src/pages.json'); const source = await pageSource('../src/pages.json');
assert.match(source, /"selectedColor"\s*:\s*"#e60012"/); assert.match(source, /"selectedColor"\s*:\s*"#2f6bff"/);
assert.match(source, /pages\/user\/today\/index/); assert.match(source, /pages\/user\/today\/index/);
assert.match(source, /pages\/user\/practice\/index/); assert.match(source, /pages\/user\/practice\/index/);
assert.match(source, /pages\/user\/sop\/index/); assert.match(source, /pages\/user\/sop\/index/);