feat: 行权记录二维码

This commit is contained in:
黄泽群
2026-01-14 15:00:24 +08:00
committed by charles
parent 20fe8528e3
commit 04bd8f2b77
7 changed files with 1902 additions and 854 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
{ {
"customPlaygroundType" : "device", "customPlaygroundType" : "device",
"packageName" : "com.trustbridge.mm", "packageName" : "com.trustbridge.mm",
"playground" : "standard", "playground" : "custom",
"type" : "uni-app:app-android" "type" : "uni-app:app-android"
}, },
{ {
+485
View File
@@ -12,11 +12,164 @@
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"decimal.js": "^10.6.0", "decimal.js": "^10.6.0",
"echarts": "^5.1.2", "echarts": "^5.1.2",
"qrcode.vue": "^3.6.0",
"qs-canvas": "^1.0.11", "qs-canvas": "^1.0.11",
"tabber-component": "^1.0.0", "tabber-component": "^1.0.0",
"vue-clipboard2": "^0.3.3" "vue-clipboard2": "^0.3.3"
} }
}, },
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"peer": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"peer": true,
"dependencies": {
"@babel/types": "^7.28.5"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/types": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"peer": true,
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"peer": true
},
"node_modules/@vue/compiler-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"peer": true,
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
"integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"peer": true,
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.26",
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/reactivity": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"peer": true,
"dependencies": {
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz",
"integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
},
"peerDependencies": {
"vue": "3.5.26"
}
},
"node_modules/@vue/shared": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
"peer": true
},
"node_modules/clipboard": { "node_modules/clipboard": {
"version": "2.0.11", "version": "2.0.11",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
@@ -32,6 +185,12 @@
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
}, },
"node_modules/csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"peer": true
},
"node_modules/dayjs": { "node_modules/dayjs": {
"version": "1.11.13", "version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
@@ -56,6 +215,24 @@
"zrender": "5.6.1" "zrender": "5.6.1"
} }
}, },
"node_modules/entities": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.0.tgz",
"integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"peer": true
},
"node_modules/good-listener": { "node_modules/good-listener": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
@@ -64,6 +241,75 @@
"delegate": "^3.1.2" "delegate": "^3.1.2"
} }
}, },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"peer": true
},
"node_modules/postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/qrcode.vue": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.6.0.tgz",
"integrity": "sha512-vQcl2fyHYHMjDO1GguCldJxepq2izQjBkDEEu9NENgfVKP6mv/e2SU62WbqYHGwTgWXLhxZ1NCD1dAZKHQq1fg==",
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/qs-canvas": { "node_modules/qs-canvas": {
"version": "1.0.11", "version": "1.0.11",
"resolved": "https://registry.npmjs.org/qs-canvas/-/qs-canvas-1.0.11.tgz", "resolved": "https://registry.npmjs.org/qs-canvas/-/qs-canvas-1.0.11.tgz",
@@ -74,6 +320,15 @@
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
}, },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tabber-component": { "node_modules/tabber-component": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/tabber-component/-/tabber-component-1.0.0.tgz", "resolved": "https://registry.npmmirror.com/tabber-component/-/tabber-component-1.0.0.tgz",
@@ -89,6 +344,27 @@
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}, },
"node_modules/vue": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-sfc": "3.5.26",
"@vue/runtime-dom": "3.5.26",
"@vue/server-renderer": "3.5.26",
"@vue/shared": "3.5.26"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/vue-clipboard2": { "node_modules/vue-clipboard2": {
"version": "0.3.3", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz", "resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
@@ -107,6 +383,140 @@
} }
}, },
"dependencies": { "dependencies": {
"@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"peer": true
},
"@babel/helper-validator-identifier": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"peer": true
},
"@babel/parser": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.5.tgz",
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
"peer": true,
"requires": {
"@babel/types": "^7.28.5"
}
},
"@babel/types": {
"version": "7.28.5",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.28.5.tgz",
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
"peer": true,
"requires": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.28.5"
}
},
"@jridgewell/sourcemap-codec": {
"version": "1.5.5",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"peer": true
},
"@vue/compiler-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
"peer": true,
"requires": {
"@babel/parser": "^7.28.5",
"@vue/shared": "3.5.26",
"entities": "^7.0.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"@vue/compiler-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
"integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
"peer": true,
"requires": {
"@vue/compiler-core": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/compiler-sfc": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
"peer": true,
"requires": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.26",
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.21",
"postcss": "^8.5.6",
"source-map-js": "^1.2.1"
}
},
"@vue/compiler-ssr": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
"peer": true,
"requires": {
"@vue/compiler-dom": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/reactivity": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.26.tgz",
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
"peer": true,
"requires": {
"@vue/shared": "3.5.26"
}
},
"@vue/runtime-core": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.26.tgz",
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
"peer": true,
"requires": {
"@vue/reactivity": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/runtime-dom": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.26.tgz",
"integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==",
"peer": true,
"requires": {
"@vue/reactivity": "3.5.26",
"@vue/runtime-core": "3.5.26",
"@vue/shared": "3.5.26",
"csstype": "^3.2.3"
}
},
"@vue/server-renderer": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.26.tgz",
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
"peer": true,
"requires": {
"@vue/compiler-ssr": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"@vue/shared": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.26.tgz",
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
"peer": true
},
"clipboard": { "clipboard": {
"version": "2.0.11", "version": "2.0.11",
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
@@ -122,6 +532,12 @@
"resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
}, },
"csstype": {
"version": "3.2.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"peer": true
},
"dayjs": { "dayjs": {
"version": "1.11.13", "version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
@@ -146,6 +562,18 @@
"zrender": "5.6.1" "zrender": "5.6.1"
} }
}, },
"entities": {
"version": "7.0.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.0.tgz",
"integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
"peer": true
},
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"peer": true
},
"good-listener": { "good-listener": {
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
@@ -154,6 +582,44 @@
"delegate": "^3.1.2" "delegate": "^3.1.2"
} }
}, },
"magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz",
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"peer": true,
"requires": {
"@jridgewell/sourcemap-codec": "^1.5.5"
}
},
"nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"peer": true
},
"picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"peer": true
},
"postcss": {
"version": "8.5.6",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz",
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"peer": true,
"requires": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
}
},
"qrcode.vue": {
"version": "3.6.0",
"resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.6.0.tgz",
"integrity": "sha512-vQcl2fyHYHMjDO1GguCldJxepq2izQjBkDEEu9NENgfVKP6mv/e2SU62WbqYHGwTgWXLhxZ1NCD1dAZKHQq1fg==",
"requires": {}
},
"qs-canvas": { "qs-canvas": {
"version": "1.0.11", "version": "1.0.11",
"resolved": "https://registry.npmjs.org/qs-canvas/-/qs-canvas-1.0.11.tgz", "resolved": "https://registry.npmjs.org/qs-canvas/-/qs-canvas-1.0.11.tgz",
@@ -164,6 +630,12 @@
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
"integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
}, },
"source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"peer": true
},
"tabber-component": { "tabber-component": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmmirror.com/tabber-component/-/tabber-component-1.0.0.tgz", "resolved": "https://registry.npmmirror.com/tabber-component/-/tabber-component-1.0.0.tgz",
@@ -179,6 +651,19 @@
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}, },
"vue": {
"version": "3.5.26",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.26.tgz",
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
"peer": true,
"requires": {
"@vue/compiler-dom": "3.5.26",
"@vue/compiler-sfc": "3.5.26",
"@vue/runtime-dom": "3.5.26",
"@vue/server-renderer": "3.5.26",
"@vue/shared": "3.5.26"
}
},
"vue-clipboard2": { "vue-clipboard2": {
"version": "0.3.3", "version": "0.3.3",
"resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz", "resolved": "https://registry.npmjs.org/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
@@ -1,13 +1,27 @@
<template> <template>
<view class="mine_order_info_warp" :style="{ <view
'height': 'calc(100vh - ' + height + ')' class="mine_order_info_warp"
}"> :style="{
height: height,
}"
>
<up-loading-page :loading="listLoading"></up-loading-page> <up-loading-page :loading="listLoading"></up-loading-page>
<view class="order_info_header"> <view class="order_info_header">
<up-image src="/static/common/left_b.png" width="20" height="19" bgColor="#f1f6ff00" @click="jumpLeft"></up-image> <up-image
src="/static/common/left_b.png"
width="20"
height="19"
bgColor="#f1f6ff00"
@click="jumpLeft"
></up-image>
<view class="header_status"> <view class="header_status">
<view style="margin-top: 10rpx;"> <view style="margin-top: 10rpx">
<up-image src="/static/common/order_status_1.png" width="20" height="19" bgColor="#f1f6ff00"></up-image> <up-image
src="/static/common/order_status_1.png"
width="20"
height="19"
bgColor="#f1f6ff00"
></up-image>
</view> </view>
<text class="msg">{{ getValue(ORDER_STATUS, orderInfo.status) }}</text> <text class="msg">{{ getValue(ORDER_STATUS, orderInfo.status) }}</text>
</view> </view>
@@ -16,26 +30,50 @@
<!-- 等待付款 --> <!-- 等待付款 -->
<view class="content_due" v-if="orderInfo.status === ORDER_TYPE.UNPAID"> <view class="content_due" v-if="orderInfo.status === ORDER_TYPE.UNPAID">
<view style=""> <view style="">
<text style="font-size: 28rpx;font-weight: bold;">需付款:</text> <text style="font-size: 28rpx; font-weight: bold">需付款:</text>
<text style="font-size: 28rpx;">¥</text> <text style="font-size: 28rpx">¥</text>
<text style="font-size: 36rpx;font-weight: bold;">{{ orderInfo.sumAmount }}</text> <text style="font-size: 36rpx; font-weight: bold">{{
<text style="font-size: 20rpx;font-weight: bold;margin-left: 20rpx;">订单</text> orderInfo.sumAmount
<text style="font-size: 28rpx;font-weight: bold;margin-left: 10rpx;">{{ formatDate1(orderInfo.expireTime)
}}</text> }}</text>
<text style="font-size: 20rpx;font-weight: bold;">&nbsp;自动取消</text> <text style="font-size: 20rpx; font-weight: bold; margin-left: 20rpx"
>订单</text
>
<text
style="font-size: 28rpx; font-weight: bold; margin-left: 10rpx"
>{{ formatDate1(orderInfo.expireTime) }}</text
>
<text style="font-size: 20rpx; font-weight: bold"
>&nbsp;自动取消</text
>
</view> </view>
</view> </view>
<view class="content_cancel" v-if="orderInfo.status === ORDER_TYPE.CANCELED">取消原因:超时未支付</view> <view
class="content_cancel"
v-if="orderInfo.status === ORDER_TYPE.CANCELED"
>取消原因:超时未支付</view
>
<!-- 地址 --> <!-- 地址 -->
<view class="steps_warp"> <view class="steps_warp">
<!-- 物流单号 --> <!-- 物流单号 -->
<view class="address_info"> <view class="address_info">
<view class="address_data_warp"> <view class="address_data_warp">
<up-image src="/static/common/waybill.png" width="20" height="20" bgColor="#f1f6ff00"></up-image> <up-image
src="/static/common/waybill.png"
width="20"
height="20"
bgColor="#f1f6ff00"
></up-image>
<view class="address_info_name">订单编号:</view> <view class="address_info_name">订单编号:</view>
<view class="address_info_mobile" style="margin-right: 20rpx;">{{ orderInfo.orderNum }}</view> <view class="address_info_mobile" style="margin-right: 20rpx">{{
<up-image src="/static/common/copy.png" width="14" height="14" bgColor="#f1f6ff00" orderInfo.orderNum
@click="copyData(orderInfo.orderNum)"></up-image> }}</view>
<up-image
src="/static/common/copy.png"
width="14"
height="14"
bgColor="#f1f6ff00"
@click="copyData(orderInfo.orderNum)"
></up-image>
</view> </view>
</view> </view>
<view class="address_info_right">&nbsp;</view> <view class="address_info_right">&nbsp;</view>
@@ -43,7 +81,12 @@
<view class="address_warp"> <view class="address_warp">
<view class="address_info"> <view class="address_info">
<view class="address_data_warp"> <view class="address_data_warp">
<up-image src="/static/common/address.png" width="20" height="20" bgColor="#f1f6ff00"></up-image> <up-image
src="/static/common/address.png"
width="20"
height="20"
bgColor="#f1f6ff00"
></up-image>
<view class="address_info_name">{{ orderInfo.name }}</view> <view class="address_info_name">{{ orderInfo.name }}</view>
<view class="address_info_mobile">{{ orderInfo.phone }}</view> <view class="address_info_mobile">{{ orderInfo.phone }}</view>
</view> </view>
@@ -59,25 +102,42 @@
<view class="order_comm order_product_warp"> <view class="order_comm order_product_warp">
<!-- 头部 --> <!-- 头部 -->
<view class="order_product_header"> <view class="order_product_header">
<up-image :src="orderInfo.shopLogo" width="22" height="22" bgColor="#f1f6ff00" shape="circle"></up-image> <up-image
:src="orderInfo.shopLogo"
width="22"
height="22"
bgColor="#f1f6ff00"
shape="circle"
></up-image>
<view class="order_product_title">{{ orderInfo.shopName }}</view> <view class="order_product_title">{{ orderInfo.shopName }}</view>
</view> </view>
<!-- 产品详情 --> <!-- 产品详情 -->
<view class="order_item_content"> <view class="order_item_content">
<view v-for="pItem in orderInfo.items" :key="pItem.id"> <view v-for="pItem in orderInfo.items" :key="pItem.id">
<view class="content_item"> <view class="content_item">
<up-image :src="pItem.mainGraph" width="80" height="80" bgColor="#f1f6ff00"></up-image> <up-image
:src="pItem.mainGraph"
width="80"
height="80"
bgColor="#f1f6ff00"
></up-image>
<view class="content_info"> <view class="content_info">
<view class="content_info_title">{{ pItem.title }}</view> <view class="content_info_title">{{ pItem.title }}</view>
<view class="content_info_tag">{{ pItem.goodsSpece }}</view> <view class="content_info_tag">{{ pItem.goodsSpece }}</view>
<view> <view>
<text class="content_info_description" v-for="dItem in pItem.description" :key="dItem"> <text
class="content_info_description"
v-for="dItem in pItem.description"
:key="dItem"
>
{{ dItem }} {{ dItem }}
</text> </text>
</view> </view>
</view> </view>
<view class="content_right"> <view class="content_right">
<view class="content_right_total">¥{{ pItem.goodsAmount }}</view> <view class="content_right_total"
>¥{{ pItem.goodsAmount }}</view
>
<view class="content_right_quantity">x{{ pItem.buyNum }}</view> <view class="content_right_quantity">x{{ pItem.buyNum }}</view>
</view> </view>
</view> </view>
@@ -86,16 +146,20 @@
<view class="item_title">运单号:</view> <view class="item_title">运单号:</view>
<view class="item_value"> <view class="item_value">
<view>{{ pItem.expressNo }} </view> <view>{{ pItem.expressNo }} </view>
<view style="margin-left:10rpx;"> <view style="margin-left: 10rpx">
<up-image src="/static/common/copy.png" width="14" height="14" bgColor="#f1f6ff00" <up-image
@click="copyData(pItem.expressNo)"></up-image> src="/static/common/copy.png"
width="14"
height="14"
bgColor="#f1f6ff00"
@click="copyData(pItem.expressNo)"
></up-image>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- 金额等数据汇总 --> <!-- 金额等数据汇总 -->
@@ -109,12 +173,18 @@
<view class="item_value">¥{{ orderInfo.postage }}</view> <view class="item_value">¥{{ orderInfo.postage }}</view>
</view> </view>
<view class="data_item"> <view class="data_item">
<view class="item_title">平台优惠<text class="copy_order_coupon" v-if="orderInfo.coupon">优惠券</text></view> <view class="item_title"
>平台优惠<text class="copy_order_coupon" v-if="orderInfo.coupon"
>优惠券</text
></view
>
<view class="item_value">-¥0.00</view> <view class="item_value">-¥0.00</view>
</view> </view>
<view class="data_item"> <view class="data_item">
<view class="item_title">应付款</view> <view class="item_title">应付款</view>
<view class="item_value pay_amount">¥{{ orderInfo.sumAmount + orderInfo.postage }}</view> <view class="item_value pay_amount"
>¥{{ orderInfo.sumAmount + orderInfo.postage }}</view
>
</view> </view>
<view class="order_data_but"></view> <view class="order_data_but"></view>
@@ -136,64 +206,155 @@
</view> </view>
</view> </view>
<view class="code_content" v-if="orderInfo.antChainHash">
<view>
<view style="font-size: 28rpx; color: #333; font-weight: bold"
>您的订单已接入蚂蚁链溯源</view
>
<view style="font-size: 20rpx; color: #999; margin-bottom: 18rpx"
>扫描二维码或复制下方链接查看溯源信息</view
>
<view class="code_content_item"><view class="code_content_item_text">
{{
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${orderInfo.antChainHash}`
}}
</view>
<up-image
style="margin-left: 8rpx"
src="/static/rwa/copy.png"
width="12"
@click="
copyData(
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${orderInfo.antChainHash}`
)
"
height="12"
bgColor="#f1f6ff00"
></up-image
></view>
</view>
<view>
<up-qrcode
:val="`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${orderInfo.antChainHash}`"
:size="63"
@click.stop="previewQrcode(`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${orderInfo.antChainHash}`)"
></up-qrcode>
</view>
</view>
<!-- 支付方式 --> <!-- 支付方式 -->
<view class="order_way_warp" @click="wayShowFun(true)" v-if="orderInfo.status === ORDER_TYPE.UNPAID"> <view
class="order_way_warp"
@click="wayShowFun(true)"
v-if="orderInfo.status === ORDER_TYPE.UNPAID"
>
<view>支付方式</view> <view>支付方式</view>
<view class="order_way_right"> <view class="order_way_right">
{{ getValue(wayOption, wayForm.payway) }} {{ getValue(wayOption, wayForm.payway) }}
<up-image src="/static/common/right.png" width="20" height="20" bgColor="#f1f6ff00"></up-image> <up-image
src="/static/common/right.png"
width="20"
height="20"
bgColor="#f1f6ff00"
></up-image>
</view> </view>
</view> </view>
</view> </view>
<view class="collect_operate order_but_warp" <view
v-if="[ORDER_TYPE.UNPAID, ORDER_TYPE.NOT_RECEIVE].includes(orderInfo.status)"> class="collect_operate order_but_warp"
v-if="
[ORDER_TYPE.UNPAID, ORDER_TYPE.NOT_RECEIVE].includes(orderInfo.status)
"
>
<!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">取消订单</view> --> <!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">取消订单</view> -->
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.UNPAID" @click="goPay">去付款</view> <view
class="operate_comm operate_but_2"
v-if="orderInfo.status === ORDER_TYPE.UNPAID"
@click="goPay"
>去付款</view
>
<!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.COMPLETED">申请退款</view> --> <!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.COMPLETED">申请退款</view> -->
<view class="operate_comm operate_but_2" v-if="orderInfo.status === ORDER_TYPE.NOT_RECEIVE" <view
@click="confirmReceiptOk(orderInfo)">确认收货</view> class="operate_comm operate_but_2"
v-if="orderInfo.status === ORDER_TYPE.NOT_RECEIVE"
@click="confirmReceiptOk(orderInfo)"
>确认收货</view
>
<!-- <view class="operate_comm operate_but_3" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">提醒发货</view> --> <!-- <view class="operate_comm operate_but_3" v-if="orderInfo.status === ORDER_TYPE.UNSHIPPED">提醒发货</view> -->
<!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.COMPLETED">申请售后</view> --> <!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.COMPLETED">申请售后</view> -->
<!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.AFTER_SALE">查看售后</view> --> <!-- <view class="operate_comm operate_but_1" v-if="orderInfo.status === ORDER_TYPE.AFTER_SALE">查看售后</view> -->
<!-- <view class="operate_comm operate_but_1" v-if="[ORDER_TYPE.COMPLETED].includes(orderInfo.status)">删除记录</view> --> <!-- <view class="operate_comm operate_but_1" v-if="[ORDER_TYPE.COMPLETED].includes(orderInfo.status)">删除记录</view> -->
<!-- <view class="operate_comm operate_but_3" v-if="[ORDER_TYPE.COMPLETED,ORDER_TYPE.CANCELED].includes(orderInfo.status)">再次购买</view> --> <!-- <view class="operate_comm operate_but_3" v-if="[ORDER_TYPE.COMPLETED,ORDER_TYPE.CANCELED].includes(orderInfo.status)">再次购买</view> -->
</view> </view>
<!-- 选择支付方式 --> <!-- 选择支付方式 -->
<up-popup v-model:show="wayShow" :round="10" :closeOnClickOverlay="false" :closeable="true" <up-popup
:safeAreaInsetBottom="false"> v-model:show="wayShow"
:round="10"
:closeOnClickOverlay="false"
:closeable="true"
:safeAreaInsetBottom="false"
>
<view class="way_popup_warp"> <view class="way_popup_warp">
<view class="way_popup_title">支付方式</view> <view class="way_popup_title">支付方式</view>
<up-radio-group v-model="wayForm.payway" placement="column"> <up-radio-group v-model="wayForm.payway" placement="column">
<view v-for="item in wayOption" :key="item.id" style="margin-bottom: 10rpx;"> <view
v-for="item in wayOption"
:key="item.id"
style="margin-bottom: 10rpx"
>
<view class="way_item"> <view class="way_item">
<view class="way_item_"> <view class="way_item_">
<!-- <view style="margin-top: 2rpx;"><up-image :src="item.path" width="20" height="20" bgColor="#f1f6ff00"></up-image></view> --> <!-- <view style="margin-top: 2rpx;"><up-image :src="item.path" width="20" height="20" bgColor="#f1f6ff00"></up-image></view> -->
<view class="way_item_val">{{ item.name }}<text v-if="item.balance">&nbsp;&nbsp;(¥{{ item.balance <view class="way_item_val"
}})</text> >{{ item.name
}}<text v-if="item.balance"
>&nbsp;&nbsp;(¥{{ item.balance }})</text
>
</view> </view>
</view> </view>
<up-radio :name="item.type" activeColor="#FF7C41"> <up-radio :name="item.type" activeColor="#FF7C41"> </up-radio>
</up-radio>
</view> </view>
<view class="balance_comm_msg" v-if="item.type === 'balance' && isShowBalance">当前现金余额不足,如需支付请前往充值</view> <view
class="balance_comm_msg"
v-if="item.type === 'balance' && isShowBalance"
>当前现金余额不足,如需支付请前往充值</view
>
</view> </view>
</up-radio-group> </up-radio-group>
<view class="popup_but" @click="wayShow = false;"> <view class="popup_but" @click="wayShow = false"> 确认 </view>
确认
</view>
</view> </view>
</up-popup> </up-popup>
<up-toast ref="uToastRef"></up-toast> <up-toast ref="uToastRef"></up-toast>
<QrcodePreview ref="qrcodePreview" :qrcodeVal="qrcodeVal" />
</view> </view>
</template> </template>
<script> <script>
import { ORDER_TYPE, ORDER_STATUS, getValue } from '@/utils/enumUtils.js'; import { ORDER_TYPE, ORDER_STATUS, getValue } from "@/utils/enumUtils.js";
import { copyData, assembleAddress, formatDate, formatDate1 } from '@/utils/index.js'; import QrcodePreview from "@/pages/rwa_package/rwa_withdrawal_log/qrcode-preview.vue";
import { getDetail, payment, getSupportPay, confirmReceipt } from '@/api/order.js'; import {
import { appWxpayFun, zfbPayFun, jumpWayOk, jumpWayError } from '@/utils/payUtils.js' copyData,
assembleAddress,
formatDate,
formatDate1,
} from "@/utils/index.js";
import {
getDetail,
payment,
getSupportPay,
confirmReceipt,
} from "@/api/order.js";
import {
appWxpayFun,
zfbPayFun,
jumpWayOk,
jumpWayError,
} from "@/utils/payUtils.js";
export default { export default {
components: {
QrcodePreview,
},
computed: { computed: {
ORDER_TYPE() { ORDER_TYPE() {
return ORDER_TYPE; return ORDER_TYPE;
@@ -216,9 +377,10 @@ export default {
}, },
wayShow: false, wayShow: false,
wayOption: [], // 支付选项 wayOption: [], // 支付选项
height: '180rpx', height: "100vh",
isShowBalance: false, isShowBalance: false,
} qrcodeVal: '',
};
}, },
onLoad(options) { onLoad(options) {
const id = options.id; const id = options.id;
@@ -239,8 +401,10 @@ export default {
formatDate1, formatDate1,
jumpLeft() { jumpLeft() {
uni.navigateTo({ uni.navigateTo({
url: "/pages/mine_package/mine_order/mine_order?type=" + this.orderInfo.status, url:
}) "/pages/mine_package/mine_order/mine_order?type=" +
this.orderInfo.status,
});
}, },
wayShowFun(type) { wayShowFun(type) {
if (type) { if (type) {
@@ -249,20 +413,24 @@ export default {
this.wayShow = type; this.wayShow = type;
}, },
async getWayOption() { async getWayOption() {
console.log('orderInfo',this.orderInfo) console.log("orderInfo", this.orderInfo);
let params = { let params = {
types:'1,2,3' types: "1,2,3",
} };
const result = await getSupportPay(params); const result = await getSupportPay(params);
if (result && result.bizcode === 100) { if (result && result.bizcode === 100) {
const data = result.data || []; const data = result.data || [];
const amount = this.orderInfo.sumAmount; const amount = this.orderInfo.sumAmount;
let flag = data.some(item => ['wechat', 'alipay'].includes(item.type)); let flag = data.some((item) =>
["wechat", "alipay"].includes(item.type)
);
// 没有支付宝和微信支付 // 没有支付宝和微信支付
if (flag) { if (flag) {
this.isShowBalance = false; this.isShowBalance = false;
} else { } else {
const balanceFlag = data.some(item => item.type === "balance" && item.balance < amount); const balanceFlag = data.some(
(item) => item.type === "balance" && item.balance < amount
);
this.isShowBalance = balanceFlag; this.isShowBalance = balanceFlag;
} }
this.wayOption = data; this.wayOption = data;
@@ -273,17 +441,25 @@ export default {
this.listLoading = true; this.listLoading = true;
const params = { const params = {
id: this.id, id: this.id,
} };
const result = await getDetail(params); const result = await getDetail(params);
if (result && result.bizcode === 100) { if (result && result.bizcode === 100) {
const orderInfo = result.data; const orderInfo = result.data;
if ([ORDER_TYPE.UNPAID, ORDER_TYPE.NOT_RECEIVE].includes(orderInfo.status)) {
this.height = '180rpx';
} else {
this.height = '0rpx';
}
this.orderInfo = orderInfo; this.orderInfo = orderInfo;
this.$nextTick(() => {
if (
[ORDER_TYPE.UNPAID, ORDER_TYPE.NOT_RECEIVE].includes(
orderInfo.status
)
) {
this.height = "calc(100vh - 180rpx)";
} else {
this.height = "100vh";
} }
});
}
this.listLoading = false; this.listLoading = false;
}, },
// 去支付 // 去支付
@@ -291,7 +467,7 @@ export default {
const payway = this.wayForm.payway; const payway = this.wayForm.payway;
if (!payway || payway === 0) { if (!payway || payway === 0) {
this.$refs.uToastRef.show({ this.$refs.uToastRef.show({
type: 'error', type: "error",
message: "请先选择支付方式", message: "请先选择支付方式",
}); });
return; return;
@@ -299,7 +475,7 @@ export default {
const params = { const params = {
id: this.orderInfo.id, id: this.orderInfo.id,
payway, payway,
} };
const resp = await payment(params); const resp = await payment(params);
// 提交订单成功,就唤起支付 // 提交订单成功,就唤起支付
if (resp && resp.bizcode === 100) { if (resp && resp.bizcode === 100) {
@@ -310,16 +486,20 @@ export default {
} }
if (item.wechat && Object.keys(item.wechat).length !== 0) { if (item.wechat && Object.keys(item.wechat).length !== 0) {
this.appWxpay(item.wechat, item.orderId, item.orderNum); this.appWxpay(item.wechat, item.orderId, item.orderNum);
} else if (item.alipay && Object.keys(item.alipay).length !== 0 && item.alipay) { } else if (
item.alipay &&
Object.keys(item.alipay).length !== 0 &&
item.alipay
) {
this.zfbPay(item.alipay, item.orderId, item.orderNum); this.zfbPay(item.alipay, item.orderId, item.orderNum);
} else { } else {
this.$refs.uToastRef.show({ this.$refs.uToastRef.show({
type: 'error', type: "error",
message: "订单支付失败", message: "订单支付失败",
}); });
setTimeout(() => { setTimeout(() => {
jumpWayError() jumpWayError();
}, 2000) }, 2000);
} }
} else { } else {
this.getOrderInfo(); this.getOrderInfo();
@@ -329,10 +509,10 @@ export default {
async appWxpay(alipay, orderId, orderNum) { async appWxpay(alipay, orderId, orderNum) {
try { try {
const result = await appWxpayFun(alipay, orderId, orderNum); const result = await appWxpayFun(alipay, orderId, orderNum);
console.log('支付成功', result); console.log("支付成功", result);
// 处理支付成功后的逻辑,如更新订单状态等 // 处理支付成功后的逻辑,如更新订单状态等
} catch (error) { } catch (error) {
console.error('支付失败', error); console.error("支付失败", error);
// 处理支付失败后的逻辑,如提示用户等 // 处理支付失败后的逻辑,如提示用户等
} }
}, },
@@ -340,10 +520,10 @@ export default {
async zfbPay(alipay, orderId, orderNum) { async zfbPay(alipay, orderId, orderNum) {
try { try {
const result = await zfbPayFun(alipay, orderId, orderNum); const result = await zfbPayFun(alipay, orderId, orderNum);
console.log('支付成功', result); console.log("支付成功", result);
// 处理支付成功后的逻辑,如更新订单状态等 // 处理支付成功后的逻辑,如更新订单状态等
} catch (error) { } catch (error) {
console.error('支付失败', error); console.error("支付失败", error);
// 处理支付失败后的逻辑,如提示用户等 // 处理支付失败后的逻辑,如提示用户等
} }
}, },
@@ -353,19 +533,19 @@ export default {
confirmReceiptOk(item) { confirmReceiptOk(item) {
const then = this; const then = this;
uni.showModal({ uni.showModal({
title: '提示', title: "提示",
content: '是否确认收货?', content: "是否确认收货?",
success: function (res) { success: function (res) {
if (res.confirm) { if (res.confirm) {
then.confirmReceiptFun(item); then.confirmReceiptFun(item);
} }
} },
}); });
}, },
async confirmReceiptFun(item) { async confirmReceiptFun(item) {
const params = { const params = {
id: item.id, id: item.id,
} };
const resp = await confirmReceipt(params); const resp = await confirmReceipt(params);
if (resp && resp.bizcode === 100) { if (resp && resp.bizcode === 100) {
this.orderList = []; this.orderList = [];
@@ -378,15 +558,48 @@ export default {
*/ */
goRechargeFun(item) { goRechargeFun(item) {
uni.navigateTo({ uni.navigateTo({
url: "/pages/mine_package/mine_purse_recharge/mine_purse_recharge?category=balance&amount=" + item.balance + "&back=orderInfo&id=" + this.id, url:
}) "/pages/mine_package/mine_purse_recharge/mine_purse_recharge?category=balance&amount=" +
} item.balance +
} "&back=orderInfo&id=" +
} this.id,
});
},
previewQrcode(val) {
console.log("val--", val);
this.qrcodeVal = val;
this.$refs.qrcodePreview.open();
},
},
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.code_content {
display: flex;
background: #fff;
border-radius: 24rpx;
padding: 32rpx;
justify-content: space-between;
align-items: center;
margin-bottom: 48rpx;
.code_content_item {
font-size: 20rpx;
color: #7934f6;
display: flex;
align-items: center;
.code_content_item_text {
width: 350rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
display: inline-block;
word-break: keep-all;
}
}
}
.mine_order_info_warp { .mine_order_info_warp {
height: 100vh;
// height: calc(100vh - 180rpx); // height: calc(100vh - 180rpx);
background-color: $app-bj; background-color: $app-bj;
position: relative; position: relative;
@@ -412,7 +625,7 @@ export default {
margin-left: 20rpx; margin-left: 20rpx;
font-weight: bold; font-weight: bold;
font-size: 36rpx; font-size: 36rpx;
color: #FFFFFF; color: #ffffff;
} }
} }
} }
@@ -427,7 +640,7 @@ export default {
display: grid; display: grid;
justify-content: center; justify-content: center;
width: 100%; width: 100%;
color: #FFFFFF; color: #ffffff;
.payment_but { .payment_but {
display: flex; display: flex;
@@ -435,7 +648,7 @@ export default {
} }
.but { .but {
background: #FFFFFF; background: #ffffff;
border-radius: 16rpx; border-radius: 16rpx;
text-align: center; text-align: center;
width: 200rpx; width: 200rpx;
@@ -451,11 +664,11 @@ export default {
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 28rpx; font-size: 28rpx;
color: #FFFFFF; color: #ffffff;
} }
.steps_warp { .steps_warp {
background: #FFFFFF; background: #ffffff;
border-radius: 24rpx; border-radius: 24rpx;
padding: 20rpx; padding: 20rpx;
width: calc(100% - 40rpx); width: calc(100% - 40rpx);
@@ -468,7 +681,8 @@ export default {
margin: 10rpx 20rpx; margin: 10rpx 20rpx;
} }
.address_warp {} .address_warp {
}
.address_info { .address_info {
display: flex; display: flex;
@@ -477,7 +691,7 @@ export default {
.address_data_warp { .address_data_warp {
font-weight: bold; font-weight: bold;
color: #1A1A1A; color: #1a1a1a;
display: flex; display: flex;
align-items: center; align-items: center;
} }
@@ -494,7 +708,7 @@ export default {
.address_but { .address_but {
border-radius: 30rpx; border-radius: 30rpx;
border: 1px solid #9A9A9A; border: 1px solid #9a9a9a;
font-size: 20rpx; font-size: 20rpx;
color: #222222; color: #222222;
padding: 8rpx 20rpx; padding: 8rpx 20rpx;
@@ -510,7 +724,7 @@ export default {
} }
.order_comm { .order_comm {
background: #FFFFFF; background: #ffffff;
border-radius: 20rpx; border-radius: 20rpx;
padding: 30rpx; padding: 30rpx;
margin-top: 30rpx; margin-top: 30rpx;
@@ -526,7 +740,7 @@ export default {
.order_product_title { .order_product_title {
font-weight: bold; font-weight: bold;
font-size: 28rpx; font-size: 28rpx;
color: #1A1A1A; color: #1a1a1a;
margin-left: 10rpx; margin-left: 10rpx;
} }
} }
@@ -534,13 +748,12 @@ export default {
.order_data_warp { .order_data_warp {
margin-bottom: 20rpx; margin-bottom: 20rpx;
.pay_amount { .pay_amount {
color: $app-bt-bj; color: $app-bt-bj;
} }
.copy_order_number { .copy_order_number {
background: #F2F2F2; background: #f2f2f2;
border-radius: 18rpx; border-radius: 18rpx;
font-weight: bold; font-weight: bold;
font-size: 22rpx; font-size: 22rpx;
@@ -559,7 +772,7 @@ export default {
} }
.order_data_but { .order_data_but {
border: 1rpx solid #F6F6F6; border: 1rpx solid #f6f6f6;
} }
} }
@@ -595,7 +808,7 @@ export default {
} }
.item_value { .item_value {
color: #1A1A1A; color: #1a1a1a;
display: flex; display: flex;
} }
@@ -0,0 +1,55 @@
<template>
<up-popup :show="show" @close="close" @open="open" mode="center" :round="10">
<view class="qrcode-preview" @click.stop="close" v-if="qrcodeUrl">
<up-qrcode :val="qrcodeUrl" :key="key"></up-qrcode>
</view>
</up-popup>
</template>
<script>
export default {
props: {
qrcodeVal: {
type: String,
default: "",
},
},
data() {
return {
show: false,
qrcodeUrl: "",
key: 0,
};
},
methods: {
open() {
this.show = true;
this.$nextTick(() => {
this.qrcodeUrl = this.qrcodeVal;
this.key++;
console.log('qrcodeUrl',this.qrcodeUrl);
});
},
close() {
this.show = false;
this.qrcodeUrl = "";
},
},
};
</script>
<style lang="scss" scoped>
.qrcode-preview {
width: 440rpx;
height: 440rpx;
background: #ffffff;
border-radius: 8rpx;
// padding: 40rpx;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
}
</style>
@@ -1,54 +1,123 @@
<template> <template>
<view class="rwa_withdrawal_log"> <view class="rwa_withdrawal_log">
<Header leftTitle="行权记录" left-path-type="navigateTo" :leftPath="leftPath" /> <Header
leftTitle="行权记录"
left-path-type="navigateTo"
:leftPath="leftPath"
/>
<view class="_log_content"> <view class="_log_content">
<view class="_log_content_title"> <view class="_log_content_title">
<view>行权账户邮箱/时间</view> <view>行权账户邮箱/时间</view>
<view>金额/状态</view> <view>金额/状态</view>
</view> </view>
<scroll-view scroll-y="true" @scrolltolower="loadMore" style="height:calc(100vh - 300rpx)"> <scroll-view
<view class="_content_item" v-for="item in logList" :key="item.id" v-if="logList && logList.length !== 0"> scroll-y="true"
<view class="_content_item_no _content_item_no_buto">NO.{{ item.tradeNo }}</view> @scrolltolower="loadMore"
style="height: calc(100vh - 300rpx)"
>
<view
class="_content_item"
v-for="item in logList"
:key="item.id"
v-if="logList && logList.length !== 0"
>
<view class="_content_item_no _content_item_no_buto"
>NO.{{ item.tradeNo }}</view
>
<!-- <view class="_content_item_no _content_item_no_buto" v-if="item.exchNo">股东流水号:{{item.exchNo}}</view> --> <!-- <view class="_content_item_no _content_item_no_buto" v-if="item.exchNo">股东流水号:{{item.exchNo}}</view> -->
<view class="_content_item_but"> <view class="_content_item_but">
<view class="_content_item_left"> <view class="_content_item_left">
<up-image src="/static/rwa/account.png" width="40" height="40" bgColor="#f1f6ff00" /> <up-image
src="/static/rwa/account.png"
width="40"
height="40"
bgColor="#f1f6ff00"
/>
<view class="_content_item_left_"> <view class="_content_item_left_">
<view class="_content_item_left_title">{{ item.name }}-{{ item.account }}</view> <view class="_content_item_left_title"
<view class="_content_item_left_val">{{ formatDate(item.ctdate) }}</view> >{{ item.name }}-{{ item.account }}</view
>
<view class="_content_item_left_val">{{
formatDate(item.ctdate)
}}</view>
</view> </view>
</view> </view>
<view class="_content_item_right"> <view class="_content_item_right">
<view class="_content_item_left_title _content_item_left_amount">{{ item.amount }} {{ categotyObj.name || <view class="_content_item_left_title _content_item_left_amount"
'USDT' }}</view> >{{ item.amount }} {{ categotyObj.name || "USDT" }}</view
<view class="_content_item_left_status">{{ getValue(RWA_STATUS, item.status) }}</view> >
<view class="_content_item_left_status">{{
getValue(RWA_STATUS, item.status)
}}</view>
</view>
</view>
<view style="border-top: 1rpx solid #f5f5f5; margin: 28rpx 0"></view>
<view class="code_content" v-if="item.antChainHash">
<view>
<view style="font-size: 28rpx; color: #333; font-weight: bold"
>您的订单已接入蚂蚁链溯源</view
>
<view style="font-size: 20rpx; color: #999; margin-bottom: 18rpx"
>扫描二维码或复制下方链接查看溯源信息</view
>
<view class="code_content_item">
<view class="code_content_item_text">
{{
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${item.antChainHash}`
}}
</view>
<up-image
style="margin-left: 8rpx"
src="/static/rwa/copy.png"
width="12"
@click="
copyData(
`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${item.antChainHash}`
)
"
height="12"
bgColor="#f1f6ff00"
></up-image
></view>
</view>
<view>
<up-qrcode
:val="`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${item.antChainHash}`"
:size="63"
@click.stop="previewOrderQrcode(`https://chaininsight.antdigital.com/search?unionId=2647&projectName=VBGAKNJB&content=${item.antChainHash}`)"
></up-qrcode>
</view> </view>
</view> </view>
</view> </view>
<view v-else class="not_order_warp"> <view v-else class="not_order_warp">
<up-image src="https://cex-pub.s3.ap-southeast-1.amazonaws.com/static/kzt.png" width="100" height="100" <up-image
bgColor="#f1f6ff00"></up-image> src="https://cex-pub.s3.ap-southeast-1.amazonaws.com/static/kzt.png"
width="100"
height="100"
bgColor="#f1f6ff00"
></up-image>
<view class="not_order_msg_warp">暂无行权数据~</view> <view class="not_order_msg_warp">暂无行权数据~</view>
</view> </view>
<view v-if="loading" style="text-align: center;">加载中...</view> <view v-if="loading" style="text-align: center">加载中...</view>
</scroll-view> </scroll-view>
</view> </view>
<QrcodePreview ref="qrcodePreviewRef" :qrcodeVal="qrcodeVal" />
</view> </view>
</template> </template>
<script> <script>
import Header from '@/components/header.vue'; import Header from "@/components/header.vue";
import { getExchTransferRecord, getAcctBalance } from '@/api/finance.js' import { copyData } from "@/utils/index.js";
import { formatDate } from '@/utils/index.js'; import { getExchTransferRecord, getAcctBalance } from "@/api/finance.js";
import { RWA_STATUS, getValue } from '@/utils/enumUtils.js'; import { formatDate } from "@/utils/index.js";
import { RWA_STATUS, getValue } from "@/utils/enumUtils.js";
import func from '@/utils/func.js'; import QrcodePreview from "@/pages/rwa_package/rwa_withdrawal_log/qrcode-preview.vue";
export default { export default {
components: { Header }, components: { Header, QrcodePreview },
computed: { computed: {
RWA_STATUS() { RWA_STATUS() {
return RWA_STATUS; return RWA_STATUS;
} },
}, },
data() { data() {
return { return {
@@ -58,23 +127,26 @@ export default {
page: 1, page: 1,
pageSize: 10, pageSize: 10,
}, },
qrvalue: "",
loading: false, loading: false,
categotyObj: {}, categotyObj: {},
qrcodeVal: '',
}; };
}, },
onLoad(option) { onLoad(option) {
const back = option.back; const back = option.back;
if (back === "rwa") { if (back === "rwa") {
this.leftPath = "/pages/rwa_package/rwa/rwa" this.leftPath = "/pages/rwa_package/rwa/rwa";
} }
if (back === "withdrawal") { if (back === "withdrawal") {
this.leftPath = "/pages/rwa_package/rwa_withdrawal/rwa_withdrawal" this.leftPath = "/pages/rwa_package/rwa_withdrawal/rwa_withdrawal";
} }
this.loadData(); this.loadData();
this.getAcctBalance(); this.getAcctBalance();
}, },
methods: { methods: {
getValue, getValue,
copyData,
formatDate, formatDate,
// 查询余额 // 查询余额
async getAcctBalance() { async getAcctBalance() {
@@ -82,12 +154,12 @@ export default {
let data = {}; let data = {};
if (resp && resp.bizcode === 100) { if (resp && resp.bizcode === 100) {
if (resp.data) { if (resp.data) {
resp.data.map(item => { resp.data.map((item) => {
// 交易币 // 交易币
if (item.categoty === "vcoin") { if (item.categoty === "vcoin") {
data = item; data = item;
} }
}) });
} }
} }
this.categotyObj = data; this.categotyObj = data;
@@ -98,17 +170,20 @@ export default {
this.loading = true; // 设置加载状态为true this.loading = true; // 设置加载状态为true
try { try {
// 模拟异步获取数据,实际应用中应该替换为你的数据获取逻辑,例如API调用 // 模拟异步获取数据,实际应用中应该替换为你的数据获取逻辑,例如API调用
const newData = await this.fetchData(this.form.page, this.form.pageSize); const newData = await this.fetchData(
this.form.page,
this.form.pageSize
);
this.logList = [...this.logList, ...newData]; // 将新数据添加到列表中 this.logList = [...this.logList, ...newData]; // 将新数据添加到列表中
this.logList.forEach(item=>{ this.logList.forEach((item) => {
if(item.name == 'WALLET'){ if (item.name == "WALLET") {
item.account = "******" + item.account.slice(-4); item.account = "******" + item.account.slice(-4);
// item.account = func.addressTurn(item.account,6) // item.account = func.addressTurn(item.account,6)
} }
}) });
this.form.page++; // 页码加1 this.form.page++; // 页码加1
} catch (error) { } catch (error) {
console.error('加载数据失败:', error); console.error("加载数据失败:", error);
} finally { } finally {
this.loading = false; // 设置加载状态为false this.loading = false; // 设置加载状态为false
} }
@@ -118,13 +193,13 @@ export default {
const params = { const params = {
page, page,
pageSize, pageSize,
} };
console.log("params", params); console.log("params", params);
const resp = await getExchTransferRecord(params); const resp = await getExchTransferRecord(params);
console.log("resp", resp); console.log("resp", resp);
if (resp && resp.bizcode === 100) { if (resp && resp.bizcode === 100) {
const data = resp.data && resp.data.entitys || []; const data = (resp.data && resp.data.entitys) || [];
return data return data;
} else { } else {
return []; return [];
} }
@@ -132,14 +207,19 @@ export default {
// 当滚动到底部时触发的方法 // 当滚动到底部时触发的方法
loadMore() { loadMore() {
this.loadData(); // 加载更多数据 this.loadData(); // 加载更多数据
} },
} previewOrderQrcode(val) {
} console.log("val--", val);
this.qrcodeVal = val;
this.$refs.qrcodePreviewRef.open();
},
},
};
</script> </script>
<style lang="scss"> <style lang="scss">
.rwa_withdrawal_log { .rwa_withdrawal_log {
background: #F5F5F5; background: #f5f5f5;
height: calc(100vh - 0rpx); height: calc(100vh - 0rpx);
overflow: hidden; overflow: hidden;
@@ -159,7 +239,7 @@ export default {
._content_item { ._content_item {
margin-bottom: 20rpx; margin-bottom: 20rpx;
background: #FFFFFF; background: #ffffff;
border-radius: 20rpx; border-radius: 20rpx;
padding: 20rpx; padding: 20rpx;
@@ -170,9 +250,27 @@ export default {
} }
._content_item_no_buto { ._content_item_no_buto {
border-bottom: 1rpx solid #EEEEEE; border-bottom: 1rpx solid #eeeeee;
}
.code_content {
display: flex;
justify-content: space-between;
align-items: center;
.code_content_item {
font-size: 20rpx;
color: #7934f6;
display: flex;
align-items: center;
.code_content_item_text {
width: 350rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
display: inline-block;
word-break: keep-all;
}
}
} }
._content_item_but { ._content_item_but {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@@ -202,7 +300,7 @@ export default {
._content_item_left_exchNo { ._content_item_left_exchNo {
font-size: 20rpx; font-size: 20rpx;
color: #9E9E9E; color: #9e9e9e;
margin-bottom: 10rpx; margin-bottom: 10rpx;
} }
+197
View File
@@ -20,6 +20,9 @@ importers:
echarts: echarts:
specifier: ^5.1.2 specifier: ^5.1.2
version: 5.6.0 version: 5.6.0
qrcode.vue:
specifier: ^3.6.0
version: 3.6.0(vue@3.5.26)
qs-canvas: qs-canvas:
specifier: ^1.0.11 specifier: ^1.0.11
version: 1.0.11 version: 1.0.11
@@ -32,12 +35,64 @@ importers:
packages: packages:
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.28.5':
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.28.5':
resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/types@7.28.5':
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@vue/compiler-core@3.5.26':
resolution: {integrity: sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==}
'@vue/compiler-dom@3.5.26':
resolution: {integrity: sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==}
'@vue/compiler-sfc@3.5.26':
resolution: {integrity: sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==}
'@vue/compiler-ssr@3.5.26':
resolution: {integrity: sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==}
'@vue/reactivity@3.5.26':
resolution: {integrity: sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==}
'@vue/runtime-core@3.5.26':
resolution: {integrity: sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==}
'@vue/runtime-dom@3.5.26':
resolution: {integrity: sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==}
'@vue/server-renderer@3.5.26':
resolution: {integrity: sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==}
peerDependencies:
vue: 3.5.26
'@vue/shared@3.5.26':
resolution: {integrity: sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==}
clipboard@2.0.11: clipboard@2.0.11:
resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==} resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
crypto-js@4.2.0: crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
dayjs@1.11.19: dayjs@1.11.19:
resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
@@ -50,15 +105,46 @@ packages:
echarts@5.6.0: echarts@5.6.0:
resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
entities@7.0.0:
resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==}
engines: {node: '>=0.12'}
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
good-listener@1.2.2: good-listener@1.2.2:
resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==} resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==}
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
postcss@8.5.6:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
qrcode.vue@3.6.0:
resolution: {integrity: sha512-vQcl2fyHYHMjDO1GguCldJxepq2izQjBkDEEu9NENgfVKP6mv/e2SU62WbqYHGwTgWXLhxZ1NCD1dAZKHQq1fg==}
peerDependencies:
vue: ^3.0.0
qs-canvas@1.0.11: qs-canvas@1.0.11:
resolution: {integrity: sha512-WJwLwrAA1++ZqT6eR2F4Qa42yowybDUtQ2TDPtDOwhD1i4DzEOotug5N20cDkHat9l69ThOWoxV4qJbLKAjkNg==} resolution: {integrity: sha512-WJwLwrAA1++ZqT6eR2F4Qa42yowybDUtQ2TDPtDOwhD1i4DzEOotug5N20cDkHat9l69ThOWoxV4qJbLKAjkNg==}
select@1.1.2: select@1.1.2:
resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==} resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==}
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
tabber-component@1.0.0: tabber-component@1.0.0:
resolution: {integrity: sha512-tL1cMqSlus8DtxY/VGY2qZoe3wV/D/QcL6YVO7FZhXARmmNt5ztGmm0474pZ7UgNb7j2aPv29PLERH0s1xQW8w==} resolution: {integrity: sha512-tL1cMqSlus8DtxY/VGY2qZoe3wV/D/QcL6YVO7FZhXARmmNt5ztGmm0474pZ7UgNb7j2aPv29PLERH0s1xQW8w==}
@@ -71,11 +157,88 @@ packages:
vue-clipboard2@0.3.3: vue-clipboard2@0.3.3:
resolution: {integrity: sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==} resolution: {integrity: sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==}
vue@3.5.26:
resolution: {integrity: sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
zrender@5.6.1: zrender@5.6.1:
resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==} resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
snapshots: snapshots:
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.28.5': {}
'@babel/parser@7.28.5':
dependencies:
'@babel/types': 7.28.5
'@babel/types@7.28.5':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
'@jridgewell/sourcemap-codec@1.5.5': {}
'@vue/compiler-core@3.5.26':
dependencies:
'@babel/parser': 7.28.5
'@vue/shared': 3.5.26
entities: 7.0.0
estree-walker: 2.0.2
source-map-js: 1.2.1
'@vue/compiler-dom@3.5.26':
dependencies:
'@vue/compiler-core': 3.5.26
'@vue/shared': 3.5.26
'@vue/compiler-sfc@3.5.26':
dependencies:
'@babel/parser': 7.28.5
'@vue/compiler-core': 3.5.26
'@vue/compiler-dom': 3.5.26
'@vue/compiler-ssr': 3.5.26
'@vue/shared': 3.5.26
estree-walker: 2.0.2
magic-string: 0.30.21
postcss: 8.5.6
source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.26':
dependencies:
'@vue/compiler-dom': 3.5.26
'@vue/shared': 3.5.26
'@vue/reactivity@3.5.26':
dependencies:
'@vue/shared': 3.5.26
'@vue/runtime-core@3.5.26':
dependencies:
'@vue/reactivity': 3.5.26
'@vue/shared': 3.5.26
'@vue/runtime-dom@3.5.26':
dependencies:
'@vue/reactivity': 3.5.26
'@vue/runtime-core': 3.5.26
'@vue/shared': 3.5.26
csstype: 3.2.3
'@vue/server-renderer@3.5.26(vue@3.5.26)':
dependencies:
'@vue/compiler-ssr': 3.5.26
'@vue/shared': 3.5.26
vue: 3.5.26
'@vue/shared@3.5.26': {}
clipboard@2.0.11: clipboard@2.0.11:
dependencies: dependencies:
good-listener: 1.2.2 good-listener: 1.2.2
@@ -84,6 +247,8 @@ snapshots:
crypto-js@4.2.0: {} crypto-js@4.2.0: {}
csstype@3.2.3: {}
dayjs@1.11.19: {} dayjs@1.11.19: {}
decimal.js@10.6.0: {} decimal.js@10.6.0: {}
@@ -95,14 +260,38 @@ snapshots:
tslib: 2.3.0 tslib: 2.3.0
zrender: 5.6.1 zrender: 5.6.1
entities@7.0.0: {}
estree-walker@2.0.2: {}
good-listener@1.2.2: good-listener@1.2.2:
dependencies: dependencies:
delegate: 3.2.0 delegate: 3.2.0
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
nanoid@3.3.11: {}
picocolors@1.1.1: {}
postcss@8.5.6:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
qrcode.vue@3.6.0(vue@3.5.26):
dependencies:
vue: 3.5.26
qs-canvas@1.0.11: {} qs-canvas@1.0.11: {}
select@1.1.2: {} select@1.1.2: {}
source-map-js@1.2.1: {}
tabber-component@1.0.0: {} tabber-component@1.0.0: {}
tiny-emitter@2.1.0: {} tiny-emitter@2.1.0: {}
@@ -113,6 +302,14 @@ snapshots:
dependencies: dependencies:
clipboard: 2.0.11 clipboard: 2.0.11
vue@3.5.26:
dependencies:
'@vue/compiler-dom': 3.5.26
'@vue/compiler-sfc': 3.5.26
'@vue/runtime-dom': 3.5.26
'@vue/server-renderer': 3.5.26(vue@3.5.26)
'@vue/shared': 3.5.26
zrender@5.6.1: zrender@5.6.1:
dependencies: dependencies:
tslib: 2.3.0 tslib: 2.3.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B