@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
JavaScript
;
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;