|
|
@@ -56,9 +56,10 @@
|
|
|
<div class="task-list">
|
|
|
<div
|
|
|
class="task-card"
|
|
|
+ :class="{ 'task-preparing': task.status === 0 }"
|
|
|
v-for="task in taskList"
|
|
|
:key="task.id"
|
|
|
- @click="goTaskDetail(task.id)"
|
|
|
+ @click="task.status !== 0 && goTaskDetail(task.id)"
|
|
|
>
|
|
|
<div class="task-icon">
|
|
|
<img :src="task.cover || task.categoryIcon || defaultIcon" alt="" />
|
|
|
@@ -66,7 +67,8 @@
|
|
|
<div class="task-info">
|
|
|
<div class="task-title">{{ task.title }}</div>
|
|
|
<div class="task-meta">
|
|
|
- <span class="remaining">{{ $t('task.remaining') }}: {{ task.remainCount ?? (task.maxNum - task.applyNum) }}</span>
|
|
|
+ <span class="remaining" v-if="task.status !== 0">{{ $t('task.remaining') }}: {{ task.remainCount ?? (task.maxNum - task.applyNum) }}</span>
|
|
|
+ <span class="preparing-tag" v-else>{{ $t('task.preparing') }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="task-price">
|
|
|
@@ -268,23 +270,23 @@ onMounted(() => {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: min(3.2vw, 15.36px);
|
|
|
+ margin-bottom: min(2.667vw, 12px);
|
|
|
|
|
|
.title {
|
|
|
- font-size: min(4.267vw, 20.48px);
|
|
|
+ font-size: min(3.467vw, 15px);
|
|
|
font-weight: 600;
|
|
|
color: var(--text-primary, #fff);
|
|
|
}
|
|
|
|
|
|
.tabs {
|
|
|
display: flex;
|
|
|
- gap: min(3.2vw, 15.36px);
|
|
|
+ gap: min(2.667vw, 12px);
|
|
|
|
|
|
.tab-item {
|
|
|
- font-size: min(3.733vw, 17.92px);
|
|
|
+ font-size: min(3.2vw, 13px);
|
|
|
color: var(--color-tab-inactive, rgba(255, 255, 255, 0.5));
|
|
|
cursor: pointer;
|
|
|
- padding-bottom: min(1.067vw, 5.12px);
|
|
|
+ padding-bottom: min(0.8vw, 3px);
|
|
|
|
|
|
&.active {
|
|
|
color: var(--color-tab-active, #ffc300);
|
|
|
@@ -353,6 +355,22 @@ onMounted(() => {
|
|
|
color: var(--text-secondary, rgba(255, 255, 255, 0.5));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ &.task-preparing {
|
|
|
+ opacity: 0.45;
|
|
|
+ cursor: not-allowed;
|
|
|
+ position: relative;
|
|
|
+ filter: grayscale(0.3);
|
|
|
+
|
|
|
+ .preparing-tag {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 1px 8px;
|
|
|
+ background: rgba(255, 152, 0, 0.2);
|
|
|
+ color: #ff9800;
|
|
|
+ border-radius: 8px;
|
|
|
+ font-size: min(2.8vw, 12px);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.loading-view {
|