feat(M08-B): 补联调期限记录
This commit is contained in:
@@ -54,6 +54,9 @@
|
||||
<el-form-item label="负责人">
|
||||
<el-input v-model="bulkForm.owner" placeholder="留空则不覆盖" />
|
||||
</el-form-item>
|
||||
<el-form-item label="期限">
|
||||
<el-input v-model="bulkForm.deadline" placeholder="留空则不覆盖" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结果记录">
|
||||
<el-input v-model="bulkForm.note" placeholder="留空则不覆盖" />
|
||||
</el-form-item>
|
||||
@@ -242,6 +245,16 @@
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="期限" width="150">
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
v-model="draft[row.id].deadline"
|
||||
size="small"
|
||||
placeholder="YYYY-MM-DD"
|
||||
@change="persistDraft"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结果记录" min-width="230">
|
||||
<template #default="{ row }">
|
||||
<el-input
|
||||
@@ -286,6 +299,7 @@ interface HandoffItem {
|
||||
interface HandoffDraft {
|
||||
status: FieldStatus;
|
||||
owner: string;
|
||||
deadline: string;
|
||||
note: string;
|
||||
evidenceRef: string;
|
||||
}
|
||||
@@ -307,9 +321,10 @@ const category = ref<'全部' | HandoffItem['category']>('全部');
|
||||
const statusFilter = ref<'ALL' | FieldStatus>('ALL');
|
||||
const ownerFilter = ref('ALL');
|
||||
const snapshotInput = ref<HTMLInputElement | null>(null);
|
||||
const bulkForm = reactive<{ status: FieldStatus; owner: string; note: string }>({
|
||||
const bulkForm = reactive<{ status: FieldStatus; owner: string; deadline: string; note: string }>({
|
||||
status: 'PASS',
|
||||
owner: '',
|
||||
deadline: '',
|
||||
note: ''
|
||||
});
|
||||
const checklist: HandoffItem[] = [
|
||||
@@ -506,6 +521,7 @@ function applyBulkMark() {
|
||||
for (const item of filteredChecklist.value) {
|
||||
draft[item.id].status = bulkForm.status;
|
||||
if (bulkForm.owner.trim()) draft[item.id].owner = bulkForm.owner.trim();
|
||||
if (bulkForm.deadline.trim()) draft[item.id].deadline = bulkForm.deadline.trim();
|
||||
if (bulkForm.note.trim()) draft[item.id].note = bulkForm.note.trim();
|
||||
}
|
||||
persistDraft();
|
||||
@@ -524,8 +540,9 @@ async function copyBlockedSummary() {
|
||||
].join('\n');
|
||||
const content = blockedItems.value.map((item) => {
|
||||
const itemDraft = draft[item.id];
|
||||
const deadline = itemDraft.deadline ? ` - 期限:${itemDraft.deadline}` : '';
|
||||
const evidence = itemDraft.evidenceRef ? ` - 证据:${itemDraft.evidenceRef}` : '';
|
||||
return `[${item.category}] ${item.title} - ${itemDraft.owner || '未分派'} - ${itemDraft.note || item.expected}${evidence}`;
|
||||
return `[${item.category}] ${item.title} - ${itemDraft.owner || '未分派'}${deadline} - ${itemDraft.note || item.expected}${evidence}`;
|
||||
}).join('\n');
|
||||
try {
|
||||
await navigator.clipboard.writeText(`${header}\n\n${content}`);
|
||||
@@ -549,7 +566,8 @@ async function copyEvidenceSummary() {
|
||||
].join('\n');
|
||||
const content = evidenceMissingItems.value.map((item) => {
|
||||
const itemDraft = draft[item.id];
|
||||
return `[${item.category}] ${item.title} - ${itemDraft.owner || '未分派'} - 应留证据:${item.evidence}`;
|
||||
const deadline = itemDraft.deadline ? ` - 期限:${itemDraft.deadline}` : '';
|
||||
return `[${item.category}] ${item.title} - ${itemDraft.owner || '未分派'}${deadline} - 应留证据:${item.evidence}`;
|
||||
}).join('\n');
|
||||
try {
|
||||
await navigator.clipboard.writeText(`${header}\n\n${content}`);
|
||||
@@ -661,6 +679,7 @@ function serializeHandoffItem(item: HandoffItem) {
|
||||
status: itemDraft.status,
|
||||
statusText: statusText(itemDraft.status),
|
||||
owner: itemDraft.owner,
|
||||
deadline: itemDraft.deadline,
|
||||
note: itemDraft.note,
|
||||
evidence: item.evidence,
|
||||
evidenceRef: itemDraft.evidenceRef
|
||||
@@ -715,6 +734,7 @@ function formatReportItem(item: HandoffItem) {
|
||||
`- [${item.category}] ${item.title}`,
|
||||
` 状态:${statusText(itemDraft.status)}`,
|
||||
` 负责人:${itemDraft.owner || '未分派'}`,
|
||||
` 期限:${itemDraft.deadline || '未填写'}`,
|
||||
` 结果:${itemDraft.note || '未记录'}`,
|
||||
` 应留证据:${item.evidence}`,
|
||||
` 证据记录:${itemDraft.evidenceRef || '未记录'}`
|
||||
@@ -745,7 +765,7 @@ function exportChecklist() {
|
||||
['session', '归档门禁', closeoutReady.value ? '可归档' : `待补齐 ${missingCloseoutFields.value.join('、')}`, '', '', '', '', '', ''],
|
||||
['session', '证据记录数', `${evidenceRecordedCount.value}/${checklist.length}`, '', '', '', '', '', ''],
|
||||
['session', '待补证据数', String(evidenceMissingCount.value), '', '', '', '', '', ''],
|
||||
['ID', '类别', '检查项', '期望', '状态', '负责人', '结果记录', '应留证据', '证据记录'],
|
||||
['ID', '类别', '检查项', '期望', '状态', '负责人', '期限', '结果记录', '应留证据', '证据记录'],
|
||||
...checklist.map((item) => [
|
||||
item.id,
|
||||
item.category,
|
||||
@@ -753,6 +773,7 @@ function exportChecklist() {
|
||||
item.expected,
|
||||
draft[item.id].status,
|
||||
draft[item.id].owner,
|
||||
draft[item.id].deadline,
|
||||
draft[item.id].note,
|
||||
item.evidence,
|
||||
draft[item.id].evidenceRef
|
||||
@@ -769,7 +790,7 @@ function exportRiskRegister() {
|
||||
['session', '执行时间', sessionMeta.executedAt, '', '', '', '', '', ''],
|
||||
['session', '最后更新', sessionMeta.updatedAt, '', '', '', '', '', ''],
|
||||
['session', '风险项数量', String(riskItems.value.length), '', '', '', '', '', ''],
|
||||
['ID', '类别', '检查项', '状态', '负责人', '风险/缺口', '应留证据', '证据记录', '下一步'],
|
||||
['ID', '类别', '检查项', '状态', '负责人', '期限', '风险/缺口', '应留证据', '证据记录', '下一步'],
|
||||
...riskItems.value.map((item) => {
|
||||
const itemDraft = draft[item.id];
|
||||
const gaps = [
|
||||
@@ -783,6 +804,7 @@ function exportRiskRegister() {
|
||||
item.title,
|
||||
statusText(itemDraft.status),
|
||||
itemDraft.owner,
|
||||
itemDraft.deadline,
|
||||
gaps,
|
||||
item.evidence,
|
||||
itemDraft.evidenceRef,
|
||||
@@ -840,6 +862,7 @@ async function importSnapshot(event: Event) {
|
||||
draft[id] = {
|
||||
status,
|
||||
owner: value.owner || '',
|
||||
deadline: value.deadline || '',
|
||||
note: value.note || '',
|
||||
evidenceRef: value.evidenceRef || ''
|
||||
};
|
||||
@@ -861,6 +884,7 @@ function normalizeDraft(value?: Partial<HandoffDraft>): HandoffDraft {
|
||||
return {
|
||||
status: isFieldStatus(value?.status) ? value.status : 'PENDING',
|
||||
owner: value?.owner || '',
|
||||
deadline: value?.deadline || '',
|
||||
note: value?.note || '',
|
||||
evidenceRef: value?.evidenceRef || ''
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user