Procházet zdrojové kódy

通信状态几乎完成,还差参数

zlSun před 3 měsíci
rodič
revize
b2da364047

+ 0 - 1
.idea/vcs.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
     <mapping directory="$PROJECT_DIR$" vcs="Git" />
   </component>
 </project>

+ 46 - 51
src/views/intelESMProcess/index.vue

@@ -1,15 +1,13 @@
 <template>
   <el-col style="height:100%;">
     <el-row :gutter="20" style="height: 50%;">
-
       <el-col :span="12" style="height:100%;">
-        <el-card class="box-card" style="width: 100%;height: 100%">
-          <div slot="header" class="clearfix">
+        <el-card class="box-card" style="width: 100%;">
+          <div slot="header" class="clearfix" style="height: 28px">
             <span>雷达脉冲数据</span>
           </div>
-          <div style="width: 100%">
-            <div style="max-height: 260px; overflow-y: auto; margin-bottom: 10px;"> <!-- 设置最大高度并启用 Y 轴滚动 -->
-              <el-table :data="this.singleData" style="width: 100%">
+          <div style="height: calc(100% - 40px)">
+              <el-table :data="this.singleData" height="100%">
                 <el-table-column label="序号" width="55" type="index" :index='(index) => { return (index + 1) + (radarPageIndex - 1) * radarPageSize }'></el-table-column>
                 <el-table-column prop="type" label="类型" width="55"></el-table-column>
                 <el-table-column prop="environment" label="环境" width="55"></el-table-column>
@@ -21,8 +19,8 @@
                 <el-table-column prop="from" label="发送方"></el-table-column>
                 <el-table-column prop="to" label="接收方"></el-table-column>
               </el-table>
-            </div>
-
+          </div>
+          <div style="height: 30px">
             <el-pagination
                 background
                 @size-change="radarSizeChangeHandle"
@@ -39,30 +37,29 @@
 
       <el-col :span="12" style="height:100%;">
         <el-card class="box-card" style="width: 100%;height: 100%">
-          <div slot="header" class="clearfix">
+          <div slot="header" class="clearfix" style="height: 28px">
             <span>电子干扰数据</span>
           </div>
-          <div style="width: 100%;">
-            <div style="max-height: 260px; overflow-y: auto; margin-bottom: 10px;height: 100%"> <!-- 设置最大高度并启用 Y 轴滚动 -->
-              <el-table :data="this.interferenceData" style="width: 100%">
-                <el-table-column label="序号" type="index"  width="55" :index='(index) => { return (index + 1) + (interferencePageIndex - 1) * interferencePageSize }'></el-table-column>
-                <el-table-column prop="type" label="类型" width="80"></el-table-column>
-                <el-table-column prop="environment" label="环境" width="55"></el-table-column>
-                <el-table-column prop="area" label="区域" width="55"></el-table-column>
-                <el-table-column prop="strategy" label="干扰策略" width="80"></el-table-column>
-                <el-table-column prop="target" label="干扰目标" width="80"></el-table-column>
-                <el-table-column prop="isCollaborated" label="是否协同干扰" width="110">
-                  <template v-slot="scope">
-                       <span v-if="scope.row.isCollaborated === 1">是</span>
-                       <span v-else>否</span>
-                  </template>
-                </el-table-column>
-                <el-table-column prop="pri" label="PRI(MHz)"></el-table-column>
-                <el-table-column prop="from" label="发送方"></el-table-column>
-                <el-table-column prop="to" label="接收方"></el-table-column>
-              </el-table>
-            </div>
-
+          <div style="height: calc(100% - 40px)">
+            <el-table :data="this.interferenceData" height="100%">
+              <el-table-column label="序号" type="index"  width="55" :index='(index) => { return (index + 1) + (interferencePageIndex - 1) * interferencePageSize }'></el-table-column>
+              <el-table-column prop="type" label="类型" width="80"></el-table-column>
+              <el-table-column prop="environment" label="环境" width="55"></el-table-column>
+              <el-table-column prop="area" label="区域" width="55"></el-table-column>
+              <el-table-column prop="strategy" label="干扰策略" width="80"></el-table-column>
+              <el-table-column prop="target" label="干扰目标" width="80"></el-table-column>
+              <el-table-column prop="isCollaborated" label="是否协同干扰" width="110">
+                <template v-slot="scope">
+                     <span v-if="scope.row.isCollaborated === 1">是</span>
+                     <span v-else>否</span>
+                </template>
+              </el-table-column>
+              <el-table-column prop="pri" label="PRI(MHz)"></el-table-column>
+              <el-table-column prop="from" label="发送方"></el-table-column>
+              <el-table-column prop="to" label="接收方"></el-table-column>
+            </el-table>
+          </div>
+          <div style="height: 30px;">
             <el-pagination
                 background
                 @size-change="interferenceSizeChangeHandle"
@@ -79,29 +76,27 @@
     </el-row>
 
     <el-row style="height: 50%;">
-
-      <el-card class="box-card" style="width: 100%;height: 100%">
-        <div slot="header" class="clearfix">
+      <el-card class="box-card" style="width: 100%;">
+        <div slot="header" class="clearfix" style="height: 28px">
           <span>综合/战术/自由</span>
         </div>
