Clarify multi-ledger entry deletion
This commit is contained in:
parent
e59e5d0fd3
commit
45d7249d13
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue