feat: 远程操作/样式更换

master
李小林 8 months ago
parent 832bf3bf66
commit f1f6d2415c
  1. 12
      src/api/remote/index.ts
  2. 13
      src/router/index.ts
  3. 35
      src/views/family/operate/remote-operation/components/RemoteOperateInfo.vue
  4. 10
      src/views/family/operate/remote-operation/components/RemoteOperateList.vue
  5. 20
      src/views/family/operate/remote-operation/components/UpgradeSoftVer.vue
  6. 111
      src/views/family/operate/remote-operation/components/VendorProfiles.vue
  7. 42
      src/views/resources/customer/components/AddCustom.vue
  8. 19
      src/views/resources/device-type/components/DeviceTypeToVer.vue
  9. 47
      src/views/resources/device-type/components/DeviceTypeVersionEdit.vue
  10. 20
      src/views/resources/equipment/components/AddEquipment.vue
  11. 45
      src/views/resources/equipment/components/EquipmentEdit.vue
  12. 25
      src/views/resources/operate-type/components/AddOperateType.vue
  13. 36
      src/views/resources/service/components/BusinessForm.vue
  14. 6
      src/views/resources/tr069/components/BindingDevType.vue
  15. 6
      src/views/resources/tr069/components/BindingService.vue
  16. 14
      src/views/resources/tr069/components/Tr069DevTypeSoftVerList.vue
  17. 6
      src/views/resources/tr069/components/Tr069Service.vue
  18. 14
      src/views/resources/tr069/components/Tr069Tree.vue

@ -152,3 +152,15 @@ export function remoteOpenRegister(devId: number, fileId?: number) {
method: "GET",
});
}
export function setAccountPassword(devId?: number) {
return request({
url: `/api/equipment/v1/remote/account-password/${devId}`,
method: "GET",
});
}
export function remoteVendorProfile(devId: number, fileId?: number) {
return request({
url: `/api/equipment/v1/remote/vendor-profile/${devId}/${fileId}`,
method: "GET",
});
}

@ -371,6 +371,19 @@ export const constantRoutes: RouteRecordRaw[] = [
title: "软件版本升级",
},
},
{
path: "/resources/remote/vendor-profiles/:devId/:typeAndVerId",
name: "VendorProfiles",
component: () =>
import(
"@/views/family/operate/remote-operation/components/VendorProfiles.vue"
),
meta: {
hidden: true,
keepAlive: true,
title: "配置文件下发",
},
},
],
},
];

