@qxs-bns/components 0.0.69 → 0.0.71
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/package.json.mjs +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/bar.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/funnel.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/line.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/pie.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/radar.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/scatter-simple.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/scatter.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs.map +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
- package/es/src/data-chart/src/utils/config.mjs +1 -1
- package/es/src/data-chart/src/utils/config.mjs.map +1 -1
- package/es/src/data-chart/src/utils/mapData.mjs.map +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs.map +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs +1 -1
- package/es/src/fixed-action-bar/src/fixed-action-bar.vue.mjs.map +1 -1
- package/es/src/icon/index.mjs +1 -1
- package/es/src/icon/index.mjs.map +1 -1
- package/es/src/icon/src/icon.vue.mjs +1 -1
- package/es/src/icon/src/icon.vue.mjs.map +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
- package/es/src/photo-crop-tool/src/composables.mjs.map +1 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs +1 -1
- package/es/src/photo-crop-tool/src/photo-crop-tool.vue.mjs.map +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
- package/es/src/subject-type/src/subject-type.vue.mjs +1 -1
- package/es/src/subject-type/src/subject-type.vue.mjs.map +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
- package/lib/package.json.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/bar.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/funnel.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/pie.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/radar.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/scatter-simple.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/scatter.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/config.cjs +1 -1
- package/lib/src/data-chart/src/utils/config.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/mapData.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs.map +1 -1
- package/lib/src/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/src/fixed-action-bar.vue.cjs +1 -1
- package/lib/src/fixed-action-bar/src/fixed-action-bar.vue.cjs.map +1 -1
- package/lib/src/icon/index.cjs +1 -1
- package/lib/src/icon/index.cjs.map +1 -1
- package/lib/src/icon/src/icon.vue.cjs +1 -1
- package/lib/src/icon/src/icon.vue.cjs.map +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
- package/lib/src/photo-crop-tool/src/composables.cjs.map +1 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs +1 -1
- package/lib/src/photo-crop-tool/src/photo-crop-tool.vue.cjs.map +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
- package/lib/src/subject-type/src/subject-type.vue.cjs +1 -1
- package/lib/src/subject-type/src/subject-type.vue.cjs.map +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
- package/package.json +8 -15
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/index.scss +1 -1
- package/theme-chalk/src/common/element-plus.scss +1 -1
- package/theme-chalk/src/data-chart/empty.css +1 -1
- package/theme-chalk/src/data-chart/empty.scss +3 -3
- package/theme-chalk/src/data-chart/index.css +1 -1
- package/theme-chalk/src/icon.css +1 -1
- package/theme-chalk/src/icon.scss +5 -5
- package/theme-chalk/src/image-upload.css +1 -1
- package/theme-chalk/src/image-upload.scss +21 -18
- package/theme-chalk/src/mixins/config.scss +1 -3
- package/theme-chalk/src/mixins/mixins.scss +1 -2
- package/theme-chalk/src/normalize.css +1 -1
- package/theme-chalk/src/normalize.scss +41 -19
- package/theme-chalk/src/photo-crop-tool.css +1 -1
- package/theme-chalk/src/photo-crop-tool.scss +7 -7
- package/theme-chalk/src/subject-action.css +1 -1
- package/theme-chalk/src/subject-action.scss +1 -1
- package/types/src/data-chart/index.d.ts +1 -1
- package/types/src/data-chart/src/components/area.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/bar.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/card.vue.d.ts +2 -2
- package/types/src/data-chart/src/components/card.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/funnel.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/line.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/pie.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/radar.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/scatter-simple.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/scatter.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/components/table.vue.d.ts +2 -2
- package/types/src/data-chart/src/components/table.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/data-chart.vue.d.ts +2 -2
- package/types/src/data-chart/src/data-chart.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/config.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/mapData.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/useCharts.d.ts.map +1 -1
- package/types/src/file-upload/src/file-upload.vue.d.ts.map +1 -1
- package/types/src/fixed-action-bar/index.d.ts +3 -3
- package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts +2 -2
- package/types/src/fixed-action-bar/src/fixed-action-bar.vue.d.ts.map +1 -1
- package/types/src/icon/index.d.ts +2 -2
- package/types/src/icon/index.d.ts.map +1 -1
- package/types/src/icon/src/icon.vue.d.ts +2 -1
- package/types/src/icon/src/icon.vue.d.ts.map +1 -1
- package/types/src/image-upload/src/image-upload.vue.d.ts.map +1 -1
- package/types/src/photo-crop-tool/index.d.ts +4 -4
- package/types/src/photo-crop-tool/src/composables.d.ts.map +1 -1
- package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts +2 -2
- package/types/src/photo-crop-tool/src/photo-crop-tool.vue.d.ts.map +1 -1
- package/types/src/subject-action/index.d.ts +2 -2
- package/types/src/subject-action/src/subject-action.vue.d.ts +2 -2
- package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
- package/types/src/subject-list/index.d.ts +1 -1
- package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/SubjectRichText.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/src/subject-list/src/subject-list.vue.d.ts +1 -1
- package/types/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
- package/types/src/subject-type/src/subject-type.vue.d.ts.map +1 -1
- package/types/src/tiny-mce-editor/index.d.ts.map +1 -1
- package/types/src/tiny-mce-editor/src/tiny-mce-editor.vue.d.ts.map +1 -1
- package/types/tsconfig.tsbuildinfo +1 -1
package/es/package.json.mjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
var r="0.0.
|
1
|
+
var r="0.0.71";export{r as version};
|
2
2
|
//# sourceMappingURL=package.json.mjs.map
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,inject as a,ref as t,computed as r,createElementBlock as o,openBlock as n,createCommentVNode as s,createElementVNode as c}from"vue";import*as i from"echarts";import{getGeoJsonData as l}from"../utils/config.mjs";import{InjectionChartMerge as m}from"../utils/injectionKeys.mjs";import{useCharts as u}from"../utils/useCharts.mjs";const p={class:"data-chart-area-wrap"};var d=e({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:""})},lazyLoad:{type:Boolean,required:!1,default:!0}},setup(e,{expose:d}){const h=a(m,e=>e,!0);let f="中国";const y=t({features:[],type:"FeatureCollection"}),D=t(null),
|
1
|
+
import{defineComponent as e,inject as a,ref as t,computed as r,createElementBlock as o,openBlock as n,createCommentVNode as s,createElementVNode as c}from"vue";import*as i from"echarts";import{getGeoJsonData as l}from"../utils/config.mjs";import{InjectionChartMerge as m}from"../utils/injectionKeys.mjs";import{useCharts as u}from"../utils/useCharts.mjs";const p={class:"data-chart-area-wrap"};var d=e({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:""})},lazyLoad:{type:Boolean,required:!1,default:!0}},setup(e,{expose:d}){const h=a(m,e=>e,!0);let f="中国";const y=t({features:[],type:"FeatureCollection"}),D=t(null),g=r(()=>{try{const{xGroupByDesc:a,groupByDesc:t,colDesc:r,modelName:o,data:n}=e.chartData,s=[];r.forEach(e=>{n.forEach(a=>{s.push(Number(a[e]))})});const c={title:{text:o},tooltip:{formatter(e){let a=`${e.name}<br/>`;return c.series?.forEach(t=>{t.data?.forEach(r=>{r.name===e.name&&(a+=`${t.name}:${r.value}</br>`)}),a.includes(t.name)||(a+=`${t.name}:-</br>`)}),a}},visualMap:{min:Math.min(...s,0),max:Math.max(...s,0),text:["高","低"],realtime:!1,calculable:!0,inRange:{color:["#E8F4FD","#B8D4F7","#7BA4F0","#4A7BE8","#3562e1"]}},series:r?.map(e=>{const r=[],o=t.find(e=>e.colDesc===("中国"===f?"医院所在省":"医院所在市")),s={};n.map(t=>{const r=t[("中国"===f?a?.colDesc||"":o?.colDesc)||""],n=y.value.features?.find(({properties:{name:e}})=>e?.includes(r));return{name:n?.properties?.name||"",value:Number(t[e])}}).forEach(e=>{s[e.name]?s[e.name]=s[e.name]+e.value:s[e.name]=e.value});for(const e in s)r.push({name:e,value:s[e]});return{name:e,type:"map",map:f,data:r}})};return h(c,e.chartOptions)}catch(e){return console.error("Error computing area chart options:",e),{title:{text:"地图加载失败"},series:[]}}});async function v(e="中国"){try{const a=await l({adcode:e});if(!a||!a.features||0===a.features.length)return void console.error("Invalid GeoJSON data for:",e);y.value=a,f=e,i.registerMap(e,a)}catch(a){if(console.error("Failed to register map for:",e,a),"中国"!==e)return console.log("Falling back to China map"),v("中国")}}const{myChart:x}=u({chartDOM:D,chartOptions:g,chartData:r(()=>e.chartData),initAfter:async function(a){try{await v(),a&&!a.isDisposed()&&(a.getZr()?.on("click",e=>{a?.showLoading(),e.target||"中国"===f||v("中国"),a.hideLoading()}),a.on("click",t=>{a?.showLoading();const r=e.chartData.groupByDesc?.some(e=>"医院所在市"===e.colDesc);"中国"===f&&r&&t.name&&v(t.name).then(()=>{a&&!a.isDisposed()&&a.setOption(g.value)}),a?.hideLoading()}))}catch(e){if(console.error("Failed to initialize map:",e),a&&!a.isDisposed())try{await v("中国")}catch(e){console.error("Failed to retry map registration:",e)}}},lazyLoad:e.lazyLoad});return d({myChart:x}),(e,a)=>(n(),o("div",p,[s(' <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> '),c("div",{ref_key:"dataChartArea",ref:D,class:"data-chart-area"},null,512)]))}});export{d as default};
|
2
2
|
//# sourceMappingURL=area.vue2.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"area.vue2.mjs","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 '../utils/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 lazyLoad = true,\n} = defineProps<{\n chartOptions: EChartsOption\n chartData?: IFormatPublicData\n lazyLoad?: boolean\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)\n\nconst areaChartOptions = computed<EChartsOption>(() => {\n try {\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 text: ['高', '低'],\n realtime: false,\n calculable: true,\n inRange: {\n color: ['#E8F4FD', '#B8D4F7', '#7BA4F0', '#4A7BE8', '#3562e1']\n },\n },\n series: colDesc?.map((colDescItem) => {\n const seriesData = []\n const row = groupByDesc.find(item => item.colDesc === (adcode === '中国' ? '医院所在省' : '医院所在市'))\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 catch (error) {\n console.error('Error computing area chart options:', error)\n return {\n title: { text: '地图加载失败' },\n series: [],\n }\n }\n})\n\nasync function initAfter(mc: ECharts | null) {\n try {\n await registerMap()\n // 添加判断,确保图表实例存在且未被销毁\n if (mc && !mc.isDisposed()) {\n // charts 监听事件\n mc.getZr()?.on('click', (params: { target: HTMLElement }) => {\n mc?.showLoading()\n if (!params.target && adcode !== '中国') {\n registerMap('中国')\n }\n mc.hideLoading()\n })\n mc.on('click', (params: { name: string }) => {\n mc?.showLoading()\n const flag = chartData.groupByDesc?.some(item => item.colDesc === '医院所在市')\n if (adcode === '中国' && flag && params.name) {\n registerMap(params.name).then(() => {\n if (mc && !mc.isDisposed()) {\n mc.setOption(areaChartOptions.value)\n }\n })\n }\n mc?.hideLoading()\n })\n }\n }\n catch (error) {\n console.error('Failed to initialize map:', error)\n // 如果初始化失败,尝试重新注册地图\n if (mc && !mc.isDisposed()) {\n try {\n await registerMap('中国')\n }\n catch (retryError) {\n console.error('Failed to retry map registration:', retryError)\n }\n }\n }\n}\n\n// function selectChina() {\n// registerMap(adcode)\n// }\nasync function registerMap(keyword = '中国') {\n try {\n const geoJson = await getGeoJsonData({ adcode: keyword })\n if (!geoJson || !geoJson.features || geoJson.features.length === 0) {\n console.error('Invalid GeoJSON data for:', keyword)\n return\n }\n currentGeoJson.value = geoJson\n adcode = keyword\n\n echarts.registerMap(keyword, geoJson as any)\n return\n }\n catch (error) {\n console.error('Failed to register map for:', keyword, error)\n // 如果注册失败,尝试使用默认的中国地图数据\n if (keyword !== '中国') {\n console.log('Falling back to China map')\n return registerMap('中国')\n }\n }\n}\n\nconst { myChart } = useCharts({\n chartDOM: dataChartArea,\n chartOptions: areaChartOptions,\n chartData: computed(() => chartData),\n initAfter,\n lazyLoad\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\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\n ref=\"dataChartArea\"\n class=\"data-chart-area\"\n />\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 width: 100%;\n height: 100%;\n min-height: 300px;\n }\n}\n</style>\n"],"names":["merge","inject","InjectionChartMerge","v","adcode","currentGeoJson","ref","features","type","dataChartArea","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","realtime","calculable","inRange","color","map","seriesData","row","find","arr","sourceName","properties","key","chartOptions","error","console","async","registerMap","keyword","geoJson","getGeoJsonData","length","echarts","log","myChart","useCharts","chartDOM","initAfter","mc","isDisposed","getZr","on","showLoading","target","hideLoading","flag","some","then","setOption","retryError","lazyLoad","__expose","_openBlock","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","class"],"mappings":"4sBAiCA,MAAMA,EAAQC,EAAOC,EAAsBC,GAAWA,GAAG,GAEzD,IAAIC,EAAS,KACb,MAAMC,EAAiBC,EAAa,CAClCC,SAAU,GACVC,KAAM,sBAEFC,EAAgBH,EAAI,MAEpBI,EAAmBC,EAAwB,KAC/C,IACE,MAAMC,aAAEA,EAAAC,YAAcA,EAAAC,QAAaA,YAASC,EAAAC,KAAWA,GAASC,EAAAC,UAC1DC,EAAoB,GAC1BL,EAAQM,QAASC,IACfL,EAAKI,QAASE,IACZH,EAAQI,KAAKC,OAAOF,EAASD,SAGjC,MAAMI,EAAS,CACbC,MAAO,CACLC,KAAMZ,GAERa,QAAS,CACP,SAAAC,CAAUC,GACR,IAAIC,EAAM,GAAGD,EAAOE,YAWpB,OAVAP,EAAOQ,QAAQb,QAASc,IACtBA,EAAYlB,MAAMI,QAASC,IACrBA,EAAKW,OAASF,EAAOE,OACvBD,GAAO,GAAGG,EAAYF,QAAQX,EAAKc,gBAGlCJ,EAAIK,SAASF,EAAYF,QAC5BD,GAAO,GAAGG,EAAYF,iBAGnBD,CACT,GAEFM,UAAW,CACTC,IAAKC,KAAKD,OAAOnB,EAAS,GAC1BqB,IAAKD,KAAKC,OAAOrB,EAAS,GAC1BQ,KAAM,CAAC,IAAK,KACZc,UAAU,EACVC,YAAY,EACZC,QAAS,CACPC,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,aAGxDX,OAAQnB,GAAS+B,IAAKX,IACpB,MAAMY,EAAa,GACbC,EAAMlC,EAAYmC,KAAK3B,GAAQA,EAAKP,WAAwB,OAAXV,EAAkB,QAAU,UAE7E6C,EAEF,CAAA,EACJjC,EAAK6B,IAAKxB,IACR,MAAM6B,EAAa7B,GAAiB,OAAXjB,EAAmBQ,GAAcE,SAAW,GAAMiC,GAAKjC,UAAY,IACtFkC,EAAO3C,EAAe8B,MAAM5B,UAAUyC,KAAK,EAAGG,YAAcnB,WAAgDA,GAAMI,SAASc,IACjI,MAAO,CACLlB,KAAMgB,GAAMG,YAAYnB,MAAQ,GAChCG,MAAOX,OAAOH,EAAKa,OAEpBd,QAASC,IACL4B,EAAI5B,EAAKW,MAIZiB,EAAI5B,EAAKW,MAAQiB,EAAI5B,EAAKW,MAAQX,EAAKc,MAHvCc,EAAI5B,EAAKW,MAAQX,EAAKc,QAM1B,IAAA,MAAWiB,KAAOH,EAChBH,EAAWvB,KAAK,CACdS,KAAMoB,EACNjB,MAAOc,EAAIG,KAGf,MAAO,CACLpB,KAAME,EACN1B,KAAM,MACNqC,IAAKzC,EACLY,KAAM8B,MAKZ,OAAO9C,EAAMyB,EAAQR,EAAAoC,aACvB,OACOC,GAEL,OADAC,QAAQD,MAAM,sCAAuCA,GAC9C,CACL5B,MAAO,CAAEC,KAAM,UACfM,OAAQ,GAEZ,IA+CFuB,eAAeC,EAAYC,EAAU,MACnC,IACE,MAAMC,QAAgBC,EAAe,CAAExD,OAAQsD,IAC/C,OAAKC,GAAYA,EAAQpD,UAAwC,IAA5BoD,EAAQpD,SAASsD,QAItDxD,EAAe8B,MAAQwB,EACvBvD,EAASsD,OAETI,EAAQL,YAAYC,EAASC,SAN3BJ,QAAQD,MAAM,4BAA6BI,EAQ/C,OACOJ,GAGL,GAFAC,QAAQD,MAAM,8BAA+BI,EAASJ,GAEtC,OAAZI,EAEF,OADAH,QAAQQ,IAAI,6BACLN,EAAY,KAEvB,CACF,CAEA,MAAMO,QAAEA,GAAYC,EAAU,CAC5BC,SAAUzD,EACV4C,aAAc3C,EACdQ,UAAWP,EAAS,IAAMM,EAAAC,WAC1BiD,UAvEFX,eAAyBY,GACvB,UACQX,IAEFW,IAAOA,EAAGC,eAEZD,EAAGE,SAASC,GAAG,QAAUzC,IACvBsC,GAAII,cACC1C,EAAO2C,QAAqB,OAAXrE,GACpBqD,EAAY,MAEdW,EAAGM,gBAELN,EAAGG,GAAG,QAAUzC,IACdsC,GAAII,cACJ,MAAMG,EAAO1D,EAAAC,UAAUL,aAAa+D,KAAKvD,GAAyB,UAAjBA,EAAKP,SACvC,OAAXV,GAAmBuE,GAAQ7C,EAAOE,MACpCyB,EAAY3B,EAAOE,MAAM6C,KAAK,KACxBT,IAAOA,EAAGC,cACZD,EAAGU,UAAUpE,EAAiByB,SAIpCiC,GAAIM,gBAGV,OACOpB,GAGL,GAFAC,QAAQD,MAAM,4BAA6BA,GAEvCc,IAAOA,EAAGC,aACZ,UACQZ,EAAY,KACpB,OACOsB,GACLxB,QAAQD,MAAM,oCAAqCyB,EACrD,CAEJ,CACF,EAiCEC,SAAO/D,EAAA+D,kBAITC,EAAa,CACXjB,oBAKAkB,IAAAC,EAmBM,MAnBNC,EAmBM,CAlBJC,EAAA,6TAcAC,EAGE,MAAA,SAFI,gBAAJhF,IAAIG,EACJ8E,MAAM"}
|
1
|
+
{"version":3,"file":"area.vue2.mjs","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 '../utils/types'\nimport * as echarts from 'echarts'\nimport { computed, inject, ref } from 'vue'\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 lazyLoad = true,\n} = defineProps<{\n chartOptions: EChartsOption\n chartData?: IFormatPublicData\n lazyLoad?: boolean\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)\n\nconst areaChartOptions = computed<EChartsOption>(() => {\n try {\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 text: ['高', '低'],\n realtime: false,\n calculable: true,\n inRange: {\n color: ['#E8F4FD', '#B8D4F7', '#7BA4F0', '#4A7BE8', '#3562e1'],\n },\n },\n series: colDesc?.map((colDescItem) => {\n const seriesData = []\n const row = groupByDesc.find(item => item.colDesc === (adcode === '中国' ? '医院所在省' : '医院所在市'))\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 catch (error) {\n console.error('Error computing area chart options:', error)\n return {\n title: { text: '地图加载失败' },\n series: [],\n }\n }\n})\n\nasync function initAfter(mc: ECharts | null) {\n try {\n await registerMap()\n // 添加判断,确保图表实例存在且未被销毁\n if (mc && !mc.isDisposed()) {\n // charts 监听事件\n mc.getZr()?.on('click', (params: { target: HTMLElement }) => {\n mc?.showLoading()\n if (!params.target && adcode !== '中国') {\n registerMap('中国')\n }\n mc.hideLoading()\n })\n mc.on('click', (params: { name: string }) => {\n mc?.showLoading()\n const flag = chartData.groupByDesc?.some(item => item.colDesc === '医院所在市')\n if (adcode === '中国' && flag && params.name) {\n registerMap(params.name).then(() => {\n if (mc && !mc.isDisposed()) {\n mc.setOption(areaChartOptions.value)\n }\n })\n }\n mc?.hideLoading()\n })\n }\n }\n catch (error) {\n console.error('Failed to initialize map:', error)\n // 如果初始化失败,尝试重新注册地图\n if (mc && !mc.isDisposed()) {\n try {\n await registerMap('中国')\n }\n catch (retryError) {\n console.error('Failed to retry map registration:', retryError)\n }\n }\n }\n}\n\n// function selectChina() {\n// registerMap(adcode)\n// }\nasync function registerMap(keyword = '中国') {\n try {\n const geoJson = await getGeoJsonData({ adcode: keyword })\n if (!geoJson || !geoJson.features || geoJson.features.length === 0) {\n console.error('Invalid GeoJSON data for:', keyword)\n return\n }\n currentGeoJson.value = geoJson\n adcode = keyword\n\n echarts.registerMap(keyword, geoJson as any)\n }\n catch (error) {\n console.error('Failed to register map for:', keyword, error)\n // 如果注册失败,尝试使用默认的中国地图数据\n if (keyword !== '中国') {\n console.log('Falling back to China map')\n return registerMap('中国')\n }\n }\n}\n\nconst { myChart } = useCharts({\n chartDOM: dataChartArea,\n chartOptions: areaChartOptions,\n chartData: computed(() => chartData),\n initAfter,\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\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\n ref=\"dataChartArea\"\n class=\"data-chart-area\"\n />\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 width: 100%;\n height: 100%;\n min-height: 300px;\n }\n}\n</style>\n"],"names":["merge","inject","InjectionChartMerge","v","adcode","currentGeoJson","ref","features","type","dataChartArea","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","realtime","calculable","inRange","color","map","seriesData","row","find","arr","sourceName","properties","key","chartOptions","error","console","async","registerMap","keyword","geoJson","getGeoJsonData","length","echarts","log","myChart","useCharts","chartDOM","initAfter","mc","isDisposed","getZr","on","showLoading","target","hideLoading","flag","some","then","setOption","retryError","lazyLoad","__expose","_openBlock","_createElementBlock","_hoisted_1","_createCommentVNode","_createElementVNode","class"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bar.vue2.mjs","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 EChartsOption,\n IFormatPublicData,\n SeriesOption,\n} from '../utils/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 subShowType = 'bar-simple',\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n lazyLoad?: boolean\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 || '']))).filter(item => item !== undefined && item !== null) || []\n\n // 创建新的对象而不是修改原对象\n const yGroupByDesc = {\n ...groupByDesc.find(item => !item.xAxis) || {\n groupByDesc: null,\n groupByValues: [],\n colDesc: '',\n xAxis: false,\n },\n groupByValues: uniq(data.map(item => groupByDesc.find(item => !item.xAxis)?.colDesc ? String(item[groupByDesc.find(item => !item.xAxis)?.colDesc || '']) : '')),\n }\n\n // 创建新的 xGroupByDesc 对象\n const newXGroupByDesc = xGroupByDesc\n ? {\n ...xGroupByDesc,\n groupByValues: uniq(data.map(item => xGroupByDesc.colDesc ? String(item[xGroupByDesc.colDesc]) : '')),\n }\n : xGroupByDesc\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 = (newXGroupByDesc?.groupByValues || []).map((xGroupByDescItem) => {\n let targetVal: number | string | null = null\n data.forEach((item) => {\n if (yGroupByDesc.colDesc && item[yGroupByDesc.colDesc] === yGroupByDescItem && newXGroupByDesc?.colDesc && item[newXGroupByDesc.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\nconst { myChart } = useCharts({\n chartDOM: dataChartBar,\n chartOptions: barChartOptions,\n chartData: computed(() => chartData),\n lazyLoad
|
1
|
+
{"version":3,"file":"bar.vue2.mjs","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 EChartsOption,\n IFormatPublicData,\n SeriesOption,\n} from '../utils/types'\nimport { uniq } from 'lodash-es'\nimport { computed, inject, ref } from 'vue'\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 subShowType = 'bar-simple',\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n lazyLoad?: boolean\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 || '']))).filter(item => item !== undefined && item !== null) || []\n\n // 创建新的对象而不是修改原对象\n const yGroupByDesc = {\n ...groupByDesc.find(item => !item.xAxis) || {\n groupByDesc: null,\n groupByValues: [],\n colDesc: '',\n xAxis: false,\n },\n groupByValues: uniq(data.map(item => groupByDesc.find(item => !item.xAxis)?.colDesc ? String(item[groupByDesc.find(item => !item.xAxis)?.colDesc || '']) : '')),\n }\n\n // 创建新的 xGroupByDesc 对象\n const newXGroupByDesc = xGroupByDesc\n ? {\n ...xGroupByDesc,\n groupByValues: uniq(data.map(item => xGroupByDesc.colDesc ? String(item[xGroupByDesc.colDesc]) : '')),\n }\n : xGroupByDesc\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 = (newXGroupByDesc?.groupByValues || []).map((xGroupByDescItem) => {\n let targetVal: number | string | null = null\n data.forEach((item) => {\n if (yGroupByDesc.colDesc && item[yGroupByDesc.colDesc] === yGroupByDescItem && newXGroupByDesc?.colDesc && item[newXGroupByDesc.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\nconst { myChart } = useCharts({\n chartDOM: dataChartBar,\n chartOptions: barChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartBar\"\n class=\"data-chart-bar\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-bar {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["merge","inject","InjectionChartMerge","v","dataChartBar","ref","barChartOptions","computed","colDesc","xGroupByDesc","groupByDesc","data","modelName","__props","chartData","axisData","Array","from","Set","map","item","filter","yGroupByDesc","find","xAxis","groupByValues","uniq","String","newXGroupByDesc","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","flat","configureAxis","axis","isArray","subShowType","chartOptions","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{
|
1
|
+
import{defineComponent as a,createElementBlock as t,openBlock as c,createElementVNode as e,createBlock as r,toDisplayString as l,Fragment as s,unref as d,withCtx as o,normalizeClass as i,renderList as n,normalizeStyle as m,createTextVNode as h,createCommentVNode as u}from"vue";import{ElScrollbar as D}from"element-plus";import p from"./data-chart-card-bg-left.svg.mjs";import g from"./data-chart-card-bg-right.svg.mjs";import y from"./empty.vue.mjs";const v={class:"data-chart-card"},f={class:"title"},k=["title"],$={class:"context"},x={class:"suffix-icon"},b={key:1,class:"data-chart-card-wrap"},j=["title"],B={class:"context"};var N=a({name:"DataChartCard",__name:"card",props:{chartData:{type:Object,default:()=>({colDesc:[],xGroupByDesc:[],data:[],modelName:""})}},setup(a){const N=a,_=`url(${p})`,C=`url(${g})`;function G(a){const t=N.chartData.xGroupByDesc?.colDesc||"";return t?t+a[t]:""}return(p,g)=>(c(),t("div",v,[e("p",f,l(a.chartData.modelName),1),a.chartData.data.length?(c(),t(s,{key:0},[a.chartData.groupByDesc.length?(c(),r(d(D),{key:0},{default:o(()=>[e("div",{class:i({"data-chart-card-grid-layout":a.chartData.groupByDesc.length})},[(c(!0),t(s,null,n(a.chartData.data,(r,d)=>(c(),t("div",{key:d,class:"card-item",style:m({"background-image":`${_}, ${C}`})},[e("div",{class:"card-title",title:G(r)},l(G(r)),9,k),e("div",$,[(c(!0),t(s,null,n(a.chartData.colDesc,(s,d)=>(c(),t("span",{key:s},[h(l(`${s}: `||"-"),1),e("strong",null,l(r[s]||"-"),1),h(" "+l(d===a.chartData.colDesc.length-1?"":","),1)]))),128))]),e("div",x,l(d+1),1)],4))),128))],2)]),_:1})):(c(),t("div",b,[(c(!0),t(s,null,n(a.chartData.data,(r,d)=>(c(),t("div",{key:d,class:"card-item",style:m({"background-image":`${_}, ${C}`})},[e("div",{class:"card-title",title:a.chartData.modelName},l(a.chartData.modelName),9,j),e("div",B,[(c(!0),t(s,null,n(a.chartData.colDesc,(d,o)=>(c(),t("span",{key:d},[r?(c(),t(s,{key:0},[h(l(`${d}: `||"-"),1),e("strong",null,l(r[d]||"-"),1),h(" "+l(o===a.chartData.colDesc.length-1?"":","),1)],64)):u("v-if",!0)]))),128))])],4))),128))]))],64)):(c(),r(y,{key:1}))]))}});export{N as default};
|
2
2
|
//# sourceMappingURL=card.vue2.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"card.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/card.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { EChartData, IFormatPublicData } from '../utils/types'\nimport bgLeft from './data-chart-card-bg-left.svg'\nimport bgRight from './data-chart-card-bg-right.svg'\nimport Empty from './empty.vue'\n\ndefineOptions({\n name: 'DataChartCard',\n})\n\nconst props = defineProps({\n chartData: {\n type: Object as PropType<IFormatPublicData>,\n default: () => ({\n colDesc: [],\n xGroupByDesc: [],\n data: [],\n modelName: '',\n }),\n },\n})\n\n// 将 SVG 文件转换为 URL\nconst bgLeftUrl = `url(${bgLeft})`\nconst bgRightUrl = `url(${bgRight})`\n\nfunction cardTitle(dataItem: EChartData['data'][0]) {\n const colDesc = props.chartData.xGroupByDesc?.colDesc || ''\n\n return colDesc ? (colDesc + dataItem[colDesc]) : ''\n}\n</script>\n\n<template>\n <div class=\"data-chart-card\">\n <p class=\"title\">\n {{ chartData.modelName }}\n </p>\n <template v-if=\"chartData.data.length\">\n <
|
1
|
+
{"version":3,"file":"card.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/card.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { EChartData, IFormatPublicData } from '../utils/types'\nimport { ElScrollbar } from 'element-plus'\nimport bgLeft from './data-chart-card-bg-left.svg'\nimport bgRight from './data-chart-card-bg-right.svg'\nimport Empty from './empty.vue'\n\ndefineOptions({\n name: 'DataChartCard',\n})\n\nconst props = defineProps({\n chartData: {\n type: Object as PropType<IFormatPublicData>,\n default: () => ({\n colDesc: [],\n xGroupByDesc: [],\n data: [],\n modelName: '',\n }),\n },\n})\n\n// 将 SVG 文件转换为 URL\nconst bgLeftUrl = `url(${bgLeft})`\nconst bgRightUrl = `url(${bgRight})`\n\nfunction cardTitle(dataItem: EChartData['data'][0]) {\n const colDesc = props.chartData.xGroupByDesc?.colDesc || ''\n\n return colDesc ? (colDesc + dataItem[colDesc]) : ''\n}\n</script>\n\n<template>\n <div class=\"data-chart-card\">\n <p class=\"title\">\n {{ chartData.modelName }}\n </p>\n <template v-if=\"chartData.data.length\">\n <ElScrollbar v-if=\"chartData.groupByDesc.length\">\n <div :class=\"{ 'data-chart-card-grid-layout': chartData.groupByDesc.length }\">\n <div\n v-for=\"(dataItem, dataIndex) in chartData.data\"\n :key=\"dataIndex\"\n class=\"card-item\"\n :style=\"{\n 'background-image': `${bgLeftUrl}, ${bgRightUrl}`,\n }\"\n >\n <div\n class=\"card-title\"\n :title=\"cardTitle(dataItem)\"\n >\n {{ cardTitle(dataItem) }}\n </div>\n <div class=\"context\">\n <span\n v-for=\"(item, index) in chartData.colDesc\"\n :key=\"item\"\n >\n {{ `${item}: ` || '-' }}<strong>{{ dataItem[item] || '-' }}</strong> {{ index === chartData.colDesc.length\n - 1 ? '' : ',' }}\n </span>\n </div>\n <div class=\"suffix-icon\">\n {{ dataIndex + 1 }}\n </div>\n </div>\n </div>\n </ElScrollbar>\n <div\n v-else\n class=\"data-chart-card-wrap\"\n >\n <div\n v-for=\"(dataItem, dataIndex) in chartData.data\"\n :key=\"dataIndex\"\n class=\"card-item\"\n :style=\"{\n 'background-image': `${bgLeftUrl}, ${bgRightUrl}`,\n }\"\n >\n <div\n class=\"card-title\"\n :title=\"chartData.modelName\"\n >\n {{ chartData.modelName }}\n </div>\n <div class=\"context\">\n <span\n v-for=\"(item, index) in chartData.colDesc\"\n :key=\"item\"\n >\n <template v-if=\"dataItem\">\n {{ `${item}: ` || '-' }}<strong>{{ dataItem[item] || '-' }}</strong> {{ index === chartData.colDesc.length\n - 1 ? '' : ',' }}\n </template>\n </span>\n </div>\n </div>\n </div>\n </template>\n <Empty v-else />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-card {\n display: flex;\n flex-direction: column;\n\n .title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 5.5px;\n margin: 0;\n font-family: sans-serif;\n font-size: 14px;\n font-weight: 600;\n line-height: 26px;\n color: #464646;\n }\n\n .data-chart-card-grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 10px;\n width: calc(100% - 3px);\n }\n\n .data-chart-card-wrap {\n height: 100% !important;\n\n .card-item {\n width: 100% !important;\n }\n }\n\n .card-item {\n position: relative;\n background-repeat: no-repeat;\n background-position: left top, right top;\n background-size: contain, contain;\n border: 2px solid #2196f3;\n border-radius: 6px;\n\n .suffix-icon {\n position: absolute;\n right: 1px;\n bottom: calc(25% - 14px);\n width: 20px;\n font-size: 20px;\n font-weight: bold;\n color: #fff;\n text-align: center;\n }\n\n .card-title {\n padding-left: 15px;\n margin-top: 10px;\n margin-bottom: 5px;\n overflow: hidden;\n font-size: 16px;\n font-weight: bold;\n color: #2196f3;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .context {\n padding: 0 30px 10px 20px;\n font-size: 14px;\n color: #464646;\n }\n }\n}\n</style>\n"],"names":["props","__props","bgLeftUrl","bgLeft","bgRightUrl","bgRight","cardTitle","dataItem","colDesc","chartData","xGroupByDesc","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","modelName","data","length","_Fragment","key","groupByDesc","_createBlock","_unref","ElScrollbar","class","_normalizeClass","dataIndex","style","_normalizeStyle","title","_hoisted_3","_hoisted_4","item","index","_createTextVNode","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","Empty"],"mappings":"2wBAYA,MAAMA,EAAQC,EAaRC,EAAY,OAAOC,KACnBC,EAAa,OAAOC,KAE1B,SAASC,EAAUC,GACjB,MAAMC,EAAUR,EAAMS,UAAUC,cAAcF,SAAW,GAEzD,OAAOA,EAAWA,EAAUD,EAASC,GAAY,EACnD,eAIEG,IAAAC,EAqEM,MArENC,EAqEM,CApEJC,EAEI,IAFJC,EAEIC,EADCf,EAAAQ,UAAUQ,WAAS,GAERhB,EAAAQ,UAAUS,KAAKC,YAA/BP,EA+DWQ,EAAA,CAAAC,IAAA,GAAA,CA9DUpB,EAAAQ,UAAUa,YAAYH,YAAzCI,EA8BcC,EAAAC,GAAA,CAAAJ,IAAA,GAAA,WA7BZ,IA4BM,CA5BNP,EA4BM,MAAA,CA5BAY,MAAKC,EAAA,CAAA,8BAAmC1B,EAAAQ,UAAUa,YAAYH,YAClER,GAAA,GAAAC,EA0BMQ,SAzB4BnB,EAAAQ,UAAUS,KAAI,CAAtCX,EAAUqB,SADpBhB,EA0BM,MAAA,CAxBHS,IAAKO,EACNF,MAAM,YACLG,MAAKC,EAAA,CAAyC,mBAAA,GAAA5B,MAAcE,QAI7DU,EAKM,MAAA,CAJJY,MAAM,aACLK,MAAOzB,EAAUC,IAEfS,EAAAV,EAAUC,IAAQ,EAAAyB,GAEvBlB,EAQM,MARNmB,EAQM,EAPJtB,GAAA,GAAAC,EAMOQ,SALmBnB,EAAAQ,UAAUD,QAAO,CAAjC0B,EAAMC,SADhBvB,EAMO,OAAA,CAJJS,IAAKa,GAAI,QAEJA,OAAI,KAAA,GAAcpB,EAA4C,SAAA,KAAAE,EAAjCT,EAAS2B,IAAI,KAAA,GAAoBE,EAAA,MAAID,IAAUlC,YAAUO,QAAQW,gCAIxGL,EAEM,MAFNuB,EAEMrB,EADDY,EAAS,GAAA,6BAKpBjB,IAAAC,EA8BM,MA9BN0B,EA8BM,EA1BJ3B,GAAA,GAAAC,EAyBMQ,SAxB4BnB,EAAAQ,UAAUS,KAAI,CAAtCX,EAAUqB,SADpBhB,EAyBM,MAAA,CAvBHS,IAAKO,EACNF,MAAM,YACLG,MAAKC,EAAA,CAAuC,mBAAA,GAAA5B,MAAcE,QAI3DU,EAKM,MAAA,CAJJY,MAAM,aACLK,MAAO9B,EAAAQ,UAAUQ,WAEfD,EAAAf,EAAAQ,UAAUQ,WAAS,EAAAsB,GAExBzB,EAUM,MAVN0B,EAUM,EATJ7B,GAAA,GAAAC,EAQOQ,SAPmBnB,EAAAQ,UAAUD,QAAO,CAAjC0B,EAAMC,SADhBvB,EAQO,OAAA,CANJS,IAAKa,GAAI,CAEM3B,OAAhBK,EAGWQ,EAAA,CAAAC,IAAA,GAAA,QAFHa,OAAI,KAAA,GAAcpB,EAA4C,SAAA,KAAAE,EAAjCT,EAAS2B,IAAI,KAAA,GAAoBE,EAAA,MAAID,IAAUlC,YAAUO,QAAQW,6EAQhHI,EAAgBkB,EAAA,CAAApB,IAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"funnel.vue2.mjs","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 '../utils/types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartFunnel',\n})\nconst {\n chartOptions,\n chartData,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartFunnel,\n chartOptions: funnelChartOptions,\n chartData: computed(() => chartData),\n lazyLoad
|
1
|
+
{"version":3,"file":"funnel.vue2.mjs","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 '../utils/types'\nimport { computed, inject, ref } from 'vue'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartFunnel',\n})\nconst {\n chartOptions,\n chartData,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartFunnel,\n chartOptions: funnelChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartFunnel\"\n class=\"data-chart-funnel\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-funnel {\n width: 100%;\n height: 100%;\n}\n</style>\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","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"waAmBA,MAAMA,EAAkBC,IAClBC,EAAQC,EAAOC,EAAsBC,GAAWA,GAAG,GACnDC,EAAqBC,EAAwB,KACjD,MAAMC,QAAEA,EAAAC,aAASA,EAAAC,UAAcA,EAAAC,KAAWA,GAASC,EAAAC,UAE7CC,EAAS,CACbC,MAAO,CACLC,KAAMN,GAERO,OAAQ,CAAA,EACRC,OAAQV,EAAQW,IAAKC,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,IAAIc,IAAA,CACbZ,KAAMY,EAAMxB,GAAcD,SAAW,IACrC0B,MAAOD,EAAMb,IAAS,UAQ9B,OAHuB,IAAnBZ,EAAQ2B,SACTrB,EAAOG,OAAwBN,KAAOH,GAElCN,EAAMY,EAAQF,EAAAwB,iBAGjBC,QAAEA,GAAYC,EAAU,CAC5BC,SAAUvC,EACVoC,aAAc9B,EACdO,UAAWN,EAAS,IAAMK,EAAAC,WAC1B2B,SAAO5B,EAAA4B,kBAITC,EAAa,CACXJ,wBAKAK,EAGE,MAAA,SAFI,kBAAJzC,IAAID,EACJ2C,MAAM"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"line.vue2.mjs","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 '../utils/types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartLine',\n})\nconst {\n chartData,\n subShowType = 'line-simple',\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n lazyLoad?: boolean\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 smooth?: boolean\n areaStyle?: Record<string, any>\n data: Array<string | number | null>\n}\n\n// 将配置提取为常量\nconst CHART_CONSTANTS = {\n MIN_ZOOM_LENGTH: 15,\n STACK_NAME: 'Total',\n SMOOTH: true,\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 | null)[] = []\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 && targetData[colDesc[0]] !== undefined && targetData[colDesc[0]] !== null) {\n seriesData.push(targetData[colDesc[0]])\n }\n else {\n seriesData.push(null) // 使用 null 而不是 0,让 ECharts 自动处理空值\n }\n })\n\n return {\n name: legendDataItem,\n type: 'line',\n smooth: CHART_CONSTANTS.SMOOTH,\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\n // 数据验证\n if (!data || data.length === 0) {\n console.warn('[LineChart] 数据为空,图表将显示空状态')\n }\n\n if (!colDesc || colDesc.length === 0) {\n console.warn('[LineChart] colDesc 为空,无法生成图表系列')\n }\n\n if (!xGroupByDesc?.colDesc) {\n console.warn('[LineChart] xGroupByDesc.colDesc 为空,无法生成 X 轴数据')\n }\n\n const xAxisData = Array.from(new Set(data?.map(item => item[xGroupByDesc?.colDesc || '']))).filter(item => item !== undefined && item !== null) || []\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 smooth: CHART_CONSTANTS.SMOOTH,\n data: xAxisData.map(xValue => {\n const dataItem = data.find(item => item[xGroupByDesc?.colDesc || ''] === xValue)\n return dataItem ? (dataItem[yItem] ?? null) : null\n }),\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartLine,\n chartOptions: lineChartOptions,\n chartData: computed(() => chartData),\n lazyLoad
|
1
|
+
{"version":3,"file":"line.vue2.mjs","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 '../utils/types'\nimport { computed, inject, ref } from 'vue'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartLine',\n})\nconst {\n chartData,\n subShowType = 'line-simple',\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n lazyLoad?: boolean\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 smooth?: boolean\n areaStyle?: Record<string, any>\n data: Array<string | number | null>\n}\n\n// 将配置提取为常量\nconst CHART_CONSTANTS = {\n MIN_ZOOM_LENGTH: 15,\n STACK_NAME: 'Total',\n SMOOTH: true,\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 | null)[] = []\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 && targetData[colDesc[0]] !== undefined && targetData[colDesc[0]] !== null) {\n seriesData.push(targetData[colDesc[0]])\n }\n else {\n seriesData.push(null) // 使用 null 而不是 0,让 ECharts 自动处理空值\n }\n })\n\n return {\n name: legendDataItem,\n type: 'line',\n smooth: CHART_CONSTANTS.SMOOTH,\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\n // 数据验证\n if (!data || data.length === 0) {\n console.warn('[LineChart] 数据为空,图表将显示空状态')\n }\n\n if (!colDesc || colDesc.length === 0) {\n console.warn('[LineChart] colDesc 为空,无法生成图表系列')\n }\n\n if (!xGroupByDesc?.colDesc) {\n console.warn('[LineChart] xGroupByDesc.colDesc 为空,无法生成 X 轴数据')\n }\n\n const xAxisData = Array.from(new Set(data?.map(item => item[xGroupByDesc?.colDesc || '']))).filter(item => item !== undefined && item !== null) || []\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 smooth: CHART_CONSTANTS.SMOOTH,\n data: xAxisData.map((xValue) => {\n const dataItem = data.find(item => item[xGroupByDesc?.colDesc || ''] === xValue)\n return dataItem ? (dataItem[yItem] ?? null) : null\n }),\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartLine,\n chartOptions: lineChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartLine\"\n class=\"data-chart-line\"\n />\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","length","console","warn","xAxisData","Array","from","Set","map","item","filter","yGroupByDesc","find","xAxis","config","title","text","legend","name","dataZoom","type","disabled","series","yItem","smooth","xValue","dataItem","legendData","String","legendDataItem","seriesData","forEach","xAxisItem","targetData","push","stack","areaStyle","processSeriesData","seriesItem","subShowType","chartOptions","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"geAqBA,MAAMA,EAAgBC,IAChBC,EAAQC,EAAOC,EAAsBC,GAAWA,GAAG,GAanDC,EACa,GADbA,EAEQ,QAFRA,GAGI,EAqCV,MAAMC,EAAmBC,EAAwB,KAC/C,MAAMC,QAAEA,EAAAC,aAASA,EAAAC,YAAcA,OAAaC,EAAAC,UAAMA,GAAcC,EAAAC,UAG3DH,GAAwB,IAAhBA,EAAKI,QAChBC,QAAQC,KAAK,6BAGVT,GAA8B,IAAnBA,EAAQO,QACtBC,QAAQC,KAAK,mCAGVR,GAAcD,SACjBQ,QAAQC,KAAK,kDAGf,MAAMC,EAAYC,MAAMC,KAAK,IAAIC,IAAIV,GAAMW,IAAIC,GAAQA,EAAKd,GAAcD,SAAW,OAAOgB,OAAOD,GAAQA,UAAwC,GAC7IE,EAAef,GAAagB,KAAKH,IAASA,EAAKI,OAE/CC,EAAoD,CACxDC,MAAO,CAAEC,KAAMlB,GACfmB,OAAQ,CAAEpB,KAAM,IAChBgB,MAAO,CACLK,KAAMvB,GAAcD,SAAW,GAC/BG,KAAMO,GAERe,SAAU,CAAC,CACTC,KAAM,SACNC,SAAUjB,EAAUH,OAASV,KAKjC,GAA4B,IAAxBK,GAAaK,OACfa,EAAOQ,OAAS5B,EAAQc,IAAIe,IAAA,CAC1BL,KAAMK,EACNH,KAAM,OACNI,OAAQjC,EACRM,KAAMO,EAAUI,IAAKiB,IACnB,MAAMC,EAAW7B,EAAKe,KAAKH,GAAQA,EAAKd,GAAcD,SAAW,MAAQ+B,GACzE,OAAOC,EAAYA,EAASH,IAAU,KAAQ,UAGjDT,EAAOG,OAAiCpB,KAAOH,OAClD,GACiC,IAAxBE,GAAaK,OAAc,CAClC,MAAM0B,EAAa,IAAI,IAAIpB,IAAIV,EAAKW,IAAIC,GAAQmB,OAAOnB,EAAKE,GAAcjB,SAAW,QACnFoB,EAAOG,OAAiCpB,KAAO8B,EAEjDb,EAAOQ,OAASK,EAAWnB,OAlF/B,SAA2BqB,EACzBzB,EACAP,EACAF,EACAgB,EACAjB,GACA,MAAMoC,EAAyC,GAiB/C,OAfA1B,EAAU2B,QAASC,IACjB,MAAMC,EAAapC,EAChBe,KAAKc,GACJA,EAAS/B,GAAcD,WAAasC,GACjCN,EAASf,GAAcjB,WAAamC,GAGvCI,QAAyC,IAA3BA,EAAWvC,EAAQ,KAAgD,OAA3BuC,EAAWvC,EAAQ,IAC3EoC,EAAWI,KAAKD,EAAWvC,EAAQ,KAGnCoC,EAAWI,KAAK,QAIb,CACLhB,KAAMW,EACNT,KAAM,OACNI,OAAQjC,EACR4C,MAAO5C,EACP6C,UAAW,CAAA,EACXvC,KAAMiC,EAEV,CAoDMO,CAAkBR,EAAgBzB,EAAWP,EAAMF,EAAcgB,EAAcjB,GAEnF,CAoBA,OAjBAoB,EAAOQ,OAASR,EAAOQ,QAAQd,IAAKC,IAClC,MAAM6B,EAAa,IAAK7B,GAExB,OAAQV,EAAAwC,aACN,IAAK,cAML,eACSD,EAAWF,gBAJpB,IAAK,aACHE,EAAWF,UAAY,CAAA,EAM3B,OAAOE,IAGFnD,EAAM2B,EAAQf,EAAAyC,iBAGjBC,QAAEA,GAAYC,EAAU,CAC5BC,SAAU1D,EACVuD,aAAchD,EACdQ,UAAWP,EAAS,IAAMM,EAAAC,WAC1B4C,SAAO7C,EAAA6C,kBAITC,EAAa,CACXJ,wBAKAK,EAGE,MAAA,SAFI,gBAAJ5D,IAAID,EACJ8D,MAAM"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pie.vue2.mjs","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 '../utils/types'\nimport { orderBy } from 'lodash-es'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartPie',\n})\nconst {\n chartData,\n subShowType = 'pie-simple',\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n lazyLoad?: boolean\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 currentItemData = data.filter(row => row[item] !== undefined)\n const orderByData = orderBy(currentItemData, [item], ['desc'])\n // 总数\n const totalDesc = orderByData.reduce((prev, cur) => {\n const value = Number(cur[item]) || 0\n return Number.isNaN(value) ? prev : prev + value\n }, 0)\n if (currentItemData.length > cutNum) {\n while (cutNum < 9) {\n const headerData = orderByData.slice(0, cutNum)\n // 前 cutNum 个总数\n const headerTotal = headerData.reduce(\n (prev, cur) => prev + Number(cur[item]),\n 0,\n )\n // 前五总占比\n const headerScale = headerTotal / totalDesc\n if (headerScale > 0.9 || cutNum === 8) {\n const footerData = orderByData.slice(\n cutNum,\n orderByData.length - 1,\n )\n seriesItem.data = currentItemData\n .map((yItem) => {\n let obj = {}\n headerData.forEach((headerDataItem) => {\n if (JSON.stringify(headerDataItem) === JSON.stringify(yItem)) {\n obj = {\n name: xGroupByDesc?.colDesc\n ? yItem[xGroupByDesc.colDesc]\n : '',\n value: yItem[item],\n }\n }\n })\n return obj\n })\n .filter(v => v && Object.keys(v).length > 0)\n seriesItem.data.push({\n name: '其它',\n value: footerData.reduce(\n (prev, cur) => prev + Number(cur[item]),\n 0,\n ),\n })\n\n break\n }\n else {\n cutNum++\n }\n }\n }\n else {\n seriesItem.data = currentItemData.map(yItem => ({\n name: xGroupByDesc?.colDesc ? (yItem[xGroupByDesc.colDesc] || '') : '',\n value: Number(yItem[item] || 0),\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\n return merge(config, chartOptions)\n})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartPie,\n chartOptions: pieChartOptions,\n chartData: computed(() => chartData),\n lazyLoad\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartPie\"\n class=\"data-chart-pie\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-pie {\n width: 100%;\n height: 100%;\n}\n</style>\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","currentItemData","filter","row","orderByData","orderBy","totalDesc","reduce","prev","cur","value","Number","isNaN","headerData","slice","footerData","yItem","obj","forEach","headerDataItem","JSON","stringify","Object","keys","push","right","left","bottom","top","subShowType","radius","chartOptions","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"pie.vue2.mjs","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 '../utils/types'\nimport { orderBy } from 'lodash-es'\nimport { computed, inject, ref } from 'vue'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartPie',\n})\nconst {\n chartData,\n subShowType = 'pie-simple',\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n subShowType: string\n chartOptions: EChartsOption\n lazyLoad?: boolean\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 currentItemData = data.filter(row => row[item] !== undefined)\n const orderByData = orderBy(currentItemData, [item], ['desc'])\n // 总数\n const totalDesc = orderByData.reduce((prev, cur) => {\n const value = Number(cur[item]) || 0\n return Number.isNaN(value) ? prev : prev + value\n }, 0)\n if (currentItemData.length > cutNum) {\n while (cutNum < 9) {\n const headerData = orderByData.slice(0, cutNum)\n // 前 cutNum 个总数\n const headerTotal = headerData.reduce(\n (prev, cur) => prev + Number(cur[item]),\n 0,\n )\n // 前五总占比\n const headerScale = headerTotal / totalDesc\n if (headerScale > 0.9 || cutNum === 8) {\n const footerData = orderByData.slice(\n cutNum,\n orderByData.length - 1,\n )\n seriesItem.data = currentItemData\n .map((yItem) => {\n let obj = {}\n headerData.forEach((headerDataItem) => {\n if (JSON.stringify(headerDataItem) === JSON.stringify(yItem)) {\n obj = {\n name: xGroupByDesc?.colDesc\n ? yItem[xGroupByDesc.colDesc]\n : '',\n value: yItem[item],\n }\n }\n })\n return obj\n })\n .filter(v => v && Object.keys(v).length > 0)\n seriesItem.data.push({\n name: '其它',\n value: footerData.reduce(\n (prev, cur) => prev + Number(cur[item]),\n 0,\n ),\n })\n\n break\n }\n else {\n cutNum++\n }\n }\n }\n else {\n seriesItem.data = currentItemData.map(yItem => ({\n name: xGroupByDesc?.colDesc ? (yItem[xGroupByDesc.colDesc] || '') : '',\n value: Number(yItem[item] || 0),\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\n return merge(config, chartOptions)\n})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartPie,\n chartOptions: pieChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartPie\"\n class=\"data-chart-pie\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-pie {\n width: 100%;\n height: 100%;\n}\n</style>\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","currentItemData","filter","row","orderByData","orderBy","totalDesc","reduce","prev","cur","value","Number","isNaN","headerData","slice","footerData","yItem","obj","forEach","headerDataItem","JSON","stringify","Object","keys","push","right","left","bottom","top","subShowType","radius","chartOptions","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"radar.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/radar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../utils/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 chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartRadar,\n chartOptions: radarChartOptions,\n chartData: computed(() => chartData),\n lazyLoad
|
1
|
+
{"version":3,"file":"radar.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/radar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../utils/types'\nimport { uniq } from 'lodash-es'\nimport { computed, inject, ref } from 'vue'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartRadar',\n})\n\nconst {\n chartData,\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartRadar,\n chartOptions: radarChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartRadar\"\n class=\"data-chart-radar\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-radar {\n width: 100%;\n height: 100%;\n}\n</style>\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","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"ucAqBA,MAAMA,EAAiBC,IACjBC,EAAQC,EAAOC,EAAsBC,GAAWA,GAAG,GACnDC,EAAoBC,EAAwB,KAChD,MAAMC,QAAEA,EAAAC,aAASA,EAAAC,UAAcA,EAAAC,KAAWA,GAASC,EAAAC,UAE9CJ,GAAcK,gBACjBL,EAAaK,cAAgB,IAE/BL,EAAaK,cAAgBC,EAAKJ,EAAKK,IAAKC,GACnCA,EAAKR,EAAaD,SAAW,KACnCU,OAAOb,GAAKA,IAEf,MAAMc,EAAS,CACbC,MAAO,CACLC,KAAMX,GAERY,MAAO,CACLC,UAAWd,GAAcK,eAAeE,IAAKQ,IACpC,CACLC,KAAMD,EACNE,IAAKC,KAAKD,OAAOf,EAAKK,IAAIC,GAAQW,OAAOX,EAAKT,EAAQ,WAEpD,IAERqB,OAAQ,CAAC,CACPJ,KAAMhB,GAAcD,QACpBsB,KAAM,QACNC,QAAS,CACPC,QAAS,QAEXrB,KAAMH,EAAQQ,IAAIiB,IAAA,CAChBR,KAAMQ,EACNC,MAAOzB,GAAcK,eAAeE,IAAKQ,GAC/Bb,EAAKK,IAAKmB,GACZX,IAAsBW,EAAS1B,EAAaD,SAAW,IAClD2B,EAASF,GAEX,MACNf,UAAYb,GAAI+B,OAAO,CAACC,EAAKC,IAAQV,OAAOS,GAAO,GAAKT,OAAOU,GAAO,GAAI,UAMrF,OAAOpC,EAAMiB,EAAQP,EAAA2B,iBAGjBC,QAAEA,GAAYC,EAAU,CAC5BC,SAAU1C,EACVuC,aAAcjC,EACdO,UAAWN,EAAS,IAAMK,EAAAC,WAC1B8B,SAAO/B,EAAA+B,kBAITC,EAAa,CACXJ,wBAKAK,EAGE,MAAA,SAFI,iBAAJ5C,IAAID,EACJ8C,MAAM"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scatter-simple.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/scatter-simple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../utils/types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartScatterSimple',\n})\nconst {\n chartData,\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartScatterSimple,\n chartOptions: scatterChartOptions,\n chartData: computed(() => chartData),\n lazyLoad
|
1
|
+
{"version":3,"file":"scatter-simple.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/scatter-simple.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../utils/types'\nimport { computed, inject, ref } from 'vue'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartScatterSimple',\n})\nconst {\n chartData,\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\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})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartScatterSimple,\n chartOptions: scatterChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartScatterSimple\"\n class=\"data-chart-scatter-simple\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-scatter-simple {\n width: 100%;\n height: 100%;\n}\n</style>\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","myChart","useCharts","chartDOM","lazyLoad","__expose","_createElementBlock","class"],"mappings":"ubAkBA,MAAMA,EAAyBC,IACzBC,EAAQC,EAAOC,EAAsBC,GAAWA,GAAG,GAEnDC,EAAsBC,EAAwB,KAClD,MAAMC,QAAEA,EAAAC,aAASA,EAAAC,UAAcA,EAAAC,KAAWA,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,IAAKC,IACZ,CACLC,WAAY,GACZJ,KAAMG,EACNf,KAAMA,EAAKc,IAAKG,GACP,CAACA,EAASF,GAAcE,EAASnB,GAAcD,SAAW,MAEnEqB,KAAM,cAIZ,OAAO3B,EAAMY,EAAQF,EAAAkB,iBAGjBC,QAAEA,GAAYC,EAAU,CAC5BC,SAAUjC,EACV8B,aAAcxB,EACdO,UAAWN,EAAS,IAAMK,EAAAC,WAC1BqB,SAAOtB,EAAAsB,kBAITC,EAAa,CACXJ,wBAKAK,EAGE,MAAA,SAFI,yBAAJnC,IAAID,EACJqC,MAAM"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scatter.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/scatter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../utils/types'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartScatter',\n})\n\nconst {\n chartData,\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\n}>()\n\nconst dataChartScatter = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nconst scatterChartOptions = computed<EChartsOption>(() => {\n const config = {\n xAxis: {},\n yAxis: {},\n series: [\n {\n symbolSize: 20,\n data: [\n [10.0, 8.04],\n [8.07, 6.95],\n [13.0, 7.58],\n [9.05, 8.81],\n [11.0, 8.33],\n [14.0, 7.66],\n [13.4, 6.81],\n [10.0, 6.33],\n [14.0, 8.96],\n [12.5, 6.82],\n [9.15, 7.2],\n [11.5, 7.2],\n [3.03, 4.23],\n [12.2, 7.83],\n [2.02, 4.47],\n [1.05, 3.33],\n [4.05, 4.96],\n [6.03, 7.24],\n [12.0, 6.26],\n [12.0, 8.84],\n [7.08, 5.82],\n [5.02, 5.68],\n ],\n type: 'scatter',\n },\n ],\n }\n\n return merge(config, chartOptions)\n})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartScatter,\n chartOptions: scatterChartOptions,\n chartData: computed(() => chartData),\n lazyLoad
|
1
|
+
{"version":3,"file":"scatter.vue2.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/scatter.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartsOption, IFormatPublicData } from '../utils/types'\nimport { computed, inject, ref } from 'vue'\nimport { InjectionChartMerge } from '../utils/injectionKeys'\nimport { useCharts } from '../utils/useCharts'\n\ndefineOptions({\n name: 'DataChartScatter',\n})\n\nconst {\n chartData,\n chartOptions,\n lazyLoad = true,\n} = defineProps<{\n chartData: IFormatPublicData\n chartOptions: EChartsOption\n lazyLoad?: boolean\n}>()\n\nconst dataChartScatter = ref()\nconst merge = inject(InjectionChartMerge, (v: any) => v, true)\n\nconst scatterChartOptions = computed<EChartsOption>(() => {\n const config = {\n xAxis: {},\n yAxis: {},\n series: [\n {\n symbolSize: 20,\n data: [\n [10.0, 8.04],\n [8.07, 6.95],\n [13.0, 7.58],\n [9.05, 8.81],\n [11.0, 8.33],\n [14.0, 7.66],\n [13.4, 6.81],\n [10.0, 6.33],\n [14.0, 8.96],\n [12.5, 6.82],\n [9.15, 7.2],\n [11.5, 7.2],\n [3.03, 4.23],\n [12.2, 7.83],\n [2.02, 4.47],\n [1.05, 3.33],\n [4.05, 4.96],\n [6.03, 7.24],\n [12.0, 6.26],\n [12.0, 8.84],\n [7.08, 5.82],\n [5.02, 5.68],\n ],\n type: 'scatter',\n },\n ],\n }\n\n return merge(config, chartOptions)\n})\n\nconst { myChart } = useCharts({\n chartDOM: dataChartScatter,\n chartOptions: scatterChartOptions,\n chartData: computed(() => chartData),\n lazyLoad,\n})\n\n// 暴露 myChart 方法供父组件访问\ndefineExpose({\n myChart,\n})\n</script>\n\n<template>\n <div\n ref=\"dataChartScatter\"\n class=\"data-chart-scatter\"\n />\n</template>\n\n<style scoped lang=\"scss\">\n.data-chart-scatter {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["dataChartScatter","ref","merge","inject","InjectionChartMerge","v","scatterChartOptions","computed","xAxis","yAxis","series","symbolSize","data","type","__props","chartOptions","myChart","useCharts","chartDOM","chartData","lazyLoad","__expose","_createElementBlock","class"],"mappings":"0aAoBA,MAAMA,EAAmBC,IACnBC,EAAQC,EAAOC,EAAsBC,GAAWA,GAAG,GAEnDC,EAAsBC,EAAwB,IAoC3CL,EAnCQ,CACbM,MAAO,CAAA,EACPC,MAAO,CAAA,EACPC,OAAQ,CACN,CACEC,WAAY,GACZC,KAAM,CACJ,CAAC,GAAM,MACP,CAAC,KAAM,MACP,CAAC,GAAM,MACP,CAAC,KAAM,MACP,CAAC,GAAM,MACP,CAAC,GAAM,MACP,CAAC,KAAM,MACP,CAAC,GAAM,MACP,CAAC,GAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,KACP,CAAC,KAAM,KACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,MACP,CAAC,GAAM,MACP,CAAC,GAAM,MACP,CAAC,KAAM,MACP,CAAC,KAAM,OAETC,KAAM,aAKSC,EAAAC,gBAGjBC,QAAEA,GAAYC,EAAU,CAC5BC,SAAUlB,EACVe,aAAcT,EACda,UAAWZ,EAAS,IAAMO,EAAAK,WAC1BC,SAAON,EAAAM,kBAITC,EAAa,CACXL,wBAKAM,EAGE,MAAA,SAFI,mBAAJrB,IAAID,EACJuB,MAAM"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{
|
1
|
+
import{defineComponent as e,computed as a,createElementBlock as t,openBlock as o,normalizeClass as l,unref as r,createCommentVNode as c,createVNode as s,createElementVNode as p,toDisplayString as i,withCtx as n,Fragment as m,renderList as u,createBlock as d,createTextVNode as h}from"vue";import{useNamespace as D}from"@qxs-bns/hooks";import{ElTable as f,ElTableColumn as b}from"element-plus";import y from"./empty.vue.mjs";const v={key:0,class:"title"};var w=e({name:"DataChartTable",__name:"table",props:{chartData:{type:Object,default:()=>({colDesc:[],xGroupByDesc:[],data:[],modelName:""})}},setup(e){const w=e,g=D("data-chart"),x=a(()=>w.chartData.groupByDesc.find(e=>!e.xAxis));function $(e){if(!e)return 100;const a=14*e.length+20+30;return a<100?100:a}return(a,D)=>(o(),t("div",{class:l([r(g).e("table")])},[e.chartData.modelName?(o(),t("p",v,[p("span",null,i(e.chartData.modelName),1)])):c("v-if",!0),s(r(f),{class:"customize-table",data:e.chartData.data,stripe:"",resizable:"",border:"",height:"100%"},{empty:n(()=>[s(y)]),default:n(()=>[(o(!0),t(m,null,u(e.chartData.groupByDesc,(e,a)=>(o(),d(r(b),{key:`${e.colDesc}${e.groupByDesc}${a}`,align:"center","show-overflow-tooltip":"",sortable:"","min-width":`${$(e.colDesc)}px`,prop:e.colDesc||""},{header:n(()=>[h(i(e.colDesc),1)]),default:n(a=>[h(i((x.value&&(x.value.colDesc,e.colDesc),a.row[e.colDesc||""]||"--")),1)]),_:2},1032,["min-width","prop"]))),128)),(o(!0),t(m,null,u(e.chartData.colDesc,(e,a)=>(o(),d(r(b),{key:e+a,align:"center","min-width":`${$(e)}px`,label:e,"show-overflow-tooltip":"",sortable:"",prop:e},{header:n(()=>[h(i(e),1)]),_:2},1032,["min-width","label","prop"]))),128))]),_:1},8,["data"])],2))}});export{w as default};
|
2
2
|
//# sourceMappingURL=table.vue.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"table.vue.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/table.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { IFormatPublicData } from '../utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport Empty from './empty.vue'\n\ndefineOptions({\n name: 'DataChartTable',\n})\n\nconst props = defineProps({\n chartData: {\n type: Object as PropType<IFormatPublicData>,\n default: () => ({\n colDesc: [],\n xGroupByDesc: [],\n data: [],\n modelName: '',\n }),\n },\n})\n\nconst ns = useNamespace('data-chart')\n\nconst yGroupByDesc = computed(() => {\n const row = props.chartData.groupByDesc.find(item => !item.xAxis)\n return row\n})\n\nfunction baseWidth(str: string | null) {\n if (!str) {\n return 100\n }\n const strWidth = str.length * 14 + 20 + 30\n return strWidth < 100 ? 100 : strWidth\n}\n</script>\n\n<template>\n <div :class=\"[ns.e('table')]\">\n <p\n v-if=\"chartData.modelName\"\n class=\"title\"\n >\n <span>{{ chartData.modelName }}</span>\n </p>\n <
|
1
|
+
{"version":3,"file":"table.vue.mjs","sources":["../../../../../../../packages/components/src/data-chart/src/components/table.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { IFormatPublicData } from '../utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElTable, ElTableColumn } from 'element-plus'\nimport { computed } from 'vue'\nimport Empty from './empty.vue'\n\ndefineOptions({\n name: 'DataChartTable',\n})\n\nconst props = defineProps({\n chartData: {\n type: Object as PropType<IFormatPublicData>,\n default: () => ({\n colDesc: [],\n xGroupByDesc: [],\n data: [],\n modelName: '',\n }),\n },\n})\n\nconst ns = useNamespace('data-chart')\n\nconst yGroupByDesc = computed(() => {\n const row = props.chartData.groupByDesc.find(item => !item.xAxis)\n return row\n})\n\nfunction baseWidth(str: string | null) {\n if (!str) {\n return 100\n }\n const strWidth = str.length * 14 + 20 + 30\n return strWidth < 100 ? 100 : strWidth\n}\n</script>\n\n<template>\n <div :class=\"[ns.e('table')]\">\n <p\n v-if=\"chartData.modelName\"\n class=\"title\"\n >\n <span>{{ chartData.modelName }}</span>\n </p>\n <ElTable\n class=\"customize-table\"\n :data=\"chartData.data\"\n stripe\n resizable\n border\n height=\"100%\"\n >\n <ElTableColumn\n v-for=\"(item, index) in chartData.groupByDesc\"\n :key=\"`${item.colDesc}${item.groupByDesc}${index}`\"\n align=\"center\"\n show-overflow-tooltip\n sortable\n :min-width=\"`${baseWidth(item.colDesc)}px`\"\n :prop=\"item.colDesc || ''\"\n >\n <template #header>\n {{ item.colDesc }}\n </template>\n <template #default=\"scoped\">\n {{ (yGroupByDesc && yGroupByDesc.colDesc === item.colDesc ? scoped.row[item.colDesc || ''] : scoped.row[item.colDesc || '']) || '--' }}\n </template>\n </ElTableColumn>\n <ElTableColumn\n v-for=\"(item, index) in chartData.colDesc\"\n :key=\"item + index\"\n align=\"center\"\n :min-width=\"`${baseWidth(item)}px`\"\n :label=\"item\"\n show-overflow-tooltip\n sortable\n :prop=\"item\"\n >\n <template #header>\n {{ item }}\n </template>\n </ElTableColumn>\n <template #empty>\n <Empty />\n </template>\n </ElTable>\n </div>\n</template>\n"],"names":["props","__props","ns","useNamespace","yGroupByDesc","computed","chartData","groupByDesc","find","item","xAxis","baseWidth","str","strWidth","length","_createElementBlock","class","_normalizeClass","_unref","e","modelName","_openBlock","_hoisted_1","_createElementVNode","_toDisplayString","_createVNode","ElTable","data","stripe","resizable","border","height","empty","Empty","_Fragment","index","_createBlock","ElTableColumn","key","colDesc","align","sortable","prop","header","_createTextVNode","default","_withCtx","scoped","value","row","label"],"mappings":"6lBAYA,MAAMA,EAAQC,EAYRC,EAAKC,EAAa,cAElBC,EAAeC,EAAS,IAChBL,EAAMM,UAAUC,YAAYC,KAAKC,IAASA,EAAKC,QAI7D,SAASC,EAAUC,GACjB,IAAKA,EACH,OAAO,IAET,MAAMC,EAAwB,GAAbD,EAAIE,OAAc,GAAK,GACxC,OAAOD,EAAW,IAAM,IAAMA,CAChC,mBAIEE,EAiDM,MAAA,CAjDAC,MAAKC,EAAA,CAAGC,EAAAhB,GAAGiB,EAAC,aAERlB,EAAAK,UAAUc,WADlBC,IAAAN,EAKI,IALJO,EAKI,CADFC,EAAsC,OAAA,KAAAC,EAA7BvB,EAAAK,UAAUc,WAAS,mBAE9BK,EAyCUP,EAAAQ,GAAA,CAxCRV,MAAM,kBACLW,KAAM1B,EAAAK,UAAUqB,KACjBC,OAAA,GACAC,UAAA,GACAC,OAAA,GACAC,OAAO,SAgCIC,QACT,IAAS,CAATP,EAASQ,eA9BT,IAA8C,EADhDZ,GAAA,GAAAN,EAegBmB,SAdUjC,EAAAK,UAAUC,YAAW,CAArCE,EAAM0B,SADhBC,EAegBlB,EAAAmB,GAAA,CAbbC,IAAG,GAAK7B,EAAK8B,UAAU9B,EAAKF,cAAc4B,IAC3CK,MAAM,SACN,wBAAA,GACAC,SAAA,GACC,YAAS,GAAK9B,EAAUF,EAAK8B,aAC7BG,KAAMjC,EAAK8B,SAAO,KAERI,SACT,IAAkB,CAAfC,EAAApB,EAAAf,EAAK8B,SAAO,KAENM,QAAOC,EACuHC,GAD/G,MACpB3C,EAAA4C,QAAgB5C,QAAamC,QAAY9B,EAAK8B,SAAUQ,EAAOE,IAAIxC,EAAK8B,SAAO,KAAiC,OAAA,8CAGxHlB,GAAA,GAAAN,EAagBmB,SAZUjC,EAAAK,UAAUiC,QAAO,CAAjC9B,EAAM0B,SADhBC,EAagBlB,EAAAmB,GAAA,CAXbC,IAAK7B,EAAO0B,EACbK,MAAM,SACL,YAAS,GAAK7B,EAAUF,OACxByC,MAAOzC,EACR,wBAAA,GACAgC,SAAA,GACCC,KAAMjC,IAEIkC,SACT,IAAU,KAAPlC,GAAI"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import{defineComponent as e,ref as t,computed as o,provide as r,createBlock as s,openBlock as a,resolveDynamicComponent as m,
|
1
|
+
import{defineComponent as e,ref as t,computed as o,provide as r,createBlock as s,openBlock as a,resolveDynamicComponent as m,normalizeClass as p,unref as n}from"vue";import{useNamespace as l}from"@qxs-bns/hooks";import{JsonToExcel as i}from"@qxs-bns/utils";import{cloneDeep as u,merge as c}from"lodash-es";import*as d from"./analyze.mjs";import f from"./components/area.vue.mjs";import y from"./components/bar.vue.mjs";import h from"./components/card.vue.mjs";import j from"./components/funnel.vue.mjs";import v from"./components/line.vue.mjs";import g from"./components/pie.vue.mjs";import b from"./components/radar.vue.mjs";import w from"./components/scatter-simple.vue.mjs";import D from"./components/scatter.vue.mjs";import x from"./components/table.vue.mjs";import*as C from"./utils/config.mjs";import{defaultChartOption as S}from"./utils/config.mjs";import{InjectionChartMerge as T}from"./utils/injectionKeys.mjs";import{safeEvalConfig as q}from"./utils/safe-eval.mjs";import*as N from"./utils/types.mjs";import{useDataToExcelJson as B}from"./utils/useCharts.mjs";var z=e({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:""},lazyLoad:{type:Boolean,required:!1,default:!0}},setup(e,{expose:z}){const O=l("data-chart"),k=t(null),_={analyze:d,config:C,types:N},A={table:x,bar:y,line:v,pie:g,radar:b,scatter:D,funnel:j,area:f,card:h,"scatter-simple":w},L=o(()=>u(S[e.showTypeName])),Q=o(()=>{const{desc:{colDesc:t=[],groupByDesc:o=[]}={},data:r=[]}=e.data;let s=[],a=null;const m=o;s=m?.map(e=>(e.xAxis&&(a=e),e))||[];const p=a&&a.colDesc?r.filter(e=>{const t=a.colDesc;return e&&t&&void 0!==e[t]&&null!==e[t]}):r;return{colDesc:t||[],modelName:e.modelName,subShowType:e.subShowType,xGroupByDesc:a||{colDesc:"",groupByDesc:"",groupByValues:[],xAxis:!1},groupByDesc:s,data:p}});function E(){if("table"===e.showTypeName)return null;const t=k.value;return t&&"function"==typeof t.myChart?t.myChart():null}return z({exportExal:function(){if(0===e.data.data.length)return void console.log("暂无数据");const t=B(e.data);i(e.modelName,t)},QxsDataChartConfig:_,myChart:o(()=>E()),getMyChart:E}),r(T,function(t,o){let r=c({},L.value,t,o)||{};if(e.jsCodeSnippet)try{r=q(e.jsCodeSnippet,r)}catch(e){console.error("代码执行失败:",e)}return r}),(e,t)=>(a(),s(m(A[e.showTypeName]),{ref_key:"myChartRef",ref:k,key:e.showTypeName,class:p([n(O).e("wrapper")]),"sub-show-type":e.subShowType,"chart-data":Q.value,"chart-options":e.chartOptions,"lazy-load":e.lazyLoad},null,8,["class","sub-show-type","chart-data","chart-options","lazy-load"]))}});export{z as default};
|
2
2
|
//# sourceMappingURL=data-chart.vue.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"data-chart.vue.mjs","sources":["../../../../../../packages/components/src/data-chart/src/data-chart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EChartData, EChartsOption, IconRow, IFormatPublicData } from './utils/types'\nimport
|
1
|
+
{"version":3,"file":"data-chart.vue.mjs","sources":["../../../../../../packages/components/src/data-chart/src/data-chart.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { ECharts } from 'echarts'\nimport type { EChartData, EChartsOption, IconRow, IFormatPublicData } from './utils/types'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { JsonToExcel } from '@qxs-bns/utils'\nimport { cloneDeep, merge as lodashMerge } from 'lodash-es'\nimport { computed, provide, ref } from 'vue'\nimport * as analyze from './analyze'\nimport Area from './components/area.vue'\nimport Bar from './components/bar.vue'\nimport Card from './components/card.vue'\nimport Funnel from './components/funnel.vue'\nimport Line from './components/line.vue'\nimport Pie from './components/pie.vue'\nimport Radar from './components/radar.vue'\nimport ScatterSimple from './components/scatter-simple.vue'\nimport Scatter from './components/scatter.vue'\nimport Table from './components/table.vue'\nimport * as config from './utils/config'\nimport { defaultChartOption } from './utils/config'\nimport { InjectionChartMerge } from './utils/injectionKeys'\nimport { safeEvalConfig } from './utils/safe-eval'\nimport * as types from './utils/types'\nimport { useDataToExcelJson } from './utils/useCharts'\n\ndefineOptions({\n name: 'QxsDataChart',\n})\nconst {\n showTypeName = 'table',\n subShowType,\n modelName = '',\n data: propData = {\n data: [],\n desc: {\n colDesc: [],\n showDesc: {\n showType: 0,\n chartOptions: '{}',\n jsCodeSnippet: '',\n },\n groupByDesc: [],\n },\n },\n chartOptions = {},\n jsCodeSnippet = '',\n lazyLoad = true,\n} = defineProps<{\n modelName?: string\n showTypeName?: IconRow['showTypeName']\n subShowType?: string\n data?: EChartData\n chartOptions?: EChartsOption\n jsCodeSnippet?: string\n lazyLoad?: boolean\n}>()\n\nconst ns = useNamespace('data-chart')\n\n// 子组件引用\nconst myChartRef = ref<any>(null)\n\nconst QxsDataChartConfig = {\n analyze,\n config,\n types,\n}\nconst coms: {\n [key: string]: any\n} = {\n 'table': Table,\n 'bar': Bar,\n 'line': Line,\n 'pie': Pie,\n 'radar': Radar,\n 'scatter': Scatter,\n 'funnel': Funnel,\n 'area': Area,\n 'card': Card,\n 'scatter-simple': ScatterSimple,\n}\n\nconst defaultChartOptionCopy = computed(() => {\n return cloneDeep(defaultChartOption[showTypeName])\n})\n\nconst formatPublicData = computed<IFormatPublicData>(() => {\n const { desc: { colDesc = [], groupByDesc = [] } = {}, data = [] } = propData\n\n // 处理 X 轴数据\n let xValue: EChartData['desc']['groupByDesc'] = []\n\n let xGroupByDesc: EChartData['desc']['groupByDesc'][0] | null = null\n const typedGroupByDesc = groupByDesc as EChartData['desc']['groupByDesc']\n xValue = typedGroupByDesc?.map((groupByDescItem) => {\n // if (groupByDescItem.colValues) {\n // groupByDescItem.colValuesDesc = {}\n // groupByDescItem.colValues.split(',')?.forEach((item) => {\n // const [key, value] = item.split(':')\n // groupByDescItem.colValuesDesc[key] = value\n // })\n // }\n if (groupByDescItem.xAxis) {\n xGroupByDesc = groupByDescItem\n }\n return groupByDescItem\n }) || []\n\n // 修复数据过滤逻辑,避免因为字段不存在导致数据被过滤掉\n const dataValue = xGroupByDesc && (xGroupByDesc as EChartData['desc']['groupByDesc'][0]).colDesc\n ? data.filter((item) => {\n const colDescKey = (xGroupByDesc as EChartData['desc']['groupByDesc'][0]).colDesc\n return item && colDescKey && (item[colDescKey] !== undefined && item[colDescKey] !== null)\n })\n : data\n\n // if (xGroupByDesc && xGroupByDesc.colValuesDesc && Object.keys(xGroupByDesc.colValuesDesc).length) {\n // const { colDesc: colDescItem, colValuesDesc } = xGroupByDesc\n // console.log('colDesc: colDescItem, colValuesDesc: ', colDescItem, colValuesDesc)\n // dataValue = dataValue.map((item) => {\n // if (typeof item[colDescItem] === 'number') {\n // item[colDescItem] = colValuesDesc[item[colDescItem]]\n // }\n // return item\n // })\n // }\n\n const mergeConfig = {\n colDesc: colDesc || [],\n modelName,\n subShowType,\n xGroupByDesc: xGroupByDesc || {\n colDesc: '',\n groupByDesc: '',\n groupByValues: [],\n xAxis: false,\n },\n groupByDesc: xValue,\n data: dataValue,\n }\n return mergeConfig\n})\n\n// 导出数据\nfunction exportExal() {\n if (propData.data.length === 0) {\n // useMessage.error('暂无数据')\n console.log('暂无数据')\n return\n }\n const arr = useDataToExcelJson(propData)\n JsonToExcel(modelName, arr)\n}\nfunction merge(config: EChartsOption, defaultConfig: EChartsOption) {\n const mergeOpt = lodashMerge({}, defaultChartOptionCopy.value, config, defaultConfig)\n let conf = mergeOpt || {}\n\n if (jsCodeSnippet) {\n try {\n // 使用安全的配置处理函数\n conf = safeEvalConfig(jsCodeSnippet, conf)\n }\n catch (error) {\n console.error('代码执行失败:', error)\n }\n }\n\n return conf\n}\n\n// 获取内部 myChart 实例的方法\nfunction getMyChart(): ECharts | null {\n // 对于 table 类型,没有 myChart 实例\n if (showTypeName === 'table') {\n return null\n }\n\n // 尝试从子组件获取 myChart 实例\n const childComponent = myChartRef.value\n if (!childComponent) {\n return null\n }\n\n // 检查子组件是否有 myChart 方法(来自 useCharts)\n if (typeof childComponent.myChart === 'function') {\n return childComponent.myChart()\n }\n\n return null\n}\n\n// 为了保持向后兼容,提供 myChart 计算属性\nconst myChart = computed(() => getMyChart())\n\ndefineExpose({\n exportExal,\n QxsDataChartConfig,\n myChart,\n getMyChart,\n})\nprovide(InjectionChartMerge, merge)\n</script>\n\n<template>\n <component\n :is=\"coms[showTypeName]\"\n ref=\"myChartRef\"\n :key=\"showTypeName\"\n :class=\"[ns.e('wrapper')]\"\n :sub-show-type=\"subShowType\"\n :chart-data=\"formatPublicData\"\n :chart-options=\"chartOptions\"\n :lazy-load=\"lazyLoad\"\n />\n</template>\n"],"names":["ns","useNamespace","myChartRef","ref","QxsDataChartConfig","analyze","config","types","coms","table","Table","bar","Bar","line","Line","pie","Pie","radar","Radar","scatter","Scatter","funnel","Funnel","area","Area","card","Card","ScatterSimple","defaultChartOptionCopy","computed","cloneDeep","defaultChartOption","__props","formatPublicData","desc","colDesc","groupByDesc","data","xValue","xGroupByDesc","typedGroupByDesc","map","groupByDescItem","xAxis","dataValue","filter","item","colDescKey","modelName","subShowType","groupByValues","getMyChart","showTypeName","childComponent","value","myChart","__expose","exportExal","length","console","log","arr","useDataToExcelJson","JsonToExcel","provide","InjectionChartMerge","defaultConfig","conf","lodashMerge","jsCodeSnippet","safeEvalConfig","error","_createBlock","_resolveDynamicComponent","key","class","_normalizeClass","_unref","e","chartOptions","lazyLoad"],"mappings":"gjDAyDA,MAAMA,EAAKC,EAAa,cAGlBC,EAAaC,EAAS,MAEtBC,EAAqB,CACzBC,UACAC,SACAC,SAEIC,EAEF,CACFC,MAASC,EACTC,IAAOC,EACPC,KAAQC,EACRC,IAAOC,EACPC,MAASC,EACTC,QAAWC,EACXC,OAAUC,EACVC,KAAQC,EACRC,KAAQC,EACR,iBAAkBC,GAGdC,EAAyBC,EAAS,IAC/BC,EAAUC,EAAmBC,kBAGhCC,EAAmBJ,EAA4B,KACnD,MAAQK,MAAMC,QAAEA,EAAU,eAAIC,EAAc,IAAO,CAAA,EAACC,KAAGA,EAAO,IAAOL,EAAAK,KAGrE,IAAIC,EAA4C,GAE5CC,EAA4D,KAChE,MAAMC,EAAmBJ,EACzBE,EAASE,GAAkBC,IAAKC,IAQ1BA,EAAgBC,QAClBJ,EAAeG,GAEVA,KACH,GAGN,MAAME,EAAYL,GAAiBA,EAAsDJ,QACrFE,EAAKQ,OAAQC,IACX,MAAMC,EAAcR,EAAsDJ,QAC1E,OAAOW,GAAQC,QAAoC,IAArBD,EAAKC,IAAkD,OAArBD,EAAKC,KAEvEV,EA0BJ,MAboB,CAClBF,QAASA,GAAW,GACpBa,UAAQhB,EAAAgB,UACRC,YAAUjB,EAAAiB,YACVV,aAAcA,GAAgB,CAC5BJ,QAAS,GACTC,YAAa,GACbc,cAAe,GACfP,OAAO,GAETP,YAAaE,EACbD,KAAMO,KAiCV,SAASO,IAEP,GAAqB,UAAjBnB,EAAAoB,aACF,OAAO,KAIT,MAAMC,EAAiBnD,EAAWoD,MAClC,OAAKD,GAKiC,mBAA3BA,EAAeE,QACjBF,EAAeE,UALf,IASX,QAKAC,EAAa,CACXC,WAnDF,WACE,GAA6B,IAAzBzB,OAASK,KAAKqB,OAGhB,YADAC,QAAQC,IAAI,QAGd,MAAMC,EAAMC,EAAmB9B,EAAAK,MAC/B0B,EAAY/B,EAAAgB,UAAWa,EACzB,EA4CEzD,qBACAmD,QALc1B,EAAS,IAAMsB,KAM7BA,eAEFa,EAAQC,EA/CR,SAAe3D,EAAuB4D,GAEpC,IAAIC,EADaC,EAAY,CAAA,EAAIxC,EAAuB0B,MAAOhD,EAAQ4D,IAChD,CAAA,EAEvB,GAAIlC,EAAAqC,cACF,IAEEF,EAAOG,EAAetC,gBAAemC,EACvC,OACOI,GACLZ,QAAQY,MAAM,UAAWA,EAC3B,CAGF,OAAOJ,CACT,eAoCEK,EASEC,EARKjE,EAAK4C,EAAAA,eAAY,SAClB,aAAJjD,IAAID,EACHwE,IAAKtB,EAAAA,aACLuB,MAAKC,EAAA,CAAGC,EAAA7E,GAAG8E,EAAC,aACZ,gBAAe7B,EAAAA,YACf,aAAYhB,EAAAqB,MACZ,gBAAeyB,EAAAA,aACf,YAAWC,EAAAA"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import
|
1
|
+
import*as e from"echarts";import{merge as t}from"lodash-es";import{getProvinceCode as o,isProvinceCode as a}from"./mapData.mjs";const s={get:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"showTypeName",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"table";return s.data.find(o=>o[e].toString()===t||o[e]===t)},data:[{showTypeName:"table",label:"表格",coverImg:"table.png",disabled:()=>!1,subTypeList:[],showType:0,baseConfig:{}},{showTypeName:"line",label:"折线图",coverImg:"line-stack.png",showType:1,subTypeList:[{value:"line-simple",icon:"line-smooth",tooltipContent:"折线图"},{value:"area-basic",icon:"chart-line-area",tooltipContent:"折线面积图"}],baseConfig:{tooltip:{confine:!1,trigger:"axis",axisPointer:{type:"line"}},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:"25px"},grid:{left:"0",bottom:"10px",containLabel:!0},xAxis:{type:"category",boundaryGap:!1},yAxis:{type:"value"},dataZoom:[{type:"inside"}]},disabled:(e,t)=>{const o=t?.length;return!(o>=1&&o<2)}},{showTypeName:"bar",label:"柱状图",coverImg:"bar-tick-align.png",showType:2,baseConfig:{legend:{type:"scroll",top:"25px"},tooltip:{confine:!1,trigger:"axis",axisPointer:{type:"shadow"}},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},grid:{left:"0",bottom:"20px",containLabel:!0},xAxis:{axisLabel:{showMaxLabel:!0},axisTick:{alignWithLabel:!0}},yAxis:{},dataZoom:[{type:"inside"}]},subTypeList:[{value:"bar-simple",icon:"bar-simple",tooltipContent:"垂直条形图"},{value:"bar-y-category",icon:"bar-y-category",tooltipContent:"水平条形图"}],disabled:(e,t)=>{const o=t?.length;return!(o>=1)}},{showTypeName:"pie",label:"饼图",coverImg:"pie-simple.png",showType:4,subTypeList:[{value:"pie-simple",icon:"pie-simple",tooltipContent:"饼图"},{value:"pie-borderRadius",icon:"pie-borderRadius",tooltipContent:"环形图"}],baseConfig:{tooltip:{confine:!0,formatter:"{a}<br>{b}: {c}({d}%)",trigger:"item"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:"25px"}},disabled:(e,t)=>{const o=t?.length,a=e?.length;return!(a<=4&&o>0&&o<=1)}},{showTypeName:"area",label:"地图",coverImg:"area.png",showType:5,subTypeList:[],baseConfig:{tooltip:{confine:!0,trigger:"item"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},visualMap:{text:["高","低"],realtime:!1,calculable:!0,inRange:{color:["#E8F4FD","#B8D4F7","#7BA4F0","#4A7BE8","#3562e1"]}}},disabled:(e,t)=>{const o=t?.length,a=t?.some(e=>{let{colDesc:t}=e;return t.includes("省")||t.includes("市")});return!(a&&o>0)}},{showTypeName:"funnel",label:"漏斗图",coverImg:"funnel.png",showType:6,subTypeList:[],baseConfig:{tooltip:{confine:!0,trigger:"item",formatter:"{a} <br/>{b} : {c}"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:20}},disabled:(e,t)=>{const o=t?.length,a=e?.length;return!(a<=5&&o>0&&o<=1)}},{showTypeName:"card",label:"卡片",coverImg:"card.png",showType:9,subTypeList:[],baseConfig:{},disabled:(e,t)=>{const o=t?.length,a=e?.length;return!(a>0&&o<=1)}},{showTypeName:"radar",label:"雷达图",coverImg:"radar.png",showType:10,subTypeList:[],baseConfig:{legend:{type:"scroll",orient:"vertical",left:"left",top:"25px"},tooltip:{confine:!0,trigger:"item"},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},radar:{center:["50%","55%"]}},disabled:(e,t)=>{const o=t?.length;return 1!==o||1!==e.length}},{showTypeName:"scatter-simple",label:"散点图",coverImg:"",showType:11,subTypeList:[],disabled:()=>!1,baseConfig:{grid:{left:"0",bottom:"10px",containLabel:!0},tooltip:{showDelay:0,axisPointer:{show:!0,type:"cross",lineStyle:{type:"dashed",width:1}}},toolbox:{show:!1,showTitle:!1,feature:{saveAsImage:{}}},legend:{type:"scroll",top:"25px"},xAxis:{splitLine:{lineStyle:{type:"dashed"}}},yAxis:{splitLine:{lineStyle:{type:"dashed"}}}}}]};function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return s.get("showType",e)}function n(e,o){const a={};return e.forEach(e=>{a[e.showTypeName]=t(e.baseConfig,o)}),a}const l=n(s.data,{backgroundColor:"transparent",title:{textStyle:{fontSize:14,lineHeight:16}}}),r=new Map;function p(){try{const t=e.getMap("china");if(t&&t.geoJson)return t.geoJson}catch(e){console.warn("Failed to get builtin China map:",e)}return{type:"FeatureCollection",features:[]}}function c(e){let{adcode:t}=e;const s="https://cdnfile.yaomaitong.cn/ksh/lib/geo-data";if("string"!=typeof t||t.match(/^\d{6}$/)||"中国"===t||"100000"===t||(t=o(t)),r.has(t)){const e=r.get(t);if(e)return Promise.resolve(e)}return(async()=>{try{if("中国"===t||"100000"===t)try{const e=await fetch(`${s}/china.json`);if(e.ok){const o=await e.json();return r.set(t,o),o}}catch(e){console.warn("Failed to load local China map data:",e)}if(a(t))try{const e=await fetch(`${s}/${t}.json`);if(e.ok){const o=await e.json();if(o&&o.features&&o.features.length>0)return r.set(t,o),o}}catch(e){console.warn("Failed to load local province map data:",e)}const e=p();return r.set(t,e),e}catch(e){console.error("All map data sources failed, using simple fallback:",e);const o=p();return r.set(t,o),o}})()}export{l as defaultChartOption,c as getGeoJsonData,s as iconList,n as setDefaultChartOption,i as showTypeText};
|
2
2
|
//# sourceMappingURL=config.mjs.map
|