parent
19668bc2d6
commit
5500611fba
@ -0,0 +1,19 @@ |
||||
import { AxiosPromise } from "axios"; |
||||
import { FTTRInfoVO, ServiceCompareVO } from "@/api/operate-result-args/types"; |
||||
import request from "@/utils/request"; |
||||
|
||||
export function getServiceCompareData( |
||||
devId?: number, |
||||
serviceName?: string |
||||
): AxiosPromise<ServiceCompareVO[]> { |
||||
return request({ |
||||
url: `/api/operate-result-args/v1/device-service-parameter/${devId}/${serviceName}`, |
||||
method: "GET", |
||||
}); |
||||
} |
||||
export function fttrPrimaryGateway(devId?: number): AxiosPromise<FTTRInfoVO[]> { |
||||
return request({ |
||||
url: `/api/operate-result-args/v1/fttr-primary-gateway/${devId}`, |
||||
method: "GET", |
||||
}); |
||||
} |
@ -0,0 +1,18 @@ |
||||
import { ParamInfo } from "@/api/operate-log/types"; |
||||
|
||||
export interface ServiceParamInfo { |
||||
parameterName?: string; |
||||
actualValue?: string; |
||||
remarks?: string; |
||||
expectationValue?: string; |
||||
} |
||||
export interface ServiceCompareVO { |
||||
title?: string; |
||||
list?: ServiceParamInfo[]; |
||||
} |
||||
|
||||
export interface FTTRInfoVO { |
||||
title?: string; |
||||
|
||||
list?: ParamInfo[]; |
||||
} |
@ -0,0 +1,82 @@ |
||||
<template> |
||||
<el-descriptions :column="3" border> |
||||
<el-descriptions-item |
||||
label="业务名称" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ service.servName }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="业务版本" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ service.servVerName }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="业务显示名称" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ service.servDisplayName }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="业务状态" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ service.servMapStatus }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="业务描述" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ service.servDesc }} |
||||
</el-descriptions-item> |
||||
<el-descriptions-item |
||||
label="操作时间" |
||||
label-align="left" |
||||
align="center" |
||||
label-class-name="my-label" |
||||
class-name="my-content" |
||||
width="150px" |
||||
> |
||||
{{ service.servStatusTime }} |
||||
</el-descriptions-item> |
||||
</el-descriptions> |
||||
<service-parameter |
||||
:dev-id="prop.devId" |
||||
:service-name="service.servName" |
||||
:service-id="service.servId" |
||||
:service-ver-name="service.servVerName" |
||||
/> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { DeviceBusinessVO } from "@/api/service/types"; |
||||
import ServiceParameter from "@/views/family/operate/remote-operation/components/ServiceParameter.vue"; |
||||
|
||||
const prop = defineProps<{ |
||||
service: DeviceBusinessVO; |
||||
devId: number; |
||||
}>(); |
||||
</script> |
||||
|
||||
<style scoped></style> |
@ -0,0 +1,109 @@ |
||||
<template> |
||||
<el-dropdown split-button placement="right"> |
||||
远程操作列表 |
||||
<template #dropdown> |
||||
<el-dropdown-menu> |
||||
<el-scrollbar height="300"> |
||||
<div v-hasPerm="['family:remote:parameter:tree']"> |
||||
<el-dropdown-item>设备参数树浏览</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:ping:test']"> |
||||
<el-dropdown-item divided>设备Ping测试 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:profiles:upload']"> |
||||
<el-dropdown-item divided>设备配置文件上传 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:terminal:log_file']"> |
||||
<el-dropdown-item divided>获取设备终端日志文件 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:dev:change']"> |
||||
<el-dropdown-item divided>设备更换</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:dev:reload']"> |
||||
<el-dropdown-item divided>设备远程重启 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:profiles:issued']"> |
||||
<el-dropdown-item divided>设备厂商配置文件下发 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:full_service:issued']"> |
||||
<el-dropdown-item divided>设备全业务配置下发 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:soft_ver:upgrade']"> |
||||
<el-dropdown-item divided>设备软件版本升级 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:loop_back:diagnosis']"> |
||||
<el-dropdown-item divided>ATMF5Loopback诊断 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:dsl_loop:diagnosis']"> |
||||
<el-dropdown-item divided>DslLoop诊断</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:dev:monitor']"> |
||||
<el-dropdown-item divided>设备监控</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:ida:diagnosis']"> |
||||
<el-dropdown-item divided>IAD诊断</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:service_port:binding']"> |
||||
<el-dropdown-item divided>修改业务端口绑定 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:terminal:registration']"> |
||||
<el-dropdown-item divided>开启终端注册页面 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:speed:operation']"> |
||||
<el-dropdown-item divided>测速操作</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:reset:graphs']"> |
||||
<el-dropdown-item divided>终端重置数图 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:iptv:multicast']"> |
||||
<el-dropdown-item divided>重置IPTV组播 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:node:customize']"> |
||||
<el-dropdown-item divided>自定义节点定制 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:broadband_1_4:itv_2_3']"> |
||||
<el-dropdown-item divided>宽带1、4口;ITV 2、3口 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:broadband_3_4:itv_1_2']"> |
||||
<el-dropdown-item divided>宽带3、4口;ITV 1、2口 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:broadband_1:itv_2_3_4']"> |
||||
<el-dropdown-item divided>宽带1口;ITV 2、3、4口 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:broadband_1_3_4:itv_2']"> |
||||
<el-dropdown-item divided>宽带1、3、4口;ITV 2口 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:broadband_1_2_3_4']"> |
||||
<el-dropdown-item divided>宽带1、 2、3、4口 </el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:broadband_1_3:itv_2']"> |
||||
<el-dropdown-item divided |
||||
>三合一终端宽带1、3口;ITV 2口 |
||||
</el-dropdown-item> |
||||
</div> |
||||
<div v-hasPerm="['family:remote:info:update']"> |
||||
<el-dropdown-item divided>通用信息修改 </el-dropdown-item> |
||||
</div> |
||||
</el-scrollbar> |
||||
</el-dropdown-menu> |
||||
</template> |
||||
</el-dropdown> |
||||
</template> |
||||
|
||||
<script setup lang="ts"></script> |
||||
|
||||
<style scoped> |
||||
.button-container { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
border-left: 1px solid #ebeef5; |
||||
} |
||||
.button-wrapper { |
||||
width: calc(100% / 9); /* 假设每行有6个按钮,可以根据需要调整 */ |
||||
padding: 10px; |
||||
box-sizing: border-box; |
||||
} |
||||
.button-wrapper { |
||||
border-bottom: 1px solid #ebeef5; |
||||
} |
||||
</style> |
@ -0,0 +1,108 @@ |
||||
<template> |
||||
<div class="mt-4"> |
||||
<el-card shadow="never"> |
||||
<template #header> |
||||
<div class="head-parent-right"> |
||||
<el-button |
||||
type="primary" |
||||
@click="compareParameter" |
||||
plain |
||||
:disabled="disableFlag" |
||||
>业务参数对照</el-button |
||||
> |
||||
<el-button type="primary" plain>重置业务</el-button> |
||||
</div> |
||||
</template> |
||||
<el-empty |
||||
description="暂无数据" |
||||
v-loading="loading" |
||||
v-if="vo.length === 0" |
||||
/> |
||||
<el-card |
||||
class="any-table" |
||||
shadow="never" |
||||
v-for="(item, index) in vo" |
||||
:key="index" |
||||
v-loading="loading" |
||||
> |
||||
<template #header> |
||||
<span style="font-size: 14px; font-weight: 700">{{ |
||||
item.title |
||||
}}</span> |
||||
</template> |
||||
<el-table :data="item.list"> |
||||
<el-table-column |
||||
label="参数名称" |
||||
align="left" |
||||
width="200" |
||||
prop="parameterName" |
||||
/> |
||||
<el-table-column |
||||
label="期望值" |
||||
align="left" |
||||
width="300" |
||||
prop="expectationValue" |
||||
/> |
||||
<el-table-column |
||||
label="实际值" |
||||
align="left" |
||||
width="300" |
||||
prop="actualValue" |
||||
/> |
||||
<el-table-column label="备注" align="left" prop="remarks" /> |
||||
</el-table> |
||||
</el-card> |
||||
</el-card> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
import { getServiceCompareData } from "@/api/operate-result-args"; |
||||
import { ServiceCompareVO } from "@/api/operate-result-args/types"; |
||||
import { serviceCompareParameter } from "@/api/remote"; |
||||
const prop = defineProps<{ |
||||
devId: number; |
||||
serviceName?: string; |
||||
serviceVerName?: string; |
||||
serviceId?: number; |
||||
}>(); |
||||
const vo = ref<ServiceCompareVO[]>([]); |
||||
const loading = ref<boolean>(false); |
||||
const loadData = () => { |
||||
loading.value = true; |
||||
getServiceCompareData(prop.devId, prop.serviceName) |
||||
.then(({ data }) => { |
||||
vo.value = data; |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}; |
||||
const disableFlag = computed(() => { |
||||
return loading.value; |
||||
}); |
||||
const compareParameter = () => { |
||||
loading.value = true; |
||||
serviceCompareParameter( |
||||
prop.devId, |
||||
prop.serviceId, |
||||
prop.serviceVerName, |
||||
prop.serviceName |
||||
) |
||||
.then(({ data }) => { |
||||
vo.value = data; |
||||
}) |
||||
.finally(() => { |
||||
loading.value = false; |
||||
}); |
||||
}; |
||||
onMounted(() => { |
||||
loadData(); |
||||
}); |
||||
</script> |
||||
|
||||
<style scoped> |
||||
:deep(.el-card__body) { |
||||
padding: 0 0 0 0; |
||||
} |
||||
</style> |
Loading…
Reference in new issue