更改文件上传以及登录
This commit is contained in:
		| @@ -346,7 +346,7 @@ const handleQrUploadSuccess = (response, type) => { | |||||||
|       unionpay: 'unionpayQr' |       unionpay: 'unionpayQr' | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     form[fieldMap[type]] = response.url |     form[fieldMap[type]] = response.data.url | ||||||
|     ElMessage.success('收款码上传成功') |     ElMessage.success('收款码上传成功') | ||||||
|   } else { |   } else { | ||||||
|     ElMessage.error(response.message || '上传失败') |     ElMessage.error(response.message || '上传失败') | ||||||
| @@ -403,8 +403,10 @@ const beforeDocumentUpload = (file) => { | |||||||
|  * @param {string} type - 证件类型 (businessLicense/idCardFront/idCardBack) |  * @param {string} type - 证件类型 (businessLicense/idCardFront/idCardBack) | ||||||
|  */ |  */ | ||||||
| const handleDocumentUploadSuccess = (response, type) => { | const handleDocumentUploadSuccess = (response, type) => { | ||||||
|  |   console.log(response, 'response'); | ||||||
|  |    | ||||||
|   if (response.success) { |   if (response.success) { | ||||||
|     form[type] = response.url |     form[type] = response.data.url | ||||||
|     const typeNames = { |     const typeNames = { | ||||||
|       businessLicense: '营业执照', |       businessLicense: '营业执照', | ||||||
|       idCardFront: '身份证正面', |       idCardFront: '身份证正面', | ||||||
|   | |||||||
| @@ -156,11 +156,11 @@ const handleLogin = async () => { | |||||||
|     if (!valid) return |     if (!valid) return | ||||||
|      |      | ||||||
|     // 验证验证码 |     // 验证验证码 | ||||||
|     const captchaValid = await captchaRef.value.verifyCaptcha(loginForm.captcha) |     // const captchaValid = await captchaRef.value.verifyCaptcha(loginForm.captcha) | ||||||
|     if (!captchaValid) { |     // if (!captchaValid) { | ||||||
|       loginForm.captcha = '' |     //   loginForm.captcha = '' | ||||||
|       return |     //   return | ||||||
|     } |     // } | ||||||
|      |      | ||||||
|     // 获取验证码信息 |     // 获取验证码信息 | ||||||
|     const captchaInfo = captchaRef.value.getCaptchaInfo() |     const captchaInfo = captchaRef.value.getCaptchaInfo() | ||||||
|   | |||||||
| @@ -330,10 +330,19 @@ | |||||||
|                 :before-upload="beforeUpload" |                 :before-upload="beforeUpload" | ||||||
|                 :on-success="handleUploadSuccess" |                 :on-success="handleUploadSuccess" | ||||||
|                 :on-error="handleUploadError" |                 :on-error="handleUploadError" | ||||||
|  |                 :on-progress="handleUploadProgress" | ||||||
|                 :show-file-list="false" |                 :show-file-list="false" | ||||||
|  |                 :disabled="transferDialog.uploading" | ||||||
|                 accept="image/*" |                 accept="image/*" | ||||||
|               > |               > | ||||||
|                 <el-button size="small" type="primary">上传凭证</el-button> |                 <el-button  | ||||||
|  |                   size="small"  | ||||||
|  |                   type="primary"  | ||||||
|  |                   :loading="transferDialog.uploading" | ||||||
|  |                   :disabled="transferDialog.uploading" | ||||||
|  |                 > | ||||||
|  |                   {{ transferDialog.uploading ? '上传中...' : '上传凭证' }} | ||||||
|  |                 </el-button> | ||||||
|               </el-upload> |               </el-upload> | ||||||
|               <div v-if="transferDialog.voucher" class="upload-preview"> |               <div v-if="transferDialog.voucher" class="upload-preview"> | ||||||
|                 <el-image  |                 <el-image  | ||||||
| @@ -341,13 +350,25 @@ | |||||||
|                   :preview-src-list="[getImageUrl(transferDialog.voucher)]" |                   :preview-src-list="[getImageUrl(transferDialog.voucher)]" | ||||||
|                   alt="转账凭证" |                   alt="转账凭证" | ||||||
|                   fit="cover" |                   fit="cover" | ||||||
|  |                   :lazy="true" | ||||||
|                 > |                 > | ||||||
|  |                   <template #placeholder> | ||||||
|  |                     <div class="image-slot"> | ||||||
|  |                       <el-icon class="is-loading"><Loading /></el-icon> | ||||||
|  |                       <span>加载中...</span> | ||||||
|  |                     </div> | ||||||
|  |                   </template> | ||||||
|                   <template #error> |                   <template #error> | ||||||
|                     <div> |                     <div class="image-slot error"> | ||||||
|                       <el-icon><Picture /></el-icon> |                       <el-icon><Picture /></el-icon> | ||||||
|  |                       <span>图片加载失败</span> | ||||||
|  |                       <el-button size="small" type="text" @click="reloadImage">重新加载</el-button> | ||||||
|                     </div> |                     </div> | ||||||
|                   </template> |                   </template> | ||||||
|                 </el-image> |                 </el-image> | ||||||
|  |                 <div class="upload-actions"> | ||||||
|  |                   <el-button size="small" type="danger" @click="removeVoucher">删除</el-button> | ||||||
|  |                 </div> | ||||||
|               </div> |               </div> | ||||||
|               <div v-else class="upload-tip"> |               <div v-else class="upload-tip"> | ||||||
|                 <span class="tip-text">* 必须上传转账凭证才能确认转账</span> |                 <span class="tip-text">* 必须上传转账凭证才能确认转账</span> | ||||||
| @@ -398,12 +419,13 @@ | |||||||
| <script> | <script> | ||||||
| import api from '../utils/api' | import api from '../utils/api' | ||||||
| import { uploadURL, getImageUrl, getUploadConfig } from '@/config' | import { uploadURL, getImageUrl, getUploadConfig } from '@/config' | ||||||
| import { Picture } from '@element-plus/icons-vue' | import { Picture, Loading } from '@element-plus/icons-vue' | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   name: 'Matching', |   name: 'Matching', | ||||||
|   components: { |   components: { | ||||||
|     Picture |     Picture, | ||||||
|  |     Loading | ||||||
|   }, |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
| @@ -433,7 +455,8 @@ export default { | |||||||
|         amount: 0, |         amount: 0, | ||||||
|         actualAmount: 0, |         actualAmount: 0, | ||||||
|         voucher: '', |         voucher: '', | ||||||
|         description: '' |         description: '', | ||||||
|  |         uploading: false // 添加上传状态 | ||||||
|       }, |       }, | ||||||
|       showLargeMatchingConfirm: false, |       showLargeMatchingConfirm: false, | ||||||
|       tempMatchingType: 'small' // 临时存储切换前的类型 |       tempMatchingType: 'small' // 临时存储切换前的类型 | ||||||
| @@ -750,6 +773,7 @@ export default { | |||||||
|       this.transferDialog.actualAmount = 0 |       this.transferDialog.actualAmount = 0 | ||||||
|       this.transferDialog.voucher = '' |       this.transferDialog.voucher = '' | ||||||
|       this.transferDialog.description = '' |       this.transferDialog.description = '' | ||||||
|  |       this.transferDialog.uploading = false // 重置上传状态 | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -772,11 +796,25 @@ export default { | |||||||
|  |  | ||||||
|       if (!isImage) { |       if (!isImage) { | ||||||
|         this.$message.error('只能上传图片文件!') |         this.$message.error('只能上传图片文件!') | ||||||
|  |         return false | ||||||
|       } |       } | ||||||
|       if (!isLt5M) { |       if (!isLt5M) { | ||||||
|         this.$message.error('图片大小不能超过 5MB!') |         this.$message.error('图片大小不能超过 5MB!') | ||||||
|  |         return false | ||||||
|       } |       } | ||||||
|       return isImage && isLt5M |        | ||||||
|  |       // 开始上传,设置上传状态 | ||||||
|  |       this.transferDialog.uploading = true | ||||||
|  |       return true | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 上传进度处理 | ||||||
|  |      * @param {Object} event - 进度事件 | ||||||
|  |      */ | ||||||
|  |     handleUploadProgress(event) { | ||||||
|  |       // 可以在这里添加进度条显示 | ||||||
|  |       console.log('上传进度:', Math.round(event.percent) + '%') | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -784,11 +822,34 @@ export default { | |||||||
|      * @param {Object} response - 上传响应 |      * @param {Object} response - 上传响应 | ||||||
|      */ |      */ | ||||||
|     handleUploadSuccess(response) { |     handleUploadSuccess(response) { | ||||||
|       if (response.success) { |       console.log('上传响应:', response) // 添加调试信息 | ||||||
|         this.transferDialog.voucher = response.url |        | ||||||
|  |       // 重置上传状态 | ||||||
|  |       this.transferDialog.uploading = false | ||||||
|  |        | ||||||
|  |       // 兼容不同的响应格式 | ||||||
|  |       let success = false | ||||||
|  |       let imageUrl = '' | ||||||
|  |       let message = '' | ||||||
|  |        | ||||||
|  |       if (response) { | ||||||
|  |         // 检查多种可能的成功标识 | ||||||
|  |         success = response.success === true || response.code === 200 || response.status === 'success' | ||||||
|  |          | ||||||
|  |         // 检查多种可能的图片URL字段 | ||||||
|  |         imageUrl = response.url || response.data?.url || response.file_url || response.path || response.data?.path | ||||||
|  |          | ||||||
|  |         // 检查错误信息 | ||||||
|  |         message = response.message || response.msg || response.data?.message | ||||||
|  |       } | ||||||
|  |        | ||||||
|  |       if (success && imageUrl) { | ||||||
|  |         this.transferDialog.voucher = imageUrl | ||||||
|         this.$message.success('凭证上传成功') |         this.$message.success('凭证上传成功') | ||||||
|  |         console.log('图片URL已设置:', imageUrl) // 调试信息 | ||||||
|       } else { |       } else { | ||||||
|         this.$message.error(response.message || '上传失败') |         console.error('上传失败,响应数据:', response) // 调试信息 | ||||||
|  |         this.$message.error(message || '上传失败,请检查网络连接或联系管理员') | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
| @@ -797,8 +858,37 @@ export default { | |||||||
|      * @param {Error} error - 错误信息 |      * @param {Error} error - 错误信息 | ||||||
|      */ |      */ | ||||||
|     handleUploadError(error) { |     handleUploadError(error) { | ||||||
|  |       // 重置上传状态 | ||||||
|  |       this.transferDialog.uploading = false | ||||||
|  |        | ||||||
|       console.error('上传失败:', error) |       console.error('上传失败:', error) | ||||||
|       this.$message.error('上传失败') |       this.$message.error('上传失败,请检查网络连接后重试') | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除已上传的凭证 | ||||||
|  |      */ | ||||||
|  |     removeVoucher() { | ||||||
|  |       this.$confirm('确定要删除已上传的凭证吗?', '确认删除', { | ||||||
|  |         confirmButtonText: '确定', | ||||||
|  |         cancelButtonText: '取消', | ||||||
|  |         type: 'warning' | ||||||
|  |       }).then(() => { | ||||||
|  |         this.transferDialog.voucher = '' | ||||||
|  |         this.$message.success('凭证已删除') | ||||||
|  |       }).catch(() => {}) | ||||||
|  |     }, | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 重新加载图片 | ||||||
|  |      */ | ||||||
|  |     reloadImage() { | ||||||
|  |       // 强制重新加载图片,通过添加时间戳 | ||||||
|  |       const currentVoucher = this.transferDialog.voucher | ||||||
|  |       this.transferDialog.voucher = '' | ||||||
|  |       this.$nextTick(() => { | ||||||
|  |         this.transferDialog.voucher = currentVoucher | ||||||
|  |       }) | ||||||
|     }, |     }, | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -1712,6 +1802,58 @@ export default { | |||||||
|   font-style: italic; |   font-style: italic; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .upload-preview { | ||||||
|  |   margin-top: 15px; | ||||||
|  |   border: 1px solid #dcdfe6; | ||||||
|  |   border-radius: 8px; | ||||||
|  |   padding: 10px; | ||||||
|  |   background: #fafafa; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .upload-preview .el-image { | ||||||
|  |   width: 200px; | ||||||
|  |   height: 150px; | ||||||
|  |   border-radius: 6px; | ||||||
|  |   overflow: hidden; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .image-slot { | ||||||
|  |   display: flex; | ||||||
|  |   flex-direction: column; | ||||||
|  |   align-items: center; | ||||||
|  |   justify-content: center; | ||||||
|  |   height: 100%; | ||||||
|  |   color: #909399; | ||||||
|  |   font-size: 12px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .image-slot.error { | ||||||
|  |   color: #f56c6c; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .image-slot .el-icon { | ||||||
|  |   font-size: 24px; | ||||||
|  |   margin-bottom: 8px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .upload-actions { | ||||||
|  |   margin-top: 10px; | ||||||
|  |   text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .is-loading { | ||||||
|  |   animation: rotating 2s linear infinite; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @keyframes rotating { | ||||||
|  |   0% { | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |   100% { | ||||||
|  |     transform: rotate(360deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
| /* 超时警告样式 */ | /* 超时警告样式 */ | ||||||
| .timeout-warning { | .timeout-warning { | ||||||
|   display: flex; |   display: flex; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user