diff --git a/mobile-uni/src/pages/user/learning/index.vue b/mobile-uni/src/pages/user/learning/index.vue
index 2e18409c..be35aa27 100644
--- a/mobile-uni/src/pages/user/learning/index.vue
+++ b/mobile-uni/src/pages/user/learning/index.vue
@@ -1,17 +1,17 @@
-
-
@@ -346,6 +471,32 @@ const examLoading = ref(false);
const requests = createPageRequestScope();
let visibleAccountKey = '';
+const activeTab = ref<'tasks' | 'sop' | 'exam'>('tasks');
+
+const assignmentAccentClass = (source?: string) => {
+ if (source === 'daily') return 'accent-daily';
+ if (source === 'retry') return 'accent-retry';
+ return 'accent-practice';
+};
+
+const assignmentTagClass = (source?: string) => {
+ if (source === 'daily') return 'tag-daily';
+ if (source === 'retry') return 'tag-retry';
+ return 'tag-practice';
+};
+
+const assignmentTagIcon = (source?: string) => {
+ if (source === 'daily') return 'compose';
+ if (source === 'retry') return 'refresh';
+ return 'flag-filled';
+};
+
+const assignmentTagColor = (source?: string) => {
+ if (source === 'daily') return '#2d80ff';
+ if (source === 'retry') return '#d97706';
+ return '#e60012';
+};
+
const defaultTopic = computed(() => `${positionProfile.value.value} 岗前 SOP`);
const topics = computed(() => buildLearningTopics(
assignments.value,
@@ -731,487 +882,507 @@ onUnload(invalidateRequests);