MTR探测策略/MTRAgent管理模块
1、MTRAgent管理模块 2、MTR探测策略 3、修改流量图默认显示时间 4、优化并修改bug
This commit is contained in:
@@ -76,7 +76,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'earnManage:business:add'},
|
||||
// {content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'disRevenue:earnManage:business:detele'},
|
||||
// {content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'disRevenue:earnManage:business:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'earnManage:business:export'},
|
||||
],
|
||||
// line: [
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'earnManage:businessIdent:add'},
|
||||
// {content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'disRevenue:earnManage:business:detele'},
|
||||
// {content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'disRevenue:earnManage:business:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'earnManage:businessIdent:export'},
|
||||
],
|
||||
// line: [
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div :class="open && open.length > 0 ? '' : 'app-container'">
|
||||
<Form ref="formRef" :formList="formList" :ruleFormData="ruleForm" :config="config" @fnClick="callback"></Form>
|
||||
</div>
|
||||
</template>
|
||||
@@ -14,11 +14,11 @@
|
||||
props: {
|
||||
open: {
|
||||
type: String,
|
||||
default: () => {}
|
||||
default: ''
|
||||
},
|
||||
dialogRowData: {
|
||||
type: Object,
|
||||
default: (() => {})
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:alarmManage:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:alarmManage:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:alarmManage:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:alarmManage:export'},
|
||||
],
|
||||
line: [
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:register:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:register:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:register:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:register:export'},
|
||||
],
|
||||
line: [
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '添加配置', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:messagePush:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:messagePush:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:messagePush:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:messagePush:export'},
|
||||
],
|
||||
line: [
|
||||
|
||||
@@ -128,8 +128,11 @@
|
||||
const month = String(new Date().getMonth() + 1).padStart(2, '0'); // 0=1月,11=12月
|
||||
const day = String(new Date().getDate()).padStart(2, '0'); // 当前日(如8)
|
||||
const prevDay = String(new Date().getDate() - 1).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay} 00:00:00`;
|
||||
endData = `${year}-${month}-${day} 23:59:59`;
|
||||
const hours = String(new Date().getHours()).padStart(2, '0') + ':';
|
||||
const minutes = String(new Date().getMinutes()).padStart(2, '0') + ':';
|
||||
const seconds = String(new Date().getSeconds()).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay}` + ' ' + hours + minutes + seconds;
|
||||
endData = `${year}-${month}-${day}` + ' ' + hours + minutes + seconds;
|
||||
this.currTimeList = this.datetimeModelDefault && this.datetimeModelDefault.length > 0 ? {startTime: this.datetimeModelDefault[0], endTime: this.datetimeModelDefault[1]} : {startTime: startData, endTime: endData};
|
||||
this.datetimeModel = this.datetimeModelDefault && this.datetimeModelDefault.length > 0 ? this.datetimeModelDefault : [startData, endData];
|
||||
this.fnChartView({});
|
||||
@@ -263,5 +266,7 @@
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-button--medium {
|
||||
padding: 10px 14px!important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div :class="datetimeModelOne && datetimeModelOne.length > 0 ? 'h100' : 'app-container'">
|
||||
<div :class="datetimeModelOne && datetimeModelOne.length > 0 ? 'h100 w100' : 'app-container'">
|
||||
<div class="w100" style="height: 60px;">
|
||||
<div class="fl" style="text-align: left;">
|
||||
<el-select v-model="configModel" placeholder="请选择配置" style="margin-right: 10px;" @change="selectValChange">
|
||||
@@ -139,8 +139,11 @@
|
||||
const month = String(new Date().getMonth() + 1).padStart(2, '0'); // 0=1月,11=12月
|
||||
const day = String(new Date().getDate()).padStart(2, '0'); // 当前日(如8)
|
||||
const prevDay = String(new Date().getDate() - 1).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay} 00:00:00`;
|
||||
endData = `${year}-${month}-${day} 23:59:59`;
|
||||
const hours = String(new Date().getHours()).padStart(2, '0') + ':';
|
||||
const minutes = String(new Date().getMinutes()).padStart(2, '0') + ':';
|
||||
const seconds = String(new Date().getSeconds()).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay}` + ' ' + hours + minutes + seconds;
|
||||
endData = `${year}-${month}-${day}` + ' ' + hours + minutes + seconds;
|
||||
this.currTimeList = this.datetimeModelOne && this.datetimeModelOne.length > 0 ? {startTime: this.datetimeModelOne[0], endTime: this.datetimeModelOne[1]} : {startTime: startData, endTime: endData};
|
||||
this.datetimeModel = this.datetimeModelOne && this.datetimeModelOne.length > 0 ? this.datetimeModelOne : [startData, endData];
|
||||
this.timeModel = this.timeModelOne;
|
||||
@@ -378,5 +381,7 @@
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
.el-button--medium {
|
||||
padding: 10px!important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:monitorStategy:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:monitorStategy:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:monitorStategy:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:monitorStategy:export'},
|
||||
],
|
||||
line: [
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:monitorTemp:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:monitorTemp:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:monitorTemp:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:monitorTemp:export'},
|
||||
],
|
||||
line: [
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-collapse v-model="activeShowList" @change="collapseChange">
|
||||
<template v-for="(val,key, index) of chartDataLit">
|
||||
<el-collapse-item :title="`【${val && val.title || ''}】${val && val.serverIp || ''}`" :name="val && val.title || ''">
|
||||
<div class="mt10 w100">
|
||||
<div class="w100 plr-20" style="font-size: 14px">
|
||||
<div v-for="(item,key,index) of val && val.formList || []" :key="`${key}-${index}`" class="w50 disInlineBlock p10">
|
||||
<!-- <span class="w50 disInlineBlock" style="color: #C0C4CC;">{{item}}</span><span class="w50">{{val && val.formModel[key] || '-'}}</span>-->
|
||||
<div class="disInlineBlock" style="width: 120px;color: #C0C4CC;">{{item}}</div>
|
||||
<div style="width: calc(100% - 120px);vertical-align: top;" class="disInlineBlock">{{val && val.formModel[key] || '-'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-for="item of val && val.echartList || []" :key="`div-${val && val.title || ''}-${item && item.title || ''}-${index}`" class="w100 mt20 mb20" style="height: 200px;border-top: 1px solid #d8dce5">
|
||||
<EchartsLine class="w100 h100" :key="`chart-${val && val.title || ''}-${item && item.title || ''}-${index}`" :lineData="item && item.dataVal || {}" :dateDataTrans="item && item.dateDataTrans || {}" :dateShowType="item && item.dateShowType || 'datetimerange'" :title="item && item.title || '图表数据'" :chartData="(valData, unit) => chartDataEvent(valData, item.fnEvent,val.title, unit)"></EchartsLine>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</template>
|
||||
</el-collapse>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {lossRateByMtr} from "@/api/disRevenue/resource"
|
||||
export default {
|
||||
name: "lossRateChart",
|
||||
data() {
|
||||
return {
|
||||
activeShowList: [],
|
||||
chartDataLit: {},
|
||||
paramsData: {},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.paramsData = this.$route && this.$route.query;
|
||||
this.getLossRateChart();
|
||||
},
|
||||
methods: {
|
||||
getLossRateChart() {
|
||||
lossRateByMtr({mtrClientId: this.paramsData.mtrClientId}).then(res => {
|
||||
console.log('res===',res)
|
||||
});
|
||||
},
|
||||
collapseChange(val) {
|
||||
this.activeShowList = val;
|
||||
// if (val && val.length > 0) {
|
||||
// this.$emit("collapseChangeData", val);
|
||||
// }
|
||||
},
|
||||
chartDataEvent(valData, funcName, tabName, unit) {
|
||||
// // 检查函数是否存在,避免报错
|
||||
// if (typeof this[funcName] === 'function') {
|
||||
// // 调用实际函数,并传递参数(如选中的值、当前项)
|
||||
// // this[funcName]({startTime: valData[0], endTime: valData[1]});
|
||||
// } else {
|
||||
// console.warn(`函数 ${funcName} 未定义`);
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -2,9 +2,9 @@
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" size="small" label-width="auto">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="搜索" title="搜索" prop="queryParam">
|
||||
<el-form-item label="搜索" title="搜索" prop="queryName">
|
||||
<el-input
|
||||
v-model="queryParams.queryParam"
|
||||
v-model="queryParams.queryName"
|
||||
placeholder="请输入MTRClientID/ClientID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"/>
|
||||
@@ -25,9 +25,9 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="注册状态" title="注册状态" prop="registrationStatus">
|
||||
<el-form-item label="注册状态" title="注册状态" prop="registerStatus">
|
||||
<el-select
|
||||
v-model="queryParams.registrationStatus"
|
||||
v-model="queryParams.registerStatus"
|
||||
placeholder="请选择注册状态"
|
||||
clearable>
|
||||
<el-option
|
||||
@@ -39,9 +39,9 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="标识" title="标识" prop="logicalNodeId">
|
||||
<el-form-item label="标识" title="标识" prop="logicalNode">
|
||||
<el-select
|
||||
v-model="queryParams.logicalNodeId"
|
||||
v-model="queryParams.logicalNode"
|
||||
placeholder="请选择标识"
|
||||
clearable>
|
||||
<el-option
|
||||
@@ -75,24 +75,27 @@
|
||||
</template>
|
||||
<!-- 注册状态 -->
|
||||
<template #tempStatus="{ row, column }">
|
||||
<dict-tag :options="dict.type.rm_register_status" :value="row.registrationStatus"/>
|
||||
<dict-tag :options="dict.type.rm_register_status" :value="row.registerStatus"/>
|
||||
</template>
|
||||
<!-- 在线状态 -->
|
||||
<template #tempOnlineStatus="{ row, column }">
|
||||
<dict-tag :options="dict.type.rm_register_online_state" :value="row.onlineStatus"/>
|
||||
</template>
|
||||
</TableList>
|
||||
<!-- 选择公网业务IP -->
|
||||
<!-- 配置更新策略 -->
|
||||
<el-dialog title="配置更新策略" :visible.sync="viewOpen" width="800px" append-to-body style="padding-bottom: 20px;">
|
||||
<mtrAgentView :open="`type_${viewOpen}`" :dialogRowData="dialogRowData" @dialogResult="fnDialogResult"></mtrAgentView>
|
||||
</el-dialog>
|
||||
<!-- MTR探测策略 -->
|
||||
<el-dialog title="MTR探测策略" :visible.sync="mtrProbeOpen" width="800px" append-to-body style="padding-bottom: 20px;">
|
||||
<mtrAgentView :open="`type_${mtrProbeOpen}`" :dialogRowData="dialogRowData" @dialogResult="fnDialogResult"></mtrAgentView>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Register">
|
||||
import Form from '@/components/form/index.vue';
|
||||
import {listHandle, networkList, getScriptResultBySn, getLogicalNode} from '@/api/disRevenue/resource';
|
||||
import {listAllBusinessList} from "@/api/disRevenue/earnManage"
|
||||
import {listMtrAgent, getLogicalNode} from '@/api/disRevenue/resource';
|
||||
import TableList from '@/components/table/index.vue';
|
||||
import mtrAgentView from './mtrAgentView';
|
||||
export default {
|
||||
@@ -102,28 +105,25 @@
|
||||
data() {
|
||||
return {
|
||||
roleList: [],
|
||||
busNameList: [],
|
||||
loading: true,
|
||||
showSearch: true,
|
||||
ids: [],
|
||||
single: true,
|
||||
meltiple: true,
|
||||
// 列显隐信息
|
||||
columns: {
|
||||
id: { label: `ID`,width: '50'},
|
||||
mtrClientId: { label: `MTRClientID`, minWidth: '320', visible: true},
|
||||
remarks:{ label: `描述`,minWidth: '90'},
|
||||
machineCode:{ label: `版本`,minWidth: '160', visible: true},
|
||||
registrationStatus: { label: `注册状态`, slotName: 'tempStatus', minWidth: '80', visible: true },
|
||||
createTime:{ label: `注册时间`,minWidth: '160'},
|
||||
logicalNodeId: { label: `标识`, minWidth: '120', visible: true},
|
||||
description:{ label: `描述`,minWidth: '90'},
|
||||
version:{ label: `版本`,minWidth: '160', visible: true},
|
||||
registerStatus: { label: `注册状态`, slotName: 'tempStatus', minWidth: '80', visible: true },
|
||||
registerTime:{ label: `注册时间`,minWidth: '160'},
|
||||
logicalNode: { label: `标识`, minWidth: '120', visible: true},
|
||||
onlineStatus: { label: `在线状态`, slotName: 'tempOnlineStatus', minWidth: '100', visible: true },
|
||||
heartbeatInterval: { label: `心跳时间间隔`, minWidth: '100'},
|
||||
heartbeatCount: { label: `心跳次数`, minWidth: '80'},
|
||||
businessName: { label: `网卡信息`, minWidth: '100'},
|
||||
networkInfo: { label: `网卡信息`, minWidth: '100'},
|
||||
method: { label: `更新方式`,minWidth: '80', slotName: 'tempMethod'},
|
||||
scheduledUpdateTime: { label: `定时更新时间`,minWidth: '160'},
|
||||
fileUrl: { label: `文件地址`,minWidth: '200'},
|
||||
filePath: { label: `文件地址`,minWidth: '200'},
|
||||
fileMd5: {label: '文件MD5', minWidth: '200'},
|
||||
lastUpdateResult: { label: `最后一次更新结果`,minWidth: '140', slotName: 'tempResult'},
|
||||
lastUpdateTime: { label: `最后一次更新时间`,minWidth: '160'},
|
||||
@@ -131,15 +131,15 @@
|
||||
config: {
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '配置更新策略', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:mtrAgent:add'},
|
||||
{content: '配置更新策略', fnCode: 'update', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:mtrAgent:update'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:mtrAgent:export'},
|
||||
],
|
||||
line: [
|
||||
{content: '查看丢包率趋势', fnCode: 'echartView', type: 'text', icon: 'el-icon-data-analysis', hasPermi: 'resource:mtrAgent:graphicAnalysis'},
|
||||
{content: '详情', fnCode: 'details', type: 'text', icon: 'el-icon-view', hasPermi: 'resource:mtrAgent:details'},
|
||||
{title: '更多', more: [
|
||||
{content: '配置更新策略', fnCode: 'edit', type: 'text', icon: 'el-icon-circle-check', hasPermi: 'resource:mtrAgent:edit'},
|
||||
{content: '新建MTR探测策略', fnCode: 'addMtrDetect', type: 'text', icon: 'el-icon-circle-check', hasPermi: 'resource:mtrAgent:addMtrDetect'},
|
||||
{content: '配置更新策略', fnCode: 'update', type: 'text', icon: 'el-icon-circle-check', hasPermi: 'resource:mtrAgent:update'},
|
||||
{content: '新建MTR探测策略', fnCode: 'addMtrProbe', type: 'text', icon: 'el-icon-circle-check', hasPermi: 'resource:mtrAgent:addMtrProbe'},
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -150,18 +150,14 @@
|
||||
pageSize: 10,
|
||||
total: 0
|
||||
},
|
||||
title: '',
|
||||
formList: [],
|
||||
ruleForm: {},
|
||||
viewOpen: false,
|
||||
mtrProbeOpen: false,
|
||||
dialogRowData: {},
|
||||
logicalNodeList: [],
|
||||
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.fnBusNameList();
|
||||
this.fnLogicalNode();
|
||||
},
|
||||
activated() {
|
||||
@@ -170,19 +166,13 @@
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
fnBusNameList() {
|
||||
listAllBusinessList().then(val => {
|
||||
this.busNameList = val && val.data.map(item => {
|
||||
return Object.assign({label: item.businessName, value: item.businessName});
|
||||
});
|
||||
});
|
||||
},
|
||||
// 逻辑标识接口
|
||||
fnLogicalNode() {
|
||||
getLogicalNode().then(val => {
|
||||
this.logicalNodeList = val && val.map(item => {
|
||||
return Object.assign({label: item.logicalNodeId, value: item.logicalNodeId});
|
||||
});
|
||||
});
|
||||
// getLogicalNode().then(val => {
|
||||
// this.logicalNodeList = val && val.map(item => {
|
||||
// return Object.assign({label: item.logicalNodeId, value: item.logicalNodeId});
|
||||
// });
|
||||
// });
|
||||
},
|
||||
// 处理子组件传递的新值
|
||||
handleValueChange(newValue) {
|
||||
@@ -193,14 +183,12 @@
|
||||
/** 查询角色列表 */
|
||||
getList() {
|
||||
let params = JSON.parse(JSON.stringify(this.queryParams));
|
||||
if (params && !params.queryParam) {
|
||||
params.queryParam = null;
|
||||
if (params && !params.queryName) {
|
||||
params.queryName = null;
|
||||
}
|
||||
this.loading = true;
|
||||
listHandle(this.addDateRange(params)).then(response => {
|
||||
listMtrAgent(this.addDateRange(params)).then(response => {
|
||||
this.roleList = response.rows;
|
||||
this.queryParams.total = response.total;
|
||||
this.loading = false;
|
||||
})
|
||||
},
|
||||
|
||||
@@ -230,17 +218,17 @@
|
||||
},
|
||||
fnDialogResult(res){
|
||||
this.viewOpen = false;
|
||||
this.mtrProbeOpen = false;
|
||||
if (res && res.open) {
|
||||
this.getList();
|
||||
}
|
||||
},
|
||||
callback(result, rowData, selectChange, selectList) {
|
||||
this.dialogRowData = {};
|
||||
if (result && result.fnCode) {
|
||||
switch (result.fnCode) {
|
||||
case 'add':
|
||||
case 'update':
|
||||
this.viewOpen = true;
|
||||
break;
|
||||
case 'edit':
|
||||
this.viewOpen = true;
|
||||
this.dialogRowData = rowData;
|
||||
this.dialogRowData = rowData || {};
|
||||
break;
|
||||
case 'details':
|
||||
this.$router.push({
|
||||
@@ -248,22 +236,19 @@
|
||||
query: {id: rowData.id, readonly: true}
|
||||
});
|
||||
break;
|
||||
case 'addMtrProbe':
|
||||
this.mtrProbeOpen = true;
|
||||
this.dialogRowData = rowData || {};
|
||||
break;
|
||||
case 'echartView':
|
||||
this.$router.push({
|
||||
path:'/resource/serverRegister/monitorChart',
|
||||
query: {clientId: rowData.clientId}
|
||||
path:'/resource/mtrAgent/lossRate',
|
||||
query: {mtrClientId: rowData.mtrClientId}
|
||||
});
|
||||
break;
|
||||
case 'export':
|
||||
// let dataList = [];
|
||||
// Object.keys(this.columns).forEach(item => {
|
||||
// if (item.visible) {
|
||||
// dataList.push(item.prop);
|
||||
// }
|
||||
// });
|
||||
// this.download("/system/registration/export", {properties: dataList,}, `资源管理_${new Date().getTime()}.xlsx`);
|
||||
let paramsList = Object.assign({}, this.queryParams,rowData);
|
||||
this.download("system/registration/export", paramsList, `服务器管理_${new Date().getTime()}.xlsx`, null, 'json');
|
||||
this.download("mtragent/mtrClientRegistration/export", paramsList, `MTRAgent管理_${new Date().getTime()}.xlsx`, null, 'json');
|
||||
break;
|
||||
default:
|
||||
|
||||
|
||||
@@ -1,24 +1,24 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div :class="open && open.length > 0 ? '' : 'app-container'">
|
||||
<Form ref="formRef" :formList="formList" :ruleFormData="ruleForm" :config="config" @fnClick="callback"></Form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Handle">
|
||||
import Form from '@/components/form/index.vue';
|
||||
import {addAgentManage, getAgentManage, updateAgentManage, getRegistList} from "@/api/disRevenue/resource"
|
||||
import {addMtrAgent, getMtrAgent, getRegistList} from "@/api/disRevenue/resource"
|
||||
export default {
|
||||
name: 'mtrAgentView',
|
||||
name: 'mtrAgent_view',
|
||||
components: {Form},
|
||||
dicts: ['policy_method', 'rm_register_online_state', 'agent_update_result', 'rm_register_status'],
|
||||
props: {
|
||||
open: {
|
||||
type: String,
|
||||
default: () => {}
|
||||
default: ''
|
||||
},
|
||||
dialogRowData: {
|
||||
type: Object,
|
||||
default: (() => {})
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -26,7 +26,7 @@
|
||||
handler(val) {
|
||||
if (val === 'type_true') {
|
||||
this.paramsData = {};
|
||||
// this.$set(this.ruleForm, 'deployDevice', this.dialogRowData.mtrClientId);
|
||||
this.$set(this.ruleForm, 'mtrClientIds', this.dialogRowData && this.dialogRowData.mtrClientId || '');
|
||||
} else if (val === 'type_false') {
|
||||
// 清空form
|
||||
this.$refs['formRef'].$refs.ruleForm.resetFields();
|
||||
@@ -49,7 +49,9 @@
|
||||
this.paramsData = this.$route && this.$route.query;
|
||||
if (this.open) {
|
||||
this.paramsData = {};
|
||||
// this.$set(this.ruleFormData, 'deployDevice', this.dialogRowData.mtrClientId);
|
||||
if (this.dialogRowData && this.dialogRowData.mtrClientId) {
|
||||
this.$set(this.ruleForm, 'mtrClientIds', this.dialogRowData && this.dialogRowData.mtrClientId || '');
|
||||
}
|
||||
}
|
||||
if (this.paramsData && this.paramsData.id) {
|
||||
this.getFormDataList(this.paramsData.id);
|
||||
@@ -66,38 +68,40 @@
|
||||
methods: {
|
||||
// formList集合
|
||||
fnFormList(objVal) {
|
||||
console.log('ddd')
|
||||
let colSpan = 18;
|
||||
if (this.paramsData && this.paramsData.readonly) {
|
||||
colSpan = 12;
|
||||
}
|
||||
this.formList = [{
|
||||
config: {title: ' ', colSpan: '', readonly: this.paramsData.readonly},
|
||||
config: {title: ' ', colSpan: '', readonly: this.paramsData && this.paramsData.readonly},
|
||||
controls: {
|
||||
id: {label: 'ID',hidden: true},
|
||||
mtrClientId: {label: 'MTRClientID', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
agentVersion: {label: '版本', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
type: {label: '标识', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
createTime: {label: '注册时间', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
registrationStatus: {label: '注册状态', span: 12, type: 'select', options: this.dict.type.rm_register_status, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
onlineStatus: {label: '在线状态', span: 12, type: 'select', options: this.dict.type.rm_register_online_state, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
heartbeatInterval: {label: '心跳时间间隔(s)', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
heartbeatCount: {label: '心跳次数', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
method: {label: '更新方式', span: 12, type: 'select', options: this.dict.type.policy_method, eventName: 'change', required: true},
|
||||
scheduledUpdateTime: {label: '更新时间', span: 18, type: 'datetime', required: true, hidden: objVal && objVal.method === '1' ? false: true},
|
||||
fileUrl: {label: '文件地址', span: 18, type: 'input', required: true, placeholder: '请输入外网地址', warningTitle: '如:http://www.tr.com/server-1.1.1.jar'},
|
||||
fileMd5: {label: '文件MD5', span: 18, type: 'input', required: true},
|
||||
deployDevice: {label: '部署设备', span: 18, type: 'textarea', rows:15, placeholder: '请粘贴/输入MTRClientID列表,如\nMTRClientID1\nMTRClientID2\n...', required: true, hidden: this.paramsData && this.paramsData.readonly ? true : false},
|
||||
mtrClientId: {label: 'MTRClientID', span: colSpan, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
version: {label: '版本', span: colSpan, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
logicalNode: {label: '标识', span: colSpan, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
registerTime: {label: '注册时间', span: colSpan, type: 'datetime', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
registerStatus: {label: '注册状态', span: colSpan, type: 'select', options: this.dict.type.rm_register_status, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
onlineStatus: {label: '在线状态', span: colSpan, type: 'select', options: this.dict.type.rm_register_online_state, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
heartbeatInterval: {label: '心跳时间间隔(s)', span: colSpan, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
heartbeatCount: {label: '心跳次数', span: colSpan, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
method: {label: '更新方式', span: colSpan, type: 'select', options: this.dict.type.policy_method, eventName: 'change', required: true},
|
||||
scheduledUpdateTime: {label: '更新时间', span: colSpan, type: 'datetime', required: true, hidden: objVal && objVal.method === '1' ? false: true},
|
||||
filePath: {label: '文件地址', span: colSpan, type: 'input', required: true, placeholder: '请输入外网地址', warningTitle: '如:http://www.tr.com/server-1.1.1.jar'},
|
||||
fileMd5: {label: '文件MD5', span: colSpan, type: 'input', required: true},
|
||||
mtrClientIds: {label: '部署设备', span: colSpan, type: 'textarea', rows:15, placeholder: '请粘贴/输入MTRClientID列表,如\nMTRClientID1\nMTRClientID2\n...', required: true, hidden: this.paramsData && this.paramsData.readonly ? true : false},
|
||||
clientAllId: {label: '加载全部MTRClientID', span: 3, type: 'button', style: 'vertical-align: top', hidden: this.paramsData && this.paramsData.readonly ? true : this.paramsData && this.paramsData.id ? true : false},
|
||||
lastUpdateResult: {label: '最后一次更新结果', span: 18, type: 'select', options: this.dict.type.agent_update_result, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
lastUpdateTime: {label: '最后一次更新时间', span: 18, type: 'datetime', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
includeIds: {label: '网卡信息', span: 24, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
managePublicIp: {label: '描述', span: 18, type: 'input', disabled: true, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
lastUpdateResult: {label: '最后一次更新结果', span: colSpan, type: 'select', options: this.dict.type.agent_update_result, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
lastUpdateTime: {label: '最后一次更新时间', span: colSpan, type: 'datetime', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
networkInfo: {label: '网卡信息', span: colSpan, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
description: {label: '描述', span: colSpan, type: 'input', disabled: true, hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
}
|
||||
}];
|
||||
},
|
||||
// 获取详情
|
||||
getFormDataList(id) {
|
||||
getAgentManage(id).then(val => {
|
||||
getMtrAgent(id).then(val => {
|
||||
if (val && val.data) {
|
||||
val.data['method'] = val.data && val.data['method'] || val.data['method'] === 0 ? val.data['method'].toString() : val.data['method'];
|
||||
// val.data['fileUrlType'] = val.data['fileUrlType'].toString();
|
||||
this.fnFormList(val.data);
|
||||
this.ruleForm = val.data;
|
||||
}
|
||||
@@ -105,17 +109,6 @@
|
||||
// this.$modal.msgError("操作失败")
|
||||
});
|
||||
},
|
||||
// // 包含设备
|
||||
// getResNameList() {
|
||||
// resNameList().then(val => {
|
||||
// this.formList[0].controls['includeIds']['options']= val && val.map(item => {
|
||||
// this.includeList[item.id] = item;
|
||||
// return Object.assign({label: item.resourceName, key: item.id});
|
||||
// });
|
||||
// }).catch(() => {
|
||||
// this.$modal.msgError("操作失败")
|
||||
// });
|
||||
// },
|
||||
// 监听事件
|
||||
callback(result, dataVal, formVal) {
|
||||
if (result && result.fnCode) {
|
||||
@@ -128,7 +121,7 @@
|
||||
}
|
||||
break;
|
||||
case 'clientAllId':
|
||||
this.$set(this.ruleForm, 'deployDevice', '');
|
||||
this.$set(this.ruleForm, 'mtrClientIds', '');
|
||||
getRegistList({resourceType: 1}).then(res => {
|
||||
let str = '';
|
||||
if (res && res.data) {
|
||||
@@ -136,24 +129,20 @@
|
||||
str+= item.clientId + '\n';
|
||||
});
|
||||
}
|
||||
this.$set(this.ruleForm, 'deployDevice', str);
|
||||
this.$set(this.ruleForm, 'mtrClientIds', str);
|
||||
});
|
||||
break;
|
||||
case 'submit':
|
||||
if (this.open) {
|
||||
this.$emit("dialogResult", {open: false});
|
||||
} else {
|
||||
this.$router.push("/resource/mtrAgent")
|
||||
}
|
||||
// let fnType = addAgentManage;
|
||||
// if (dataVal && dataVal.id) {
|
||||
// fnType = updateAgentManage;
|
||||
// }
|
||||
// fnType(dataVal).then(response => {
|
||||
// this.$modal.msgSuccess(response.msg);
|
||||
// }).catch(() => {
|
||||
// this.$modal.msgError("操作失败")
|
||||
// });
|
||||
addMtrAgent(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
if (this.open) {
|
||||
this.$emit("dialogResult", {open: true});
|
||||
} else {
|
||||
this.$router.push("/resource/mtrAgent")
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$modal.msgError("操作失败")
|
||||
});
|
||||
break;
|
||||
case 'cancel':
|
||||
if (this.open) {
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
<template>
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" size="small" label-width="auto">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="搜索" title="搜索" prop="queryName">
|
||||
<el-input
|
||||
v-model="queryParams.queryName"
|
||||
placeholder="请输入策略名称/MTRClientID/ClientID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item class="lastBtnSty">
|
||||
<el-button type="primary" size="mini" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
|
||||
<!-- 表格数据 -->
|
||||
<TableList :columns="columns" :config="config" :modelIdent="this.$options.name" :queryParams="queryParams" :tableList="roleList" @fnClick="callback" @fnRenderList="getList" @value-change="handleValueChange">
|
||||
<template #tempCopy="{ row, column}">
|
||||
{{row.clientId}}<el-link :underline="false" icon="el-icon-document-copy" title="复制" v-clipboard:copy="row.clientId" v-clipboard:success="clipboardSuccess" style="margin-left: 10px;color: #409EFF;"></el-link>
|
||||
</template>
|
||||
<!-- 更新方式 -->
|
||||
<template #tempMethod="{ row, column }">
|
||||
<dict-tag :options="dict.type.policy_method" :value="row.method"/>
|
||||
</template>
|
||||
<!-- 多公网IP状态 -->
|
||||
<template #tempMultipubStatus="{ row, column }">
|
||||
<dict-tag :options="dict.type.rm_moreip_status" :value="row.multiPublicIpStatus"/>
|
||||
</template>
|
||||
<!-- 注册状态 -->
|
||||
<template #tempStatus="{ row, column }">
|
||||
<dict-tag :options="dict.type.rm_register_status" :value="row.registerStatus"/>
|
||||
</template>
|
||||
<!-- 在线状态 -->
|
||||
<template #tempOnlineStatus="{ row, column }">
|
||||
<dict-tag :options="dict.type.rm_register_online_state" :value="row.onlineStatus"/>
|
||||
</template>
|
||||
</TableList>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Register">
|
||||
import Form from '@/components/form/index.vue';
|
||||
import {listMtrAgent} from '@/api/disRevenue/resource';
|
||||
import TableList from '@/components/table/index.vue';
|
||||
export default {
|
||||
name: 'mtrProbe',
|
||||
components: {TableList,Form},
|
||||
dicts: ['rm_moreip_status', 'rm_register_status', 'rm_register_online_state', 'policy_method'],
|
||||
data() {
|
||||
return {
|
||||
roleList: [],
|
||||
showSearch: true,
|
||||
ids: [],
|
||||
single: true,
|
||||
// 列显隐信息
|
||||
columns: {
|
||||
id: { label: `ID`,width: '50'},
|
||||
mtrTC: { label: `MTR探测策略`, minWidth: '120'},
|
||||
policyName: { label: `策略名称`, minWidth: '120', visible: true},
|
||||
priority: { label: `优先级`,minWidth: '150', visible: true },
|
||||
mtrClientId: { label: `MTRClientID`, minWidth: '320', visible: true},
|
||||
description:{ label: `服务器集合`,minWidth: '90', visible: true},
|
||||
heartbeatInterval: { label: `是否探测`, minWidth: '100', visible: true},
|
||||
heartbeatCount: { label: `开始时间`, minWidth: '80'},
|
||||
networkInfo: { label: `结束时间`, minWidth: '100'},
|
||||
scheduledUpdateTime: { label: `探测频率`,minWidth: '160'},
|
||||
filePath: { label: `探测目标IP集合`,minWidth: '200'},
|
||||
updateTime:{ label: `修改时间`,minWidth: '160'},
|
||||
createTime: { label: `创建时间`,minWidth: '160'},
|
||||
},
|
||||
config: {
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '添加', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:mtrProbe:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:mtrProbe:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:mtrProbe:export'},
|
||||
],
|
||||
line: [
|
||||
{content: '修改', fnCode: 'edit', type: 'text', icon: 'el-icon-edit', hasPermi: 'resource:mtrProbe:edit'},
|
||||
{content: '详情', fnCode: 'details', type: 'text', icon: 'el-icon-view', hasPermi: 'resource:mtrProbe:details'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', icon: 'el-icon-delete', hasPermi: 'resource:mtrProbe:delete'},
|
||||
]
|
||||
}
|
||||
},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
total: 0
|
||||
},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
activated() {
|
||||
this.$nextTick(() => {
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 处理子组件传递的新值
|
||||
handleValueChange(newValue) {
|
||||
// 父组件更新自身数据,实现同步
|
||||
this.showSearch = newValue;
|
||||
// console.log('父组件拿到新值:', newValue);
|
||||
},
|
||||
/** 查询角色列表 */
|
||||
getList() {
|
||||
let params = JSON.parse(JSON.stringify(this.queryParams));
|
||||
if (params && !params.queryName) {
|
||||
params.queryName = null;
|
||||
}
|
||||
listMtrAgent(this.addDateRange(params)).then(response => {
|
||||
this.roleList = response.rows;
|
||||
this.queryParams.total = response.total;
|
||||
})
|
||||
},
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList()
|
||||
},
|
||||
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.$refs['queryRef'].resetFields();
|
||||
this.queryParams = {pageNum: 1, pageSize: 10,total: 0};
|
||||
this.handleQuery();
|
||||
},
|
||||
|
||||
/** 多选框选中数据 */
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.roleId);
|
||||
this.single = selection.length != 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 复制代码成功 */
|
||||
clipboardSuccess() {
|
||||
this.$modal.msgSuccess("复制成功")
|
||||
},
|
||||
fnDialogResult(res){
|
||||
this.viewOpen = false;
|
||||
if (res && res.open) {
|
||||
this.getList();
|
||||
}
|
||||
},
|
||||
callback(result, rowData, selectChange, selectList) {
|
||||
if (result && result.fnCode) {
|
||||
switch (result.fnCode) {
|
||||
case 'add':
|
||||
this.$router.push({
|
||||
path:'/resource/mtrProbe/view'
|
||||
});
|
||||
break;
|
||||
case 'edit':
|
||||
this.$router.push({
|
||||
path:'/resource/mtrProbe/view',
|
||||
query: {id: rowData.id}
|
||||
});
|
||||
break;
|
||||
case 'details':
|
||||
this.$router.push({
|
||||
path:'/resource/mtrProbe/view',
|
||||
query: {id: rowData.id, readonly: true}
|
||||
});
|
||||
break;
|
||||
case 'delete':
|
||||
let ids = '';
|
||||
if (rowData && rowData.id) {
|
||||
ids = rowData.id;
|
||||
} else {
|
||||
if (selectList && selectList.length <= 0) {
|
||||
this.$modal.msgWarning("请选择数据!");
|
||||
}
|
||||
ids = selectChange;
|
||||
}
|
||||
if (!ids) return;
|
||||
let content = '<p style="font-size: 1rem;font-weight: 600;">删除MTR探测策略</p>' +
|
||||
'<p style="height: 0px;margin-bottom: 50px;">删除后数据将不能恢复,请确认是否继续!!!</p>';
|
||||
this.$modal.confirm(content).then(function() {
|
||||
return delMonitorPolicy(rowData.id)
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {});
|
||||
break;
|
||||
case 'export':
|
||||
let paramsList = Object.assign({}, this.queryParams,rowData);
|
||||
this.download("mtragent/mtrClientRegistration/export", paramsList, `MTR探测策略_${new Date().getTime()}.xlsx`, null, 'json');
|
||||
break;
|
||||
default:
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .lastBtnSty .el-form-item__content{
|
||||
margin-left: 10px!important;
|
||||
}
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 0 0 10px!important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,190 @@
|
||||
<template>
|
||||
<div :class="open && open.length > 0 ? '' : 'app-container'">
|
||||
<Form ref="formRef" :formList="formList" :ruleFormData="ruleForm" :config="config" @fnClick="callback"></Form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="Handle">
|
||||
import Form from '@/components/form/index.vue';
|
||||
import {addMtrAgent, getMtrAgent, getRegistList} from "@/api/disRevenue/resource"
|
||||
export default {
|
||||
name: 'mtrProbe_view',
|
||||
components: {Form},
|
||||
dicts: ['policy_method', 'rm_register_online_state', 'agent_update_result', 'rm_register_status', 'rm_register_snmp_detect'],
|
||||
props: {
|
||||
open: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
dialogRowData: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
open: {
|
||||
handler(val) {
|
||||
if (val === 'type_true') {
|
||||
this.paramsData = {};
|
||||
this.$set(this.ruleForm, 'mtrClientId', this.dialogRowData && this.dialogRowData.mtrClientId || '');
|
||||
} else if (val === 'type_false') {
|
||||
// 清空form
|
||||
this.$refs['formRef'].$refs.ruleForm.resetFields();
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
ruleForm: {snmpDetect: '1'},
|
||||
formList: [],
|
||||
paramsData: {},
|
||||
config: {},
|
||||
includeList: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.paramsData = this.$route && this.$route.query;
|
||||
if (this.open) {
|
||||
this.paramsData = {};
|
||||
if (this.dialogRowData && this.dialogRowData.mtrClientId) {
|
||||
this.$set(this.ruleForm, 'mtrClientId', this.dialogRowData && this.dialogRowData.mtrClientId || '');
|
||||
}
|
||||
}
|
||||
if (this.paramsData && this.paramsData.id) {
|
||||
this.getFormDataList(this.paramsData.id);
|
||||
} else {
|
||||
this.fnFormList();
|
||||
// this.getResNameList();
|
||||
}
|
||||
if (this.paramsData && this.paramsData.readonly) {
|
||||
this.config = {
|
||||
buttonGroup: [{title: '返回', fnCode: 'goBack'}]
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// formList集合
|
||||
fnFormList() {
|
||||
let colSpan = 18;
|
||||
if (this.paramsData && this.paramsData.readonly) {
|
||||
colSpan = 12;
|
||||
}
|
||||
if (this.paramsData && this.paramsData.readonly) {
|
||||
this.formList = [{
|
||||
config: {title: ' ', colSpan: '', readonly: true},
|
||||
controls: {
|
||||
id: {label: 'ID',hidden: true},
|
||||
policyName: {label: '策略名称', span: colSpan, type: 'input', required: true},
|
||||
priority: {label: '优先级', span: 12, type: 'input'},
|
||||
mtrClientId: {label: 'MTRClientID', span: colSpan, type: 'select', options: []},
|
||||
snmpDetect: {label: '是否探测', span: colSpan, type: 'radio', eventName: 'change',required: true, options: this.dict.type.rm_register_snmp_detect},
|
||||
startTime: {label: '开始时间', span: colSpan, type: 'datetime', hidden: this.ruleForm && this.ruleForm.snmpDetect === '1' ? false: true},
|
||||
endTime: {label: '结束时间', span: colSpan, type: 'datetime', hidden: this.ruleForm && this.ruleForm.snmpDetect === '1' ? false: true},
|
||||
pl: {label: '探测频率', span: colSpan, type: 'select', options: [], hidden: this.ruleForm && this.ruleForm.snmpDetect === '1' ? false: true},
|
||||
updateTime: {label: '修改时间', span: colSpan, type: 'datetime'},
|
||||
createTime: {label: '创建时间', span: colSpan, type: 'datetime'},
|
||||
createBy: {label: '创建人', span: colSpan, type: 'datetime'},
|
||||
mtrClientIds: {label: '服务器集合', span: colSpan, type: 'textarea', rows:15, placeholder: '请粘贴/输入ClientID列表,如\nClientID1\nClientID2\n...', required: true},
|
||||
clientAllId: {label: '探测目标IP集合', span: colSpan, type: 'input'},
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
this.formList = [{
|
||||
config: {title: ' ', colSpan: '', readonly: this.paramsData && this.paramsData.readonly},
|
||||
controls: {
|
||||
id: {label: 'ID',hidden: true},
|
||||
policyName: {label: '策略名称', span: colSpan, type: 'input', required: true},
|
||||
priority: {label: '优先级', span: 12, type: 'input', hidden: this.paramsData && this.paramsData.readonly ? false : true},
|
||||
mtrClientId: {label: 'MTRClientID', span: colSpan, type: 'select', required: true, options: []},
|
||||
mtrClientIds: {label: '服务器集合', span: colSpan, type: 'textarea', rows:15, placeholder: '请粘贴/输入ClientID列表,如\nClientID1\nClientID2\n...', required: true},
|
||||
clientAllId: {label: '显示相关IP', span: 3, type: 'button', style: 'vertical-align: top'},
|
||||
snmpDetect: {label: '是否探测', span: colSpan, type: 'radio', eventName: 'change',required: true, options: this.dict.type.rm_register_snmp_detect},
|
||||
startTime: {label: '开始时间', span: colSpan, type: 'datetime', eventName: 'change', hidden: this.ruleForm && this.ruleForm.snmpDetect === '1' ? false: true},
|
||||
endTime: {label: '结束时间', span: colSpan, type: 'datetime', eventName: 'change', pickerOptions: {}, hidden: this.ruleForm && this.ruleForm.snmpDetect === '1' ? false: true},
|
||||
probe: {label: '探测频率', span: colSpan, type: 'select', options: [], hidden: this.ruleForm && this.ruleForm.snmpDetect === '1' ? false: true},
|
||||
}
|
||||
}];
|
||||
}
|
||||
},
|
||||
// 获取详情
|
||||
getFormDataList(id) {
|
||||
getMtrAgent(id).then(val => {
|
||||
if (val && val.data) {
|
||||
val.data['method'] = val.data && val.data['method'] || val.data['method'] === 0 ? val.data['method'].toString() : val.data['method'];
|
||||
this.fnFormList(val.data);
|
||||
this.ruleForm = val.data;
|
||||
}
|
||||
}).catch(() => {
|
||||
// this.$modal.msgError("操作失败")
|
||||
});
|
||||
},
|
||||
// 监听事件
|
||||
callback(result, dataVal, formVal) {
|
||||
if (result && result.fnCode) {
|
||||
switch (result.fnCode) {
|
||||
case 'snmpDetect':
|
||||
if (dataVal === '1') {
|
||||
this.formList[0].controls.startTime['hidden'] = false;
|
||||
this.formList[0].controls.endTime['hidden'] = false;
|
||||
this.formList[0].controls.probe['hidden'] = false;
|
||||
} else {
|
||||
this.formList[0].controls.startTime['hidden'] = true;
|
||||
this.formList[0].controls.endTime['hidden'] = true;
|
||||
this.formList[0].controls.probe['hidden'] = true;
|
||||
}
|
||||
break;
|
||||
case 'startTime':
|
||||
// let formModel = this.$refs.formRef.$refs.ruleForm.model;
|
||||
// console.log('fff===',dataVal);
|
||||
// if (formModel && !formModel.endTime) {
|
||||
// this.formList[0].controls.endTime['pickerOptions'] = {
|
||||
// disabledDate: (time) => {
|
||||
// // 禁用开始时间之前的日期
|
||||
// return time.getTime() < dataVal.getTime();
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
break;
|
||||
case 'clientAllId':
|
||||
this.$set(this.ruleForm, 'mtrClientIds', '');
|
||||
getRegistList({resourceType: 1}).then(res => {
|
||||
let str = '';
|
||||
if (res && res.data) {
|
||||
res && res.data.map(item => {
|
||||
str+= item.clientId + '\n';
|
||||
});
|
||||
}
|
||||
this.$set(this.ruleForm, 'mtrClientIds', str);
|
||||
});
|
||||
break;
|
||||
case 'submit':
|
||||
addMtrAgent(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
if (this.open) {
|
||||
this.$emit("dialogResult", {open: true});
|
||||
} else {
|
||||
this.$router.push("/resource/mtrProbe")
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$modal.msgError("操作失败")
|
||||
});
|
||||
break;
|
||||
case 'cancel':
|
||||
if (this.open) {
|
||||
this.$emit("dialogResult", {open: false});
|
||||
} else {
|
||||
this.$router.push("/resource/mtrProbe")
|
||||
}
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
</style>
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div :class="open && open.length > 0 ? '' : 'app-container'">
|
||||
<div style="display: flex; justify-content: center;">
|
||||
<div class="w100">
|
||||
<Form ref="formRef" :formList="formList" :config="{labelWidth: '140px',buttonGroup: []}" :ruleFormData="ruleFormData" @fnClick="callback"></Form>
|
||||
@@ -126,9 +126,11 @@
|
||||
</el-collapse>
|
||||
</template>
|
||||
</div>
|
||||
<el-button v-if="!(paramsData && paramsData.readonly)" style="float: right;margin-top: 12px;margin-left: 10px;" @click="cancel">取消</el-button>
|
||||
<el-button v-if="!(paramsData && paramsData.readonly)" type="primary" style="float: right;margin-top: 12px;" @click="submit">提交</el-button>
|
||||
<el-button v-if="paramsData && paramsData.readonly" style="float: right;margin-top: 12px;margin-left: 10px;" @click="cancel">返回</el-button>
|
||||
<div style="height: 55px;margin-right: 20px;">
|
||||
<el-button v-if="!(paramsData && paramsData.readonly)" style="float: right;margin-top: 12px;margin-left: 10px;" @click="cancel">取消</el-button>
|
||||
<el-button v-if="!(paramsData && paramsData.readonly)" type="primary" style="float: right;margin-top: 12px;" @click="submit">提交</el-button>
|
||||
<el-button v-if="paramsData && paramsData.readonly" style="float: right;margin-top: 12px;margin-left: 10px;" @click="cancel">返回</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -142,11 +144,11 @@
|
||||
props: {
|
||||
open: {
|
||||
type: String,
|
||||
default: () => {}
|
||||
default: ''
|
||||
},
|
||||
dialogRowData: {
|
||||
type: Object,
|
||||
default: (() => {})
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
line: [
|
||||
{content: '修改', fnCode: 'edit', type: 'text', showName: 'status', showVal: '0', icon: 'el-icon-edit', hasPermi: 'resource:serverMonitorStrat:edit'},
|
||||
{content: '详情', fnCode: 'details', type: 'text', icon: 'el-icon-view', hasPermi: 'resource:serverMonitorStrat:details'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', showName: 'status', showVal: '0', icon: 'el-icon-delete', hasPermi: 'resource:serverMonitorStrat:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', showName: 'status', showVal: '0', icon: 'el-icon-delete', hasPermi: 'resource:serverMonitorStrat:delete'},
|
||||
{}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -265,11 +265,18 @@
|
||||
const month = String(new Date().getMonth() + 1).padStart(2, '0'); // 0=1月,11=12月
|
||||
const day = String(new Date().getDate()).padStart(2, '0'); // 当前日(如8)
|
||||
const prevDay = String(new Date().getDate() - 1).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay} 00:00:00`;
|
||||
endData = `${year}-${month}-${day} 23:59:59`;
|
||||
todyTime = `${year}-${month}-${day}`;
|
||||
this.firstTabTime = {startTime: todyTime + ' 00:00:00', endTime: todyTime + ' 23:59:59'};
|
||||
this.firstTabTimeArr = [todyTime + ' 00:00:00', todyTime + ' 23:59:59'];
|
||||
const hours = String(new Date().getHours()).padStart(2, '0') + ':';
|
||||
const minutes = String(new Date().getMinutes()).padStart(2, '0') + ':';
|
||||
const seconds = String(new Date().getSeconds()).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay}` + ' ' + hours + minutes + seconds;
|
||||
endData = `${year}-${month}-${day}` + ' ' + hours + minutes + seconds;
|
||||
// startData = `${year}-${month}-${prevDay} 00:00:00`;
|
||||
// endData = `${year}-${month}-${day} 23:59:59`;
|
||||
// todyTime = `${year}-${month}-${day}`;
|
||||
// this.firstTabTime = {startTime: todyTime + ' 00:00:00', endTime: todyTime + ' 23:59:59'};
|
||||
// this.firstTabTimeArr = [todyTime + ' 00:00:00', todyTime + ' 23:59:59'];
|
||||
this.firstTabTime = {startTime: startData, endTime: endData};
|
||||
this.firstTabTimeArr = [startData, endData];
|
||||
this.currTimeList = {startTime: startData, endTime: endData};
|
||||
this.defaultTimes = [startData, endData];
|
||||
this.paramsData = this.$route && this.$route.query;
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:monitorStategy:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:monitorStategy:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:monitorStategy:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:monitorStategy:export'},
|
||||
],
|
||||
line: [
|
||||
@@ -97,7 +97,7 @@
|
||||
{content: '详情', fnCode: 'details', type: 'text', icon: 'el-icon-view', hasPermi: 'resource:monitorStategy:details'},
|
||||
// {content: '复制', fnCode: 'copy', type: 'text', icon: 'el-icon-document-copy', hasPermi: 'disRevenue:resource:monitorStategy:copy'},
|
||||
{content: '下发策略', fnCode: 'strategy', type: 'text', showName: 'policyStatus', showVal: '0', icon: 'el-icon-sort-down', hasPermi: 'resource:monitorStategy:strategy'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', icon: 'el-icon-delete', hasPermi: 'resource:monitorStategy:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', icon: 'el-icon-delete', hasPermi: 'resource:monitorStategy:delete'},
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div :class="open && open.length > 0 ? '' : 'app-container'">
|
||||
<Form ref="formRef" :formList="formList" :ruleFormData="ruleForm" :config="this.paramsData && this.paramsData.readonly ? {labelWidth: '140px', buttonGroup: []} : {labelWidth: '140px'}" @fnClick="callback"></Form>
|
||||
<el-button v-if="this.paramsData && this.paramsData.readonly" style="float: right;margin-top: 12px;margin-left: 10px;" @click="callback({fnCode: 'cancel'})">返回</el-button>
|
||||
</div>
|
||||
@@ -16,11 +16,11 @@
|
||||
props: {
|
||||
open: {
|
||||
type: String,
|
||||
default: () => {}
|
||||
default: ''
|
||||
},
|
||||
dialogRowData: {
|
||||
type: Object,
|
||||
default: (() => {})
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
@@ -119,13 +119,13 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:serverScriptStrat:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:serverScriptStrat:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:serverScriptStrat:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:serverScriptStrat:export'},
|
||||
],
|
||||
line: [
|
||||
{content: '修改', fnCode: 'edit', type: 'text', showName: 'policyStatus', showVal: '0', icon: 'el-icon-edit', hasPermi: 'resource:serverScriptStrat:edit'},
|
||||
{content: '详情', fnCode: 'details', type: 'text', icon: 'el-icon-view', hasPermi: 'resource:serverScriptStrat:details'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', showName: 'policyStatus', showVal: '0', icon: 'el-icon-delete', hasPermi: 'resource:serverScriptStrat:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', showName: 'policyStatus', showVal: '0', icon: 'el-icon-delete', hasPermi: 'resource:serverScriptStrat:delete'},
|
||||
{content: '执行结果查看', fnCode: 'resultView', type: 'text', showName: 'policyStatus', showVal: '1', icon: 'el-icon-help', hasPermi: 'resource:serverScriptStrat:resultView'},
|
||||
]
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
connected: { label: `策略内容`,minWidth: '200'},
|
||||
status: { label: `策略状态`, minWidth: '100', slotName: 'tempStatus'},
|
||||
deployTime: { label: `下发策略时间`,minWidth: '160'},
|
||||
updateTime:{ label: `创建人`,minWidth: '160'},
|
||||
createBy:{ label: `创建人`,minWidth: '160'},
|
||||
createTime: { label: `创建时间`,minWidth: '160'},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
connected: { label: `策略内容`,minWidth: '200'},
|
||||
status: { label: `策略状态`, minWidth: '80', slotName: 'tempStatus', visible: true },
|
||||
deployTime: { label: `下发策略时间`,minWidth: '160'},
|
||||
updateTime:{ label: `创建人`,minWidth: '160'},
|
||||
createBy:{ label: `创建人`,minWidth: '160'},
|
||||
createTime: { label: `创建时间`,minWidth: '160'},
|
||||
},
|
||||
config: {
|
||||
@@ -83,7 +83,7 @@
|
||||
line: [
|
||||
{content: '修改', fnCode: 'edit', type: 'text', showName: 'status', showVal: '0', icon: 'el-icon-edit', hasPermi: 'resource:switchMonitorStrat:edit'},
|
||||
{content: '详情', fnCode: 'details', type: 'text', icon: 'el-icon-view', hasPermi: 'resource:switchMonitorStrat:details'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', showName: 'status', showVal: '0', icon: 'el-icon-delete', hasPermi: 'resource:switchMonitorStrat:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'text', showName: 'status', showVal: '0', icon: 'el-icon-delete', hasPermi: 'resource:switchMonitorStrat:delete'},
|
||||
{}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
formList: {ifDescr: '端口名称', ifType: '端口类型', ifOperStatus: '端口状态', ifSpeed: '端口适配速率(Mbps)'},
|
||||
formModel: {},
|
||||
echartFors: [
|
||||
{title: '的网络速率', oneName: '端口实时接收速率', twoName: '端口实时发送速率', unitSel: [{label: 'Kb', value: 'Kb'},{label: 'Mb', value: 'Mb'}, {label: 'Gb', value: 'Gb'}]},
|
||||
{title: '的网络速率', oneName: '端口实时发送速率', twoName: '端口实时接收速率', unitSel: [{label: 'Kb', value: 'Kb'},{label: 'Mb', value: 'Mb'}, {label: 'Gb', value: 'Gb'}]},
|
||||
{title: '的丢包率(个/秒)', oneName: '入站丢包率', twoName: '出站丢包率'},
|
||||
// {title: '的Bites总数', oneName: '端口发送Bites总数', twoName: '端口接收Bites总数'},
|
||||
{title: '的包错误率(个/秒)', oneName: '入站包错误率', twoName: '出站包错误率'},
|
||||
@@ -185,11 +185,18 @@
|
||||
const month = String(new Date().getMonth() + 1).padStart(2, '0'); // 0=1月,11=12月
|
||||
const day = String(new Date().getDate()).padStart(2, '0'); // 当前日(如8)
|
||||
const prevDay = String(new Date().getDate() - 1).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay} 00:00:00`;
|
||||
endData = `${year}-${month}-${day} 23:59:59`;
|
||||
todyTime = `${year}-${month}-${day}`;
|
||||
this.firstTabTime = {startTime: todyTime + ' 00:00:00', endTime: todyTime + ' 23:59:59'};
|
||||
this.firstTabTimeArr = [todyTime + ' 00:00:00', todyTime + ' 23:59:59'];
|
||||
const hours = String(new Date().getHours()).padStart(2, '0') + ':';
|
||||
const minutes = String(new Date().getMinutes()).padStart(2, '0') + ':';
|
||||
const seconds = String(new Date().getSeconds()).padStart(2, '0');
|
||||
startData = `${year}-${month}-${prevDay}` + ' ' + hours + minutes + seconds;
|
||||
endData = `${year}-${month}-${day}` + ' ' + hours + minutes + seconds;
|
||||
// startData = `${year}-${month}-${prevDay} 00:00:00`;
|
||||
// endData = `${year}-${month}-${day} 23:59:59`;
|
||||
// todyTime = `${year}-${month}-${day}`;
|
||||
// this.firstTabTime = {startTime: todyTime + ' 00:00:00', endTime: todyTime + ' 23:59:59'};
|
||||
// this.firstTabTimeArr = [todyTime + ' 00:00:00', todyTime + ' 23:59:59'];
|
||||
this.firstTabTime = {startTime: startData, endTime: endData};
|
||||
this.firstTabTimeArr = [startData, endData];
|
||||
this.currTimeList = {startTime: startData, endTime: endData};
|
||||
this.defaultTimes = [startData, endData];
|
||||
this.paramsData = this.$route && this.$route.query;
|
||||
@@ -359,11 +366,11 @@
|
||||
netEcharts.dataVal.lineXData = res.data && res.data.xData.length > 0 ? res.data.xData : this.firstChartTrans && this.firstChartTrans['timeList'] || [];
|
||||
netEcharts.dataVal.dataList[0] = {
|
||||
name: content.echartFors[0].oneName,
|
||||
data: res.data && res.data.yData['netInSpeedData'] || []
|
||||
data: res.data && res.data.yData['netOutSpeedData'] || []
|
||||
};
|
||||
netEcharts.dataVal.dataList[1] = {
|
||||
name: content.echartFors[0].twoName,
|
||||
data: res.data && res.data.yData['netOutSpeedData'] || []
|
||||
data: res.data && res.data.yData['netInSpeedData'] || []
|
||||
};
|
||||
if (content.echartFors[0].unitSel) {
|
||||
netEcharts.dataVal['unitModel'] = res && res.data && res.data.unit || '';
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'add', type: 'primary', icon: 'el-icon-plus', hasPermi: 'resource:topology:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:topology:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'resource:topology:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'warning', icon: 'el-icon-download', hasPermi: 'resource:topology:export'},
|
||||
{content: '拓扑展示', fnCode: 'echarts', type: 'warning', icon: 'el-icon-picture-outline-round', hasPermi: 'resource:topology:echarts'},
|
||||
],
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
tableButton: {
|
||||
top: [
|
||||
{content: '新增', fnCode: 'insert', type: 'primary', icon: 'el-icon-plus', hasPermi: 'problemRecord:add'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'problemRecord:detele'},
|
||||
{content: '删除', fnCode: 'delete', type: 'danger', icon: 'el-icon-delete', hasPermi: 'problemRecord:delete'},
|
||||
{content: '导出', fnCode: 'export', type: 'primary', icon: 'el-icon-download', hasPermi: 'problemRecord:export'},
|
||||
],
|
||||
line: [
|
||||
|
||||
+19
-7
@@ -14,8 +14,8 @@
|
||||
<!-- </div>-->
|
||||
<div class="welcome-container">
|
||||
<div class="header-section textAlignCenter">
|
||||
<div class="main-title" :style="{ backgroundImage: `url(${require('@/assets/images/headerBg.png')})`, height: '62px',backgroundSize: 'cover',backgroundRepeat: 'no-repeat',backgroundPosition: 'center', }">
|
||||
<div style="margin-bottom: 13px;">分布式SaaS收益管理平台</div>
|
||||
<div class="main-title" :style="{ backgroundImage: `url(${require('@/assets/images/headerBg.png')})`,backgroundSize: 'cover',backgroundRepeat: 'no-repeat',backgroundPosition: 'center', }">
|
||||
<div class="titleMargBtom">分布式SaaS收益管理平台</div>
|
||||
</div>
|
||||
<div class="welcome-text">
|
||||
<div class="animated-text class-method" :class="{ 'slide-in': showContent }" style="--animation-duration: 1200ms">
|
||||
@@ -123,7 +123,12 @@
|
||||
margin-bottom: 6%;
|
||||
}
|
||||
|
||||
.titleMargBtom {
|
||||
margin-bottom: 13px;
|
||||
}
|
||||
|
||||
.main-title {
|
||||
height: 62px;
|
||||
font-size: 1.3rem;
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
@@ -199,7 +204,7 @@
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.welcome-container {
|
||||
padding: 15px;
|
||||
/*padding: 15px;*/
|
||||
height: auto;
|
||||
min-height: 100vh;
|
||||
}
|
||||
@@ -208,6 +213,10 @@
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.contentPad {
|
||||
padding: 0 10%;
|
||||
}
|
||||
|
||||
.welcome-text {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
@@ -271,12 +280,15 @@
|
||||
/* 大屏幕优化 */
|
||||
@media (min-width: 1600px) {
|
||||
.welcome-container {
|
||||
max-width: 1400px;
|
||||
/*max-width: 1400px;*/
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
flex: 0 0 calc(16.666% - 17px); /* 大屏每行6个 */
|
||||
.main-title {
|
||||
height: 75px;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
.titleMargBtom {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user