Compare commits
	
		
			40 Commits
		
	
	
		
			9ee59626a5
			...
			309760863a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 309760863a | ||
|  | f5a51ffa7c | ||
|  | 17a32a89de | ||
|  | 304a98e88b | ||
|  | 36fcab91a3 | ||
|  | 2036e060ac | ||
|  | bfd42e5364 | ||
|  | 30a46e6817 | ||
|  | ad7833a312 | ||
|  | 0ab8b5f9d1 | ||
|  | 60431c8aec | ||
|  | 1321652fd9 | ||
|  | f17d5913ac | ||
|  | ae4d2b91cd | ||
|  | 790dd3e5cf | ||
|  | 46dd94c8c7 | ||
|  | 2192624cc9 | ||
|  | aadb4da5f7 | ||
|  | 8a998fdb1f | ||
|  | bcbf855258 | ||
|  | 09e3861b06 | ||
|  | 8d16e66455 | ||
|  | 746cda119d | ||
|  | 81fc536df2 | ||
|  | 665abb28d0 | ||
|  | ee8b3a5bce | ||
|  | 4c8e63bd7d | ||
|  | 13bc4f4883 | ||
|  | 415267e307 | ||
|  | ebe909c4d7 | ||
|  | 44bb45327e | ||
|  | 76f1395794 | ||
|  | e49b6a78d4 | ||
|  | 629e31bc21 | ||
|  | 0562ef19c7 | ||
|  | cd4c6929f3 | ||
|  | 85fb2c3dc4 | ||
|  | e9635ec269 | ||
|  | e72ce59fca | ||
|  | 1f3bff1174 | 
| @ -102,3 +102,11 @@ export async function contractView(data) { | ||||
|         data | ||||
|     }) | ||||
| } | ||||
| export async function createBuyOrderV3(data) { | ||||
| 
 | ||||
|     return await request( { | ||||
|         url:'/api/v1/m/auction/createBuyOrder/v3', | ||||
|         method: 'POST', | ||||
|         data | ||||
|     }) | ||||
| } | ||||
| @ -1,6 +1,6 @@ | ||||
| <script setup> | ||||
| import {liveStore} from "~/stores/live/index.js"; | ||||
| import {createBuyOrder} from "~/api/goods/index.js"; | ||||
| import {createBuyOrder,createBuyOrderV3} from "~/api/goods/index.js"; | ||||
| import {goodStore} from "~/stores/goods/index.js"; | ||||
| import { showLoadingToast ,closeToast} from 'vant'; | ||||
| import {authStore} from "~/stores/auth/index.js"; | ||||
| @ -32,7 +32,7 @@ const confirmPay=async ()=>{ | ||||
|     forbidClick: true, | ||||
|   }); | ||||
| 
 | ||||
