From 82a0ee83b29ece465221198013991c3392c42e7c Mon Sep 17 00:00:00 2001 From: kron Date: Thu, 27 Nov 2025 12:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A1=E5=88=86=E6=9C=AC?= =?UTF-8?q?=E8=8D=89=E7=A8=BF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/canvas.js | 2 +- src/components/BowTarget.vue | 18 +++--- src/pages/point-book-create.vue | 2 +- src/pages/point-book-edit.vue | 42 +++++++++----- src/pages/point-book-list.vue | 99 +++++++++++++++++++++++++++++++- src/pages/point-book.vue | 51 ++++++++-------- src/static/draft-icon.png | Bin 0 -> 526 bytes 7 files changed, 165 insertions(+), 49 deletions(-) create mode 100644 src/static/draft-icon.png diff --git a/src/canvas.js b/src/canvas.js index 52d89f4..ab5b89a 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -86,7 +86,7 @@ const drawRoundImage = async ( }; function drawRingCircle(ctx, x, y, text, diameter = 9) { - const fillColor = "#ff4444"; + const fillColor = "#00bf04"; const borderColor = "#ffffff"; const borderWidth = 1; const r = diameter / 2; diff --git a/src/components/BowTarget.vue b/src/components/BowTarget.vue index e14430b..1bb55b0 100644 --- a/src/components/BowTarget.vue +++ b/src/components/BowTarget.vue @@ -306,10 +306,10 @@ onBeforeUnmount(() => { } .hit { position: absolute; - width: 22rpx; - height: 22rpx; - min-width: 22rpx; - min-height: 22rpx; + width: 10px; + height: 10px; + min-width: 10px; + min-height: 10px; border-radius: 50%; border: 1px solid #fff; z-index: 1; @@ -324,12 +324,12 @@ onBeforeUnmount(() => { font-size: 16rpx; font-family: "DINCondensed", "PingFang SC", "Helvetica Neue", Arial, sans-serif; - line-height: 10px; - display: block; - width: 100%; text-align: center; - line-height: 22rpx; - margin-top: 2px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + margin-top: 1px; } .header { width: 100%; diff --git a/src/pages/point-book-create.vue b/src/pages/point-book-create.vue index fa6b94d..6ccea38 100644 --- a/src/pages/point-book-create.vue +++ b/src/pages/point-book-create.vue @@ -49,7 +49,7 @@ const toEditPage = () => { bowtargetType: bowtargetType.value, amountGroup: amountGroup.value, }); - uni.navigateTo({ + uni.redirectTo({ url: "/pages/point-book-edit", }); } else { diff --git a/src/pages/point-book-edit.vue b/src/pages/point-book-edit.vue index 74c75ea..4405b93 100644 --- a/src/pages/point-book-edit.vue +++ b/src/pages/point-book-edit.vue @@ -55,6 +55,7 @@ const onSubmit = async () => { Object.values(arrowGroups.value) ); if (res.record_id) { + uni.removeStorageSync("last-point-record"); uni.redirectTo({ url: `/pages/point-book-detail?id=${res.record_id}`, }); @@ -65,26 +66,25 @@ const onClickRing = (ring) => { if (arrowGroups.value[currentGroup.value]) { arrowGroups.value[currentGroup.value][currentArrow.value] = { ring }; if (currentArrow.value < amount.value - 1) currentArrow.value++; + uni.setStorageSync("last-point-record", arrowGroups.value); } }; const deleteArrow = () => { - arrowGroups.value[currentGroup.value][currentArrow.value] = {}; + const arrow = arrowGroups.value[currentGroup.value][currentArrow.value]; + if (JSON.stringify(arrow) === "{}") { + currentArrow.value -= 1; + } else { + arrowGroups.value[currentGroup.value][currentArrow.value] = {}; + } + uni.setStorageSync("last-point-record", arrowGroups.value); }; const onEditDone = (arrow) => { arrowGroups.value[currentGroup.value][currentArrow.value] = arrow; if (currentArrow.value < amount.value - 1) currentArrow.value++; + uni.setStorageSync("last-point-record", arrowGroups.value); }; -onLoad(() => { - uni.enableAlertBeforeUnload({ - message: "现在离开会导致未提交的数据丢失,是否继续?", - success: (res) => { - console.log("已启用离开提示"); - }, - }); -}); - -onMounted(() => { +onLoad((options) => { const pointBook = uni.getStorageSync("last-point-book"); if (pointBook.bowtargetType) { bowtarget.value = pointBook.bowtargetType; @@ -102,6 +102,22 @@ onMounted(() => { arrowGroups.value[i] = new Array(amount.value).fill({}); } } + if (options.withDraft) { + const draft = uni.getStorageSync("last-point-record"); + if (draft) { + Object.values(draft).some((arrows, index1) => + arrows.some((arrow, index2) => { + currentArrow.value = index2; + currentGroup.value = index1 + 1; + return JSON.stringify(arrow) === "{}"; + }) + ); + arrowGroups.value = draft; + } + } + // uni.enableAlertBeforeUnload({ + // message: "现在离开会导致未提交的数据丢失,是否继续?", + // }); }); @@ -140,8 +156,8 @@ onMounted(() => { : arrow.ring ? arrow.ring + " 环" : "" - }} + }} + 推荐在靶纸上落点计分,这样可获得稳定性分析 diff --git a/src/pages/point-book-list.vue b/src/pages/point-book-list.vue index 76b17cc..dd0ac3f 100644 --- a/src/pages/point-book-list.vue +++ b/src/pages/point-book-list.vue @@ -1,5 +1,6 @@