-        <div style="width: 100%">
-          <div style="max-height: 260px; overflow-y: auto; margin-bottom: 10px"> <!-- 设置最大高度并启用 Y 轴滚动 -->
-            <el-table :data="this.otherData" style="height: 100%">
-              <el-table-column label="序号" type="index" :index='(index) => { return (index + 1) + (otherPageIndex - 1) * otherPageSize }'></el-table-column>
-              <el-table-column prop="type" label="消息类型"></el-table-column>
-              <el-table-column prop="priority" label="优先级"></el-table-column>
-              <el-table-column prop="isBroadcast" label="是否广播">
-                <template v-slot="scope">
-                  <span v-if="scope.row.isBroadcast === 1">是</span>
-                  <span v-else>否</span>
-                </template>
-              </el-table-column>
-              <el-table-column prop="from" label="发送方"></el-table-column>
-              <el-table-column prop="to" label="接收方"></el-table-column>
-              <el-table-column prop="message" label="消息内容"></el-table-column>
-            </el-table>
-          </div>
-
+        <div style="height: calc(100% - 30px)">
+          <el-table :data="this.otherData" height="100%">
+            <el-table-column label="序号" type="index" :index='(index) => { return (index + 1) + (otherPageIndex - 1) * otherPageSize }'></el-table-column>
+            <el-table-column prop="type" label="消息类型"></el-table-column>
+            <el-table-column prop="priority" label="优先级"></el-table-column>
+            <el-table-column prop="isBroadcast" label="是否广播">
+              <template v-slot="scope">
+                <span v-if="scope.row.isBroadcast === 1">是</span>
+                <span v-else>否</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="from" label="发送方"></el-table-column>
+            <el-table-column prop="to" label="接收方"></el-table-column>
+            <el-table-column prop="message" label="消息内容"></el-table-column>
+          </el-table>
+        </div>
+        <div style="height: 30px">
           <el-pagination
               background
               @size-change="otherSizeChangeHandle"

+ 111 - 159
src/views/intelESMProcess/intelGroup.vue

@@ -1,94 +1,94 @@
 <template>
-    <div>
+    <div style="height: 100%">
       <!-- 下拉框选择功能模块 -->
-      <el-select v-model="activeMenu" placeholder="选择功能模块" class="dropdown-menu" @change="handleMenuChange">
-        <el-option label="网络组划分" value="1" />
-        <el-option label="网络参数配置" value="2" />
-        <el-option label="网络拓扑展示" value="3" />
-      </el-select>
-
+      <div class="flex-container">
+        <el-select v-model="activeMenu" placeholder="选择功能模块" class="dropdown-menu" @change="handleMenuChange">
+          <el-option label="网络组划分" value="1" />
+          <el-option label="网络参数配置" value="2" />
+          <el-option label="网络拓扑展示" value="3" />
+        </el-select>
+        <div v-if="activeMenu === '1'" style="height: 50px">
+          <el-button type="primary" @click="addNetworkGroup">新增网络组</el-button>
+        </div>
+      </div>
       <!-- 主内容区 -->
-      <div style="width: 100%" class="main-content">
-        <div v-if="activeMenu === '1'" class="parent-content">
-            <!-- 网络组划分 -->
-            <el-row class="toolbar">
-              <el-button type="primary" @click="addNetworkGroup">新增网络组</el-button>
-            </el-row>
-            <div class="table-wrapper">
-<!--              这一行限制了表格的最大长度,但我不知道怎么弄,只能给个固定值。毕竟我不会前端-->
-              <el-table :data="networkGroups" style="overflow-y: auto" class="table-temp">
-                <el-table-column prop="id" label="ID"/>
-                <el-table-column prop="type" label="平台类型" >
-                  <template slot-scope="scope">
-                    {{ getDisplayType(scope.row.type) }}
-                  </template>
-                </el-table-column>
-                <el-table-column prop="name" label="网络组名称" />
-                <el-table-column prop="mainStation" label="主站" />
-                <el-table-column prop="communication" label="通信状态" >
-                  <template slot-scope="scope">
-                    {{ scope.row.communication ? '启用' : '禁用' }}
-                  </template>
-                </el-table-column>
-                <el-table-column label="操作" width="180px" fixed="right">
-                  <template slot-scope="scope">
-                    <el-button @click="editNetworkGroup(scope.row)">编辑</el-button>
-                    <el-button type="danger" @click="deleteNetworkGroup(scope.row.id)">删除</el-button>
-                  </template>
-                </el-table-column>
-              </el-table>
-            </div>
-            <el-dialog :visible.sync="dialogVisible">
-              <template #title>   <!--使用插槽,把标题颜色改成白色,便于看清字体-->
-                <span style="color: white;">{{currentNetworkGroup.id ==null? "新增":"修改"}}网络组</span>
-              </template>
-              <el-form :model="currentNetworkGroup" label-width="120px">
-                <el-form-item label="ID">
-                  <el-input v-model="currentNetworkGroup.id" disabled />
-                </el-form-item>
-                <el-form-item label="平台类型">
-                  <el-select v-model="currentNetworkGroup.type" placeholder="选择平台类型">
-                    <el-option label="干扰方" value="interference" />
-                    <el-option label="雷达方" value="radar" />
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="网络组名称" >
-                  <el-input v-model="currentNetworkGroup.name" />
-                </el-form-item>
-                <el-form-item label="主站">
-                  <el-select v-model="currentNetworkGroup.mainStation" placeholder="请选择目标主站">
-                    <el-option v-for="item in mainStationList" :key="item" :label="item" :value="item"/>
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="通信状态">
-                  <el-select v-model="currentNetworkGroup.communication" placeholder="选择通信状态">
-                    <el-option label="启用" value="启用" />
-                    <el-option label="禁用" value="禁用" />
-                  </el-select>
-                </el-form-item>
-              </el-form>
-              <span slot="footer" class="dialog-footer">
+      <div style="height: calc(100% - 50px)" class="main-content">
+        <div v-if="activeMenu === '1'" style="height: 100%" >
+          <div style="height: calc(100% - 60px)">
+            <el-table :data="networkGroups" height="100%" style="width: 100%" >
+              <el-table-column prop="id" label="ID"/>
+              <el-table-column prop="type" label="平台类型" >
+                <template slot-scope="scope">
+                  {{ getDisplayType(scope.row.type) }}
+                </template>
+              </el-table-column>
+              <el-table-column prop="name" label="网络组名称" />
+              <el-table-column prop="mainStation" label="主站" />
+              <el-table-column prop="communication" label="通信状态" >
+                <template slot-scope="scope">
+                  {{ scope.row.communication ? '启用' : '禁用' }}
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" width="180px" fixed="right">
+                <template slot-scope="scope">
+                  <el-button @click="editNetworkGroup(scope.row)">编辑</el-button>
+                  <el-button type="danger" @click="deleteNetworkGroup(scope.row.id)">删除</el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+          <div style="height: 30px;">
+            <el-pagination
+                class="pagination-container"
+                background
+                @size-change="sizeChangeHandle"
+                @current-change="currentChangeHandle"
+                :current-page="pageIndex"
+                :page-sizes="[10, 20, 50, 100]"
+                :page-size="pageSize"
+                :total="totalPage"
+                layout="total, sizes, prev, pager, next, jumper">
+            </el-pagination>
+          </div>
+          <el-dialog :visible.sync="dialogVisible">
+            <template #title>   <!--使用插槽,把标题颜色改成白色,便于看清字体-->
+              <span style="color: white;">{{currentNetworkGroup.id ==null? "新增":"修改"}}网络组</span>
+            </template>
+            <el-form :model="currentNetworkGroup" label-width="120px">
+              <el-form-item label="ID">
+                <el-input v-model="currentNetworkGroup.id" disabled />
+              </el-form-item>
+              <el-form-item label="平台类型">
+                <el-select v-model="currentNetworkGroup.type" placeholder="选择平台类型">
+                  <el-option label="干扰方" value="interference" />
+                  <el-option label="雷达方" value="radar" />
+                </el-select>
+              </el-form-item>
+              <el-form-item label="网络组名称" >
+                <el-input v-model="currentNetworkGroup.name" />
+              </el-form-item>
+              <el-form-item label="主站">
+                <el-select v-model="currentNetworkGroup.mainStation" placeholder="请选择目标主站">
+                  <el-option v-for="item in mainStationList" :key="item" :label="item" :value="item"/>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="通信状态">
+                <el-select v-model="currentNetworkGroup.communication" placeholder="选择通信状态">
+                  <el-option label="启用" value="启用" />
+                  <el-option label="禁用" value="禁用" />
+                </el-select>
+              </el-form-item>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
                 <el-button @click="dialogVisible = false">取 消</el-button>
                 <el-button type="primary" @click="saveCurrentNetworkGroup">确 定</el-button>
               </span>
