1 |
- import{k as dt,S as $,af as I,a4 as ct,X as vt,U as mt,ag as pt,a6 as ft,E as i,Y as De,ae as _t}from"./index.DJ0_GVki.js";import{a as Ce,aH as gt,r as s,f as ke,q as yt,Z as wt,aj as d,at as bt,J as b,o as c,K as n,S as l,b as u,H as ht,u as w,c as k,R as N,M as B,P as _,Q as E,a9 as re,L as Dt}from"./vue.D1BjjNmv.js";import{createCrudOptions as kt}from"./crud.B5C3b_3i.js";import qt from"./index.Dezo5bt3.js";import Vt from"./index.DPBGPCVi.js";import{d as Ct,e as xt,f as Ut,c as qe,g as zt,b as Ve}from"./api.BKDEH2c4.js";import{_ as St}from"./_plugin-vue_export-helper.DlAUqK2U.js";const Pt={class:"document-box document-left-box"},Qt={class:"document-box document-right-box"},Ft={key:0,class:"uploaded-file-info mt-2"},Rt={class:"flex items-center justify-between"},Tt={class:"flex items-center"},Bt={class:"flex items-center"},Et={class:"text-gray-500 text-sm mr-4"},Lt={key:1,class:"flex items-center justify-between"},jt={key:0,class:"video-preview"},Ot=["src"],Mt={key:2,class:"file-info"},$t={class:"file-size"},It={class:"dialog-footer"},Nt={class:"dialog-footer"},At={class:"question-selection-container"},Gt={class:"question-search"},Jt={class:"search-row"},Wt={class:"question-table-container"},Kt={class:"pagination-container"},Ht={class:"dialog-footer"},Xt={class:"dialog-footer"},Yt=Ce({name:"documentList"}),Zt=Ce({...Yt,setup(eo){const{crudBinding:xe,crudRef:q,crudExpose:h}=dt({createCrudOptions:kt});gt();const C=s(null),A=s([]),ue=s([]),U=s(!1),G=s({}),de=s(null),V=s(""),Ue=s(!1),ze=s({id:0,name:"",doc_type:"",category:"",project:"",version:"",file_type:"",file_size:0,status:!0,doc_desc:"",update_datetime:"",file_path:"",file:""});s(null);const f=s({url:"",name:"",size:0,file_type:""}),ce=s({url:"",name:"",size:0,file_type:""}),z=s(!1),m=s(null);s("");const J=s(null),g=s({videoUrl:"",subtitleContent:""}),Se={videoUrl:[{required:!0,message:"请上传数字人视频",trigger:"change"}]},S=s(!1),P=s({sequence_number:0}),Pe={sequence_number:[{required:!0,message:"请输入排序值",trigger:"blur"},{type:"number",message:"排序值必须为数字",trigger:"blur"}]},W=s(null),Q=s(!1),p=s({position:"",questions:[],sequence:"0"}),K=s([]),H=s([]);ke(()=>p.value.questions.map(t=>{const e=H.value.find(o=>o.value===t);return e||{value:t,label:`问题 ${t}`,chinese_explanation:"",question_form_name:"",category_id:""}}));const X=s(!1),y=s({currentPage:1,pageSize:10,total:0}),Y=s([]),L=s(""),j=async()=>{try{X.value=!0;const t={page:y.value.currentPage,limit:y.value.pageSize,tenant_id:1,keyword:ee.value};L.value&&(t.category_id=L.value);const e=await Ve(t);e&&e.code===2e3&&e.data?(H.value=e.data.items.map(o=>({value:o.id.toString(),label:o.question,chinese_explanation:o.scoring_reference||"暂无释义",question_form_name:o.question_form_name||"暂无问题类型",category_id:o.category||"暂无分类"})),y.value.total=e.data.total,Y.value.length===0&&Qe()):i.error("获取问题列表失败")}catch(t){console.error("加载问题选项失败:",t),i.error("加载问题选项失败")}finally{X.value=!1}},Qe=async()=>{try{const t=await fetch(I()+"api/system/question_category/list?tenant_id=1",{method:"GET",headers:{Authorization:"JWT "+$.get("token"),"Content-Type":"application/json"}});if(!t.ok)throw new Error("获取问题分类列表失败");const e=await t.json();e&&e.code===2e3&&e.data.items&&(Y.value=e.data.items.map(o=>({value:o.id.toString(),label:o.name})))}catch(t){console.error("加载问题分类选项失败:",t)}},ve=()=>{y.value.currentPage=1,j()},Fe=ke(()=>H.value),Re=t=>{p.value.questions=t.map(e=>e.value)},Te=t=>{y.value.pageSize=t,j()},Be=t=>{y.value.currentPage=t,j()},me=()=>{Ee(),j(),Q.value=!0},Ee=async()=>{try{const t=await fetch(I()+"api/system/job/list?tenant_id=1",{method:"GET",headers:{Authorization:"JWT "+$.get("token"),"Content-Type":"application/json"}});if(!t.ok)throw new Error("获取职位列表失败");const e=await t.json();e&&e.code===2e3&&e.data?K.value=e.data.map(o=>({value:o.id.toString(),label:o.title,description:o.description||""})):i.error("获取职位列表失败")}catch(t){console.error("加载职位选项失败:",t),i.error("加载职位选项失败")}},Le=t=>{if(!t)return"";const e=K.value.find(o=>o.value===t.toString());return e?e.label:t.toString()},je=async()=>{try{if(!p.value.position){i.warning("请选择职位");return}if(p.value.questions.length===0){i.warning("请选择至少一个问题");return}const t=Le(p.value.position),e={position_id:parseInt(p.value.position),question_id:{question_id:p.value.questions.map(r=>parseInt(r))},duration:parseInt(p.value.sequence)||60,tenant_id:1};console.log("提交的数据:",e);const o=await Ct(e);o&&o.code===2e3?(i.success(`${t}职位问题保存成功`),Q.value=!1,p.value={position:"",questions:[],sequence:"0"},h.doRefresh()):i.error((o==null?void 0:o.msg)||"保存失败")}catch(t){console.error("保存职位问题失败:",t),i.error("保存失败,请重试")}},Z=()=>{xt({}).then(t=>{console.log("ret",t);const e=t.data;A.value=e})},Oe=t=>{console.log("record",t),V.value=(t==null?void 0:t.id)||"",C.value=null;const e={form:{limit:100,job_id:V.value}};h.doSearch(e)},Me=(t,e)=>{var o,r,v,R;if(t==="update"&&e){const le=((R=(v=(r=(o=de.value)==null?void 0:o.treeRef)==null?void 0:r.currentNode)==null?void 0:v.parent)==null?void 0:R.data)||{};ue.value=[le],G.value=e}U.value=!0},pe=t=>{t==="submit"&&Z(),U.value=!1,G.value={}},$e=(t,e)=>{De.confirm("您确认删除该文档分类吗?","温馨提示",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"}).then(async()=>{const o=await Ut(t);e(),(o==null?void 0:o.code)===2e3&&(_t(o.msg),Z())})},Ie=(t,e,o)=>{if(!t||!t.data){console.error("Upload response is invalid:",t);return}const r={name:e.name,file_path:t.data.bucket_url,file_type:t.data.file_type,file_size:e.size,doc_type:o.form.doc_type||"",category:V.value,status:!0,doc_desc:"",version:"",file:t.data.bucket_url};if(o.form)Object.assign(o.form,r);else{console.error("Form reference is not available");return}C.value=r,h.doRefresh()},Ne=t=>{var e;if(C.value=null,(e=q.value)!=null&&e.form){const o=q.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="",t.value=""}},fe=t=>{if(t===0)return"0 B";const e=1024,o=["B","KB","MB","GB","TB"],r=Math.floor(Math.log(t)/Math.log(e));return parseFloat((t/Math.pow(e,r)).toFixed(2))+" "+o[r]},Ae=t=>t?["pdf","doc","docx","xls","xlsx","ppt","pptx","jpg","jpeg","png","gif","bmp","webp","svg"].includes(t.toLowerCase()):!1,Ge=t=>{if(!t||!t.file){De.alert("文件链接不存在","预览失败",{type:"error"});return}const e=t.file_type||"",o=t.file,r=`/#/preview?url=${encodeURIComponent(o)}&type=${e}`;window.open(r,"_blank")},_e=async t=>{const e=t.detail||t;try{ze.value=e,Ue.value=!0}catch{i.error("获取文档详情失败")}},Je=t=>{const e=t.type.startsWith("video/"),o=t.size/1024/1024<500;return e?o?!0:(i.error("视频大小不能超过 500MB!"),!1):(i.error("请上传视频文件!"),!1)},We=(t,e)=>{if(console.log("response",t),console.log("file",e),t&&t.url)f.value={url:t.url,name:e.name||t.filename||"",size:e.size||0,file_type:e.type||t.mime_type||"video/mp4"},g.value.videoUrl=t.url,i.success("视频上传成功");else if(t&&t.data&&t.data.url)f.value={url:t.data.url,name:e.name||t.data.filename||"",size:e.size||0,file_type:e.type||t.data.mime_type||"video/mp4"},g.value.videoUrl=t.data.url,i.success("视频上传成功");else try{const o=t.url||t.response&&t.response.url||t[0]&&t[0].url||t.data&&t.data.bucket_url;if(o)f.value={url:o,name:e.name||t.filename||t.original_filename||"",size:e.size||t.size||0,file_type:e.type||t.mime_type||"video/mp4"},g.value.videoUrl=o,i.success("视频上传成功");else throw new Error("无法从响应中获取URL")}catch(o){console.error("处理上传响应时出错:",o),i.error("视频上传成功,但无法解析响应数据")}},Ke=()=>{i.error("上传失败,请重试")},ge=t=>{const e=t.detail;e&&(m.value=e,z.value=!0,f.value={url:"",name:"",size:0,file_type:""},ce.value={url:"",name:"",size:0,file_type:""},g.value={videoUrl:"",subtitleContent:""})},He=()=>{J.value&&J.value.validate(async t=>{if(t)try{if(!m.value||!m.value.id){i.error("当前选中的题目信息无效");return}if(!g.value.videoUrl&&!f.value.url){i.warning("请先上传数字人视频");return}const e={question_id:m.value.question_id,video_url:g.value.videoUrl||f.value.url,digital_human_video_subtitle:g.value.subtitleContent,tenant_id:1};console.log("提交的数据:",e);const o=await qe(e);o&&o.code===2e3?(i.success("数字人视频和字幕信息保存成功"),z.value=!1,f.value={url:"",name:"",size:0,file_type:""},ce.value={url:"",name:"",size:0,file_type:""},g.value={videoUrl:"",subtitleContent:""},h.doRefresh()):i.error((o==null?void 0:o.msg)||"保存失败")}catch(e){console.error("保存视频和字幕信息时出错:",e),i.error("保存失败,请重试")}else return i.warning("请完成必填项"),!1})},ye=t=>{const e=t.detail;e&&(m.value=e,P.value.sequence_number=e.sequence_number||0,S.value=!0)},Xe=()=>{W.value&&W.value.validate(async t=>{if(t)try{if(!m.value||!m.value.question_id){i.error("当前选中的题目信息无效");return}const e=V.value;if(!e){i.error("未选择职位分类");return}const o={position_id:e,questions:[{question_id:m.value.question_id,sequence_number:P.value.sequence_number}],tenant_id:1};console.log("提交的排序数据:",o);const r=await zt(o);r&&r.code===2e3?(i.success("排序修改成功"),S.value=!1,h.doRefresh()):i.error((r==null?void 0:r.msg)||"保存失败")}catch(e){console.error("保存排序信息时出错:",e),i.error("保存失败,请重试")}else return i.warning("请输入有效的排序值"),!1})};yt(()=>{Z(),h.doRefresh(),setTimeout(()=>{q.value&&(q.value.searchForm||(q.value.searchForm={}),V.value&&(q.value.searchForm.category=V.value,h.doSearch({form:{category:V.value}})))},300),window.addEventListener("viewDocumentDetail",_e),window.addEventListener("openVideoUploadDialog",ge),window.addEventListener("openSortDialog",ye),window.addEventListener("openPositionQuestionDialog",me),window.addEventListener("openBindParentQuestionDialog",be)}),wt(()=>{window.removeEventListener("viewDocumentDetail",_e),window.removeEventListener("openVideoUploadDialog",ge),window.removeEventListener("openSortDialog",ye),window.removeEventListener("openPositionQuestionDialog",me),window.removeEventListener("openBindParentQuestionDialog",be)});const ee=s(""),F=s(!1),D=s(null),we=s([]),te=s(!1),oe=s(""),Ye=async()=>{try{te.value=!0;const t={page:1,limit:200,tenant_id:1,question_form:0};oe.value&&(t.keyword=oe.value);const e=await Ve(t);we.value=e.data.items||[]}catch(t){console.error("获取开放问题列表失败:",t),i.error("获取开放问题列表失败")}finally{te.value=!1}},be=t=>{m.value=t.detail,m.value.parent_question_id?D.value=m.value.parent_question_id:D.value=null,oe.value="",Ye(),F.value=!0},he=()=>{F.value=!1,D.value=null,m.value=null},Ze=async()=>{if(!m.value||D.value===null){i.warning("请选择要关联的开放问题");return}try{await qe({id:m.value.question_id,parent_question_id:D.value,tenant_id:"1"}),i.success("绑定开放问题成功"),F.value=!1,D.value=null,h.doRefresh()}catch(t){console.error("绑定开放问题失败:",t),i.error("绑定开放问题失败")}},et=t=>{const e=new CustomEvent("openBindParentQuestionDialog",{detail:t});window.dispatchEvent(e)};return(t,e)=>{const o=d("el-col"),r=d("el-icon"),v=d("el-button"),R=d("el-upload"),le=d("el-card"),tt=d("fs-crud"),ot=d("el-row"),lt=d("el-drawer"),x=d("el-form-item"),ae=d("el-input"),ne=d("el-form"),O=d("el-dialog"),at=d("el-input-number"),se=d("el-option"),ie=d("el-select"),T=d("el-table-column"),nt=d("el-table"),st=d("el-pagination"),it=d("fs-page"),rt=bt("loading");return c(),b(it,null,{default:n(()=>[l(ot,{class:"document-el-row"},{default:n(()=>[l(o,{span:3},{default:n(()=>[u("div",Pt,[l(qt,{ref_key:"documentTreeRef",ref:de,treeData:A.value,onTreeClick:Oe,onUpdateDocument:Me,onDeleteDocument:$e},null,8,["treeData"])])]),_:1}),l(o,{span:21},{default:n(()=>[u("div",Qt,[l(tt,ht({ref_key:"crudRef",ref:q},w(xe)),{"cell-rowHandle-middle":n(a=>[a.row.question_form===5?(c(),b(v,{key:0,type:"text",onClick:M=>et(a.row)},{default:n(()=>[l(r,null,{default:n(()=>[l(w(pt))]),_:1}),e[17]||(e[17]=_("绑定开放问题 "))]),_:2},1032,["onClick"])):B("",!0)]),form_file:n(a=>[a.mode!=="view"?(c(),k(N,{key:0},[l(R,{action:w(I)()+"api/system/minioupload/",headers:{Authorization:"JWT "+w($).get("token")},multiple:!1,"on-success":(M,ut)=>Ie(M,ut,a),drag:!1,"show-file-list":!1},{default:n(()=>[l(v,{type:"primary",icon:"plus"},{default:n(()=>e[18]||(e[18]=[_("上传")])),_:1})]),_:2},1032,["action","headers","on-success"]),C.value?(c(),k("div",Ft,[l(le,{shadow:"hover",class:"w-full"},{default:n(()=>[u("div",Rt,[u("div",Tt,[l(r,{class:"mr-2"},{default:n(()=>[l(w(ct))]),_:1}),u("span",null,E(C.value.name),1)]),u("div",Bt,[u("span",Et,E(fe(C.value.file_size)),1),l(v,{type:"danger",link:"",onClick:M=>Ne(a)},{default:n(()=>[l(r,null,{default:n(()=>[l(w(vt))]),_:1})]),_:2},1032,["onClick"])])])]),_:2},1024)])):B("",!0)],64)):(c(),k("div",Lt,[u("span",null,E(a.form.fileName),1),Ae(a.form.file_type)?(c(),b(v,{key:0,type:"primary",link:"",onClick:M=>Ge(a.form)},{default:n(()=>[l(r,{class:"mr-1"},{default:n(()=>[l(w(mt))]),_:1}),e[19]||(e[19]=_("预览 "))]),_:2},1032,["onClick"])):B("",!0)]))]),_:1},16)])]),_:1})]),_:1}),l(lt,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=a=>U.value=a),title:"文档配置",direction:"rtl",size:"500px","close-on-click-modal":!1,"before-close":pe},{default:n(()=>[U.value?(c(),b(Vt,{key:0,initFormData:G.value,cacheData:ue.value,treeData:A.value,onDrawerClose:pe},null,8,["initFormData","cacheData","treeData"])):B("",!0)]),_:1},8,["modelValue"]),l(O,{modelValue:z.value,"onUpdate:modelValue":e[3]||(e[3]=a=>z.value=a),title:"上传数字人视频及字幕",width:"600px","destroy-on-close":""},{footer:n(()=>[u("span",It,[l(v,{onClick:e[2]||(e[2]=a=>z.value=!1)},{default:n(()=>e[21]||(e[21]=[_("取消")])),_:1}),l(v,{type:"primary",onClick:He,disabled:!f.value.url},{default:n(()=>e[22]||(e[22]=[_("保存")])),_:1},8,["disabled"])])]),default:n(()=>[l(ne,{ref_key:"videoFormRef",ref:J,model:g.value,rules:Se,"label-width":"100px","label-position":"top"},{default:n(()=>[l(x,{label:"数字人视频",prop:"videoUrl"},{default:n(()=>[l(R,{class:"video-uploader",action:w(I)()+"api/system/admin_upload/",headers:{Authorization:"JWT "+w($).get("token")},data:{tenant_id:1},multiple:!1,"on-success":We,"on-error":Ke,"before-upload":Je,"show-file-list":!1},{default:n(()=>[f.value.url?(c(),k("div",jt,[u("video",{src:f.value.url,controls:"",class:"video-player"},null,8,Ot)])):(c(),b(v,{key:1,type:"primary",icon:"Plus"},{default:n(()=>e[20]||(e[20]=[_("选择视频文件")])),_:1})),f.value.name?(c(),k("div",Mt,[u("span",null,E(f.value.name),1),u("span",$t,E(fe(f.value.size)),1)])):B("",!0)]),_:1},8,["action","headers"])]),_:1}),l(x,{label:"字幕内容",prop:"subtitleContent"},{default:n(()=>[l(ae,{modelValue:g.value.subtitleContent,"onUpdate:modelValue":e[1]||(e[1]=a=>g.value.subtitleContent=a),type:"textarea",rows:4,placeholder:"请输入数字人视频字幕内容"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(O,{modelValue:S.value,"onUpdate:modelValue":e[6]||(e[6]=a=>S.value=a),title:"修改排序",width:"400px","destroy-on-close":""},{footer:n(()=>[u("span",Nt,[l(v,{onClick:e[5]||(e[5]=a=>S.value=!1)},{default:n(()=>e[24]||(e[24]=[_("取消")])),_:1}),l(v,{type:"primary",onClick:Xe},{default:n(()=>e[25]||(e[25]=[_("保存")])),_:1})])]),default:n(()=>[l(ne,{ref_key:"sortFormRef",ref:W,model:P.value,rules:Pe,"label-width":"100px"},{default:n(()=>[l(x,{label:"排序值",prop:"sequence_number"},{default:n(()=>[l(at,{modelValue:P.value.sequence_number,"onUpdate:modelValue":e[4]||(e[4]=a=>P.value.sequence_number=a),min:0,max:9999,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),e[23]||(e[23]=u("div",{class:"form-helper"},"数值越小,排序越靠前",-1))]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(O,{modelValue:Q.value,"onUpdate:modelValue":e[14]||(e[14]=a=>Q.value=a),title:"职位问题",width:"60%","destroy-on-close":""},{footer:n(()=>[u("span",Ht,[l(v,{onClick:e[13]||(e[13]=a=>Q.value=!1)},{default:n(()=>e[26]||(e[26]=[_("取消")])),_:1}),l(v,{type:"primary",onClick:je},{default:n(()=>e[27]||(e[27]=[_("保存")])),_:1})])]),default:n(()=>[l(ne,{model:p.value,"label-width":"80px"},{default:n(()=>[l(x,{label:"职位"},{default:n(()=>[l(ie,{modelValue:p.value.position,"onUpdate:modelValue":e[7]||(e[7]=a=>p.value.position=a),placeholder:"请选择",style:{width:"25%"}},{default:n(()=>[(c(!0),k(N,null,re(K.value,a=>(c(),b(se,{key:a.value,label:a.label,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),l(x,{label:"职位问题"},{default:n(()=>[u("div",At,[u("div",Gt,[u("div",Jt,[l(ae,{style:{width:"200px"},modelValue:ee.value,"onUpdate:modelValue":e[8]||(e[8]=a=>ee.value=a),placeholder:"搜索问题",clearable:"",onInput:ve},{prefix:n(()=>[l(r,null,{default:n(()=>[l(w(ft))]),_:1})]),_:1},8,["modelValue"]),l(ie,{modelValue:L.value,"onUpdate:modelValue":e[9]||(e[9]=a=>L.value=a),placeholder:"问题分类",clearable:"",onChange:ve,style:{"margin-left":"10px",width:"200px"}},{default:n(()=>[(c(!0),k(N,null,re(Y.value,a=>(c(),b(se,{key:a.value,label:a.label,value:a.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])]),u("div",Wt,[Dt((c(),b(nt,{data:Fe.value,style:{width:"100%"},height:"300",onSelectionChange:Re},{default:n(()=>[l(T,{type:"selection",width:"55"}),l(T,{prop:"label",label:"问题","show-overflow-tooltip":""}),l(T,{prop:"category_id.name",label:"分类"}),l(T,{prop:"question_form_name",label:"题目形式","show-overflow-tooltip":""}),l(T,{prop:"chinese_explanation",label:"描述","show-overflow-tooltip":""})]),_:1},8,["data"])),[[rt,X.value]]),u("div",Kt,[l(st,{"current-page":y.value.currentPage,"onUpdate:currentPage":e[10]||(e[10]=a=>y.value.currentPage=a),"page-size":y.value.pageSize,"onUpdate:pageSize":e[11]||(e[11]=a=>y.value.pageSize=a),"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next, jumper",total:y.value.total,onSizeChange:Te,onCurrentChange:Be},null,8,["current-page","page-size","total"])])])])]),_:1}),l(x,{label:"排序"},{default:n(()=>[l(ae,{style:{width:"25%"},modelValue:p.value.sequence,"onUpdate:modelValue":e[12]||(e[12]=a=>p.value.sequence=a),placeholder:"请输入排序值"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),l(O,{modelValue:F.value,"onUpdate:modelValue":e[16]||(e[16]=a=>F.value=a),title:"绑定开放问题",width:"50%","before-close":he},{footer:n(()=>[u("span",Xt,[l(v,{onClick:he},{default:n(()=>e[29]||(e[29]=[_("取消")])),_:1}),l(v,{type:"primary",onClick:Ze},{default:n(()=>e[30]||(e[30]=[_("确认")])),_:1})])]),default:n(()=>[u("div",null,[e[28]||(e[28]=u("p",null,"请选择要关联的开放问题:",-1)),l(ie,{modelValue:D.value,"onUpdate:modelValue":e[15]||(e[15]=a=>D.value=a),filterable:"",clearable:"",placeholder:"请选择开放问题",style:{width:"100%"},loading:te.value},{default:n(()=>[(c(!0),k(N,null,re(we.value,a=>(c(),b(se,{key:a.id,label:a.question,value:a.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading"])])]),_:1},8,["modelValue"])]),_:1})}}}),ro=St(Zt,[["__scopeId","data-v-acb97304"]]);export{ro as default};
|