feat(mobile): align employee practice screens for release

This commit is contained in:
2026-07-15 11:23:08 +08:00
parent 3541aab3fe
commit eacf1a0aea
16 changed files with 307 additions and 191 deletions
+102 -100
View File
@@ -18,6 +18,7 @@
<text class="hero-role">{{ positionProfile.value }}</text>
<text class="hero-title">{{ positionProfile.heroTitle }}</text>
<text class="hero-sub">有问题,随时问老师傅</text>
<text class="hero-tip">{{ mentorBubbleText }}</text>
</view>
<view class="mentor-stage">
<view class="mentor-bubble">
@@ -95,7 +96,7 @@
<view class="schedule-list">
<view class="schedule-row" v-if="primaryScheduleTitle">
<view class="schedule-icon-wrap">
<uni-icons class="schedule-icon" type="compose" size="26" color="#2f6bff" />
<uni-icons class="schedule-icon" type="compose" size="26" color="#e60012" />
</view>
<view class="schedule-copy">
<text v-if="primaryAssignmentSourceLabel" class="schedule-source" :class="primaryAssignmentSourceClass">
@@ -190,8 +191,7 @@ const pendingAssignmentKey = 'aihr_pending_assignment_id';
const chipIcons = ['chatbubble', 'help', 'wallet'];
const chipIcon = (index: number) => chipIcons[index] || 'chatbubble';
const chipColors = ['#2f6bff', '#ff9b3d', '#34b368'];
const chipColor = (index: number) => chipColors[index] || '#2f6bff';
const chipColor = (_index: number) => '#e60012';
const mapTiles = computed(() => [
{
@@ -390,18 +390,15 @@ onShow(() => {
<style scoped>
.today-page {
min-height: 100vh;
padding: 0 24px 112px;
--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%);
padding: 0 16px 104px;
background: #f7f7f7;
}
.brand-bar {
display: flex;
align-items: center;
justify-content: space-between;
padding: calc(env(safe-area-inset-top) + 20px) 2px 10px;
padding: calc(env(safe-area-inset-top) + 12px) 2px 8px;
}
.brand-left {
@@ -411,8 +408,8 @@ onShow(() => {
}
.brand-logo {
width: 34px;
height: 34px;
width: 24px;
height: 24px;
}
.brand-name {
@@ -458,11 +455,13 @@ onShow(() => {
.mentor-hero {
position: relative;
display: flex;
min-height: 232px;
min-height: 196px;
align-items: flex-start;
justify-content: space-between;
margin-top: 2px;
padding: 6px 0 0;
padding: 0;
border-radius: 20px;
background: #ffffff;
overflow: hidden;
}
@@ -470,50 +469,58 @@ onShow(() => {
position: relative;
z-index: 2;
display: flex;
max-width: 45%;
width: 52%;
max-width: 52%;
flex-direction: column;
padding-top: 11px;
padding: 22px 0 0 20px;
}
.hero-role,
.hero-title {
color: #111111;
font-size: 42px;
font-weight: 900;
line-height: 1.12;
font-size: 30px;
font-weight: 500;
line-height: 1.5;
letter-spacing: 0;
}
.hero-sub {
margin-top: 18px;
margin-top: 2px;
color: #8a8d93;
font-size: 17px;
font-size: 14px;
white-space: nowrap;
line-height: 1.4;
}
.hero-tip {
margin-top: 7px;
color: var(--employee-primary);
font-size: 13px;
line-height: 1.4;
white-space: nowrap;
}
.mentor-stage {
position: relative;
z-index: 1;
width: 240px;
height: 227px;
width: 178px;
height: 196px;
flex: none;
}
.mentor-image {
position: absolute;
right: -20px;
bottom: 0;
width: 240px;
height: 240px;
transform: translateY(50px);
right: 4px;
bottom: 4px;
width: 140px;
height: 140px;
filter: drop-shadow(0 10px 16px rgba(20, 24, 32, 0.12));
}
.mentor-bubble {
position: absolute;
top: 38px;
right: 130px;
top: 10px;
right: 84px;
z-index: 3;
width: 112px;
padding: 10px 12px;
@@ -544,8 +551,8 @@ onShow(() => {
.ask-card {
position: relative;
z-index: 4;
margin-top: 0;
padding: 16px 14px 25px;
margin-top: 10px;
padding: 12px 14px 10px;
border: 0;
border-radius: 20px;
background: #ffffff;
@@ -557,7 +564,6 @@ onShow(() => {
align-items: center;
min-height: 82px;
gap: 10px;
transform: translateY(7px);
}
.voice-primary,
@@ -579,46 +585,37 @@ onShow(() => {
}
.voice-primary {
flex: 1.7;
min-height: 74px;
gap: 14px;
padding: 0 12px;
border-radius: 16px;
background: #2f6bff;
box-shadow: 0 10px 20px rgba(47, 107, 255, 0.22);
flex: 1.45;
min-height: 70px;
gap: 10px;
padding: 0;
}
.voice-secondary {
flex: 1;
gap: 10px;
min-height: 74px;
padding: 0 8px;
border: 1px solid #e4eaf4;
border-radius: 16px;
background: #ffffff;
min-height: 70px;
padding: 0;
}
.voice-divider {
width: 1px;
height: 42px;
flex: none;
background: #ececee;
display: none;
}
.voice-emblem {
display: flex;
width: 52px;
height: 52px;
width: 64px;
height: 64px;
flex: none;
align-items: center;
justify-content: center;
border-radius: 50%;
background: #ffffff;
background: var(--employee-primary);
box-shadow: none;
}
.voice-mark {
color: #2f6bff;
color: #ffffff;
font-size: 24px;
font-weight: 900;
line-height: 1;
@@ -640,7 +637,7 @@ onShow(() => {
}
.voice-primary .voice-title {
color: #ffffff;
color: #1a1a1a;
}
.secondary-title {
@@ -656,7 +653,7 @@ onShow(() => {
}
.voice-primary .voice-desc {
color: rgba(255, 255, 255, 0.78);
color: #9a9da3;
}
.secondary-copy {
@@ -671,12 +668,12 @@ onShow(() => {
.keyboard-mark {
display: flex;
width: 40px;
height: 40px;
width: 64px;
height: 64px;
flex: none;
align-items: center;
justify-content: center;
border-radius: 50%;
border-radius: 16px;
background: #f3f4f6;
}
@@ -686,8 +683,8 @@ onShow(() => {
}
.mentor-chips {
margin-top: 14px;
padding-top: 12px;
margin-top: 4px;
padding-top: 8px;
border-top: 1px solid #f0f1f3;
}
@@ -709,17 +706,17 @@ onShow(() => {
border: 1px solid #ececee;
border-radius: 12px;
background: #ffffff;
color: #2f6bff;
color: var(--employee-primary);
font-size: 13px;
font-weight: 700;
}
.chip-1 {
color: #ff9b3d;
color: var(--employee-primary);
}
.chip-2 {
color: #34b368;
color: var(--employee-primary);
}
.chip-icon {
@@ -741,8 +738,8 @@ onShow(() => {
}
.section-card {
margin-top: 12px;
padding: 22px 18px;
margin-top: 10px;
padding: 16px;
border: 0;
border-radius: 22px;
background: #ffffff;
@@ -789,7 +786,7 @@ onShow(() => {
color: #ffffff;
font-size: 15px;
font-weight: 800;
box-shadow: 0 8px 16px rgba(47, 107, 255, 0.2);
box-shadow: 0 8px 16px rgba(230, 0, 18, 0.18);
}
.section-head {
@@ -804,7 +801,7 @@ onShow(() => {
align-items: center;
gap: 8px;
color: #1a1a1a;
font-size: 22px;
font-size: 20px;
font-weight: 800;
}
@@ -812,7 +809,7 @@ onShow(() => {
width: 4px;
height: 22px;
border-radius: 2px;
background: #2f6bff;
background: var(--employee-primary);
}
.section-link {
@@ -839,21 +836,21 @@ onShow(() => {
.schedule-row {
display: flex;
align-items: center;
gap: 16px;
padding: 14px 12px;
border-radius: 18px;
background: #f8fbff;
gap: 12px;
padding: 12px 10px;
border-radius: 16px;
background: #fafafa;
}
.schedule-icon-wrap {
display: flex;
width: 60px;
height: 60px;
width: 52px;
height: 52px;
flex: none;
align-items: center;
justify-content: center;
border-radius: 50%;
background: #eaf1ff;
background: var(--employee-primary-soft);
}
.review-icon {
@@ -874,7 +871,7 @@ onShow(() => {
.schedule-title {
color: #1a1a1a;
font-size: 19px;
font-size: 17px;
font-weight: 800;
line-height: 1.25;
}
@@ -933,8 +930,8 @@ onShow(() => {
align-items: center;
justify-content: center;
border-radius: 12px;
background: #2f6bff;
box-shadow: 0 8px 16px rgba(47, 107, 255, 0.22);
background: var(--employee-primary);
box-shadow: 0 8px 16px rgba(230, 0, 18, 0.18);
color: #ffffff;
font-size: 18px;
font-weight: 800;
@@ -953,12 +950,12 @@ onShow(() => {
.map-tile {
display: flex;
min-height: 108px;
min-height: 70px;
align-items: center;
gap: 10px;
padding: 16px 14px;
border: 0;
border-radius: 16px;
padding: 10px 8px;
border: 1px solid #e2e4e8;
border-radius: 14px;
background: #ffffff;
text-align: left;
overflow: hidden;
@@ -968,46 +965,51 @@ onShow(() => {
.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);
color: #25282d;
background: #ffffff;
box-shadow: none;
}
.map-tile.ask { background: #2f6bff; }
.map-tile.practice { background: #2ab673; }
.map-tile.learn { background: #ff961f; }
.map-tile.report { background: #ff6357; }
.map-tile.ask,
.map-symbol.ask { --map-accent: #e60012; }
.map-tile.practice,
.map-symbol.practice { --map-accent: #16a052; }
.map-tile.learn,
.map-symbol.learn { --map-accent: #f28b00; }
.map-tile.report,
.map-symbol.report { --map-accent: #526075; }
.map-symbol {
display: flex;
width: 56px;
height: 56px;
width: 44px;
height: 44px;
flex: none;
align-items: center;
justify-content: center;
border-radius: 16px;
border-radius: 50%;
background: var(--map-accent);
color: #ffffff;
font-size: 24px;
font-weight: 900;
}
.map-symbol.ask {
background: rgba(255, 255, 255, 0.2);
background: var(--map-accent);
box-shadow: none;
}
.map-symbol.practice {
background: rgba(255, 255, 255, 0.2);
background: var(--map-accent);
box-shadow: none;
}
.map-symbol.learn {
background: rgba(255, 255, 255, 0.2);
background: var(--map-accent);
box-shadow: none;
}
.map-symbol.report {
background: rgba(255, 255, 255, 0.2);
background: var(--map-accent);
box-shadow: none;
}
@@ -1020,21 +1022,21 @@ onShow(() => {
}
.map-title {
color: #ffffff;
font-size: 18px;
color: #25282d;
font-size: 16px;
font-weight: 800;
line-height: 1.2;
}
.map-desc {
color: rgba(255, 255, 255, 0.82);
font-size: 13px;
color: #8a8d93;
font-size: 11px;
line-height: 1.35;
white-space: pre-line;
}
.map-arrow {
color: #ffffff;
color: #9da1a8;
font-size: 18px;
flex: none;
}