diff --git a/src/components/AppBackground.vue b/src/components/AppBackground.vue
index 6a31457..68c0cec 100644
--- a/src/components/AppBackground.vue
+++ b/src/components/AppBackground.vue
@@ -69,6 +69,18 @@ const props = defineProps({
src="@/static/app-bg7.png"
mode="widthFix"
/>
+
+
diff --git a/src/pages.json b/src/pages.json
index 1659b36..4ba6bae 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -117,13 +117,16 @@
{
"path": "pages/mine-bow-data"
},
- {
- "path": "pages/training/difficulty"
- },
- {
- "path": "pages/training/index"
- }
- ],
+ {
+ "path": "pages/training/difficulty"
+ },
+ {
+ "path": "pages/training/index"
+ },
+ {
+ "path": "pages/training/practise-one"
+ }
+ ],
"globalStyle": {
"backgroundColor": "@bgColor",
"backgroundColorBottom": "@bgColorBottom",
diff --git a/src/pages/training/components/BowTarget.vue b/src/pages/training/components/BowTarget.vue
new file mode 100644
index 0000000..a85473f
--- /dev/null
+++ b/src/pages/training/components/BowTarget.vue
@@ -0,0 +1,456 @@
+
+
+
+
+
+
+
+
+
+
+
+ 中场休息
+
+ 经验 +1
+
+ {{ latestOne.ringX ? "X" : latestOne.ring || "未上靶"
+ }}环
+
+
+ 经验 +1
+
+ {{ bluelatestOne.ringX ? "X" : bluelatestOne.ring || "未上靶"
+ }}环
+
+ {{ index + 1 }}
+
+
+
+ {{ index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/training/components/BubbleTip.vue b/src/pages/training/components/BubbleTip.vue
new file mode 100644
index 0000000..4fdfdb6
--- /dev/null
+++ b/src/pages/training/components/BubbleTip.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/training/components/ShootProgress.vue b/src/pages/training/components/ShootProgress.vue
new file mode 100644
index 0000000..4915f21
--- /dev/null
+++ b/src/pages/training/components/ShootProgress.vue
@@ -0,0 +1,379 @@
+
+
+
+
+
+
+
+
+
+
+
+ 剩余{{ remain }}秒
+
+
+
+
+
+
+
+
diff --git a/src/pages/training/components/TestDistance.vue b/src/pages/training/components/TestDistance.vue
new file mode 100644
index 0000000..654af6d
--- /dev/null
+++ b/src/pages/training/components/TestDistance.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+ 当前靶子为20cm全环靶,请更换靶子
+
+ 当前距离{{ distance }}米
+ 已达到距离要求
+ 请调整站位
+
+
+ 请射箭,测试站距
+
+
+
+
+
+
+
+
+
+
+ 具体正式比赛还有
+ {{ count }}
+ 秒
+
+ 进入中...
+
+
+
+
+
diff --git a/src/pages/training/difficulty.vue b/src/pages/training/difficulty.vue
index 2566af8..9bbc594 100644
--- a/src/pages/training/difficulty.vue
+++ b/src/pages/training/difficulty.vue
@@ -2,6 +2,7 @@
import { computed, nextTick, ref } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import Container from "@/components/Container.vue";
+import TargetPicker from "@/components/TargetPicker.vue";
import TrainingDifficultyBadge from "@/components/training/TrainingDifficultyBadge.vue";
import TrainingDifficultyPreviewCard from "@/components/training/TrainingDifficultyPreviewCard.vue";
import TrainingDifficultyStartButton from "@/components/training/TrainingDifficultyStartButton.vue";
@@ -41,6 +42,7 @@ const emptyDifficulty = {
const modeKey = ref(defaultModeKey);
const unlockedDifficultyId = ref(defaultUnlockedDifficultyId);
const selectedDifficultyId = ref(defaultUnlockedDifficultyId);
+const showTargetPicker = ref(false);
const nodesScrollTop = ref(0);
const nodesScrollWithAnimation = ref(false);
@@ -318,7 +320,11 @@ const initPageState = (options = {}) => {
});
};
-const saveTrainingContext = () => {
+const resolveTargetPaperType = (target) => {
+ return Number(target) === 1 ? "20厘米全环靶" : "40厘米全环靶";
+};
+
+const saveTrainingContext = (target) => {
const difficulty = selectedDifficulty.value;
if (!difficulty.id) {
@@ -330,7 +336,9 @@ const saveTrainingContext = () => {
trainingTitle: pageConfig.value.title,
difficultyId: difficulty.id,
difficultyLabel: difficulty.label,
- targetPaperType: difficulty.targetPaperType,
+ targetPaperType: target
+ ? resolveTargetPaperType(target)
+ : difficulty.targetPaperType,
});
};
@@ -369,6 +377,26 @@ const handleStart = () => {
});
};
+const openTargetPicker = () => {
+ if (!selectedDifficulty.value.id) {
+ return;
+ }
+
+ showTargetPicker.value = true;
+};
+
+const handleTargetConfirm = (target) => {
+ showTargetPicker.value = false;
+ saveTrainingContext(target);
+ // uni.showToast({
+ // title: `${selectedDifficulty.value.title} 即将开始`,
+ // icon: "none",
+ // });
+
+ uni.navigateTo({
+ url: `/pages/training/practise-one?target=${target}`,
+ });
+};
onLoad((options = {}) => {
initPageState(options);
@@ -424,10 +452,15 @@ onLoad((options = {}) => {
+
diff --git a/src/pages/training/practise-one.vue b/src/pages/training/practise-one.vue
new file mode 100644
index 0000000..ffc02e2
--- /dev/null
+++ b/src/pages/training/practise-one.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+ 还有两场,坚持
+ 就是胜利!💪
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/static/app-bg8.png b/src/static/app-bg8.png
new file mode 100644
index 0000000..9495c1b
Binary files /dev/null and b/src/static/app-bg8.png differ
diff --git a/src/static/app-bg9.png b/src/static/app-bg9.png
new file mode 100644
index 0000000..8cba031
Binary files /dev/null and b/src/static/app-bg9.png differ
diff --git a/src/static/training-difficulty-design/par-bg.png b/src/static/training-difficulty-design/par-bg.png
new file mode 100644
index 0000000..fa9bfb4
Binary files /dev/null and b/src/static/training-difficulty-design/par-bg.png differ
diff --git a/src/static/training-difficulty-design/par-icon.png b/src/static/training-difficulty-design/par-icon.png
new file mode 100644
index 0000000..0a950a4
Binary files /dev/null and b/src/static/training-difficulty-design/par-icon.png differ
diff --git a/src/static/training-difficulty-design/par-star.png b/src/static/training-difficulty-design/par-star.png
new file mode 100644
index 0000000..22fec68
Binary files /dev/null and b/src/static/training-difficulty-design/par-star.png differ
diff --git a/src/static/training-difficulty-design/text-icon-cgxl.png b/src/static/training-difficulty-design/text-icon-cgxl.png
new file mode 100644
index 0000000..d84fa47
Binary files /dev/null and b/src/static/training-difficulty-design/text-icon-cgxl.png differ