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" />

138 lines (133 loc) 4.21 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const vue = require('vue'); const fpiTgFactorTools = require('fpi-tg-factor-tools'); const dayjs = require('dayjs'); require('../common/BasicEcharts/index.js'); const index = require('./api/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-main-pollution-year-ratio"; const _sfc_main = /* @__PURE__ */ vue.defineComponent({ __name: "index", props: { apiParams: { default: () => ({ time: dayjs().subtract(1, "h").valueOf(), code: "0101000000", codeType: "grid" }) } }, setup(__props) { const props = __props; const chartsFullOptions = vue.ref({ options: null }); const generateOption = (list) => { return { options: { legend: { show: true, bottom: -4, itemGap: 4, textStyle: { color: "var(--dv-color-text-primary)", fontSize: 12 }, icon: "circle", itemWidth: 12, itemHeight: 12 }, tooltip: { trigger: "item", padding: 8, background: "rgba(1, 11, 18, 0.6)", formatter: (params) => { const data = params; return ` <div>总天数 ${data.data.total}</div> <div>${data.marker} ${data.name} ${data.data.num}${data.value}%</div> `; } }, series: [ { type: "pie", radius: "60%", center: ["50%", "44%"], data: list, label: { position: "outer", color: "var(--dv-color-text-primary)", overflow: "none", formatter: (params) => { const { name, value, num } = params.data; return `${name} ${num}${value}%`; }, fontSize: "var(--dv-text-number1)", fontFamily: "var(--dv-font-family-number)" } } ] } }; }; const fetchData = () => { const colors = [ "#0062FF", "#0AAEFF", "#2AC94F", "#FF792E", "#F84439", "#FFB443", "rgb(154, 154, 154)" ]; index.getAirQualityStatis(props.apiParams).then((res) => { if (res.data && res.data.primaryPollutant.primaryYearSum) { const data = res.data.primaryPollutant.primaryYearSum; const rawList = fpiTgFactorTools.BASE_FACTOR.filter((item) => item.code !== "aqi"); rawList.push({ name: "无首污", key: "noMainPollutant", code: "noMainPollutant", unit: "", key3: "" }); const renderData = rawList.map((item, index) => { const v = data[item.key]; const rate = (v / data.total * 100).toFixed(1); return { name: item.name, value: rate, num: v, total: data.total, itemStyle: { color: colors[index] } }; }); chartsFullOptions.value = generateOption(renderData); } }); }; vue.onMounted(() => { fetchData(); }); vue.watch(() => props.apiParams, () => { fetchData(); }); 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;