feat: 设备链路信息

master
李小林 8 months ago
parent f834675398
commit 19668bc2d6
  1. 6
      src/api/operate-log/types.ts
  2. 4
      src/api/order/index.ts
  3. 6
      src/api/order/types.ts
  4. 30
      src/api/remote/index.ts
  5. 4
      src/api/remote/types.ts
  6. 20
      src/views/family/operate/order/components/OrderInfoEdit.vue
  7. 1
      src/views/family/operate/remote-operation/components/DeviceAbility.vue
  8. 85
      src/views/family/operate/remote-operation/components/DeviceLinkInfo.vue
  9. 16
      src/views/family/operate/remote-operation/components/DeviceOrder.vue
  10. 41
      src/views/family/operate/remote-operation/components/DeviceStatus.vue
  11. 6
      src/views/family/operate/remote-operation/components/DeviceTaskTable.vue
  12. 8
      src/views/family/operate/remote-operation/components/RemoteOperateInfo.vue
  13. 2
      src/views/system/user/components/dept-tree.vue

@ -11,3 +11,9 @@ export interface ParamInfo {
actualValue?: string;
remarks?: string;
}
export interface DeviceLinkVO {
title?: string;
list?: ParamInfo[];
}

@ -111,9 +111,9 @@ export function deviceOderTablePage(
});
}
export function checkDeviceExits(devSnoOui: string): AxiosPromise<MapDev> {
export function checkDeviceExits(adNo: string): AxiosPromise<MapDev> {
return request({
url: `/api/order/v1/check-dev/${devSnoOui}`,
url: `/api/order/v1/check-dev/${adNo}`,
method: "GET",
});
}

@ -115,11 +115,7 @@ export interface DevOuiSnoSearchForm extends PageQuery {
export type DevOuiSnoPageResult = PageResult<string[]>;
export interface DeviceOrderQuery extends PageQuery {
devSno?: string;
devOui?: string;
pppoeAccount?: string;
devAdNo?: string;
}
export interface MapDev {
devId?: number;

@ -1,6 +1,11 @@
import request from "@/utils/request";
import { AxiosPromise } from "axios";
import { RemoteDevInfoVO, UnBindingForm } from "@/api/remote/types";
import {
RemoteDevInfoVO,
RemoteOperateResult,
UnBindingForm,
} from "@/api/remote/types";
import { DeviceLinkVO } from "@/api/operate-log/types";
export function remoteDevInfo(devId: number): AxiosPromise<RemoteDevInfoVO> {
return request({
@ -21,3 +26,26 @@ export function deleteProfile(fileId?: number, devId?: number) {
method: "DELETE",
});
}
export function checkDevOnline(
devId?: number
): AxiosPromise<RemoteOperateResult> {
return request({
url: `/api/equipment/v1/remote/check-dev-online/${devId}`,
method: "GET",
});
}
export function getDeviceLinkInfo(devId: number): AxiosPromise<DeviceLinkVO[]> {
return request({
url: `/api/operate-result-args/v1/device-link-info/${devId}`,
method: "GET",
});
}
export function remoteDeviceLinkInfo(
devId: number
): AxiosPromise<DeviceLinkVO[]> {
return request({
url: `/api/equipment/v1/remote/device-link-info/${devId}`,
method: "GET",
});
}

@ -62,3 +62,7 @@ export interface DeviceInfo {
devOnlineTime?: string;
devCreateTime?: string;
}
export interface RemoteOperateResult {
resultState?: string;
resultCode?: string;
}

@ -430,8 +430,8 @@ const openBindingDev = () => {
bindingDevRef.value.open(orderId);
};
const skipOperate = () => {
const devSnoOui = orderInfo.value.devSnoOui;
if (devSnoOui == null || devSnoOui.length == 0) {
let adNo = orderInfo.value.adNo;
if (adNo == null || adNo.length == 0) {
ElMessage({
message: "设备不存在",
duration: 2000,
@ -439,19 +439,11 @@ const skipOperate = () => {
});
return;
}
checkDeviceExits(devSnoOui)
.then(({ data }) => {
router.push({
path: `/resources/remote-info/${data.devId}/${data.typeAndVerId}`,
});
})
.catch(() => {
ElMessage({
message: "设备不存在",
duration: 2000,
type: "error",
});
checkDeviceExits(adNo).then(({ data }) => {
router.push({
path: `/resources/remote-info/${data.devId}/${data.typeAndVerId}`,
});
});
};
onMounted(() => {
getData();

@ -133,6 +133,7 @@
label-class-name="my-label"
class-name="my-content"
width="180px"
v-if="ability.reboot == null"
>
{{ ability.reboot }}
</el-descriptions-item>

@ -0,0 +1,85 @@
<template>
<div class="mt-4">
<el-card shadow="never">
<template #header>
<div class="head-parent-right">
<el-button type="primary" @click="loadRemoteDeviceLinkInfo"
>获取设备链路信息</el-button
>
</div>
</template>
<el-empty
description="暂无数据"
v-loading="loading"
v-if="tableData.length === 0"
/>
<el-card
class="any-table"
v-for="(item, index) in tableData"
:key="index"
shadow="never"
v-loading="loading"
>
<template #header>
<span style="font-size: 14px; font-weight: 700">{{
item.title
}}</span>
</template>
<el-table :data="item.list" highlight-current-row>
<el-table-column
label="参数名称"
align="left"
width="400"
prop="parameterName"
/>
<el-table-column
label="实际值"
align="left"
width="200"
prop="actualValue"
/>
<el-table-column label="备注" align="left" prop="remarks" />
</el-table>
</el-card>
</el-card>
</div>
</template>
<script setup lang="ts">
import { DeviceLinkVO } from "@/api/operate-log/types";
import { getDeviceLinkInfo, remoteDeviceLinkInfo } from "@/api/remote";
const prop = defineProps<{
devId: number;
}>();
const loading = ref<boolean>(false);
const tableData = ref<DeviceLinkVO[]>([]);
const loadDeviceLinkInfo = () => {
loading.value = true;
getDeviceLinkInfo(prop.devId)
.then(({ data }) => {
tableData.value = data;
})
.finally(() => {
loading.value = false;
});
};
const loadRemoteDeviceLinkInfo = () => {
loading.value = true;
remoteDeviceLinkInfo(prop.devId)
.then(({ data }) => {
tableData.value = data;
})
.finally(() => {
loading.value = false;
});
};
onMounted(() => {
loadDeviceLinkInfo();
});
</script>
<style scoped>
:deep(.el-card__body) {
padding: 0 0 0 0;
}
</style>

@ -10,7 +10,7 @@
</div>
</template>
<div class="any-table">
<el-table v-loading="loading" :data="tableData" max-height="380">
<el-table v-loading="loading" :data="tableData" max-height="400">
<el-table-column
label="工单序号"
align="center"
@ -148,9 +148,7 @@ import { deviceOderTablePage } from "@/api/order";
const route = useRoute();
const router = useRouter();
let devId: number = parseInt(<string>route.params.devId);
let devOui: string = <string>route.query.devOui;
let devSno: string = <string>route.query.devSno;
let pppoe: string = <string>route.query.pppoeAccount;
let devAdNo: string = <string>route.query.devAdNo;
const queryForm = ref<DeviceOrderQuery>({
pageNum: 1,
pageSize: 10,
@ -183,9 +181,7 @@ const skipOrderEdit = (orderId: number) => {
};
const getData = async () => {
loading.value = true;
queryForm.value.devSno = devSno;
queryForm.value.devOui = devOui;
queryForm.value.pppoeAccount = pppoe;
queryForm.value.devAdNo = devAdNo;
await deviceOderTablePage(queryForm.value)
.then(({ data }) => {
tableData.value = data.list;
@ -200,4 +196,8 @@ onMounted(() => {
});
</script>
<style scoped></style>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -1,8 +1,5 @@
<template>
<el-descriptions title="设备状态" :column="3" border>
<template #extra>
<el-button type="primary">获取设备链路信息</el-button>
</template>
<el-descriptions-item
label="设备在线状态"
label-align="left"
@ -12,7 +9,13 @@
width="150px"
>
<div v-loading="loading">
<el-button type="primary" link>{{ data.devOnline }}</el-button>
<el-button
type="primary"
:disabled="loading"
@click="loadDevOnline"
link
>{{ deviceInfo.devOnline }}</el-button
>
</div>
</el-descriptions-item>
<el-descriptions-item
@ -23,7 +26,7 @@
class-name="my-content"
width="150px"
>
{{ data.devOnlineTime }}
{{ deviceInfo.devOnlineTime }}
</el-descriptions-item>
<el-descriptions-item
label="设备创建时间"
@ -33,21 +36,45 @@
class-name="my-content"
width="150px"
>
{{ data.devCreateTime }}
{{ deviceInfo.devCreateTime }}
</el-descriptions-item>
</el-descriptions>
<device-ability :type-and-ver-id="typeAndVerId" />
<device-link-info :dev-id="devId" />
</template>
<script setup lang="ts">
import DeviceAbility from "@/views/family/operate/remote-operation/components/DeviceAbility.vue";
import { DeviceInfo } from "@/api/remote/types";
import { checkDevOnline } from "@/api/remote";
import DeviceLinkInfo from "@/views/family/operate/remote-operation/components/DeviceLinkInfo.vue";
const prop = defineProps<{
devId: number;
typeAndVerId: number;
}>();
const data = inject("dynamic") as DeviceInfo;
const deviceInfo = ref<DeviceInfo>(inject("dynamic") as DeviceInfo);
const loading = ref<boolean>(false);
const loadDevOnline = () => {
loading.value = true;
checkDevOnline(prop.devId)
.then(({ data }) => {
let resultCode = data.resultCode;
let resultState = data.resultState;
if ("2" === resultState) {
if (resultCode === "401") {
deviceInfo.value.devOnline = "离线";
} else {
deviceInfo.value.devOnline = "在线";
}
} else {
deviceInfo.value.devOnline = "离线";
}
})
.finally(() => {
loading.value = false;
});
};
</script>
<style scoped></style>

@ -1,10 +1,12 @@
<template>
<div class="app-container">
<div class="any-table">
<el-table :data="tableData" v-loading="loading">
<el-table :data="tableData" v-loading="loading" max-height="500">
<el-table-column label="任务编号" prop="operTaskId" align="center">
<template #default="scope">
<el-button type="primary" link>{{ scope.row.operTaskId }}</el-button>
<el-button type="primary" link>{{
scope.row.operTaskId
}}</el-button>
</template>
</el-table-column>
<el-table-column label="AD编号" prop="devAdNo" align="center" />

@ -358,7 +358,7 @@
>SOAP包日志</el-dropdown-item
>
<el-dropdown-item divided @click="skipDevTypeVerLog"
>软件版本对外接口调用信息</el-dropdown-item
>软件版本对外接口调用信息</el-dropdown-item
>
</el-scrollbar>
</el-dropdown-menu>
@ -432,12 +432,10 @@ const unbindingLogicId = () => {
};
//
const skipDevOrder = () => {
let devOui = remote.value.devVendorOui;
let devSno = remote.value.devSno;
let pppoeAccount = remote.value.devPppoe;
let devAdNo = remote.value.devAdNo;
router.push({
path: `/resources/remote-info/order/${remote.value.devId}`,
query: { devOui, devSno, pppoeAccount },
query: { devAdNo },
});
};
const skipDevTask2 = () => {

@ -1,7 +1,7 @@
<!-- 部门树 -->
<template>
<el-card shadow="never">
<el-input v-model="deptName" placeholder="部门名称" clearable>
<el-input v-model="deptName" style="padding: 10px 10px 0 10px" placeholder="部门名称" clearable>
<template #prefix>
<i-ep-search />
</template>

Loading…
Cancel
Save