UNPKG

@ued_fpi/data-visual

Version:

<br /> <br /> <div style="text-align:center"> <b style="font-size:30px">@ued_fpi/data-visual</b> <p>基于Vite4+TypeScript的Vue3大屏组件库开发框架</p> <img style="display:inline" src="https://img.shields.io/npm/v/@ued_fpi/data-visual" />

178 lines (173 loc) 4.84 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const vue = require('vue'); require('../common/BasicEcharts/index.js'); const index_vue_vue_type_script_setup_true_lang = require('../common/BasicEcharts/index.vue.js'); require('../common/BasicEcharts/index.vue2.js'); const clsfix = "dv-aims-pollution-source-analysis"; const _sfc_main = /* @__PURE__ */ vue.defineComponent({ __name: "index", props: { isUseBuiltInApi: { type: Boolean, default: false }, apiParams: { default: () => ({}) }, data: {} }, setup(__props) { const props = __props; const chartsFullOptions = vue.ref({ options: null }); const generateOption = (list) => { return { options: { tooltip: { trigger: "item", padding: 8, background: "rgba(1, 11, 18, 0.6)", formatter: (params) => { const { marker, name, value } = params; return ` <div>${marker} ${name} ${value}%</div> `; } }, legend: { top: "center", left: "50%", itemHeight: 10, itemWidth: 10, itemGap: 10, orient: "vertical", icon: "circle", textStyle: { fontFamily: "var(--dv-font-family-number)", fontSize: "var(--dv-text-number1)", color: "var(--dv-color-text-primary)", rich: { name: { fontSize: "var(--dv-text-body1)", color: "var(--dv-color-text-primary)", align: "left", width: 100 // padding: [0, 30, 0, -5], }, value: { fontFamily: "var(--dv-font-family-number)", fontSize: "var(--dv-text-number1)", color: "var(--dv-color-index)", width: 36, align: "right" } } }, formatter: (f_name) => { const { name, value } = list.find((item) => item.name === f_name); return `{name| ${name}}{value|${value}%}`; } }, series: [ { name: "", type: "pie", center: ["25%", "50%"], avoidLabelOverlap: false, label: { show: false }, labelLine: { show: false }, data: list } ] } }; }; const fetchData = (list) => { const colors = [ "#0062FF", "#0AAEFF", "#2AC94F", "#FF792E", "#F84439", "#FFB443", "#A162F7", "#F95EB1" ]; if (list) { chartsFullOptions.value = generateOption(list.map((item, index) => ({ name: item.name, value: item.rate, itemStyle: { color: colors[index] } }))); return; } const data = [{ name: "生活源", code: "1", rate: "20.5" }, { name: "农业源", code: "2", rate: "12.2" }, { name: "扬尘源", code: "3", rate: "10.2" }, { name: "燃煤", code: "4", rate: "8.2" }, { name: "工艺过程源", code: "5", rate: "7.8" }, { name: "移动源", code: "6", rate: "7" }, { name: "生物质源", code: "7", rate: "6.9" }, { name: "其他", code: "8", rate: "5.3" }]; chartsFullOptions.value = generateOption(data.map((item, index) => ({ name: item.name, value: item.rate, itemStyle: { color: colors[index] } }))); }; vue.onMounted(() => { fetchData(); }); vue.watch(() => props.apiParams, () => { fetchData(); }); vue.watch(() => props.data, () => { if (!props.isUseBuiltInApi && props.data) fetchData(props.data); }); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", { class: vue.normalizeClass(`${clsfix}-container`) }, [ vue.createElementVNode("div", { class: vue.normalizeClass(`${clsfix}-echarts`) }, [ vue.createVNode(vue.unref(index_vue_vue_type_script_setup_true_lang.default), { height: "100%", "full-options": chartsFullOptions.value, loading: false }, null, 8, ["full-options"]) ], 2) ], 2); }; } }); exports.default = _sfc_main;