@qxs-bns/components 0.0.45 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/_virtual/_plugin-vue_export-helper.mjs +1 -1
- package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.mjs +1 -1
- package/es/package.json.mjs +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/bar.vue.mjs +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/empty.vue.mjs +1 -1
- package/es/src/data-chart/src/components/funnel.vue.mjs +1 -1
- package/es/src/data-chart/src/components/line.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/pie.vue.mjs +1 -1
- package/es/src/data-chart/src/components/radar.vue.mjs +1 -1
- package/es/src/data-chart/src/components/scatter-simple.vue.mjs +1 -1
- package/es/src/data-chart/src/components/scatter.vue.mjs +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
- package/es/src/data-chart/src/utils/config.mjs +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
- package/es/src/photo-crop-tool/src/composables.mjs +1 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
- package/es/src/subject-layout/src/subject-layout.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
- package/es/src/subject-type/src/subject-type.vue.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
- package/es/src/withInstall.mjs +1 -1
- package/lib/_virtual/_plugin-vue_export-helper.cjs +1 -1
- package/lib/index.cjs +1 -1
- package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs +1 -1
- package/lib/package.json.cjs +1 -1
- package/lib/src/components.cjs +1 -1
- package/lib/src/data-chart/index.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue3.cjs +1 -1
- package/lib/src/data-chart/src/components/bar.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/empty.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/funnel.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/pie.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/radar.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/scatter.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
- package/lib/src/file-upload/index.cjs +1 -1
- package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
- package/lib/src/file-upload/src/file-upload.vue.cjs.map +1 -1
- package/lib/src/fixed-action-bar/index.cjs +1 -1
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs +1 -1
- package/lib/src/image-upload/index.cjs +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
- package/lib/src/make-installer.cjs +1 -1
- package/lib/src/photo-crop-tool/index.cjs +1 -1
- package/lib/src/photo-crop-tool/src/composables.cjs +1 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +1 -1
- package/lib/src/subject-action/index.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
- package/lib/src/subject-layout/index.cjs +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue.cjs +1 -1
- package/lib/src/subject-list/index.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
- package/lib/src/subject-type/index.cjs +1 -1
- package/lib/src/subject-type/src/subject-type.vue.cjs +1 -1
- package/lib/src/tiny-mce-editor/index.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
- package/lib/src/withInstall.cjs +1 -1
- package/package.json +2 -1
- package/theme-chalk/file-upload.css +1 -1
- package/theme-chalk/image-upload.css +1 -1
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/subject-action.css +1 -1
- package/theme-chalk/subject-list.css +1 -1
- package/theme-chalk/subject-type.css +1 -1
- package/types/src/file-upload/src/file-upload.vue.d.ts.map +1 -1
- package/types/src/image-upload/src/image-upload.vue.d.ts.map +1 -1
- package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"subject-text-fill.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-text-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Plus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n isEdit: boolean\n isSet: boolean\n examExpand?: string\n examAnswerSettingVO?: {\n isInOrder: boolean\n isIgnoreCase: boolean\n keywordCount: number\n }\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n tag: string\n showInput: boolean\n}[]>([{\n title: '',\n tag: '',\n showInput: false,\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst keywordCount = ref()\nconst correct = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\n\nconst checkList = [\n {\n label: '答案不分顺序',\n value: 'isInOrder',\n },\n {\n label: '忽略大小写',\n value: 'isIgnoreCase',\n },\n]\n\nconst isCheckList = ref(['isInOrder', 'isIgnoreCase'])\n\nfunction handleAddTag(item: any) {\n item.showInput = false\n if (item.tag) {\n item.title = item.title ? [item.title, item.tag].join(',') : item.tag\n item.tag = ''\n }\n}\n\nfunction closeTag(tag: string, item: any) {\n if (tag) {\n const tags = item.title.split(',')\n const index = tags.findIndex((i: string) => i === tag)\n if (index > -1) {\n tags.splice(index, 1)\n item.title = tags.join(',')\n }\n }\n}\n\nfunction addAnswer() {\n answers.value.push({\n title: '',\n tag: '',\n showInput: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 2 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n\n if (keywordCount.value || correct.value) {\n if (!keywordCount.value) {\n ElMessage.error('请完善答题设置!')\n return\n }\n\n if (!correct.value) {\n ElMessage.error('请输入问题正确答案!')\n return\n }\n\n if (answers.value.length !== keywordCount.value) {\n ElMessage.error('关键词个数设置有误!')\n return\n }\n const msg: string[] = []\n answers.value.forEach((item, index) => {\n if (!item.title) {\n msg.push(`关键词${index + 1}未设置`)\n }\n })\n if (msg.length > 0) {\n ElMessage.error(msg.join(','))\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.filter((i: any) => i.title).map((item: any) => {\n return { title: item.title }\n }),\n analysis: analysis.value,\n isSetCorrectAnswer: !!correct.value,\n examExpand: correct.value,\n examAnswerSettingBO: {\n isIgnoreCase: isCheckList.value?.includes('isIgnoreCase'),\n isInOrder: isCheckList.value?.includes('isInOrder'),\n ...{ keywordCount: keywordCount.value },\n },\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.examAnswerSettingVO) {\n // 仅保留与设置匹配的选项\n isCheckList.value = isCheckList.value.filter(item =>\n (item === 'isIgnoreCase' && props.examAnswerSettingVO?.isIgnoreCase)\n || (item === 'isInOrder' && props.examAnswerSettingVO?.isInOrder),\n )\n }\n\n if (props.examAnswerSettingVO?.keywordCount) {\n keywordCount.value = props.examAnswerSettingVO?.keywordCount\n }\n\n if (props.examExpand) {\n correct.value = props.examExpand\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-text-fill')\n</script>\n\n<template>\n <div :class=\"ns.e('text-fill-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div class=\"content\">\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(问答题)</span>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"content flex flex-col\">\n <template v-if=\"answers.some(item => item.title)\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n {{ item.title }}\n </el-checkbox>\n </template>\n </div>\n <div\n v-if=\"correct\"\n class=\"flex\"\n style=\"margin-top: 10px;color: #a8abb2;\"\n >\n <span class=\"title\">正确答案:{{ correct }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\" class=\"margin-bottom\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【问答题】请输入问题\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>答题设置:</span>\n </div>\n <span>共答对</span>\n <el-input-number\n v-model=\"keywordCount\"\n style=\"width: 100px;margin: 0 10px;\"\n :min=\"1\"\n />\n <span style=\"margin-right: 10px;\">个关键词,算是正确的</span>\n <el-checkbox-group\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <el-checkbox :label=\"item.value\" class=\"margin-left-10\">\n {{ item.label }}\n </el-checkbox>\n </el-checkbox-group>\n </div>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"correct\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入正确答案\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom answer-list\">\n <span style=\"padding-left: 60px;\">*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'</span>\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <div class=\"label flex flex-justify-end\">\n <span>关键词{{ index + 1 }}:</span>\n </div>\n\n <div class=\"answer-tags\">\n <template\n v-for=\"i in item.title.split(',')\"\n :key=\"i\"\n >\n <el-tag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </el-tag>\n </template>\n <template v-if=\"!isSave\">\n <el-input\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <el-button\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <el-icon><Plus /></el-icon>\n <span>{{ item.title ? '添加同义词' : '添加关键词' }}</span>\n </el-button>\n </template>\n </div>\n <div class=\"operation\">\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 2 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n </div>\n </div>\n </div>\n <div v-if=\"showAnalysis\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-end\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :showOtherOption=\"false\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n @onShowRichText=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","tag","showInput","analysis","keywordCount","correct","showRichText","richText","checkList","label","value","isCheckList","addAnswer","push","deleteRichText","save","ElMessage","error","length","msg","forEach","item","index","join","filter","i","map","isSetCorrectAnswer","examExpand","examAnswerSettingBO","isIgnoreCase","includes","isInOrder","examRichTextContent","onMounted","answerList","examAnswerSettingVO","ns","useNamespace","tags","split","findIndex","splice","isSave"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"subject-text-fill.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-text-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Plus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n isEdit: boolean\n isSet: boolean\n examExpand?: string\n examAnswerSettingVO?: {\n isInOrder: boolean\n isIgnoreCase: boolean\n keywordCount: number\n }\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n tag: string\n showInput: boolean\n}[]>([{\n title: '',\n tag: '',\n showInput: false,\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst keywordCount = ref()\nconst correct = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\n\nconst checkList = [\n {\n label: '答案不分顺序',\n value: 'isInOrder',\n },\n {\n label: '忽略大小写',\n value: 'isIgnoreCase',\n },\n]\n\nconst isCheckList = ref(['isInOrder', 'isIgnoreCase'])\n\nfunction handleAddTag(item: any) {\n item.showInput = false\n if (item.tag) {\n item.title = item.title ? [item.title, item.tag].join(',') : item.tag\n item.tag = ''\n }\n}\n\nfunction closeTag(tag: string, item: any) {\n if (tag) {\n const tags = item.title.split(',')\n const index = tags.findIndex((i: string) => i === tag)\n if (index > -1) {\n tags.splice(index, 1)\n item.title = tags.join(',')\n }\n }\n}\n\nfunction addAnswer() {\n answers.value.push({\n title: '',\n tag: '',\n showInput: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 2 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n\n if (keywordCount.value || correct.value) {\n if (!keywordCount.value) {\n ElMessage.error('请完善答题设置!')\n return\n }\n\n if (!correct.value) {\n ElMessage.error('请输入问题正确答案!')\n return\n }\n\n if (answers.value.length !== keywordCount.value) {\n ElMessage.error('关键词个数设置有误!')\n return\n }\n const msg: string[] = []\n answers.value.forEach((item, index) => {\n if (!item.title) {\n msg.push(`关键词${index + 1}未设置`)\n }\n })\n if (msg.length > 0) {\n ElMessage.error(msg.join(','))\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.filter((i: any) => i.title).map((item: any) => {\n return { title: item.title }\n }),\n analysis: analysis.value,\n isSetCorrectAnswer: !!correct.value,\n examExpand: correct.value,\n examAnswerSettingBO: {\n isIgnoreCase: isCheckList.value?.includes('isIgnoreCase'),\n isInOrder: isCheckList.value?.includes('isInOrder'),\n ...{ keywordCount: keywordCount.value },\n },\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.examAnswerSettingVO) {\n // 仅保留与设置匹配的选项\n isCheckList.value = isCheckList.value.filter(item =>\n (item === 'isIgnoreCase' && props.examAnswerSettingVO?.isIgnoreCase)\n || (item === 'isInOrder' && props.examAnswerSettingVO?.isInOrder),\n )\n }\n\n if (props.examAnswerSettingVO?.keywordCount) {\n keywordCount.value = props.examAnswerSettingVO?.keywordCount\n }\n\n if (props.examExpand) {\n correct.value = props.examExpand\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-text-fill')\n</script>\n\n<template>\n <div :class=\"ns.e('text-fill-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div class=\"content\">\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(问答题)</span>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" class=\"rich-text\" />\n </div>\n <div class=\"content flex flex-col\">\n <template v-if=\"answers.some(item => item.title)\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n {{ item.title }}\n </el-checkbox>\n </template>\n </div>\n <div\n v-if=\"correct\"\n class=\"flex\"\n style=\"margin-top: 10px;color: #a8abb2;\"\n >\n <span class=\"title\">正确答案:{{ correct }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\" class=\"margin-bottom\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【问答题】请输入问题\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>答题设置:</span>\n </div>\n <span>共答对</span>\n <el-input-number\n v-model=\"keywordCount\"\n style=\"width: 100px;margin: 0 10px;\"\n :min=\"1\"\n />\n <span style=\"margin-right: 10px;\">个关键词,算是正确的</span>\n <el-checkbox-group\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <el-checkbox :label=\"item.value\" class=\"margin-left-10\">\n {{ item.label }}\n </el-checkbox>\n </el-checkbox-group>\n </div>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"correct\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入正确答案\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom answer-list\">\n <span style=\"padding-left: 60px;\">*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'</span>\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <div class=\"label flex flex-justify-end\">\n <span>关键词{{ index + 1 }}:</span>\n </div>\n\n <div class=\"answer-tags\">\n <template\n v-for=\"i in item.title.split(',')\"\n :key=\"i\"\n >\n <el-tag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </el-tag>\n </template>\n <template v-if=\"!isSave\">\n <el-input\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <el-button\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <el-icon><Plus /></el-icon>\n <span>{{ item.title ? '添加同义词' : '添加关键词' }}</span>\n </el-button>\n </template>\n </div>\n <div class=\"operation\">\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 2 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n </div>\n </div>\n </div>\n <div v-if=\"showAnalysis\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-end\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :showOtherOption=\"false\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n @onShowRichText=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","tag","showInput","analysis","keywordCount","correct","showRichText","richText","checkList","label","value","isCheckList","addAnswer","push","deleteRichText","save","ElMessage","error","length","msg","forEach","item","index","join","filter","i","map","isSetCorrectAnswer","examExpand","examAnswerSettingBO","isIgnoreCase","includes","isInOrder","examRichTextContent","onMounted","answerList","examAnswerSettingVO","ns","useNamespace","tags","split","findIndex","splice","isSave"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,ref as t,useAttrs as
|
1
|
+
import{defineComponent as e,ref as t,useAttrs as s,computed as n,watch as i,createElementBlock as a,openBlock as o,normalizeClass as l,unref as r,createElementVNode as d,Fragment as c,renderList as m,createBlock as u,createCommentVNode as x,mergeProps as p}from"vue";import w from"./components/subject-blank-fill.vue.mjs";import v from"./components/subject-scale.vue.mjs";import y from"./components/subject-single.vue.mjs";import h from"./components/subject-text-fill.vue.mjs";import T from"./components/SubjectRichText.vue.mjs";import f from"./components/SubjectPageEnd.vue.mjs";import{useNamespace as A}from"@qxs-bns/hooks";import{setGuid as R}from"@qxs-bns/utils";import{ElMessage as E}from"element-plus/es";const S={class:"subject-list-wrapper"};var g=e({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(e,{expose:g,emit:C}){const I=e,D=t([]),j=C,b=s();g({addSubject:M,currentList:D,uploadExcel:function(e){D.value=D.value.concat(e)},addExam:function(e){console.log(e,"items");let t=1;const s=[];e.forEach((e=>{const n={...e,customId:R(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:e.answers?.map((e=>({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect})))||[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1};n.pageIndex>t&&(s.push({customId:R(),answerType:"page_end",analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:0}),t=n.pageIndex),s.push(n)})),D.value=D.value.concat(s)},setAnswerRelation:function(e,t,s){const n=D.value.find((e=>e.customId===t));if(n){const t=n.answers?.find((e=>e.customAnswerId===s));t&&(t.answerRelations=e)}}});const _=n((()=>{const e=D.value.filter((e=>"page_end"===e.answerType));return t=>{const s=e.findIndex((e=>e.customId===t));return-1!==s?s+1:0}}));function k(){return e=>{let t=0,s=0;return D.value.forEach((n=>{"page_end"!==n.answerType&&(t++,e===n.customId&&(s=t))})),s-1}}function M(e,t=null,s=null){const n={customId:R(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:s};null!==t?D.value.splice(t+1,0,n):D.value.push(n)}function L(e,t){if("up"===t&&e>0){const[t]=D.value.splice(e,1);D.value.splice(e-1,0,t)}else if("down"===t&&e<D.value.length-1){const[t]=D.value.splice(e,1);D.value.splice(e+1,0,t)}}function P(e,t){D.value[e]={...D.value[e],...t,isEdit:!1,examAnswerRelationType:t.examAnswerRelationType}}function q(e){D.value.splice(e,1),E.success("删除成功")}function Q(e,t){j("setRelation",e,t)}i((()=>I.subjectList),(e=>{e&&(D.value=[...e])}),{immediate:!0});const K=A("subject-list");return(e,t)=>(o(),a("div",{class:l(r(K).e("list-exam"))},[d("div",S,[(o(!0),a(c,null,m(r(D),((t,s)=>(o(),a("div",{key:t.customId,class:"subject-item"},[["single","multiple","sort"].includes(t.answerType)?(o(),u(y,p({key:0,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,type:t.answerType,"exam-id":t.examId,isKey:t.isKey,"is-save":!t.isRealCanDel,customId:t.customId,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"least-answer-count":t.leastAnswerCount,"is-edit":t.isEdit||!1,"show-action":!e.isPreview,"exam-expand":t.examExpand,answerCheckType:t.answerCheckType,"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onSetRelation:Q,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:(e,t)=>M(e,s,t)}),null,16,["order-index","title","type","exam-id","isKey","is-save","customId","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answerCheckType","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===t.answerType?(o(),u(v,p({key:1,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"is-edit":t.isEdit||!1,"scale-question-list":t.scaleQuestionList,"show-action":!e.isPreview,"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===t.answerType?(o(),u(w,p({key:2,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"show-action":!e.isPreview,"is-edit":t.isEdit||!1,"exam-answer-setting-v-o":t.examAnswerSettingVO||{},"exam-rich-text-content":t.examRichTextContent,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===t.answerType?(o(),u(h,p({key:3,ref_for:!0},r(b),{"order-index":k()(t.customId),title:t.title,"is-save":!t.isRealCanDel,"is-set":t.hasSet||!1,"answer-list":t.answers,analysis:t.analysis,"show-action":!e.isPreview,"is-edit":t.isEdit||!1,"exam-expand":t.examExpand,"exam-answer-setting-v-o":t.examAnswerSettingVO||{},examAnswerRelationType:t.examAnswerRelationType,"exam-rich-text-content":t.examRichTextContent,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","examAnswerRelationType","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===t.answerType?(o(),u(T,p({key:4,ref_for:!0},r(b),{"order-index":k()(t.customId),richTextContent:t.richTextContent,"is-set":t.hasSet||!1,"is-save":!t.isRealCanDel,"is-edit":t.isEdit||!1,"show-action":!e.isPreview,onMove:e=>L(s,e),onDelete:e=>q(s),examAnswerRelationType:t.examAnswerRelationType,onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)}),null,16,["order-index","richTextContent","is-set","is-save","is-edit","show-action","onMove","onDelete","examAnswerRelationType","onSave","onEdit","onAdd"])):"page_end"===t.answerType?(o(),u(f,{"total-page":D.value.filter((e=>"page_end"===e.answerType)).length,key:s,"current-page-index":r(_)(t.customId),item:t,"is-edit":t.isEdit||!1,"is-set":t.hasSet||!1,"is-save":!t.isRealCanDel,examAnswerRelationType:t.examAnswerRelationType,onMove:e=>L(s,e),onDelete:e=>q(s),onSave:e=>P(s,e),onEdit:e=>t.isEdit=!0,onAdd:e=>M(e,s,null)},null,8,["total-page","current-page-index","item","is-edit","is-set","is-save","examAnswerRelationType","onMove","onDelete","onSave","onEdit","onAdd"])):x("v-if",!0)])))),128))])],2))}});export{g as default};
|
2
2
|
//# sourceMappingURL=subject-list.vue.mjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,ref as l,createElementBlock as t,openBlock as s,normalizeClass as
|
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,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,computed as i,ref as t,onMounted as n,createElementBlock as o,openBlock as
|
1
|
+
import{defineComponent as e,computed as i,ref as t,onMounted as n,createElementBlock as o,openBlock as a,normalizeClass as r,unref as l,createCommentVNode as s,withDirectives as m,createElementVNode as u,isRef as p,vModelText as c}from"vue";import{useNamespace as d}from"@qxs-bns/hooks";import{merge as g}from"lodash-es";import y from"tinymce/tinymce";import"tinymce/themes/silver/theme";import"tinymce/icons/default/icons";import"tinymce/models/dom";import"tinymce/plugins/autolink";import"tinymce/plugins/autoresize";import"tinymce/plugins/fullscreen";import"tinymce/plugins/image";import"tinymce/plugins/insertdatetime";import"tinymce/plugins/link";import"tinymce/plugins/lists";import"tinymce/plugins/media";import"tinymce/plugins/preview";import"tinymce/plugins/table";import"tinymce/plugins/wordcount";import"tinymce/plugins/code";import"tinymce/plugins/searchreplace";import"tinymce/plugins/nonbreaking";const f=["id","name"];var h=e({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(e,{emit:h}){const b=h,k=d("file-upload"),_=i({get:()=>e.modelValue,set(e){b("update:modelValue",e)}}),v=t(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),x=e.assetsBasePath||"node_modules/",w={selector:`textarea#${v.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${x}tinymce/langs/zh-Hans.js`,skin_url:`${x}tinymce/skins/ui/oxide`,content_css:`${x}tinymce/skins/content/default/content.min.css`,min_height:250,max_height:600,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:i=>{i.on("input change undo redo",(()=>{_.value=i.getContent()})),i.on("init",(()=>{i.setContent(_.value)})),e.config?.expandSetup?.(i)}},S=i((()=>{const i=w;return e.config.images_upload_handler||("string"==typeof i.plugins?i.plugins=i.plugins.replace("image",""):Array.isArray(i.plugins)&&(i.plugins=i.plugins.filter((e=>"image"!==e)))),g(i,e.config)}));return n((async()=>{"undefined"!=typeof window&&y.init(S.value)})),(e,i)=>(a(),o("div",{class:r(l(k).e("tiny-mce"))},[s(" 使用动态生成的 id "),m(u("textarea",{id:l(v),"onUpdate:modelValue":i[0]||(i[0]=e=>p(_)?_.value=e:null),name:l(v)},null,8,f),[[c,l(_)]])],2))}});export{h as default};
|
2
2
|
//# sourceMappingURL=tiny-mce-editor.vue.mjs.map
|
package/es/src/withInstall.mjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
function
|
1
|
+
function n(n,o){return n.install=o=>{for(const t of[n,...Object.values({})])o.component(t.name,t)},n}export{n as withInstall};
|
2
2
|
//# sourceMappingURL=withInstall.mjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[e,
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.default=(e,t)=>{const o=e.__vccOpts||e;for(const[e,r]of t)o[e]=r;return o};
|
2
2
|
//# sourceMappingURL=_plugin-vue_export-helper.cjs.map
|
package/lib/index.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./src/defaults.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./src/defaults.cjs"),s=require("./src/data-chart/index.cjs"),r=require("./src/file-upload/index.cjs"),t=require("./src/fixed-action-bar/index.cjs"),o=require("./src/image-upload/index.cjs"),i=require("./src/photo-crop-tool/index.cjs"),c=require("./src/subject-action/index.cjs"),x=require("./src/subject-layout/index.cjs"),u=require("./src/subject-list/index.cjs"),a=require("./src/subject-type/index.cjs"),d=require("./src/tiny-mce-editor/index.cjs");const p=e.default.install,l=e.default.version;exports.default=e.default,exports.QxsDataChart=s.QxsDataChart,exports.QxsFileUpload=r.QxsFileUpload,exports.QxsFixedActionBar=t.QxsFixedActionBar,exports.QxsImageUpload=o.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=c.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=u.QxsSubjectList,exports.QxsSubjectType=a.QxsSubjectType,exports.QxsTinyMceEditor=d.QxsTinyMceEditor,exports.install=p,exports.version=l;
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(e,t){void 0===t&&(t={});var
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(e,t){void 0===t&&(t={});var d=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===d&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}};
|
2
2
|
//# sourceMappingURL=style-inject.es.cjs.map
|
package/lib/package.json.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";exports.version="0.0.
|
1
|
+
"use strict";exports.version="0.0.46";
|
2
2
|
//# sourceMappingURL=package.json.cjs.map
|
package/lib/src/components.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";var e=require("./data-chart/index.cjs"),
|
1
|
+
"use strict";var e=require("./data-chart/index.cjs"),t=require("./file-upload/index.cjs"),s=require("./fixed-action-bar/index.cjs"),r=require("./image-upload/index.cjs"),i=require("./photo-crop-tool/index.cjs"),o=require("./subject-action/index.cjs"),x=require("./subject-layout/index.cjs"),c=require("./subject-list/index.cjs"),u=require("./subject-type/index.cjs"),a=require("./tiny-mce-editor/index.cjs");exports.QxsDataChart=e.QxsDataChart,exports.QxsFileUpload=t.QxsFileUpload,exports.QxsFixedActionBar=s.QxsFixedActionBar,exports.QxsImageUpload=r.QxsImageUpload,exports.QxsPhotoCropTool=i.QxsPhotoCropTool,exports.QxsSubjectAction=o.QxsSubjectAction,exports.QxsSubjectLayout=x.QxsSubjectLayout,exports.QxsSubjectList=c.QxsSubjectList,exports.QxsSubjectType=u.QxsSubjectType,exports.QxsTinyMceEditor=a.QxsTinyMceEditor;
|
2
2
|
//# sourceMappingURL=components.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),t=require("./src/data-chart.vue.cjs");const r=e.withInstall(t.default);exports.QxsDataChart=r,exports.default=r;
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("echarts"),a=require("../utils/config.cjs"),r=require("../utils/injectionKeys.cjs"),
|
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,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="/* unplugin-vue-components disabled */\n.data-chart-area-wrap[data-v-51660d7b] {\n position: relative;\n}\n.data-chart-area-wrap .city-select[data-v-51660d7b] {\n position: absolute;\n top: 10px;\n right: 100px;\n z-index: 1;\n width: 120px;\n}\n.data-chart-area-wrap .data-chart-area[data-v-51660d7b] {\n height: 100%;\n}";require("../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.cjs").default(e),exports.default=e;
|
2
2
|
//# sourceMappingURL=area.vue3.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),t=require("../utils/injectionKeys.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),a=require("lodash-es"),t=require("../utils/injectionKeys.cjs"),s=require("../utils/useCharts.cjs"),r=e.defineComponent({name:"DataChartBar",__name:"bar",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},subShowType:{type:String,required:!0,default:"bar-simple"},chartOptions:{type:null,required:!0}},setup(r){const c=e.inject(t.InjectionChartMerge,(e=>e),!0),l=e.ref(null),o=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:s,data:l=[],modelName:o}=r.chartData,i=Array.from(new Set(l.map((e=>e[t.colDesc||""])))).filter((e=>null!=e))||[],u=s.find((e=>!e.xAxis))||{groupByValues:[],colDesc:""};u.groupByValues=a.uniq(l.map((e=>u.colDesc?String(e[u.colDesc]):""))),t&&t.groupByValues&&(t.groupByValues=a.uniq(l.map((e=>t.colDesc?String(e[t.colDesc]):""))));const n={title:{text:o},xAxis:{name:"",type:"category",axisLabel:{interval:0,formatter:e=>e.length>5?`${e.substring(0,5)}...`:e},data:i},yAxis:{type:"value"},legend:{data:[]},dataZoom:[{type:"inside",disabled:i.length<15}]};if(1===s.length)n.series=e.map((e=>({name:e,data:l.map((a=>a[e])),type:"bar",emphasis:{focus:"series"},label:{show:!0,position:"inside"}}))),n.legend.data=e;else if(2===s.length){const a=e.map((e=>u.groupByValues?.map((a=>{const s={name:`${a||"/"}-${e}`,type:"bar",stack:e,emphasis:{focus:"series"},data:[],label:{show:!0,position:"inside"}};return s.data=(t.groupByValues||[]).map((e=>{let r=null;return l.forEach((c=>{u.colDesc&&c[u.colDesc]===a&&t.colDesc&&c[t.colDesc]===e&&s.stack&&(r=c[s.stack]??null)})),r||""})).filter((e=>""!==e)),s}))||[])).flat();n.series=a,delete n.legend}function p(e,a,t,s){Array.isArray(e)?e.forEach((e=>{e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))})):e&&(e.type=a,"category"===a&&(e.data=t||[],e.name=s||""))}switch(r.subShowType){case"bar-simple":case"default":p(n.xAxis,"category",i,t.colDesc||""),p(n.yAxis,"value");break;case"bar-y-category":p(n.xAxis,"value"),p(n.yAxis,"category",i,t.colDesc||"")}return c(n,r.chartOptions)}));return s.useCharts({chartDOM:l,chartOptions:o,chartData:e.computed((()=>r.chartData))}),(a,t)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartBar",ref:l,class:"data-chart-bar"},null,512))}});exports.default=r;
|
2
2
|
//# sourceMappingURL=bar.vue.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),a=require("./empty.vue.cjs");const c={class:"data-chart-card"},l={key:0,class:"title"},r=["title"],o={class:"context"},n={class:"suffix-icon"},s={key:2,class:"data-chart-card-wrap"},i=["title"],d={class:"context"};var m=t.defineComponent({name:"DataChartCard",__name:"card",props:{chartData:{type:Object,default:()=>({colDesc:[],xGroupByDesc:[],data:[],modelName:""})}},setup(m){const p=m;function D(e){const t=p.chartData.xGroupByDesc?.colDesc||"";return t?t+e[t]:""}return(p,k)=>{const u=e.ElScrollbar;return t.openBlock(),t.createElementBlock("div",c,[m.chartData.groupByDesc.length?(t.openBlock(),t.createElementBlock("p",l,t.toDisplayString(m.chartData.modelName),1)):t.createCommentVNode("v-if",!0),m.chartData.groupByDesc.length?t.withDirectives((t.openBlock(),t.createBlock(u,{key:1},{default:t.withCtx((()=>[t.createElementVNode("div",{class:t.normalizeClass({"data-chart-card-grid-layout":m.chartData.groupByDesc.length})},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.chartData.data,((e,a)=>(t.openBlock(),t.createElementBlock("div",{key:a,class:"card-item"},[t.createElementVNode("div",{class:"card-title",title:D(e)},t.toDisplayString(D(e)),9,r),t.createElementVNode("div",o,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.chartData.colDesc,((a,c)=>(t.openBlock(),t.createElementBlock("span",{key:a},[t.createTextVNode(t.toDisplayString(`${a}: `||"-"),1),t.createElementVNode("strong",null,t.toDisplayString(e[a]||"-"),1),t.createTextVNode(" "+t.toDisplayString(c===m.chartData.colDesc.length-1?"":","),1)])))),128))]),t.createElementVNode("div",n,t.toDisplayString(a+1),1)])))),128))],2)])),_:1},512)),[[t.vShow,m.chartData.data.length]]):(t.openBlock(),t.createElementBlock("div",s,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.chartData.data,((e,a)=>(t.openBlock(),t.createElementBlock("div",{key:a,class:"card-item"},[t.createElementVNode("div",{class:"card-title",title:m.chartData.modelName},t.toDisplayString(m.chartData.modelName),9,i),t.createElementVNode("div",d,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(m.chartData.colDesc,((a,c)=>(t.openBlock(),t.createElementBlock("span",{key:a},[e?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[t.createTextVNode(t.toDisplayString(`${a}: `||"-"),1),t.createElementVNode("strong",null,t.toDisplayString(e[a]||"-"),1),t.createTextVNode(" "+t.toDisplayString(c===m.chartData.colDesc.length-1?"":","),1)],64)):t.createCommentVNode("v-if",!0)])))),128))])])))),128))])),t.withDirectives(t.createVNode(a.default,null,null,512),[[t.vShow,!m.chartData.data.length]])])}}});exports.default=m;
|
2
2
|
//# sourceMappingURL=card.vue2.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("./empty.svg.cjs"),r=require("@qxs-bns/hooks");const
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("./empty.svg.cjs"),r=require("@qxs-bns/hooks");const i={class:"empty-content"},a=["src","alt"],s={class:"empty-description"};var n=e.defineComponent({name:"Empty",__name:"empty",props:{image:{type:String,required:!1,default:()=>t.default},description:{type:String,required:!1,default:"暂无数据"},imageSize:{type:Object,required:!1,default:()=>({width:"200px",height:"80px"})}},setup(t){const n=r.useNamespace("data-chart");return(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(n).e("empty")])},[e.createElementVNode("div",i,[e.createElementVNode("img",{style:e.normalizeStyle(t.imageSize),src:t.image,alt:t.description},null,12,a),e.createElementVNode("span",s,e.toDisplayString(t.description),1)])],2))}});exports.default=n;
|
2
2
|
//# sourceMappingURL=empty.vue.cjs.map
|
@@ -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=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
|
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,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=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(),
|
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,l="Total";const i=e.computed((()=>{const{colDesc:e,xGroupByDesc:t,groupByDesc:a,data:s,modelName:i}=r.chartData,o=Array.from(new Set(s?.map((e=>e[t?.colDesc||""])))).filter((e=>null!=e))||[],u=a?.find((e=>!e.xAxis)),p={title:{text:i},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])).filter((e=>null!=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 l=a.find((a=>a[r?.colDesc]===t&&a[s?.colDesc]===e));l?n.push(l[c[0]]):n.push(0)})),{name:e,type:"line",stack:l,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:i,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,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"),
|
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]||0)})));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,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"),
|
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,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),
|
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,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),r=require("../utils/useCharts.cjs"),a=e.defineComponent({name:"DataChartScatter",__name:"scatter",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(a){const s=e.ref(),c=e.inject(t.InjectionChartMerge,(e=>e),!0),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("../utils/injectionKeys.cjs"),r=require("../utils/useCharts.cjs"),a=e.defineComponent({name:"DataChartScatter",__name:"scatter",props:{chartData:{type:Object,required:!0,default:()=>({colDesc:[],xGroupByDesc:{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:[],data:[],modelName:""})},chartOptions:{type:null,required:!0}},setup(a){const s=e.ref(),c=e.inject(t.InjectionChartMerge,(e=>e),!0),o=e.computed((()=>c({xAxis:{},yAxis:{},series:[{symbolSize:20,data:[[10,8.04],[8.07,6.95],[13,7.58],[9.05,8.81],[11,8.33],[14,7.66],[13.4,6.81],[10,6.33],[14,8.96],[12.5,6.82],[9.15,7.2],[11.5,7.2],[3.03,4.23],[12.2,7.83],[2.02,4.47],[1.05,3.33],[4.05,4.96],[6.03,7.24],[12,6.26],[12,8.84],[7.08,5.82],[5.02,5.68]],type:"scatter"}]},a.chartOptions)));return r.useCharts({chartDOM:s,chartOptions:o,chartData:e.computed((()=>a.chartData))}),(t,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"dataChartScatter",ref:s,class:"data-chart-scatter"},null,512))}});exports.default=a;
|
2
2
|
//# sourceMappingURL=scatter.vue.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),a=require("./empty.vue.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),t=require("vue"),a=require("./empty.vue.cjs"),o=require("@qxs-bns/hooks");const r={key:0,class:"title"};var l=t.defineComponent({name:"DataChartTable",__name:"table",props:{chartData:{type:Object,default:()=>({colDesc:[],xGroupByDesc:[],data:[],modelName:""})}},setup(l){const c=l,n=o.useNamespace("data-chart"),s=t.computed((()=>c.chartData.groupByDesc.find((e=>!e.xAxis))));function i(e){if(!e)return 100;const t=14*e.length+20+30;return t<100?100:t}return(o,c)=>{const p=e.ElTableColumn,d=e.ElTable;return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass([t.unref(n).e("data-chart-table")])},[l.chartData.modelName?(t.openBlock(),t.createElementBlock("p",r,[t.createElementVNode("span",null,t.toDisplayString(l.chartData.modelName),1)])):t.createCommentVNode("v-if",!0),t.createVNode(d,{class:"customize-table data-chart-table-content",data:l.chartData.data,stripe:"",height:"100%"},{empty:t.withCtx((()=>[t.createVNode(a.default)])),default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.chartData.groupByDesc,((e,a)=>(t.openBlock(),t.createBlock(p,{key:`${e.colDesc}${e.groupByDesc}${a}`,align:"center","show-overflow-tooltip":"",sortable:"","min-width":`${i(e.colDesc)}px`,prop:e.colDesc||""},{header:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e.colDesc),1)])),default:t.withCtx((a=>[t.createTextVNode(t.toDisplayString((t.unref(s)&&(t.unref(s).colDesc,e.colDesc),a.row[e.colDesc||""]||"--")),1)])),_:2},1032,["min-width","prop"])))),128)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.chartData.colDesc,((e,a)=>(t.openBlock(),t.createBlock(p,{key:e+a,align:"center","min-width":`${i(e)}px`,label:e,"show-overflow-tooltip":"",sortable:"",prop:e},{header:t.withCtx((()=>[t.createTextVNode(t.toDisplayString(e),1)])),_:2},1032,["min-width","label","prop"])))),128))])),_:1},8,["data"])],2)}}});exports.default=l;
|
2
2
|
//# sourceMappingURL=table.vue.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/utils"),r=require("lodash-es"),s=require("./utils/config.cjs"),o=require("./utils/injectionKeys.cjs"),a=require("./utils/useCharts.cjs"),u=require("@qxs-bns/hooks"),n=require("./components/table.vue.cjs"),c=require("./components/bar.vue.cjs"),l=require("./components/line.vue.cjs"),i=require("./components/pie.vue.cjs"),p=require("./components/radar.vue.cjs"),d=require("./components/scatter.vue.cjs"),m=require("./components/funnel.vue.cjs"),f=require("./components/area.vue.cjs"),h=require("./components/card.vue.cjs"),y=require("./components/scatter-simple.vue.cjs"),q=e.defineComponent({name:"QxsDataChart",__name:"data-chart",props:{modelName:{type:String,required:!1,default:""},showTypeName:{type:String,required:!1,default:"table"},subShowType:{type:String,required:!1},data:{type:Object,required:!1,default:()=>({data:[],desc:{colDesc:[],showDesc:{showType:0,chartOptions:"{}",jsCodeSnippet:""},groupByDesc:[]}})},chartOptions:{type:null,required:!1,default:()=>({})},jsCodeSnippet:{type:String,required:!1,default:""}},setup(q,{expose:j}){const v=u.useNamespace("data-chart"),g={table:n.default,bar:c.default,line:l.default,pie:i.default,radar:p.default,scatter:d.default,funnel:m.default,area:f.default,card:h.default,"scatter-simple":y.default},b=e.computed((()=>r.cloneDeep(s.defaultChartOption[q.showTypeName]))),x=e.computed((()=>{const{desc:{colDesc:e=[],groupByDesc:t=[]}={},data:r=[]}=q.data;let s=[],o=null;s=t?.map((e=>(e.xAxis&&(o=e),e)));const a=o?r.filter((e=>e&&e[o.colDesc])):r;return{colDesc:e,modelName:q.modelName,subShowType:q.subShowType,xGroupByDesc:o||{groupByDesc:null,groupByValues:null,colDesc:null,xAxis:!1},groupByDesc:s,data:a}}));return j({exportExal:function(){if(0===q.data.data.length)return void console.log("暂无数据");const e=a.useDataToExcelJson(q.data);t.JsonToExcel(q.modelName,e)}}),e.provide(o.InjectionChartMerge,(function(e,t){let s=r.merge({},b.value,e,t)||{};if(q.jsCodeSnippet)try{s=new Function("config",`"use strict"; ${q.jsCodeSnippet}; return config;`)(s)}catch(e){console.error("代码执行失败:",e)}return s})),(t,r)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(g[t.showTypeName]),{class:e.normalizeClass([e.unref(v).e("wrapper")]),"sub-show-type":t.subShowType,"chart-data":e.unref(x),"chart-options":t.chartOptions},null,8,["class","sub-show-type","chart-data","chart-options"]))}});exports.default=q;
|
2
2
|
//# sourceMappingURL=data-chart.vue.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";var e=require("echarts"),t=require("../components/empty.svg.cjs"),
|
1
|
+
"use strict";var e=require("echarts"),t=require("../components/empty.svg.cjs"),o=require("vue"),i=require("@vueuse/core");function n(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(o){if("default"!==o){var i=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,i.get?i:{enumerable:!0,get:function(){return e[o]}})}})),t.default=e,Object.freeze(t)}var r=n(e);function a(e,t){const{width:o,height:n}=i.useElementSize(t);i.watchDebounced([o,n],(()=>{e&&e.resize()}))}exports.useCharts=function(e){let{chartDOM:n,chartData:u,chartOptions:l,mountedBefore:s,initAfter:c,callback:d}=e,f=null;const v=o.ref(!1),p=window.devicePixelRatio||1;function g(){f&&!f.isDisposed()&&(f.dispose(),f=null)}function h(){if(f&&v.value&&n.value){f.showLoading();try{f.isDisposed()&&(f=r.init(n.value,null,{devicePixelRatio:p,renderer:"svg"})),f.setOption(...arguments)}catch(e){console.log("error: ",e),g(),n.value&&(f=r.init(n.value,null,{devicePixelRatio:p,renderer:"svg"}),x("配置项错误"))}finally{f?.hideLoading()}}}const{isOutside:m}=i.useMouseInElement(n);function x(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"暂无数据";h({title:[{text:u.value?.modelName,...l.value.title},{subtext:e,top:"center",left:"center",text:" {a|}",itemGap:-20,textStyle:{align:"center",rich:{a:{color:"#000",fontSize:"16",height:80,width:160,backgroundColor:{image:t.default}}}},subtextStyle:{fontSize:16}}]},{notMerge:!0,replaceMerge:["xAxis","yAxis","series"],lazyUpdate:!1})}return i.watchDebounced(m,(e=>{var t;"boolean"==typeof e&&(t=!e,f?.isDisposed()||f?.setOption({toolbox:{show:t}}))}),{debounce:200}),o.onMounted((async()=>{s&&await s(),n.value&&(g(),f=r.init(n.value,null,{devicePixelRatio:p,renderer:"svg"}),d&&d(f),c&&await c(),a(f,n),v.value=!0,u.value?.data?.length?h(l.value,{}):x())})),o.onUnmounted((()=>{f&&(f.getZr()?.off("mousemove"),f.getZr()?.off("mouseout"),g())})),{myChart:f}},exports.useDataToExcelJson=function(e){const{desc:{colDesc:t=[],groupByDesc:o=[]}={},data:i=[]}=e,n=[...o.map((e=>e.colDesc)),...t].filter((e=>e)),r=i.map((e=>n.map((t=>e[t]||""))));return[n,...r]},exports.useResize=a;
|
2
2
|
//# sourceMappingURL=useCharts.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),t=require("./src/file-upload.vue.cjs");const s=e.withInstall(t.default);exports.QxsFileUpload=s,exports.default=s;
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("element-plus/es"),a=require("vue"),l=require("@element-plus/icons-vue"),t=require("@qxs-bns/hooks"),r=require("element-plus");const s={class:"slot"},i={style:{display:"inline-block"}};var n=a.defineComponent({name:"QxsFileUpload",__name:"file-upload",props:{action:{type:String,required:!0},headers:{type:null,required:!1},data:{type:null,required:!1},name:{type:String,required:!1,default:"file"},size:{type:Number,required:!1,default:20},max:{type:Number,required:!1,default:3},accept:{type:String,required:!1,default:"zip,rar"},files:{type:Array,required:!1,default:()=>[]},notip:{type:Boolean,required:!1,default:!1},ext:{type:Array,required:!1}},emits:["onSuccess"],setup(n,{emit:o}){const u=o,d=t.useNamespace("file-upload"),c=r.useNamespace("file-upload"),p=a.computed((()=>n.accept.split(","))),m=a=>{const l=a.name.split(".").at(-1)??"",t=p.value.includes(l),r=a.size/1024/1024<n.size;return t||e.ElMessage.error(`上传文件只支持 ${p.value.join(" / ")} 格式!`),r||e.ElMessage.error(`上传文件大小不能超过 ${n.size}MB!`),t&&r},f=()=>{e.ElMessage.warning("文件上传超过限制")},y=(e,a,l)=>{u("onSuccess",e,a,l)};return(t,r)=>{const n=e.ElIcon,o=e.ElAlert,u=e.ElUpload;return a.openBlock(),a.createBlock(u,{headers:t.headers,action:t.action,data:t.data,name:t.name,"before-upload":m,"on-exceed":f,"on-success":y,"file-list":t.files,limit:t.max,drag:"",class:a.normalizeClass(a.unref(d).e("control"))},{tip:a.withCtx((()=>[t.notip?a.createCommentVNode("v-if",!0):(a.openBlock(),a.createElementBlock("div",{key:0,class:a.normalizeClass(a.unref(c).namespace.value+"-upload__tip")},[a.createElementVNode("div",i,[a.createVNode(o,{title:`上传文件支持 ${a.unref(p).join(" / ")} 格式,单个文件大小不超过 ${t.size}MB,且文件数量不超过 ${t.max} 个`,type:"info","show-icon":"",closable:!1},null,8,["title"])])],2))])),default:a.withCtx((()=>[a.createElementVNode("div",s,[a.createVNode(n,{class:a.normalizeClass(a.unref(c).namespace.value+"-icon--upload")},{default:a.withCtx((()=>[a.createVNode(a.unref(l.UploadFilled))])),_:1},8,["class"]),a.createElementVNode("div",{class:a.normalizeClass(a.unref(c).namespace.value+"-upload__text")},r[0]||(r[0]=[a.createTextVNode(" 将文件拖到此处,或"),a.createElementVNode("em",null,"点击上传",-1)]),2)])])),_:1},8,["headers","action","data","name","file-list","limit","class"])}}});exports.default=n;
|
2
2
|
//# sourceMappingURL=file-upload.vue.cjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"file-upload.vue.cjs","sources":["../../../../../../packages/components/src/file-upload/src/file-upload.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { UploadProps, UploadUserFile } from \"element-plus\";\nimport { UploadFilled } from \"@element-plus/icons-vue\";\nimport { useNamespace } from \"@qxs-bns/hooks\";\n\ndefineOptions({\n name: \"QxsFileUpload\",\n});\n\nconst {\n name = \"file\",\n size = 20,\n max = 3,\n files = [],\n notip = false,\n accept = \"zip,rar\",\n} = defineProps<{\n action: UploadProps[\"action\"];\n headers?: UploadProps[\"headers\"];\n data?: UploadProps[\"data\"];\n name?: UploadProps[\"name\"];\n size?: number;\n max?: number;\n accept?: string;\n files?: UploadUserFile[];\n notip?: boolean;\n ext?: string[];\n}>();\n\nconst emit = defineEmits([\"onSuccess\"]);\n\nconst ns = useNamespace(\"file-upload\");\n\nconst exts = computed(() => {\n return accept.split(\",\");\n});\nconst beforeUpload: UploadProps[\"beforeUpload\"] = (file) => {\n const fileName = file.name.split(\".\");\n const fileExt = fileName.at(-1) ?? \"\";\n const isTypeOk = exts.value.includes(fileExt);\n const isSizeOk = file.size / 1024 / 1024 < size;\n if (!isTypeOk) {\n ElMessage.error(`上传文件只支持 ${exts.value.join(\" / \")} 格式!`);\n }\n if (!isSizeOk) {\n ElMessage.error(`上传文件大小不能超过 ${size}MB!`);\n }\n return isTypeOk && isSizeOk;\n};\n\nconst onExceed: UploadProps[\"onExceed\"] = () => {\n ElMessage.warning(\"文件上传超过限制\");\n};\n\nconst onSuccess: UploadProps[\"onSuccess\"] = (res, file, fileList) => {\n emit(\"onSuccess\", res, file, fileList);\n};\n</script>\n\n<template>\n <el-upload\n :headers=\"headers\"\n :action=\"action\"\n :data=\"data\"\n :name=\"name\"\n :before-upload=\"beforeUpload\"\n :on-exceed=\"onExceed\"\n :on-success=\"onSuccess\"\n :file-list=\"files\"\n :limit=\"max\"\n drag\n :class=\"ns.e('control')\"\n >\n <div class=\"slot\">\n <el-icon class=\"
|
1
|
+
{"version":3,"file":"file-upload.vue.cjs","sources":["../../../../../../packages/components/src/file-upload/src/file-upload.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { UploadProps, UploadUserFile } from \"element-plus\";\nimport { UploadFilled } from \"@element-plus/icons-vue\";\nimport { useNamespace } from \"@qxs-bns/hooks\";\nimport { useNamespace as useElNamespace } from \"element-plus\";\n\ndefineOptions({\n name: \"QxsFileUpload\",\n});\n\nconst {\n name = \"file\",\n size = 20,\n max = 3,\n files = [],\n notip = false,\n accept = \"zip,rar\",\n} = defineProps<{\n action: UploadProps[\"action\"];\n headers?: UploadProps[\"headers\"];\n data?: UploadProps[\"data\"];\n name?: UploadProps[\"name\"];\n size?: number;\n max?: number;\n accept?: string;\n files?: UploadUserFile[];\n notip?: boolean;\n ext?: string[];\n}>();\n\nconst emit = defineEmits([\"onSuccess\"]);\n\nconst ns = useNamespace(\"file-upload\");\nconst nsEl = useElNamespace(\"file-upload\");\n\nconst exts = computed(() => {\n return accept.split(\",\");\n});\nconst beforeUpload: UploadProps[\"beforeUpload\"] = (file) => {\n const fileName = file.name.split(\".\");\n const fileExt = fileName.at(-1) ?? \"\";\n const isTypeOk = exts.value.includes(fileExt);\n const isSizeOk = file.size / 1024 / 1024 < size;\n if (!isTypeOk) {\n ElMessage.error(`上传文件只支持 ${exts.value.join(\" / \")} 格式!`);\n }\n if (!isSizeOk) {\n ElMessage.error(`上传文件大小不能超过 ${size}MB!`);\n }\n return isTypeOk && isSizeOk;\n};\n\nconst onExceed: UploadProps[\"onExceed\"] = () => {\n ElMessage.warning(\"文件上传超过限制\");\n};\n\nconst onSuccess: UploadProps[\"onSuccess\"] = (res, file, fileList) => {\n emit(\"onSuccess\", res, file, fileList);\n};\n</script>\n\n<template>\n <el-upload\n :headers=\"headers\"\n :action=\"action\"\n :data=\"data\"\n :name=\"name\"\n :before-upload=\"beforeUpload\"\n :on-exceed=\"onExceed\"\n :on-success=\"onSuccess\"\n :file-list=\"files\"\n :limit=\"max\"\n drag\n :class=\"ns.e('control')\"\n >\n <div class=\"slot\">\n <el-icon :class=\"nsEl.namespace.value + '-icon--upload'\">\n <UploadFilled />\n </el-icon>\n <div :class=\"nsEl.namespace.value + '-upload__text'\">\n 将文件拖到此处,或<em>点击上传</em>\n </div>\n </div>\n <template #tip>\n <div v-if=\"!notip\" :class=\"nsEl.namespace.value + '-upload__tip'\">\n <div style=\"display: inline-block\">\n <el-alert\n :title=\"`上传文件支持 ${exts.join(\n ' / '\n )} 格式,单个文件大小不超过 ${size}MB,且文件数量不超过 ${max} 个`\"\n type=\"info\"\n show-icon\n :closable=\"false\"\n />\n </div>\n </div>\n </template>\n </el-upload>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","nsEl","useElNamespace","exts","computed","__props","accept","split","beforeUpload","file","fileExt","name","at","isTypeOk","value","includes","isSizeOk","size","ElMessage","error","join","onExceed","warning","onSuccess","res","fileList"],"mappings":"owBA8BA,MAAMA,EAAOC,EAEPC,EAAKC,eAAa,eAClBC,EAAOC,eAAe,eAEtBC,EAAOC,EAAAA,UAAS,IACbC,EAAAC,OAAOC,MAAM,OAEhBC,EAA6CC,IACjD,MACMC,EADWD,EAAKE,KAAKJ,MAAM,KACRK,IAAG,IAAO,GAC7BC,EAAWV,EAAKW,MAAMC,SAASL,GAC/BM,EAAWP,EAAKQ,KAAO,KAAO,KAAOZ,EAAIY,KAO/C,OANKJ,GACHK,YAAUC,MAAM,WAAWhB,EAAKW,MAAMM,KAAK,cAExCJ,GACHE,EAAAA,UAAUC,MAAM,cAAcd,EAAIY,WAE7BJ,GAAYG,CAAA,EAGfK,EAAoC,KACxCH,EAAAA,UAAUI,QAAQ,WAAU,EAGxBC,EAAsC,CAACC,EAAKf,EAAMgB,KACjD5B,EAAA,YAAa2B,EAAKf,EAAMgB,EAAQ"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),t=require("./src/fixed-action-bar.vue.cjs");const r=e.withInstall(t.default);exports.QxsFixedActionBar=r,exports.default=r;
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),n=require("@qxs-bns/utils"),r=require("lodash-es");var a=e.defineComponent({name:"QxsFixedActionBar",props:{padding:{type:Number,default:8},className:{type:String,default:""}},setup(a){const o=a,i=t.useNamespace("fixed-action-bar"),l=e.ref(!1),d=e.ref(null),s=e.ref(null),c=e.ref({width:0,height:0}),u=e.ref(0),p=e.ref(0),f={resize:null,parent:null},h=(e,t,n)=>{const r=new ResizeObserver((e=>{e.forEach((e=>requestAnimationFrame((()=>t(e)))))}));return r.observe(e,n),r},m=()=>{if(!d.value||!s.value)return;f.resize=h(d.value,(e=>{const t=(e=>{const t=getComputedStyle(e);return{x:parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),y:parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}})(e.target);c.value={width:e.contentRect.width+t.x,height:e.contentRect.height+t.y}}),{box:"border-box"});const e=s.value.parentElement;e&&(f.parent=h(e,(()=>{const t=e.getBoundingClientRect();u.value=t.width,p.value=t.left})))},v=r.debounce((()=>{const{scrollY:e}=window,{clientHeight:t,scrollHeight:n}=document.documentElement;l.value=Math.ceil(e+t)>=n}),100),g=e.computed((()=>l.value?"":i.is("shadow"))),x=e.computed((()=>"Android"===n.getDeviceType()?Math.max(o.padding,20):o.padding)),b=e.computed((()=>({width:`${u.value}px`,left:`${p.value}px`,...i.cssVarBlock({"actionbar-padding":`${o.padding}px`,"actionbar-padding-bottom":`${x.value}px`})})));return e.onMounted((()=>{m(),window.addEventListener("scroll",v,{passive:!0})})),e.onUnmounted((()=>{f.resize?.disconnect(),f.parent?.disconnect(),window.removeEventListener("scroll",v)})),(t,n)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"placeholderRef",ref:s,style:e.normalizeStyle({width:"100%",height:`${e.unref(c).height}px`})},[e.createElementVNode("div",{ref_key:"actionbar",ref:d,style:e.normalizeStyle(e.unref(b)),class:e.normalizeClass([e.unref(i).e("actionbar"),e.unref(g),a.className]),"data-fixed-calc-width":""},[e.renderSlot(t.$slots,"default")],6)],4))}});exports.default=a;
|
2
2
|
//# sourceMappingURL=fixed-action-bar.vue.cjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../withInstall.cjs"),t=require("./src/image-upload.vue.cjs");const s=e.withInstall(t.default);exports.QxsImageUpload=s,exports.default=s;
|
2
2
|
//# sourceMappingURL=index.cjs.map
|