diff --git a/src/pages/view/routine/jc/components/dmList.vue b/src/pages/view/routine/jc/components/dmList.vue
index b1cd31f..488bac3 100644
--- a/src/pages/view/routine/jc/components/dmList.vue
+++ b/src/pages/view/routine/jc/components/dmList.vue
@@ -1,259 +1,303 @@
-
-
-
-
- 班级:
-
-
-
-
-
-
-
- 时间范围:
-
- {{ getTimeRangeText() }}
-
-
-
-
-
-
-
-
-
-
+
-
-
+
-
-
-
+
-
- {{ data.njmc }} {{ data.bjmc }}
+
+ 年级:
+ {{ data.njmc }}
-
-
-
- 学生
- {{ data.xsCount }}人
-
-
- 陪餐教师
- {{ data.jsCount }}人
-
+
+ 班级:
+ {{ data.bjmc }}
+
+
+ 就餐日期:
+ {{ formatDate(data.jcTime) }}
+
+
+ 就餐时间:
+ {{ formatTime(data.jcTime) }}
-
-
-
- 📋
- 暂无点名记录
- 请选择班级和时间范围进行搜索
-
-
-
-
- 🔍
- 请选择班级和时间范围开始搜索
-
diff --git a/src/pages/view/routine/jc/detail.vue b/src/pages/view/routine/jc/detail.vue
index 85f808b..74d117d 100644
--- a/src/pages/view/routine/jc/detail.vue
+++ b/src/pages/view/routine/jc/detail.vue
@@ -91,6 +91,14 @@
{{ getStatusCount('C') }}
缺勤
+
+ {{ getStatusCount('D') }}
+ 未缴费
+
+
+ {{ getStatusCount('E') }}
+ 未报名
+
@@ -100,6 +108,7 @@
v-for="student in dmDetail.xsList"
:key="student.id"
class="student-item bg-white r-md p-12"
+ :class="getStudentItemClass(student.jcZt)"
>
@@ -112,6 +121,9 @@
{{ student.xsXm }}
+
+ {{ student.jcZt === 'D' ? '未缴费' : '未报名' }}
+
{
}
}
+const getStudentItemClass = (status: string) => {
+ switch (status) {
+ case 'D':
+ return 'status-unpaid-item'
+ case 'E':
+ return 'status-unregistered-item'
+ default:
+ return ''
+ }
+}
+
const getTeacherStatusText = (status: string) => {
switch (status) {
case 'A':
@@ -328,7 +351,7 @@ onMounted(() => {
.info-label {
font-size: 28rpx;
color: #666;
- width: 120rpx;
+ width: 160rpx;
flex-shrink: 0;
}
@@ -339,21 +362,20 @@ onMounted(() => {
}
.stats-container {
- display: flex;
- justify-content: space-around;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 20rpx;
margin-bottom: 30rpx;
padding: 20rpx;
background-color: #f8f9fa;
border-radius: 12rpx;
- flex-wrap: wrap;
- gap: 60rpx;
}
.stat-item {
display: flex;
flex-direction: column;
align-items: center;
- min-width: 120rpx;
+ text-align: center;
}
.stat-number {
@@ -453,6 +475,27 @@ onMounted(() => {
color: #eb2f96;
}
+.status-unpaid-item {
+ border-left: 8rpx solid #ff4d4f;
+ background-color: #fff0f0;
+}
+
+.status-unregistered-item {
+ border-left: 8rpx solid #eb2f96;
+ background-color: #fff0f6;
+}
+
+.status-indicator {
+ font-size: 20rpx;
+ margin-left: 16rpx;
+ color: #ff4d4f;
+ background-color: #fff0f0;
+ padding: 4rpx 12rpx;
+ border-radius: 8rpx;
+ border: 1rpx solid #ff4d4f;
+ font-weight: bold;
+}
+
.empty-tip {
text-align: center;
color: #999;
diff --git a/src/pages/view/routine/jc/index.vue b/src/pages/view/routine/jc/index.vue
index 434c47e..bc14266 100644
--- a/src/pages/view/routine/jc/index.vue
+++ b/src/pages/view/routine/jc/index.vue
@@ -53,6 +53,8 @@ const switchTab = (tab: string) => {
.dm-container {
min-height: 100vh;
background-color: #f5f5f5;
+ display: flex;
+ flex-direction: column;
}
.tab-container {