feat(M08-B): 补任务详情协作分账
This commit is contained in:
@@ -349,6 +349,35 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</section>
|
||||
<section class="stat-block">
|
||||
<header>
|
||||
<h3>协作分账</h3>
|
||||
<span>{{ detailDialog.members.length }} 人</span>
|
||||
</header>
|
||||
<el-table :data="detailDialog.members" size="small" v-loading="detailDialog.loadingMembers">
|
||||
<el-table-column prop="nickname" label="成员" min-width="140">
|
||||
<template #default="{ row }">
|
||||
<div class="stack">
|
||||
<strong>{{ row.nickname || compactText(row.userId) }}</strong>
|
||||
<span>ID {{ row.userId }}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="memberRole" label="角色" width="90">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.memberRole === 'LEAD' ? 'success' : 'info'" effect="light">
|
||||
{{ row.memberRole }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="rewardCents" label="分账" width="110">
|
||||
<template #default="{ row }">{{ money(row.rewardCents) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="settledAt" label="结算" width="130">
|
||||
<template #default="{ row }">{{ shortDate(row.settledAt) }}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</section>
|
||||
<div class="photo-grid" v-if="detailDialog.task.photoUrls.length">
|
||||
<el-image
|
||||
v-for="url in detailDialog.task.photoUrls"
|
||||
@@ -442,13 +471,17 @@ const batchRejectDialog = reactive({ open: false, reason: '' });
|
||||
const detailDialog = reactive<{
|
||||
open: boolean;
|
||||
loadingEvents: boolean;
|
||||
loadingMembers: boolean;
|
||||
task: CleaningTask | null;
|
||||
events: CleaningTaskEvent[];
|
||||
members: CleaningTaskMember[];
|
||||
}>({
|
||||
open: false,
|
||||
loadingEvents: false,
|
||||
loadingMembers: false,
|
||||
task: null,
|
||||
events: []
|
||||
events: [],
|
||||
members: []
|
||||
});
|
||||
const memberDialog = reactive({
|
||||
open: false,
|
||||
@@ -504,13 +537,21 @@ async function openDetail(row: CleaningTask) {
|
||||
detailDialog.open = true;
|
||||
detailDialog.task = row;
|
||||
detailDialog.events = [];
|
||||
detailDialog.members = [];
|
||||
detailDialog.loadingEvents = true;
|
||||
detailDialog.loadingMembers = true;
|
||||
try {
|
||||
detailDialog.events = await listCleaningTaskEvents(props.session, row.id);
|
||||
const [events, members] = await Promise.all([
|
||||
listCleaningTaskEvents(props.session, row.id),
|
||||
listCleaningTaskMembers(props.session, row.id)
|
||||
]);
|
||||
detailDialog.events = events;
|
||||
detailDialog.members = members;
|
||||
} catch (error) {
|
||||
ElMessage.error(error instanceof Error ? error.message : '任务流水加载失败');
|
||||
ElMessage.error(error instanceof Error ? error.message : '任务详情加载失败');
|
||||
} finally {
|
||||
detailDialog.loadingEvents = false;
|
||||
detailDialog.loadingMembers = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user