-            </el-dialog>
-
-          <el-pagination
-              class="pagination-container"
-              background
-              @size-change="sizeChangeHandle"
-              @current-change="currentChangeHandle"
-              :current-page="pageIndex"
-              :page-sizes="[10, 20, 50, 100]"
-              :page-size="pageSize"
-              :total="totalPage"
-              layout="total, sizes, prev, pager, next, jumper">
-          </el-pagination>
+          </el-dialog>
         </div>
 
-        <div v-if="activeMenu === '2'" class="parent-content">
-          <div class="table-wrapper">
-            <el-table :data="networkParams" class="table-temp">
+        <div v-if="activeMenu === '2'" style="height: 100%">
+          <div style="height: calc(100% - 60px)">
+            <el-table :data="networkParams" height="100%">
               <el-table-column prop="id" label="网络组ID" />
               <el-table-column prop="name" label="网络组名称" />
               <el-table-column prop="platformSet" label="平台ID" >
@@ -122,7 +122,19 @@
               </el-table-column>
             </el-table>
           </div>
-
+          <div style="height: 30px">
+            <el-pagination
+                class="pagination-container"
+                background
+                @size-change="paramsSizeChangeHandle"
+                @current-change="paramsCurrentChangeHandle"
+                :current-page="paramsPageIndex"
+                :page-sizes="[10, 20, 50, 100]"
+                :page-size="paramsPageSize"
+                :total="paramsTotalPage"
+                layout="total, sizes, prev, pager, next, jumper">
+            </el-pagination>
+          </div>
           <el-dialog :visible.sync="paramsDialogVisible">
             <template #title>   <!--使用插槽,把标题颜色改成白色,便于看清字体-->
               <span style="color: white;">配置网络参数</span>
@@ -137,10 +149,10 @@
               </el-form-item>
 
               <el-form-item label="参与平台" >
-                  <el-select v-model="currentNetworkParam.platformSet" placeholder="请选择参与平台" multiple>
-                    <el-option v-for="item in stationList"
-                               :key="item.id" :label="item.id" :value="item.id" :disabled="item.disabled"/>
-                  </el-select>
+                <el-select v-model="currentNetworkParam.platformSet" placeholder="请选择参与平台" multiple>
+                  <el-option v-for="item in stationList"
+                             :key="item.id" :label="item.id" :value="item.id" :disabled="item.disabled"/>
+                </el-select>
               </el-form-item>
               <el-form-item label="参数">
                 <el-input v-model="currentNetworkParam.params" />
@@ -151,18 +163,6 @@
               <el-button type="primary" @click="editNetworkParamsImpl">确 定</el-button>
             </span>
           </el-dialog>
-
-          <el-pagination
-              class="pagination-container"
-              background
-              @size-change="paramsSizeChangeHandle"
-              @current-change="paramsCurrentChangeHandle"
-              :current-page="paramsPageIndex"
-              :page-sizes="[10, 20, 50, 100]"
-              :page-size="paramsPageSize"
-              :total="paramsTotalPage"
-              layout="total, sizes, prev, pager, next, jumper">
-          </el-pagination>
         </div>
 
         <div v-if="activeMenu === '3'">
@@ -190,23 +190,6 @@
               </el-card>
             </el-col>
           </el-row>
-<!--          <div class="topology-container">-->
-<!--            <div v-if="topologyView === '全部展示'">-->
-<!--              <span>显示所有网络组的拓扑图</span>-->
-<!--              <div id="allEchart" style="display: flex; height: 500px;">-->
-<!--                <div id="radarEchart" style="flex: 1; border-right: 1px solid #ccc;"></div>-->
-<!--                <div id="interferenceEchart" style="flex: 1;"></div>-->
-<!--              </div>-->
-<!--            </div>-->
-<!--            <div v-if="topologyView === '干扰方展示'">-->
-<!--              <span>显示干扰方网络组的拓扑图</span>-->
-<!--              <div id="interferenceEchart" style="width: 100%; height: 500px;"></div>-->
-<!--            </div>-->
-<!--            <div v-if="topologyView === '雷达方展示'">-->
-<!--              <span>显示雷达方网络组的拓扑图</span>-->
-<!--              <div id="radarEchart" style="width: 100%; height: 500px;"></div>-->
-<!--            </div>-->
-<!--          </div>-->
         </div>
       </div>
     </div>
