Files
xj-screen/src/components/secondaryScreen/screen-right/screenRightHooks.ts
T
2023-12-27 18:34:06 +08:00

207 lines
4.7 KiB
TypeScript

import { ref } from 'vue';
import dayjs from 'dayjs';
import { minuteToStr } from '/@/utils/utils.ts';
function timeFormat(type, list) {
const o = {
week: 'MM-DD',
month: 'MM-DD',
year: 'YYYY-MM',
};
if (list) {
return list.map((item) => dayjs(item).format(o[type]));
}
return [];
}
//时间转换
export function formatStr({ list, len }) {
let sum =
list.reduce((all, cur) => {
return all + cur;
}, 0) / len;
return minuteToStr(sum);
}
function createWeek() {
let arr = [];
for (let i = 0; i < 7; i++) {}
}
const defaultVal = (type) => {
if (type == 'week') {
return {
defaultTime: [],
};
}
if (type == 'month') {
}
if (type == 'year') {
}
};
export function sleepCharts({ time, short, long, awake, type }) {
let middleIndex = Math.floor(time.length / 2);
return {
grid: {
top: '15%',
left: '5%',
right: '5%',
bottom: 30,
},
tooltip: {
show: true,
trigger: 'axis',
textStyle: {
align: 'left', // 使用左对齐样式显示tooltip文本
color: '#fff',
},
backgroundColor: 'rgba(50,50,50,0.7)',
borderColor: '#1b7ef2',
},
legend: {
orient: 'horizontal',
data: ['清醒', '浅睡', '深睡'],
textStyle: {
color: '#ffffff',
},
icon: 'roundRect',
height: 40,
itemHeight: 14,
top: -5,
right: '15%',
selectedMode: false,
},
color: ['#14B3F8', '#6D7BEB', '#5451DC'],
xAxis: {
type: 'category',
axisTick: {
show: false,
},
axisLabel: {
color: '#ffffff',
formatter: (item, i) => {
let mid = time.length == 30 ? 16 : middleIndex;
if (i == 0 || i == mid || i == time.length - 1) {
return item;
}
},
showMinLabel: true,
showMaxLabel: true,
},
data: timeFormat(type, time),
},
yAxis: {
type: 'value',
axisLabel: {
show: false,
},
axisLine: {
show: false,
},
splitLine: {
lineStyle: {
type: 'dashed',
color: '#696969',
},
},
},
series: [
{
name: '清醒',
type: 'bar',
data: awake,
},
{
name: '浅睡',
type: 'bar',
data: short,
},
{
name: '深睡',
type: 'bar',
data: long,
},
],
};
}
//步数
export function useStep() {
const total = ref();
const stepData = ref([
{
name: '5000以下',
value: '0',
type: 'lessThanFiveThousand',
type_dictText: '恶性肿瘤',
},
{
name: '5000~1w',
value: '0',
type: 'fiveThousandToTenThousand',
type_dictText: '其他',
},
{
name: '1~1.5w',
value: '0',
type: 'tenThousandToFifteenThousand',
type_dictText: '其他',
},
{
name: '1.5w~2w',
value: '0',
type: 'fifteenToTwentyThousand',
type_dictText: '其他',
},
{
name: '2w以上',
value: '0',
type: 'twentyThousandOrMore',
type_dictText: '其他',
},
]);
function setStep(data) {
stepData.value.map((item) => {
item.value = data[item.type] || 0;
});
total.value = data?.userCount;
}
return {
total,
stepData,
setStep,
};
}
export const monitorColumns = [
{
title: '姓名',
dataIndex: 'realName',
key: 'realName',
align: 'center',
},
{
title: '类型',
dataIndex: 'eventType_dictText',
key: 'eventType_dictText',
align: 'center',
},
{
title: '异常时间',
dataIndex: 'warnTime',
key: 'warnTime',
align: 'center',
width: 150,
},
{
title: '定位',
key: 'address',
align: 'center',
slots: { customRender: 'address' },
width: 40,
},
];