QuestionBankForm._l689ak6.js 8.7 KB

1
  1. import{a as K,r as c,_ as Y,w as G,q as z,aj as d,c as _,o as r,S as o,K as a,J as m,M as V,R as f,a9 as g,b as L,P as E,Y as H}from"./vue.D1BjjNmv.js";import{G as W,a as X,b as Z,c as $,d as ee}from"./api.CEHHROJx.js";import te from"./QuestionOptionsEditor.CfqO4x61.js";import le from"./BlankAnswerEditor.C4I2efc6.js";import{S as v}from"./index.Bx06hV4z.js";import{_ as oe}from"./_plugin-vue_export-helper.DlAUqK2U.js";const ae={class:"question-bank-form"},ne={style:{display:"flex","align-items":"center"}},se=K({__name:"QuestionBankForm",props:{modelValue:{default:()=>({})},isEdit:{type:Boolean,default:!1}},emits:["update:modelValue","submit","cancel"],setup(Q,{expose:S,emit:T}){const h=Q,w=T,y=c(),e=Y({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:[],...h.modelValue}),N={question:[{required:!0,message:"题目内容必填",trigger:"blur"}],question_form:[{required:!0,message:"题目形式必填",trigger:"change"}],status:[{required:!0,message:"状态必填",trigger:"change"}]},U=c([]),q=c([]),C=c([]),F=c([]),R=c([]);G(()=>e,n=>{w("update:modelValue",n)},{deep:!0}),G(()=>h.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=[]},j=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=q.value.find(i=>i.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))},D=async()=>{try{const n=await W();U.value=n.data.question_forms||[];const l=await X({page:1,limit:100,tenant_id:v.get("tenant_id")});q.value=l.data.items||[];const u=await Z({page:1,limit:50,tenant_id:v.get("tenant_id")});C.value=u.data||[];const s=await $({page:1,limit:50,tenant_id:v.get("tenant_id")});F.value=s.data.items||[];const i=await ee({page:1,limit:50,tenant_id:v.get("tenant_id")});R.value=i.data.items||[]}catch(n){console.error("获取选项数据失败:",n)}},B=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=[],w("submit",e)}catch(l){console.error("表单验证失败:",l)}},P=()=>{w("cancel")};return z(()=>{D()}),S({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"),i=d("el-option"),p=d("el-select"),k=d("el-table-column"),b=d("el-input-number"),A=d("el-table"),I=d("el-card"),O=d("el-button"),J=d("el-form");return r(),_("div",ae,[o(J,{ref_key:"formRef",ref:y,model:e,rules:N,"label-width":"120px",onSubmit:H(B,["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(()=>[(r(!0),_(f,null,g(U.value,t=>(r(),m(i,{key:t.value,label:t.label,value:t.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),e.question_form===6?(r(),m(s,{key:0,label:"填空答案模板"},{default:a(()=>[o(le,{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:j},{default:a(()=>[(r(!0),_(f,null,g(q.value,t=>(r(),m(i,{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?(r(),m(s,{key:1,label:"胜任力配置"},{default:a(()=>[o(I,null,{default:a(()=>[o(A,{data:e.competency_tags_config,border:""},{default:a(()=>[o(k,{label:"标签",prop:"competency_name",width:"200"}),o(k,{label:"权重",width:"150"},{default:a(({row:t})=>[L("div",ne,[o(b,{modelValue:t.weight,"onUpdate:modelValue":x=>t.weight=x,min:0,max:100,step:1,precision:0,controls:!1,style:{width:"calc(100% - 20px)"}},null,8,["modelValue","onUpdate:modelValue"]),l[14]||(l[14]=L("span",{style:{"margin-left":"4px"}},"%",-1))])]),_:1}),o(k,{label:"级别",width:"100"},{default:a(({row:t})=>[o(b,{modelValue:t.importance,"onUpdate:modelValue":x=>t.importance=x,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(()=>[(r(!0),_(f,null,g(C.value,t=>(r(),m(i,{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(()=>[(r(!0),_(f,null,g(F.value,t=>(r(),m(i,{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(()=>[(r(!0),_(f,null,g(R.value,t=>(r(),m(i,{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(i,{label:"停用",value:0}),o(i,{label:"启用",value:1})]),_:1},8,["modelValue"])]),_:1}),e.question_form===1||e.question_form===2?(r(),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(i,{label:"否",value:!1}),o(i,{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(i,{label:"否",value:!1}),o(i,{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)?(r(),m(s,{key:3,label:"选项列表"},{default:a(()=>[o(te,{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(O,{type:"primary",onClick:B},{default:a(()=>l[15]||(l[15]=[E("确定")])),_:1}),o(O,{onClick:P},{default:a(()=>l[16]||(l[16]=[E("取消")])),_:1})]),_:1})]),_:1},8,["model"])])}}}),ce=oe(se,[["__scopeId","data-v-d286af25"]]);export{ce as default};