@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 (111 loc) • 4.22 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const vue = require('vue');
const request = require('../../service/request.js');
const hooks = require('../../utils/hooks.js');
const _hoisted_1 = { class: "type-box" };
const _hoisted_2 = { class: "value" };
const _hoisted_3 = { class: "title" };
const _hoisted_4 = { class: "done" };
const _hoisted_5 = { class: "done-header" };
const _hoisted_6 = /* @__PURE__ */ vue.createElementVNode("span", null, "上周排查任务完成率", -1);
const _hoisted_7 = { class: "doneRateNumber" };
const _hoisted_8 = {
key: 0,
class: "progress"
};
const _hoisted_9 = { class: "progress-inner" };
const _hoisted_10 = /* @__PURE__ */ vue.createElementVNode("div", { class: "progress-end" }, null, -1);
const __default__ = {
name: "DvIpesHiddenDangerInvestigation",
title: "隐患排查"
};
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...__default__,
props: {
url: {
type: String,
default: "/ipes-srip-server/api/v3/gis/panel/hidden-trouble"
},
url2: {
type: String,
default: "/ipes-srip-server/api/v3/gis/hidden-trouble/mission/statistics/percent"
}
},
setup(__props) {
const props = __props;
const data = vue.ref({
general: null,
major: null,
ratio: null
});
const typeInfos = vue.ref([
{ title: "一般隐患", key: "general" },
{ title: "重大隐患", key: "major" },
{ title: "整改率", key: "ratio", unit: "%" }
]);
const doneRate = vue.ref(null);
const componentBox = vue.ref("");
const copies = vue.computed(() => {
const offsetWidth = componentBox.value?.offsetWidth || 0;
return offsetWidth > 0 ? (offsetWidth - 24 - 2) / 3 : 0;
});
async function getData() {
try {
const [res, res1] = await Promise.all([
request.default({ url: props.url }),
request.default({ url: props.url2 })
]);
data.value = res.data;
doneRate.value = res1.data?.missionCompletedPercent || 0;
} catch (error) {
console.log(error);
}
}
function getShowData(value) {
return value == null || isNaN(+value) ? "--" : value;
}
vue.onMounted(() => {
getData();
});
hooks.setIntervalData(getData, 5 * 60 * 1e3);
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", {
ref_key: "componentBox",
ref: componentBox,
class: "dv-ipes-hidden-danger"
}, [
vue.createElementVNode("div", _hoisted_1, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(typeInfos.value, (item) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: item.key,
class: vue.normalizeClass(["type-box-item", item.key])
}, [
vue.createElementVNode("div", _hoisted_2, vue.toDisplayString(getShowData(data.value[item.key]) + (item.unit || "")), 1),
vue.createElementVNode("div", _hoisted_3, vue.toDisplayString(item.title), 1)
], 2);
}), 128))
]),
vue.createElementVNode("div", _hoisted_4, [
vue.createElementVNode("div", _hoisted_5, [
_hoisted_6,
vue.createElementVNode("span", _hoisted_7, vue.toDisplayString(`${doneRate.value}%`), 1)
]),
!isNaN(doneRate.value) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
vue.createElementVNode("div", _hoisted_9, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(Math.round(doneRate.value * (copies.value / 100)), (item) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: item,
class: "bar",
style: vue.normalizeStyle({ flex: `0 0 calc((100% - ${copies.value}px) / ${copies.value})` })
}, null, 4);
}), 128))
]),
_hoisted_10
])) : vue.createCommentVNode("", true)
])
], 512);
};
}
});
exports.default = _sfc_main;