diff --git a/scanner/app.json b/scanner/app.json
index a3b286e..8f62ff9 100644
--- a/scanner/app.json
+++ b/scanner/app.json
@@ -3,6 +3,7 @@
"pages/index/index",
"pages/camera/camera",
"pages/emblemscanner/emblemscanner",
+ "pages/result_page/result_page",
"pages/productinfo/productinfo",
"pages/test_result_page/test_result_page",
"pages/camentry/camentry",
diff --git a/scanner/pages/emblemscanner/emblemscanner.wxml b/scanner/pages/emblemscanner/emblemscanner.wxml
index 8ad441c..d6419d9 100644
--- a/scanner/pages/emblemscanner/emblemscanner.wxml
+++ b/scanner/pages/emblemscanner/emblemscanner.wxml
@@ -37,8 +37,8 @@
diff --git a/scanner/pages/index/index.js b/scanner/pages/index/index.js
index 0e40e42..78868f2 100644
--- a/scanner/pages/index/index.js
+++ b/scanner/pages/index/index.js
@@ -129,7 +129,7 @@ Page({
goto_camera: function () {
this.getUserProfile(() => {
wx.navigateTo({
- url: '/pages/emblemscanner/emblemscanner?return_page=/pages/productinfo/productinfo'
+ url: '/pages/emblemscanner/emblemscanner?return_page=/pages/result_page/result_page'
});
});
},
diff --git a/scanner/pages/result_page/result_page.js b/scanner/pages/result_page/result_page.js
new file mode 100644
index 0000000..947daa2
--- /dev/null
+++ b/scanner/pages/result_page/result_page.js
@@ -0,0 +1,116 @@
+// Result Page - Handle emblemscanner results and navigation
+Page({
+ /**
+ * Page initial data
+ */
+ data: {
+ ok: false,
+ qr_code: '',
+ serial_code: '',
+ scan_timestamp: '',
+ show_verify_failed: false
+ },
+
+ /**
+ * Lifecycle function--Called when page load
+ */
+ onLoad(options) {
+ console.log('Result page loaded with options:', options);
+
+ const timestamp = new Date().toLocaleString();
+ const ok = options.ok === '1';
+ const qr_code = options.qr_code || '';
+ const serial_code = options.serial_code || '';
+
+ this.setData({
+ ok: ok,
+ qr_code: decodeURIComponent(qr_code),
+ serial_code: decodeURIComponent(serial_code),
+ scan_timestamp: timestamp,
+ show_verify_failed: !ok
+ });
+
+ console.log('Result page data:', {
+ ok: ok,
+ qr_code: qr_code,
+ serial_code: serial_code
+ });
+
+ // Handle navigation based on result
+ if (ok && serial_code) {
+ // Success case: redirect to productinfo page
+ this.redirectToProductInfo(serial_code);
+ } else if (!ok) {
+ // Failure case: show verify failed UI
+ this.showVerifyFailed();
+ }
+ },
+
+ /**
+ * Redirect to product info page with serial code
+ */
+ redirectToProductInfo(serialCode) {
+ console.log('Redirecting to productinfo with serial_code:', serialCode);
+
+ wx.redirectTo({
+ url: `/pages/productinfo/productinfo?serial_code=${encodeURIComponent(serialCode)}`,
+ success: () => {
+ console.log('Successfully redirected to productinfo');
+ },
+ fail: (err) => {
+ console.error('Failed to redirect to productinfo:', err);
+ // Fallback: show verify failed UI
+ this.showVerifyFailed();
+ }
+ });
+ },
+
+ /**
+ * Show verify failed UI
+ */
+ showVerifyFailed() {
+ console.log('Showing verify failed UI');
+ this.setData({
+ show_verify_failed: true
+ });
+ },
+
+ /**
+ * Handle verifyfailed component back event - rescan
+ */
+ onVerifyFailedBack() {
+ console.log('Verify failed back event - rescanning');
+ this.rescan();
+ },
+
+ /**
+ * Handle verifyfailed component service event
+ */
+ onVerifyFailedService() {
+ console.log('Verify failed service event - showing service modal');
+ // You can implement service modal logic here if needed
+ // For now, just log it
+ },
+
+ /**
+ * Rescan - go back to emblemscanner
+ */
+ rescan() {
+ console.log('Rescan button clicked');
+
+ wx.redirectTo({
+ url: '/pages/emblemscanner/emblemscanner',
+ success: () => {
+ console.log('Successfully redirected to emblemscanner');
+ },
+ fail: (err) => {
+ console.error('Failed to redirect to emblemscanner:', err);
+ wx.showToast({
+ title: 'Navigation failed',
+ icon: 'error'
+ });
+ }
+ });
+ },
+
+});
\ No newline at end of file
diff --git a/scanner/pages/result_page/result_page.json b/scanner/pages/result_page/result_page.json
new file mode 100644
index 0000000..7ecc028
--- /dev/null
+++ b/scanner/pages/result_page/result_page.json
@@ -0,0 +1,9 @@
+{
+ "usingComponents": {
+ "verifyfailed": "/components/verifyfailed/verifyfailed"
+ },
+ "navigationBarTitleText": "扫码结果",
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "backgroundColor": "#f5f5f5"
+}
\ No newline at end of file
diff --git a/scanner/pages/result_page/result_page.wxml b/scanner/pages/result_page/result_page.wxml
new file mode 100644
index 0000000..37fc8af
--- /dev/null
+++ b/scanner/pages/result_page/result_page.wxml
@@ -0,0 +1,12 @@
+
+
+
+
+ ✓
+ 验证成功
+ 正在跳转...
+
+
+
+
+
\ No newline at end of file
diff --git a/scanner/pages/result_page/result_page.wxss b/scanner/pages/result_page/result_page.wxss
new file mode 100644
index 0000000..626990c
--- /dev/null
+++ b/scanner/pages/result_page/result_page.wxss
@@ -0,0 +1,33 @@
+/* pages/result_page/result_page.wxss */
+.container {
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ background-color: #f5f5f5;
+ padding: 40rpx;
+}
+
+/* Success state (should be briefly visible before redirect) */
+.success-container {
+ text-align: center;
+}
+
+.success-icon {
+ font-size: 120rpx;
+ color: #07c160;
+ margin-bottom: 40rpx;
+}
+
+.success-text {
+ font-size: 48rpx;
+ font-weight: bold;
+ color: #333;
+ margin-bottom: 20rpx;
+}
+
+.success-subtext {
+ font-size: 32rpx;
+ color: #666;
+}
\ No newline at end of file