feat: 设备操作日志

master
李小林 8 months ago
parent 79135fe511
commit 32d7ae4c3b
  1. 14
      src/api/operate-log/index.ts
  2. 13
      src/api/operate-log/types.ts
  3. 13
      src/router/index.ts
  4. 113
      src/views/family/operate/remote-operation/components/DeviceOperateLog.vue
  5. 12
      src/views/family/operate/remote-operation/components/RemoteOperateInfo.vue

@ -0,0 +1,14 @@
import { AxiosPromise } from "axios";
import { DeviceLogPageResult } from "@/api/operate-log/types";
import request from "@/utils/request";
export function operateLogPage(
devId?: number,
data?: PageQuery
): AxiosPromise<DeviceLogPageResult> {
return request({
url: `/api/device-log/v1/page/${devId}`,
method: "POST",
data,
});
}

@ -0,0 +1,13 @@
export interface DeviceLogVO {
devId?: number;
operTime?: string;
operName?: string;
description?: string;
paramInfoList?: ParamInfo[];
}
export type DeviceLogPageResult = PageResult<DeviceLogVO[]>;
export interface ParamInfo {
parameterName?: string;
actualValue?: string;
remarks?: string;
}

@ -282,6 +282,19 @@ export const constantRoutes: RouteRecordRaw[] = [
title: "终端日志文件", title: "终端日志文件",
}, },
}, },
{
path: "/resources/remote-info/device-operate-log/:devId",
name: "DeviceOperateLog",
component: () =>
import(
"@/views/family/operate/remote-operation/components/DeviceOperateLog.vue"
),
meta: {
hidden: true,
keepAlive: true,
title: "设备操作日志",
},
},
], ],
}, },
]; ];

@ -0,0 +1,113 @@
<template>
<div class="app-container">
<el-card shadow="never">
<template #header>
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700; line-height: 32px; font-size: 14px">
设备日志信息列表
</div>
</div>
</template>
<div class="any-table">
<el-table :data="tableData" v-loading="loading" max-height="500">
<el-table-column
label="操作名称"
width="200"
prop="operName"
align="center"
/>
<el-table-column
label="操作时间"
width="200"
prop="operTime"
align="center"
/>
<el-table-column label="设备操作日志内容" prop="description">
<template #default="scope">
<div>
<div style="white-space: pre-line">
{{ scope.row.description }}
</div>
<div v-if="scope.row.paramInfoList != null">
<div style="line-height: 32px; font-size: 14px">
parameter values :
</div>
<div class="any-table param">
<el-table
:data="scope.row.paramInfoList"
highlight-current-row
>
<el-table-column
label="参数名称"
align="center"
width="250"
prop="parameterName"
/>
<el-table-column
label="实际值"
align="center"
width="100"
prop="actualValue"
/>
<el-table-column
label="备注"
align="center"
prop="remarks"
/>
</el-table>
</div>
</div>
</div>
</template>
</el-table-column>
</el-table>
<pagination
v-if="total > 0"
v-model:total="total"
v-model:page="queryForm.pageNum"
v-model:limit="queryForm.pageSize"
@pagination="getData"
/>
</div>
</el-card>
</div>
</template>
<script setup lang="ts">
import { DeviceLogVO } from "@/api/operate-log/types";
import { operateLogPage } from "@/api/operate-log";
const route = useRoute();
let devId: number = parseInt(<string>route.params.devId);
const tableData = ref<DeviceLogVO[]>([]);
const total = ref<number>(0);
const queryForm = ref<PageQuery>({
pageNum: 1,
pageSize: 10,
});
const loading = ref<boolean>(false);
const getData = () => {
loading.value = true;
operateLogPage(devId, queryForm.value)
.then(({ data }) => {
tableData.value = data.list;
total.value = data.total;
})
.finally(() => {
loading.value = false;
});
};
onMounted(() => {
getData();
});
</script>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
.el-table__body .param {
font-size: 12px !important;
}
</style>

@ -348,9 +348,12 @@
<el-dropdown-item divided @click="skipProfiles" <el-dropdown-item divided @click="skipProfiles"
>终端配置文件</el-dropdown-item >终端配置文件</el-dropdown-item
> >
<el-dropdown-item divided @click="skipLogs" <el-dropdown-item divided @click="skipTerminalLogFiles"
>终端日志文件</el-dropdown-item >终端日志文件</el-dropdown-item
> >
<el-dropdown-item divided @click="skipDeviceOperateLog"
>设备操作日志</el-dropdown-item
>
</el-scrollbar> </el-scrollbar>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
@ -441,11 +444,16 @@ const skipProfiles = () => {
path: `/resources/remote-info/profiles/${remote.value.devId}`, path: `/resources/remote-info/profiles/${remote.value.devId}`,
}); });
}; };
const skipLogs = () => { const skipTerminalLogFiles = () => {
router.push({ router.push({
path: `/resources/remote-info/terminal-log-files/${remote.value.devId}`, path: `/resources/remote-info/terminal-log-files/${remote.value.devId}`,
}); });
}; };
const skipDeviceOperateLog = () => {
router.push({
path: `/resources/remote-info/device-operate-log/${remote.value.devId}`,
});
};
onMounted(() => { onMounted(() => {
getData(); getData();
}); });

Loading…
Cancel
Save