mi-assessment/server/MiAssessment/src/MiAssessment.Admin/wwwroot/assets/index-CyF1ze1b.js
2026-03-18 00:44:46 +08:00

2 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{d as Ve,r as T,a as A,v as Te,o as ke,g as d,B as he,c as v,k as m,e as a,C as $,w as l,b as p,t as u,l as y,D as De,K as B,F as L,y as S,z as C,f as Ie,J as H,L as xe,s as qe,x as w,H as Ne,M as Ee,I as Re,G as k,N as ze,E as f,_ as Le}from"./index-am9Ebq4Q.js";import{g as Se,i as Fe,j as Qe,k as Ue,l as Me,m as Ae,n as $e,a as Be,o as He}from"./assessment-UF8Tcexx.js";const Ke={class:"question-container"},Pe={class:"header-content"},je={class:"header-right"},Ge=["innerHTML"],Je={class:"category-count"},Oe={class:"pagination-wrapper"},We={key:0,class:"mapping-header"},Xe={class:"question-info"},Ye={class:"question-type"},Ze={class:"mapping-content"},et={class:"tree-node"},tt={class:"tree-node-code"},at={key:0,class:"import-result"},st={class:"result-summary"},lt={key:0,class:"error-list"},ot=Ve({__name:"index",setup(nt){const K=T(),V=T(),P=T(),F=T(),n=A({page:1,pageSize:10,assessmentTypeId:void 0,questionNo:void 0,status:void 0}),t=A({loading:!1,tableData:[],total:0,assessmentTypes:[],dialogVisible:!1,dialogTitle:"新增题目",formData:h(),formLoading:!1,isEdit:!1,mappingDialogVisible:!1,mappingLoading:!1,mappingSaving:!1,currentQuestion:null,categoryTree:[],selectedCategoryIds:[],importDialogVisible:!1,importLoading:!1,importAssessmentTypeId:void 0,importFile:null,importResult:null}),j=Te(()=>({assessmentTypeId:[{required:!0,message:"请选择测评类型",trigger:"change"}],questionNo:[{required:!0,message:"请输入题号",trigger:"blur"}],content:[{required:!0,message:"请输入题目内容",trigger:"blur"},{max:1e4,message:"内容不能超过10000个字符",trigger:"blur"}],status:[{required:!0,message:"请选择状态",trigger:"change"}]}));function h(){return{assessmentTypeId:void 0,questionNo:1,content:"",sort:0,status:1}}function G(s){if(!s)return"-";const e=s.replace(/<[^>]+>/g,"");return e.length>100?e.substring(0,100)+"...":e}async function J(){var s;try{const e=await Se({page:1,pageSize:100});e.code===0&&(t.assessmentTypes=((s=e.data)==null?void 0:s.list)||[])}catch(e){console.error("Failed to load assessment types:",e)}}async function _(){var s,e;t.loading=!0;try{const i={page:n.page,pageSize:n.pageSize};n.assessmentTypeId&&(i.assessmentTypeId=n.assessmentTypeId),n.questionNo&&(i.questionNo=n.questionNo),n.status!==void 0&&n.status!==""&&(i.status=Number(n.status));const r=await Fe(i);if(r.code===0)t.tableData=((s=r.data)==null?void 0:s.list)||[],t.total=((e=r.data)==null?void 0:e.total)||0;else throw new Error(r.message||"获取题目列表失败")}catch(i){const r=i instanceof Error?i.message:"获取题目列表失败";f.error(r)}finally{t.loading=!1}}async function O(s){t.mappingLoading=!0;try{const e=await Be(s);if(e.code===0)t.categoryTree=e.data||[];else throw new Error(e.message||"获取分类树失败")}catch(e){const i=e instanceof Error?e.message:"获取分类树失败";f.error(i),t.categoryTree=[]}finally{t.mappingLoading=!1}}async function W(s){try{const e=await He(s);e.code===0&&(t.selectedCategoryIds=(e.data||[]).map(i=>i.id))}catch(e){console.error("Failed to load question mappings:",e),t.selectedCategoryIds=[]}}function D(){n.page=1,_()}function X(){n.assessmentTypeId=void 0,n.questionNo=void 0,n.status=void 0,n.page=1,_()}function Y(s){n.pageSize=s,n.page=1,_()}function Z(s){n.page=s,_()}function ee(){t.isEdit=!1,t.dialogTitle="新增题目",t.formData=h(),t.dialogVisible=!0}function te(s){t.isEdit=!0,t.dialogTitle="编辑题目",t.formData={id:s.id,assessmentTypeId:s.assessmentTypeId,questionNo:s.questionNo,content:s.content||"",sort:s.sort,status:s.status},t.dialogVisible=!0}async function ae(s){try{const e=await Qe(s.id);if(e.code===0)f.success("删除成功"),t.tableData.length===1&&n.page>1&&n.page--,await _();else throw new Error(e.message||"删除失败")}catch(e){const i=e instanceof Error?e.message:"删除失败";f.error(i)}}async function se(){if(V.value){try{await V.value.validate()}catch{return}t.formLoading=!0;try{const s=t.formData,e={assessmentTypeId:s.assessmentTypeId,questionNo:s.questionNo,content:s.content,sort:s.sort,status:Number(s.status)};let i;if(t.isEdit&&s.id?i=await Ue({...e,id:s.id}):i=await Me(e),i.code===0)f.success(t.isEdit?"更新成功":"创建成功"),t.dialogVisible=!1,await _();else throw new Error(i.message||(t.isEdit?"更新失败":"创建失败"))}catch(s){const e=s instanceof Error?s.message:t.isEdit?"更新失败":"创建失败";f.error(e)}finally{t.formLoading=!1}}}function le(){var s;(s=V.value)==null||s.resetFields(),t.formData=h()}async function Q(s){t.currentQuestion=s,t.mappingDialogVisible=!0,s.assessmentTypeId&&(await O(s.assessmentTypeId),await W(s.id))}function oe(s,{checkedKeys:e}){t.selectedCategoryIds=e}async function ne(){if(t.currentQuestion){t.mappingSaving=!0;try{const s=await Ae({questionId:t.currentQuestion.id,categoryIds:t.selectedCategoryIds});if(s.code===0)f.success("映射保存成功"),t.mappingDialogVisible=!1,await _();else throw new Error(s.message||"保存映射失败")}catch(s){const e=s instanceof Error?s.message:"保存映射失败";f.error(e)}finally{t.mappingSaving=!1}}}function ie(){t.currentQuestion=null,t.categoryTree=[],t.selectedCategoryIds=[]}function re(){t.importDialogVisible=!0,t.importResult=null,t.importFile=null,t.importAssessmentTypeId=void 0}function de(s){t.importFile=s.raw||null}function ue(){t.importFile=null}async function pe(){if(!t.importFile||!t.importAssessmentTypeId){f.warning("请选择测评类型和上传文件");return}t.importLoading=!0;try{const s=new FormData;s.append("file",t.importFile),s.append("assessmentTypeId",String(t.importAssessmentTypeId));const e=await $e(s);if(e.code===0)t.importResult=e.data,e.data.successCount>0&&(f.success(`成功导入 ${e.data.successCount} 条题目`),await _()),e.data.failCount>0&&f.warning(`${e.data.failCount} 条导入失败,请查看错误详情`);else throw new Error(e.message||"导入失败")}catch(s){const e=s instanceof Error?s.message:"导入失败";f.error(e)}finally{t.importLoading=!1}}function me(){const s="/templates/question_import_template.xlsx",e=document.createElement("a");e.href=s,e.download="题目导入模板.xlsx",e.click(),f.info("模板下载中...")}function fe(){var s;t.importFile=null,t.importAssessmentTypeId=void 0,t.importResult=null,(s=F.value)==null||s.clearFiles()}return ke(async()=>{await J(),await _()}),(s,e)=>{const i=d("el-icon"),r=d("el-button"),I=d("el-card"),x=d("el-option"),q=d("el-select"),g=d("el-form-item"),N=d("el-input-number"),E=d("el-form"),b=d("el-table-column"),R=d("el-tag"),ge=d("el-popconfirm"),U=d("el-table"),ce=d("el-pagination"),ye=d("el-input"),z=d("el-dialog"),_e=d("el-alert"),be=d("el-tree"),ve=d("el-upload"),we=d("el-divider"),M=he("loading");return m(),v("div",Ke,[a(I,{class:"page-header"},{default:l(()=>[p("div",Pe,[e[19]||(e[19]=p("div",{class:"header-left"},[p("h2",{class:"page-title"},"题库管理"),p("span",{class:"page-description"},"管理测评题目,支持按测评类型筛选、分类映射、批量导入")],-1)),p("div",je,[a(r,{type:"primary",onClick:ee},{default:l(()=>[a(i,null,{default:l(()=>[a(y(De))]),_:1}),e[17]||(e[17]=u(" 新增题目 ",-1))]),_:1}),a(r,{type:"success",onClick:re},{default:l(()=>[a(i,null,{default:l(()=>[a(y(B))]),_:1}),e[18]||(e[18]=u(" 批量导入 ",-1))]),_:1})])])]),_:1}),a(I,{class:"search-card"},{default:l(()=>[a(E,{model:n,inline:""},{default:l(()=>[a(g,{label:"测评类型"},{default:l(()=>[a(q,{modelValue:n.assessmentTypeId,"onUpdate:modelValue":e[0]||(e[0]=o=>n.assessmentTypeId=o),placeholder:"请选择测评类型",clearable:"",style:{width:"200px"},onChange:D},{default:l(()=>[(m(!0),v(L,null,S(t.assessmentTypes,o=>(m(),C(x,{key:o.id,label:o.name,value:o.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(g,{label:"题号"},{default:l(()=>[a(N,{modelValue:n.questionNo,"onUpdate:modelValue":e[1]||(e[1]=o=>n.questionNo=o),placeholder:"请输入题号",min:1,controls:!1,style:{width:"120px"},onKeyup:Ie(D,["enter"])},null,8,["modelValue"])]),_:1}),a(g,{label:"状态"},{default:l(()=>[a(y(H),{modelValue:n.status,"onUpdate:modelValue":e[2]||(e[2]=o=>n.status=o),type:"common_status",placeholder:"请选择状态",clearable:""},null,8,["modelValue"])]),_:1}),a(g,null,{default:l(()=>[a(r,{type:"primary",onClick:D},{default:l(()=>[a(i,null,{default:l(()=>[a(y(xe))]),_:1}),e[20]||(e[20]=u(" 搜索 ",-1))]),_:1}),a(r,{onClick:X},{default:l(()=>[a(i,null,{default:l(()=>[a(y(qe))]),_:1}),e[21]||(e[21]=u(" 重置 ",-1))]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),$((m(),C(I,{class:"table-card"},{default:l(()=>[a(U,{ref_key:"tableRef",ref:K,data:t.tableData,"row-key":"id",stripe:""},{default:l(()=>[a(b,{prop:"questionNo",label:"题号",width:"80",align:"center"}),a(b,{label:"内容预览","min-width":"300"},{default:l(({row:o})=>[p("div",{class:"content-preview",innerHTML:G(o.content)},null,8,Ge)]),_:1}),a(b,{prop:"assessmentTypeName",label:"测评类型",width:"150","show-overflow-tooltip":""}),a(b,{label:"分类映射",width:"120",align:"center"},{default:l(({row:o})=>[a(r,{type:"primary",link:"",size:"small",onClick:c=>Q(o)},{default:l(()=>[p("span",Je,w(o.categoryCount||0),1),e[22]||(e[22]=p("span",null,"个分类",-1))]),_:2},1032,["onClick"])]),_:1}),a(b,{label:"状态",width:"100",align:"center"},{default:l(({row:o})=>[a(R,{type:o.status===1?"success":"info"},{default:l(()=>[u(w(o.status===1?"启用":"禁用"),1)]),_:2},1032,["type"])]),_:1}),a(b,{label:"操作",width:"180",fixed:"right",align:"center"},{default:l(({row:o})=>[a(r,{type:"primary",link:"",size:"small",onClick:c=>te(o)},{default:l(()=>[a(i,null,{default:l(()=>[a(y(Ne))]),_:1}),e[23]||(e[23]=u(" 编辑 ",-1))]),_:1},8,["onClick"]),a(r,{type:"warning",link:"",size:"small",onClick:c=>Q(o)},{default:l(()=>[a(i,null,{default:l(()=>[a(y(Ee))]),_:1}),e[24]||(e[24]=u(" 映射 ",-1))]),_:1},8,["onClick"]),a(ge,{title:"确定要删除这道题目吗?","confirm-button-text":"确定","cancel-button-text":"取消",onConfirm:c=>ae(o)},{reference:l(()=>[a(r,{type:"danger",link:"",size:"small"},{default:l(()=>[a(i,null,{default:l(()=>[a(y(Re))]),_:1}),e[25]||(e[25]=u(" 删除 ",-1))]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"]),p("div",Oe,[a(ce,{"current-page":n.page,"onUpdate:currentPage":e[3]||(e[3]=o=>n.page=o),"page-size":n.pageSize,"onUpdate:pageSize":e[4]||(e[4]=o=>n.pageSize=o),"page-sizes":[10,20,50,100],total:t.total,layout:"total, sizes, prev, pager, next, jumper",onSizeChange:Y,onCurrentChange:Z},null,8,["current-page","page-size","total"])])]),_:1})),[[M,t.loading]]),a(z,{modelValue:t.dialogVisible,"onUpdate:modelValue":e[11]||(e[11]=o=>t.dialogVisible=o),title:t.dialogTitle,width:"700px","close-on-click-modal":!1,onClosed:le},{footer:l(()=>[a(r,{onClick:e[10]||(e[10]=o=>t.dialogVisible=!1)},{default:l(()=>[...e[26]||(e[26]=[u("取消",-1)])]),_:1}),a(r,{type:"primary",loading:t.formLoading,onClick:se},{default:l(()=>[...e[27]||(e[27]=[u(" 确定 ",-1)])]),_:1},8,["loading"])]),default:l(()=>[a(E,{ref_key:"formRef",ref:V,model:t.formData,rules:j.value,"label-width":"100px","label-position":"right"},{default:l(()=>[a(g,{label:"测评类型",prop:"assessmentTypeId"},{default:l(()=>[a(q,{modelValue:t.formData.assessmentTypeId,"onUpdate:modelValue":e[5]||(e[5]=o=>t.formData.assessmentTypeId=o),placeholder:"请选择测评类型",style:{width:"100%"}},{default:l(()=>[(m(!0),v(L,null,S(t.assessmentTypes,o=>(m(),C(x,{key:o.id,label:o.name,value:o.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(g,{label:"题号",prop:"questionNo"},{default:l(()=>[a(N,{modelValue:t.formData.questionNo,"onUpdate:modelValue":e[6]||(e[6]=o=>t.formData.questionNo=o),min:1,max:9999,placeholder:"请输入题号",style:{width:"200px"}},null,8,["modelValue"])]),_:1}),a(g,{label:"题目内容",prop:"content"},{default:l(()=>[a(ye,{modelValue:t.formData.content,"onUpdate:modelValue":e[7]||(e[7]=o=>t.formData.content=o),type:"textarea",placeholder:"请输入题目内容支持HTML格式",rows:8,maxlength:"10000","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(g,{label:"排序",prop:"sort"},{default:l(()=>[a(N,{modelValue:t.formData.sort,"onUpdate:modelValue":e[8]||(e[8]=o=>t.formData.sort=o),min:0,max:9999,placeholder:"数值越小越靠前"},null,8,["modelValue"])]),_:1}),a(g,{label:"状态",prop:"status",required:""},{default:l(()=>[a(y(H),{modelValue:t.formData.status,"onUpdate:modelValue":e[9]||(e[9]=o=>t.formData.status=o),type:"common_status",placeholder:"请选择状态"},null,8,["modelValue"])]),_:1})]),_:1},8,["model","rules"])]),_:1},8,["modelValue","title"]),a(z,{modelValue:t.mappingDialogVisible,"onUpdate:modelValue":e[13]||(e[13]=o=>t.mappingDialogVisible=o),title:"分类映射",width:"600px","close-on-click-modal":!1,onClosed:ie},{footer:l(()=>[a(r,{onClick:e[12]||(e[12]=o=>t.mappingDialogVisible=!1)},{default:l(()=>[...e[29]||(e[29]=[u("取消",-1)])]),_:1}),a(r,{type:"primary",loading:t.mappingSaving,onClick:ne},{default:l(()=>[...e[30]||(e[30]=[u(" 保存映射 ",-1)])]),_:1},8,["loading"])]),default:l(()=>{var o;return[t.currentQuestion?(m(),v("div",We,[e[28]||(e[28]=p("span",null,"题目:",-1)),p("span",Xe,"第 "+w(t.currentQuestion.questionNo)+" 题",1),p("span",Ye,""+w(t.currentQuestion.assessmentTypeName)+"",1)])):k("",!0),$((m(),v("div",Ze,[(o=t.currentQuestion)!=null&&o.assessmentTypeId?(m(),C(be,{key:1,ref_key:"categoryTreeRef",ref:P,data:t.categoryTree,props:{label:"name",children:"children"},"node-key":"id","show-checkbox":"","default-expand-all":"","default-checked-keys":t.selectedCategoryIds,onCheck:oe},{default:l(({node:c,data:Ce})=>[p("span",et,[p("span",null,w(c.label),1),p("span",tt,"("+w(Ce.code)+")",1)])]),_:1},8,["data","default-checked-keys"])):(m(),C(_e,{key:0,title:"请先选择测评类型",type:"warning",closable:!1,"show-icon":""}))])),[[M,t.mappingLoading]])]}),_:1},8,["modelValue"]),a(z,{modelValue:t.importDialogVisible,"onUpdate:modelValue":e[16]||(e[16]=o=>t.importDialogVisible=o),title:"批量导入题目",width:"600px","close-on-click-modal":!1,onClosed:fe},{footer:l(()=>[a(r,{onClick:e[15]||(e[15]=o=>t.importDialogVisible=!1)},{default:l(()=>[...e[36]||(e[36]=[u("关闭",-1)])]),_:1}),a(r,{type:"primary",loading:t.importLoading,disabled:!t.importFile||!t.importAssessmentTypeId,onClick:pe},{default:l(()=>[...e[37]||(e[37]=[u(" 开始导入 ",-1)])]),_:1},8,["loading","disabled"])]),default:l(()=>{var o;return[a(E,{"label-width":"100px"},{default:l(()=>[a(g,{label:"测评类型",required:""},{default:l(()=>[a(q,{modelValue:t.importAssessmentTypeId,"onUpdate:modelValue":e[14]||(e[14]=c=>t.importAssessmentTypeId=c),placeholder:"请选择测评类型",style:{width:"100%"}},{default:l(()=>[(m(!0),v(L,null,S(t.assessmentTypes,c=>(m(),C(x,{key:c.id,label:c.name,value:c.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(g,{label:"Excel文件",required:""},{default:l(()=>[a(ve,{ref_key:"uploadRef",ref:F,"auto-upload":!1,limit:1,accept:".xlsx,.xls","on-change":de,"on-remove":ue},{trigger:l(()=>[a(r,{type:"primary"},{default:l(()=>[a(i,null,{default:l(()=>[a(y(B))]),_:1}),e[31]||(e[31]=u(" 选择文件 ",-1))]),_:1})]),tip:l(()=>[...e[32]||(e[32]=[p("div",{class:"upload-tip"}," 支持 .xlsx, .xls 格式,文件大小不超过 10MB ",-1)])]),_:1},512)]),_:1}),a(g,{label:"模板下载"},{default:l(()=>[a(r,{type:"text",onClick:me},{default:l(()=>[a(i,null,{default:l(()=>[a(y(ze))]),_:1}),e[33]||(e[33]=u(" 下载导入模板 ",-1))]),_:1})]),_:1})]),_:1}),t.importResult?(m(),v("div",at,[a(we,{"content-position":"left"},{default:l(()=>[...e[34]||(e[34]=[u("导入结果",-1)])]),_:1}),p("div",st,[a(R,{type:"success"},{default:l(()=>[u("成功:"+w(t.importResult.successCount)+" 条",1)]),_:1}),t.importResult.failCount>0?(m(),C(R,{key:0,type:"danger"},{default:l(()=>[u(" 失败:"+w(t.importResult.failCount)+" 条 ",1)]),_:1})):k("",!0)]),((o=t.importResult.errors)==null?void 0:o.length)>0?(m(),v("div",lt,[e[35]||(e[35]=p("div",{class:"error-title"},"错误详情:",-1)),a(U,{data:t.importResult.errors,"max-height":"200",size:"small"},{default:l(()=>[a(b,{prop:"row",label:"行号",width:"80",align:"center"}),a(b,{prop:"message",label:"错误信息"})]),_:1},8,["data"])])):k("",!0)])):k("",!0)]}),_:1},8,["modelValue"])])}}}),dt=Le(ot,[["__scopeId","data-v-cbf7072f"]]);export{dt as default};