1 line
6.3 KiB
JavaScript
1 line
6.3 KiB
JavaScript
|
|
import{__decorate,__rest}from"tslib";import{SuperComponent,wxComponent}from"../common/src/index";import props from"./props";import config from"../common/config";import{isOverSize}from"../common/utils";import{isObject}from"../common/validator";const{prefix:prefix}=config,name=`${prefix}-upload`;let Upload=class extends SuperComponent{constructor(){super(...arguments),this.externalClasses=[`${prefix}-class`],this.options={multipleSlots:!0},this.data={classPrefix:name,prefix:prefix,current:!1,proofs:[],customFiles:[],customLimit:0,column:4,dragBaseData:{},rows:0,dragWrapStyle:"",dragList:[],dragging:!0,dragLayout:!1},this.properties=props,this.controlledProps=[{key:"files",event:"success"}],this.observers={"files, max, draggable"(t,e){this.handleLimit(t,e)},gridConfig(){this.updateGrid()}},this.lifetimes={ready(){this.handleLimit(this.data.customFiles,this.data.max),this.updateGrid()}},this.methods={uploadFiles(t){return new Promise((e=>{const i=this.data.requestMethod(t);if(i instanceof Promise)return i;e({})}))},startUpload(t){return"function"==typeof this.data.requestMethod?this.uploadFiles(t).then((()=>{t.forEach((t=>{t.percent=100})),this.triggerSuccessEvent(t)})).catch((t=>{this.triggerFailEvent(t)})):(this.triggerSuccessEvent(t),this.handleLimit(this.data.customFiles,this.data.max),Promise.resolve())},onAddTap(){const{disabled:t,mediaType:e,source:i}=this.properties;t||("media"===i?this.chooseMedia(e):this.chooseMessageFile(e))},chooseMedia(t){const{config:e,sizeLimit:i,customLimit:s}=this.data;wx.chooseMedia(Object.assign(Object.assign({count:s,mediaType:t},e),{success:e=>{const s=[];e.tempFiles.forEach((e=>{const{size:r,fileType:a,tempFilePath:o,width:n,height:l,duration:c,thumbTempFilePath:h}=e,g=__rest(e,["size","fileType","tempFilePath","width","height","duration","thumbTempFilePath"]);if(isOverSize(r,i)){let t=("image"===a?"图片":"视频")+"大小超过限制";return"number"!=typeof i&&(t=i.message.replace("{sizeLimit}",null==i?void 0:i.size)),void wx.showToast({icon:"none",title:t})}const d=this.getRandFileName(o);s.push(Object.assign({name:d,type:this.getFileType(t,o,a),url:o,size:r,width:n,height:l,duration:c,thumb:h,percent:0},g))})),this.afterSelect(s)},fail:t=>{this.triggerFailEvent(t)},complete:t=>{this.triggerEvent("complete",t)}}))},chooseMessageFile(t){const{max:e,config:i,sizeLimit:s}=this.properties;wx.chooseMessageFile(Object.assign(Object.assign({count:e,type:Array.isArray(t)?"all":t},i),{success:e=>{const i=[];e.tempFiles.forEach((e=>{const{size:r,type:a,path:o}=e,n=__rest(e,["size","type","path"]);if(isOverSize(r,s)){let t=("image"===a?"图片":"视频")+"大小超过限制";return"number"!=typeof s&&(t=s.message.replace("{sizeLimit}",null==s?void 0:s.size)),void wx.showToast({icon:"none",title:t})}const l=this.getRandFileName(o);i.push(Object.assign({name:l,type:this.getFileType(t,o,a),url:o,size:r,percent:0},n))})),this.afterSelect(i)},fail:t=>this.triggerFailEvent(t),complete:t=>this.triggerEvent("complete",t)}))},afterSelect(t){this._trigger("select-change",{files:[...this.data.customFiles],currentSelectedFiles:[t]}),this._trigger("add",{files:t}),this.startUpload(t)},dragVibrate(t){var e;const{vibrateType:i}=t,{draggable:s}=this.data,r=null===(e=null==s?void 0:s.vibrate)||void 0===e||e,a=null==s?void 0:s.collisionVibrate;(r&&"longPress"===i||a&&"touchMove"===i)&&wx.vibrateShort({type:"light"})},dragStatusChange(t){const{dragging:e}=t;this.setData({dragging:e})},dragEnd(t){const{dragCollisionList:e}=t;let i=[];i=0===e.length?this.data.customFiles:e.reduce(((t,e)=>{const{realKey:i,data:s,fixed:r}=e;return r||(t[i]=Object.assign({},s)),t}),[]),this.triggerDropEvent(i)},triggerDropEvent(t){const{transition:e}=this.properties;if(e.backTransition){const i=setTimeout((()=>{this.triggerEvent("drop",{files:t}),clearTimeout(i)}),e.duration)}else this.triggerEvent("drop",{files:t})}}}onProofTap(t){var e;this.onFileClick(t);const{index:i}=t.currentTarget.dataset;wx.previewImage({urls:this.data.customFiles.filter((t=>-1!==t.percent)).map((t=>t.url)),current:null===(e=this.data.customFiles[i])||void 0
|