@ -103,7 +103,14 @@
class-name="my-content"
width="150px"
>
{{ remote.devRemark1 }}
<el-button
v-loading="pwdLoading"
type="primary"
link
@click="setAccountPwd"
>
{{ remote.devRemark1 }}</el-button
>
</el-descriptions-item>
<el-descriptions-item
label="逻辑ID"
@ -206,7 +213,11 @@
width="150px"
>
<div class="flex justify-center">
<remote-operate-list :pppoe="remote.devPppoe" :dev-id="devId" />
<remote-operate-list
:pppoe="remote.devPppoe"
:dev-id="devId"
:type-and-ver-id="typeAndVerId"
/>
<el-divider direction="vertical" />
<el-button type="primary" link @click="skipDevOrder"
>设备工单</el-button
@ -252,10 +263,15 @@
<script setup lang="ts">
import { DeviceInfo, RemoteDevInfoVO, UnBindingForm } from "@/api/remote/types";
import { remoteDevInfo, remoteUnbindingLogicId } from "@/api/remote";
import {
remoteDevInfo,
remoteUnbindingLogicId,
setAccountPassword,
} from "@/api/remote";
import { Grid, InfoFilled } from "@element-plus/icons-vue";
import OperateTabs from "@/views/family/operate/remote-operation/components/OperateTabs.vue";
import RemoteOperateList from "@/views/family/operate/remote-operation/components/RemoteOperateList.vue";
import { confirm } from "@/utils/confirm";
const route = useRoute();
const router = useRouter();
@ -265,6 +281,7 @@ let typeAndVerId: number = parseInt(<string>route.params.typeAndVerId);
const remote = ref<RemoteDevInfoVO>({});
const unbindingForm = ref<UnBindingForm>({});
const loading = ref<boolean>(false);
const pwdLoading = ref<boolean>(false);
const dynamic = ref<DeviceInfo>({});
provide("dynamic", dynamic);
const getData = () => {
@ -309,6 +326,18 @@ const unbindingLogicId = () => {
loading.value = false;
});
};
const setAccountPwd = () => {
confirm("确定执行设置电信账号密码操作吗", () => {
pwdLoading.value = true;
setAccountPassword(remote.value.devId)
.then(() => {
getData();
})
.finally(() => {
pwdLoading.value = false;
});
});
};
//
const skipDevOrder = () => {
let devAdNo = remote.value.devAdNo;

@ -36,7 +36,9 @@
</el-dropdown-item>
</div>
<div v-hasPerm="['family:remote:profiles:issued']">
<el-dropdown-item divided>设备厂商配置文件下发 </el-dropdown-item>
<el-dropdown-item @click="vendorProfile" divided
>设备厂商配置文件下发
</el-dropdown-item>
</div>
<div v-hasPerm="['family:remote:full_service:issued']">
<el-dropdown-item divided>设备全业务配置下发 </el-dropdown-item>
@ -126,6 +128,7 @@ const router = useRouter();
const prop = defineProps<{
devId: number;
pppoe?: string;
typeAndVerId: number;
}>();
const loading = ref<boolean>(false);
const openPing = () => {
@ -213,6 +216,11 @@ const upgradeSoftVer = () => {
path: `/resources/remote/upgrade-soft-ver/${prop.devId}`,
});
};
const vendorProfile = () => {
router.push({
path: `/resources/remote/vendor-profiles/${prop.devId}/${prop.typeAndVerId}`,
});
};
const registration = () => {
confirm("确认开启终端注册页面吗", () => {
loading.value = true;

@ -9,6 +9,15 @@
>设备软件版本升级--软件版本列表</span
>
</div>
<div>
<el-button
type="primary"
:icon="Position"
:disabled="loading"
@click="submit"
>执行</el-button
>
</div>
</div>
</template>
<div class="any-table">
@ -27,7 +36,7 @@
</template>
</el-table-column>
<el-table-column
width="200"
width="300"
label="版本名称"
align="center"
prop="softVer"
@ -39,19 +48,12 @@
/>
</el-table>
</div>
<template #footer>
<div class="flex justify-end">
<el-button type="primary" :disabled="loading" @click="submit"
>确定</el-button
>
</div>
</template>
</el-card>
</div>
</template>
<script setup lang="ts">
import { Grid } from "@element-plus/icons-vue";
import { Grid, Position } from "@element-plus/icons-vue";
import { SoftVersionUpgradeVO } from "@/api/device-type-ver/types";
import { ElTable } from "element-plus";
import { upgradeSoftVerTable } from "@/api/device-type-ver";

@ -0,0 +1,111 @@
<template>
<div class="app-container">
<el-card shadow="never">
<template #header>
<div class="flex justify-between">
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>厂商配置文件列表</span
>
</div>
<div>
<el-button type="primary" :icon="Position" @click="submit"
>执行</el-button
>
</div>
</div>
</template>
<div class="any-table">
<el-table
:data="tableData"
v-loading="loading"
highlight-current-row
@row-click="handleCurrentChange"
>
<el-table-column width="55">
<template #default="scope">
<el-radio :label="scope.row.fileId" v-model="fileId">
{{ "" }}
</el-radio>
</template>
</el-table-column>
<el-table-column
label="厂商配置文件"
prop="fileName"
align="center"
/>
<el-table-column
label="文件创建时间"
prop="fileCreateTime"
align="center"
/>
<el-table-column
label="文件描述内容"
prop="fileDesc"
align="center"
/>
</el-table>
</div>
</el-card>
</div>
</template>
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { FileListVO } from "@/api/file-list/types";
import { listVendorProfile } from "@/api/device-type-ver";
import { ElTable } from "element-plus";
import { SoftVersionUpgradeVO } from "@/api/device-type-ver/types";
import { remoteVendorProfile } from "@/api/remote";
const route = useRoute();
let devId: number = parseInt(<string>route.params.devId);
let typeAndVerId: number = parseInt(<string>route.params.typeAndVerId);
const tableData = ref<FileListVO[]>([]);
const loading = ref<boolean>(false);
const fileId = ref<number>();
const handleCurrentChange = (val: SoftVersionUpgradeVO) => {
fileId.value = val.fileId;
};
const getData = () => {
loading.value = true;
listVendorProfile(typeAndVerId)
.then(({ data }) => {
tableData.value = data;
})
.finally(() => {
loading.value = false;
});
};
const submit = () => {
if (fileId.value === undefined) {
ElMessage({
message: "请选择一个设备厂商文件",
duration: 1000,
type: "error",
});
return;
}
loading.value = true;
remoteVendorProfile(devId, fileId.value)
.then(() => {
ElMessage({
message: "操作成功",
type: "success",
duration: 1000,
});
})
.finally(() => {
loading.value = false;
});
};
onMounted(() => {
getData();
});
</script>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -3,16 +3,13 @@
<div v-show="active === 1">
<el-card shadow="never" v-loading="loading">
<template #header>
<div
style="
font-weight: 700;
font-size: 14px;
line-height: 32px;
display: flex;
justify-content: space-between;
"
>
<div>新增客户信息</div>
<div style="display: flex; justify-content: space-between">
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>新增客户信息</span
>
</div>
<div v-if="formData.custId === undefined">
<el-button
type="primary"
@ -192,16 +189,13 @@
</el-card>
<el-card shadow="never" style="margin-top: 10px">
<template #header>
<div
style="
font-weight: 700;
font-size: 14px;
line-height: 32px;
display: flex;
justify-content: space-between;
"
>
<div>客户绑定的设备信息列表</div>
<div style="display: flex; justify-content: space-between">
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户绑定的设备信息列表</span
>
</div>
<div>
<el-button
type="primary"
@ -423,7 +417,13 @@
</template>
<script setup lang="ts">
import { InfoFilled, Position, Refresh, Search } from "@element-plus/icons-vue";
import {
Grid,
InfoFilled,
Position,
Refresh,
Search,
} from "@element-plus/icons-vue";
import { CustomForm } from "@/api/customer/types";
import { ElTable, FormInstance, FormRules } from "element-plus";
import { getDomainOptions } from "@/api/domain";

@ -2,7 +2,15 @@
<div class="app-container">
<el-card shadow="never">
<div v-loading="voLoading">
<el-descriptions title="设备类型信息" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型信息</span
>
</div>
</template>
<el-descriptions-item
label="设备供应商"
label-align="left"
@ -57,8 +65,11 @@
</div>
<div class="mt-4">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700; line-height: 32px; font-size: 14px">
设备类型对应的设备软件版本列表
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型对应的设备软件版本列表</span
>
</div>
<div>
<el-button type="primary" @click="openAddTypeVer">
@ -242,7 +253,7 @@ import {
import { findDevTypeById } from "@/api/device-type";
import { downloadFileApi } from "@/api/file";
import { downloadHook } from "@/utils";
import { DocumentCopy, InfoFilled, View } from "@element-plus/icons-vue";
import { DocumentCopy, Grid, InfoFilled, View } from "@element-plus/icons-vue";
import AddDevTypeVersion from "@/views/resources/device-type/components/AddDevTypeVersion.vue";
import AddFile from "@/views/resources/device-type/components/AddFile.vue";

@ -8,7 +8,15 @@
:rules="rules"
v-loading="loading"
>
<el-descriptions title="设备类型软件版本信息" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型软件版本信息</span
>
</div>
</template>
<template #extra>
<el-button @click="submitForm(typeVerFormRef)" type="primary"
><el-icon><EditPen /></el-icon></el-button
@ -210,7 +218,19 @@
ref="capabilityFormRef"
v-loading="loadingCapability"
>
<el-descriptions title="设备能力信息" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="
font-weight: 700;
font-size: 14px;
line-height: 16px;
"
>设备能力信息</span
>
</div>
</template>
<template #extra>
<el-button @click="submitCapabilityForm" type="primary"
><el-icon><EditPen /></el-icon></el-button
@ -422,8 +442,11 @@
</div>
<div class="mt-4">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700; line-height: 32px; font-size: 14px">
设备类型及设备软件版本支持的设备厂商配置文件列表
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型及设备软件版本支持的设备厂商配置文件列表</span
>
</div>
<div>
<el-button type="primary" @click="openVendorProfile"
@ -470,8 +493,11 @@
</div>
<div class="mt-4">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700; line-height: 32px; font-size: 14px">
已绑定系统管理域
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>已绑定系统管理域</span
>
</div>
<div>
<el-button type="primary" @click="openDomainTree"
@ -500,8 +526,11 @@
</div>
<div class="mt-4">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700; line-height: 32px; font-size: 14px">
设备类型及设备软件版本支持的业务信息列表
<div style="display: flex; align-items: center">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型及设备软件版本支持的业务信息列表</span
>
</div>
</div>
<div class="any-table mt-4">
@ -556,7 +585,7 @@ import {
pageService,
pageSysDomain,
} from "@/api/device-type-ver";
import { EditPen, InfoFilled } from "@element-plus/icons-vue";
import { EditPen, Grid, InfoFilled } from "@element-plus/icons-vue";
import { FormInstance, FormRules } from "element-plus";
import { editCapabilityForm, getCapabilityForm } from "@/api/type-ver-ext";
import { CapabilityForm } from "@/api/type-ver-ext/types";

@ -120,6 +120,14 @@
:rules="rules"
>
<el-descriptions title="新增设备信息" :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>新增设备信息</span
>
</div>
</template>
<el-descriptions-item
label="设备序列号"
label-align="left"
@ -229,7 +237,15 @@
<div v-show="active === 2">
<el-card shadow="never">
<el-form :model="fileForm" v-loading="loading">
<el-descriptions title="终端私有配置文件" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>终端私有配置文件</span
>
</div>
</template>
<el-descriptions-item
label="文件名称"
label-align="left"
@ -408,7 +424,7 @@ import {
PrivateProfile,
} from "@/api/resources-equipment/types";
import { getDomainOptions } from "@/api/domain";
import { Position, Search, UploadFilled } from "@element-plus/icons-vue";
import { Grid, Position, Search, UploadFilled } from "@element-plus/icons-vue";
import { uploadApi } from "@/api/file";
import {
addResourceEquipment,

@ -16,7 +16,15 @@
</template>
<el-scrollbar height="500">
<el-form :model="editForm" ref="editFormRef" :rules="rules">
<el-descriptions title="设备详细信息" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备详细信息</span
>
</div>
</template>
<el-descriptions-item
label="设备序列号"
label-align="left"
@ -207,12 +215,15 @@
</el-descriptions-item>
</el-descriptions>
</el-form>
<el-descriptions
title="设备类型信息"
style="margin-top: 10px"
:column="2"
border
>
<el-descriptions style="margin-top: 10px" :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型信息</span
>
</div>
</template>
<el-descriptions-item
label="设备供应商"
label-align="left"
@ -294,12 +305,15 @@
{{ type.softVer }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions
title="客户信息"
style="margin-top: 10px"
:column="2"
border
>
<el-descriptions style="margin-top: 10px" :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户信息</span
>
</div>
</template>
<template #extra>
<div v-if="customer.custId != undefined">
<el-popconfirm
@ -427,7 +441,7 @@
</template>
<script setup lang="ts">
import { InfoFilled, Position, Refresh } from "@element-plus/icons-vue";
import { Grid, InfoFilled, Position, Refresh } from "@element-plus/icons-vue";
import {
editResourceEquipment,
getResourceDeviceDetail,
@ -511,4 +525,7 @@ onMounted(() => {
:deep(.el-scrollbar__thumb) {
display: none;
}
:deep(.el-card__body) {
padding: 10px 5px;
}
</style>

@ -2,7 +2,13 @@
<div class="app-container">
<el-card shadow="never">
<template #header>
<div style="display: flex; justify-content: flex-end">
<div class="flex justify-between">
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>新增操作组件表单</span
>
</div>
<el-button type="primary" @click="submit">保存</el-button>
</div>
</template>
@ -12,7 +18,7 @@
ref="addOperateFormRef"
:rules="rules"
>
<el-descriptions title="新增操作组件表单" :column="2" border>
<el-descriptions :column="2" border>
<el-descriptions-item
label="操作名称"
label-align="left"
@ -68,7 +74,15 @@
style="margin-top: 10px"
:rules="fileRules"
>
<el-descriptions title="文件信息表单" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 10px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>文件信息表单</span
>
</div>
</template>
<el-descriptions-item
label="操作名称"
label-align="left"
@ -130,7 +144,7 @@
<script setup lang="ts">
import { DevOperateTypeForm, OperateFileForm } from "@/api/operate-type/types";
import { UploadFilled } from "@element-plus/icons-vue";
import { Grid, UploadFilled } from "@element-plus/icons-vue";
import { FormInstance, FormRules, UploadUserFile } from "element-plus";
import { addFileRecord, uploadApi } from "@/api/file";
import { AddOperateType } from "@/api/operate-type";
@ -230,4 +244,7 @@ const submit = async () => {
:deep(.my-label) {
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -1,6 +1,6 @@
<template>
<div class="app-container">
<div class="search-container">
<el-card shadow="never">
<div v-show="active === 0">
<el-form
:model="businessForm"
@ -9,7 +9,15 @@
v-loading="formLoading"
style="margin-bottom: 10px"
>
<el-descriptions title="业务信息表单" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>业务信息表单</span
>
</div>
</template>
<template #extra v-if="businessForm.servId != undefined">
<div style="margin-right: 10px">
<el-button
@ -80,7 +88,15 @@
v-if="servId === 0"
style="margin-top: 10px; margin-bottom: 10px"
>
<el-descriptions title="文件信息表单" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>文件信息表单</span
>
</div>
</template>
<el-descriptions-item
label="文件名称"
label-align="left"
@ -176,8 +192,11 @@
</div>
</div>
<div v-show="active === 1">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700">业务信息列表</div>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>业务信息列表</span
>
</div>
<div
style="
@ -205,13 +224,13 @@
<el-button type="primary" @click="submitBindingTr069">提交</el-button>
</div>
</div>
</div>
</el-card>
</div>
</template>
<script setup lang="ts">
import { BusinessFile, BusinessForm, Tr069Option } from "@/api/service/types";
import { Position, UploadFilled } from "@element-plus/icons-vue";
import { Grid, Position, UploadFilled } from "@element-plus/icons-vue";
import { FormInstance, FormRules, UploadUserFile } from "element-plus";
import {
addBusiness,
@ -385,6 +404,9 @@ onMounted(() => {
:deep(.my-label) {
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>
<style>

@ -210,4 +210,8 @@ onMounted(() => {
});
</script>
<style scoped></style>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -97,4 +97,8 @@ onMounted(() => {
});
</script>
<style scoped></style>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -3,8 +3,11 @@
<el-card shadow="never">
<div class="mb-4">
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 700; line-height: 32px; font-size: 14px">
设备类型对应的设备软件版本列表
<div style="display: flex; align-items: center;margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备类型对应的设备软件版本列表</span
>
</div>
<div>
<el-button type="primary" @click="skipBindingDevType">
@ -52,6 +55,7 @@
<script setup lang="ts">
import { Tr069DevTypeQuery, Tr069DevTypeVO } from "@/api/tr069/types";
import { tr069BindingDevTypePage } from "@/api/device-type";
import { Grid } from "@element-plus/icons-vue";
const route = useRoute();
const router = useRouter();
@ -83,4 +87,8 @@ onMounted(() => {
});
</script>
<style scoped></style>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -105,4 +105,8 @@ onMounted(() => {
});
</script>
<style scoped></style>
<style scoped>
:deep(.el-card__body) {
padding: 10px 0 0 0;
}
</style>

@ -7,7 +7,15 @@
v-loading="loadingForm"
ref="tr069FormRef"
>
<el-descriptions title="TR-069参数树模型" :column="2" border>
<el-descriptions :column="2" border>
<template #title>
<div style="display: flex; align-items: center; margin-left: 3px">
<el-icon size="15"><Grid /></el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>TR-069参数树模型</span
>
</div>
</template>
<template #extra>
<el-button type="primary" @click="submitForm(tr069FormRef)"
><el-icon><EditPen /></el-icon></el-button
@ -88,13 +96,13 @@
<script setup lang="ts">
import { Tr069VerForm, Tr069Xml } from "@/api/tr069/types";
import { EditPen } from "@element-plus/icons-vue";
import { EditPen, Grid } from "@element-plus/icons-vue";
import {
addTr069,
editTr069,
getTr069Form,
getTr069XmlOption,
getTr069XmlTree
getTr069XmlTree,
} from "@/api/tr069";
import { FormInstance, FormRules } from "element-plus";

Loading…
Cancel
Save