@qxs-bns/components 0.0.69 → 0.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/es/package.json.mjs +1 -1
  2. package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
  3. package/es/src/data-chart/src/components/area.vue2.mjs.map +1 -1
  4. package/es/src/data-chart/src/components/bar.vue2.mjs.map +1 -1
  5. package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
  6. package/es/src/data-chart/src/components/card.vue2.mjs.map +1 -1
  7. package/es/src/data-chart/src/components/funnel.vue2.mjs.map +1 -1
  8. package/es/src/data-chart/src/components/line.vue2.mjs.map +1 -1
  9. package/es/src/data-chart/src/components/pie.vue2.mjs.map +1 -1
  10. package/es/src/data-chart/src/components/radar.vue2.mjs.map +1 -1
  11. package/es/src/data-chart/src/components/scatter-simple.vue2.mjs.map +1 -1
  12. package/es/src/data-chart/src/components/scatter.vue2.mjs.map +1 -1
  13. package/es/src/data-chart/src/components/table.vue.mjs +1 -1
  14. package/es/src/data-chart/src/components/table.vue.mjs.map +1 -1
  15. package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
  16. package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
  17. package/es/src/data-chart/src/utils/config.mjs +1 -1
  18. package/es/src/data-chart/src/utils/config.mjs.map +1 -1
  19. package/es/src/data-chart/src/utils/mapData.mjs.map +1 -1
  20. package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
  21. package/es/src/data-chart/src/utils/useCharts.mjs.map +1 -1
  22. package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
  23. package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
  24. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +1 -1
  25. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs.map +1 -1
  26. package/es/src/icon/index.mjs +1 -1
  27. package/es/src/icon/index.mjs.map +1 -1
  28. package/es/src/icon/src/icon.vue.mjs +1 -1
  29. package/es/src/icon/src/icon.vue.mjs.map +1 -1
  30. package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
  31. package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
  32. package/es/src/photo-crop-tool/src/composables.mjs.map +1 -1
  33. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +1 -1
  34. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs.map +1 -1
  35. package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
  36. package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
  37. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
  38. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +1 -1
  39. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
  40. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +1 -1
  41. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
  42. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
  43. package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
  44. package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
  45. package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
  46. package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
  47. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
  48. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
  49. package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
  50. package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
  51. package/es/src/subject-type/src/subject-type.vue.mjs +1 -1
  52. package/es/src/subject-type/src/subject-type.vue.mjs.map +1 -1
  53. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
  54. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
  55. package/lib/package.json.cjs +1 -1
  56. package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
  57. package/lib/src/data-chart/src/components/area.vue2.cjs.map +1 -1
  58. package/lib/src/data-chart/src/components/bar.vue2.cjs.map +1 -1
  59. package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
  60. package/lib/src/data-chart/src/components/card.vue2.cjs.map +1 -1
  61. package/lib/src/data-chart/src/components/funnel.vue2.cjs.map +1 -1
  62. package/lib/src/data-chart/src/components/line.vue2.cjs.map +1 -1
  63. package/lib/src/data-chart/src/components/pie.vue2.cjs.map +1 -1
  64. package/lib/src/data-chart/src/components/radar.vue2.cjs.map +1 -1
  65. package/lib/src/data-chart/src/components/scatter-simple.vue2.cjs.map +1 -1
  66. package/lib/src/data-chart/src/components/scatter.vue2.cjs.map +1 -1
  67. package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
  68. package/lib/src/data-chart/src/components/table.vue.cjs.map +1 -1
  69. package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
  70. package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
  71. package/lib/src/data-chart/src/utils/config.cjs +1 -1
  72. package/lib/src/data-chart/src/utils/config.cjs.map +1 -1
  73. package/lib/src/data-chart/src/utils/mapData.cjs.map +1 -1
  74. package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
  75. package/lib/src/data-chart/src/utils/useCharts.cjs.map +1 -1
  76. package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
  77. package/lib/src/file-upload/src/file-upload.vue.cjs.map +1 -1
  78. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +1 -1
  79. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs.map +1 -1
  80. package/lib/src/icon/index.cjs +1 -1
  81. package/lib/src/icon/index.cjs.map +1 -1
  82. package/lib/src/icon/src/icon.vue.cjs +1 -1
  83. package/lib/src/icon/src/icon.vue.cjs.map +1 -1
  84. package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
  85. package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
  86. package/lib/src/photo-crop-tool/src/composables.cjs.map +1 -1
  87. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +1 -1
  88. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs.map +1 -1
  89. package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
  90. package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
  91. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
  92. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +1 -1
  93. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
  94. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +1 -1
  95. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
  96. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
  97. package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
  98. package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
  99. package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
  100. package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
  101. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
  102. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
  103. package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
  104. package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
  105. package/lib/src/subject-type/src/subject-type.vue.cjs +1 -1
  106. package/lib/src/subject-type/src/subject-type.vue.cjs.map +1 -1
  107. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
  108. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
  109. package/package.json +8 -15
  110. package/theme-chalk/index.css +1 -1
  111. package/theme-chalk/index.scss +1 -1
  112. package/theme-chalk/src/common/element-plus.scss +1 -1
  113. package/theme-chalk/src/data-chart/empty.css +1 -1
  114. package/theme-chalk/src/data-chart/empty.scss +3 -3
  115. package/theme-chalk/src/data-chart/index.css +1 -1
  116. package/theme-chalk/src/icon.css +1 -1
  117. package/theme-chalk/src/icon.scss +5 -5
  118. package/theme-chalk/src/image-upload.css +1 -1
  119. package/theme-chalk/src/image-upload.scss +21 -18
  120. package/theme-chalk/src/mixins/config.scss +1 -3
  121. package/theme-chalk/src/mixins/mixins.scss +1 -2
  122. package/theme-chalk/src/normalize.css +1 -1
  123. package/theme-chalk/src/normalize.scss +41 -19
  124. package/theme-chalk/src/photo-crop-tool.css +1 -1
  125. package/theme-chalk/src/photo-crop-tool.scss +7 -7
  126. package/theme-chalk/src/subject-action.css +1 -1
  127. package/theme-chalk/src/subject-action.scss +1 -1
  128. package/types/src/data-chart/index.d.ts +1 -1
  129. package/types/src/data-chart/src/components/area.vue.d.ts.map +1 -1
  130. package/types/src/data-chart/src/components/bar.vue.d.ts.map +1 -1
  131. package/types/src/data-chart/src/components/card.vue.d.ts +2 -2
  132. package/types/src/data-chart/src/components/funnel.vue.d.ts.map +1 -1
  133. package/types/src/data-chart/src/components/line.vue.d.ts.map +1 -1
  134. package/types/src/data-chart/src/components/pie.vue.d.ts.map +1 -1
  135. package/types/src/data-chart/src/components/radar.vue.d.ts.map +1 -1
  136. package/types/src/data-chart/src/components/scatter-simple.vue.d.ts.map +1 -1
  137. package/types/src/data-chart/src/components/scatter.vue.d.ts.map +1 -1
  138. package/types/src/data-chart/src/components/table.vue.d.ts +2 -2
  139. package/types/src/data-chart/src/components/table.vue.d.ts.map +1 -1
  140. package/types/src/data-chart/src/data-chart.vue.d.ts +2 -2
  141. package/types/src/data-chart/src/data-chart.vue.d.ts.map +1 -1
  142. package/types/src/data-chart/src/utils/config.d.ts.map +1 -1
  143. package/types/src/data-chart/src/utils/mapData.d.ts.map +1 -1
  144. package/types/src/data-chart/src/utils/useCharts.d.ts.map +1 -1
  145. package/types/src/file-upload/src/file-upload.vue.d.ts.map +1 -1
  146. package/types/src/fixed-action-bar/index.d.ts +3 -3
  147. package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts +2 -2
  148. package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts.map +1 -1
  149. package/types/src/icon/index.d.ts +2 -2
  150. package/types/src/icon/index.d.ts.map +1 -1
  151. package/types/src/icon/src/icon.vue.d.ts.map +1 -1
  152. package/types/src/image-upload/src/image-upload.vue.d.ts.map +1 -1
  153. package/types/src/photo-crop-tool/index.d.ts +4 -4
  154. package/types/src/photo-crop-tool/src/composables.d.ts.map +1 -1
  155. package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts +2 -2
  156. package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts.map +1 -1
  157. package/types/src/subject-action/index.d.ts +2 -2
  158. package/types/src/subject-action/src/subject-action.vue.d.ts +2 -2
  159. package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
  160. package/types/src/subject-list/index.d.ts +1 -1
  161. package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts.map +1 -1
  162. package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +1 -1
  163. package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +1 -1
  164. package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +1 -1
  165. package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +1 -1
  166. package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +1 -1
  167. package/types/src/subject-list/src/subject-list.vue.d.ts +1 -1
  168. package/types/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
  169. package/types/src/subject-type/src/subject-type.vue.d.ts.map +1 -1
  170. package/types/src/tiny-mce-editor/index.d.ts.map +1 -1
  171. package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts.map +1 -1
  172. package/types/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"photo-crop-tool.vue.cjs","sources":["../../../../../../packages/components/src/photo-crop-tool/src/photo-crop-tool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { useCanvas } from './composables'\n\ndefineOptions({\n name: 'QxsPhotoCropTool',\n})\n\nconst props = defineProps({\n imgFile: {\n type: Object as PropType<File>,\n default: () => null,\n },\n aspectRatio: {\n type: String,\n default: () => '16 / 9',\n },\n defaultWidth: {\n type: Number,\n default: () => 320,\n },\n defaultHeight: {\n type: Number,\n default: () => 180,\n },\n /**\n * free 自由缩放\n * fixed 固定比例缩放\n */\n zoomType: {\n type: String,\n default: () => 'fixed',\n },\n})\nlet startX = 0\nlet startY = 0\nlet startWidth = 0\nlet startHeight = 0\n\nconst ns = useNamespace('photo-crop-tool')\n\nconst cropBoxRef = ref<HTMLElement | null>(null)\nconst containerBoxRef = ref<HTMLElement | null>(null)\nconst imgRef = ref<HTMLImageElement | null>(null)\nconst errorMessage = ref('')\nconst dargPoint = ref('')\nconst initialValue = ref({\n x: 0,\n y: 0,\n})\nconst cropInfo = ref({\n width: props.defaultWidth,\n height: props.defaultHeight,\n x: 0,\n y: 0,\n})\n\nconst { width, height } = useElementSize(cropBoxRef)\nconst { width: imgWidth } = useElementSize(imgRef)\n\nconst { x, y, style } = useDraggable(cropBoxRef, {\n containerElement: containerBoxRef,\n draggingElement: cropBoxRef,\n disabled: computed(() => !!dargPoint.value),\n exact: true,\n initialValue,\n})\n\nconst imageUrl = computed(() => {\n if (!props.imgFile) {\n return ''\n }\n return URL.createObjectURL(props.imgFile)\n})\n\nwatch(\n () => props.imgFile,\n (newFile: File | null) => {\n if (newFile && !newFile.type.startsWith('image/')) {\n errorMessage.value = '文件类型错误'\n }\n else {\n errorMessage.value = ''\n }\n },\n)\n\nconst ratio = computed(() => {\n return (imgRef.value?.naturalWidth || 0) / imgWidth.value\n})\n\nconst customStyle = computed(() => {\n const position = {\n left: 0,\n top: 0,\n }\n if (dargPoint.value === 'bottom-right') {\n position.left = cropInfo.value.x\n position.top = cropInfo.value.y\n }\n else if (dargPoint.value === 'top-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y - height.value\n }\n else if (dargPoint.value === 'top-right') {\n position.top = cropInfo.value.y - height.value\n position.left = cropInfo.value.x\n }\n else if (dargPoint.value === 'bottom-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y\n }\n return position\n})\n\nconst sizeStyle = computed(() => {\n const { aspectRatio } = props\n\n const style: {\n 'height'?: string\n 'width': string\n 'aspect-ratio'?: string\n 'top': string\n 'left': string\n } = {\n 'width': `${cropInfo.value.width || props.defaultWidth}`,\n 'height': `${cropInfo.value.height || props.defaultHeight}`,\n 'aspect-ratio': aspectRatio,\n 'top': `${customStyle.value.top}px`,\n 'left': `${customStyle.value.left}px`,\n }\n if (props.zoomType === 'free') {\n delete style['aspect-ratio']\n }\n else if (props.zoomType === 'fixed') {\n delete style.height\n }\n return ns.cssVarBlock(style)\n})\n\nfunction zoom(pixel: number) {\n return pixel * ratio.value\n}\nasync function crop(img: HTMLImageElement = imgRef.value!) {\n let backgroundColor = 'transparent'\n if (containerBoxRef.value) {\n backgroundColor = window.getComputedStyle(\n containerBoxRef.value,\n ).backgroundColor\n }\n const canvas = document.createElement('canvas')\n canvas.width = zoom(containerBoxRef.value?.clientWidth || 0)\n canvas.height = zoom(containerBoxRef.value?.clientHeight || 0)\n const { drawImage, cropCanvas, drawColor } = useCanvas(canvas)\n drawColor(0, 0, canvas.width, canvas.height, backgroundColor)\n drawImage(\n img,\n zoom(img.offsetLeft),\n zoom(img.offsetTop),\n img.naturalWidth,\n img.naturalHeight,\n )\n return await cropCanvas(\n zoom(x.value),\n zoom(y.value),\n zoom(width.value),\n zoom(height.value),\n )\n}\n\nfunction checkBoundaries(\n newWidth: number,\n newHeight: number,\n): { width: number, height: number } {\n const maxWidth = containerBoxRef.value?.clientWidth || Infinity\n const maxHeight = containerBoxRef.value?.clientHeight || Infinity\n\n return {\n width: Math.min(Math.max(newWidth, 0), maxWidth),\n height: Math.min(Math.max(newHeight, 0), maxHeight),\n }\n}\n\nfunction getClientPos(e: MouseEvent | TouchEvent): { clientX: number, clientY: number } {\n if (e instanceof MouseEvent) {\n return { clientX: e.clientX, clientY: e.clientY }\n }\n else if (e instanceof TouchEvent && e.touches.length > 0) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n return { clientX: 0, clientY: 0 }\n}\n\nfunction handleStart(e: MouseEvent | TouchEvent, point: string) {\n const { clientX, clientY } = getClientPos(e)\n dargPoint.value = point\n startX = clientX\n startY = clientY\n startWidth = cropInfo.value.width\n startHeight = cropInfo.value.height\n\n // 添加移动端事件监听\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n\n if (point === 'bottom-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value\n }\n else if (point === 'top-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'top-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'bottom-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value\n }\n\n // Prevent touch scrolling\n if (e instanceof TouchEvent) {\n e.preventDefault()\n }\n}\n\nfunction handleMove(e: MouseEvent | TouchEvent) {\n // Only prevent default if we're in a drag operation\n if (e instanceof TouchEvent && dargPoint.value) {\n e.preventDefault()\n }\n\n const { clientX, clientY } = getClientPos(e)\n const deltaX = clientX - startX\n const deltaY = clientY - startY\n\n if (dargPoint.value === 'bottom-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n }\n else if (dargPoint.value === 'top-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'top-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'bottom-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n}\n\nfunction handleEnd() {\n // 移除移动端事件监听\n document.removeEventListener('touchmove', handleMove)\n document.removeEventListener('touchend', handleEnd)\n\n dargPoint.value = ''\n}\n\nfunction resize() {\n cropInfo.value.width = props.defaultWidth\n cropInfo.value.height = props.defaultHeight\n x.value = 0\n y.value = 0\n}\n\nonMounted(() => {\n nextTick(() => {\n // 初始化位置\n initialValue.value.x\n = (containerBoxRef.value?.offsetWidth || 0) / 2 - cropInfo.value.width / 2\n initialValue.value.y\n = (containerBoxRef.value?.offsetHeight || 0) / 2\n - cropInfo.value.height / 2\n })\n\n // 只添加鼠标事件监听\n document.addEventListener('mouseup', handleEnd)\n document.addEventListener('mousemove', handleMove, { passive: false })\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n})\n\nonUnmounted(() => {\n if (imageUrl.value) {\n URL.revokeObjectURL(imageUrl.value)\n }\n // 确保移除所有事件监听\n document.removeEventListener('mouseup', handleEnd)\n document.removeEventListener('mousemove', handleMove)\n})\n\ndefineExpose({\n crop,\n resize,\n})\n</script>\n\n<template>\n <div\n ref=\"containerBoxRef\"\n :class=\"[ns.e('img-box')]\"\n >\n <div\n v-if=\"errorMessage\"\n :class=\"[ns.e('error-message')]\"\n >\n {{ errorMessage }}\n </div>\n <template v-else>\n <img\n ref=\"imgRef\"\n :class=\"[ns.e('image')]\"\n :src=\"imageUrl\"\n >\n <div\n ref=\"cropBoxRef\"\n :class=\"[ns.e('crop-tool-box')]\"\n :style=\"[\n sizeStyle,\n dargPoint\n ? `left: ${customStyle.left}px;top: ${customStyle.top}px`\n : style,\n ]\"\n @touchstart.stop.prevent\n @touchend.stop.prevent=\"handleEnd\"\n >\n <div\n :class=\"[ns.e('top-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('top-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n </div>\n </template>\n </div>\n</template>\n"],"names":["props","__props","startX","startY","startWidth","startHeight","ns","useNamespace","cropBoxRef","ref","containerBoxRef","imgRef","errorMessage","dargPoint","initialValue","x","y","cropInfo","width","defaultWidth","height","defaultHeight","useElementSize","imgWidth","style","useDraggable","containerElement","draggingElement","disabled","computed","value","exact","imageUrl","imgFile","URL","createObjectURL","watch","newFile","type","startsWith","ratio","naturalWidth","customStyle","position","left","top","sizeStyle","aspectRatio","zoomType","cssVarBlock","zoom","pixel","checkBoundaries","newWidth","newHeight","maxWidth","clientWidth","Infinity","maxHeight","clientHeight","Math","min","max","getClientPos","e","MouseEvent","clientX","clientY","TouchEvent","touches","length","handleStart","point","document","addEventListener","handleMove","passive","handleEnd","preventDefault","deltaX","deltaY","Number","parseFloat","split","removeEventListener","onMounted","nextTick","offsetWidth","offsetHeight","onUnmounted","revokeObjectURL","__expose","crop","async","img","backgroundColor","window","getComputedStyle","canvas","createElement","drawImage","cropCanvas","drawColor","useCanvas","offsetLeft","offsetTop","naturalHeight","resize","_createElementBlock","class","_normalizeClass","_unref","_Fragment","key","_createElementVNode","src","_normalizeStyle","onTouchstart","onTouchend","onMousedown","_cache","_withModifiers","$event"],"mappings":"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"}
