修改路径、换图片、图形分析
@@ -1,5 +1,5 @@
|
||||
# 页面标题
|
||||
VUE_APP_TITLE = SAAS管理平台
|
||||
VUE_APP_TITLE = SAAS综合管理平台
|
||||
|
||||
# 开发环境配置
|
||||
ENV = 'development'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# 页面标题
|
||||
VUE_APP_TITLE = SAAS管理平台
|
||||
VUE_APP_TITLE = SAAS综合管理平台
|
||||
|
||||
# 生产环境配置
|
||||
ENV = 'production'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# 页面标题
|
||||
VUE_APP_TITLE = SAAS管理平台
|
||||
VUE_APP_TITLE = SAAS综合管理平台
|
||||
|
||||
BABEL_ENV = production
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "ruoyi",
|
||||
"version": "3.6.6",
|
||||
"description": "SAAS管理平台",
|
||||
"description": "SAAS综合管理平台",
|
||||
"author": "若依",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 662 KiB |
BIN
public/favicon1.ico
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 17 KiB |
BIN
src/assets/logo/logo1.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
src/assets/logo/logo2.png
Normal file
|
After Width: | Height: | Size: 662 KiB |
@@ -80,6 +80,12 @@ div:focus {
|
||||
.plr-50 {
|
||||
padding: 0 50px;
|
||||
}
|
||||
.p15 {
|
||||
padding: 15px;
|
||||
}
|
||||
.p20 {
|
||||
padding: 20px;
|
||||
}
|
||||
.fontSize15 {
|
||||
font-size: 15px;
|
||||
}
|
||||
@@ -229,9 +235,20 @@ aside {
|
||||
.w100 {
|
||||
width: 100%;
|
||||
}
|
||||
.h40 {
|
||||
height: 40%;
|
||||
}
|
||||
.h100 {
|
||||
height: 100%;
|
||||
}
|
||||
.textAlignCenter {
|
||||
text-align: center;
|
||||
}
|
||||
.pageTopForm .el-form-item--medium .el-form-item__label {
|
||||
width: 80px;
|
||||
overflow: hidden;
|
||||
height: 36px;
|
||||
}
|
||||
.pageTopForm .el-form-item {
|
||||
margin-left: 10px!important;
|
||||
}
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
range-separator="至"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="display: inline-block!important;width: 55%!important;"
|
||||
style="display: inline-block!important;width: 45%!important;vertical-align: middle;"
|
||||
@change="dateChange"/>
|
||||
<ul style="display: inline-block">
|
||||
<ul style="display: inline-block;padding-left: 10px;vertical-align: middle;">
|
||||
<li :class="{ 'activesbgs' : isActive == 'DAY' }" @click="toggle('DAY',7)">前7天</li>
|
||||
<li :class="{ 'activesbgs' : isActive == 'WEEK' }" @click="toggle('WEEK',15)">前15天</li>
|
||||
<li :class="{ 'activesbgs' : isActive == 'MONTH' }" @click="toggle('MONTH')">前一个月</li>
|
||||
@@ -97,11 +97,11 @@
|
||||
</script>
|
||||
<style scoped>
|
||||
.ultabs {
|
||||
float: right;
|
||||
position: relative;
|
||||
z-index: 9;
|
||||
margin-top: 30px;
|
||||
margin-right: 2%;
|
||||
width: 500px;
|
||||
float: right;
|
||||
position: relative;
|
||||
z-index: 9;
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
.ultabs ul li {
|
||||
@@ -132,10 +132,4 @@
|
||||
line-height: 40px !important;
|
||||
border: 1px solid #5D78FF;
|
||||
}
|
||||
::v-deep .ultabs .el-range-editor--medium .el-range-input{
|
||||
vertical-align: super!important;
|
||||
}
|
||||
::v-deep .ultabs .el-range-editor--medium .el-range-separator{
|
||||
vertical-align: super!important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -37,10 +37,22 @@
|
||||
const pieDataListIntance = echarts.init(document.getElementById('pieChart' + this.num));
|
||||
let option = {
|
||||
color: dataList.color,
|
||||
// title: [
|
||||
// {
|
||||
// text: `${dataList.centerVal}${dataList.unit}`,
|
||||
// left: "16%",
|
||||
// top: "43%",
|
||||
// textStyle: {
|
||||
// fontSize: 18,
|
||||
// fontWeight: "bold",
|
||||
// color: "#333",
|
||||
// },
|
||||
// }
|
||||
// ],
|
||||
legend: {
|
||||
orient: 'vertical', // 垂直排列
|
||||
top: 'center', // 垂直居中
|
||||
right: 40, // 距离右侧40px
|
||||
// orient: 'vertical', // 垂直排列
|
||||
top: 'bottom', // 垂直居中
|
||||
// right: 1, // 距离右侧40px
|
||||
itemWidth: 12, // 图例标记宽度
|
||||
itemHeight: 12, // 图例标记高度
|
||||
itemGap: 20, // 图例项间距
|
||||
@@ -58,8 +70,8 @@
|
||||
series: [{
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: ['40%', '70%'],
|
||||
center: dataList && dataList.center || ['20%', '50%'],
|
||||
radius: dataList && dataList.radius || ['40%', '70%'],
|
||||
// center: dataList && dataList.center || ['20%', '50%'],
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
@@ -74,18 +86,18 @@
|
||||
},
|
||||
data: dataList.data
|
||||
}],
|
||||
// graphic: [{
|
||||
// type: 'text',
|
||||
// left: 'center',
|
||||
// top: 'middle',
|
||||
// style: {
|
||||
// text: `${dataList.centerVal}${dataList.unit}`,
|
||||
// textBaseline: 'middle',
|
||||
// textAlign: 'center',
|
||||
// fontSize: 20,
|
||||
// fill: '#333'
|
||||
// }
|
||||
// }],
|
||||
graphic: [{
|
||||
type: 'text',
|
||||
left: 'center',
|
||||
top: 'middle',
|
||||
style: {
|
||||
text: `${dataList.centerVal}${dataList.unit}`,
|
||||
textBaseline: 'middle',
|
||||
textAlign: 'center',
|
||||
fontSize: 20,
|
||||
fill: '#333'
|
||||
}
|
||||
}],
|
||||
};
|
||||
pieDataListIntance.setOption(option);
|
||||
// window.addEventListener("resize", () => {
|
||||
|
||||
@@ -95,7 +95,6 @@
|
||||
methods: {
|
||||
// 所有方法都抛出到父组件里去
|
||||
handleClick(item, row) {
|
||||
console.log('row==',row);
|
||||
this.$emit("fnClick", item, row, this.ids, this.selectList);
|
||||
},
|
||||
|
||||
@@ -132,7 +131,6 @@
|
||||
this.selectList.forEach(val => {
|
||||
this.$refs.selChangeList.toggleRowSelection(val,true);
|
||||
});
|
||||
console.log('selectList==',this.selectList);
|
||||
},
|
||||
// 提供给父组件调用的方法:返回当前表格的选中数据
|
||||
getSelectedData() {
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
<template v-if="device!=='mobile'">
|
||||
<search id="header-search" class="right-menu-item" />
|
||||
|
||||
<el-tooltip content="源码地址" effect="dark" placement="bottom">
|
||||
<ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
|
||||
<!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
|
||||
<!-- </el-tooltip>-->
|
||||
|
||||
<el-tooltip content="文档地址" effect="dark" placement="bottom">
|
||||
<ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
|
||||
</el-tooltip>
|
||||
<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
|
||||
<!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
|
||||
<!-- </el-tooltip>-->
|
||||
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ Vue.use(Router)
|
||||
|
||||
/* Layout */
|
||||
import Layout from '@/layout'
|
||||
import DialogView from '@/views/disRevenue/earnManage/server/dialogView.vue'
|
||||
|
||||
/**
|
||||
* Note: 路由配置项
|
||||
@@ -87,6 +88,11 @@ export const constantRoutes = [
|
||||
meta: { title: '个人中心', icon: 'user' }
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/dialog-view',
|
||||
component: DialogView,
|
||||
name: 'DialogView'
|
||||
}
|
||||
]
|
||||
|
||||
@@ -191,6 +197,20 @@ export const dynamicRoutes = [
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/disRevenue/earnManage/server/graphicAnalysis',
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
permissions: ['disRevenue:earnManage:server:graphicAnalysis'],
|
||||
children: [
|
||||
{
|
||||
path: 'index/:dialogVal?',
|
||||
component: () => import('@/views/disRevenue/earnManage/server/dialogView'),
|
||||
name: 'DialogView',
|
||||
meta: { title: '图形分析', activeMenu: '/disRevenue/earnManage/server' }
|
||||
}
|
||||
]
|
||||
},
|
||||
// 交换机宽带收益
|
||||
{
|
||||
path: '/disRevenue/earnManage/switch/list',
|
||||
|
||||
@@ -56,13 +56,13 @@ service.interceptors.request.use(config => {
|
||||
const s_data = sessionObj.data // 请求数据
|
||||
const s_time = sessionObj.time // 请求时间
|
||||
const interval = 1000 // 间隔时间(ms),小于此时间视为重复提交
|
||||
if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
|
||||
const message = '数据正在处理,请勿重复提交'
|
||||
console.warn(`[${s_url}]: ` + message)
|
||||
return Promise.reject(new Error(message))
|
||||
} else {
|
||||
// if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
|
||||
// const message = '数据正在处理,请勿重复提交'
|
||||
// console.warn(`[${s_url}]: ` + message)
|
||||
// return Promise.reject(new Error(message))
|
||||
// } else {
|
||||
cache.session.setJSON('sessionObj', requestObj)
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
return config
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
countBusinessName(dataVal).then(response => {
|
||||
addBusiness(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
this.$router.push("/disRevenue/earnManage/business");
|
||||
this.$router.push("/earnManage/business");
|
||||
this.loading = false;
|
||||
}).catch(() => {
|
||||
this.$modal.msgError("操作失败");
|
||||
@@ -64,7 +64,7 @@
|
||||
});
|
||||
break;
|
||||
case 'cancle':
|
||||
this.$router.push("/disRevenue/earnManage/business");
|
||||
this.$router.push("/earnManage/business");
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="130px">
|
||||
<el-form-item label="业务名称" prop="businessName">
|
||||
<el-col :span="4">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="130px">
|
||||
<el-form-item label="节点名称" prop="nodeName">
|
||||
<el-col :span="4">
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
calculateAvg(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
if (this.paramsData && this.paramsData.resourceType === '1') {
|
||||
this.$router.push("/disRevenue/earnManage/server");
|
||||
this.$router.push("/earnManage/server");
|
||||
}
|
||||
// else {
|
||||
// this.$router.push("/disRevenue/earnManage/switch");
|
||||
@@ -85,7 +85,7 @@
|
||||
break;
|
||||
case 'cancle':
|
||||
if (this.paramsData && this.paramsData.resourceType === '1') {
|
||||
this.$router.push("/disRevenue/earnManage/server");
|
||||
this.$router.push("/earnManage/server");
|
||||
}
|
||||
// else {
|
||||
// this.$router.push("/disRevenue/earnManage/switch");
|
||||
|
||||
121
src/views/disRevenue/earnManage/server/dialogView.vue
Normal file
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div style="height: 90px;">
|
||||
<el-form ref="noticeRef" :model="form" label-width="80px">
|
||||
<el-form-item label="节点名称" prop="noticeType">
|
||||
<el-select v-model="form.noticeType" multiple placeholder="请选择节点名称">
|
||||
<el-option
|
||||
v-for="item in selectChangeList"
|
||||
:key="item.id"
|
||||
:label="item.nodeName"
|
||||
:value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-switch v-for="item of switchData" v-model="item.type" :activeText="item.name" class="mr20" />
|
||||
</div>
|
||||
<div style="height: calc(100vh - 130px);overflow: scroll;">
|
||||
<template v-for="(item,index) of selectChoose">
|
||||
<EchartsLine v-show="switchData[0].type" :chartData="chartDataEvent"
|
||||
:lineData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[0].name" class="w100 h40 mt20 mb20" style="border: 1.5px solid #878787;"></EchartsLine>
|
||||
<EchartsLine v-show="switchData[1].type" :chartData="chartDataEvent"
|
||||
:lineData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[1].name" class="w100 h40 mt20 mb20" style="border: 1.5px solid #878787;"></EchartsLine>
|
||||
<EchartsBar v-show="switchData[2].type" :chartData="chartDataEvent"
|
||||
:barData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[2].name" class="w100 h40 mt20 mb20" style="border: 1.5px solid #878787;"></EchartsBar>
|
||||
</template>
|
||||
</div>
|
||||
<!-- <template #footer>-->
|
||||
<!-- <div class="dialog-footer">-->
|
||||
<!-- <!– <el-button type="primary" @click="submitForm">确 定</el-button>–>-->
|
||||
<!-- <el-button @click="cancel">取 消</el-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import Form from '@/components/form/index.vue';
|
||||
import EchartsLine from "@/components/echartsList/line.vue";
|
||||
import EchartsBar from "@/components/echartsList/bar.vue";
|
||||
export default {
|
||||
name: 'DialogView',
|
||||
components: {Form, EchartsLine, EchartsBar},
|
||||
data() {
|
||||
return {
|
||||
paramsData: {},
|
||||
form: {},
|
||||
storageKey: '',
|
||||
selectChangeList: [],
|
||||
switchData: [
|
||||
{id: 'ninetyFiveDay', type: true, name: '95宽带值Mbps/日'},
|
||||
{id: 'ninetyFiveMonth', type: true, name: '95宽带值Mbps/月'},
|
||||
{id: 'packageEnd', type: true, name: '包端宽带值Mbps/日'}
|
||||
],
|
||||
selectChoose: [],
|
||||
lineDataParams: {
|
||||
lineXData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
|
||||
data: [820, 932, 901, 934, 1290, 1330, 1320]
|
||||
},
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
mounted() {
|
||||
this.storageKey = this.$route.query && this.$route.query['storageKey'];
|
||||
if (this.storageKey) {
|
||||
this.paramsData = localStorage.getItem(this.storageKey);
|
||||
if (this.paramsData) {
|
||||
this.processData(JSON.parse(this.paramsData));
|
||||
}
|
||||
}
|
||||
},
|
||||
destroyed() {
|
||||
localStorage.removeItem(this.storageKey);
|
||||
},
|
||||
methods: {
|
||||
processData(list) {
|
||||
this.selectChangeList = list;
|
||||
if (list.length >=2) {
|
||||
this.form.noticeType = [list[0].id, list[1].id];
|
||||
} else {
|
||||
this.form.noticeType = [list[0].id];
|
||||
}
|
||||
this.form.noticeType.forEach(item => {
|
||||
list.some(val => {
|
||||
if (item === val.id) {
|
||||
this.selectChoose.push(val);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
chartDataEvent(val) {
|
||||
// console.log('val===',val);
|
||||
return val;
|
||||
},
|
||||
// 监听事件
|
||||
callback(result, dataVal, formVal) {
|
||||
if (result && result.fnCode) {
|
||||
switch (result.fnCode) {
|
||||
case 'submit':
|
||||
break;
|
||||
case 'cancle':
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
::v-deep .ultabs .el-range-editor .el-range-input {
|
||||
vertical-align: super!important;
|
||||
}
|
||||
::v-deep .ultabs .el-date-editor .el-range-separator {
|
||||
vertical-align: super!important;
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
width: 0px!important;
|
||||
height: 0px!important;
|
||||
}
|
||||
</style>
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="auto" class="demo-ruleForm">
|
||||
<el-col :span="7">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="70px" class="demo-ruleForm">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="节点名称" prop="nodeName">
|
||||
<el-input
|
||||
v-model="queryParams.nodeName"
|
||||
@@ -11,17 +11,7 @@
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item label="硬件SN" prop="hardwareSn">
|
||||
<el-input
|
||||
v-model="queryParams.hardwareSn"
|
||||
placeholder="请输入硬件SN"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="类型" prop="bandwidthType">
|
||||
<el-select
|
||||
v-model="queryParams.bandwidthType"
|
||||
@@ -35,8 +25,8 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7" v-show="queryParams.bandwidthType === '1'">
|
||||
<el-form-item label="95宽带值Mbps/日" prop="bandwidth95Daily">
|
||||
<el-col :span="8" v-show="queryParams.bandwidthType === '1'">
|
||||
<el-form-item label="95宽带值Mbps/日" title="95宽带值Mbps/日" prop="bandwidth95Daily">
|
||||
<el-date-picker
|
||||
v-model="queryParams.bandwidth95Daily"
|
||||
type="daterange"
|
||||
@@ -47,7 +37,7 @@
|
||||
end-placeholder="结束日期"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7" v-show="queryParams.bandwidthType === '2'">
|
||||
<el-col :span="8" v-show="queryParams.bandwidthType === '2'">
|
||||
<el-form-item label="95宽带值Mbps/月" prop="bandwidth95Monthly">
|
||||
<el-date-picker
|
||||
v-model="queryParams.bandwidth95Monthly"
|
||||
@@ -58,7 +48,7 @@
|
||||
end-placeholder="结束月份"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7" v-show="queryParams.bandwidthType === '3'">
|
||||
<el-col :span="8" v-show="queryParams.bandwidthType === '3'">
|
||||
<el-form-item label="包端带宽值Mbps/日" prop="packageBandwidthDaily">
|
||||
<el-date-picker
|
||||
v-model="queryParams.packageBandwidthDaily"
|
||||
@@ -70,7 +60,17 @@
|
||||
end-placeholder="结束日期"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="硬件SN" prop="hardwareSn">
|
||||
<el-input
|
||||
v-model="queryParams.hardwareSn"
|
||||
placeholder="请输入硬件SN"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item class="lastBtnSty">
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
@@ -80,37 +80,6 @@
|
||||
|
||||
<!-- 表格数据 -->
|
||||
<TableList :columns="columns" :config="config" :queryParams="queryParams" :tableList="tableList" @fnClick="callback" @fnRenderList="getList" @value-change="handleValueChange"></TableList>
|
||||
<!-- 图形分析 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body fullscreen>
|
||||
<el-form v-if="open" ref="noticeRef" :model="form" label-width="80px">
|
||||
<el-form-item label="节点名称" prop="noticeType">
|
||||
<el-select v-model="form.noticeType" multiple placeholder="请选择节点名称">
|
||||
<el-option
|
||||
v-for="item in selectChangeList"
|
||||
:key="item.id"
|
||||
:label="item.nodeName"
|
||||
:value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div>
|
||||
<el-switch v-for="item of switchData" v-model="item.type" :activeText="item.name" class="mr20" />
|
||||
<div v-for="(item,index) of selectChoose">
|
||||
<EchartsLine v-show="switchData[0].type" :chartData="chartDataEvent"
|
||||
:lineData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[0].name" class="mt20 mb20" style="width: 100%;height: 420px;border: 1.5px solid #878787;"></EchartsLine>
|
||||
<EchartsLine v-show="switchData[1].type" :chartData="chartDataEvent"
|
||||
:lineData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[1].name" class="mt20 mb20" style="width: 100%;height: 420px;border: 1.5px solid #878787;"></EchartsLine>
|
||||
<EchartsBar v-show="switchData[2].type" :chartData="chartDataEvent"
|
||||
:barData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[2].name" class="mt20 mb20" style="width: 100%;height: 420px;border: 1.5px solid #878787;"></EchartsBar>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<!-- <el-button type="primary" @click="submitForm">确 定</el-button>-->
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -126,23 +95,8 @@
|
||||
data() {
|
||||
return {
|
||||
tableList: [],
|
||||
selectChangeList: [],
|
||||
loading: true,
|
||||
showSearch: true,
|
||||
ids: [],
|
||||
single: true,
|
||||
multiple: true,
|
||||
total: 0,
|
||||
dateRange: [],
|
||||
open: false,
|
||||
title: '',
|
||||
switchData: [
|
||||
{id: 'ninetyFiveDay', type: true, name: '95宽带值Mbps/日'},
|
||||
{id: 'ninetyFiveMonth', type: true, name: '95宽带值Mbps/月'},
|
||||
{id: 'packageEnd', type: true, name: '包端宽带值Mbps/日'}
|
||||
],
|
||||
lineDataParams: {},
|
||||
selectChoose: [],
|
||||
// 列显隐信息
|
||||
columns: {
|
||||
id: {label: `ID`},
|
||||
@@ -179,7 +133,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
form: {},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
@@ -231,40 +184,24 @@
|
||||
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.dateRange = [];
|
||||
this.resetForm("queryRef");
|
||||
this.handleQuery();
|
||||
},
|
||||
|
||||
/** 图形分析 */
|
||||
graphicAnalysis(list) {
|
||||
this.open = true;
|
||||
this.title = "图形分析";
|
||||
this.selectChangeList = list;
|
||||
if (list.length >=2) {
|
||||
this.form.noticeType = [list[0].id, list[1].id];
|
||||
} else {
|
||||
this.form.noticeType = [list[0].id];
|
||||
}
|
||||
this.form.noticeType.forEach(item => {
|
||||
list.some(val => {
|
||||
if (item === val.id) {
|
||||
this.selectChoose.push(val);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
});
|
||||
this.lineDataParams = {
|
||||
lineXData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
|
||||
data: [820, 932, 901, 934, 1290, 1330, 1320]
|
||||
}
|
||||
},
|
||||
|
||||
/** 取消按钮 */
|
||||
cancel() {
|
||||
this.$nextTick(() => {
|
||||
this.open = false;
|
||||
// 生成唯一 key(避免数据冲突)
|
||||
const storageKey = `temp_data_${Date.now()}`;
|
||||
// 1. 将数据存入 localStorage(需序列化)
|
||||
localStorage.setItem(storageKey, JSON.stringify(list));
|
||||
// 1. 用 Vue Router 解析目标路由的完整 URL
|
||||
const routeLocation = this.$router.resolve({
|
||||
name: 'DialogView',
|
||||
query: { storageKey }
|
||||
});
|
||||
// 2. 打开新窗口(routeLocation.href 是完整路径)
|
||||
window.open(routeLocation.href, '_blank');
|
||||
// _blank:新标签页;_self:当前窗口(默认)
|
||||
},
|
||||
|
||||
chartDataEvent(val) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="auto" class="demo-ruleForm">
|
||||
<!-- <el-col :span="7">-->
|
||||
<el-form-item label="节点名称" prop="nodeName">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="auto" class="demo-ruleForm">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="交换机名称" prop="uplinkSwitch">
|
||||
@@ -101,35 +101,6 @@
|
||||
<dict-tag :options="dict.type.rm_topology_type" :value="row.interfaceLinkDeviceType"/>
|
||||
</template>
|
||||
</TableList>
|
||||
<!-- 图形分析 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body fullscreen>
|
||||
<el-form v-if="open" ref="noticeRef" :model="form" label-width="80px">
|
||||
<el-form-item label="节点名称" prop="noticeType">
|
||||
<el-select v-model="form.noticeType" multiple placeholder="请选择节点名称">
|
||||
<el-option
|
||||
v-for="item in selectChangeList"
|
||||
:key="item.id"
|
||||
:label="item.uplinkSwitch"
|
||||
:value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div>
|
||||
<el-switch v-for="item of switchData" v-model="item.type" :activeText="item.name" class="mr20" />
|
||||
<div v-for="(item,index) of selectChoose">
|
||||
<EchartsLine v-show="switchData[0].type" :chartData="chartDataEvent"
|
||||
:lineData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[0].name" class="mt20 mb20" style="width: 100%;height: 420px;border: 1.5px solid #878787;"></EchartsLine>
|
||||
<EchartsLine v-show="switchData[1].type" :chartData="chartDataEvent"
|
||||
:lineData="lineDataParams" :title="'【' + item.nodeName + '】【' + item.businessName + '】' + switchData[1].name" class="mt20 mb20" style="width: 100%;height: 420px;border: 1.5px solid #878787;"></EchartsLine>
|
||||
</div>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<!-- <el-button type="primary" @click="submitForm">确 定</el-button>-->
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -145,22 +116,8 @@
|
||||
data() {
|
||||
return {
|
||||
tableList: [],
|
||||
selectChangeList: [],
|
||||
loading: true,
|
||||
showSearch: true,
|
||||
ids: [],
|
||||
single: true,
|
||||
multiple: true,
|
||||
total: 0,
|
||||
dateRange: [],
|
||||
open: false,
|
||||
title: '',
|
||||
switchData: [
|
||||
{id: 'ninetyFiveDay', type: true, name: '95宽带值Mbps/日'},
|
||||
{id: 'ninetyFiveMonth', type: true, name: '95宽带值Mbps/月'},
|
||||
],
|
||||
lineDataParams: {},
|
||||
selectChoose: [],
|
||||
uplinkList:[], // 交换机名称
|
||||
// 列显隐信息
|
||||
columns: {
|
||||
@@ -199,7 +156,6 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
form: {},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
@@ -242,40 +198,24 @@
|
||||
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.dateRange.value = [];
|
||||
this.resetForm("queryRef");
|
||||
this.handleQuery();
|
||||
},
|
||||
|
||||
/** 图形分析 */
|
||||
graphicAnalysis(list) {
|
||||
this.open = true;
|
||||
this.title = "图形分析";
|
||||
this.selectChangeList = list;
|
||||
if (list.length >=2) {
|
||||
this.form.noticeType = [list[0].id, list[1].id];
|
||||
} else {
|
||||
this.form.noticeType = [list[0].id];
|
||||
}
|
||||
this.form.noticeType.forEach(item => {
|
||||
list.some(val => {
|
||||
if (item === val.id) {
|
||||
this.selectChoose.push(val);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
});
|
||||
this.lineDataParams = {
|
||||
lineXData: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
|
||||
data: [820, 932, 901, 934, 1290, 1330, 1320]
|
||||
}
|
||||
},
|
||||
|
||||
/** 取消按钮 */
|
||||
cancel() {
|
||||
this.$nextTick(() => {
|
||||
this.open = false;
|
||||
// 生成唯一 key(避免数据冲突)
|
||||
const storageKey = `temp_data_${Date.now()}`;
|
||||
// 1. 将数据存入 localStorage(需序列化)
|
||||
localStorage.setItem(storageKey, JSON.stringify(list));
|
||||
// 1. 用 Vue Router 解析目标路由的完整 URL
|
||||
const routeLocation = this.$router.resolve({
|
||||
name: 'DialogView',
|
||||
query: { storageKey }
|
||||
});
|
||||
// 2. 打开新窗口(routeLocation.href 是完整路径)
|
||||
window.open(routeLocation.href, '_blank');
|
||||
// _blank:新标签页;_self:当前窗口(默认)
|
||||
},
|
||||
chartDataEvent(val) {
|
||||
// console.log('val===',val);
|
||||
|
||||
@@ -71,13 +71,13 @@
|
||||
}
|
||||
fnType(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
this.$router.push("/disRevenue/resource/group")
|
||||
this.$router.push("/resource/group")
|
||||
}).catch(() => {
|
||||
this.$modal.msgError("操作失败")
|
||||
});
|
||||
break;
|
||||
case 'cancle':
|
||||
this.$router.push("/disRevenue/resource/group");
|
||||
this.$router.push("/resource/group");
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="130px">
|
||||
<el-form-item label="资源组名称" prop="groupName">
|
||||
<el-col :span="4">
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
},
|
||||
// 返回
|
||||
goBack() {
|
||||
this.$router.push({path:'/disRevenue/resource/monitorStategy'});
|
||||
this.$router.push({path:'/resource/monitorStategy'});
|
||||
},
|
||||
// 监听事件
|
||||
callback(result, dataVal, formVal) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="auto">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="搜索" prop="switchName">
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
},
|
||||
// 返回
|
||||
goBack() {
|
||||
this.$router.push({path:'/disRevenue/resource/monitorTemp'});
|
||||
this.$router.push({path:'/resource/monitorTemp'});
|
||||
},
|
||||
// 监听事件
|
||||
callback(result, dataVal, formVal) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="130px">
|
||||
<el-form-item label="模版名称" prop="switchName">
|
||||
<el-col :span="4">
|
||||
|
||||
@@ -112,13 +112,13 @@
|
||||
}
|
||||
fnType(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
this.$router.push("/disRevenue/resource/register")
|
||||
this.$router.push("/resource/register")
|
||||
}).catch(() => {
|
||||
this.$modal.msgError("操作失败")
|
||||
});
|
||||
break;
|
||||
case 'cancle':
|
||||
this.$router.push("/disRevenue/resource/register")
|
||||
this.$router.push("/resource/register")
|
||||
break;
|
||||
default:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="auto">
|
||||
<el-form-item label="名称" prop="nameKey">
|
||||
<el-col>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<div style="height: 200px;">
|
||||
<EchartsPie v-for="item of dataList" :dataList="item" class="w30 h100 disInlineBlock"></EchartsPie>
|
||||
<EchartsPie v-for="item of dataList" :dataList="item" style="width: 33%;" class="h100 disInlineBlock"></EchartsPie>
|
||||
</div>
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="auto">
|
||||
<el-col :span="7">
|
||||
@@ -102,7 +102,7 @@
|
||||
dataList: [{
|
||||
centerVal: '56',
|
||||
unit: '台',
|
||||
center: ['30%', '50%'],
|
||||
center: ['20%', '50%'],
|
||||
color: ['#31bb42', '#f96602'],
|
||||
data: [
|
||||
{ value: 36, name: '在线服务器' },
|
||||
@@ -111,7 +111,7 @@
|
||||
},{
|
||||
centerVal: '10',
|
||||
unit: '台',
|
||||
center: ['30%', '50%'],
|
||||
center: ['20%', '50%'],
|
||||
color: ['#1c7dbc', '#f80a4f'],
|
||||
data: [
|
||||
{ value: 8, name: '在线交换机' },
|
||||
|
||||
@@ -73,13 +73,13 @@
|
||||
}
|
||||
fnType(dataVal).then(response => {
|
||||
this.$modal.msgSuccess(response.msg);
|
||||
this.$router.push("/disRevenue/resource/topology")
|
||||
this.$router.push("/resource/topology")
|
||||
}).catch(() => {
|
||||
this.$modal.msgError("操作失败")
|
||||
});
|
||||
break;
|
||||
case 'cancle':
|
||||
this.$router.push("/disRevenue/resource/topology");
|
||||
this.$router.push("/resource/topology");
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="app-container pageTopForm">
|
||||
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="130px">
|
||||
<el-form-item label="交换机名称" prop="switchName">
|
||||
<el-col :span="4">
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-login-footer">
|
||||
<span>Copyright © 2018-2025 ruoyi.vip All Rights Reserved.</span>
|
||||
<span>Copyright © 2018-2025 ZhiRongYun All Rights Reserved.</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
</el-form>
|
||||
<!-- 底部 -->
|
||||
<div class="el-register-footer">
|
||||
<span>Copyright © 2018-2025 ruoyi.vip All Rights Reserved.</span>
|
||||
<span>Copyright © 2018-2025 ZhiRongYun All Rights Reserved.</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -7,7 +7,7 @@ function resolve(dir) {
|
||||
|
||||
const CompressionPlugin = require('compression-webpack-plugin')
|
||||
|
||||
const name = process.env.VUE_APP_TITLE || 'SAAS管理平台' // 网页标题
|
||||
const name = process.env.VUE_APP_TITLE || 'SAAS综合管理平台' // 网页标题
|
||||
|
||||
const port = process.env.port || process.env.npm_config_port || 80 // 端口
|
||||
|
||||
@@ -32,9 +32,9 @@ module.exports = {
|
||||
port: port,
|
||||
open: true,
|
||||
proxy: {
|
||||
// detail: https://cli.vuejs.org/config/#devserver-proxy
|
||||
// detail: https://cli.vuejs.org/config/#devserver-proxy http://192.168.9.143:8080
|
||||
[process.env.VUE_APP_BASE_API]: {
|
||||
target: `http://192.168.9.143:8080`,
|
||||
target: `http://192.168.9.137:8080`,
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
['^' + process.env.VUE_APP_BASE_API]: ''
|
||||
|
||||