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

131 lines (128 loc) 5.05 kB
import { defineComponent, ref, reactive, onMounted, nextTick, watch, toRefs, openBlock, createElementBlock, createElementVNode, createVNode, Fragment, renderList, unref, normalizeStyle, toDisplayString, createBlock, createCommentVNode } from 'vue'; import dayjs from 'dayjs'; import { sumBy } from 'lodash-es'; import _sfc_main$2 from '../common/common-arrow.vue.mjs'; import '../common/common-arrow.vue2.mjs'; import { pieChartOptions } from '../../utils/echarts/echartsOptions.mjs'; import _sfc_main$1 from '../../utils/echarts/BaseECharts.vue.mjs'; import { getWaterQualityData } from './api/index.mjs'; const _hoisted_1 = { class: "dv-wgms-water-category" }; const _hoisted_2 = { class: "section-water-quality-lengend" }; const _hoisted_3 = { class: "name" }; const _hoisted_4 = { class: "flex-num" }; const _hoisted_5 = { class: "num" }; const _hoisted_6 = /* @__PURE__ */ createElementVNode("span", { class: "split" }, "/", -1); const _hoisted_7 = { class: "percent" }; const _hoisted_8 = /* @__PURE__ */ createElementVNode("span", { class: "text" }, "同比", -1); const _hoisted_9 = { class: "arrow-compare" }; const _sfc_main = /* @__PURE__ */ defineComponent({ ...{ name: "DvWgmsWaterQualityClassification", title: "水质类别占比" }, __name: "index", props: { params: { default: () => { return { controlLevel: "001", treeId: "3301", startTime: dayjs().startOf("year").valueOf(), endTime: dayjs().endOf("year").valueOf(), timeType: "day" }; } }, data: { default: () => { return []; } }, isLazy: { type: Boolean, default: false } }, setup(__props, { expose: __expose }) { const props = __props; const chartPie = ref(); const option = ref(void 0); const wgmsData = reactive({ list: [] }); onMounted(() => { !props.isLazy && getResData(); }); const getResData = async () => { if (props.data && props.data.length) { wgmsData.list = props.data; await nextTick(); loadChart(wgmsData.list); return; } const { data: res } = await getWaterQualityData(props.params); res && (wgmsData.list = res); await nextTick(); loadChart(wgmsData.list); }; const loadChart = (list2) => { const seriesData = list2.map((item) => { return { name: item.waterQuality, value: item.count }; }); const colorList = list2.map((item) => { return item.waterQualityColor; }); const total = sumBy(list2, (o) => { return o.count; }); option.value = pieChartOptions(seriesData, colorList, total); }; watch([() => props.params, () => props.data, () => props.isLazy], () => { !props.isLazy && getResData(); }, { deep: true }); __expose({ reload: getResData }); const { list } = toRefs(wgmsData); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", _hoisted_1, [ createElementVNode("div", { ref_key: "chartPie", ref: chartPie, class: "chart-pie" }, [ createVNode(_sfc_main$1, { options: option.value }, null, 8, ["options"]) ], 512), createElementVNode("div", _hoisted_2, [ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(list), (item) => { return openBlock(), createElementBlock("div", { key: item.waterQuality, class: "lengend-item" }, [ createElementVNode("span", { class: "icon", style: normalizeStyle({ background: item.waterQualityColor }) }, null, 4), createElementVNode("span", _hoisted_3, toDisplayString(item.waterQuality), 1), createElementVNode("div", _hoisted_4, [ createElementVNode("span", _hoisted_5, toDisplayString(item.count === null ? "--" : item.count), 1), _hoisted_6, createElementVNode("span", _hoisted_7, toDisplayString(item.percent === null ? "--" : `${item.percent}%`), 1) ]), _hoisted_8, createElementVNode("span", { class: "compare", style: normalizeStyle({ color: item.yoyPercent === null ? "--" : item.yoyPercent > 0 ? "var(--dv-color-success)" : item.yoyPercent < 0 ? "var(--dv-color-danger)" : "var(--dv-color-index)" }) }, toDisplayString(item.yoyPercent === null ? "--" : `${Math.abs(item.yoyPercent)}%`), 5), createElementVNode("div", _hoisted_9, [ item.yoyPercent !== null ? (openBlock(), createBlock(_sfc_main$2, { key: 0, direction: item.yoyPercent > 0 ? "up" : item.yoyPercent < 0 ? "down" : "flat" }, null, 8, ["direction"])) : createCommentVNode("", true) ]) ]); }), 128)) ]) ]); }; } }); export { _sfc_main as default };