统一作业列表与待办统计并更新废弃扫码
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view v-if="user" class="page-shell portal-page fulfillment-page">
|
||||
<PortalHeader title="排车作业" :user="user" />
|
||||
<scroll-view class="fulfillment-scroll" scroll-y><view class="portal-content fulfillment-content">
|
||||
<scroll-view class="fulfillment-scroll" scroll-y><view class="portal-content fulfillment-content" :class="{ 'pda-task-list': !current }">
|
||||
<view class="fulfillment-heading"><text class="fulfillment-title">理货审核、真实拣货与装车</text></view>
|
||||
<view v-if="current" class="detail-toolbar"><text class="detail-title">{{ current.dispatchNo }}</text><button :disabled="busy" @tap="closeTask">‹ 返回列表</button></view>
|
||||
<view v-if="current" class="stage-switch" role="tablist" aria-label="排车作业">
|
||||
@@ -16,10 +16,14 @@
|
||||
<view v-if="loading" class="fulfillment-state"><text>正在加载排车事实…</text></view>
|
||||
<view v-if="error" class="fulfillment-error" role="alert"><text class="state-title">{{ error.message }}</text><text v-if="error.code">错误码:{{ error.code }}</text><text v-if="error.requestId">requestId:{{ error.requestId }}</text><text v-if="error.traceId">traceId:{{ error.traceId }}</text><text v-if="error.network">网络中断,请稍后重新操作。</text><button :disabled="busy || loading" @tap="retry">重新核对</button></view>
|
||||
<template v-if="!current && !loading">
|
||||
<view class="list-toolbar"><text class="list-title">排车任务</text><button :disabled="busy" @tap="loadTasks">刷新</button></view>
|
||||
<view class="list-toolbar pda-list-toolbar"><text>排车任务<text v-if="!error"> · {{ tasks.length }} 单</text></text><button :disabled="busy" @tap="loadTasks"><uni-icons type="refresh" color="#135ee8" size="18" /><text>刷新</text></button></view>
|
||||
<view v-if="!tasks.length && !error" class="fulfillment-state">暂无排车任务,可扫描排车单号读取。</view>
|
||||
<view v-if="tasks.length" class="task-list">
|
||||
<button v-for="task in tasks" :key="task.dispatchNo" class="task-card" @tap="openTask(task.dispatchNo)"><text class="business-code">{{ task.dispatchNo }}</text><text v-if="task.dispatchNo === recentTaskNo" class="recent-badge">上次作业</text><text class="status-badge">{{ stageLabel(task) }}</text><text class="task-meta">任务号 {{ task.taskNo || '—' }}</text></button>
|
||||
<view v-if="tasks.length" class="task-list pda-list-cards">
|
||||
<button v-for="task in tasks" :key="task.dispatchNo" class="task-card pda-task-card" hover-class="pda-task-card-pressed" @tap="openTask(task.dispatchNo)">
|
||||
<view class="pda-task-head"><text class="pda-task-no">{{ task.dispatchNo }}</text><text class="status-badge pda-task-status">{{ stageLabel(task) }}</text></view>
|
||||
<text v-if="String(task.taskNo || '').trim() && String(task.taskNo || '').trim() !== String(task.dispatchNo || '').trim()" class="pda-task-meta">任务号 {{ task.taskNo }}</text>
|
||||
<view class="pda-task-footer"><text v-if="task.dispatchNo === recentTaskNo" class="recent-badge">上次作业</text><view class="pda-task-action"><text>详情</text><uni-icons type="right" color="#135ee8" size="14" /></view></view>
|
||||
</button>
|
||||
</view>
|
||||
</template>
|
||||
<template v-if="current">
|
||||
@@ -298,3 +302,7 @@ export default {
|
||||
.scan-notice-hint { display: block; margin-top: 24rpx; color: #72839b; font-size: 24rpx; }
|
||||
|
||||
</style>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import '../../styles/task-list.scss';
|
||||
</style>
|
||||
|
||||
+52
-7
@@ -8,15 +8,15 @@
|
||||
<text class="home-overview-title">{{ greeting }},{{ displayName }}</text>
|
||||
<text class="home-overview-warehouse">{{ warehouseLabel }}</text>
|
||||
</view>
|
||||
<view class="home-overview-status"><text class="home-overview-status-value">{{ availableCount }}</text><text class="home-overview-status-label">项可处理</text></view>
|
||||
</view>
|
||||
<view class="home-workload-toolbar"><text>作业待办</text><button :disabled="countsLoading" @tap="refreshCounts"><uni-icons type="refresh" color="#135ee8" size="18" /><text>{{ countsLoading ? '刷新中…' : '刷新' }}</text></button></view>
|
||||
<view v-for="group in groups" :key="group.key" class="home-group">
|
||||
<view class="home-group-title"><view class="home-group-mark" :class="`home-group-mark-${group.key}`"></view><text>{{ group.name }}</text><text class="home-group-count">{{ group.operations.length }}</text></view>
|
||||
<view class="home-group-title"><view class="home-group-mark" :class="`home-group-mark-${group.key}`"></view><text>{{ group.name }}</text></view>
|
||||
<view class="home-operation-grid">
|
||||
<button v-for="operation in group.operations" :key="operation.name" class="home-operation" :class="{ 'home-operation-primary': operation.available, 'home-operation-disabled': !operation.available }" :disabled="!operation.available" @tap="openOperation(operation)">
|
||||
<view class="home-operation-icon" aria-hidden="true"><uni-icons :type="operation.iconType" :color="operation.available ? '#135ee8' : '#9aa6b2'" size="28" /></view>
|
||||
<text class="home-operation-name">{{ operation.name }}</text>
|
||||
<text v-if="operation.available" class="home-operation-pending">可处理</text>
|
||||
<text v-if="operation.available" class="home-operation-pending" :class="countBadge(operation).tone">{{ countBadge(operation).label }}</text>
|
||||
<text v-else class="home-operation-unavailable">暂未开放</text>
|
||||
</button>
|
||||
</view>
|
||||
@@ -28,8 +28,10 @@
|
||||
<script>
|
||||
import PortalHeader from '@/components/PortalHeader.vue'
|
||||
import { getCurrentWarehouseProfile } from '@/api/inbound.js'
|
||||
import { loadWorkbenchCounts, workbenchBadge } from '@/api/workbench.js'
|
||||
import { MODULES } from '@/data/overseas-workbench.js'
|
||||
import { applyWarehouseProfile, session, requireSession } from '@/stores/session.js'
|
||||
import { restoreWarehouseWork, warehouseWork } from '@/stores/warehouse-work.js'
|
||||
|
||||
const HOME_GROUPS = MODULES.map((module) => ({
|
||||
...module,
|
||||
@@ -39,9 +41,8 @@
|
||||
|
||||
export default {
|
||||
components: { PortalHeader },
|
||||
data() { return { user: session.currentUser, groups: HOME_GROUPS, menuOpen: false } },
|
||||
data() { return { user: session.currentUser, groups: HOME_GROUPS, menuOpen: false, counts: {}, countsLoading: false, countsGeneration: 0 } },
|
||||
computed: {
|
||||
availableCount() { return this.groups.reduce((total, group) => total + group.operations.filter((operation) => operation.available).length, 0) },
|
||||
displayName() {
|
||||
const name = String(this.user?.name || '').trim()
|
||||
return name && !/^[a-z0-9._-]+$/i.test(name) ? name : '仓库作业员'
|
||||
@@ -57,17 +58,48 @@
|
||||
return '晚上好'
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
async onShow() {
|
||||
if (!requireSession()) return
|
||||
const generation = ++this.countsGeneration
|
||||
this.user = session.currentUser
|
||||
if (!this.user?.warehouseCode || !this.user?.warehouseName) this.loadWarehouseProfile()
|
||||
this.counts = {}; this.countsLoading = true
|
||||
if (!this.user?.warehouseCode || !this.user?.warehouseName) await this.loadWarehouseProfile()
|
||||
if (generation !== this.countsGeneration) return
|
||||
this.countsLoading = false
|
||||
if (!session.currentUser) { this.user = null; return }
|
||||
this.user = session.currentUser
|
||||
await this.refreshCounts()
|
||||
},
|
||||
onHide() { this.invalidateCounts() },
|
||||
onUnload() { this.invalidateCounts() },
|
||||
beforeUnmount() { this.invalidateCounts() },
|
||||
onBackPress() {
|
||||
if (!this.menuOpen) return false
|
||||
this.$refs.portalHeader.closeMenu()
|
||||
return true
|
||||
},
|
||||
methods: {
|
||||
countBadge(operation) { return workbenchBadge(operation.key, this.counts[operation.key]) },
|
||||
countsScope() { const user = session.currentUser; return user?.id && user?.warehouseId ? `${session.apiBase}:${user.id}:${user.warehouseId}` : '' },
|
||||
invalidateCounts() { this.countsGeneration += 1; this.countsLoading = false; this.counts = {} },
|
||||
async refreshCounts() {
|
||||
if (this.countsLoading || !this.countsScope()) return
|
||||
const generation = ++this.countsGeneration
|
||||
const scope = this.countsScope()
|
||||
const profile = { ...session.currentUser }
|
||||
restoreWarehouseWork(`${profile.id}:${profile.warehouseId}`)
|
||||
const activeTransferNo = warehouseWork.warehouseTransfer.currentNo
|
||||
this.counts = {}; this.countsLoading = true
|
||||
try {
|
||||
const counts = await loadWorkbenchCounts({ profile, activeTransferNo })
|
||||
if (generation === this.countsGeneration && scope === this.countsScope()) this.counts = counts
|
||||
} finally {
|
||||
if (generation === this.countsGeneration) {
|
||||
this.countsLoading = false
|
||||
if (scope !== this.countsScope()) { this.counts = {}; this.user = session.currentUser }
|
||||
}
|
||||
}
|
||||
},
|
||||
async loadWarehouseProfile() {
|
||||
try { this.user = applyWarehouseProfile(await getCurrentWarehouseProfile()) } catch (_) { this.user = session.currentUser }
|
||||
},
|
||||
@@ -79,3 +111,16 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.home-overview{margin-bottom:12px}
|
||||
.home-workload-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;color:#526174;font-size:14px;font-weight:700}
|
||||
.home-workload-toolbar button{display:flex;align-items:center;justify-content:center;gap:5px;width:auto;height:36px;margin:0;padding:0 14px;border:1px solid #b8d1f5;border-radius:20px;color:#135ee8;font-size:13px;font-weight:700;line-height:normal;background:#fff}
|
||||
.home-workload-toolbar button[disabled]{opacity:.55}
|
||||
.home-operation{height:auto;min-height:104px;padding:10px 6px}
|
||||
.home-operation-name{min-height:17px}
|
||||
.home-operation-pending{box-sizing:border-box;max-width:100%;font-size:10px;line-height:16px;white-space:normal}
|
||||
.home-operation-pending.has-work{color:#9a5300;background:#fff0d6}
|
||||
.home-operation-pending.is-empty,.home-operation-pending.is-loading,.home-operation-pending.is-static{color:#6f8194;background:#e7edf4}
|
||||
.home-operation-pending.is-error{color:#b42318;background:#fff1f0}
|
||||
</style>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
||||
<view v-if="user" class="page-shell portal-page fulfillment-page">
|
||||
<PortalHeader title="出库作业" :user="user" />
|
||||
<scroll-view class="fulfillment-scroll" scroll-y>
|
||||
<view class="portal-content fulfillment-content">
|
||||
<view class="portal-content fulfillment-content" :class="{ 'pda-task-list': !current && !discardCurrent }">
|
||||
<view class="fulfillment-heading"><text class="fulfillment-title">出库任务</text></view>
|
||||
<view v-if="current" class="detail-toolbar"><view><text class="detail-kicker">当前任务</text><text class="detail-title">出库作业详情</text></view><button :disabled="busy" @tap="closeTask">‹ 返回列表</button></view>
|
||||
<view v-if="!discardCurrent" class="fulfillment-card">
|
||||
@@ -14,9 +14,13 @@
|
||||
<view v-else-if="error" class="fulfillment-error" role="alert"><text class="state-title">{{ error.message }}</text><text v-if="error.code">错误码:{{ error.code }}</text><text v-if="error.requestId">requestId:{{ error.requestId }}</text><text v-if="error.traceId">traceId:{{ error.traceId }}</text><text v-if="error.network" class="offline-note">网络连接失败,请刷新核对任务状态后重试。</text><button class="secondary-button" :disabled="loading || busy || discardLoading || discardBusy" @tap="retry">重试</button></view>
|
||||
|
||||
<template v-if="!loading && !current && !discardCurrent">
|
||||
<view class="list-toolbar"><view><text class="list-title">待处理出库任务</text><text class="list-count">{{ tasks.length }} 个任务</text></view><button :disabled="loading" @tap="loadTasks">刷新</button></view>
|
||||
<view v-if="tasks.length" class="task-list">
|
||||
<button v-for="task in tasks" :key="task.taskNo" class="task-card" @tap="openTask(task.taskNo)"><view class="task-head"><view class="task-code-row"><text class="business-code">{{ task.outboundNo || '—' }}</text><text v-if="task.taskNo === recentTaskNo" class="recent-badge">上次作业</text></view><text class="status-badge">{{ statusLabel(task.status) }}</text></view><text class="task-meta">{{ taskType(task) }} · 任务号 {{ task.taskNo || '—' }}</text><text class="task-enter">查看并开始出库 ›</text></button>
|
||||
<view class="list-toolbar pda-list-toolbar"><text>待处理出库任务<text v-if="!error"> · {{ tasks.length }} 项</text></text><button :disabled="loading" @tap="loadTasks"><uni-icons type="refresh" color="#135ee8" size="18" /><text>刷新</text></button></view>
|
||||
<view v-if="tasks.length" class="task-list pda-list-cards">
|
||||
<button v-for="task in tasks" :key="task.taskNo" class="task-card pda-task-card" hover-class="pda-task-card-pressed" @tap="openTask(task.taskNo)">
|
||||
<view class="pda-task-head"><text class="pda-task-no">{{ task.outboundNo || '—' }}</text><text class="status-badge pda-task-status">{{ statusLabel(task.status) }}</text></view>
|
||||
<view class="pda-task-meta"><text>{{ taskType(task) }}</text><text v-if="String(task.taskNo || '').trim() && String(task.taskNo || '').trim() !== String(task.outboundNo || '').trim()"> · 任务号 {{ task.taskNo }}</text></view>
|
||||
<view class="pda-task-footer"><text v-if="task.taskNo === recentTaskNo" class="recent-badge">上次作业</text><view class="pda-task-action"><text>查看并开始出库</text><uni-icons type="right" color="#135ee8" size="14" /></view></view>
|
||||
</button>
|
||||
</view>
|
||||
<view v-else-if="!error && !discardTasks.length" class="fulfillment-state"><text class="state-title">暂无出库任务</text><text>可刷新列表,或扫描任务号恢复未完成作业。</text></view>
|
||||
<view v-if="discardTasks.length" class="discard-section"><view class="list-toolbar"><view><text class="list-title">废弃订单</text><text class="list-count">{{ discardOrderCount }} 个订单</text></view></view><view class="task-list"><button v-for="order in discardOrders" :key="order.discardNo" class="task-card" @tap="openDiscardOrder(order.discardNo)"><view class="task-head"><view class="task-code-row"><text class="business-code">{{ order.discardNo || '—' }}</text></view><text class="status-badge">废弃订单</text></view><text v-if="order.outboundNo" class="task-meta">出库单 {{ order.outboundNo }} · 废弃出库</text><text class="task-meta">托盘 {{ order.palletCount }} 个 · 按箱废弃 {{ order.cartonCount }} 箱 · 待作业 {{ order.pendingPalletCount }} 个</text><text class="task-enter">点击进入废弃出库作业 ›</text></button></view></view>
|
||||
@@ -39,7 +43,7 @@
|
||||
|
||||
<view v-if="selectedPosition && selectedRemaining > 0" class="fulfillment-card"><text class="card-title">本次拣货:{{ lineBusinessCode(selectedPosition) }}</text><text v-if="selectedItem.returnSkuQuantity != null" class="scan-help">本来源计划出库 {{ selectedItem.returnSkuQuantity }} 件,请清点这些件数后确认;余数保留原箱。</text><view class="count-row"><text>拣货箱数</text><input type="number" :value="packages" :placeholder="`请输入 1-${selectedRemaining} 箱`" @input="updatePackages" /><text>最多 {{ selectedRemaining }} 箱</text></view><button class="primary-button" :disabled="!canPick || busy" @tap="submitPick">{{ busyAction === 'pick' ? '提交中…' : '确认出库拣货' }}</button></view>
|
||||
|
||||
<view class="fulfillment-card gate-card"><text class="card-title">完成出库任务</text><text v-if="remainingPackages > 0" class="gate-warning">尚有 {{ remainingPackages }} 箱未拣,不能完成出库。</text><text v-else-if="current.status === 'COMPLETED'" class="gate-success">出库任务已完成,不可重复提交。</text><text v-else class="gate-note">全部计划货物已扫描核平,服务端将再次校验库存门禁。</text><button v-if="current.status !== 'COMPLETED'" class="primary-button" :disabled="!canComplete || busy" @tap="completeTask">{{ busyAction === 'complete' ? '完成中…' : '完成出库任务' }}</button></view>
|
||||
<view class="fulfillment-card gate-card"><text class="card-title">完成出库任务</text><text v-if="remainingPackages > 0" class="gate-warning">尚有 {{ remainingPackages }} 箱未拣,不能完成出库。</text><text v-else-if="current.status === 'COMPLETED'" class="gate-success">出库任务已完成,不可重复提交。</text><button v-if="current.status !== 'COMPLETED'" class="primary-button" :disabled="!canComplete || busy" @tap="completeTask">{{ busyAction === 'complete' ? '完成中…' : '完成出库任务' }}</button></view>
|
||||
</template>
|
||||
|
||||
<template v-else-if="discardCurrent">
|
||||
@@ -354,3 +358,7 @@
|
||||
.discard-remark .card-title, .discard-remark .task-meta { color: #dc2626; }
|
||||
.discard-scanned-count { display: block; margin-bottom: 8px; color: #dc2626; font-size: 15px; font-weight: 700; }
|
||||
</style>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import '../../styles/task-list.scss';
|
||||
</style>
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
<template>
|
||||
<view v-if="user" class="page-shell portal-page work-page">
|
||||
<PortalHeader :title="title" :user="user" />
|
||||
<scroll-view class="work-scroll" scroll-y><view class="portal-content work-content">
|
||||
<scroll-view class="work-scroll" scroll-y><view class="portal-content work-content" :class="{ 'pda-task-list': !showCurrent && stage !== 'review' }">
|
||||
<view v-if="showCurrent" class="detail-toolbar"><button :disabled="busy" @tap="closeCurrent">‹ 返回列表</button></view>
|
||||
|
||||
<template v-if="!showCurrent">
|
||||
<view class="row-head candidate-toolbar"><text class="card-title">{{ candidateHeading }}</text><button v-if="stage !== 'review'" class="link-button" :disabled="loading" @tap="bootstrap">{{ loading ? '刷新中…' : '刷新' }}</button></view>
|
||||
<view class="row-head candidate-toolbar" :class="{ 'pda-list-toolbar': stage !== 'review' }"><text class="card-title">{{ candidateHeading }}<text v-if="stage !== 'review' && !error"> · {{ visibleCandidates.length }} 单</text></text><button v-if="stage !== 'review'" class="link-button" :disabled="loading" @tap="bootstrap"><uni-icons type="refresh" color="#135ee8" size="18" /><text>{{ loading ? '刷新中…' : '刷新' }}</text></button></view>
|
||||
<view v-if="loading && !visibleCandidates.length" class="empty-box"><uni-load-more status="loading" /><text class="empty-copy">正在加载换标任务…</text></view>
|
||||
<view v-else-if="!visibleCandidates.length" class="empty-box"><uni-icons type="info" color="#8090a3" size="32" /><text class="empty-copy">{{ emptyText }}</text></view>
|
||||
<view v-else-if="stage !== 'review'" class="task-list">
|
||||
<view v-for="item in visibleCandidates" :key="item.relabelNo" class="task-card relabel-candidate" :class="{ current: current?.relabelNo === item.relabelNo, 'rework-card': item.reviewDecision === 'REWORK' }" @tap="openExecution(item)">
|
||||
<view class="row-head"><text class="business-code">{{ item.relabelNo }}</text><text class="status-pill">{{ statusLabel(item.taskStatus || item.applicationStatus) }}</text></view>
|
||||
<view class="candidate-kind"><text>{{ relabelTypeName(item.operationType) }}</text><text v-if="item.reviewDecision === 'REWORK'" class="rework-tag">退回重做</text></view>
|
||||
<view class="candidate-footer"><text class="candidate-progress">已换标 <text class="candidate-progress-value">{{ item.relabelledPackages }} / {{ item.expectedPackages }}</text></text><text v-if="item.skippedPackages + item.exceptionPackages > 0" class="candidate-warning">跳过/异常 {{ item.skippedPackages + item.exceptionPackages }}</text><text class="candidate-enter">进入 ›</text></view>
|
||||
<view v-else-if="stage !== 'review'" class="task-list pda-list-cards">
|
||||
<view v-for="item in visibleCandidates" :key="item.relabelNo" class="task-card relabel-candidate pda-task-card" :class="{ current: current?.relabelNo === item.relabelNo, 'rework-card': item.reviewDecision === 'REWORK' }" hover-class="pda-task-card-pressed" @tap="openExecution(item)">
|
||||
<view class="pda-task-head"><text class="pda-task-no">{{ item.relabelNo }}</text><text class="status-pill pda-task-status">{{ statusLabel(item.taskStatus || item.applicationStatus) }}</text></view>
|
||||
<view class="candidate-kind pda-task-flags"><text>{{ relabelTypeName(item.operationType) }}</text><text v-if="item.reviewDecision === 'REWORK'" class="rework-tag">退回重做</text></view>
|
||||
<view class="pda-task-metrics" :class="{ 'has-three': item.skippedPackages + item.exceptionPackages > 0 }"><view><strong>{{ item.expectedPackages }}</strong><text>应处理</text></view><view><strong>{{ item.relabelledPackages }}</strong><text>已换标</text></view><view v-if="item.skippedPackages + item.exceptionPackages > 0" class="pda-task-metric-warning"><strong>{{ item.skippedPackages + item.exceptionPackages }}</strong><text>跳过/异常</text></view></view>
|
||||
<view class="pda-task-footer"><view class="pda-task-action"><text>进入</text><uni-icons type="right" color="#135ee8" size="14" /></view></view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="task-list">
|
||||
@@ -391,3 +392,7 @@
|
||||
.summary-metrics{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:4px;margin-left:auto;font-size:9px;line-height:18px}.summary-metric{display:inline-block;padding:1px 4px;border-radius:4px;background:#dcfce7;color:#16a34a;font-weight:700;white-space:nowrap}
|
||||
.candidate-toolbar{align-items:center;margin-bottom:12px}.candidate-toolbar .card-title{margin-bottom:0;font-size:16px;line-height:24px}.candidate-toolbar .link-button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:88px;height:44px;min-height:44px;margin:0;padding:0 16px;border:1px solid #9dc0f4;border-radius:8px;color:#135ee8;font-size:16px;font-weight:700;line-height:normal;background:#eaf2ff}.candidate-toolbar .link-button::after{border:0}.candidate-toolbar .link-button[disabled]{color:#718095;border-color:#dce5f0;background:#e8edf3}
|
||||
.relabel-candidate .business-code{min-width:0;font-size:18px;line-height:24px;overflow-wrap:anywhere}.relabel-candidate .status-pill{font-size:12px;line-height:18px}.candidate-kind{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px;color:#52647c;font-size:14px;line-height:22px}.candidate-footer{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;margin-top:10px}.candidate-progress{color:#52647c;font-size:14px;line-height:24px}.candidate-progress-value{color:#135ee8;font-size:18px;font-weight:700}.candidate-warning{color:#b54708;font-size:12px;line-height:20px}.candidate-enter{margin-left:auto;color:#135ee8;font-size:14px;font-weight:600;line-height:24px}</style>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import '../../styles/task-list.scss';
|
||||
</style>
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user