1
+ {"version":3,"file":"photo-crop-tool.vue.cjs","sources":["../../../../../../packages/components/src/photo-crop-tool/src/photo-crop-tool.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { useDraggable, useElementSize } from '@vueuse/core'\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { useCanvas } from './composables'\n\ndefineOptions({\n name: 'QxsPhotoCropTool',\n})\n\nconst props = defineProps({\n imgFile: {\n type: Object as PropType<File>,\n default: () => null,\n },\n aspectRatio: {\n type: String,\n default: () => '16 / 9',\n },\n defaultWidth: {\n type: Number,\n default: () => 320,\n },\n defaultHeight: {\n type: Number,\n default: () => 180,\n },\n /**\n * free 自由缩放\n * fixed 固定比例缩放\n */\n zoomType: {\n type: String,\n default: () => 'fixed',\n },\n})\nlet startX = 0\nlet startY = 0\nlet startWidth = 0\nlet startHeight = 0\n\nconst ns = useNamespace('photo-crop-tool')\n\nconst cropBoxRef = ref<HTMLElement | null>(null)\nconst containerBoxRef = ref<HTMLElement | null>(null)\nconst imgRef = ref<HTMLImageElement | null>(null)\nconst errorMessage = ref('')\nconst dargPoint = ref('')\nconst initialValue = ref({\n x: 0,\n y: 0,\n})\nconst cropInfo = ref({\n width: props.defaultWidth,\n height: props.defaultHeight,\n x: 0,\n y: 0,\n})\n\nconst { width, height } = useElementSize(cropBoxRef)\nconst { width: imgWidth } = useElementSize(imgRef)\n\nconst { x, y, style } = useDraggable(cropBoxRef, {\n containerElement: containerBoxRef,\n draggingElement: cropBoxRef,\n disabled: computed(() => !!dargPoint.value),\n exact: true,\n initialValue,\n})\n\nconst imageUrl = computed(() => {\n if (!props.imgFile) {\n return ''\n }\n return URL.createObjectURL(props.imgFile)\n})\n\nwatch(\n () => props.imgFile,\n (newFile: File | null) => {\n if (newFile && !newFile.type.startsWith('image/')) {\n errorMessage.value = '文件类型错误'\n }\n else {\n errorMessage.value = ''\n }\n },\n)\n\nconst ratio = computed(() => {\n return (imgRef.value?.naturalWidth || 0) / imgWidth.value\n})\n\nconst customStyle = computed(() => {\n const position = {\n left: 0,\n top: 0,\n }\n if (dargPoint.value === 'bottom-right') {\n position.left = cropInfo.value.x\n position.top = cropInfo.value.y\n }\n else if (dargPoint.value === 'top-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y - height.value\n }\n else if (dargPoint.value === 'top-right') {\n position.top = cropInfo.value.y - height.value\n position.left = cropInfo.value.x\n }\n else if (dargPoint.value === 'bottom-left') {\n position.left = cropInfo.value.x - width.value\n position.top = cropInfo.value.y\n }\n return position\n})\n\nconst sizeStyle = computed(() => {\n const { aspectRatio } = props\n\n const style: {\n 'height'?: string\n 'width': string\n 'aspect-ratio'?: string\n 'top': string\n 'left': string\n } = {\n 'width': `${cropInfo.value.width || props.defaultWidth}`,\n 'height': `${cropInfo.value.height || props.defaultHeight}`,\n 'aspect-ratio': aspectRatio,\n 'top': `${customStyle.value.top}px`,\n 'left': `${customStyle.value.left}px`,\n }\n if (props.zoomType === 'free') {\n delete style['aspect-ratio']\n }\n else if (props.zoomType === 'fixed') {\n delete style.height\n }\n return ns.cssVarBlock(style)\n})\n\nfunction zoom(pixel: number) {\n return pixel * ratio.value\n}\nasync function crop(img: HTMLImageElement = imgRef.value!) {\n let backgroundColor = 'transparent'\n if (containerBoxRef.value) {\n backgroundColor = window.getComputedStyle(\n containerBoxRef.value,\n ).backgroundColor\n }\n const canvas = document.createElement('canvas')\n canvas.width = zoom(containerBoxRef.value?.clientWidth || 0)\n canvas.height = zoom(containerBoxRef.value?.clientHeight || 0)\n const { drawImage, cropCanvas, drawColor } = useCanvas(canvas)\n drawColor(0, 0, canvas.width, canvas.height, backgroundColor)\n drawImage(\n img,\n zoom(img.offsetLeft),\n zoom(img.offsetTop),\n img.naturalWidth,\n img.naturalHeight,\n )\n return await cropCanvas(\n zoom(x.value),\n zoom(y.value),\n zoom(width.value),\n zoom(height.value),\n )\n}\n\nfunction checkBoundaries(\n newWidth: number,\n newHeight: number,\n): { width: number, height: number } {\n const maxWidth = containerBoxRef.value?.clientWidth || Infinity\n const maxHeight = containerBoxRef.value?.clientHeight || Infinity\n\n return {\n width: Math.min(Math.max(newWidth, 0), maxWidth),\n height: Math.min(Math.max(newHeight, 0), maxHeight),\n }\n}\n\nfunction getClientPos(e: MouseEvent | TouchEvent): { clientX: number, clientY: number } {\n if (e instanceof MouseEvent) {\n return { clientX: e.clientX, clientY: e.clientY }\n }\n else if (e instanceof TouchEvent && e.touches.length > 0) {\n return { clientX: e.touches[0].clientX, clientY: e.touches[0].clientY }\n }\n return { clientX: 0, clientY: 0 }\n}\n\nfunction handleStart(e: MouseEvent | TouchEvent, point: string) {\n const { clientX, clientY } = getClientPos(e)\n dargPoint.value = point\n startX = clientX\n startY = clientY\n startWidth = cropInfo.value.width\n startHeight = cropInfo.value.height\n\n // 添加移动端事件监听\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n\n if (point === 'bottom-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value\n }\n else if (point === 'top-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'top-right') {\n cropInfo.value.x = x.value\n cropInfo.value.y = y.value + height.value\n }\n else if (point === 'bottom-left') {\n cropInfo.value.x = x.value + width.value\n cropInfo.value.y = y.value\n }\n\n // Prevent touch scrolling\n if (e instanceof TouchEvent) {\n e.preventDefault()\n }\n}\n\nfunction handleMove(e: MouseEvent | TouchEvent) {\n // Only prevent default if we're in a drag operation\n if (e instanceof TouchEvent && dargPoint.value) {\n e.preventDefault()\n }\n\n const { clientX, clientY } = getClientPos(e)\n const deltaX = clientX - startX\n const deltaY = clientY - startY\n\n if (dargPoint.value === 'bottom-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n }\n else if (dargPoint.value === 'top-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'top-right') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth + deltaX,\n startHeight - deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth + deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n else if (dargPoint.value === 'bottom-left') {\n if (props.zoomType === 'free') {\n const { width, height } = checkBoundaries(\n startWidth - deltaX,\n startHeight + deltaY,\n )\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n else if (props.zoomType === 'fixed') {\n const aspectRatio\n = Number.parseFloat(props.aspectRatio.split(' / ')[0])\n / Number.parseFloat(props.aspectRatio.split(' / ')[1])\n let newWidth = startWidth - deltaX\n let newHeight = newWidth / aspectRatio\n const { width, height } = checkBoundaries(newWidth, newHeight)\n if (height > (containerBoxRef.value?.clientHeight || Infinity)) {\n newHeight = containerBoxRef.value?.clientHeight || Infinity\n newWidth = newHeight * aspectRatio\n }\n cropInfo.value.width = width\n cropInfo.value.height = height\n }\n x.value = customStyle.value.left\n y.value = customStyle.value.top\n }\n}\n\nfunction handleEnd() {\n // 移除移动端事件监听\n document.removeEventListener('touchmove', handleMove)\n document.removeEventListener('touchend', handleEnd)\n\n dargPoint.value = ''\n}\n\nfunction resize() {\n cropInfo.value.width = props.defaultWidth\n cropInfo.value.height = props.defaultHeight\n x.value = 0\n y.value = 0\n}\n\nonMounted(() => {\n nextTick(() => {\n // 初始化位置\n initialValue.value.x\n = (containerBoxRef.value?.offsetWidth || 0) / 2 - cropInfo.value.width / 2\n initialValue.value.y\n = (containerBoxRef.value?.offsetHeight || 0) / 2\n - cropInfo.value.height / 2\n })\n\n // 只添加鼠标事件监听\n document.addEventListener('mouseup', handleEnd)\n document.addEventListener('mousemove', handleMove, { passive: false })\n document.addEventListener('touchmove', handleMove, { passive: false })\n document.addEventListener('touchend', handleEnd)\n})\n\nonUnmounted(() => {\n if (imageUrl.value) {\n URL.revokeObjectURL(imageUrl.value)\n }\n // 确保移除所有事件监听\n document.removeEventListener('mouseup', handleEnd)\n document.removeEventListener('mousemove', handleMove)\n})\n\ndefineExpose({\n crop,\n resize,\n})\n</script>\n\n<template>\n <div\n ref=\"containerBoxRef\"\n :class=\"[ns.e('img-box')]\"\n >\n <div\n v-if=\"errorMessage\"\n :class=\"[ns.e('error-message')]\"\n >\n {{ errorMessage }}\n </div>\n <template v-else>\n <img\n ref=\"imgRef\"\n :class=\"[ns.e('image')]\"\n :src=\"imageUrl\"\n >\n <div\n ref=\"cropBoxRef\"\n :class=\"[ns.e('crop-tool-box')]\"\n :style=\"[\n sizeStyle,\n dargPoint\n ? `left: ${customStyle.left}px;top: ${customStyle.top}px`\n : style,\n ]\"\n @touchstart.stop.prevent\n @touchend.stop.prevent=\"handleEnd\"\n >\n <div\n :class=\"[ns.e('top-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('top-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'top-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-right')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-right')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n <div\n :class=\"[ns.e('bottom-left')]\"\n @mousedown.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchstart.stop.prevent=\"handleStart($event, 'bottom-left')\"\n @touchend.stop.prevent=\"handleEnd\"\n />\n </div>\n </template>\n </div>\n</template>\n"],"names":["props","__props","startX","startY","startWidth","startHeight","ns","useNamespace","cropBoxRef","ref","containerBoxRef","imgRef","errorMessage","dargPoint","initialValue","x","y","cropInfo","width","defaultWidth","height","defaultHeight","useElementSize","imgWidth","style","useDraggable","containerElement","draggingElement","disabled","computed","value","exact","imageUrl","imgFile","URL","createObjectURL","watch","newFile","type","startsWith","ratio","naturalWidth","customStyle","position","left","top","sizeStyle","aspectRatio","zoomType","cssVarBlock","zoom","pixel","checkBoundaries","newWidth","newHeight","maxWidth","clientWidth","Infinity","maxHeight","clientHeight","Math","min","max","getClientPos","e","MouseEvent","clientX","clientY","TouchEvent","touches","length","handleStart","point","document","addEventListener","handleMove","passive","handleEnd","preventDefault","deltaX","deltaY","Number","parseFloat","split","removeEventListener","onMounted","nextTick","offsetWidth","offsetHeight","onUnmounted","revokeObjectURL","__expose","crop","async","img","backgroundColor","window","getComputedStyle","canvas","createElement","drawImage","cropCanvas","drawColor","useCanvas","offsetLeft","offsetTop","naturalHeight","resize","_createElementBlock","class","_normalizeClass","_unref","_Fragment","key","_createElementVNode","src","_normalizeStyle","onTouchstart","onTouchend","onMousedown","_cache","_withModifiers","$event"],"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/radio-group/style/index"),require("element-plus/es/components/radio/style/index"),require("element-plus/es/components/button/style/index"),require("element-plus/es/components/icon/style/index"),require("element-plus/es/components/checkbox/style/index"),require("element-plus/es/components/popover/style/index"),require("element-plus/es/components/link/style/index");var t=require("vue"),l=require("@element-plus/icons-vue"),o=require("@qxs-bns/hooks"),a=require("../../subject-type/src/subject-type.vue.cjs");const n={key:0,class:"flex-justify-between"},c={class:"flex-justify-between"},r={key:0,class:"has-set"},i={key:1,class:"flex flex-justify-end action-buttons"};var u=t.defineComponent({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit:Boolean,isSet:{type:Boolean,default:!1},isKey:{type:Boolean,default:!1},answerCheckType:{type:Number,default:1},showOtherOption:{type:Boolean,default:!0},examAnswerRelationType:{type:Number,default:null},showRichText:{type:Boolean,default:!0},pageEnd:{type:Boolean,default:!1}},emits:["moveUp","moveDown","delete","save","edit","add","onShowRichText","setKey","setAnswerSetting"],setup(u,{emit:s}){const d=u,m=s,p=t.ref(d.isKey),f=t.ref(!1),x=t.ref(d.answerCheckType),V=o.useNamespace("subject-action"),k=t.ref(!0),y=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],C=t.computed(()=>y.find(e=>e.value===x.value)?.label);function h(){f.value=!1,m("setAnswerSetting",x.value)}function v(){m("setKey",p.value)}function N(e,t){m("add",e,t?d.examAnswerRelationType:null)}return(o,s)=>{const d=e.ElLink,w=e.ElPopover,_=e.ElCheckbox,B=e.ElIcon,b=e.ElButton,E=e.ElRadio,g=e.ElRadioGroup,T=e.ElDialog;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(V).e("action-exam"))},[t.createElementVNode("div",{class:t.normalizeClass(["action flex flex-justify-between",{active:u.isEdit}])},[t.createCommentVNode(" 编辑模式 "),u.isEdit?(t.openBlock(),t.createElementBlock("div",n,[t.createVNode(w,{trigger:"click"},{reference:t.withCtx(()=>[t.createVNode(d,{type:"primary",class:"btn-margin"},{default:t.withCtx(()=>s[15]||(s[15]=[t.createTextVNode(" +在此题后加入新题 ",-1)])),_:1,__:[15]})]),default:t.withCtx(()=>[t.createVNode(a.default,{onSelect:N})]),_:1}),u.showRichText?(t.openBlock(),t.createBlock(d,{key:0,type:"primary",class:"btn-margin",onClick:s[0]||(s[0]=e=>m("onShowRichText"))},{default:t.withCtx(()=>s[16]||(s[16]=[t.createTextVNode(" +添加题目描述(图文) ",-1)])),_:1,__:[16]})):t.createCommentVNode("v-if",!0),u.showOtherOption?(t.openBlock(),t.createBlock(d,{key:1,type:"primary",class:"btn-margin",onClick:s[1]||(s[1]=e=>f.value=!0)},{default:t.withCtx(()=>s[17]||(s[17]=[t.createTextVNode(" 答题设置 ",-1)])),_:1,__:[17]})):t.createCommentVNode("v-if",!0),u.showOtherOption?(t.openBlock(),t.createBlock(_,{key:2,modelValue:t.unref(p),"onUpdate:modelValue":s[2]||(s[2]=e=>t.isRef(p)?p.value=e:null),label:"核心题",onChange:v},null,8,["modelValue"])):t.createCommentVNode("v-if",!0)])):(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createCommentVNode(" 非编辑模式 "),t.createElementVNode("div",c,[u.showOtherOption?(t.openBlock(),t.createBlock(_,{key:0,modelValue:t.unref(p),"onUpdate:modelValue":s[3]||(s[3]=e=>t.isRef(p)?p.value=e:null),label:"核心题",disabled:""},null,8,["modelValue"])):t.createCommentVNode("v-if",!0),u.showOtherOption?(t.openBlock(),t.createBlock(_,{key:1,modelValue:t.unref(k),"onUpdate:modelValue":s[4]||(s[4]=e=>t.isRef(k)?k.value=e:null),label:t.unref(C),disabled:"",class:"btn-margin"},null,8,["modelValue","label"])):t.createCommentVNode("v-if",!0)])],2112)),t.createCommentVNode(" 操作按钮 "),t.createElementVNode("div",null,[u.isSet?(t.openBlock(),t.createElementBlock("div",r," *此题设置了跳题逻辑 ")):(t.openBlock(),t.createElementBlock("div",i,[u.isEdit?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[t.createVNode(b,{class:"btn-margin",onClick:s[9]||(s[9]=e=>m("delete"))},{default:t.withCtx(()=>s[22]||(s[22]=[t.createTextVNode(" 删除 ",-1)])),_:1,__:[22]}),t.createVNode(b,{type:"primary",onClick:s[10]||(s[10]=e=>m("save"))},{default:t.withCtx(()=>s[23]||(s[23]=[t.createTextVNode(" 完成编辑 ",-1)])),_:1,__:[23]})],64)):(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[u.pageEnd?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createBlock(b,{key:0,onClick:s[5]||(s[5]=e=>m("edit"))},{icon:t.withCtx(()=>[t.createVNode(B,null,{default:t.withCtx(()=>[t.createVNode(t.unref(l.Edit))]),_:1})]),default:t.withCtx(()=>[s[18]||(s[18]=t.createTextVNode(" 编辑 ",-1))]),_:1,__:[18]})),t.createVNode(b,{onClick:s[6]||(s[6]=e=>m("delete"))},{icon:t.withCtx(()=>[t.createVNode(B,null,{default:t.withCtx(()=>[t.createVNode(t.unref(l.Delete))]),_:1})]),default:t.withCtx(()=>[s[19]||(s[19]=t.createTextVNode(" 删除 ",-1))]),_:1,__:[19]}),t.createVNode(b,{onClick:s[7]||(s[7]=e=>m("moveUp"))},{icon:t.withCtx(()=>[t.createVNode(B,null,{default:t.withCtx(()=>[t.createVNode(t.unref(l.Top))]),_:1})]),default:t.withCtx(()=>[s[20]||(s[20]=t.createTextVNode(" 上移 ",-1))]),_:1,__:[20]}),t.createVNode(b,{onClick:s[8]||(s[8]=e=>m("moveDown"))},{icon:t.withCtx(()=>[t.createVNode(B,null,{default:t.withCtx(()=>[t.createVNode(t.unref(l.Bottom))]),_:1})]),default:t.withCtx(()=>[s[21]||(s[21]=t.createTextVNode(" 下移 ",-1))]),_:1,__:[21]})],64))]))]),t.createCommentVNode(" 答题设置弹窗 "),t.createVNode(T,{modelValue:t.unref(f),"onUpdate:modelValue":s[13]||(s[13]=e=>t.isRef(f)?f.value=e:null),title:"答题设置",class:"customize-dialog",onClose:s[14]||(s[14]=e=>f.value=!1)},{footer:t.withCtx(()=>[t.createVNode(b,{class:"customize-button",type:"primary",plain:"",onClick:s[12]||(s[12]=e=>f.value=!1)},{default:t.withCtx(()=>s[24]||(s[24]=[t.createTextVNode(" 取消 ",-1)])),_:1,__:[24]}),t.createVNode(b,{class:"customize-button",type:"primary",plain:"",onClick:h},{default:t.withCtx(()=>s[25]||(s[25]=[t.createTextVNode(" 保存 ",-1)])),_:1,__:[25]})]),default:t.withCtx(()=>[t.createVNode(g,{modelValue:t.unref(x),"onUpdate:modelValue":s[11]||(s[11]=e=>t.isRef(x)?x.value=e:null),class:"vertical-radio-group"},{default:t.withCtx(()=>[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(y,e=>t.createVNode(E,{key:e.value,value:e.value},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])],2)],2)}}});exports.default=u;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@element-plus/icons-vue"),o=require("@qxs-bns/hooks"),l=require("../../subject-type/src/subject-type.vue.cjs");const a={key:0,class:"flex-justify-between"},n={class:"flex-justify-between"},c={key:0,class:"has-set"},r={key:1,class:"flex flex-justify-end action-buttons"};var i=e.defineComponent({name:"QxsSubjectAction",__name:"subject-action",props:{isEdit:Boolean,isSet:{type:Boolean,default:!1},isKey:{type:Boolean,default:!1},answerCheckType:{type:Number,default:1},showOtherOption:{type:Boolean,default:!0},examAnswerRelationType:{type:Number,default:null},showRichText:{type:Boolean,default:!0},pageEnd:{type:Boolean,default:!1}},emits:["moveUp","moveDown","delete","save","edit","add","onShowRichText","setKey","setAnswerSetting"],setup(i,{emit:d}){const u=i,s=d,m=e.ref(u.isKey),p=e.ref(!1),v=e.ref(u.answerCheckType),f=o.useNamespace("subject-action"),V=e.ref(!0),C=[{value:2,label:"必须全部都是支持选项,方可下一步"},{value:1,label:"无需判断是否是支持选项"},{value:3,label:"包含全部支持选项,即可下一步"}],k=e.computed(()=>C.find(e=>e.value===v.value)?.label);function x(){p.value=!1,s("setAnswerSetting",v.value)}function h(){s("setKey",m.value)}function N(e,t){s("add",e,t?u.examAnswerRelationType:null)}return(o,d)=>{const u=e.resolveComponent("el-link"),y=e.resolveComponent("el-popover"),w=e.resolveComponent("el-checkbox"),_=e.resolveComponent("el-icon"),B=e.resolveComponent("el-button"),b=e.resolveComponent("el-radio"),g=e.resolveComponent("el-radio-group"),T=e.resolveComponent("el-dialog");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(f).e("action-exam"))},[e.createElementVNode("div",{class:e.normalizeClass(["action flex flex-justify-between",{active:i.isEdit}])},[e.createCommentVNode(" 编辑模式 "),i.isEdit?(e.openBlock(),e.createElementBlock("div",a,[e.createVNode(y,{trigger:"click"},{reference:e.withCtx(()=>[e.createVNode(u,{type:"primary",class:"btn-margin"},{default:e.withCtx(()=>d[15]||(d[15]=[e.createTextVNode(" +在此题后加入新题 ",-1)])),_:1,__:[15]})]),default:e.withCtx(()=>[e.createVNode(l.default,{onSelect:N})]),_:1}),i.showRichText?(e.openBlock(),e.createBlock(u,{key:0,type:"primary",class:"btn-margin",onClick:d[0]||(d[0]=e=>s("onShowRichText"))},{default:e.withCtx(()=>d[16]||(d[16]=[e.createTextVNode(" +添加题目描述(图文) ",-1)])),_:1,__:[16]})):e.createCommentVNode("v-if",!0),i.showOtherOption?(e.openBlock(),e.createBlock(u,{key:1,type:"primary",class:"btn-margin",onClick:d[1]||(d[1]=e=>p.value=!0)},{default:e.withCtx(()=>d[17]||(d[17]=[e.createTextVNode(" 答题设置 ",-1)])),_:1,__:[17]})):e.createCommentVNode("v-if",!0),i.showOtherOption?(e.openBlock(),e.createBlock(w,{key:2,modelValue:m.value,"onUpdate:modelValue":d[2]||(d[2]=e=>m.value=e),label:"核心题",onChange:h},null,8,["modelValue"])):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createCommentVNode(" 非编辑模式 "),e.createElementVNode("div",n,[i.showOtherOption?(e.openBlock(),e.createBlock(w,{key:0,modelValue:m.value,"onUpdate:modelValue":d[3]||(d[3]=e=>m.value=e),label:"核心题",disabled:""},null,8,["modelValue"])):e.createCommentVNode("v-if",!0),i.showOtherOption?(e.openBlock(),e.createBlock(w,{key:1,modelValue:V.value,"onUpdate:modelValue":d[4]||(d[4]=e=>V.value=e),label:k.value,disabled:"",class:"btn-margin"},null,8,["modelValue","label"])):e.createCommentVNode("v-if",!0)])],2112)),e.createCommentVNode(" 操作按钮 "),e.createElementVNode("div",null,[i.isSet?(e.openBlock(),e.createElementBlock("div",c," *此题设置了跳题逻辑 ")):(e.openBlock(),e.createElementBlock("div",r,[i.isEdit?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(B,{class:"btn-margin",onClick:d[9]||(d[9]=e=>s("delete"))},{default:e.withCtx(()=>d[22]||(d[22]=[e.createTextVNode(" 删除 ",-1)])),_:1,__:[22]}),e.createVNode(B,{type:"primary",onClick:d[10]||(d[10]=e=>s("save"))},{default:e.withCtx(()=>d[23]||(d[23]=[e.createTextVNode(" 完成编辑 ",-1)])),_:1,__:[23]})],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[i.pageEnd?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(B,{key:0,onClick:d[5]||(d[5]=e=>s("edit"))},{icon:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createVNode(e.unref(t.Edit))]),_:1})]),default:e.withCtx(()=>[d[18]||(d[18]=e.createTextVNode(" 编辑 ",-1))]),_:1,__:[18]})),e.createVNode(B,{onClick:d[6]||(d[6]=e=>s("delete"))},{icon:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createVNode(e.unref(t.Delete))]),_:1})]),default:e.withCtx(()=>[d[19]||(d[19]=e.createTextVNode(" 删除 ",-1))]),_:1,__:[19]}),e.createVNode(B,{onClick:d[7]||(d[7]=e=>s("moveUp"))},{icon:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createVNode(e.unref(t.Top))]),_:1})]),default:e.withCtx(()=>[d[20]||(d[20]=e.createTextVNode(" 上移 ",-1))]),_:1,__:[20]}),e.createVNode(B,{onClick:d[8]||(d[8]=e=>s("moveDown"))},{icon:e.withCtx(()=>[e.createVNode(_,null,{default:e.withCtx(()=>[e.createVNode(e.unref(t.Bottom))]),_:1})]),default:e.withCtx(()=>[d[21]||(d[21]=e.createTextVNode(" 下移 ",-1))]),_:1,__:[21]})],64))]))]),e.createCommentVNode(" 答题设置弹窗 "),e.createVNode(T,{modelValue:p.value,"onUpdate:modelValue":d[13]||(d[13]=e=>p.value=e),title:"答题设置",class:"customize-dialog",onClose:d[14]||(d[14]=e=>p.value=!1)},{footer:e.withCtx(()=>[e.createVNode(B,{class:"customize-button",type:"primary",plain:"",onClick:d[12]||(d[12]=e=>p.value=!1)},{default:e.withCtx(()=>d[24]||(d[24]=[e.createTextVNode(" 取消 ",-1)])),_:1,__:[24]}),e.createVNode(B,{class:"customize-button",type:"primary",plain:"",onClick:x},{default:e.withCtx(()=>d[25]||(d[25]=[e.createTextVNode(" 保存 ",-1)])),_:1,__:[25]})]),default:e.withCtx(()=>[e.createVNode(g,{modelValue:v.value,"onUpdate:modelValue":d[11]||(d[11]=e=>v.value=e),class:"vertical-radio-group"},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(C,t=>e.createVNode(b,{key:t.value,value:t.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])],2)],2)}}});exports.default=i;
2
2
  //# sourceMappingURL=subject-action.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-action.vue.cjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bottom, Delete, Edit, Top } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectType from '../../subject-type/src/subject-type.vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\n\nconst props = defineProps({\n isEdit: Boolean,\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1,\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null,\n },\n showRichText: {\n type: Boolean,\n default: true,\n },\n pageEnd: {\n type: Boolean,\n default: false,\n },\n})\n\nconst emits = defineEmits([\n 'moveUp',\n 'moveDown',\n 'delete',\n 'save',\n 'edit',\n 'add',\n 'onShowRichText',\n 'setKey',\n 'setAnswerSetting',\n])\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\nconst checked = ref(true)\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步',\n },\n {\n value: 1,\n label: '无需判断是否是支持选项',\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步',\n },\n]\n\nconst answerText = computed(() => {\n return answerTextList.find(item => item.value === answerType.value)?.label\n})\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType.value)\n}\n\nfunction setKey() {\n emits('setKey', isKey.value)\n}\n\nfunction selectExam(type: string, canSet: boolean) {\n emits('add', type, canSet ? props.examAnswerRelationType : null)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div\n class=\"action flex flex-justify-between\"\n :class=\"{ active: isEdit }\"\n >\n <!-- 编辑模式 -->\n <div\n v-if=\"isEdit\"\n class=\"flex-justify-between\"\n >\n <el-popover trigger=\"click\">\n <template #reference>\n <el-link\n type=\"primary\"\n class=\"btn-margin\"\n >\n +在此题后加入新题\n </el-link>\n </template>\n <SubjectType @select=\"selectExam\" />\n </el-popover>\n <el-link\n v-if=\"showRichText\"\n type=\"primary\"\n class=\"btn-margin\"\n @click=\"emits('onShowRichText')\"\n >\n +添加题目描述(图文)\n </el-link>\n <el-link\n v-if=\"showOtherOption\"\n type=\"primary\"\n class=\"btn-margin\"\n @click=\"showAnswerSetting = true\"\n >\n 答题设置\n </el-link>\n <el-checkbox\n v-if=\"showOtherOption\"\n v-model=\"isKey\"\n label=\"核心题\"\n @change=\"setKey\"\n />\n </div>\n\n <!-- 非编辑模式 -->\n <div\n v-else\n class=\"flex-justify-between\"\n >\n <el-checkbox\n v-if=\"showOtherOption\"\n v-model=\"isKey\"\n label=\"核心题\"\n disabled\n />\n <el-checkbox\n v-if=\"showOtherOption\"\n v-model=\"checked\"\n :label=\"answerText\"\n disabled\n class=\"btn-margin\"\n />\n </div>\n\n <!-- 操作按钮 -->\n <div>\n <div\n v-if=\"isSet\"\n class=\"has-set\"\n >\n *此题设置了跳题逻辑\n </div>\n <div\n v-else\n class=\"flex flex-justify-end action-buttons\"\n >\n <template v-if=\"!isEdit\">\n <el-button\n v-if=\"!pageEnd\"\n @click=\"emits('edit')\"\n >\n <template #icon>\n <el-icon><Edit /></el-icon>\n </template>\n 编辑\n </el-button>\n <el-button @click=\"emits('delete')\">\n <template #icon>\n <el-icon><Delete /></el-icon>\n </template>\n 删除\n </el-button>\n <el-button @click=\"emits('moveUp')\">\n <template #icon>\n <el-icon><Top /></el-icon>\n </template>\n 上移\n </el-button>\n <el-button @click=\"emits('moveDown')\">\n <template #icon>\n <el-icon><Bottom /></el-icon>\n </template>\n 下移\n </el-button>\n </template>\n <template v-else>\n <el-button\n class=\"btn-margin\"\n @click=\"emits('delete')\"\n >\n 删除\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"emits('save')\"\n >\n 完成编辑\n </el-button>\n </template>\n </div>\n </div>\n\n <!-- 答题设置弹窗 -->\n <el-dialog\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n @close=\"showAnswerSetting = false\"\n >\n <el-radio-group\n v-model=\"answerType\"\n class=\"vertical-radio-group\"\n >\n <el-radio\n v-for=\"item in answerTextList\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </el-radio>\n </el-radio-group>\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"showAnswerSetting = false\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveSetting\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","isKey","ref","showAnswerSetting","answerType","answerCheckType","ns","useNamespace","checked","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","setKey","selectExam","type","canSet","examAnswerRelationType","_createElementBlock","class","_normalizeClass","_unref","e","_createElementVNode","active","isEdit","_createCommentVNode","_openBlock","_hoisted_1","_createVNode","_component_el_popover","trigger","reference","_component_el_link","_cache","SubjectType","onSelect","showRichText","_createBlock","onClick","showOtherOption","_component_el_checkbox","$event","onChange","_Fragment","key","_hoisted_2","disabled","isSet","_hoisted_3","_hoisted_4","_component_el_button","pageEnd","icon","_component_el_icon","Edit","Delete","Top","Bottom","_component_el_dialog","title","onClose","footer","plain","_component_el_radio_group","_renderList","_component_el_radio","_createTextVNode","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"subject-action.vue.cjs","sources":["../../../../../../packages/components/src/subject-action/src/subject-action.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bottom, Delete, Edit, Top } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { computed, ref } from 'vue'\nimport SubjectType from '../../subject-type/src/subject-type.vue'\n\ndefineOptions({\n name: 'QxsSubjectAction',\n})\n\nconst props = defineProps({\n isEdit: Boolean,\n isSet: {\n type: Boolean,\n default: false,\n },\n isKey: {\n type: Boolean,\n default: false,\n },\n answerCheckType: {\n type: Number,\n default: 1,\n },\n showOtherOption: {\n type: Boolean,\n default: true,\n },\n examAnswerRelationType: {\n type: Number,\n default: null,\n },\n showRichText: {\n type: Boolean,\n default: true,\n },\n pageEnd: {\n type: Boolean,\n default: false,\n },\n})\n\nconst emits = defineEmits([\n 'moveUp',\n 'moveDown',\n 'delete',\n 'save',\n 'edit',\n 'add',\n 'onShowRichText',\n 'setKey',\n 'setAnswerSetting',\n])\nconst isKey = ref(props.isKey)\nconst showAnswerSetting = ref(false)\nconst answerType = ref(props.answerCheckType)\nconst ns = useNamespace('subject-action')\nconst checked = ref(true)\nconst answerTextList = [\n {\n value: 2,\n label: '必须全部都是支持选项,方可下一步',\n },\n {\n value: 1,\n label: '无需判断是否是支持选项',\n },\n {\n value: 3,\n label: '包含全部支持选项,即可下一步',\n },\n]\n\nconst answerText = computed(() => {\n return answerTextList.find(item => item.value === answerType.value)?.label\n})\n\nfunction onSaveSetting() {\n showAnswerSetting.value = false\n emits('setAnswerSetting', answerType.value)\n}\n\nfunction setKey() {\n emits('setKey', isKey.value)\n}\n\nfunction selectExam(type: string, canSet: boolean) {\n emits('add', type, canSet ? props.examAnswerRelationType : null)\n}\n</script>\n\n<template>\n <div :class=\"ns.e('action-exam')\">\n <div\n class=\"action flex flex-justify-between\"\n :class=\"{ active: isEdit }\"\n >\n <!-- 编辑模式 -->\n <div\n v-if=\"isEdit\"\n class=\"flex-justify-between\"\n >\n <el-popover trigger=\"click\">\n <template #reference>\n <el-link\n type=\"primary\"\n class=\"btn-margin\"\n >\n +在此题后加入新题\n </el-link>\n </template>\n <SubjectType @select=\"selectExam\" />\n </el-popover>\n <el-link\n v-if=\"showRichText\"\n type=\"primary\"\n class=\"btn-margin\"\n @click=\"emits('onShowRichText')\"\n >\n +添加题目描述(图文)\n </el-link>\n <el-link\n v-if=\"showOtherOption\"\n type=\"primary\"\n class=\"btn-margin\"\n @click=\"showAnswerSetting = true\"\n >\n 答题设置\n </el-link>\n <el-checkbox\n v-if=\"showOtherOption\"\n v-model=\"isKey\"\n label=\"核心题\"\n @change=\"setKey\"\n />\n </div>\n\n <!-- 非编辑模式 -->\n <div\n v-else\n class=\"flex-justify-between\"\n >\n <el-checkbox\n v-if=\"showOtherOption\"\n v-model=\"isKey\"\n label=\"核心题\"\n disabled\n />\n <el-checkbox\n v-if=\"showOtherOption\"\n v-model=\"checked\"\n :label=\"answerText\"\n disabled\n class=\"btn-margin\"\n />\n </div>\n\n <!-- 操作按钮 -->\n <div>\n <div\n v-if=\"isSet\"\n class=\"has-set\"\n >\n *此题设置了跳题逻辑\n </div>\n <div\n v-else\n class=\"flex flex-justify-end action-buttons\"\n >\n <template v-if=\"!isEdit\">\n <el-button\n v-if=\"!pageEnd\"\n @click=\"emits('edit')\"\n >\n <template #icon>\n <el-icon><Edit /></el-icon>\n </template>\n 编辑\n </el-button>\n <el-button @click=\"emits('delete')\">\n <template #icon>\n <el-icon><Delete /></el-icon>\n </template>\n 删除\n </el-button>\n <el-button @click=\"emits('moveUp')\">\n <template #icon>\n <el-icon><Top /></el-icon>\n </template>\n 上移\n </el-button>\n <el-button @click=\"emits('moveDown')\">\n <template #icon>\n <el-icon><Bottom /></el-icon>\n </template>\n 下移\n </el-button>\n </template>\n <template v-else>\n <el-button\n class=\"btn-margin\"\n @click=\"emits('delete')\"\n >\n 删除\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"emits('save')\"\n >\n 完成编辑\n </el-button>\n </template>\n </div>\n </div>\n\n <!-- 答题设置弹窗 -->\n <el-dialog\n v-model=\"showAnswerSetting\"\n title=\"答题设置\"\n class=\"customize-dialog\"\n @close=\"showAnswerSetting = false\"\n >\n <el-radio-group\n v-model=\"answerType\"\n class=\"vertical-radio-group\"\n >\n <el-radio\n v-for=\"item in answerTextList\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </el-radio>\n </el-radio-group>\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"showAnswerSetting = false\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveSetting\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","isKey","ref","showAnswerSetting","answerType","answerCheckType","ns","useNamespace","checked","answerTextList","value","label","answerText","computed","find","item","onSaveSetting","setKey","selectExam","type","canSet","examAnswerRelationType","_createElementBlock","class","_normalizeClass","_unref","e","_createElementVNode","active","isEdit","_createCommentVNode","_openBlock","_hoisted_1","_createVNode","_component_el_popover","trigger","reference","_component_el_link","_cache","SubjectType","onSelect","showRichText","_createBlock","onClick","showOtherOption","_component_el_checkbox","$event","onChange","_Fragment","key","_hoisted_2","disabled","isSet","_hoisted_3","_hoisted_4","_component_el_button","pageEnd","icon","_component_el_icon","Edit","Delete","Top","Bottom","_component_el_dialog","title","onClose","footer","plain","_component_el_radio_group","_renderList","_component_el_radio","_createTextVNode","_toDisplayString"],"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/row/style/index");var t=require("vue"),n=require("@qxs-bns/hooks"),o=require("../../../subject-action/src/subject-action.vue.cjs"),r=t.defineComponent({name:"QxsSubjectScale",__name:"SubjectPageEnd",props:{currentPageIndex:{type:Number,required:!0},totalPage:{type:Number,required:!0},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(r,{emit:s}){const a=r,l=s;t.onMounted(function(){});const i=n.useNamespace("subject-end");return(n,r)=>{const s=e.ElRow;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(t.unref(i).e("end-exam"))},[t.createVNode(s,{type:"flex",align:"middle"},{default:t.withCtx(()=>[r[5]||(r[5]=t.createElementVNode("span",{class:"auto-line"},null,-1)),t.createElementVNode("span",null,"第"+t.toDisplayString(a.currentPageIndex)+" / "+t.toDisplayString(n.totalPage)+"页",1),r[6]||(r[6]=t.createElementVNode("span",{class:"auto-line"},null,-1))]),_:1,__:[5,6]}),t.createVNode(o.default,{"is-edit":!1,"is-set":n.isSet,"page-end":!0,"exam-answer-relation-type":a.examAnswerRelationType,"show-other-option":!1,"show-rich-text":!1,onMoveUp:r[0]||(r[0]=e=>l("move","up")),onMoveDown:r[1]||(r[1]=e=>l("move","down")),onDelete:r[2]||(r[2]=e=>l("delete")),onEdit:r[3]||(r[3]=e=>l("edit")),onAdd:r[4]||(r[4]=e=>l("add",e))},null,8,["is-set","exam-answer-relation-type"])],2)}}});exports.default=r;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),n=require("../../../subject-action/src/subject-action.vue.cjs"),o=e.defineComponent({name:"QxsSubjectScale",__name:"SubjectPageEnd",props:{currentPageIndex:{type:Number,required:!0},totalPage:{type:Number,required:!0},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(o,{emit:r}){const a=o,s=r;e.onMounted(function(){});const i=t.useNamespace("subject-end");return(t,o)=>{const r=e.resolveComponent("el-row");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(i).e("end-exam"))},[e.createVNode(r,{type:"flex",align:"middle"},{default:e.withCtx(()=>[o[5]||(o[5]=e.createElementVNode("span",{class:"auto-line"},null,-1)),e.createElementVNode("span",null,"第"+e.toDisplayString(a.currentPageIndex)+" / "+e.toDisplayString(t.totalPage)+"页",1),o[6]||(o[6]=e.createElementVNode("span",{class:"auto-line"},null,-1))]),_:1,__:[5,6]}),e.createVNode(n.default,{"is-edit":!1,"is-set":t.isSet,"page-end":!0,"exam-answer-relation-type":a.examAnswerRelationType,"show-other-option":!1,"show-rich-text":!1,onMoveUp:o[0]||(o[0]=e=>s("move","up")),onMoveDown:o[1]||(o[1]=e=>s("move","down")),onDelete:o[2]||(o[2]=e=>s("delete")),onEdit:o[3]||(o[3]=e=>s("edit")),onAdd:o[4]||(o[4]=e=>s("add",e))},null,8,["is-set","exam-answer-relation-type"])],2)}}});exports.default=o;
