@qxs-bns/components 0.0.28 → 0.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/package.json.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
- package/lib/package.json.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
- package/package.json +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
package/es/package.json.mjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var r="0.0.
|
1
|
+
var r="0.0.29";export{r as version};
|
2
2
|
//# sourceMappingURL=package.json.mjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{ElPopover as e,ElLink as
|
1
|
+
import{ElPopover as e,ElLink as l,ElCheckbox as a,ElButton as t,ElIcon as n,ElDialog as o,ElRadioGroup as i,ElRadio as u}from"element-plus/es";import{defineComponent as s,createElementBlock as d,openBlock as c,normalizeClass as r,unref as m,createElementVNode as p,createCommentVNode as f,createVNode as v,createBlock as y,withCtx as b,createTextVNode as k,isRef as _,Fragment as h,renderList as g,toDisplayString as w}from"vue";import{Edit as C,Delete as x,Top as V,Bottom as j}from"@element-plus/icons-vue";import{useNamespace as O}from"@qxs-bns/hooks";import S from"../../subject-type/src/subject-type.vue.mjs";import{ref as E,computed as T}from"vue-demi";const U={key:0,class:"flex-justify-between"},A={key:0,class:"has-set"},B={key:1,class:"flex flex-justify-end",style:{width:"100%"}};var K=s({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit:{type:Boolean},isSet:{type:Boolean,default:!1},isKey:{type:Boolean,default:!1},answerCheckType:{type:Number,default:1},showOtherOption:{type:Boolean,default:!0},examAnswerRelationType:{type:Number,default:null},pageEnd:{type:Boolean,default:!1}},emits:["moveUp","moveDown","delete","save","edit","add","onShowRichText","setKey","setAnswerSetting"],setup(s,{emit:K}){const R=s,z=E(R.isKey),D=E(!1),N=K,q=E(R.answerCheckType),Q=O("subject-action"),F=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],G=T((()=>F.find((e=>e.value===q.value))?.label));function H(){D.value=!1,N("setAnswerSetting",q.value)}function I(e,l){N("add",e,l?R.examAnswerRelationType:null)}return(O,E)=>{const T=l,K=e,R=a,J=n,L=t,M=u,P=i,W=o;return c(),d("div",{class:r(m(Q).e("action-exam"))},[p("div",{class:r(["action flex",[{active:s.isEdit}]])},[s.isEdit?(c(),d("div",U,[v(K,{trigger:"click"},{reference:b((()=>[v(T,{type:"primary",class:"btn-margin"},{default:b((()=>E[14]||(E[14]=[k(" +在此题后加入新题 ")]))),_:1})])),default:b((()=>[v(S,{onSelect:I})])),_:1}),s.showOtherOption?(c(),y(T,{key:0,type:"primary",onClick:E[0]||(E[0]=e=>N("onShowRichText")),class:"btn-margin"},{default:b((()=>E[15]||(E[15]=[k(" +添加题目描述(图文) ")]))),_:1})):f("v-if",!0),s.showOtherOption?(c(),y(T,{key:1,type:"primary",onClick:E[1]||(E[1]=e=>D.value=!0),class:"btn-margin"},{default:b((()=>E[16]||(E[16]=[k(" 答题设置 ")]))),_:1})):f("v-if",!0),s.showOtherOption?(c(),y(R,{key:2,modelValue:m(z),"onUpdate:modelValue":E[2]||(E[2]=e=>_(z)?z.value=e:null),label:"核心题",onChange:E[3]||(E[3]=e=>N("setKey",m(z)))},null,8,["modelValue"])):f("v-if",!0)])):f("v-if",!0),p("div",null,[s.isSet?(c(),d("div",A," *此题设置了跳题逻辑 ")):(c(),d("div",B,[s.isEdit?(c(),d(h,{key:1},[v(L,{class:"btn-margin",onClick:E[9]||(E[9]=e=>N("delete"))},{default:b((()=>E[21]||(E[21]=[k(" 删除 ")]))),_:1}),v(L,{type:"primary",onClick:E[10]||(E[10]=e=>N("save"))},{default:b((()=>E[22]||(E[22]=[k(" 完成编辑 ")]))),_:1})],64)):(c(),d(h,{key:0},[v(R,{modelValue:m(z),"onUpdate:modelValue":E[4]||(E[4]=e=>_(z)?z.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"]),v(R,{"v-model":!0,label:m(G),disabled:""},null,8,["label"]),s.pageEnd?f("v-if",!0):(c(),y(L,{key:0,class:"btn-margin",onClick:E[5]||(E[5]=e=>N("edit"))},{icon:b((()=>[v(J,null,{default:b((()=>[v(m(C))])),_:1})])),default:b((()=>[E[17]||(E[17]=k(" 编辑 "))])),_:1})),v(L,{class:"btn-margin",onClick:E[6]||(E[6]=e=>N("delete"))},{icon:b((()=>[v(J,null,{default:b((()=>[v(m(x))])),_:1})])),default:b((()=>[E[18]||(E[18]=k(" 删除 "))])),_:1}),v(L,{class:"btn-margin",onClick:E[7]||(E[7]=e=>N("moveUp"))},{icon:b((()=>[v(J,null,{default:b((()=>[v(m(V))])),_:1})])),default:b((()=>[E[19]||(E[19]=k(" 上移 "))])),_:1}),v(L,{class:"btn-margin",onClick:E[8]||(E[8]=e=>N("moveDown"))},{icon:b((()=>[v(J,null,{default:b((()=>[v(m(j))])),_:1})])),default:b((()=>[E[20]||(E[20]=k(" 下移 "))])),_:1})],64))]))]),v(W,{modelValue:m(D),"onUpdate:modelValue":E[13]||(E[13]=e=>_(D)?D.value=e:null),title:"答题设置",class:"customize-dialog"},{footer:b((()=>[v(L,{class:"customize-button",type:"primary",plain:"",onClick:E[12]||(E[12]=e=>D.value=!1)},{default:b((()=>E[23]||(E[23]=[k(" 取消 ")]))),_:1}),v(L,{class:"customize-button",type:"primary",plain:"",onClick:H},{default:b((()=>E[24]||(E[24]=[k(" 保存 ")]))),_:1})])),default:b((()=>[(c(),d(h,null,g(F,(e=>v(P,{modelValue:m(q),"onUpdate:modelValue":E[11]||(E[11]=e=>_(q)?q.value=e:null),class:"vertical-radio-group"},{default:b((()=>[v(M,{value:e.value},{default:b((()=>[k(w(e.label),1)])),_:2},1032,["value"])])),_:2},1032,["modelValue"]))),64))])),_:1},8,["modelValue"])],2)],2)}}});export{K as default};
|
2
2
|
//# sourceMappingURL=subject-action.vue.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-action.vue.mjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bottom, Delete, Edit, Top } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectType from '../../subject-type/src/subject-type.vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\nconst props = defineProps({\n isEdit: {\n type: Boolean,\n },\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null\n },\n pageEnd: {\n type: Boolean,\n default: false\n }\n})\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst emits = defineEmits(['moveUp', 'moveDown', 'delete', 'save', 'edit', 'add', 'onShowRichText', 'setKey', 'setAnswerSetting'])\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType)\n}\n\nfunction selectExam(type:string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div class=\"action flex\" :class=\"[{ active: isEdit }]\">\n <div v-if=\"isEdit\" class=\"flex-justify-between\">\n <el-popover trigger=\"click\">\n <template #reference>\n <el-link type=\"primary\" class=\"btn-margin\">\n +在此题后加入新题\n </el-link>\n </template>\n <SubjectType @select=\"selectExam\" />\n </el-popover>\n <el-link type=\"primary\" @click=\"emits('onShowRichText')\" v-if=\"showOtherOption\" class=\"btn-margin\">\n +添加题目描述(图文)\n </el-link>\n <el-link type=\"primary\" @click=\"showAnswerSetting = true\" v-if=\"showOtherOption\" class=\"btn-margin\">\n 答题设置\n </el-link>\n <el-checkbox v-model=\"isKey\" label=\"核心题\" @change=\"emits('setKey', isKey)\" v-if=\"showOtherOption\" />\n </div>\n <div>\n <div v-if=\"isSet\" class=\"has-set\">\n *此题设置了跳题逻辑\n </div>\n <div v-else class=\"flex flex-justify-end\" style=\"width: 100%;\">\n <template v-if=\"!isEdit\">\n <el-button class=\"btn-margin\" @click=\"emits('edit')\" v-if=\"!pageEnd\">\n <template #icon>\n <el-icon>\n <Edit />\n </el-icon>\n </template>\n 编辑\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n <template #icon>\n <el-icon>\n <Delete />\n </el-icon>\n </template>\n 删除\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveUp')\">\n <template #icon>\n <el-icon>\n <Top />\n </el-icon>\n </template>\n 上移\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveDown')\">\n <template #icon>\n <el-icon>\n <Bottom />\n </el-icon>\n </template>\n 下移\n </el-button>\n </template>\n <template v-else>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n 删除\n </el-button>\n <el-button type=\"primary\" @click=\"emits('save')\">\n 完成编辑\n </el-button>\n </template>\n </div>\n </div>\n <el-dialog\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n >\n <el-radio-group v-model=\"answerType\" class=\"vertical-radio-group\"
|
1
|
+
{"version":3,"file":"subject-action.vue.mjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bottom, Delete, Edit, Top } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectType from '../../subject-type/src/subject-type.vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\nconst props = defineProps({\n isEdit: {\n type: Boolean,\n },\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null\n },\n pageEnd: {\n type: Boolean,\n default: false\n }\n})\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst emits = defineEmits(['moveUp', 'moveDown', 'delete', 'save', 'edit', 'add', 'onShowRichText', 'setKey', 'setAnswerSetting'])\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步'\n },\n {\n value: 1,\n label: '无需判断是否是支持选项'\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步'\n }\n]\nconst answerText = computed(() => {\n return answerTextList.find(item => item.value === answerType.value)?.label\n})\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType.value)\n}\n\nfunction selectExam(type:string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div class=\"action flex\" :class=\"[{ active: isEdit }]\">\n <div v-if=\"isEdit\" class=\"flex-justify-between\">\n <el-popover trigger=\"click\">\n <template #reference>\n <el-link type=\"primary\" class=\"btn-margin\">\n +在此题后加入新题\n </el-link>\n </template>\n <SubjectType @select=\"selectExam\" />\n </el-popover>\n <el-link type=\"primary\" @click=\"emits('onShowRichText')\" v-if=\"showOtherOption\" class=\"btn-margin\">\n +添加题目描述(图文)\n </el-link>\n <el-link type=\"primary\" @click=\"showAnswerSetting = true\" v-if=\"showOtherOption\" class=\"btn-margin\">\n 答题设置\n </el-link>\n <el-checkbox v-model=\"isKey\" label=\"核心题\" @change=\"emits('setKey', isKey)\" v-if=\"showOtherOption\" />\n </div>\n <div>\n <div v-if=\"isSet\" class=\"has-set\">\n *此题设置了跳题逻辑\n </div>\n <div v-else class=\"flex flex-justify-end\" style=\"width: 100%;\">\n <template v-if=\"!isEdit\">\n <el-checkbox v-model=\"isKey\" label=\"核心题\" disabled />\n <el-checkbox :v-model=\"true\" :label=\"answerText\" disabled />\n <el-button class=\"btn-margin\" @click=\"emits('edit')\" v-if=\"!pageEnd\">\n <template #icon>\n <el-icon>\n <Edit />\n </el-icon>\n </template>\n 编辑\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n <template #icon>\n <el-icon>\n <Delete />\n </el-icon>\n </template>\n 删除\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveUp')\">\n <template #icon>\n <el-icon>\n <Top />\n </el-icon>\n </template>\n 上移\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveDown')\">\n <template #icon>\n <el-icon>\n <Bottom />\n </el-icon>\n </template>\n 下移\n </el-button>\n </template>\n <template v-else>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n 删除\n </el-button>\n <el-button type=\"primary\" @click=\"emits('save')\">\n 完成编辑\n </el-button>\n </template>\n </div>\n </div>\n <el-dialog\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n >\n <el-radio-group v-model=\"answerType\" class=\"vertical-radio-group\" v-for=\"item in answerTextList\">\n <el-radio :value=\"item.value\">{{ item.label }}</el-radio>\n </el-radio-group>\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"showAnswerSetting = false\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveSetting\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n"],"names":["props","__props","isKey","ref","showAnswerSetting","emits","__emit","answerType","answerCheckType","ns","useNamespace","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","selectExam","type","canSet","examAnswerRelationType"],"mappings":"4sCAQA,MAAMA,EAAQC,EA6BRC,EAAQC,EAAIH,EAAME,OAClBE,EAAoBD,GAAI,GACxBE,EAAQC,EACRC,EAAaJ,EAAIH,EAAMQ,iBACvBC,EAAKC,EAAa,kBAClBC,EAAiB,CACrB,CACEC,MAAO,EACPC,MAAO,oBAET,CACED,MAAO,EACPC,MAAO,eAET,CACED,MAAO,EACPC,MAAO,mBAGLC,EAAaC,GAAS,IACnBJ,EAAeK,MAAKC,GAAQA,EAAKL,QAAUL,EAAWK,SAAQC,QAEvE,SAASK,IACPd,EAAkBQ,OAAQ,EACpBP,EAAA,mBAAoBE,EAAWK,MAAK,CAGnC,SAAAO,EAAWC,EAAaC,GAChChB,EAAM,MAAOe,EAAMC,EAAQrB,EAAMsB,uBAAwB,KAAI"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{ElCheckbox as e,ElRadio as l,ElInput as t,ElSelect as a,ElOption as i,ElIcon as s,ElLink as n,ElDialog as r,ElButton as o,ElMessage as u}from"element-plus/es";import{defineComponent as d,createElementBlock as m,openBlock as p,normalizeClass as c,unref as v,createVNode as y,createSlots as f,withCtx as x,createBlock as w,createCommentVNode as h,createElementVNode as C,createTextVNode as g,toDisplayString as b,Fragment as k,renderList as S,isRef as A,mergeProps as T}from"vue";import{CirclePlus as V,Remove as R}from"@element-plus/icons-vue";import{useNamespace as q}from"@qxs-bns/hooks";import j from"../../../subject-action/src/subject-action.vue.mjs";import I from"../../../subject-layout/src/subject-layout.vue.mjs";import _ from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{setGuid as E}from"@qxs-bns/utils";import{useAttrs as U,ref as B,computed as L,watch as $,onMounted as K}from"vue-demi";const N={class:"preview"},z={class:"title"},M={key:0},D={key:1},H={key:0},O=["innerHTML"],Q={class:"preview-answer"},F={class:"order"},G={class:"order"},J={style:{flex:"1"}},P={class:"margin-bottom flex flex-items-center"},W={class:"margin-bottom answer-list"},X={class:"order"},Y={key:0,class:"margin-bottom flex flex-items-center"},Z={style:{flex:"1"}},ee={key:1,class:"flex"},le={style:{flex:"1"}},te={key:2,class:"margin-bottom flex"},ae={style:{flex:"1"}},ie={class:"flex flex-justify-end"};var se=d({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:Number,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(d,{emit:se}){const ne=d,re=se,oe=U(),ue=B(0),de=B(ne.isKey),me=B(ne.answerCheckType),pe=B([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ce=B(),ve=B(""),ye=B(""),fe=B(!1),xe=B(""),we=B(0),he=B(!1),Ce=B(""),ge=L((()=>"single"===ne.type?"单选题":"multiple"===ne.type?"多选题":"排序题")),be=B([]),ke=L((()=>{const e=[];for(let l=pe.value.length;l>1;l--)e.push({label:`至少选择${l}项`,value:l});return e.reverse()}));function Se(){ne.isSave||pe.value.push({title:"",isCorrect:!1,customAnswerId:E()})}function Ae(){fe.value=!1,xe.value=""}function Te(){if(!ve.value)return void u.error("题目标题不能为空!");let e="",l=!1,t=null,a=0;if("multiple"===ne.type||"single"===ne.type?pe.value.forEach(((i,s)=>{i.title||(e+=`选项${String.fromCharCode(65+s)}未填写。`),i.isCorrect&&(l=!0,a++),i.resultItem&&(t=1),i.answerRelations?.length&&(t=2)})):"sort"===ne.type&&be.value.length&&(l=!0),e)return void u.error(e);if(new Set(pe.value.map((e=>e.title))).size===pe.value.length){if("multiple"===ne.type){if(1===a)return void u.error("请至少设置两个正确答案");if(l&&a<ce.value)return void u.error("至少选几项与正确答案数不符")}re("save",{title:ve.value,answers:pe.value.map(((e,l)=>({...e,orderIndex:l+1}))),examExpand:be.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:ye.value,isSetCorrectAnswer:l,leastAnswerCount:ce.value,examRichTextContent:fe.value?xe.value:"",examAnswerRelationType:t,isKey:de.value,answerCheckType:me.value})}else u.error("选项不能重复")}function Ve(){he.value=!1,Ce.value=""}function Re(){he.value=!1}function qe(e){de.value=e}function je(e){me.value=e}function Ie(e,l){re("add",e,l?ne.examAnswerRelationType:null)}$((()=>ne.isEdit),(()=>{ne.isEdit&&(we.value=(new Date).getTime())}));const _e=q("subject-single");return K((function(){if(ne.title&&(ve.value=ne.title),ne.answerCheckType&&(me.value=ne.answerCheckType),ne.answerList&&ne.answerList.length&&(pe.value=ne.answerList.map((e=>({...e,customAnswerId:e.examAnswerId||E()})))),ne.leastAnswerCount&&(ce.value=ne.leastAnswerCount),ne.examExpand&&ne.examExpand){const e=ne.examExpand.split(",");be.value=e.map((e=>{const l=ne.answerList.find((l=>l.answerId?.toString()===e));return l?String.fromCharCode(65+l.orderIndex-1):e})).filter(Boolean)}ne.analysis&&(ye.value=ne.analysis),ne.examRichTextContent&&(xe.value=ne.examRichTextContent,fe.value=!0)})),(u,d)=>{const q=e,E=l,U=t,B=i,L=a,$=s,K=n,se=o,we=r;return p(),m("div",{class:c(v(_e).e("single-exam"))},[y(I,{"show-edit":u.isEdit},f({preview:x((()=>[C("div",N,[C("div",null,[C("span",z,[g(b(u.orderIndex+1)+"."+b(v(ve))+" ",1),"single"===u.type?(p(),m("span",M,"(单选题)")):["multiple","sort"].includes(u.type)?(p(),m("span",D," ("+b(v(ge))+b(v(ce)?`至少选${v(ce)}项${"sort"===u.type?"并排序":""}`:"")+") ",1)):h("v-if",!0)])]),v(fe)?(p(),m("div",H,[C("div",{innerHTML:v(xe)},null,8,O)])):h("v-if",!0),C("div",Q,["sort"===u.type?(p(!0),m(k,{key:0},S(v(pe),((e,l)=>(p(),w(q,{key:l,class:"radio",disabled:!0},{default:x((()=>[C("span",F,b(String.fromCharCode(65+l))+". ",1),g(" "+b(e.title),1)])),_:2},1024)))),128)):(p(!0),m(k,{key:1},S(v(pe),((e,l)=>(p(),w(E,{key:l,class:"radio",value:"disabled",disabled:""},{default:x((()=>[C("span",G,b(String.fromCharCode(65+l))+". ",1),g(" "+b(e.title)+" "+b(e.isCorrect?"(支持选项)":"")+" "+b(1===u.examAnswerRelationType?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+b(2===u.examAnswerRelationType?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:x((()=>[u.showAction?(p(),w(j,{key:0,"is-edit":u.isEdit,"is-set":u.isSet,isKey:v(de),examAnswerRelationType:ne.examAnswerRelationType,answerCheckType:v(me),onMoveUp:d[5]||(d[5]=e=>re("move","up")),onMoveDown:d[6]||(d[6]=e=>re("move","down")),onDelete:d[7]||(d[7]=e=>re("delete")),onSave:Te,onEdit:d[8]||(d[8]=e=>re("edit")),onAdd:Ie,onOnShowRichText:d[9]||(d[9]=e=>fe.value=!0),onSetKey:qe,onSetAnswerSetting:je},null,8,["is-edit","is-set","isKey","examAnswerRelationType","answerCheckType"])):h("v-if",!0)])),_:2},[u.isEdit?{name:"edit",fn:x((()=>[C("div",{class:c(["flex",[{"margin-bottom":v(fe)}]])},[d[12]||(d[12]=C("div",{class:"label flex flex-justify-center"},[C("span",null,"题目:")],-1)),C("div",J,[y(U,{modelValue:v(ve),"onUpdate:modelValue":d[0]||(d[0]=e=>A(ve)?ve.value=e:null),type:"textarea",rows:2,placeholder:`【${v(ge)}】请输入问题`,disabled:u.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),C("div",P,[d[13]||(d[13]=C("div",{class:"label flex flex-justify-center"},[C("span",null,"设置:")],-1)),["multiple","sort"].includes(u.type)?(p(),w(L,{key:0,modelValue:v(ce),"onUpdate:modelValue":d[1]||(d[1]=e=>A(ce)?ce.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:u.isSave},{default:x((()=>[(p(!0),m(k,null,S(v(ke),(e=>(p(),w(B,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):h("v-if",!0)]),C("div",W,[(p(!0),m(k,null,S(v(pe),((e,l)=>(p(),m("div",{key:l,class:"answer-item flex flex-items-center"},[C("span",X,b(String.fromCharCode(65+l))+".",1),y(U,{modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+l)}`,disabled:u.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(u.type)?(p(),w(q,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":l=>e.isCorrect=l,class:c([{"is-correct":e.isCorrect}]),disabled:u.isSave,style:{"margin-left":"10px"},onChange:l=>function(e,l){"single"===ne.type?(l&&pe.value.forEach((l=>{l!==e&&(l.isCorrect=!1)})),e.isCorrect=l):"multiple"===ne.type&&(e.isCorrect=l)}(e,l)},{default:x((()=>[...d[14]||(d[14]=[g(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):h("v-if",!0),y($,{class:"icon"},{default:x((()=>[y(v(V),{class:c([{disabled:u.isSave}]),onClick:Se},null,8,["class"])])),_:1}),y($,{class:"icon"},{default:x((()=>[y(v(R),{class:c([{disabled:v(pe).length<3||u.isSave}]),onClick:e=>function(e){pe.value.length<3||ne.isSave||pe.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024),1===u.examAnswerRelationType?(p(),w(K,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=l,ue.value=t,void(he.value=!0);var t}},{default:x((()=>[C("span",null,b(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):h("v-if",!0),2===u.examAnswerRelationType?(p(),w(K,{key:2,type:"primary",class:"margin-left-10",onClick:l=>function(e){re("setRelation",ne.examId,ne.customId,e)}(e)},{default:x((()=>[C("span",null,b(e.answerRelations?.length?`关联了${e.answerRelations?.length}项`:"关联检查"),1)])),_:2},1032,["onClick"])):h("v-if",!0)])))),128))]),"sort"===u.type?(p(),m("div",Y,[d[15]||(d[15]=C("div",{class:"label flex flex-justify-end"},[C("span",null,"排序答案:")],-1)),C("div",Z,[y(L,{modelValue:v(be),"onUpdate:modelValue":d[2]||(d[2]=e=>A(be)?be.value=e:null),mode:"multiple",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:x((()=>[h(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(p(!0),m(k,null,S(v(pe),((e,l)=>(p(),w(B,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):h("v-if",!0),u.showAnalysis?(p(),m("div",ee,[d[16]||(d[16]=C("div",{class:"label flex flex-justify-center"},[C("span",null,"解析:")],-1)),C("div",le,[y(U,{modelValue:v(ye),"onUpdate:modelValue":d[3]||(d[3]=e=>A(ye)?ye.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):h("v-if",!0),v(fe)?(p(),m("div",te,[d[18]||(d[18]=C("div",{class:"label flex flex-justify-center"},[C("span",null,"富文本:")],-1)),C("div",ae,[y(_,T({"model-value":v(xe),"onUpdate:modelValue":d[4]||(d[4]=e=>A(xe)?xe.value=e:null)},v(oe),{style:{width:"100%"}}),null,16,["model-value"]),C("div",ie,[y(K,{type:"danger",onClick:Ae},{default:x((()=>d[17]||(d[17]=[g(" 删除富文本 ")]))),_:1})])])])):h("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),y(we,{modelValue:v(he),"onUpdate:modelValue":d[11]||(d[11]=e=>A(he)?he.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:x((()=>[y(se,{class:"customize-button",type:"primary",plain:"",onClick:Ve},{default:x((()=>d[19]||(d[19]=[g(" 取消 ")]))),_:1}),y(se,{class:"customize-button",type:"primary",plain:"",onClick:Re},{default:x((()=>d[20]||(d[20]=[g(" 保存 ")]))),_:1})])),default:x((()=>[(p(),w(_,T({key:v(ue),"model-value":v(pe)[v(ue)].resultItem,"onUpdate:modelValue":d[10]||(d[10]=e=>v(pe)[v(ue)].resultItem=e)},v(oe),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});export{se as default};
|
1
|
+
import{ElCheckbox as e,ElRadio as l,ElInput as t,ElSelect as a,ElOption as i,ElIcon as s,ElLink as n,ElDialog as r,ElButton as o}from"element-plus/es";import{defineComponent as u,createElementBlock as d,openBlock as m,normalizeClass as c,unref as p,createVNode as v,createSlots as y,withCtx as f,createBlock as x,createCommentVNode as w,createElementVNode as h,createTextVNode as C,toDisplayString as g,Fragment as b,renderList as k,isRef as S,mergeProps as A}from"vue";import{CirclePlus as V,Remove as T}from"@element-plus/icons-vue";import{useNamespace as q}from"@qxs-bns/hooks";import R from"../../../subject-action/src/subject-action.vue.mjs";import j from"../../../subject-layout/src/subject-layout.vue.mjs";import _ from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{setGuid as E}from"@qxs-bns/utils";import{ElMessage as I}from"element-plus";import{useAttrs as U,ref as B,computed as K,watch as L,onMounted as $}from"vue-demi";const N={class:"preview"},z={class:"title"},M={key:0},D={key:1},H={key:0},O=["innerHTML"],Q={class:"preview-answer"},F={class:"order"},G={class:"order"},J={style:{flex:"1"}},P={class:"margin-bottom flex flex-items-center"},W={class:"margin-bottom answer-list"},X={class:"order"},Y={key:0,class:"margin-bottom flex flex-items-center"},Z={style:{flex:"1"}},ee={key:1,class:"flex"},le={style:{flex:"1"}},te={key:2,class:"margin-bottom flex"},ae={style:{flex:"1"}},ie={class:"flex flex-justify-end"};var se=u({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:Number,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(u,{emit:se}){const ne=u,re=se,oe=U(),ue=B(0),de=B(!1),me=B(1),ce=B(1),pe=B([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ve=B(),ye=B(""),fe=B(""),xe=B(!1),we=B(""),he=B(0),Ce=B(!1),ge=B(""),be=K((()=>"single"===ne.type?"单选题":"multiple"===ne.type?"多选题":"排序题")),ke=B([]),Se=K((()=>{const e=[];for(let l=pe.value.length;l>1;l--)e.push({label:`至少选择${l}项`,value:l});return e.reverse()}));function Ae(){ne.isSave||pe.value.push({title:"",isCorrect:!1,customAnswerId:E()})}function Ve(){xe.value=!1,we.value=""}function Te(){if(!ye.value)return void I.error("题目标题不能为空!");let e="",l=!1,t=0;if("multiple"===ne.type||"single"===ne.type?pe.value.forEach(((a,i)=>{a.title||(e+=`选项${String.fromCharCode(65+i)}未填写。`),a.isCorrect&&(l=!0,t++)})):"sort"===ne.type&&ke.value.length&&(l=!0),e)return void I.error(e);if(new Set(pe.value.map((e=>e.title))).size===pe.value.length){if("multiple"===ne.type){if(1===t)return void I.error("请至少设置两个支持选项");if(l&&t<ve.value)return void I.error("至少选几项与支持选项数不符")}console.log(me.value,111),2!==me.value&&3!==me.value||l?re("save",{title:ye.value,answers:pe.value.map(((e,l)=>({...e,orderIndex:l+1}))),examExpand:ke.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:fe.value,isSetCorrectAnswer:l,leastAnswerCount:ve.value,examRichTextContent:xe.value?we.value:"",examAnswerRelationType:ce.value,isKey:de.value,answerCheckType:me.value}):I.error("请设置支持选项")}else I.error("选项不能重复")}function qe(){pe.value[ue.value].resultItem=ge.value||"",Ce.value=!1}function Re(){Ce.value=!1,ge.value=""}function je(e){de.value=e}function _e(e){me.value=e}function Ee(e,l){re("add",e,l?ne.examAnswerRelationType:null)}L((()=>ne.isEdit),(()=>{ne.isEdit&&(he.value=(new Date).getTime())}));const Ie=K((()=>e=>{let l=0;return e.forEach((e=>{e.relationAnswers&&(l+=e.relationAnswers.length)})),l})),Ue=q("subject-single");return $((function(){if(ne.title&&(ye.value=ne.title),ne.answerCheckType&&(me.value=ne.answerCheckType),ne.isKey&&(de.value=ne.isKey),ne.examAnswerRelationType&&(ce.value=ne.examAnswerRelationType),ne.answerList&&ne.answerList.length&&(pe.value=ne.answerList),ne.leastAnswerCount&&(ve.value=ne.leastAnswerCount),ne.examExpand&&ne.examExpand){const e=ne.examExpand.split(",");ke.value=e.map((e=>{const l=ne.answerList.find((l=>l.answerId?.toString()===e));return l?String.fromCharCode(65+l.orderIndex-1):e})).filter(Boolean)}ne.analysis&&(fe.value=ne.analysis),ne.examRichTextContent&&(we.value=ne.examRichTextContent,xe.value=!0)})),(u,q)=>{const I=e,U=l,B=t,K=i,L=a,$=s,se=n,he=o,Be=r;return m(),d("div",{class:c(p(Ue).e("single-exam"))},[v(j,{"show-edit":u.isEdit},y({preview:f((()=>[h("div",N,[h("div",null,[h("span",z,[C(g(u.orderIndex+1)+"."+g(p(ye))+" ",1),"single"===u.type?(m(),d("span",M,"(单选题)")):["multiple","sort"].includes(u.type)?(m(),d("span",D," ("+g(p(be))+g(p(ve)?`至少选${p(ve)}项${"sort"===u.type?"并排序":""}`:"")+") ",1)):w("v-if",!0)])]),p(xe)?(m(),d("div",H,[h("div",{innerHTML:p(we)},null,8,O)])):w("v-if",!0),h("div",Q,["sort"===u.type?(m(!0),d(b,{key:0},k(p(pe),((e,l)=>(m(),x(I,{key:l,class:"radio",disabled:!0},{default:f((()=>[h("span",F,g(String.fromCharCode(65+l))+". ",1),C(" "+g(e.title),1)])),_:2},1024)))),128)):(m(!0),d(b,{key:1},k(p(pe),((e,l)=>(m(),x(U,{key:l,class:"radio",value:"disabled",disabled:""},{default:f((()=>[h("span",G,g(String.fromCharCode(65+l))+". ",1),C(" "+g(e.title)+" "+g(e.isCorrect?"(支持选项)":"")+" "+g(1===p(ce)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+g(2===p(ce)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:f((()=>[u.showAction?(m(),x(R,{key:0,"is-edit":u.isEdit,"is-set":u.isSet,isKey:p(de),examAnswerRelationType:ne.examAnswerRelationType,answerCheckType:p(me),onMoveUp:q[5]||(q[5]=e=>re("move","up")),onMoveDown:q[6]||(q[6]=e=>re("move","down")),onDelete:q[7]||(q[7]=e=>re("delete")),onSave:Te,onEdit:q[8]||(q[8]=e=>re("edit")),onAdd:Ee,onOnShowRichText:q[9]||(q[9]=e=>xe.value=!0),onSetKey:je,onSetAnswerSetting:_e},null,8,["is-edit","is-set","isKey","examAnswerRelationType","answerCheckType"])):w("v-if",!0)])),_:2},[u.isEdit?{name:"edit",fn:f((()=>[h("div",{class:c(["flex",[{"margin-bottom":p(xe)}]])},[q[12]||(q[12]=h("div",{class:"label flex flex-justify-center"},[h("span",null,"题目:")],-1)),h("div",J,[v(B,{modelValue:p(ye),"onUpdate:modelValue":q[0]||(q[0]=e=>S(ye)?ye.value=e:null),type:"textarea",rows:2,placeholder:`【${p(be)}】请输入问题`,disabled:u.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),h("div",P,[q[13]||(q[13]=h("div",{class:"label flex flex-justify-center"},[h("span",null,"设置:")],-1)),["multiple","sort"].includes(u.type)?(m(),x(L,{key:0,modelValue:p(ve),"onUpdate:modelValue":q[1]||(q[1]=e=>S(ve)?ve.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:u.isSave},{default:f((()=>[(m(!0),d(b,null,k(p(Se),(e=>(m(),x(K,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):w("v-if",!0)]),h("div",W,[(m(!0),d(b,null,k(p(pe),((e,l)=>(m(),d("div",{key:l,class:"answer-item flex flex-items-center"},[h("span",X,g(String.fromCharCode(65+l))+".",1),v(B,{modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+l)}`,disabled:u.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(u.type)?(m(),x(I,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":l=>e.isCorrect=l,class:c([{"is-correct":e.isCorrect}]),disabled:u.isSave,style:{"margin-left":"10px"},onChange:l=>function(e,l){"single"===ne.type?(l&&pe.value.forEach((l=>{l!==e&&(l.isCorrect=!1)})),e.isCorrect=l):"multiple"===ne.type&&(e.isCorrect=l)}(e,l)},{default:f((()=>[...q[14]||(q[14]=[C(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):w("v-if",!0),v($,{class:"icon"},{default:f((()=>[v(p(V),{class:c([{disabled:u.isSave}]),onClick:Ae},null,8,["class"])])),_:1}),v($,{class:"icon"},{default:f((()=>[v(p(T),{class:c([{disabled:p(pe).length<3||u.isSave}]),onClick:e=>function(e){pe.value.length<3||ne.isSave||pe.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024),1===p(ce)?(m(),x(se,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=l,ue.value=t,ge.value=pe.value[t].resultItem||"",void(Ce.value=!0);var t}},{default:f((()=>[h("span",null,g(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):w("v-if",!0),2===p(ce)?(m(),x(se,{key:2,type:"primary",class:"margin-left-10",onClick:l=>function(e){e.customAnswerId=e.examAnswerId||E(),re("setRelation",ne.customId,e)}(e)},{default:f((()=>[h("span",null,g(e.answerRelations?.length?`关联了${p(Ie)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):w("v-if",!0)])))),128))]),"sort"===u.type?(m(),d("div",Y,[q[15]||(q[15]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"排序答案:")],-1)),h("div",Z,[v(L,{modelValue:p(ke),"onUpdate:modelValue":q[2]||(q[2]=e=>S(ke)?ke.value=e:null),mode:"multiple",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:f((()=>[w(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(m(!0),d(b,null,k(p(pe),((e,l)=>(m(),x(K,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):w("v-if",!0),u.showAnalysis?(m(),d("div",ee,[q[16]||(q[16]=h("div",{class:"label flex flex-justify-center"},[h("span",null,"解析:")],-1)),h("div",le,[v(B,{modelValue:p(fe),"onUpdate:modelValue":q[3]||(q[3]=e=>S(fe)?fe.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):w("v-if",!0),p(xe)?(m(),d("div",te,[q[18]||(q[18]=h("div",{class:"label flex flex-justify-center"},[h("span",null,"富文本:")],-1)),h("div",ae,[v(_,A({"model-value":p(we),"onUpdate:modelValue":q[4]||(q[4]=e=>S(we)?we.value=e:null)},p(oe),{style:{width:"100%"}}),null,16,["model-value"]),h("div",ie,[v(se,{type:"danger",onClick:Ve},{default:f((()=>q[17]||(q[17]=[C(" 删除富文本 ")]))),_:1})])])])):w("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),v(Be,{modelValue:p(Ce),"onUpdate:modelValue":q[11]||(q[11]=e=>S(Ce)?Ce.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:f((()=>[v(he,{class:"customize-button",type:"primary",plain:"",onClick:Re},{default:f((()=>q[19]||(q[19]=[C(" 取消 ")]))),_:1}),v(he,{class:"customize-button",type:"primary",plain:"",onClick:qe},{default:f((()=>q[20]||(q[20]=[C(" 保存 ")]))),_:1})])),default:f((()=>[(m(),x(_,A({key:p(ue),"model-value":p(ge),"onUpdate:modelValue":q[10]||(q[10]=e=>S(ge)?ge.value=e:null)},p(oe),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});export{se as default};
|
2
2
|
//# sourceMappingURL=subject-single.vue.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-single.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\nimport { setGuid } from '@qxs-bns/utils'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n customId?: number\n examId?: number\n isKey: boolean\n answerCheckType: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(props.isKey)\nconst answerCheckType = ref(props.answerCheckType)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n customAnswerId?: string\n answerRelations?: {\n relationExamId: number\n relationAnswers: {\n relationAnswerId: number\n relationAnswerIndex: number\n }[]\n }[]\n}[]>([{\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref()\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst startTime = ref(0)\nconst showRichContent = ref(false)\nconst resultItem = ref<string>('')\nconst titlePlaceholder = computed(() => {\n if (props.type === 'single') {\n return '单选题'\n }\n else if (props.type === 'multiple') {\n return '多选题'\n }\n else {\n return '排序题'\n }\n})\n\nconst orderList = ref<string[]>([])\n\nconst leastAnswerOptions = computed(() => {\n const items = []\n const length = answers.value.length\n for (let count = length; count > 1; count--) {\n items.push({\n label: `至少选择${count}项`,\n value: count,\n })\n }\n return items.reverse()\n})\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n customAnswerId: setGuid()\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction setCorrect(it: any, event: any) {\n if (props.type === 'single') {\n // 单选题:确保只有一个正确答案\n if (event) {\n answers.value.forEach((answer: any) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n } else if (props.type === 'multiple') {\n // 多选题:可以有多个正确答案\n it.isCorrect = event\n }\n}\nfunction setRelation(item: any) {\n emits('setRelation', props.examId, props.customId, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let examAnswerRelationType = null\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n if (v.resultItem) {\n examAnswerRelationType = 1\n }\n if (v.answerRelations?.length) {\n examAnswerRelationType = 2\n }\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了正确答案\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n const uniqueAnswer = new Set(answers.value.map((item: any) => item.title))\n\n if (uniqueAnswer.size !== answers.value.length) {\n ElMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n ElMessage.error('请至少设置两个正确答案')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n ElMessage.error('至少选几项与正确答案数不符')\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.map((item: any, index: number) => {\n return { ...item, orderIndex: index + 1 }\n }),\n examExpand: orderList.value.map((i: string) => i.charCodeAt(0) - 65 + 1).join(','),\n analysis: analysis.value,\n isSetCorrectAnswer,\n leastAnswerCount: leastAnswerCount.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n examAnswerRelationType,\n isKey: isKey.value,\n answerCheckType: answerCheckType.value\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n // const customId = props.id || setGuid()\n\n if (props.answerCheckType) {\n answerCheckType.value = props.answerCheckType\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList.map((item: any) => {\n return { ...item, customAnswerId: item.examAnswerId || setGuid() }\n })\n }\n\n if (props.leastAnswerCount) {\n leastAnswerCount.value = props.leastAnswerCount\n }\n\n if (props.examExpand) {\n // 设置正确答案 props.examExpand里是答案id\n if (props.examExpand) {\n const correctAnswerIdList = props.examExpand.split(',')\n\n // 遍历 correctAnswerIdList,直接在 props.answerList 中查找对应的 orderIndex 并转换成字母\n orderList.value = correctAnswerIdList.map((id: string) => {\n const answer = props.answerList.find((item: any) => item.answerId?.toString() === id)\n return answer ? String.fromCharCode(65 + answer.orderIndex - 1) : id\n }).filter(Boolean) // 过滤掉任何可能的空字符串\n }\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\n\nfunction onOpenResult(i: number) {\n answersIndex.value = i\n // console.log(answers.value[i].resultItem, 1);\n // resultItem.value = answers.value[i].resultItem || ''\n showRichContent.value = true\n}\n\nfunction onSaveResult() {\n // answers.value[answersIndex.value].resultItem = resultItem.value || ''\n showRichContent.value = false\n}\n\nfunction setKey(key: boolean) {\n isKey.value = key\n}\n\nfunction setAnswerSetting(type: number) {\n answerCheckType.value = type\n}\n\nfunction add(type: string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n// 监听isEdit\nwatch(() => props.isEdit, () => {\n if (props.isEdit) {\n startTime.value = new Date().getTime()\n }\n})\nconst ns = useNamespace('subject-single')\n\nonMounted(init)\n</script>\n\n<template>\n <div :class=\"ns.e('single-exam')\">\n <SubjectLayout\n :show-edit=\"isEdit\"\n >\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">\n {{ orderIndex + 1 }}.{{ title }}\n <span v-if=\"type === 'single'\">(单选题)</span>\n <span v-else-if=\"['multiple', 'sort'].includes(type)\">\n ({{ titlePlaceholder }}{{ leastAnswerCount ? `至少选${leastAnswerCount}项${type === 'sort' ? '并排序' : ''}` : '' }})\n </span>\n </span>\n </div>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-checkbox>\n </template>\n <template v-else>\n <el-radio\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n value=\"disabled\"\n disabled\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }} \n {{ item.isCorrect ? '(支持选项)' : '' }} \n {{ examAnswerRelationType === 1 ? (item.resultItem? '(已设置结果项)' : '(未设置结果项)' ) : ''}} \n {{ examAnswerRelationType === 2 ? (item.answerRelations?.length? '(已设置关联)' : '(未设置关联)') : '' }}\n </el-radio>\n </template>\n </div>\n </div>\n </template>\n <template v-if=\"isEdit\" #edit>\n <div class=\"flex\" :class=\"[{ 'margin-bottom': showRichText }]\">\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n maxlength=\"200\"\n class=\"margin-bottom\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-center\">\n <span>设置:</span>\n </div>\n <el-select\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 150px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <el-option\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n >\n </el-option>\n </el-select>\n </div>\n <div class=\"margin-bottom answer-list\">\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"order\">{{ String.fromCharCode(65 + index) }}.</span>\n <el-input\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n maxlength=\"100\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <el-checkbox\n v-if=\"['single', 'multiple'].includes(type)\"\n v-model=\"item.isCorrect\"\n :class=\"[{ 'is-correct': item.isCorrect }]\"\n :disabled=\"isSave\"\n style=\"margin-left: 10px;\"\n @change=\"(event: any) => setCorrect(item, event)\"\n >\n 支持选项 \n </el-checkbox>\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n <el-link\n v-if=\"examAnswerRelationType === 1\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </el-link>\n <el-link\n v-if=\"examAnswerRelationType === 2\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${item.answerRelations?.length}项` : '关联检查' }}</span>\n </el-link>\n </div>\n </div>\n <div v-if=\"type === 'sort'\" class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-select\n v-model=\"orderList\"\n mode=\"multiple\"\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <!-- :options=\"[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))\" -->\n <el-option\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </el-select>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :isKey=\"isKey\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n :answerCheckType=\"answerCheckType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"add\"\n @onShowRichText=\"showRichText = true\"\n @setKey=\"setKey\"\n @setAnswerSetting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <el-dialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor\n :key=\"answersIndex\"\n v-model:model-value=\"(answers[answersIndex].resultItem as string)\" \n v-bind=\"attrs\"\n style=\"width: 100%;\" />\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answersIndex","ref","isKey","answerCheckType","answers","title","isCorrect","leastAnswerCount","analysis","showRichText","richText","startTime","showRichContent","resultItem","titlePlaceholder","computed","type","orderList","leastAnswerOptions","items","count","value","length","push","label","reverse","addAnswer","isSave","customAnswerId","setGuid","deleteRichText","save","ElMessage","error","msg","isSetCorrectAnswer","examAnswerRelationType","correctAnswerCount","forEach","v","i","String","fromCharCode","answerRelations","Set","map","item","size","index","orderIndex","examExpand","charCodeAt","join","examRichTextContent","onCloseResult","onSaveResult","setKey","key","setAnswerSetting","add","canSet","watch","isEdit","Date","getTime","ns","useNamespace","onMounted","answerList","examAnswerId","correctAnswerIdList","split","id","answer","find","answerId","toString","filter","Boolean","it","event","splice","examId","customId"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"subject-single.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\nimport { setGuid } from '@qxs-bns/utils'\nimport { ElMessage } from 'element-plus'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n customId?: number\n examId?: number\n isKey: boolean\n answerCheckType: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(false)\nconst answerCheckType = ref(1)\nconst examAnswerRelationType = ref(1)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n customAnswerId?: string\n answerRelations?: {\n relationExamId: number\n relationAnswers: {\n relationAnswerId: number\n relationAnswerIndex: number\n }[]\n }[]\n}[]>([{\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref()\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst startTime = ref(0)\nconst showRichContent = ref(false)\nconst resultItem = ref<string>('')\nconst titlePlaceholder = computed(() => {\n if (props.type === 'single') {\n return '单选题'\n }\n else if (props.type === 'multiple') {\n return '多选题'\n }\n else {\n return '排序题'\n }\n})\n\nconst orderList = ref<string[]>([])\n\nconst leastAnswerOptions = computed(() => {\n const items = []\n const length = answers.value.length\n for (let count = length; count > 1; count--) {\n items.push({\n label: `至少选择${count}项`,\n value: count,\n })\n }\n return items.reverse()\n})\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n customAnswerId: setGuid()\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction setCorrect(it: any, event: any) {\n if (props.type === 'single') {\n // 单选题:确保只有一个支持选项\n if (event) {\n answers.value.forEach((answer: any) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n } else if (props.type === 'multiple') {\n // 多选题:可以有多个支持选项\n it.isCorrect = event\n }\n}\nfunction setRelation(item: any) {\n item.customAnswerId = item.examAnswerId || setGuid()\n emits('setRelation', props.customId, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n // let examAnswerRelationType = null\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n // if (v.resultItem) {\n // examAnswerRelationType = 1\n // }\n // if (v.answerRelations?.length) {\n // examAnswerRelationType = 2\n // }\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了支持选项\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n const uniqueAnswer = new Set(answers.value.map((item: any) => item.title))\n\n if (uniqueAnswer.size !== answers.value.length) {\n ElMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n ElMessage.error('请至少设置两个支持选项')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n ElMessage.error('至少选几项与支持选项数不符')\n return\n }\n }\n console.log(answerCheckType.value, 111)\n \n\n if(answerCheckType.value === 2 || answerCheckType.value === 3) {\n // 必须有设置支持选项\n if (!isSetCorrectAnswer) {\n ElMessage.error('请设置支持选项')\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.map((item: any, index: number) => {\n return { ...item, orderIndex: index + 1 }\n }),\n examExpand: orderList.value.map((i: string) => i.charCodeAt(0) - 65 + 1).join(','),\n analysis: analysis.value,\n isSetCorrectAnswer,\n leastAnswerCount: leastAnswerCount.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n examAnswerRelationType: examAnswerRelationType.value,\n isKey: isKey.value,\n answerCheckType: answerCheckType.value\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n // const customId = props.id || setGuid()\n\n if (props.answerCheckType) {\n answerCheckType.value = props.answerCheckType\n }\n if (props.isKey) {\n isKey.value = props.isKey\n }\n\n if (props.examAnswerRelationType) {\n examAnswerRelationType.value = props.examAnswerRelationType\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.leastAnswerCount) {\n leastAnswerCount.value = props.leastAnswerCount\n }\n\n if (props.examExpand) {\n // 设置支持选项 props.examExpand里是答案id\n if (props.examExpand) {\n const correctAnswerIdList = props.examExpand.split(',')\n\n // 遍历 correctAnswerIdList,直接在 props.answerList 中查找对应的 orderIndex 并转换成字母\n orderList.value = correctAnswerIdList.map((id: string) => {\n const answer = props.answerList.find((item: any) => item.answerId?.toString() === id)\n return answer ? String.fromCharCode(65 + answer.orderIndex - 1) : id\n }).filter(Boolean) // 过滤掉任何可能的空字符串\n }\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\nfunction onOpenResult(i: number) {\n answersIndex.value = i\n resultItem.value = answers.value[i].resultItem || ''\n showRichContent.value = true\n}\n\nfunction onSaveResult() {\n answers.value[answersIndex.value].resultItem = resultItem.value || ''\n showRichContent.value = false\n}\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\nfunction setKey(key: boolean) {\n isKey.value = key\n}\nfunction setAnswerSetting(type: number) {\n answerCheckType.value = type\n}\n\nfunction add(type: string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n// 监听isEdit\nwatch(() => props.isEdit, () => {\n if (props.isEdit) {\n startTime.value = new Date().getTime()\n }\n})\n\nconst relationLength = computed(() => {\n return (v: any) => {\n let count = 0\n v.forEach((item: any) => {\n if (item.relationAnswers) {\n count += item.relationAnswers.length\n }\n })\n return count\n }\n})\n\nconst ns = useNamespace('subject-single')\n\nonMounted(init)\n</script>\n\n<template>\n <div :class=\"ns.e('single-exam')\">\n <SubjectLayout\n :show-edit=\"isEdit\"\n >\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">\n {{ orderIndex + 1 }}.{{ title }}\n <span v-if=\"type === 'single'\">(单选题)</span>\n <span v-else-if=\"['multiple', 'sort'].includes(type)\">\n ({{ titlePlaceholder }}{{ leastAnswerCount ? `至少选${leastAnswerCount}项${type === 'sort' ? '并排序' : ''}` : '' }})\n </span>\n </span>\n </div>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-checkbox>\n </template>\n <template v-else>\n <el-radio\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n value=\"disabled\"\n disabled\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }} \n {{ item.isCorrect ? '(支持选项)' : '' }} \n {{ examAnswerRelationType === 1 ? (item.resultItem? '(已设置结果项)' : '(未设置结果项)' ) : ''}} \n {{ examAnswerRelationType === 2 ? (item.answerRelations?.length? '(已设置关联)' : '(未设置关联)') : '' }}\n </el-radio>\n </template>\n </div>\n </div>\n </template>\n <template v-if=\"isEdit\" #edit>\n <div class=\"flex\" :class=\"[{ 'margin-bottom': showRichText }]\">\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n maxlength=\"200\"\n class=\"margin-bottom\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-center\">\n <span>设置:</span>\n </div>\n <el-select\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 150px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <el-option\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n >\n </el-option>\n </el-select>\n </div>\n <div class=\"margin-bottom answer-list\">\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"order\">{{ String.fromCharCode(65 + index) }}.</span>\n <el-input\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n maxlength=\"100\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <el-checkbox\n v-if=\"['single', 'multiple'].includes(type)\"\n v-model=\"item.isCorrect\"\n :class=\"[{ 'is-correct': item.isCorrect }]\"\n :disabled=\"isSave\"\n style=\"margin-left: 10px;\"\n @change=\"(event: any) => setCorrect(item, event)\"\n >\n 支持选项 \n </el-checkbox>\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n <el-link\n v-if=\"examAnswerRelationType === 1\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </el-link>\n <el-link\n v-if=\"examAnswerRelationType === 2\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${relationLength(item.answerRelations)}项` : '关联检查' }}</span>\n </el-link>\n </div>\n </div>\n <div v-if=\"type === 'sort'\" class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-select\n v-model=\"orderList\"\n mode=\"multiple\"\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <!-- :options=\"[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))\" -->\n <el-option\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </el-select>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :isKey=\"isKey\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n :answerCheckType=\"answerCheckType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"add\"\n @onShowRichText=\"showRichText = true\"\n @setKey=\"setKey\"\n @setAnswerSetting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <el-dialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor\n :key=\"answersIndex\"\n v-model:model-value=\"resultItem\" \n v-bind=\"attrs\"\n style=\"width: 100%;\" />\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answersIndex","ref","isKey","answerCheckType","examAnswerRelationType","answers","title","isCorrect","leastAnswerCount","analysis","showRichText","richText","startTime","showRichContent","resultItem","titlePlaceholder","computed","type","orderList","leastAnswerOptions","items","count","value","length","push","label","reverse","addAnswer","isSave","customAnswerId","setGuid","deleteRichText","save","ElMessage","error","msg","isSetCorrectAnswer","correctAnswerCount","forEach","v","i","String","fromCharCode","Set","map","item","size","console","log","index","orderIndex","examExpand","charCodeAt","join","examRichTextContent","onSaveResult","onCloseResult","setKey","key","setAnswerSetting","add","canSet","watch","isEdit","Date","getTime","relationLength","relationAnswers","ns","useNamespace","onMounted","answerList","correctAnswerIdList","split","id","answer","find","answerId","toString","filter","Boolean","it","event","splice","examAnswerId","customId"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,createElementBlock as t,openBlock as s,normalizeClass as n,unref as i,createElementVNode as a,Fragment as o,renderList as l,createBlock as r,createCommentVNode as d,mergeProps as c}from"vue";import m from"./components/subject-blank-fill.vue.mjs";import x from"./components/subject-scale.vue.mjs";import u from"./components/subject-single.vue.mjs";import p from"./components/subject-text-fill.vue.mjs";import w from"./components/SubjectRichText.vue.mjs";import v from"./components/SubjectPageEnd.vue.mjs";import{useNamespace as y}from"@qxs-bns/hooks";import{setGuid as h}from"@qxs-bns/utils";import{ref as T,useAttrs as f,watch as A}from"vue-demi";import{ElMessage as R}from"element-plus/es";const E={class:"subject-list-wrapper"};var S=e({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(e,{expose:S,emit:g}){const C=e,D=T([]),j=g,b=f();function _(){let e=0,t=!1;return D.value.map(((s,n,i)=>{"page_end"===s.answerType&&(e++,t=n===i.length-1)})),t?e:e+1}function k(e,t,s){console.log(t,"index"),t||0===t?D.value.splice(t+1,0,{customId:h(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:s}):D.value.push({customId:h(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:s})}function I(e,t){if("up"===t&&e>0){const[t]=D.value.splice(e,1);D.value.splice(e-1,0,t)}else if("down"===t&&e<D.value.length-1){const[t]=D.value.splice(e,1);D.value.splice(e+1,0,t)}}function M(e,t){for(let s=0;s<D.value.length;s++)e===s&&(D.value[e]={...D.value[e],...t,isEdit:!1})}function L(e){D.value.splice(e,1),R.success("删除成功")}function P(e,t){j("setRelation",e,t)}S({addSubject:k,currentList:D,uploadExcel:function(e){D.value=D.value.concat(e)},addExam:function(e){const t=[];e.answers?.map((e=>{t.push({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect})})),D.value.push({...e,customId:h(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:t,isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1})},setAnswerRelation:function(e,t,s){console.log(e,t,s,111),console.log(D.value,222),e.length&&D.value.forEach((n=>{n.customId===t&&n.answer.forEach((t=>{t.customAnswerId===s&&(t.answerRelations=e)}))}))}}),A((()=>C.subjectList),(e=>{e&&(D.value=[...e])}),{immediate:!0});const q=y("subject-list");return(e,y)=>(s(),t("div",{class:n(i(q).e("list-exam"))},[a("div",E,[(s(!0),t(o,null,l(i(D),((n,a)=>(s(),t("div",{key:a+n.examId||n.title},[["single","multiple","sort"].includes(n.answerType)?(s(),r(u,c({key:0,ref_for:!0},i(b),{"order-index":a,title:n.title,type:n.answerType,"exam-id":n.examId,isKey:n.isKey,"is-save":!n.isRealCanDel,customId:n.customId,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"least-answer-count":n.leastAnswerCount,"is-edit":n.isEdit||!1,"show-action":!e.isPreview,"exam-expand":n.examExpand,answerCheckType:n.answerCheckType,"exam-rich-text-content":n.examRichTextContent,examAnswerRelationType:n.examAnswerRelationType,onSetRelation:P,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:(e,t)=>k(e,a,t)}),null,16,["order-index","title","type","exam-id","isKey","is-save","customId","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answerCheckType","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===n.answerType?(s(),r(x,c({key:1,ref_for:!0},i(b),{"order-index":a,title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"is-edit":n.isEdit||!1,"scale-question-list":n.scaleQuestionList,"show-action":!e.isPreview,"exam-rich-text-content":n.examRichTextContent,examAnswerRelationType:n.examAnswerRelationType,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===n.answerType?(s(),r(m,c({key:2,ref_for:!0},i(b),{"order-index":a,title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"show-action":!e.isPreview,"is-edit":n.isEdit||!1,"exam-answer-setting-v-o":n.examAnswerSettingVO||{},"exam-rich-text-content":n.examRichTextContent,examAnswerRelationType:n.examAnswerRelationType,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===n.answerType?(s(),r(p,c({key:3,ref_for:!0},i(b),{"order-index":a,title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"show-action":!e.isPreview,"is-edit":n.isEdit||!1,"exam-expand":n.examExpand,"exam-answer-setting-v-o":n.examAnswerSettingVO||{},examAnswerRelationType:n.examAnswerRelationType,"exam-rich-text-content":n.examRichTextContent,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","examAnswerRelationType","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===n.answerType?(s(),r(w,c({key:4,ref_for:!0},i(b),{"order-index":a,richTextContent:n.richTextContent,"is-set":n.hasSet||!1,"is-save":!n.isRealCanDel,"is-edit":n.isEdit||!1,"show-action":!e.isPreview,onMove:e=>I(a,e),onDelete:e=>L(a),examAnswerRelationType:n.examAnswerRelationType,onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","richTextContent","is-set","is-save","is-edit","show-action","onMove","onDelete","examAnswerRelationType","onSave","onEdit","onAdd"])):"page_end"===n.answerType?(s(),r(v,{"total-page":_(),key:a,"current-page-index":(e=>{const t=D.value.filter((e=>"page_end"===e.answerType));let s=0;return t.forEach(((t,n)=>{e===t.id&&(s=n+1)})),s})(n.id),item:n,"order-index":a,"is-edit":n.isEdit||!1,"is-set":n.hasSet||!1,"is-save":!n.isRealCanDel,examAnswerRelationType:n.examAnswerRelationType,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)},null,8,["total-page","current-page-index","item","order-index","is-edit","is-set","is-save","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):d("v-if",!0)])))),128))])],2))}});export{S as default};
|
1
|
+
import{defineComponent as e,createElementBlock as t,openBlock as s,normalizeClass as n,unref as i,createElementVNode as a,Fragment as o,renderList as l,createBlock as r,createCommentVNode as d,mergeProps as c}from"vue";import m from"./components/subject-blank-fill.vue.mjs";import x from"./components/subject-scale.vue.mjs";import u from"./components/subject-single.vue.mjs";import p from"./components/subject-text-fill.vue.mjs";import w from"./components/SubjectRichText.vue.mjs";import v from"./components/SubjectPageEnd.vue.mjs";import{useNamespace as y}from"@qxs-bns/hooks";import{setGuid as h}from"@qxs-bns/utils";import{ref as T,useAttrs as f,watch as A}from"vue-demi";import{ElMessage as R}from"element-plus/es";const E={class:"subject-list-wrapper"};var S=e({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(e,{expose:S,emit:g}){const C=e,D=T([]),j=g,b=f();function _(){let e=0,t=!1;return D.value.map(((s,n,i)=>{"page_end"===s.answerType&&(e++,t=n===i.length-1)})),t?e:e+1}function k(e,t,s){console.log(t,"index"),t||0===t?D.value.splice(t+1,0,{customId:h(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:s}):D.value.push({customId:h(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:s})}function I(e,t){if("up"===t&&e>0){const[t]=D.value.splice(e,1);D.value.splice(e-1,0,t)}else if("down"===t&&e<D.value.length-1){const[t]=D.value.splice(e,1);D.value.splice(e+1,0,t)}}function M(e,t){for(let s=0;s<D.value.length;s++)e===s&&(D.value[e]={...D.value[e],...t,isEdit:!1,examAnswerRelationType:t.examAnswerRelationType})}function L(e){D.value.splice(e,1),R.success("删除成功")}function P(e,t){j("setRelation",e,t)}S({addSubject:k,currentList:D,uploadExcel:function(e){D.value=D.value.concat(e)},addExam:function(e){const t=[];e.answers?.map((e=>{t.push({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect})})),D.value.push({...e,customId:h(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:t,isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1})},setAnswerRelation:function(e,t,s){console.log(e,t,s,111),console.log(D.value,222),e.length&&D.value.forEach((n=>{n.customId===t&&n.answer.forEach((t=>{t.customAnswerId===s&&(t.answerRelations=e)}))}))}}),A((()=>C.subjectList),(e=>{e&&(D.value=[...e])}),{immediate:!0});const q=y("subject-list");return(e,y)=>(s(),t("div",{class:n(i(q).e("list-exam"))},[a("div",E,[(s(!0),t(o,null,l(i(D),((n,a)=>(s(),t("div",{key:a+n.examId||n.title},[["single","multiple","sort"].includes(n.answerType)?(s(),r(u,c({key:0,ref_for:!0},i(b),{"order-index":a,title:n.title,type:n.answerType,"exam-id":n.examId,isKey:n.isKey,"is-save":!n.isRealCanDel,customId:n.customId,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"least-answer-count":n.leastAnswerCount,"is-edit":n.isEdit||!1,"show-action":!e.isPreview,"exam-expand":n.examExpand,answerCheckType:n.answerCheckType,"exam-rich-text-content":n.examRichTextContent,examAnswerRelationType:n.examAnswerRelationType,onSetRelation:P,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:(e,t)=>k(e,a,t)}),null,16,["order-index","title","type","exam-id","isKey","is-save","customId","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answerCheckType","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===n.answerType?(s(),r(x,c({key:1,ref_for:!0},i(b),{"order-index":a,title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"is-edit":n.isEdit||!1,"scale-question-list":n.scaleQuestionList,"show-action":!e.isPreview,"exam-rich-text-content":n.examRichTextContent,examAnswerRelationType:n.examAnswerRelationType,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===n.answerType?(s(),r(m,c({key:2,ref_for:!0},i(b),{"order-index":a,title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"show-action":!e.isPreview,"is-edit":n.isEdit||!1,"exam-answer-setting-v-o":n.examAnswerSettingVO||{},"exam-rich-text-content":n.examRichTextContent,examAnswerRelationType:n.examAnswerRelationType,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===n.answerType?(s(),r(p,c({key:3,ref_for:!0},i(b),{"order-index":a,title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"show-action":!e.isPreview,"is-edit":n.isEdit||!1,"exam-expand":n.examExpand,"exam-answer-setting-v-o":n.examAnswerSettingVO||{},examAnswerRelationType:n.examAnswerRelationType,"exam-rich-text-content":n.examRichTextContent,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","examAnswerRelationType","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===n.answerType?(s(),r(w,c({key:4,ref_for:!0},i(b),{"order-index":a,richTextContent:n.richTextContent,"is-set":n.hasSet||!1,"is-save":!n.isRealCanDel,"is-edit":n.isEdit||!1,"show-action":!e.isPreview,onMove:e=>I(a,e),onDelete:e=>L(a),examAnswerRelationType:n.examAnswerRelationType,onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)}),null,16,["order-index","richTextContent","is-set","is-save","is-edit","show-action","onMove","onDelete","examAnswerRelationType","onSave","onEdit","onAdd"])):"page_end"===n.answerType?(s(),r(v,{"total-page":_(),key:a,"current-page-index":(e=>{const t=D.value.filter((e=>"page_end"===e.answerType));let s=0;return t.forEach(((t,n)=>{e===t.id&&(s=n+1)})),s})(n.id),item:n,"order-index":a,"is-edit":n.isEdit||!1,"is-set":n.hasSet||!1,"is-save":!n.isRealCanDel,examAnswerRelationType:n.examAnswerRelationType,onMove:e=>I(a,e),onDelete:e=>L(a),onSave:e=>M(a,e),onEdit:e=>n.isEdit=!0,onAdd:e=>k(e,a,null)},null,8,["total-page","current-page-index","item","order-index","is-edit","is-set","is-save","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):d("v-if",!0)])))),128))])],2))}});export{S as default};
|
2
2
|
//# sourceMappingURL=subject-list.vue.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-list.vue.mjs","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// import isEqual from 'lodash/isEqual'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { setGuid } from '@qxs-bns/utils'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst currentList = ref([] as any)\nconst emits = defineEmits(['setRelation'])\n\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n let totalPageIndex = 0\n let isLastPageIndex = false\n currentList.value.map((v: any, i: number, arr: any) => {\n if (v.answerType === 'page_end') {\n totalPageIndex++\n isLastPageIndex = i === arr.length - 1\n }\n })\n // 假设最后是一个分页器认为是最后一页\n return isLastPageIndex ? totalPageIndex : totalPageIndex + 1\n}\n\nfunction currentPageIndex() {\n return (currentId: any) => {\n const currentPageList = currentList.value.filter(\n (v: any) => v.answerType === 'page_end'\n )\n let currentIndex = 0\n currentPageList.forEach((c: any, i: number) => {\n if (currentId === c.id) {\n currentIndex = i + 1\n }\n })\n return currentIndex\n }\n}\n\nfunction addSubject(type: string, index: number, examAnswerRelationType: number | null) {\n console.log(index, 'index')\n if (index || index === 0) {\n currentList.value.splice(index + 1, 0, {\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n else {\n currentList.value.push({\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n}\n\nfunction addExam(item: any) {\n const answerList: any[] = []\n item.answers?.map((v: any) => {\n answerList.push({\n ...v,\n title: v.answer,\n answerId: v.examAnswerId,\n isCorrect: v.isCorrect,\n })\n })\n currentList.value.push({\n ...item,\n customId: setGuid(),\n answerType: item.richTextContent ? 'rich_text' : item.examTypeEnum,\n answers: answerList,\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n })\n}\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n for (let idx = 0; idx < currentList.value.length; idx++) {\n if (index === idx) {\n currentList.value[index] =\n {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n }\n }\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(examId: string, examAnswers: any) {\n emits('setRelation', examId, examAnswers)\n}\n\nfunction setAnswerRelation(answerRelations: any, customId: string, customAnswerId: string,) {\n // 给examId设置答案关联\n console.log(answerRelations, customId, customAnswerId, 111);\n console.log(currentList.value, 222);\n if (answerRelations.length) {\n currentList.value.forEach((c: any) => {\n if (c.customId === customId) {\n c.answer.forEach((c: any) => {\n if (c.customAnswerId === customAnswerId) {\n c.answerRelations = answerRelations\n }\n })\n }\n })\n }\n}\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div v-for=\"(item, index) in currentList\" :key=\"index + item.examId || item.title\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle \n v-bind=\"attrs\" \n :order-index=\"index\" \n :title=\"item.title\" \n :type=\"item.answerType\"\n :exam-id=\"item.examId\"\n :isKey=\"item.isKey\" \n :is-save=\"!item.isRealCanDel\" \n :customId=\"item.customId\" \n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\" \n :analysis=\"item.analysis\" \n :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\" \n :show-action=\"!isPreview\" \n :exam-expand=\"item.examExpand\"\n :answerCheckType=\"item.answerCheckType\" \n :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" \n @setRelation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" \n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" \n @edit=\"item.isEdit = true\"\n @add=\"(type: string, examAnswerRelationType: number) => addSubject(type, index, examAnswerRelationType)\" />\n </template>\n <SubjectScale v-bind=\"attrs\" v-else-if=\"item.answerType === 'scale'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :is-edit=\"item.isEdit || false\" :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectBlankFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'blank_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectTextFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'text_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\" :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectRichText v-bind=\"attrs\" v-else-if=\"item.answerType === 'rich_text'\" :order-index=\"index\"\n :richTextContent=\"item.richTextContent\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" :examAnswerRelationType=\"item.examAnswerRelationType\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectPageEnd v-else-if=\"item.answerType === 'page_end'\" :total-page=\"totalPageIndex()\" :key=\"index\"\n :current-page-index=\"currentPageIndex()(item.id)\" :item=\"item\" :order-index=\"index\"\n :is-edit=\"item.isEdit || false\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentList","ref","emits","__emit","attrs","useAttrs","totalPageIndex","isLastPageIndex","value","map","v","i","arr","answerType","length","addSubject","type","index","examAnswerRelationType","console","log","splice","customId","setGuid","analysis","scaleQuestionList","isSave","isEdit","isRealCanDel","hasSet","push","move","item","saveSubject","idx","deleteSubject","ElMessage","success","setRelation","examId","examAnswers","__expose","uploadExcel","list","concat","addExam","answerList","answers","title","answer","answerId","examAnswerId","isCorrect","richTextContent","examTypeEnum","setAnswerRelation","answerRelations","customAnswerId","forEach","c","watch","subjectList","newList","immediate","ns","useNamespace","currentId","currentPageList","filter","currentIndex","id"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"subject-list.vue.mjs","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// import isEqual from 'lodash/isEqual'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { setGuid } from '@qxs-bns/utils'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst currentList = ref([] as any)\nconst emits = defineEmits(['setRelation'])\n\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n let totalPageIndex = 0\n let isLastPageIndex = false\n currentList.value.map((v: any, i: number, arr: any) => {\n if (v.answerType === 'page_end') {\n totalPageIndex++\n isLastPageIndex = i === arr.length - 1\n }\n })\n // 假设最后是一个分页器认为是最后一页\n return isLastPageIndex ? totalPageIndex : totalPageIndex + 1\n}\n\nfunction currentPageIndex() {\n return (currentId: any) => {\n const currentPageList = currentList.value.filter(\n (v: any) => v.answerType === 'page_end'\n )\n let currentIndex = 0\n currentPageList.forEach((c: any, i: number) => {\n if (currentId === c.id) {\n currentIndex = i + 1\n }\n })\n return currentIndex\n }\n}\n\nfunction addSubject(type: string, index: number, examAnswerRelationType: number | null) {\n console.log(index, 'index')\n if (index || index === 0) {\n currentList.value.splice(index + 1, 0, {\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n else {\n currentList.value.push({\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n}\n\nfunction addExam(item: any) {\n const answerList: any[] = []\n item.answers?.map((v: any) => {\n answerList.push({\n ...v,\n title: v.answer,\n answerId: v.examAnswerId,\n isCorrect: v.isCorrect,\n })\n })\n currentList.value.push({\n ...item,\n customId: setGuid(),\n answerType: item.richTextContent ? 'rich_text' : item.examTypeEnum,\n answers: answerList,\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n })\n}\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n for (let idx = 0; idx < currentList.value.length; idx++) {\n if (index === idx) {\n currentList.value[index] =\n {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n examAnswerRelationType: item.examAnswerRelationType,\n }\n }\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(customId: number, examAnswers: any) {\n emits('setRelation', customId, examAnswers)\n}\n\nfunction setAnswerRelation(answerRelations: any, customId: string, customAnswerId: string,) {\n // 给examId设置答案关联\n console.log(answerRelations, customId, customAnswerId, 111);\n console.log(currentList.value, 222);\n if (answerRelations.length) {\n currentList.value.forEach((c: any) => {\n if (c.customId === customId) {\n c.answer.forEach((c: any) => {\n if (c.customAnswerId === customAnswerId) {\n c.answerRelations = answerRelations\n }\n })\n }\n })\n }\n}\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div v-for=\"(item, index) in currentList\" :key=\"index + item.examId || item.title\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle \n v-bind=\"attrs\" \n :order-index=\"index\" \n :title=\"item.title\" \n :type=\"item.answerType\"\n :exam-id=\"item.examId\"\n :isKey=\"item.isKey\" \n :is-save=\"!item.isRealCanDel\" \n :customId=\"item.customId\" \n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\" \n :analysis=\"item.analysis\" \n :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\" \n :show-action=\"!isPreview\" \n :exam-expand=\"item.examExpand\"\n :answerCheckType=\"item.answerCheckType\" \n :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\"\n @setRelation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string, examAnswerRelationType: number) => addSubject(type, index, examAnswerRelationType)\" />\n </template>\n <SubjectScale v-bind=\"attrs\" v-else-if=\"item.answerType === 'scale'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :is-edit=\"item.isEdit || false\" :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectBlankFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'blank_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectTextFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'text_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\" :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectRichText v-bind=\"attrs\" v-else-if=\"item.answerType === 'rich_text'\" :order-index=\"index\"\n :richTextContent=\"item.richTextContent\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" :examAnswerRelationType=\"item.examAnswerRelationType\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectPageEnd v-else-if=\"item.answerType === 'page_end'\" :total-page=\"totalPageIndex()\" :key=\"index\"\n :current-page-index=\"currentPageIndex()(item.id)\" :item=\"item\" :order-index=\"index\"\n :is-edit=\"item.isEdit || false\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentList","ref","emits","__emit","attrs","useAttrs","totalPageIndex","isLastPageIndex","value","map","v","i","arr","answerType","length","addSubject","type","index","examAnswerRelationType","console","log","splice","customId","setGuid","analysis","scaleQuestionList","isSave","isEdit","isRealCanDel","hasSet","push","move","item","saveSubject","idx","deleteSubject","ElMessage","success","setRelation","examAnswers","__expose","uploadExcel","list","concat","addExam","answerList","answers","title","answer","answerId","examAnswerId","isCorrect","richTextContent","examTypeEnum","setAnswerRelation","answerRelations","customAnswerId","forEach","c","watch","subjectList","newList","immediate","ns","useNamespace","currentId","currentPageList","filter","currentIndex","id"],"mappings":"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"}
|
package/lib/package.json.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";exports.version="0.0.
|
1
|
+
"use strict";exports.version="0.0.29";
|
2
2
|
//# sourceMappingURL=package.json.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),l=require("@element-plus/icons-vue"),a=require("@qxs-bns/hooks"),o=require("../../subject-type/src/subject-type.vue.cjs"),n=require("vue-demi");const c={key:0,class:"flex-justify-between"},r={key:0,class:"has-set"},i={key:1,class:"flex flex-justify-end",style:{width:"100%"}};var d=t.defineComponent({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit:{type:Boolean},isSet:{type:Boolean,default:!1},isKey:{type:Boolean,default:!1},answerCheckType:{type:Number,default:1},showOtherOption:{type:Boolean,default:!0},examAnswerRelationType:{type:Number,default:null},pageEnd:{type:Boolean,default:!1}},emits:["moveUp","moveDown","delete","save","edit","add","onShowRichText","setKey","setAnswerSetting"],setup(d,{emit:u}){const s=d,m=n.ref(s.isKey),p=n.ref(!1),f=u,V=n.ref(s.answerCheckType),x=a.useNamespace("subject-action"),k=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],C=n.computed((()=>k.find((e=>e.value===V.value))?.label));function N(){p.value=!1,f("setAnswerSetting",V.value)}function h(e,t){f("add",e,t?s.examAnswerRelationType:null)}return(a,n)=>{const u=e.ElLink,s=e.ElPopover,v=e.ElCheckbox,y=e.ElIcon,w=e.ElButton,b=e.ElRadio,B=e.ElRadioGroup,E=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(x).e("action-exam"))},[t.createElementVNode("div",{class:t.normalizeClass(["action flex",[{active:d.isEdit}]])},[d.isEdit?(t.openBlock(),t.createElementBlock("div",c,[t.createVNode(s,{trigger:"click"},{reference:t.withCtx((()=>[t.createVNode(u,{type:"primary",class:"btn-margin"},{default:t.withCtx((()=>n[14]||(n[14]=[t.createTextVNode(" +在此题后加入新题 ")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(o.default,{onSelect:h})])),_:1}),d.showOtherOption?(t.openBlock(),t.createBlock(u,{key:0,type:"primary",onClick:n[0]||(n[0]=e=>f("onShowRichText")),class:"btn-margin"},{default:t.withCtx((()=>n[15]||(n[15]=[t.createTextVNode(" +添加题目描述(图文) ")]))),_:1})):t.createCommentVNode("v-if",!0),d.showOtherOption?(t.openBlock(),t.createBlock(u,{key:1,type:"primary",onClick:n[1]||(n[1]=e=>p.value=!0),class:"btn-margin"},{default:t.withCtx((()=>n[16]||(n[16]=[t.createTextVNode(" 答题设置 ")]))),_:1})):t.createCommentVNode("v-if",!0),d.showOtherOption?(t.openBlock(),t.createBlock(v,{key:2,modelValue:t.unref(m),"onUpdate:modelValue":n[2]||(n[2]=e=>t.isRef(m)?m.value=e:null),label:"核心题",onChange:n[3]||(n[3]=e=>f("setKey",t.unref(m)))},null,8,["modelValue"])):t.createCommentVNode("v-if",!0)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",null,[d.isSet?(t.openBlock(),t.createElementBlock("div",r," *此题设置了跳题逻辑 ")):(t.openBlock(),t.createElementBlock("div",i,[d.isEdit?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createVNode(w,{class:"btn-margin",onClick:n[9]||(n[9]=e=>f("delete"))},{default:t.withCtx((()=>n[21]||(n[21]=[t.createTextVNode(" 删除 ")]))),_:1}),t.createVNode(w,{type:"primary",onClick:n[10]||(n[10]=e=>f("save"))},{default:t.withCtx((()=>n[22]||(n[22]=[t.createTextVNode(" 完成编辑 ")]))),_:1})],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[t.createVNode(v,{modelValue:t.unref(m),"onUpdate:modelValue":n[4]||(n[4]=e=>t.isRef(m)?m.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"]),t.createVNode(v,{"v-model":!0,label:t.unref(C),disabled:""},null,8,["label"]),d.pageEnd?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createBlock(w,{key:0,class:"btn-margin",onClick:n[5]||(n[5]=e=>f("edit"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Edit))])),_:1})])),default:t.withCtx((()=>[n[17]||(n[17]=t.createTextVNode(" 编辑 "))])),_:1})),t.createVNode(w,{class:"btn-margin",onClick:n[6]||(n[6]=e=>f("delete"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Delete))])),_:1})])),default:t.withCtx((()=>[n[18]||(n[18]=t.createTextVNode(" 删除 "))])),_:1}),t.createVNode(w,{class:"btn-margin",onClick:n[7]||(n[7]=e=>f("moveUp"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Top))])),_:1})])),default:t.withCtx((()=>[n[19]||(n[19]=t.createTextVNode(" 上移 "))])),_:1}),t.createVNode(w,{class:"btn-margin",onClick:n[8]||(n[8]=e=>f("moveDown"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Bottom))])),_:1})])),default:t.withCtx((()=>[n[20]||(n[20]=t.createTextVNode(" 下移 "))])),_:1})],64))]))]),t.createVNode(E,{modelValue:t.unref(p),"onUpdate:modelValue":n[13]||(n[13]=e=>t.isRef(p)?p.value=e:null),title:"答题设置",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(w,{class:"customize-button",type:"primary",plain:"",onClick:n[12]||(n[12]=e=>p.value=!1)},{default:t.withCtx((()=>n[23]||(n[23]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(w,{class:"customize-button",type:"primary",plain:"",onClick:N},{default:t.withCtx((()=>n[24]||(n[24]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(k,(e=>t.createVNode(B,{modelValue:t.unref(V),"onUpdate:modelValue":n[11]||(n[11]=e=>t.isRef(V)?V.value=e:null),class:"vertical-radio-group"},{default:t.withCtx((()=>[t.createVNode(b,{value:e.value},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.label),1)])),_:2},1032,["value"])])),_:2},1032,["modelValue"]))),64))])),_:1},8,["modelValue"])],2)],2)}}});exports.default=d;
|
2
2
|
//# sourceMappingURL=subject-action.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-action.vue.cjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bottom, Delete, Edit, Top } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectType from '../../subject-type/src/subject-type.vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\nconst props = defineProps({\n isEdit: {\n type: Boolean,\n },\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null\n },\n pageEnd: {\n type: Boolean,\n default: false\n }\n})\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst emits = defineEmits(['moveUp', 'moveDown', 'delete', 'save', 'edit', 'add', 'onShowRichText', 'setKey', 'setAnswerSetting'])\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType)\n}\n\nfunction selectExam(type:string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div class=\"action flex\" :class=\"[{ active: isEdit }]\">\n <div v-if=\"isEdit\" class=\"flex-justify-between\">\n <el-popover trigger=\"click\">\n <template #reference>\n <el-link type=\"primary\" class=\"btn-margin\">\n +在此题后加入新题\n </el-link>\n </template>\n <SubjectType @select=\"selectExam\" />\n </el-popover>\n <el-link type=\"primary\" @click=\"emits('onShowRichText')\" v-if=\"showOtherOption\" class=\"btn-margin\">\n +添加题目描述(图文)\n </el-link>\n <el-link type=\"primary\" @click=\"showAnswerSetting = true\" v-if=\"showOtherOption\" class=\"btn-margin\">\n 答题设置\n </el-link>\n <el-checkbox v-model=\"isKey\" label=\"核心题\" @change=\"emits('setKey', isKey)\" v-if=\"showOtherOption\" />\n </div>\n <div>\n <div v-if=\"isSet\" class=\"has-set\">\n *此题设置了跳题逻辑\n </div>\n <div v-else class=\"flex flex-justify-end\" style=\"width: 100%;\">\n <template v-if=\"!isEdit\">\n <el-button class=\"btn-margin\" @click=\"emits('edit')\" v-if=\"!pageEnd\">\n <template #icon>\n <el-icon>\n <Edit />\n </el-icon>\n </template>\n 编辑\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n <template #icon>\n <el-icon>\n <Delete />\n </el-icon>\n </template>\n 删除\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveUp')\">\n <template #icon>\n <el-icon>\n <Top />\n </el-icon>\n </template>\n 上移\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveDown')\">\n <template #icon>\n <el-icon>\n <Bottom />\n </el-icon>\n </template>\n 下移\n </el-button>\n </template>\n <template v-else>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n 删除\n </el-button>\n <el-button type=\"primary\" @click=\"emits('save')\">\n 完成编辑\n </el-button>\n </template>\n </div>\n </div>\n <el-dialog\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n >\n <el-radio-group v-model=\"answerType\" class=\"vertical-radio-group\"
|
1
|
+
{"version":3,"file":"subject-action.vue.cjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bottom, Delete, Edit, Top } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectType from '../../subject-type/src/subject-type.vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\nconst props = defineProps({\n isEdit: {\n type: Boolean,\n },\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null\n },\n pageEnd: {\n type: Boolean,\n default: false\n }\n})\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst emits = defineEmits(['moveUp', 'moveDown', 'delete', 'save', 'edit', 'add', 'onShowRichText', 'setKey', 'setAnswerSetting'])\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步'\n },\n {\n value: 1,\n label: '无需判断是否是支持选项'\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步'\n }\n]\nconst answerText = computed(() => {\n return answerTextList.find(item => item.value === answerType.value)?.label\n})\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType.value)\n}\n\nfunction selectExam(type:string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div class=\"action flex\" :class=\"[{ active: isEdit }]\">\n <div v-if=\"isEdit\" class=\"flex-justify-between\">\n <el-popover trigger=\"click\">\n <template #reference>\n <el-link type=\"primary\" class=\"btn-margin\">\n +在此题后加入新题\n </el-link>\n </template>\n <SubjectType @select=\"selectExam\" />\n </el-popover>\n <el-link type=\"primary\" @click=\"emits('onShowRichText')\" v-if=\"showOtherOption\" class=\"btn-margin\">\n +添加题目描述(图文)\n </el-link>\n <el-link type=\"primary\" @click=\"showAnswerSetting = true\" v-if=\"showOtherOption\" class=\"btn-margin\">\n 答题设置\n </el-link>\n <el-checkbox v-model=\"isKey\" label=\"核心题\" @change=\"emits('setKey', isKey)\" v-if=\"showOtherOption\" />\n </div>\n <div>\n <div v-if=\"isSet\" class=\"has-set\">\n *此题设置了跳题逻辑\n </div>\n <div v-else class=\"flex flex-justify-end\" style=\"width: 100%;\">\n <template v-if=\"!isEdit\">\n <el-checkbox v-model=\"isKey\" label=\"核心题\" disabled />\n <el-checkbox :v-model=\"true\" :label=\"answerText\" disabled />\n <el-button class=\"btn-margin\" @click=\"emits('edit')\" v-if=\"!pageEnd\">\n <template #icon>\n <el-icon>\n <Edit />\n </el-icon>\n </template>\n 编辑\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n <template #icon>\n <el-icon>\n <Delete />\n </el-icon>\n </template>\n 删除\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveUp')\">\n <template #icon>\n <el-icon>\n <Top />\n </el-icon>\n </template>\n 上移\n </el-button>\n <el-button class=\"btn-margin\" @click=\"emits('moveDown')\">\n <template #icon>\n <el-icon>\n <Bottom />\n </el-icon>\n </template>\n 下移\n </el-button>\n </template>\n <template v-else>\n <el-button class=\"btn-margin\" @click=\"emits('delete')\">\n 删除\n </el-button>\n <el-button type=\"primary\" @click=\"emits('save')\">\n 完成编辑\n </el-button>\n </template>\n </div>\n </div>\n <el-dialog\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n >\n <el-radio-group v-model=\"answerType\" class=\"vertical-radio-group\" v-for=\"item in answerTextList\">\n <el-radio :value=\"item.value\">{{ item.label }}</el-radio>\n </el-radio-group>\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"showAnswerSetting = false\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveSetting\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n"],"names":["props","__props","isKey","ref","showAnswerSetting","emits","__emit","answerType","answerCheckType","ns","useNamespace","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","selectExam","type","canSet","examAnswerRelationType"],"mappings":"+0BAQA,MAAMA,EAAQC,EA6BRC,EAAQC,EAAAA,IAAIH,EAAME,OAClBE,EAAoBD,OAAI,GACxBE,EAAQC,EACRC,EAAaJ,EAAAA,IAAIH,EAAMQ,iBACvBC,EAAKC,eAAa,kBAClBC,EAAiB,CACrB,CACEC,MAAO,EACPC,MAAO,oBAET,CACED,MAAO,EACPC,MAAO,eAET,CACED,MAAO,EACPC,MAAO,mBAGLC,EAAaC,EAAAA,UAAS,IACnBJ,EAAeK,MAAKC,GAAQA,EAAKL,QAAUL,EAAWK,SAAQC,QAEvE,SAASK,IACPd,EAAkBQ,OAAQ,EACpBP,EAAA,mBAAoBE,EAAWK,MAAK,CAGnC,SAAAO,EAAWC,EAAaC,GAChChB,EAAM,MAAOe,EAAMC,EAAQrB,EAAMsB,uBAAwB,KAAI"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),l=require("@element-plus/icons-vue"),a=require("@qxs-bns/hooks"),r=require("../../../subject-action/src/subject-action.vue.cjs"),n=require("../../../subject-layout/src/subject-layout.vue.cjs"),o=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs"),i=require("@qxs-bns/utils"),s=require("vue-demi");const u={class:"preview"},d={class:"title"},c={key:0},m={key:1},p={key:0},f=["innerHTML"],v={class:"preview-answer"},y={class:"order"},x={class:"order"},C={style:{flex:"1"}},k={class:"margin-bottom flex flex-items-center"},w={class:"margin-bottom answer-list"},V={class:"order"},h={key:0,class:"margin-bottom flex flex-items-center"},g={style:{flex:"1"}},E={key:1,class:"flex"},N={style:{flex:"1"}},B={key:2,class:"margin-bottom flex"},S={style:{flex:"1"}},b={class:"flex flex-justify-end"};var T=t.defineComponent({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:Number,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(T,{emit:q}){const R=T,A=q,I=s.useAttrs(),_=s.ref(0),j=s.ref(R.isKey),D=s.ref(R.answerCheckType),L=s.ref([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),U=s.ref(),M=s.ref(""),z=s.ref(""),$=s.ref(!1),K=s.ref(""),F=s.ref(0),P=s.ref(!1),O=s.ref(""),G=s.computed((()=>"single"===R.type?"单选题":"multiple"===R.type?"多选题":"排序题")),H=s.ref([]),Q=s.computed((()=>{const e=[];for(let t=L.value.length;t>1;t--)e.push({label:`至少选择${t}项`,value:t});return e.reverse()}));function J(){R.isSave||L.value.push({title:"",isCorrect:!1,customAnswerId:i.setGuid()})}function W(){$.value=!1,K.value=""}function X(){if(!M.value)return void e.ElMessage.error("题目标题不能为空!");let t="",l=!1,a=null,r=0;if("multiple"===R.type||"single"===R.type?L.value.forEach(((e,n)=>{e.title||(t+=`选项${String.fromCharCode(65+n)}未填写。`),e.isCorrect&&(l=!0,r++),e.resultItem&&(a=1),e.answerRelations?.length&&(a=2)})):"sort"===R.type&&H.value.length&&(l=!0),t)return void e.ElMessage.error(t);if(new Set(L.value.map((e=>e.title))).size===L.value.length){if("multiple"===R.type){if(1===r)return void e.ElMessage.error("请至少设置两个正确答案");if(l&&r<U.value)return void e.ElMessage.error("至少选几项与正确答案数不符")}A("save",{title:M.value,answers:L.value.map(((e,t)=>({...e,orderIndex:t+1}))),examExpand:H.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:z.value,isSetCorrectAnswer:l,leastAnswerCount:U.value,examRichTextContent:$.value?K.value:"",examAnswerRelationType:a,isKey:j.value,answerCheckType:D.value})}else e.ElMessage.error("选项不能重复")}function Y(){P.value=!1,O.value=""}function Z(){P.value=!1}function ee(e){j.value=e}function te(e){D.value=e}function le(e,t){A("add",e,t?R.examAnswerRelationType:null)}s.watch((()=>R.isEdit),(()=>{R.isEdit&&(F.value=(new Date).getTime())}));const ae=a.useNamespace("subject-single");return s.onMounted((function(){if(R.title&&(M.value=R.title),R.answerCheckType&&(D.value=R.answerCheckType),R.answerList&&R.answerList.length&&(L.value=R.answerList.map((e=>({...e,customAnswerId:e.examAnswerId||i.setGuid()})))),R.leastAnswerCount&&(U.value=R.leastAnswerCount),R.examExpand&&R.examExpand){const e=R.examExpand.split(",");H.value=e.map((e=>{const t=R.answerList.find((t=>t.answerId?.toString()===e));return t?String.fromCharCode(65+t.orderIndex-1):e})).filter(Boolean)}R.analysis&&(z.value=R.analysis),R.examRichTextContent&&(K.value=R.examRichTextContent,$.value=!0)})),(a,i)=>{const s=e.ElCheckbox,T=e.ElRadio,q=e.ElInput,F=e.ElOption,O=e.ElSelect,re=e.ElIcon,ne=e.ElLink,oe=e.ElButton,ie=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(ae).e("single-exam"))},[t.createVNode(n.default,{"show-edit":a.isEdit},t.createSlots({preview:t.withCtx((()=>[t.createElementVNode("div",u,[t.createElementVNode("div",null,[t.createElementVNode("span",d,[t.createTextVNode(t.toDisplayString(a.orderIndex+1)+"."+t.toDisplayString(t.unref(M))+" ",1),"single"===a.type?(t.openBlock(),t.createElementBlock("span",c,"(单选题)")):["multiple","sort"].includes(a.type)?(t.openBlock(),t.createElementBlock("span",m," ("+t.toDisplayString(t.unref(G))+t.toDisplayString(t.unref(U)?`至少选${t.unref(U)}项${"sort"===a.type?"并排序":""}`:"")+") ",1)):t.createCommentVNode("v-if",!0)])]),t.unref($)?(t.openBlock(),t.createElementBlock("div",p,[t.createElementVNode("div",{innerHTML:t.unref(K)},null,8,f)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",v,["sort"===a.type?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:0},t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(s,{key:l,class:"radio",disabled:!0},{default:t.withCtx((()=>[t.createElementVNode("span",y,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title),1)])),_:2},1024)))),128)):(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(T,{key:l,class:"radio",value:"disabled",disabled:""},{default:t.withCtx((()=>[t.createElementVNode("span",x,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title)+" "+t.toDisplayString(e.isCorrect?"(支持选项)":"")+" "+t.toDisplayString(1===a.examAnswerRelationType?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+t.toDisplayString(2===a.examAnswerRelationType?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:t.withCtx((()=>[a.showAction?(t.openBlock(),t.createBlock(r.default,{key:0,"is-edit":a.isEdit,"is-set":a.isSet,isKey:t.unref(j),examAnswerRelationType:R.examAnswerRelationType,answerCheckType:t.unref(D),onMoveUp:i[5]||(i[5]=e=>A("move","up")),onMoveDown:i[6]||(i[6]=e=>A("move","down")),onDelete:i[7]||(i[7]=e=>A("delete")),onSave:X,onEdit:i[8]||(i[8]=e=>A("edit")),onAdd:le,onOnShowRichText:i[9]||(i[9]=e=>$.value=!0),onSetKey:ee,onSetAnswerSetting:te},null,8,["is-edit","is-set","isKey","examAnswerRelationType","answerCheckType"])):t.createCommentVNode("v-if",!0)])),_:2},[a.isEdit?{name:"edit",fn:t.withCtx((()=>[t.createElementVNode("div",{class:t.normalizeClass(["flex",[{"margin-bottom":t.unref($)}]])},[i[12]||(i[12]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",C,[t.createVNode(q,{modelValue:t.unref(M),"onUpdate:modelValue":i[0]||(i[0]=e=>t.isRef(M)?M.value=e:null),type:"textarea",rows:2,placeholder:`【${t.unref(G)}】请输入问题`,disabled:a.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),t.createElementVNode("div",k,[i[13]||(i[13]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"设置:")],-1)),["multiple","sort"].includes(a.type)?(t.openBlock(),t.createBlock(O,{key:0,modelValue:t.unref(U),"onUpdate:modelValue":i[1]||(i[1]=e=>t.isRef(U)?U.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:a.isSave},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(Q),(e=>(t.openBlock(),t.createBlock(F,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):t.createCommentVNode("v-if",!0)]),t.createElementVNode("div",w,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(L),((e,r)=>(t.openBlock(),t.createElementBlock("div",{key:r,class:"answer-item flex flex-items-center"},[t.createElementVNode("span",V,t.toDisplayString(String.fromCharCode(65+r))+".",1),t.createVNode(q,{modelValue:e.title,"onUpdate:modelValue":t=>e.title=t,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+r)}`,disabled:a.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(a.type)?(t.openBlock(),t.createBlock(s,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":t=>e.isCorrect=t,class:t.normalizeClass([{"is-correct":e.isCorrect}]),disabled:a.isSave,style:{"margin-left":"10px"},onChange:t=>function(e,t){"single"===R.type?(t&&L.value.forEach((t=>{t!==e&&(t.isCorrect=!1)})),e.isCorrect=t):"multiple"===R.type&&(e.isCorrect=t)}(e,t)},{default:t.withCtx((()=>[...i[14]||(i[14]=[t.createTextVNode(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):t.createCommentVNode("v-if",!0),t.createVNode(re,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.CirclePlus),{class:t.normalizeClass([{disabled:a.isSave}]),onClick:J},null,8,["class"])])),_:1}),t.createVNode(re,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.Remove),{class:t.normalizeClass([{disabled:t.unref(L).length<3||a.isSave}]),onClick:e=>function(e){L.value.length<3||R.isSave||L.value.splice(e,1)}(r)},null,8,["class","onClick"])])),_:2},1024),1===a.examAnswerRelationType?(t.openBlock(),t.createBlock(ne,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=r,_.value=t,void(P.value=!0);var t}},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0),2===a.examAnswerRelationType?(t.openBlock(),t.createBlock(ne,{key:2,type:"primary",class:"margin-left-10",onClick:t=>function(e){A("setRelation",R.examId,R.customId,e)}(e)},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.answerRelations?.length?`关联了${e.answerRelations?.length}项`:"关联检查"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0)])))),128))]),"sort"===a.type?(t.openBlock(),t.createElementBlock("div",h,[i[15]||(i[15]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"排序答案:")],-1)),t.createElementVNode("div",g,[t.createVNode(O,{modelValue:t.unref(H),"onUpdate:modelValue":i[2]||(i[2]=e=>t.isRef(H)?H.value=e:null),mode:"multiple",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:t.withCtx((()=>[t.createCommentVNode(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(F,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):t.createCommentVNode("v-if",!0),a.showAnalysis?(t.openBlock(),t.createElementBlock("div",E,[i[16]||(i[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",N,[t.createVNode(q,{modelValue:t.unref(z),"onUpdate:modelValue":i[3]||(i[3]=e=>t.isRef(z)?z.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):t.createCommentVNode("v-if",!0),t.unref($)?(t.openBlock(),t.createElementBlock("div",B,[i[18]||(i[18]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"富文本:")],-1)),t.createElementVNode("div",S,[t.createVNode(o.default,t.mergeProps({"model-value":t.unref(K),"onUpdate:modelValue":i[4]||(i[4]=e=>t.isRef(K)?K.value=e:null)},t.unref(I),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",b,[t.createVNode(ne,{type:"danger",onClick:W},{default:t.withCtx((()=>i[17]||(i[17]=[t.createTextVNode(" 删除富文本 ")]))),_:1})])])])):t.createCommentVNode("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),t.createVNode(ie,{modelValue:t.unref(P),"onUpdate:modelValue":i[11]||(i[11]=e=>t.isRef(P)?P.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(oe,{class:"customize-button",type:"primary",plain:"",onClick:Y},{default:t.withCtx((()=>i[19]||(i[19]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(oe,{class:"customize-button",type:"primary",plain:"",onClick:Z},{default:t.withCtx((()=>i[20]||(i[20]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createBlock(o.default,t.mergeProps({key:t.unref(_),"model-value":t.unref(L)[t.unref(_)].resultItem,"onUpdate:modelValue":i[10]||(i[10]=e=>t.unref(L)[t.unref(_)].resultItem=e)},t.unref(I),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});exports.default=T;
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),l=require("@element-plus/icons-vue"),a=require("@qxs-bns/hooks"),r=require("../../../subject-action/src/subject-action.vue.cjs"),n=require("../../../subject-layout/src/subject-layout.vue.cjs"),o=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs"),i=require("@qxs-bns/utils"),s=require("element-plus"),u=require("vue-demi");const d={class:"preview"},c={class:"title"},m={key:0},p={key:1},f={key:0},v=["innerHTML"],y={class:"preview-answer"},x={class:"order"},C={class:"order"},k={style:{flex:"1"}},V={class:"margin-bottom flex flex-items-center"},w={class:"margin-bottom answer-list"},h={class:"order"},g={key:0,class:"margin-bottom flex flex-items-center"},E={style:{flex:"1"}},N={key:1,class:"flex"},B={style:{flex:"1"}},S={key:2,class:"margin-bottom flex"},b={style:{flex:"1"}},q={class:"flex flex-justify-end"};var T=t.defineComponent({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:Number,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(T,{emit:A}){const R=T,_=A,j=u.useAttrs(),D=u.ref(0),I=u.ref(!1),L=u.ref(1),M=u.ref(1),U=u.ref([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),z=u.ref(),K=u.ref(""),$=u.ref(""),F=u.ref(!1),P=u.ref(""),O=u.ref(0),G=u.ref(!1),H=u.ref(""),Q=u.computed((()=>"single"===R.type?"单选题":"multiple"===R.type?"多选题":"排序题")),J=u.ref([]),W=u.computed((()=>{const e=[];for(let t=U.value.length;t>1;t--)e.push({label:`至少选择${t}项`,value:t});return e.reverse()}));function X(){R.isSave||U.value.push({title:"",isCorrect:!1,customAnswerId:i.setGuid()})}function Y(){F.value=!1,P.value=""}function Z(){if(!K.value)return void s.ElMessage.error("题目标题不能为空!");let e="",t=!1,l=0;if("multiple"===R.type||"single"===R.type?U.value.forEach(((a,r)=>{a.title||(e+=`选项${String.fromCharCode(65+r)}未填写。`),a.isCorrect&&(t=!0,l++)})):"sort"===R.type&&J.value.length&&(t=!0),e)return void s.ElMessage.error(e);if(new Set(U.value.map((e=>e.title))).size===U.value.length){if("multiple"===R.type){if(1===l)return void s.ElMessage.error("请至少设置两个支持选项");if(t&&l<z.value)return void s.ElMessage.error("至少选几项与支持选项数不符")}console.log(L.value,111),2!==L.value&&3!==L.value||t?_("save",{title:K.value,answers:U.value.map(((e,t)=>({...e,orderIndex:t+1}))),examExpand:J.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:$.value,isSetCorrectAnswer:t,leastAnswerCount:z.value,examRichTextContent:F.value?P.value:"",examAnswerRelationType:M.value,isKey:I.value,answerCheckType:L.value}):s.ElMessage.error("请设置支持选项")}else s.ElMessage.error("选项不能重复")}function ee(){U.value[D.value].resultItem=H.value||"",G.value=!1}function te(){G.value=!1,H.value=""}function le(e){I.value=e}function ae(e){L.value=e}function re(e,t){_("add",e,t?R.examAnswerRelationType:null)}u.watch((()=>R.isEdit),(()=>{R.isEdit&&(O.value=(new Date).getTime())}));const ne=u.computed((()=>e=>{let t=0;return e.forEach((e=>{e.relationAnswers&&(t+=e.relationAnswers.length)})),t})),oe=a.useNamespace("subject-single");return u.onMounted((function(){if(R.title&&(K.value=R.title),R.answerCheckType&&(L.value=R.answerCheckType),R.isKey&&(I.value=R.isKey),R.examAnswerRelationType&&(M.value=R.examAnswerRelationType),R.answerList&&R.answerList.length&&(U.value=R.answerList),R.leastAnswerCount&&(z.value=R.leastAnswerCount),R.examExpand&&R.examExpand){const e=R.examExpand.split(",");J.value=e.map((e=>{const t=R.answerList.find((t=>t.answerId?.toString()===e));return t?String.fromCharCode(65+t.orderIndex-1):e})).filter(Boolean)}R.analysis&&($.value=R.analysis),R.examRichTextContent&&(P.value=R.examRichTextContent,F.value=!0)})),(a,s)=>{const u=e.ElCheckbox,T=e.ElRadio,A=e.ElInput,O=e.ElOption,ie=e.ElSelect,se=e.ElIcon,ue=e.ElLink,de=e.ElButton,ce=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(oe).e("single-exam"))},[t.createVNode(n.default,{"show-edit":a.isEdit},t.createSlots({preview:t.withCtx((()=>[t.createElementVNode("div",d,[t.createElementVNode("div",null,[t.createElementVNode("span",c,[t.createTextVNode(t.toDisplayString(a.orderIndex+1)+"."+t.toDisplayString(t.unref(K))+" ",1),"single"===a.type?(t.openBlock(),t.createElementBlock("span",m,"(单选题)")):["multiple","sort"].includes(a.type)?(t.openBlock(),t.createElementBlock("span",p," ("+t.toDisplayString(t.unref(Q))+t.toDisplayString(t.unref(z)?`至少选${t.unref(z)}项${"sort"===a.type?"并排序":""}`:"")+") ",1)):t.createCommentVNode("v-if",!0)])]),t.unref(F)?(t.openBlock(),t.createElementBlock("div",f,[t.createElementVNode("div",{innerHTML:t.unref(P)},null,8,v)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",y,["sort"===a.type?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:0},t.renderList(t.unref(U),((e,l)=>(t.openBlock(),t.createBlock(u,{key:l,class:"radio",disabled:!0},{default:t.withCtx((()=>[t.createElementVNode("span",x,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title),1)])),_:2},1024)))),128)):(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(t.unref(U),((e,l)=>(t.openBlock(),t.createBlock(T,{key:l,class:"radio",value:"disabled",disabled:""},{default:t.withCtx((()=>[t.createElementVNode("span",C,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title)+" "+t.toDisplayString(e.isCorrect?"(支持选项)":"")+" "+t.toDisplayString(1===t.unref(M)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+t.toDisplayString(2===t.unref(M)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:t.withCtx((()=>[a.showAction?(t.openBlock(),t.createBlock(r.default,{key:0,"is-edit":a.isEdit,"is-set":a.isSet,isKey:t.unref(I),examAnswerRelationType:R.examAnswerRelationType,answerCheckType:t.unref(L),onMoveUp:s[5]||(s[5]=e=>_("move","up")),onMoveDown:s[6]||(s[6]=e=>_("move","down")),onDelete:s[7]||(s[7]=e=>_("delete")),onSave:Z,onEdit:s[8]||(s[8]=e=>_("edit")),onAdd:re,onOnShowRichText:s[9]||(s[9]=e=>F.value=!0),onSetKey:le,onSetAnswerSetting:ae},null,8,["is-edit","is-set","isKey","examAnswerRelationType","answerCheckType"])):t.createCommentVNode("v-if",!0)])),_:2},[a.isEdit?{name:"edit",fn:t.withCtx((()=>[t.createElementVNode("div",{class:t.normalizeClass(["flex",[{"margin-bottom":t.unref(F)}]])},[s[12]||(s[12]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",k,[t.createVNode(A,{modelValue:t.unref(K),"onUpdate:modelValue":s[0]||(s[0]=e=>t.isRef(K)?K.value=e:null),type:"textarea",rows:2,placeholder:`【${t.unref(Q)}】请输入问题`,disabled:a.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),t.createElementVNode("div",V,[s[13]||(s[13]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"设置:")],-1)),["multiple","sort"].includes(a.type)?(t.openBlock(),t.createBlock(ie,{key:0,modelValue:t.unref(z),"onUpdate:modelValue":s[1]||(s[1]=e=>t.isRef(z)?z.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:a.isSave},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(W),(e=>(t.openBlock(),t.createBlock(O,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):t.createCommentVNode("v-if",!0)]),t.createElementVNode("div",w,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(U),((e,r)=>(t.openBlock(),t.createElementBlock("div",{key:r,class:"answer-item flex flex-items-center"},[t.createElementVNode("span",h,t.toDisplayString(String.fromCharCode(65+r))+".",1),t.createVNode(A,{modelValue:e.title,"onUpdate:modelValue":t=>e.title=t,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+r)}`,disabled:a.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(a.type)?(t.openBlock(),t.createBlock(u,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":t=>e.isCorrect=t,class:t.normalizeClass([{"is-correct":e.isCorrect}]),disabled:a.isSave,style:{"margin-left":"10px"},onChange:t=>function(e,t){"single"===R.type?(t&&U.value.forEach((t=>{t!==e&&(t.isCorrect=!1)})),e.isCorrect=t):"multiple"===R.type&&(e.isCorrect=t)}(e,t)},{default:t.withCtx((()=>[...s[14]||(s[14]=[t.createTextVNode(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):t.createCommentVNode("v-if",!0),t.createVNode(se,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.CirclePlus),{class:t.normalizeClass([{disabled:a.isSave}]),onClick:X},null,8,["class"])])),_:1}),t.createVNode(se,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.Remove),{class:t.normalizeClass([{disabled:t.unref(U).length<3||a.isSave}]),onClick:e=>function(e){U.value.length<3||R.isSave||U.value.splice(e,1)}(r)},null,8,["class","onClick"])])),_:2},1024),1===t.unref(M)?(t.openBlock(),t.createBlock(ue,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=r,D.value=t,H.value=U.value[t].resultItem||"",void(G.value=!0);var t}},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0),2===t.unref(M)?(t.openBlock(),t.createBlock(ue,{key:2,type:"primary",class:"margin-left-10",onClick:t=>function(e){e.customAnswerId=e.examAnswerId||i.setGuid(),_("setRelation",R.customId,e)}(e)},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.answerRelations?.length?`关联了${t.unref(ne)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0)])))),128))]),"sort"===a.type?(t.openBlock(),t.createElementBlock("div",g,[s[15]||(s[15]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"排序答案:")],-1)),t.createElementVNode("div",E,[t.createVNode(ie,{modelValue:t.unref(J),"onUpdate:modelValue":s[2]||(s[2]=e=>t.isRef(J)?J.value=e:null),mode:"multiple",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:t.withCtx((()=>[t.createCommentVNode(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(U),((e,l)=>(t.openBlock(),t.createBlock(O,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):t.createCommentVNode("v-if",!0),a.showAnalysis?(t.openBlock(),t.createElementBlock("div",N,[s[16]||(s[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",B,[t.createVNode(A,{modelValue:t.unref($),"onUpdate:modelValue":s[3]||(s[3]=e=>t.isRef($)?$.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):t.createCommentVNode("v-if",!0),t.unref(F)?(t.openBlock(),t.createElementBlock("div",S,[s[18]||(s[18]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"富文本:")],-1)),t.createElementVNode("div",b,[t.createVNode(o.default,t.mergeProps({"model-value":t.unref(P),"onUpdate:modelValue":s[4]||(s[4]=e=>t.isRef(P)?P.value=e:null)},t.unref(j),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",q,[t.createVNode(ue,{type:"danger",onClick:Y},{default:t.withCtx((()=>s[17]||(s[17]=[t.createTextVNode(" 删除富文本 ")]))),_:1})])])])):t.createCommentVNode("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),t.createVNode(ce,{modelValue:t.unref(G),"onUpdate:modelValue":s[11]||(s[11]=e=>t.isRef(G)?G.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(de,{class:"customize-button",type:"primary",plain:"",onClick:te},{default:t.withCtx((()=>s[19]||(s[19]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(de,{class:"customize-button",type:"primary",plain:"",onClick:ee},{default:t.withCtx((()=>s[20]||(s[20]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createBlock(o.default,t.mergeProps({key:t.unref(D),"model-value":t.unref(H),"onUpdate:modelValue":s[10]||(s[10]=e=>t.isRef(H)?H.value=e:null)},t.unref(j),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});exports.default=T;
|
2
2
|
//# sourceMappingURL=subject-single.vue.cjs.map
|