diff --git a/README.md b/README.md index b816f12..ea47884 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [demo: http://dcat.weiwait.cn (admin:admin)](http://dcat.weiwait.cn/admin/demo-settings 'user: admin psw: admin') ### 依赖扩展 -[freyo/flysystem-qcloud-cos-v5](https://github.com/freyo/flysystem-qcloud-cos-v5) +[overtrue/laravel-filesystem-cos](https://github.com/overtrue/laravel-filesystem-cos) [overtrue/laravel-filesystem-qiniu](https://github.com/overtrue/laravel-filesystem-qiniu) @@ -29,9 +29,10 @@ } ``` -### 文件系统-通过一级菜单使用 +[//]: # (### 文件系统-通过一级菜单使用) -![](https://github.com/weiwait/images/blob/main/dcat-smtp-menu.png?raw=true) +[//]: # () +[//]: # (![](https://github.com/weiwait/images/blob/main/dcat-smtp-menu.png?raw=true)) ### 示例图片 diff --git a/composer.json b/composer.json index 004b053..a5f6173 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,8 @@ "dcat/laravel-admin": "~2.0", "iidestiny/laravel-filesystem-oss": "^3.1", "overtrue/laravel-filesystem-qiniu": "^2.1", - "freyo/flysystem-qcloud-cos-v5": "^2.0" + "overtrue/laravel-filesystem-cos": "^3.1", + "qcloud_sts/qcloud-sts-sdk": "^3.0" }, "autoload": { "psr-4": { diff --git a/resources/assets/js/index.js b/resources/assets/js/index.js index 520e3fe..7e610a9 100644 --- a/resources/assets/js/index.js +++ b/resources/assets/js/index.js @@ -2491,7 +2491,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho height: 0; opacity: 0; `)]),Y0=globalThis&&globalThis.__awaiter||function(e,t,n,r){function o(i){return i instanceof n?i:new n(function(a){a(i)})}return new(n||(n=Promise))(function(i,a){function l(c){try{u(r.next(c))}catch(d){a(d)}}function s(c){try{u(r.throw(c))}catch(d){a(d)}}function u(c){c.done?i(c.value):o(c.value).then(l,s)}u((r=r.apply(e,t||[])).next())})};function g9(e,t,n){const{doChange:r,xhrMap:o}=e;let i=0;function a(s){var u;let c=Object.assign({},t,{status:"error",percentage:i});o.delete(t.id),c=bl(((u=e.onError)===null||u===void 0?void 0:u.call(e,{file:c,event:s}))||c),r(c,s)}function l(s){var u;if(e.isErrorState){if(e.isErrorState(n)){a(s);return}}else if(n.status<200||n.status>=300){a(s);return}let c=Object.assign({},t,{status:"finished",percentage:i,file:null});o.delete(t.id),c=bl(((u=e.onFinish)===null||u===void 0?void 0:u.call(e,{file:c,event:s}))||c),r(c,s)}return{handleXHRLoad:l,handleXHRError:a,handleXHRAbort(s){const u=Object.assign({},t,{status:"removed",file:null,percentage:i});o.delete(t.id),r(u,s)},handleXHRProgress(s){const u=Object.assign({},t,{status:"uploading"});if(s.lengthComputable){const c=Math.ceil(s.loaded/s.total*100);u.percentage=c,i=c}r(u,s)}}}function b9(e){const{inst:t,file:n,data:r,headers:o,withCredentials:i,action:a,customRequest:l}=e,{doChange:s}=e.inst;let u=0;l({file:n,data:r,headers:o,withCredentials:i,action:a,onProgress(c){const d=Object.assign({},n,{status:"uploading"}),h=c.percent;d.percentage=h,u=h,s(d)},onFinish(){var c;let d=Object.assign({},n,{status:"finished",percentage:u,file:null});d=bl(((c=t.onFinish)===null||c===void 0?void 0:c.call(t,{file:d}))||d),s(d)},onError(){var c;let d=Object.assign({},n,{status:"error",percentage:u});d=bl(((c=t.onError)===null||c===void 0?void 0:c.call(t,{file:d}))||d),s(d)}})}function y9(e,t,n){const r=g9(e,t,n);n.onabort=r.handleXHRAbort,n.onerror=r.handleXHRError,n.onload=r.handleXHRLoad,n.upload&&(n.upload.onprogress=r.handleXHRProgress)}function fC(e,t){return typeof e=="function"?e({file:t}):e||{}}function w9(e,t,n){const r=fC(t,n);!r||Object.keys(r).forEach(o=>{e.setRequestHeader(o,r[o])})}function x9(e,t,n){const r=fC(t,n);!r||Object.keys(r).forEach(o=>{e.append(o,r[o])})}function C9(e,t,n,{method:r,action:o,withCredentials:i,responseType:a,headers:l,data:s}){const u=new XMLHttpRequest;u.responseType=a,e.xhrMap.set(n.id,u),u.withCredentials=i;const c=new FormData;if(x9(c,s,n),c.append(t,n.file),y9(e,n,u),o!==void 0){u.open(r.toUpperCase(),o),w9(u,l,n),u.send(c);const d=Object.assign({},n,{status:"uploading"});e.doChange(d)}}const _9=Object.assign(Object.assign({},Ye.props),{name:{type:String,default:"file"},accept:String,action:String,customRequest:Function,directory:Boolean,directoryDnd:{type:Boolean,default:void 0},method:{type:String,default:"POST"},multiple:Boolean,showFileList:{type:Boolean,default:!0},data:[Object,Function],headers:[Object,Function],withCredentials:Boolean,responseType:{type:String,default:""},disabled:{type:Boolean,default:void 0},onChange:Function,onRemove:Function,onFinish:Function,onError:Function,onBeforeUpload:Function,isErrorState:Function,onDownload:Function,defaultUpload:{type:Boolean,default:!0},fileList:Array,"onUpdate:fileList":[Function,Array],onUpdateFileList:[Function,Array],fileListStyle:[String,Object],defaultFileList:{type:Array,default:()=>[]},showCancelButton:{type:Boolean,default:!0},showRemoveButton:{type:Boolean,default:!0},showDownloadButton:Boolean,showRetryButton:{type:Boolean,default:!0},showPreviewButton:{type:Boolean,default:!0},listType:{type:String,default:"text"},onPreview:Function,shouldUseThumbnailUrl:{type:Function,default:e=>o9?cC(e):!1},createThumbnailUrl:Function,abstract:Boolean,max:Number,showTrigger:{type:Boolean,default:!0},imageGroupProps:Object,inputProps:Object,triggerStyle:[String,Object],renderIcon:Object});var hC=fe({name:"Upload",props:_9,setup(e){e.abstract&&e.listType==="image-card"&&oi("upload","when the list-type is image-card, abstract is not supported.");const{mergedClsPrefixRef:t,inlineThemeDisabled:n}=xt(e),r=Ye("Upload","-upload",m9,RB,e,t),o=kr(e),i=D(()=>{const{max:_}=e;return _!==void 0?v.value.length>=_:!1}),a=E(e.defaultFileList),l=$e(e,"fileList"),s=E(null),u={value:!1},c=E(!1),d=new Map,h=Kn(l,a),v=D(()=>h.value.map(bl));function p(){var _;(_=s.value)===null||_===void 0||_.click()}function y(_){const T=_.target;g(T.files?Array.from(T.files).map(k=>({file:k,entry:null,source:"input"})):null,_),T.value=""}function b(_){const{"onUpdate:fileList":T,onUpdateFileList:k}=e;T&&we(T,_),k&&we(k,_),a.value=_}const m=D(()=>e.multiple||e.directory);function g(_,T){if(!_||_.length===0)return;const{onBeforeUpload:k}=e;_=m.value?_:[_[0]];const{max:$,accept:M}=e;_=_.filter(({file:U,source:Y})=>Y==="dnd"&&(M==null?void 0:M.trim())?s9(U.name,U.type,M):!0),$&&(_=_.slice(0,$-v.value.length));const F=ei();Promise.all(_.map(({file:U,entry:Y})=>Y0(this,void 0,void 0,function*(){var Z;const oe={id:ei(),batchId:F,name:U.name,status:"pending",percentage:0,file:U,url:null,type:U.type,thumbnailUrl:null,fullPath:(Z=Y==null?void 0:Y.fullPath)!==null&&Z!==void 0?Z:`/${U.webkitRelativePath||U.name}`};return!k||(yield k({file:oe,fileList:v.value}))!==!1?oe:null}))).then(U=>Y0(this,void 0,void 0,function*(){let Y=Promise.resolve();return U.forEach(Z=>{Y=Y.then(Kt).then(()=>{Z&&w(Z,T,{append:!0})})}),yield Y})).then(()=>{e.defaultUpload&&O()})}function O(_){const{method:T,action:k,withCredentials:$,headers:M,data:F,name:U}=e,Y=_!==void 0?v.value.filter(oe=>oe.id===_):v.value,Z=_!==void 0;Y.forEach(oe=>{const{status:X}=oe;(X==="pending"||X==="error"&&Z)&&(e.customRequest?b9({inst:{doChange:w,xhrMap:d,onFinish:e.onFinish,onError:e.onError},file:oe,action:k,withCredentials:$,headers:M,data:F,customRequest:e.customRequest}):C9({doChange:w,xhrMap:d,onFinish:e.onFinish,onError:e.onError,isErrorState:e.isErrorState},U,oe,{method:T,action:k,withCredentials:$,responseType:e.responseType,headers:M,data:F}))})}const w=(_,T,k={append:!1,remove:!1})=>{const{append:$,remove:M}=k,F=Array.from(v.value),U=F.findIndex(Y=>Y.id===_.id);if($||M||~U){$?F.push(_):M?F.splice(U,1):F.splice(U,1,_);const{onChange:Y}=e;Y&&Y({file:_,fileList:F,event:T}),b(F)}};function C(_){var T;if(_.thumbnailUrl)return _.thumbnailUrl;const{createThumbnailUrl:k}=e;return k?(T=k(_.file,_))!==null&&T!==void 0?T:_.url||"":_.url?_.url:_.file?r9(_.file):""}const S=D(()=>{const{common:{cubicBezierEaseInOut:_},self:{draggerColor:T,draggerBorder:k,draggerBorderHover:$,itemColorHover:M,itemColorHoverError:F,itemTextColorError:U,itemTextColorSuccess:Y,itemTextColor:Z,itemIconColor:oe,itemDisabledOpacity:X,lineHeight:te,borderRadius:ce,fontSize:xe,itemBorderImageCardError:Ae,itemBorderImageCard:de}}=r.value;return{"--n-bezier":_,"--n-border-radius":ce,"--n-dragger-border":k,"--n-dragger-border-hover":$,"--n-dragger-color":T,"--n-font-size":xe,"--n-item-color-hover":M,"--n-item-color-hover-error":F,"--n-item-disabled-opacity":X,"--n-item-icon-color":oe,"--n-item-text-color":Z,"--n-item-text-color-error":U,"--n-item-text-color-success":Y,"--n-line-height":te,"--n-item-border-image-card-error":Ae,"--n-item-border-image-card":de}}),x=n?zt("upload",void 0,S,e):void 0;St(pa,{mergedClsPrefixRef:t,mergedThemeRef:r,showCancelButtonRef:$e(e,"showCancelButton"),showDownloadButtonRef:$e(e,"showDownloadButton"),showRemoveButtonRef:$e(e,"showRemoveButton"),showRetryButtonRef:$e(e,"showRetryButton"),onRemoveRef:$e(e,"onRemove"),onDownloadRef:$e(e,"onDownload"),mergedFileListRef:v,triggerStyleRef:$e(e,"triggerStyle"),shouldUseThumbnailUrlRef:$e(e,"shouldUseThumbnailUrl"),renderIconRef:$e(e,"renderIcon"),xhrMap:d,submit:O,doChange:w,showPreviewButtonRef:$e(e,"showPreviewButton"),onPreviewRef:$e(e,"onPreview"),getFileThumbnailUrlResolver:C,listTypeRef:$e(e,"listType"),dragOverRef:c,openOpenFileDialog:p,draggerInsideRef:u,handleFileAddition:g,mergedDisabledRef:o.mergedDisabledRef,maxReachedRef:i,fileListStyleRef:$e(e,"fileListStyle"),abstractRef:$e(e,"abstract"),acceptRef:$e(e,"accept"),cssVarsRef:n?void 0:S,themeClassRef:x==null?void 0:x.themeClass,onRender:x==null?void 0:x.onRender,showTriggerRef:$e(e,"showTrigger"),imageGroupPropsRef:$e(e,"imageGroupProps"),mergedDirectoryDndRef:D(()=>{var _;return(_=e.directoryDnd)!==null&&_!==void 0?_:e.directory})});const P={clear:()=>{a.value=[]},submit:O,openOpenFileDialog:p};return Object.assign({mergedClsPrefix:t,draggerInsideRef:u,inputElRef:s,mergedTheme:r,dragOver:c,mergedMultiple:m,cssVars:n?void 0:S,themeClass:x==null?void 0:x.themeClass,onRender:x==null?void 0:x.onRender,handleFileInputChange:y},P)},render(){var e,t;const{draggerInsideRef:n,mergedClsPrefix:r,$slots:o,directory:i,onRender:a}=this;if(o.default&&!this.abstract){const s=o.default()[0];!((e=s==null?void 0:s.type)===null||e===void 0)&&e[lC]&&(n.value=!0)}const l=f("input",Object.assign({},this.inputProps,{ref:"inputElRef",type:"file",class:`${r}-upload-file-input`,accept:this.accept,multiple:this.mergedMultiple,onChange:this.handleFileInputChange,webkitdirectory:i||void 0,directory:i||void 0}));return this.abstract?f(je,null,(t=o.default)===null||t===void 0?void 0:t.call(o),f(av,{to:"body"},l)):(a==null||a(),f("div",{class:[`${r}-upload`,n.value&&`${r}-upload--dragger-inside`,this.dragOver&&`${r}-upload--drag-over`,this.themeClass],style:this.cssVars},l,this.showTrigger&&this.listType!=="image-card"&&f(dC,null,o),this.showFileList&&f(v9,null,o)))}});const S9=fe({__name:"App",setup(e){const t=ze("provides");return(n,r)=>(Pe(),jn(le(dF),{locale:le(q4),"date-locale":le(Fk)},{default:ot(()=>[Ue(le(YB),null,{default:ot(()=>[(Pe(),jn(E2(le(t).component)))]),_:1})]),_:1},8,["locale","date-locale"]))}});class Xt{constructor(){this._dataLength=0,this._bufferLength=0,this._state=new Int32Array(4),this._buffer=new ArrayBuffer(68),this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}static hashStr(t,n=!1){return this.onePassHasher.start().appendStr(t).end(n)}static hashAsciiStr(t,n=!1){return this.onePassHasher.start().appendAsciiStr(t).end(n)}static _hex(t){const n=Xt.hexChars,r=Xt.hexOut;let o,i,a,l;for(l=0;l<4;l+=1)for(i=l*8,o=t[l],a=0;a<8;a+=2)r[i+1+a]=n.charAt(o&15),o>>>=4,r[i+0+a]=n.charAt(o&15),o>>>=4;return r.join("")}static _md5cycle(t,n){let r=t[0],o=t[1],i=t[2],a=t[3];r+=(o&i|~o&a)+n[0]-680876936|0,r=(r<<7|r>>>25)+o|0,a+=(r&o|~r&i)+n[1]-389564586|0,a=(a<<12|a>>>20)+r|0,i+=(a&r|~a&o)+n[2]+606105819|0,i=(i<<17|i>>>15)+a|0,o+=(i&a|~i&r)+n[3]-1044525330|0,o=(o<<22|o>>>10)+i|0,r+=(o&i|~o&a)+n[4]-176418897|0,r=(r<<7|r>>>25)+o|0,a+=(r&o|~r&i)+n[5]+1200080426|0,a=(a<<12|a>>>20)+r|0,i+=(a&r|~a&o)+n[6]-1473231341|0,i=(i<<17|i>>>15)+a|0,o+=(i&a|~i&r)+n[7]-45705983|0,o=(o<<22|o>>>10)+i|0,r+=(o&i|~o&a)+n[8]+1770035416|0,r=(r<<7|r>>>25)+o|0,a+=(r&o|~r&i)+n[9]-1958414417|0,a=(a<<12|a>>>20)+r|0,i+=(a&r|~a&o)+n[10]-42063|0,i=(i<<17|i>>>15)+a|0,o+=(i&a|~i&r)+n[11]-1990404162|0,o=(o<<22|o>>>10)+i|0,r+=(o&i|~o&a)+n[12]+1804603682|0,r=(r<<7|r>>>25)+o|0,a+=(r&o|~r&i)+n[13]-40341101|0,a=(a<<12|a>>>20)+r|0,i+=(a&r|~a&o)+n[14]-1502002290|0,i=(i<<17|i>>>15)+a|0,o+=(i&a|~i&r)+n[15]+1236535329|0,o=(o<<22|o>>>10)+i|0,r+=(o&a|i&~a)+n[1]-165796510|0,r=(r<<5|r>>>27)+o|0,a+=(r&i|o&~i)+n[6]-1069501632|0,a=(a<<9|a>>>23)+r|0,i+=(a&o|r&~o)+n[11]+643717713|0,i=(i<<14|i>>>18)+a|0,o+=(i&r|a&~r)+n[0]-373897302|0,o=(o<<20|o>>>12)+i|0,r+=(o&a|i&~a)+n[5]-701558691|0,r=(r<<5|r>>>27)+o|0,a+=(r&i|o&~i)+n[10]+38016083|0,a=(a<<9|a>>>23)+r|0,i+=(a&o|r&~o)+n[15]-660478335|0,i=(i<<14|i>>>18)+a|0,o+=(i&r|a&~r)+n[4]-405537848|0,o=(o<<20|o>>>12)+i|0,r+=(o&a|i&~a)+n[9]+568446438|0,r=(r<<5|r>>>27)+o|0,a+=(r&i|o&~i)+n[14]-1019803690|0,a=(a<<9|a>>>23)+r|0,i+=(a&o|r&~o)+n[3]-187363961|0,i=(i<<14|i>>>18)+a|0,o+=(i&r|a&~r)+n[8]+1163531501|0,o=(o<<20|o>>>12)+i|0,r+=(o&a|i&~a)+n[13]-1444681467|0,r=(r<<5|r>>>27)+o|0,a+=(r&i|o&~i)+n[2]-51403784|0,a=(a<<9|a>>>23)+r|0,i+=(a&o|r&~o)+n[7]+1735328473|0,i=(i<<14|i>>>18)+a|0,o+=(i&r|a&~r)+n[12]-1926607734|0,o=(o<<20|o>>>12)+i|0,r+=(o^i^a)+n[5]-378558|0,r=(r<<4|r>>>28)+o|0,a+=(r^o^i)+n[8]-2022574463|0,a=(a<<11|a>>>21)+r|0,i+=(a^r^o)+n[11]+1839030562|0,i=(i<<16|i>>>16)+a|0,o+=(i^a^r)+n[14]-35309556|0,o=(o<<23|o>>>9)+i|0,r+=(o^i^a)+n[1]-1530992060|0,r=(r<<4|r>>>28)+o|0,a+=(r^o^i)+n[4]+1272893353|0,a=(a<<11|a>>>21)+r|0,i+=(a^r^o)+n[7]-155497632|0,i=(i<<16|i>>>16)+a|0,o+=(i^a^r)+n[10]-1094730640|0,o=(o<<23|o>>>9)+i|0,r+=(o^i^a)+n[13]+681279174|0,r=(r<<4|r>>>28)+o|0,a+=(r^o^i)+n[0]-358537222|0,a=(a<<11|a>>>21)+r|0,i+=(a^r^o)+n[3]-722521979|0,i=(i<<16|i>>>16)+a|0,o+=(i^a^r)+n[6]+76029189|0,o=(o<<23|o>>>9)+i|0,r+=(o^i^a)+n[9]-640364487|0,r=(r<<4|r>>>28)+o|0,a+=(r^o^i)+n[12]-421815835|0,a=(a<<11|a>>>21)+r|0,i+=(a^r^o)+n[15]+530742520|0,i=(i<<16|i>>>16)+a|0,o+=(i^a^r)+n[2]-995338651|0,o=(o<<23|o>>>9)+i|0,r+=(i^(o|~a))+n[0]-198630844|0,r=(r<<6|r>>>26)+o|0,a+=(o^(r|~i))+n[7]+1126891415|0,a=(a<<10|a>>>22)+r|0,i+=(r^(a|~o))+n[14]-1416354905|0,i=(i<<15|i>>>17)+a|0,o+=(a^(i|~r))+n[5]-57434055|0,o=(o<<21|o>>>11)+i|0,r+=(i^(o|~a))+n[12]+1700485571|0,r=(r<<6|r>>>26)+o|0,a+=(o^(r|~i))+n[3]-1894986606|0,a=(a<<10|a>>>22)+r|0,i+=(r^(a|~o))+n[10]-1051523|0,i=(i<<15|i>>>17)+a|0,o+=(a^(i|~r))+n[1]-2054922799|0,o=(o<<21|o>>>11)+i|0,r+=(i^(o|~a))+n[8]+1873313359|0,r=(r<<6|r>>>26)+o|0,a+=(o^(r|~i))+n[15]-30611744|0,a=(a<<10|a>>>22)+r|0,i+=(r^(a|~o))+n[6]-1560198380|0,i=(i<<15|i>>>17)+a|0,o+=(a^(i|~r))+n[13]+1309151649|0,o=(o<<21|o>>>11)+i|0,r+=(i^(o|~a))+n[4]-145523070|0,r=(r<<6|r>>>26)+o|0,a+=(o^(r|~i))+n[11]-1120210379|0,a=(a<<10|a>>>22)+r|0,i+=(r^(a|~o))+n[2]+718787259|0,i=(i<<15|i>>>17)+a|0,o+=(a^(i|~r))+n[9]-343485551|0,o=(o<<21|o>>>11)+i|0,t[0]=r+t[0]|0,t[1]=o+t[1]|0,t[2]=i+t[2]|0,t[3]=a+t[3]|0}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(Xt.stateIdentity),this}appendStr(t){const n=this._buffer8,r=this._buffer32;let o=this._bufferLength,i,a;for(a=0;a>>6)+192,n[o++]=i&63|128;else if(i<55296||i>56319)n[o++]=(i>>>12)+224,n[o++]=i>>>6&63|128,n[o++]=i&63|128;else{if(i=(i-55296)*1024+(t.charCodeAt(++a)-56320)+65536,i>1114111)throw new Error("Unicode standard supports code points up to U+10FFFF");n[o++]=(i>>>18)+240,n[o++]=i>>>12&63|128,n[o++]=i>>>6&63|128,n[o++]=i&63|128}o>=64&&(this._dataLength+=64,Xt._md5cycle(this._state,r),o-=64,r[0]=r[16])}return this._bufferLength=o,this}appendAsciiStr(t){const n=this._buffer8,r=this._buffer32;let o=this._bufferLength,i,a=0;for(;;){for(i=Math.min(t.length-a,64-o);i--;)n[o++]=t.charCodeAt(a++);if(o<64)break;this._dataLength+=64,Xt._md5cycle(this._state,r),o=0}return this._bufferLength=o,this}appendByteArray(t){const n=this._buffer8,r=this._buffer32;let o=this._bufferLength,i,a=0;for(;;){for(i=Math.min(t.length-a,64-o);i--;)n[o++]=t[a++];if(o<64)break;this._dataLength+=64,Xt._md5cycle(this._state,r),o=0}return this._bufferLength=o,this}getState(){const t=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[t[0],t[1],t[2],t[3]]}}setState(t){const n=t.buffer,r=t.state,o=this._state;let i;for(this._dataLength=t.length,this._bufferLength=t.buflen,o[0]=r[0],o[1]=r[1],o[2]=r[2],o[3]=r[3],i=0;i>2)+1;this._dataLength+=n;const a=this._dataLength*8;if(r[n]=128,r[n+1]=r[n+2]=r[n+3]=0,o.set(Xt.buffer32Identity.subarray(i),i),n>55&&(Xt._md5cycle(this._state,o),o.set(Xt.buffer32Identity)),a<=4294967295)o[14]=a;else{const l=a.toString(16).match(/(.*?)(.{0,8})$/);if(l===null)return;const s=parseInt(l[2],16),u=parseInt(l[1],16)||0;o[14]=s,o[15]=u}return Xt._md5cycle(this._state,o),t?this._state:Xt._hex(this._state)}}Xt.stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);Xt.buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);Xt.hexChars="0123456789abcdef";Xt.hexOut=[];Xt.onePassHasher=new Xt;if(Xt.hashStr("hello")!=="5d41402abc4b2a76b9719d911017c592")throw new Error("Md5 self test failed.");function Ys(e,t=""){return t=t?"."+t:e.substring(e.lastIndexOf(".")),Xt.hashStr(e+Math.random().toString())+t}var om={exports:{}},pC=function(t,n){return function(){for(var o=new Array(arguments.length),i=0;i0;)i=r[o],a[i]||(t[i]=e[i],a[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t}function j9(e,t,n){e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return r!==-1&&r===n}function W9(e){if(!e)return null;var t=e.length;if(oc(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n}var V9=function(e){return function(t){return e&&t instanceof e}}(typeof Uint8Array!="undefined"&&Object.getPrototypeOf(Uint8Array)),gn={isArray:lm,isArrayBuffer:vC,isBuffer:$9,isFormData:A9,isArrayBufferView:P9,isString:T9,isNumber:R9,isObject:mC,isPlainObject:qs,isUndefined:oc,isDate:k9,isFile:D9,isBlob:M9,isFunction:sm,isStream:z9,isURLSearchParams:I9,isStandardBrowserEnv:B9,forEach:um,merge:Op,extend:L9,trim:F9,stripBOM:N9,inherits:H9,toFlatObject:U9,kindOf:am,kindOfTest:hi,endsWith:j9,toArray:W9,isTypedArray:V9,isFileList:E9},_i=gn;function q0(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var gC=function(t,n,r){if(!n)return t;var o;if(r)o=r(n);else if(_i.isURLSearchParams(n))o=n.toString();else{var i=[];_i.forEach(n,function(s,u){s===null||typeof s=="undefined"||(_i.isArray(s)?u=u+"[]":s=[s],_i.forEach(s,function(d){_i.isDate(d)?d=d.toISOString():_i.isObject(d)&&(d=JSON.stringify(d)),i.push(q0(u)+"="+q0(d))}))}),o=i.join("&")}if(o){var a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+o}return t},Y9=gn;function Hc(){this.handlers=[]}Hc.prototype.use=function(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1};Hc.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)};Hc.prototype.forEach=function(t){Y9.forEach(this.handlers,function(r){r!==null&&t(r)})};var q9=Hc,K9=gn,X9=function(t,n){K9.forEach(t,function(o,i){i!==n&&i.toUpperCase()===n.toUpperCase()&&(t[n]=o,delete t[i])})},bC=gn;function Qi(e,t,n,r,o){Error.call(this),this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}bC.inherits(Qi,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var yC=Qi.prototype,wC={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach(function(e){wC[e]={value:e}});Object.defineProperties(Qi,wC);Object.defineProperty(yC,"isAxiosError",{value:!0});Qi.from=function(e,t,n,r,o,i){var a=Object.create(yC);return bC.toFlatObject(e,a,function(s){return s!==Error.prototype}),Qi.call(a,e.message,t,n,r,o),a.name=e.name,i&&Object.assign(a,i),a};var va=Qi,xC={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ar=gn;function G9(e,t){t=t||new FormData;var n=[];function r(i){return i===null?"":ar.isDate(i)?i.toISOString():ar.isArrayBuffer(i)||ar.isTypedArray(i)?typeof Blob=="function"?new Blob([i]):Buffer.from(i):i}function o(i,a){if(ar.isPlainObject(i)||ar.isArray(i)){if(n.indexOf(i)!==-1)throw Error("Circular reference detected in "+a);n.push(i),ar.forEach(i,function(s,u){if(!ar.isUndefined(s)){var c=a?a+"."+u:u,d;if(s&&!a&&typeof s=="object"){if(ar.endsWith(u,"{}"))s=JSON.stringify(s);else if(ar.endsWith(u,"[]")&&(d=ar.toArray(s))){d.forEach(function(h){!ar.isUndefined(h)&&t.append(c,r(h))});return}}o(s,c)}}),n.pop()}else t.append(a,r(i))}return o(e),t}var CC=G9,Xd=va,Z9=function(t,n,r){var o=r.config.validateStatus;!r.status||!o||o(r.status)?t(r):n(new Xd("Request failed with status code "+r.status,[Xd.ERR_BAD_REQUEST,Xd.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))},Jl=gn,Q9=Jl.isStandardBrowserEnv()?function(){return{write:function(n,r,o,i,a,l){var s=[];s.push(n+"="+encodeURIComponent(r)),Jl.isNumber(o)&&s.push("expires="+new Date(o).toGMTString()),Jl.isString(i)&&s.push("path="+i),Jl.isString(a)&&s.push("domain="+a),l===!0&&s.push("secure"),document.cookie=s.join("; ")},read:function(n){var r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}(),J9=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},eL=function(t,n){return n?t.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):t},tL=J9,nL=eL,_C=function(t,n){return t&&!tL(n)?nL(t,n):n},Gd=gn,rL=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],oL=function(t){var n={},r,o,i;return t&&Gd.forEach(t.split(` -`),function(l){if(i=l.indexOf(":"),r=Gd.trim(l.substr(0,i)).toLowerCase(),o=Gd.trim(l.substr(i+1)),r){if(n[r]&&rL.indexOf(r)>=0)return;r==="set-cookie"?n[r]=(n[r]?n[r]:[]).concat([o]):n[r]=n[r]?n[r]+", "+o:o}}),n},K0=gn,iL=K0.isStandardBrowserEnv()?function(){var t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a"),r;function o(i){var a=i;return t&&(n.setAttribute("href",a),a=n.href),n.setAttribute("href",a),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=o(window.location.href),function(a){var l=K0.isString(a)?o(a):a;return l.protocol===r.protocol&&l.host===r.host}}():function(){return function(){return!0}}(),$p=va,aL=gn;function SC(e){$p.call(this,e==null?"canceled":e,$p.ERR_CANCELED),this.name="CanceledError"}aL.inherits(SC,$p,{__CANCEL__:!0});var Uc=SC,lL=function(t){var n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return n&&n[1]||""},_a=gn,sL=Z9,uL=Q9,cL=gC,dL=_C,fL=oL,hL=iL,pL=xC,zr=va,vL=Uc,mL=lL,X0=function(t){return new Promise(function(r,o){var i=t.data,a=t.headers,l=t.responseType,s;function u(){t.cancelToken&&t.cancelToken.unsubscribe(s),t.signal&&t.signal.removeEventListener("abort",s)}_a.isFormData(i)&&_a.isStandardBrowserEnv()&&delete a["Content-Type"];var c=new XMLHttpRequest;if(t.auth){var d=t.auth.username||"",h=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";a.Authorization="Basic "+btoa(d+":"+h)}var v=dL(t.baseURL,t.url);c.open(t.method.toUpperCase(),cL(v,t.params,t.paramsSerializer),!0),c.timeout=t.timeout;function p(){if(!!c){var m="getAllResponseHeaders"in c?fL(c.getAllResponseHeaders()):null,g=!l||l==="text"||l==="json"?c.responseText:c.response,O={data:g,status:c.status,statusText:c.statusText,headers:m,config:t,request:c};sL(function(C){r(C),u()},function(C){o(C),u()},O),c=null}}if("onloadend"in c?c.onloadend=p:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(p)},c.onabort=function(){!c||(o(new zr("Request aborted",zr.ECONNABORTED,t,c)),c=null)},c.onerror=function(){o(new zr("Network Error",zr.ERR_NETWORK,t,c,c)),c=null},c.ontimeout=function(){var g=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",O=t.transitional||pL;t.timeoutErrorMessage&&(g=t.timeoutErrorMessage),o(new zr(g,O.clarifyTimeoutError?zr.ETIMEDOUT:zr.ECONNABORTED,t,c)),c=null},_a.isStandardBrowserEnv()){var y=(t.withCredentials||hL(v))&&t.xsrfCookieName?uL.read(t.xsrfCookieName):void 0;y&&(a[t.xsrfHeaderName]=y)}"setRequestHeader"in c&&_a.forEach(a,function(g,O){typeof i=="undefined"&&O.toLowerCase()==="content-type"?delete a[O]:c.setRequestHeader(O,g)}),_a.isUndefined(t.withCredentials)||(c.withCredentials=!!t.withCredentials),l&&l!=="json"&&(c.responseType=t.responseType),typeof t.onDownloadProgress=="function"&&c.addEventListener("progress",t.onDownloadProgress),typeof t.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(s=function(m){!c||(o(!m||m&&m.type?new vL:m),c.abort(),c=null)},t.cancelToken&&t.cancelToken.subscribe(s),t.signal&&(t.signal.aborted?s():t.signal.addEventListener("abort",s))),i||(i=null);var b=mL(v);if(b&&["http","https","file"].indexOf(b)===-1){o(new zr("Unsupported protocol "+b+":",zr.ERR_BAD_REQUEST,t));return}c.send(i)})},gL=null,on=gn,G0=X9,Z0=va,bL=xC,yL=CC,wL={"Content-Type":"application/x-www-form-urlencoded"};function Q0(e,t){!on.isUndefined(e)&&on.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function xL(){var e;return(typeof XMLHttpRequest!="undefined"||typeof process!="undefined"&&Object.prototype.toString.call(process)==="[object process]")&&(e=X0),e}function CL(e,t,n){if(on.isString(e))try{return(t||JSON.parse)(e),on.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}var jc={transitional:bL,adapter:xL(),transformRequest:[function(t,n){if(G0(n,"Accept"),G0(n,"Content-Type"),on.isFormData(t)||on.isArrayBuffer(t)||on.isBuffer(t)||on.isStream(t)||on.isFile(t)||on.isBlob(t))return t;if(on.isArrayBufferView(t))return t.buffer;if(on.isURLSearchParams(t))return Q0(n,"application/x-www-form-urlencoded;charset=utf-8"),t.toString();var r=on.isObject(t),o=n&&n["Content-Type"],i;if((i=on.isFileList(t))||r&&o==="multipart/form-data"){var a=this.env&&this.env.FormData;return yL(i?{"files[]":t}:t,a&&new a)}else if(r||o==="application/json")return Q0(n,"application/json"),CL(t);return t}],transformResponse:[function(t){var n=this.transitional||jc.transitional,r=n&&n.silentJSONParsing,o=n&&n.forcedJSONParsing,i=!r&&this.responseType==="json";if(i||o&&on.isString(t)&&t.length)try{return JSON.parse(t)}catch(a){if(i)throw a.name==="SyntaxError"?Z0.from(a,Z0.ERR_BAD_RESPONSE,this,null,this.response):a}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:gL},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};on.forEach(["delete","get","head"],function(t){jc.headers[t]={}});on.forEach(["post","put","patch"],function(t){jc.headers[t]=on.merge(wL)});var cm=jc,_L=gn,SL=cm,OL=function(t,n,r){var o=this||SL;return _L.forEach(r,function(a){t=a.call(o,t,n)}),t},OC=function(t){return!!(t&&t.__CANCEL__)},J0=gn,Zd=OL,$L=OC,PL=cm,TL=Uc;function Qd(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new TL}var RL=function(t){Qd(t),t.headers=t.headers||{},t.data=Zd.call(t,t.data,t.headers,t.transformRequest),t.headers=J0.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),J0.forEach(["delete","get","head","post","put","patch","common"],function(o){delete t.headers[o]});var n=t.adapter||PL.adapter;return n(t).then(function(o){return Qd(t),o.data=Zd.call(t,o.data,o.headers,t.transformResponse),o},function(o){return $L(o)||(Qd(t),o&&o.response&&(o.response.data=Zd.call(t,o.response.data,o.response.headers,t.transformResponse))),Promise.reject(o)})},Hn=gn,$C=function(t,n){n=n||{};var r={};function o(c,d){return Hn.isPlainObject(c)&&Hn.isPlainObject(d)?Hn.merge(c,d):Hn.isPlainObject(d)?Hn.merge({},d):Hn.isArray(d)?d.slice():d}function i(c){if(Hn.isUndefined(n[c])){if(!Hn.isUndefined(t[c]))return o(void 0,t[c])}else return o(t[c],n[c])}function a(c){if(!Hn.isUndefined(n[c]))return o(void 0,n[c])}function l(c){if(Hn.isUndefined(n[c])){if(!Hn.isUndefined(t[c]))return o(void 0,t[c])}else return o(void 0,n[c])}function s(c){if(c in n)return o(t[c],n[c]);if(c in t)return o(void 0,t[c])}var u={url:a,method:a,data:a,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:s};return Hn.forEach(Object.keys(t).concat(Object.keys(n)),function(d){var h=u[d]||i,v=h(d);Hn.isUndefined(v)&&h!==s||(r[d]=v)}),r},PC={version:"0.27.2"},kL=PC.version,ro=va,dm={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){dm[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});var ey={};dm.transitional=function(t,n,r){function o(i,a){return"[Axios v"+kL+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return function(i,a,l){if(t===!1)throw new ro(o(a," has been removed"+(n?" in "+n:"")),ro.ERR_DEPRECATED);return n&&!ey[a]&&(ey[a]=!0,console.warn(o(a," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,a,l):!0}};function DL(e,t,n){if(typeof e!="object")throw new ro("options must be an object",ro.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=t[i];if(a){var l=e[i],s=l===void 0||a(l,i,e);if(s!==!0)throw new ro("option "+i+" must be "+s,ro.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ro("Unknown option "+i,ro.ERR_BAD_OPTION)}}var ML={assertOptions:DL,validators:dm},TC=gn,EL=gC,ty=q9,ny=RL,Wc=$C,zL=_C,RC=ML,Si=RC.validators;function Ji(e){this.defaults=e,this.interceptors={request:new ty,response:new ty}}Ji.prototype.request=function(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Wc(this.defaults,n),n.method?n.method=n.method.toLowerCase():this.defaults.method?n.method=this.defaults.method.toLowerCase():n.method="get";var r=n.transitional;r!==void 0&&RC.assertOptions(r,{silentJSONParsing:Si.transitional(Si.boolean),forcedJSONParsing:Si.transitional(Si.boolean),clarifyTimeoutError:Si.transitional(Si.boolean)},!1);var o=[],i=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(i=i&&v.synchronous,o.unshift(v.fulfilled,v.rejected))});var a=[];this.interceptors.response.forEach(function(v){a.push(v.fulfilled,v.rejected)});var l;if(!i){var s=[ny,void 0];for(Array.prototype.unshift.apply(s,o),s=s.concat(a),l=Promise.resolve(n);s.length;)l=l.then(s.shift(),s.shift());return l}for(var u=n;o.length;){var c=o.shift(),d=o.shift();try{u=c(u)}catch(h){d(h);break}}try{l=ny(u)}catch(h){return Promise.reject(h)}for(;a.length;)l=l.then(a.shift(),a.shift());return l};Ji.prototype.getUri=function(t){t=Wc(this.defaults,t);var n=zL(t.baseURL,t.url);return EL(n,t.params,t.paramsSerializer)};TC.forEach(["delete","get","head","options"],function(t){Ji.prototype[t]=function(n,r){return this.request(Wc(r||{},{method:t,url:n,data:(r||{}).data}))}});TC.forEach(["post","put","patch"],function(t){function n(r){return function(i,a,l){return this.request(Wc(l||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:i,data:a}))}}Ji.prototype[t]=n(),Ji.prototype[t+"Form"]=n(!0)});var AL=Ji,IL=Uc;function ea(e){if(typeof e!="function")throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(o){t=o});var n=this;this.promise.then(function(r){if(!!n._listeners){var o,i=n._listeners.length;for(o=0;o{n.value=~~(i.loaded/i.total*100)},timeout:0})},qiniu(e,t,n,r){const o=new FormData;return o.append("token",r.token),o.append("key",t),o.append("file",e,t),ur.post(r.host,o,{onUploadProgress:i=>{n.value=~~(i.loaded/i.total*100)},timeout:0})},cos(e,t,n,r){const o=new FormData;return o.append("Key",t),o.append("Signature",r.auth.Credentials.Token),o.append("file",e,t),ur.post(r.host,o,{onUploadProgress:i=>{n.value=~~(i.loaded/i.total*100)},timeout:0})},local(e,t,n,r){const o=new FormData;return o.append("key",t),o.append("file",e,t),ur.post(r.host,o,{onUploadProgress:i=>{n.value=~~(i.loaded/i.total*100)},timeout:0})},uploaded(e,t,n){return ur.post(e,{files:t,disk:n})},async upload(e,t,n,r){const{data:o}=await ur.get(e.obs_config_url,{params:{disk:e.disk,filename:t}});let i;switch(e.disk){case"oss":i=On.oss(n,t,r,o);break;case"qiniu":i=On.qiniu(n,t,r,o);break;case"cos":case"cosv5":i=On.cos(n,t,r,o);break;default:i=On.local(n,t,r,o)}return i.then(()=>new Promise(a=>{On.uploaded(e.uploaded_url,t,e.disk).then(l=>{a({filename:t,url:l.data})})}))}};var Vc=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};const WL={style:{"margin-bottom":"12px"}},VL=["required","disabled","name"],YL=["name","value"],qL=["name","value"],KL=["name"],XL=fe({__name:"File",setup(e){var s;const t=ze("provides"),n=E(t.value||[]),r=E(t.name);E((s=t.disabled)!=null?s:[]);const o=E(0),i=oC(),a=async({file:u})=>{const c=t.dir+"/"+Ys(u.name);u.status="uploading",u.name=c,o.value=0;const d=t.disk,{data:h}=await ur.get(t.obs_config_url,{params:{disk:d,filename:c}});let v;switch(d){case"oss":v=On.oss(u.file,c,o,h);break;case"qiniu":v=On.qiniu(u.file,c,o,h);break;case"cos":case"cosv5":v=On.cos(u.file,c,o,h);break;default:v=On.local(u.file,c,o,h)}v.then(()=>{u.status="finished",t.multiple?n.value.push(c):n.value=[c],On.uploaded(t.uploaded_url,c,d),i.success({content:`${u.name}`,meta:"\u4E0A\u4F20\u6210\u529F"})}).catch(p=>{console.log(p),u.status="error",i.error({content:p.message,meta:"\u4E0A\u4F20\u5931\u8D25"})})};function l(u){n.value.splice(u,1)}return(u,c)=>(Pe(),He(je,null,[Ue(le(Qx),{cols:2},{default:ot(()=>[Ue(le(Gx),null,{default:ot(()=>{var d;return[Ue(le(hC),{"custom-request":a,multiple:le(t).multiple,"show-file-list":!1,accept:(d=le(t).options.accept)==null?void 0:d.mimeTypes},{default:ot(()=>[Ue(le(rm),null,{default:ot(()=>[zn("div",WL,[Ue(le(iC),{type:"circle",percentage:o.value},null,8,["percentage"])]),Ue(le(aC),{style:{"font-size":"16px"}},{default:ot(()=>[en(" \u70B9\u51FB\u6216\u8005\u62D6\u52A8\u6587\u4EF6\u5230\u8BE5\u533A\u57DF\u6765\u4E0A\u4F20 ")]),_:1})]),_:1})]),_:1},8,["multiple","accept"])]}),_:1})]),_:1}),le(t).attributes.required?(Pe(),He("input",{key:0,type:"text",required:!n.value.length,disabled:!!n.value.length,name:`${r.value}_is_required`,style:{display:"none"}},null,8,VL)):Ot("",!0),(Pe(!0),He(je,null,In(n.value,(d,h)=>(Pe(),jn(le(ha),{class:"file-list-wrap"},{default:ot(()=>[Ue(le(Va),{closable:!0,type:"success",onClose:v=>l(h)},{default:ot(()=>[en(C_(d),1)]),_:2},1032,["onClose"])]),_:2},1024))),256)),le(t).multiple?(Pe(!0),He(je,{key:1},In(n.value,d=>(Pe(),He("input",{type:"hidden",name:r.value+"[]",value:d},null,8,YL))),256)):(Pe(!0),He(je,{key:2},In(n.value,d=>(Pe(),He("input",{type:"hidden",name:r.value,value:d},null,8,qL))),256)),n.value.length?Ot("",!0):(Pe(),He("input",{key:3,type:"hidden",name:r.value,value:""},null,8,KL))],64))}});var GL=Vc(XL,[["__scopeId","data-v-25c6ecfc"]]);const ZL=["name","value"],QL=fe({__name:"CheckBox",setup(e){var s;const t=ze("provides"),n=E(),r=E(t.checked),o=E(t.column),i=E((s=t.disabled)!=null?s:[]);n.value=t.options.map((u,c)=>({value:c,attr:{name:u,disabled:i.value.length>0?i.value.includes(c):!1}}));function a(u){document.dispatchEvent(new CustomEvent(`${o.value}:change`,{detail:{value:[...r.value]}}))}return t.watch.forEach(({type:u,handler:c})=>{document.addEventListener(u,({detail:d})=>Function(c)()({setDisabled(h,v=!1){var p;i.value=[...h],n.value=(p=n.value)==null?void 0:p.map(y=>({value:y.value,attr:{name:y.attr.name,disabled:i.value.includes(y.value)}})),v&&(r.value=r.value.filter(y=>!i.value.includes(y)))},getDisabled(){return[...i.value]}},[...d.value]))}),(u,c)=>(Pe(),He(je,null,[Ue(le(aF),{value:r.value,"onUpdate:value":c[0]||(c[0]=d=>r.value=d),onChange:c[1]||(c[1]=d=>a())},{default:ot(()=>[Ue(le(ha),{"item-style":"display: flex;"},{default:ot(()=>[(Pe(!0),He(je,null,In(n.value,d=>(Pe(),jn(le(uF),{key:u.k,value:d.value,label:d.attr.name,size:"medium",disabled:d.attr.disabled},null,8,["value","label","disabled"]))),128))]),_:1})]),_:1},8,["value"]),(Pe(!0),He(je,null,In(r.value,d=>(Pe(),He("input",{type:"hidden",name:o.value+"[]",value:d},null,8,ZL))),256))],64))}});/*! +`),function(l){if(i=l.indexOf(":"),r=Gd.trim(l.substr(0,i)).toLowerCase(),o=Gd.trim(l.substr(i+1)),r){if(n[r]&&rL.indexOf(r)>=0)return;r==="set-cookie"?n[r]=(n[r]?n[r]:[]).concat([o]):n[r]=n[r]?n[r]+", "+o:o}}),n},K0=gn,iL=K0.isStandardBrowserEnv()?function(){var t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a"),r;function o(i){var a=i;return t&&(n.setAttribute("href",a),a=n.href),n.setAttribute("href",a),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=o(window.location.href),function(a){var l=K0.isString(a)?o(a):a;return l.protocol===r.protocol&&l.host===r.host}}():function(){return function(){return!0}}(),$p=va,aL=gn;function SC(e){$p.call(this,e==null?"canceled":e,$p.ERR_CANCELED),this.name="CanceledError"}aL.inherits(SC,$p,{__CANCEL__:!0});var Uc=SC,lL=function(t){var n=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return n&&n[1]||""},_a=gn,sL=Z9,uL=Q9,cL=gC,dL=_C,fL=oL,hL=iL,pL=xC,zr=va,vL=Uc,mL=lL,X0=function(t){return new Promise(function(r,o){var i=t.data,a=t.headers,l=t.responseType,s;function u(){t.cancelToken&&t.cancelToken.unsubscribe(s),t.signal&&t.signal.removeEventListener("abort",s)}_a.isFormData(i)&&_a.isStandardBrowserEnv()&&delete a["Content-Type"];var c=new XMLHttpRequest;if(t.auth){var d=t.auth.username||"",h=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";a.Authorization="Basic "+btoa(d+":"+h)}var v=dL(t.baseURL,t.url);c.open(t.method.toUpperCase(),cL(v,t.params,t.paramsSerializer),!0),c.timeout=t.timeout;function p(){if(!!c){var m="getAllResponseHeaders"in c?fL(c.getAllResponseHeaders()):null,g=!l||l==="text"||l==="json"?c.responseText:c.response,O={data:g,status:c.status,statusText:c.statusText,headers:m,config:t,request:c};sL(function(C){r(C),u()},function(C){o(C),u()},O),c=null}}if("onloadend"in c?c.onloadend=p:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(p)},c.onabort=function(){!c||(o(new zr("Request aborted",zr.ECONNABORTED,t,c)),c=null)},c.onerror=function(){o(new zr("Network Error",zr.ERR_NETWORK,t,c,c)),c=null},c.ontimeout=function(){var g=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",O=t.transitional||pL;t.timeoutErrorMessage&&(g=t.timeoutErrorMessage),o(new zr(g,O.clarifyTimeoutError?zr.ETIMEDOUT:zr.ECONNABORTED,t,c)),c=null},_a.isStandardBrowserEnv()){var y=(t.withCredentials||hL(v))&&t.xsrfCookieName?uL.read(t.xsrfCookieName):void 0;y&&(a[t.xsrfHeaderName]=y)}"setRequestHeader"in c&&_a.forEach(a,function(g,O){typeof i=="undefined"&&O.toLowerCase()==="content-type"?delete a[O]:c.setRequestHeader(O,g)}),_a.isUndefined(t.withCredentials)||(c.withCredentials=!!t.withCredentials),l&&l!=="json"&&(c.responseType=t.responseType),typeof t.onDownloadProgress=="function"&&c.addEventListener("progress",t.onDownloadProgress),typeof t.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(s=function(m){!c||(o(!m||m&&m.type?new vL:m),c.abort(),c=null)},t.cancelToken&&t.cancelToken.subscribe(s),t.signal&&(t.signal.aborted?s():t.signal.addEventListener("abort",s))),i||(i=null);var b=mL(v);if(b&&["http","https","file"].indexOf(b)===-1){o(new zr("Unsupported protocol "+b+":",zr.ERR_BAD_REQUEST,t));return}c.send(i)})},gL=null,on=gn,G0=X9,Z0=va,bL=xC,yL=CC,wL={"Content-Type":"application/x-www-form-urlencoded"};function Q0(e,t){!on.isUndefined(e)&&on.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function xL(){var e;return(typeof XMLHttpRequest!="undefined"||typeof process!="undefined"&&Object.prototype.toString.call(process)==="[object process]")&&(e=X0),e}function CL(e,t,n){if(on.isString(e))try{return(t||JSON.parse)(e),on.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}var jc={transitional:bL,adapter:xL(),transformRequest:[function(t,n){if(G0(n,"Accept"),G0(n,"Content-Type"),on.isFormData(t)||on.isArrayBuffer(t)||on.isBuffer(t)||on.isStream(t)||on.isFile(t)||on.isBlob(t))return t;if(on.isArrayBufferView(t))return t.buffer;if(on.isURLSearchParams(t))return Q0(n,"application/x-www-form-urlencoded;charset=utf-8"),t.toString();var r=on.isObject(t),o=n&&n["Content-Type"],i;if((i=on.isFileList(t))||r&&o==="multipart/form-data"){var a=this.env&&this.env.FormData;return yL(i?{"files[]":t}:t,a&&new a)}else if(r||o==="application/json")return Q0(n,"application/json"),CL(t);return t}],transformResponse:[function(t){var n=this.transitional||jc.transitional,r=n&&n.silentJSONParsing,o=n&&n.forcedJSONParsing,i=!r&&this.responseType==="json";if(i||o&&on.isString(t)&&t.length)try{return JSON.parse(t)}catch(a){if(i)throw a.name==="SyntaxError"?Z0.from(a,Z0.ERR_BAD_RESPONSE,this,null,this.response):a}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:gL},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};on.forEach(["delete","get","head"],function(t){jc.headers[t]={}});on.forEach(["post","put","patch"],function(t){jc.headers[t]=on.merge(wL)});var cm=jc,_L=gn,SL=cm,OL=function(t,n,r){var o=this||SL;return _L.forEach(r,function(a){t=a.call(o,t,n)}),t},OC=function(t){return!!(t&&t.__CANCEL__)},J0=gn,Zd=OL,$L=OC,PL=cm,TL=Uc;function Qd(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new TL}var RL=function(t){Qd(t),t.headers=t.headers||{},t.data=Zd.call(t,t.data,t.headers,t.transformRequest),t.headers=J0.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),J0.forEach(["delete","get","head","post","put","patch","common"],function(o){delete t.headers[o]});var n=t.adapter||PL.adapter;return n(t).then(function(o){return Qd(t),o.data=Zd.call(t,o.data,o.headers,t.transformResponse),o},function(o){return $L(o)||(Qd(t),o&&o.response&&(o.response.data=Zd.call(t,o.response.data,o.response.headers,t.transformResponse))),Promise.reject(o)})},Hn=gn,$C=function(t,n){n=n||{};var r={};function o(c,d){return Hn.isPlainObject(c)&&Hn.isPlainObject(d)?Hn.merge(c,d):Hn.isPlainObject(d)?Hn.merge({},d):Hn.isArray(d)?d.slice():d}function i(c){if(Hn.isUndefined(n[c])){if(!Hn.isUndefined(t[c]))return o(void 0,t[c])}else return o(t[c],n[c])}function a(c){if(!Hn.isUndefined(n[c]))return o(void 0,n[c])}function l(c){if(Hn.isUndefined(n[c])){if(!Hn.isUndefined(t[c]))return o(void 0,t[c])}else return o(void 0,n[c])}function s(c){if(c in n)return o(t[c],n[c]);if(c in t)return o(void 0,t[c])}var u={url:a,method:a,data:a,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:s};return Hn.forEach(Object.keys(t).concat(Object.keys(n)),function(d){var h=u[d]||i,v=h(d);Hn.isUndefined(v)&&h!==s||(r[d]=v)}),r},PC={version:"0.27.2"},kL=PC.version,ro=va,dm={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){dm[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});var ey={};dm.transitional=function(t,n,r){function o(i,a){return"[Axios v"+kL+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return function(i,a,l){if(t===!1)throw new ro(o(a," has been removed"+(n?" in "+n:"")),ro.ERR_DEPRECATED);return n&&!ey[a]&&(ey[a]=!0,console.warn(o(a," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,a,l):!0}};function DL(e,t,n){if(typeof e!="object")throw new ro("options must be an object",ro.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=t[i];if(a){var l=e[i],s=l===void 0||a(l,i,e);if(s!==!0)throw new ro("option "+i+" must be "+s,ro.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ro("Unknown option "+i,ro.ERR_BAD_OPTION)}}var ML={assertOptions:DL,validators:dm},TC=gn,EL=gC,ty=q9,ny=RL,Wc=$C,zL=_C,RC=ML,Si=RC.validators;function Ji(e){this.defaults=e,this.interceptors={request:new ty,response:new ty}}Ji.prototype.request=function(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=Wc(this.defaults,n),n.method?n.method=n.method.toLowerCase():this.defaults.method?n.method=this.defaults.method.toLowerCase():n.method="get";var r=n.transitional;r!==void 0&&RC.assertOptions(r,{silentJSONParsing:Si.transitional(Si.boolean),forcedJSONParsing:Si.transitional(Si.boolean),clarifyTimeoutError:Si.transitional(Si.boolean)},!1);var o=[],i=!0;this.interceptors.request.forEach(function(v){typeof v.runWhen=="function"&&v.runWhen(n)===!1||(i=i&&v.synchronous,o.unshift(v.fulfilled,v.rejected))});var a=[];this.interceptors.response.forEach(function(v){a.push(v.fulfilled,v.rejected)});var l;if(!i){var s=[ny,void 0];for(Array.prototype.unshift.apply(s,o),s=s.concat(a),l=Promise.resolve(n);s.length;)l=l.then(s.shift(),s.shift());return l}for(var u=n;o.length;){var c=o.shift(),d=o.shift();try{u=c(u)}catch(h){d(h);break}}try{l=ny(u)}catch(h){return Promise.reject(h)}for(;a.length;)l=l.then(a.shift(),a.shift());return l};Ji.prototype.getUri=function(t){t=Wc(this.defaults,t);var n=zL(t.baseURL,t.url);return EL(n,t.params,t.paramsSerializer)};TC.forEach(["delete","get","head","options"],function(t){Ji.prototype[t]=function(n,r){return this.request(Wc(r||{},{method:t,url:n,data:(r||{}).data}))}});TC.forEach(["post","put","patch"],function(t){function n(r){return function(i,a,l){return this.request(Wc(l||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:i,data:a}))}}Ji.prototype[t]=n(),Ji.prototype[t+"Form"]=n(!0)});var AL=Ji,IL=Uc;function ea(e){if(typeof e!="function")throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(o){t=o});var n=this;this.promise.then(function(r){if(!!n._listeners){var o,i=n._listeners.length;for(o=0;o{n.value=~~(i.loaded/i.total*100)},timeout:0})},qiniu(e,t,n,r){const o=new FormData;return o.append("token",r.token),o.append("key",t),o.append("file",e,t),ur.post(r.host,o,{onUploadProgress:i=>{n.value=~~(i.loaded/i.total*100)},timeout:0})},cos(e,t,n,r){const o=new FormData;return o.append("Key",t),o.append("Signature",r.auth.token),o.append("file",e,t),ur.post(r.host,o,{onUploadProgress:i=>{n.value=~~(i.loaded/i.total*100)},timeout:0})},local(e,t,n,r){const o=new FormData;return o.append("key",t),o.append("file",e,t),ur.post(r.host,o,{onUploadProgress:i=>{n.value=~~(i.loaded/i.total*100)},timeout:0})},uploaded(e,t,n){return ur.post(e,{files:t,disk:n})},async upload(e,t,n,r){const{data:o}=await ur.get(e.obs_config_url,{params:{disk:e.disk,filename:t}});let i;switch(e.disk){case"oss":i=On.oss(n,t,r,o);break;case"qiniu":i=On.qiniu(n,t,r,o);break;case"cos":case"cosv5":i=On.cos(n,t,r,o);break;default:i=On.local(n,t,r,o)}return i.then(()=>new Promise(a=>{On.uploaded(e.uploaded_url,t,e.disk).then(l=>{a({filename:t,url:l.data})})}))}};var Vc=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};const WL={style:{"margin-bottom":"12px"}},VL=["required","disabled","name"],YL=["name","value"],qL=["name","value"],KL=["name"],XL=fe({__name:"File",setup(e){var s;const t=ze("provides"),n=E(t.value||[]),r=E(t.name);E((s=t.disabled)!=null?s:[]);const o=E(0),i=oC(),a=async({file:u})=>{const c=t.dir+"/"+Ys(u.name);u.status="uploading",u.name=c,o.value=0;const d=t.disk,{data:h}=await ur.get(t.obs_config_url,{params:{disk:d,filename:c}});let v;switch(d){case"oss":v=On.oss(u.file,c,o,h);break;case"qiniu":v=On.qiniu(u.file,c,o,h);break;case"cos":case"cosv5":v=On.cos(u.file,c,o,h);break;default:v=On.local(u.file,c,o,h)}v.then(()=>{u.status="finished",t.multiple?n.value.push(c):n.value=[c],On.uploaded(t.uploaded_url,c,d),i.success({content:`${u.name}`,meta:"\u4E0A\u4F20\u6210\u529F"})}).catch(p=>{console.log(p),u.status="error",i.error({content:p.message,meta:"\u4E0A\u4F20\u5931\u8D25"})})};function l(u){n.value.splice(u,1)}return(u,c)=>(Pe(),He(je,null,[Ue(le(Qx),{cols:2},{default:ot(()=>[Ue(le(Gx),null,{default:ot(()=>{var d;return[Ue(le(hC),{"custom-request":a,multiple:le(t).multiple,"show-file-list":!1,accept:(d=le(t).options.accept)==null?void 0:d.mimeTypes},{default:ot(()=>[Ue(le(rm),null,{default:ot(()=>[zn("div",WL,[Ue(le(iC),{type:"circle",percentage:o.value},null,8,["percentage"])]),Ue(le(aC),{style:{"font-size":"16px"}},{default:ot(()=>[en(" \u70B9\u51FB\u6216\u8005\u62D6\u52A8\u6587\u4EF6\u5230\u8BE5\u533A\u57DF\u6765\u4E0A\u4F20 ")]),_:1})]),_:1})]),_:1},8,["multiple","accept"])]}),_:1})]),_:1}),le(t).attributes.required?(Pe(),He("input",{key:0,type:"text",required:!n.value.length,disabled:!!n.value.length,name:`${r.value}_is_required`,style:{display:"none"}},null,8,VL)):Ot("",!0),(Pe(!0),He(je,null,In(n.value,(d,h)=>(Pe(),jn(le(ha),{class:"file-list-wrap"},{default:ot(()=>[Ue(le(Va),{closable:!0,type:"success",onClose:v=>l(h)},{default:ot(()=>[en(C_(d),1)]),_:2},1032,["onClose"])]),_:2},1024))),256)),le(t).multiple?(Pe(!0),He(je,{key:1},In(n.value,d=>(Pe(),He("input",{type:"hidden",name:r.value+"[]",value:d},null,8,YL))),256)):(Pe(!0),He(je,{key:2},In(n.value,d=>(Pe(),He("input",{type:"hidden",name:r.value,value:d},null,8,qL))),256)),n.value.length?Ot("",!0):(Pe(),He("input",{key:3,type:"hidden",name:r.value,value:""},null,8,KL))],64))}});var GL=Vc(XL,[["__scopeId","data-v-25c6ecfc"]]);const ZL=["name","value"],QL=fe({__name:"CheckBox",setup(e){var s;const t=ze("provides"),n=E(),r=E(t.checked),o=E(t.column),i=E((s=t.disabled)!=null?s:[]);n.value=t.options.map((u,c)=>({value:c,attr:{name:u,disabled:i.value.length>0?i.value.includes(c):!1}}));function a(u){document.dispatchEvent(new CustomEvent(`${o.value}:change`,{detail:{value:[...r.value]}}))}return t.watch.forEach(({type:u,handler:c})=>{document.addEventListener(u,({detail:d})=>Function(c)()({setDisabled(h,v=!1){var p;i.value=[...h],n.value=(p=n.value)==null?void 0:p.map(y=>({value:y.value,attr:{name:y.attr.name,disabled:i.value.includes(y.value)}})),v&&(r.value=r.value.filter(y=>!i.value.includes(y)))},getDisabled(){return[...i.value]}},[...d.value]))}),(u,c)=>(Pe(),He(je,null,[Ue(le(aF),{value:r.value,"onUpdate:value":c[0]||(c[0]=d=>r.value=d),onChange:c[1]||(c[1]=d=>a())},{default:ot(()=>[Ue(le(ha),{"item-style":"display: flex;"},{default:ot(()=>[(Pe(!0),He(je,null,In(n.value,d=>(Pe(),jn(le(uF),{key:u.k,value:d.value,label:d.attr.name,size:"medium",disabled:d.attr.disabled},null,8,["value","label","disabled"]))),128))]),_:1})]),_:1},8,["value"]),(Pe(!0),He(je,null,In(r.value,d=>(Pe(),He("input",{type:"hidden",name:o.value+"[]",value:d},null,8,ZL))),256))],64))}});/*! * Cropper.js v1.5.13 * https://fengyuanchen.github.io/cropperjs * diff --git a/src/DcatVueServiceProvider.php b/src/DcatVueServiceProvider.php index 45edec3..e64035d 100644 --- a/src/DcatVueServiceProvider.php +++ b/src/DcatVueServiceProvider.php @@ -5,7 +5,6 @@ namespace Weiwait\DcatVue; use Dcat\Admin\Extend\ServiceProvider; use Dcat\Admin\Admin; use Dcat\Admin\Form; -use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Event; use Weiwait\DcatVue\Field\DateRange; use Weiwait\DcatVue\Field\Distpicker; @@ -18,8 +17,6 @@ use Weiwait\DcatVue\Field\MultipleImage; use Weiwait\DcatVue\Field\MultipleSelect; use Weiwait\DcatVue\Field\Select; use Weiwait\DcatVue\Field\Tag; -use Weiwait\DcatVue\Field\Vue; -use Weiwait\DcatVue\Models\FilesystemConfig; class DcatVueServiceProvider extends ServiceProvider { @@ -75,51 +72,16 @@ class DcatVueServiceProvider extends ServiceProvider return; } - app()->booted(function () { - config()->set('filesystems.disks.oss', [ - 'access_key' => FilesystemConfig::get('oss_access_key'), - 'secret_key' => FilesystemConfig::get('oss_secret_key'), - 'endpoint' => FilesystemConfig::get('oss_endpoint'), - 'bucket' => FilesystemConfig::get('oss_bucket'), - 'driver' => 'oss', - 'root' => '', - 'isCName' => false, - ]); + $configs = admin_setting_array('weiwait_filesystem'); - config()->set('filesystems.disks.qiniu', [ - 'access_key' => FilesystemConfig::get('qiniu_access_key'), - 'secret_key' => FilesystemConfig::get('qiniu_secret_key'), - 'domain' => FilesystemConfig::get('qiniu_domain'), - 'bucket' => FilesystemConfig::get('qiniu_bucket'), - 'driver' => 'qiniu', - ]); +// dd($configs); - config()->set('filesystems.disks.cosv5', [ - 'driver' => 'cosv5', - 'region' => FilesystemConfig::get('cos_region'), - 'credentials' => [ - 'appId' => FilesystemConfig::get('cos_app_id'), - 'secretId' => FilesystemConfig::get('cos_secret_id'), - 'secretKey' => FilesystemConfig::get('cos_secret_key'), - 'token' => null, - ], - 'timeout' => 60, - 'connect_timeout' => 60, - 'bucket' => FilesystemConfig::get('cos_bucket'), - 'cdn' => FilesystemConfig::get('cos_cdn'), - 'scheme' => config('admin.https') ? 'https' : 'http', - 'read_from_cdn' => false, - 'cdn_key' => null, - 'encrypt' => false, - ]); - - config()->set('filesystems.default', FilesystemConfig::get('disk', config('filesystems.default'))); - - config()->set('admin.auth.except', array_merge((array)config('admin.auth.except'), ['weiwait*'])); + app()->booted(function () use ($configs) { + Helper::injectFilesystemConfig($configs); }); - Event::listen('admin:booted', function () { - config()->set('admin.upload.disk', FilesystemConfig::get('disk', config('admin.upload.disk'))); + Event::listen('admin:booted', function () use ($configs) { + config()->set('admin.upload.disk', $configs['disk']); }); } } diff --git a/src/Forms/FilesystemConfig.php b/src/Forms/FilesystemConfig.php index ca56394..767b78a 100644 --- a/src/Forms/FilesystemConfig.php +++ b/src/Forms/FilesystemConfig.php @@ -2,21 +2,59 @@ namespace Weiwait\DcatVue\Forms; +use Dcat\Admin\Http\JsonResponse; use Dcat\Admin\Widgets\Form; -use Weiwait\DcatVue\Models\FilesystemConfig as Model; +use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Storage; +use OSS\Core\OssException; +use OSS\Model\CorsConfig; +use OSS\Model\CorsRule; class FilesystemConfig extends Form { - /** - * Handle the form request. - * - * @param array $input - * - * @return mixed - */ - public function handle(array $input) + public function handle(array $input): JsonResponse { - return Model::adminFormHandle($this, $input); + try { + $this->ossHandler($input); + + admin_setting(['weiwait_filesystem' => $input]); + + is_file(app()->getCachedConfigPath()) && Artisan::call('config:cache'); + } catch (\Throwable $exception) { + return $this->response()->error($exception->getMessage()); + } + + return $this->response()->success('修改成功'); + } + + /** + * @throws OssException + */ + protected function ossHandler(array $data) + { + $config = collect(admin_setting_array('weiwait_filesystem')); + + $originChanged = collect($config->get('oss_allowed_origins', []))->diff($data['oss_allowed_origins']); + $methodChanged = collect($config->get('oss_allowed_methods', []))->diff($data['oss_allowed_methods']); + $masChanged = collect($config->get('oss_mas', 0))->diff($data['oss_mas']); + + if ($originChanged || $methodChanged || $masChanged) { + $rule = new CorsRule(); + $rule->setMaxAgeSeconds($data['oss_mas']); + + foreach ($data['oss_allowed_methods'] as $method) { + $rule->addAllowedMethod($method); + } + + foreach ($data['oss_allowed_origins'] as $origin) { + $rule->addAllowedOrigin($origin); + } + + $config = new CorsConfig(); + $config->addRule($rule); + $kernel = Storage::disk('oss')->getAdapter()->ossKernel(); + $kernel->putBucketCors($data['oss_bucket'], $config); + } } /** @@ -25,15 +63,20 @@ class FilesystemConfig extends Form public function form() { $this->radio('disk', '存储位置') - ->options(['public' => '本地', 'oss' => '阿里云', 'cosv5' => '腾讯云', 'qiniu' => '七牛云']) + ->options(['public' => '本地', 'oss' => '阿里云', 'cos' => '腾讯云', 'qiniu' => '七牛云']) ->default('public') ->when('oss', function (Form $form) { $form->text('oss_access_key', 'AccessKey'); $form->text('oss_secret_key', 'SecretKey'); $form->text('oss_bucket', 'Bucket'); $form->text('oss_endpoint', 'Endpoint'); + + $form->vList('oss_allowed_origins', 'origins'); + $form->checkbox('oss_allowed_methods', 'methods') + ->options(array_combine(['GET', 'POST', 'PUT', 'DELETE', 'HEAD'], ['GET', 'POST', 'PUT', 'DELETE', 'HEAD'])); + $form->number('oss_mas', '缓存时间')->default(0); }) - ->when('cosv5', function (Form $form) { + ->when('cos', function (Form $form) { $form->text('cos_app_id', 'Appid'); $form->text('cos_secret_id', 'SecretId'); $form->text('cos_secret_key', 'SecretKey'); @@ -56,25 +99,6 @@ class FilesystemConfig extends Form */ public function default(): array { - return Model::get([ - 'disk', - 'oss_access_key', - 'oss_secret_key', - 'oss_endpoint', - 'oss_bucket', - - 'qiniu_access_key', - 'qiniu_secret_key', - 'qiniu_bucket', - 'qiniu_domain', - - - 'cos_app_id', - 'cos_secret_id', - 'cos_secret_key', - 'cos_region', - 'cos_bucket', - 'cos_cdn', - ]); + return admin_setting_array('weiwait_filesystem'); } } diff --git a/src/Helper.php b/src/Helper.php new file mode 100644 index 0000000..b7ca7a0 --- /dev/null +++ b/src/Helper.php @@ -0,0 +1,107 @@ +set('filesystems.disks.oss', [ + 'access_key' => $configs->get('oss_access_key'), + 'secret_key' => $configs->get('oss_secret_key'), + 'endpoint' => $configs->get('oss_endpoint'), + 'bucket' => $configs->get('oss_bucket'), + 'driver' => 'oss', + 'root' => '', + 'isCName' => false, + ]); + + config()->set('filesystems.disks.qiniu', [ + 'access_key' => $configs->get('qiniu_access_key'), + 'secret_key' => $configs->get('qiniu_secret_key'), + 'domain' => $configs->get('qiniu_domain'), + 'bucket' => $configs->get('qiniu_bucket'), + 'driver' => 'qiniu', + ]); + + config()->set('filesystems.disks.cosv5', [ + 'driver' => 'cosv5', + 'region' => $configs->get('cos_region'), + 'credentials' => [ + 'appId' => $configs->get('cos_app_id'), + 'secretId' => $configs->get('cos_secret_id'), + 'secretKey' => $configs->get('cos_secret_key'), + 'token' => null, + ], + 'timeout' => 60, + 'connect_timeout' => 60, + 'bucket' => $configs->get('cos_bucket'), + 'cdn' => $configs->get('cos_cdn'), + 'scheme' => config('admin.https') ? 'https' : 'http', + 'read_from_cdn' => false, + 'cdn_key' => null, + 'encrypt' => false, + ]); + + config()->set('filesystems.disks.cos', [ + 'driver' => 'cos', + 'region' => $configs->get('cos_region'), + 'app_id' => $configs->get('cos_app_id'), + 'secret_id' => $configs->get('cos_secret_id'), + 'secret_key' => $configs->get('cos_secret_key'), + 'token' => null, + 'bucket' => $configs->get('cos_bucket'), + 'cdn' => $configs->get('cos_cdn'), + 'use_https' => config('admin.https'), + 'read_from_cdn' => false, + 'cdn_key' => null, + 'encrypt' => false, + 'guzzle' => [ + 'timeout' => 60, + 'connect_timeout' => 60, + ], + ]); + + config()->set('filesystems.default', $configs->get('disk')); + + config()->set('admin.upload.disk', $configs->get('disk')); + } + + public static function getCosAuth(): array + { + // 配置参数 + $config = array( + 'url' => 'https://sts.tencentcloudapi.com/', + 'domain' => 'sts.tencentcloudapi.com', + 'proxy' => '', + 'secretId' => config('filesystems.disks.cos.secret_id'), // 固定密钥 + 'secretKey' => config('filesystems.disks.cos.secret_key'), // 固定密钥 + 'bucket' => config('filesystems.disks.cos.bucket') . '-' . config('filesystems.disks.cos.app_id'), // 换成你的 bucket + 'region' => config('filesystems.disks.cos.region'), // 换成 bucket 所在园区 + 'durationSeconds' => 1800, // 密钥有效期 + // 允许操作(上传)的对象前缀,可以根据自己网站的用户登录态判断允许上传的目录,例子: user1/* 或者 * 或者a.jpg + // 请注意当使用 * 时,可能存在安全风险,详情请参阅:https://cloud.tencent.com/document/product/436/40265 + 'allowPrefix' => '*', + // 密钥的权限列表。简单上传和分片需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/31923 + 'allowActions' => array( + // 所有 action 请看文档 https://cloud.tencent.com/document/product/436/31923 + // 简单上传 + 'name/cos:PutObject', + 'name/cos:PostObject', + // 分片上传 + 'name/cos:InitiateMultipartUpload', + 'name/cos:ListMultipartUploads', + 'name/cos:ListParts', + 'name/cos:UploadPart', + 'name/cos:CompleteMultipartUpload' + ) + ); + + // 获取临时密钥,计算签名 + return (new Sts())->getTempKeys($config); + } +} diff --git a/src/Http/Controllers/DcatVueController.php b/src/Http/Controllers/DcatVueController.php index 8ead694..a72aaf3 100644 --- a/src/Http/Controllers/DcatVueController.php +++ b/src/Http/Controllers/DcatVueController.php @@ -6,10 +6,12 @@ use Dcat\Admin\Layout\Content; use Dcat\Admin\Admin; use Illuminate\Http\Request; use Illuminate\Routing\Controller; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Storage; use Qiniu\Config; use Weiwait\DcatVue\Forms\FilesystemConfig; +use Weiwait\DcatVue\Helper; use Weiwait\DcatVue\Models\ChinaArea; use Weiwait\DcatVue\Models\WeiwaitUpload; @@ -59,9 +61,12 @@ class DcatVueController extends Controller ]; case 'cos': case 'cosv5': - $url = parse_url(Storage::disk('cosv5')->url('')); + $url = parse_url(Storage::disk('cos')->url('')); + $auth = Helper::getCosAuth(); return [ - 'auth' => Storage::disk('cosv5')->getFederationTokenV3($request['filename']), + 'auth' => [ + 'token' => Arr::get($auth, 'credentials.sessionToken'), + ], 'host' => $url['scheme'] . '://' . $url['host'] . '/' . $request['filename'], ]; default: diff --git a/src/Models/FilesystemConfig.php b/src/Models/FilesystemConfig.php deleted file mode 100644 index 98b6273..0000000 --- a/src/Models/FilesystemConfig.php +++ /dev/null @@ -1,64 +0,0 @@ -where('key', $keys)->value('value'); - - Cache::put('setting.wechat.config.' . $keys, $value, now()->addDay()); - } - - return $value ?? $default; - } - - /** - * 设置配置项 - */ - public static function set(array $settings) - { - foreach ($settings as $key => $value) { - self::query()->updateOrCreate(['key' => $key], ['value' => $value ?? '']); - - Cache::put('setting.wechat.config.' . $key, $value, now()->addDay()); - } - } - - public static function adminFormHandle(Form $form, array $input): \Dcat\Admin\Http\JsonResponse - { - try { - self::set($input); - } catch (\Exception $exception) { - return $form - ->response() - ->error($exception->getMessage()); - } - - return $form - ->response() - ->success('修改成功'); - } -} diff --git a/src/Setting.php b/src/Setting.php index 5e68165..a06473d 100644 --- a/src/Setting.php +++ b/src/Setting.php @@ -3,44 +3,16 @@ namespace Weiwait\DcatVue; use Dcat\Admin\Extend\Setting as Form; -use Dcat\Admin\Models\Menu; -use Weiwait\DcatVue\Models\FilesystemConfig; class Setting extends Form { public function form() { - $this->switch('independent', '独立菜单') - ->default(FilesystemConfig::get(FilesystemConfig::INDEPENDENT, false)); - $this->text('menu_name', '菜单名称')->default(__('文件存储')); + // Todo } - public function handle(array $input): \Dcat\Admin\Http\JsonResponse + public function handle(array $input) { - FilesystemConfig::set(['independent' => (boolean)$input['independent']]); - - /** @var Menu $menu */ - $menu = config('admin.database.menu_model'); - - if ($input['independent']) { - $res = $menu::query()->updateOrCreate( - ['uri' => 'dcat-filesystem-config'], - [ - 'title' => $input['menu_name'], - 'show' => 1, - 'icon' => 'fa-envelope', - ] - ); - - FilesystemConfig::set(['independent_menu_id' => $res->getKey()]); - - return $this->response()->success('菜单已生成')->refresh(); - } else { - if ($menu = $menu::query()->find(FilesystemConfig::get('independent_menu_id'))) { - $menu->delete(); - } - - return $this->response()->success('菜单已删除')->refresh(); - } + // Todo } } diff --git a/updates/drop_filesystem_configs_table.php b/updates/drop_filesystem_configs_table.php new file mode 100644 index 0000000..1a84c16 --- /dev/null +++ b/updates/drop_filesystem_configs_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('key', 50)->unique()->comment('配置key'); + $table->string('name')->default('')->comment('配置名称'); + $table->text('value')->comment('配置值'); + $table->timestamps(); + }); + } +} diff --git a/version.php b/version.php index 8a643e7..51b6b1c 100644 --- a/version.php +++ b/version.php @@ -63,4 +63,8 @@ return [ '一些优化', '新增多选组件', ], + '2.5.0' => [ + '一些优化', + 'drop_filesystem_configs_table.php', + ], ];