@qxs-bns/components 0.0.29 → 0.0.30

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.vue.mjs +1 -1
  5. package/es/src/data-chart/src/components/bar.vue.mjs.map +1 -1
  6. package/es/src/data-chart/src/components/funnel.vue.mjs +1 -1
  7. package/es/src/data-chart/src/components/funnel.vue.mjs.map +1 -1
  8. package/es/src/data-chart/src/components/line.vue2.mjs +1 -1
  9. package/es/src/data-chart/src/components/line.vue2.mjs.map +1 -1
  10. package/es/src/data-chart/src/components/pie.vue.mjs +1 -1
  11. package/es/src/data-chart/src/components/pie.vue.mjs.map +1 -1
  12. package/es/src/data-chart/src/components/radar.vue.mjs +1 -1
  13. package/es/src/data-chart/src/components/radar.vue.mjs.map +1 -1
  14. package/es/src/data-chart/src/components/scatter-simple.vue.mjs +1 -1
  15. package/es/src/data-chart/src/components/scatter-simple.vue.mjs.map +1 -1
  16. package/es/src/data-chart/src/components/scatter.vue.mjs +1 -1
  17. package/es/src/data-chart/src/components/scatter.vue.mjs.map +1 -1
  18. package/es/src/data-chart/src/components/table.vue.mjs +1 -1
  19. package/es/src/data-chart/src/components/table.vue.mjs.map +1 -1
  20. package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
  21. package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
  22. package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
  23. package/es/src/data-chart/src/utils/useCharts.mjs.map +1 -1
  24. package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
  25. package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
  26. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +1 -1
  27. package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs.map +1 -1
  28. package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
  29. package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
  30. package/es/src/photo-crop-tool/src/composables.mjs +1 -1
  31. package/es/src/photo-crop-tool/src/composables.mjs.map +1 -1
  32. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +1 -1
  33. package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs.map +1 -1
  34. package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
  35. package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
  36. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
  37. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +1 -1
  38. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
  39. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +1 -1
  40. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
  41. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
  42. package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
  43. package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
  44. package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
  45. package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
  46. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
  47. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
  48. package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
  49. package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
  50. package/es/src/subject-type/src/subject-type.vue.mjs +1 -1
  51. package/es/src/subject-type/src/subject-type.vue.mjs.map +1 -1
  52. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
  53. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
  54. package/lib/package.json.cjs +1 -1
  55. package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
  56. package/lib/src/data-chart/src/components/area.vue2.cjs.map +1 -1
  57. package/lib/src/data-chart/src/components/bar.vue.cjs +1 -1
  58. package/lib/src/data-chart/src/components/bar.vue.cjs.map +1 -1
  59. package/lib/src/data-chart/src/components/funnel.vue.cjs +1 -1
  60. package/lib/src/data-chart/src/components/funnel.vue.cjs.map +1 -1
  61. package/lib/src/data-chart/src/components/line.vue2.cjs +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.vue.cjs +1 -1
  64. package/lib/src/data-chart/src/components/pie.vue.cjs.map +1 -1
  65. package/lib/src/data-chart/src/components/radar.vue.cjs +1 -1
  66. package/lib/src/data-chart/src/components/radar.vue.cjs.map +1 -1
  67. package/lib/src/data-chart/src/components/scatter-simple.vue.cjs +1 -1
  68. package/lib/src/data-chart/src/components/scatter-simple.vue.cjs.map +1 -1
  69. package/lib/src/data-chart/src/components/scatter.vue.cjs +1 -1
  70. package/lib/src/data-chart/src/components/scatter.vue.cjs.map +1 -1
  71. package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
  72. package/lib/src/data-chart/src/components/table.vue.cjs.map +1 -1
  73. package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
  74. package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
  75. package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
  76. package/lib/src/data-chart/src/utils/useCharts.cjs.map +1 -1
  77. package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
  78. package/lib/src/file-upload/src/file-upload.vue.cjs.map +1 -1
  79. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +1 -1
  80. package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs.map +1 -1
  81. package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
  82. package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
  83. package/lib/src/photo-crop-tool/src/composables.cjs +1 -1
  84. package/lib/src/photo-crop-tool/src/composables.cjs.map +1 -1
  85. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +1 -1
  86. package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs.map +1 -1
  87. package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
  88. package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
  89. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
  90. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +1 -1
  91. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
  92. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +1 -1
  93. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
  94. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
  95. package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
  96. package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
  97. package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
  98. package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
  99. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
  100. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
  101. package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
  102. package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
  103. package/lib/src/subject-type/src/subject-type.vue.cjs +1 -1
  104. package/lib/src/subject-type/src/subject-type.vue.cjs.map +1 -1
  105. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
  106. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
  107. package/package.json +8 -6
  108. package/types/index.d.ts +0 -6
  109. package/types/index.d.ts.map +0 -1
  110. package/types/src/base/style/css.d.ts +0 -2
  111. package/types/src/base/style/css.d.ts.map +0 -1
  112. package/types/src/base/style/index.d.ts +0 -2
  113. package/types/src/base/style/index.d.ts.map +0 -1
  114. package/types/src/components.d.ts +0 -11
  115. package/types/src/components.d.ts.map +0 -1
  116. package/types/src/data-chart/index.d.ts +0 -4
  117. package/types/src/data-chart/index.d.ts.map +0 -1
  118. package/types/src/data-chart/src/analyze.d.ts +0 -23
  119. package/types/src/data-chart/src/analyze.d.ts.map +0 -1
  120. package/types/src/data-chart/src/utils/config.d.ts +0 -41
  121. package/types/src/data-chart/src/utils/config.d.ts.map +0 -1
  122. package/types/src/data-chart/src/utils/injectionKeys.d.ts +0 -3
  123. package/types/src/data-chart/src/utils/injectionKeys.d.ts.map +0 -1
  124. package/types/src/data-chart/src/utils/useCharts.d.ts +0 -16
  125. package/types/src/data-chart/src/utils/useCharts.d.ts.map +0 -1
  126. package/types/src/data-chart/style/index.d.ts +0 -3
  127. package/types/src/data-chart/style/index.d.ts.map +0 -1
  128. package/types/src/defaults.d.ts +0 -6
  129. package/types/src/defaults.d.ts.map +0 -1
  130. package/types/src/file-upload/index.d.ts +0 -4
  131. package/types/src/file-upload/index.d.ts.map +0 -1
  132. package/types/src/file-upload/style/index.d.ts +0 -3
  133. package/types/src/file-upload/style/index.d.ts.map +0 -1
  134. package/types/src/fixed-action-bar/index.d.ts +0 -4
  135. package/types/src/fixed-action-bar/index.d.ts.map +0 -1
  136. package/types/src/fixed-action-bar/style/index.d.ts +0 -3
  137. package/types/src/fixed-action-bar/style/index.d.ts.map +0 -1
  138. package/types/src/image-upload/index.d.ts +0 -4
  139. package/types/src/image-upload/index.d.ts.map +0 -1
  140. package/types/src/image-upload/style/index.d.ts +0 -3
  141. package/types/src/image-upload/style/index.d.ts.map +0 -1
  142. package/types/src/make-installer.d.ts +0 -9
  143. package/types/src/make-installer.d.ts.map +0 -1
  144. package/types/src/photo-crop-tool/index.d.ts +0 -4
  145. package/types/src/photo-crop-tool/index.d.ts.map +0 -1
  146. package/types/src/photo-crop-tool/src/composables.d.ts +0 -7
  147. package/types/src/photo-crop-tool/src/composables.d.ts.map +0 -1
  148. package/types/src/photo-crop-tool/style/index.d.ts +0 -3
  149. package/types/src/photo-crop-tool/style/index.d.ts.map +0 -1
  150. package/types/src/subject-action/index.d.ts +0 -4
  151. package/types/src/subject-action/index.d.ts.map +0 -1
  152. package/types/src/subject-action/style/index.d.ts +0 -3
  153. package/types/src/subject-action/style/index.d.ts.map +0 -1
  154. package/types/src/subject-layout/index.d.ts +0 -4
  155. package/types/src/subject-layout/index.d.ts.map +0 -1
  156. package/types/src/subject-layout/style/index.d.ts +0 -3
  157. package/types/src/subject-layout/style/index.d.ts.map +0 -1
  158. package/types/src/subject-list/index.d.ts +0 -4
  159. package/types/src/subject-list/index.d.ts.map +0 -1
  160. package/types/src/subject-list/style/index.d.ts +0 -3
  161. package/types/src/subject-list/style/index.d.ts.map +0 -1
  162. package/types/src/subject-type/index.d.ts +0 -4
  163. package/types/src/subject-type/index.d.ts.map +0 -1
  164. package/types/src/subject-type/style/index.d.ts +0 -3
  165. package/types/src/subject-type/style/index.d.ts.map +0 -1
  166. package/types/src/tiny-mce-editor/index.d.ts +0 -4
  167. package/types/src/tiny-mce-editor/index.d.ts.map +0 -1
  168. package/types/src/tiny-mce-editor/style/index.d.ts +0 -3
  169. package/types/src/tiny-mce-editor/style/index.d.ts.map +0 -1
  170. package/types/src/withInstall.d.ts +0 -4
  171. package/types/src/withInstall.d.ts.map +0 -1
  172. package/types/tsconfig.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"subject-list.vue.mjs","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// import isEqual from 'lodash/isEqual'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { setGuid } from '@qxs-bns/utils'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst currentList = ref([] as any)\nconst emits = defineEmits(['setRelation'])\n\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n let totalPageIndex = 0\n let isLastPageIndex = false\n currentList.value.map((v: any, i: number, arr: any) => {\n if (v.answerType === 'page_end') {\n totalPageIndex++\n isLastPageIndex = i === arr.length - 1\n }\n })\n // 假设最后是一个分页器认为是最后一页\n return isLastPageIndex ? totalPageIndex : totalPageIndex + 1\n}\n\nfunction currentPageIndex() {\n return (currentId: any) => {\n const currentPageList = currentList.value.filter(\n (v: any) => v.answerType === 'page_end'\n )\n let currentIndex = 0\n currentPageList.forEach((c: any, i: number) => {\n if (currentId === c.id) {\n currentIndex = i + 1\n }\n })\n return currentIndex\n }\n}\n\nfunction addSubject(type: string, index: number, examAnswerRelationType: number | null) {\n console.log(index, 'index')\n if (index || index === 0) {\n currentList.value.splice(index + 1, 0, {\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n else {\n currentList.value.push({\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n}\n\nfunction addExam(item: any) {\n const answerList: any[] = []\n item.answers?.map((v: any) => {\n answerList.push({\n ...v,\n title: v.answer,\n answerId: v.examAnswerId,\n isCorrect: v.isCorrect,\n })\n })\n currentList.value.push({\n ...item,\n customId: setGuid(),\n answerType: item.richTextContent ? 'rich_text' : item.examTypeEnum,\n answers: answerList,\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n })\n}\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n for (let idx = 0; idx < currentList.value.length; idx++) {\n if (index === idx) {\n currentList.value[index] =\n {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n examAnswerRelationType: item.examAnswerRelationType,\n }\n }\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(customId: number, examAnswers: any) {\n emits('setRelation', customId, examAnswers)\n}\n\nfunction setAnswerRelation(answerRelations: any, customId: string, customAnswerId: string,) {\n // 给examId设置答案关联\n console.log(answerRelations, customId, customAnswerId, 111);\n console.log(currentList.value, 222);\n if (answerRelations.length) {\n currentList.value.forEach((c: any) => {\n if (c.customId === customId) {\n c.answer.forEach((c: any) => {\n if (c.customAnswerId === customAnswerId) {\n c.answerRelations = answerRelations\n }\n })\n }\n })\n }\n}\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div v-for=\"(item, index) in currentList\" :key=\"index + item.examId || item.title\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle \n v-bind=\"attrs\" \n :order-index=\"index\" \n :title=\"item.title\" \n :type=\"item.answerType\"\n :exam-id=\"item.examId\"\n :isKey=\"item.isKey\" \n :is-save=\"!item.isRealCanDel\" \n :customId=\"item.customId\" \n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\" \n :analysis=\"item.analysis\" \n :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\" \n :show-action=\"!isPreview\" \n :exam-expand=\"item.examExpand\"\n :answerCheckType=\"item.answerCheckType\" \n :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\"\n @setRelation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string, examAnswerRelationType: number) => addSubject(type, index, examAnswerRelationType)\" />\n </template>\n <SubjectScale v-bind=\"attrs\" v-else-if=\"item.answerType === 'scale'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :is-edit=\"item.isEdit || false\" :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectBlankFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'blank_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectTextFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'text_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\" :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectRichText v-bind=\"attrs\" v-else-if=\"item.answerType === 'rich_text'\" :order-index=\"index\"\n :richTextContent=\"item.richTextContent\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" :examAnswerRelationType=\"item.examAnswerRelationType\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectPageEnd v-else-if=\"item.answerType === 'page_end'\" :total-page=\"totalPageIndex()\" :key=\"index\"\n :current-page-index=\"currentPageIndex()(item.id)\" :item=\"item\" :order-index=\"index\"\n :is-edit=\"item.isEdit || false\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentList","ref","emits","__emit","attrs","useAttrs","totalPageIndex","isLastPageIndex","value","map","v","i","arr","answerType","length","addSubject","type","index","examAnswerRelationType","console","log","splice","customId","setGuid","analysis","scaleQuestionList","isSave","isEdit","isRealCanDel","hasSet","push","move","item","saveSubject","idx","deleteSubject","ElMessage","success","setRelation","examAnswers","__expose","uploadExcel","list","concat","addExam","answerList","answers","title","answer","answerId","examAnswerId","isCorrect","richTextContent","examTypeEnum","setAnswerRelation","answerRelations","customAnswerId","forEach","c","watch","subjectList","newList","immediate","ns","useNamespace","currentId","currentPageList","filter","currentIndex","id"],"mappings":"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"}