2
2
  //# sourceMappingURL=SubjectPageEnd.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubjectPageEnd.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/SubjectPageEnd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n currentPageIndex: number\n totalPage: number\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\nfunction init() {\n\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-end')\n</script>\n\n<template>\n <div :class=\"ns.e('end-exam')\">\n <el-row\n type=\"flex\"\n align=\"middle\"\n >\n <span class=\"auto-line\" />\n <span>第{{ props.currentPageIndex }} / {{ totalPage }}页</span>\n <span class=\"auto-line\" />\n </el-row>\n <SubjectAction\n :is-edit=\"false\"\n :is-set=\"isSet\"\n :page-end=\"true\"\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 @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n />\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","onMounted","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","_component_el_row","type","align","_createElementVNode","_toDisplayString","currentPageIndex","totalPage","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onEdit","onAdd","_cache"],"mappings":"wtBAOA,MAAMA,EAAQC,EASRC,EAAQC,EAMdC,EAAAA,UAJA,WAEA,GAGA,MAAMC,EAAKC,EAAAA,aAAa,kEAItBC,EAAAA,mBAsBM,MAAA,CAtBAC,MAAKC,EAAAA,eAAEC,EAAAA,MAAAL,GAAGM,EAAC,eACfC,EAAAA,YAOSC,EAAA,CANPC,KAAK,OACLC,MAAM,6BAEN,IAA0B,aAA1BC,EAAAA,mBAA0B,OAAA,CAApBR,MAAM,aAAW,MAAA,IACvBQ,EAAAA,mBAA6D,OAAA,KAAvD,IAACC,EAAAA,gBAAGjB,EAAMkB,kBAAmB,MAAGD,kBAAGE,EAAAA,WAAY,IAAC,eACtDH,EAAAA,mBAA0B,OAAA,CAApBR,MAAM,aAAW,MAAA,qBAEzBI,EAAAA,YAYEQ,EAAAA,QAAA,CAXC,WAAS,EACT,SAAQC,EAAAA,MACR,YAAU,EACV,4BAA2BrB,EAAMsB,uBACjC,qBAAmB,EACnB,kBAAgB,EAChBC,wBAASrB,EAAK,OAAA,OACdsB,0BAAWtB,EAAK,OAAA,SAChBuB,wBAAQvB,EAAK,WACbwB,sBAAMxB,EAAK,SACXyB,MAAGC,EAAA,KAAAA,EAAA,GAAEd,GAAQZ,QAAaY"}
