@qxs-bns/components 0.0.55 → 0.0.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/index.mjs +1 -1
- package/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.8.3_/node_modules/@iconify/vue/dist/iconify.mjs +2 -0
- package/es/node_modules/.pnpm/{@iconify_vue@5.0.0_vue@3.5.13_typescript@5.8.2_ → @iconify_vue@5.0.0_vue@3.5.18_typescript@5.8.3_}/node_modules/@iconify/vue/dist/iconify.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/es/src/components.mjs +1 -1
- package/es/src/data-chart/src/analyze.mjs +1 -1
- package/es/src/data-chart/src/analyze.mjs.map +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/bar.vue.mjs +1 -1
- package/es/src/data-chart/src/components/bar.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/data-chart-card-bg-left.svg.mjs.map +1 -1
- package/es/src/data-chart/src/components/data-chart-card-bg-right.svg.mjs.map +1 -1
- package/es/src/data-chart/src/components/empty.svg.mjs.map +1 -1
- package/es/src/data-chart/src/components/empty.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/funnel.vue.mjs +1 -1
- package/es/src/data-chart/src/components/funnel.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/line.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/line.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/pie.vue.mjs +1 -1
- package/es/src/data-chart/src/components/pie.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/radar.vue.mjs +1 -1
- package/es/src/data-chart/src/components/radar.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/scatter-simple.vue.mjs +1 -1
- package/es/src/data-chart/src/components/scatter-simple.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/scatter.vue.mjs +1 -1
- package/es/src/data-chart/src/components/scatter.vue.mjs.map +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs.map +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
- package/es/src/data-chart/src/utils/config.mjs +1 -1
- package/es/src/data-chart/src/utils/config.mjs.map +1 -1
- package/es/src/data-chart/src/utils/mapData.mjs +2 -0
- package/es/src/data-chart/src/utils/mapData.mjs.map +1 -0
- package/es/src/data-chart/src/utils/safe-eval.mjs.map +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs.map +1 -1
- package/es/src/defaults.mjs.map +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +1 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs.map +1 -1
- package/es/src/icon/index.mjs +1 -1
- package/es/src/icon/index.mjs.map +1 -1
- package/es/src/icon/src/icon.vue.mjs +1 -1
- package/es/src/icon/src/icon.vue.mjs.map +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
- package/es/src/make-installer.mjs.map +1 -1
- package/es/src/photo-crop-tool/src/composables.mjs +1 -1
- package/es/src/photo-crop-tool/src/composables.mjs.map +1 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +1 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs.map +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
- package/es/src/subject-layout/src/subject-layout.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
- package/es/src/subject-type/src/subject-type.vue.mjs +1 -1
- package/es/src/subject-type/src/subject-type.vue.mjs.map +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
- package/es/src/withInstall.mjs.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.8.3_/node_modules/@iconify/vue/dist/iconify.cjs +2 -0
- package/lib/node_modules/.pnpm/{@iconify_vue@5.0.0_vue@3.5.13_typescript@5.8.2_ → @iconify_vue@5.0.0_vue@3.5.18_typescript@5.8.3_}/node_modules/@iconify/vue/dist/iconify.cjs.map +1 -1
- package/lib/package.json.cjs +1 -1
- package/lib/src/components.cjs +1 -1
- package/lib/src/data-chart/index.cjs.map +1 -1
- package/lib/src/data-chart/src/analyze.cjs +1 -1
- package/lib/src/data-chart/src/analyze.cjs.map +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/bar.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/bar.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/empty.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/funnel.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/funnel.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/pie.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/pie.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/radar.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/radar.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/scatter.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/scatter.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/config.cjs +1 -1
- package/lib/src/data-chart/src/utils/config.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/mapData.cjs +2 -0
- package/lib/src/data-chart/src/utils/mapData.cjs.map +1 -0
- package/lib/src/data-chart/src/utils/safe-eval.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs.map +1 -1
- package/lib/src/defaults.cjs.map +1 -1
- package/lib/src/file-upload/index.cjs.map +1 -1
- package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
- package/lib/src/file-upload/src/file-upload.vue.cjs.map +1 -1
- package/lib/src/fixed-action-bar/index.cjs.map +1 -1
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +1 -1
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs.map +1 -1
- package/lib/src/icon/index.cjs +1 -1
- package/lib/src/icon/index.cjs.map +1 -1
- package/lib/src/icon/src/icon.vue.cjs +1 -1
- package/lib/src/icon/src/icon.vue.cjs.map +1 -1
- package/lib/src/image-upload/index.cjs.map +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
- package/lib/src/make-installer.cjs.map +1 -1
- package/lib/src/photo-crop-tool/index.cjs.map +1 -1
- package/lib/src/photo-crop-tool/src/composables.cjs +1 -1
- package/lib/src/photo-crop-tool/src/composables.cjs.map +1 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +1 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs.map +1 -1
- package/lib/src/subject-action/index.cjs.map +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
- package/lib/src/subject-layout/index.cjs.map +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue.cjs.map +1 -1
- package/lib/src/subject-list/index.cjs.map +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
- package/lib/src/subject-type/index.cjs.map +1 -1
- package/lib/src/subject-type/src/subject-type.vue.cjs +1 -1
- package/lib/src/subject-type/src/subject-type.vue.cjs.map +1 -1
- package/lib/src/tiny-mce-editor/index.cjs.map +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
- package/lib/src/withInstall.cjs.map +1 -1
- package/package.json +3 -2
- package/types/src/components.d.ts +1 -1
- package/types/src/components.d.ts.map +1 -1
- package/types/src/data-chart/src/components/area.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/config.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/mapData.d.ts +64 -0
- package/types/src/data-chart/src/utils/mapData.d.ts.map +1 -0
- package/types/src/data-chart/src/utils/types.d.ts +4 -0
- package/types/src/data-chart/src/utils/types.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/useCharts.d.ts +3 -4
- package/types/src/data-chart/src/utils/useCharts.d.ts.map +1 -1
- package/types/src/fixed-action-bar/index.d.ts +1 -1
- package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts +1 -1
- package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts.map +1 -1
- package/types/src/icon/index.d.ts +3 -3
- package/types/src/icon/index.d.ts.map +1 -1
- package/types/src/image-upload/index.d.ts +3 -2
- package/types/src/image-upload/index.d.ts.map +1 -1
- package/types/src/image-upload/src/image-upload.vue.d.ts +2 -80
- package/types/src/image-upload/src/image-upload.vue.d.ts.map +1 -1
- package/types/src/subject-layout/index.d.ts +5 -3
- package/types/src/subject-layout/index.d.ts.map +1 -1
- package/types/src/subject-layout/src/subject-layout.vue.d.ts +2 -24
- package/types/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
- package/types/src/tiny-mce-editor/index.d.ts.map +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
- package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.13_typescript@5.8.2_/node_modules/@iconify/vue/dist/iconify.mjs +0 -2
- package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.13_typescript@5.8.2_/node_modules/@iconify/vue/dist/iconify.cjs +0 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SubjectRichText.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/SubjectRichText.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\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'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n orderIndex: number\n richTextContent: string\n title?: string\n isSave: boolean\n showAction?: boolean\n isEdit: boolean\n isSet: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst richContent = ref('')\n\nfunction save() {\n if (!richContent.value) {\n ElMessage.error('富文本内容不能为空!')\n return\n }\n\n emits('save', {\n richTextContent: richContent.value || '',\n })\n}\n\nfunction init() {\n if (props.richTextContent) {\n richContent.value = props.richTextContent\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-scale')\n</script>\n\n<template>\n <div :class=\"ns.e('scale-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n {{ orderIndex + 1 }}.<div v-html=\"richContent\" />\n </div>\n </template>\n <template #edit>\n <TinyMceEditor\n v-model:model-value=\"richContent\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :show-other-option=\"false\"\n :show-rich-text=\"false\"\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=\"type => emits('add', type)\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","richContent","ref","save","value","richTextContent","ElMessage","error","onMounted","ns","useNamespace"],"mappings":"qzBAUA,MAAMA,EAAQC,EAURC,EAAQC,EAERC,EAAQC,EAAAA,WAERC,EAAcC,
|
1
|
+
{"version":3,"file":"SubjectRichText.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/SubjectRichText.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\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'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n orderIndex: number\n richTextContent: string\n title?: string\n isSave: boolean\n showAction?: boolean\n isEdit: boolean\n isSet: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst richContent = ref('')\n\nfunction save() {\n if (!richContent.value) {\n ElMessage.error('富文本内容不能为空!')\n return\n }\n\n emits('save', {\n richTextContent: richContent.value || '',\n })\n}\n\nfunction init() {\n if (props.richTextContent) {\n richContent.value = props.richTextContent\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-scale')\n</script>\n\n<template>\n <div :class=\"ns.e('scale-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n {{ orderIndex + 1 }}.<div v-html=\"richContent\" />\n </div>\n </template>\n <template #edit>\n <TinyMceEditor\n v-model:model-value=\"richContent\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :show-other-option=\"false\"\n :show-rich-text=\"false\"\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=\"type => emits('add', type)\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","richContent","ref","save","value","richTextContent","ElMessage","error","onMounted","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","orderIndex","innerHTML","_hoisted_2","edit","TinyMceEditor","_mergeProps","$event","style","width","showAction","_createBlock","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","_cache","type"],"mappings":"qzBAUA,MAAMA,EAAQC,EAURC,EAAQC,EAERC,EAAQC,EAAAA,WAERC,EAAcC,EAAAA,IAAI,IAExB,SAASC,IACFF,EAAYG,MAKjBP,EAAM,OAAQ,CACZQ,gBAAiBJ,EAAYG,OAAS,KALtCE,EAAAA,UAAUC,MAAM,aAOpB,CAQAC,EAAAA,UANA,WACMb,EAAMU,kBACRJ,EAAYG,MAAQT,EAAMU,gBAE9B,GAGA,MAAMI,EAAKC,EAAAA,aAAa,6CAItBC,EAAAA,mBA6BM,MAAA,CA7BAC,MAAKC,EAAAA,eAAEC,EAAAA,MAAAL,GAAGM,EAAC,iBACfC,EAAAA,YA2BgBC,EAAAA,QAAA,CA3BA,YAAWC,EAAAA,QAAM,CACpBC,kBACT,IAEM,CAFNC,EAAAA,mBAEM,MAFNC,EAEM,CADDC,EAAAA,gBAAAA,EAAAA,gBAAAA,EAAAA,cAAiB,IAAC,GAAAF,qBAA4B,MAAA,CAAvBG,UAAQT,EAAAA,MAAAb,IAAW,KAAA,EAAAuB,OAGtCC,eACT,IAIE,CAJFT,EAAAA,YAIEU,EAAAA,QAJFC,aAIE,CAHQ,cAAab,EAAAA,MAAAb,mDAAAA,EAAWG,MAAAwB,EAAA,OACxBd,QAAAf,GAAK,CACb8B,MAAA,CAAAC,MAAA,UAAoB,KAAA,GAAA,CAAA,oCAGxB,IAaE,CAZMC,EAAAA,0BADRC,EAAAA,YAaEC,EAAAA,QAAA,OAXC,UAASf,EAAAA,OACT,SAAQgB,EAAAA,MACR,4BAA2BvC,EAAMwC,uBACjC,qBAAmB,EACnB,kBAAgB,EAChBC,wBAASvC,EAAK,OAAA,OACdwC,0BAAWxC,EAAK,OAAA,SAChByC,wBAAQzC,EAAK,WACb0C,OAAMpC,EACNqC,sBAAM3C,EAAK,SACX4C,MAAGC,EAAA,KAAAA,EAAA,GAAEC,GAAQ9C,QAAa8C"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es");require("element-plus/es/components/base/style/index"),require("element-plus/es/components/button/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/tag/style/index"),require("element-plus/es/components/checkbox-group/style/index"),require("element-plus/es/components/checkbox/style/index"),require("element-plus/es/components/link/style/index"),require("element-plus/es/components/input/style/index");var t=require("vue"),l=require("@element-plus/icons-vue"),n=require("@qxs-bns/hooks"),a=require("element-plus"),o=require("../../../subject-action/src/subject-action.vue.cjs"),r=require("../../../subject-layout/src/subject-layout.vue.cjs"),s=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const i={class:"preview"},c={class:"content"},u={class:"title"},d={key:0},m=["innerHTML"],p={key:1,class:"flex flex-wrap",style:{"margin-top":"10px",color:"#a8abb2"}},f={class:"flex"},v={style:{flex:"1"}},x={class:"flex flex-justify-end"},y={class:"margin-bottom flex flex-items-center"},V={class:"margin-bottom answer-list"},k={class:"label flex flex-justify-end"},g={class:"answer-tags"},h={key:0,class:"margin-bottom flex"},w={style:{flex:"1"}},E={key:1,class:"margin-bottom flex"},N={style:{flex:"1"}},B={class:"flex flex-justify-end"};var C=t.defineComponent({__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(C,{emit:
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es");require("element-plus/es/components/base/style/index"),require("element-plus/es/components/button/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/tag/style/index"),require("element-plus/es/components/checkbox-group/style/index"),require("element-plus/es/components/checkbox/style/index"),require("element-plus/es/components/link/style/index"),require("element-plus/es/components/input/style/index");var t=require("vue"),l=require("@element-plus/icons-vue"),n=require("@qxs-bns/hooks"),a=require("element-plus"),o=require("../../../subject-action/src/subject-action.vue.cjs"),r=require("../../../subject-layout/src/subject-layout.vue.cjs"),s=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const i={class:"preview"},c={class:"content"},u={class:"title"},d={key:0},m=["innerHTML"],p={key:1,class:"flex flex-wrap",style:{"margin-top":"10px",color:"#a8abb2"}},f={class:"flex"},v={style:{flex:"1"}},x={class:"flex flex-justify-end"},y={class:"margin-bottom flex flex-items-center"},V={class:"margin-bottom answer-list"},k={class:"label flex flex-justify-end"},g={class:"answer-tags"},h={key:0,class:"margin-bottom flex"},w={style:{flex:"1"}},E={key:1,class:"margin-bottom flex"},N={style:{flex:"1"}},B={class:"flex flex-justify-end"};var C=t.defineComponent({__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(C,{emit:_}){const b=C,q=_,S=t.useAttrs(),j=t.ref([]),I=t.ref(""),A=t.ref(""),T=t.ref(!1),O=t.ref(""),R=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],L=t.ref(["isIgnoreCase"]);function D(){I.value+=" ______",j.value.push({title:"",tag:"",showInput:!1})}function M(){T.value=!1,O.value=""}function U(){I.value?j.value.length<1?a.ElMessage.error("至少添加一个填空符!"):q("save",{title:I.value.replaceAll(/ ______/g,"<filter></filter>"),answers:j.value.map(e=>({title:e.title,isCorrect:!0})),analysis:A.value,isSetCorrectAnswer:!0,examAnswerSettingBO:{isIgnoreCase:L.value?.includes("isIgnoreCase"),isInOrder:L.value?.includes("isInOrder")},examRichTextContent:T.value?O.value:""}):a.ElMessage.error("题目标题不能为空!")}t.watch(()=>I.value,()=>{const[...e]=I.value.matchAll(/ ______/g);if(e.length!==j.value.length){const t=j.value.length-e.length;j.value.splice(j.value.length-t,t)}}),t.onMounted(function(){b.title&&(I.value=b.title.replaceAll(/<filter><\/filter>/g," ______")),b.answerList&&b.answerList.length&&(j.value=b.answerList),b.examAnswerSettingVO&&(L.value=L.value.filter(e=>"isIgnoreCase"===e&&b.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&b.examAnswerSettingVO?.isInOrder)),b.analysis&&(A.value=b.analysis),b.examRichTextContent&&(O.value=b.examRichTextContent,T.value=!0)});const F=n.useNamespace("subject-blank-fill");return(n,a)=>{const C=e.ElInput,_=e.ElLink,P=e.ElCheckbox,z=e.ElCheckboxGroup,H=e.ElTag,G=e.ElIcon,J=e.ElButton;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(F).e("blank-fill-exam"))},[t.createVNode(r.default,{"show-edit":n.isEdit},{preview:t.withCtx(()=>[t.createElementVNode("div",i,[t.createElementVNode("div",c,[t.createElementVNode("span",u,t.toDisplayString(n.orderIndex+1)+"."+t.toDisplayString(t.unref(I))+"(填空题)",1),t.unref(T)?(t.openBlock(),t.createElementBlock("div",d,[t.createElementVNode("div",{class:"rich-text",innerHTML:t.unref(O)},null,8,m)])):t.createCommentVNode("v-if",!0),t.unref(j).some(e=>e.title)?(t.openBlock(),t.createElementBlock("div",p,[a[10]||(a[10]=t.createElementVNode("span",{class:"title"},"正确答案:",-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(j),(e,l)=>(t.openBlock(),t.createElementBlock("div",{key:l,class:"flex flex-wrap flex-items-center",style:{"margin-right":"10px"}},[t.createElementVNode("span",null,"填空"+t.toDisplayString(l+1)+":",1),t.createElementVNode("span",null,t.toDisplayString(e.title),1)]))),128))])):t.createCommentVNode("v-if",!0)])])]),edit:t.withCtx(()=>[t.createElementVNode("div",f,[a[11]||(a[11]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",v,[t.createVNode(C,{modelValue:t.unref(I),"onUpdate:modelValue":a[0]||(a[0]=e=>t.isRef(I)?I.value=e:null),type:"textarea",rows:7,"show-word-limit":"",maxlength:"400",placeholder:"【填空题】请输入问题",disabled:n.isSave},null,8,["modelValue","disabled"])])]),t.createElementVNode("div",x,[t.createCommentVNode(' <el-link\n v-if="!showRichText"\n type="primary"\n @click="showRichText = true"\n >\n 添加富文本\n </el-link> '),t.createVNode(_,{class:"margin-left-10",type:"primary",disabled:n.isSave,onClick:D},{default:t.withCtx(()=>a[12]||(a[12]=[t.createTextVNode(" 插入填空符 ",-1)])),_:1,__:[12]},8,["disabled"])]),t.createElementVNode("div",y,[a[13]||(a[13]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"答题设置:")],-1)),(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(R,e=>t.createVNode(z,{key:e.value,modelValue:t.unref(L),"onUpdate:modelValue":a[1]||(a[1]=e=>t.isRef(L)?L.value=e:null)},{default:t.withCtx(()=>[t.createVNode(P,{value:e.value,class:"margin-left-10"},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.label),1)]),_:2},1032,["value"])]),_:2},1032,["modelValue"])),64))]),t.createElementVNode("div",V,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(j),(e,a)=>(t.openBlock(),t.createElementBlock("div",{key:a,class:"answer-item flex flex-items-center"},[t.createElementVNode("div",k,[t.createElementVNode("span",null,"第"+t.toDisplayString(a+1)+"空答案:",1)]),t.createElementVNode("div",g,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(e.title.split(","),l=>(t.openBlock(),t.createElementBlock(t.Fragment,{key:l},[l?(t.openBlock(),t.createBlock(H,{key:0,closable:"",onClose:t=>function(e,t){if(e){const l=t.title.split(","),n=l.findIndex(t=>t===e);n>-1&&(l.splice(n,1),t.title=l.join(","))}}(l,e)},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(l),1)]),_:2},1032,["onClose"])):t.createCommentVNode("v-if",!0)],64))),128)),n.isSave?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[e.showInput?(t.openBlock(),t.createBlock(C,{key:0,modelValue:e.tag,"onUpdate:modelValue":t=>e.tag=t,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"])):(t.openBlock(),t.createBlock(J,{key:1,size:"small",onClick:t=>e.showInput=!0},{default:t.withCtx(()=>[t.createVNode(G,null,{default:t.withCtx(()=>[t.createVNode(t.unref(l.Plus))]),_:1}),t.createElementVNode("span",null,t.toDisplayString(e.title?"添加同义词":"添加答案"),1)]),_:2},1032,["onClick"]))],64))])]))),128))]),n.showAnalysis?(t.openBlock(),t.createElementBlock("div",h,[a[14]||(a[14]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",w,[t.createVNode(C,{modelValue:t.unref(A),"onUpdate:modelValue":a[2]||(a[2]=e=>t.isRef(A)?A.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):t.createCommentVNode("v-if",!0),t.unref(T)?(t.openBlock(),t.createElementBlock("div",E,[a[16]||(a[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"富文本:")],-1)),t.createElementVNode("div",N,[t.createVNode(s.default,t.mergeProps({"model-value":t.unref(O),"onUpdate:modelValue":a[3]||(a[3]=e=>t.isRef(O)?O.value=e:null)},t.unref(S),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",B,[t.createVNode(_,{type:"danger",onClick:M},{default:t.withCtx(()=>a[15]||(a[15]=[t.createTextVNode(" 删除富文本 ",-1)])),_:1,__:[15]})])])])):t.createCommentVNode("v-if",!0)]),default:t.withCtx(()=>[n.showAction?(t.openBlock(),t.createBlock(o.default,{key:0,"is-edit":n.isEdit,"is-set":n.isSet,"show-other-option":!1,"exam-answer-relation-type":b.examAnswerRelationType,onMoveUp:a[4]||(a[4]=e=>q("move","up")),onMoveDown:a[5]||(a[5]=e=>q("move","down")),onDelete:a[6]||(a[6]=e=>q("delete")),onSave:U,onEdit:a[7]||(a[7]=e=>q("edit")),onAdd:a[8]||(a[8]=e=>q("add",e)),onOnShowRichText:a[9]||(a[9]=e=>T.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):t.createCommentVNode("v-if",!0)]),_:1},8,["show-edit"])],2)}}});exports.default=C;
|
2
2
|
//# sourceMappingURL=subject-blank-fill.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-blank-fill.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-blank-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Plus } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\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'\n\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n isEdit: boolean\n isSet: boolean\n examAnswerSettingVO?: {\n isInOrder: boolean\n isIgnoreCase: boolean\n }\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n tag: string\n showInput: boolean\n}[]>([])\n\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\n\nconst checkList = [\n {\n label: '答案不分顺序',\n value: 'isInOrder',\n },\n {\n label: '忽略大小写',\n value: 'isIgnoreCase',\n },\n]\n\nconst isCheckList = ref(['isIgnoreCase'])\n\nfunction handleAddTag(item: any) {\n item.showInput = false\n if (item.tag) {\n item.title = item.title ? [item.title, item.tag].join(',') : item.tag\n item.tag = ''\n }\n}\n\nfunction closeTag(tag: string, item: any) {\n if (tag) {\n const tags = item.title.split(',')\n const index = tags.findIndex((i: string) => i === tag)\n if (index > -1) {\n tags.splice(index, 1)\n item.title = tags.join(',')\n }\n }\n}\n\nfunction addBlank() {\n title.value += ' ______'\n answers.value.push({\n title: '',\n tag: '',\n showInput: false,\n })\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 (answers.value.length < 1) {\n ElMessage.error('至少添加一个填空符!')\n return\n }\n\n emits('save', {\n title: title.value.replaceAll(/ ______/g, '<filter></filter>'),\n answers: answers.value.map((item: any) => {\n return { title: item.title, isCorrect: true }\n }),\n analysis: analysis.value,\n isSetCorrectAnswer: true,\n examAnswerSettingBO: {\n isIgnoreCase: isCheckList.value?.includes('isIgnoreCase'),\n isInOrder: isCheckList.value?.includes('isInOrder'),\n },\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title.replaceAll(/<filter><\\/filter>/g, ' ______')\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.examAnswerSettingVO) {\n // 仅保留与设置匹配的选项\n isCheckList.value = isCheckList.value.filter((item: any) =>\n (item === 'isIgnoreCase' && props.examAnswerSettingVO?.isIgnoreCase)\n || (item === 'isInOrder' && props.examAnswerSettingVO?.isInOrder),\n )\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nwatch(() => title.value, () => {\n const [...matchs] = title.value.matchAll(/ ______/g)\n if (matchs.length !== answers.value.length) {\n const differ = answers.value.length - matchs.length\n answers.value.splice(answers.value.length - differ, differ)\n }\n})\n\nonMounted(init)\nconst ns = useNamespace('subject-blank-fill')\n</script>\n\n<template>\n <div :class=\"ns.e('blank-fill-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div class=\"content\">\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(填空题)</span>\n <div v-if=\"showRichText\">\n <div\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n <div\n v-if=\"answers.some((item) => item.title)\"\n class=\"flex flex-wrap\"\n style=\"margin-top: 10px;color: #a8abb2;\"\n >\n <span class=\"title\">正确答案:</span>\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"flex flex-wrap flex-items-center\"\n style=\"margin-right: 10px;\"\n >\n <span>填空{{ index + 1 }}:</span>\n <span>{{ item.title }}</span>\n </div>\n </div>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"7\"\n show-word-limit\n maxlength=\"400\"\n placeholder=\"【填空题】请输入问题\"\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"flex flex-justify-end\">\n <!-- <el-link\n v-if=\"!showRichText\"\n type=\"primary\"\n @click=\"showRichText = true\"\n >\n 添加富文本\n </el-link> -->\n <el-link\n class=\"margin-left-10\"\n type=\"primary\"\n :disabled=\"isSave\"\n @click=\"addBlank\"\n >\n 插入填空符\n </el-link>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>答题设置:</span>\n </div>\n\n <el-checkbox-group\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <el-checkbox\n :value=\"item.value\"\n class=\"margin-left-10\"\n >\n {{ item.label }}\n </el-checkbox>\n </el-checkbox-group>\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 <div class=\"label flex flex-justify-end\">\n <span>第{{ index + 1 }}空答案:</span>\n </div>\n\n <div class=\"answer-tags\">\n <template\n v-for=\"i in item.title.split(',')\"\n :key=\"i\"\n >\n <el-tag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </el-tag>\n </template>\n <template v-if=\"!isSave\">\n <el-input\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <el-button\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <el-icon><Plus /></el-icon>\n <span>{{ item.title ? '添加同义词' : '添加答案' }}</span>\n </el-button>\n </template>\n </div>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-end\">\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\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\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 :show-other-option=\"false\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\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=\"type => emits('add', type)\"\n @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","analysis","showRichText","richText","checkList","label","value","isCheckList","addBlank","push","tag","showInput","deleteRichText","save","length","ElMessage","error","replaceAll","map","item","isCorrect","isSetCorrectAnswer","examAnswerSettingBO","isIgnoreCase","includes","isInOrder","examRichTextContent","watch","matchs","matchAll","differ","splice","onMounted","answerList","examAnswerSettingVO","filter","ns","useNamespace","tags","split","index","findIndex","i","join"],"mappings":"i8DAQA,MAAMA,EAAQC,EAiBRC,EAAQC,EAERC,EAAQC,EAAAA,WAERC,EAAUC,EAIXA,IAAA,IAECC,EAAQD,MAAI,IACZE,EAAWF,MAAI,IACfG,EAAeH,OAAI,GACnBI,EAAWJ,MAAI,IAEfK,EAAY,CAChB,CACEC,MAAO,SACPC,MAAO,aAET,CACED,MAAO,QACPC,MAAO,iBAILC,EAAcR,EAAAA,IAAI,CAAC,iBAqBzB,SAASS,IACPR,EAAMM,OAAS,UACfR,EAAQQ,MAAMG,KAAK,CACjBT,MAAO,GACPU,IAAK,GACLC,WAAW,GACZ,CAGH,SAASC,IACPV,EAAaI,OAAQ,EACrBH,EAASG,MAAQ,EAAA,CAGnB,SAASO,IACFb,EAAMM,MAKPR,EAAQQ,MAAMQ,OAAS,EACzBC,EAAAA,UAAUC,MAAM,cAIlBtB,EAAM,OAAQ,CACZM,MAAOA,EAAMM,MAAMW,WAAW,WAAY,qBAC1CnB,QAASA,EAAQQ,MAAMY,KAAKC,IACnB,CAAEnB,MAAOmB,EAAKnB,MAAOoB,WAAW,MAEzCnB,SAAUA,EAASK,MACnBe,oBAAoB,EACpBC,oBAAqB,CACnBC,aAAchB,EAAYD,OAAOkB,SAAS,gBAC1CC,UAAWlB,EAAYD,OAAOkB,SAAS,cAEzCE,oBAAqBxB,EAAaI,MAAQH,EAASG,MAAQ,KApB3DS,EAAAA,UAAUC,MAAM,YAqBjB,CA8BGW,SAAA,IAAM3B,EAAMM,QAAO,KACvB,SAAUsB,GAAU5B,EAAMM,MAAMuB,SAAS,YACzC,GAAID,EAAOd,SAAWhB,EAAQQ,MAAMQ,OAAQ,CAC1C,MAAMgB,EAAShC,EAAQQ,MAAMQ,OAASc,EAAOd,OAC7ChB,EAAQQ,MAAMyB,OAAOjC,EAAQQ,MAAMQ,OAASgB,EAAQA,EAAM,KAI9DE,EAAAA,WAnCA,WACMxC,EAAMQ,QACRA,EAAMM,MAAQd,EAAMQ,MAAMiB,WAAW,sBAAuB,YAG1DzB,EAAMyC,YAAczC,EAAMyC,WAAWnB,SACvChB,EAAQQ,MAAQd,EAAMyC,YAGpBzC,EAAM0C,sBAEI3B,EAAAD,MAAQC,EAAYD,MAAM6B,QAAQhB,GAClC,iBAATA,GAA2B3B,EAAM0C,qBAAqBX,cAC1C,cAATJ,GAAwB3B,EAAM0C,qBAAqBT,aAIvDjC,EAAMS,WACRA,EAASK,MAAQd,EAAMS,UAGrBT,EAAMkC,sBACRvB,EAASG,MAAQd,EAAMkC,oBACvBxB,EAAaI,OAAQ,EACvB,IAYI,MAAA8B,EAAKC,eAAa,klGAvFf,SAAS3B,EAAaS,GAC7B,GAAIT,EAAK,CACP,MAAM4B,EAAOnB,EAAKnB,MAAMuC,MAAM,KACxBC,EAAQF,EAAKG,WAAWC,GAAcA,IAAMhC,IAC9C8B,GAAQ,IACLF,EAAAP,OAAOS,EAAO,GACdrB,EAAAnB,MAAQsC,EAAKK,KAAK,KACzB,CACF,yXAhBF,SAAsBxB,GACpBA,EAAKR,WAAY,EACbQ,EAAKT,MACPS,EAAKnB,MAAQmB,EAAKnB,MAAQ,CAACmB,EAAKnB,MAAOmB,EAAKT,KAAKiC,KAAK,KAAOxB,EAAKT,IAClES,EAAKT,IAAM,GACb"}
|
1
|
+
{"version":3,"file":"subject-blank-fill.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-blank-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Plus } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\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'\n\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n isEdit: boolean\n isSet: boolean\n examAnswerSettingVO?: {\n isInOrder: boolean\n isIgnoreCase: boolean\n }\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n tag: string\n showInput: boolean\n}[]>([])\n\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\n\nconst checkList = [\n {\n label: '答案不分顺序',\n value: 'isInOrder',\n },\n {\n label: '忽略大小写',\n value: 'isIgnoreCase',\n },\n]\n\nconst isCheckList = ref(['isIgnoreCase'])\n\nfunction handleAddTag(item: any) {\n item.showInput = false\n if (item.tag) {\n item.title = item.title ? [item.title, item.tag].join(',') : item.tag\n item.tag = ''\n }\n}\n\nfunction closeTag(tag: string, item: any) {\n if (tag) {\n const tags = item.title.split(',')\n const index = tags.findIndex((i: string) => i === tag)\n if (index > -1) {\n tags.splice(index, 1)\n item.title = tags.join(',')\n }\n }\n}\n\nfunction addBlank() {\n title.value += ' ______'\n answers.value.push({\n title: '',\n tag: '',\n showInput: false,\n })\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 (answers.value.length < 1) {\n ElMessage.error('至少添加一个填空符!')\n return\n }\n\n emits('save', {\n title: title.value.replaceAll(/ ______/g, '<filter></filter>'),\n answers: answers.value.map((item: any) => {\n return { title: item.title, isCorrect: true }\n }),\n analysis: analysis.value,\n isSetCorrectAnswer: true,\n examAnswerSettingBO: {\n isIgnoreCase: isCheckList.value?.includes('isIgnoreCase'),\n isInOrder: isCheckList.value?.includes('isInOrder'),\n },\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title.replaceAll(/<filter><\\/filter>/g, ' ______')\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.examAnswerSettingVO) {\n // 仅保留与设置匹配的选项\n isCheckList.value = isCheckList.value.filter((item: any) =>\n (item === 'isIgnoreCase' && props.examAnswerSettingVO?.isIgnoreCase)\n || (item === 'isInOrder' && props.examAnswerSettingVO?.isInOrder),\n )\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nwatch(() => title.value, () => {\n const [...matchs] = title.value.matchAll(/ ______/g)\n if (matchs.length !== answers.value.length) {\n const differ = answers.value.length - matchs.length\n answers.value.splice(answers.value.length - differ, differ)\n }\n})\n\nonMounted(init)\nconst ns = useNamespace('subject-blank-fill')\n</script>\n\n<template>\n <div :class=\"ns.e('blank-fill-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div class=\"content\">\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(填空题)</span>\n <div v-if=\"showRichText\">\n <div\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n <div\n v-if=\"answers.some((item) => item.title)\"\n class=\"flex flex-wrap\"\n style=\"margin-top: 10px;color: #a8abb2;\"\n >\n <span class=\"title\">正确答案:</span>\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"flex flex-wrap flex-items-center\"\n style=\"margin-right: 10px;\"\n >\n <span>填空{{ index + 1 }}:</span>\n <span>{{ item.title }}</span>\n </div>\n </div>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"7\"\n show-word-limit\n maxlength=\"400\"\n placeholder=\"【填空题】请输入问题\"\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"flex flex-justify-end\">\n <!-- <el-link\n v-if=\"!showRichText\"\n type=\"primary\"\n @click=\"showRichText = true\"\n >\n 添加富文本\n </el-link> -->\n <el-link\n class=\"margin-left-10\"\n type=\"primary\"\n :disabled=\"isSave\"\n @click=\"addBlank\"\n >\n 插入填空符\n </el-link>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>答题设置:</span>\n </div>\n\n <el-checkbox-group\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <el-checkbox\n :value=\"item.value\"\n class=\"margin-left-10\"\n >\n {{ item.label }}\n </el-checkbox>\n </el-checkbox-group>\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 <div class=\"label flex flex-justify-end\">\n <span>第{{ index + 1 }}空答案:</span>\n </div>\n\n <div class=\"answer-tags\">\n <template\n v-for=\"i in item.title.split(',')\"\n :key=\"i\"\n >\n <el-tag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </el-tag>\n </template>\n <template v-if=\"!isSave\">\n <el-input\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <el-button\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <el-icon><Plus /></el-icon>\n <span>{{ item.title ? '添加同义词' : '添加答案' }}</span>\n </el-button>\n </template>\n </div>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-end\">\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\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\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 :show-other-option=\"false\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\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=\"type => emits('add', type)\"\n @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","analysis","showRichText","richText","checkList","label","value","isCheckList","addBlank","push","tag","showInput","deleteRichText","save","length","ElMessage","error","replaceAll","map","item","isCorrect","isSetCorrectAnswer","examAnswerSettingBO","isIgnoreCase","includes","isInOrder","examRichTextContent","watch","matchs","matchAll","differ","splice","onMounted","answerList","examAnswerSettingVO","filter","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_3","_toDisplayString","orderIndex","_hoisted_4","innerHTML","some","_openBlock","_hoisted_6","_cache","_Fragment","_renderList","index","key","style","edit","_hoisted_7","_hoisted_8","_component_el_input","$event","type","rows","maxlength","placeholder","disabled","isSave","_hoisted_9","_createCommentVNode","_component_el_link","onClick","_hoisted_10","_component_el_checkbox_group","_component_el_checkbox","_createTextVNode","_hoisted_11","_hoisted_12","_hoisted_13","split","i","_createBlock","_component_el_tag","closable","onClose","tags","findIndex","join","closeTag","modelValue","width","onBlur","handleAddTag","_component_el_button","size","_component_el_icon","Plus","showAnalysis","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","TinyMceEditor","_mergeProps","_hoisted_18","showAction","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es");require("element-plus/es/components/base/style/index"),require("element-plus/es/components/link/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/input/style/index"),require("element-plus/es/components/radio/style/index"),require("element-plus/es/components/row/style/index"),require("element-plus/es/components/col/style/index");var l=require("vue"),t=require("@element-plus/icons-vue"),n=require("@qxs-bns/hooks"),a=require("element-plus"),s=require("../../../subject-action/src/subject-action.vue.cjs"),r=require("../../../subject-layout/src/subject-layout.vue.cjs"),o=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const i={class:"preview"},c={class:"title"},d={key:0},u=["innerHTML"],m={class:"answer-radio flex-col"},p={style:{flex:"1"}},f={class:"answer flex"},v={class:"flex"},x={class:"answer-list flex-col"},y={class:"order"},V={class:"flex",style:{"margin-bottom":"20px"}},h={style:{flex:"1"}},w={key:0,class:"margin-bottom flex"},N={style:{flex:"1"}},E={class:"flex flex-justify-end"};var k=l.defineComponent({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(k,{emit:C}){const g=k,b=C,q=l.useAttrs(),B=l.ref([{title:""},{title:""},{title:""},{title:""},{title:""}]),S=l.ref(""),j=l.ref(""),L=l.ref(""),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es");require("element-plus/es/components/base/style/index"),require("element-plus/es/components/link/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/input/style/index"),require("element-plus/es/components/radio/style/index"),require("element-plus/es/components/row/style/index"),require("element-plus/es/components/col/style/index");var l=require("vue"),t=require("@element-plus/icons-vue"),n=require("@qxs-bns/hooks"),a=require("element-plus"),s=require("../../../subject-action/src/subject-action.vue.cjs"),r=require("../../../subject-layout/src/subject-layout.vue.cjs"),o=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const i={class:"preview"},c={class:"title"},d={key:0},u=["innerHTML"],m={class:"answer-radio flex-col"},p={style:{flex:"1"}},f={class:"answer flex"},v={class:"flex"},x={class:"answer-list flex-col"},y={class:"order"},V={class:"flex",style:{"margin-bottom":"20px"}},h={style:{flex:"1"}},w={key:0,class:"margin-bottom flex"},N={style:{flex:"1"}},E={class:"flex flex-justify-end"};var k=l.defineComponent({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(k,{emit:C}){const g=k,b=C,q=l.useAttrs(),B=l.ref([{title:""},{title:""},{title:""},{title:""},{title:""}]),S=l.ref(""),j=l.ref(""),L=l.ref(""),_=l.ref(!1),R=l.ref(""),M=l.ref([]),T=l.computed(()=>Math.ceil(24/(B.value.length+1)));function A(){5!==B.value.length&&B.value.push({title:""})}function D(){_.value=!1,R.value=""}function U(){if(!S.value)return void a.ElMessage.error("题目标题不能为空!");let e="";B.value.forEach((l,t)=>{l.title||(e+=`选项${String.fromCharCode(65+t)}未填写。`)}),e?a.ElMessage.error(e):L.value?(M.value=L.value.split("\n").filter(e=>e),b("save",{title:S.value,answers:B.value,analysis:j.value,scaleQuestionList:M.value,examRichTextContent:_.value?R.value:""})):a.ElMessage.error("行标题不能为空!")}l.onMounted(function(){g.title&&(S.value=g.title),g.answerList&&g.answerList.length&&(B.value=g.answerList),g.analysis&&(j.value=g.analysis),g.scaleQuestionList&&(M.value=g.scaleQuestionList,L.value=M.value.join("\n")),g.examRichTextContent&&(R.value=g.examRichTextContent,_.value=!0)});const Q=n.useNamespace("subject-scale");return(n,a)=>{const k=e.ElCol,C=e.ElRow,z=e.ElRadio,F=e.ElInput,I=e.ElIcon,O=e.ElLink;return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(l.unref(Q).e("scale-exam"))},[l.createVNode(r.default,{"show-edit":n.isEdit},{preview:l.withCtx(()=>[l.createElementVNode("div",i,[l.createElementVNode("div",null,[l.createElementVNode("span",c,l.toDisplayString(n.orderIndex+1)+"."+l.toDisplayString(l.unref(S))+"(量表题)",1),l.unref(_)?(l.openBlock(),l.createElementBlock("div",d,[l.createElementVNode("div",{class:"rich-text",innerHTML:l.unref(R)},null,8,u)])):l.createCommentVNode("v-if",!0)]),l.createElementVNode("div",m,[l.createVNode(C,{style:{padding:"10px 0"}},{default:l.withCtx(()=>[l.createVNode(k,{span:l.unref(T)},null,8,["span"]),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(l.unref(B),e=>(l.openBlock(),l.createBlock(k,{key:e.title,class:"flex flex-center",span:l.unref(T)},{default:l.withCtx(()=>[l.createElementVNode("span",null,l.toDisplayString(e.title),1)]),_:2},1032,["span"]))),128))]),_:1}),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(l.unref(M),e=>(l.openBlock(),l.createBlock(C,{key:e,style:{padding:"10px 0"}},{default:l.withCtx(()=>[l.createVNode(k,{span:l.unref(T),class:"flex flex-center"},{default:l.withCtx(()=>[l.createElementVNode("span",null,l.toDisplayString(e),1)]),_:2},1032,["span"]),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(l.unref(B).length,e=>(l.openBlock(),l.createBlock(k,{key:e,class:"radio-item flex flex-center",span:l.unref(T)},{default:l.withCtx(()=>[l.createVNode(z,{disabled:!0})]),_:2},1032,["span"]))),128))]),_:2},1024))),128))])])]),edit:l.withCtx(()=>[l.createElementVNode("div",{class:l.normalizeClass(["flex",[{"margin-bottom":l.unref(_)}]])},[a[10]||(a[10]=l.createElementVNode("div",{class:"label flex flex-justify-center"},[l.createElementVNode("span",null,"题目:")],-1)),l.createElementVNode("div",p,[l.createVNode(F,{modelValue:l.unref(S),"onUpdate:modelValue":a[0]||(a[0]=e=>l.isRef(S)?S.value=e:null),type:"textarea",rows:2,placeholder:"【量表题】请输入问题",disabled:n.isSave},null,8,["modelValue","disabled"])])],2),l.createElementVNode("div",f,[a[11]||(a[11]=l.createElementVNode("div",{class:"label flex flex-justify-center"},[l.createElementVNode("span",null,"行标题:")],-1)),l.createElementVNode("div",v,[l.createVNode(F,{modelValue:l.unref(L),"onUpdate:modelValue":a[1]||(a[1]=e=>l.isRef(L)?L.value=e:null),type:"textarea",placeholder:"请输入行标题",style:{width:"160px"},rows:10},null,8,["modelValue"]),l.createElementVNode("div",x,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(l.unref(B),(e,a)=>(l.openBlock(),l.createElementBlock("div",{key:a,class:"answer-item flex flex-items-center"},[l.createElementVNode("span",y,l.toDisplayString(String.fromCharCode(65+a))+".",1),l.createVNode(F,{modelValue:e.title,"onUpdate:modelValue":l=>e.title=l,class:"input","show-word-limit":"",maxlength:10,placeholder:`选项${String.fromCharCode(65+a)}`,disabled:n.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),l.createCommentVNode(' <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 /> '),l.createVNode(I,{class:"icon"},{default:l.withCtx(()=>[l.createVNode(l.unref(t.CirclePlus),{class:l.normalizeClass([{disabled:5===l.unref(B).length}]),onClick:A},null,8,["class"])]),_:1}),l.createVNode(I,{class:"icon"},{default:l.withCtx(()=>[l.createVNode(l.unref(t.Remove),{class:l.normalizeClass([{disabled:l.unref(B).length<3}]),onClick:e=>function(e){B.value.length<3||B.value.splice(e,1)}(a)},null,8,["class","onClick"])]),_:2},1024)]))),128))])])]),l.createElementVNode("div",V,[a[12]||(a[12]=l.createElementVNode("div",{class:"label flex flex-justify-center"},[l.createElementVNode("span",null,"解析:")],-1)),l.createElementVNode("div",h,[l.createVNode(F,{modelValue:l.unref(j),"onUpdate:modelValue":a[2]||(a[2]=e=>l.isRef(j)?j.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])]),l.unref(_)?(l.openBlock(),l.createElementBlock("div",w,[a[14]||(a[14]=l.createElementVNode("div",{class:"label flex flex-justify-center"},[l.createElementVNode("span",null,"富文本:")],-1)),l.createElementVNode("div",N,[l.createVNode(o.default,l.mergeProps({"model-value":l.unref(R),"onUpdate:modelValue":a[3]||(a[3]=e=>l.isRef(R)?R.value=e:null)},l.unref(q),{style:{width:"100%"}}),null,16,["model-value"]),l.createElementVNode("div",E,[l.createVNode(O,{type:"danger",onClick:D},{default:l.withCtx(()=>a[13]||(a[13]=[l.createTextVNode(" 删除富文本 ",-1)])),_:1,__:[13]})])])])):l.createCommentVNode("v-if",!0)]),default:l.withCtx(()=>[n.showAction?(l.openBlock(),l.createBlock(s.default,{key:0,"is-edit":n.isEdit,"is-set":n.isSet,"show-other-option":!1,"exam-answer-relation-type":g.examAnswerRelationType,onMoveUp:a[4]||(a[4]=e=>b("move","up")),onMoveDown:a[5]||(a[5]=e=>b("move","down")),onDelete:a[6]||(a[6]=e=>b("delete")),onSave:U,onEdit:a[7]||(a[7]=e=>b("edit")),onAdd:a[8]||(a[8]=e=>b("add",e)),onOnShowRichText:a[9]||(a[9]=e=>_.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):l.createCommentVNode("v-if",!0)]),_:1},8,["show-edit"])],2)}}});exports.default=k;
|
2
2
|
//# sourceMappingURL=subject-scale.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-scale.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-scale.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\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'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n rowTitle?: string\n isEdit: boolean\n isSet: boolean\n scaleQuestionList?: any\n examRichTextContent?: string\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n}[]>([{\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst rowTitle = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst scaleQuestionList = ref<string[]>([])\nconst span = computed(() => Math.ceil(24 / (answers.value.length + 1)))\nfunction addAnswer() {\n if (answers.value.length === 5) {\n return\n }\n answers.value.push({\n title: '',\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3) {\n return\n }\n answers.value.splice(index, 1)\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 answers.value.forEach((v, i) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n })\n\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n if (!rowTitle.value) {\n ElMessage.error('行标题不能为空!')\n return\n }\n\n scaleQuestionList.value = rowTitle.value.split('\\n').filter(i => i)\n\n emits('save', {\n title: title.value,\n answers: answers.value,\n analysis: analysis.value,\n scaleQuestionList: scaleQuestionList.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.scaleQuestionList) {\n scaleQuestionList.value = props.scaleQuestionList\n rowTitle.value = scaleQuestionList.value.join('\\n')\n }\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-scale')\n</script>\n\n<template>\n <div :class=\"ns.e('scale-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(量表题)</span>\n <div v-if=\"showRichText\">\n <div\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n </div>\n <div class=\"answer-radio flex-col\">\n <el-row style=\"padding: 10px 0;\">\n <el-col :span=\"span\" />\n <el-col\n v-for=\"item in answers\"\n :key=\"item.title\"\n class=\"flex flex-center\"\n :span=\"span\"\n >\n <span>{{ item.title }}</span>\n </el-col>\n </el-row>\n <el-row\n v-for=\"item in scaleQuestionList\"\n :key=\"item\"\n style=\"padding: 10px 0;\"\n >\n <el-col\n :span=\"span\"\n class=\"flex flex-center\"\n >\n <span>{{ item }}</span>\n </el-col>\n <el-col\n v-for=\"i in answers.length\"\n :key=\"i\"\n class=\"radio-item flex flex-center\"\n :span=\"span\"\n >\n <el-radio :disabled=\"true\" />\n </el-col>\n </el-row>\n </div>\n </div>\n </template>\n <template #edit>\n <div\n class=\"flex\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\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=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【量表题】请输入问题\"\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"answer flex\">\n <div class=\"label flex flex-justify-center\">\n <span>行标题:</span>\n </div>\n <div class=\"flex\">\n <el-input\n v-model=\"rowTitle\"\n type=\"textarea\"\n placeholder=\"请输入行标题\"\n style=\"width: 160px;\"\n :rows=\"10\"\n />\n <div class=\"answer-list flex-col\">\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=\"10\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <!-- <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 /> -->\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: answers.length === 5 }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"flex\"\n style=\"margin-bottom: 20px;\"\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\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\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 :show-other-option=\"false\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\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=\"(type: any) => emits('add', type)\"\n @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","analysis","rowTitle","showRichText","richText","scaleQuestionList","span","computed","Math","ceil","value","length","addAnswer","push","deleteRichText","save","ElMessage","error","msg","forEach","v","i","String","fromCharCode","split","filter","examRichTextContent","onMounted","answerList","join","ns","useNamespace","index","splice"],"mappings":"iuDAWA,MAAMA,EAAQC,EAcRC,EAAQC,EAERC,EAAQC,EAAAA,WAERC,EAAUC,EAAAA,IAEX,CAAC,CACJC,MAAO,IACN,CACDA,MAAO,IACN,CACDA,MAAO,IACN,CACDA,MAAO,IACN,CACDA,MAAO,MAGHA,EAAQD,MAAI,IACZE,EAAWF,MAAI,IACfG,EAAWH,MAAI,IACfI,EAAeJ,OAAI,GACnBK,EAAWL,MAAI,IACfM,EAAoBN,EAAcA,IAAA,IAClCO,EAAOC,EAAAA,UAAS,IAAMC,KAAKC,KAAK,IAAMX,EAAQY,MAAMC,OAAS,MACnE,SAASC,IACsB,IAAzBd,EAAQY,MAAMC,QAGlBb,EAAQY,MAAMG,KAAK,CACjBb,MAAO,IACR,CAUH,SAASc,IACPX,EAAaO,OAAQ,EACrBN,EAASM,MAAQ,EAAA,CAGnB,SAASK,IACH,IAACf,EAAMU,MAET,YADAM,EAAAA,UAAUC,MAAM,aAGlB,IAAIC,EAAM,GACVpB,EAAQY,MAAMS,SAAQ,CAACC,EAAGC,KACnBD,EAAEpB,QACLkB,GAAO,KAAKI,OAAOC,aAAa,GAAKF,SAAE,IAIvCH,EACFF,EAAAA,UAAUC,MAAMC,GAIbhB,EAASQ,OAKIL,EAAAK,MAAQR,EAASQ,MAAMc,MAAM,MAAMC,WAAYJ,IAEjE3B,EAAM,OAAQ,CACZM,MAAOA,EAAMU,MACbZ,QAASA,EAAQY,MACjBT,SAAUA,EAASS,MACnBL,kBAAmBA,EAAkBK,MACrCgB,oBAAqBvB,EAAaO,MAAQN,EAASM,MAAQ,MAX3DM,EAAAA,UAAUC,MAAM,WAYjB,CA0BHU,EAAAA,WAvBA,WACMnC,EAAMQ,QACRA,EAAMU,MAAQlB,EAAMQ,OAGlBR,EAAMoC,YAAcpC,EAAMoC,WAAWjB,SACvCb,EAAQY,MAAQlB,EAAMoC,YAGpBpC,EAAMS,WACRA,EAASS,MAAQlB,EAAMS,UAGrBT,EAAMa,oBACRA,EAAkBK,MAAQlB,EAAMa,kBAChCH,EAASQ,MAAQL,EAAkBK,MAAMmB,KAAK,OAE5CrC,EAAMkC,sBACRtB,EAASM,MAAQlB,EAAMkC,oBACvBvB,EAAaO,OAAQ,EACvB,IAII,MAAAoB,EAAKC,eAAa,mwHArExB,SAAsBC,GAChBlC,EAAQY,MAAMC,OAAS,GAGnBb,EAAAY,MAAMuB,OAAOD,EAAO,EAAC"}
|
1
|
+
{"version":3,"file":"subject-scale.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-scale.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\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'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n rowTitle?: string\n isEdit: boolean\n isSet: boolean\n scaleQuestionList?: any\n examRichTextContent?: string\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n}[]>([{\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst rowTitle = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst scaleQuestionList = ref<string[]>([])\nconst span = computed(() => Math.ceil(24 / (answers.value.length + 1)))\nfunction addAnswer() {\n if (answers.value.length === 5) {\n return\n }\n answers.value.push({\n title: '',\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3) {\n return\n }\n answers.value.splice(index, 1)\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 answers.value.forEach((v, i) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n })\n\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n if (!rowTitle.value) {\n ElMessage.error('行标题不能为空!')\n return\n }\n\n scaleQuestionList.value = rowTitle.value.split('\\n').filter(i => i)\n\n emits('save', {\n title: title.value,\n answers: answers.value,\n analysis: analysis.value,\n scaleQuestionList: scaleQuestionList.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.scaleQuestionList) {\n scaleQuestionList.value = props.scaleQuestionList\n rowTitle.value = scaleQuestionList.value.join('\\n')\n }\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-scale')\n</script>\n\n<template>\n <div :class=\"ns.e('scale-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(量表题)</span>\n <div v-if=\"showRichText\">\n <div\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n </div>\n <div class=\"answer-radio flex-col\">\n <el-row style=\"padding: 10px 0;\">\n <el-col :span=\"span\" />\n <el-col\n v-for=\"item in answers\"\n :key=\"item.title\"\n class=\"flex flex-center\"\n :span=\"span\"\n >\n <span>{{ item.title }}</span>\n </el-col>\n </el-row>\n <el-row\n v-for=\"item in scaleQuestionList\"\n :key=\"item\"\n style=\"padding: 10px 0;\"\n >\n <el-col\n :span=\"span\"\n class=\"flex flex-center\"\n >\n <span>{{ item }}</span>\n </el-col>\n <el-col\n v-for=\"i in answers.length\"\n :key=\"i\"\n class=\"radio-item flex flex-center\"\n :span=\"span\"\n >\n <el-radio :disabled=\"true\" />\n </el-col>\n </el-row>\n </div>\n </div>\n </template>\n <template #edit>\n <div\n class=\"flex\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\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=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【量表题】请输入问题\"\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"answer flex\">\n <div class=\"label flex flex-justify-center\">\n <span>行标题:</span>\n </div>\n <div class=\"flex\">\n <el-input\n v-model=\"rowTitle\"\n type=\"textarea\"\n placeholder=\"请输入行标题\"\n style=\"width: 160px;\"\n :rows=\"10\"\n />\n <div class=\"answer-list flex-col\">\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=\"10\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <!-- <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 /> -->\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: answers.length === 5 }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"flex\"\n style=\"margin-bottom: 20px;\"\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\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\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 :show-other-option=\"false\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\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=\"(type: any) => emits('add', type)\"\n @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","analysis","rowTitle","showRichText","richText","scaleQuestionList","span","computed","Math","ceil","value","length","addAnswer","push","deleteRichText","save","ElMessage","error","msg","forEach","v","i","String","fromCharCode","split","filter","examRichTextContent","onMounted","answerList","join","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","orderIndex","_hoisted_3","innerHTML","_hoisted_5","_component_el_row","style","padding","_component_el_col","_Fragment","_renderList","item","_createBlock","key","_openBlock","_component_el_radio","disabled","edit","_hoisted_6","_component_el_input","$event","type","rows","placeholder","isSave","_hoisted_7","_hoisted_8","width","_hoisted_9","index","_hoisted_10","modelValue","maxlength","_createCommentVNode","_component_el_icon","CirclePlus","onClick","Remove","splice","deleteAnswer","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","TinyMceEditor","_mergeProps","_hoisted_15","_component_el_link","_cache","showAction","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es");require("element-plus/es/components/base/style/index"),require("element-plus/es/components/dialog/style/index"),require("element-plus/es/components/button/style/index"),require("element-plus/es/components/link/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/select/style/index"),require("element-plus/es/components/option/style/index"),require("element-plus/es/components/input/style/index"),require("element-plus/es/components/radio/style/index"),require("element-plus/es/components/checkbox/style/index");var t=require("vue"),l=require("@element-plus/icons-vue"),n=require("@qxs-bns/hooks"),r=require("@qxs-bns/utils"),a=require("../../../subject-action/src/subject-action.vue.cjs"),o=require("../../../subject-layout/src/subject-layout.vue.cjs"),s=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");require("element-plus/es/components/message/style/index");const i={class:"preview"},u={class:"title"},c={key:0},d={key:1},m={key:0},p=["innerHTML"],f={class:"preview-answer"},y={class:"order"},v={class:"order"},x={style:{flex:"1"}},k={class:"margin-bottom flex flex-items-center"},C={class:"margin-bottom answer-list"},w={class:"label flex flex-justify-center"},h={key:0,class:"margin-bottom flex flex-items-center"},V={style:{flex:"1"}},g={key:1,class:"flex"},E={style:{flex:"1"}},N={key:2,class:"margin-bottom flex"},B={style:{flex:"1"}},b={class:"flex flex-justify-end"};var S=t.defineComponent({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:Number,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(S,{emit:q}){const R=S,T=q,A=t.useAttrs(),j=t.ref(0),D=t.ref(R.isKey),I=t.ref(1),_=t.ref(R.examAnswerRelationType),L=t.ref([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),M=t.ref(2),U=t.ref(""),z=t.ref(""),$=t.ref(!1),K=t.ref(""),F=t.ref(0),P=t.ref(!1),O=t.ref(""),G=t.computed((()=>"single"===R.type?"单选题":"multiple"===R.type?"多选题":"排序题")),H=t.ref([]),Q=t.computed((()=>{const e=[];for(let t=L.value.length;t>1;t--)e.push({label:`至少选择${t}项`,value:t});return e.reverse()}));function J(){R.isSave||L.value.push({title:"",isCorrect:!1,customAnswerId:r.setGuid()})}function W(){$.value=!1,K.value=""}function X(){if(!U.value)return void e.ElMessage.error("题目标题不能为空!");if(!I.value)return void e.ElMessage.error("请选择答题设置");let t="",l=!1,n=0;if("multiple"===R.type||"single"===R.type?L.value.forEach(((e,r)=>{e.title?.trim()||(t+=`选项${String.fromCharCode(65+r)}未填写。`),e.isCorrect&&(l=!0,n++),e.relationType=e.resultItem?1:e.answerRelations?.length?2:null})):"sort"===R.type&&H.value.length&&(l=!0),t)return void e.ElMessage.error(t);if(new Set(L.value.map((e=>e.title))).size===L.value.length){if("multiple"===R.type){if(1===n)return void e.ElMessage.error("请至少设置两个支持选项");if(l&&n<M.value)return void e.ElMessage.error("至少选几项与支持选项数不符")}2!==I.value&&3!==I.value||l?T("save",{title:U.value,answers:L.value.map(((e,t)=>({...e,orderIndex:t+1}))),examExpand:H.value.map((e=>e.charCodeAt(0)-65+1)).join(","),analysis:z.value,isSetCorrectAnswer:l,leastAnswerCount:M.value,examRichTextContent:$.value?K.value:"",examAnswerRelationType:_.value,isKey:D.value,answerCheckType:I.value}):e.ElMessage.error("请设置支持选项")}else e.ElMessage.error("选项不能重复")}function Y(){L.value[j.value].resultItem=O.value||"",P.value=!1}function Z(){P.value=!1,O.value=""}function ee(e){D.value=e}function te(e){I.value=e}function le(e,t){T("add",e,t?R.examAnswerRelationType:null)}t.watch((()=>R.isEdit),(()=>{R.isEdit&&(F.value=(new Date).getTime())}));const ne=t.computed((()=>e=>{let t=0;return e.forEach((e=>{e.relationAnswers&&(t+=e.relationAnswers.length)})),t})),re=n.useNamespace("subject-single");return t.onMounted((function(){if(R.title&&(U.value=R.title),R.answerCheckType&&(I.value=R.answerCheckType),R.isKey&&(D.value=R.isKey),R.examAnswerRelationType&&(_.value=R.examAnswerRelationType),R.answerList&&R.answerList.length&&(L.value=R.answerList),R.leastAnswerCount&&(M.value=R.leastAnswerCount),R.examExpand&&R.examExpand){const e=R.examExpand.split(",");H.value=e.map((e=>{const t=R.answerList.find((t=>t.answerId?.toString()===e));return t?String.fromCharCode(65+t.orderIndex-1):e})).filter(Boolean)}R.analysis&&(z.value=R.analysis),R.examRichTextContent&&(K.value=R.examRichTextContent,$.value=!0)})),(n,S)=>{const q=e.ElCheckbox,F=e.ElRadio,ae=e.ElInput,oe=e.ElOption,se=e.ElSelect,ie=e.ElIcon,ue=e.ElLink,ce=e.ElButton,de=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(re).e("single-exam"))},[t.createVNode(o.default,{"show-edit":n.isEdit},t.createSlots({preview:t.withCtx((()=>[t.createElementVNode("div",i,[t.createElementVNode("div",null,[t.createElementVNode("span",u,[t.createTextVNode(t.toDisplayString(n.orderIndex+1)+"."+t.toDisplayString(t.unref(U))+" ",1),"single"===n.type?(t.openBlock(),t.createElementBlock("span",c,"(单选题)")):["multiple","sort"].includes(n.type)?(t.openBlock(),t.createElementBlock("span",d," ("+t.toDisplayString(t.unref(G))+t.toDisplayString(t.unref(M)?`至少选${t.unref(M)}项${"sort"===n.type?"并排序":""}`:"")+") ",1)):t.createCommentVNode("v-if",!0)])]),t.unref($)?(t.openBlock(),t.createElementBlock("div",m,[t.createElementVNode("div",{class:"rich-text",innerHTML:t.unref(K)},null,8,p)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",f,["sort"===n.type?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:0},t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(q,{key:l,class:"radio",disabled:!0},{default:t.withCtx((()=>[t.createElementVNode("span",y,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title),1)])),_:2},1024)))),128)):(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(F,{key:l,class:"radio",value:"disabled",disabled:""},{default:t.withCtx((()=>[t.createElementVNode("span",v,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title)+" "+t.toDisplayString(e.isCorrect?"(支持选项)":"")+" "+t.toDisplayString(1===t.unref(_)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+t.toDisplayString(2===t.unref(_)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)])),_:2},1024)))),128))])])])),default:t.withCtx((()=>[n.showAction?(t.openBlock(),t.createBlock(a.default,{key:0,"is-edit":n.isEdit,"is-set":n.isSet,"is-key":t.unref(D),"show-other-option":"multiple"===R.type||"single"===R.type,"exam-answer-relation-type":R.examAnswerRelationType,"answer-check-type":t.unref(I),onMoveUp:S[5]||(S[5]=e=>T("move","up")),onMoveDown:S[6]||(S[6]=e=>T("move","down")),onDelete:S[7]||(S[7]=e=>T("delete")),onSave:X,onEdit:S[8]||(S[8]=e=>T("edit")),onAdd:le,onOnShowRichText:S[9]||(S[9]=e=>$.value=!0),onSetKey:ee,onSetAnswerSetting:te},null,8,["is-edit","is-set","is-key","show-other-option","exam-answer-relation-type","answer-check-type"])):t.createCommentVNode("v-if",!0)])),_:2},[n.isEdit?{name:"edit",fn:t.withCtx((()=>[t.createElementVNode("div",{class:t.normalizeClass(["flex",[{"margin-bottom":t.unref($)}]])},[S[12]||(S[12]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",x,[t.createVNode(ae,{modelValue:t.unref(U),"onUpdate:modelValue":S[0]||(S[0]=e=>t.isRef(U)?U.value=e:null),type:"textarea",rows:2,placeholder:`【${t.unref(G)}】请输入问题`,disabled:n.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),t.createElementVNode("div",k,[S[13]||(S[13]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"设置:")],-1)),["multiple","sort"].includes(n.type)?(t.openBlock(),t.createBlock(se,{key:0,modelValue:t.unref(M),"onUpdate:modelValue":S[1]||(S[1]=e=>t.isRef(M)?M.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:n.isSave},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(Q),(e=>(t.openBlock(),t.createBlock(oe,{key:e.value,value:e.value,label:e.label},null,8,["value","label"])))),128))])),_:1},8,["modelValue","disabled"])):t.createCommentVNode("v-if",!0)]),t.createElementVNode("div",C,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(L),((e,a)=>(t.openBlock(),t.createElementBlock("div",{key:a,class:"answer-item flex flex-items-center"},[t.createElementVNode("span",w,t.toDisplayString(String.fromCharCode(65+a))+".",1),t.createVNode(ae,{modelValue:e.title,"onUpdate:modelValue":t=>e.title=t,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+a)}`,disabled:n.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(n.type)?(t.openBlock(),t.createBlock(q,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":t=>e.isCorrect=t,class:t.normalizeClass([{"is-correct":e.isCorrect}]),disabled:n.isSave,style:{"margin-left":"10px"},onChange:t=>function(e,t){"single"===R.type?(t&&L.value.forEach((t=>{t!==e&&(t.isCorrect=!1)})),e.isCorrect=t):"multiple"===R.type&&(e.isCorrect=t)}(e,t)},{default:t.withCtx((()=>[...S[14]||(S[14]=[t.createTextVNode(" 支持选项 ")])])),_:2},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):t.createCommentVNode("v-if",!0),t.createVNode(ie,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.CirclePlus),{class:t.normalizeClass([{disabled:n.isSave}]),onClick:J},null,8,["class"])])),_:1}),t.createVNode(ie,{class:"icon"},{default:t.withCtx((()=>[t.createVNode(t.unref(l.Remove),{class:t.normalizeClass([{disabled:t.unref(L).length<3||n.isSave}]),onClick:e=>function(e){L.value.length<3||R.isSave||L.value.splice(e,1)}(a)},null,8,["class","onClick"])])),_:2},1024),1===t.unref(_)&&"sort"!==n.type?(t.openBlock(),t.createBlock(ue,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=a,j.value=t,O.value=L.value[t].resultItem||"",void(P.value=!0);var t}},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.resultItem?"编辑结果":"添加结果"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0),2===t.unref(_)&&"sort"!==n.type?(t.openBlock(),t.createBlock(ue,{key:2,type:"primary",class:"margin-left-10",onClick:t=>function(e){e.customAnswerId=e.examAnswerId||r.setGuid(),T("setRelation",R.customId,e)}(e)},{default:t.withCtx((()=>[t.createElementVNode("span",null,t.toDisplayString(e.answerRelations?.length?`关联了${t.unref(ne)(e.answerRelations)}项`:"关联检查"),1)])),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0)])))),128))]),"sort"===n.type?(t.openBlock(),t.createElementBlock("div",h,[S[15]||(S[15]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"排序答案:")],-1)),t.createElementVNode("div",V,[t.createVNode(se,{modelValue:t.unref(H),"onUpdate:modelValue":S[2]||(S[2]=e=>t.isRef(H)?H.value=e:null),multiple:"",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(L),((e,l)=>(t.openBlock(),t.createBlock(oe,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"])))),128))])),_:1},8,["modelValue"])])])):t.createCommentVNode("v-if",!0),n.showAnalysis?(t.openBlock(),t.createElementBlock("div",g,[S[16]||(S[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",E,[t.createVNode(ae,{modelValue:t.unref(z),"onUpdate:modelValue":S[3]||(S[3]=e=>t.isRef(z)?z.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):t.createCommentVNode("v-if",!0),t.unref($)?(t.openBlock(),t.createElementBlock("div",N,[S[18]||(S[18]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"富文本:")],-1)),t.createElementVNode("div",B,[t.createVNode(s.default,t.mergeProps({"model-value":t.unref(K),"onUpdate:modelValue":S[4]||(S[4]=e=>t.isRef(K)?K.value=e:null)},t.unref(A),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",b,[t.createVNode(ue,{type:"danger",onClick:W},{default:t.withCtx((()=>S[17]||(S[17]=[t.createTextVNode(" 删除富文本 ")]))),_:1})])])])):t.createCommentVNode("v-if",!0)])),key:"0"}:void 0]),1032,["show-edit"]),t.createVNode(de,{modelValue:t.unref(P),"onUpdate:modelValue":S[11]||(S[11]=e=>t.isRef(P)?P.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:t.withCtx((()=>[t.createVNode(ce,{class:"customize-button",type:"primary",plain:"",onClick:Z},{default:t.withCtx((()=>S[19]||(S[19]=[t.createTextVNode(" 取消 ")]))),_:1}),t.createVNode(ce,{class:"customize-button",type:"primary",plain:"",onClick:Y},{default:t.withCtx((()=>S[20]||(S[20]=[t.createTextVNode(" 保存 ")]))),_:1})])),default:t.withCtx((()=>[(t.openBlock(),t.createBlock(s.default,t.mergeProps({key:t.unref(j),"model-value":t.unref(O),"onUpdate:modelValue":S[10]||(S[10]=e=>t.isRef(O)?O.value=e:null)},t.unref(A),{style:{width:"100%"}}),null,16,["model-value"]))])),_:1},8,["modelValue"])],2)}}});exports.default=S;
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es");require("element-plus/es/components/base/style/index"),require("element-plus/es/components/dialog/style/index"),require("element-plus/es/components/button/style/index"),require("element-plus/es/components/link/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/select/style/index"),require("element-plus/es/components/option/style/index"),require("element-plus/es/components/input/style/index"),require("element-plus/es/components/radio/style/index"),require("element-plus/es/components/checkbox/style/index");var t=require("vue"),l=require("@element-plus/icons-vue"),n=require("@qxs-bns/hooks"),r=require("@qxs-bns/utils"),a=require("../../../subject-action/src/subject-action.vue.cjs"),o=require("../../../subject-layout/src/subject-layout.vue.cjs"),s=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");require("element-plus/es/components/message/style/index");const i={class:"preview"},u={class:"title"},c={key:0},d={key:1},m={key:0},p=["innerHTML"],f={class:"preview-answer"},y={class:"order"},v={class:"order"},x={style:{flex:"1"}},k={class:"margin-bottom flex flex-items-center"},C={class:"margin-bottom answer-list"},w={class:"label flex flex-justify-center"},h={key:0,class:"margin-bottom flex flex-items-center"},V={style:{flex:"1"}},g={key:1,class:"flex"},E={style:{flex:"1"}},N={key:2,class:"margin-bottom flex"},B={style:{flex:"1"}},b={class:"flex flex-justify-end"};var S=t.defineComponent({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:Number,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(S,{emit:q}){const R=S,T=q,_=t.useAttrs(),A=t.ref(0),j=t.ref(R.isKey),D=t.ref(1),I=t.ref(R.examAnswerRelationType),L=t.ref([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),M=t.ref(2),U=t.ref(""),z=t.ref(""),$=t.ref(!1),K=t.ref(""),F=t.ref(0),P=t.ref(!1),O=t.ref(""),G=t.computed(()=>"single"===R.type?"单选题":"multiple"===R.type?"多选题":"排序题"),H=t.ref([]),Q=t.computed(()=>{const e=[];for(let t=L.value.length;t>1;t--)e.push({label:`至少选择${t}项`,value:t});return e.reverse()});function J(){R.isSave||L.value.push({title:"",isCorrect:!1,customAnswerId:r.setGuid()})}function W(){$.value=!1,K.value=""}function X(){if(!U.value)return void e.ElMessage.error("题目标题不能为空!");if(!D.value)return void e.ElMessage.error("请选择答题设置");let t="",l=!1,n=0;if("multiple"===R.type||"single"===R.type?L.value.forEach((e,r)=>{e.title?.trim()||(t+=`选项${String.fromCharCode(65+r)}未填写。`),e.isCorrect&&(l=!0,n++),e.relationType=e.resultItem?1:e.answerRelations?.length?2:null}):"sort"===R.type&&H.value.length&&(l=!0),t)return void e.ElMessage.error(t);if(new Set(L.value.map(e=>e.title)).size===L.value.length){if("multiple"===R.type){if(1===n)return void e.ElMessage.error("请至少设置两个支持选项");if(l&&n<M.value)return void e.ElMessage.error("至少选几项与支持选项数不符")}2!==D.value&&3!==D.value||l?T("save",{title:U.value,answers:L.value.map((e,t)=>({...e,orderIndex:t+1})),examExpand:H.value.map(e=>e.charCodeAt(0)-65+1).join(","),analysis:z.value,isSetCorrectAnswer:l,leastAnswerCount:M.value,examRichTextContent:$.value?K.value:"",examAnswerRelationType:I.value,isKey:j.value,answerCheckType:D.value}):e.ElMessage.error("请设置支持选项")}else e.ElMessage.error("选项不能重复")}function Y(){L.value[A.value].resultItem=O.value||"",P.value=!1}function Z(){P.value=!1,O.value=""}function ee(e){j.value=e}function te(e){D.value=e}function le(e,t){T("add",e,t?R.examAnswerRelationType:null)}t.watch(()=>R.isEdit,()=>{R.isEdit&&(F.value=(new Date).getTime())});const ne=t.computed(()=>e=>{let t=0;return e.forEach(e=>{e.relationAnswers&&(t+=e.relationAnswers.length)}),t}),re=n.useNamespace("subject-single");return t.onMounted(function(){if(R.title&&(U.value=R.title),R.answerCheckType&&(D.value=R.answerCheckType),R.isKey&&(j.value=R.isKey),R.examAnswerRelationType&&(I.value=R.examAnswerRelationType),R.answerList&&R.answerList.length&&(L.value=R.answerList),R.leastAnswerCount&&(M.value=R.leastAnswerCount),R.examExpand&&R.examExpand){const e=R.examExpand.split(",");H.value=e.map(e=>{const t=R.answerList.find(t=>t.answerId?.toString()===e);return t?String.fromCharCode(65+t.orderIndex-1):e}).filter(Boolean)}R.analysis&&(z.value=R.analysis),R.examRichTextContent&&(K.value=R.examRichTextContent,$.value=!0)}),(n,S)=>{const q=e.ElCheckbox,F=e.ElRadio,ae=e.ElInput,oe=e.ElOption,se=e.ElSelect,ie=e.ElIcon,ue=e.ElLink,ce=e.ElButton,de=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(re).e("single-exam"))},[t.createVNode(o.default,{"show-edit":n.isEdit},t.createSlots({preview:t.withCtx(()=>[t.createElementVNode("div",i,[t.createElementVNode("div",null,[t.createElementVNode("span",u,[t.createTextVNode(t.toDisplayString(n.orderIndex+1)+"."+t.toDisplayString(t.unref(U))+" ",1),"single"===n.type?(t.openBlock(),t.createElementBlock("span",c,"(单选题)")):["multiple","sort"].includes(n.type)?(t.openBlock(),t.createElementBlock("span",d," ("+t.toDisplayString(t.unref(G))+t.toDisplayString(t.unref(M)?`至少选${t.unref(M)}项${"sort"===n.type?"并排序":""}`:"")+") ",1)):t.createCommentVNode("v-if",!0)])]),t.unref($)?(t.openBlock(),t.createElementBlock("div",m,[t.createElementVNode("div",{class:"rich-text",innerHTML:t.unref(K)},null,8,p)])):t.createCommentVNode("v-if",!0),t.createElementVNode("div",f,["sort"===n.type?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:0},t.renderList(t.unref(L),(e,l)=>(t.openBlock(),t.createBlock(q,{key:l,class:"radio",disabled:!0},{default:t.withCtx(()=>[t.createElementVNode("span",y,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title),1)]),_:2},1024))),128)):(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(t.unref(L),(e,l)=>(t.openBlock(),t.createBlock(F,{key:l,class:"radio",value:"disabled",disabled:""},{default:t.withCtx(()=>[t.createElementVNode("span",v,t.toDisplayString(String.fromCharCode(65+l))+". ",1),t.createTextVNode(" "+t.toDisplayString(e.title)+" "+t.toDisplayString(e.isCorrect?"(支持选项)":"")+" "+t.toDisplayString(1===t.unref(I)?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+t.toDisplayString(2===t.unref(I)?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)]),_:2},1024))),128))])])]),default:t.withCtx(()=>[n.showAction?(t.openBlock(),t.createBlock(a.default,{key:0,"is-edit":n.isEdit,"is-set":n.isSet,"is-key":t.unref(j),"show-other-option":"multiple"===R.type||"single"===R.type,"exam-answer-relation-type":R.examAnswerRelationType,"answer-check-type":t.unref(D),onMoveUp:S[5]||(S[5]=e=>T("move","up")),onMoveDown:S[6]||(S[6]=e=>T("move","down")),onDelete:S[7]||(S[7]=e=>T("delete")),onSave:X,onEdit:S[8]||(S[8]=e=>T("edit")),onAdd:le,onOnShowRichText:S[9]||(S[9]=e=>$.value=!0),onSetKey:ee,onSetAnswerSetting:te},null,8,["is-edit","is-set","is-key","show-other-option","exam-answer-relation-type","answer-check-type"])):t.createCommentVNode("v-if",!0)]),_:2},[n.isEdit?{name:"edit",fn:t.withCtx(()=>[t.createElementVNode("div",{class:t.normalizeClass(["flex",[{"margin-bottom":t.unref($)}]])},[S[12]||(S[12]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"题目:")],-1)),t.createElementVNode("div",x,[t.createVNode(ae,{modelValue:t.unref(U),"onUpdate:modelValue":S[0]||(S[0]=e=>t.isRef(U)?U.value=e:null),type:"textarea",rows:2,placeholder:`【${t.unref(G)}】请输入问题`,disabled:n.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),t.createElementVNode("div",k,[S[13]||(S[13]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"设置:")],-1)),["multiple","sort"].includes(n.type)?(t.openBlock(),t.createBlock(se,{key:0,modelValue:t.unref(M),"onUpdate:modelValue":S[1]||(S[1]=e=>t.isRef(M)?M.value=e:null),style:{width:"150px"},placeholder:"至少选择几项",disabled:n.isSave},{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(Q),e=>(t.openBlock(),t.createBlock(oe,{key:e.value,value:e.value,label:e.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue","disabled"])):t.createCommentVNode("v-if",!0)]),t.createElementVNode("div",C,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(L),(e,a)=>(t.openBlock(),t.createElementBlock("div",{key:a,class:"answer-item flex flex-items-center"},[t.createElementVNode("span",w,t.toDisplayString(String.fromCharCode(65+a))+".",1),t.createVNode(ae,{modelValue:e.title,"onUpdate:modelValue":t=>e.title=t,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+a)}`,disabled:n.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(n.type)?(t.openBlock(),t.createBlock(q,{key:0,modelValue:e.isCorrect,"onUpdate:modelValue":t=>e.isCorrect=t,class:t.normalizeClass([{"is-correct":e.isCorrect}]),disabled:n.isSave,style:{"margin-left":"10px"},onChange:t=>function(e,t){"single"===R.type?(t&&L.value.forEach(t=>{t!==e&&(t.isCorrect=!1)}),e.isCorrect=t):"multiple"===R.type&&(e.isCorrect=t)}(e,t)},{default:t.withCtx(()=>[...S[14]||(S[14]=[t.createTextVNode(" 支持选项 ",-1)])]),_:2,__:[14]},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):t.createCommentVNode("v-if",!0),t.createVNode(ie,{class:"icon"},{default:t.withCtx(()=>[t.createVNode(t.unref(l.CirclePlus),{class:t.normalizeClass([{disabled:n.isSave}]),onClick:J},null,8,["class"])]),_:1}),t.createVNode(ie,{class:"icon"},{default:t.withCtx(()=>[t.createVNode(t.unref(l.Remove),{class:t.normalizeClass([{disabled:t.unref(L).length<3||n.isSave}]),onClick:e=>function(e){L.value.length<3||R.isSave||L.value.splice(e,1)}(a)},null,8,["class","onClick"])]),_:2},1024),1===t.unref(I)&&"sort"!==n.type?(t.openBlock(),t.createBlock(ue,{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return t=a,A.value=t,O.value=L.value[t].resultItem||"",void(P.value=!0);var t}},{default:t.withCtx(()=>[t.createElementVNode("span",null,t.toDisplayString(e.resultItem?"编辑结果":"添加结果"),1)]),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0),2===t.unref(I)&&"sort"!==n.type?(t.openBlock(),t.createBlock(ue,{key:2,type:"primary",class:"margin-left-10",onClick:t=>function(e){e.customAnswerId=e.examAnswerId||r.setGuid(),T("setRelation",R.customId,e)}(e)},{default:t.withCtx(()=>[t.createElementVNode("span",null,t.toDisplayString(e.answerRelations?.length?`关联了${t.unref(ne)(e.answerRelations)}项`:"关联检查"),1)]),_:2},1032,["onClick"])):t.createCommentVNode("v-if",!0)]))),128))]),"sort"===n.type?(t.openBlock(),t.createElementBlock("div",h,[S[15]||(S[15]=t.createElementVNode("div",{class:"label flex flex-justify-end"},[t.createElementVNode("span",null,"排序答案:")],-1)),t.createElementVNode("div",V,[t.createVNode(se,{modelValue:t.unref(H),"onUpdate:modelValue":S[2]||(S[2]=e=>t.isRef(H)?H.value=e:null),multiple:"",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:t.withCtx(()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(L),(e,l)=>(t.openBlock(),t.createBlock(oe,{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])])):t.createCommentVNode("v-if",!0),n.showAnalysis?(t.openBlock(),t.createElementBlock("div",g,[S[16]||(S[16]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"解析:")],-1)),t.createElementVNode("div",E,[t.createVNode(ae,{modelValue:t.unref(z),"onUpdate:modelValue":S[3]||(S[3]=e=>t.isRef(z)?z.value=e:null),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):t.createCommentVNode("v-if",!0),t.unref($)?(t.openBlock(),t.createElementBlock("div",N,[S[18]||(S[18]=t.createElementVNode("div",{class:"label flex flex-justify-center"},[t.createElementVNode("span",null,"富文本:")],-1)),t.createElementVNode("div",B,[t.createVNode(s.default,t.mergeProps({"model-value":t.unref(K),"onUpdate:modelValue":S[4]||(S[4]=e=>t.isRef(K)?K.value=e:null)},t.unref(_),{style:{width:"100%"}}),null,16,["model-value"]),t.createElementVNode("div",b,[t.createVNode(ue,{type:"danger",onClick:W},{default:t.withCtx(()=>S[17]||(S[17]=[t.createTextVNode(" 删除富文本 ",-1)])),_:1,__:[17]})])])])):t.createCommentVNode("v-if",!0)]),key:"0"}:void 0]),1032,["show-edit"]),t.createVNode(de,{modelValue:t.unref(P),"onUpdate:modelValue":S[11]||(S[11]=e=>t.isRef(P)?P.value=e:null),title:"添加结果",class:"customize-dialog"},{footer:t.withCtx(()=>[t.createVNode(ce,{class:"customize-button",type:"primary",plain:"",onClick:Z},{default:t.withCtx(()=>S[19]||(S[19]=[t.createTextVNode(" 取消 ",-1)])),_:1,__:[19]}),t.createVNode(ce,{class:"customize-button",type:"primary",plain:"",onClick:Y},{default:t.withCtx(()=>S[20]||(S[20]=[t.createTextVNode(" 保存 ",-1)])),_:1,__:[20]})]),default:t.withCtx(()=>[(t.openBlock(),t.createBlock(s.default,t.mergeProps({key:t.unref(A),"model-value":t.unref(O),"onUpdate:modelValue":S[10]||(S[10]=e=>t.isRef(O)?O.value=e:null)},t.unref(_),{style:{width:"100%"}}),null,16,["model-value"]))]),_:1},8,["modelValue"])],2)}}});exports.default=S;
|
2
2
|
//# sourceMappingURL=subject-single.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-single.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { setGuid } from '@qxs-bns/utils'\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'\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 }\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\n class=\"rich-text\"\n v-html=\"richText\"\n />\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\n v-if=\"isEdit\"\n #edit\n >\n <div\n class=\"flex\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\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=\"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-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=\"label flex flex-justify-center\">{{ 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\n v-if=\"type === 'sort'\"\n class=\"margin-bottom flex flex-items-center\"\n >\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 <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\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\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 :is-key=\"isKey\"\n :show-other-option=\"props.type === 'multiple' || props.type === 'single'\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :answer-check-type=\"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 @on-show-rich-text=\"showRichText = true\"\n @set-key=\"setKey\"\n @set-answer-setting=\"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 />\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.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { setGuid } from '@qxs-bns/utils'\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'\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 }\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\n class=\"rich-text\"\n v-html=\"richText\"\n />\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\n v-if=\"isEdit\"\n #edit\n >\n <div\n class=\"flex\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\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=\"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-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=\"label flex flex-justify-center\">{{ 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\n v-if=\"type === 'sort'\"\n class=\"margin-bottom flex flex-items-center\"\n >\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 <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\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\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 :is-key=\"isKey\"\n :show-other-option=\"props.type === 'multiple' || props.type === 'single'\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :answer-check-type=\"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 @on-show-rich-text=\"showRichText = true\"\n @set-key=\"setKey\"\n @set-answer-setting=\"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 />\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","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","_createSlots","preview","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","_openBlock","includes","_hoisted_4","_hoisted_5","innerHTML","_hoisted_7","_Fragment","_renderList","_createBlock","_component_el_checkbox","disabled","_hoisted_8","_component_el_radio","_hoisted_9","showAction","SubjectAction","isSet","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText","onSetKey","onSetAnswerSetting","_hoisted_10","_component_el_input","$event","rows","placeholder","maxlength","_hoisted_11","_component_el_select","style","width","_component_el_option","_hoisted_12","_hoisted_13","modelValue","onChange","event","it","setCorrect","_cache","_component_el_icon","CirclePlus","onClick","Remove","splice","deleteAnswer","_component_el_link","onOpenResult","examAnswerId","customId","setRelation","_hoisted_14","_hoisted_15","multiple","showAnalysis","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","TinyMceEditor","_mergeProps","_hoisted_20","_component_el_dialog","footer","_component_el_button","plain"],"mappings":"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"}
|