pc端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
2.6 KiB

<template>
<SearchCommands @search="onSearch" />
<template v-if="data">
<el-table :data="data" :style="{ 'max-height': contentHeight + 'px' }" border stripe style="width: 100%">
<el-table-column align="center" fixed label="设备ID" min-width="140" prop="deviceId" />
<el-table-column align="center" label="类型" min-width="100">
<template #default="scope">
{{ computeType(scope.row.type) }}
</template>
</el-table-column>
<el-table-column align="center" label="状态" min-width="100">
<template #default="scope">
<el-tag :type="computeStatus(scope.row.status)">{{ scope.row.status }}</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="起始时间" min-width="200">
<template #default="scope">
{{ formatDate(+scope.row.startTime) }}
</template>
</el-table-column>
<el-table-column align="center" label="截止时间" min-width="200">
<template #default="scope">
{{ formatDate(+scope.row.endTime) }}
</template>
</el-table-column>
</el-table>
</template>
</template>
<script setup>
import SearchCommands from 'components/commands/search-commands.vue';
import { getCommansStatus } from 'apis';
import { onMounted, ref } from 'vue';
import { ElMessage } from 'element-plus';
import dayjs from 'dayjs';
const data = ref([]);
let contentHeight = 600;
// 设置表格高度
onMounted(() => {
const winHeight = document.documentElement.clientHeight;
contentHeight = winHeight - 150;
});
/**
* 查询
* @param {object} options
* @returns {Promise<void>}
*/
async function onSearch(options) {
try {
data.value = await getCommansStatus(options);
} catch (error) {
ElMessage.error('查询失败');
throw new Error(error);
}
}
/**
* 计算状态
* @param {string} status
* @returns {string}
*/
function computeStatus(status) {
let statusStyle = 'success';
switch (status) {
case 'PENDING':
statusStyle = 'primary';
break;
case 'FAIL':
statusStyle = 'danger';
break;
case 'SUCCESS':
statusStyle = 'success';
break;
default:
statusStyle = 'primary';
break;
}
return statusStyle;
}
/**
* 转换类型
* @param {string} type
* @returns {string}
*/
function computeType(type) {
return type === 'DATA' ? '业务' : '事件';
}
/**
* 格式化时间为日期格式
* @param {number} time
* @returns {string}
*/
function formatDate(time) {
try {
return dayjs(time).format('YYYY-MM-DD');
} catch (error) {
return '';
}
}
</script>