1
+ {"version":3,"file":"SubjectPageEnd.vue.cjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/SubjectPageEnd.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { onMounted } from 'vue'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\n\ndefineOptions({\n name: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n currentPageIndex: number\n totalPage: number\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\nfunction init() {\n\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-end')\n</script>\n\n<template>\n <div :class=\"ns.e('end-exam')\">\n <el-row\n type=\"flex\"\n align=\"middle\"\n >\n <span class=\"auto-line\" />\n <span>第{{ props.currentPageIndex }} / {{ totalPage }}页</span>\n <span class=\"auto-line\" />\n </el-row>\n <SubjectAction\n :is-edit=\"false\"\n :is-set=\"isSet\"\n :page-end=\"true\"\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 @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n />\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","onMounted","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","_component_el_row","type","align","_createElementVNode","_toDisplayString","currentPageIndex","totalPage","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onEdit","onAdd","_cache"],"mappings":"0kBAQA,MAAMA,EAAQC,EASRC,EAAQC,EAMdC,EAAAA,UAJA,WAEA,GAGA,MAAMC,EAAKC,EAAAA,aAAa,uFAItBC,EAAAA,mBAsBM,MAAA,CAtBAC,MAAKC,EAAAA,eAAEC,EAAAA,MAAAL,GAAGM,EAAC,eACfC,EAAAA,YAOSC,EAAA,CANPC,KAAK,OACLC,MAAM,6BAEN,IAA0B,aAA1BC,EAAAA,mBAA0B,OAAA,CAApBR,MAAM,aAAW,MAAA,IACvBQ,EAAAA,mBAA6D,OAAA,KAAvD,IAACC,EAAAA,gBAAGjB,EAAMkB,kBAAmB,MAAGD,kBAAGE,EAAAA,WAAY,IAAC,eACtDH,EAAAA,mBAA0B,OAAA,CAApBR,MAAM,aAAW,MAAA,qBAEzBI,EAAAA,YAYEQ,EAAAA,QAAA,CAXC,WAAS,EACT,SAAQC,EAAAA,MACR,YAAU,EACV,4BAA2BrB,EAAMsB,uBACjC,qBAAmB,EACnB,kBAAgB,EAChBC,wBAASrB,EAAK,OAAA,OACdsB,0BAAWtB,EAAK,OAAA,SAChBuB,wBAAQvB,EAAK,WACbwB,sBAAMxB,EAAK,SACXyB,MAAGC,EAAA,KAAAA,EAAA,GAAEd,GAAQZ,QAAaY"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),r=require("element-plus"),o=require("../../../subject-action/src/subject-action.vue.cjs"),i=require("../../../subject-layout/src/subject-layout.vue.cjs"),n=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const s={class:"preview"},a=["innerHTML"];var u=e.defineComponent({name:"QxsSubjectScale",__name:"SubjectRichText",props:{orderIndex:{type:Number,required:!0},richTextContent:{type:String,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(u,{emit:l}){const d=u,c=l,p=e.useAttrs(),m=e.ref("");function v(){m.value?c("save",{richTextContent:m.value||""}):r.ElMessage.error("富文本内容不能为空!")}e.onMounted(function(){d.richTextContent&&(m.value=d.richTextContent)});const x=t.useNamespace("subject-scale");return(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(x).e("scale-exam"))},[e.createVNode(i.default,{"show-edit":t.isEdit},{preview:e.withCtx(()=>[e.createElementVNode("div",s,[e.createTextVNode(e.toDisplayString(t.orderIndex+1)+".",1),e.createElementVNode("div",{innerHTML:e.unref(m)},null,8,a)])]),edit:e.withCtx(()=>[e.createVNode(n.default,e.mergeProps({"model-value":e.unref(m),"onUpdate:modelValue":r[0]||(r[0]=t=>e.isRef(m)?m.value=t:null)},e.unref(p),{style:{width:"100%"}}),null,16,["model-value"])]),default:e.withCtx(()=>[t.showAction?(e.openBlock(),e.createBlock(o.default,{key:0,"is-edit":t.isEdit,"is-set":t.isSet,"exam-answer-relation-type":d.examAnswerRelationType,"show-other-option":!1,"show-rich-text":!1,onMoveUp:r[1]||(r[1]=e=>c("move","up")),onMoveDown:r[2]||(r[2]=e=>c("move","down")),onDelete:r[3]||(r[3]=e=>c("delete")),onSave:v,onEdit:r[4]||(r[4]=e=>c("edit")),onAdd:r[5]||(r[5]=e=>c("add",e))},null,8,["is-edit","is-set","exam-answer-relation-type"])):e.createCommentVNode("v-if",!0)]),_:1},8,["show-edit"])],2))}});exports.default=u;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),r=require("element-plus"),o=require("../../../subject-action/src/subject-action.vue.cjs"),i=require("../../../subject-layout/src/subject-layout.vue.cjs"),n=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const s={class:"preview"},a=["innerHTML"];var u=e.defineComponent({name:"QxsSubjectScale",__name:"SubjectRichText",props:{orderIndex:{type:Number,required:!0},richTextContent:{type:String,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(u,{emit:l}){const d=u,c=l,p=e.useAttrs(),v=e.ref("");function m(){v.value?c("save",{richTextContent:v.value||""}):r.ElMessage.error("富文本内容不能为空!")}e.onMounted(function(){d.richTextContent&&(v.value=d.richTextContent)});const x=t.useNamespace("subject-scale");return(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(x).e("scale-exam"))},[e.createVNode(i.default,{"show-edit":t.isEdit},{preview:e.withCtx(()=>[e.createElementVNode("div",s,[e.createTextVNode(e.toDisplayString(t.orderIndex+1)+".",1),e.createElementVNode("div",{innerHTML:v.value},null,8,a)])]),edit:e.withCtx(()=>[e.createVNode(n.default,e.mergeProps({"model-value":v.value,"onUpdate:modelValue":r[0]||(r[0]=e=>v.value=e)},e.unref(p),{style:{width:"100%"}}),null,16,["model-value"])]),default:e.withCtx(()=>[t.showAction?(e.openBlock(),e.createBlock(o.default,{key:0,"is-edit":t.isEdit,"is-set":t.isSet,"exam-answer-relation-type":d.examAnswerRelationType,"show-other-option":!1,"show-rich-text":!1,onMoveUp:r[1]||(r[1]=e=>c("move","up")),onMoveDown:r[2]||(r[2]=e=>c("move","down")),onDelete:r[3]||(r[3]=e=>c("delete")),onSave:m,onEdit:r[4]||(r[4]=e=>c("edit")),onAdd:r[5]||(r[5]=e=>c("add",e))},null,8,["is-edit","is-set","exam-answer-relation-type"])):e.createCommentVNode("v-if",!0)]),_:1},8,["show-edit"])],2))}});exports.default=u;
2
2
  //# sourceMappingURL=SubjectRichText.vue.cjs.map
