index-ba543a63-1713444711687.js 13 KB

1
  1. import{d as R,r as I,b as $,e as T,y as ee,p as W,bB as b,f as e,k as v,L as q,bC as Q,C as ae,j as w,w as O,Q as J,W as X,N as te,v as z,aA as le,g as V,h as oe,G as se,F as ne,l as ue,B as ie,bD as ce,P as H}from"./index-1b8c83d6-1713444711687.js";import{u as re}from"./catchData-3a74e075-1713444711687.js";import{b as de,d as pe,e as K,g as fe,h as me,j as ge,k as ye}from"./api-8f6d9d12-1713444711687.js";import{i as ve,a as be}from"./index-45e0f15e-1713444711687.js";import{C as he,g as P,a as Y,o as _e}from"./index-4ccefccd-1713444711687.js";import{N as Fe}from"./Scrollbar-34e5108f-1713444711687.js";const Ce="_uploadModal_12gjn_1",Ie="_formModal_12gjn_4",Se="_formSpace_12gjn_8",Be="_previewModal_12gjn_11",je="_image_12gjn_23",we="_titleType_12gjn_32",Ae="_iconUploadDelete_12gjn_40",ke="_commonType_12gjn_49",Ue="_changeCover_12gjn_68",Me="_formItem_12gjn_85",Ne="_btnGroup_12gjn_110",Ee="_uploadFile_12gjn_117",De="_uploadBtn_12gjn_124",Ge="_iconUploadAdd_12gjn_141",Te="_uploadCover_12gjn_146",F={uploadModal:Ce,formModal:Ie,formSpace:Se,previewModal:Be,image:je,titleType:we,iconUploadDelete:Ae,commonType:ke,changeCover:Ue,formItem:Me,btnGroup:Ne,uploadFile:Ee,uploadBtn:De,iconUploadAdd:Ge,uploadCover:Te},Oe="_uploadFile_zmmms_1",xe="_uploadBtn_zmmms_14",Pe="_iconUploadAdd_zmmms_33",Le="_uploadHeader_zmmms_38",Re="_headerItem_zmmms_42",$e="_uploadContainer_zmmms_59",ze="_imgCropperSection_zmmms_73",Ve="_uploadBtnGroup_zmmms_81",j={uploadFile:Oe,uploadBtn:xe,iconUploadAdd:Pe,uploadHeader:Le,headerItem:Re,uploadContainer:$e,imgCropperSection:ze,uploadBtnGroup:Ve},He=R({name:"upload-file",props:{img:{type:String,default:""},accept:{type:String,default:".jpg,.png,.jpeg,.gif"},bucketName:{type:String,default:"gyt"},path:{type:String,default:""},fileName:{type:String,default:""},options:{type:Object,default:()=>({viewMode:0,autoCrop:!0,enlarge:1,autoCropWidth:640,autoCropHeight:360,fixedBox:!1,previewsCircle:!0,title:"上传图片"})}},emits:["close","confirm"],setup(t,{emit:h}){const B=I(),A="https://".concat(t.bucketName,".ks3-cn-beijing.ksyuncs.com/"),k=$(),s=I(!1),f=I(!1),M=I(),_=I({img:"",autoCrop:!0,autoCropWidth:180,autoCropHeight:180,fixedBox:!0,full:!1,enlarge:1,previewsCircle:!0,centerBox:!0,outputType:"png",title:"修改头像",name:null}),g=T({myCropper:null,cropperReady:!1}),S=async m=>{const r=m.file;let y=!0;if((r.type.includes("image")?b.IMG:r.type.includes("audio")?b.SONG:b.VIDEO)!==b.IMG)return k.error("上传文件格式错误"),!1;const a=10;return y=r.file.size/1024/1024<a,y?(N(r.file,u=>{d(u,r.file.name)}),!1):(k.error("图片大小不能超过".concat(a,"M")),!1)},N=async(m,r)=>{const y=new FileReader;y.addEventListener("load",()=>r(y.result)),y.readAsDataURL(m)},d=(m,r)=>{const y=Object.assign({},t.options,{img:m,name:r});s.value=!0,_.value=Object.assign({},_.value,y),J(()=>{l()})},l=()=>{try{g.cropperReady=!0,g.myCropper=new he(B.value,{viewMode:1,dragMode:"move",aspectRatio:_.value.autoCropWidth/_.value.autoCropHeight,initialAspectRatio:1,autoCropArea:1,cropBoxMovable:!1,cropBoxResizable:!1,background:!0,movable:!0,modal:!0,preview:".before",ready:()=>{g.cropperReady=!1}})}catch(m){}},n=()=>{g.myCropper.getCroppedCanvas({imageSmoothingQuality:"high"}).toBlob(m=>{f.value=!0,c(m)})},c=async m=>{try{const r="".concat(t.path).concat(t.fileName||new Date().getTime()+".png"),y={filename:r,bucketName:t.bucketName,postData:{filename:r,acl:"public-read",key:r}},{data:U}=await P(y),a={policy:U.policy,signature:U.signature,acl:"public-read",key:r,KSSAccessKeyId:U.kssAccessKeyId,name:r,file:m},u=await Y(A,a);h("confirm",u),h("close")}catch(r){}f.value=!1};return ee(()=>t.img,()=>{t.img&&L(t.img)===b.IMG&&d(t.img)}),W(()=>{t.img&&L(t.img)===b.IMG&&d(t.img)}),()=>e("div",{class:j.uploadFile},[e("div",{class:j.uploadHeader},[e("div",{class:j.headerItem},[v("上传封面")])]),s.value?e("div",{class:j.uploadContainer},[e(ae,{show:g.cropperReady},{default:()=>{var m,r,y;return[e("div",{class:j.imgCropperSection},[((m=_.value)==null?void 0:m.img)&&e("img",{ref:B,src:(r=_.value)==null?void 0:r.img,style:{opacity:(y=g.myCropper)!=null&&y.ready?"1":"0"},alt:""},null)])]}})]):e("div",{class:j.uploadContainer},[e(q,{ref:M,accept:t.accept,multiple:!1,max:1,showFileList:!1,showPreviewButton:!0,onBeforeUpload:m=>S(m)},{default:()=>[e(Q,null,{default:()=>[e("div",{class:j.uploadBtn},[e("img",{src:ve,class:j.iconUploadAdd},null),e("p",null,[v("点击或将图片拖至此区域")]),e("span",null,[v("(建议比例16:9)")])])]})]})]),e("div",{class:j.uploadBtnGroup},[s.value?e(w,{type:"default",onClick:()=>{_.value.img="",s.value=!1}},{default:()=>[v("重新选择")]}):e("span",null,null),e(O,null,{default:()=>[e(w,{type:"default",onClick:()=>h("close")},{default:()=>[v("取消")]}),e(w,{type:"primary",onClick:()=>n(),disabled:!s.value,loading:f.value},{default:()=>[v("保存封面")]})]})])])}});function Ke(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!ie(t)}const L=t=>t?(t==null?void 0:t.indexOf(".mp3"))>-1?b.SONG:(t==null?void 0:t.indexOf(".mp4"))>-1?b.VIDEO:(t==null?void 0:t.indexOf(".ppt"))>-1?b.PPT:b.IMG:"",la=R({name:"upload-modal",props:{list:{type:Array,default:()=>[]},editStatus:{type:Boolean,default:!0}},emits:["close","confirm","editAll"],setup(t,{emit:h}){const B=re(),A=I(),k=$(),s=T({list:[],uploading:!1,uploadUrl:"",name:"",subjectIds:[]}),f=T({uploadCoverStatus:!1,uploadType:"",uploadImg:null,uploadIndex:0}),M=d=>{let l=K;switch(d){case"IMG":l=K;break;case"VIDEO":l=ye;break;case"SONG":l=ge;break;case"MUSIC":l=me;break;case"PPT":l=fe;break}return l},_=async()=>{var d;(d=A.value)==null||d.validate(async l=>{if(l){J(ce);return}s.uploading=!0;try{const n=[];if(s.list.forEach(c=>{n.push({subjectIds:c.subjectIds.join(","),openFlag:c.openFlag,coverImg:c.coverImg,name:c.name,type:c.type,enableFlag:1,content:c.content,id:c.id||null})}),S.value){if(t.editStatus)h("editAll",n);else{const{data:c}=await de(n);k.success("保存成功"),s.list=[],h("close",!0),h("confirm",c)}s.list=[]}else await pe(n),k.success("保存成功"),s.list=[],h("close",!0),h("confirm")}catch(n){}s.uploading=!1})},g=d=>{s.list.splice(d,1)},S=X(()=>t.list.length>0);W(async()=>{const d=t.list||[],l=[];d.forEach(n=>{l.push({subjectIds:n.subjectId?n.subjectId.split(",").map(c=>Number(c)):[],openFlag:n.openFlag,coverImg:n.coverImg,name:n.title,type:n.type,sourceFrom:n.sourceFrom,enableFlag:n.enableFlag,content:n.content,id:n.id})}),s.list=l||[],await B.getSubjects()});const N=(d,l)=>{d.subjectIds=l.map(n=>n.id)};return()=>{let d;return e("div",{class:F.uploadModal},[e(Fe,{style:{"max-height":"55vh"}},{default:()=>[e(te,{ref:A,labelPlacement:"left",labelWidth:120,model:s,class:F.formModal},{default:()=>[e(O,{class:F.formSpace},Ke(d=s.list.map((l,n)=>e("div",{class:F.formItem,key:n},[e("div",{class:F.previewModal},[e(z,{class:[F.titleType],src:M(l.type),previewDisabled:!0,objectFit:"cover"},null),!S.value&&e("img",{class:[F.iconUploadDelete],src:be,onClick:()=>g(n)},null),e(z,{class:[F.cover,F.image],lazy:!0,previewDisabled:!0,src:l.coverImg,objectFit:"cover"},null),e("div",{class:F.commonType},[e(w,{class:F.changeCover,type:"default",bordered:!1,onClick:()=>{f.uploadIndex=n,f.uploadImg=l.coverImg,f.uploadType=l.type,f.uploadCoverStatus=!0}},{default:()=>[v("更换封面")]}),e("div",null,[v("是否公开"),e(le,{size:"small",value:l.openFlag,"onUpdate:value":c=>l.openFlag=c,disabled:l.sourceFrom==="TEACHER"&&l.type==="MUSIC"},null)])])]),e(V,{showFeedback:!1,path:"list.".concat(n,".name"),rule:[{required:!0,message:"请输入资源名称",trigger:["input","blur"]}]},{default:()=>[e(oe,{value:l.name,"onUpdate:value":c=>l.name=c,placeholder:"请输入资源名称",maxlength:25,clearable:!0},null)]}),e(V,{path:"list[".concat(n,"].subjectIds"),showFeedback:!1,rule:[{required:!0,message:"请选择素材可用声部",trigger:"change",type:"array"}]},{default:()=>[e(se,{value:l.subjectIds,"onUpdate:value":c=>l.subjectIds=c,placeholder:"请选择素材可用声部(可多选)",options:B.getSubjectList,labelField:"name",valueField:"id",multiple:!0,maxTagCount:2,clearable:!0},{action:()=>e(ne,null,[e(w,{text:!0,style:" --n-width: 100% ",onClick:()=>N(l,B.getSubjectList)},{default:()=>[v("全选")]})])})]})])))?d:{default:()=>[d]})]})]}),e(O,{class:F.btnGroup,justify:"center"},{default:()=>[e(w,{round:!0,onClick:()=>h("close")},{default:()=>[t.editStatus?"取消":"上一步"]}),e(w,{round:!0,type:"primary",loading:s.uploading,disabled:s.list.length===0,onClick:_},{default:()=>[v("确定")]})]}),e(ue,{show:f.uploadCoverStatus,"onUpdate:show":l=>f.uploadCoverStatus=l,preset:"card",showIcon:!1,class:["modalTitle ",F.uploadCover],blockScroll:!1},{default:()=>[e(He,{img:f.uploadImg,onClose:()=>f.uploadCoverStatus=!1,onConfirm:l=>{f.uploadType==="IMG"&&(s.list[f.uploadIndex].content=l),s.list[f.uploadIndex].coverImg=l}},null)]})])}}}),We="_saveModal_ulplg_1",qe="_uploadBtn_ulplg_25",Qe="_iconUploadAdd_ulplg_47",Je="_btnGroup_ulplg_57",G={saveModal:We,uploadBtn:qe,iconUploadAdd:Qe,btnGroup:Je},oa=R({name:"save-modal",props:{fileList:{type:String,default:""},imageList:{type:Array,default:()=>[]},accept:{type:String,default:".jpg,.png,.jpeg,.gif"},showType:{type:String,default:"default"},showFileList:{type:Boolean,default:!0},max:{type:Number,default:1},multiple:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},bucketName:{type:String,default:"gyt"},directoryDnd:{type:Boolean,default:!1},path:{type:String,default:""},fileName:{type:String,default:""}},emits:["close","confrim"],setup(t,{emit:h}){const B="https://".concat(t.bucketName,".ks3-cn-beijing.ksyuncs.com/"),A=$(),k=I(!1),s=I(!1),f=I(),M=I(),_=T([]),g=I([]),S=I([]),N=async a=>{const u=a.file;let i=!0;const o=u.type.includes("image")?b.IMG:u.type.includes("audio")?b.SONG:u.type.includes("video")?b.VIDEO:u.type.includes("vnd.openxmlformats-officedocument.presentationml.presentation")||u.type.includes("vnd.ms-powerpoint")?b.PPT:"other";if(console.log(o,"type"),o==="other")return A.error("文件格式不支持"),!1;const p=o==="IMG"?2:o==="SONG"?20:500;if(p&&(i=u.file.size/1024/1024<p,!i)){const C=o==="IMG"?"图片":o==="SONG"?"音频":"视频";return A.error("".concat(C,"大小不能超过").concat(p,"M")),!1}if(!i)return i;try{s.value=!0;const C=u.file.name,D=C.slice(C.lastIndexOf(".")),E="".concat(t.path).concat(Date.now()+u.id+D),Z={filename:E,bucketName:t.bucketName,postData:{filename:E,acl:"public-read",key:E,unknowValueField:[]}},{data:x}=await P(Z);_.push({id:u.id,tempFiileBuffer:u.file,policy:x.policy,signature:x.signature,acl:"public-read",key:E,KSSAccessKeyId:x.kssAccessKeyId,name:E})}catch(C){return s.value=!1,!1}return!0},d=a=>{l(a)},l=async a=>{console.log(a,"onFinishAfter");const u=_.find(p=>p.id==a.file.id),i=L(a.file.url);let o="";i==="IMG"?o=a.file.url:i==="SONG"?o=H.SONG_DEFAULT_COVER:i==="PPT"?o=H.PPT_DEFAULT_COVER:i==="VIDEO"&&(o=await c(u.tempFiileBuffer)),S.value.push({coverImg:o,content:a.file.url,id:a.file.id,name:a.file.name?a.file.name.slice(0,a.file.name.lastIndexOf(".")):""}),k.value=!1,s.value=!1},n=a=>new Promise((u,i)=>{const o=document.createElement("video");o.setAttribute("crossOrigin","Anonymous"),o.setAttribute("preload","auto"),o.muted=!0,o.autoplay=!0,o.src=URL.createObjectURL(a),o.addEventListener("loadedmetadata",()=>{o.play(),setTimeout(()=>{o.currentTime=0,o.pause();const p=document.createElement("canvas");p.width=o.videoWidth,p.height=o.videoHeight,p.getContext("2d").drawImage(o,0,0,p.width,p.height),p.toBlob(C=>{u(C)})},500)}),o.addEventListener("error",p=>{i(p)})}),c=async a=>{try{s.value=!0;const u=await n(a||f.value),i="".concat(t.path).concat(Date.now()+".png"),o={filename:i,bucketName:t.bucketName,postData:{filename:i,acl:"public-read",key:i,unknowValueField:[]}},{data:p}=await P(o),C={policy:p.policy,signature:p.signature,key:i,acl:"public-read",KSSAccessKeyId:p.kssAccessKeyId,name:i,file:u};return await Y(B,C)}finally{s.value=!1}},m=async a=>{const u=S.value.findIndex(i=>i.id===a.file.id);return S.value.splice(u,1),s.value=!1,!0},r=X(()=>{let a=!1;return g.value.forEach(u=>{u.status!=="finished"&&(a=!0)}),a||g.value.length<=0||s.value}),y=({file:a,action:u,onFinish:i,onError:o,onProgress:p})=>{const C=_.find(D=>D.id==a.id);C.file=a,_e({file:a,action:u,data:C,onProgress:p,onFinish:i,onError:o})},U=async()=>{const a=[];g.value.forEach(u=>{const i=S.value.find(o=>o.id===u.id);i&&a.push(i)}),console.log(g.value,S.value),h("confrim",a)};return()=>e("div",{class:G.saveModal},[e(q,{ref:M,action:B,customRequest:y,fileList:g.value,"onUpdate:fileList":a=>g.value=a,accept:".jpg,jpeg,.png,audio/mp3,video/mp4,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation",multiple:!0,max:10,showFileList:!0,showPreviewButton:!0,onBeforeUpload:a=>N(a),onFinish:a=>{d(a)},onRemove:a=>m(a)},{default:()=>[e(Q,null,{default:()=>[e("div",{class:G.uploadBtn},[e("div",{class:G.iconUploadAdd},null),e("h3",null,[v("点击或者拖动文件到该区域来上传")]),e("p",null,[v("仅支持JPG、PNG、MP3、MP4、PPT格式文件,单次最多支持"),e("br",null,null),v("上传10个文件")])])]})]}),e(O,{class:G.btnGroup,justify:"center"},{default:()=>[e(w,{round:!0,onClick:()=>h("close")},{default:()=>[v("取消")]}),e(w,{round:!0,type:"primary",disabled:r.value||s.value,onClick:U},{default:()=>[v("确定")]})]})])}});export{oa as S,la as U,L as f};