feat(teacher): 优化教师打卡和作业表单页面
- 在打卡页面添加顶部间距并区分打卡和作业按钮功能 - 重构表单页面,根据类型动态显示标题并简化代码结构 - 移除不必要的类型选择字段,默认根据路由参数设置类型
Showing
2 changed files
with
279 additions
and
431 deletions
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2025-05-29 15:34:17 | 2 | * @Date: 2025-05-29 15:34:17 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2025-06-20 10:40:58 | 4 | + * @LastEditTime: 2025-06-20 10:56:22 |
| 5 | * @FilePath: /mlaj/src/views/teacher/checkinPage.vue | 5 | * @FilePath: /mlaj/src/views/teacher/checkinPage.vue |
| 6 | * @Description: 文件描述 | 6 | * @Description: 文件描述 |
| 7 | --> | 7 | --> |
| ... | @@ -21,13 +21,13 @@ | ... | @@ -21,13 +21,13 @@ |
| 21 | @select="onSelectDay" | 21 | @select="onSelectDay" |
| 22 | @click-subtitle="onClickSubtitle"> | 22 | @click-subtitle="onClickSubtitle"> |
| 23 | </van-calendar> | 23 | </van-calendar> |
| 24 | - <div style="padding: 0 1rem;"> | 24 | + <div style="padding: 0 1rem; margin-top: 1rem;"> |
| 25 | <van-row gutter="15"> | 25 | <van-row gutter="15"> |
| 26 | <van-col span="12"> | 26 | <van-col span="12"> |
| 27 | - <van-button type="primary" block icon="photo" @click="handleAdd">安排打卡</van-button> | 27 | + <van-button type="primary" block icon="photo" @click="handleAdd('checkin')">安排打卡</van-button> |
| 28 | </van-col> | 28 | </van-col> |
| 29 | <van-col span="12"> | 29 | <van-col span="12"> |
| 30 | - <van-button type="primary" block icon="video">设置作业</van-button> | 30 | + <van-button type="primary" block icon="video" @click="handleAdd('homework')">设置作业</van-button> |
| 31 | </van-col> | 31 | </van-col> |
| 32 | </van-row> | 32 | </van-row> |
| 33 | </div> | 33 | </div> |
| ... | @@ -817,12 +817,12 @@ const formatData = (data) => { | ... | @@ -817,12 +817,12 @@ const formatData = (data) => { |
| 817 | return formattedData; | 817 | return formattedData; |
| 818 | } | 818 | } |
| 819 | 819 | ||
| 820 | -const handleAdd = () => { | 820 | +const handleAdd = (type) => { |
| 821 | router.push({ | 821 | router.push({ |
| 822 | path: '/teacher/form', | 822 | path: '/teacher/form', |
| 823 | query: { | 823 | query: { |
| 824 | post_id: route.query.id, | 824 | post_id: route.query.id, |
| 825 | - type: 'image', | 825 | + type: type, |
| 826 | status: 'add', | 826 | status: 'add', |
| 827 | } | 827 | } |
| 828 | }) | 828 | }) | ... | ... |
| ... | @@ -2,31 +2,24 @@ | ... | @@ -2,31 +2,24 @@ |
| 2 | * @Author: hookehuyr hookehuyr@gmail.com | 2 | * @Author: hookehuyr hookehuyr@gmail.com |
| 3 | * @Date: 2025-01-20 10:00:00 | 3 | * @Date: 2025-01-20 10:00:00 |
| 4 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 4 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 5 | - * @LastEditTime: 2025-06-18 11:43:03 | 5 | + * @LastEditTime: 2025-06-20 10:58:03 |
| 6 | * @FilePath: /mlaj/src/views/teacher/formPage.vue | 6 | * @FilePath: /mlaj/src/views/teacher/formPage.vue |
| 7 | * @Description: 教师作业新增表单页面 | 7 | * @Description: 教师作业新增表单页面 |
| 8 | --> | 8 | --> |
| 9 | <template> | 9 | <template> |
| 10 | - <AppLayout title="新增作业"> | 10 | + <AppLayout> |
| 11 | - <div class="bg-gradient-to-br from-green-50 via-green-100/30 to-blue-50/30 min-h-screen"> | 11 | + <div class="bg-gradient-to-br from-green-50 via-green-100/30 to-blue-50/30 min-h-screen"> |
| 12 | - <div class="px-4 py-6"> | 12 | + <div class="px-4 py-6"> |
| 13 | - <FrostedGlass class="rounded-xl overflow-hidden"> | 13 | + <FrostedGlass class="rounded-xl overflow-hidden"> |
| 14 | - <div class="py-4"> | 14 | + <div class="py-4"> |
| 15 | - <van-form @submit="handleSubmit"> | 15 | + <van-form @submit="handleSubmit"> |
| 16 | - <van-cell-group inset> | 16 | + <van-cell-group inset> |
| 17 | - <!-- 作业名称 --> | 17 | + <!-- 作业名称 --> |
| 18 | - <van-field | 18 | + <van-field v-model="formData.homework_name" name="homework_name" label="作业名称" placeholder="请输入作业名称" |
| 19 | - v-model="formData.homework_name" | 19 | + required :border="false" :rules="[{ required: true, message: '请输入作业名称' }]" /> |
| 20 | - name="homework_name" | 20 | + |
| 21 | - label="作业名称" | 21 | + <!-- 类型 --> |
| 22 | - placeholder="请输入作业名称" | 22 | + <!-- <van-field |
| 23 | - required | ||
| 24 | - :border="false" | ||
| 25 | - :rules="[{ required: true, message: '请输入作业名称' }]" | ||
| 26 | - /> | ||
| 27 | - | ||
| 28 | - <!-- 类型 --> | ||
| 29 | - <van-field | ||
| 30 | v-model="formData.type" | 23 | v-model="formData.type" |
| 31 | is-link | 24 | is-link |
| 32 | readonly | 25 | readonly |
| ... | @@ -35,281 +28,134 @@ | ... | @@ -35,281 +28,134 @@ |
| 35 | placeholder="请选择类型" | 28 | placeholder="请选择类型" |
| 36 | :border="false" | 29 | :border="false" |
| 37 | @click="showTypePicker = true" | 30 | @click="showTypePicker = true" |
| 38 | - /> | 31 | + /> --> |
| 39 | - | 32 | + |
| 40 | - <!-- 频次 --> | 33 | + <!-- 频次 --> |
| 41 | - <van-field | 34 | + <van-field v-model="formData.frequency" is-link readonly name="frequency" label="频次" placeholder="请选择频次" |
| 42 | - v-model="formData.frequency" | 35 | + :border="false" @click="showFrequencyPicker = true" /> |
| 43 | - is-link | 36 | + |
| 44 | - readonly | 37 | + <!-- 目标总数 --> |
| 45 | - name="frequency" | 38 | + <van-field v-model="formData.target_count" type="number" name="target_count" label="目标总数" |
| 46 | - label="频次" | 39 | + :border="false" placeholder="请输入目标数量" /> |
| 47 | - placeholder="请选择频次" | 40 | + |
| 48 | - :border="false" | 41 | + <!-- 开始时间 --> |
| 49 | - @click="showFrequencyPicker = true" | 42 | + <van-field v-model="startTimeDisplay" is-link readonly name="start_time" label="开始时间" |
| 50 | - /> | 43 | + placeholder="请选择开始时间" :border="false" @click="showStartTimePicker = true" /> |
| 51 | - | 44 | + |
| 52 | - <!-- 目标总数 --> | 45 | + <!-- 结束时间 --> |
| 53 | - <van-field | 46 | + <van-field v-model="endTimeDisplay" is-link readonly name="end_time" label="结束时间" placeholder="请选择结束时间" |
| 54 | - v-model="formData.target_count" | 47 | + :border="false" @click="showEndTimePicker = true" /> |
| 55 | - type="number" | 48 | + |
| 56 | - name="target_count" | 49 | + <!-- 课程 --> |
| 57 | - label="目标总数" | 50 | + <van-field v-model="formData.course" is-link readonly name="course" label="课程" placeholder="请选择课程" |
| 58 | - :border="false" | 51 | + :border="false" @click="showCoursePicker = true" /> |
| 59 | - placeholder="请输入目标数量" | 52 | + |
| 60 | - /> | 53 | + <!-- 活动 --> |
| 61 | - | 54 | + <van-field v-model="formData.activity" is-link readonly name="activity" label="活动" placeholder="请选择活动" |
| 62 | - <!-- 开始时间 --> | 55 | + :border="false" @click="showActivityPicker = true" /> |
| 63 | - <van-field | 56 | + |
| 64 | - v-model="startTimeDisplay" | 57 | + <!-- 年级 --> |
| 65 | - is-link | 58 | + <van-field v-model="formData.grade" is-link readonly name="grade" label="年级" placeholder="请选择年级" |
| 66 | - readonly | 59 | + :border="false" @click="showGradePicker = true" /> |
| 67 | - name="start_time" | 60 | + |
| 68 | - label="开始时间" | 61 | + <!-- 班级 --> |
| 69 | - placeholder="请选择开始时间" | 62 | + <van-field v-model="formData.class_name" is-link readonly name="class_name" label="班级" |
| 70 | - :border="false" | 63 | + placeholder="请选择班级" :border="false" @click="showClassPicker = true" /> |
| 71 | - @click="showStartTimePicker = true" | 64 | + |
| 72 | - /> | 65 | + <!-- 小组 --> |
| 73 | - | 66 | + <van-field v-model="formData.group_name" is-link readonly name="group_name" label="小组" |
| 74 | - <!-- 结束时间 --> | 67 | + placeholder="请选择小组" :border="false" @click="showGroupPicker = true" /> |
| 75 | - <van-field | 68 | + </van-cell-group> |
| 76 | - v-model="endTimeDisplay" | 69 | + |
| 77 | - is-link | 70 | + <!-- 提交按钮 --> |
| 78 | - readonly | 71 | + <div style="margin: 16px;"> |
| 79 | - name="end_time" | 72 | + <van-button native-type="submit" type="primary" block round :loading="loading"> |
| 80 | - label="结束时间" | 73 | + 确认并保存 |
| 81 | - placeholder="请选择结束时间" | 74 | + </van-button> |
| 82 | - :border="false" | 75 | + </div> |
| 83 | - @click="showEndTimePicker = true" | 76 | + </van-form> |
| 84 | - /> | 77 | + </div> |
| 85 | - | 78 | + </FrostedGlass> |
| 86 | - <!-- 课程 --> | 79 | + </div> |
| 87 | - <van-field | 80 | + </div> |
| 88 | - v-model="formData.course" | 81 | + |
| 89 | - is-link | 82 | + <!-- 类型选择器 --> |
| 90 | - readonly | 83 | + <van-popup v-model:show="showTypePicker" position="bottom"> |
| 91 | - name="course" | 84 | + <van-picker :columns="typeOptions" @confirm="onTypeConfirm" @cancel="showTypePicker = false" /> |
| 92 | - label="课程" | 85 | + </van-popup> |
| 93 | - placeholder="请选择课程" | 86 | + |
| 94 | - :border="false" | 87 | + <!-- 频次选择器 --> |
| 95 | - @click="showCoursePicker = true" | 88 | + <van-popup v-model:show="showFrequencyPicker" position="bottom"> |
| 96 | - /> | 89 | + <van-picker :columns="frequencyOptions" @confirm="onFrequencyConfirm" @cancel="showFrequencyPicker = false" /> |
| 97 | - | 90 | + </van-popup> |
| 98 | - <!-- 活动 --> | 91 | + |
| 99 | - <van-field | 92 | + <!-- 开始时间选择器 --> |
| 100 | - v-model="formData.activity" | 93 | + <van-popup v-model:show="showStartTimePicker" position="bottom"> |
| 101 | - is-link | 94 | + <van-date-picker v-model="startDate" title="选择开始时间" :min-date="minDate" :max-date="maxDate" |
| 102 | - readonly | 95 | + @confirm="onStartTimeConfirm" @cancel="showStartTimePicker = false" /> |
| 103 | - name="activity" | 96 | + </van-popup> |
| 104 | - label="活动" | 97 | + |
| 105 | - placeholder="请选择活动" | 98 | + <!-- 结束时间选择器 --> |
| 106 | - :border="false" | 99 | + <van-popup v-model:show="showEndTimePicker" position="bottom"> |
| 107 | - @click="showActivityPicker = true" | 100 | + <van-date-picker v-model="endDate" title="选择结束时间" :min-date="minDate" :max-date="maxDate" |
| 108 | - /> | 101 | + @confirm="onEndTimeConfirm" @cancel="showEndTimePicker = false" /> |
| 109 | - | 102 | + </van-popup> |
| 110 | - <!-- 年级 --> | 103 | + |
| 111 | - <van-field | 104 | + <!-- 课程选择器 --> |
| 112 | - v-model="formData.grade" | 105 | + <van-popup v-model:show="showCoursePicker" position="bottom"> |
| 113 | - is-link | 106 | + <div class="p-4"> |
| 114 | - readonly | 107 | + <van-search v-model="courseSearchValue" placeholder="搜索课程" @search="searchCourse" /> |
| 115 | - name="grade" | 108 | + <van-list> |
| 116 | - label="年级" | 109 | + <van-cell v-for="course in filteredCourses" :key="course.id" :title="course.name" is-link :border="false" |
| 117 | - placeholder="请选择年级" | 110 | + @click="onCourseSelect(course)" /> |
| 118 | - :border="false" | 111 | + </van-list> |
| 119 | - @click="showGradePicker = true" | 112 | + </div> |
| 120 | - /> | 113 | + </van-popup> |
| 121 | - | 114 | + |
| 122 | - <!-- 班级 --> | 115 | + <!-- 活动选择器 --> |
| 123 | - <van-field | 116 | + <van-popup v-model:show="showActivityPicker" position="bottom"> |
| 124 | - v-model="formData.class_name" | 117 | + <div class="p-4"> |
| 125 | - is-link | 118 | + <van-search v-model="activitySearchValue" placeholder="搜索活动" @search="searchActivity" /> |
| 126 | - readonly | 119 | + <van-list> |
| 127 | - name="class_name" | 120 | + <van-cell v-for="activity in filteredActivities" :key="activity.id" :title="activity.name" is-link |
| 128 | - label="班级" | 121 | + :border="false" @click="onActivitySelect(activity)" /> |
| 129 | - placeholder="请选择班级" | 122 | + </van-list> |
| 130 | - :border="false" | 123 | + </div> |
| 131 | - @click="showClassPicker = true" | 124 | + </van-popup> |
| 132 | - /> | 125 | + |
| 133 | - | 126 | + <!-- 年级选择器 --> |
| 134 | - <!-- 小组 --> | 127 | + <van-popup v-model:show="showGradePicker" position="bottom"> |
| 135 | - <van-field | 128 | + <div class="p-4"> |
| 136 | - v-model="formData.group_name" | 129 | + <van-search v-model="gradeSearchValue" placeholder="搜索年级" @search="searchGrade" /> |
| 137 | - is-link | 130 | + <van-list> |
| 138 | - readonly | 131 | + <van-cell v-for="grade in filteredGrades" :key="grade.id" :title="grade.name" is-link :border="false" |
| 139 | - name="group_name" | 132 | + @click="onGradeSelect(grade)" /> |
| 140 | - label="小组" | 133 | + </van-list> |
| 141 | - placeholder="请选择小组" | 134 | + </div> |
| 142 | - :border="false" | 135 | + </van-popup> |
| 143 | - @click="showGroupPicker = true" | 136 | + |
| 144 | - /> | 137 | + <!-- 班级选择器 --> |
| 145 | - </van-cell-group> | 138 | + <van-popup v-model:show="showClassPicker" position="bottom"> |
| 146 | - | 139 | + <div class="p-4"> |
| 147 | - <!-- 提交按钮 --> | 140 | + <van-search v-model="classSearchValue" placeholder="搜索班级" @search="searchClass" /> |
| 148 | - <div style="margin: 16px;"> | 141 | + <van-list> |
| 149 | - <van-button | 142 | + <van-cell v-for="classItem in filteredClasses" :key="classItem.id" :title="classItem.name" is-link |
| 150 | - native-type="submit" | 143 | + :border="false" @click="onClassSelect(classItem)" /> |
| 151 | - type="primary" | 144 | + </van-list> |
| 152 | - block | 145 | + </div> |
| 153 | - round | 146 | + </van-popup> |
| 154 | - :loading="loading" | 147 | + |
| 155 | - class="bg-green-500 hover:bg-green-600 transition-colors" | 148 | + <!-- 小组选择器 --> |
| 156 | - > | 149 | + <van-popup v-model:show="showGroupPicker" position="bottom"> |
| 157 | - 确认并保存 | 150 | + <div class="p-4"> |
| 158 | - </van-button> | 151 | + <van-search v-model="groupSearchValue" placeholder="搜索小组" @search="searchGroup" /> |
| 159 | - </div> | 152 | + <van-list> |
| 160 | - </van-form> | 153 | + <van-cell v-for="group in filteredGroups" :key="group.id" :title="group.name" is-link :border="false" |
| 161 | - </div> | 154 | + @click="onGroupSelect(group)" /> |
| 162 | - </FrostedGlass> | 155 | + </van-list> |
| 163 | - </div> | 156 | + </div> |
| 164 | - </div> | 157 | + </van-popup> |
| 165 | - | 158 | + </AppLayout> |
| 166 | - <!-- 类型选择器 --> | ||
| 167 | - <van-popup v-model:show="showTypePicker" position="bottom"> | ||
| 168 | - <van-picker | ||
| 169 | - :columns="typeOptions" | ||
| 170 | - @confirm="onTypeConfirm" | ||
| 171 | - @cancel="showTypePicker = false" | ||
| 172 | - /> | ||
| 173 | - </van-popup> | ||
| 174 | - | ||
| 175 | - <!-- 频次选择器 --> | ||
| 176 | - <van-popup v-model:show="showFrequencyPicker" position="bottom"> | ||
| 177 | - <van-picker | ||
| 178 | - :columns="frequencyOptions" | ||
| 179 | - @confirm="onFrequencyConfirm" | ||
| 180 | - @cancel="showFrequencyPicker = false" | ||
| 181 | - /> | ||
| 182 | - </van-popup> | ||
| 183 | - | ||
| 184 | - <!-- 开始时间选择器 --> | ||
| 185 | - <van-popup v-model:show="showStartTimePicker" position="bottom"> | ||
| 186 | - <van-date-picker | ||
| 187 | - v-model="startDate" | ||
| 188 | - title="选择开始时间" | ||
| 189 | - :min-date="minDate" | ||
| 190 | - :max-date="maxDate" | ||
| 191 | - @confirm="onStartTimeConfirm" | ||
| 192 | - @cancel="showStartTimePicker = false" | ||
| 193 | - /> | ||
| 194 | - </van-popup> | ||
| 195 | - | ||
| 196 | - <!-- 结束时间选择器 --> | ||
| 197 | - <van-popup v-model:show="showEndTimePicker" position="bottom"> | ||
| 198 | - <van-date-picker | ||
| 199 | - v-model="endDate" | ||
| 200 | - title="选择结束时间" | ||
| 201 | - :min-date="minDate" | ||
| 202 | - :max-date="maxDate" | ||
| 203 | - @confirm="onEndTimeConfirm" | ||
| 204 | - @cancel="showEndTimePicker = false" | ||
| 205 | - /> | ||
| 206 | - </van-popup> | ||
| 207 | - | ||
| 208 | - <!-- 课程选择器 --> | ||
| 209 | - <van-popup v-model:show="showCoursePicker" position="bottom"> | ||
| 210 | - <div class="p-4"> | ||
| 211 | - <van-search | ||
| 212 | - v-model="courseSearchValue" | ||
| 213 | - placeholder="搜索课程" | ||
| 214 | - @search="searchCourse" | ||
| 215 | - /> | ||
| 216 | - <van-list> | ||
| 217 | - <van-cell | ||
| 218 | - v-for="course in filteredCourses" | ||
| 219 | - :key="course.id" | ||
| 220 | - :title="course.name" | ||
| 221 | - is-link | ||
| 222 | - :border="false" | ||
| 223 | - @click="onCourseSelect(course)" | ||
| 224 | - /> | ||
| 225 | - </van-list> | ||
| 226 | - </div> | ||
| 227 | - </van-popup> | ||
| 228 | - | ||
| 229 | - <!-- 活动选择器 --> | ||
| 230 | - <van-popup v-model:show="showActivityPicker" position="bottom"> | ||
| 231 | - <div class="p-4"> | ||
| 232 | - <van-search | ||
| 233 | - v-model="activitySearchValue" | ||
| 234 | - placeholder="搜索活动" | ||
| 235 | - @search="searchActivity" | ||
| 236 | - /> | ||
| 237 | - <van-list> | ||
| 238 | - <van-cell | ||
| 239 | - v-for="activity in filteredActivities" | ||
| 240 | - :key="activity.id" | ||
| 241 | - :title="activity.name" | ||
| 242 | - is-link | ||
| 243 | - :border="false" | ||
| 244 | - @click="onActivitySelect(activity)" | ||
| 245 | - /> | ||
| 246 | - </van-list> | ||
| 247 | - </div> | ||
| 248 | - </van-popup> | ||
| 249 | - | ||
| 250 | - <!-- 年级选择器 --> | ||
| 251 | - <van-popup v-model:show="showGradePicker" position="bottom"> | ||
| 252 | - <div class="p-4"> | ||
| 253 | - <van-search | ||
| 254 | - v-model="gradeSearchValue" | ||
| 255 | - placeholder="搜索年级" | ||
| 256 | - @search="searchGrade" | ||
| 257 | - /> | ||
| 258 | - <van-list> | ||
| 259 | - <van-cell | ||
| 260 | - v-for="grade in filteredGrades" | ||
| 261 | - :key="grade.id" | ||
| 262 | - :title="grade.name" | ||
| 263 | - is-link | ||
| 264 | - :border="false" | ||
| 265 | - @click="onGradeSelect(grade)" | ||
| 266 | - /> | ||
| 267 | - </van-list> | ||
| 268 | - </div> | ||
| 269 | - </van-popup> | ||
| 270 | - | ||
| 271 | - <!-- 班级选择器 --> | ||
| 272 | - <van-popup v-model:show="showClassPicker" position="bottom"> | ||
| 273 | - <div class="p-4"> | ||
| 274 | - <van-search | ||
| 275 | - v-model="classSearchValue" | ||
| 276 | - placeholder="搜索班级" | ||
| 277 | - @search="searchClass" | ||
| 278 | - /> | ||
| 279 | - <van-list> | ||
| 280 | - <van-cell | ||
| 281 | - v-for="classItem in filteredClasses" | ||
| 282 | - :key="classItem.id" | ||
| 283 | - :title="classItem.name" | ||
| 284 | - is-link | ||
| 285 | - :border="false" | ||
| 286 | - @click="onClassSelect(classItem)" | ||
| 287 | - /> | ||
| 288 | - </van-list> | ||
| 289 | - </div> | ||
| 290 | - </van-popup> | ||
| 291 | - | ||
| 292 | - <!-- 小组选择器 --> | ||
| 293 | - <van-popup v-model:show="showGroupPicker" position="bottom"> | ||
| 294 | - <div class="p-4"> | ||
| 295 | - <van-search | ||
| 296 | - v-model="groupSearchValue" | ||
| 297 | - placeholder="搜索小组" | ||
| 298 | - @search="searchGroup" | ||
| 299 | - /> | ||
| 300 | - <van-list> | ||
| 301 | - <van-cell | ||
| 302 | - v-for="group in filteredGroups" | ||
| 303 | - :key="group.id" | ||
| 304 | - :title="group.name" | ||
| 305 | - is-link | ||
| 306 | - :border="false" | ||
| 307 | - @click="onGroupSelect(group)" | ||
| 308 | - /> | ||
| 309 | - </van-list> | ||
| 310 | - </div> | ||
| 311 | - </van-popup> | ||
| 312 | - </AppLayout> | ||
| 313 | </template> | 159 | </template> |
| 314 | 160 | ||
| 315 | <script setup> | 161 | <script setup> |
| ... | @@ -322,21 +168,23 @@ import { useTitle } from '@vueuse/core'; | ... | @@ -322,21 +168,23 @@ import { useTitle } from '@vueuse/core'; |
| 322 | 168 | ||
| 323 | const $route = useRoute(); | 169 | const $route = useRoute(); |
| 324 | const $router = useRouter(); | 170 | const $router = useRouter(); |
| 325 | -useTitle($route.meta.title || '新增作业'); | 171 | +useTitle($route.query.type === 'homework' ? '设置作业' : '安排打卡'); |
| 172 | + | ||
| 173 | +const type = ref(''); | ||
| 326 | 174 | ||
| 327 | // 表单数据 | 175 | // 表单数据 |
| 328 | const formData = ref({ | 176 | const formData = ref({ |
| 329 | - homework_name: '', | 177 | + homework_name: '', |
| 330 | - type: '', | 178 | + type: $route.query.type === 'homework' ? '上传附件' : '签到', |
| 331 | - frequency: '', | 179 | + frequency: '', |
| 332 | - target_count: '', | 180 | + target_count: '', |
| 333 | - start_time: new Date(), | 181 | + start_time: new Date(), |
| 334 | - end_time: new Date(), | 182 | + end_time: new Date(), |
| 335 | - course: '', | 183 | + course: '', |
| 336 | - activity: '', | 184 | + activity: '', |
| 337 | - grade: '', | 185 | + grade: '', |
| 338 | - class_name: '', | 186 | + class_name: '', |
| 339 | - group_name: '' | 187 | + group_name: '' |
| 340 | }); | 188 | }); |
| 341 | 189 | ||
| 342 | // 加载状态 | 190 | // 加载状态 |
| ... | @@ -361,17 +209,17 @@ const maxDate = new Date(2030, 11, 31); | ... | @@ -361,17 +209,17 @@ const maxDate = new Date(2030, 11, 31); |
| 361 | 209 | ||
| 362 | // 选项数据 | 210 | // 选项数据 |
| 363 | const typeOptions = ref([ | 211 | const typeOptions = ref([ |
| 364 | - { text: '签到', value: 'checkin' }, | 212 | + { text: '签到', value: 'checkin' }, |
| 365 | - { text: '作业', value: 'homework' }, | 213 | + { text: '作业', value: 'homework' }, |
| 366 | - { text: '考试', value: 'exam' }, | 214 | + { text: '考试', value: 'exam' }, |
| 367 | - { text: '活动', value: 'activity' } | 215 | + { text: '活动', value: 'activity' } |
| 368 | ]); | 216 | ]); |
| 369 | 217 | ||
| 370 | const frequencyOptions = ref([ | 218 | const frequencyOptions = ref([ |
| 371 | - { text: '一次', value: 'once' }, | 219 | + { text: '一次', value: 'once' }, |
| 372 | - { text: '每日', value: 'daily' }, | 220 | + { text: '每日', value: 'daily' }, |
| 373 | - { text: '每周', value: 'weekly' }, | 221 | + { text: '每周', value: 'weekly' }, |
| 374 | - { text: '每月', value: 'monthly' } | 222 | + { text: '每月', value: 'monthly' } |
| 375 | ]); | 223 | ]); |
| 376 | 224 | ||
| 377 | // 搜索值 | 225 | // 搜索值 |
| ... | @@ -383,85 +231,85 @@ const groupSearchValue = ref(''); | ... | @@ -383,85 +231,85 @@ const groupSearchValue = ref(''); |
| 383 | 231 | ||
| 384 | // 数据列表 | 232 | // 数据列表 |
| 385 | const courses = ref([ | 233 | const courses = ref([ |
| 386 | - { id: 1, name: '数学课程' }, | 234 | + { id: 1, name: '数学课程' }, |
| 387 | - { id: 2, name: '语文课程' }, | 235 | + { id: 2, name: '语文课程' }, |
| 388 | - { id: 3, name: '英语课程' }, | 236 | + { id: 3, name: '英语课程' }, |
| 389 | - { id: 4, name: '物理课程' } | 237 | + { id: 4, name: '物理课程' } |
| 390 | ]); | 238 | ]); |
| 391 | 239 | ||
| 392 | const activities = ref([ | 240 | const activities = ref([ |
| 393 | - { id: 1, name: '春游活动' }, | 241 | + { id: 1, name: '春游活动' }, |
| 394 | - { id: 2, name: '运动会' }, | 242 | + { id: 2, name: '运动会' }, |
| 395 | - { id: 3, name: '文艺汇演' }, | 243 | + { id: 3, name: '文艺汇演' }, |
| 396 | - { id: 4, name: '科技节' } | 244 | + { id: 4, name: '科技节' } |
| 397 | ]); | 245 | ]); |
| 398 | 246 | ||
| 399 | const grades = ref([ | 247 | const grades = ref([ |
| 400 | - { id: 1, name: '一年级' }, | 248 | + { id: 1, name: '一年级' }, |
| 401 | - { id: 2, name: '二年级' }, | 249 | + { id: 2, name: '二年级' }, |
| 402 | - { id: 3, name: '三年级' }, | 250 | + { id: 3, name: '三年级' }, |
| 403 | - { id: 4, name: '四年级' } | 251 | + { id: 4, name: '四年级' } |
| 404 | ]); | 252 | ]); |
| 405 | 253 | ||
| 406 | const classes = ref([ | 254 | const classes = ref([ |
| 407 | - { id: 1, name: '一班' }, | 255 | + { id: 1, name: '一班' }, |
| 408 | - { id: 2, name: '二班' }, | 256 | + { id: 2, name: '二班' }, |
| 409 | - { id: 3, name: '三班' }, | 257 | + { id: 3, name: '三班' }, |
| 410 | - { id: 4, name: '四班' } | 258 | + { id: 4, name: '四班' } |
| 411 | ]); | 259 | ]); |
| 412 | 260 | ||
| 413 | const groups = ref([ | 261 | const groups = ref([ |
| 414 | - { id: 1, name: '第一小组' }, | 262 | + { id: 1, name: '第一小组' }, |
| 415 | - { id: 2, name: '第二小组' }, | 263 | + { id: 2, name: '第二小组' }, |
| 416 | - { id: 3, name: '第三小组' }, | 264 | + { id: 3, name: '第三小组' }, |
| 417 | - { id: 4, name: '第四小组' } | 265 | + { id: 4, name: '第四小组' } |
| 418 | ]); | 266 | ]); |
| 419 | 267 | ||
| 420 | // 计算属性 - 时间显示格式 | 268 | // 计算属性 - 时间显示格式 |
| 421 | const startTimeDisplay = computed(() => { | 269 | const startTimeDisplay = computed(() => { |
| 422 | - if (!formData.value.start_time) return ''; | 270 | + if (!formData.value.start_time) return ''; |
| 423 | - return formatDateTime(formData.value.start_time); | 271 | + return formatDateTime(formData.value.start_time); |
| 424 | }); | 272 | }); |
| 425 | 273 | ||
| 426 | const endTimeDisplay = computed(() => { | 274 | const endTimeDisplay = computed(() => { |
| 427 | - if (!formData.value.end_time) return ''; | 275 | + if (!formData.value.end_time) return ''; |
| 428 | - return formatDateTime(formData.value.end_time); | 276 | + return formatDateTime(formData.value.end_time); |
| 429 | }); | 277 | }); |
| 430 | 278 | ||
| 431 | // 过滤后的数据 | 279 | // 过滤后的数据 |
| 432 | const filteredCourses = computed(() => { | 280 | const filteredCourses = computed(() => { |
| 433 | - if (!courseSearchValue.value) return courses.value; | 281 | + if (!courseSearchValue.value) return courses.value; |
| 434 | - return courses.value.filter(course => | 282 | + return courses.value.filter(course => |
| 435 | - course.name.toLowerCase().includes(courseSearchValue.value.toLowerCase()) | 283 | + course.name.toLowerCase().includes(courseSearchValue.value.toLowerCase()) |
| 436 | - ); | 284 | + ); |
| 437 | }); | 285 | }); |
| 438 | 286 | ||
| 439 | const filteredActivities = computed(() => { | 287 | const filteredActivities = computed(() => { |
| 440 | - if (!activitySearchValue.value) return activities.value; | 288 | + if (!activitySearchValue.value) return activities.value; |
| 441 | - return activities.value.filter(activity => | 289 | + return activities.value.filter(activity => |
| 442 | - activity.name.toLowerCase().includes(activitySearchValue.value.toLowerCase()) | 290 | + activity.name.toLowerCase().includes(activitySearchValue.value.toLowerCase()) |
| 443 | - ); | 291 | + ); |
| 444 | }); | 292 | }); |
| 445 | 293 | ||
| 446 | const filteredGrades = computed(() => { | 294 | const filteredGrades = computed(() => { |
| 447 | - if (!gradeSearchValue.value) return grades.value; | 295 | + if (!gradeSearchValue.value) return grades.value; |
| 448 | - return grades.value.filter(grade => | 296 | + return grades.value.filter(grade => |
| 449 | - grade.name.toLowerCase().includes(gradeSearchValue.value.toLowerCase()) | 297 | + grade.name.toLowerCase().includes(gradeSearchValue.value.toLowerCase()) |
| 450 | - ); | 298 | + ); |
| 451 | }); | 299 | }); |
| 452 | 300 | ||
| 453 | const filteredClasses = computed(() => { | 301 | const filteredClasses = computed(() => { |
| 454 | - if (!classSearchValue.value) return classes.value; | 302 | + if (!classSearchValue.value) return classes.value; |
| 455 | - return classes.value.filter(classItem => | 303 | + return classes.value.filter(classItem => |
| 456 | - classItem.name.toLowerCase().includes(classSearchValue.value.toLowerCase()) | 304 | + classItem.name.toLowerCase().includes(classSearchValue.value.toLowerCase()) |
| 457 | - ); | 305 | + ); |
| 458 | }); | 306 | }); |
| 459 | 307 | ||
| 460 | const filteredGroups = computed(() => { | 308 | const filteredGroups = computed(() => { |
| 461 | - if (!groupSearchValue.value) return groups.value; | 309 | + if (!groupSearchValue.value) return groups.value; |
| 462 | - return groups.value.filter(group => | 310 | + return groups.value.filter(group => |
| 463 | - group.name.toLowerCase().includes(groupSearchValue.value.toLowerCase()) | 311 | + group.name.toLowerCase().includes(groupSearchValue.value.toLowerCase()) |
| 464 | - ); | 312 | + ); |
| 465 | }); | 313 | }); |
| 466 | 314 | ||
| 467 | /** | 315 | /** |
| ... | @@ -470,12 +318,12 @@ const filteredGroups = computed(() => { | ... | @@ -470,12 +318,12 @@ const filteredGroups = computed(() => { |
| 470 | * @returns {string} 格式化后的日期时间字符串 | 318 | * @returns {string} 格式化后的日期时间字符串 |
| 471 | */ | 319 | */ |
| 472 | const formatDateTime = (date) => { | 320 | const formatDateTime = (date) => { |
| 473 | - if (!date) return ''; | 321 | + if (!date) return ''; |
| 474 | - const d = new Date(date); | 322 | + const d = new Date(date); |
| 475 | - const year = d.getFullYear(); | 323 | + const year = d.getFullYear(); |
| 476 | - const month = String(d.getMonth() + 1).padStart(2, '0'); | 324 | + const month = String(d.getMonth() + 1).padStart(2, '0'); |
| 477 | - const day = String(d.getDate()).padStart(2, '0'); | 325 | + const day = String(d.getDate()).padStart(2, '0'); |
| 478 | - return `${year}-${month}-${day}`; | 326 | + return `${year}-${month}-${day}`; |
| 479 | }; | 327 | }; |
| 480 | 328 | ||
| 481 | /** | 329 | /** |
| ... | @@ -483,8 +331,8 @@ const formatDateTime = (date) => { | ... | @@ -483,8 +331,8 @@ const formatDateTime = (date) => { |
| 483 | * @param {Object} option - 选中的选项 | 331 | * @param {Object} option - 选中的选项 |
| 484 | */ | 332 | */ |
| 485 | const onTypeConfirm = (option) => { | 333 | const onTypeConfirm = (option) => { |
| 486 | - formData.value.type = option.selectedOptions[0].text; | 334 | + formData.value.type = option.selectedOptions[0].text; |
| 487 | - showTypePicker.value = false; | 335 | + showTypePicker.value = false; |
| 488 | }; | 336 | }; |
| 489 | 337 | ||
| 490 | /** | 338 | /** |
| ... | @@ -492,26 +340,26 @@ const onTypeConfirm = (option) => { | ... | @@ -492,26 +340,26 @@ const onTypeConfirm = (option) => { |
| 492 | * @param {Object} option - 选中的选项 | 340 | * @param {Object} option - 选中的选项 |
| 493 | */ | 341 | */ |
| 494 | const onFrequencyConfirm = (option) => { | 342 | const onFrequencyConfirm = (option) => { |
| 495 | - formData.value.frequency = option.selectedOptions[0].text; | 343 | + formData.value.frequency = option.selectedOptions[0].text; |
| 496 | - showFrequencyPicker.value = false; | 344 | + showFrequencyPicker.value = false; |
| 497 | }; | 345 | }; |
| 498 | 346 | ||
| 499 | /** | 347 | /** |
| 500 | * 开始时间确认 | 348 | * 开始时间确认 |
| 501 | */ | 349 | */ |
| 502 | const onStartTimeConfirm = () => { | 350 | const onStartTimeConfirm = () => { |
| 503 | - const [year, month, day] = startDate.value; | 351 | + const [year, month, day] = startDate.value; |
| 504 | - formData.value.start_time = new Date(parseInt(year), parseInt(month) - 1, parseInt(day)); | 352 | + formData.value.start_time = new Date(parseInt(year), parseInt(month) - 1, parseInt(day)); |
| 505 | - showStartTimePicker.value = false; | 353 | + showStartTimePicker.value = false; |
| 506 | }; | 354 | }; |
| 507 | 355 | ||
| 508 | /** | 356 | /** |
| 509 | * 结束时间确认 | 357 | * 结束时间确认 |
| 510 | */ | 358 | */ |
| 511 | const onEndTimeConfirm = () => { | 359 | const onEndTimeConfirm = () => { |
| 512 | - const [year, month, day] = endDate.value; | 360 | + const [year, month, day] = endDate.value; |
| 513 | - formData.value.end_time = new Date(parseInt(year), parseInt(month) - 1, parseInt(day)); | 361 | + formData.value.end_time = new Date(parseInt(year), parseInt(month) - 1, parseInt(day)); |
| 514 | - showEndTimePicker.value = false; | 362 | + showEndTimePicker.value = false; |
| 515 | }; | 363 | }; |
| 516 | 364 | ||
| 517 | /** | 365 | /** |
| ... | @@ -519,9 +367,9 @@ const onEndTimeConfirm = () => { | ... | @@ -519,9 +367,9 @@ const onEndTimeConfirm = () => { |
| 519 | * @param {Object} course - 选中的课程 | 367 | * @param {Object} course - 选中的课程 |
| 520 | */ | 368 | */ |
| 521 | const onCourseSelect = (course) => { | 369 | const onCourseSelect = (course) => { |
| 522 | - formData.value.course = course.name; | 370 | + formData.value.course = course.name; |
| 523 | - showCoursePicker.value = false; | 371 | + showCoursePicker.value = false; |
| 524 | - courseSearchValue.value = ''; | 372 | + courseSearchValue.value = ''; |
| 525 | }; | 373 | }; |
| 526 | 374 | ||
| 527 | /** | 375 | /** |
| ... | @@ -529,9 +377,9 @@ const onCourseSelect = (course) => { | ... | @@ -529,9 +377,9 @@ const onCourseSelect = (course) => { |
| 529 | * @param {Object} activity - 选中的活动 | 377 | * @param {Object} activity - 选中的活动 |
| 530 | */ | 378 | */ |
| 531 | const onActivitySelect = (activity) => { | 379 | const onActivitySelect = (activity) => { |
| 532 | - formData.value.activity = activity.name; | 380 | + formData.value.activity = activity.name; |
| 533 | - showActivityPicker.value = false; | 381 | + showActivityPicker.value = false; |
| 534 | - activitySearchValue.value = ''; | 382 | + activitySearchValue.value = ''; |
| 535 | }; | 383 | }; |
| 536 | 384 | ||
| 537 | /** | 385 | /** |
| ... | @@ -539,9 +387,9 @@ const onActivitySelect = (activity) => { | ... | @@ -539,9 +387,9 @@ const onActivitySelect = (activity) => { |
| 539 | * @param {Object} grade - 选中的年级 | 387 | * @param {Object} grade - 选中的年级 |
| 540 | */ | 388 | */ |
| 541 | const onGradeSelect = (grade) => { | 389 | const onGradeSelect = (grade) => { |
| 542 | - formData.value.grade = grade.name; | 390 | + formData.value.grade = grade.name; |
| 543 | - showGradePicker.value = false; | 391 | + showGradePicker.value = false; |
| 544 | - gradeSearchValue.value = ''; | 392 | + gradeSearchValue.value = ''; |
| 545 | }; | 393 | }; |
| 546 | 394 | ||
| 547 | /** | 395 | /** |
| ... | @@ -549,9 +397,9 @@ const onGradeSelect = (grade) => { | ... | @@ -549,9 +397,9 @@ const onGradeSelect = (grade) => { |
| 549 | * @param {Object} classItem - 选中的班级 | 397 | * @param {Object} classItem - 选中的班级 |
| 550 | */ | 398 | */ |
| 551 | const onClassSelect = (classItem) => { | 399 | const onClassSelect = (classItem) => { |
| 552 | - formData.value.class_name = classItem.name; | 400 | + formData.value.class_name = classItem.name; |
| 553 | - showClassPicker.value = false; | 401 | + showClassPicker.value = false; |
| 554 | - classSearchValue.value = ''; | 402 | + classSearchValue.value = ''; |
| 555 | }; | 403 | }; |
| 556 | 404 | ||
| 557 | /** | 405 | /** |
| ... | @@ -559,9 +407,9 @@ const onClassSelect = (classItem) => { | ... | @@ -559,9 +407,9 @@ const onClassSelect = (classItem) => { |
| 559 | * @param {Object} group - 选中的小组 | 407 | * @param {Object} group - 选中的小组 |
| 560 | */ | 408 | */ |
| 561 | const onGroupSelect = (group) => { | 409 | const onGroupSelect = (group) => { |
| 562 | - formData.value.group_name = group.name; | 410 | + formData.value.group_name = group.name; |
| 563 | - showGroupPicker.value = false; | 411 | + showGroupPicker.value = false; |
| 564 | - groupSearchValue.value = ''; | 412 | + groupSearchValue.value = ''; |
| 565 | }; | 413 | }; |
| 566 | 414 | ||
| 567 | /** | 415 | /** |
| ... | @@ -569,7 +417,7 @@ const onGroupSelect = (group) => { | ... | @@ -569,7 +417,7 @@ const onGroupSelect = (group) => { |
| 569 | * @param {string} value - 搜索值 | 417 | * @param {string} value - 搜索值 |
| 570 | */ | 418 | */ |
| 571 | const searchCourse = (value) => { | 419 | const searchCourse = (value) => { |
| 572 | - courseSearchValue.value = value; | 420 | + courseSearchValue.value = value; |
| 573 | }; | 421 | }; |
| 574 | 422 | ||
| 575 | /** | 423 | /** |
| ... | @@ -577,7 +425,7 @@ const searchCourse = (value) => { | ... | @@ -577,7 +425,7 @@ const searchCourse = (value) => { |
| 577 | * @param {string} value - 搜索值 | 425 | * @param {string} value - 搜索值 |
| 578 | */ | 426 | */ |
| 579 | const searchActivity = (value) => { | 427 | const searchActivity = (value) => { |
| 580 | - activitySearchValue.value = value; | 428 | + activitySearchValue.value = value; |
| 581 | }; | 429 | }; |
| 582 | 430 | ||
| 583 | /** | 431 | /** |
| ... | @@ -585,7 +433,7 @@ const searchActivity = (value) => { | ... | @@ -585,7 +433,7 @@ const searchActivity = (value) => { |
| 585 | * @param {string} value - 搜索值 | 433 | * @param {string} value - 搜索值 |
| 586 | */ | 434 | */ |
| 587 | const searchGrade = (value) => { | 435 | const searchGrade = (value) => { |
| 588 | - gradeSearchValue.value = value; | 436 | + gradeSearchValue.value = value; |
| 589 | }; | 437 | }; |
| 590 | 438 | ||
| 591 | /** | 439 | /** |
| ... | @@ -593,7 +441,7 @@ const searchGrade = (value) => { | ... | @@ -593,7 +441,7 @@ const searchGrade = (value) => { |
| 593 | * @param {string} value - 搜索值 | 441 | * @param {string} value - 搜索值 |
| 594 | */ | 442 | */ |
| 595 | const searchClass = (value) => { | 443 | const searchClass = (value) => { |
| 596 | - classSearchValue.value = value; | 444 | + classSearchValue.value = value; |
| 597 | }; | 445 | }; |
| 598 | 446 | ||
| 599 | /** | 447 | /** |
| ... | @@ -601,7 +449,7 @@ const searchClass = (value) => { | ... | @@ -601,7 +449,7 @@ const searchClass = (value) => { |
| 601 | * @param {string} value - 搜索值 | 449 | * @param {string} value - 搜索值 |
| 602 | */ | 450 | */ |
| 603 | const searchGroup = (value) => { | 451 | const searchGroup = (value) => { |
| 604 | - groupSearchValue.value = value; | 452 | + groupSearchValue.value = value; |
| 605 | }; | 453 | }; |
| 606 | 454 | ||
| 607 | /** | 455 | /** |
| ... | @@ -609,64 +457,64 @@ const searchGroup = (value) => { | ... | @@ -609,64 +457,64 @@ const searchGroup = (value) => { |
| 609 | * @param {Object} values - 表单值 | 457 | * @param {Object} values - 表单值 |
| 610 | */ | 458 | */ |
| 611 | const handleSubmit = async (values) => { | 459 | const handleSubmit = async (values) => { |
| 612 | - try { | 460 | + try { |
| 613 | - loading.value = true; | 461 | + loading.value = true; |
| 614 | 462 | ||
| 615 | - // 验证必填项 | 463 | + // 验证必填项 |
| 616 | - if (!formData.value.homework_name) { | 464 | + if (!formData.value.homework_name) { |
| 617 | - showToast('请输入作业名称'); | 465 | + showToast('请输入作业名称'); |
| 618 | - return; | 466 | + return; |
| 619 | - } | 467 | + } |
| 620 | 468 | ||
| 621 | - // 这里可以调用API提交数据 | 469 | + // 这里可以调用API提交数据 |
| 622 | - console.log('提交的表单数据:', formData.value); | 470 | + console.log('提交的表单数据:', formData.value); |
| 623 | 471 | ||
| 624 | - // 模拟API调用 | 472 | + // 模拟API调用 |
| 625 | - await new Promise(resolve => setTimeout(resolve, 1000)); | 473 | + await new Promise(resolve => setTimeout(resolve, 1000)); |
| 626 | 474 | ||
| 627 | - showToast('保存成功'); | 475 | + showToast('保存成功'); |
| 628 | 476 | ||
| 629 | - // 返回上一页或跳转到列表页 | 477 | + // 返回上一页或跳转到列表页 |
| 630 | - $router.back(); | 478 | + $router.back(); |
| 631 | 479 | ||
| 632 | - } catch (error) { | 480 | + } catch (error) { |
| 633 | - console.error('提交失败:', error); | 481 | + console.error('提交失败:', error); |
| 634 | - showToast('保存失败,请重试'); | 482 | + showToast('保存失败,请重试'); |
| 635 | - } finally { | 483 | + } finally { |
| 636 | - loading.value = false; | 484 | + loading.value = false; |
| 637 | - } | 485 | + } |
| 638 | }; | 486 | }; |
| 639 | 487 | ||
| 640 | /** | 488 | /** |
| 641 | * 组件挂载时初始化数据 | 489 | * 组件挂载时初始化数据 |
| 642 | */ | 490 | */ |
| 643 | onMounted(() => { | 491 | onMounted(() => { |
| 644 | - // 这里可以调用API获取课程、活动、年级、班级、小组等数据 | 492 | + // 这里可以调用API获取课程、活动、年级、班级、小组等数据 |
| 645 | - console.log('页面初始化'); | 493 | + console.log('页面初始化'); |
| 646 | }); | 494 | }); |
| 647 | </script> | 495 | </script> |
| 648 | 496 | ||
| 649 | <style scoped> | 497 | <style scoped> |
| 650 | /* 自定义样式 */ | 498 | /* 自定义样式 */ |
| 651 | :deep(.van-field__label) { | 499 | :deep(.van-field__label) { |
| 652 | - color: #333; | 500 | + color: #333; |
| 653 | - font-weight: 500; | 501 | + font-weight: 500; |
| 654 | } | 502 | } |
| 655 | 503 | ||
| 656 | :deep(.van-field--required .van-field__label::before) { | 504 | :deep(.van-field--required .van-field__label::before) { |
| 657 | - color: #ee0a24; | 505 | + color: #ee0a24; |
| 658 | } | 506 | } |
| 659 | 507 | ||
| 660 | :deep(.van-button--primary) { | 508 | :deep(.van-button--primary) { |
| 661 | - background: linear-gradient(135deg, #10b981 0%, #059669 100%); | 509 | + background: linear-gradient(135deg, #10b981 0%, #059669 100%); |
| 662 | - border: none; | 510 | + border: none; |
| 663 | } | 511 | } |
| 664 | 512 | ||
| 665 | :deep(.van-popup) { | 513 | :deep(.van-popup) { |
| 666 | - border-radius: 16px 16px 0 0; | 514 | + border-radius: 16px 16px 0 0; |
| 667 | } | 515 | } |
| 668 | 516 | ||
| 669 | :deep(.van-picker__toolbar) { | 517 | :deep(.van-picker__toolbar) { |
| 670 | - border-radius: 16px 16px 0 0; | 518 | + border-radius: 16px 16px 0 0; |
| 671 | } | 519 | } |
| 672 | </style> | 520 | </style> | ... | ... |
-
Please register or login to post a comment