parent
12f8a46157
commit
98ed3168be
@ -0,0 +1,87 @@ |
||||
<template> |
||||
<div> |
||||
<el-descriptions :column="1" border v-loading="loading"> |
||||
<el-descriptions-item |
||||
label="其他操作" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label2" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
<div class="flex justify-center" v-if="prop.devId != 0"> |
||||
<el-button type="primary" @click="openPing" link>PING测试</el-button> |
||||
<el-button type="primary" @click="reboot" link>远程重启</el-button> |
||||
<el-button type="primary" @click="factoryReset" link |
||||
>恢复出厂配置</el-button |
||||
> |
||||
<el-button type="primary" @click="skipSoapPackageLog" link |
||||
>获取TR069码流分析日志</el-button |
||||
> |
||||
</div> |
||||
<div v-else>请先选择设备</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { confirm } from "@/utils/confirm"; |
||||
import { remoteFactoryReset, remoteReboot } from "@/api/remote"; |
||||
|
||||
const prop = defineProps<{ |
||||
devId: number; |
||||
}>(); |
||||
const router = useRouter(); |
||||
const loading = ref<boolean>(false); |
||||
const openPing = () => { |
||||
router.push({ |
||||
path: `/resources/remote/ping/${prop.devId}`, |
||||
}); |
||||
}; |
||||
const reboot = () => { |
||||
confirm("确认重启设备吗", () => { |
||||
loading.value = true; |
||||
remoteReboot(prop.devId) |
||||
.then(() => { |
||||
ElMessage({ |
||||
message: "操作成功", |
||||
duration: 1000, |
||||
type: "success", |
||||
}); |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}); |
||||
}; |
||||
const factoryReset = () => { |
||||
confirm("确认恢复出厂设置吗", () => { |
||||
loading.value = true; |
||||
remoteFactoryReset(prop.devId) |
||||
.then(() => { |
||||
ElMessage({ |
||||
message: "操作成功", |
||||
duration: 1000, |
||||
type: "success", |
||||
}); |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}); |
||||
}; |
||||
const skipSoapPackageLog = () => { |
||||
router.push({ |
||||
path: `/resources/remote-info/soap-package-log/${prop.devId}`, |
||||
}); |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
:deep(.my-label2) { |
||||
width: 0 !important; |
||||
display: none !important; |
||||
background: var(--el-color-white) !important; |
||||
} |
||||
</style> |
@ -0,0 +1,127 @@ |
||||
<template> |
||||
<div> |
||||
<div class="flex justify-end"> |
||||
<el-button |
||||
type="primary" |
||||
:disabled="prop.devId === 0" |
||||
@click="startDiagnosis" |
||||
>开始诊断</el-button |
||||
> |
||||
</div> |
||||
<el-scrollbar height="350"> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="4" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>IPTV是否正常使用</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="PVC/VLAN配置" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ iptv["PVC"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="连接类型" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ iptv["ConnectType"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="连接状态" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
>{{ iptv["ConnectStatus"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="LAN口" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ iptv["BIND_LAN"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="iptv['state'] != '2' && iptv['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ iptv["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
</el-scrollbar> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { Grid } from "@element-plus/icons-vue"; |
||||
import { faultServiceStatus, pingDNSResult } from "@/api/fault"; |
||||
|
||||
const prop = defineProps<{ |
||||
devId: number; |
||||
}>(); |
||||
const iptv = ref<any>({}); |
||||
const loading = ref<boolean>(false); |
||||
|
||||
const getServiceDetailInfo = (remote: string) => { |
||||
loading.value = true; |
||||
faultServiceStatus(prop.devId, remote) |
||||
.then(({ data }) => { |
||||
switch (remote) { |
||||
case "IptvQueryDSL": |
||||
iptv.value = data; |
||||
break; |
||||
} |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}; |
||||
const startDiagnosis = async () => { |
||||
await getServiceDetailInfo("IptvQueryDSL"); |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
:deep(.my-content) { |
||||
height: 32px; |
||||
} |
||||
|
||||
:deep(.my-label-none) { |
||||
display: none; |
||||
} |
||||
|
||||
:deep( |
||||
.el-descriptions__body |
||||
.el-descriptions__table.is-bordered |
||||
.el-descriptions__cell |
||||
) { |
||||
padding: 8px 0; |
||||
} |
||||
</style> |
@ -0,0 +1,279 @@ |
||||
<template> |
||||
<div> |
||||
<div class="flex justify-end"> |
||||
<el-button |
||||
type="primary" |
||||
:disabled="prop.devId === 0" |
||||
@click="startDiagnosis" |
||||
>开始诊断</el-button |
||||
> |
||||
</div> |
||||
<el-scrollbar height="350"> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="8" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>链路信息</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="链路状态" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["Status"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="线路协议" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["ModulationType"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="上行速率(Kbps)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
>{{ link["UpstreamMaxRate"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="下行速率(Kbps)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["DownstreamMaxRate"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="上行衰减(0.1dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["UpstreamAttenuation"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="下行衰减(0.dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["DownstreamAttenuation"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="上行性噪比(0.dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["UpstreamNoiseMargin"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="下行性噪比(0.dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["DownstreamNoiseMargin"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="link['state'] != '2' && link['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ link["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<el-descriptions |
||||
v-loading="loadingPing" |
||||
direction="vertical" |
||||
border |
||||
:column="7" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>PING一个特定IP地址</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="目的IP" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["IP"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="包大小" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["PackSize"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="次数" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
>{{ pingDNS["Number"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="PING结果" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
<span v-if="pingDNS['SuccessCount'] != undefined"> |
||||
成功次数 {{ pingDNS["SuccessCount"] }},失败次数 |
||||
{{ pingDNS["FailureCount"] }} |
||||
</span> |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="最小响应时间" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["MinimumResponseTime"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="最大响应时间" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["MaximumResponseTime"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="平均响应时间" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["AverageResponseTime"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="pingDNS['state'] != '2' && pingDNS['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ pingDNS["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
</el-scrollbar> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { Grid } from "@element-plus/icons-vue"; |
||||
import { faultServiceStatus, pingDNSResult } from "@/api/fault"; |
||||
|
||||
const prop = defineProps<{ |
||||
devId: number; |
||||
}>(); |
||||
const link = ref<any>({}); |
||||
const pingDNS = ref<any>({}); |
||||
const loading = ref<boolean>(false); |
||||
const loadingPing = ref<boolean>(false); |
||||
|
||||
const getServiceDetailInfo = (remote: string) => { |
||||
loading.value = true; |
||||
faultServiceStatus(prop.devId, remote) |
||||
.then(({ data }) => { |
||||
switch (remote) { |
||||
case "LinkInfoQueryDSL": |
||||
link.value = data; |
||||
break; |
||||
} |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}; |
||||
const getPingResult = (remote: string) => { |
||||
loadingPing.value = true; |
||||
pingDNSResult(prop.devId, remote) |
||||
.then(({ data }) => { |
||||
pingDNS.value = data; |
||||
}) |
||||
.finally(() => { |
||||
loadingPing.value = false; |
||||
}); |
||||
}; |
||||
const startDiagnosis = async () => { |
||||
await getServiceDetailInfo("LinkInfoQueryDSL"); |
||||
await getPingResult("ipping"); |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
:deep(.my-content) { |
||||
height: 32px; |
||||
} |
||||
|
||||
:deep(.my-label-none) { |
||||
display: none; |
||||
} |
||||
|
||||
:deep( |
||||
.el-descriptions__body |
||||
.el-descriptions__table.is-bordered |
||||
.el-descriptions__cell |
||||
) { |
||||
padding: 8px 0; |
||||
} |
||||
</style> |
@ -0,0 +1,543 @@ |
||||
<template> |
||||
<div> |
||||
<div class="flex justify-end"> |
||||
<el-button |
||||
type="primary" |
||||
:disabled="prop.devId === 0" |
||||
@click="startDiagnosis" |
||||
>开始诊断</el-button |
||||
> |
||||
</div> |
||||
<el-scrollbar height="350"> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="1" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>无线SSID检查</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="是否开启无线SSID" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ getEnableSSID(wlan["Status"]) }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="wlan['state'] != '2' && wlan['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ wlan["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="8" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>链路信息</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="链路状态" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["Status"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="线路协议" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["ModulationType"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="上行速率(Kbps)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
>{{ link["UpstreamMaxRate"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="下行速率(Kbps)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["DownstreamMaxRate"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="上行衰减(0.1dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["UpstreamAttenuation"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="下行衰减(0.dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["DownstreamAttenuation"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="上行性噪比(0.dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["UpstreamNoiseMargin"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="下行性噪比(0.dB)" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ link["DownstreamNoiseMargin"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="link['state'] != '2' && link['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ link["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="4" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>业务参数检查</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="PVC/VLAN配置" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ broadband["PVC"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="宽带账号" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ broadband["Username"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="NAT" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
>{{ broadband["NAT"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="DNS" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ broadband["DNSServer"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="broadband['state'] != '2' && broadband['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ broadband["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="2" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>拨号检查</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="拨号方式" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ broadband["ConnectType"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="宽带账号" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ broadband["ConnectStatus"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="broadband['state'] != '2' && broadband['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ broadband["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<el-descriptions |
||||
v-loading="loadingPing" |
||||
direction="vertical" |
||||
border |
||||
:column="7" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>PING一个DNS的IP地址</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="目的IP" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["IP"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="包大小" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["PackSize"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="次数" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
>{{ pingDNS["Number"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="PING结果" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
<span v-if="pingDNS['SuccessCount'] != undefined"> |
||||
成功次数 {{ pingDNS["SuccessCount"] }},失败次数 |
||||
{{ pingDNS["FailureCount"] }} |
||||
</span> |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="最小响应时间" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["MinimumResponseTime"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="最大响应时间" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["MaximumResponseTime"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="平均响应时间" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ pingDNS["AverageResponseTime"] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="pingDNS['state'] != '2' && pingDNS['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ pingDNS["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<el-descriptions |
||||
v-loading="loading" |
||||
direction="vertical" |
||||
border |
||||
:column="4" |
||||
> |
||||
<template #title> |
||||
<div style="display: flex; align-items: center; margin-top: 10px"> |
||||
<el-icon size="15"> <Grid /> </el-icon> <span |
||||
style="font-weight: 500; font-size: 14px; line-height: 16px" |
||||
>无线SSID连接检查</span |
||||
> |
||||
</div> |
||||
</template> |
||||
<el-descriptions-item |
||||
label="SSID1" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ getSSIDStatus[0] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="SSID2" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ getSSIDStatus[1] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="SSID3" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ getSSIDStatus[2] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="SSID4" |
||||
label-align="center" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ getSSIDStatus[3] }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label-align="center" |
||||
align="left" |
||||
label-class-name="my-label-none" |
||||
class-name="my-content" |
||||
width="150px" |
||||
v-if="wlan['state'] != '2' && wlan['state'] != undefined" |
||||
> |
||||
<div style="color: red; padding: 0 8px; font-size: 10px"> |
||||
错误信息:{{ wlan["result"] }} |
||||
</div> |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
</el-scrollbar> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { Grid } from "@element-plus/icons-vue"; |
||||
import { faultServiceStatus, pingDNSResult } from "@/api/fault"; |
||||
|
||||
const prop = defineProps<{ |
||||
devId: number; |
||||
}>(); |
||||
const link = ref<any>({}); |
||||
const broadband = ref<any>({}); |
||||
const pingDNS = ref<any>({}); |
||||
const wlan = ref<any>({}); |
||||
const loading = ref<boolean>(false); |
||||
const loadingPing = ref<boolean>(false); |
||||
|
||||
const getEnableSSID = (str?: string) => { |
||||
if (str) { |
||||
let tempStatus: string[] = str.split(":"); |
||||
let flag = false; |
||||
for (let i = 0; i < tempStatus.length; i++) { |
||||
if (tempStatus[i] === "1") { |
||||
flag = true; |
||||
} |
||||
} |
||||
if (flag) { |
||||
return "无线SSID已开启"; |
||||
} else { |
||||
return "无线SSID均未开启,请先开启"; |
||||
} |
||||
} |
||||
}; |
||||
// eslint-disable-next-line vue/return-in-computed-property |
||||
const getSSIDStatus = computed(() => { |
||||
let ssid: string = wlan.value["SSID"]; |
||||
let status: string = wlan.value["Status"]; |
||||
let arr: string[] = ["", "", "", ""]; |
||||
if (ssid != undefined && status != undefined) { |
||||
let tempSSID: string[] = ssid.split(":"); |
||||
let tempStatus: string[] = status.split(":"); |
||||
for (let i = 0; i < tempStatus.length; i++) { |
||||
if (tempStatus[i] === "1") { |
||||
tempStatus[i] = "已连接"; |
||||
} else { |
||||
tempStatus[i] = "未连接"; |
||||
} |
||||
} |
||||
for (let j = 0; j < tempSSID.length; j++) { |
||||
arr[j] = `${tempSSID[j]}(${tempStatus[j]})`; |
||||
} |
||||
} |
||||
return arr; |
||||
}); |
||||
const getServiceDetailInfo = (remote: string) => { |
||||
loading.value = true; |
||||
faultServiceStatus(prop.devId, remote) |
||||
.then(({ data }) => { |
||||
switch (remote) { |
||||
case "LinkInfoQueryDSL": |
||||
link.value = data; |
||||
break; |
||||
case "DigitalhomeQueryDSL": |
||||
broadband.value = data; |
||||
break; |
||||
case "WLanInfoQuery": |
||||
wlan.value = data; |
||||
break; |
||||
} |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}; |
||||
const getPingResult = (remote: string) => { |
||||
loadingPing.value = true; |
||||
pingDNSResult(prop.devId, remote) |
||||
.then(({ data }) => { |
||||
pingDNS.value = data; |
||||
}) |
||||
.finally(() => { |
||||
loadingPing.value = false; |
||||
}); |
||||
}; |
||||
const startDiagnosis = async () => { |
||||
await getServiceDetailInfo("WLanInfoQuery"); |
||||
await getServiceDetailInfo("LinkInfoQueryDSL"); |
||||
await getServiceDetailInfo("DigitalhomeQueryDSL"); |
||||
await getPingResult("ipping"); |
||||
}; |
||||
</script> |
||||
|
||||
<style scoped> |
||||
:deep(.my-content) { |
||||
height: 32px; |
||||
} |
||||
|
||||
:deep(.my-label-none) { |
||||
display: none; |
||||
} |
||||
|
||||
:deep( |
||||
.el-descriptions__body |
||||
.el-descriptions__table.is-bordered |
||||
.el-descriptions__cell |
||||
) { |
||||
padding: 8px 0; |
||||
} |
||||
</style> |
Loading…
Reference in new issue