| | |
| | | <AtImagePicker |
| | | ref="picker" |
| | | mode="aspectFit" |
| | | :sourceType="sourceType" |
| | | :multiple="count > 1" |
| | | :count="count" |
| | | :showAddBtn="!selectedFull" |
| | | :length="3" |
| | | :files="files" |
| | | :onChange="(files,operationType,index)=>handleChange(files,operationType,index)" |
| | | :onFail="evt=>handleFail(evt)" |
| | | :onImageClick="(index, file)=>handleImgView(index,file)" |
| | | :onChange="(files,operationType,index) => handleChange(files,operationType,index)" |
| | | :onFail="evt => handleFail(evt)" |
| | | :onImageClick="(index, file) => handleImgView(index,file)" |
| | | /> |
| | | <CImageCompressor ref="compressor" /> |
| | | <CImagePreview ref="imgPreview" /> |
| | |
| | | type: Number, |
| | | default: 1, |
| | | }, |
| | | // 图片来源 |
| | | sourceType: { |
| | | type: Array, |
| | | default: () => ['album', 'camera'], |
| | | }, |
| | | // 上传图片参数 |
| | | params: { |
| | | type: Object, |
| | | default: () => {}, |
| | | }, |
| | | // 是否开启缩略图 |
| | | needThumb: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | // 上传地址来源 |
| | | uploadUrlSource: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | }, |
| | | data() { |
| | |
| | | if (file.file && file.file.originalFileObj) { |
| | | if ( |
| | | /image\/(gif|png|jpg|jpeg)/.test( |
| | | file.file.originalFileObj.type |
| | | file.file.originalFileObj.type, |
| | | ) |
| | | ) { |
| | | return true; |
| | |
| | | const needs = nextFiles |
| | | .map((file, needIndex) => { |
| | | const fileInfo = file.file; |
| | | // 没有 file 信息对象,或者不是 blob 类型 |
| | | if (!fileInfo || fileInfo.path.indexOf('blob') < 0) { |
| | | // 没有 file 信息对象,或者不是 blob、wxfile、tmp 类型 |
| | | if ( |
| | | !fileInfo || |
| | | (fileInfo.path.indexOf('blob') < 0 && |
| | | fileInfo.path.indexOf('wxfile') < 0 && |
| | | fileInfo.path.indexOf('http://tmp/') < 0) |
| | | ) { |
| | | return false; |
| | | } |
| | | // 尺寸小于 1M 的图片 |
| | |
| | | callback(state, res); |
| | | } |
| | | }, |
| | | this.params |
| | | $fetchCommon.transKeyName('underline', { |
| | | ...this.params, |
| | | needThumb: this.needThumb ? 1 : 0, |
| | | }), |
| | | this.uploadUrlSource, |
| | | ); |
| | | }, |
| | | }, |
| | |
| | | // 图片上传节流 |
| | | const _readyUpload = {}; |
| | | |
| | | export const uploadImage = (files, callback, params) => { |
| | | export const uploadImage = (files, callback, formData = {}, uploadUrlSource) => { |
| | | if (!files || files.length === 0) { |
| | | callback('success', []); |
| | | return; |
| | | } |
| | | let url = $fetchCommon.getUploadImgURL(); |
| | | let url = ''; |
| | | if (uploadUrlSource === 'LPG') { |
| | | url = $fetchCommon.getLPGUploadImgURL(); |
| | | } else { |
| | | url = $fetchCommon.getUploadImgURL(); |
| | | } |
| | | if (url.indexOf('http') < 0) { |
| | | url = $hostBoot.getHost() + url; |
| | | } |
| | |
| | | ...requestFile, |
| | | header, |
| | | name: 'file', |
| | | formData: { ...params }, |
| | | formData, |
| | | timeout: 30 * 1000, |
| | | success(res) { |
| | | const res2 = |
| | | typeof res.data === 'string' |
| | | ? JSON.parse(res.data) |
| | | : res.data; |
| | | let res2; |
| | | try { |
| | | res2 = |
| | | typeof res.data === 'string' |
| | | ? JSON.parse(res.data) |
| | | : res.data; |
| | | } catch (err) { |
| | | reject({ |
| | | ...requestFile, |
| | | response: res, |
| | | message: '上传图片异常!', |
| | | }); |
| | | return; |
| | | } |
| | | // 上传成功 |
| | | if (res2.state.code === 2000) { |
| | | const imgUrl = $fetchCommon.transImgPath( |
| | | 'fix', |
| | | res2.data.src || res2.data.file || res2.data.url |
| | | res2.data.src || res2.data.file || res2.data.url, |
| | | ); |
| | | _readyUpload[file.url] = imgUrl; |
| | | resolve(imgUrl); |
| | |
| | | }); |
| | | }, |
| | | }); |
| | | }) |
| | | }), |
| | | ); |
| | | } |
| | | // 其他类型视为 url,忽略 |