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

135 lines (130 loc) 5.3 kB
'use strict'; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const vue = require('vue'); const dayjs = require('dayjs'); const lodashEs = require('lodash-es'); const commonArrow_vue_vue_type_script_setup_true_lang = require('../common/common-arrow.vue.js'); require('../common/common-arrow.vue2.js'); const echartsOptions = require('../../utils/echarts/echartsOptions.js'); const BaseECharts_vue_vue_type_script_setup_true_lang = require('../../utils/echarts/BaseECharts.vue.js'); const index = require('./api/index.js'); 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__ */ vue.createElementVNode("span", { class: "split" }, "/", -1); const _hoisted_7 = { class: "percent" }; const _hoisted_8 = /* @__PURE__ */ vue.createElementVNode("span", { class: "text" }, "同比", -1); const _hoisted_9 = { class: "arrow-compare" }; const _sfc_main = /* @__PURE__ */ vue.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 = vue.ref(); const option = vue.ref(void 0); const wgmsData = vue.reactive({ list: [] }); vue.onMounted(() => { !props.isLazy && getResData(); }); const getResData = async () => { if (props.data && props.data.length) { wgmsData.list = props.data; await vue.nextTick(); loadChart(wgmsData.list); return; } const { data: res } = await index.getWaterQualityData(props.params); res && (wgmsData.list = res); await vue.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 = lodashEs.sumBy(list2, (o) => { return o.count; }); option.value = echartsOptions.pieChartOptions(seriesData, colorList, total); }; vue.watch([() => props.params, () => props.data, () => props.isLazy], () => { !props.isLazy && getResData(); }, { deep: true }); __expose({ reload: getResData }); const { list } = vue.toRefs(wgmsData); return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [ vue.createElementVNode("div", { ref_key: "chartPie", ref: chartPie, class: "chart-pie" }, [ vue.createVNode(BaseECharts_vue_vue_type_script_setup_true_lang.default, { options: option.value }, null, 8, ["options"]) ], 512), vue.createElementVNode("div", _hoisted_2, [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(list), (item) => { return vue.openBlock(), vue.createElementBlock("div", { key: item.waterQuality, class: "lengend-item" }, [ vue.createElementVNode("span", { class: "icon", style: vue.normalizeStyle({ background: item.waterQualityColor }) }, null, 4), vue.createElementVNode("span", _hoisted_3, vue.toDisplayString(item.waterQuality), 1), vue.createElementVNode("div", _hoisted_4, [ vue.createElementVNode("span", _hoisted_5, vue.toDisplayString(item.count === null ? "--" : item.count), 1), _hoisted_6, vue.createElementVNode("span", _hoisted_7, vue.toDisplayString(item.percent === null ? "--" : `${item.percent}%`), 1) ]), _hoisted_8, vue.createElementVNode("span", { class: "compare", style: vue.normalizeStyle({ color: item.yoyPercent === null ? "--" : item.yoyPercent > 0 ? "var(--dv-color-success)" : item.yoyPercent < 0 ? "var(--dv-color-danger)" : "var(--dv-color-index)" }) }, vue.toDisplayString(item.yoyPercent === null ? "--" : `${Math.abs(item.yoyPercent)}%`), 5), vue.createElementVNode("div", _hoisted_9, [ item.yoyPercent !== null ? (vue.openBlock(), vue.createBlock(commonArrow_vue_vue_type_script_setup_true_lang.default, { key: 0, direction: item.yoyPercent > 0 ? "up" : item.yoyPercent < 0 ? "down" : "flat" }, null, 8, ["direction"])) : vue.createCommentVNode("", true) ]) ]); }), 128)) ]) ]); }; } }); exports.default = _sfc_main;