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 @@
@@ -97,6 +115,33 @@ const onSelectOption = (itemIndex, value) => {
+
+
+
+
+
+
+
+
+ {{ pointDraft.bowType.name }}
+ {{ pointDraft.distance }}米
+ {{ pointDraft.bowtargetType.name }}
+
+
+ 本地草稿
+
+ 计分待完成
+
+
+
+
+
+
+
@@ -113,7 +158,7 @@ const onSelectOption = (itemIndex, value) => {
+ />
暂无数据
@@ -274,4 +319,54 @@ const onSelectOption = (itemIndex, value) => {
width: 44rpx;
height: 44rpx;
}
+.point-draft {
+ height: 200rpx;
+ border-radius: 25rpx;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+}
+.point-draft > text {
+ font-weight: 500;
+ font-size: 40rpx;
+ color: #333333;
+ margin: 0 20rpx;
+}
+.point-draft > view:last-child {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background: #000000b3;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+}
+.point-draft > view:last-child > image {
+ width: 46rpx;
+ height: 38rpx;
+ margin-bottom: 10rpx;
+}
+.point-draft > view:last-child > text {
+ font-weight: 500;
+ font-size: 26rpx;
+ color: #ffffff;
+}
+.point-draft > view:last-child > view {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 22rpx;
+ color: #ffffff;
+ transform: translateX(8rpx);
+}
+.point-draft > view:last-child > view > image {
+ width: 30rpx;
+ height: 30rpx;
+ transform: rotate(180deg);
+}
diff --git a/src/pages/point-book.vue b/src/pages/point-book.vue
index c86f07e..5d87959 100644
--- a/src/pages/point-book.vue
+++ b/src/pages/point-book.vue
@@ -58,29 +58,33 @@ const onSignin = () => {
const startScoring = () => {
if (user.value.id) {
- uni.navigateTo({
- url: "/pages/point-book-create",
- });
+ const draft = uni.getStorageSync("last-point-record");
+ if (draft) {
+ showTip2.value = true;
+ return;
+ }
+ toScorePage();
} else {
showModal.value = true;
}
};
-const onRemoveRecord = (item) => {
- removeId.value = item.id;
- showTip2.value = true;
+const toScorePage = (withDraft) => {
+ showTip2.value = false;
+ if (withDraft) {
+ return uni.navigateTo({
+ url: "/pages/point-book-edit?withDraft=true",
+ });
+ }
+ uni.removeStorageSync("last-point-record");
+ return uni.navigateTo({
+ url: "/pages/point-book-create",
+ });
};
-const confirmRemove = async () => {
- try {
- showTip2.value = false;
- await removePointRecord(removeId.value);
- const result = await getPointBookListAPI(1);
- list.value = result.slice(0, 3);
- uni.showToast({ title: "已删除", icon: "none" });
- } catch (e) {
- uni.showToast({ title: "删除失败,请重试", icon: "none" });
- }
+const closeHint = () => {
+ showTip.value = false;
+ showTip2.value = false;
};
const loadData = async () => {
@@ -352,20 +356,21 @@ onShareTimeline(() => {
-
+
- 确认删除该记录吗?
+ 发现未完成的记分,是否继续编辑?
-
-
+
+
diff --git a/src/static/draft-icon.png b/src/static/draft-icon.png
new file mode 100644
index 0000000..21499c9
Binary files /dev/null and b/src/static/draft-icon.png differ