@@ -256,23 +239,6 @@
           });
         }
       },
-      // topologyView(newVal) {
-      //   this.interferenceEchart = null;
-      //   this.radarEchart = null;
-      //   if (newVal === '干扰方展示') {
-      //     this.$nextTick(() => {
-      //       this.initInterferenceChart(); // 在 DOM 更新后调用初始化
-      //     });
-      //   } else if (newVal === '雷达方展示') {
-      //     this.$nextTick(() => {
-      //       this.initRadarChart();
-      //     })
-      //   } else {
-      //     this.$nextTick(() =>{
-      //       this.echartsInit();
-      //     })
-      //   }
-      // }
     },
     created() {
       this.getDataList();
@@ -528,7 +494,6 @@
           }).then(({data})=>{
             if (data && data.code === 0) {
               this.stationList = data.data;
-              console.log("before",this.stationList)
               for (let i = 0; i < this.stationList.length; i++) {
                 const station = this.stationList[i];
                 if (this.currentNetworkParam.platformSet.includes(station.id)) {
@@ -598,17 +563,10 @@
           url: this.$http.adornUrl("/network/getInterferChartInfo"),
           method: "get",
         }).then(({data})=> {
-          console.log(data)
-          console.log(data && data.code===0)
           if (data && data.code === 0) {
-            console.log("indata")
             this.interferenceNodes= data.nodes;
             this.interferenceEdges= data.edges;
-            console.log("interferenceEchart",this.interferenceEchart)
             if(this.interferenceEchart == null){
-              console.log("increate")
-              console.log("node",this.interferenceNodes)
-              console.log("edge",this.interferenceEdges)
               this.interferenceEchart = this.$echarts.init(dom);
               const interferOption={
                 title: {
@@ -675,16 +633,11 @@
           url: this.$http.adornUrl("/network/getRadarChartInfo"),
           method: "get",
         }).then(({data})=> {
-          console.log(data)
           if (data && data.code === 0) {
             this.radarNodes= data.nodes;
             this.radarEdges= data.edges;
 
-            console.log("radarChart",this.radarEchart)
             if(this.radarEchart == null){
-              console.log("increate")
-              console.log(this.radarNodes)
-              console.log(this.radarEdges)
               this.radarEchart = this.$echarts.init(dom);
               const radarOption= {
                 title: {
@@ -757,14 +710,14 @@
     margin-top: 20px; /* 可选:添加上边距 */
   }
   .dropdown-menu {
-    margin: 20px;
+    margin-left: 20px;
     width: 200px;
+    height: 50px;
   }
   .main-content {
-    padding: 20px;
-  }
-  .toolbar {
-    margin-bottom: 20px;
+    margin-left: 20px;
+    margin-right: 20px;
+    margin-bottom: 10px;
   }
   .dialog-footer {
     text-align: right;
@@ -775,13 +728,12 @@
     height: 500px;
     text-align: center;
   }
-  .table-wrapper{
-    max-height: 400px; /* 设置表格最大高度,超过会出现滚动条 */
-    overflow-y: auto;
-    margin-bottom: 20px;
+  .el-table__fixed-right-patch{
+    background: none;
   }
-  .table-temp{
-    width: 100%;
-    padding: 10px;
+  .flex-container {
+    display: flex;
+    align-items: center; /* 垂直居中对齐 */
+    gap: 10px; /* 元素之间的间距 */
   }
   </style>

+ 200 - 357
src/views/networkManagement/index.vue

@@ -5,28 +5,20 @@
         <el-col :span="8" style="height: 100%">
           <el-card class="tableHeight">
             <div slot="header" class="clearfix">
-              <span>链路参数设置</span>
-              <el-select  v-model="selectedNode" size="mini" style="width: 40%;">
-                    <el-option v-for="item in nodes" :key="item.name" :label="item.name"
-                      :value="item.name"></el-option>
+              <span>网络组参数设置</span>
+              <el-select  v-model="selectedGroupId" size="mini" style="width: 40%;float: right;background-color: #8CC0FB;"
+              @change="selectChange">
+                    <el-option v-for="item in networkGroupList"
+                               :key="item.id"
+                               :label="item.name"
+                               :value="item.id"/>
                   </el-select>
-              <el-button size="mini" type="success" style="float: right" @click="handleEdit">变更</el-button>
             </div>
-            <el-table height="100%" :data="Params" style="width: 100%" border fit size="mini">
-              <el-table-column width="110" prop="key" label="属性"></el-table-column>
-              <el-table-column width="100" prop="value" label="值"></el-table-column>
-              <el-table-column label="操作">
+            <el-table height="90%" :data="Params" style="width: 100%;overflow-y: auto"  fit size="mini">
+              <el-table-column width="80" prop="key" label="属性"></el-table-column>
+              <el-table-column width="80" prop="value" label="值"></el-table-column>
+              <el-table-column label="操作" align="center">
                 <template slot-scope="scope">
-                  <!-- <el-select v-if="scope.row.key === '平台身份'" v-model="linkVUProps.platInfo" size="mini"
-                placeholder="选择平台身份">
-                <el-option v-for="item in platInfoOptions" :key="item.value" :label="item.label"
-                  :value="item.value"></el-option>
-              </el-select> -->
-                  <!-- <el-select v-if="scope.row.key === '入网状态'" v-model="linkVUProps.linkEdit" size="mini"
-                placeholder="选择入网状态">
-                <el-option v-for="item in linkEditOptions" :key="item.value" :label="item.label"
-                  :value="item.value"></el-option>
-              </el-select> -->
                   <el-switch v-if="scope.row.key === '链路开关'" active-text="开" inactive-text="关"
                     v-model="linkVUProps.linkSwitchBoolean" :change="switchChange()">
                   </el-switch>
@@ -46,136 +38,109 @@
                 </template>
               </el-table-column>
             </el-table>
+            <div >
+              <el-button size="mini" type="success" style="float: right"
+                         :disabled="!editable">修改参数</el-button>
+              <el-button size="mini" type="info" style="float: right"
+                         :disabled="editable()"
+                         @click="getParams"
+              >刷新</el-button>
+            </div>
           </el-card>
         </el-col>
         <el-col :span="16" style="height: 100%">
-          <el-card class="radar">
-            <div slot="header" class="clearfix">
+          <el-card class="radar" border>
+            <div slot="header" class="clearfix" >
               <span>通信状态显示</span>
             </div>
             <div class="echarts-box">
-              <div id="radarEchart"></div>
+              <div ref="chart" id="radarEchart"></div>
             </div>
           </el-card>
         </el-col>
       </el-row>
       <el-row style="height: calc(34% - 6px); margin-top: 6px;" :gutter="10">
         <el-card class="box-card">
-          <div slot="header" class="clearfix">
+          <div slot="header" class="clearfix" style="height: 28px">
             <span>已接收消息</span>
           </div>
-          <el-table :data="inbox"   size="mini" style="overflow-y: auto;">
-            <el-table-column type="selection" width="55">
-            </el-table-column>
+          <el-table :data="receivedMessage"   size="mini" height="tableHeight">
             <el-table-column prop="time" label="时间"></el-table-column>
-            <el-table-column prop="domain" label="传输双方" ></el-table-column>
-            <el-table-column prop="topic" label="主题"></el-table-column>
-            <el-table-column fixed="right" label="操作" width="150">
-              <template slot-scope="scope">
-                <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
-                <el-button @click="handleClick(scope.row)" type="text" size="small">忽略</el-button>
-              </template>
+            <el-table-column prop="translation" label="传输双方" ></el-table-column>
+            <el-table-column prop="type" label="主题"></el-table-column>
+            <el-table-column prop="status" label="状态" width="150">
             </el-table-column>
           </el-table>
         </el-card>
       </el-row>
     </el-col>
-    <el-col :span="6" style="height: 100%">
-      <el-row style="height: 36%">
+    <el-col :span="6" style="height: 100%;overflow-y: auto">
+      <el-row style="height: calc(36%)">
         <el-card class="box-card">
-          <div slot="header" class="clearfix">
+          <div slot="header" class="clearfix" style="height: 28px">
             <span>已发送消息</span>
-            <el-button size="mini" type="success" style="float: right; margin-top: 1px;"
-              @click="sendMessage">手动发送</el-button>
           </div>
-          <el-table :data="outbox" border fit size="mini">
+          <el-table :data="sendMessage" fit size="mini" height="sendMessageHeight">
             <el-table-column width="80" prop="time" label="时间"></el-table-column>
-            <el-table-column width="90" prop="domain" label="域"></el-table-column>
-            <el-table-column prop="topic" label="主题"></el-table-column>
+            <el-table-column width="90" prop="translation" label="传输双方"></el-table-column>
+            <el-table-column prop="type" label="主题"></el-table-column>
             <el-table-column width="60" prop="status" label="状态"></el-table-column>
           </el-table>
         </el-card>
       </el-row>
       <el-row style="height: calc(64% - 6px); margin-top: 6px;">
         <el-card class="target">
-          <div slot="header" class="clearfix">
+          <div slot="header" class="clearfix" style="height: 28px">
             <span>成员列表</span>
           </div>
-          <el-table height="100%" :data="VUStatus" border fit size="mini">
-            <el-table-column prop="platID" label="平台ID"> </el-table-column>
+          <el-table height="tableHeight" :data="members" border fit size="mini">
+            <el-table-column prop="id" label="平台ID"> </el-table-column>
             <el-table-column prop="isOnline" label="是否在网"> </el-table-column>
-            <el-table-column prop="TransBW" label="可用带宽"> </el-table-column>
-            <el-table-column prop="isAccess" label="连接方式"> </el-table-column>
+            <el-table-column prop="status" label="静默状态"> </el-table-column>
+            <el-table-column prop="linkModel" label="连接方式"> </el-table-column>
           </el-table>
         </el-card>
       </el-row>
     </el-col>
-
-    <!-- <el-col :span="6" style="height: 100%">
-      <el-card class="tableHeight">
-        <div slot="header" class="clearfix">
-          <span>链路状态</span>
-        </div>
-        <el-table height="100%" :data="JStatus" v-if="this.currentLink === 2" size="small" border fit>
-          <el-table-column prop="key" label="属性"></el-table-column>
-          <el-table-column prop="value" label="值"></el-table-column>
-        </el-table>
-          <el-table height="100%" :data="VUStatus" v-if="this.currentLink === 1" size="small" border fit>
-          <el-table-column prop="key" label="属性"></el-table-column>
-          <el-table-column prop="value" label="值"></el-table-column>
-        </el-table>
-      </el-card>
-    </el-col> -->
-
   </el-row>
 </template>
 
 <script>
-import { mapGetters } from "vuex";
 import {Message} from "element-ui";
 export default {
-  computed: {
-    ...mapGetters([
-      "map",
-      "init",
-      "platforms",
-      "platformID",
-      "JParams",
-      "JStatus",
-      "VUParams",
-      "VUStatus",
-    ]),
-  },
-  watch: {
-    init: {
-      handler: function (val, oldVal) {
-        this.setTimer();
-      },
-    },
-    VUParams: {
-      handler: function (val, oldVal) { },
-    },
-  },
   data() {
     return {
-      currentLink: 1,
-      Params:[{
-            key:"链路开关",
-            value:"开"
-        },
+      selectedGroupId: null,
+      selectedGroup: null,
+      networkGroupList: [],
+
+      chartInstance: null,
+      nodes: [],
+      edges: [],
+
+      sendMessage: [],
+      receivedMessage: [],
+      members: [],
+
+      tableHeight: "calc(100vh - 30px)",
+
+      Params: [{
+        key: "链路开关",
+        value: "开"
+      },
         {
-            key:"静默状态",
-            value:"非静默"
+          key: "静默状态",
+          value: "非静默"
         },
         {
-            key:"通信速率",
-            value:"速率1"
+          key: "通信速率",
+          value: "速率1"
         },
         {
-            key:"传输模式",
-            value:"模式1"
+          key: "传输模式",
+          value: "模式1"
         }
-    ],
+      ],
       linkVUProps: {
         linkSwitch: 1,
         linkSilent: 1,
@@ -193,205 +158,165 @@ export default {
         WireLessStatusBoolean: true,
         PlatType: null,
       },
-      linkEditOptions: [
-        { value: 1, label: "入网" },
-        { value: 2, label: "退网" },
-        { value: 3, label: "变更身份" },
-      ],
-      platInfoOptions: [
-        { value: 1, label: "长机" },
-        { value: 2, label: "僚机" },
-        { value: 3, label: "主站" },
-        { value: 4, label: "从站" },
-      ],
       linkVUSpeedOptions: [
-        { value: 0, label: "无报告" },
-        { value: 1, label: "2.4kbps" },
-        { value: 2, label: "4.8kbps" },
-        { value: 3, label: "6.4kbps" },
-        { value: 4, label: "128kbps" },
-        { value: 5, label: "256kbps" },
-        { value: 6, label: "512kbps" },
-        { value: 7, label: "1Mbps" },
-        { value: 8, label: "2Mbps" },
+        {value: 0, label: "无报告"},
+        {value: 1, label: "2.4kbps"},
+        {value: 2, label: "4.8kbps"},
+        {value: 3, label: "6.4kbps"},
+        {value: 4, label: "128kbps"},
+        {value: 5, label: "256kbps"},
+        {value: 6, label: "512kbps"},
+        {value: 7, label: "1Mbps"},
+        {value: 8, label: "2Mbps"},
       ],
       linkVUQualityOptions: [
-        { value: 1, label: "可靠性" },
-        { value: 2, label: "实时性" },
-      ],
-      frequencevalue: "",
-      workvalue: "",
-      frequenceAverageShow: false,
-      radarEchart: null,
-      linkOptions: [
-        {
-          linkID: 1,
-          linkName: "V/U",
-        },
-        {
-          linkID: 2,
-          linkName: "J",
-        },
-        {
-          linkID: 3,
-          linkName: "ZY",
-        },
+        {value: 1, label: "可靠性"},
+        {value: 2, label: "实时性"},
       ],
-
-      groupTable: [],
-      selectedNode: "",
-      nodes: [
-        { name: "地面控制站" },
-        { name: "雷达平台-101" },
-        { name: "雷达平台-102" },
-        { name: "雷达平台-103" },
-        { name: "雷达平台-104" },
-        { name: "雷达平台-105" },
-        { name: "雷达平台-106" },
-        { name: "雷达平台-107" },
-        { name: "雷达平台-108" },
-        { name: "雷达平台-109" },
-        { name: "雷达平台-110" },
-        { name: "接入终端-201" },
-        { name: "接入终端-202" },
-        { name: "接入终端-203" },
-      ],
-      edges: [
-        { source: "接入终端-201", target: "雷达平台-103" },
-        { source: "接入终端-202", target: "雷达平台-105" },
-        { source: "接入终端-203", target: "雷达平台-110" },
-        { source: "地面控制站", target: "雷达平台-102" },
-        { source: "地面控制站", target: "雷达平台-107" },
-        { source: "地面控制站", target: "雷达平台-109" },
-        { source: "雷达平台-101", target: "雷达平台-102" },
-        { source: "雷达平台-101", target: "雷达平台-103" },
-        { source: "雷达平台-101", target: "雷达平台-104" },
-        { source: "雷达平台-102", target: "雷达平台-103" },
-        { source: "雷达平台-102", target: "雷达平台-104" },
-        { source: "雷达平台-103", target: "雷达平台-104" },
-        { source: "雷达平台-105", target: "雷达平台-106" },
-        { source: "雷达平台-105", target: "雷达平台-107" },
-        { source: "雷达平台-106", target: "雷达平台-107" },
-        { source: "雷达平台-108", target: "雷达平台-109" },
-        { source: "雷达平台-108", target: "雷达平台-110" },
-        { source: "雷达平台-109", target: "雷达平台-110" },
-        { source: "雷达平台-106", target: "雷达平台-108" },
-        { source: "雷达平台-103", target: "雷达平台-105" },
-      ],
-      outbox: [
-        { time: "14:33.00", domain: "103->101", topic: "态势信息-106", status: "成功" },
-        { time: "14:33.10", domain: "101->102", topic: "任务应答-雷达探测-4", status: "成功" },
-        { time: "14:34.00", domain: "104->101", topic: "态势信息-106", status: "失败" },
-        { time: "14:34.70", domain: "106->107", topic: "雷达数据-雷达探测-4", status: "成功" },
-        { time: "14:35.00", domain: "105->108", topic: "态势信息-106", status: "成功" },
-      ],
-      inbox: [
-      // { time: "14:33.50", domain: "101->103", topic: "态势信息-106", status: "成功" },
-      //   { time: "14:34.10", domain: "102->101", topic: "任务应答-雷达探测-4", status: "成功" },
-       // { time: "14:34.60", domain: "104->101", topic: "态势信息-106", status: "失败" },
-       //  { time: "14:35.70", domain: "107->106", topic: "雷达数据-雷达探测-4", status: "成功" },
-       //  { time: "14:35.90", domain: "108->105", topic: "态势信息-106", status: "成功" },
-      ]
     };
   },
   created() {
-    this.getLinkParamData();
   },
   activated() {
-    this.setTimer();
+    this.init();
   },
   deactivated() {
-    this.timerDestory();
+    if(this.interval){
+      clearInterval(this.interval)
+    }
   },
   mounted() {
-    this.echartsInit();
+    this.init();
     // 页面加载设置高度自适应
     window.onresize = () => {
       this.resizeDom();
     };
     // 页面加载设置高度自适应
     this.resizeDom();
+    this.interval=setInterval(this.fetchData, 5000)
   },
   methods: {
-    //查询已经接收的消息
-    getMessage() {
+    async init() {
+      await this.getNetworkGroupList();
+      this.initGroup()
+      if (this.selectedGroupId != null) {
+        this.initChart()
+        this.initSend()
+        this.initReceived()
+        this.initMembers()
+        this.getParams()
+      }
+    },
+    initGroup() {
+      let flag = true;
+      if (this.selectedGroupId !== 0) {
+        for (let i = 0; i < this.networkGroupList.length; i++) {
+          if (this.selectedGroupId === this.networkGroupList[i].id) {
+            flag = false;
+            this.selectedGroup = this.networkGroupList[i]
+          }
+        }
+        if (flag) {
+          this.selectedGroupId = null;
+          this.selectedGroup = null;
+        }
+      }
+    },
+    selectChange() {
+      for (let i = 0; i < this.networkGroupList.length; i++) {
+        if (this.selectedGroupId === this.networkGroupList[i].id) {
+          this.selectedGroup = this.networkGroupList[i];
+          break
+        }
+      }
+      this.initChart();
+      this.initSend();
+      this.initReceived();
+      this.initMembers();
+    },
+    getNetworkGroupList() {
       this.$http({
-        url: this.$http.adornUrl("/community/listReceivedMessage"),
+        url: this.$http.adornUrl("/communication/getNetworkGroups"),
         method: "get",
-      }).then(({ data }) => {
+      }).then(({data}) => {
         if (data && data.code === 0) {
-          this.inbox = data.receivedMessage;
+          this.networkGroupList = data.data;
+          if (this.networkGroupList.length === 0) {
+            Message.info("暂未设置网络组信息")
+          }
         } else {
-          this.inbox = [];
+          this.networkGroupList = [];
+          Message.error("无法获取网络组信息")
         }
-      });
+      })
+    },
+    editable() {
+      return this.selectedGroupId === 0;
+    },
+    fetchData(){
+      if(this.selectedGroupId!=null){
+        this.initMembers();
+        this.initChart();
+        this.initSend();
+        this.initReceived();
+      }
     },
-    getLinkParamData() {
+    initChart() {
       this.$http({
-        url: this.$http.adornUrl("/community/listLinkParam"),
+        url: this.$http.adornUrl("/communication/getChart?id=" + this.selectedGroupId),
         method: "get",
-      }).then(({ data }) => {
+      }).then(({data}) => {
         if (data && data.code === 0) {
-          console.log("data", JSON.stringify(data));
-          this.linkVUProps = data.linkParam;
-          this.$set(this.linkVUProps, 'linkSilentBoolean', this.linkVUProps.linkSilent === 1);
-          this.$set(this.linkVUProps, 'linkSwitchBoolean', this.linkVUProps.linkSwitch === 1);
-        } else {
-          this.linkVUProps = {};
+          this.nodes = data.nodes;
+          this.edges = data.edges;
+          if (this.chartInstance == null) {
+            this.createChartInstance(this.$refs.chart);
+          }
+          this.chartInstance.setOption({
+            series: [{
+              data: this.nodes,
+              links: this.edges,
+            }]
+          })
         }
-      });
+      })
     },
-    setTimer() {
-      if (this.timer == null) {
-        this.timer = setInterval(() => {
-         // setTimeout(this.timerRefresh, 0);
-        }, 1000);
-      }
+    initSend() {
+      this.$http({
+        url: this.$http.adornUrl("/communication/getSendMessage?id=" + this.selectedGroupId),
+        method: "get",
+      }).then(({data}) => {
+        if (data && data.code === 0) {
+          this.sendMessage = data.data;
+        }
+      })
     },
-    timerDestory() {
-      if (this.timer) {
-        clearInterval(this.timer);
-        this.timer = null;
-      }
+    initReceived() {
+      this.$http({
+        url: this.$http.adornUrl("/communication/getSendMessage?id=" + this.selectedGroupId),
+        method: "get",
+      }).then(({data}) => {
+        if (data && data.code === 0) {
+          this.receivedMessage = data.data;
+        }
+      })
     },
-    timerRefresh() {
-      // this.echartsInit();
-      if (this.currentLink == 1) {
-        this.$wst.send({
-          url: "getVUParams",
-          data: {
-            PlatformID: this.platformID,
-          },
-        });
-        this.$wst.send({
-          url: "getVUStatus",
-          data: {
-            PlatformID: this.platformID,
-          },
-        });
-      } else if (this.currentLink == 2) {
-        this.$wst.send({
-          url: "getJStatus",
-          data: {
-            PlatformID: this.platformID,
-          },
-        });
-        this.$wst.send({
-          url: "getJParams",
-          data: {
-            PlatformID: this.platformID,
-          },
-        });
-      }
+    initMembers(){
+      this.$http({
+        url: this.$http.adornUrl("/communication/getMembers?id=" + this.selectedGroupId),
+        method: "get",
+      }).then(({data}) => {
+        if (data && data.code === 0) {
+          this.members = data.data;
+        }
+      })
     },
-    echartsInit() {
-      let option = {
-        title: {
-          text: "",
-        },
-        tooltip: {},
-        animationDurationUpdate: 1500,
-        animationEasingUpdate: "quinticInOut",
+    getParams(){},
+    createChartInstance(dom) {
+      this.chartInstance = this.$echarts.init(dom)
+      const chartOption = {
+        title: {},
+        animation: true,
         series: [
           {
             type: "graph",
@@ -401,14 +326,11 @@ export default {
             label: {
               show: true,
             },
-            // edgeSymbol: ["circle", "arrow"],
             edgeSymbol: ["circle"],
-            edgsSymbolSize: [4, 10],
+            edgeSymbolSize: [4, 10],
             edgeLabel: {
               fontSize: 12,
             },
-            data: this.nodes,
-            links: this.edges,
             emphasis: {
               focus: "adjacency",
               lineStyle: {
@@ -429,118 +351,39 @@ export default {
           },
         ],
       };
-      if (this.radarEchart == null) {
-        console.log("初始化拓扑图");
-        this.radarEchart = this.$echarts.init(
-          document.getElementById("radarEchart")
-        );
-        this.radarEchart.setOption(option);
-      } else {
-        console.log("更新拓扑图");
-        this.radarEchart.setOption(option);
-      }
+
+      this.chartInstance.setOption(chartOption)
     },
     //通过窗体高宽计算容器高宽,渲染echart图表的div的宽高度以达到自适应目的
     resizeDom() {
-      console.log("高度自适应");
       const boxHeight =
-        document.getElementsByClassName("echarts-box")[0].clientHeight;
+          document.getElementsByClassName("echarts-box")[0].clientHeight;
       var Echart = document.getElementById("radarEchart");
       Echart.style.height = boxHeight - 65 + "px";
       this.$echarts.init(document.getElementById("radarEchart")).resize();
     },
-    editParam() {
-      const formatData = new FormData();
-      formatData.append("PlatformID", this.platformID);
-      formatData.append("nodeName", this.selectedNode);
-      formatData.append("isValid", this.linkVUProps.linkSwitch);
-      formatData.append("isSilence", this.linkVUProps.linkSilent);
-      formatData.append("linkSpeed", this.linkVUProps.linkSpeed);
-      formatData.append("linkQuality", this.linkVUProps.linkQuality);
-      this.$http({
-        url: this.$http.adornUrl("/community/updateLink"),
-        method: "post",
-        data: formatData,
-      }).then(({ data }) => {
-        if (data && data.code === 0) {
-          Message({
-            message: "操作成功",
-            type: "success",
-            duration: 1500,
-            onClose: () => {
-              this.visible = false;
-            },
-          });
-        } else {
-          Message.error(data.msg);
-        }
-        this.getLinkParamData();
-        this.dialogVisible = false;
-      });
-    },
     //变更参数
     handleEdit() {
-      if (this.currentLink == 1) {
-        //更新VU链路状态
-        this.editParam();
-        if (this.linkVUProps.linkSwitch === 0) {
-          this.edges = this.edges.filter(edge => edge.source !== this.selectedNode && edge.target !== this.selectedNode);
-          console.log("this.edges", this.edges);
-        }
-        this.echartsInit();
-      } else if (this.currentLink == 2) {
-        //更新J参数
-        this.$wst.send({
-          url: "setJParams",
-          data: {
-            PlatformID: this.platformID,
-            WorkMode: this.linkJProps.WorkMode,
-            PlatType: this.linkJProps.PlatType,
-            WireLessStatus: this.linkJProps.WireLessStatus,
-          },
-        });
-      }
-    },
-    sendMessage() {
-      console.log("this.outbox", this.outbox);
-      this.$http({
-        url: this.$http.adornUrl("/community/sendMessage"),
-        method: "post",
-        data: this.outbox,
-      }).then(({ data }) => {
-        if (data && data.code === 0) {
-          Message({
-            message: "操作成功",
-            type: "success",
-            duration: 1500,
-            onClose: () => {
-              this.visible = false;
-            },
-          });
-        } else {
-          Message.error(data.msg);
-        }
-        this.getMessage();
-      });
+      console.log("aaa")
     },
     switchChange() {
       if (this.currentLink === 1) {
         this.linkVUProps.linkSilent =
-          this.linkVUProps.linkSilentBoolean == true ? 1 : 0;
+            this.linkVUProps.linkSilentBoolean == true ? 1 : 0;
         this.linkVUProps.linkSwitch =
-          this.linkVUProps.linkSwitchBoolean == true ? 1 : 0;
+            this.linkVUProps.linkSwitchBoolean == true ? 1 : 0;
       } else if (this.currentLink === 2) {
         this.linkJProps.WireLessStatus =
-          this.linkJProps.WireLessStatusBoolean == true ? 1 : 0;
+            this.linkJProps.WireLessStatusBoolean == true ? 1 : 0;
         this.linkJProps.WorkMode =
-          this.linkJProps.WorkModeBoolean == true ? 1 : 2;
+            this.linkJProps.WorkModeBoolean == true ? 1 : 2;
       }
     },
-  },
-};
+  }
+}
+
 </script>
 <style scoped>
-.tableHeight {}
 
 .echarts-box {
   height: 100%;
@@ -550,4 +393,4 @@ export default {
 .radar {
   height: 100%;
 }
-</style>
+</style>

+ 4 - 8
src/views/sarInvestigation/index.vue

@@ -7,7 +7,7 @@
           <el-button @click="saveScenario">保存想定</el-button>
         </el-col>
       </el-row>
-  
+
       <el-table :data="scenarios" style="width: 100%">
         <el-table-column prop="id" label="ID" width="80" />
         <el-table-column prop="name" label="想定名称" />
@@ -27,7 +27,7 @@
           </template>
         </el-table-column>
       </el-table>
-  
+
       <!-- 添加/编辑想定对话框 -->
       <el-dialog :visible.sync="dialogVisible" title="想定">
         <el-form :model="currentScenario" label-width="120px">
@@ -64,7 +64,7 @@
       </el-dialog>
     </div>
   </template>
-  
+
   <script>
   export default {
     data() {
@@ -151,13 +151,9 @@
     },
   };
   </script>
-  
+
   <style>
-  .toolbar {
-    margin-bottom: 20px;
-  }
   .dialog-footer {
     text-align: right;
   }
   </style>
-