1
+ {"version":3,"file":"subject-list.vue.mjs","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// import isEqual from 'lodash/isEqual'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { setGuid } from '@qxs-bns/utils'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst currentList = ref([] as any)\nconst emits = defineEmits(['setRelation'])\n\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n let totalPageIndex = 0\n let isLastPageIndex = false\n currentList.value.map((v: any, i: number, arr: any) => {\n if (v.answerType === 'page_end') {\n totalPageIndex++\n isLastPageIndex = i === arr.length - 1\n }\n })\n // 假设最后是一个分页器认为是最后一页\n return isLastPageIndex ? totalPageIndex : totalPageIndex + 1\n}\n\nfunction currentPageIndex() {\n return (currentId: any) => {\n const currentPageList = currentList.value.filter(\n (v: any) => v.answerType === 'page_end'\n )\n let currentIndex = 0\n currentPageList?.forEach((c: any, i: number) => {\n if (currentId === c.id) {\n currentIndex = i + 1\n }\n })\n return currentIndex\n }\n}\n\nfunction addSubject(type: string, index: number, examAnswerRelationType: number | null) {\n console.log(index, 'index')\n if (index || index === 0) {\n currentList.value.splice(index + 1, 0, {\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n else {\n currentList.value.push({\n customId: setGuid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n}\n\nfunction addExam(item: any) {\n const answerList: any[] = []\n item.answers?.map((v: any) => {\n answerList.push({\n ...v,\n title: v.answer,\n answerId: v.examAnswerId,\n isCorrect: v.isCorrect,\n })\n })\n currentList.value.push({\n ...item,\n customId: setGuid(),\n answerType: item.richTextContent ? 'rich_text' : item.examTypeEnum,\n answers: answerList,\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n })\n}\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n for (let idx = 0; idx < currentList.value.length; idx++) {\n if (index === idx) {\n currentList.value[index] =\n {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n examAnswerRelationType: item.examAnswerRelationType,\n }\n }\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(customId: number, examAnswers: any) {\n emits('setRelation', customId, examAnswers)\n}\n\nfunction setAnswerRelation(answerRelations: any, customId: string, customAnswerId: string,) {\n // 给examId设置答案关联\n if (answerRelations.length) {\n currentList.value?.map((v: any) => {\n if(v.customId === customId) {\n v.answers?.map((c: any) => {\n // 判断类型\n if(c.customAnswerId === customAnswerId) {\n c.answerRelations = answerRelations\n }\n })\n }\n })\n }\n}\n\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\n\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div v-for=\"(item, index) in currentList\" :key=\"index + item.examId || item.title\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle \n v-bind=\"attrs\" \n :order-index=\"index\" \n :title=\"item.title\" \n :type=\"item.answerType\"\n :exam-id=\"item.examId\"\n :isKey=\"item.isKey\" \n :is-save=\"!item.isRealCanDel\" \n :customId=\"item.customId\" \n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\" \n :analysis=\"item.analysis\" \n :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\" \n :show-action=\"!isPreview\" \n :exam-expand=\"item.examExpand\"\n :answerCheckType=\"item.answerCheckType\" \n :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\"\n @setRelation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string, examAnswerRelationType: number) => addSubject(type, index, examAnswerRelationType)\" />\n </template>\n <SubjectScale v-bind=\"attrs\" v-else-if=\"item.answerType === 'scale'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :is-edit=\"item.isEdit || false\" :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectBlankFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'blank_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectTextFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'text_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\" :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectRichText v-bind=\"attrs\" v-else-if=\"item.answerType === 'rich_text'\" :order-index=\"index\"\n :richTextContent=\"item.richTextContent\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" :examAnswerRelationType=\"item.examAnswerRelationType\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectPageEnd v-else-if=\"item.answerType === 'page_end'\" :total-page=\"totalPageIndex()\" :key=\"index\"\n :current-page-index=\"currentPageIndex()(item.id)\" :item=\"item\" :order-index=\"index\"\n :is-edit=\"item.isEdit || false\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","currentList","ref","emits","__emit","attrs","useAttrs","totalPageIndex","isLastPageIndex","value","map","v","i","arr","answerType","length","addSubject","type","index","examAnswerRelationType","console","log","splice","customId","setGuid","analysis","scaleQuestionList","isSave","isEdit","isRealCanDel","hasSet","push","move","item","saveSubject","idx","deleteSubject","ElMessage","success","setRelation","examAnswers","__expose","uploadExcel","list","concat","addExam","answerList","answers","title","answer","answerId","examAnswerId","isCorrect","richTextContent","examTypeEnum","setAnswerRelation","answerRelations","customAnswerId","c","watch","subjectList","newList","immediate","ns","useNamespace","currentId","currentPageList","filter","currentIndex","forEach","id"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,createElementBlock as l,openBlock as t,normalizeClass as s,unref as i,createElementVNode as a,Fragment as p,renderList as c,toDisplayString as n}from"vue";import{useNamespace as y}from"@qxs-bns/hooks";import{ref as b}from"vue-demi";const u={class:"type-item"},m={class:"base-subject"},o=["onClick"],d={class:"type-item"},v={class:"base-subject flex"},r=["onClick"],f={class:"type-item"},k={class:"base-subject flex"},x=["onClick"];var j=e({name:"QxsSubjectType",__name:"subject-type",emits:["select"],setup(e,{emit:j}){const C=j,_=b([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"},{type:"blank_fill",label:"填空题"},{type:"text_fill",label:"问答题"},{type:"scale",label:"量表题"},{type:"sort",label:"排序题"}]),g=b([{type:"rich_text",label:"富文本"},{type:"page_end",label:"分页器"}]),h=b([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"}]),q=y("subject-type");return(e,y)=>(t(),l("div",{class:s(i(q).e("type-list"))},[a("div",u,[y[0]||(y[0]=a("div",null,"普通题目类型",-1)),a("div",m,[(t(!0),l(p,null,c(i(_),(e=>(t(),l("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[a("span",null,n(e.label),1)],8,o)))),128))])]),a("div",d,[y[1]||(y[1]=a("div",null,"其他",-1)),a("div",v,[(t(!0),l(p,null,c(i(g),(e=>(t(),l("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[a("span",null,n(e.label),1)],8,r)))),128))])]),a("div",f,[y[2]||(y[2]=a("div",null,"互动问答类型(支持设置结果项)",-1)),a("div",k,[(t(!0),l(p,null,c(i(h),(e=>(t(),l("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type,!0)},[a("span",null,n(e.label),1)],8,x)))),128))])])],2))}});export{j as default};
1
+ import{defineComponent as e,ref as l,createElementBlock as t,openBlock as s,normalizeClass as a,unref as i,createElementVNode as c,Fragment as p,renderList as n,toDisplayString as y}from"vue";import{useNamespace as b}from"@qxs-bns/hooks";const u={class:"type-item"},m={class:"base-subject"},o=["onClick"],d={class:"type-item"},v={class:"base-subject flex"},r=["onClick"],k={class:"type-item"},f={class:"base-subject flex"},x=["onClick"];var j=e({name:"QxsSubjectType",__name:"subject-type",emits:["select"],setup(e,{emit:j}){const C=j,_=l([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"},{type:"blank_fill",label:"填空题"},{type:"text_fill",label:"问答题"},{type:"scale",label:"量表题"},{type:"sort",label:"排序题"}]),g=l([{type:"rich_text",label:"富文本"},{type:"page_end",label:"分页器"}]),h=l([{type:"single",label:"单选题"},{type:"multiple",label:"多选题"}]),q=b("subject-type");return(e,l)=>(s(),t("div",{class:a(i(q).e("type-list"))},[c("div",u,[l[0]||(l[0]=c("div",null,"普通题目类型",-1)),c("div",m,[(s(!0),t(p,null,n(i(_),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[c("span",null,y(e.label),1)],8,o)))),128))])]),c("div",d,[l[1]||(l[1]=c("div",null,"其他",-1)),c("div",v,[(s(!0),t(p,null,n(i(g),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type)},[c("span",null,y(e.label),1)],8,r)))),128))])]),c("div",k,[l[2]||(l[2]=c("div",null,"互动问答类型(支持设置结果项)",-1)),c("div",f,[(s(!0),t(p,null,n(i(h),(e=>(s(),t("div",{key:e.type,class:"item flex-center",onClick:l=>C("select",e.type,!0)},[c("span",null,y(e.label),1)],8,x)))),128))])])],2))}});export{j as default};
2
2
  //# sourceMappingURL=subject-type.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-type.vue.mjs","sources":["../../../../../../packages/components/src/subject-type/src/subject-type.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\n\ndefineOptions({\n name: 'QxsSubjectType',\n})\nconst emits = defineEmits(['select'])\nconst subjectOptions = ref([\n {\n type: 'single',\n label: '单选题',\n }, {\n type: 'multiple',\n label: '多选题',\n },\n {\n type: 'blank_fill',\n label: '填空题',\n },\n {\n type: 'text_fill',\n label: '问答题',\n },\n {\n type: 'scale',\n label: '量表题',\n },\n {\n type: 'sort',\n label: '排序题',\n },\n])\nconst otherOptions = ref([\n {\n type: 'rich_text',\n label: '富文本',\n },\n {\n type: 'page_end',\n label: '分页器',\n },\n])\nconst interactionOptions = ref([\n {\n type: 'single',\n label: '单选题',\n }, {\n type: 'multiple',\n label: '多选题',\n },\n])\nconst ns = useNamespace('subject-type')\n\n</script>\n\n<template>\n <div :class=\"ns.e('type-list')\">\n <div class=\"type-item\">\n <div>普通题目类型</div>\n <div class=\"base-subject\">\n <div v-for=\"item in subjectOptions\" :key=\"item.type\" class=\"item flex-center\"\n @click=\"emits('select', item.type)\">\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n <div class=\"type-item\">\n <div>其他</div>\n <div class=\"base-subject flex\">\n <div v-for=\"item in otherOptions\" :key=\"item.type\" class=\"item flex-center\" @click=\"emits('select', item.type)\">\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n <div class=\"type-item\">\n <div>互动问答类型(支持设置结果项)</div>\n <div class=\"base-subject flex\">\n <div v-for=\"item in interactionOptions\" :key=\"item.type\" class=\"item flex-center\"\n @click=\"emits('select', item.type, true)\">\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["emits","__emit","subjectOptions","ref","type","label","otherOptions","interactionOptions","ns","useNamespace"],"mappings":"miBAMA,MAAMA,EAAQC,EACRC,EAAiBC,EAAI,CACzB,CACEC,KAAM,SACNC,MAAO,OACN,CACDD,KAAM,WACNC,MAAO,OAET,CACED,KAAM,aACNC,MAAO,OAET,CACED,KAAM,YACNC,MAAO,OAET,CACED,KAAM,QACNC,MAAO,OAET,CACED,KAAM,OACNC,MAAO,SAGLC,EAAeH,EAAI,CACvB,CACEC,KAAM,YACNC,MAAO,OAET,CACED,KAAM,WACNC,MAAO,SAGLE,EAAqBJ,EAAI,CAC7B,CACEC,KAAM,SACNC,MAAO,OACN,CACDD,KAAM,WACNC,MAAO,SAGLG,EAAKC,EAAa"}
1
+ {"version":3,"file":"subject-type.vue.mjs","sources":["../../../../../../packages/components/src/subject-type/src/subject-type.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\n\ndefineOptions({\n name: 'QxsSubjectType',\n})\nconst emits = defineEmits(['select'])\nconst subjectOptions = ref([\n {\n type: 'single',\n label: '单选题',\n }, {\n type: 'multiple',\n label: '多选题',\n },\n {\n type: 'blank_fill',\n label: '填空题',\n },\n {\n type: 'text_fill',\n label: '问答题',\n },\n {\n type: 'scale',\n label: '量表题',\n },\n {\n type: 'sort',\n label: '排序题',\n },\n])\nconst otherOptions = ref([\n {\n type: 'rich_text',\n label: '富文本',\n },\n {\n type: 'page_end',\n label: '分页器',\n },\n])\nconst interactionOptions = ref([\n {\n type: 'single',\n label: '单选题',\n }, {\n type: 'multiple',\n label: '多选题',\n },\n])\nconst ns = useNamespace('subject-type')\n\n</script>\n\n<template>\n <div :class=\"ns.e('type-list')\">\n <div class=\"type-item\">\n <div>普通题目类型</div>\n <div class=\"base-subject\">\n <div v-for=\"item in subjectOptions\" :key=\"item.type\" class=\"item flex-center\"\n @click=\"emits('select', item.type)\">\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n <div class=\"type-item\">\n <div>其他</div>\n <div class=\"base-subject flex\">\n <div v-for=\"item in otherOptions\" :key=\"item.type\" class=\"item flex-center\" @click=\"emits('select', item.type)\">\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n <div class=\"type-item\">\n <div>互动问答类型(支持设置结果项)</div>\n <div class=\"base-subject flex\">\n <div v-for=\"item in interactionOptions\" :key=\"item.type\" class=\"item flex-center\"\n @click=\"emits('select', item.type, true)\">\n <span>{{ item.label }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["emits","__emit","subjectOptions","ref","type","label","otherOptions","interactionOptions","ns","useNamespace"],"mappings":"6gBAMA,MAAMA,EAAQC,EACRC,EAAiBC,EAAI,CACzB,CACEC,KAAM,SACNC,MAAO,OACN,CACDD,KAAM,WACNC,MAAO,OAET,CACED,KAAM,aACNC,MAAO,OAET,CACED,KAAM,YACNC,MAAO,OAET,CACED,KAAM,QACNC,MAAO,OAET,CACED,KAAM,OACNC,MAAO,SAGLC,EAAeH,EAAI,CACvB,CACEC,KAAM,YACNC,MAAO,OAET,CACED,KAAM,WACNC,MAAO,SAGLE,EAAqBJ,EAAI,CAC7B,CACEC,KAAM,SACNC,MAAO,OACN,CACDD,KAAM,WACNC,MAAO,SAGLG,EAAKC,EAAa"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,createElementBlock as i,openBlock as t,normalizeClass as n,unref as o,createCommentVNode as r,withDirectives as a,createElementVNode as l,isRef as s,vModelText as m}from"vue";import{useNamespace as u}from"@qxs-bns/hooks";import{merge as p}from"lodash-es";import c from"tinymce/tinymce";import"tinymce/themes/silver/theme";import"tinymce/icons/default/icons";import"tinymce/models/dom";import"tinymce/plugins/autolink";import"tinymce/plugins/autoresize";import"tinymce/plugins/fullscreen";import"tinymce/plugins/image";import"tinymce/plugins/insertdatetime";import"tinymce/plugins/link";import"tinymce/plugins/lists";import"tinymce/plugins/media";import"tinymce/plugins/preview";import"tinymce/plugins/table";import"tinymce/plugins/wordcount";import"tinymce/plugins/code";import"tinymce/plugins/searchreplace";import"tinymce/plugins/nonbreaking";import{computed as d,ref as g,onMounted as y}from"vue-demi";const f=["id","name"];var h=e({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(e,{emit:h}){const b=h,k=u("file-upload"),v=d({get:()=>e.modelValue,set(e){b("update:modelValue",e)}}),_=g(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),x=e.assetsBasePath||"/node_modules/@qxs-bns/components/"+(import.meta.env.DEV?"src/tiny-mce-editor/public/":"es/public/tiny-mce-editor/"),w={selector:`textarea#${_.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${x}tinymce/langs/zh-Hans.js`,skin_url:`${x}tinymce/skins/ui/oxide`,content_css:`${x}tinymce/skins/content/default/content.min.css`,min_height:250,max_height:600,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:i=>{i.on("input change undo redo",(()=>{v.value=i.getContent()})),i.on("init",(()=>{i.setContent(v.value)})),e.config?.expandSetup?.(i)}},S=d((()=>{const i=w;return e.config.images_upload_handler||("string"==typeof i.plugins?i.plugins=i.plugins.replace("image",""):Array.isArray(i.plugins)&&(i.plugins=i.plugins.filter((e=>"image"!==e)))),p(i,e.config)}));return y((async()=>{"undefined"!=typeof window&&c.init(S.value)})),(e,u)=>(t(),i("div",{class:n(o(k).e("tiny-mce"))},[r(" 使用动态生成的 id "),a(l("textarea",{id:o(_),"onUpdate:modelValue":u[0]||(u[0]=e=>s(v)?v.value=e:null),name:o(_)},null,8,f),[[m,o(v)]])],2))}});export{h as default};
1
+ import{defineComponent as e,computed as i,ref as t,onMounted as n,createElementBlock as o,openBlock as r,normalizeClass as a,unref as l,createCommentVNode as s,withDirectives as m,createElementVNode as u,isRef as p,vModelText as c}from"vue";import{useNamespace as d}from"@qxs-bns/hooks";import{merge as g}from"lodash-es";import y from"tinymce/tinymce";import"tinymce/themes/silver/theme";import"tinymce/icons/default/icons";import"tinymce/models/dom";import"tinymce/plugins/autolink";import"tinymce/plugins/autoresize";import"tinymce/plugins/fullscreen";import"tinymce/plugins/image";import"tinymce/plugins/insertdatetime";import"tinymce/plugins/link";import"tinymce/plugins/lists";import"tinymce/plugins/media";import"tinymce/plugins/preview";import"tinymce/plugins/table";import"tinymce/plugins/wordcount";import"tinymce/plugins/code";import"tinymce/plugins/searchreplace";import"tinymce/plugins/nonbreaking";const f=["id","name"];var h=e({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(e,{emit:h}){const b=h,k=d("file-upload"),_=i({get:()=>e.modelValue,set(e){b("update:modelValue",e)}}),v=t(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),x=e.assetsBasePath||"/node_modules/@qxs-bns/components/"+(import.meta.env.DEV?"src/tiny-mce-editor/public/":"es/public/tiny-mce-editor/"),w={selector:`textarea#${v.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${x}tinymce/langs/zh-Hans.js`,skin_url:`${x}tinymce/skins/ui/oxide`,content_css:`${x}tinymce/skins/content/default/content.min.css`,min_height:250,max_height:600,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:i=>{i.on("input change undo redo",(()=>{_.value=i.getContent()})),i.on("init",(()=>{i.setContent(_.value)})),e.config?.expandSetup?.(i)}},S=i((()=>{const i=w;return e.config.images_upload_handler||("string"==typeof i.plugins?i.plugins=i.plugins.replace("image",""):Array.isArray(i.plugins)&&(i.plugins=i.plugins.filter((e=>"image"!==e)))),g(i,e.config)}));return n((async()=>{"undefined"!=typeof window&&y.init(S.value)})),(e,i)=>(r(),o("div",{class:a(l(k).e("tiny-mce"))},[s(" 使用动态生成的 id "),m(u("textarea",{id:l(v),"onUpdate:modelValue":i[0]||(i[0]=e=>p(_)?_.value=e:null),name:l(v)},null,8,f),[[c,l(_)]])],2))}});export{h as default};
2
2
  //# sourceMappingURL=tiny-mce-editor.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiny-mce-editor.vue.mjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from \"tinymce/tinymce\";\nimport { useNamespace } from \"@qxs-bns/hooks\";\nimport { merge } from \"lodash-es\";\nimport tinymce from \"tinymce/tinymce\";\n\n// 导入核心功能\nimport \"tinymce/themes/silver/theme\";\nimport \"tinymce/icons/default/icons\";\nimport \"tinymce/models/dom\";\n\nimport \"tinymce/plugins/autolink\";\nimport \"tinymce/plugins/autoresize\";\nimport \"tinymce/plugins/fullscreen\";\nimport \"tinymce/plugins/image\";\nimport \"tinymce/plugins/insertdatetime\";\nimport \"tinymce/plugins/link\";\nimport \"tinymce/plugins/lists\";\nimport \"tinymce/plugins/media\";\nimport \"tinymce/plugins/preview\";\nimport \"tinymce/plugins/table\";\nimport \"tinymce/plugins/wordcount\";\nimport \"tinymce/plugins/code\";\nimport \"tinymce/plugins/searchreplace\";\nimport \"tinymce/plugins/nonbreaking\";\n\ndefineOptions({\n name: \"QxsTinyMceEditor\",\n});\n\nconst {\n modelValue = \"\",\n config = {},\n assetsBasePath = \"\",\n} = defineProps<{\n modelValue: string;\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions[\"setup\"];\n };\n assetsBasePath?: string;\n}>();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst ns = useNamespace(\"file-upload\");\n\nconst colorScheme = \"light\";\n\nconst content = computed({\n get() {\n return modelValue;\n },\n set(val) {\n emit(\"update:modelValue\", val);\n },\n});\n\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n);\n\nconst basePath =\n assetsBasePath ||\n `/node_modules/@qxs-bns/components/${\n import.meta.env.DEV\n ? \"src/tiny-mce-editor/public/\"\n : \"es/public/tiny-mce-editor/\"\n }`;\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: \"gpl\",\n elementpath: false,\n language: \"zh-Hans\",\n\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === \"light\"\n ? \"tinymce/skins/ui/oxide\"\n : \"tinymce/skins/ui/oxide-dark\"\n }`,\n content_css: `${basePath}${\n colorScheme === \"light\"\n ? \"tinymce/skins/content/default/content.min.css\"\n : \"tinymce/skins/content/dark/content.min.css\"\n }`,\n min_height: 250,\n max_height: 600,\n plugins:\n \"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking\",\n toolbar:\n \"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code\",\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: \"sliding\",\n insertdatetime_formats: [\n \"%Y年%m月%d日\",\n \"%H点%M分%S秒\",\n \"%Y-%m-%d\",\n \"%H:%M:%S\",\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n // 监听编辑器内容变化\n editor.on(\"input change undo redo\", () => {\n content.value = editor.getContent();\n });\n\n // 编辑器初始化完成后设置内容\n editor.on(\"init\", () => {\n editor.setContent(content.value);\n });\n\n config?.expandSetup?.(editor);\n },\n};\n\nconst initSetting = computed(() => {\n const dealDefaultSetting = defaultSetting;\n if (!config.images_upload_handler) {\n // 删除 image 图片 plugin\n if (typeof dealDefaultSetting.plugins === \"string\") {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.replace(\n \"image\",\n \"\"\n );\n } else if (Array.isArray(dealDefaultSetting.plugins)) {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.filter(\n (plugin) => plugin !== \"image\"\n );\n }\n }\n return merge(dealDefaultSetting, config);\n});\n\nonMounted(async () => {\n if (typeof window !== \"undefined\") {\n tinymce.init(initSetting.value);\n }\n});\n</script>\n\n<template>\n <div :class=\"ns.e('tiny-mce')\">\n <!-- 使用动态生成的 id -->\n <textarea :id=\"uniqueId\" v-model=\"content\" :name=\"uniqueId\" />\n </div>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","content","computed","get","__props","modelValue","set","val","uniqueId","ref","Date","now","Math","random","toString","substr","basePath","assetsBasePath","env","DEV","defaultSetting","selector","value","promotion","license_key","elementpath","language","language_url","skin_url","content_css","min_height","max_height","plugins","toolbar","branding","autoresize","menubar","nonbreaking_force_tab","toolbar_mode","insertdatetime_formats","setup","editor","on","getContent","setContent","config","expandSetup","initSetting","dealDefaultSetting","images_upload_handler","replace","Array","isArray","filter","plugin","merge","onMounted","async","window","tinymce","init"],"mappings":"isCA0CA,MAAMA,EAAOC,EAEPC,EAAKC,EAAa,eAIlBC,EAAUC,EAAS,CACvBC,IAAM,IACGC,EAAUC,WAEnB,GAAAC,CAAIC,GACFV,EAAK,oBAAqBU,EAAG,IAK3BC,EAAWC,EACf,qBAAqBC,KAAKC,SAASC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,MAGpEC,EACJZ,EAAca,gBACd,kDACcC,IAAIC,IACZ,8BACA,8BAEFC,EAAmC,CAEvCC,SAAU,YAAYb,EAASc,QAC/BC,WAAW,EACXC,YAAa,MACbC,aAAa,EACbC,SAAU,UAEVC,aAAc,GAAGX,4BACjBY,SAAU,GAAGZ,0BAKba,YAAa,GAAGb,iDAKhBc,WAAY,IACZC,WAAY,IACZC,QACE,8HACFC,QACE,oPACFC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,uBAAuB,EACvBC,aAAc,UACdC,uBAAwB,CACtB,YACA,YACA,WACA,YA6BFC,MAAQC,IAECA,EAAAC,GAAG,0BAA0B,KAC1BzC,EAAAqB,MAAQmB,EAAOE,YAAW,IAI7BF,EAAAC,GAAG,QAAQ,KACTD,EAAAG,WAAW3C,EAAQqB,MAAK,IAG3BlB,EAAAyC,QAAEC,cAAcL,EAAM,GAI1BM,EAAc7C,GAAS,KAC3B,MAAM8C,EAAqB5B,EAcpB,OAbFhB,EAAMyC,OAACI,wBAEgC,iBAA/BD,EAAmBhB,QACTgB,EAAAhB,QAAUgB,EAAmBhB,QAAQkB,QACtD,QACA,IAEOC,MAAMC,QAAQJ,EAAmBhB,WACvBgB,EAAAhB,QAAUgB,EAAmBhB,QAAQqB,QACrDC,GAAsB,UAAXA,MAIXC,EAAMP,EAAoB5C,SAAM,WAGzCoD,GAAUC,UACc,oBAAXC,QACDC,EAAAC,KAAKb,EAAYzB,MAAK"}
1
+ {"version":3,"file":"tiny-mce-editor.vue.mjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from \"tinymce/tinymce\";\nimport { useNamespace } from \"@qxs-bns/hooks\";\nimport { merge } from \"lodash-es\";\nimport tinymce from \"tinymce/tinymce\";\n\n// 导入核心功能\nimport \"tinymce/themes/silver/theme\";\nimport \"tinymce/icons/default/icons\";\nimport \"tinymce/models/dom\";\n\nimport \"tinymce/plugins/autolink\";\nimport \"tinymce/plugins/autoresize\";\nimport \"tinymce/plugins/fullscreen\";\nimport \"tinymce/plugins/image\";\nimport \"tinymce/plugins/insertdatetime\";\nimport \"tinymce/plugins/link\";\nimport \"tinymce/plugins/lists\";\nimport \"tinymce/plugins/media\";\nimport \"tinymce/plugins/preview\";\nimport \"tinymce/plugins/table\";\nimport \"tinymce/plugins/wordcount\";\nimport \"tinymce/plugins/code\";\nimport \"tinymce/plugins/searchreplace\";\nimport \"tinymce/plugins/nonbreaking\";\n\ndefineOptions({\n name: \"QxsTinyMceEditor\",\n});\n\nconst {\n modelValue = \"\",\n config = {},\n assetsBasePath = \"\",\n} = defineProps<{\n modelValue: string;\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions[\"setup\"];\n };\n assetsBasePath?: string;\n}>();\n\nconst emit = defineEmits([\"update:modelValue\"]);\n\nconst ns = useNamespace(\"file-upload\");\n\nconst colorScheme = \"light\";\n\nconst content = computed({\n get() {\n return modelValue;\n },\n set(val) {\n emit(\"update:modelValue\", val);\n },\n});\n\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n);\n\nconst basePath =\n assetsBasePath ||\n `/node_modules/@qxs-bns/components/${\n import.meta.env.DEV\n ? \"src/tiny-mce-editor/public/\"\n : \"es/public/tiny-mce-editor/\"\n }`;\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: \"gpl\",\n elementpath: false,\n language: \"zh-Hans\",\n\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === \"light\"\n ? \"tinymce/skins/ui/oxide\"\n : \"tinymce/skins/ui/oxide-dark\"\n }`,\n content_css: `${basePath}${\n colorScheme === \"light\"\n ? \"tinymce/skins/content/default/content.min.css\"\n : \"tinymce/skins/content/dark/content.min.css\"\n }`,\n min_height: 250,\n max_height: 600,\n plugins:\n \"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking\",\n toolbar:\n \"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code\",\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: \"sliding\",\n insertdatetime_formats: [\n \"%Y年%m月%d日\",\n \"%H点%M分%S秒\",\n \"%Y-%m-%d\",\n \"%H:%M:%S\",\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n // 监听编辑器内容变化\n editor.on(\"input change undo redo\", () => {\n content.value = editor.getContent();\n });\n\n // 编辑器初始化完成后设置内容\n editor.on(\"init\", () => {\n editor.setContent(content.value);\n });\n\n config?.expandSetup?.(editor);\n },\n};\n\nconst initSetting = computed(() => {\n const dealDefaultSetting = defaultSetting;\n if (!config.images_upload_handler) {\n // 删除 image 图片 plugin\n if (typeof dealDefaultSetting.plugins === \"string\") {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.replace(\n \"image\",\n \"\"\n );\n } else if (Array.isArray(dealDefaultSetting.plugins)) {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.filter(\n (plugin) => plugin !== \"image\"\n );\n }\n }\n return merge(dealDefaultSetting, config);\n});\n\nonMounted(async () => {\n if (typeof window !== \"undefined\") {\n tinymce.init(initSetting.value);\n }\n});\n</script>\n\n<template>\n <div :class=\"ns.e('tiny-mce')\">\n <!-- 使用动态生成的 id -->\n <textarea :id=\"uniqueId\" v-model=\"content\" :name=\"uniqueId\" />\n </div>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","content","computed","get","__props","modelValue","set","val","uniqueId","ref","Date","now","Math","random","toString","substr","basePath","assetsBasePath","env","DEV","defaultSetting","selector","value","promotion","license_key","elementpath","language","language_url","skin_url","content_css","min_height","max_height","plugins","toolbar","branding","autoresize","menubar","nonbreaking_force_tab","toolbar_mode","insertdatetime_formats","setup","editor","on","getContent","setContent","config","expandSetup","initSetting","dealDefaultSetting","images_upload_handler","replace","Array","isArray","filter","plugin","merge","onMounted","async","window","tinymce","init"],"mappings":"2qCA0CA,MAAMA,EAAOC,EAEPC,EAAKC,EAAa,eAIlBC,EAAUC,EAAS,CACvBC,IAAM,IACGC,EAAUC,WAEnB,GAAAC,CAAIC,GACFV,EAAK,oBAAqBU,EAAG,IAK3BC,EAAWC,EACf,qBAAqBC,KAAKC,SAASC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,MAGpEC,EACJZ,EAAca,gBACd,kDACcC,IAAIC,IACZ,8BACA,8BAEFC,EAAmC,CAEvCC,SAAU,YAAYb,EAASc,QAC/BC,WAAW,EACXC,YAAa,MACbC,aAAa,EACbC,SAAU,UAEVC,aAAc,GAAGX,4BACjBY,SAAU,GAAGZ,0BAKba,YAAa,GAAGb,iDAKhBc,WAAY,IACZC,WAAY,IACZC,QACE,8HACFC,QACE,oPACFC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,uBAAuB,EACvBC,aAAc,UACdC,uBAAwB,CACtB,YACA,YACA,WACA,YA6BFC,MAAQC,IAECA,EAAAC,GAAG,0BAA0B,KAC1BzC,EAAAqB,MAAQmB,EAAOE,YAAW,IAI7BF,EAAAC,GAAG,QAAQ,KACTD,EAAAG,WAAW3C,EAAQqB,MAAK,IAG3BlB,EAAAyC,QAAEC,cAAcL,EAAM,GAI1BM,EAAc7C,GAAS,KAC3B,MAAM8C,EAAqB5B,EAcpB,OAbFhB,EAAMyC,OAACI,wBAEgC,iBAA/BD,EAAmBhB,QACTgB,EAAAhB,QAAUgB,EAAmBhB,QAAQkB,QACtD,QACA,IAEOC,MAAMC,QAAQJ,EAAmBhB,WACvBgB,EAAAhB,QAAUgB,EAAmBhB,QAAQqB,QACrDC,GAAsB,UAAXA,MAIXC,EAAMP,EAAoB5C,SAAM,WAGzCoD,GAAUC,UACc,oBAAXC,QACDC,EAAAC,KAAKb,EAAYzB,MAAK"}
@@ -1,2 +1,2 @@
1
- "use strict";exports.version="0.0.29";
1
+ "use strict";exports.version="0.0.30";
2
2
  //# sourceMappingURL=package.json.cjs.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("echarts"),a=require("../utils/config.cjs"),r=require("../utils/injectionKeys.cjs"),n=require("../utils/useCharts.cjs"),c=require("vue-demi");function o(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var s=o(t);const i={class:"data-chart-area-wrap"};var l=e.defineComponent({name:"DataChartArea",__name:"area",props:{chartOptions:{type:null,required:!0},chartData:{type:Object,required:!1,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})}},setup(t){const o=c.inject(r.InjectionChartMerge,(e=>e),!0);let l="中国";const u=c.ref({features:[],type:"FeatureCollection"}),m=c.ref(null);let d=null;const p=c.computed((()=>{const{xGroupByDesc:e,groupByDesc:a,colDesc:r,modelName:n,data:c}=t.chartData,s=[];r.forEach((e=>{c.forEach((t=>{s.push(Number(t[e]))}))}));const i={title:{text:n},tooltip:{formatter(e){let t=`${e.name}<br/>`;return i.series?.forEach((a=>{a.data?.forEach((r=>{r.name===e.name&&(t+=`${a.name}:${r.value}</br>`)})),t.includes(a.name)||(t+=`${a.name}:-</br>`)})),t}},visualMap:{min:Math.min(...s,0),max:Math.max(...s,0)},series:r?.map((t=>{const r=[],n=a.find((e=>e.colDesc===("中国"===l?"医院所在省":"医院所在市"))),o={};c.map((a=>{const r=a[("中国"===l?e?.colDesc||"":n?.colDesc)||""],c=u.value.features?.find((({properties:{name:e}})=>e?.includes(r)));return{name:c?.properties?.name||"",value:Number(a[t])}})).forEach((e=>{o[e.name]?o[e.name]=o[e.name]+e.value:o[e.name]=e.value}));for(const e in o)r.push({name:e,value:o[e]});return{name:t,type:"map",map:l,data:r}}))};return o(i,t.chartOptions)}));async function f(e="中国"){if(d&&!d.isDisposed()){d.showLoading();try{const t=await a.getGeoJsonData({adcode:e});if(!t)return void d.hideLoading();u.value=t,l=e;const r=s.registerMap(e,t);return d.hideLoading(),r}catch(e){console.log(e),d.hideLoading()}}}return n.useCharts({chartDOM:m,chartOptions:p,chartData:c.computed((()=>t.chartData)),initAfter:async function(){await f(),d&&!d.isDisposed()&&(d.getZr()?.on("click",(e=>{e.target||"中国"===l||f("中国")})),d.on("click",(e=>{const a=t.chartData.groupByDesc?.some((e=>"医院所在市"===e.colDesc));"中国"===l&&a&&f(e.name).then((()=>{d&&!d.isDisposed()&&d.setOption(p.value)}))})))},callback:e=>{d=e}}),(t,a)=>(e.openBlock(),e.createElementBlock("div",i,[e.createCommentVNode(' <el-select\n v-if="isShowSelect"\n v-model="adcode"\n class="city-select"\n size="small"\n @change="selectChina"\n >\n <el-option\n v-for="item in selectList"\n :key="item.value"\n :label="item.label"\n :value="item.value"\n />\n </el-select> '),e.createElementVNode("div",{ref_key:"dataChartArea",ref:m,class:"data-chart-area"},null,512)]))}});exports.default=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("echarts"),a=require("../utils/config.cjs"),r=require("../utils/injectionKeys.cjs"),n=require("../utils/useCharts.cjs");function c(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var o=c(t);const s={class:"data-chart-area-wrap"};var i=e.defineComponent({name:"DataChartArea",__name:"area",props:{chartOptions:{type:null,required:!0},chartData:{type:Object,required:!1,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})}},setup(t){const c=e.inject(r.InjectionChartMerge,(e=>e),!0);let i="中国";const l=e.ref({features:[],type:"FeatureCollection"}),u=e.ref(null);let m=null;const p=e.computed((()=>{const{xGroupByDesc:e,groupByDesc:a,colDesc:r,modelName:n,data:o}=t.chartData,s=[];r.forEach((e=>{o.forEach((t=>{s.push(Number(t[e]))}))}));const u={title:{text:n},tooltip:{formatter(e){let t=`${e.name}<br/>`;return u.series?.forEach((a=>{a.data?.forEach((r=>{r.name===e.name&&(t+=`${a.name}:${r.value}</br>`)})),t.includes(a.name)||(t+=`${a.name}:-</br>`)})),t}},visualMap:{min:Math.min(...s,0),max:Math.max(...s,0)},series:r?.map((t=>{const r=[],n=a.find((e=>e.colDesc===("中国"===i?"医院所在省":"医院所在市"))),c={};o.map((a=>{const r=a[("中国"===i?e?.colDesc||"":n?.colDesc)||""],c=l.value.features?.find((({properties:{name:e}})=>e?.includes(r)));return{name:c?.properties?.name||"",value:Number(a[t])}})).forEach((e=>{c[e.name]?c[e.name]=c[e.name]+e.value:c[e.name]=e.value}));for(const e in c)r.push({name:e,value:c[e]});return{name:t,type:"map",map:i,data:r}}))};return c(u,t.chartOptions)}));async function d(e="中国"){if(m&&!m.isDisposed()){m.showLoading();try{const t=await a.getGeoJsonData({adcode:e});if(!t)return void m.hideLoading();l.value=t,i=e;const r=o.registerMap(e,t);return m.hideLoading(),r}catch(e){console.log(e),m.hideLoading()}}}return n.useCharts({chartDOM:u,chartOptions:p,chartData:e.computed((()=>t.chartData)),initAfter:async function(){await d(),m&&!m.isDisposed()&&(m.getZr()?.on("click",(e=>{e.target||"中国"===i||d("中国")})),m.on("click",(e=>{const a=t.chartData.groupByDesc?.some((e=>"医院所在市"===e.colDesc));"中国"===i&&a&&d(e.name).then((()=>{m&&!m.isDisposed()&&m.setOption(p.value)}))})))},callback:e=>{m=e}}),(t,a)=>(e.openBlock(),e.createElementBlock("div",s,[e.createCommentVNode(' <el-select\n v-if="isShowSelect"\n v-model="adcode"\n class="city-select"\n size="small"\n @change="selectChina"\n >\n <el-option\n v-for="item in selectList"\n :key="item.value"\n :label="item.label"\n :value="item.value"\n />\n </el-select> '),e.createElementVNode("div",{ref_key:"dataChartArea",ref:u,class:"data-chart-area"},null,512)]))}});exports.default=i;
2
2
  //# sourceMappingURL=area.vue2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"area.vue2.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/area.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ECharts } from 'echarts/types/dist/echarts'\nimport type { EChartsOption, GeoJson, IFormatPublicData } from '../types'\nimport * as echarts from 'echarts'\nimport { getGeoJsonData } from '../utils/config'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartArea',\n})\n\nconst {\n chartOptions,\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n} = defineProps<{\n chartOptions: EChartsOption\n chartData?: IFormatPublicData\n}>()\n\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nlet adcode = '中国'\nconst currentGeoJson = ref<GeoJson>({\n features: [],\n type: 'FeatureCollection',\n})\nconst dataChartArea = ref(null)\nlet myChart: ECharts | null = null\n\nconst areaChartOptions = computed<EChartsOption>(() => {\n const { xGroupByDesc, groupByDesc, colDesc, modelName, data } = chartData\n const allNums: number[] = []\n colDesc.forEach((item) => {\n data.forEach((dataItem) => {\n allNums.push(Number(dataItem[item]))\n })\n })\n const config = {\n title: {\n text: modelName,\n },\n tooltip: {\n formatter(params: { name: string }) {\n let res = `${params.name}<br/>`\n config.series?.forEach((colDescItem) => {\n colDescItem.data?.forEach((item) => {\n if (item.name === params.name) {\n res += `${colDescItem.name}:${item.value}</br>`\n }\n })\n if (!res.includes(colDescItem.name)) {\n res += `${colDescItem.name}:-</br>`\n }\n })\n return res\n },\n },\n visualMap: {\n min: Math.min(...allNums, 0),\n max: Math.max(...allNums, 0),\n },\n series: colDesc?.map((colDescItem) => {\n const seriesData = []\n const row = groupByDesc.find(item => item.colDesc === (adcode === '中国' ? '医院所在省' : '医院所在市'))\n // 先用省份数据,如果没有再用市级数据\n\n const arr: {\n [key: string]: number\n } = {}\n data.map((item) => {\n const sourceName = item[(adcode === '中国' ? (xGroupByDesc?.colDesc || '') : row?.colDesc) || '']\n const find = currentGeoJson.value.features?.find(({ properties: { name } }: { properties: { name?: string } }) => name?.includes(sourceName as string))\n return {\n name: find?.properties?.name || '',\n value: Number(item[colDescItem]),\n }\n }).forEach((item) => {\n if (!arr[item.name]) {\n arr[item.name] = item.value\n }\n else {\n arr[item.name] = arr[item.name] + item.value\n }\n })\n for (const key in arr) {\n seriesData.push({\n name: key,\n value: arr[key],\n })\n }\n return {\n name: colDescItem,\n type: 'map',\n map: adcode,\n data: seriesData,\n }\n }),\n }\n\n return merge(config, chartOptions)\n})\n// const propsXgroupByInfos = computed(() => {\n// const { groupByDesc } = chartData\n// const [row] = groupByDesc.filter(item => item.colDesc === '医院所在省')\n// if (row) {\n// return row\n// }\n// else {\n// const [res] = groupByDesc.filter(item => item.colDesc === '医院所在市')\n// return res\n// }\n// })\n// const selectList = computed(() => {\n// let arr = [{ label: '中国', value: '中国' }]\n// if (chartData.groupByDesc.length === 1 && propsXgroupByInfos.value?.colDesc === '医院所在市') {\n// const {\n// data,\n// xGroupByDesc: { colDesc },\n// } = chartData\n// arr = data.map((item) => {\n// return {\n// label: item[colDesc],\n// value: item[colDesc],\n// }\n// })\n// }\n// return arr\n// })\n\n// const isShowSelect = computed(() => {\n// const { groupByDesc } = chartData.value\n// return groupByDesc[0] && groupByDesc[0].colDesc !== '医院所在省' && groupByDesc.length === 1 && selectList.value.length\n// })\n\nasync function initAfter() {\n await registerMap()\n // 添加判断,确保图表实例存在且未被销毁\n if (myChart && !myChart.isDisposed()) {\n // charts 监听事件\n myChart.getZr()?.on('click', (params: { target: HTMLElement }) => {\n if (!params.target && adcode !== '中国') {\n registerMap('中国')\n }\n })\n myChart.on('click', (params: { name: string }) => {\n const flag = chartData.groupByDesc?.some(item => item.colDesc === '医院所在市')\n\n if (adcode === '中国' && flag) {\n registerMap(params.name).then(() => {\n if (myChart && !myChart.isDisposed()) {\n myChart.setOption(areaChartOptions.value)\n }\n })\n }\n })\n }\n}\n// function selectChina() {\n// registerMap(adcode)\n// }\nasync function registerMap(keyword = '中国') {\n if (!myChart || myChart.isDisposed()) {\n return\n }\n\n myChart.showLoading()\n try {\n const geoJson = await getGeoJsonData({ adcode: keyword })\n if (!geoJson) {\n myChart.hideLoading() // 添加加载状态的清除\n return\n }\n currentGeoJson.value = geoJson\n adcode = keyword\n\n const result = echarts.registerMap(keyword, geoJson as any)\n myChart.hideLoading() // 添加加载状态的清除\n return result\n }\n catch (error) {\n console.log(error)\n myChart.hideLoading() // 添加加载状态的清除\n }\n}\nuseCharts({\n chartDOM: dataChartArea,\n chartOptions: areaChartOptions,\n chartData: computed(() => chartData),\n initAfter,\n callback: (chart) => {\n myChart = chart\n },\n})\n</script>\n\n<template>\n <div class=\"data-chart-area-wrap\">\n <!-- <el-select\n v-if=\"isShowSelect\"\n v-model=\"adcode\"\n class=\"city-select\"\n size=\"small\"\n @change=\"selectChina\"\n >\n <el-option\n v-for=\"item in selectList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select> -->\n <div ref=\"dataChartArea\" class=\"data-chart-area\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-area-wrap {\n position: relative;\n\n .city-select {\n position: absolute;\n top: 10px;\n right: 100px;\n z-index: 1;\n width: 120px;\n }\n\n .data-chart-area {\n height: 100%;\n }\n}\n</style>\n"],"names":["merge","inject","InjectionChartMerge","v","adcode","currentGeoJson","ref","features","type","dataChartArea","myChart","areaChartOptions","computed","xGroupByDesc","groupByDesc","colDesc","modelName","data","__props","chartData","allNums","forEach","item","dataItem","push","Number","config","title","text","tooltip","formatter","params","res","name","series","colDescItem","value","includes","visualMap","min","Math","max","map","seriesData","row","find","arr","sourceName","properties","key","chartOptions","async","registerMap","keyword","isDisposed","showLoading","geoJson","getGeoJsonData","hideLoading","result","echarts","error","console","log","useCharts","chartDOM","initAfter","getZr","on","target","flag","some","then","setOption","callback","chart"],"mappings":"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"}
1
+ {"version":3,"file":"area.vue2.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/area.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ECharts } from 'echarts/types/dist/echarts'\nimport type { EChartsOption, GeoJson, IFormatPublicData } from '../types'\nimport * as echarts from 'echarts'\nimport { getGeoJsonData } from '../utils/config'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartArea',\n})\n\nconst {\n chartOptions,\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n} = defineProps<{\n chartOptions: EChartsOption\n chartData?: IFormatPublicData\n}>()\n\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nlet adcode = '中国'\nconst currentGeoJson = ref<GeoJson>({\n features: [],\n type: 'FeatureCollection',\n})\nconst dataChartArea = ref(null)\nlet myChart: ECharts | null = null\n\nconst areaChartOptions = computed<EChartsOption>(() => {\n const { xGroupByDesc, groupByDesc, colDesc, modelName, data } = chartData\n const allNums: number[] = []\n colDesc.forEach((item) => {\n data.forEach((dataItem) => {\n allNums.push(Number(dataItem[item]))\n })\n })\n const config = {\n title: {\n text: modelName,\n },\n tooltip: {\n formatter(params: { name: string }) {\n let res = `${params.name}<br/>`\n config.series?.forEach((colDescItem) => {\n colDescItem.data?.forEach((item) => {\n if (item.name === params.name) {\n res += `${colDescItem.name}:${item.value}</br>`\n }\n })\n if (!res.includes(colDescItem.name)) {\n res += `${colDescItem.name}:-</br>`\n }\n })\n return res\n },\n },\n visualMap: {\n min: Math.min(...allNums, 0),\n max: Math.max(...allNums, 0),\n },\n series: colDesc?.map((colDescItem) => {\n const seriesData = []\n const row = groupByDesc.find(item => item.colDesc === (adcode === '中国' ? '医院所在省' : '医院所在市'))\n // 先用省份数据,如果没有再用市级数据\n\n const arr: {\n [key: string]: number\n } = {}\n data.map((item) => {\n const sourceName = item[(adcode === '中国' ? (xGroupByDesc?.colDesc || '') : row?.colDesc) || '']\n const find = currentGeoJson.value.features?.find(({ properties: { name } }: { properties: { name?: string } }) => name?.includes(sourceName as string))\n return {\n name: find?.properties?.name || '',\n value: Number(item[colDescItem]),\n }\n }).forEach((item) => {\n if (!arr[item.name]) {\n arr[item.name] = item.value\n }\n else {\n arr[item.name] = arr[item.name] + item.value\n }\n })\n for (const key in arr) {\n seriesData.push({\n name: key,\n value: arr[key],\n })\n }\n return {\n name: colDescItem,\n type: 'map',\n map: adcode,\n data: seriesData,\n }\n }),\n }\n\n return merge(config, chartOptions)\n})\n// const propsXgroupByInfos = computed(() => {\n// const { groupByDesc } = chartData\n// const [row] = groupByDesc.filter(item => item.colDesc === '医院所在省')\n// if (row) {\n// return row\n// }\n// else {\n// const [res] = groupByDesc.filter(item => item.colDesc === '医院所在市')\n// return res\n// }\n// })\n// const selectList = computed(() => {\n// let arr = [{ label: '中国', value: '中国' }]\n// if (chartData.groupByDesc.length === 1 && propsXgroupByInfos.value?.colDesc === '医院所在市') {\n// const {\n// data,\n// xGroupByDesc: { colDesc },\n// } = chartData\n// arr = data.map((item) => {\n// return {\n// label: item[colDesc],\n// value: item[colDesc],\n// }\n// })\n// }\n// return arr\n// })\n\n// const isShowSelect = computed(() => {\n// const { groupByDesc } = chartData.value\n// return groupByDesc[0] && groupByDesc[0].colDesc !== '医院所在省' && groupByDesc.length === 1 && selectList.value.length\n// })\n\nasync function initAfter() {\n await registerMap()\n // 添加判断,确保图表实例存在且未被销毁\n if (myChart && !myChart.isDisposed()) {\n // charts 监听事件\n myChart.getZr()?.on('click', (params: { target: HTMLElement }) => {\n if (!params.target && adcode !== '中国') {\n registerMap('中国')\n }\n })\n myChart.on('click', (params: { name: string }) => {\n const flag = chartData.groupByDesc?.some(item => item.colDesc === '医院所在市')\n\n if (adcode === '中国' && flag) {\n registerMap(params.name).then(() => {\n if (myChart && !myChart.isDisposed()) {\n myChart.setOption(areaChartOptions.value)\n }\n })\n }\n })\n }\n}\n// function selectChina() {\n// registerMap(adcode)\n// }\nasync function registerMap(keyword = '中国') {\n if (!myChart || myChart.isDisposed()) {\n return\n }\n\n myChart.showLoading()\n try {\n const geoJson = await getGeoJsonData({ adcode: keyword })\n if (!geoJson) {\n myChart.hideLoading() // 添加加载状态的清除\n return\n }\n currentGeoJson.value = geoJson\n adcode = keyword\n\n const result = echarts.registerMap(keyword, geoJson as any)\n myChart.hideLoading() // 添加加载状态的清除\n return result\n }\n catch (error) {\n console.log(error)\n myChart.hideLoading() // 添加加载状态的清除\n }\n}\nuseCharts({\n chartDOM: dataChartArea,\n chartOptions: areaChartOptions,\n chartData: computed(() => chartData),\n initAfter,\n callback: (chart) => {\n myChart = chart\n },\n})\n</script>\n\n<template>\n <div class=\"data-chart-area-wrap\">\n <!-- <el-select\n v-if=\"isShowSelect\"\n v-model=\"adcode\"\n class=\"city-select\"\n size=\"small\"\n @change=\"selectChina\"\n >\n <el-option\n v-for=\"item in selectList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n />\n </el-select> -->\n <div ref=\"dataChartArea\" class=\"data-chart-area\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-area-wrap {\n position: relative;\n\n .city-select {\n position: absolute;\n top: 10px;\n right: 100px;\n z-index: 1;\n width: 120px;\n }\n\n .data-chart-area {\n height: 100%;\n }\n}\n</style>\n"],"names":["merge","inject","InjectionChartMerge","v","adcode","currentGeoJson","ref","features","type","dataChartArea","myChart","areaChartOptions","computed","xGroupByDesc","groupByDesc","colDesc","modelName","data","__props","chartData","allNums","forEach","item","dataItem","push","Number","config","title","text","tooltip","formatter","params","res","name","series","colDescItem","value","includes","visualMap","min","Math","max","map","seriesData","row","find","arr","sourceName","properties","key","chartOptions","async","registerMap","keyword","isDisposed","showLoading","geoJson","getGeoJsonData","hideLoading","result","echarts","error","console","log","useCharts","chartDOM","initAfter","getZr","on","target","flag","some","then","setOption","callback","chart"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),t=require("../utils/injectionKeys.cjs"),s=require("../utils/useCharts.cjs"),r=require("vue-demi"),c=e.defineComponent({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(c){const o=r.inject(t.InjectionChartMerge,(e=>e),!0),l=r.ref(null),i=r.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:s,data:r=[],modelName:l}=c.chartData,i=Array.from(new Set(r.map((e=>e[t.colDesc||""]))))||[],u=s.find((e=>!e.xAxis))||{groupByValues:[],colDesc:""};u.groupByValues=a.uniq(r.map((e=>u.colDesc?String(e[u.colDesc]):""))),t&&t.groupByValues&&(t.groupByValues=a.uniq(r.map((e=>t.colDesc?String(e[t.colDesc]):""))));const n={title:{text:l},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:i},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:i.length<15}]};if(1===s.length)n.series=e.map((e=>({name:e,data:r.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),n.legend.data=e;else if(2===s.length){const a=e.map((e=>u.groupByValues?.map((a=>{const s={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return s.data=(t.groupByValues||[]).map((e=>{let c=null;return r.forEach((r=>{u.colDesc&&r[u.colDesc]===a&&t.colDesc&&r[t.colDesc]===e&&s.stack&&(c=r[s.stack]??null)})),c||""})).filter((e=>""!==e)),s}))||[])).flat();n.series=a,delete n.legend}function p(e,a,t,s){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))}switch(c.subShowType){case"bar-simple":case"default":p(n.xAxis,"category",i,t.colDesc||""),p(n.yAxis,"value");break;case"bar-y-category":p(n.xAxis,"value"),p(n.yAxis,"category",i,t.colDesc||"")}return o(n,c.chartOptions)}));return s.useCharts({chartDOM:l,chartOptions:i,chartData:r.computed((()=>c.chartData))}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartBar",ref:l,class:"data-chart-bar"},null,512))}});exports.default=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),t=require("../utils/injectionKeys.cjs"),s=require("../utils/useCharts.cjs"),r=e.defineComponent({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(r){const c=e.inject(t.InjectionChartMerge,(e=>e),!0),o=e.ref(null),l=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:s,data:o=[],modelName:l}=r.chartData,i=Array.from(new Set(o.map((e=>e[t.colDesc||""]))))||[],u=s.find((e=>!e.xAxis))||{groupByValues:[],colDesc:""};u.groupByValues=a.uniq(o.map((e=>u.colDesc?String(e[u.colDesc]):""))),t&&t.groupByValues&&(t.groupByValues=a.uniq(o.map((e=>t.colDesc?String(e[t.colDesc]):""))));const n={title:{text:l},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:i},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:i.length<15}]};if(1===s.length)n.series=e.map((e=>({name:e,data:o.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),n.legend.data=e;else if(2===s.length){const a=e.map((e=>u.groupByValues?.map((a=>{const s={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return s.data=(t.groupByValues||[]).map((e=>{let r=null;return o.forEach((c=>{u.colDesc&&c[u.colDesc]===a&&t.colDesc&&c[t.colDesc]===e&&s.stack&&(r=c[s.stack]??null)})),r||""})).filter((e=>""!==e)),s}))||[])).flat();n.series=a,delete n.legend}function p(e,a,t,s){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))}switch(r.subShowType){case"bar-simple":case"default":p(n.xAxis,"category",i,t.colDesc||""),p(n.yAxis,"value");break;case"bar-y-category":p(n.xAxis,"value"),p(n.yAxis,"category",i,t.colDesc||"")}return c(n,r.chartOptions)}));return s.useCharts({chartDOM:o,chartOptions:l,chartData:e.computed((()=>r.chartData))}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartBar",ref:o,class:"data-chart-bar"},null,512))}});exports.default=r;
2
2
  //# sourceMappingURL=bar.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"bar.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendComponentOption, XAXisComponentOption, YAXisComponentOption } from 'echarts'\nimport type {\n EChartData,\n EChartsOption,\n IFormatPublicData,\n SeriesOption,\n} from '../types'\nimport { uniq } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\n// 定义组件名称\ndefineOptions({\n name: 'DataChartBar',\n})\n\n// 定义组件属性\nconst {\n chartOptions,\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n subShowType = 'bar-simple',\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\n\n// 注入合并函数,并明确类型\nconst merge = inject(InjectionChartMerge, (v: any) => v, true) as (config: EChartsOption, chartOptions: EChartsOption) => EChartsOption\nconst dataChartBar = ref<HTMLElement | null>(null)\n\n// 计算图表选项\nconst barChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, groupByDesc, data = [], modelName } = chartData\n\n const axisData = Array.from(new Set(data.map(item => item[xGroupByDesc.colDesc || '']))) || []\n const yGroupByDesc: EChartData['desc']['groupByDesc'][0] = groupByDesc.find(item => !item.xAxis) || {\n groupByDesc: null,\n groupByValues: [],\n colDesc: '',\n xAxis: false,\n }\n\n yGroupByDesc.groupByValues = uniq(data.map(item => yGroupByDesc.colDesc ? String(item[yGroupByDesc.colDesc]) : ''))\n if (xGroupByDesc && xGroupByDesc.groupByValues) {\n xGroupByDesc.groupByValues = uniq(data.map(item => xGroupByDesc.colDesc ? String(item[xGroupByDesc.colDesc]) : ''))\n }\n\n const config: EChartsOption = {\n title: {\n text: modelName,\n },\n xAxis: {\n name: '',\n type: 'category',\n axisLabel: {\n interval: 0, // 强制显示所有标签\n formatter(value: string) {\n const screenshotLength = 5\n return value.length > screenshotLength ? `${value.substring(0, screenshotLength)}...` : value // 截取前5个字符并添加省略号\n },\n },\n data: axisData,\n },\n yAxis: {\n type: 'value',\n },\n legend: {\n data: [],\n },\n dataZoom: [{\n type: 'inside',\n disabled: axisData.length < 15,\n }],\n }\n\n // 堆叠图\n if (groupByDesc.length === 1) {\n config.series = colDesc.map((yItem) => {\n return {\n name: yItem,\n data: data.map(item => item[yItem]),\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n label: {\n show: true,\n position: 'inside',\n },\n }\n });\n (config.legend as LegendComponentOption).data = colDesc\n }\n else if (groupByDesc.length === 2) {\n const arr = colDesc.map((colDescItem) => {\n return yGroupByDesc.groupByValues?.map((yGroupByDescItem) => {\n const obj: SeriesOption = {\n name: `${yGroupByDescItem || '/'}-${colDescItem}`,\n type: 'bar',\n stack: colDescItem,\n emphasis: {\n focus: 'series',\n },\n data: [],\n label: {\n show: true,\n position: 'inside',\n },\n }\n obj.data = (xGroupByDesc.groupByValues || []).map((xGroupByDescItem) => {\n let targetVal: number | string | null = null\n data.forEach((item) => {\n if (yGroupByDesc.colDesc && item[yGroupByDesc.colDesc] === yGroupByDescItem && xGroupByDesc.colDesc && item[xGroupByDesc.colDesc] === xGroupByDescItem) {\n if (obj.stack) {\n targetVal = item[obj.stack] ?? null\n }\n }\n })\n return targetVal || ''\n }).filter(v => v !== '')\n return obj\n }) || []\n }).flat()\n\n config.series = arr\n delete config.legend\n }\n\n // 1. 定义轴类型\n type CategoryAxisOption = XAXisComponentOption & {\n type: 'category'\n data: (string | number)[]\n }\n\n // 2. 创建配置轴的辅助函数\n function configureAxis(\n axis: XAXisComponentOption | XAXisComponentOption[] | YAXisComponentOption | YAXisComponentOption[] | undefined,\n type: 'category' | 'value',\n data?: (string | number)[],\n name?: string,\n ) {\n if (Array.isArray(axis)) {\n axis.forEach((item) => {\n if (item) {\n item.type = type\n if (type === 'category') {\n (item as CategoryAxisOption).data = data || []\n item.name = name || ''\n }\n }\n })\n }\n else if (axis) {\n axis.type = type\n if (type === 'category') {\n (axis as CategoryAxisOption).data = data || []\n axis.name = name || ''\n }\n }\n }\n\n // 3. 使用配置函数\n switch (subShowType) {\n case 'bar-simple':\n case 'default':\n configureAxis(config.xAxis, 'category', axisData, xGroupByDesc.colDesc || '')\n configureAxis(config.yAxis, 'value')\n break\n\n case 'bar-y-category':\n configureAxis(config.xAxis, 'value')\n configureAxis(config.yAxis, 'category', axisData, xGroupByDesc.colDesc || '')\n break\n }\n\n return merge(config, chartOptions)\n})\n\nuseCharts({ chartDOM: dataChartBar, chartOptions: barChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartBar\" class=\"data-chart-bar\" />\n</template>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartBar","ref","barChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","axisData","Array","from","Set","map","item","yGroupByDesc","find","xAxis","groupByValues","uniq","String","config","title","text","name","type","axisLabel","interval","formatter","value","length","substring","yAxis","legend","dataZoom","disabled","series","yItem","emphasis","focus","label","show","position","arr","colDescItem","yGroupByDescItem","obj","stack","xGroupByDescItem","targetVal","forEach","filter","flat","configureAxis","axis","isArray","subShowType","chartOptions","useCharts","chartDOM"],"mappings":"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"}
1
+ {"version":3,"file":"bar.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/bar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendComponentOption, XAXisComponentOption, YAXisComponentOption } from 'echarts'\nimport type {\n EChartData,\n EChartsOption,\n IFormatPublicData,\n SeriesOption,\n} from '../types'\nimport { uniq } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\n// 定义组件名称\ndefineOptions({\n name: 'DataChartBar',\n})\n\n// 定义组件属性\nconst {\n chartOptions,\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n subShowType = 'bar-simple',\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\n\n// 注入合并函数,并明确类型\nconst merge = inject(InjectionChartMerge, (v: any) => v, true) as (config: EChartsOption, chartOptions: EChartsOption) => EChartsOption\nconst dataChartBar = ref<HTMLElement | null>(null)\n\n// 计算图表选项\nconst barChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, groupByDesc, data = [], modelName } = chartData\n\n const axisData = Array.from(new Set(data.map(item => item[xGroupByDesc.colDesc || '']))) || []\n const yGroupByDesc: EChartData['desc']['groupByDesc'][0] = groupByDesc.find(item => !item.xAxis) || {\n groupByDesc: null,\n groupByValues: [],\n colDesc: '',\n xAxis: false,\n }\n\n yGroupByDesc.groupByValues = uniq(data.map(item => yGroupByDesc.colDesc ? String(item[yGroupByDesc.colDesc]) : ''))\n if (xGroupByDesc && xGroupByDesc.groupByValues) {\n xGroupByDesc.groupByValues = uniq(data.map(item => xGroupByDesc.colDesc ? String(item[xGroupByDesc.colDesc]) : ''))\n }\n\n const config: EChartsOption = {\n title: {\n text: modelName,\n },\n xAxis: {\n name: '',\n type: 'category',\n axisLabel: {\n interval: 0, // 强制显示所有标签\n formatter(value: string) {\n const screenshotLength = 5\n return value.length > screenshotLength ? `${value.substring(0, screenshotLength)}...` : value // 截取前5个字符并添加省略号\n },\n },\n data: axisData,\n },\n yAxis: {\n type: 'value',\n },\n legend: {\n data: [],\n },\n dataZoom: [{\n type: 'inside',\n disabled: axisData.length < 15,\n }],\n }\n\n // 堆叠图\n if (groupByDesc.length === 1) {\n config.series = colDesc.map((yItem) => {\n return {\n name: yItem,\n data: data.map(item => item[yItem]),\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n label: {\n show: true,\n position: 'inside',\n },\n }\n });\n (config.legend as LegendComponentOption).data = colDesc\n }\n else if (groupByDesc.length === 2) {\n const arr = colDesc.map((colDescItem) => {\n return yGroupByDesc.groupByValues?.map((yGroupByDescItem) => {\n const obj: SeriesOption = {\n name: `${yGroupByDescItem || '/'}-${colDescItem}`,\n type: 'bar',\n stack: colDescItem,\n emphasis: {\n focus: 'series',\n },\n data: [],\n label: {\n show: true,\n position: 'inside',\n },\n }\n obj.data = (xGroupByDesc.groupByValues || []).map((xGroupByDescItem) => {\n let targetVal: number | string | null = null\n data.forEach((item) => {\n if (yGroupByDesc.colDesc && item[yGroupByDesc.colDesc] === yGroupByDescItem && xGroupByDesc.colDesc && item[xGroupByDesc.colDesc] === xGroupByDescItem) {\n if (obj.stack) {\n targetVal = item[obj.stack] ?? null\n }\n }\n })\n return targetVal || ''\n }).filter(v => v !== '')\n return obj\n }) || []\n }).flat()\n\n config.series = arr\n delete config.legend\n }\n\n // 1. 定义轴类型\n type CategoryAxisOption = XAXisComponentOption & {\n type: 'category'\n data: (string | number)[]\n }\n\n // 2. 创建配置轴的辅助函数\n function configureAxis(\n axis: XAXisComponentOption | XAXisComponentOption[] | YAXisComponentOption | YAXisComponentOption[] | undefined,\n type: 'category' | 'value',\n data?: (string | number)[],\n name?: string,\n ) {\n if (Array.isArray(axis)) {\n axis.forEach((item) => {\n if (item) {\n item.type = type\n if (type === 'category') {\n (item as CategoryAxisOption).data = data || []\n item.name = name || ''\n }\n }\n })\n }\n else if (axis) {\n axis.type = type\n if (type === 'category') {\n (axis as CategoryAxisOption).data = data || []\n axis.name = name || ''\n }\n }\n }\n\n // 3. 使用配置函数\n switch (subShowType) {\n case 'bar-simple':\n case 'default':\n configureAxis(config.xAxis, 'category', axisData, xGroupByDesc.colDesc || '')\n configureAxis(config.yAxis, 'value')\n break\n\n case 'bar-y-category':\n configureAxis(config.xAxis, 'value')\n configureAxis(config.yAxis, 'category', axisData, xGroupByDesc.colDesc || '')\n break\n }\n\n return merge(config, chartOptions)\n})\n\nuseCharts({ chartDOM: dataChartBar, chartOptions: barChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartBar\" class=\"data-chart-bar\" />\n</template>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartBar","ref","barChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","axisData","Array","from","Set","map","item","yGroupByDesc","find","xAxis","groupByValues","uniq","String","config","title","text","name","type","axisLabel","interval","formatter","value","length","substring","yAxis","legend","dataZoom","disabled","series","yItem","emphasis","focus","label","show","position","arr","colDescItem","yGroupByDescItem","obj","stack","xGroupByDescItem","targetVal","forEach","filter","flat","configureAxis","axis","isArray","subShowType","chartOptions","useCharts","chartDOM"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),a=require("../utils/useCharts.cjs"),r=require("vue-demi"),c=e.defineComponent({name:"DataChartFunnel",__name:"funnel",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(c){const n=r.ref(),s=r.inject(t.InjectionChartMerge,(e=>e),!0),l=r.computed((()=>{const{colDesc:e,xGroupByDesc:t,modelName:a,data:r}=c.chartData,n={title:{text:a},legend:{},series:e.map((e=>({name:e,type:"funnel",left:"10%",width:"80%",label:{formatter:"{c}"},labelLine:{show:!1},itemStyle:{opacity:.7},emphasis:{label:{position:"inside",formatter:`{b}${e}: {c}`}},data:r.map((a=>({name:a[t?.colDesc||""],value:a[e]})))})))};return 1!==e.length&&(n.legend.data=e),s(n,c.chartOptions)}));return a.useCharts({chartDOM:n,chartOptions:l,chartData:r.computed((()=>c.chartData))}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartFunnel",ref:n,class:"data-chart-funnel"},null,512))}});exports.default=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),a=require("../utils/useCharts.cjs"),r=e.defineComponent({name:"DataChartFunnel",__name:"funnel",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(r){const c=e.ref(),n=e.inject(t.InjectionChartMerge,(e=>e),!0),s=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,modelName:a,data:c}=r.chartData,s={title:{text:a},legend:{},series:e.map((e=>({name:e,type:"funnel",left:"10%",width:"80%",label:{formatter:"{c}"},labelLine:{show:!1},itemStyle:{opacity:.7},emphasis:{label:{position:"inside",formatter:`{b}${e}: {c}`}},data:c.map((a=>({name:a[t?.colDesc||""],value:a[e]})))})))};return 1!==e.length&&(s.legend.data=e),n(s,r.chartOptions)}));return a.useCharts({chartDOM:c,chartOptions:s,chartData:e.computed((()=>r.chartData))}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartFunnel",ref:c,class:"data-chart-funnel"},null,512))}});exports.default=r;
2
2
  //# sourceMappingURL=funnel.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"funnel.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/funnel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendOption } from 'echarts/types/dist/shared'\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartFunnel',\n})\nconst {\n chartOptions,\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n}>()\nconst dataChartFunnel = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\nconst funnelChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, modelName, data } = chartData\n\n const config = {\n title: {\n text: modelName,\n },\n legend: {},\n series: colDesc.map((item) => {\n return {\n name: item,\n type: 'funnel',\n left: '10%',\n width: '80%',\n label: {\n formatter: '{c}',\n },\n labelLine: {\n show: false,\n },\n itemStyle: {\n opacity: 0.7,\n },\n emphasis: {\n label: {\n position: 'inside',\n formatter: `{b}${item}: {c}`,\n },\n },\n data: data.map(yItem => ({\n name: yItem[xGroupByDesc?.colDesc || ''],\n value: yItem[item],\n })),\n }\n }),\n }\n if (colDesc.length !== 1) {\n (config.legend as LegendOption).data = colDesc\n }\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartFunnel, chartOptions: funnelChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartFunnel\" class=\"data-chart-funnel\" />\n</template>\n"],"names":["dataChartFunnel","ref","merge","inject","InjectionChartMerge","v","funnelChartOptions","computed","colDesc","xGroupByDesc","modelName","data","__props","chartData","config","title","text","legend","series","map","item","name","type","left","width","label","formatter","labelLine","show","itemStyle","opacity","emphasis","position","yItem","value","length","chartOptions","useCharts","chartDOM"],"mappings":"mdA2BA,MAAMA,EAAkBC,EAAAA,MAClBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GACnDC,EAAqBC,EAAAA,UAAwB,KACjD,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,UAAcA,EAAWC,KAAAA,GAASC,EAAAC,UAE7CC,EAAS,CACbC,MAAO,CACLC,KAAMN,GAERO,OAAQ,CAAC,EACTC,OAAQV,EAAQW,KAAKC,IACZ,CACLC,KAAMD,EACNE,KAAM,SACNC,KAAM,MACNC,MAAO,MACPC,MAAO,CACLC,UAAW,OAEbC,UAAW,CACTC,MAAM,GAERC,UAAW,CACTC,QAAS,IAEXC,SAAU,CACRN,MAAO,CACLO,SAAU,SACVN,UAAW,MAAMN,WAGrBT,KAAMA,EAAKQ,KAAcc,IAAA,CACvBZ,KAAMY,EAAMxB,GAAcD,SAAW,IACrC0B,MAAOD,EAAMb,YAQd,OAHgB,IAAnBZ,EAAQ2B,SACTrB,EAAOG,OAAwBN,KAAOH,GAElCN,EAAMY,EAAQF,EAAYwB,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUtC,EAAiBoC,aAAc9B,EAAoBO,UAAWN,YAAS,IAAMK,EAAAC"}
1
+ {"version":3,"file":"funnel.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/funnel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendOption } from 'echarts/types/dist/shared'\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartFunnel',\n})\nconst {\n chartOptions,\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n}>()\nconst dataChartFunnel = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\nconst funnelChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, modelName, data } = chartData\n\n const config = {\n title: {\n text: modelName,\n },\n legend: {},\n series: colDesc.map((item) => {\n return {\n name: item,\n type: 'funnel',\n left: '10%',\n width: '80%',\n label: {\n formatter: '{c}',\n },\n labelLine: {\n show: false,\n },\n itemStyle: {\n opacity: 0.7,\n },\n emphasis: {\n label: {\n position: 'inside',\n formatter: `{b}${item}: {c}`,\n },\n },\n data: data.map(yItem => ({\n name: yItem[xGroupByDesc?.colDesc || ''],\n value: yItem[item],\n })),\n }\n }),\n }\n if (colDesc.length !== 1) {\n (config.legend as LegendOption).data = colDesc\n }\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartFunnel, chartOptions: funnelChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartFunnel\" class=\"data-chart-funnel\" />\n</template>\n"],"names":["dataChartFunnel","ref","merge","inject","InjectionChartMerge","v","funnelChartOptions","computed","colDesc","xGroupByDesc","modelName","data","__props","chartData","config","title","text","legend","series","map","item","name","type","left","width","label","formatter","labelLine","show","itemStyle","opacity","emphasis","position","yItem","value","length","chartOptions","useCharts","chartDOM"],"mappings":"6bA2BA,MAAMA,EAAkBC,EAAAA,MAClBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GACnDC,EAAqBC,EAAAA,UAAwB,KACjD,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,UAAcA,EAAWC,KAAAA,GAASC,EAAAC,UAE7CC,EAAS,CACbC,MAAO,CACLC,KAAMN,GAERO,OAAQ,CAAC,EACTC,OAAQV,EAAQW,KAAKC,IACZ,CACLC,KAAMD,EACNE,KAAM,SACNC,KAAM,MACNC,MAAO,MACPC,MAAO,CACLC,UAAW,OAEbC,UAAW,CACTC,MAAM,GAERC,UAAW,CACTC,QAAS,IAEXC,SAAU,CACRN,MAAO,CACLO,SAAU,SACVN,UAAW,MAAMN,WAGrBT,KAAMA,EAAKQ,KAAcc,IAAA,CACvBZ,KAAMY,EAAMxB,GAAcD,SAAW,IACrC0B,MAAOD,EAAMb,YAQd,OAHgB,IAAnBZ,EAAQ2B,SACTrB,EAAOG,OAAwBN,KAAOH,GAElCN,EAAMY,EAAQF,EAAYwB,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUtC,EAAiBoC,aAAc9B,EAAoBO,UAAWN,YAAS,IAAMK,EAAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),a=require("../utils/useCharts.cjs"),r=require("vue-demi"),s=e.defineComponent({name:"DataChartLine",__name:"line",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"line-simple"},chartOptions:{type:null,required:!0}},setup(s){const c=r.ref(),n=r.inject(t.InjectionChartMerge,(e=>e),!0),i=15,l="Total";const o=r.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:a,data:r,modelName:c}=s.chartData,o=Array.from(new Set(r?.map((e=>e[t?.colDesc||""]))))||[],u=a?.find((e=>!e.xAxis)),p={title:{text:c},legend:{data:[]},xAxis:{name:t?.colDesc||"",data:o},dataZoom:[{type:"inside",disabled:o.length<i}]};if(1===a?.length)p.series=e.map((e=>({name:e,type:"line",data:r.map((t=>t[e]))}))),p.legend.data=e;else if(2===a?.length){const a=[...new Set(r.map((e=>String(e[u?.colDesc||""]))))];p.legend.data=a,p.series=a.map((a=>function(e,t,a,r,s,c){const n=[];return t.forEach((t=>{const i=a.find((a=>a[r?.colDesc]===t&&a[s?.colDesc]===e));i?n.push(i[c[0]]):n.push(0)})),{name:e,type:"line",stack:l,areaStyle:{},data:n}}(a,o,r,t,u,e)))}return p.series=p.series?.map((e=>{const t={...e};switch(s.subShowType){case"line-simple":default:delete t.areaStyle;break;case"area-basic":t.areaStyle={}}return t})),n(p,s.chartOptions)}));return a.useCharts({chartDOM:c,chartOptions:o,chartData:r.computed((()=>s.chartData))}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartLine",ref:c,class:"data-chart-line"},null,512))}});exports.default=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),a=require("../utils/useCharts.cjs"),r=e.defineComponent({name:"DataChartLine",__name:"line",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"line-simple"},chartOptions:{type:null,required:!0}},setup(r){const s=e.ref(),c=e.inject(t.InjectionChartMerge,(e=>e),!0),n=15,i="Total";const l=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:a,data:s,modelName:l}=r.chartData,o=Array.from(new Set(s?.map((e=>e[t?.colDesc||""]))))||[],u=a?.find((e=>!e.xAxis)),p={title:{text:l},legend:{data:[]},xAxis:{name:t?.colDesc||"",data:o},dataZoom:[{type:"inside",disabled:o.length<n}]};if(1===a?.length)p.series=e.map((e=>({name:e,type:"line",data:s.map((t=>t[e]))}))),p.legend.data=e;else if(2===a?.length){const a=[...new Set(s.map((e=>String(e[u?.colDesc||""]))))];p.legend.data=a,p.series=a.map((a=>function(e,t,a,r,s,c){const n=[];return t.forEach((t=>{const i=a.find((a=>a[r?.colDesc]===t&&a[s?.colDesc]===e));i?n.push(i[c[0]]):n.push(0)})),{name:e,type:"line",stack:i,areaStyle:{},data:n}}(a,o,s,t,u,e)))}return p.series=p.series?.map((e=>{const t={...e};switch(r.subShowType){case"line-simple":default:delete t.areaStyle;break;case"area-basic":t.areaStyle={}}return t})),c(p,r.chartOptions)}));return a.useCharts({chartDOM:s,chartOptions:l,chartData:e.computed((()=>r.chartData))}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartLine",ref:s,class:"data-chart-line"},null,512))}});exports.default=r;
2
2
  //# sourceMappingURL=line.vue2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"line.vue2.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/line.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendComponentOption } from 'echarts'\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartLine',\n})\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n subShowType = 'line-simple',\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\nconst dataChartLine = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\n// 抽取类型定义\ninterface SeriesItem {\n name: string\n type: 'line'\n stack?: string\n areaStyle?: Record<string, any>\n data: Array<string | number>\n}\n\n// 将配置提取为常量\nconst CHART_CONSTANTS = {\n MIN_ZOOM_LENGTH: 15,\n STACK_NAME: 'Total',\n} as const\n\n// 提取处理图表系列数据的函数\nfunction processSeriesData(legendDataItem: string,\n xAxisData: (string | number)[],\n data: any[],\n xGroupByDesc: any,\n yGroupByDesc: any,\n colDesc: string[]): SeriesItem {\n const seriesData: (string | number)[] = []\n\n xAxisData.forEach((xAxisItem) => {\n const targetData = data\n .find(dataItem =>\n dataItem[xGroupByDesc?.colDesc] === xAxisItem\n && dataItem[yGroupByDesc?.colDesc] === legendDataItem,\n )\n\n if (targetData) {\n seriesData.push(targetData[colDesc[0]])\n }\n else {\n seriesData.push(0) // 或者其他默认值\n }\n })\n\n return {\n name: legendDataItem,\n type: 'line',\n stack: CHART_CONSTANTS.STACK_NAME,\n areaStyle: {},\n data: seriesData,\n }\n}\n\nconst lineChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, groupByDesc, data, modelName } = chartData\n const xAxisData = Array.from(new Set(data?.map(item => item[xGroupByDesc?.colDesc || '']))) || []\n const yGroupByDesc = groupByDesc?.find(item => !item.xAxis)\n\n const config: EChartsOption & { series?: SeriesItem[] } = {\n title: { text: modelName },\n legend: { data: [] },\n xAxis: {\n name: xGroupByDesc?.colDesc || '',\n data: xAxisData,\n },\n dataZoom: [{\n type: 'inside',\n disabled: xAxisData.length < CHART_CONSTANTS.MIN_ZOOM_LENGTH,\n }],\n }\n\n // 处理系列数据\n if (groupByDesc?.length === 1) {\n config.series = colDesc.map(yItem => ({\n name: yItem,\n type: 'line',\n data: data.map(item => item[yItem]),\n }));\n (config.legend as LegendComponentOption).data = colDesc\n }\n else if (groupByDesc?.length === 2) {\n const legendData = [...new Set(data.map(item => String(item[yGroupByDesc?.colDesc || ''])))]\n ;(config.legend as LegendComponentOption).data = legendData\n\n config.series = legendData.map(legendDataItem =>\n processSeriesData(legendDataItem, xAxisData, data, xGroupByDesc, yGroupByDesc, colDesc),\n )\n }\n\n // 处理图表展示类型\n config.series = config.series?.map((item) => {\n const seriesItem = { ...item }\n\n switch (subShowType) {\n case 'line-simple':\n delete seriesItem.areaStyle\n break\n case 'area-basic':\n seriesItem.areaStyle = {}\n break\n default:\n delete seriesItem.areaStyle\n }\n\n return seriesItem\n })\n\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartLine, chartOptions: lineChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartLine\" class=\"data-chart-line\" />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-line {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["dataChartLine","ref","merge","inject","InjectionChartMerge","v","CHART_CONSTANTS","lineChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","xAxisData","Array","from","Set","map","item","yGroupByDesc","find","xAxis","config","title","text","legend","name","dataZoom","type","disabled","length","series","yItem","legendData","String","legendDataItem","seriesData","forEach","xAxisItem","targetData","dataItem","push","stack","areaStyle","processSeriesData","seriesItem","subShowType","chartOptions","useCharts","chartDOM"],"mappings":"2gBA6BA,MAAMA,EAAgBC,EAAAA,MAChBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GAYnDC,EACa,GADbA,EAEQ,QAoCR,MAAAC,EAAmBC,EAAAA,UAAwB,KAC/C,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,YAAcA,OAAaC,EAAMC,UAAAA,GAAcC,EAAAC,UAC1DC,EAAYC,MAAMC,KAAK,IAAIC,IAAIP,GAAMQ,KAAIC,GAAQA,EAAKX,GAAcD,SAAW,SAAU,GACzFa,EAAeX,GAAaY,MAAaF,IAACA,EAAKG,QAE/CC,EAAoD,CACxDC,MAAO,CAAEC,KAAMd,GACfe,OAAQ,CAAEhB,KAAM,IAChBY,MAAO,CACLK,KAAMnB,GAAcD,SAAW,GAC/BG,KAAMI,GAERc,SAAU,CAAC,CACTC,KAAM,SACNC,SAAUhB,EAAUiB,OAAS3B,KAK7B,GAAwB,IAAxBK,GAAasB,OACRR,EAAAS,OAASzB,EAAQW,KAAce,IAAA,CACpCN,KAAMM,EACNJ,KAAM,OACNnB,KAAMA,EAAKQ,KAAYC,GAAAA,EAAKc,SAE7BV,EAAOG,OAAiChB,KAAOH,OAClD,GACiC,IAAxBE,GAAasB,OAAc,CAClC,MAAMG,EAAa,IAAI,IAAIjB,IAAIP,EAAKQ,KAAIC,GAAQgB,OAAOhB,EAAKC,GAAcb,SAAW,SACnFgB,EAAOG,OAAiChB,KAAOwB,EAEjDX,EAAOS,OAASE,EAAWhB,QA/D/B,SAA2BkB,EACzBtB,EACAJ,EACAF,EACAY,EACAb,GACA,MAAM8B,EAAkC,GAiBjC,OAfGvB,EAAAwB,SAASC,IACjB,MAAMC,EAAa9B,EAChBW,MAAKoB,GACJA,EAASjC,GAAcD,WAAagC,GACjCE,EAASrB,GAAcb,WAAa6B,IAGvCI,EACFH,EAAWK,KAAKF,EAAWjC,EAAQ,KAGnC8B,EAAWK,KAAK,EAAC,IAId,CACLf,KAAMS,EACNP,KAAM,OACNc,MAAOvC,EACPwC,UAAW,CAAC,EACZlC,KAAM2B,EACR,CAmCIQ,CAAkBT,EAAgBtB,EAAWJ,EAAMF,EAAcY,EAAcb,IACjF,CAqBK,OAjBPgB,EAAOS,OAAST,EAAOS,QAAQd,KAAKC,IAC5B,MAAA2B,EAAa,IAAK3B,GAExB,OAAQP,EAAAmC,aACN,IAAK,cAML,eACSD,EAAWF,gBAJpB,IAAK,aACHE,EAAWF,UAAY,CAAC,EAMrB,OAAAE,CAAA,IAGF9C,EAAMuB,EAAQX,EAAYoC,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUpD,EAAekD,aAAc3C,EAAkBQ,UAAWP,YAAS,IAAMM,EAAAC"}
1
+ {"version":3,"file":"line.vue2.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/line.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { LegendComponentOption } from 'echarts'\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartLine',\n})\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n subShowType = 'line-simple',\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\nconst dataChartLine = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\n// 抽取类型定义\ninterface SeriesItem {\n name: string\n type: 'line'\n stack?: string\n areaStyle?: Record<string, any>\n data: Array<string | number>\n}\n\n// 将配置提取为常量\nconst CHART_CONSTANTS = {\n MIN_ZOOM_LENGTH: 15,\n STACK_NAME: 'Total',\n} as const\n\n// 提取处理图表系列数据的函数\nfunction processSeriesData(legendDataItem: string,\n xAxisData: (string | number)[],\n data: any[],\n xGroupByDesc: any,\n yGroupByDesc: any,\n colDesc: string[]): SeriesItem {\n const seriesData: (string | number)[] = []\n\n xAxisData.forEach((xAxisItem) => {\n const targetData = data\n .find(dataItem =>\n dataItem[xGroupByDesc?.colDesc] === xAxisItem\n && dataItem[yGroupByDesc?.colDesc] === legendDataItem,\n )\n\n if (targetData) {\n seriesData.push(targetData[colDesc[0]])\n }\n else {\n seriesData.push(0) // 或者其他默认值\n }\n })\n\n return {\n name: legendDataItem,\n type: 'line',\n stack: CHART_CONSTANTS.STACK_NAME,\n areaStyle: {},\n data: seriesData,\n }\n}\n\nconst lineChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, groupByDesc, data, modelName } = chartData\n const xAxisData = Array.from(new Set(data?.map(item => item[xGroupByDesc?.colDesc || '']))) || []\n const yGroupByDesc = groupByDesc?.find(item => !item.xAxis)\n\n const config: EChartsOption & { series?: SeriesItem[] } = {\n title: { text: modelName },\n legend: { data: [] },\n xAxis: {\n name: xGroupByDesc?.colDesc || '',\n data: xAxisData,\n },\n dataZoom: [{\n type: 'inside',\n disabled: xAxisData.length < CHART_CONSTANTS.MIN_ZOOM_LENGTH,\n }],\n }\n\n // 处理系列数据\n if (groupByDesc?.length === 1) {\n config.series = colDesc.map(yItem => ({\n name: yItem,\n type: 'line',\n data: data.map(item => item[yItem]),\n }));\n (config.legend as LegendComponentOption).data = colDesc\n }\n else if (groupByDesc?.length === 2) {\n const legendData = [...new Set(data.map(item => String(item[yGroupByDesc?.colDesc || ''])))]\n ;(config.legend as LegendComponentOption).data = legendData\n\n config.series = legendData.map(legendDataItem =>\n processSeriesData(legendDataItem, xAxisData, data, xGroupByDesc, yGroupByDesc, colDesc),\n )\n }\n\n // 处理图表展示类型\n config.series = config.series?.map((item) => {\n const seriesItem = { ...item }\n\n switch (subShowType) {\n case 'line-simple':\n delete seriesItem.areaStyle\n break\n case 'area-basic':\n seriesItem.areaStyle = {}\n break\n default:\n delete seriesItem.areaStyle\n }\n\n return seriesItem\n })\n\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartLine, chartOptions: lineChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartLine\" class=\"data-chart-line\" />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-line {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["dataChartLine","ref","merge","inject","InjectionChartMerge","v","CHART_CONSTANTS","lineChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","xAxisData","Array","from","Set","map","item","yGroupByDesc","find","xAxis","config","title","text","legend","name","dataZoom","type","disabled","length","series","yItem","legendData","String","legendDataItem","seriesData","forEach","xAxisItem","targetData","dataItem","push","stack","areaStyle","processSeriesData","seriesItem","subShowType","chartOptions","useCharts","chartDOM"],"mappings":"qfA6BA,MAAMA,EAAgBC,EAAAA,MAChBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GAYnDC,EACa,GADbA,EAEQ,QAoCR,MAAAC,EAAmBC,EAAAA,UAAwB,KAC/C,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,YAAcA,OAAaC,EAAMC,UAAAA,GAAcC,EAAAC,UAC1DC,EAAYC,MAAMC,KAAK,IAAIC,IAAIP,GAAMQ,KAAIC,GAAQA,EAAKX,GAAcD,SAAW,SAAU,GACzFa,EAAeX,GAAaY,MAAaF,IAACA,EAAKG,QAE/CC,EAAoD,CACxDC,MAAO,CAAEC,KAAMd,GACfe,OAAQ,CAAEhB,KAAM,IAChBY,MAAO,CACLK,KAAMnB,GAAcD,SAAW,GAC/BG,KAAMI,GAERc,SAAU,CAAC,CACTC,KAAM,SACNC,SAAUhB,EAAUiB,OAAS3B,KAK7B,GAAwB,IAAxBK,GAAasB,OACRR,EAAAS,OAASzB,EAAQW,KAAce,IAAA,CACpCN,KAAMM,EACNJ,KAAM,OACNnB,KAAMA,EAAKQ,KAAYC,GAAAA,EAAKc,SAE7BV,EAAOG,OAAiChB,KAAOH,OAClD,GACiC,IAAxBE,GAAasB,OAAc,CAClC,MAAMG,EAAa,IAAI,IAAIjB,IAAIP,EAAKQ,KAAIC,GAAQgB,OAAOhB,EAAKC,GAAcb,SAAW,SACnFgB,EAAOG,OAAiChB,KAAOwB,EAEjDX,EAAOS,OAASE,EAAWhB,QA/D/B,SAA2BkB,EACzBtB,EACAJ,EACAF,EACAY,EACAb,GACA,MAAM8B,EAAkC,GAiBjC,OAfGvB,EAAAwB,SAASC,IACjB,MAAMC,EAAa9B,EAChBW,MAAKoB,GACJA,EAASjC,GAAcD,WAAagC,GACjCE,EAASrB,GAAcb,WAAa6B,IAGvCI,EACFH,EAAWK,KAAKF,EAAWjC,EAAQ,KAGnC8B,EAAWK,KAAK,EAAC,IAId,CACLf,KAAMS,EACNP,KAAM,OACNc,MAAOvC,EACPwC,UAAW,CAAC,EACZlC,KAAM2B,EACR,CAmCIQ,CAAkBT,EAAgBtB,EAAWJ,EAAMF,EAAcY,EAAcb,IACjF,CAqBK,OAjBPgB,EAAOS,OAAST,EAAOS,QAAQd,KAAKC,IAC5B,MAAA2B,EAAa,IAAK3B,GAExB,OAAQP,EAAAmC,aACN,IAAK,cAML,eACSD,EAAWF,gBAJpB,IAAK,aACHE,EAAWF,UAAY,CAAC,EAMrB,OAAAE,CAAA,IAGF9C,EAAMuB,EAAQX,EAAYoC,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUpD,EAAekD,aAAc3C,EAAkBQ,UAAWP,YAAS,IAAMM,EAAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("lodash-es"),r=require("../utils/injectionKeys.cjs"),o=require("../utils/useCharts.cjs"),a=require("vue-demi"),c=e.defineComponent({name:"DataChartPie",__name:"pie",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"pie-simple"},chartOptions:{type:null,required:!0}},setup(c){const s=a.inject(r.InjectionChartMerge,(e=>e),!0),i=a.ref(null),l=a.computed((()=>{const{colDesc:e,xGroupByDesc:r,data:o,modelName:a}=c.chartData,i=e.length,l={title:{text:a},series:e.map(((e,a)=>{const s={name:e,type:"pie",center:["50%","50%"],data:[],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}},label:{formatter:"{b}:{c}({d}%)",rich:{b:{color:"#4C5058",fontSize:14,fontWeight:"bold",lineHeight:33}}}};let l=5;const n=t.orderBy(t.cloneDeep(o),[e],["desc"]),u=n.reduce(((t,r)=>t+Number(r[e])),0);if(o.length>l)for(;l<9;){const t=n.slice(0,l);if(t.reduce(((t,r)=>t+Number(r[e])),0)/u>.9||8===l){const a=n.slice(l,n.length-1);s.data=o.map((o=>{let a={};return t.forEach((t=>{JSON.stringify(t)===JSON.stringify(o)&&(a={name:r?.colDesc?o[r.colDesc]:"",value:o[e]})})),a})).filter((e=>e)),s.data.push({name:"其它",value:a.reduce(((t,r)=>t+Number(r[e])),0)});break}l++}else s.data=o.map((t=>({name:r?.colDesc?t[r.colDesc]:"",value:Number(t[e])})));if(1===i?s.center=["50%","60%"]:2===i?0===a?(s.right="40%",s.left="",s.center=["40%","60%"]):(s.right="",s.left="40%",s.center=["60%","60%"]):3===i?0===a?(s.right="40%",s.bottom="50%",s.top="",s.left="",s.center=["40%","78%"]):1===a?(s.right="",s.bottom="50%",s.top="",s.left="40%",s.center=["60%","78%"]):(s.right="40%",s.bottom="",s.top="50%",s.left="",s.center=["40%","60%"]):4===i&&(0===a?(s.right="40%",s.bottom="50%",s.top="",s.left="",s.center=["40%","78%"]):1===a?(s.right="",s.bottom="50%",s.top="",s.left="40%",s.center=["60%","78%"]):2===a?(s.right="40%",s.bottom="",s.top="50%",s.left="",s.center=["40%","60%"]):(s.right="",s.bottom="",s.top="50%",s.left="40%",s.center=["60%","60%"])),"pie-borderRadius"===c.subShowType)s.radius=["50%","70%"];else s.radius="50%";return s}))};return s(l,c.chartOptions)}));return o.useCharts({chartDOM:i,chartOptions:l,chartData:a.computed((()=>c.chartData))}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartPie",ref:i,class:"data-chart-pie"},null,512))}});exports.default=c;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("lodash-es"),r=require("../utils/injectionKeys.cjs"),o=require("../utils/useCharts.cjs"),a=e.defineComponent({name:"DataChartPie",__name:"pie",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"pie-simple"},chartOptions:{type:null,required:!0}},setup(a){const c=e.inject(r.InjectionChartMerge,(e=>e),!0),s=e.ref(null),i=e.computed((()=>{const{colDesc:e,xGroupByDesc:r,data:o,modelName:s}=a.chartData,i=e.length,l={title:{text:s},series:e.map(((e,c)=>{const s={name:e,type:"pie",center:["50%","50%"],data:[],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}},label:{formatter:"{b}:{c}({d}%)",rich:{b:{color:"#4C5058",fontSize:14,fontWeight:"bold",lineHeight:33}}}};let l=5;const n=t.orderBy(t.cloneDeep(o),[e],["desc"]),u=n.reduce(((t,r)=>t+Number(r[e])),0);if(o.length>l)for(;l<9;){const t=n.slice(0,l);if(t.reduce(((t,r)=>t+Number(r[e])),0)/u>.9||8===l){const a=n.slice(l,n.length-1);s.data=o.map((o=>{let a={};return t.forEach((t=>{JSON.stringify(t)===JSON.stringify(o)&&(a={name:r?.colDesc?o[r.colDesc]:"",value:o[e]})})),a})).filter((e=>e)),s.data.push({name:"其它",value:a.reduce(((t,r)=>t+Number(r[e])),0)});break}l++}else s.data=o.map((t=>({name:r?.colDesc?t[r.colDesc]:"",value:Number(t[e])})));if(1===i?s.center=["50%","60%"]:2===i?0===c?(s.right="40%",s.left="",s.center=["40%","60%"]):(s.right="",s.left="40%",s.center=["60%","60%"]):3===i?0===c?(s.right="40%",s.bottom="50%",s.top="",s.left="",s.center=["40%","78%"]):1===c?(s.right="",s.bottom="50%",s.top="",s.left="40%",s.center=["60%","78%"]):(s.right="40%",s.bottom="",s.top="50%",s.left="",s.center=["40%","60%"]):4===i&&(0===c?(s.right="40%",s.bottom="50%",s.top="",s.left="",s.center=["40%","78%"]):1===c?(s.right="",s.bottom="50%",s.top="",s.left="40%",s.center=["60%","78%"]):2===c?(s.right="40%",s.bottom="",s.top="50%",s.left="",s.center=["40%","60%"]):(s.right="",s.bottom="",s.top="50%",s.left="40%",s.center=["60%","60%"])),"pie-borderRadius"===a.subShowType)s.radius=["50%","70%"];else s.radius="50%";return s}))};return c(l,a.chartOptions)}));return o.useCharts({chartDOM:s,chartOptions:i,chartData:e.computed((()=>a.chartData))}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartPie",ref:s,class:"data-chart-pie"},null,512))}});exports.default=a;
2
2
  //# sourceMappingURL=pie.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pie.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/pie.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PieSeriesOption } from 'echarts/charts'\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { cloneDeep, orderBy } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartPie',\n})\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n subShowType = 'pie-simple',\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nconst dataChartPie = ref(null)\nconst pieChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, data, modelName } = chartData\n const colDescLength = colDesc.length\n const config = {\n title: { text: modelName },\n series: colDesc.map((item, index) => {\n const seriesItem: PieSeriesOption = {\n name: item,\n type: 'pie',\n center: ['50%', '50%'],\n data: [],\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)',\n },\n },\n label: {\n formatter: '{b}:{c}({d}%)',\n rich: {\n b: {\n color: '#4C5058',\n fontSize: 14,\n fontWeight: 'bold',\n lineHeight: 33,\n },\n },\n },\n }\n\n let cutNum = 5\n const orderByData = orderBy(cloneDeep(data), [item], ['desc'])\n // 总数\n const totalDesc = orderByData.reduce((prev, cur) => (prev + Number(cur[item])), 0)\n if (data.length > cutNum) {\n while (cutNum < 9) {\n const headerData = orderByData.slice(0, cutNum)\n // 前 cutNum 个总数\n const headerTotal = headerData.reduce((prev, cur) => prev + Number(cur[item]), 0)\n // 前五总占比\n const headerScale = headerTotal / totalDesc\n if (headerScale > 0.90 || cutNum === 8) {\n //\n const footerData = orderByData.slice(cutNum, orderByData.length - 1)\n seriesItem.data = data.map((yItem) => {\n let obj = {}\n headerData.forEach((headerDataItem) => {\n if (JSON.stringify(headerDataItem) === JSON.stringify(yItem)) {\n obj = {\n name: xGroupByDesc?.colDesc ? yItem[xGroupByDesc.colDesc] : '',\n value: yItem[item],\n }\n }\n })\n return obj\n }).filter(v => v)\n seriesItem.data.push({\n name: '其它',\n value: footerData.reduce((prev, cur) => prev + Number(cur[item]), 0),\n })\n\n break\n }\n else {\n cutNum++\n }\n }\n }\n else {\n seriesItem.data = data.map(yItem => ({\n name: xGroupByDesc?.colDesc ? yItem[xGroupByDesc.colDesc] : '',\n value: Number(yItem[item]),\n }))\n }\n\n if (colDescLength === 1) {\n seriesItem.center = ['50%', '60%']\n }\n else if (colDescLength === 2) {\n if (index === 0) {\n seriesItem.right = '40%'\n seriesItem.left = ''\n seriesItem.center = ['40%', '60%']\n }\n else {\n seriesItem.right = ''\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '60%']\n }\n }\n else if (colDescLength === 3) {\n if (index === 0) {\n seriesItem.right = '40%'\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = ''\n seriesItem.center = ['40%', '78%']\n }\n else if (index === 1) {\n seriesItem.right = ''\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '78%']\n }\n else {\n seriesItem.right = '40%'\n seriesItem.bottom = ''\n seriesItem.top = '50%'\n seriesItem.left = ''\n seriesItem.center = ['40%', '60%']\n }\n }\n else if (colDescLength === 4) {\n if (index === 0) {\n seriesItem.right = '40%'\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = ''\n seriesItem.center = ['40%', '78%']\n }\n else if (index === 1) {\n seriesItem.right = ''\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '78%']\n }\n else if (index === 2) {\n seriesItem.right = '40%'\n seriesItem.bottom = ''\n seriesItem.top = '50%'\n seriesItem.left = ''\n seriesItem.center = ['40%', '60%']\n }\n else {\n seriesItem.right = ''\n seriesItem.bottom = ''\n seriesItem.top = '50%'\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '60%']\n }\n }\n // 处理图表形状\n switch (subShowType) {\n case 'pie-borderRadius':\n seriesItem.radius = ['50%', '70%']\n break\n case 'pie-simple':\n seriesItem.radius = '50%'\n break\n default:\n seriesItem.radius = '50%'\n break\n }\n return seriesItem\n }),\n }\n return merge(config, chartOptions)\n})\n\nuseCharts({ chartDOM: dataChartPie, chartOptions: pieChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartPie\" class=\"data-chart-pie\" />\n</template>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartPie","ref","pieChartOptions","computed","colDesc","xGroupByDesc","data","modelName","__props","chartData","colDescLength","length","config","title","text","series","map","item","index","seriesItem","name","type","center","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","label","formatter","rich","b","color","fontSize","fontWeight","lineHeight","cutNum","orderByData","orderBy","cloneDeep","totalDesc","reduce","prev","cur","Number","headerData","slice","footerData","yItem","obj","forEach","headerDataItem","JSON","stringify","value","filter","push","right","left","bottom","top","subShowType","radius","chartOptions","useCharts","chartDOM"],"mappings":"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"}
1
+ {"version":3,"file":"pie.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/pie.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PieSeriesOption } from 'echarts/charts'\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { cloneDeep, orderBy } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartPie',\n})\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n subShowType = 'pie-simple',\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n}>()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nconst dataChartPie = ref(null)\nconst pieChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, data, modelName } = chartData\n const colDescLength = colDesc.length\n const config = {\n title: { text: modelName },\n series: colDesc.map((item, index) => {\n const seriesItem: PieSeriesOption = {\n name: item,\n type: 'pie',\n center: ['50%', '50%'],\n data: [],\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)',\n },\n },\n label: {\n formatter: '{b}:{c}({d}%)',\n rich: {\n b: {\n color: '#4C5058',\n fontSize: 14,\n fontWeight: 'bold',\n lineHeight: 33,\n },\n },\n },\n }\n\n let cutNum = 5\n const orderByData = orderBy(cloneDeep(data), [item], ['desc'])\n // 总数\n const totalDesc = orderByData.reduce((prev, cur) => (prev + Number(cur[item])), 0)\n if (data.length > cutNum) {\n while (cutNum < 9) {\n const headerData = orderByData.slice(0, cutNum)\n // 前 cutNum 个总数\n const headerTotal = headerData.reduce((prev, cur) => prev + Number(cur[item]), 0)\n // 前五总占比\n const headerScale = headerTotal / totalDesc\n if (headerScale > 0.90 || cutNum === 8) {\n //\n const footerData = orderByData.slice(cutNum, orderByData.length - 1)\n seriesItem.data = data.map((yItem) => {\n let obj = {}\n headerData.forEach((headerDataItem) => {\n if (JSON.stringify(headerDataItem) === JSON.stringify(yItem)) {\n obj = {\n name: xGroupByDesc?.colDesc ? yItem[xGroupByDesc.colDesc] : '',\n value: yItem[item],\n }\n }\n })\n return obj\n }).filter(v => v)\n seriesItem.data.push({\n name: '其它',\n value: footerData.reduce((prev, cur) => prev + Number(cur[item]), 0),\n })\n\n break\n }\n else {\n cutNum++\n }\n }\n }\n else {\n seriesItem.data = data.map(yItem => ({\n name: xGroupByDesc?.colDesc ? yItem[xGroupByDesc.colDesc] : '',\n value: Number(yItem[item]),\n }))\n }\n\n if (colDescLength === 1) {\n seriesItem.center = ['50%', '60%']\n }\n else if (colDescLength === 2) {\n if (index === 0) {\n seriesItem.right = '40%'\n seriesItem.left = ''\n seriesItem.center = ['40%', '60%']\n }\n else {\n seriesItem.right = ''\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '60%']\n }\n }\n else if (colDescLength === 3) {\n if (index === 0) {\n seriesItem.right = '40%'\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = ''\n seriesItem.center = ['40%', '78%']\n }\n else if (index === 1) {\n seriesItem.right = ''\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '78%']\n }\n else {\n seriesItem.right = '40%'\n seriesItem.bottom = ''\n seriesItem.top = '50%'\n seriesItem.left = ''\n seriesItem.center = ['40%', '60%']\n }\n }\n else if (colDescLength === 4) {\n if (index === 0) {\n seriesItem.right = '40%'\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = ''\n seriesItem.center = ['40%', '78%']\n }\n else if (index === 1) {\n seriesItem.right = ''\n seriesItem.bottom = '50%'\n seriesItem.top = ''\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '78%']\n }\n else if (index === 2) {\n seriesItem.right = '40%'\n seriesItem.bottom = ''\n seriesItem.top = '50%'\n seriesItem.left = ''\n seriesItem.center = ['40%', '60%']\n }\n else {\n seriesItem.right = ''\n seriesItem.bottom = ''\n seriesItem.top = '50%'\n seriesItem.left = '40%'\n seriesItem.center = ['60%', '60%']\n }\n }\n // 处理图表形状\n switch (subShowType) {\n case 'pie-borderRadius':\n seriesItem.radius = ['50%', '70%']\n break\n case 'pie-simple':\n seriesItem.radius = '50%'\n break\n default:\n seriesItem.radius = '50%'\n break\n }\n return seriesItem\n }),\n }\n return merge(config, chartOptions)\n})\n\nuseCharts({ chartDOM: dataChartPie, chartOptions: pieChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartPie\" class=\"data-chart-pie\" />\n</template>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartPie","ref","pieChartOptions","computed","colDesc","xGroupByDesc","data","modelName","__props","chartData","colDescLength","length","config","title","text","series","map","item","index","seriesItem","name","type","center","emphasis","itemStyle","shadowBlur","shadowOffsetX","shadowColor","label","formatter","rich","b","color","fontSize","fontWeight","lineHeight","cutNum","orderByData","orderBy","cloneDeep","totalDesc","reduce","prev","cur","Number","headerData","slice","footerData","yItem","obj","forEach","headerDataItem","JSON","stringify","value","filter","push","right","left","bottom","top","subShowType","radius","chartOptions","useCharts","chartDOM"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),r=require("../utils/injectionKeys.cjs"),t=require("../utils/useCharts.cjs"),u=require("vue-demi"),s=e.defineComponent({name:"DataChartRadar",__name:"radar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(s){const c=u.ref(),o=u.inject(r.InjectionChartMerge,(e=>e),!0),l=u.computed((()=>{const{colDesc:e,xGroupByDesc:r,modelName:t,data:u}=s.chartData;r?.groupByValues&&(r.groupByValues=[]),r.groupByValues=a.uniq(u.map((e=>e[r.colDesc||""])).filter((e=>e)));const c={title:{text:t},radar:{indicator:r?.groupByValues?.map((a=>({name:a,max:Math.max(...u.map((a=>Number(a[e[0]]))))})))||[]},series:[{name:r?.colDesc,type:"radar",tooltip:{trigger:"item"},data:e.map((e=>({name:e,value:r?.groupByValues?.map((a=>u.map((t=>a===t[r.colDesc||""]?t[e]:null)).filter((e=>e)).reduce(((e,a)=>Number(e||0)+Number(a||0)),0)))})))}]};return o(c,s.chartOptions)}));return t.useCharts({chartDOM:c,chartOptions:l,chartData:u.computed((()=>s.chartData))}),(a,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartRadar",ref:c,class:"data-chart-radar"},null,512))}});exports.default=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),r=require("../utils/injectionKeys.cjs"),t=require("../utils/useCharts.cjs"),u=e.defineComponent({name:"DataChartRadar",__name:"radar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(u){const s=e.ref(),c=e.inject(r.InjectionChartMerge,(e=>e),!0),o=e.computed((()=>{const{colDesc:e,xGroupByDesc:r,modelName:t,data:s}=u.chartData;r?.groupByValues&&(r.groupByValues=[]),r.groupByValues=a.uniq(s.map((e=>e[r.colDesc||""])).filter((e=>e)));const o={title:{text:t},radar:{indicator:r?.groupByValues?.map((a=>({name:a,max:Math.max(...s.map((a=>Number(a[e[0]]))))})))||[]},series:[{name:r?.colDesc,type:"radar",tooltip:{trigger:"item"},data:e.map((e=>({name:e,value:r?.groupByValues?.map((a=>s.map((t=>a===t[r.colDesc||""]?t[e]:null)).filter((e=>e)).reduce(((e,a)=>Number(e||0)+Number(a||0)),0)))})))}]};return c(o,u.chartOptions)}));return t.useCharts({chartDOM:s,chartOptions:o,chartData:e.computed((()=>u.chartData))}),(a,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartRadar",ref:s,class:"data-chart-radar"},null,512))}});exports.default=u;
2
2
  //# sourceMappingURL=radar.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radar.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/radar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { uniq } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartRadar',\n})\n\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n}>()\n\nconst dataChartRadar = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\nconst radarChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, modelName, data } = chartData\n\n if (xGroupByDesc?.groupByValues) {\n xGroupByDesc.groupByValues = []\n }\n xGroupByDesc.groupByValues = uniq(data.map((item) => {\n return item[xGroupByDesc.colDesc || ''] as string\n }).filter(v => v))\n\n const config = {\n title: {\n text: modelName,\n },\n radar: {\n indicator: xGroupByDesc?.groupByValues?.map((groupByValuesItem) => {\n return {\n name: groupByValuesItem,\n max: Math.max(...data.map(item => Number(item[colDesc[0]]))),\n }\n }) || [],\n },\n series: [{\n name: xGroupByDesc?.colDesc,\n type: 'radar',\n tooltip: {\n trigger: 'item',\n },\n data: colDesc.map(colDescItem => ({\n name: colDescItem,\n value: xGroupByDesc?.groupByValues?.map((groupByValuesItem) => {\n return (data.map((dataItem) => {\n if (groupByValuesItem === dataItem[xGroupByDesc.colDesc || '']) {\n return dataItem[colDescItem]\n }\n return null\n }).filter(v => v)).reduce((pre, cur) => Number(pre || 0) + Number(cur || 0), 0)\n }),\n })),\n }],\n }\n\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartRadar, chartOptions: radarChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartRadar\" class=\"data-chart-radar\" />\n</template>\n"],"names":["dataChartRadar","ref","merge","inject","InjectionChartMerge","v","radarChartOptions","computed","colDesc","xGroupByDesc","modelName","data","__props","chartData","groupByValues","uniq","map","item","filter","config","title","text","radar","indicator","groupByValuesItem","name","max","Math","Number","series","type","tooltip","trigger","colDescItem","value","dataItem","reduce","pre","cur","chartOptions","useCharts","chartDOM"],"mappings":"weA6BA,MAAMA,EAAiBC,EAAAA,MACjBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GACnDC,EAAoBC,EAAAA,UAAwB,KAChD,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,UAAcA,EAAWC,KAAAA,GAASC,EAAAC,UAE/CJ,GAAcK,gBAChBL,EAAaK,cAAgB,IAE/BL,EAAaK,cAAgBC,EAAAA,KAAKJ,EAAKK,KAAKC,GACnCA,EAAKR,EAAaD,SAAW,MACnCU,QAAOb,GAAKA,KAEf,MAAMc,EAAS,CACbC,MAAO,CACLC,KAAMX,GAERY,MAAO,CACLC,UAAWd,GAAcK,eAAeE,KAAKQ,IACpC,CACLC,KAAMD,EACNE,IAAKC,KAAKD,OAAOf,EAAKK,KAAIC,GAAQW,OAAOX,EAAKT,EAAQ,aAEpD,IAERqB,OAAQ,CAAC,CACPJ,KAAMhB,GAAcD,QACpBsB,KAAM,QACNC,QAAS,CACPC,QAAS,QAEXrB,KAAMH,EAAQQ,KAAoBiB,IAAA,CAChCR,KAAMQ,EACNC,MAAOzB,GAAcK,eAAeE,KAAKQ,GAC/Bb,EAAKK,KAAKmB,GACZX,IAAsBW,EAAS1B,EAAaD,SAAW,IAClD2B,EAASF,GAEX,OACNf,WAAYb,IAAI+B,QAAO,CAACC,EAAKC,IAAQV,OAAOS,GAAO,GAAKT,OAAOU,GAAO,IAAI,YAM9E,OAAApC,EAAMiB,EAAQP,EAAY2B,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUzC,EAAgBuC,aAAcjC,EAAmBO,UAAWN,YAAS,IAAMK,EAAAC"}