|  const res=await createBuyOrder({ | ||||
|  const res=await createBuyOrderV3({ | ||||
|    buyUid:payment.value.buyUid, | ||||
|    price:payStatus.value===0?payment.value.leftPrice:amount.value, | ||||
|    currency:payment.value.leftCurrency, | ||||
| @ -41,16 +41,18 @@ const confirmPay=async ()=>{ | ||||
|  }) | ||||
| 
 | ||||
|  if (res.status===0){ | ||||
|   checkoutSessionUrl.value=res.data.checkoutSessionUrl | ||||
|   payUid.value=res.data.payUid | ||||
|   router.push({ | ||||
|     path:'/checkoutPage', | ||||
|     query:{ | ||||
|       payUid:res.data.payUid, | ||||
|       returnUrl:'/payment/result', | ||||
|       stripeKey:res.data.checkoutSessionUrl | ||||
|     } | ||||
|   }) | ||||
|   payment.value.payUid=res.data.payUid | ||||
|   router.push('/payment/qrcode') | ||||
|   // checkoutSessionUrl.value=res.data.checkoutSessionUrl | ||||
|   // payUid.value=res.data.payUid | ||||
|   // router.push({ | ||||
|   //   path:'/checkoutPage', | ||||
|   //   query:{ | ||||
|   //     payUid:res.data.payUid, | ||||
|   //     returnUrl:'/payment/result', | ||||
|   //     stripeKey:res.data.checkoutSessionUrl | ||||
|   //   } | ||||
|   // }) | ||||
| } | ||||
| } | ||||
| const handleInput = (e) => { | ||||
|  | ||||
							
								
								
									
										86
									
								
								app/pages/payment/qrcode/index.client.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								app/pages/payment/qrcode/index.client.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,86 @@ | ||||
| <template> | ||||
| <div class="w-[100vw] h-screen-nav bg-[url('@/static/images/3532@2x.png')] bg-cover flex-grow-1 flex flex-col items-center pt-183px px-30px"> | ||||
|     <div class="text-#000 text-16px mb-25px">等待销售员确认</div> | ||||
|     <img :src="qrCodeUrl" alt="" class="mb-10px"> | ||||
|     <div class="text-#848484 text-14px">已生成订单确认二维码</div> | ||||
| </div> | ||||
| </template> | ||||
| <script setup> | ||||
| import QRCode from 'qrcode'; | ||||
| import { ref } from 'vue'; | ||||
| import {authStore} from "~/stores/auth/index.js"; | ||||
| import {orderQuery} from "~/api/goods/index.js"; | ||||
| const {payment}= authStore() | ||||
| definePageMeta({ | ||||
|   i18n: 'payment.title' | ||||
| }) | ||||
| const router=useRouter() | ||||
| const resData=ref({}) | ||||
| let timer = null | ||||
| const queryOrder = async () => { | ||||
|   try { | ||||
|     const res = await orderQuery({ | ||||
|       orderNo: payment.value.payUid | ||||
|     }) | ||||
| 
 | ||||
|     if (res.status === 0) { | ||||
|       resData.value = res.data | ||||
| 
 | ||||
|       // 只在支付成功时停止轮询 | ||||
|       if (resData.value.status === 1) { | ||||
|         clearInterval(timer) | ||||
|          router.push({ | ||||
|         path: '/payment/result', | ||||
|         query:{ | ||||
|           orderNo:payment.value.payUid | ||||
|         } | ||||
|       }) | ||||
|       } | ||||
|     } | ||||
|   } catch (error) { | ||||
|     clearInterval(timer) | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // 立即执行一次 | ||||
| await queryOrder() | ||||
| const qrCodeUrl=ref('') | ||||
| // 开始轮询 | ||||
| timer = setInterval(async () => { | ||||
|   await queryOrder() | ||||
| }, 1000) | ||||
| 
 | ||||
| // 组件卸载时清除定时器 | ||||
| onUnmounted(() => { | ||||
|   if (timer) { | ||||
|     clearInterval(timer) | ||||
|     closeToast() | ||||
|   } | ||||
| }) | ||||
| async function generateQRCodeURL(text) { | ||||
|   try { | ||||
|     const url = await QRCode.toDataURL(text, { | ||||
|       width: 283, | ||||
|       margin: 1, | ||||
|       errorCorrectionLevel: 'H', | ||||
|       color: { | ||||
|         dark: '#2B53AC',    // 深色部分使用蓝色 | ||||
|         light: '#ffffff'    // 浅色部分使用白色 | ||||
|       }, | ||||
|       rendererOpts: { | ||||
|         quality: 1.0 | ||||
|       } | ||||
|     }); | ||||
|     return url; | ||||
|   } catch (err) { | ||||
|     console.error(err); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| qrCodeUrl.value = await generateQRCodeURL(JSON.stringify({ | ||||
|   type:'auction-order', | ||||
|   buyUid: payment.value.buyUid, | ||||
|   payUid:payment.value.payUid | ||||
| })) | ||||
| </script> | ||||
| @ -18,6 +18,7 @@ const localState = ref({ | ||||
| }) | ||||
| 
 | ||||
| const groupByDate = (data) => { | ||||
|    | ||||
|   if (!Array.isArray(data)) return [] | ||||
| 
 | ||||
|   return Object.values(data.reduce((acc, curr) => { | ||||
| @ -48,8 +49,10 @@ const onRefresh = async () => { | ||||
| 
 | ||||
| const goPay = (item) => { | ||||
|   payment.value.leftPrice=item.leftCnyPrice | ||||
|   payment.value.nickName=item.nickName | ||||
|   payment.value.leftCurrency=item.leftCurrency | ||||
|   payment.value.buyUid=item.uuid | ||||
|   payment.value.artworkTitle=item?.auctionArtworkInfo?.artworkTitle | ||||
|  payment.value.auctionArtworkUuid=item?.auctionArtworkUuid | ||||
|   if (item.status===1){ | ||||
|     router.push('/signature/protocol') | ||||
|  | ||||
| @ -13,7 +13,9 @@ export const authStore = createGlobalState(() => { | ||||
|         leftPrice:'', | ||||
|         leftCurrency:'', | ||||
|         buyUid:'', | ||||
|         auctionArtworkUuid:'' | ||||
|         auctionArtworkUuid:'', | ||||
|         payUid:'', | ||||
|         nickName:'' | ||||
|     }) | ||||
| const payUid=useLocalStorage('payUid','') | ||||
|     return{ | ||||
|  | ||||
| @ -1,6 +1,5 @@ | ||||
| import dotenv from 'dotenv' | ||||
| import process from 'node:process' | ||||
| import imagemin from 'vite-plugin-imagemin' | ||||
| import { currentLocales } from './i18n/i18n' | ||||
| import fs from 'fs' | ||||
| import path from 'path' | ||||
| @ -127,33 +126,6 @@ export default defineNuxtConfig({ | ||||
|       ], | ||||
|     }, | ||||
|     plugins: [ | ||||
|       imagemin({ | ||||
|         gifsicle: { | ||||
|           optimizationLevel: 7, | ||||
|           interlaced: false | ||||
|         }, | ||||
|         optipng: { | ||||
|           optimizationLevel: 7 | ||||
|         }, | ||||
|         mozjpeg: { | ||||
|           quality: 70 | ||||
|         }, | ||||
|         pngquant: { | ||||
|           quality: [0.8, 0.9], | ||||
|           speed: 4 | ||||
|         }, | ||||
|         svgo: { | ||||
|           plugins: [ | ||||
|             { | ||||
|               name: 'removeViewBox' | ||||
|             }, | ||||
|             { | ||||
|               name: 'removeEmptyAttrs', | ||||
|               active: false | ||||
|             } | ||||
|           ] | ||||
|         } | ||||
|       }) | ||||
|     ] | ||||
|   }, | ||||
| 
 | ||||
|  | ||||
| @ -18,6 +18,7 @@ | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@fingerprintjs/fingerprintjs": "^4.5.1", | ||||
|     "@intlify/message-compiler": "^11.1.3", | ||||
|     "@nuxtjs/i18n": "^9.1.1", | ||||
|     "@vue-office/pdf": "^2.0.10", | ||||
|     "@vueuse/components": "^12.8.2", | ||||
| @ -53,8 +54,7 @@ | ||||
|     "sass-loader": "^16.0.4", | ||||
|     "sharp": "^0.33.5", | ||||
|     "typescript": "~5.7.2", | ||||
|     "vant": "^4.9.15", | ||||
|     "vite-plugin-imagemin": "^0.6.1" | ||||
|     "vant": "^4.9.15" | ||||
|   }, | ||||
|   "pnpm": { | ||||
|     "peerDependencyRules": { | ||||
|  | ||||
							
								
								
									
										5523
									
								
								pnpm-lock.yaml
									
									
									
									
									
								
							
							
						
						
									
										5523
									
								
								pnpm-lock.yaml
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -24,7 +24,7 @@ export default defineConfig({ | ||||
|   ], | ||||
|   shortcuts: [ | ||||
|     // shortcuts to multiple utilities
 | ||||
|     ['btn', 'px-6 py-3 rounded-3 inline-block bg-primary text-white cursor-pointer hover:bg-primary-hover disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'], | ||||
|     ['btn', 'px-6 py-3 rounded-3 inline-block bg-primary text-white cursor-pointer disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'], | ||||
|   ], | ||||
| 
 | ||||
|   presets: [ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user