diff --git a/README_ADD_CARD_UPLOAD.md b/README_ADD_CARD_UPLOAD.md
new file mode 100644
index 0000000..e22b5dc
--- /dev/null
+++ b/README_ADD_CARD_UPLOAD.md
@@ -0,0 +1,206 @@
+# 添加账号收款二维码上传功能
+
+## 功能概述
+
+在添加账号页面中,当用户选择"收款二维码"类型时,会在收款码图片输入框旁边显示一个"上传"按钮,用户可以点击该按钮跳转到图片上传页面,上传收款二维码图片并自动获取图片URL。
+
+## 功能特点
+
+### ✅ 已实现功能
+- [x] 根据账户类型动态显示上传按钮
+- [x] 跳转到专门的图片上传页面
+- [x] 上传成功后自动填充图片URL
+- [x] 完整的错误处理和提示
+- [x] 美观的UI设计
+
+### 🎯 使用流程
+
+1. **选择账户类型**:用户选择"收款二维码"
+2. **点击上传按钮**:收款码图片输入框旁边出现"上传"按钮
+3. **跳转上传页面**:点击按钮跳转到图片上传页面
+4. **上传图片**:选择并上传收款二维码图片
+5. **自动填充**:上传成功后自动返回并填充图片URL
+
+## 代码实现
+
+### 1. 模板部分
+
+```vue
+
+ {{ typeOptions[typeIndex].noLabel }}
+
+
+
+
+ 上传
+
+
+
+```
+
+### 2. 方法实现
+
+```javascript
+// 跳转到图片上传页面
+goToImageUpload() {
+ uni.navigateTo({
+ url: '/pages/image-upload/image-upload'
+ })
+},
+
+// 处理图片上传成功
+onImageUploadSuccess(imageUrl) {
+ this.bankForm.no = imageUrl
+ uni.showToast({
+ title: '图片上传成功',
+ icon: 'success'
+ })
+}
+```
+
+### 3. 生命周期钩子
+
+```javascript
+onLoad() {
+ // 监听图片上传成功事件
+ uni.$on('image-upload-success', this.onImageUploadSuccess)
+},
+
+onUnload() {
+ // 移除事件监听
+ uni.$off('image-upload-success', this.onImageUploadSuccess)
+}
+```
+
+### 4. 样式设计
+
+```scss
+.input-group {
+ display: flex;
+ align-items: center;
+ gap: 15rpx;
+
+ .form-input {
+ flex: 1;
+ }
+
+ .upload-btn {
+ width: 120rpx;
+ height: 80rpx;
+ background: #ff803a;
+ border-radius: 10rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ transition: all 0.3s ease;
+
+ &:active {
+ background: #e67333;
+ transform: scale(0.95);
+ }
+
+ .upload-text {
+ color: #fff;
+ font-size: 26rpx;
+ font-weight: 500;
+ }
+ }
+}
+```
+
+## 页面访问
+
+### 主要页面
+- **添加账号页面**:`/pages/requestWithdrawal/addCard.vue`
+- **图片上传页面**:`/pages/image-upload/image-upload`
+
+### 测试页面
+- **功能测试页面**:`/pages/test-add-card/test-add-card`
+
+## 使用示例
+
+### 1. 在父组件中使用
+
+```vue
+
+
+
+
+
+
+
+
+
+
+```
+
+### 2. 测试功能
+
+访问测试页面 `/pages/test-add-card/test-add-card` 可以:
+
+1. 点击"打开添加账号弹窗"按钮
+2. 选择"收款二维码"类型
+3. 点击"上传"按钮跳转到图片上传页面
+4. 上传图片后自动返回并填充URL
+
+## 技术细节
+
+### 事件通信
+- 使用 `uni.$emit` 和 `uni.$on` 进行页面间通信
+- 图片上传成功后触发 `image-upload-success` 事件
+- 传递图片URL作为参数
+
+### 条件渲染
+- 只有当账户类型为 `QR` 时才显示上传按钮
+- 使用 `v-if="typeOptions[typeIndex].value === 'QR'"` 控制显示
+
+### 样式适配
+- 使用 flexbox 布局确保输入框和按钮对齐
+- 响应式设计适配不同屏幕尺寸
+- 添加点击反馈效果
+
+## 注意事项
+
+1. **页面路由**:确保图片上传页面已在 `pages.json` 中注册
+2. **事件监听**:在组件销毁时记得移除事件监听
+3. **错误处理**:上传失败时会有相应的错误提示
+4. **URL格式**:上传成功后返回的是完整的图片访问URL
+
+## 扩展功能
+
+### 可能的改进
+- [ ] 添加图片预览功能
+- [ ] 支持多图片上传
+- [ ] 添加图片压缩功能
+- [ ] 支持拖拽上传
+- [ ] 添加上传进度条
+
+### 自定义配置
+- 可以修改上传按钮的样式和颜色
+- 可以调整输入框和按钮的间距
+- 可以自定义上传成功后的提示信息
\ No newline at end of file
diff --git a/pages/image-upload/image-upload.vue b/pages/image-upload/image-upload.vue
index 4c9ad80..776718e 100644
--- a/pages/image-upload/image-upload.vue
+++ b/pages/image-upload/image-upload.vue
@@ -112,21 +112,22 @@ export default {
// 构建完整的图片URL
this.uploadResult = `https://api.ccttiot.com/${result.key}`
+ // 先触发事件,再返回上一页
+ console.log('触发图片上传成功事件:', this.uploadResult)
+ uni.$emit('image-upload-success', this.uploadResult)
+
+ // 显示成功提示
uni.showToast({
title: '上传成功',
icon: 'success',
})
- // 先触发事件,再返回上一页
- console.log('触发图片上传成功事件:', this.uploadResult)
- uni.$emit('image-upload-success', this.uploadResult)
-
// 延迟返回,确保事件被处理
setTimeout(() => {
uni.navigateBack({
delta: 1,
})
- }, 2000)
+ }, 500)
} catch (error) {
console.error('上传失败:', error)
this.errorMessage = error.message || '上传失败'
diff --git a/pages/requestWithdrawal/addCard.vue b/pages/requestWithdrawal/addCard.vue
index 4f182ff..ea8659d 100644
--- a/pages/requestWithdrawal/addCard.vue
+++ b/pages/requestWithdrawal/addCard.vue
@@ -17,7 +17,16 @@
{{ typeOptions[typeIndex].noLabel }}
+
{
+ console.log('成功跳转到图片上传页面')
+ },
+ fail: (err) => {
+ console.error('跳转到图片上传页面失败:', err)
+ }
})
},
// 处理图片上传成功
onImageUploadSuccess(imageUrl) {
console.log('接收到图片上传成功事件:', imageUrl)
- this.bankForm.no = imageUrl
- uni.showToast({
- title: '图片上传成功',
- icon: 'success'
- })
+ console.log('当前表单状态:', this.bankForm)
+
+ if (imageUrl && typeof imageUrl === 'string') {
+ this.bankForm.no = imageUrl
+ console.log('URL已设置到表单:', this.bankForm.no)
+
+ uni.showToast({
+ title: '图片上传成功',
+ icon: 'success'
+ })
+ } else {
+ console.error('接收到的imageUrl无效:', imageUrl)
+ uni.showToast({
+ title: '图片URL无效',
+ icon: 'none'
+ })
+ }
},
// 提交表单
@@ -342,11 +373,26 @@ export default {
font-size: 28rpx;
color: #333;
background: #fafafa;
+ word-break: break-all;
+ overflow: hidden;
+ text-overflow: ellipsis;
&:focus {
border-color: #ff803a;
background: #fff;
}
+
+ &.qr-input {
+ font-size: 24rpx;
+ line-height: 1.4;
+ padding: 15rpx 20rpx;
+ min-height: 80rpx;
+ height: auto;
+ max-height: 200rpx;
+ resize: none;
+ word-wrap: break-word;
+ white-space: pre-wrap;
+ }
}
.picker-value {