1
+ {"version":3,"file":"radar.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/radar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { uniq } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartRadar',\n})\n\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n}>()\n\nconst dataChartRadar = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\nconst radarChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, modelName, data } = chartData\n\n if (xGroupByDesc?.groupByValues) {\n xGroupByDesc.groupByValues = []\n }\n xGroupByDesc.groupByValues = uniq(data.map((item) => {\n return item[xGroupByDesc.colDesc || ''] as string\n }).filter(v => v))\n\n const config = {\n title: {\n text: modelName,\n },\n radar: {\n indicator: xGroupByDesc?.groupByValues?.map((groupByValuesItem) => {\n return {\n name: groupByValuesItem,\n max: Math.max(...data.map(item => Number(item[colDesc[0]]))),\n }\n }) || [],\n },\n series: [{\n name: xGroupByDesc?.colDesc,\n type: 'radar',\n tooltip: {\n trigger: 'item',\n },\n data: colDesc.map(colDescItem => ({\n name: colDescItem,\n value: xGroupByDesc?.groupByValues?.map((groupByValuesItem) => {\n return (data.map((dataItem) => {\n if (groupByValuesItem === dataItem[xGroupByDesc.colDesc || '']) {\n return dataItem[colDescItem]\n }\n return null\n }).filter(v => v)).reduce((pre, cur) => Number(pre || 0) + Number(cur || 0), 0)\n }),\n })),\n }],\n }\n\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartRadar, chartOptions: radarChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartRadar\" class=\"data-chart-radar\" />\n</template>\n"],"names":["dataChartRadar","ref","merge","inject","InjectionChartMerge","v","radarChartOptions","computed","colDesc","xGroupByDesc","modelName","data","__props","chartData","groupByValues","uniq","map","item","filter","config","title","text","radar","indicator","groupByValuesItem","name","max","Math","Number","series","type","tooltip","trigger","colDescItem","value","dataItem","reduce","pre","cur","chartOptions","useCharts","chartDOM"],"mappings":"kdA6BA,MAAMA,EAAiBC,EAAAA,MACjBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GACnDC,EAAoBC,EAAAA,UAAwB,KAChD,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,UAAcA,EAAWC,KAAAA,GAASC,EAAAC,UAE/CJ,GAAcK,gBAChBL,EAAaK,cAAgB,IAE/BL,EAAaK,cAAgBC,EAAAA,KAAKJ,EAAKK,KAAKC,GACnCA,EAAKR,EAAaD,SAAW,MACnCU,QAAOb,GAAKA,KAEf,MAAMc,EAAS,CACbC,MAAO,CACLC,KAAMX,GAERY,MAAO,CACLC,UAAWd,GAAcK,eAAeE,KAAKQ,IACpC,CACLC,KAAMD,EACNE,IAAKC,KAAKD,OAAOf,EAAKK,KAAIC,GAAQW,OAAOX,EAAKT,EAAQ,aAEpD,IAERqB,OAAQ,CAAC,CACPJ,KAAMhB,GAAcD,QACpBsB,KAAM,QACNC,QAAS,CACPC,QAAS,QAEXrB,KAAMH,EAAQQ,KAAoBiB,IAAA,CAChCR,KAAMQ,EACNC,MAAOzB,GAAcK,eAAeE,KAAKQ,GAC/Bb,EAAKK,KAAKmB,GACZX,IAAsBW,EAAS1B,EAAaD,SAAW,IAClD2B,EAASF,GAEX,OACNf,WAAYb,IAAI+B,QAAO,CAACC,EAAKC,IAAQV,OAAOS,GAAO,GAAKT,OAAOU,GAAO,IAAI,YAM9E,OAAApC,EAAMiB,EAAQP,EAAY2B,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUzC,EAAgBuC,aAAcjC,EAAmBO,UAAWN,YAAS,IAAMK,EAAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),a=require("../utils/useCharts.cjs"),r=require("vue-demi"),s=e.defineComponent({name:"DataChartScatterSimple",__name:"scatter-simple",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(s){const c=r.ref(),o=r.inject(t.InjectionChartMerge,(e=>e),!0),u=r.computed((()=>{const{colDesc:e,xGroupByDesc:t,modelName:a,data:r}=s.chartData,c={title:{text:a},tooltip:{formatter:e=>e.value.length>1?`${e.seriesName} :<br/>${e.value[0]} ${e.value[1]} `:`${e.seriesName} :<br/>${e.name} : ${e.value} `},series:e.map((e=>({symbolSize:20,name:e,data:r.map((a=>[a[e],a[t?.colDesc||""]])),type:"scatter"})))};return o(c,s.chartOptions)}));return a.useCharts({chartDOM:c,chartOptions:u,chartData:r.computed((()=>s.chartData))}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartScatterSimple",ref:c,class:"data-chart-scatter-simple"},null,512))}});exports.default=s;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),a=require("../utils/useCharts.cjs"),r=e.defineComponent({name:"DataChartScatterSimple",__name:"scatter-simple",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(r){const s=e.ref(),c=e.inject(t.InjectionChartMerge,(e=>e),!0),o=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,modelName:a,data:s}=r.chartData,o={title:{text:a},tooltip:{formatter:e=>e.value.length>1?`${e.seriesName} :<br/>${e.value[0]} ${e.value[1]} `:`${e.seriesName} :<br/>${e.name} : ${e.value} `},series:e.map((e=>({symbolSize:20,name:e,data:s.map((a=>[a[e],a[t?.colDesc||""]])),type:"scatter"})))};return c(o,r.chartOptions)}));return a.useCharts({chartDOM:s,chartOptions:o,chartData:e.computed((()=>r.chartData))}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartScatterSimple",ref:s,class:"data-chart-scatter-simple"},null,512))}});exports.default=r;
2
2
  //# sourceMappingURL=scatter-simple.vue.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scatter-simple.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/scatter-simple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartScatterSimple',\n})\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n}>()\nconst dataChartScatterSimple = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nconst scatterChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, modelName, data } = chartData\n const config = {\n title: {\n text: modelName,\n },\n tooltip: {\n formatter(params: { value: string, seriesName: string, name: string }) {\n if (params.value.length > 1) {\n return (\n `${params.seriesName\n } :<br/>${params.value[0]\n } ${params.value[1]\n } `\n )\n }\n else {\n return (\n `${params.seriesName\n } :<br/>${params.name\n } : ${params.value\n } `\n )\n }\n },\n },\n series: colDesc.map((colDescItem) => {\n return {\n symbolSize: 20,\n name: colDescItem,\n data: data.map((dataItem) => {\n return [dataItem[colDescItem], dataItem[xGroupByDesc?.colDesc || '']]\n }),\n type: 'scatter',\n }\n }),\n }\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartScatterSimple, chartOptions: scatterChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartScatterSimple\" class=\"data-chart-scatter-simple\" />\n</template>\n"],"names":["dataChartScatterSimple","ref","merge","inject","InjectionChartMerge","v","scatterChartOptions","computed","colDesc","xGroupByDesc","modelName","data","__props","chartData","config","title","text","tooltip","formatter","params","value","length","seriesName","name","series","map","colDescItem","symbolSize","dataItem","type","chartOptions","useCharts","chartDOM"],"mappings":"keA0BA,MAAMA,EAAyBC,EAAAA,MACzBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GAEnDC,EAAsBC,EAAAA,UAAwB,KAClD,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,UAAcA,EAAWC,KAAAA,GAASC,EAAAC,UAC7CC,EAAS,CACbC,MAAO,CACLC,KAAMN,GAERO,QAAS,CACPC,UAAUC,GACJA,EAAOC,MAAMC,OAAS,EAEtB,GAAGF,EAAOG,oBACAH,EAAOC,MAAM,MACnBD,EAAOC,MAAM,MAMjB,GAAGD,EAAOG,oBACAH,EAAOI,UACXJ,EAAOC,UAMrBI,OAAQhB,EAAQiB,KAAKC,IACZ,CACLC,WAAY,GACZJ,KAAMG,EACNf,KAAMA,EAAKc,KAAKG,GACP,CAACA,EAASF,GAAcE,EAASnB,GAAcD,SAAW,OAEnEqB,KAAM,eAIL,OAAA3B,EAAMY,EAAQF,EAAYkB,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUhC,EAAwB8B,aAAcxB,EAAqBO,UAAWN,YAAS,IAAMK,EAAAC"}
1
+ {"version":3,"file":"scatter-simple.vue.cjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/scatter-simple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartScatterSimple',\n})\nconst {\n chartData = {\n colDesc: [],\n xGroupByDesc: {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: [],\n data: [],\n modelName: '',\n },\n chartOptions,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n}>()\nconst dataChartScatterSimple = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nconst scatterChartOptions = computed<EChartsOption>(() => {\n const { colDesc, xGroupByDesc, modelName, data } = chartData\n const config = {\n title: {\n text: modelName,\n },\n tooltip: {\n formatter(params: { value: string, seriesName: string, name: string }) {\n if (params.value.length > 1) {\n return (\n `${params.seriesName\n } :<br/>${params.value[0]\n } ${params.value[1]\n } `\n )\n }\n else {\n return (\n `${params.seriesName\n } :<br/>${params.name\n } : ${params.value\n } `\n )\n }\n },\n },\n series: colDesc.map((colDescItem) => {\n return {\n symbolSize: 20,\n name: colDescItem,\n data: data.map((dataItem) => {\n return [dataItem[colDescItem], dataItem[xGroupByDesc?.colDesc || '']]\n }),\n type: 'scatter',\n }\n }),\n }\n return merge(config, chartOptions)\n})\nuseCharts({ chartDOM: dataChartScatterSimple, chartOptions: scatterChartOptions, chartData: computed(() => chartData) })\n</script>\n\n<template>\n <div ref=\"dataChartScatterSimple\" class=\"data-chart-scatter-simple\" />\n</template>\n"],"names":["dataChartScatterSimple","ref","merge","inject","InjectionChartMerge","v","scatterChartOptions","computed","colDesc","xGroupByDesc","modelName","data","__props","chartData","config","title","text","tooltip","formatter","params","value","length","seriesName","name","series","map","colDescItem","symbolSize","dataItem","type","chartOptions","useCharts","chartDOM"],"mappings":"4cA0BA,MAAMA,EAAyBC,EAAAA,MACzBC,EAAQC,EAAAA,OAAOC,EAAAA,qBAAsBC,GAAWA,IAAG,GAEnDC,EAAsBC,EAAAA,UAAwB,KAClD,MAAMC,QAAEA,EAASC,aAAAA,EAAAC,UAAcA,EAAWC,KAAAA,GAASC,EAAAC,UAC7CC,EAAS,CACbC,MAAO,CACLC,KAAMN,GAERO,QAAS,CACPC,UAAUC,GACJA,EAAOC,MAAMC,OAAS,EAEtB,GAAGF,EAAOG,oBACAH,EAAOC,MAAM,MACnBD,EAAOC,MAAM,MAMjB,GAAGD,EAAOG,oBACAH,EAAOI,UACXJ,EAAOC,UAMrBI,OAAQhB,EAAQiB,KAAKC,IACZ,CACLC,WAAY,GACZJ,KAAMG,EACNf,KAAMA,EAAKc,KAAKG,GACP,CAACA,EAASF,GAAcE,EAASnB,GAAcD,SAAW,OAEnEqB,KAAM,eAIL,OAAA3B,EAAMY,EAAQF,EAAYkB,aAAA,WAEzBC,EAAAA,UAAA,CAAEC,SAAUhC,EAAwB8B,aAAcxB,EAAqBO,UAAWN,YAAS,IAAMK,EAAAC"}