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