@qxs-bns/components 0.0.41 → 0.0.43

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.
Files changed (89) hide show
  1. package/es/_virtual/_plugin-vue_export-helper.mjs +1 -1
  2. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +1 -1
  3. package/es/package.json.mjs +1 -1
  4. package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
  5. package/es/src/data-chart/src/components/bar.vue.mjs +1 -1
  6. package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
  7. package/es/src/data-chart/src/components/empty.vue.mjs +1 -1
  8. package/es/src/data-chart/src/components/funnel.vue.mjs +1 -1
  9. package/es/src/data-chart/src/components/line.vue2.mjs +1 -1
  10. package/es/src/data-chart/src/components/pie.vue.mjs +1 -1
  11. package/es/src/data-chart/src/components/radar.vue.mjs +1 -1
  12. package/es/src/data-chart/src/components/scatter-simple.vue.mjs +1 -1
  13. package/es/src/data-chart/src/components/scatter.vue.mjs +1 -1
  14. package/es/src/data-chart/src/components/table.vue.mjs +1 -1
  15. package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
  16. package/es/src/data-chart/src/utils/config.mjs +1 -1
  17. package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
  18. package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
  19. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +1 -1
  20. package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
  21. package/es/src/photo-crop-tool/src/composables.mjs +1 -1
  22. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +1 -1
  23. package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
  24. package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
  25. package/es/src/subject-layout/src/subject-layout.vue.mjs +1 -1
  26. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
  27. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
  28. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
  29. package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
  30. package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
  31. package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
  32. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
  33. package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
  34. package/es/src/subject-type/src/subject-type.vue.mjs +1 -1
  35. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
  36. package/es/src/withInstall.mjs +1 -1
  37. package/lib/_virtual/_plugin-vue_export-helper.cjs +1 -1
  38. package/lib/index.cjs +1 -1
  39. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs +1 -1
  40. package/lib/package.json.cjs +1 -1
  41. package/lib/src/components.cjs +1 -1
  42. package/lib/src/data-chart/index.cjs +1 -1
  43. package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
  44. package/lib/src/data-chart/src/components/area.vue3.cjs +1 -1
  45. package/lib/src/data-chart/src/components/bar.vue.cjs +1 -1
  46. package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
  47. package/lib/src/data-chart/src/components/empty.vue.cjs +1 -1
  48. package/lib/src/data-chart/src/components/funnel.vue.cjs +1 -1
  49. package/lib/src/data-chart/src/components/line.vue2.cjs +1 -1
  50. package/lib/src/data-chart/src/components/pie.vue.cjs +1 -1
  51. package/lib/src/data-chart/src/components/radar.vue.cjs +1 -1
  52. package/lib/src/data-chart/src/components/scatter-simple.vue.cjs +1 -1
  53. package/lib/src/data-chart/src/components/scatter.vue.cjs +1 -1
  54. package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
  55. package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
  56. package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
  57. package/lib/src/file-upload/index.cjs +1 -1
  58. package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
  59. package/lib/src/fixed-action-bar/index.cjs +1 -1
  60. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +1 -1
  61. package/lib/src/image-upload/index.cjs +1 -1
  62. package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
  63. package/lib/src/make-installer.cjs +1 -1
  64. package/lib/src/photo-crop-tool/index.cjs +1 -1
  65. package/lib/src/photo-crop-tool/src/composables.cjs +1 -1
  66. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +1 -1
  67. package/lib/src/subject-action/index.cjs +1 -1
  68. package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
  69. package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
  70. package/lib/src/subject-layout/index.cjs +1 -1
  71. package/lib/src/subject-layout/src/subject-layout.vue.cjs +1 -1
  72. package/lib/src/subject-list/index.cjs +1 -1
  73. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
  74. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
  75. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
  76. package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
  77. package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
  78. package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
  79. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
  80. package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
  81. package/lib/src/subject-type/index.cjs +1 -1
  82. package/lib/src/subject-type/src/subject-type.vue.cjs +1 -1
  83. package/lib/src/tiny-mce-editor/index.cjs +1 -1
  84. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
  85. package/lib/src/withInstall.cjs +1 -1
  86. package/package.json +8 -4
  87. package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
  88. package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +1 -1
  89. package/types/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- import{ElInput as e,ElLink as l,ElCheckboxGroup as t,ElCheckbox as i,ElTag as a,ElButton as s,ElIcon as n}from"element-plus/es";import{defineComponent as o,useAttrs as r,ref as u,watch as d,onMounted as v,createElementBlock as m,openBlock as c,normalizeClass as f,unref as p,createVNode as x,withCtx as y,createBlock as w,createCommentVNode as g,createElementVNode as h,isRef as _,createTextVNode as b,Fragment as k,renderList as j,toDisplayString as A,mergeProps as C}from"vue";import{Plus as I}from"@element-plus/icons-vue";import{useNamespace as V}from"@qxs-bns/hooks";import{ElMessage as S}from"element-plus";import O from"../../../subject-action/src/subject-action.vue.mjs";import q from"../../../subject-layout/src/subject-layout.vue.mjs";import T from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const R={class:"preview"},B={class:"content"},U={class:"title"},L={key:0},E=["innerHTML"],M={key:1,class:"flex flex-wrap",style:{"margin-top":"10px",color:"#a8abb2"}},D={class:"flex"},H={style:{flex:"1"}},N={class:"flex flex-justify-end"},z={class:"margin-bottom flex flex-items-center"},F={class:"margin-bottom answer-list"},G={class:"label flex flex-justify-end"},J={class:"answer-tags"},K={key:0,class:"margin-bottom flex"},P={style:{flex:"1"}},Q={key:1,class:"margin-bottom flex"},W={style:{flex:"1"}},X={class:"flex flex-justify-end"};var Y=o({__name:"subject-blank-fill",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerSettingVO:{type:Object,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(o,{emit:Y}){const Z=o,$=Y,ee=r(),le=u([]),te=u(""),ie=u(""),ae=u(!1),se=u(""),ne=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],oe=u(["isIgnoreCase"]);function re(){te.value+=" ______",le.value.push({title:"",tag:"",showInput:!1})}function ue(){ae.value=!1,se.value=""}function de(){te.value?le.value.length<1?S.error("至少添加一个填空符!"):$("save",{title:te.value.replaceAll(/ ______/g,"<filter></filter>"),answers:le.value.map((e=>({title:e.title,isCorrect:!0}))),analysis:ie.value,isSetCorrectAnswer:!0,examAnswerSettingBO:{isIgnoreCase:oe.value?.includes("isIgnoreCase"),isInOrder:oe.value?.includes("isInOrder")},examRichTextContent:ae.value?se.value:""}):S.error("题目标题不能为空!")}d((()=>te.value),(()=>{const[...e]=te.value.matchAll(/ ______/g);if(e.length!==le.value.length){const l=le.value.length-e.length;le.value.splice(le.value.length-l,l)}})),v((function(){Z.title&&(te.value=Z.title.replaceAll(/<filter><\/filter>/g," ______")),Z.answerList&&Z.answerList.length&&(le.value=Z.answerList),Z.examAnswerSettingVO&&(oe.value=oe.value.filter((e=>"isIgnoreCase"===e&&Z.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&Z.examAnswerSettingVO?.isInOrder))),Z.analysis&&(ie.value=Z.analysis),Z.examRichTextContent&&(se.value=Z.examRichTextContent,ae.value=!0)}));const ve=V("subject-blank-fill");return(o,r)=>{const u=e,d=l,v=i,V=t,S=a,Y=n,me=s;return c(),m("div",{class:f(p(ve).e("blank-fill-exam"))},[x(q,{"show-edit":o.isEdit},{preview:y((()=>[h("div",R,[h("div",B,[h("span",U,A(o.orderIndex+1)+"."+A(p(te))+"(填空题)",1),p(ae)?(c(),m("div",L,[h("div",{innerHTML:p(se)},null,8,E)])):g("v-if",!0),p(le).some((e=>e.title))?(c(),m("div",M,[r[10]||(r[10]=h("span",{class:"title"},"正确答案:",-1)),(c(!0),m(k,null,j(p(le),((e,l)=>(c(),m("div",{key:l,class:"flex flex-wrap flex-items-center",style:{"margin-right":"10px"}},[h("span",null,"填空"+A(l+1)+":",1),h("span",null,A(e.title),1)])))),128))])):g("v-if",!0)])])])),edit:y((()=>[h("div",D,[r[11]||(r[11]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"题目:")],-1)),h("div",H,[x(u,{modelValue:p(te),"onUpdate:modelValue":r[0]||(r[0]=e=>_(te)?te.value=e:null),type:"textarea",rows:7,"show-word-limit":"",maxlength:"400",placeholder:"【填空题】请输入问题",disabled:o.isSave},null,8,["modelValue","disabled"])])]),h("div",N,[g(' <el-link\n v-if="!showRichText"\n type="primary"\n @click="showRichText = true"\n >\n 添加富文本\n </el-link> '),x(d,{class:"margin-left-10",type:"primary",disabled:o.isSave,onClick:re},{default:y((()=>r[12]||(r[12]=[b(" 插入填空符 ")]))),_:1},8,["disabled"])]),h("div",z,[r[13]||(r[13]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"答题设置:")],-1)),(c(),m(k,null,j(ne,(e=>x(V,{key:e.value,modelValue:p(oe),"onUpdate:modelValue":r[1]||(r[1]=e=>_(oe)?oe.value=e:null)},{default:y((()=>[x(v,{value:e.value,class:"margin-left-10"},{default:y((()=>[b(A(e.label),1)])),_:2},1032,["value"])])),_:2},1032,["modelValue"]))),64))]),h("div",F,[(c(!0),m(k,null,j(p(le),((e,l)=>(c(),m("div",{key:l,class:"answer-item flex flex-items-center"},[h("div",G,[h("span",null,"第"+A(l+1)+"空答案:",1)]),h("div",J,[(c(!0),m(k,null,j(e.title.split(","),(l=>(c(),m(k,{key:l},[l?(c(),w(S,{key:0,closable:"",onClose:t=>function(e,l){if(e){const t=l.title.split(","),i=t.findIndex((l=>l===e));i>-1&&(t.splice(i,1),l.title=t.join(","))}}(l,e)},{default:y((()=>[b(A(l),1)])),_:2},1032,["onClose"])):g("v-if",!0)],64)))),128)),o.isSave?g("v-if",!0):(c(),m(k,{key:0},[e.showInput?(c(),w(u,{key:0,modelValue:e.tag,"onUpdate:modelValue":l=>e.tag=l,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(e)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(c(),w(me,{key:1,size:"small",onClick:l=>e.showInput=!0},{default:y((()=>[x(Y,null,{default:y((()=>[x(p(I))])),_:1}),h("span",null,A(e.title?"添加同义词":"添加答案"),1)])),_:2},1032,["onClick"]))],64))])])))),128))]),o.showAnalysis?(c(),m("div",K,[r[14]||(r[14]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"解析:")],-1)),h("div",P,[x(u,{modelValue:p(ie),"onUpdate:modelValue":r[2]||(r[2]=e=>_(ie)?ie.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):g("v-if",!0),p(ae)?(c(),m("div",Q,[r[16]||(r[16]=h("div",{class:"label flex flex-justify-center"},[h("span",null,"富文本:")],-1)),h("div",W,[x(T,C({"model-value":p(se),"onUpdate:modelValue":r[3]||(r[3]=e=>_(se)?se.value=e:null)},p(ee),{style:{width:"100%"}}),null,16,["model-value"]),h("div",X,[x(d,{type:"danger",onClick:ue},{default:y((()=>r[15]||(r[15]=[b(" 删除富文本 ")]))),_:1})])])])):g("v-if",!0)])),default:y((()=>[o.showAction?(c(),w(O,{key:0,"is-edit":o.isEdit,"is-set":o.isSet,showOtherOption:!1,examAnswerRelationType:Z.examAnswerRelationType,onMoveUp:r[4]||(r[4]=e=>$("move","up")),onMoveDown:r[5]||(r[5]=e=>$("move","down")),onDelete:r[6]||(r[6]=e=>$("delete")),onSave:de,onEdit:r[7]||(r[7]=e=>$("edit")),onAdd:r[8]||(r[8]=e=>$("add",e)),onOnShowRichText:r[9]||(r[9]=e=>ae.value=!0)},null,8,["is-edit","is-set","examAnswerRelationType"])):g("v-if",!0)])),_:1},8,["show-edit"])],2)}}});export{Y as default};
1
+ import{ElInput as e,ElLink as l,ElCheckboxGroup as t,ElCheckbox as s,ElTag as i,ElButton as n,ElIcon as a}from"element-plus/es";import{defineComponent as o,useAttrs as r,ref as d,watch as u,onMounted as f,createElementBlock as m,openBlock as c,normalizeClass as p,unref as y,createVNode as v,withCtx as x,createBlock as _,createCommentVNode as w,createElementVNode as b,isRef as g,createTextVNode as k,Fragment as h,renderList as j,toDisplayString as C,mergeProps as V}from"vue";import{Plus as q}from"@element-plus/icons-vue";import{useNamespace as I}from"@qxs-bns/hooks";import{ElMessage as O}from"element-plus";import S from"../../../subject-action/src/subject-action.vue.mjs";import T from"../../../subject-layout/src/subject-layout.vue.mjs";import A from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const B={class:"preview"},R={class:"content"},U={class:"title"},M={key:0},L=["innerHTML"],D={key:1,class:"flex flex-wrap",style:{"margin-top":"10px",color:"#a8abb2"}},E={class:"flex"},H={style:{flex:"1"}},N={class:"flex flex-justify-end"},z={class:"margin-bottom flex flex-items-center"},F={class:"margin-bottom answer-list"},G={class:"label flex flex-justify-end"},J={class:"answer-tags"},K={key:0,class:"margin-bottom flex"},P={style:{flex:"1"}},Q={key:1,class:"margin-bottom flex"},W={style:{flex:"1"}},X={class:"flex flex-justify-end"};var Y=o({__name:"subject-blank-fill",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerSettingVO:{type:Object,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(o,{emit:Y}){const Z=o,$=Y,ee=r(),le=d([]),te=d(""),se=d(""),ie=d(!1),ne=d(""),ae=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],oe=d(["isIgnoreCase"]);function re(){te.value+=" ______",le.value.push({title:"",tag:"",showInput:!1})}function de(){ie.value=!1,ne.value=""}function ue(){te.value?le.value.length<1?O.error("至少添加一个填空符!"):$("save",{title:te.value.replaceAll(/ ______/g,"<filter></filter>"),answers:le.value.map((e=>({title:e.title,isCorrect:!0}))),analysis:se.value,isSetCorrectAnswer:!0,examAnswerSettingBO:{isIgnoreCase:oe.value?.includes("isIgnoreCase"),isInOrder:oe.value?.includes("isInOrder")},examRichTextContent:ie.value?ne.value:""}):O.error("题目标题不能为空!")}u((()=>te.value),(()=>{const[...e]=te.value.matchAll(/ ______/g);if(e.length!==le.value.length){const l=le.value.length-e.length;le.value.splice(le.value.length-l,l)}})),f((function(){Z.title&&(te.value=Z.title.replaceAll(/<filter><\/filter>/g," ______")),Z.answerList&&Z.answerList.length&&(le.value=Z.answerList),Z.examAnswerSettingVO&&(oe.value=oe.value.filter((e=>"isIgnoreCase"===e&&Z.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&Z.examAnswerSettingVO?.isInOrder))),Z.analysis&&(se.value=Z.analysis),Z.examRichTextContent&&(ne.value=Z.examRichTextContent,ie.value=!0)}));const fe=I("subject-blank-fill");return(o,r)=>{const d=e,u=l,f=s,I=t,O=i,Y=a,me=n;return c(),m("div",{class:p(y(fe).e("blank-fill-exam"))},[v(T,{"show-edit":o.isEdit},{preview:x((()=>[b("div",B,[b("div",R,[b("span",U,C(o.orderIndex+1)+"."+C(y(te))+"(填空题)",1),y(ie)?(c(),m("div",M,[b("div",{innerHTML:y(ne)},null,8,L)])):w("v-if",!0),y(le).some((e=>e.title))?(c(),m("div",D,[r[10]||(r[10]=b("span",{class:"title"},"正确答案:",-1)),(c(!0),m(h,null,j(y(le),((e,l)=>(c(),m("div",{key:l,class:"flex flex-wrap flex-items-center",style:{"margin-right":"10px"}},[b("span",null,"填空"+C(l+1)+":",1),b("span",null,C(e.title),1)])))),128))])):w("v-if",!0)])])])),edit:x((()=>[b("div",E,[r[11]||(r[11]=b("div",{class:"label flex flex-justify-end"},[b("span",null,"题目:")],-1)),b("div",H,[v(d,{modelValue:y(te),"onUpdate:modelValue":r[0]||(r[0]=e=>g(te)?te.value=e:null),type:"textarea",rows:7,"show-word-limit":"",maxlength:"400",placeholder:"【填空题】请输入问题",disabled:o.isSave},null,8,["modelValue","disabled"])])]),b("div",N,[w(' <el-link\n v-if="!showRichText"\n type="primary"\n @click="showRichText = true"\n >\n 添加富文本\n </el-link> '),v(u,{class:"margin-left-10",type:"primary",disabled:o.isSave,onClick:re},{default:x((()=>r[12]||(r[12]=[k(" 插入填空符 ")]))),_:1},8,["disabled"])]),b("div",z,[r[13]||(r[13]=b("div",{class:"label flex flex-justify-end"},[b("span",null,"答题设置:")],-1)),(c(),m(h,null,j(ae,(e=>v(I,{key:e.value,modelValue:y(oe),"onUpdate:modelValue":r[1]||(r[1]=e=>g(oe)?oe.value=e:null)},{default:x((()=>[v(f,{value:e.value,class:"margin-left-10"},{default:x((()=>[k(C(e.label),1)])),_:2},1032,["value"])])),_:2},1032,["modelValue"]))),64))]),b("div",F,[(c(!0),m(h,null,j(y(le),((e,l)=>(c(),m("div",{key:l,class:"answer-item flex flex-items-center"},[b("div",G,[b("span",null,"第"+C(l+1)+"空答案:",1)]),b("div",J,[(c(!0),m(h,null,j(e.title.split(","),(l=>(c(),m(h,{key:l},[l?(c(),_(O,{key:0,closable:"",onClose:t=>function(e,l){if(e){const t=l.title.split(","),s=t.findIndex((l=>l===e));s>-1&&(t.splice(s,1),l.title=t.join(","))}}(l,e)},{default:x((()=>[k(C(l),1)])),_:2},1032,["onClose"])):w("v-if",!0)],64)))),128)),o.isSave?w("v-if",!0):(c(),m(h,{key:0},[e.showInput?(c(),_(d,{key:0,modelValue:e.tag,"onUpdate:modelValue":l=>e.tag=l,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(e)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(c(),_(me,{key:1,size:"small",onClick:l=>e.showInput=!0},{default:x((()=>[v(Y,null,{default:x((()=>[v(y(q))])),_:1}),b("span",null,C(e.title?"添加同义词":"添加答案"),1)])),_:2},1032,["onClick"]))],64))])])))),128))]),o.showAnalysis?(c(),m("div",K,[r[14]||(r[14]=b("div",{class:"label flex flex-justify-end"},[b("span",null,"解析:")],-1)),b("div",P,[v(d,{modelValue:y(se),"onUpdate:modelValue":r[2]||(r[2]=e=>g(se)?se.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):w("v-if",!0),y(ie)?(c(),m("div",Q,[r[16]||(r[16]=b("div",{class:"label flex flex-justify-center"},[b("span",null,"富文本:")],-1)),b("div",W,[v(A,V({"model-value":y(ne),"onUpdate:modelValue":r[3]||(r[3]=e=>g(ne)?ne.value=e:null)},y(ee),{style:{width:"100%"}}),null,16,["model-value"]),b("div",X,[v(u,{type:"danger",onClick:de},{default:x((()=>r[15]||(r[15]=[k(" 删除富文本 ")]))),_:1})])])])):w("v-if",!0)])),default:x((()=>[o.showAction?(c(),_(S,{key:0,"is-edit":o.isEdit,"is-set":o.isSet,showOtherOption:!1,examAnswerRelationType:Z.examAnswerRelationType,onMoveUp:r[4]||(r[4]=e=>$("move","up")),onMoveDown:r[5]||(r[5]=e=>$("move","down")),onDelete:r[6]||(r[6]=e=>$("delete")),onSave:ue,onEdit:r[7]||(r[7]=e=>$("edit")),onAdd:r[8]||(r[8]=e=>$("add",e)),onOnShowRichText:r[9]||(r[9]=e=>ie.value=!0)},null,8,["is-edit","is-set","examAnswerRelationType"])):w("v-if",!0)])),_:1},8,["show-edit"])],2)}}});export{Y as default};
2
2
  //# sourceMappingURL=subject-blank-fill.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{ElInput as e,ElIcon as l,ElLink as t,ElRow as a,ElCol as s,ElRadio as n}from"element-plus/es";import{defineComponent as i,useAttrs as o,ref as u,computed as r,onMounted as d,createElementBlock as c,openBlock as p,normalizeClass as v,unref as m,createVNode as f,withCtx as x,createBlock as y,createCommentVNode as h,createElementVNode as w,isRef as b,Fragment as g,renderList as j,toDisplayString as C,mergeProps as S,createTextVNode as k}from"vue";import{CirclePlus as V,Remove as q}from"@element-plus/icons-vue";import{useNamespace as T}from"@qxs-bns/hooks";import{ElMessage as _}from"element-plus";import L from"../../../subject-action/src/subject-action.vue.mjs";import A from"../../../subject-layout/src/subject-layout.vue.mjs";import R from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const U={class:"preview"},M={class:"title"},E={key:0},O=["innerHTML"],Q={class:"answer-radio flex-col"},B={style:{flex:"1"}},D={class:"answer flex"},H={class:"flex"},I={class:"answer-list flex-col"},N={class:"order"},$={class:"flex",style:{"margin-bottom":"20px"}},P={style:{flex:"1"}},z={key:0,class:"margin-bottom flex"},F={style:{flex:"1"}},G={class:"flex flex-justify-end"};var J=i({name:"QxsSubjectScale",__name:"subject-scale",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},rowTitle:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},scaleQuestionList:{type:null,required:!1},examRichTextContent:{type:String,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(i,{emit:J}){const K=i,W=J,X=o(),Y=u([{title:""},{title:""},{title:""},{title:""},{title:""}]),Z=u(""),ee=u(""),le=u(""),te=u(!1),ae=u(""),se=u([]),ne=r((()=>Math.ceil(24/(Y.value.length+1))));function ie(){5!==Y.value.length&&Y.value.push({title:""})}function oe(){te.value=!1,ae.value=""}function ue(){if(!Z.value)return void _.error("题目标题不能为空!");let e="";Y.value.forEach(((l,t)=>{l.title||(e+=`选项${String.fromCharCode(65+t)}未填写。`)})),e?_.error(e):le.value?(se.value=le.value.split("\n").filter((e=>e)),W("save",{title:Z.value,answers:Y.value,analysis:ee.value,scaleQuestionList:se.value,examRichTextContent:te.value?ae.value:""})):_.error("行标题不能为空!")}d((function(){K.title&&(Z.value=K.title),K.answerList&&K.answerList.length&&(Y.value=K.answerList),K.analysis&&(ee.value=K.analysis),K.scaleQuestionList&&(se.value=K.scaleQuestionList,le.value=se.value.join("\n")),K.examRichTextContent&&(ae.value=K.examRichTextContent,te.value=!0)}));const re=T("subject-scale");return(i,o)=>{const u=s,r=a,d=n,T=e,_=l,J=t;return p(),c("div",{class:v(m(re).e("scale-exam"))},[f(A,{"show-edit":i.isEdit},{preview:x((()=>[w("div",U,[w("div",null,[w("span",M,C(i.orderIndex+1)+"."+C(m(Z))+"(量表题)",1),m(te)?(p(),c("div",E,[w("div",{innerHTML:m(ae)},null,8,O)])):h("v-if",!0)]),w("div",Q,[f(r,{style:{padding:"10px 0"}},{default:x((()=>[f(u,{span:m(ne)},null,8,["span"]),(p(!0),c(g,null,j(m(Y),(e=>(p(),y(u,{key:e.title,class:"flex flex-center",span:m(ne)},{default:x((()=>[w("span",null,C(e.title),1)])),_:2},1032,["span"])))),128))])),_:1}),(p(!0),c(g,null,j(m(se),(e=>(p(),y(r,{key:e,style:{padding:"10px 0"}},{default:x((()=>[f(u,{span:m(ne),class:"flex flex-center"},{default:x((()=>[w("span",null,C(e),1)])),_:2},1032,["span"]),(p(!0),c(g,null,j(m(Y).length,(e=>(p(),y(u,{key:e,class:"radio-item flex flex-center",span:m(ne)},{default:x((()=>[f(d,{disabled:!0})])),_:2},1032,["span"])))),128))])),_:2},1024)))),128))])])])),edit:x((()=>[w("div",{class:v(["flex",[{"margin-bottom":m(te)}]])},[o[10]||(o[10]=w("div",{class:"label flex flex-justify-center"},[w("span",null,"题目:")],-1)),w("div",B,[f(T,{modelValue:m(Z),"onUpdate:modelValue":o[0]||(o[0]=e=>b(Z)?Z.value=e:null),type:"textarea",rows:2,placeholder:"【量表题】请输入问题",disabled:i.isSave},null,8,["modelValue","disabled"])])],2),w("div",D,[o[11]||(o[11]=w("div",{class:"label flex flex-justify-center"},[w("span",null,"行标题:")],-1)),w("div",H,[f(T,{modelValue:m(le),"onUpdate:modelValue":o[1]||(o[1]=e=>b(le)?le.value=e:null),type:"textarea",placeholder:"请输入行标题",style:{width:"160px"},rows:10},null,8,["modelValue"]),w("div",I,[(p(!0),c(g,null,j(m(Y),((e,l)=>(p(),c("div",{key:l,class:"answer-item flex flex-items-center"},[w("span",N,C(String.fromCharCode(65+l))+".",1),f(T,{modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,class:"input","show-word-limit":"",maxlength:10,placeholder:`选项${String.fromCharCode(65+l)}`,disabled:i.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),h(' <PlusCircleOutlined\n class="icon"\n :class="[{ disabled: answers.length === 5 }]"\n @click="addAnswer"\n />\n <MinusCircleOutlined\n class="icon"\n :class="[{ disabled: answers.length < 3 }]"\n @click="deleteAnswer(index)"\n /> '),f(_,{class:"icon"},{default:x((()=>[f(m(V),{class:v([{disabled:5===m(Y).length}]),onClick:ie},null,8,["class"])])),_:1}),f(_,{class:"icon"},{default:x((()=>[f(m(q),{class:v([{disabled:m(Y).length<3}]),onClick:e=>function(e){Y.value.length<3||Y.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024)])))),128))])])]),w("div",$,[o[12]||(o[12]=w("div",{class:"label flex flex-justify-center"},[w("span",null,"解析:")],-1)),w("div",P,[f(T,{modelValue:m(ee),"onUpdate:modelValue":o[2]||(o[2]=e=>b(ee)?ee.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])]),m(te)?(p(),c("div",z,[o[14]||(o[14]=w("div",{class:"label flex flex-justify-center"},[w("span",null,"富文本:")],-1)),w("div",F,[f(R,S({"model-value":m(ae),"onUpdate:modelValue":o[3]||(o[3]=e=>b(ae)?ae.value=e:null)},m(X),{style:{width:"100%"}}),null,16,["model-value"]),w("div",G,[f(J,{type:"danger",onClick:oe},{default:x((()=>o[13]||(o[13]=[k(" 删除富文本 ")]))),_:1})])])])):h("v-if",!0)])),default:x((()=>[i.showAction?(p(),y(L,{key:0,"is-edit":i.isEdit,"is-set":i.isSet,showOtherOption:!1,examAnswerRelationType:K.examAnswerRelationType,onMoveUp:o[4]||(o[4]=e=>W("move","up")),onMoveDown:o[5]||(o[5]=e=>W("move","down")),onDelete:o[6]||(o[6]=e=>W("delete")),onSave:ue,onEdit:o[7]||(o[7]=e=>W("edit")),onAdd:o[8]||(o[8]=e=>W("add",e)),onOnShowRichText:o[9]||(o[9]=e=>te.value=!0)},null,8,["is-edit","is-set","examAnswerRelationType"])):h("v-if",!0)])),_:1},8,["show-edit"])],2)}}});export{J as default};
1
+ import{ElInput as e,ElIcon as l,ElLink as s,ElRow as t,ElCol as n,ElRadio as a}from"element-plus/es";import{defineComponent as i,useAttrs as d,ref as o,computed as r,onMounted as u,createElementBlock as c,openBlock as p,normalizeClass as m,unref as f,createVNode as x,withCtx as y,createBlock as v,createCommentVNode as w,createElementVNode as b,isRef as h,Fragment as g,renderList as j,toDisplayString as k,mergeProps as V,createTextVNode as q}from"vue";import{CirclePlus as S,Remove as _}from"@element-plus/icons-vue";import{useNamespace as T}from"@qxs-bns/hooks";import{ElMessage as C}from"element-plus";import A from"../../../subject-action/src/subject-action.vue.mjs";import U from"../../../subject-layout/src/subject-layout.vue.mjs";import M from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const R={class:"preview"},L={class:"title"},O={key:0},B=["innerHTML"],Q={class:"answer-radio flex-col"},D={style:{flex:"1"}},E={class:"answer flex"},H={class:"flex"},N={class:"answer-list flex-col"},$={class:"order"},I={class:"flex",style:{"margin-bottom":"20px"}},P={style:{flex:"1"}},z={key:0,class:"margin-bottom flex"},F={style:{flex:"1"}},G={class:"flex flex-justify-end"};var J=i({name:"QxsSubjectScale",__name:"subject-scale",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},rowTitle:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},scaleQuestionList:{type:null,required:!1},examRichTextContent:{type:String,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(i,{emit:J}){const K=i,W=J,X=d(),Y=o([{title:""},{title:""},{title:""},{title:""},{title:""}]),Z=o(""),ee=o(""),le=o(""),se=o(!1),te=o(""),ne=o([]),ae=r((()=>Math.ceil(24/(Y.value.length+1))));function ie(){5!==Y.value.length&&Y.value.push({title:""})}function de(){se.value=!1,te.value=""}function oe(){if(!Z.value)return void C.error("题目标题不能为空!");let e="";Y.value.forEach(((l,s)=>{l.title||(e+=`选项${String.fromCharCode(65+s)}未填写。`)})),e?C.error(e):le.value?(ne.value=le.value.split("\n").filter((e=>e)),W("save",{title:Z.value,answers:Y.value,analysis:ee.value,scaleQuestionList:ne.value,examRichTextContent:se.value?te.value:""})):C.error("行标题不能为空!")}u((function(){K.title&&(Z.value=K.title),K.answerList&&K.answerList.length&&(Y.value=K.answerList),K.analysis&&(ee.value=K.analysis),K.scaleQuestionList&&(ne.value=K.scaleQuestionList,le.value=ne.value.join("\n")),K.examRichTextContent&&(te.value=K.examRichTextContent,se.value=!0)}));const re=T("subject-scale");return(i,d)=>{const o=n,r=t,u=a,T=e,C=l,J=s;return p(),c("div",{class:m(f(re).e("scale-exam"))},[x(U,{"show-edit":i.isEdit},{preview:y((()=>[b("div",R,[b("div",null,[b("span",L,k(i.orderIndex+1)+"."+k(f(Z))+"(量表题)",1),f(se)?(p(),c("div",O,[b("div",{innerHTML:f(te)},null,8,B)])):w("v-if",!0)]),b("div",Q,[x(r,{style:{padding:"10px 0"}},{default:y((()=>[x(o,{span:f(ae)},null,8,["span"]),(p(!0),c(g,null,j(f(Y),(e=>(p(),v(o,{key:e.title,class:"flex flex-center",span:f(ae)},{default:y((()=>[b("span",null,k(e.title),1)])),_:2},1032,["span"])))),128))])),_:1}),(p(!0),c(g,null,j(f(ne),(e=>(p(),v(r,{key:e,style:{padding:"10px 0"}},{default:y((()=>[x(o,{span:f(ae),class:"flex flex-center"},{default:y((()=>[b("span",null,k(e),1)])),_:2},1032,["span"]),(p(!0),c(g,null,j(f(Y).length,(e=>(p(),v(o,{key:e,class:"radio-item flex flex-center",span:f(ae)},{default:y((()=>[x(u,{disabled:!0})])),_:2},1032,["span"])))),128))])),_:2},1024)))),128))])])])),edit:y((()=>[b("div",{class:m(["flex",[{"margin-bottom":f(se)}]])},[d[10]||(d[10]=b("div",{class:"label flex flex-justify-center"},[b("span",null,"题目:")],-1)),b("div",D,[x(T,{modelValue:f(Z),"onUpdate:modelValue":d[0]||(d[0]=e=>h(Z)?Z.value=e:null),type:"textarea",rows:2,placeholder:"【量表题】请输入问题",disabled:i.isSave},null,8,["modelValue","disabled"])])],2),b("div",E,[d[11]||(d[11]=b("div",{class:"label flex flex-justify-center"},[b("span",null,"行标题:")],-1)),b("div",H,[x(T,{modelValue:f(le),"onUpdate:modelValue":d[1]||(d[1]=e=>h(le)?le.value=e:null),type:"textarea",placeholder:"请输入行标题",style:{width:"160px"},rows:10},null,8,["modelValue"]),b("div",N,[(p(!0),c(g,null,j(f(Y),((e,l)=>(p(),c("div",{key:l,class:"answer-item flex flex-items-center"},[b("span",$,k(String.fromCharCode(65+l))+".",1),x(T,{modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,class:"input","show-word-limit":"",maxlength:10,placeholder:`选项${String.fromCharCode(65+l)}`,disabled:i.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),w(' <PlusCircleOutlined\n class="icon"\n :class="[{ disabled: answers.length === 5 }]"\n @click="addAnswer"\n />\n <MinusCircleOutlined\n class="icon"\n :class="[{ disabled: answers.length < 3 }]"\n @click="deleteAnswer(index)"\n /> '),x(C,{class:"icon"},{default:y((()=>[x(f(S),{class:m([{disabled:5===f(Y).length}]),onClick:ie},null,8,["class"])])),_:1}),x(C,{class:"icon"},{default:y((()=>[x(f(_),{class:m([{disabled:f(Y).length<3}]),onClick:e=>function(e){Y.value.length<3||Y.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024)])))),128))])])]),b("div",I,[d[12]||(d[12]=b("div",{class:"label flex flex-justify-center"},[b("span",null,"解析:")],-1)),b("div",P,[x(T,{modelValue:f(ee),"onUpdate:modelValue":d[2]||(d[2]=e=>h(ee)?ee.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])]),f(se)?(p(),c("div",z,[d[14]||(d[14]=b("div",{class:"label flex flex-justify-center"},[b("span",null,"富文本:")],-1)),b("div",F,[x(M,V({"model-value":f(te),"onUpdate:modelValue":d[3]||(d[3]=e=>h(te)?te.value=e:null)},f(X),{style:{width:"100%"}}),null,16,["model-value"]),b("div",G,[x(J,{type:"danger",onClick:de},{default:y((()=>d[13]||(d[13]=[q(" 删除富文本 ")]))),_:1})])])])):w("v-if",!0)])),default:y((()=>[i.showAction?(p(),v(A,{key:0,"is-edit":i.isEdit,"is-set":i.isSet,showOtherOption:!1,examAnswerRelationType:K.examAnswerRelationType,onMoveUp:d[4]||(d[4]=e=>W("move","up")),onMoveDown:d[5]||(d[5]=e=>W("move","down")),onDelete:d[6]||(d[6]=e=>W("delete")),onSave:oe,onEdit:d[7]||(d[7]=e=>W("edit")),onAdd:d[8]||(d[8]=e=>W("add",e)),onOnShowRichText:d[9]||(d[9]=e=>se.value=!0)},null,8,["is-edit","is-set","examAnswerRelationType"])):w("v-if",!0)])),_:1},8,["show-edit"])],2)}}});export{J as default};
2
2
  //# sourceMappingURL=subject-scale.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{ElCheckbox as e,ElRadio as l,ElInput as t,ElSelect as a,ElOption as i,ElIcon as s,ElLink as n,ElDialog as r,ElButton as o,ElMessage as u}from"element-plus/es";import{defineComponent as d,useAttrs as m,ref as p,computed as c,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"},O={class:"title"},z={key:0},M={key:1},D={key:0},H=["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=p(0),de=p(ne.isKey),me=p(1),pe=p(ne.examAnswerRelationType),ce=p([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ve=p(2),ye=p(""),fe=p(""),xe=p(!1),we=p(""),he=p(0),Ce=p(!1),ge=p(""),be=c((()=>"single"===ne.type?"单选题":"multiple"===ne.type?"多选题":"排序题")),ke=p([]),Se=c((()=>{const e=[];for(let l=ce.value.length;l>1;l--)e.push({label:`至少选择${l}项`,value:l});return e.reverse()}));function Ae(){ne.isSave||ce.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?ce.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(ce.value.map((e=>e.title))).size===ce.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:ce.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:pe.value,isKey:de.value,answerCheckType:me.value}):u.error("请设置支持选项")}else u.error("选项不能重复")}function qe(){ce.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=c((()=>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&&(pe.value=ne.examAnswerRelationType),ne.answerList&&ne.answerList.length&&(ce.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,p=l,c=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",O,[V(T(u.orderIndex+1)+"."+T(h(ye))+" ",1),"single"===u.type?(x(),f("span",z,"(单选题)")):["multiple","sort"].includes(u.type)?(x(),f("span",M," ("+T(h(be))+T(h(ve)?`至少选${h(ve)}项${"sort"===u.type?"并排序":""}`:"")+") ",1)):S("v-if",!0)])]),h(xe)?(x(),f("div",D,[A("div",{innerHTML:h(we)},null,8,H)])):S("v-if",!0),A("div",Q,["sort"===u.type?(x(!0),f(q,{key:0},R(h(ce),((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(ce),((e,l)=>(x(),k(p,{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(pe)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+T(2===h(pe)?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),showOtherOption:"multiple"===ne.type||"single"===ne.type,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","showOtherOption","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(c,{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(ce),((e,l)=>(x(),f("div",{key:l,class:"answer-item flex flex-items-center"},[A("span",X,T(String.fromCharCode(65+l))+".",1),C(c,{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&&ce.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(ce).length<3||u.isSave}]),onClick:e=>function(e){ce.value.length<3||ne.isSave||ce.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024),1===h(pe)&&"sort"!==u.type?(x(),k(se,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=l,ue.value=t,ge.value=ce.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(pe)&&"sort"!==u.type?(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),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(ce),((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(c,{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};
1
+ import{ElCheckbox as e,ElRadio as l,ElInput as t,ElSelect as i,ElOption as n,ElIcon as s,ElLink as a,ElDialog as o,ElButton as r,ElMessage as d}from"element-plus/es";import{defineComponent as u,useAttrs as m,ref as c,computed as p,watch as f,onMounted as y,createElementBlock as v,openBlock as x,normalizeClass as b,unref as w,createVNode as g,createSlots as h,withCtx as k,createBlock as C,createCommentVNode as V,createElementVNode as S,createTextVNode as q,toDisplayString as _,Fragment as j,renderList as A,isRef as T,mergeProps as U}from"vue";import{CirclePlus as R,Remove as B}from"@element-plus/icons-vue";import{useNamespace as $}from"@qxs-bns/hooks";import N from"../../../subject-action/src/subject-action.vue.mjs";import I from"../../../subject-layout/src/subject-layout.vue.mjs";import K from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{setGuid as O}from"@qxs-bns/utils";const E={class:"preview"},M={class:"title"},z={key:0},D={key:1},L={key:0},H=["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"},ie={style:{flex:"1"}},ne={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 ae=u,oe=se,re=m(),de=c(0),ue=c(ae.isKey),me=c(1),ce=c(ae.examAnswerRelationType),pe=c([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),fe=c(2),ye=c(""),ve=c(""),xe=c(!1),be=c(""),we=c(0),ge=c(!1),he=c(""),ke=p((()=>"single"===ae.type?"单选题":"multiple"===ae.type?"多选题":"排序题")),Ce=c([]),Ve=p((()=>{const e=[];for(let l=pe.value.length;l>1;l--)e.push({label:`至少选择${l}项`,value:l});return e.reverse()}));function Se(){ae.isSave||pe.value.push({title:"",isCorrect:!1,customAnswerId:O()})}function qe(){xe.value=!1,be.value=""}function _e(){if(!ye.value)return void d.error("题目标题不能为空!");if(!me.value)return void d.error("请选择答题设置");let e="",l=!1,t=0;if("multiple"===ae.type||"single"===ae.type?pe.value.forEach(((i,n)=>{i.title?.trim()||(e+=`选项${String.fromCharCode(65+n)}未填写。`),i.isCorrect&&(l=!0,t++),i.relationType=i.resultItem?1:i.answerRelations?.length?2:null})):"sort"===ae.type&&Ce.value.length&&(l=!0),e)return void d.error(e);if(new Set(pe.value.map((e=>e.title))).size===pe.value.length){if("multiple"===ae.type){if(1===t)return void d.error("请至少设置两个支持选项");if(l&&t<fe.value)return void d.error("至少选几项与支持选项数不符")}2!==me.value&&3!==me.value||l?oe("save",{title:ye.value,answers:pe.value.map(((e,l)=>({...e,orderIndex:l+1}))),examExpand:Ce.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:ve.value,isSetCorrectAnswer:l,leastAnswerCount:fe.value,examRichTextContent:xe.value?be.value:"",examAnswerRelationType:ce.value,isKey:ue.value,answerCheckType:me.value}):d.error("请设置支持选项")}else d.error("选项不能重复")}function je(){pe.value[de.value].resultItem=he.value||"",ge.value=!1}function Ae(){ge.value=!1,he.value=""}function Te(e){ue.value=e}function Ue(e){me.value=e}function Re(e,l){oe("add",e,l?ae.examAnswerRelationType:null)}f((()=>ae.isEdit),(()=>{ae.isEdit&&(we.value=(new Date).getTime())}));const Be=p((()=>e=>{let l=0;return e.forEach((e=>{e.relationAnswers&&(l+=e.relationAnswers.length)})),l})),$e=$("subject-single");return y((function(){if(ae.title&&(ye.value=ae.title),ae.answerCheckType&&(me.value=ae.answerCheckType),ae.isKey&&(ue.value=ae.isKey),ae.examAnswerRelationType&&(ce.value=ae.examAnswerRelationType),ae.answerList&&ae.answerList.length&&(pe.value=ae.answerList),ae.leastAnswerCount&&(fe.value=ae.leastAnswerCount),ae.examExpand&&ae.examExpand){const e=ae.examExpand.split(",");Ce.value=e.map((e=>{const l=ae.answerList.find((l=>l.answerId?.toString()===e));return l?String.fromCharCode(65+l.orderIndex-1):e})).filter(Boolean)}ae.analysis&&(ve.value=ae.analysis),ae.examRichTextContent&&(be.value=ae.examRichTextContent,xe.value=!0)})),(d,u)=>{const m=e,c=l,p=t,f=n,y=i,$=s,se=a,we=r,Ne=o;return x(),v("div",{class:b(w($e).e("single-exam"))},[g(I,{"show-edit":d.isEdit},h({preview:k((()=>[S("div",E,[S("div",null,[S("span",M,[q(_(d.orderIndex+1)+"."+_(w(ye))+" ",1),"single"===d.type?(x(),v("span",z,"(单选题)")):["multiple","sort"].includes(d.type)?(x(),v("span",D," ("+_(w(ke))+_(w(fe)?`至少选${w(fe)}项${"sort"===d.type?"并排序":""}`:"")+") ",1)):V("v-if",!0)])]),w(xe)?(x(),v("div",L,[S("div",{innerHTML:w(be)},null,8,H)])):V("v-if",!0),S("div",Q,["sort"===d.type?(x(!0),v(j,{key:0},A(w(pe),((e,l)=>(x(),C(m,{key:l,class:"radio",disabled:!0},{default:k((()=>[S("span",F,_(String.fromCharCode(65+l))+". ",1),q(" "+_(e.title),1)])),_:2},1024)))),128)):(x(!0),v(j,{key:1},A(w(pe),((e,l)=>(x(),C(c,{key:l,class:"radio",value:"disabled",disabled:""},{default:k((()=>[S("span",G,_(String.fromCharCode(65+l))+". ",1),q(" "+_(e.title)+" "+_(e.isCorrect?"(支持选项)":"")+" "+_(1===w(ce)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+_(2===w(ce)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:k((()=>[d.showAction?(x(),C(N,{key:0,"is-edit":d.isEdit,"is-set":d.isSet,isKey:w(ue),showOtherOption:"multiple"===ae.type||"single"===ae.type,examAnswerRelationType:ae.examAnswerRelationType,answerCheckType:w(me),onMoveUp:u[5]||(u[5]=e=>oe("move","up")),onMoveDown:u[6]||(u[6]=e=>oe("move","down")),onDelete:u[7]||(u[7]=e=>oe("delete")),onSave:_e,onEdit:u[8]||(u[8]=e=>oe("edit")),onAdd:Re,onOnShowRichText:u[9]||(u[9]=e=>xe.value=!0),onSetKey:Te,onSetAnswerSetting:Ue},null,8,["is-edit","is-set","isKey","showOtherOption","examAnswerRelationType","answerCheckType"])):V("v-if",!0)])),_:2},[d.isEdit?{name:"edit",fn:k((()=>[S("div",{class:b(["flex",[{"margin-bottom":w(xe)}]])},[u[12]||(u[12]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"题目:")],-1)),S("div",J,[g(p,{modelValue:w(ye),"onUpdate:modelValue":u[0]||(u[0]=e=>T(ye)?ye.value=e:null),type:"textarea",rows:2,placeholder:`【${w(ke)}】请输入问题`,disabled:d.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),S("div",P,[u[13]||(u[13]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"设置:")],-1)),["multiple","sort"].includes(d.type)?(x(),C(y,{key:0,modelValue:w(fe),"onUpdate:modelValue":u[1]||(u[1]=e=>T(fe)?fe.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:d.isSave},{default:k((()=>[(x(!0),v(j,null,A(w(Ve),(e=>(x(),C(f,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):V("v-if",!0)]),S("div",W,[(x(!0),v(j,null,A(w(pe),((e,l)=>(x(),v("div",{key:l,class:"answer-item flex flex-items-center"},[S("span",X,_(String.fromCharCode(65+l))+".",1),g(p,{modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+l)}`,disabled:d.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(d.type)?(x(),C(m,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":l=>e.isCorrect=l,class:b([{"is-correct":e.isCorrect}]),disabled:d.isSave,style:{"margin-left":"10px"},onChange:l=>function(e,l){"single"===ae.type?(l&&pe.value.forEach((l=>{l!==e&&(l.isCorrect=!1)})),e.isCorrect=l):"multiple"===ae.type&&(e.isCorrect=l)}(e,l)},{default:k((()=>[...u[14]||(u[14]=[q(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):V("v-if",!0),g($,{class:"icon"},{default:k((()=>[g(w(R),{class:b([{disabled:d.isSave}]),onClick:Se},null,8,["class"])])),_:1}),g($,{class:"icon"},{default:k((()=>[g(w(B),{class:b([{disabled:w(pe).length<3||d.isSave}]),onClick:e=>function(e){pe.value.length<3||ae.isSave||pe.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024),1===w(ce)&&"sort"!==d.type?(x(),C(se,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=l,de.value=t,he.value=pe.value[t].resultItem||"",void(ge.value=!0);var t}},{default:k((()=>[S("span",null,_(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):V("v-if",!0),2===w(ce)&&"sort"!==d.type?(x(),C(se,{key:2,type:"primary",class:"margin-left-10",onClick:l=>function(e){e.customAnswerId=e.examAnswerId||O(),oe("setRelation",ae.customId,e)}(e)},{default:k((()=>[S("span",null,_(e.answerRelations?.length?`关联了${w(Be)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):V("v-if",!0)])))),128))]),"sort"===d.type?(x(),v("div",Y,[u[15]||(u[15]=S("div",{class:"label flex flex-justify-end"},[S("span",null,"排序答案:")],-1)),S("div",Z,[g(y,{modelValue:w(Ce),"onUpdate:modelValue":u[2]||(u[2]=e=>T(Ce)?Ce.value=e:null),multiple:"",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:k((()=>[V(' :options="[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))" '),(x(!0),v(j,null,A(w(pe),((e,l)=>(x(),C(f,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):V("v-if",!0),d.showAnalysis?(x(),v("div",ee,[u[16]||(u[16]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"解析:")],-1)),S("div",le,[g(p,{modelValue:w(ve),"onUpdate:modelValue":u[3]||(u[3]=e=>T(ve)?ve.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):V("v-if",!0),w(xe)?(x(),v("div",te,[u[18]||(u[18]=S("div",{class:"label flex flex-justify-center"},[S("span",null,"富文本:")],-1)),S("div",ie,[g(K,U({"model-value":w(be),"onUpdate:modelValue":u[4]||(u[4]=e=>T(be)?be.value=e:null)},w(re),{style:{width:"100%"}}),null,16,["model-value"]),S("div",ne,[g(se,{type:"danger",onClick:qe},{default:k((()=>u[17]||(u[17]=[q(" 删除富文本 ")]))),_:1})])])])):V("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),g(Ne,{modelValue:w(ge),"onUpdate:modelValue":u[11]||(u[11]=e=>T(ge)?ge.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:k((()=>[g(we,{class:"customize-button",type:"primary",plain:"",onClick:Ae},{default:k((()=>u[19]||(u[19]=[q(" 取消 ")]))),_:1}),g(we,{class:"customize-button",type:"primary",plain:"",onClick:je},{default:k((()=>u[20]||(u[20]=[q(" 保存 ")]))),_:1})])),default:k((()=>[(x(),C(K,U({key:w(de),"model-value":w(he),"onUpdate:modelValue":u[10]||(u[10]=e=>T(he)?he.value=e:null)},w(re),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});export{se as default};
2
2
  //# sourceMappingURL=subject-single.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-single.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\nimport { setGuid } from '@qxs-bns/utils'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n customId?: number\n examId?: number\n isKey: boolean\n answerCheckType: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(props.isKey)\nconst answerCheckType = ref(1)\nconst examAnswerRelationType = ref(props.examAnswerRelationType)\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 && type !== 'sort'\"\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 && type !== 'sort'\"\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 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 :showOtherOption=\"props.type === 'multiple' || props.type === 'single'\"\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
+ {"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(props.examAnswerRelationType)\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 // 答题设置必选\n if(!answerCheckType.value) {\n ElMessage.error('请选择答题设置')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\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\n if (props.answerCheckType) {\n answerCheckType.value = props.answerCheckType\n }\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 && type !== 'sort'\"\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 && type !== 'sort'\"\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 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 :showOtherOption=\"props.type === 'multiple' || props.type === 'single'\"\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
- import{ElInput as e,ElInputNumber as l,ElCheckboxGroup as t,ElCheckbox as a,ElTag as i,ElButton as s,ElIcon as n,ElLink as o}from"element-plus/es";import{defineComponent as u,useAttrs as r,ref as d,onMounted as v,createElementBlock as m,openBlock as c,normalizeClass as p,unref as f,createVNode as x,withCtx as y,createBlock as w,createCommentVNode as g,createElementVNode as h,isRef as b,Fragment as V,renderList as k,createTextVNode as C,toDisplayString as S,mergeProps as j}from"vue";import{Plus as I,CirclePlus as O,Remove as A}from"@element-plus/icons-vue";import{useNamespace as q}from"@qxs-bns/hooks";import{ElMessage as _}from"element-plus";import T from"../../../subject-action/src/subject-action.vue.mjs";import E from"../../../subject-layout/src/subject-layout.vue.mjs";import R from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const U={class:"preview"},B={class:"content"},L={class:"title"},M={key:0},D=["innerHTML"],H={class:"content flex flex-col"},N={key:1,class:"flex",style:{"margin-top":"10px",color:"#a8abb2"}},z={class:"title"},$={class:"flex"},F={style:{flex:"1"},class:"margin-bottom"},G={class:"margin-bottom flex flex-items-center"},J={class:"flex"},K={style:{flex:"1"}},P={class:"margin-bottom answer-list"},Q={class:"label flex flex-justify-end"},W={class:"answer-tags"},X={class:"operation"},Y={key:0,class:"margin-bottom flex"},Z={style:{flex:"1"}},ee={key:1,class:"margin-bottom flex"},le={style:{flex:"1"}},te={class:"flex flex-justify-end"};var ae=u({__name:"subject-text-fill",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examExpand:{type:String,required:!1},examAnswerSettingVO:{type:Object,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(u,{emit:ae}){const ie=u,se=ae,ne=r(),oe=d([{title:"",tag:"",showInput:!1}]),ue=d(""),re=d(""),de=d(),ve=d(""),me=d(!1),ce=d(""),pe=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],fe=d(["isInOrder","isIgnoreCase"]);function xe(){oe.value.push({title:"",tag:"",showInput:!1})}function ye(){me.value=!1,ce.value=""}function we(){if(ue.value){if(de.value||ve.value){if(!de.value)return void _.error("请完善答题设置!");if(!ve.value)return void _.error("请输入问题正确答案!");if(oe.value.length!==de.value)return void _.error("关键词个数设置有误!");const e=[];if(oe.value.forEach(((l,t)=>{l.title||e.push(`关键词${t+1}未设置`)})),e.length>0)return void _.error(e.join(","))}se("save",{title:ue.value,answers:oe.value.filter((e=>e.title)).map((e=>({title:e.title}))),analysis:re.value,isSetCorrectAnswer:!!ve.value,examExpand:ve.value,examAnswerSettingBO:{isIgnoreCase:fe.value?.includes("isIgnoreCase"),isInOrder:fe.value?.includes("isInOrder"),keywordCount:de.value},examRichTextContent:me.value?ce.value:""})}else _.error("题目标题不能为空!")}v((function(){ie.title&&(ue.value=ie.title),ie.answerList&&ie.answerList.length&&(oe.value=ie.answerList),ie.examAnswerSettingVO&&(fe.value=fe.value.filter((e=>"isIgnoreCase"===e&&ie.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&ie.examAnswerSettingVO?.isInOrder))),ie.examAnswerSettingVO?.keywordCount&&(de.value=ie.examAnswerSettingVO?.keywordCount),ie.examExpand&&(ve.value=ie.examExpand),ie.analysis&&(re.value=ie.analysis),ie.examRichTextContent&&(ce.value=ie.examRichTextContent,me.value=!0)}));const ge=q("subject-text-fill");return(u,r)=>{const d=a,v=e,q=l,_=t,ae=i,he=n,be=s,Ve=o;return c(),m("div",{class:p(f(ge).e("text-fill-exam"))},[x(E,{"show-edit":u.isEdit},{preview:y((()=>[h("div",U,[h("div",B,[h("span",L,S(u.orderIndex+1)+"."+S(f(ue))+"(问答题)",1),f(me)?(c(),m("div",M,[h("div",{innerHTML:f(ce)},null,8,D)])):g("v-if",!0),h("div",H,[f(oe).some((e=>e.title))?(c(!0),m(V,{key:0},k(f(oe),((e,l)=>(c(),w(d,{key:l,class:"radio",disabled:!0},{default:y((()=>[C(S(e.title),1)])),_:2},1024)))),128)):g("v-if",!0)]),f(ve)?(c(),m("div",N,[h("span",z,"正确答案:"+S(f(ve)),1)])):g("v-if",!0)])])])),edit:y((()=>[h("div",$,[r[12]||(r[12]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"题目:")],-1)),h("div",F,[x(v,{modelValue:f(ue),"onUpdate:modelValue":r[0]||(r[0]=e=>b(ue)?ue.value=e:null),type:"textarea",rows:2,placeholder:"【问答题】请输入问题",maxlength:200,"show-word-limit":"",disabled:u.isSave},null,8,["modelValue","disabled"])])]),h("div",G,[r[13]||(r[13]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"答题设置:")],-1)),r[14]||(r[14]=h("span",null,"共答对",-1)),x(q,{modelValue:f(de),"onUpdate:modelValue":r[1]||(r[1]=e=>b(de)?de.value=e:null),style:{width:"100px",margin:"0 10px"},min:1},null,8,["modelValue"]),r[15]||(r[15]=h("span",{style:{"margin-right":"10px"}},"个关键词,算是正确的",-1)),(c(),m(V,null,k(pe,(e=>x(_,{key:e.value,modelValue:f(fe),"onUpdate:modelValue":r[2]||(r[2]=e=>b(fe)?fe.value=e:null)},{default:y((()=>[x(d,{label:e.value,class:"margin-left-10"},{default:y((()=>[C(S(e.label),1)])),_:2},1032,["label"])])),_:2},1032,["modelValue"]))),64))]),h("div",J,[r[16]||(r[16]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"答案:")],-1)),h("div",K,[x(v,{modelValue:f(ve),"onUpdate:modelValue":r[3]||(r[3]=e=>b(ve)?ve.value=e:null),type:"textarea",rows:2,placeholder:"请输入正确答案",maxlength:200,"show-word-limit":"",disabled:u.isSave},null,8,["modelValue","disabled"])])]),h("div",P,[r[17]||(r[17]=h("span",{style:{"padding-left":"60px"}},"*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'",-1)),(c(!0),m(V,null,k(f(oe),((e,l)=>(c(),m("div",{key:l,class:"answer-item flex flex-items-center"},[h("div",Q,[h("span",null,"关键词"+S(l+1)+":",1)]),h("div",W,[(c(!0),m(V,null,k(e.title.split(","),(l=>(c(),m(V,{key:l},[l?(c(),w(ae,{key:0,closable:"",onClose:t=>function(e,l){if(e){const t=l.title.split(","),a=t.findIndex((l=>l===e));a>-1&&(t.splice(a,1),l.title=t.join(","))}}(l,e)},{default:y((()=>[C(S(l),1)])),_:2},1032,["onClose"])):g("v-if",!0)],64)))),128)),u.isSave?g("v-if",!0):(c(),m(V,{key:0},[e.showInput?(c(),w(v,{key:0,modelValue:e.tag,"onUpdate:modelValue":l=>e.tag=l,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(e)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(c(),w(be,{key:1,size:"small",onClick:l=>e.showInput=!0},{default:y((()=>[x(he,null,{default:y((()=>[x(f(I))])),_:1}),h("span",null,S(e.title?"添加同义词":"添加关键词"),1)])),_:2},1032,["onClick"]))],64))]),h("div",X,[x(he,{class:"icon"},{default:y((()=>[x(f(O),{class:p([{disabled:u.isSave}]),onClick:xe},null,8,["class"])])),_:1}),x(he,{class:"icon"},{default:y((()=>[x(f(A),{class:p([{disabled:f(oe).length<2||u.isSave}]),onClick:e=>function(e){oe.value.length<2||ie.isSave||oe.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024)])])))),128))]),u.showAnalysis?(c(),m("div",Y,[r[18]||(r[18]=h("div",{class:"label flex flex-justify-end"},[h("span",null,"解析:")],-1)),h("div",Z,[x(v,{modelValue:f(re),"onUpdate:modelValue":r[4]||(r[4]=e=>b(re)?re.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):g("v-if",!0),f(me)?(c(),m("div",ee,[r[20]||(r[20]=h("div",{class:"label flex flex-justify-center"},[h("span",null,"富文本:")],-1)),h("div",le,[x(R,j({"model-value":f(ce),"onUpdate:modelValue":r[5]||(r[5]=e=>b(ce)?ce.value=e:null)},f(ne),{style:{width:"100%"}}),null,16,["model-value"]),h("div",te,[x(Ve,{type:"danger",onClick:ye},{default:y((()=>r[19]||(r[19]=[C(" 删除富文本 ")]))),_:1})])])])):g("v-if",!0)])),default:y((()=>[u.showAction?(c(),w(T,{key:0,"is-edit":u.isEdit,"is-set":u.isSet,showOtherOption:!1,examAnswerRelationType:ie.examAnswerRelationType,onMoveUp:r[6]||(r[6]=e=>se("move","up")),onMoveDown:r[7]||(r[7]=e=>se("move","down")),onDelete:r[8]||(r[8]=e=>se("delete")),onSave:we,onEdit:r[9]||(r[9]=e=>se("edit")),onAdd:r[10]||(r[10]=e=>se("add",e)),onOnShowRichText:r[11]||(r[11]=e=>me.value=!0)},null,8,["is-edit","is-set","examAnswerRelationType"])):g("v-if",!0)])),_:1},8,["show-edit"])],2)}}});export{ae as default};
1
+ import{ElInput as e,ElInputNumber as l,ElCheckboxGroup as t,ElCheckbox as s,ElTag as i,ElButton as n,ElIcon as a,ElLink as o}from"element-plus/es";import{defineComponent as d,useAttrs as r,ref as u,onMounted as m,createElementBlock as c,openBlock as f,normalizeClass as p,unref as x,createVNode as v,withCtx as y,createBlock as b,createCommentVNode as w,createElementVNode as g,isRef as h,Fragment as k,renderList as V,createTextVNode as C,toDisplayString as j,mergeProps as q}from"vue";import{Plus as I,CirclePlus as O,Remove as _}from"@element-plus/icons-vue";import{useNamespace as S}from"@qxs-bns/hooks";import{ElMessage as A}from"element-plus";import U from"../../../subject-action/src/subject-action.vue.mjs";import B from"../../../subject-layout/src/subject-layout.vue.mjs";import T from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const R={class:"preview"},E={class:"content"},M={class:"title"},L={key:0},D=["innerHTML"],H={class:"content flex flex-col"},N={key:1,class:"flex",style:{"margin-top":"10px",color:"#a8abb2"}},z={class:"title"},$={class:"flex"},F={style:{flex:"1"},class:"margin-bottom"},G={class:"margin-bottom flex flex-items-center"},J={class:"flex"},K={style:{flex:"1"}},P={class:"margin-bottom answer-list"},Q={class:"label flex flex-justify-end"},W={class:"answer-tags"},X={class:"operation"},Y={key:0,class:"margin-bottom flex"},Z={style:{flex:"1"}},ee={key:1,class:"margin-bottom flex"},le={style:{flex:"1"}},te={class:"flex flex-justify-end"};var se=d({__name:"subject-text-fill",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examExpand:{type:String,required:!1},examAnswerSettingVO:{type:Object,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(d,{emit:se}){const ie=d,ne=se,ae=r(),oe=u([{title:"",tag:"",showInput:!1}]),de=u(""),re=u(""),ue=u(),me=u(""),ce=u(!1),fe=u(""),pe=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],xe=u(["isInOrder","isIgnoreCase"]);function ve(){oe.value.push({title:"",tag:"",showInput:!1})}function ye(){ce.value=!1,fe.value=""}function be(){if(de.value){if(ue.value||me.value){if(!ue.value)return void A.error("请完善答题设置!");if(!me.value)return void A.error("请输入问题正确答案!");if(oe.value.length!==ue.value)return void A.error("关键词个数设置有误!");const e=[];if(oe.value.forEach(((l,t)=>{l.title||e.push(`关键词${t+1}未设置`)})),e.length>0)return void A.error(e.join(","))}ne("save",{title:de.value,answers:oe.value.filter((e=>e.title)).map((e=>({title:e.title}))),analysis:re.value,isSetCorrectAnswer:!!me.value,examExpand:me.value,examAnswerSettingBO:{isIgnoreCase:xe.value?.includes("isIgnoreCase"),isInOrder:xe.value?.includes("isInOrder"),keywordCount:ue.value},examRichTextContent:ce.value?fe.value:""})}else A.error("题目标题不能为空!")}m((function(){ie.title&&(de.value=ie.title),ie.answerList&&ie.answerList.length&&(oe.value=ie.answerList),ie.examAnswerSettingVO&&(xe.value=xe.value.filter((e=>"isIgnoreCase"===e&&ie.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&ie.examAnswerSettingVO?.isInOrder))),ie.examAnswerSettingVO?.keywordCount&&(ue.value=ie.examAnswerSettingVO?.keywordCount),ie.examExpand&&(me.value=ie.examExpand),ie.analysis&&(re.value=ie.analysis),ie.examRichTextContent&&(fe.value=ie.examRichTextContent,ce.value=!0)}));const we=S("subject-text-fill");return(d,r)=>{const u=s,m=e,S=l,A=t,se=i,ge=a,he=n,ke=o;return f(),c("div",{class:p(x(we).e("text-fill-exam"))},[v(B,{"show-edit":d.isEdit},{preview:y((()=>[g("div",R,[g("div",E,[g("span",M,j(d.orderIndex+1)+"."+j(x(de))+"(问答题)",1),x(ce)?(f(),c("div",L,[g("div",{innerHTML:x(fe)},null,8,D)])):w("v-if",!0),g("div",H,[x(oe).some((e=>e.title))?(f(!0),c(k,{key:0},V(x(oe),((e,l)=>(f(),b(u,{key:l,class:"radio",disabled:!0},{default:y((()=>[C(j(e.title),1)])),_:2},1024)))),128)):w("v-if",!0)]),x(me)?(f(),c("div",N,[g("span",z,"正确答案:"+j(x(me)),1)])):w("v-if",!0)])])])),edit:y((()=>[g("div",$,[r[12]||(r[12]=g("div",{class:"label flex flex-justify-end"},[g("span",null,"题目:")],-1)),g("div",F,[v(m,{modelValue:x(de),"onUpdate:modelValue":r[0]||(r[0]=e=>h(de)?de.value=e:null),type:"textarea",rows:2,placeholder:"【问答题】请输入问题",maxlength:200,"show-word-limit":"",disabled:d.isSave},null,8,["modelValue","disabled"])])]),g("div",G,[r[13]||(r[13]=g("div",{class:"label flex flex-justify-end"},[g("span",null,"答题设置:")],-1)),r[14]||(r[14]=g("span",null,"共答对",-1)),v(S,{modelValue:x(ue),"onUpdate:modelValue":r[1]||(r[1]=e=>h(ue)?ue.value=e:null),style:{width:"100px",margin:"0 10px"},min:1},null,8,["modelValue"]),r[15]||(r[15]=g("span",{style:{"margin-right":"10px"}},"个关键词,算是正确的",-1)),(f(),c(k,null,V(pe,(e=>v(A,{key:e.value,modelValue:x(xe),"onUpdate:modelValue":r[2]||(r[2]=e=>h(xe)?xe.value=e:null)},{default:y((()=>[v(u,{label:e.value,class:"margin-left-10"},{default:y((()=>[C(j(e.label),1)])),_:2},1032,["label"])])),_:2},1032,["modelValue"]))),64))]),g("div",J,[r[16]||(r[16]=g("div",{class:"label flex flex-justify-end"},[g("span",null,"答案:")],-1)),g("div",K,[v(m,{modelValue:x(me),"onUpdate:modelValue":r[3]||(r[3]=e=>h(me)?me.value=e:null),type:"textarea",rows:2,placeholder:"请输入正确答案",maxlength:200,"show-word-limit":"",disabled:d.isSave},null,8,["modelValue","disabled"])])]),g("div",P,[r[17]||(r[17]=g("span",{style:{"padding-left":"60px"}},"*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'",-1)),(f(!0),c(k,null,V(x(oe),((e,l)=>(f(),c("div",{key:l,class:"answer-item flex flex-items-center"},[g("div",Q,[g("span",null,"关键词"+j(l+1)+":",1)]),g("div",W,[(f(!0),c(k,null,V(e.title.split(","),(l=>(f(),c(k,{key:l},[l?(f(),b(se,{key:0,closable:"",onClose:t=>function(e,l){if(e){const t=l.title.split(","),s=t.findIndex((l=>l===e));s>-1&&(t.splice(s,1),l.title=t.join(","))}}(l,e)},{default:y((()=>[C(j(l),1)])),_:2},1032,["onClose"])):w("v-if",!0)],64)))),128)),d.isSave?w("v-if",!0):(f(),c(k,{key:0},[e.showInput?(f(),b(m,{key:0,modelValue:e.tag,"onUpdate:modelValue":l=>e.tag=l,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(e)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(f(),b(he,{key:1,size:"small",onClick:l=>e.showInput=!0},{default:y((()=>[v(ge,null,{default:y((()=>[v(x(I))])),_:1}),g("span",null,j(e.title?"添加同义词":"添加关键词"),1)])),_:2},1032,["onClick"]))],64))]),g("div",X,[v(ge,{class:"icon"},{default:y((()=>[v(x(O),{class:p([{disabled:d.isSave}]),onClick:ve},null,8,["class"])])),_:1}),v(ge,{class:"icon"},{default:y((()=>[v(x(_),{class:p([{disabled:x(oe).length<2||d.isSave}]),onClick:e=>function(e){oe.value.length<2||ie.isSave||oe.value.splice(e,1)}(l)},null,8,["class","onClick"])])),_:2},1024)])])))),128))]),d.showAnalysis?(f(),c("div",Y,[r[18]||(r[18]=g("div",{class:"label flex flex-justify-end"},[g("span",null,"解析:")],-1)),g("div",Z,[v(m,{modelValue:x(re),"onUpdate:modelValue":r[4]||(r[4]=e=>h(re)?re.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):w("v-if",!0),x(ce)?(f(),c("div",ee,[r[20]||(r[20]=g("div",{class:"label flex flex-justify-center"},[g("span",null,"富文本:")],-1)),g("div",le,[v(T,q({"model-value":x(fe),"onUpdate:modelValue":r[5]||(r[5]=e=>h(fe)?fe.value=e:null)},x(ae),{style:{width:"100%"}}),null,16,["model-value"]),g("div",te,[v(ke,{type:"danger",onClick:ye},{default:y((()=>r[19]||(r[19]=[C(" 删除富文本 ")]))),_:1})])])])):w("v-if",!0)])),default:y((()=>[d.showAction?(f(),b(U,{key:0,"is-edit":d.isEdit,"is-set":d.isSet,showOtherOption:!1,examAnswerRelationType:ie.examAnswerRelationType,onMoveUp:r[6]||(r[6]=e=>ne("move","up")),onMoveDown:r[7]||(r[7]=e=>ne("move","down")),onDelete:r[8]||(r[8]=e=>ne("delete")),onSave:be,onEdit:r[9]||(r[9]=e=>ne("edit")),onAdd:r[10]||(r[10]=e=>ne("add",e)),onOnShowRichText:r[11]||(r[11]=e=>ce.value=!0)},null,8,["is-edit","is-set","examAnswerRelationType"])):w("v-if",!0)])),_:1},8,["show-edit"])],2)}}});export{se as default};
2
2
  //# sourceMappingURL=subject-text-fill.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,ref as t,useAttrs as s,computed as n,watch as i,createElementBlock as a,openBlock as o,normalizeClass as l,unref as r,createElementVNode as d,Fragment as c,renderList as m,createBlock as u,createCommentVNode as x,mergeProps as p}from"vue";import w from"./components/subject-blank-fill.vue.mjs";import v from"./components/subject-scale.vue.mjs";import y from"./components/subject-single.vue.mjs";import h from"./components/subject-text-fill.vue.mjs";import T from"./components/SubjectRichText.vue.mjs";import f from"./components/SubjectPageEnd.vue.mjs";import{useNamespace as A}from"@qxs-bns/hooks";import{setGuid as R}from"@qxs-bns/utils";import{ElMessage as E}from"element-plus/es";const S={class:"subject-list-wrapper"};var g=e({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(e,{expose:g,emit:C}){const I=e,D=t([]),j=C,b=s();g({addSubject:M,currentList:D,uploadExcel:function(e){D.value=D.value.concat(e)},addExam:function(e){console.log(e,"items");let t=1;const s=[];e.forEach((e=>{const n={...e,customId:R(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:e.answers?.map((e=>({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect})))||[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1};n.pageIndex>t&&(s.push({customId:R(),answerType:"page_end",analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:0}),t=n.pageIndex),s.push(n)})),D.value=D.value.concat(s)},setAnswerRelation:function(e,t,s){const n=D.value.find((e=>e.customId===t));if(n){const t=n.answers?.find((e=>e.customAnswerId===s));t&&(t.answerRelations=e)}}});const _=n((()=>{const e=D.value.filter((e=>"page_end"===e.answerType));return t=>{const s=e.findIndex((e=>e.customId===t));return-1!==s?s+1:0}}));function k(){return e=>{let t=0,s=0;return D.value.forEach((n=>{"page_end"!==n.answerType&&(t++,e===n.customId&&(s=t))})),s-1}}function M(e,t=null,s=null){const n={customId:R(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:s};null!==t?D.value.splice(t+1,0,n):D.value.push(n)}function L(e,t){if("up"===t&&e>0){const[t]=D.value.splice(e,1);D.value.splice(e-1,0,t)}else if("down"===t&&e<D.value.length-1){const[t]=D.value.splice(e,1);D.value.splice(e+1,0,t)}}function P(e,t){D.value[e]={...D.value[e],...t,isEdit:!1,examAnswerRelationType:t.examAnswerRelationType}}function q(e){D.value.splice(e,1),E.success("删除成功")}function Q(e,t){j("setRelation",e,t)}i((()=>I.subjectList),(e=>{e&&(D.value=[...e])}),{immediate:!0});const K=A("subject-list");return(e,t)=>(o(),a("div",{class:l(r(K).e("list-exam"))},[d("div",S,[(o(!0),a(c,null,m(r(D),((t,s)=>(o(),a("div",{key:t.customId,class:"subject-item"},[["single","multiple","sort"].includes(t.answerType)?(o(),u(y,p({key:0,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,type:t.answerType,"exam-id":t.examId,isKey:t.isKey,"is-save":!t.isRealCanDel,customId:t.customId,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"least-answer-count":t.leastAnswerCount,"is-edit":t.isEdit||!1,"show-action":!e.isPreview,"exam-expand":t.examExpand,answerCheckType:t.answerCheckType,"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onSetRelation:Q,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:(e,t)=>M(e,s,t)}),null,16,["order-index","title","type","exam-id","isKey","is-save","customId","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answerCheckType","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===t.answerType?(o(),u(v,p({key:1,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"is-edit":t.isEdit||!1,"scale-question-list":t.scaleQuestionList,"show-action":!e.isPreview,"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===t.answerType?(o(),u(w,p({key:2,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"show-action":!e.isPreview,"is-edit":t.isEdit||!1,"exam-answer-setting-v-o":t.examAnswerSettingVO||{},"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===t.answerType?(o(),u(h,p({key:3,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"show-action":!e.isPreview,"is-edit":t.isEdit||!1,"exam-expand":t.examExpand,"exam-answer-setting-v-o":t.examAnswerSettingVO||{},examAnswerRelationType:t.examAnswerRelationType,"exam-rich-text-content":t.examRichTextContent,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","examAnswerRelationType","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===t.answerType?(o(),u(T,p({key:4,ref_for:!0},r(b),{"order-index":k()(t.customId),richTextContent:t.richTextContent,"is-set":t.hasSet||!1,"is-save":!t.isRealCanDel,"is-edit":t.isEdit||!1,"show-action":!e.isPreview,onMove:e=>L(s,e),onDelete:e=>q(s),examAnswerRelationType:t.examAnswerRelationType,onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","richTextContent","is-set","is-save","is-edit","show-action","onMove","onDelete","examAnswerRelationType","onSave","onEdit","onAdd"])):"page_end"===t.answerType?(o(),u(f,{"total-page":D.value.filter((e=>"page_end"===e.answerType)).length,key:s,"current-page-index":r(_)(t.customId),item:t,"is-edit":t.isEdit||!1,"is-set":t.hasSet||!1,"is-save":!t.isRealCanDel,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)},null,8,["total-page","current-page-index","item","is-edit","is-set","is-save","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):x("v-if",!0)])))),128))])],2))}});export{g as default};
1
+ import{defineComponent as e,ref as t,useAttrs as n,computed as s,watch as i,createElementBlock as o,openBlock as a,normalizeClass as l,unref as r,createElementVNode as d,Fragment as c,renderList as m,createBlock as u,createCommentVNode as x,mergeProps as p}from"vue";import v from"./components/subject-blank-fill.vue.mjs";import w from"./components/subject-scale.vue.mjs";import y from"./components/subject-single.vue.mjs";import f from"./components/subject-text-fill.vue.mjs";import h from"./components/SubjectRichText.vue.mjs";import A from"./components/SubjectPageEnd.vue.mjs";import{useNamespace as R}from"@qxs-bns/hooks";import{setGuid as S}from"@qxs-bns/utils";import{ElMessage as T}from"element-plus/es";const j={class:"subject-list-wrapper"};var E=e({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(e,{expose:E,emit:b}){const g=e,_=t([]),D=b,k=n();E({addSubject:q,currentList:_,uploadExcel:function(e){_.value=_.value.concat(e)},addExam:function(e){console.log(e,"items");let t=1;const n=[];e.forEach((e=>{const s={...e,customId:S(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:e.answers?.map((e=>({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect})))||[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1};s.pageIndex>t&&(n.push({customId:S(),answerType:"page_end",analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:0}),t=s.pageIndex),n.push(s)})),_.value=_.value.concat(n)},setAnswerRelation:function(e,t,n){const s=_.value.find((e=>e.customId===t));if(s){const t=s.answers?.find((e=>e.customAnswerId===n));t&&(t.answerRelations=e)}}});const M=s((()=>{const e=_.value.filter((e=>"page_end"===e.answerType));return t=>{const n=e.findIndex((e=>e.customId===t));return-1!==n?n+1:0}}));function C(){return e=>{let t=0,n=0;return _.value.forEach((s=>{"page_end"!==s.answerType&&(t++,e===s.customId&&(n=t))})),n-1}}function q(e,t=null,n=null){const s={customId:S(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:n};null!==t?_.value.splice(t+1,0,s):_.value.push(s)}function I(e,t){if("up"===t&&e>0){const[t]=_.value.splice(e,1);_.value.splice(e-1,0,t)}else if("down"===t&&e<_.value.length-1){const[t]=_.value.splice(e,1);_.value.splice(e+1,0,t)}}function L(e,t){_.value[e]={..._.value[e],...t,isEdit:!1,examAnswerRelationType:t.examAnswerRelationType}}function Q(e){_.value.splice(e,1),T.success("删除成功")}function K(e,t){D("setRelation",e,t)}i((()=>g.subjectList),(e=>{e&&(_.value=[...e])}),{immediate:!0});const P=R("subject-list");return(e,t)=>(a(),o("div",{class:l(r(P).e("list-exam"))},[d("div",j,[(a(!0),o(c,null,m(r(_),((t,n)=>(a(),o("div",{key:t.customId,class:"subject-item"},[["single","multiple","sort"].includes(t.answerType)?(a(),u(y,p({key:0,ref_for:!0},r(k),{"order-index":C()(t.customId),title:t.title,type:t.answerType,"exam-id":t.examId,isKey:t.isKey,"is-save":!t.isRealCanDel,customId:t.customId,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"least-answer-count":t.leastAnswerCount,"is-edit":t.isEdit||!1,"show-action":!e.isPreview,"exam-expand":t.examExpand,answerCheckType:t.answerCheckType,"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onSetRelation:K,onMove:e=>I(n,e),onDelete:e=>Q(n),onSave:e=>L(n,e),onEdit:e=>t.isEdit=!0,onAdd:(e,t)=>q(e,n,t)}),null,16,["order-index","title","type","exam-id","isKey","is-save","customId","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answerCheckType","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===t.answerType?(a(),u(w,p({key:1,ref_for:!0},r(k),{"order-index":C()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"is-edit":t.isEdit||!1,"scale-question-list":t.scaleQuestionList,"show-action":!e.isPreview,"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>I(n,e),onDelete:e=>Q(n),onSave:e=>L(n,e),onEdit:e=>t.isEdit=!0,onAdd:e=>q(e,n,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===t.answerType?(a(),u(v,p({key:2,ref_for:!0},r(k),{"order-index":C()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"show-action":!e.isPreview,"is-edit":t.isEdit||!1,"exam-answer-setting-v-o":t.examAnswerSettingVO||{},"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>I(n,e),onDelete:e=>Q(n),onSave:e=>L(n,e),onEdit:e=>t.isEdit=!0,onAdd:e=>q(e,n,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===t.answerType?(a(),u(f,p({key:3,ref_for:!0},r(k),{"order-index":C()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"show-action":!e.isPreview,"is-edit":t.isEdit||!1,"exam-expand":t.examExpand,"exam-answer-setting-v-o":t.examAnswerSettingVO||{},examAnswerRelationType:t.examAnswerRelationType,"exam-rich-text-content":t.examRichTextContent,onMove:e=>I(n,e),onDelete:e=>Q(n),onSave:e=>L(n,e),onEdit:e=>t.isEdit=!0,onAdd:e=>q(e,n,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","examAnswerRelationType","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===t.answerType?(a(),u(h,p({key:4,ref_for:!0},r(k),{"order-index":C()(t.customId),richTextContent:t.richTextContent,"is-set":t.hasSet||!1,"is-save":!t.isRealCanDel,"is-edit":t.isEdit||!1,"show-action":!e.isPreview,onMove:e=>I(n,e),onDelete:e=>Q(n),examAnswerRelationType:t.examAnswerRelationType,onSave:e=>L(n,e),onEdit:e=>t.isEdit=!0,onAdd:e=>q(e,n,null)}),null,16,["order-index","richTextContent","is-set","is-save","is-edit","show-action","onMove","onDelete","examAnswerRelationType","onSave","onEdit","onAdd"])):"page_end"===t.answerType?(a(),u(A,{"total-page":_.value.filter((e=>"page_end"===e.answerType)).length,key:n,"current-page-index":r(M)(t.customId),item:t,"is-edit":t.isEdit||!1,"is-set":t.hasSet||!1,"is-save":!t.isRealCanDel,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>I(n,e),onDelete:e=>Q(n),onSave:e=>L(n,e),onEdit:e=>t.isEdit=!0,onAdd:e=>q(e,n,null)},null,8,["total-page","current-page-index","item","is-edit","is-set","is-save","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):x("v-if",!0)])))),128))])],2))}});export{E as default};
2
2
  //# sourceMappingURL=subject-list.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,ref as l,createElementBlock as t,openBlock as s,normalizeClass as a,unref as i,createElementVNode as c,Fragment as p,renderList as n,toDisplayString as y}from"vue";import{useNamespace as b}from"@qxs-bns/hooks";const u={class:"type-item"},m={class:"base-subject"},o=["onClick"],d={class:"type-item"},v={class:"base-subject flex"},r=["onClick"],k={class:"type-item"},f={class:"base-subject flex"},x=["onClick"];var j=e({name:"QxsSubjectType",__name:"subject-type",emits:["select"],setup(e,{emit:j}){const C=j,_=l([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"},{type:"blank_fill",label:"填空题"},{type:"text_fill",label:"问答题"},{type:"scale",label:"量表题"},{type:"sort",label:"排序题"}]),g=l([{type:"rich_text",label:"富文本"},{type:"page_end",label:"分页器"}]),h=l([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"}]),q=b("subject-type");return(e,l)=>(s(),t("div",{class:a(i(q).e("type-list"))},[c("div",u,[l[0]||(l[0]=c("div",null,"普通题目类型",-1)),c("div",m,[(s(!0),t(p,null,n(i(_),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[c("span",null,y(e.label),1)],8,o)))),128))])]),c("div",d,[l[1]||(l[1]=c("div",null,"其他",-1)),c("div",v,[(s(!0),t(p,null,n(i(g),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[c("span",null,y(e.label),1)],8,r)))),128))])]),c("div",k,[l[2]||(l[2]=c("div",null,"互动问答类型(支持设置结果项)",-1)),c("div",f,[(s(!0),t(p,null,n(i(h),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type,!0)},[c("span",null,y(e.label),1)],8,x)))),128))])])],2))}});export{j as default};
1
+ import{defineComponent as e,ref as l,createElementBlock as t,openBlock as s,normalizeClass as i,unref as a,createElementVNode as c,Fragment as n,renderList as p,toDisplayString as b}from"vue";import{useNamespace as u}from"@qxs-bns/hooks";const y={class:"type-item"},m={class:"base-subject"},o=["onClick"],d={class:"type-item"},v={class:"base-subject flex"},r=["onClick"],k={class:"type-item"},f={class:"base-subject flex"},x=["onClick"];var j=e({name:"QxsSubjectType",__name:"subject-type",emits:["select"],setup(e,{emit:j}){const C=j,_=l([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"},{type:"blank_fill",label:"填空题"},{type:"text_fill",label:"问答题"},{type:"scale",label:"量表题"},{type:"sort",label:"排序题"}]),g=l([{type:"rich_text",label:"富文本"},{type:"page_end",label:"分页器"}]),h=l([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"}]),q=u("subject-type");return(e,l)=>(s(),t("div",{class:i(a(q).e("type-list"))},[c("div",y,[l[0]||(l[0]=c("div",null,"普通题目类型",-1)),c("div",m,[(s(!0),t(n,null,p(a(_),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[c("span",null,b(e.label),1)],8,o)))),128))])]),c("div",d,[l[1]||(l[1]=c("div",null,"其他",-1)),c("div",v,[(s(!0),t(n,null,p(a(g),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[c("span",null,b(e.label),1)],8,r)))),128))])]),c("div",k,[l[2]||(l[2]=c("div",null,"互动问答类型(支持设置结果项)",-1)),c("div",f,[(s(!0),t(n,null,p(a(h),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type,!0)},[c("span",null,b(e.label),1)],8,x)))),128))])])],2))}});export{j as default};
2
2
  //# sourceMappingURL=subject-type.vue.mjs.map
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,computed as i,ref as t,onMounted as n,createElementBlock as o,openBlock as a,normalizeClass as r,unref as l,createCommentVNode as s,withDirectives as m,createElementVNode as u,isRef as p,vModelText as c}from"vue";import{useNamespace as d}from"@qxs-bns/hooks";import{merge as g}from"lodash-es";import y from"tinymce/tinymce";import"tinymce/themes/silver/theme";import"tinymce/icons/default/icons";import"tinymce/models/dom";import"tinymce/plugins/autolink";import"tinymce/plugins/autoresize";import"tinymce/plugins/fullscreen";import"tinymce/plugins/image";import"tinymce/plugins/insertdatetime";import"tinymce/plugins/link";import"tinymce/plugins/lists";import"tinymce/plugins/media";import"tinymce/plugins/preview";import"tinymce/plugins/table";import"tinymce/plugins/wordcount";import"tinymce/plugins/code";import"tinymce/plugins/searchreplace";import"tinymce/plugins/nonbreaking";const f=["id","name"];var h=e({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(e,{emit:h}){const b=h,k=d("file-upload"),_=i({get:()=>e.modelValue,set(e){b("update:modelValue",e)}}),v=t(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),x=e.assetsBasePath||"node_modules/",w={selector:`textarea#${v.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${x}tinymce/langs/zh-Hans.js`,skin_url:`${x}tinymce/skins/ui/oxide`,content_css:`${x}tinymce/skins/content/default/content.min.css`,min_height:250,max_height:600,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:i=>{i.on("input change undo redo",(()=>{_.value=i.getContent()})),i.on("init",(()=>{i.setContent(_.value)})),e.config?.expandSetup?.(i)}},S=i((()=>{const i=w;return e.config.images_upload_handler||("string"==typeof i.plugins?i.plugins=i.plugins.replace("image",""):Array.isArray(i.plugins)&&(i.plugins=i.plugins.filter((e=>"image"!==e)))),g(i,e.config)}));return n((async()=>{"undefined"!=typeof window&&y.init(S.value)})),(e,i)=>(a(),o("div",{class:r(l(k).e("tiny-mce"))},[s(" 使用动态生成的 id "),m(u("textarea",{id:l(v),"onUpdate:modelValue":i[0]||(i[0]=e=>p(_)?_.value=e:null),name:l(v)},null,8,f),[[c,l(_)]])],2))}});export{h as default};
1
+ import{defineComponent as e,computed as i,ref as t,onMounted as n,createElementBlock as o,openBlock as r,normalizeClass as m,unref as a,createCommentVNode as l,withDirectives as s,createElementVNode as u,isRef as c,vModelText as p}from"vue";import{useNamespace as d}from"@qxs-bns/hooks";import{merge as g}from"lodash-es";import y from"tinymce/tinymce";import"tinymce/themes/silver/theme";import"tinymce/icons/default/icons";import"tinymce/models/dom";import"tinymce/plugins/autolink";import"tinymce/plugins/autoresize";import"tinymce/plugins/fullscreen";import"tinymce/plugins/image";import"tinymce/plugins/insertdatetime";import"tinymce/plugins/link";import"tinymce/plugins/lists";import"tinymce/plugins/media";import"tinymce/plugins/preview";import"tinymce/plugins/table";import"tinymce/plugins/wordcount";import"tinymce/plugins/code";import"tinymce/plugins/searchreplace";import"tinymce/plugins/nonbreaking";const f=["id","name"];var h=e({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(e,{emit:h}){const b=h,k=d("file-upload"),_=i({get:()=>e.modelValue,set(e){b("update:modelValue",e)}}),v=t(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),x=e.assetsBasePath||"node_modules/",w={selector:`textarea#${v.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${x}tinymce/langs/zh-Hans.js`,skin_url:`${x}tinymce/skins/ui/oxide`,content_css:`${x}tinymce/skins/content/default/content.min.css`,min_height:250,max_height:600,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:i=>{i.on("input change undo redo",(()=>{_.value=i.getContent()})),i.on("init",(()=>{i.setContent(_.value)})),e.config?.expandSetup?.(i)}},$=i((()=>{const i=w;return e.config.images_upload_handler||("string"==typeof i.plugins?i.plugins=i.plugins.replace("image",""):Array.isArray(i.plugins)&&(i.plugins=i.plugins.filter((e=>"image"!==e)))),g(i,e.config)}));return n((async()=>{"undefined"!=typeof window&&y.init($.value)})),(e,i)=>(r(),o("div",{class:m(a(k).e("tiny-mce"))},[l(" 使用动态生成的 id "),s(u("textarea",{id:a(v),"onUpdate:modelValue":i[0]||(i[0]=e=>c(_)?_.value=e:null),name:a(v)},null,8,f),[[p,a(_)]])],2))}});export{h as default};
2
2
  //# sourceMappingURL=tiny-mce-editor.vue.mjs.map
@@ -1,2 +1,2 @@
1
- function n(n,o){return n.install=o=>{for(const t of[n,...Object.values({})])o.component(t.name,t)},n}export{n as withInstall};
1
+ function o(o,t){return o.install=t=>{for(const n of[o,...Object.values({})])t.component(n.name,n)},o}export{o as withInstall};
2
2
  //# sourceMappingURL=withInstall.mjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[e,r]of t)o[e]=r;return o};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[e,s]of t)o[e]=s;return o};
2
2
  //# sourceMappingURL=_plugin-vue_export-helper.cjs.map
package/lib/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./src/defaults.cjs"),s=require("./src/data-chart/index.cjs"),r=require("./src/file-upload/index.cjs"),t=require("./src/fixed-action-bar/index.cjs"),o=require("./src/image-upload/index.cjs"),i=require("./src/photo-crop-tool/index.cjs"),c=require("./src/subject-action/index.cjs"),x=require("./src/subject-layout/index.cjs"),u=require("./src/subject-list/index.cjs"),a=require("./src/subject-type/index.cjs"),d=require("./src/tiny-mce-editor/index.cjs");const p=e.default.install,l=e.default.version;exports.default=e.default,exports.QxsDataChart=s.QxsDataChart,exports.QxsFileUpload=r.QxsFileUpload,exports.QxsFixedActionBar=t.QxsFixedActionBar,exports.QxsImageUpload=o.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=c.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=u.QxsSubjectList,exports.QxsSubjectType=a.QxsSubjectType,exports.QxsTinyMceEditor=d.QxsTinyMceEditor,exports.install=p,exports.version=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./src/defaults.cjs"),r=require("./src/data-chart/index.cjs"),s=require("./src/file-upload/index.cjs"),c=require("./src/fixed-action-bar/index.cjs"),t=require("./src/image-upload/index.cjs"),i=require("./src/photo-crop-tool/index.cjs"),o=require("./src/subject-action/index.cjs"),x=require("./src/subject-layout/index.cjs"),u=require("./src/subject-list/index.cjs"),p=require("./src/subject-type/index.cjs"),d=require("./src/tiny-mce-editor/index.cjs");const j=e.default.install,n=e.default.version;exports.default=e.default,exports.QxsDataChart=r.QxsDataChart,exports.QxsFileUpload=s.QxsFileUpload,exports.QxsFixedActionBar=c.QxsFixedActionBar,exports.QxsImageUpload=t.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=o.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=u.QxsSubjectList,exports.QxsSubjectType=p.QxsSubjectType,exports.QxsTinyMceEditor=d.QxsTinyMceEditor,exports.install=j,exports.version=n;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(e,t){void 0===t&&(t={});var d=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===d&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var d=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css","top"===o&&d.firstChild?d.insertBefore(u,d.firstChild):d.appendChild(u),u.styleSheet?u.styleSheet.cssText=e:u.appendChild(document.createTextNode(e))}};
2
2
  //# sourceMappingURL=style-inject.es.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";exports.version="0.0.41";
1
+ "use strict";exports.version="0.0.43";
2
2
  //# sourceMappingURL=package.json.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("./data-chart/index.cjs"),t=require("./file-upload/index.cjs"),s=require("./fixed-action-bar/index.cjs"),r=require("./image-upload/index.cjs"),i=require("./photo-crop-tool/index.cjs"),o=require("./subject-action/index.cjs"),x=require("./subject-layout/index.cjs"),c=require("./subject-list/index.cjs"),u=require("./subject-type/index.cjs"),a=require("./tiny-mce-editor/index.cjs");exports.QxsDataChart=e.QxsDataChart,exports.QxsFileUpload=t.QxsFileUpload,exports.QxsFixedActionBar=s.QxsFixedActionBar,exports.QxsImageUpload=r.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=o.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=c.QxsSubjectList,exports.QxsSubjectType=u.QxsSubjectType,exports.QxsTinyMceEditor=a.QxsTinyMceEditor;
1
+ "use strict";var e=require("./data-chart/index.cjs"),r=require("./file-upload/index.cjs"),i=require("./fixed-action-bar/index.cjs"),s=require("./image-upload/index.cjs"),t=require("./photo-crop-tool/index.cjs"),o=require("./subject-action/index.cjs"),x=require("./subject-layout/index.cjs"),c=require("./subject-list/index.cjs"),u=require("./subject-type/index.cjs"),d=require("./tiny-mce-editor/index.cjs");exports.QxsDataChart=e.QxsDataChart,exports.QxsFileUpload=r.QxsFileUpload,exports.QxsFixedActionBar=i.QxsFixedActionBar,exports.QxsImageUpload=s.QxsImageUpload,exports.QxsPhotoCropTool=t.QxsPhotoCropTool,exports.QxsSubjectAction=o.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=c.QxsSubjectList,exports.QxsSubjectType=u.QxsSubjectType,exports.QxsTinyMceEditor=d.QxsTinyMceEditor;
2
2
  //# sourceMappingURL=components.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),t=require("./src/data-chart.vue.cjs");const r=e.withInstall(t.default);exports.QxsDataChart=r,exports.default=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),r=require("./src/data-chart.vue.cjs");const s=e.withInstall(r.default);exports.QxsDataChart=s,exports.default=s;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("echarts"),a=require("../utils/config.cjs"),r=require("../utils/injectionKeys.cjs"),n=require("../utils/useCharts.cjs");function c(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var o=c(t);const s={class:"data-chart-area-wrap"};var i=e.defineComponent({name:"DataChartArea",__name:"area",props:{chartOptions:{type:null,required:!0},chartData:{type:Object,required:!1,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})}},setup(t){const c=e.inject(r.InjectionChartMerge,(e=>e),!0);let i="中国";const l=e.ref({features:[],type:"FeatureCollection"}),u=e.ref(null);let m=null;const p=e.computed((()=>{const{xGroupByDesc:e,groupByDesc:a,colDesc:r,modelName:n,data:o}=t.chartData,s=[];r.forEach((e=>{o.forEach((t=>{s.push(Number(t[e]))}))}));const u={title:{text:n},tooltip:{formatter(e){let t=`${e.name}<br/>`;return u.series?.forEach((a=>{a.data?.forEach((r=>{r.name===e.name&&(t+=`${a.name}:${r.value}</br>`)})),t.includes(a.name)||(t+=`${a.name}:-</br>`)})),t}},visualMap:{min:Math.min(...s,0),max:Math.max(...s,0)},series:r?.map((t=>{const r=[],n=a.find((e=>e.colDesc===("中国"===i?"医院所在省":"医院所在市"))),c={};o.map((a=>{const r=a[("中国"===i?e?.colDesc||"":n?.colDesc)||""],c=l.value.features?.find((({properties:{name:e}})=>e?.includes(r)));return{name:c?.properties?.name||"",value:Number(a[t])}})).forEach((e=>{c[e.name]?c[e.name]=c[e.name]+e.value:c[e.name]=e.value}));for(const e in c)r.push({name:e,value:c[e]});return{name:t,type:"map",map:i,data:r}}))};return c(u,t.chartOptions)}));async function d(e="中国"){if(m&&!m.isDisposed()){m.showLoading();try{const t=await a.getGeoJsonData({adcode:e});if(!t)return void m.hideLoading();l.value=t,i=e;const r=o.registerMap(e,t);return m.hideLoading(),r}catch(e){console.log(e),m.hideLoading()}}}return n.useCharts({chartDOM:u,chartOptions:p,chartData:e.computed((()=>t.chartData)),initAfter:async function(){await d(),m&&!m.isDisposed()&&(m.getZr()?.on("click",(e=>{e.target||"中国"===i||d("中国")})),m.on("click",(e=>{const a=t.chartData.groupByDesc?.some((e=>"医院所在市"===e.colDesc));"中国"===i&&a&&d(e.name).then((()=>{m&&!m.isDisposed()&&m.setOption(p.value)}))})))},callback:e=>{m=e}}),(t,a)=>(e.openBlock(),e.createElementBlock("div",s,[e.createCommentVNode(' <el-select\n v-if="isShowSelect"\n v-model="adcode"\n class="city-select"\n size="small"\n @change="selectChina"\n >\n <el-option\n v-for="item in selectList"\n :key="item.value"\n :label="item.label"\n :value="item.value"\n />\n </el-select> '),e.createElementVNode("div",{ref_key:"dataChartArea",ref:u,class:"data-chart-area"},null,512)]))}});exports.default=i;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("echarts"),a=require("../utils/config.cjs"),r=require("../utils/injectionKeys.cjs"),c=require("../utils/useCharts.cjs");function n(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var s=n(t);const l={class:"data-chart-area-wrap"};var u=e.defineComponent({name:"DataChartArea",__name:"area",props:{chartOptions:{type:null,required:!0},chartData:{type:Object,required:!1,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})}},setup(t){const n=e.inject(r.InjectionChartMerge,(e=>e),!0);let u="中国";const i=e.ref({features:[],type:"FeatureCollection"}),o=e.ref(null);let p=null;const m=e.computed((()=>{const{xGroupByDesc:e,groupByDesc:a,colDesc:r,modelName:c,data:s}=t.chartData,l=[];r.forEach((e=>{s.forEach((t=>{l.push(Number(t[e]))}))}));const o={title:{text:c},tooltip:{formatter(e){let t=`${e.name}<br/>`;return o.series?.forEach((a=>{a.data?.forEach((r=>{r.name===e.name&&(t+=`${a.name}:${r.value}</br>`)})),t.includes(a.name)||(t+=`${a.name}:-</br>`)})),t}},visualMap:{min:Math.min(...l,0),max:Math.max(...l,0)},series:r?.map((t=>{const r=[],c=a.find((e=>e.colDesc===("中国"===u?"医院所在省":"医院所在市"))),n={};s.map((a=>{const r=a[("中国"===u?e?.colDesc||"":c?.colDesc)||""],n=i.value.features?.find((({properties:{name:e}})=>e?.includes(r)));return{name:n?.properties?.name||"",value:Number(a[t])}})).forEach((e=>{n[e.name]?n[e.name]=n[e.name]+e.value:n[e.name]=e.value}));for(const e in n)r.push({name:e,value:n[e]});return{name:t,type:"map",map:u,data:r}}))};return n(o,t.chartOptions)}));async function d(e="中国"){if(p&&!p.isDisposed()){p.showLoading();try{const t=await a.getGeoJsonData({adcode:e});if(!t)return void p.hideLoading();i.value=t,u=e;const r=s.registerMap(e,t);return p.hideLoading(),r}catch(e){console.log(e),p.hideLoading()}}}return c.useCharts({chartDOM:o,chartOptions:m,chartData:e.computed((()=>t.chartData)),initAfter:async function(){await d(),p&&!p.isDisposed()&&(p.getZr()?.on("click",(e=>{e.target||"中国"===u||d("中国")})),p.on("click",(e=>{const a=t.chartData.groupByDesc?.some((e=>"医院所在市"===e.colDesc));"中国"===u&&a&&d(e.name).then((()=>{p&&!p.isDisposed()&&p.setOption(m.value)}))})))},callback:e=>{p=e}}),(t,a)=>(e.openBlock(),e.createElementBlock("div",l,[e.createCommentVNode(' <el-select\n v-if="isShowSelect"\n v-model="adcode"\n class="city-select"\n size="small"\n @change="selectChina"\n >\n <el-option\n v-for="item in selectList"\n :key="item.value"\n :label="item.label"\n :value="item.value"\n />\n </el-select> '),e.createElementVNode("div",{ref_key:"dataChartArea",ref:o,class:"data-chart-area"},null,512)]))}});exports.default=u;
2
2
  //# sourceMappingURL=area.vue2.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="/* unplugin-vue-components disabled */\n.data-chart-area-wrap[data-v-51660d7b] {\n position: relative;\n}\n.data-chart-area-wrap .city-select[data-v-51660d7b] {\n position: absolute;\n top: 10px;\n right: 100px;\n z-index: 1;\n width: 120px;\n}\n.data-chart-area-wrap .data-chart-area[data-v-51660d7b] {\n height: 100%;\n}";require("../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs").default(e),exports.default=e;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var a="/* unplugin-vue-components disabled */\n.data-chart-area-wrap[data-v-51660d7b] {\n position: relative;\n}\n.data-chart-area-wrap .city-select[data-v-51660d7b] {\n position: absolute;\n top: 10px;\n right: 100px;\n z-index: 1;\n width: 120px;\n}\n.data-chart-area-wrap .data-chart-area[data-v-51660d7b] {\n height: 100%;\n}";require("../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs").default(a),exports.default=a;
2
2
  //# sourceMappingURL=area.vue3.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),t=require("../utils/injectionKeys.cjs"),s=require("../utils/useCharts.cjs"),r=e.defineComponent({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(r){const c=e.inject(t.InjectionChartMerge,(e=>e),!0),l=e.ref(null),o=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:s,data:l=[],modelName:o}=r.chartData,i=Array.from(new Set(l.map((e=>e[t.colDesc||""])))).filter((e=>null!=e))||[],u=s.find((e=>!e.xAxis))||{groupByValues:[],colDesc:""};u.groupByValues=a.uniq(l.map((e=>u.colDesc?String(e[u.colDesc]):""))),t&&t.groupByValues&&(t.groupByValues=a.uniq(l.map((e=>t.colDesc?String(e[t.colDesc]):""))));const n={title:{text:o},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:i},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:i.length<15}]};if(1===s.length)n.series=e.map((e=>({name:e,data:l.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),n.legend.data=e;else if(2===s.length){const a=e.map((e=>u.groupByValues?.map((a=>{const s={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return s.data=(t.groupByValues||[]).map((e=>{let r=null;return l.forEach((c=>{u.colDesc&&c[u.colDesc]===a&&t.colDesc&&c[t.colDesc]===e&&s.stack&&(r=c[s.stack]??null)})),r||""})).filter((e=>""!==e)),s}))||[])).flat();n.series=a,delete n.legend}function p(e,a,t,s){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))}switch(r.subShowType){case"bar-simple":case"default":p(n.xAxis,"category",i,t.colDesc||""),p(n.yAxis,"value");break;case"bar-y-category":p(n.xAxis,"value"),p(n.yAxis,"category",i,t.colDesc||"")}return c(n,r.chartOptions)}));return s.useCharts({chartDOM:l,chartOptions:o,chartData:e.computed((()=>r.chartData))}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartBar",ref:l,class:"data-chart-bar"},null,512))}});exports.default=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),t=require("../utils/injectionKeys.cjs"),r=require("../utils/useCharts.cjs"),s=e.defineComponent({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(s){const l=e.inject(t.InjectionChartMerge,(e=>e),!0),c=e.ref(null),i=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:r,data:c=[],modelName:i}=s.chartData,o=Array.from(new Set(c.map((e=>e[t.colDesc||""])))).filter((e=>null!=e))||[],u=r.find((e=>!e.xAxis))||{groupByValues:[],colDesc:""};u.groupByValues=a.uniq(c.map((e=>u.colDesc?String(e[u.colDesc]):""))),t&&t.groupByValues&&(t.groupByValues=a.uniq(c.map((e=>t.colDesc?String(e[t.colDesc]):""))));const n={title:{text:i},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:o},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:o.length<15}]};if(1===r.length)n.series=e.map((e=>({name:e,data:c.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),n.legend.data=e;else if(2===r.length){const a=e.map((e=>u.groupByValues?.map((a=>{const r={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return r.data=(t.groupByValues||[]).map((e=>{let s=null;return c.forEach((l=>{u.colDesc&&l[u.colDesc]===a&&t.colDesc&&l[t.colDesc]===e&&r.stack&&(s=l[r.stack]??null)})),s||""})).filter((e=>""!==e)),r}))||[])).flat();n.series=a,delete n.legend}function p(e,a,t,r){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=r||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=r||""))}switch(s.subShowType){case"bar-simple":case"default":p(n.xAxis,"category",o,t.colDesc||""),p(n.yAxis,"value");break;case"bar-y-category":p(n.xAxis,"value"),p(n.yAxis,"category",o,t.colDesc||"")}return l(n,s.chartOptions)}));return r.useCharts({chartDOM:c,chartOptions:i,chartData:e.computed((()=>s.chartData))}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartBar",ref:c,class:"data-chart-bar"},null,512))}});exports.default=s;
2
2
  //# sourceMappingURL=bar.vue.cjs.map