feat(ui): refine profile workflows and visual system
This commit is contained in:
@@ -3,12 +3,13 @@
|
||||
<view>
|
||||
<text class="eyebrow">档案预设</text>
|
||||
<view class="page-heading">
|
||||
<text class="heading-icon">+</text>
|
||||
<text class="page-title">学生档案预设项</text>
|
||||
<text class="page-title">新增学生默认值</text>
|
||||
</view>
|
||||
<text class="page-subtitle">用于新增学生时自动带出</text>
|
||||
<text class="page-subtitle">新增学生时自动带出以下信息</text>
|
||||
</view>
|
||||
<button class="reload-button secondary-button" loading="{{loading}}" disabled="{{loading}}" bindtap="onReload">↻ 刷新</button>
|
||||
<button class="reload-button {{loading ? 'reload-button-loading' : ''}}" disabled="{{loading || saving}}" bindtap="onReload" aria-label="刷新预设项">
|
||||
<text class="reload-icon">↻</text>
|
||||
</button>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{errorMessage}}" class="status-banner">
|
||||
@@ -18,41 +19,70 @@
|
||||
|
||||
<view class="defaults-card surface">
|
||||
<view class="defaults-grid">
|
||||
<picker class="select-field" mode="selector" range="{{grades}}" bindchange="onGradeChange">
|
||||
<text class="field-label">年级</text>
|
||||
<text class="field-value">{{defaults.grade}}</text>
|
||||
<picker class="select-field" mode="selector" range="{{grades}}" disabled="{{loading || saving}}" bindchange="onGradeChange" aria-label="默认年级,当前为 {{defaults.grade}}">
|
||||
<view class="select-field-content">
|
||||
<view class="select-copy">
|
||||
<text class="field-label">年级</text>
|
||||
<text class="field-value">{{defaults.grade}}</text>
|
||||
</view>
|
||||
<text class="select-chevron" aria-hidden="true">›</text>
|
||||
</view>
|
||||
</picker>
|
||||
<picker class="select-field" mode="selector" range="{{subjects}}" bindchange="onSubjectChange">
|
||||
<text class="field-label">学科</text>
|
||||
<text class="field-value">{{defaults.subject}}</text>
|
||||
<picker class="select-field" mode="selector" range="{{subjects}}" disabled="{{loading || saving}}" bindchange="onSubjectChange" aria-label="默认学科,当前为 {{defaults.subject}}">
|
||||
<view class="select-field-content">
|
||||
<view class="select-copy">
|
||||
<text class="field-label">学科</text>
|
||||
<text class="field-value">{{defaults.subject}}</text>
|
||||
</view>
|
||||
<text class="select-chevron" aria-hidden="true">›</text>
|
||||
</view>
|
||||
</picker>
|
||||
</view>
|
||||
|
||||
<view class="duration-field">
|
||||
<text class="field-label">上课时长</text>
|
||||
<view class="duration-input-row">
|
||||
<input class="duration-input" type="number" value="{{defaults.lessonDurationMinutes}}" bindblur="onDurationInput" />
|
||||
<text class="duration-unit">分钟</text>
|
||||
<view class="duration-heading">
|
||||
<text class="field-label">上课时长</text>
|
||||
<text class="duration-step-label">15 分钟间隔</text>
|
||||
</view>
|
||||
<slider
|
||||
class="duration-slider"
|
||||
min="15"
|
||||
max="360"
|
||||
step="15"
|
||||
value="{{defaults.lessonDurationMinutes}}"
|
||||
activeColor="#2B67E8"
|
||||
backgroundColor="#DBE7F5"
|
||||
blockColor="#2B67E8"
|
||||
blockSize="26"
|
||||
bindchange="onDurationChange"
|
||||
/>
|
||||
<view class="duration-bounds">
|
||||
<text>15 分钟</text>
|
||||
<text>360 分钟</text>
|
||||
|
||||
<view class="duration-stepper">
|
||||
<button
|
||||
class="duration-step-button"
|
||||
disabled="{{loading || saving || defaults.lessonDurationMinutes <= minimumDuration}}"
|
||||
bindtap="decreaseDuration"
|
||||
aria-label="减少 15 分钟"
|
||||
>−</button>
|
||||
<view class="duration-value" aria-label="当前上课时长 {{defaults.lessonDurationMinutes}} 分钟">
|
||||
<text class="duration-number">{{defaults.lessonDurationMinutes}}</text>
|
||||
<text class="duration-unit">分钟</text>
|
||||
</view>
|
||||
<button
|
||||
class="duration-step-button"
|
||||
disabled="{{loading || saving || defaults.lessonDurationMinutes >= maximumDuration}}"
|
||||
bindtap="increaseDuration"
|
||||
aria-label="增加 15 分钟"
|
||||
>+</button>
|
||||
</view>
|
||||
|
||||
<view class="duration-presets" aria-label="常用上课时长">
|
||||
<button
|
||||
wx:for="{{durationPresets}}"
|
||||
wx:key="*this"
|
||||
class="duration-preset {{defaults.lessonDurationMinutes === item ? 'duration-preset-active' : ''}}"
|
||||
disabled="{{loading || saving}}"
|
||||
data-value="{{item}}"
|
||||
bindtap="selectDurationPreset"
|
||||
aria-label="设置为 {{item}} 分钟"
|
||||
>{{item}}</button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="time-help">新增学生时会按开始时间自动推算结束时间。</view>
|
||||
<button class="save-defaults primary-button" loading="{{saving}}" disabled="{{saving || loading}}" bindtap="save">保存</button>
|
||||
<view class="time-help">
|
||||
<icon class="time-help-icon" type="info" size="16" color="#6E6E73" />
|
||||
<text>新增学生时会根据开始时间自动推算结束时间</text>
|
||||
</view>
|
||||
<view class="save-area">
|
||||
<button class="save-defaults primary-button" loading="{{saving}}" disabled="{{saving || loading}}" bindtap="save">保存</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
Reference in New Issue
Block a user