|
@@ -7,7 +7,11 @@
|
|
</template></Minheader
|
|
</template></Minheader
|
|
> -->
|
|
> -->
|
|
<div class="integration__cont__map__cont">
|
|
<div class="integration__cont__map__cont">
|
|
- <Minheader :is-statuser="true" :is-Journal="true">
|
|
|
|
|
|
+ <Minheader
|
|
|
|
+ :is-statuser="true"
|
|
|
|
+ :is-Journal="true"
|
|
|
|
+ @addJournalForm="addJournalForm"
|
|
|
|
+ >
|
|
<template #header>
|
|
<template #header>
|
|
<div class="status flex-wrap">
|
|
<div class="status flex-wrap">
|
|
<div class="manageTitle">服务拓扑</div>
|
|
<div class="manageTitle">服务拓扑</div>
|
|
@@ -25,10 +29,80 @@
|
|
</template></Minheader
|
|
</template></Minheader
|
|
>
|
|
>
|
|
<div class="integration__cont" ref="chartDom"></div>
|
|
<div class="integration__cont" ref="chartDom"></div>
|
|
|
|
+ <Dialog
|
|
|
|
+ width="1200px"
|
|
|
|
+ :flag="flag"
|
|
|
|
+ :type="type"
|
|
|
|
+ :msgTitle="msgTitle"
|
|
|
|
+ @resetForm="resetForm"
|
|
|
|
+ >
|
|
|
|
+ <div class="diacont">
|
|
|
|
+ <div class="interfaceLog_head flex">
|
|
|
|
+ <div class="interfaceLog_head_time flex-act">
|
|
|
|
+ <div class="header_name">当前服务:Kafka原始报文</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="interfaceLog_head_btn flex">
|
|
|
|
+ <div class="interfaceLog_head_time_start r12">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="timeStart"
|
|
|
|
+ size="default"
|
|
|
|
+ type="datetime"
|
|
|
|
+ placeholder="选择开始日期时间"
|
|
|
|
+ >
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="interfaceLog_head_time_end r16">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="timeEnd"
|
|
|
|
+ size="default"
|
|
|
|
+ type="datetime"
|
|
|
|
+ placeholder="选择结束日期时间"
|
|
|
|
+ >
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ </div>
|
|
|
|
+ <Search
|
|
|
|
+ @getSearchData="getSearchData"
|
|
|
|
+ :isTitle="false"
|
|
|
|
+ @clearSearchData="clearSearchData"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="interfaceLog_content">
|
|
|
|
+ <el-row :gutter="24">
|
|
|
|
+ <el-col :span="19">
|
|
|
|
+ <DataTable
|
|
|
|
+ :tableHeader="state.list"
|
|
|
|
+ :tableData="tableData"
|
|
|
|
+ :tableProperty="{ rowKey: 'ID' }"
|
|
|
|
+ />
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="interfaceLog_content_progress">
|
|
|
|
+ <el-timeline>
|
|
|
|
+ <el-timeline-item
|
|
|
|
+ v-for="(item, index) in preDatas"
|
|
|
|
+ :key="index"
|
|
|
|
+ >
|
|
|
|
+ <div class="list">
|
|
|
|
+ <div class="list_status"></div>
|
|
|
|
+ <div class="list_title">{{ item.title }}</div>
|
|
|
|
+ <div class="list_code">{{ item.code }}</div>
|
|
|
|
+ <div class="list_time">{{ item.time }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-timeline-item>
|
|
|
|
+ </el-timeline>
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </Dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
import Minheader from "@/components/minheader/index.vue";
|
|
import Minheader from "@/components/minheader/index.vue";
|
|
|
|
+import DataTable from "@/components/tableTemp/index.vue";
|
|
|
|
+import Dialog from "@/components/dialog/index.vue";
|
|
import { provide } from "vue";
|
|
import { provide } from "vue";
|
|
import * as echarts from "echarts";
|
|
import * as echarts from "echarts";
|
|
import img1 from "@/assets/integr/jiekou_blue.png";
|
|
import img1 from "@/assets/integr/jiekou_blue.png";
|
|
@@ -41,7 +115,9 @@ import img7 from "@/assets/integr/mysql_blue.png";
|
|
provide("echarts", echarts);
|
|
provide("echarts", echarts);
|
|
const chartDom = ref(null);
|
|
const chartDom = ref(null);
|
|
const myChart = ref(null);
|
|
const myChart = ref(null);
|
|
-
|
|
|
|
|
|
+const flag = ref<Boolean>(false); //弹窗开关
|
|
|
|
+const type = ref<String>(""); //判断是否删除
|
|
|
|
+const msgTitle = ref<String>("查看日志"); //弹窗标题
|
|
const getAssetsFile = (url: string) => {
|
|
const getAssetsFile = (url: string) => {
|
|
return new URL(`../assets/integr/${url}`, import.meta.url).href;
|
|
return new URL(`../assets/integr/${url}`, import.meta.url).href;
|
|
};
|
|
};
|
|
@@ -82,6 +158,64 @@ const mysqlImg = "image://" + reactive(img7);
|
|
|
|
|
|
//存储节点-错误
|
|
//存储节点-错误
|
|
const mysqlImgError = getAssetsFile("mysql_red.png");
|
|
const mysqlImgError = getAssetsFile("mysql_red.png");
|
|
|
|
+
|
|
|
|
+const timeStart = ref<String>("");
|
|
|
|
+const timeEnd = ref<String>("");
|
|
|
|
+const preDatas = ref<Array>([]);
|
|
|
|
+//列表
|
|
|
|
+const tableData = ref([
|
|
|
|
+ {
|
|
|
|
+ name: "测试",
|
|
|
|
+ china: "测试",
|
|
|
|
+ englin: "测试",
|
|
|
|
+ two: "测试",
|
|
|
|
+ three: "测试",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "测试",
|
|
|
|
+ china: "测试",
|
|
|
|
+ englin: "测试",
|
|
|
|
+ two: "测试",
|
|
|
|
+ three: "测试",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: "测试",
|
|
|
|
+ china: "测试",
|
|
|
|
+ englin: "测试",
|
|
|
|
+ two: "测试",
|
|
|
|
+ three: "测试",
|
|
|
|
+ },
|
|
|
|
+]);
|
|
|
|
+//表头
|
|
|
|
+const state = reactive({
|
|
|
|
+ list: [
|
|
|
|
+ { label: "用户", key: "name" },
|
|
|
|
+ { label: "发生时间", key: "china" },
|
|
|
|
+ { label: "发生位置", key: "englin" },
|
|
|
|
+ { label: "成败代码", key: "two" },
|
|
|
|
+ { label: "成败详情", key: "three" },
|
|
|
|
+ ],
|
|
|
|
+ listLoading: true,
|
|
|
|
+});
|
|
|
|
+for (let i = 0; i < 10; i++) {
|
|
|
|
+ const element = {
|
|
|
|
+ action: "采集",
|
|
|
|
+ dataNumber: "000120220307201211011201",
|
|
|
|
+ sourceDataNumber: "BSM",
|
|
|
|
+ time: "2022-03-07 20:00:12",
|
|
|
|
+ result: i % 2 == 0 ? true : false,
|
|
|
|
+ details: "数据格式不正确",
|
|
|
|
+ };
|
|
|
|
+ const obj = {
|
|
|
|
+ title: "更新 Github 模板",
|
|
|
|
+ code: "989665554",
|
|
|
|
+ time: "2022-4-26 15:48:55",
|
|
|
|
+ id: i,
|
|
|
|
+ };
|
|
|
|
+ tableData.value.push(element);
|
|
|
|
+ preDatas.value.push(obj);
|
|
|
|
+}
|
|
|
|
+preDatas.value.splice(5, 10);
|
|
const nodeDataList = ref([
|
|
const nodeDataList = ref([
|
|
{
|
|
{
|
|
name: "首都机场BHS",
|
|
name: "首都机场BHS",
|
|
@@ -642,15 +776,22 @@ const resizeHandler = () => {
|
|
myChart.resize();
|
|
myChart.resize();
|
|
};
|
|
};
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
- console.log(defaultImg);
|
|
|
|
options.series[0].data = nodeDataList;
|
|
options.series[0].data = nodeDataList;
|
|
options.series[0].links = datas;
|
|
options.series[0].links = datas;
|
|
options.series = options.series.concat(getCoordDataList());
|
|
options.series = options.series.concat(getCoordDataList());
|
|
myChart.value = echarts.init(chartDom.value);
|
|
myChart.value = echarts.init(chartDom.value);
|
|
myChart.value.setOption(options, true);
|
|
myChart.value.setOption(options, true);
|
|
window.addEventListener("resize", resizeHandler);
|
|
window.addEventListener("resize", resizeHandler);
|
|
- console.log(defaultImg);
|
|
|
|
});
|
|
});
|
|
|
|
+//新增
|
|
|
|
+const addJournalForm = () => {
|
|
|
|
+ msgTitle.value = "查看日志";
|
|
|
|
+ flag.value = true;
|
|
|
|
+};
|
|
|
|
+//取消
|
|
|
|
+const resetForm = () => {
|
|
|
|
+ flag.value = false;
|
|
|
|
+};
|
|
// console.log(nodeDataList.value);
|
|
// console.log(nodeDataList.value);
|
|
// options.value.series[0].data = nodeDataList.value;
|
|
// options.value.series[0].data = nodeDataList.value;
|
|
// options.value.series[0].links = datas.value;
|
|
// options.value.series[0].links = datas.value;
|
|
@@ -668,6 +809,11 @@ onMounted(() => {
|
|
.integration__cont__map__cont {
|
|
.integration__cont__map__cont {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|
|
|
|
+ .header_name {
|
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ color: #303133;
|
|
|
|
+ }
|
|
.integration__cont {
|
|
.integration__cont {
|
|
background: #ffffff;
|
|
background: #ffffff;
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
@@ -700,4 +846,9 @@ onMounted(() => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+.interfaceLog_content {
|
|
|
|
+ margin-top: 24px;
|
|
|
|
+ // height: 452px;
|
|
|
|
+ // overflow: hidden;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|