@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" />
116 lines (113 loc) • 4.15 kB
JavaScript
import { defineComponent, reactive, onMounted, watch, computed, toRefs, openBlock, createElementBlock, normalizeStyle, createElementVNode, Fragment, renderList, unref, toDisplayString, withDirectives, vShow } from 'vue';
import _imports_0 from './images/zao.png.mjs';
import { getChangeRateData } from './api/index.mjs';
import upImg from './images/up.png.mjs';
import downImg from './images/down.png.mjs';
const _hoisted_1 = { class: "change-rate" };
const _hoisted_2 = { class: "value" };
const _hoisted_3 = { class: "trend" };
const _hoisted_4 = ["src"];
const _hoisted_5 = { style: { "height": "10px" } };
const _hoisted_6 = /* @__PURE__ */ createElementVNode("img", {
alt: "",
class: "zao",
src: _imports_0
}, null, -1);
const _hoisted_7 = { class: "label" };
const _sfc_main = /* @__PURE__ */ defineComponent({
...{
name: "DvWgmsChlorophyllAChangeRate",
title: "叶绿素a变化率"
},
__name: "index",
props: {
height: { default: "200px" },
params: { default: () => {
return {
dataType: "1",
factorCode: "w01016",
siteCode: "",
stationCode: "1",
time: 0,
timeType: "day"
};
} },
data: { default: null },
isLazy: { type: Boolean, default: false }
},
setup(__props, { expose: __expose }) {
const props = __props;
const state = reactive({
list: [
{ label: "环比", rate: "" },
{ label: "同比", rate: "" },
{ label: "近24条数据\n变化率均值", rate: "" }
]
});
onMounted(() => {
!props.isLazy && getData();
});
watch([() => props.params, () => props.data, () => props.isLazy], () => {
!props.isLazy && getData();
}, { deep: true });
async function getData() {
if (props.data && Object.keys(props.data).length) {
state.list[0].rate = props?.data?.qoqPercent ?? "--";
state.list[1].rate = props?.data?.yoyPercent ?? "--";
state.list[2].rate = props?.data?.late24Percent ?? "--";
return;
}
const res = await getChangeRateData(props.params);
state.list[0].rate = res?.data?.qoqPercent ?? "--";
state.list[1].rate = res?.data?.yoyPercent ?? "--";
state.list[2].rate = res?.data?.late24Percent ?? "--";
}
const getHeight = computed(() => {
if (typeof props.height === "string")
return props.height;
else if (typeof props.height === "number")
return `${props.height}px`;
else
return "100%";
});
__expose({
reload: getData
});
const { list } = toRefs(state);
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: "dv-wgms-chlorophyll-a-change-rate",
style: normalizeStyle({ "--height": getHeight.value })
}, [
createElementVNode("div", _hoisted_1, [
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(list), (item, index) => {
return openBlock(), createElementBlock("div", {
key: index,
class: "rate-one"
}, [
createElementVNode("div", _hoisted_2, [
createElementVNode("span", {
style: normalizeStyle({ color: Number(item.rate) > 0 ? "var(--dv-color-danger)" : Number(item.rate) < 0 ? "var(--dv-color-success)" : "var(--dv-color-index)" })
}, toDisplayString(item.rate) + "%", 5)
]),
createElementVNode("div", _hoisted_3, [
withDirectives(createElementVNode("img", {
alt: "",
src: Number(item.rate) > 0 ? unref(upImg) : unref(downImg)
}, null, 8, _hoisted_4), [
[vShow, Number(item.rate)]
]),
withDirectives(createElementVNode("div", _hoisted_5, null, 512), [
[vShow, !Number(item.rate)]
])
]),
_hoisted_6,
createElementVNode("div", _hoisted_7, toDisplayString(item.label), 1)
]);
}), 128))
])
], 4);
};
}
});
export { _sfc_main as default };