diff --git a/doc/base/upload-pro.md b/doc/base/upload-pro.md index 7d139ba6..56328294 100644 --- a/doc/base/upload-pro.md +++ b/doc/base/upload-pro.md @@ -371,6 +371,7 @@ export default{ example-big-image="https://i.epay.126.net/a/ge/static/img/eg_vat_big.932d392b.png" :onExceed="onExceed1" @change="handleChange" + :response-validate="handleOcrCheck" >添加图片 @@ -392,6 +393,21 @@ export default{ onExceed1() { this.$sparta.error('最多上传1张图片') }, + handleOcrCheck(file) { + console.log('handleOcrCheck', file) + return new Promise((resolve, reject) => { + if(file) { + resolve({ + pass: true, + }) + } else { + reject({ + pass: false, + errMsg: '上传失败' + }) + } + }) + } } } @@ -594,6 +610,21 @@ export default{ onOversize() { console.log('oversize') }, + handleOcrCheck(file) { + console.log('handleOcrCheck', file) + return new Promise((resolve, reject) => { + if(file) { + resolve({ + pass: true, + }) + } else { + reject({ + pass: false, + errMsg: '上传失败' + }) + } + }) + } } } diff --git a/sparta/components/base/upload-pro/src/ajax.js b/sparta/components/base/upload-pro/src/ajax.js index cb5f140a..3388abfd 100755 --- a/sparta/components/base/upload-pro/src/ajax.js +++ b/sparta/components/base/upload-pro/src/ajax.js @@ -40,7 +40,7 @@ export default function upload(option) { const formData = new FormData() if (option.data) { Object.keys(option.data).forEach(key => { - formData.append(key, option.data[key]) + formData.append(key, option.data[ key ]) }) } formData.append(option.filename, option.file, option.file.name) @@ -50,18 +50,22 @@ export default function upload(option) { option.onError(e) } // 加载回调 - xhr.onload = () => { + xhr.onload = async () => { if (xhr.status < 200 || xhr.status >= 300) { return option.onError(getError(action, option, xhr)) } const response = getBody(xhr) if (response) { - const validateResult = option.responseValidate(response) - if (validateResult.pass) { - option.onSuccess(response) - } else { - option.onError(validateResult.errMsg) + try { + const validateResult = await Promise.resolve(option.responseValidate(response)) + if (validateResult?.pass) { + option.onSuccess(response) + } else { + option.onError(validateResult?.errMsg || '上传失败') + } + } catch (e) { + option.onError(e?.errMsg || '上传失败') } } } @@ -85,8 +89,8 @@ export default function upload(option) { // 设置http header const headers = option.headers || {} for (let item in headers) { - if (headers.hasOwnProperty(item) && headers[item] !== null) { - xhr.setRequestHeader(item, headers[item]) + if (headers.hasOwnProperty(item) && headers[ item ] !== null) { + xhr.setRequestHeader(item, headers[ item ]) } } xhr.send(formData)