Clarify multi-ledger entry deletion

This commit is contained in:
openclaw 2026-07-22 23:53:31 +08:00
parent e59e5d0fd3
commit 45d7249d13
1 changed files with 19 additions and 11 deletions

View File

@ -58,9 +58,6 @@ const selectedChild = computed(() =>
childCategories.value.find((category) => category.id === childCategoryId.value), childCategories.value.find((category) => category.id === childCategoryId.value),
); );
const selectedCategory = computed(() => selectedChild.value ?? selectedParent.value); const selectedCategory = computed(() => selectedChild.value ?? selectedParent.value);
const ledgerOptions = computed(() =>
ledgerStore.ledgers.map((ledger) => ({ id: ledger.id, label: ledger.name })),
);
const dateLabel = computed(() => { const dateLabel = computed(() => {
if (!occurredAt.value) return "请选择时间"; if (!occurredAt.value) return "请选择时间";
const date = new Date(occurredAt.value); const date = new Date(occurredAt.value);
@ -77,11 +74,12 @@ const timeInvalid = computed(() => {
if (!occurredAt.value) return true; if (!occurredAt.value) return true;
return Number.isNaN(new Date(occurredAt.value).getTime()); return Number.isNaN(new Date(occurredAt.value).getTime());
}); });
const ledgerLabel = computed(() => const linkedLedgerNames = computed(() =>
ledgerIds.value.length === 1 ledgerStore.ledgers
? ledgerOptions.value.find((ledger) => ledger.id === ledgerIds.value[0])?.label ?? "未知账本" .filter((ledger) => ledgerIds.value.includes(ledger.id))
: `${ledgerIds.value.length} 个账本`, .map((ledger) => ledger.name),
); );
const ledgerLabel = computed(() => linkedLedgerNames.value.join("、") || "未知账本");
const createdAtLabel = computed(() => { const createdAtLabel = computed(() => {
if (!entry.value) return ""; if (!entry.value) return "";
return new Intl.DateTimeFormat("zh-CN", { return new Intl.DateTimeFormat("zh-CN", {
@ -182,7 +180,10 @@ async function saveEntry() {
} }
async function deleteEntry() { async function deleteEntry() {
if (!entry.value || !window.confirm("确定删除这笔条目吗?")) return; if (!entry.value) return;
const count = ledgerIds.value.length;
const message = `确定从这笔账目关联的全部账本中删除吗?\n\n共 ${count} 个账本,删除后无法恢复。`;
if (!window.confirm(message)) return;
await store.deleteEntry(entry.value.id); await store.deleteEntry(entry.value.id);
await router.replace("/"); await router.replace("/");
} }
@ -261,9 +262,9 @@ async function deleteEntry() {
tabindex="-1" tabindex="-1"
/> />
<button class="entry-edit-row" type="button" @click="ledgerPickerOpen = true"> <button class="entry-edit-row ledger-associations" type="button" @click="ledgerPickerOpen = true">
<span class="entry-field-icon ledger"><BookOpen :size="19" /></span> <span class="entry-field-icon ledger"><BookOpen :size="19" /></span>
<span class="entry-field-copy"><small>账本</small><strong>{{ ledgerLabel }}</strong></span> <span class="entry-field-copy"><small>关联账本 · {{ ledgerIds.length }} </small><strong>{{ ledgerLabel }}</strong></span>
<ChevronRight :size="18" /> <ChevronRight :size="18" />
</button> </button>
@ -289,7 +290,7 @@ async function deleteEntry() {
</div> </div>
<div class="entry-detail-actions"> <div class="entry-detail-actions">
<button class="entry-delete-button" type="button" aria-label="删除条目" title="删除条目" @click="deleteEntry"> <button class="entry-delete-button" type="button" aria-label="从所有关联账本删除" title="从所有关联账本删除" @click="deleteEntry">
<Trash2 :size="20" /> <Trash2 :size="20" />
</button> </button>
<button class="entry-save-button" type="submit" :disabled="saving"> <button class="entry-save-button" type="submit" :disabled="saving">
@ -551,6 +552,13 @@ async function deleteEntry() {
white-space: nowrap; white-space: nowrap;
} }
.ledger-associations .entry-field-copy strong {
overflow: visible;
line-height: 1.4;
text-overflow: clip;
white-space: normal;
}
.entry-select-row { .entry-select-row {
position: relative; position: relative;
grid-template-columns: 34px minmax(0, 1fr) 18px; grid-template-columns: 34px minmax(0, 1fr) 18px;