@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" />
166 lines (161 loc) • 6.84 kB
JavaScript
'use strict';
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const bgLight = require('./images/bg-light.png.js');
const bg = require('./images/bg.png.js');
const empty = require('./images/empty.png.js');
const footerLight = require('./images/footer-light.png.js');
const footer = require('./images/footer.png.js');
const leaderLight = require('./images/leader-light.png.js');
const leader = require('./images/leader.png.js');
const staffLight = require('./images/staff-light.png.js');
const staff = require('./images/staff.png.js');
const vue = require('vue');
const elementPlusExpand = require('@ued_fpi/element-plus-expand');
const dayjs = require('dayjs');
const request = require('../../service/request.js');
const utils = require('../../../utils.js');
const NoData_vue_vue_type_script_setup_true_lang = require('../common/NoData.vue.js');
require('../common/NoData.vue2.js');
const hooks = require('../../utils/hooks.js');
const _hoisted_1 = { class: "dv-ipes-emergency-watch" };
const _hoisted_2 = /* @__PURE__ */ vue.createElementVNode("div", { class: "emergency-watch-title" }, " 今日值班 ", -1);
const _hoisted_3 = { class: "box" };
const _hoisted_4 = ["src"];
const _hoisted_5 = { class: "info" };
const _hoisted_6 = { class: "type" };
const _hoisted_7 = ["onClick"];
const _hoisted_8 = { class: "name" };
const _hoisted_9 = { class: "phone" };
const _hoisted_10 = { class: "done-header" };
const _hoisted_11 = /* @__PURE__ */ vue.createElementVNode("span", null, "日志填写率", -1);
const _hoisted_12 = { class: "doneRateNumber" };
const _hoisted_13 = {
key: 0,
class: "progress"
};
const _hoisted_14 = { class: "progress-inner" };
const _hoisted_15 = /* @__PURE__ */ vue.createElementVNode("div", { class: "progress-end" }, null, -1);
const __default__ = {
name: "DvIpesEmergencyWatch",
title: "应急值守"
};
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...__default__,
props: {
doneRate: {
type: Number,
default: 100
},
url: {
type: String,
default: "/duty-system-server/duty/web/api/v1/work/getDutyKeeper"
}
},
emits: {
callPhone: (value) => value
},
setup(__props, { emit: emits }) {
const props = __props;
const { isDark } = utils.useThemeHook();
const doneRate = vue.computed(() => props.doneRate);
const componentBox = vue.ref(null);
const copies = vue.computed(() => {
const offsetWidth = componentBox.value?.offsetWidth || 0;
return offsetWidth > 0 ? (offsetWidth - 24 - 2) / 3 : 0;
});
const commitmentData = vue.ref([]);
const getImg = (type, isDark2) => {
const key = type === "值班领导" ? "leader" : "staff";
return new URL((/* #__PURE__ */ Object.assign({"./images/bg-light.png": bgLight.default,"./images/bg.png": bg.default,"./images/empty.png": empty.default,"./images/footer-light.png": footerLight.default,"./images/footer.png": footer.default,"./images/leader-light.png": leaderLight.default,"./images/leader.png": leader.default,"./images/staff-light.png": staffLight.default,"./images/staff.png": staff.default}))[`./images/${key}${isDark2 ? "" : "-light"}.png`], self.location).href;
};
async function getCommitmentData() {
try {
const { data } = await request.default({
method: "get",
url: props.url,
params: {
date: dayjs().format("YYYY-MM-DD")
}
});
commitmentData.value = data.entries || [];
commitmentData.value = commitmentData.value.sort((a, b) => {
if (a.job === "值班领导")
return -1;
return 0;
});
} catch (error) {
console.log(error);
}
}
vue.onMounted(() => {
getCommitmentData();
});
hooks.setIntervalData(getCommitmentData, 5 * 60 * 1e3);
function handleCallPhone(phone) {
emits("callPhone", phone);
}
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
_hoisted_2,
commitmentData.value.length ? (vue.openBlock(), vue.createBlock(vue.unref(elementPlusExpand.FpiElRolling), {
key: 0,
class: "list",
direction: "y",
time: 15
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(commitmentData.value, (item, index) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: index,
class: "security-box"
}, [
vue.createElementVNode("div", _hoisted_3, [
vue.createElementVNode("img", {
src: getImg(item.type, vue.unref(isDark))
}, null, 8, _hoisted_4),
vue.createElementVNode("div", _hoisted_5, [
vue.createElementVNode("div", _hoisted_6, vue.toDisplayString(item.job), 1),
vue.createElementVNode("div", {
class: "bottom",
onClick: ($event) => handleCallPhone(item.contactWay)
}, [
vue.createElementVNode("span", _hoisted_8, vue.toDisplayString(item.name), 1),
vue.createElementVNode("span", _hoisted_9, vue.toDisplayString(item.contactWay), 1)
], 8, _hoisted_7)
])
])
]);
}), 128))
]),
_: 1
})) : (vue.openBlock(), vue.createBlock(NoData_vue_vue_type_script_setup_true_lang.default, {
key: 1,
class: "dv-ipes-ground-water-monitor"
})),
vue.createElementVNode("div", {
ref_key: "componentBox",
ref: componentBox,
class: "done"
}, [
vue.createElementVNode("div", _hoisted_10, [
_hoisted_11,
vue.createElementVNode("span", _hoisted_12, vue.toDisplayString(`${doneRate.value}%`), 1)
]),
!isNaN(doneRate.value) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
vue.createElementVNode("div", _hoisted_14, [
(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_15
])) : vue.createCommentVNode("", true)
], 512)
]);
};
}
});
exports.default = _sfc_main;