@qxs-bns/components 0.0.33 → 0.0.35

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.
@@ -1,2 +1,2 @@
1
- var r="0.0.33";export{r as version};
1
+ var r="0.0.35";export{r as version};
2
2
  //# sourceMappingURL=package.json.mjs.map
@@ -1,2 +1,2 @@
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,ref as d,computed as c,createElementBlock as r,openBlock as m,normalizeClass as p,unref as f,createElementVNode as y,createCommentVNode as v,createVNode as b,createBlock as k,withCtx as _,createTextVNode as h,isRef as g,Fragment as w,renderList as C,toDisplayString as x}from"vue";import{Edit as V,Delete as j,Top as O,Bottom as S}from"@element-plus/icons-vue";import{useNamespace as E}from"@qxs-bns/hooks";import T from"../../subject-type/src/subject-type.vue.mjs";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=d(R.isKey),D=d(!1),N=K,q=d(R.answerCheckType),Q=E("subject-action"),F=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],G=c((()=>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(d,c)=>{const E=l,K=e,R=a,J=n,L=t,M=u,P=i,W=o;return m(),r("div",{class:p(f(Q).e("action-exam"))},[y("div",{class:p(["action flex",[{active:s.isEdit}]])},[s.isEdit?(m(),r("div",U,[b(K,{trigger:"click"},{reference:_((()=>[b(E,{type:"primary",class:"btn-margin"},{default:_((()=>c[14]||(c[14]=[h(" +在此题后加入新题 ")]))),_:1})])),default:_((()=>[b(T,{onSelect:I})])),_:1}),s.showOtherOption?(m(),k(E,{key:0,type:"primary",onClick:c[0]||(c[0]=e=>N("onShowRichText")),class:"btn-margin"},{default:_((()=>c[15]||(c[15]=[h(" +添加题目描述(图文) ")]))),_:1})):v("v-if",!0),s.showOtherOption?(m(),k(E,{key:1,type:"primary",onClick:c[1]||(c[1]=e=>D.value=!0),class:"btn-margin"},{default:_((()=>c[16]||(c[16]=[h(" 答题设置 ")]))),_:1})):v("v-if",!0),s.showOtherOption?(m(),k(R,{key:2,modelValue:f(z),"onUpdate:modelValue":c[2]||(c[2]=e=>g(z)?z.value=e:null),label:"核心题",onChange:c[3]||(c[3]=e=>N("setKey",f(z)))},null,8,["modelValue"])):v("v-if",!0)])):v("v-if",!0),y("div",null,[s.isSet?(m(),r("div",A," *此题设置了跳题逻辑 ")):(m(),r("div",B,[s.isEdit?(m(),r(w,{key:1},[b(L,{class:"btn-margin",onClick:c[9]||(c[9]=e=>N("delete"))},{default:_((()=>c[21]||(c[21]=[h(" 删除 ")]))),_:1}),b(L,{type:"primary",onClick:c[10]||(c[10]=e=>N("save"))},{default:_((()=>c[22]||(c[22]=[h(" 完成编辑 ")]))),_:1})],64)):(m(),r(w,{key:0},[b(R,{modelValue:f(z),"onUpdate:modelValue":c[4]||(c[4]=e=>g(z)?z.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"]),b(R,{"v-model":!0,label:f(G),disabled:""},null,8,["label"]),s.pageEnd?v("v-if",!0):(m(),k(L,{key:0,class:"btn-margin",onClick:c[5]||(c[5]=e=>N("edit"))},{icon:_((()=>[b(J,null,{default:_((()=>[b(f(V))])),_:1})])),default:_((()=>[c[17]||(c[17]=h(" 编辑 "))])),_:1})),b(L,{class:"btn-margin",onClick:c[6]||(c[6]=e=>N("delete"))},{icon:_((()=>[b(J,null,{default:_((()=>[b(f(j))])),_:1})])),default:_((()=>[c[18]||(c[18]=h(" 删除 "))])),_:1}),b(L,{class:"btn-margin",onClick:c[7]||(c[7]=e=>N("moveUp"))},{icon:_((()=>[b(J,null,{default:_((()=>[b(f(O))])),_:1})])),default:_((()=>[c[19]||(c[19]=h(" 上移 "))])),_:1}),b(L,{class:"btn-margin",onClick:c[8]||(c[8]=e=>N("moveDown"))},{icon:_((()=>[b(J,null,{default:_((()=>[b(f(S))])),_:1})])),default:_((()=>[c[20]||(c[20]=h(" 下移 "))])),_:1})],64))]))]),b(W,{modelValue:f(D),"onUpdate:modelValue":c[13]||(c[13]=e=>g(D)?D.value=e:null),title:"答题设置",class:"customize-dialog"},{footer:_((()=>[b(L,{class:"customize-button",type:"primary",plain:"",onClick:c[12]||(c[12]=e=>D.value=!1)},{default:_((()=>c[23]||(c[23]=[h(" 取消 ")]))),_:1}),b(L,{class:"customize-button",type:"primary",plain:"",onClick:H},{default:_((()=>c[24]||(c[24]=[h(" 保存 ")]))),_:1})])),default:_((()=>[(m(),r(w,null,C(F,(e=>b(P,{modelValue:f(q),"onUpdate:modelValue":c[11]||(c[11]=e=>g(q)?q.value=e:null),class:"vertical-radio-group"},{default:_((()=>[b(M,{value:e.value},{default:_((()=>[h(x(e.label),1)])),_:2},1032,["value"])])),_:2},1032,["modelValue"]))),64))])),_:1},8,["modelValue"])],2)],2)}}});export{K as default};
1
+ import{ElPopover as e,ElLink as l,ElCheckbox as a,ElButton as t,ElIcon as n,ElDialog as o,ElRadioGroup as u,ElRadio as i}from"element-plus/es";import{defineComponent as s,ref as d,computed as c,createElementBlock as r,openBlock as m,normalizeClass as f,unref as p,createElementVNode as v,createCommentVNode as y,createVNode as b,createBlock as k,withCtx as _,createTextVNode as g,isRef as h,Fragment as w,renderList as x,toDisplayString as C}from"vue";import{Edit as V,Delete as j,Top as E,Bottom as O}from"@element-plus/icons-vue";import{useNamespace as B}from"@qxs-bns/hooks";import S from"../../subject-type/src/subject-type.vue.mjs";const T={key:0,class:"flex-justify-between"},U={key:0,class:"has-set"},z={key:1,class:"flex flex-justify-end action-buttons"};var A=s({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit: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:["move-up","move-down","delete","save","edit","add","on-show-rich-text","set-key","set-answer-setting"],setup(s,{emit:A}){const K=s,N=d(K.isKey),R=d(!1),q=A,Q=d(K.answerCheckType),D=B("subject-action"),F=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],G=c((()=>F.find((e=>e.value===Q.value))?.label));function H(){R.value=!1,q("set-answer-setting",Q.value)}function I(){q("set-key",N.value)}function J(e,l){q("add",e,l?K.examAnswerRelationType:null)}return(d,c)=>{const B=l,A=e,K=a,L=n,M=t,P=i,W=u,X=o;return m(),r("div",{class:f(p(D).e("action-exam"))},[v("div",{class:f(["action flex flex-justify-between",[{active:s.isEdit}]])},[s.isEdit?(m(),r("div",T,[b(A,{trigger:"click"},{reference:_((()=>[b(B,{type:"primary",class:"btn-margin"},{default:_((()=>c[14]||(c[14]=[g(" +在此题后加入新题 ")]))),_:1})])),default:_((()=>[b(S,{onSelect:J})])),_:1}),s.showOtherOption?(m(),k(B,{key:0,type:"primary",onClick:c[0]||(c[0]=e=>q("on-show-rich-text")),class:"btn-margin"},{default:_((()=>c[15]||(c[15]=[g(" +添加题目描述(图文) ")]))),_:1})):y("v-if",!0),s.showOtherOption?(m(),k(B,{key:1,type:"primary",onClick:c[1]||(c[1]=e=>R.value=!0),class:"btn-margin"},{default:_((()=>c[16]||(c[16]=[g(" 答题设置 ")]))),_:1})):y("v-if",!0),s.showOtherOption?(m(),k(K,{key:2,modelValue:p(N),"onUpdate:modelValue":c[2]||(c[2]=e=>h(N)?N.value=e:null),label:"核心题",onChange:I},null,8,["modelValue"])):y("v-if",!0)])):y("v-if",!0),v("div",null,[s.isSet?(m(),r("div",U," *此题设置了跳题逻辑 ")):(m(),r("div",z,[s.isEdit?(m(),r(w,{key:1},[b(M,{class:"btn-margin",onClick:c[8]||(c[8]=e=>q("delete"))},{default:_((()=>c[21]||(c[21]=[g(" 删除 ")]))),_:1}),b(M,{type:"primary",onClick:c[9]||(c[9]=e=>q("save"))},{default:_((()=>c[22]||(c[22]=[g(" 完成编辑 ")]))),_:1})],64)):(m(),r(w,{key:0},[s.pageEnd?y("v-if",!0):(m(),k(K,{key:0,modelValue:p(N),"onUpdate:modelValue":c[3]||(c[3]=e=>h(N)?N.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"])),s.pageEnd?y("v-if",!0):(m(),k(K,{key:1,"v-model":!0,label:p(G),disabled:"",class:"checkbox-margin"},null,8,["label"])),s.pageEnd?y("v-if",!0):(m(),k(M,{key:2,class:"btn-margin",onClick:c[4]||(c[4]=e=>q("edit"))},{icon:_((()=>[b(L,null,{default:_((()=>[b(p(V))])),_:1})])),default:_((()=>[c[17]||(c[17]=g(" 编辑 "))])),_:1})),b(M,{class:"btn-margin",onClick:c[5]||(c[5]=e=>q("delete"))},{icon:_((()=>[b(L,null,{default:_((()=>[b(p(j))])),_:1})])),default:_((()=>[c[18]||(c[18]=g(" 删除 "))])),_:1}),b(M,{class:"btn-margin",onClick:c[6]||(c[6]=e=>q("move-up"))},{icon:_((()=>[b(L,null,{default:_((()=>[b(p(E))])),_:1})])),default:_((()=>[c[19]||(c[19]=g(" 上移 "))])),_:1}),b(M,{class:"btn-margin",onClick:c[7]||(c[7]=e=>q("move-down"))},{icon:_((()=>[b(L,null,{default:_((()=>[b(p(O))])),_:1})])),default:_((()=>[c[20]||(c[20]=g(" 下移 "))])),_:1})],64))]))]),b(X,{modelValue:p(R),"onUpdate:modelValue":c[12]||(c[12]=e=>h(R)?R.value=e:null),title:"答题设置",class:"customize-dialog",onClose:c[13]||(c[13]=e=>R.value=!1)},{footer:_((()=>[b(M,{class:"customize-button",type:"primary",plain:"",onClick:c[11]||(c[11]=e=>R.value=!1)},{default:_((()=>c[23]||(c[23]=[g(" 取消 ")]))),_:1}),b(M,{class:"customize-button",type:"primary",plain:"",onClick:H},{default:_((()=>c[24]||(c[24]=[g(" 保存 ")]))),_:1})])),default:_((()=>[b(W,{modelValue:p(Q),"onUpdate:modelValue":c[10]||(c[10]=e=>h(Q)?Q.value=e:null),class:"vertical-radio-group"},{default:_((()=>[(m(),r(w,null,x(F,(e=>b(P,{key:e.value,value:e.value},{default:_((()=>[g(C(e.label),1)])),_:2},1032,["value"]))),64))])),_:1},8,["modelValue"])])),_:1},8,["modelValue"])],2)],2)}}});export{A 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')\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":"srCAQA,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
+ {"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})\n\nconst props = defineProps({\n isEdit: Boolean,\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})\n\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst emits = defineEmits([\n 'move-up',\n 'move-down',\n 'delete',\n 'save',\n 'edit',\n 'add',\n 'on-show-rich-text',\n 'set-key',\n 'set-answer-setting',\n])\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\n\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步',\n },\n {\n value: 1,\n label: '无需判断是否是支持选项',\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步',\n },\n]\n\nconst answerText = computed(() => {\n return answerTextList.find((item) => item.value === answerType.value)?.label\n})\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('set-answer-setting', answerType.value)\n}\n\nfunction setKey() {\n emits('set-key', isKey.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 flex-justify-between\" :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\n type=\"primary\"\n @click=\"emits('on-show-rich-text')\"\n v-if=\"showOtherOption\"\n class=\"btn-margin\"\n >\n +添加题目描述(图文)\n </el-link>\n <el-link\n type=\"primary\"\n @click=\"showAnswerSetting = true\"\n v-if=\"showOtherOption\"\n class=\"btn-margin\"\n >\n 答题设置\n </el-link>\n <el-checkbox\n v-model=\"isKey\"\n label=\"核心题\"\n @change=\"setKey\"\n v-if=\"showOtherOption\"\n />\n </div>\n <div>\n <div v-if=\"isSet\" class=\"has-set\">\n *此题设置了跳题逻辑\n </div>\n <div v-else class=\"flex flex-justify-end action-buttons\">\n <template v-if=\"!isEdit\">\n <el-checkbox\n v-model=\"isKey\"\n label=\"核心题\"\n disabled\n v-if=\"!pageEnd\"\n />\n <el-checkbox\n :v-model=\"true\"\n :label=\"answerText\"\n disabled\n v-if=\"!pageEnd\"\n class=\"checkbox-margin\"\n />\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('move-up')\">\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('move-down')\">\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 @close=\"showAnswerSetting = false\"\n >\n <el-radio-group\n v-model=\"answerType\"\n class=\"vertical-radio-group\"\n >\n <el-radio\n v-for=\"item in answerTextList\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </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>"],"names":["props","__props","isKey","ref","showAnswerSetting","emits","__emit","answerType","answerCheckType","ns","useNamespace","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","setKey","selectExam","type","canSet","examAnswerRelationType"],"mappings":"irCASA,MAAMA,EAAQC,EA4BRC,EAAQC,EAAIH,EAAME,OAClBE,EAAoBD,GAAI,GACxBE,EAAQC,EAWRC,EAAaJ,EAAIH,EAAMQ,iBACvBC,EAAKC,EAAa,kBAElBC,EAAiB,CACrB,CACEC,MAAO,EACPC,MAAO,oBAET,CACED,MAAO,EACPC,MAAO,eAET,CACED,MAAO,EACPC,MAAO,mBAILC,EAAaC,GAAS,IACnBJ,EAAeK,MAAMC,GAASA,EAAKL,QAAUL,EAAWK,SAAQC,QAGzE,SAASK,IACPd,EAAkBQ,OAAQ,EACpBP,EAAA,qBAAsBE,EAAWK,MAAK,CAG9C,SAASO,IACDd,EAAA,UAAWH,EAAMU,MAAK,CAGrB,SAAAQ,EAAWC,EAAcC,GAChCjB,EAAM,MAAOgB,EAAMC,EAAStB,EAAMuB,uBAAyB,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}from"element-plus/es";import{defineComponent as u,useAttrs as d,ref as m,computed as c,watch as p,onMounted as v,createElementBlock as y,openBlock as f,normalizeClass as x,unref as w,createVNode as h,createSlots as C,withCtx as g,createBlock as b,createCommentVNode as k,createElementVNode as S,createTextVNode as A,toDisplayString as V,Fragment as T,renderList as q,isRef as R,mergeProps as j}from"vue";import{CirclePlus as _,Remove as I}from"@element-plus/icons-vue";import{useNamespace as E}from"@qxs-bns/hooks";import U from"../../../subject-action/src/subject-action.vue.mjs";import B from"../../../subject-layout/src/subject-layout.vue.mjs";import K from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{setGuid as L}from"@qxs-bns/utils";import{ElMessage as $}from"element-plus";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=d(),ue=m(0),de=m(!1),me=m(1),ce=m(1),pe=m([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ve=m(),ye=m(""),fe=m(""),xe=m(!1),we=m(""),he=m(0),Ce=m(!1),ge=m(""),be=c((()=>"single"===ne.type?"单选题":"multiple"===ne.type?"多选题":"排序题")),ke=m([]),Se=c((()=>{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:L()})}function Ve(){xe.value=!1,we.value=""}function Te(){if(!ye.value)return void $.error("题目标题不能为空!");let e="",l=!1,t=0;if("multiple"===ne.type||"single"===ne.type?pe.value.forEach(((a,i)=>{a.title?.trim()||(e+=`选项${String.fromCharCode(65+i)}未填写。`),a.isCorrect&&(l=!0,t++),a.examAnswerRelationType=a.resultItem?1:a.answerRelations?.length?2:null})):"sort"===ne.type&&ke.value.length&&(l=!0),e)return void $.error(e);if(new Set(pe.value.map((e=>e.title))).size===pe.value.length){if("multiple"===ne.type){if(1===t)return void $.error("请至少设置两个支持选项");if(l&&t<ve.value)return void $.error("至少选几项与支持选项数不符")}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}):$.error("请设置支持选项")}else $.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 Ie(e,l){re("add",e,l?ne.examAnswerRelationType:null)}p((()=>ne.isEdit),(()=>{ne.isEdit&&(he.value=(new Date).getTime())}));const Ee=c((()=>e=>{let l=0;return e.forEach((e=>{e.relationAnswers&&(l+=e.relationAnswers.length)})),l})),Ue=E("subject-single");return v((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,d)=>{const m=e,c=l,p=t,v=i,E=a,$=s,se=n,he=o,Be=r;return f(),y("div",{class:x(w(Ue).e("single-exam"))},[h(B,{"show-edit":u.isEdit},C({preview:g((()=>[S("div",N,[S("div",null,[S("span",z,[A(V(u.orderIndex+1)+"."+V(w(ye))+" ",1),"single"===u.type?(f(),y("span",M,"(单选题)")):["multiple","sort"].includes(u.type)?(f(),y("span",D," ("+V(w(be))+V(w(ve)?`至少选${w(ve)}项${"sort"===u.type?"并排序":""}`:"")+") ",1)):k("v-if",!0)])]),w(xe)?(f(),y("div",H,[S("div",{innerHTML:w(we)},null,8,O)])):k("v-if",!0),S("div",Q,["sort"===u.type?(f(!0),y(T,{key:0},q(w(pe),((e,l)=>(f(),b(m,{key:l,class:"radio",disabled:!0},{default:g((()=>[S("span",F,V(String.fromCharCode(65+l))+". ",1),A(" "+V(e.title),1)])),_:2},1024)))),128)):(f(!0),y(T,{key:1},q(w(pe),((e,l)=>(f(),b(c,{key:l,class:"radio",value:"disabled",disabled:""},{default:g((()=>[S("span",G,V(String.fromCharCode(65+l))+". ",1),A(" "+V(e.title)+" "+V(e.isCorrect?"(支持选项)":"")+" "+V(1===w(ce)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+V(2===w(ce)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:g((()=>[u.showAction?(f(),b(U,{key:0,"is-edit":u.isEdit,"is-set":u.isSet,isKey:w(de),examAnswerRelationType:ne.examAnswerRelationType,answerCheckType:w(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=>xe.value=!0),onSetKey:je,onSetAnswerSetting:_e},null,8,["is-edit","is-set","isKey","examAnswerRelationType","answerCheckType"])):k("v-if",!0)])),_:2},[u.isEdit?{name:"edit",fn:g((()=>[S("div",{class:x(["flex",[{"margin-bottom":w(xe)}]])},[d[12]||(d[12]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"题目:")],-1)),S("div",J,[h(p,{modelValue:w(ye),"onUpdate:modelValue":d[0]||(d[0]=e=>R(ye)?ye.value=e:null),type:"textarea",rows:2,placeholder:`【${w(be)}】请输入问题`,disabled:u.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),S("div",P,[d[13]||(d[13]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"设置:")],-1)),["multiple","sort"].includes(u.type)?(f(),b(E,{key:0,modelValue:w(ve),"onUpdate:modelValue":d[1]||(d[1]=e=>R(ve)?ve.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:u.isSave},{default:g((()=>[(f(!0),y(T,null,q(w(Se),(e=>(f(),b(v,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):k("v-if",!0)]),S("div",W,[(f(!0),y(T,null,q(w(pe),((e,l)=>(f(),y("div",{key:l,class:"answer-item flex flex-items-center"},[S("span",X,V(String.fromCharCode(65+l))+".",1),h(p,{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)?(f(),b(m,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":l=>e.isCorrect=l,class:x([{"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:g((()=>[...d[14]||(d[14]=[A(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):k("v-if",!0),h($,{class:"icon"},{default:g((()=>[h(w(_),{class:x([{disabled:u.isSave}]),onClick:Ae},null,8,["class"])])),_:1}),h($,{class:"icon"},{default:g((()=>[h(w(I),{class:x([{disabled:w(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===w(ce)?(f(),b(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:g((()=>[S("span",null,V(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):k("v-if",!0),2===w(ce)?(f(),b(se,{key:2,type:"primary",class:"margin-left-10",onClick:l=>function(e){e.customAnswerId=e.examAnswerId||L(),re("setRelation",ne.customId,e)}(e)},{default:g((()=>[S("span",null,V(e.answerRelations?.length?`关联了${w(Ee)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):k("v-if",!0)])))),128))]),"sort"===u.type?(f(),y("div",Y,[d[15]||(d[15]=S("div",{class:"label flex flex-justify-end"},[S("span",null,"排序答案:")],-1)),S("div",Z,[h(E,{modelValue:w(ke),"onUpdate:modelValue":d[2]||(d[2]=e=>R(ke)?ke.value=e:null),mode:"multiple",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:g((()=>[k(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(f(!0),y(T,null,q(w(pe),((e,l)=>(f(),b(v,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):k("v-if",!0),u.showAnalysis?(f(),y("div",ee,[d[16]||(d[16]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"解析:")],-1)),S("div",le,[h(p,{modelValue:w(fe),"onUpdate:modelValue":d[3]||(d[3]=e=>R(fe)?fe.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):k("v-if",!0),w(xe)?(f(),y("div",te,[d[18]||(d[18]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"富文本:")],-1)),S("div",ae,[h(K,j({"model-value":w(we),"onUpdate:modelValue":d[4]||(d[4]=e=>R(we)?we.value=e:null)},w(oe),{style:{width:"100%"}}),null,16,["model-value"]),S("div",ie,[h(se,{type:"danger",onClick:Ve},{default:g((()=>d[17]||(d[17]=[A(" 删除富文本 ")]))),_:1})])])])):k("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),h(Be,{modelValue:w(Ce),"onUpdate:modelValue":d[11]||(d[11]=e=>R(Ce)?Ce.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:g((()=>[h(he,{class:"customize-button",type:"primary",plain:"",onClick:Re},{default:g((()=>d[19]||(d[19]=[A(" 取消 ")]))),_:1}),h(he,{class:"customize-button",type:"primary",plain:"",onClick:qe},{default:g((()=>d[20]||(d[20]=[A(" 保存 ")]))),_:1})])),default:g((()=>[(f(),b(K,j({key:w(ue),"model-value":w(ge),"onUpdate:modelValue":d[10]||(d[10]=e=>R(ge)?ge.value=e:null)},w(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,ElMessage as u}from"element-plus/es";import{defineComponent as d,useAttrs as m,ref as c,computed as p,watch as v,onMounted as y,createElementBlock as f,openBlock as x,normalizeClass as w,unref as h,createVNode as C,createSlots as g,withCtx as b,createBlock as k,createCommentVNode as S,createElementVNode as A,createTextVNode as V,toDisplayString as T,Fragment as q,renderList as R,isRef as j,mergeProps as _}from"vue";import{CirclePlus as I,Remove as E}from"@element-plus/icons-vue";import{useNamespace as U}from"@qxs-bns/hooks";import B from"../../../subject-action/src/subject-action.vue.mjs";import L from"../../../subject-layout/src/subject-layout.vue.mjs";import $ from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{setGuid as K}from"@qxs-bns/utils";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=m(),ue=c(0),de=c(ne.isKey),me=c(1),ce=c(1),pe=c([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ve=c(2),ye=c(""),fe=c(""),xe=c(!1),we=c(""),he=c(0),Ce=c(!1),ge=c(""),be=p((()=>"single"===ne.type?"单选题":"multiple"===ne.type?"多选题":"排序题")),ke=c([]),Se=p((()=>{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:K()})}function Ve(){xe.value=!1,we.value=""}function Te(){if(!ye.value)return void u.error("题目标题不能为空!");let e="",l=!1,t=0;if("multiple"===ne.type||"single"===ne.type?pe.value.forEach(((a,i)=>{a.title?.trim()||(e+=`选项${String.fromCharCode(65+i)}未填写。`),a.isCorrect&&(l=!0,t++),a.relationType=a.resultItem?1:a.answerRelations?.length?2:null})):"sort"===ne.type&&ke.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===t)return void u.error("请至少设置两个支持选项");if(l&&t<ve.value)return void u.error("至少选几项与支持选项数不符")}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}):u.error("请设置支持选项")}else u.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 Ie(e,l){re("add",e,l?ne.examAnswerRelationType:null)}v((()=>ne.isEdit),(()=>{ne.isEdit&&(he.value=(new Date).getTime())}));const Ee=p((()=>e=>{let l=0;return e.forEach((e=>{e.relationAnswers&&(l+=e.relationAnswers.length)})),l})),Ue=U("subject-single");return y((function(){if(ne.title&&(ye.value=ne.title),ne.answerCheckType&&(me.value=ne.answerCheckType),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,d)=>{const m=e,c=l,p=t,v=i,y=a,U=s,se=n,he=o,Be=r;return x(),f("div",{class:w(h(Ue).e("single-exam"))},[C(L,{"show-edit":u.isEdit},g({preview:b((()=>[A("div",N,[A("div",null,[A("span",z,[V(T(u.orderIndex+1)+"."+T(h(ye))+" ",1),"single"===u.type?(x(),f("span",M,"(单选题)")):["multiple","sort"].includes(u.type)?(x(),f("span",D," ("+T(h(be))+T(h(ve)?`至少选${h(ve)}项${"sort"===u.type?"并排序":""}`:"")+") ",1)):S("v-if",!0)])]),h(xe)?(x(),f("div",H,[A("div",{innerHTML:h(we)},null,8,O)])):S("v-if",!0),A("div",Q,["sort"===u.type?(x(!0),f(q,{key:0},R(h(pe),((e,l)=>(x(),k(m,{key:l,class:"radio",disabled:!0},{default:b((()=>[A("span",F,T(String.fromCharCode(65+l))+". ",1),V(" "+T(e.title),1)])),_:2},1024)))),128)):(x(!0),f(q,{key:1},R(h(pe),((e,l)=>(x(),k(c,{key:l,class:"radio",value:"disabled",disabled:""},{default:b((()=>[A("span",G,T(String.fromCharCode(65+l))+". ",1),V(" "+T(e.title)+" "+T(e.isCorrect?"(支持选项)":"")+" "+T(1===h(ce)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+T(2===h(ce)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:b((()=>[u.showAction?(x(),k(B,{key:0,"is-edit":u.isEdit,"is-set":u.isSet,isKey:h(de),examAnswerRelationType:ne.examAnswerRelationType,answerCheckType:h(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=>xe.value=!0),onSetKey:je,onSetAnswerSetting:_e},null,8,["is-edit","is-set","isKey","examAnswerRelationType","answerCheckType"])):S("v-if",!0)])),_:2},[u.isEdit?{name:"edit",fn:b((()=>[A("div",{class:w(["flex",[{"margin-bottom":h(xe)}]])},[d[12]||(d[12]=A("div",{class:"label flex flex-justify-center"},[A("span",null,"题目:")],-1)),A("div",J,[C(p,{modelValue:h(ye),"onUpdate:modelValue":d[0]||(d[0]=e=>j(ye)?ye.value=e:null),type:"textarea",rows:2,placeholder:`【${h(be)}】请输入问题`,disabled:u.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),A("div",P,[d[13]||(d[13]=A("div",{class:"label flex flex-justify-center"},[A("span",null,"设置:")],-1)),["multiple","sort"].includes(u.type)?(x(),k(y,{key:0,modelValue:h(ve),"onUpdate:modelValue":d[1]||(d[1]=e=>j(ve)?ve.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:u.isSave},{default:b((()=>[(x(!0),f(q,null,R(h(Se),(e=>(x(),k(v,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):S("v-if",!0)]),A("div",W,[(x(!0),f(q,null,R(h(pe),((e,l)=>(x(),f("div",{key:l,class:"answer-item flex flex-items-center"},[A("span",X,T(String.fromCharCode(65+l))+".",1),C(p,{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)?(x(),k(m,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":l=>e.isCorrect=l,class:w([{"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:b((()=>[...d[14]||(d[14]=[V(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):S("v-if",!0),C(U,{class:"icon"},{default:b((()=>[C(h(I),{class:w([{disabled:u.isSave}]),onClick:Ae},null,8,["class"])])),_:1}),C(U,{class:"icon"},{default:b((()=>[C(h(E),{class:w([{disabled:h(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===h(ce)?(x(),k(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:b((()=>[A("span",null,T(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):S("v-if",!0),2===h(ce)?(x(),k(se,{key:2,type:"primary",class:"margin-left-10",onClick:l=>function(e){e.customAnswerId=e.examAnswerId||K(),re("setRelation",ne.customId,e)}(e)},{default:b((()=>[A("span",null,T(e.answerRelations?.length?`关联了${h(Ee)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):S("v-if",!0)])))),128))]),"sort"===u.type?(x(),f("div",Y,[d[15]||(d[15]=A("div",{class:"label flex flex-justify-end"},[A("span",null,"排序答案:")],-1)),A("div",Z,[C(y,{modelValue:h(ke),"onUpdate:modelValue":d[2]||(d[2]=e=>j(ke)?ke.value=e:null),mode:"multiple",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:b((()=>[S(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(x(!0),f(q,null,R(h(pe),((e,l)=>(x(),k(v,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):S("v-if",!0),u.showAnalysis?(x(),f("div",ee,[d[16]||(d[16]=A("div",{class:"label flex flex-justify-center"},[A("span",null,"解析:")],-1)),A("div",le,[C(p,{modelValue:h(fe),"onUpdate:modelValue":d[3]||(d[3]=e=>j(fe)?fe.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):S("v-if",!0),h(xe)?(x(),f("div",te,[d[18]||(d[18]=A("div",{class:"label flex flex-justify-center"},[A("span",null,"富文本:")],-1)),A("div",ae,[C($,_({"model-value":h(we),"onUpdate:modelValue":d[4]||(d[4]=e=>j(we)?we.value=e:null)},h(oe),{style:{width:"100%"}}),null,16,["model-value"]),A("div",ie,[C(se,{type:"danger",onClick:Ve},{default:b((()=>d[17]||(d[17]=[V(" 删除富文本 ")]))),_:1})])])])):S("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),C(Be,{modelValue:h(Ce),"onUpdate:modelValue":d[11]||(d[11]=e=>j(Ce)?Ce.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:b((()=>[C(he,{class:"customize-button",type:"primary",plain:"",onClick:Re},{default:b((()=>d[19]||(d[19]=[V(" 取消 ")]))),_:1}),C(he,{class:"customize-button",type:"primary",plain:"",onClick:qe},{default:b((()=>d[20]||(d[20]=[V(" 保存 ")]))),_:1})])),default:b((()=>[(x(),k($,_({key:h(ue),"model-value":h(ge),"onUpdate:modelValue":d[10]||(d[10]=e=>j(ge)?ge.value=e:null)},h(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'\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?.trim()) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n v.examAnswerRelationType = v.resultItem ? 1 : (v.answerRelations?.length ? 2 : null)\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 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","trim","String","fromCharCode","answerRelations","Set","map","item","size","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
+ {"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(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(2)\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?.trim()) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n v.relationType = v.resultItem ? 1 : (v.answerRelations?.length ? 2 : null)\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 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","trim","String","fromCharCode","relationType","answerRelations","Set","map","item","size","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
- "use strict";exports.version="0.0.33";
1
+ "use strict";exports.version="0.0.35";
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"),l=require("@element-plus/icons-vue"),a=require("@qxs-bns/hooks"),o=require("../../subject-type/src/subject-type.vue.cjs");const n={key:0,class:"flex-justify-between"},c={key:0,class:"has-set"},r={key:1,class:"flex flex-justify-end",style:{width:"100%"}};var i=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(i,{emit:d}){const u=i,s=t.ref(u.isKey),m=t.ref(!1),p=d,f=t.ref(u.answerCheckType),V=a.useNamespace("subject-action"),x=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],k=t.computed((()=>x.find((e=>e.value===f.value))?.label));function C(){m.value=!1,p("setAnswerSetting",f.value)}function N(e,t){p("add",e,t?u.examAnswerRelationType:null)}return(a,d)=>{const u=e.ElLink,h=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(V).e("action-exam"))},[t.createElementVNode("div",{class:t.normalizeClass(["action flex",[{active:i.isEdit}]])},[i.isEdit?(t.openBlock(),t.createElementBlock("div",n,[t.createVNode(h,{trigger:"click"},{reference:t.withCtx((()=>[t.createVNode(u,{type:"primary",class:"btn-margin"},{default:t.withCtx((()=>d[14]||(d[14]=[t.createTextVNode(" +在此题后加入新题 ")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(o.default,{onSelect:N})])),_:1}),i.showOtherOption?(t.openBlock(),t.createBlock(u,{key:0,type:"primary",onClick:d[0]||(d[0]=e=>p("onShowRichText")),class:"btn-margin"},{default:t.withCtx((()=>d[15]||(d[15]=[t.createTextVNode(" +添加题目描述(图文) ")]))),_:1})):t.createCommentVNode("v-if",!0),i.showOtherOption?(t.openBlock(),t.createBlock(u,{key:1,type:"primary",onClick:d[1]||(d[1]=e=>m.value=!0),class:"btn-margin"},{default:t.withCtx((()=>d[16]||(d[16]=[t.createTextVNode(" 答题设置 ")]))),_:1})):t.createCommentVNode("v-if",!0),i.showOtherOption?(t.openBlock(),t.createBlock(v,{key:2,modelValue:t.unref(s),"onUpdate:modelValue":d[2]||(d[2]=e=>t.isRef(s)?s.value=e:null),label:"核心题",onChange:d[3]||(d[3]=e=>p("setKey",t.unref(s)))},null,8,["modelValue"])):t.createCommentVNode("v-if",!0)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",null,[i.isSet?(t.openBlock(),t.createElementBlock("div",c," *此题设置了跳题逻辑 ")):(t.openBlock(),t.createElementBlock("div",r,[i.isEdit?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createVNode(w,{class:"btn-margin",onClick:d[9]||(d[9]=e=>p("delete"))},{default:t.withCtx((()=>d[21]||(d[21]=[t.createTextVNode(" 删除 ")]))),_:1}),t.createVNode(w,{type:"primary",onClick:d[10]||(d[10]=e=>p("save"))},{default:t.withCtx((()=>d[22]||(d[22]=[t.createTextVNode(" 完成编辑 ")]))),_:1})],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[t.createVNode(v,{modelValue:t.unref(s),"onUpdate:modelValue":d[4]||(d[4]=e=>t.isRef(s)?s.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"]),t.createVNode(v,{"v-model":!0,label:t.unref(k),disabled:""},null,8,["label"]),i.pageEnd?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createBlock(w,{key:0,class:"btn-margin",onClick:d[5]||(d[5]=e=>p("edit"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Edit))])),_:1})])),default:t.withCtx((()=>[d[17]||(d[17]=t.createTextVNode(" 编辑 "))])),_:1})),t.createVNode(w,{class:"btn-margin",onClick:d[6]||(d[6]=e=>p("delete"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Delete))])),_:1})])),default:t.withCtx((()=>[d[18]||(d[18]=t.createTextVNode(" 删除 "))])),_:1}),t.createVNode(w,{class:"btn-margin",onClick:d[7]||(d[7]=e=>p("moveUp"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Top))])),_:1})])),default:t.withCtx((()=>[d[19]||(d[19]=t.createTextVNode(" 上移 "))])),_:1}),t.createVNode(w,{class:"btn-margin",onClick:d[8]||(d[8]=e=>p("moveDown"))},{icon:t.withCtx((()=>[t.createVNode(y,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Bottom))])),_:1})])),default:t.withCtx((()=>[d[20]||(d[20]=t.createTextVNode(" 下移 "))])),_:1})],64))]))]),t.createVNode(E,{modelValue:t.unref(m),"onUpdate:modelValue":d[13]||(d[13]=e=>t.isRef(m)?m.value=e:null),title:"答题设置",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(w,{class:"customize-button",type:"primary",plain:"",onClick:d[12]||(d[12]=e=>m.value=!1)},{default:t.withCtx((()=>d[23]||(d[23]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(w,{class:"customize-button",type:"primary",plain:"",onClick:C},{default:t.withCtx((()=>d[24]||(d[24]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(x,(e=>t.createVNode(B,{modelValue:t.unref(f),"onUpdate:modelValue":d[11]||(d[11]=e=>t.isRef(f)?f.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=i;
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");const n={key:0,class:"flex-justify-between"},c={key:0,class:"has-set"},r={key:1,class:"flex flex-justify-end action-buttons"};var i=t.defineComponent({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit: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:["move-up","move-down","delete","save","edit","add","on-show-rich-text","set-key","set-answer-setting"],setup(i,{emit:d}){const u=i,s=t.ref(u.isKey),m=t.ref(!1),p=d,f=t.ref(u.answerCheckType),k=a.useNamespace("subject-action"),V=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],x=t.computed((()=>V.find((e=>e.value===f.value))?.label));function C(){m.value=!1,p("set-answer-setting",f.value)}function v(){p("set-key",s.value)}function y(e,t){p("add",e,t?u.examAnswerRelationType:null)}return(a,d)=>{const u=e.ElLink,N=e.ElPopover,h=e.ElCheckbox,w=e.ElIcon,b=e.ElButton,B=e.ElRadio,E=e.ElRadioGroup,g=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(k).e("action-exam"))},[t.createElementVNode("div",{class:t.normalizeClass(["action flex flex-justify-between",[{active:i.isEdit}]])},[i.isEdit?(t.openBlock(),t.createElementBlock("div",n,[t.createVNode(N,{trigger:"click"},{reference:t.withCtx((()=>[t.createVNode(u,{type:"primary",class:"btn-margin"},{default:t.withCtx((()=>d[14]||(d[14]=[t.createTextVNode(" +在此题后加入新题 ")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(o.default,{onSelect:y})])),_:1}),i.showOtherOption?(t.openBlock(),t.createBlock(u,{key:0,type:"primary",onClick:d[0]||(d[0]=e=>p("on-show-rich-text")),class:"btn-margin"},{default:t.withCtx((()=>d[15]||(d[15]=[t.createTextVNode(" +添加题目描述(图文) ")]))),_:1})):t.createCommentVNode("v-if",!0),i.showOtherOption?(t.openBlock(),t.createBlock(u,{key:1,type:"primary",onClick:d[1]||(d[1]=e=>m.value=!0),class:"btn-margin"},{default:t.withCtx((()=>d[16]||(d[16]=[t.createTextVNode(" 答题设置 ")]))),_:1})):t.createCommentVNode("v-if",!0),i.showOtherOption?(t.openBlock(),t.createBlock(h,{key:2,modelValue:t.unref(s),"onUpdate:modelValue":d[2]||(d[2]=e=>t.isRef(s)?s.value=e:null),label:"核心题",onChange:v},null,8,["modelValue"])):t.createCommentVNode("v-if",!0)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",null,[i.isSet?(t.openBlock(),t.createElementBlock("div",c," *此题设置了跳题逻辑 ")):(t.openBlock(),t.createElementBlock("div",r,[i.isEdit?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createVNode(b,{class:"btn-margin",onClick:d[8]||(d[8]=e=>p("delete"))},{default:t.withCtx((()=>d[21]||(d[21]=[t.createTextVNode(" 删除 ")]))),_:1}),t.createVNode(b,{type:"primary",onClick:d[9]||(d[9]=e=>p("save"))},{default:t.withCtx((()=>d[22]||(d[22]=[t.createTextVNode(" 完成编辑 ")]))),_:1})],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[i.pageEnd?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createBlock(h,{key:0,modelValue:t.unref(s),"onUpdate:modelValue":d[3]||(d[3]=e=>t.isRef(s)?s.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"])),i.pageEnd?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createBlock(h,{key:1,"v-model":!0,label:t.unref(x),disabled:"",class:"checkbox-margin"},null,8,["label"])),i.pageEnd?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createBlock(b,{key:2,class:"btn-margin",onClick:d[4]||(d[4]=e=>p("edit"))},{icon:t.withCtx((()=>[t.createVNode(w,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Edit))])),_:1})])),default:t.withCtx((()=>[d[17]||(d[17]=t.createTextVNode(" 编辑 "))])),_:1})),t.createVNode(b,{class:"btn-margin",onClick:d[5]||(d[5]=e=>p("delete"))},{icon:t.withCtx((()=>[t.createVNode(w,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Delete))])),_:1})])),default:t.withCtx((()=>[d[18]||(d[18]=t.createTextVNode(" 删除 "))])),_:1}),t.createVNode(b,{class:"btn-margin",onClick:d[6]||(d[6]=e=>p("move-up"))},{icon:t.withCtx((()=>[t.createVNode(w,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Top))])),_:1})])),default:t.withCtx((()=>[d[19]||(d[19]=t.createTextVNode(" 上移 "))])),_:1}),t.createVNode(b,{class:"btn-margin",onClick:d[7]||(d[7]=e=>p("move-down"))},{icon:t.withCtx((()=>[t.createVNode(w,null,{default:t.withCtx((()=>[t.createVNode(t.unref(l.Bottom))])),_:1})])),default:t.withCtx((()=>[d[20]||(d[20]=t.createTextVNode(" 下移 "))])),_:1})],64))]))]),t.createVNode(g,{modelValue:t.unref(m),"onUpdate:modelValue":d[12]||(d[12]=e=>t.isRef(m)?m.value=e:null),title:"答题设置",class:"customize-dialog",onClose:d[13]||(d[13]=e=>m.value=!1)},{footer:t.withCtx((()=>[t.createVNode(b,{class:"customize-button",type:"primary",plain:"",onClick:d[11]||(d[11]=e=>m.value=!1)},{default:t.withCtx((()=>d[23]||(d[23]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(b,{class:"customize-button",type:"primary",plain:"",onClick:C},{default:t.withCtx((()=>d[24]||(d[24]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[t.createVNode(E,{modelValue:t.unref(f),"onUpdate:modelValue":d[10]||(d[10]=e=>t.isRef(f)?f.value=e:null),class:"vertical-radio-group"},{default:t.withCtx((()=>[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(V,(e=>t.createVNode(B,{key:e.value,value:e.value},{default:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.label),1)])),_:2},1032,["value"]))),64))])),_:1},8,["modelValue"])])),_:1},8,["modelValue"])],2)],2)}}});exports.default=i;
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')\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":"yzBAQA,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
+ {"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})\n\nconst props = defineProps({\n isEdit: Boolean,\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})\n\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst emits = defineEmits([\n 'move-up',\n 'move-down',\n 'delete',\n 'save',\n 'edit',\n 'add',\n 'on-show-rich-text',\n 'set-key',\n 'set-answer-setting',\n])\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\n\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步',\n },\n {\n value: 1,\n label: '无需判断是否是支持选项',\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步',\n },\n]\n\nconst answerText = computed(() => {\n return answerTextList.find((item) => item.value === answerType.value)?.label\n})\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('set-answer-setting', answerType.value)\n}\n\nfunction setKey() {\n emits('set-key', isKey.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 flex-justify-between\" :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\n type=\"primary\"\n @click=\"emits('on-show-rich-text')\"\n v-if=\"showOtherOption\"\n class=\"btn-margin\"\n >\n +添加题目描述(图文)\n </el-link>\n <el-link\n type=\"primary\"\n @click=\"showAnswerSetting = true\"\n v-if=\"showOtherOption\"\n class=\"btn-margin\"\n >\n 答题设置\n </el-link>\n <el-checkbox\n v-model=\"isKey\"\n label=\"核心题\"\n @change=\"setKey\"\n v-if=\"showOtherOption\"\n />\n </div>\n <div>\n <div v-if=\"isSet\" class=\"has-set\">\n *此题设置了跳题逻辑\n </div>\n <div v-else class=\"flex flex-justify-end action-buttons\">\n <template v-if=\"!isEdit\">\n <el-checkbox\n v-model=\"isKey\"\n label=\"核心题\"\n disabled\n v-if=\"!pageEnd\"\n />\n <el-checkbox\n :v-model=\"true\"\n :label=\"answerText\"\n disabled\n v-if=\"!pageEnd\"\n class=\"checkbox-margin\"\n />\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('move-up')\">\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('move-down')\">\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 @close=\"showAnswerSetting = false\"\n >\n <el-radio-group\n v-model=\"answerType\"\n class=\"vertical-radio-group\"\n >\n <el-radio\n v-for=\"item in answerTextList\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </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>"],"names":["props","__props","isKey","ref","showAnswerSetting","emits","__emit","answerType","answerCheckType","ns","useNamespace","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","setKey","selectExam","type","canSet","examAnswerRelationType"],"mappings":"ozBASA,MAAMA,EAAQC,EA4BRC,EAAQC,EAAAA,IAAIH,EAAME,OAClBE,EAAoBD,OAAI,GACxBE,EAAQC,EAWRC,EAAaJ,EAAAA,IAAIH,EAAMQ,iBACvBC,EAAKC,eAAa,kBAElBC,EAAiB,CACrB,CACEC,MAAO,EACPC,MAAO,oBAET,CACED,MAAO,EACPC,MAAO,eAET,CACED,MAAO,EACPC,MAAO,mBAILC,EAAaC,EAAAA,UAAS,IACnBJ,EAAeK,MAAMC,GAASA,EAAKL,QAAUL,EAAWK,SAAQC,QAGzE,SAASK,IACPd,EAAkBQ,OAAQ,EACpBP,EAAA,qBAAsBE,EAAWK,MAAK,CAG9C,SAASO,IACDd,EAAA,UAAWH,EAAMU,MAAK,CAGrB,SAAAQ,EAAWC,EAAcC,GAChCjB,EAAM,MAAOgB,EAAMC,EAAStB,EAAMuB,uBAAyB,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("element-plus");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,_=t.useAttrs(),j=t.ref(0),D=t.ref(!1),I=t.ref(1),L=t.ref(1),M=t.ref([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),U=t.ref(),z=t.ref(""),K=t.ref(""),$=t.ref(!1),F=t.ref(""),P=t.ref(0),O=t.ref(!1),G=t.ref(""),H=t.computed((()=>"single"===R.type?"单选题":"multiple"===R.type?"多选题":"排序题")),Q=t.ref([]),J=t.computed((()=>{const e=[];for(let t=M.value.length;t>1;t--)e.push({label:`至少选择${t}项`,value:t});return e.reverse()}));function W(){R.isSave||M.value.push({title:"",isCorrect:!1,customAnswerId:i.setGuid()})}function X(){$.value=!1,F.value=""}function Y(){if(!z.value)return void s.ElMessage.error("题目标题不能为空!");let e="",t=!1,l=0;if("multiple"===R.type||"single"===R.type?M.value.forEach(((a,r)=>{a.title?.trim()||(e+=`选项${String.fromCharCode(65+r)}未填写。`),a.isCorrect&&(t=!0,l++),a.examAnswerRelationType=a.resultItem?1:a.answerRelations?.length?2:null})):"sort"===R.type&&Q.value.length&&(t=!0),e)return void s.ElMessage.error(e);if(new Set(M.value.map((e=>e.title))).size===M.value.length){if("multiple"===R.type){if(1===l)return void s.ElMessage.error("请至少设置两个支持选项");if(t&&l<U.value)return void s.ElMessage.error("至少选几项与支持选项数不符")}2!==I.value&&3!==I.value||t?A("save",{title:z.value,answers:M.value.map(((e,t)=>({...e,orderIndex:t+1}))),examExpand:Q.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:K.value,isSetCorrectAnswer:t,leastAnswerCount:U.value,examRichTextContent:$.value?F.value:"",examAnswerRelationType:L.value,isKey:D.value,answerCheckType:I.value}):s.ElMessage.error("请设置支持选项")}else s.ElMessage.error("选项不能重复")}function Z(){M.value[j.value].resultItem=G.value||"",O.value=!1}function ee(){O.value=!1,G.value=""}function te(e){D.value=e}function le(e){I.value=e}function ae(e,t){A("add",e,t?R.examAnswerRelationType:null)}t.watch((()=>R.isEdit),(()=>{R.isEdit&&(P.value=(new Date).getTime())}));const re=t.computed((()=>e=>{let t=0;return e.forEach((e=>{e.relationAnswers&&(t+=e.relationAnswers.length)})),t})),ne=a.useNamespace("subject-single");return t.onMounted((function(){if(R.title&&(z.value=R.title),R.answerCheckType&&(I.value=R.answerCheckType),R.isKey&&(D.value=R.isKey),R.examAnswerRelationType&&(L.value=R.examAnswerRelationType),R.answerList&&R.answerList.length&&(M.value=R.answerList),R.leastAnswerCount&&(U.value=R.leastAnswerCount),R.examExpand&&R.examExpand){const e=R.examExpand.split(",");Q.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&&(K.value=R.analysis),R.examRichTextContent&&(F.value=R.examRichTextContent,$.value=!0)})),(a,s)=>{const T=e.ElCheckbox,q=e.ElRadio,P=e.ElInput,oe=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(ne).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(z))+" ",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(H))+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(F)},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(M),((e,l)=>(t.openBlock(),t.createBlock(T,{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(M),((e,l)=>(t.openBlock(),t.createBlock(q,{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===t.unref(L)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+t.toDisplayString(2===t.unref(L)?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(D),examAnswerRelationType:R.examAnswerRelationType,answerCheckType:t.unref(I),onMoveUp:s[5]||(s[5]=e=>A("move","up")),onMoveDown:s[6]||(s[6]=e=>A("move","down")),onDelete:s[7]||(s[7]=e=>A("delete")),onSave:Y,onEdit:s[8]||(s[8]=e=>A("edit")),onAdd:ae,onOnShowRichText:s[9]||(s[9]=e=>$.value=!0),onSetKey:te,onSetAnswerSetting:le},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($)}]])},[s[12]||(s[12]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",C,[t.createVNode(P,{modelValue:t.unref(z),"onUpdate:modelValue":s[0]||(s[0]=e=>t.isRef(z)?z.value=e:null),type:"textarea",rows:2,placeholder:`【${t.unref(H)}】请输入问题`,disabled:a.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),t.createElementVNode("div",k,[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(U),"onUpdate:modelValue":s[1]||(s[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(J),(e=>(t.openBlock(),t.createBlock(oe,{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(M),((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(P,{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(T,{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&&M.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:W},null,8,["class"])])),_:1}),t.createVNode(se,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.Remove),{class:t.normalizeClass([{disabled:t.unref(M).length<3||a.isSave}]),onClick:e=>function(e){M.value.length<3||R.isSave||M.value.splice(e,1)}(r)},null,8,["class","onClick"])])),_:2},1024),1===t.unref(L)?(t.openBlock(),t.createBlock(ue,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=r,j.value=t,G.value=M.value[t].resultItem||"",void(O.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(L)?(t.openBlock(),t.createBlock(ue,{key:2,type:"primary",class:"margin-left-10",onClick:t=>function(e){e.customAnswerId=e.examAnswerId||i.setGuid(),A("setRelation",R.customId,e)}(e)},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.answerRelations?.length?`关联了${t.unref(re)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0)])))),128))]),"sort"===a.type?(t.openBlock(),t.createElementBlock("div",h,[s[15]||(s[15]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"排序答案:")],-1)),t.createElementVNode("div",g,[t.createVNode(ie,{modelValue:t.unref(Q),"onUpdate:modelValue":s[2]||(s[2]=e=>t.isRef(Q)?Q.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(M),((e,l)=>(t.openBlock(),t.createBlock(oe,{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,[s[16]||(s[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",N,[t.createVNode(P,{modelValue:t.unref(K),"onUpdate:modelValue":s[3]||(s[3]=e=>t.isRef(K)?K.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):t.createCommentVNode("v-if",!0),t.unref($)?(t.openBlock(),t.createElementBlock("div",B,[s[18]||(s[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(F),"onUpdate:modelValue":s[4]||(s[4]=e=>t.isRef(F)?F.value=e:null)},t.unref(_),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",b,[t.createVNode(ue,{type:"danger",onClick:X},{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(O),"onUpdate:modelValue":s[11]||(s[11]=e=>t.isRef(O)?O.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(de,{class:"customize-button",type:"primary",plain:"",onClick:ee},{default:t.withCtx((()=>s[19]||(s[19]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(de,{class:"customize-button",type:"primary",plain:"",onClick:Z},{default:t.withCtx((()=>s[20]||(s[20]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createBlock(o.default,t.mergeProps({key:t.unref(j),"model-value":t.unref(G),"onUpdate:modelValue":s[10]||(s[10]=e=>t.isRef(G)?G.value=e:null)},t.unref(_),{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");const s={class:"preview"},u={class:"title"},d={key:0},c={key:1},m={key:0},p=["innerHTML"],f={class:"preview-answer"},v={class:"order"},y={class:"order"},x={style:{flex:"1"}},C={class:"margin-bottom flex flex-items-center"},k={class:"margin-bottom answer-list"},V={class:"order"},w={key:0,class:"margin-bottom flex flex-items-center"},h={style:{flex:"1"}},g={key:1,class:"flex"},E={style:{flex:"1"}},N={key:2,class:"margin-bottom flex"},B={style:{flex:"1"}},S={class:"flex flex-justify-end"};var b=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(b,{emit:T}){const q=b,R=T,A=t.useAttrs(),_=t.ref(0),j=t.ref(q.isKey),D=t.ref(1),I=t.ref(1),L=t.ref([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),M=t.ref(2),U=t.ref(""),z=t.ref(""),$=t.ref(!1),K=t.ref(""),F=t.ref(0),P=t.ref(!1),O=t.ref(""),G=t.computed((()=>"single"===q.type?"单选题":"multiple"===q.type?"多选题":"排序题")),H=t.ref([]),Q=t.computed((()=>{const e=[];for(let t=L.value.length;t>1;t--)e.push({label:`至少选择${t}项`,value:t});return e.reverse()}));function J(){q.isSave||L.value.push({title:"",isCorrect:!1,customAnswerId:i.setGuid()})}function W(){$.value=!1,K.value=""}function X(){if(!U.value)return void e.ElMessage.error("题目标题不能为空!");let t="",l=!1,a=0;if("multiple"===q.type||"single"===q.type?L.value.forEach(((e,r)=>{e.title?.trim()||(t+=`选项${String.fromCharCode(65+r)}未填写。`),e.isCorrect&&(l=!0,a++),e.relationType=e.resultItem?1:e.answerRelations?.length?2:null})):"sort"===q.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"===q.type){if(1===a)return void e.ElMessage.error("请至少设置两个支持选项");if(l&&a<M.value)return void e.ElMessage.error("至少选几项与支持选项数不符")}2!==D.value&&3!==D.value||l?R("save",{title:U.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:M.value,examRichTextContent:$.value?K.value:"",examAnswerRelationType:I.value,isKey:j.value,answerCheckType:D.value}):e.ElMessage.error("请设置支持选项")}else e.ElMessage.error("选项不能重复")}function Y(){L.value[_.value].resultItem=O.value||"",P.value=!1}function Z(){P.value=!1,O.value=""}function ee(e){j.value=e}function te(e){D.value=e}function le(e,t){R("add",e,t?q.examAnswerRelationType:null)}t.watch((()=>q.isEdit),(()=>{q.isEdit&&(F.value=(new Date).getTime())}));const ae=t.computed((()=>e=>{let t=0;return e.forEach((e=>{e.relationAnswers&&(t+=e.relationAnswers.length)})),t})),re=a.useNamespace("subject-single");return t.onMounted((function(){if(q.title&&(U.value=q.title),q.answerCheckType&&(D.value=q.answerCheckType),q.examAnswerRelationType&&(I.value=q.examAnswerRelationType),q.answerList&&q.answerList.length&&(L.value=q.answerList),q.leastAnswerCount&&(M.value=q.leastAnswerCount),q.examExpand&&q.examExpand){const e=q.examExpand.split(",");H.value=e.map((e=>{const t=q.answerList.find((t=>t.answerId?.toString()===e));return t?String.fromCharCode(65+t.orderIndex-1):e})).filter(Boolean)}q.analysis&&(z.value=q.analysis),q.examRichTextContent&&(K.value=q.examRichTextContent,$.value=!0)})),(a,b)=>{const T=e.ElCheckbox,F=e.ElRadio,ne=e.ElInput,oe=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(re).e("single-exam"))},[t.createVNode(n.default,{"show-edit":a.isEdit},t.createSlots({preview:t.withCtx((()=>[t.createElementVNode("div",s,[t.createElementVNode("div",null,[t.createElementVNode("span",u,[t.createTextVNode(t.toDisplayString(a.orderIndex+1)+"."+t.toDisplayString(t.unref(U))+" ",1),"single"===a.type?(t.openBlock(),t.createElementBlock("span",d,"(单选题)")):["multiple","sort"].includes(a.type)?(t.openBlock(),t.createElementBlock("span",c," ("+t.toDisplayString(t.unref(G))+t.toDisplayString(t.unref(M)?`至少选${t.unref(M)}项${"sort"===a.type?"并排序":""}`:"")+") ",1)):t.createCommentVNode("v-if",!0)])]),t.unref($)?(t.openBlock(),t.createElementBlock("div",m,[t.createElementVNode("div",{innerHTML:t.unref(K)},null,8,p)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",f,["sort"===a.type?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:0},t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(T,{key:l,class:"radio",disabled:!0},{default:t.withCtx((()=>[t.createElementVNode("span",v,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(F,{key:l,class:"radio",value:"disabled",disabled:""},{default:t.withCtx((()=>[t.createElementVNode("span",y,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title)+" "+t.toDisplayString(e.isCorrect?"(支持选项)":"")+" "+t.toDisplayString(1===t.unref(I)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+t.toDisplayString(2===t.unref(I)?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:q.examAnswerRelationType,answerCheckType:t.unref(D),onMoveUp:b[5]||(b[5]=e=>R("move","up")),onMoveDown:b[6]||(b[6]=e=>R("move","down")),onDelete:b[7]||(b[7]=e=>R("delete")),onSave:X,onEdit:b[8]||(b[8]=e=>R("edit")),onAdd:le,onOnShowRichText:b[9]||(b[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($)}]])},[b[12]||(b[12]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",x,[t.createVNode(ne,{modelValue:t.unref(U),"onUpdate:modelValue":b[0]||(b[0]=e=>t.isRef(U)?U.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",C,[b[13]||(b[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(M),"onUpdate:modelValue":b[1]||(b[1]=e=>t.isRef(M)?M.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(oe,{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",k,[(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(ne,{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(T,{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"===q.type?(t&&L.value.forEach((t=>{t!==e&&(t.isCorrect=!1)})),e.isCorrect=t):"multiple"===q.type&&(e.isCorrect=t)}(e,t)},{default:t.withCtx((()=>[...b[14]||(b[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:J},null,8,["class"])])),_:1}),t.createVNode(se,{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||q.isSave||L.value.splice(e,1)}(r)},null,8,["class","onClick"])])),_:2},1024),1===t.unref(I)?(t.openBlock(),t.createBlock(ue,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=r,_.value=t,O.value=L.value[t].resultItem||"",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===t.unref(I)?(t.openBlock(),t.createBlock(ue,{key:2,type:"primary",class:"margin-left-10",onClick:t=>function(e){e.customAnswerId=e.examAnswerId||i.setGuid(),R("setRelation",q.customId,e)}(e)},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.answerRelations?.length?`关联了${t.unref(ae)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0)])))),128))]),"sort"===a.type?(t.openBlock(),t.createElementBlock("div",w,[b[15]||(b[15]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"排序答案:")],-1)),t.createElementVNode("div",h,[t.createVNode(ie,{modelValue:t.unref(H),"onUpdate:modelValue":b[2]||(b[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(oe,{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",g,[b[16]||(b[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",E,[t.createVNode(ne,{modelValue:t.unref(z),"onUpdate:modelValue":b[3]||(b[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",N,[b[18]||(b[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(K),"onUpdate:modelValue":b[4]||(b[4]=e=>t.isRef(K)?K.value=e:null)},t.unref(A),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",S,[t.createVNode(ue,{type:"danger",onClick:W},{default:t.withCtx((()=>b[17]||(b[17]=[t.createTextVNode(" 删除富文本 ")]))),_:1})])])])):t.createCommentVNode("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),t.createVNode(ce,{modelValue:t.unref(P),"onUpdate:modelValue":b[11]||(b[11]=e=>t.isRef(P)?P.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(de,{class:"customize-button",type:"primary",plain:"",onClick:Z},{default:t.withCtx((()=>b[19]||(b[19]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(de,{class:"customize-button",type:"primary",plain:"",onClick:Y},{default:t.withCtx((()=>b[20]||(b[20]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createBlock(o.default,t.mergeProps({key:t.unref(_),"model-value":t.unref(O),"onUpdate:modelValue":b[10]||(b[10]=e=>t.isRef(O)?O.value=e:null)},t.unref(A),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});exports.default=b;
2
2
  //# sourceMappingURL=subject-single.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-single.vue.cjs","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?.trim()) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n v.examAnswerRelationType = v.resultItem ? 1 : (v.answerRelations?.length ? 2 : null)\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 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","trim","String","fromCharCode","answerRelations","Set","map","item","size","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
+ {"version":3,"file":"subject-single.vue.cjs","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(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(2)\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?.trim()) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n v.relationType = v.resultItem ? 1 : (v.answerRelations?.length ? 2 : null)\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 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","trim","String","fromCharCode","relationType","answerRelations","Set","map","item","size","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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@qxs-bns/components",
3
3
  "type": "module",
4
- "version": "0.0.33",
4
+ "version": "0.0.35",
5
5
  "description": "Vue 3 Component Library",
6
6
  "license": "MIT",
7
7
  "homepage": "https://trry-hub.github.io/qxs-bns/",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@amap/amap-jsapi-loader": "^1.0.1",
44
- "@qxs-bns/directives": "0.0.12",
44
+ "@qxs-bns/directives": "0.0.15",
45
45
  "@qxs-bns/hooks": "0.0.2",
46
46
  "@qxs-bns/utils": "0.0.19",
47
47
  "@vueuse/core": "^11.3.0",
@@ -1 +1 @@
1
- .qxs-image-upload__upload-container{line-height:normal}.qxs-image-upload__upload-container [class*=-upload__tip-text]{color:#c8c8c8;font-size:14px;line-height:32px}.qxs-image-upload__upload-container [class*=-image]{display:block}.qxs-image-upload__upload-container .image{border-radius:6px;overflow:hidden;position:relative}.qxs-image-upload__upload-container .image .mask{background-color:var(--qxs-overlay-color-lighter);height:100%;opacity:0;position:absolute;top:0;transition:opacity .3s;width:100%}.qxs-image-upload__upload-container .image .mask .actions{align-items:center;display:flex;flex-wrap:wrap;height:100px;justify-content:center;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100px}.qxs-image-upload__upload-container .image .mask .actions span{color:var(--qxs-color-white);cursor:pointer;text-align:center;transition:color .1s,transform .1s;width:50%}.qxs-image-upload__upload-container .image .mask .actions span:hover{transform:scale(1.5)}.qxs-image-upload__upload-container .image .mask .actions span [class*=-icon]{font-size:24px}.qxs-image-upload__upload-container .image:hover .mask{opacity:1}.qxs-image-upload__image-upload{display:inline-block;vertical-align:top}.qxs-image-upload__upload-container [class*=-upload]{font-size:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger]{display:inline-block;font-size:0;padding:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger].is-dragover{border-width:1px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot{align-items:center;background-color:#f5f5f5;color:var(--qxs-text-color-placeholder);display:flex;flex-direction:column;font-size:14px;height:100%;justify-content:center;transition:all .3s;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot:hover{background-color:#eee}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot [class*=-icon]{font-size:28px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot p{color:#5a5a5a;line-height:1em;margin-bottom:0;margin-top:10px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress{position:absolute;top:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress:after{background-color:var(--qxs-overlay-color-lighter);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress]{left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:1}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress] [class*=-progress__text]{color:var(--qxs-text-color-placeholder)}
1
+ .qxs-image-upload__upload-container{line-height:normal}.qxs-image-upload__upload-container [class*=-image]{display:block}.qxs-image-upload__upload-container .image{border-radius:6px;overflow:hidden;position:relative}.qxs-image-upload__upload-container .image .mask{background-color:var(--qxs-overlay-color-lighter);height:100%;opacity:0;position:absolute;top:0;transition:opacity .3s;width:100%}.qxs-image-upload__upload-container .image .mask .actions{align-items:center;display:flex;flex-wrap:wrap;height:100px;justify-content:center;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100px}.qxs-image-upload__upload-container .image .mask .actions span{color:var(--qxs-color-white);cursor:pointer;text-align:center;transition:color .1s,transform .1s;width:50%}.qxs-image-upload__upload-container .image .mask .actions span:hover{transform:scale(1.5)}.qxs-image-upload__upload-container .image .mask .actions span [class*=-icon]{font-size:24px}.qxs-image-upload__upload-container .image:hover .mask{opacity:1}.qxs-image-upload__image-upload{display:inline-block;vertical-align:top}.qxs-image-upload__upload-container [class*=-upload]{font-size:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger]{display:inline-block;font-size:0;padding:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger].is-dragover{border-width:1px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot{align-items:center;background-color:#f5f5f5;color:var(--qxs-text-color-placeholder);display:flex;flex-direction:column;font-size:14px;height:100%;justify-content:center;transition:all .3s;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot:hover{background-color:#eee}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot [class*=-icon]{font-size:28px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot p{color:#5a5a5a;line-height:1em;margin-bottom:0;margin-top:10px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress{position:absolute;top:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress:after{background-color:var(--qxs-overlay-color-lighter);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress]{left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:1}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress] [class*=-progress__text]{color:var(--qxs-text-color-placeholder)}.qxs-image-upload__upload-container [class*=-upload__tip-text]{color:#c8c8c8;font-size:14px;line-height:32px}
@@ -1 +1 @@
1
- :root [data-fixed-calc-width]{left:0;position:fixed;right:0}:root [data-mode=mobile] [data-fixed-calc-width]{width:100%!important}.qxs-data-chart__data-chart-table{box-sizing:border-box;display:flex;flex-direction:column}.qxs-data-chart__data-chart-table .title{align-items:center;color:#464646;display:flex;font-family:sans-serif;font-size:14px;font-weight:bolder;justify-content:space-between;margin-bottom:7px;margin-top:2px;padding:0 5px}.qxs-data-chart__data-chart-table :deep(.qxs-table){background-color:transparent;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex:1;flex-direction:column;overflow:hidden;position:relative}.qxs-data-chart__data-chart-table :deep(.qxs-table) .qxs-table__body-wrapper .qxs-table__cell{border-right:0}.qxs-data-chart__empty{align-items:center;display:flex;height:100%;justify-content:center}.qxs-data-chart__empty-content{align-items:center;display:flex;flex-direction:column;pointer-events:none}.qxs-data-chart__empty-description{color:var(--qxs-text-color-secondary,#909399);font-size:14px;line-height:1.4;margin-top:8px}.qxs-data-chart__wrapper{height:100%}.qxs-fixed-action-bar__actionbar{background-color:var(--qxs-bg-color,#fff);bottom:0;box-shadow:0 0 1px 0 var(--qxs-border-color,#f3f3f2);padding:var(--qxs-fixed-action-bar-actionbar-padding);padding-bottom:calc(env(safe-area-inset-bottom) + var(--qxs-fixed-action-bar-actionbar-padding-bottom));text-align:center;transition:box-shadow .3s,var(--qxs-transition-box-shadow,#f3f3f2);z-index:10}.qxs-fixed-action-bar__actionbar.is-shadow{box-shadow:0 -10px 10px -10px var(--qxs-border-color,#fff)}.qxs-photo-crop-tool__img-box{align-items:center;background-color:#fafafa;display:flex;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.qxs-photo-crop-tool__error-message{color:red}.qxs-photo-crop-tool__image{-webkit-user-drag:none;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.qxs-photo-crop-tool__crop-tool-box{aspect-ratio:var(--qxs-photo-crop-tool-aspect-ratio);border:1px dashed #fff;box-shadow:0 0 0 9999px rgba(0,0,0,.4);cursor:move;height:calc(var(--qxs-photo-crop-tool-height)*1px);max-height:100%;max-width:100%;overflow:hidden;position:absolute;width:calc(var(--qxs-photo-crop-tool-width)*1px)}.qxs-photo-crop-tool__crop-tool-box>div{aspect-ratio:1/1;background-color:rgba(2,2,2,.01);border-radius:50%;position:absolute;transition:all .3s;width:30%;z-index:3}.qxs-photo-crop-tool__crop-tool-box>div:active,.qxs-photo-crop-tool__crop-tool-box>div:hover{background-color:rgba(2,2,2,.5)}.qxs-photo-crop-tool__top-left{cursor:nwse-resize;left:0;top:0;transform:translate3d(-50%,-50%,0)}.qxs-photo-crop-tool__top-right{cursor:nesw-resize;right:0;top:0;transform:translate3d(50%,-50%,0)}.qxs-photo-crop-tool__bottom-right{bottom:0;cursor:nwse-resize;right:0;transform:translate3d(50%,50%,0)}.qxs-photo-crop-tool__bottom-left{bottom:0;cursor:nesw-resize;left:0;transform:translate3d(-50%,50%,0)}.qxs-image-upload__upload-container{line-height:normal}.qxs-image-upload__upload-container [class*=-upload__tip-text]{color:#c8c8c8;font-size:14px;line-height:32px}.qxs-image-upload__upload-container [class*=-image]{display:block}.qxs-image-upload__upload-container .image{border-radius:6px;overflow:hidden;position:relative}.qxs-image-upload__upload-container .image .mask{background-color:var(--qxs-overlay-color-lighter);height:100%;opacity:0;position:absolute;top:0;transition:opacity .3s;width:100%}.qxs-image-upload__upload-container .image .mask .actions{align-items:center;display:flex;flex-wrap:wrap;height:100px;justify-content:center;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100px}.qxs-image-upload__upload-container .image .mask .actions span{color:var(--qxs-color-white);cursor:pointer;text-align:center;transition:color .1s,transform .1s;width:50%}.qxs-image-upload__upload-container .image .mask .actions span:hover{transform:scale(1.5)}.qxs-image-upload__upload-container .image .mask .actions span [class*=-icon]{font-size:24px}.qxs-image-upload__upload-container .image:hover .mask{opacity:1}.qxs-image-upload__image-upload{display:inline-block;vertical-align:top}.qxs-image-upload__upload-container [class*=-upload]{font-size:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger]{display:inline-block;font-size:0;padding:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger].is-dragover{border-width:1px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot{align-items:center;background-color:#f5f5f5;color:var(--qxs-text-color-placeholder);display:flex;flex-direction:column;font-size:14px;height:100%;justify-content:center;transition:all .3s;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot:hover{background-color:#eee}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot [class*=-icon]{font-size:28px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot p{color:#5a5a5a;line-height:1em;margin-bottom:0;margin-top:10px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress{position:absolute;top:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress:after{background-color:var(--qxs-overlay-color-lighter);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress]{left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:1}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress] [class*=-progress__text]{color:var(--qxs-text-color-placeholder)}.qxs-file-upload__control [class*=-upload].is-drag{display:inline-block}.qxs-file-upload__control [class*=-upload].is-drag [class*=-upload-dragger]{padding:0}.qxs-file-upload__control [class*=-upload].is-drag [class*=-upload-dragger] [class*=-icon--upload]{font-size:40px;margin-bottom:0}.qxs-file-upload__control [class*=-upload].is-drag [class*=-upload-dragger] [class*=-upload__text]{font-size:14px;line-height:1.5;padding:0 6px}.qxs-file-upload__control [class*=-upload].is-drag.is-dragover{border-width:1px}.qxs-file-upload__control [class*=-upload].is-drag .slot{height:90px;width:160px}.qxs-tiny-mce-editor :deep(.tox-tinymce){border-radius:4px;border-width:1px}.qxs-tiny-mce-editor :deep(.tox-tinymce) .tox-editor-header{box-shadow:0 2px 2px -2px rgba(34,47,62,.1),0 4px 4px -4px rgba(34,47,62,.07)}.qxs-tiny-mce-editor :deep(.tox-tinymce) :deep(.tox-sidebar-wrap){max-height:600px;overflow-y:auto}.tox-tinymce-aux{z-index:2500!important}.qxs-subject-list__list-exam .flex-items-center{align-items:center;display:flex}.qxs-subject-list__list-exam .flex-justify-between{display:flex;justify-content:space-between}.qxs-subject-list__list-exam .flex-justify-center{display:flex;justify-content:center}.qxs-subject-list__list-exam .flex-justify-end{display:flex;justify-content:flex-end}.qxs-subject-list__list-exam .margin-left-10{margin-left:10px}.qxs-subject-list__list-exam .preview-answer{display:flex;flex-direction:column;margin-bottom:10px}.qxs-subject-list__list-exam .flex{align-items:center;display:flex}.qxs-subject-list__list-exam .flex-1{flex:1}.qxs-subject-list__list-exam .subject-list-wrapper{margin-bottom:20px;width:100%}.qxs-subject-list__list-exam .margin-bottom{margin-bottom:20px}.qxs-subject-list__list-exam .label{margin-right:10px;min-width:50px}.qxs-subject-list__list-exam .auto-line{background-color:#c8c8c8;flex:1;height:1px;margin:0 15px}.qxs-subject-single__single-exam .flex{align-items:center;display:flex}.qxs-subject-single__single-exam .margin-bottom{margin-bottom:20px}.qxs-subject-single__single-exam .answer-list{padding-left:24px}.qxs-subject-single__single-exam .answer-list .answer-item{margin-top:15px}.qxs-subject-single__single-exam .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-single__single-exam .answer-list .answer-item .input{width:300px}.qxs-subject-single__single-exam .answer-list .answer-item .input [class*=-input]{font-weight:700}.qxs-subject-single__single-exam .answer-list .answer-item .correct{margin:0 10px}.qxs-subject-single__single-exam .answer-list .answer-item .correct:hover{color:#3d61e3;cursor:pointer}.qxs-subject-single__single-exam .answer-list .answer-item .is-correct{color:#67c23a}.qxs-subject-single__single-exam .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:18px;margin-left:5px}.qxs-subject-single__single-exam .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-single__single-exam .preview .title{font-weight:500}.qxs-subject-single__single-exam .preview .answer-radio{padding-left:10px}.qxs-subject-single__single-exam .preview .answer-radio .radio{margin-top:10px}.qxs-subject-blank-fill__blank-fill-exam .flex{align-items:center;display:flex}.qxs-subject-blank-fill__blank-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-blank-fill__blank-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags [class*=-tag]{margin-right:10px}.qxs-subject-blank-fill__blank-fill-exam .preview .title{font-weight:500}.qxs-subject-blank-fill__blank-fill-exam .preview .content{background-color:#fff;min-height:100px;padding-top:10px}.qxs-subject-text-fill__text-fill-exam .flex{align-items:center;display:flex}.qxs-subject-text-fill__text-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-text-fill__text-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-text-fill__text-fill-exam .preview .title{font-weight:500}.qxs-subject-text-fill__text-fill-exam .preview .content{margin-top:10px;min-height:100px}.qxs-subject-scale__scale-exam .flex{align-items:center;display:flex}.qxs-subject-scale__scale-exam .label{min-width:50px}.qxs-subject-scale__scale-exam .margin-bottom{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer{margin:20px 0}.qxs-subject-scale__scale-exam .answer .answer-list{margin-left:40px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-scale__scale-exam .preview .title{font-weight:500}.qxs-subject-scale__scale-exam .preview .answer-radio .radio-item .qxs-radio-wrapper{margin-inline-end:0}.qxs-subject-layout__layout-exam{color:#5a5a5a;font-size:12px;padding:10px}.qxs-subject-layout__layout-exam .edit{background-color:#f6f7fb;margin-top:20px;padding:20px 10px 10px;position:relative}.qxs-subject-layout__layout-exam .edit .triangle-up{border-bottom:20px solid #f6f7fb;border-left:20px solid transparent;border-right:20px solid transparent;height:0;left:100px;position:absolute;top:-20px;width:0}.qxs-subject-action__action-exam .action{padding:20px 10px}.qxs-subject-action__action-exam .active{background-color:#f6f7fb}.qxs-subject-action__action-exam .btn-margin{margin-right:10px}.qxs-subject-action__action-exam .has-set{align-items:center;color:#bbb;display:flex;font-size:12px}.qxs-subject-action__action-exam .vertical-radio-group{align-items:flex-start;display:flex;flex-direction:column;margin-left:20px}.qxs-subject-action__action-exam .vertical-radio-group ::v-deep(.qxs-radio){display:block;margin-right:0}.qxs-subject-type__type-list .type-item{margin-bottom:20px}.qxs-subject-type__type-list .base-subject{align-items:center;display:flex;flex-wrap:wrap}.qxs-subject-type__type-list .base-subject .item{background:#fafafa;color:#5a5a5a;cursor:pointer;font-size:12px;height:22px;margin-right:10px;margin-top:10px;text-align:center;width:50px}.qxs-subject-type__type-list .base-subject .item:hover{background:rgba(61,97,227,.12);color:#3d61e3}
1
+ :root [data-fixed-calc-width]{left:0;position:fixed;right:0}:root [data-mode=mobile] [data-fixed-calc-width]{width:100%!important}.qxs-data-chart__data-chart-table{box-sizing:border-box;display:flex;flex-direction:column}.qxs-data-chart__data-chart-table .title{align-items:center;color:#464646;display:flex;font-family:sans-serif;font-size:14px;font-weight:bolder;justify-content:space-between;margin-bottom:7px;margin-top:2px;padding:0 5px}.qxs-data-chart__data-chart-table :deep(.qxs-table){background-color:transparent;border-top-left-radius:4px;border-top-right-radius:4px;display:flex;flex:1;flex-direction:column;overflow:hidden;position:relative}.qxs-data-chart__data-chart-table :deep(.qxs-table) .qxs-table__body-wrapper .qxs-table__cell{border-right:0}.qxs-data-chart__empty{align-items:center;display:flex;height:100%;justify-content:center}.qxs-data-chart__empty-content{align-items:center;display:flex;flex-direction:column;pointer-events:none}.qxs-data-chart__empty-description{color:var(--qxs-text-color-secondary,#909399);font-size:14px;line-height:1.4;margin-top:8px}.qxs-data-chart__wrapper{height:100%}.qxs-fixed-action-bar__actionbar{background-color:var(--qxs-bg-color,#fff);bottom:0;box-shadow:0 0 1px 0 var(--qxs-border-color,#f3f3f2);padding:var(--qxs-fixed-action-bar-actionbar-padding);padding-bottom:calc(env(safe-area-inset-bottom) + var(--qxs-fixed-action-bar-actionbar-padding-bottom));text-align:center;transition:box-shadow .3s,var(--qxs-transition-box-shadow,#f3f3f2);z-index:10}.qxs-fixed-action-bar__actionbar.is-shadow{box-shadow:0 -10px 10px -10px var(--qxs-border-color,#fff)}.qxs-photo-crop-tool__img-box{align-items:center;background-color:#fafafa;display:flex;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.qxs-photo-crop-tool__error-message{color:red}.qxs-photo-crop-tool__image{-webkit-user-drag:none;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle}.qxs-photo-crop-tool__crop-tool-box{aspect-ratio:var(--qxs-photo-crop-tool-aspect-ratio);border:1px dashed #fff;box-shadow:0 0 0 9999px rgba(0,0,0,.4);cursor:move;height:calc(var(--qxs-photo-crop-tool-height)*1px);max-height:100%;max-width:100%;overflow:hidden;position:absolute;width:calc(var(--qxs-photo-crop-tool-width)*1px)}.qxs-photo-crop-tool__crop-tool-box>div{aspect-ratio:1/1;background-color:rgba(2,2,2,.01);border-radius:50%;position:absolute;transition:all .3s;width:30%;z-index:3}.qxs-photo-crop-tool__crop-tool-box>div:active,.qxs-photo-crop-tool__crop-tool-box>div:hover{background-color:rgba(2,2,2,.5)}.qxs-photo-crop-tool__top-left{cursor:nwse-resize;left:0;top:0;transform:translate3d(-50%,-50%,0)}.qxs-photo-crop-tool__top-right{cursor:nesw-resize;right:0;top:0;transform:translate3d(50%,-50%,0)}.qxs-photo-crop-tool__bottom-right{bottom:0;cursor:nwse-resize;right:0;transform:translate3d(50%,50%,0)}.qxs-photo-crop-tool__bottom-left{bottom:0;cursor:nesw-resize;left:0;transform:translate3d(-50%,50%,0)}.qxs-image-upload__upload-container{line-height:normal}.qxs-image-upload__upload-container [class*=-image]{display:block}.qxs-image-upload__upload-container .image{border-radius:6px;overflow:hidden;position:relative}.qxs-image-upload__upload-container .image .mask{background-color:var(--qxs-overlay-color-lighter);height:100%;opacity:0;position:absolute;top:0;transition:opacity .3s;width:100%}.qxs-image-upload__upload-container .image .mask .actions{align-items:center;display:flex;flex-wrap:wrap;height:100px;justify-content:center;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100px}.qxs-image-upload__upload-container .image .mask .actions span{color:var(--qxs-color-white);cursor:pointer;text-align:center;transition:color .1s,transform .1s;width:50%}.qxs-image-upload__upload-container .image .mask .actions span:hover{transform:scale(1.5)}.qxs-image-upload__upload-container .image .mask .actions span [class*=-icon]{font-size:24px}.qxs-image-upload__upload-container .image:hover .mask{opacity:1}.qxs-image-upload__image-upload{display:inline-block;vertical-align:top}.qxs-image-upload__upload-container [class*=-upload]{font-size:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger]{display:inline-block;font-size:0;padding:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger].is-dragover{border-width:1px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot{align-items:center;background-color:#f5f5f5;color:var(--qxs-text-color-placeholder);display:flex;flex-direction:column;font-size:14px;height:100%;justify-content:center;transition:all .3s;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot:hover{background-color:#eee}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot [class*=-icon]{font-size:28px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .image-slot p{color:#5a5a5a;line-height:1em;margin-bottom:0;margin-top:10px}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress{position:absolute;top:0}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress:after{background-color:var(--qxs-overlay-color-lighter);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress]{left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);z-index:1}.qxs-image-upload__upload-container [class*=-upload] [class*=-upload-dragger] .progress [class*=-progress] [class*=-progress__text]{color:var(--qxs-text-color-placeholder)}.qxs-image-upload__upload-container [class*=-upload__tip-text]{color:#c8c8c8;font-size:14px;line-height:32px}.qxs-file-upload__control [class*=-upload].is-drag{display:inline-block}.qxs-file-upload__control [class*=-upload].is-drag [class*=-upload-dragger]{padding:0}.qxs-file-upload__control [class*=-upload].is-drag [class*=-upload-dragger] [class*=-icon--upload]{font-size:40px;margin-bottom:0}.qxs-file-upload__control [class*=-upload].is-drag [class*=-upload-dragger] [class*=-upload__text]{font-size:14px;line-height:1.5;padding:0 6px}.qxs-file-upload__control [class*=-upload].is-drag.is-dragover{border-width:1px}.qxs-file-upload__control [class*=-upload].is-drag .slot{height:90px;width:160px}.qxs-tiny-mce-editor :deep(.tox-tinymce){border-radius:4px;border-width:1px}.qxs-tiny-mce-editor :deep(.tox-tinymce) .tox-editor-header{box-shadow:0 2px 2px -2px rgba(34,47,62,.1),0 4px 4px -4px rgba(34,47,62,.07)}.qxs-tiny-mce-editor :deep(.tox-tinymce) :deep(.tox-sidebar-wrap){max-height:600px;overflow-y:auto}.tox-tinymce-aux{z-index:2500!important}.qxs-subject-list__list-exam .flex,.qxs-subject-list__list-exam .flex-items-center{align-items:center;display:flex}.qxs-subject-list__list-exam .flex-justify-between{display:flex;justify-content:space-between}.qxs-subject-list__list-exam .flex-justify-center{display:flex;justify-content:center}.qxs-subject-list__list-exam .flex-justify-end{display:flex;justify-content:flex-end}.qxs-subject-list__list-exam .margin-left-10{margin-left:10px}.qxs-subject-list__list-exam .flex-1{flex:1}.qxs-subject-list__list-exam .subject-list-wrapper{margin-bottom:20px;width:100%}.qxs-subject-list__list-exam .margin-bottom{margin-bottom:20px}.qxs-subject-list__list-exam .label{margin-right:10px;min-width:50px}.qxs-subject-list__list-exam .auto-line{background-color:#c8c8c8;flex:1;height:1px;margin:0 15px}.qxs-subject-single__single-exam .preview-answer{display:flex;flex-direction:column;margin-bottom:10px}.qxs-subject-single__single-exam .flex{align-items:center;display:flex}.qxs-subject-single__single-exam .margin-bottom{margin-bottom:20px}.qxs-subject-single__single-exam .answer-list{padding-left:24px}.qxs-subject-single__single-exam .answer-list .answer-item{margin-top:15px}.qxs-subject-single__single-exam .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-single__single-exam .answer-list .answer-item .input{width:300px}.qxs-subject-single__single-exam .answer-list .answer-item .input [class*=-input]{font-weight:700}.qxs-subject-single__single-exam .answer-list .answer-item .correct{margin:0 10px}.qxs-subject-single__single-exam .answer-list .answer-item .correct:hover{color:#3d61e3;cursor:pointer}.qxs-subject-single__single-exam .answer-list .answer-item .is-correct{color:#67c23a}.qxs-subject-single__single-exam .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:18px;margin-left:5px}.qxs-subject-single__single-exam .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-single__single-exam .preview .title{font-weight:500}.qxs-subject-single__single-exam .preview .answer-radio{padding-left:10px}.qxs-subject-single__single-exam .preview .answer-radio .radio{margin-top:10px}.qxs-subject-blank-fill__blank-fill-exam .flex{align-items:center;display:flex}.qxs-subject-blank-fill__blank-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-blank-fill__blank-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags [class*=-tag]{margin-right:10px}.qxs-subject-blank-fill__blank-fill-exam .preview .title{font-weight:500}.qxs-subject-blank-fill__blank-fill-exam .preview .content{background-color:#fff;min-height:100px;padding-top:10px}.qxs-subject-text-fill__text-fill-exam .flex{align-items:center;display:flex}.qxs-subject-text-fill__text-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-text-fill__text-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-text-fill__text-fill-exam .preview .title{font-weight:500}.qxs-subject-text-fill__text-fill-exam .preview .content{margin-top:10px;min-height:100px}.qxs-subject-scale__scale-exam .flex{align-items:center;display:flex}.qxs-subject-scale__scale-exam .label{min-width:50px}.qxs-subject-scale__scale-exam .margin-bottom{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer{margin:20px 0}.qxs-subject-scale__scale-exam .answer .answer-list{margin-left:40px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-scale__scale-exam .preview .title{font-weight:500}.qxs-subject-scale__scale-exam .preview .answer-radio .radio-item .qxs-radio-wrapper{margin-inline-end:0}.qxs-subject-layout__layout-exam{color:#5a5a5a;font-size:12px;padding:10px}.qxs-subject-layout__layout-exam .edit{background-color:#f6f7fb;margin-top:20px;padding:20px 10px 10px;position:relative}.qxs-subject-layout__layout-exam .edit .triangle-up{border-bottom:20px solid #f6f7fb;border-left:20px solid transparent;border-right:20px solid transparent;height:0;left:100px;position:absolute;top:-20px;width:0}.qxs-subject-action__action-exam .action{padding:20px 10px}.qxs-subject-action__action-exam .active{background-color:#f6f7fb}.qxs-subject-action__action-exam .btn-margin{margin-right:10px}.qxs-subject-action__action-exam .has-set{align-items:center;color:#bbb;display:flex;font-size:12px}.qxs-subject-action__action-exam .vertical-radio-group{align-items:flex-start;display:flex;flex-direction:column;margin-left:20px}.qxs-subject-action__action-exam .vertical-radio-group ::v-deep(.qxs-radio){display:block;margin-right:0}.qxs-subject-type__type-list .type-item{margin-bottom:20px}.qxs-subject-type__type-list .base-subject{align-items:center;display:flex;flex-wrap:wrap}.qxs-subject-type__type-list .base-subject .item{background:#fafafa;color:#5a5a5a;cursor:pointer;font-size:12px;height:22px;margin-right:10px;margin-top:10px;text-align:center;width:50px}.qxs-subject-type__type-list .base-subject .item:hover{background:rgba(61,97,227,.12);color:#3d61e3}
@@ -1 +1 @@
1
- .qxs-subject-list__list-exam .flex-items-center{align-items:center;display:flex}.qxs-subject-list__list-exam .flex-justify-between{display:flex;justify-content:space-between}.qxs-subject-list__list-exam .flex-justify-center{display:flex;justify-content:center}.qxs-subject-list__list-exam .flex-justify-end{display:flex;justify-content:flex-end}.qxs-subject-list__list-exam .margin-left-10{margin-left:10px}.qxs-subject-list__list-exam .preview-answer{display:flex;flex-direction:column;margin-bottom:10px}.qxs-subject-list__list-exam .flex{align-items:center;display:flex}.qxs-subject-list__list-exam .flex-1{flex:1}.qxs-subject-list__list-exam .subject-list-wrapper{margin-bottom:20px;width:100%}.qxs-subject-list__list-exam .margin-bottom{margin-bottom:20px}.qxs-subject-list__list-exam .label{margin-right:10px;min-width:50px}.qxs-subject-list__list-exam .auto-line{background-color:#c8c8c8;flex:1;height:1px;margin:0 15px}.qxs-subject-single__single-exam .flex{align-items:center;display:flex}.qxs-subject-single__single-exam .margin-bottom{margin-bottom:20px}.qxs-subject-single__single-exam .answer-list{padding-left:24px}.qxs-subject-single__single-exam .answer-list .answer-item{margin-top:15px}.qxs-subject-single__single-exam .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-single__single-exam .answer-list .answer-item .input{width:300px}.qxs-subject-single__single-exam .answer-list .answer-item .input [class*=-input]{font-weight:700}.qxs-subject-single__single-exam .answer-list .answer-item .correct{margin:0 10px}.qxs-subject-single__single-exam .answer-list .answer-item .correct:hover{color:#3d61e3;cursor:pointer}.qxs-subject-single__single-exam .answer-list .answer-item .is-correct{color:#67c23a}.qxs-subject-single__single-exam .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:18px;margin-left:5px}.qxs-subject-single__single-exam .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-single__single-exam .preview .title{font-weight:500}.qxs-subject-single__single-exam .preview .answer-radio{padding-left:10px}.qxs-subject-single__single-exam .preview .answer-radio .radio{margin-top:10px}.qxs-subject-blank-fill__blank-fill-exam .flex{align-items:center;display:flex}.qxs-subject-blank-fill__blank-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-blank-fill__blank-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags [class*=-tag]{margin-right:10px}.qxs-subject-blank-fill__blank-fill-exam .preview .title{font-weight:500}.qxs-subject-blank-fill__blank-fill-exam .preview .content{background-color:#fff;min-height:100px;padding-top:10px}.qxs-subject-text-fill__text-fill-exam .flex{align-items:center;display:flex}.qxs-subject-text-fill__text-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-text-fill__text-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-text-fill__text-fill-exam .preview .title{font-weight:500}.qxs-subject-text-fill__text-fill-exam .preview .content{margin-top:10px;min-height:100px}.qxs-subject-scale__scale-exam .flex{align-items:center;display:flex}.qxs-subject-scale__scale-exam .label{min-width:50px}.qxs-subject-scale__scale-exam .margin-bottom{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer{margin:20px 0}.qxs-subject-scale__scale-exam .answer .answer-list{margin-left:40px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-scale__scale-exam .preview .title{font-weight:500}.qxs-subject-scale__scale-exam .preview .answer-radio .radio-item .qxs-radio-wrapper{margin-inline-end:0}
1
+ .qxs-subject-list__list-exam .flex,.qxs-subject-list__list-exam .flex-items-center{align-items:center;display:flex}.qxs-subject-list__list-exam .flex-justify-between{display:flex;justify-content:space-between}.qxs-subject-list__list-exam .flex-justify-center{display:flex;justify-content:center}.qxs-subject-list__list-exam .flex-justify-end{display:flex;justify-content:flex-end}.qxs-subject-list__list-exam .margin-left-10{margin-left:10px}.qxs-subject-list__list-exam .flex-1{flex:1}.qxs-subject-list__list-exam .subject-list-wrapper{margin-bottom:20px;width:100%}.qxs-subject-list__list-exam .margin-bottom{margin-bottom:20px}.qxs-subject-list__list-exam .label{margin-right:10px;min-width:50px}.qxs-subject-list__list-exam .auto-line{background-color:#c8c8c8;flex:1;height:1px;margin:0 15px}.qxs-subject-single__single-exam .preview-answer{display:flex;flex-direction:column;margin-bottom:10px}.qxs-subject-single__single-exam .flex{align-items:center;display:flex}.qxs-subject-single__single-exam .margin-bottom{margin-bottom:20px}.qxs-subject-single__single-exam .answer-list{padding-left:24px}.qxs-subject-single__single-exam .answer-list .answer-item{margin-top:15px}.qxs-subject-single__single-exam .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-single__single-exam .answer-list .answer-item .input{width:300px}.qxs-subject-single__single-exam .answer-list .answer-item .input [class*=-input]{font-weight:700}.qxs-subject-single__single-exam .answer-list .answer-item .correct{margin:0 10px}.qxs-subject-single__single-exam .answer-list .answer-item .correct:hover{color:#3d61e3;cursor:pointer}.qxs-subject-single__single-exam .answer-list .answer-item .is-correct{color:#67c23a}.qxs-subject-single__single-exam .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:18px;margin-left:5px}.qxs-subject-single__single-exam .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-single__single-exam .preview .title{font-weight:500}.qxs-subject-single__single-exam .preview .answer-radio{padding-left:10px}.qxs-subject-single__single-exam .preview .answer-radio .radio{margin-top:10px}.qxs-subject-blank-fill__blank-fill-exam .flex{align-items:center;display:flex}.qxs-subject-blank-fill__blank-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-blank-fill__blank-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-blank-fill__blank-fill-exam .answer-list .answer-item .answer-tags [class*=-tag]{margin-right:10px}.qxs-subject-blank-fill__blank-fill-exam .preview .title{font-weight:500}.qxs-subject-blank-fill__blank-fill-exam .preview .content{background-color:#fff;min-height:100px;padding-top:10px}.qxs-subject-text-fill__text-fill-exam .flex{align-items:center;display:flex}.qxs-subject-text-fill__text-fill-exam .label{margin-right:10px;min-width:50px}.qxs-subject-text-fill__text-fill-exam .margin-bottom{margin-bottom:20px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item{margin-top:15px;width:100%}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .answer-tags{border:1px solid #eee;border-radius:4px;flex:1;padding:5px 15px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-text-fill__text-fill-exam .answer-list .answer-item .operation .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-text-fill__text-fill-exam .preview .title{font-weight:500}.qxs-subject-text-fill__text-fill-exam .preview .content{margin-top:10px;min-height:100px}.qxs-subject-scale__scale-exam .flex{align-items:center;display:flex}.qxs-subject-scale__scale-exam .label{min-width:50px}.qxs-subject-scale__scale-exam .margin-bottom{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer{margin:20px 0}.qxs-subject-scale__scale-exam .answer .answer-list{margin-left:40px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item{margin-bottom:20px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .order{margin-right:8px;width:16px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .icon{color:#3d61e3;cursor:pointer;font-size:16px;margin:0 5px}.qxs-subject-scale__scale-exam .answer .answer-list .answer-item .disabled{color:#c0c4cc;cursor:not-allowed}.qxs-subject-scale__scale-exam .preview .title{font-weight:500}.qxs-subject-scale__scale-exam .preview .answer-radio .radio-item .qxs-radio-wrapper{margin-inline-end:0}
@@ -1,7 +1,5 @@
1
1
  declare const QxsSubjectAction: import("../withInstall").SFCWithInstall<import("vue").DefineComponent<globalThis.ExtractPropTypes<{
2
- isEdit: {
3
- type: BooleanConstructor;
4
- };
2
+ isEdit: BooleanConstructor;
5
3
  isSet: {
6
4
  type: BooleanConstructor;
7
5
  default: boolean;
@@ -29,17 +27,15 @@ declare const QxsSubjectAction: import("../withInstall").SFCWithInstall<import("
29
27
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
28
  delete: (...args: any[]) => void;
31
29
  add: (...args: any[]) => void;
32
- moveUp: (...args: any[]) => void;
33
- moveDown: (...args: any[]) => void;
30
+ "move-up": (...args: any[]) => void;
31
+ "move-down": (...args: any[]) => void;
34
32
  save: (...args: any[]) => void;
35
33
  edit: (...args: any[]) => void;
36
- onShowRichText: (...args: any[]) => void;
37
- setKey: (...args: any[]) => void;
38
- setAnswerSetting: (...args: any[]) => void;
34
+ "on-show-rich-text": (...args: any[]) => void;
35
+ "set-key": (...args: any[]) => void;
36
+ "set-answer-setting": (...args: any[]) => void;
39
37
  }, string, import("vue").PublicProps, Readonly<globalThis.ExtractPropTypes<{
40
- isEdit: {
41
- type: BooleanConstructor;
42
- };
38
+ isEdit: BooleanConstructor;
43
39
  isSet: {
44
40
  type: BooleanConstructor;
45
41
  default: boolean;
@@ -67,13 +63,13 @@ declare const QxsSubjectAction: import("../withInstall").SFCWithInstall<import("
67
63
  }>> & Readonly<{
68
64
  onDelete?: ((...args: any[]) => any) | undefined;
69
65
  onAdd?: ((...args: any[]) => any) | undefined;
70
- onMoveUp?: ((...args: any[]) => any) | undefined;
71
- onMoveDown?: ((...args: any[]) => any) | undefined;
66
+ "onMove-up"?: ((...args: any[]) => any) | undefined;
67
+ "onMove-down"?: ((...args: any[]) => any) | undefined;
72
68
  onSave?: ((...args: any[]) => any) | undefined;
73
69
  onEdit?: ((...args: any[]) => any) | undefined;
74
- onOnShowRichText?: ((...args: any[]) => any) | undefined;
75
- onSetKey?: ((...args: any[]) => any) | undefined;
76
- onSetAnswerSetting?: ((...args: any[]) => any) | undefined;
70
+ "onOn-show-rich-text"?: ((...args: any[]) => any) | undefined;
71
+ "onSet-key"?: ((...args: any[]) => any) | undefined;
72
+ "onSet-answer-setting"?: ((...args: any[]) => any) | undefined;
77
73
  }>, {
78
74
  isEdit: boolean;
79
75
  isSet: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/subject-action/index.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mGAAyB,CAAA;AAE/C,OAAO,EACL,gBAAgB,EACjB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/components/src/subject-action/index.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mGAAyB,CAAA;AAE/C,OAAO,EACL,gBAAgB,EACjB,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -1,7 +1,5 @@
1
1
  declare const _default: import("vue").DefineComponent<globalThis.ExtractPropTypes<{
2
- isEdit: {
3
- type: BooleanConstructor;
4
- };
2
+ isEdit: BooleanConstructor;
5
3
  isSet: {
6
4
  type: BooleanConstructor;
7
5
  default: boolean;
@@ -29,17 +27,15 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
29
27
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
28
  delete: (...args: any[]) => void;
31
29
  add: (...args: any[]) => void;
32
- moveUp: (...args: any[]) => void;
33
- moveDown: (...args: any[]) => void;
30
+ "move-up": (...args: any[]) => void;
31
+ "move-down": (...args: any[]) => void;
34
32
  save: (...args: any[]) => void;
35
33
  edit: (...args: any[]) => void;
36
- onShowRichText: (...args: any[]) => void;
37
- setKey: (...args: any[]) => void;
38
- setAnswerSetting: (...args: any[]) => void;
34
+ "on-show-rich-text": (...args: any[]) => void;
35
+ "set-key": (...args: any[]) => void;
36
+ "set-answer-setting": (...args: any[]) => void;
39
37
  }, string, import("vue").PublicProps, Readonly<globalThis.ExtractPropTypes<{
40
- isEdit: {
41
- type: BooleanConstructor;
42
- };
38
+ isEdit: BooleanConstructor;
43
39
  isSet: {
44
40
  type: BooleanConstructor;
45
41
  default: boolean;
@@ -67,13 +63,13 @@ declare const _default: import("vue").DefineComponent<globalThis.ExtractPropType
67
63
  }>> & Readonly<{
68
64
  onDelete?: ((...args: any[]) => any) | undefined;
69
65
  onAdd?: ((...args: any[]) => any) | undefined;
70
- onMoveUp?: ((...args: any[]) => any) | undefined;
71
- onMoveDown?: ((...args: any[]) => any) | undefined;
66
+ "onMove-up"?: ((...args: any[]) => any) | undefined;
67
+ "onMove-down"?: ((...args: any[]) => any) | undefined;
72
68
  onSave?: ((...args: any[]) => any) | undefined;
73
69
  onEdit?: ((...args: any[]) => any) | undefined;
74
- onOnShowRichText?: ((...args: any[]) => any) | undefined;
75
- onSetKey?: ((...args: any[]) => any) | undefined;
76
- onSetAnswerSetting?: ((...args: any[]) => any) | undefined;
70
+ "onOn-show-rich-text"?: ((...args: any[]) => any) | undefined;
71
+ "onSet-key"?: ((...args: any[]) => any) | undefined;
72
+ "onSet-answer-setting"?: ((...args: any[]) => any) | undefined;
77
73
  }>, {
78
74
  isEdit: boolean;
79
75
  isSet: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"subject-action.vue.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmyBA,wBAmCG"}
1
+ {"version":3,"file":"subject-action.vue.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAs3BA,wBAiCG"}
@@ -1 +1 @@
1
- {"version":3,"file":"subject-single.vue.d.ts","sourceRoot":"","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"names":[],"mappings":"AAikBA,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;IACpC,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC;;;;;;;;;;;;;;;;AAkgCF,wBAOG"}
1
+ {"version":3,"file":"subject-single.vue.d.ts","sourceRoot":"","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"names":[],"mappings":"AA+jBA,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;IACpC,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC;;;;;;;;;;;;;;;;AAkgCF,wBAOG"}