QuestionBankForm.omDmjEN9.js 8.6 KB

1
  1. import{a as J,r as c,_ as K,w as O,q as Y,aj as d,c as _,o as i,S as o,K as a,J as m,M as V,R as f,a9 as g,b as G,P as L,Y as z}from"./vue.D1BjjNmv.js";import{G as H,a as W,b as X,c as Z,d as $}from"./api.DubYhiX5.js";import ee from"./QuestionOptionsEditor.CfqO4x61.js";import te from"./BlankAnswerEditor.C4I2efc6.js";import{_ as le}from"./_plugin-vue_export-helper.DlAUqK2U.js";import"./index.CWsdHise.js";const oe={class:"question-bank-form"},ae={style:{display:"flex","align-items":"center"}},ne=J({__name:"QuestionBankForm",props:{modelValue:{default:()=>({})},isEdit:{type:Boolean,default:!1}},emits:["update:modelValue","submit","cancel"],setup(E,{expose:Q,emit:T}){const x=E,v=T,y=c(),e=K({question:"",question_form:null,competency_tags:[],competency_tags_config:[],position_types:[],category_id:null,tags:[],recommended_duration:60,status:1,is_required_correct:!1,is_system:!1,sort:1,options:[],scoring_reference:"",blank_answer_template:[],...x.modelValue}),N={question:[{required:!0,message:"题目内容必填",trigger:"blur"}],question_form:[{required:!0,message:"题目形式必填",trigger:"change"}],status:[{required:!0,message:"状态必填",trigger:"change"}]},h=c([]),w=c([]),U=c([]),C=c([]),F=c([]);O(()=>e,n=>{v("update:modelValue",n)},{deep:!0}),O(()=>x.modelValue,n=>{Object.assign(e,n)},{deep:!0});const M=n=>{n===1||n===2?e.options=[{option_text:"",is_correct:!1,sort:1},{option_text:"",is_correct:!1,sort:2}]:n===4?(e.options=[{option_text:"无",score:0,sort:1},{option_text:"轻度",score:1,sort:2},{option_text:"中度",score:2,sort:3},{option_text:"偏重",score:3,sort:4},{option_text:"严重",score:4,sort:5}],e.scoring_reference||(e.scoring_reference="该评分反映了症状表现的频率与严重程度。")):n===6?(e.blank_answer_template=[{blank_index:1,correct_answer:"",score:5}],e.scoring_reference||(e.scoring_reference="根据答案的准确性评分")):e.options=[]},S=n=>{e.competency_tags_config||(e.competency_tags_config=[]);const l=e.competency_tags_config.map(u=>u.id);n.forEach(u=>{if(!l.includes(u)){const s=w.value.find(r=>r.id===u);s&&e.competency_tags_config.push({id:u,competency_name:s.name,weight:100,importance:1,remark:""})}}),e.competency_tags_config=e.competency_tags_config.filter(u=>n.includes(u.id))},j=async()=>{try{const n=await H();h.value=n.data.question_forms||[];const l=await W({page:1,limit:100,tenant_id:1});w.value=l.data.items||[];const u=await X({page:1,limit:1e3,tenant_id:1});U.value=u.data||[];const s=await Z({page:1,limit:1e3,tenant_id:1});C.value=s.data.items||[];const r=await $({page:1,limit:1e3,tenant_id:1});F.value=r.data.items||[]}catch(n){console.error("获取选项数据失败:",n)}},R=async()=>{var n;try{await((n=y.value)==null?void 0:n.validate()),e.competency_tags&&e.competency_tags.length>0&&e.competency_tags_config?e.competency_tags=e.competency_tags_config.map(l=>({id:l.id,weight:l.weight||100,importance:l.importance||1,remark:l.remark||""})):e.competency_tags_config=[],v("submit",e)}catch(l){console.error("表单验证失败:",l)}},D=()=>{v("cancel")};return Y(()=>{j()}),Q({validate:()=>{var n;return(n=y.value)==null?void 0:n.validate()},resetFields:()=>{var n;return(n=y.value)==null?void 0:n.resetFields()},getFormData:()=>e}),(n,l)=>{const u=d("el-input"),s=d("el-form-item"),r=d("el-option"),p=d("el-select"),q=d("el-table-column"),b=d("el-input-number"),P=d("el-table"),A=d("el-card"),B=d("el-button"),I=d("el-form");return i(),_("div",oe,[o(I,{ref_key:"formRef",ref:y,model:e,rules:N,"label-width":"120px",onSubmit:z(R,["prevent"])},{default:a(()=>[o(s,{label:"题目内容",prop:"question"},{default:a(()=>[o(u,{modelValue:e.question,"onUpdate:modelValue":l[0]||(l[0]=t=>e.question=t),type:"textarea",rows:3,placeholder:"请输入题目内容"},null,8,["modelValue"])]),_:1}),o(s,{label:"题目形式",prop:"question_form"},{default:a(()=>[o(p,{modelValue:e.question_form,"onUpdate:modelValue":l[1]||(l[1]=t=>e.question_form=t),placeholder:"请选择题目形式",style:{width:"100%"},onChange:M},{default:a(()=>[(i(!0),_(f,null,g(h.value,t=>(i(),m(r,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e.question_form===6?(i(),m(s,{key:0,label:"填空答案模板"},{default:a(()=>[o(te,{modelValue:e.blank_answer_template,"onUpdate:modelValue":l[2]||(l[2]=t=>e.blank_answer_template=t),question:e.question},null,8,["modelValue","question"])]),_:1})):V("",!0),o(s,{label:"胜任力标签"},{default:a(()=>[o(p,{modelValue:e.competency_tags,"onUpdate:modelValue":l[3]||(l[3]=t=>e.competency_tags=t),style:{width:"100%"},multiple:"",filterable:"",placeholder:"请选择胜任力标签",onChange:S},{default:a(()=>[(i(!0),_(f,null,g(w.value,t=>(i(),m(r,{key:t.id,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e.competency_tags&&e.competency_tags.length>0?(i(),m(s,{key:1,label:"胜任力配置"},{default:a(()=>[o(A,null,{default:a(()=>[o(P,{data:e.competency_tags_config,border:""},{default:a(()=>[o(q,{label:"标签",prop:"competency_name",width:"200"}),o(q,{label:"权重",width:"150"},{default:a(({row:t})=>[G("div",ae,[o(b,{modelValue:t.weight,"onUpdate:modelValue":k=>t.weight=k,min:0,max:100,step:1,precision:0,controls:!1,style:{width:"calc(100% - 20px)"}},null,8,["modelValue","onUpdate:modelValue"]),l[14]||(l[14]=G("span",{style:{"margin-left":"4px"}},"%",-1))])]),_:1}),o(q,{label:"级别",width:"100"},{default:a(({row:t})=>[o(b,{modelValue:t.importance,"onUpdate:modelValue":k=>t.importance=k,min:1,controls:!1},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])]),_:1})]),_:1})):V("",!0),o(s,{label:"适用职位"},{default:a(()=>[o(p,{modelValue:e.position_types,"onUpdate:modelValue":l[4]||(l[4]=t=>e.position_types=t),style:{width:"100%"},multiple:"",filterable:"",placeholder:"请选择适用职位类型"},{default:a(()=>[(i(!0),_(f,null,g(U.value,t=>(i(),m(r,{key:t.id,label:t.title,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"分类"},{default:a(()=>[o(p,{modelValue:e.category_id,"onUpdate:modelValue":l[5]||(l[5]=t=>e.category_id=t),style:{width:"100%"},placeholder:"请选择题目分类"},{default:a(()=>[(i(!0),_(f,null,g(C.value,t=>(i(),m(r,{key:t.id,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"标签"},{default:a(()=>[o(p,{modelValue:e.tags,"onUpdate:modelValue":l[6]||(l[6]=t=>e.tags=t),style:{width:"100%"},multiple:"",filterable:"",placeholder:"请选择标签"},{default:a(()=>[(i(!0),_(f,null,g(F.value,t=>(i(),m(r,{key:t.id,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"建议时长(秒)"},{default:a(()=>[o(b,{modelValue:e.recommended_duration,"onUpdate:modelValue":l[7]||(l[7]=t=>e.recommended_duration=t),min:10,max:600,step:10,style:{width:"100%"}},null,8,["modelValue"])]),_:1}),o(s,{label:"状态",prop:"status"},{default:a(()=>[o(p,{modelValue:e.status,"onUpdate:modelValue":l[8]||(l[8]=t=>e.status=t),placeholder:"请选择状态",style:{width:"100%"}},{default:a(()=>[o(r,{label:"停用",value:0}),o(r,{label:"启用",value:1})]),_:1},8,["modelValue"])]),_:1}),e.question_form===1||e.question_form===2?(i(),m(s,{key:2,label:"红线问题"},{default:a(()=>[o(p,{modelValue:e.is_required_correct,"onUpdate:modelValue":l[9]||(l[9]=t=>e.is_required_correct=t),placeholder:"请选择是否为红线问题",style:{width:"100%"}},{default:a(()=>[o(r,{label:"否",value:!1}),o(r,{label:"是",value:!0})]),_:1},8,["modelValue"])]),_:1})):V("",!0),o(s,{label:"系统题目"},{default:a(()=>[o(p,{modelValue:e.is_system,"onUpdate:modelValue":l[10]||(l[10]=t=>e.is_system=t),placeholder:"请选择是否为系统题目",style:{width:"100%"}},{default:a(()=>[o(r,{label:"否",value:!1}),o(r,{label:"是",value:!0})]),_:1},8,["modelValue"])]),_:1}),o(s,{label:"排序"},{default:a(()=>[o(b,{modelValue:e.sort,"onUpdate:modelValue":l[11]||(l[11]=t=>e.sort=t),style:{width:"100%"},min:1,max:999},null,8,["modelValue"])]),_:1}),[1,2,4].includes(e.question_form)?(i(),m(s,{key:3,label:"选项列表"},{default:a(()=>[o(ee,{modelValue:e.options,"onUpdate:modelValue":l[12]||(l[12]=t=>e.options=t),"question-form":e.question_form},null,8,["modelValue","question-form"])]),_:1})):V("",!0),o(s,{label:"评分标准"},{default:a(()=>[o(u,{modelValue:e.scoring_reference,"onUpdate:modelValue":l[13]||(l[13]=t=>e.scoring_reference=t),style:{width:"100%"},type:"textarea",rows:4,placeholder:"请输入评分标准说明"},null,8,["modelValue"])]),_:1}),o(s,null,{default:a(()=>[o(B,{type:"primary",onClick:R},{default:a(()=>l[15]||(l[15]=[L("确定")])),_:1}),o(B,{onClick:D},{default:a(()=>l[16]||(l[16]=[L("取消")])),_:1})]),_:1})]),_:1},8,["model"])])}}}),pe=le(ne,[["__scopeId","data-v-159d434a"]]);export{pe as default};