@@ -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","_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
+ {"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 { onMounted, ref, useAttrs } from 'vue'\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":"qzBAWA,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,UAAQtB,EAAAG,OAAW,KAAA,EAAAoB,OAGtCC,eACT,IAIE,CAJFT,EAAAA,YAIEU,EAAAA,QAJFC,aAIE,CAHQ,cAAa1B,EAAAG,2CAAAH,EAAWG,MAAAwB,IACxBd,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:_}){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;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@element-plus/icons-vue"),l=require("@qxs-bns/hooks"),a=require("element-plus"),n=require("../../../subject-action/src/subject-action.vue.cjs"),o=require("../../../subject-layout/src/subject-layout.vue.cjs"),r=require("../../../tiny-mce-editor/src/tiny-mce-editor.vue.cjs");const i={class:"preview"},s={class:"content"},c={class:"title"},d={key:0},u=["innerHTML"],m={key:1,class:"flex flex-wrap",style:{"margin-top":"10px",color:"#a8abb2"}},v={class:"flex"},p={style:{flex:"1"}},f={class:"flex flex-justify-end"},x={class:"margin-bottom flex flex-items-center"},y={class:"margin-bottom answer-list"},V={class:"label flex flex-justify-end"},g={class:"answer-tags"},k={key:0,class:"margin-bottom flex"},w={style:{flex:"1"}},h={key:1,class:"margin-bottom flex"},N={style:{flex:"1"}},E={class:"flex flex-justify-end"};var C=e.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:B}){const _=C,b=B,S=e.useAttrs(),j=e.ref([]),q=e.ref(""),I=e.ref(""),A=e.ref(!1),T=e.ref(""),O=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],D=e.ref(["isIgnoreCase"]);function L(){q.value+=" ______",j.value.push({title:"",tag:"",showInput:!1})}function R(){A.value=!1,T.value=""}function M(){q.value?j.value.length<1?a.ElMessage.error("至少添加一个填空符!"):b("save",{title:q.value.replaceAll(/ ______/g,"<filter></filter>"),answers:j.value.map(e=>({title:e.title,isCorrect:!0})),analysis:I.value,isSetCorrectAnswer:!0,examAnswerSettingBO:{isIgnoreCase:D.value?.includes("isIgnoreCase"),isInOrder:D.value?.includes("isInOrder")},examRichTextContent:A.value?T.value:""}):a.ElMessage.error("题目标题不能为空!")}e.watch(()=>q.value,()=>{const[...e]=q.value.matchAll(/ ______/g);if(e.length!==j.value.length){const t=j.value.length-e.length;j.value.splice(j.value.length-t,t)}}),e.onMounted(function(){_.title&&(q.value=_.title.replaceAll(/<filter><\/filter>/g," ______")),_.answerList&&_.answerList.length&&(j.value=_.answerList),_.examAnswerSettingVO&&(D.value=D.value.filter(e=>"isIgnoreCase"===e&&_.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&_.examAnswerSettingVO?.isInOrder)),_.analysis&&(I.value=_.analysis),_.examRichTextContent&&(T.value=_.examRichTextContent,A.value=!0)});const U=l.useNamespace("subject-blank-fill");return(l,a)=>{const C=e.resolveComponent("el-input"),B=e.resolveComponent("el-link"),F=e.resolveComponent("el-checkbox"),P=e.resolveComponent("el-checkbox-group"),z=e.resolveComponent("el-tag"),H=e.resolveComponent("el-icon"),G=e.resolveComponent("el-button");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(U).e("blank-fill-exam"))},[e.createVNode(o.default,{"show-edit":l.isEdit},{preview:e.withCtx(()=>[e.createElementVNode("div",i,[e.createElementVNode("div",s,[e.createElementVNode("span",c,e.toDisplayString(l.orderIndex+1)+"."+e.toDisplayString(q.value)+"(填空题)",1),A.value?(e.openBlock(),e.createElementBlock("div",d,[e.createElementVNode("div",{class:"rich-text",innerHTML:T.value},null,8,u)])):e.createCommentVNode("v-if",!0),j.value.some(e=>e.title)?(e.openBlock(),e.createElementBlock("div",m,[a[10]||(a[10]=e.createElementVNode("span",{class:"title"},"正确答案:",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,(t,l)=>(e.openBlock(),e.createElementBlock("div",{key:l,class:"flex flex-wrap flex-items-center",style:{"margin-right":"10px"}},[e.createElementVNode("span",null,"填空"+e.toDisplayString(l+1)+":",1),e.createElementVNode("span",null,e.toDisplayString(t.title),1)]))),128))])):e.createCommentVNode("v-if",!0)])])]),edit:e.withCtx(()=>[e.createElementVNode("div",v,[a[11]||(a[11]=e.createElementVNode("div",{class:"label flex flex-justify-end"},[e.createElementVNode("span",null,"题目:")],-1)),e.createElementVNode("div",p,[e.createVNode(C,{modelValue:q.value,"onUpdate:modelValue":a[0]||(a[0]=e=>q.value=e),type:"textarea",rows:7,"show-word-limit":"",maxlength:"400",placeholder:"【填空题】请输入问题",disabled:l.isSave},null,8,["modelValue","disabled"])])]),e.createElementVNode("div",f,[e.createCommentVNode(' <el-link\n v-if="!showRichText"\n type="primary"\n @click="showRichText = true"\n >\n 添加富文本\n </el-link> '),e.createVNode(B,{class:"margin-left-10",type:"primary",disabled:l.isSave,onClick:L},{default:e.withCtx(()=>a[12]||(a[12]=[e.createTextVNode(" 插入填空符 ",-1)])),_:1,__:[12]},8,["disabled"])]),e.createElementVNode("div",x,[a[13]||(a[13]=e.createElementVNode("div",{class:"label flex flex-justify-end"},[e.createElementVNode("span",null,"答题设置:")],-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(O,t=>e.createVNode(P,{key:t.value,modelValue:D.value,"onUpdate:modelValue":a[1]||(a[1]=e=>D.value=e)},{default:e.withCtx(()=>[e.createVNode(F,{value:t.value,class:"margin-left-10"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]),_:2},1032,["value"])]),_:2},1032,["modelValue"])),64))]),e.createElementVNode("div",y,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,(a,n)=>(e.openBlock(),e.createElementBlock("div",{key:n,class:"answer-item flex flex-items-center"},[e.createElementVNode("div",V,[e.createElementVNode("span",null,"第"+e.toDisplayString(n+1)+"空答案:",1)]),e.createElementVNode("div",g,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.title.split(","),t=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:t},[t?(e.openBlock(),e.createBlock(z,{key:0,closable:"",onClose:e=>function(e,t){if(e){const l=t.title.split(","),a=l.findIndex(t=>t===e);a>-1&&(l.splice(a,1),t.title=l.join(","))}}(t,a)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t),1)]),_:2},1032,["onClose"])):e.createCommentVNode("v-if",!0)],64))),128)),l.isSave?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[a.showInput?(e.openBlock(),e.createBlock(C,{key:0,modelValue:a.tag,"onUpdate:modelValue":e=>a.tag=e,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(a)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(e.openBlock(),e.createBlock(G,{key:1,size:"small",onClick:e=>a.showInput=!0},{default:e.withCtx(()=>[e.createVNode(H,null,{default:e.withCtx(()=>[e.createVNode(e.unref(t.Plus))]),_:1}),e.createElementVNode("span",null,e.toDisplayString(a.title?"添加同义词":"添加答案"),1)]),_:2},1032,["onClick"]))],64))])]))),128))]),l.showAnalysis?(e.openBlock(),e.createElementBlock("div",k,[a[14]||(a[14]=e.createElementVNode("div",{class:"label flex flex-justify-end"},[e.createElementVNode("span",null,"解析:")],-1)),e.createElementVNode("div",w,[e.createVNode(C,{modelValue:I.value,"onUpdate:modelValue":a[2]||(a[2]=e=>I.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):e.createCommentVNode("v-if",!0),A.value?(e.openBlock(),e.createElementBlock("div",h,[a[16]||(a[16]=e.createElementVNode("div",{class:"label flex flex-justify-center"},[e.createElementVNode("span",null,"富文本:")],-1)),e.createElementVNode("div",N,[e.createVNode(r.default,e.mergeProps({"model-value":T.value,"onUpdate:modelValue":a[3]||(a[3]=e=>T.value=e)},e.unref(S),{style:{width:"100%"}}),null,16,["model-value"]),e.createElementVNode("div",E,[e.createVNode(B,{type:"danger",onClick:R},{default:e.withCtx(()=>a[15]||(a[15]=[e.createTextVNode(" 删除富文本 ",-1)])),_:1,__:[15]})])])])):e.createCommentVNode("v-if",!0)]),default:e.withCtx(()=>[l.showAction?(e.openBlock(),e.createBlock(n.default,{key:0,"is-edit":l.isEdit,"is-set":l.isSet,"show-other-option":!1,"exam-answer-relation-type":_.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:M,onEdit:a[7]||(a[7]=e=>b("edit")),onAdd:a[8]||(a[8]=e=>b("add",e)),onOnShowRichText:a[9]||(a[9]=e=>A.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):e.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","_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
+ {"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 { onMounted, ref, useAttrs, watch } from 'vue'\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(""),_=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;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),l=require("@element-plus/icons-vue"),t=require("@qxs-bns/hooks"),a=require("element-plus"),n=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");const r={class:"preview"},i={class:"title"},c={key:0},d=["innerHTML"],u={class:"answer-radio flex-col"},m={style:{flex:"1"}},v={class:"answer flex"},p={class:"flex"},f={class:"answer-list flex-col"},x={class:"order"},V={class:"flex",style:{"margin-bottom":"20px"}},y={style:{flex:"1"}},h={key:0,class:"margin-bottom flex"},N={style:{flex:"1"}},w={class:"flex flex-justify-end"};var C=e.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(C,{emit:E}){const k=C,g=E,B=e.useAttrs(),b=e.ref([{title:""},{title:""},{title:""},{title:""},{title:""}]),S=e.ref(""),q=e.ref(""),j=e.ref(""),_=e.ref(!1),L=e.ref(""),M=e.ref([]),T=e.computed(()=>Math.ceil(24/(b.value.length+1)));function A(){5!==b.value.length&&b.value.push({title:""})}function R(){_.value=!1,L.value=""}function D(){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):j.value?(M.value=j.value.split("\n").filter(e=>e),g("save",{title:S.value,answers:b.value,analysis:q.value,scaleQuestionList:M.value,examRichTextContent:_.value?L.value:""})):a.ElMessage.error("行标题不能为空!")}e.onMounted(function(){k.title&&(S.value=k.title),k.answerList&&k.answerList.length&&(b.value=k.answerList),k.analysis&&(q.value=k.analysis),k.scaleQuestionList&&(M.value=k.scaleQuestionList,j.value=M.value.join("\n")),k.examRichTextContent&&(L.value=k.examRichTextContent,_.value=!0)});const U=t.useNamespace("subject-scale");return(t,a)=>{const C=e.resolveComponent("el-col"),E=e.resolveComponent("el-row"),Q=e.resolveComponent("el-radio"),z=e.resolveComponent("el-input"),F=e.resolveComponent("el-icon"),O=e.resolveComponent("el-link");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(U).e("scale-exam"))},[e.createVNode(o.default,{"show-edit":t.isEdit},{preview:e.withCtx(()=>[e.createElementVNode("div",r,[e.createElementVNode("div",null,[e.createElementVNode("span",i,e.toDisplayString(t.orderIndex+1)+"."+e.toDisplayString(S.value)+"(量表题)",1),_.value?(e.openBlock(),e.createElementBlock("div",c,[e.createElementVNode("div",{class:"rich-text",innerHTML:L.value},null,8,d)])):e.createCommentVNode("v-if",!0)]),e.createElementVNode("div",u,[e.createVNode(E,{style:{padding:"10px 0"}},{default:e.withCtx(()=>[e.createVNode(C,{span:T.value},null,8,["span"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,l=>(e.openBlock(),e.createBlock(C,{key:l.title,class:"flex flex-center",span:T.value},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(l.title),1)]),_:2},1032,["span"]))),128))]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,l=>(e.openBlock(),e.createBlock(E,{key:l,style:{padding:"10px 0"}},{default:e.withCtx(()=>[e.createVNode(C,{span:T.value,class:"flex flex-center"},{default:e.withCtx(()=>[e.createElementVNode("span",null,e.toDisplayString(l),1)]),_:2},1032,["span"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value.length,l=>(e.openBlock(),e.createBlock(C,{key:l,class:"radio-item flex flex-center",span:T.value},{default:e.withCtx(()=>[e.createVNode(Q,{disabled:!0})]),_:2},1032,["span"]))),128))]),_:2},1024))),128))])])]),edit:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(["flex",[{"margin-bottom":_.value}]])},[a[10]||(a[10]=e.createElementVNode("div",{class:"label flex flex-justify-center"},[e.createElementVNode("span",null,"题目:")],-1)),e.createElementVNode("div",m,[e.createVNode(z,{modelValue:S.value,"onUpdate:modelValue":a[0]||(a[0]=e=>S.value=e),type:"textarea",rows:2,placeholder:"【量表题】请输入问题",disabled:t.isSave},null,8,["modelValue","disabled"])])],2),e.createElementVNode("div",v,[a[11]||(a[11]=e.createElementVNode("div",{class:"label flex flex-justify-center"},[e.createElementVNode("span",null,"行标题:")],-1)),e.createElementVNode("div",p,[e.createVNode(z,{modelValue:j.value,"onUpdate:modelValue":a[1]||(a[1]=e=>j.value=e),type:"textarea",placeholder:"请输入行标题",style:{width:"160px"},rows:10},null,8,["modelValue"]),e.createElementVNode("div",f,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,(a,n)=>(e.openBlock(),e.createElementBlock("div",{key:n,class:"answer-item flex flex-items-center"},[e.createElementVNode("span",x,e.toDisplayString(String.fromCharCode(65+n))+".",1),e.createVNode(z,{modelValue:a.title,"onUpdate:modelValue":e=>a.title=e,class:"input","show-word-limit":"",maxlength:10,placeholder:`选项${String.fromCharCode(65+n)}`,disabled:t.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),e.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 /> '),e.createVNode(F,{class:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.CirclePlus),{class:e.normalizeClass([{disabled:5===b.value.length}]),onClick:A},null,8,["class"])]),_:1}),e.createVNode(F,{class:"icon"},{default:e.withCtx(()=>[e.createVNode(e.unref(l.Remove),{class:e.normalizeClass([{disabled:b.value.length<3}]),onClick:e=>function(e){b.value.length<3||b.value.splice(e,1)}(n)},null,8,["class","onClick"])]),_:2},1024)]))),128))])])]),e.createElementVNode("div",V,[a[12]||(a[12]=e.createElementVNode("div",{class:"label flex flex-justify-center"},[e.createElementVNode("span",null,"解析:")],-1)),e.createElementVNode("div",y,[e.createVNode(z,{modelValue:q.value,"onUpdate:modelValue":a[2]||(a[2]=e=>q.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])]),_.value?(e.openBlock(),e.createElementBlock("div",h,[a[14]||(a[14]=e.createElementVNode("div",{class:"label flex flex-justify-center"},[e.createElementVNode("span",null,"富文本:")],-1)),e.createElementVNode("div",N,[e.createVNode(s.default,e.mergeProps({"model-value":L.value,"onUpdate:modelValue":a[3]||(a[3]=e=>L.value=e)},e.unref(B),{style:{width:"100%"}}),null,16,["model-value"]),e.createElementVNode("div",w,[e.createVNode(O,{type:"danger",onClick:R},{default:e.withCtx(()=>a[13]||(a[13]=[e.createTextVNode(" 删除富文本 ",-1)])),_:1,__:[13]})])])])):e.createCommentVNode("v-if",!0)]),default:e.withCtx(()=>[t.showAction?(e.openBlock(),e.createBlock(n.default,{key:0,"is-edit":t.isEdit,"is-set":t.isSet,"show-other-option":!1,"exam-answer-relation-type":k.examAnswerRelationType,onMoveUp:a[4]||(a[4]=e=>g("move","up")),onMoveDown:a[5]||(a[5]=e=>g("move","down")),onDelete:a[6]||(a[6]=e=>g("delete")),onSave:D,onEdit:a[7]||(a[7]=e=>g("edit")),onAdd:a[8]||(a[8]=e=>g("add",e)),onOnShowRichText:a[9]||(a[9]=e=>_.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):e.createCommentVNode("v-if",!0)]),_:1},8,["show-edit"])],2)}}});exports.default=C;
2
2
  //# sourceMappingURL=subject-scale.vue.cjs.map