index.Cji5lP_Q.js 9.4 KB

1
  1. import{k as pe,S as q,I as J,J as ye,H as ge,K as we,M as H,C as he,E as s}from"./index.-hjZxcg8.js";import{a as K,aH as be,r as n,q as De,Z as ke,aj as d,J as U,o as f,K as a,S as l,b as c,H as xe,u as _,c as b,R as Ce,M as z,P as D,Q as k}from"./vue.YrNK8sx4.js";import{createCrudOptions as Ue}from"./crud.Cgmb3W_j.js";import ze from"./index.DbUN2X6X.js";import Ve from"./index.BuYuBpYz.js";import{d as Fe,e as Re,a as Te}from"./api.3TOOu1QM.js";import{_ as Be}from"./_plugin-vue_export-helper.DlAUqK2U.js";const Me={class:"document-box document-left-box"},Ee={class:"document-box document-right-box"},Le={key:0,class:"uploaded-file-info mt-2"},Se={class:"flex items-center justify-between"},je={class:"flex items-center"},Ie={class:"flex items-center"},Ne={class:"text-gray-500 text-sm mr-4"},Pe={key:1,class:"flex items-center justify-between"},$e={key:0,class:"video-preview"},qe=["src"],Je={key:2,class:"file-info"},He={class:"file-size"},Ke={class:"dialog-footer"},Oe=K({name:"documentList"}),We=K({...Oe,setup(Ae){const{crudBinding:O,crudRef:v,crudExpose:g}=pe({createCrudOptions:Ue});be();const y=n(null),V=n([]),E=n([]),w=n(!1),F=n({}),L=n(null),p=n(""),W=n(!1),A=n({id:0,name:"",doc_type:"",category:"",project:"",version:"",file_type:"",file_size:0,status:!0,doc_desc:"",update_datetime:"",file_path:"",file:""});n(null);const i=n({url:"",name:"",size:0,file_type:""}),S=n({url:"",name:"",size:0,file_type:""}),h=n(!1),x=n(null);n("");const R=n(null),m=n({videoUrl:"",subtitleContent:""}),G={videoUrl:[{required:!0,message:"请上传数字人视频",trigger:"change"}]},T=()=>{Fe({}).then(e=>{console.log("ret",e);const t=e.data;V.value=t})},Q=e=>{console.log("record",e),p.value=(e==null?void 0:e.id)||"",y.value=null;const t={form:{job_id:p.value}};g.doSearch(t)},Z=(e,t)=>{var o,r;if(e==="update"&&t){const C=((r=(o=L.value)==null?void 0:o.treeRef)==null?void 0:r.currentNode.parent.data)||{};E.value=[C],F.value=t}w.value=!0},j=e=>{e==="submit"&&T(),w.value=!1,F.value={}},X=(e,t)=>{H.confirm("您确认删除该文档分类吗?","温馨提示",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"}).then(async()=>{const o=await Re(e);t(),(o==null?void 0:o.code)===2e3&&(he(o.msg),T())})},Y=(e,t,o)=>{if(!e||!e.data){console.error("Upload response is invalid:",e);return}const r={name:t.name,file_path:e.data.bucket_url,file_type:e.data.file_type,file_size:t.size,doc_type:o.form.doc_type||"",category:p.value,status:!0,doc_desc:"",version:"",file:e.data.bucket_url};if(o.form)Object.assign(o.form,r);else{console.error("Form reference is not available");return}y.value=r,g.doRefresh({form:{category:p.value}})},ee=e=>{var t;if(y.value=null,(t=v.value)!=null&&t.form){const o=v.value.form;o.name="",o.file_path="",o.file_type="",o.file_size="",o.doc_type="",o.category="",o.doc_desc="",o.version="",o.file="",e.value=""}},I=e=>{if(e===0)return"0 B";const t=1024,o=["B","KB","MB","GB","TB"],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/Math.pow(t,r)).toFixed(2))+" "+o[r]},te=e=>e?["pdf","doc","docx","xls","xlsx","ppt","pptx","jpg","jpeg","png","gif","bmp","webp","svg"].includes(e.toLowerCase()):!1,oe=e=>{if(!e||!e.file){H.alert("文件链接不存在","预览失败",{type:"error"});return}const t=e.file_type||"",o=`/#/preview?url=${encodeURIComponent(filePath)}&type=${t}`;window.open(o,"_blank")},N=async e=>{const t=e.detail||e;try{A.value=t,W.value=!0}catch{s.error("获取文档详情失败")}},le=e=>{const t=e.type.startsWith("video/"),o=e.size/1024/1024<500;return t?o?!0:(s.error("视频大小不能超过 500MB!"),!1):(s.error("请上传视频文件!"),!1)},ae=(e,t)=>{if(console.log("response",e),console.log("file",t),e&&e.url)i.value={url:e.url,name:t.name||e.filename||"",size:t.size||0,file_type:t.type||e.mime_type||"video/mp4"},m.value.videoUrl=e.url,s.success("视频上传成功");else if(e&&e.data&&e.data.url)i.value={url:e.data.url,name:t.name||e.data.filename||"",size:t.size||0,file_type:t.type||e.data.mime_type||"video/mp4"},m.value.videoUrl=e.data.url,s.success("视频上传成功");else try{const o=e.url||e.response&&e.response.url||e[0]&&e[0].url||e.data&&e.data.bucket_url;if(o)i.value={url:o,name:t.name||e.filename||e.original_filename||"",size:t.size||e.size||0,file_type:t.type||e.mime_type||"video/mp4"},m.value.videoUrl=o,s.success("视频上传成功");else throw new Error("无法从响应中获取URL")}catch(o){console.error("处理上传响应时出错:",o),s.error("视频上传成功,但无法解析响应数据")}},ne=()=>{s.error("上传失败,请重试")},P=e=>{const t=e.detail;t&&(x.value=t,h.value=!0,i.value={url:"",name:"",size:0,file_type:""},S.value={url:"",name:"",size:0,file_type:""},m.value={videoUrl:"",subtitleContent:""})},re=()=>{R.value&&R.value.validate(async e=>{if(e)try{if(!x.value||!x.value.id){s.error("当前选中的题目信息无效");return}if(!m.value.videoUrl&&!i.value.url){s.warning("请先上传数字人视频");return}const t={question_id:x.value.question_id,video_url:m.value.videoUrl||i.value.url,digital_human_video_subtitle:m.value.subtitleContent,tenant_id:1};console.log("提交的数据:",t);const o=await Te(t);o&&o.code===2e3?(s.success("数字人视频和字幕信息保存成功"),h.value=!1,i.value={url:"",name:"",size:0,file_type:""},S.value={url:"",name:"",size:0,file_type:""},m.value={videoUrl:"",subtitleContent:""},g.doRefresh()):s.error((o==null?void 0:o.msg)||"保存失败")}catch(t){console.error("保存视频和字幕信息时出错:",t),s.error("保存失败,请重试")}else return s.warning("请完成必填项"),!1})};return De(()=>{T(),g.doRefresh(),setTimeout(()=>{v.value&&(v.value.searchForm||(v.value.searchForm={}),p.value&&(v.value.searchForm.category=p.value,g.doSearch({form:{category:p.value}})))},300),window.addEventListener("viewDocumentDetail",N),window.addEventListener("openVideoUploadDialog",P)}),ke(()=>{window.removeEventListener("viewDocumentDetail",N),window.removeEventListener("openVideoUploadDialog",P)}),(e,t)=>{const o=d("el-col"),r=d("el-button"),C=d("el-upload"),B=d("el-icon"),se=d("el-card"),ie=d("fs-crud"),ue=d("el-row"),de=d("el-drawer"),$=d("el-form-item"),ce=d("el-input"),me=d("el-form"),fe=d("el-dialog"),_e=d("fs-page");return f(),U(_e,null,{default:a(()=>[l(ue,{class:"document-el-row"},{default:a(()=>[l(o,{span:4},{default:a(()=>[c("div",Me,[l(ze,{ref_key:"documentTreeRef",ref:L,treeData:V.value,onTreeClick:Q,onUpdateDocument:Z,onDeleteDocument:X},null,8,["treeData"])])]),_:1}),l(o,{span:20},{default:a(()=>[c("div",Ee,[l(ie,xe({ref_key:"crudRef",ref:v},_(O)),{form_file:a(u=>[u.mode!=="view"?(f(),b(Ce,{key:0},[l(C,{action:_(J)()+"api/system/minioupload/",headers:{Authorization:"JWT "+_(q).get("token")},multiple:!1,"on-success":(M,ve)=>Y(M,ve,u),drag:!1,"show-file-list":!1},{default:a(()=>[l(r,{type:"primary",icon:"plus"},{default:a(()=>t[4]||(t[4]=[D("上传")])),_:1})]),_:2},1032,["action","headers","on-success"]),y.value?(f(),b("div",Le,[l(se,{shadow:"hover",class:"w-full"},{default:a(()=>[c("div",Se,[c("div",je,[l(B,{class:"mr-2"},{default:a(()=>[l(_(ye))]),_:1}),c("span",null,k(y.value.name),1)]),c("div",Ie,[c("span",Ne,k(I(y.value.file_size)),1),l(r,{type:"danger",link:"",onClick:M=>ee(u)},{default:a(()=>[l(B,null,{default:a(()=>[l(_(ge))]),_:1})]),_:2},1032,["onClick"])])])]),_:2},1024)])):z("",!0)],64)):(f(),b("div",Pe,[c("span",null,k(u.form.fileName),1),te(u.form.file_type)?(f(),U(r,{key:0,type:"primary",link:"",onClick:M=>oe(u.form)},{default:a(()=>[l(B,{class:"mr-1"},{default:a(()=>[l(_(we))]),_:1}),t[5]||(t[5]=D("预览 "))]),_:2},1032,["onClick"])):z("",!0)]))]),_:1},16)])]),_:1})]),_:1}),l(de,{modelValue:w.value,"onUpdate:modelValue":t[0]||(t[0]=u=>w.value=u),title:"文档配置",direction:"rtl",size:"500px","close-on-click-modal":!1,"before-close":j},{default:a(()=>[w.value?(f(),U(Ve,{key:0,initFormData:F.value,cacheData:E.value,treeData:V.value,onDrawerClose:j},null,8,["initFormData","cacheData","treeData"])):z("",!0)]),_:1},8,["modelValue"]),l(fe,{modelValue:h.value,"onUpdate:modelValue":t[3]||(t[3]=u=>h.value=u),title:"上传数字人视频及字幕",width:"600px","destroy-on-close":""},{footer:a(()=>[c("span",Ke,[l(r,{onClick:t[2]||(t[2]=u=>h.value=!1)},{default:a(()=>t[7]||(t[7]=[D("取消")])),_:1}),l(r,{type:"primary",onClick:re,disabled:!i.value.url},{default:a(()=>t[8]||(t[8]=[D("保存")])),_:1},8,["disabled"])])]),default:a(()=>[l(me,{ref_key:"videoFormRef",ref:R,model:m.value,rules:G,"label-width":"100px","label-position":"top"},{default:a(()=>[l($,{label:"数字人视频",prop:"videoUrl"},{default:a(()=>[l(C,{class:"video-uploader",action:_(J)()+"api/system/admin_upload/",headers:{Authorization:"JWT "+_(q).get("token")},data:{tenant_id:1},multiple:!1,"on-success":ae,"on-error":ne,"before-upload":le,"show-file-list":!1},{default:a(()=>[i.value.url?(f(),b("div",$e,[c("video",{src:i.value.url,controls:"",class:"video-player"},null,8,qe)])):(f(),U(r,{key:1,type:"primary",icon:"Plus"},{default:a(()=>t[6]||(t[6]=[D("选择视频文件")])),_:1})),i.value.name?(f(),b("div",Je,[c("span",null,k(i.value.name),1),c("span",He,k(I(i.value.size)),1)])):z("",!0)]),_:1},8,["action","headers"])]),_:1}),l($,{label:"字幕内容",prop:"subtitleContent"},{default:a(()=>[l(ce,{modelValue:m.value.subtitleContent,"onUpdate:modelValue":t[1]||(t[1]=u=>m.value.subtitleContent=u),type:"textarea",rows:4,placeholder:"请输入数字人视频字幕内容"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])]),_:1})}}}),ot=Be(We,[["__scopeId","data-v-32c1bad1"]]);export{ot as default};