2 Revize 0d5d5f623f ... f049c4933e

Autor SHA1 Zpráva Datum
  luohuilong f049c4933e Merge remote-tracking branch 'origin/master' před 4 měsíci
  luohuilong ae23f3766c 目标-靶标 n před 4 měsíci

+ 44 - 44
src/views/decision/testBuild/orderEdit.vue

@@ -88,20 +88,20 @@
               </el-form>
               </el-form>
             </div>
             </div>
 
 
-            <!-- 标设置 -->
+            <!-- 标设置 -->
             <div class="section-card mb-6">
             <div class="section-card mb-6">
               <div class="section-header">
               <div class="section-header">
                 <h4 class="section-title">
                 <h4 class="section-title">
                   <i class="el-icon-location"></i>
                   <i class="el-icon-location"></i>
-                  标设置
+                  标设置
                 </h4>
                 </h4>
                 <el-button type="text" icon="el-icon-plus" @click="addTarget" class="text-green-400" :disabled="!canAddMoreTargets">
                 <el-button type="text" icon="el-icon-plus" @click="addTarget" class="text-green-400" :disabled="!canAddMoreTargets">
-                  添加
+                  添加
                 </el-button>
                 </el-button>
               </div>
               </div>
               <div class="target-list p-4">
               <div class="target-list p-4">
                 <div class="target-hint text-xs text-yellow-400 mb-2" v-if="taskForm.targets.length < taskForm.missileCount">
                 <div class="target-hint text-xs text-yellow-400 mb-2" v-if="taskForm.targets.length < taskForm.missileCount">
-                  提示:可添加 {{ taskForm.missileCount - taskForm.targets.length }} 个
+                  提示:可添加 {{ taskForm.missileCount - taskForm.targets.length }} 个
                 </div>
                 </div>
                 <div class="target-hint text-xs text-red-400 mb-2" v-if="taskForm.targets.length > taskForm.missileCount">
                 <div class="target-hint text-xs text-red-400 mb-2" v-if="taskForm.targets.length > taskForm.missileCount">
                   警告:靶标数量超过导弹数量 {{ taskForm.targets.length - taskForm.missileCount }} 个
                   警告:靶标数量超过导弹数量 {{ taskForm.targets.length - taskForm.missileCount }} 个
@@ -305,12 +305,12 @@
             </div>
             </div>
           </div>
           </div>
 
 
-          <!-- 标-装备分配关系 -->
+          <!-- 标-装备分配关系 -->
           <div class="section-card">
           <div class="section-card">
             <div class="section-header">
             <div class="section-header">
               <h4 class="section-title">
               <h4 class="section-title">
                 <i class="el-icon-link mr-2"></i>
                 <i class="el-icon-link mr-2"></i>
-                标-装备分配关系
+                标-装备分配关系
               </h4>
               </h4>
             </div>
             </div>
             <div class="target-equipment-map p-4">
             <div class="target-equipment-map p-4">
@@ -321,8 +321,8 @@
                 :header-cell-style="{background: 'rgba(30, 58, 138, 0.3)', color: '#bae6fd', borderColor: 'rgba(14, 165, 233, 0.2)'}"
                 :header-cell-style="{background: 'rgba(30, 58, 138, 0.3)', color: '#bae6fd', borderColor: 'rgba(14, 165, 233, 0.2)'}"
                 :row-style="{background: 'rgba(15, 23, 42, 0.5)', color: '#e0f2fe', borderColor: 'rgba(14, 165, 233, 0.1)'}"
                 :row-style="{background: 'rgba(15, 23, 42, 0.5)', color: '#e0f2fe', borderColor: 'rgba(14, 165, 233, 0.1)'}"
               >
               >
-                <el-table-column prop="targetName" label="标名称"></el-table-column>
-                <el-table-column prop="targetType" label="标类型"></el-table-column>
+                <el-table-column prop="targetName" label="标名称"></el-table-column>
+                <el-table-column prop="targetType" label="标类型"></el-table-column>
                 <el-table-column prop="threatLevel" label="威胁等级">
                 <el-table-column prop="threatLevel" label="威胁等级">
                   <template slot-scope="scope">
                   <template slot-scope="scope">
                     <div class="threat-bars flex gap-1 justify-center">
                     <div class="threat-bars flex gap-1 justify-center">
@@ -422,22 +422,22 @@
       </el-aside>
       </el-aside>
     </el-container>
     </el-container>
 
 
-    <!-- 添加标对话框 -->
+    <!-- 添加标对话框 -->
     <el-dialog
     <el-dialog
-      title="添加标"
+      title="添加标"
       :visible.sync="showTargetDialog"
       :visible.sync="showTargetDialog"
       width="30%"
       width="30%"
       custom-class="target-dialog"
       custom-class="target-dialog"
     >
     >
       <el-form :model="targetForm" label-width="100px">
       <el-form :model="targetForm" label-width="100px">
-        <el-form-item label="标名称">
-          <el-input v-model="targetForm.name" placeholder="请输入标名称"></el-input>
+        <el-form-item label="标名称">
+          <el-input v-model="targetForm.name" placeholder="请输入标名称"></el-input>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="标类型">
-          <el-select v-model="targetForm.type" placeholder="请选择标类型">
-            <el-option label="空中目标" value="空中目标" :disabled="!isAirTargetAllowed"></el-option>
-            <el-option label="海上目标" value="海上目标" :disabled="!isSeaTargetAllowed"></el-option>
-            <el-option label="地面目标" value="地面目标" :disabled="!isGroundTargetAllowed"></el-option>
+        <el-form-item label="标类型">
+          <el-select v-model="targetForm.type" placeholder="请选择标类型">
+            <el-option label="空中靶标" value="空中靶标" :disabled="!isAirTargetAllowed"></el-option>
+            <el-option label="海上靶标" value="海上靶标" :disabled="!isSeaTargetAllowed"></el-option>
+            <el-option label="地面靶标" value="地面靶标" :disabled="!isGroundTargetAllowed"></el-option>
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item label="坐标位置">
         <el-form-item label="坐标位置">
@@ -482,12 +482,12 @@ export default {
         missileType: 'surface-to-air', // 导弹类型
         missileType: 'surface-to-air', // 导弹类型
         missileCount: 6, // 导弹数量
         missileCount: 6, // 导弹数量
         executeTime: '2025-10-15 14:30:00',
         executeTime: '2025-10-15 14:30:00',
-        description: '本次试验旨在验证红旗-9B防空导弹系统对多批次、多类型空中标的拦截能力,测试在强电子干扰环境下的作战效能。',
+        description: '本次试验旨在验证红旗-9B防空导弹系统对多批次、多类型空中标的拦截能力,测试在强电子干扰环境下的作战效能。',
         targets: [
         targets: [
           {
           {
             id: 1,
             id: 1,
             name: '高空侦察机',
             name: '高空侦察机',
-            type: '空中标',
+            type: '空中标',
             coordinates: '东经121°25′,北纬30°15′',
             coordinates: '东经121°25′,北纬30°15′',
             threatLevel: 5,
             threatLevel: 5,
             equipmentId: 'A1'
             equipmentId: 'A1'
@@ -495,7 +495,7 @@ export default {
           {
           {
             id: 2,
             id: 2,
             name: '巡航导弹模拟靶',
             name: '巡航导弹模拟靶',
-            type: '空中标',
+            type: '空中标',
             coordinates: '东经121°30′,北纬30°20′',
             coordinates: '东经121°30′,北纬30°20′',
             threatLevel: 4,
             threatLevel: 4,
             equipmentId: 'A1'
             equipmentId: 'A1'
@@ -503,7 +503,7 @@ export default {
           {
           {
             id: 3,
             id: 3,
             name: '隐身战机模拟靶',
             name: '隐身战机模拟靶',
-            type: '空中标',
+            type: '空中标',
             coordinates: '东经121°20′,北纬30°25′',
             coordinates: '东经121°20′,北纬30°25′',
             threatLevel: 5,
             threatLevel: 5,
             equipmentId: 'B2'
             equipmentId: 'B2'
@@ -884,10 +884,10 @@ export default {
       return missileTypeMap[this.taskForm.missileType] || '';
       return missileTypeMap[this.taskForm.missileType] || '';
     },
     },
     canAddMoreTargets() {
     canAddMoreTargets() {
-      // 控制是否可以添加更多
+      // 控制是否可以添加更多
       return this.taskForm.missileCount > 0 && this.taskForm.targets.length < this.taskForm.missileCount * 2;
       return this.taskForm.missileCount > 0 && this.taskForm.targets.length < this.taskForm.missileCount * 2;
     },
     },
-    // 根据导弹类型判断允许的标类型
+    // 根据导弹类型判断允许的标类型
     isAirTargetAllowed() {
     isAirTargetAllowed() {
       return ['surface-to-air', 'air-to-surface', 'cruise'].includes(this.taskForm.missileType);
       return ['surface-to-air', 'air-to-surface', 'cruise'].includes(this.taskForm.missileType);
     },
     },
@@ -914,7 +914,7 @@ export default {
       return `${days}天${hours}时${minutes}分后执行`;
       return `${days}天${hours}时${minutes}分后执行`;
     },
     },
     targetEquipmentMapData() {
     targetEquipmentMapData() {
-      // 构建标-装备关系数据
+      // 构建标-装备关系数据
       return this.taskForm.targets.map(target => {
       return this.taskForm.targets.map(target => {
         const equipment = this.allEquipment.find(equip => equip.id === target.equipmentId);
         const equipment = this.allEquipment.find(equip => equip.id === target.equipmentId);
         return {
         return {
@@ -932,9 +932,9 @@ export default {
       this.$router.push('/Deduction/stratDeduction')
       this.$router.push('/Deduction/stratDeduction')
     },
     },
     saveTask() {
     saveTask() {
-      // 验证标设置不能为空
+      // 验证标设置不能为空
       if (this.taskForm.targets.length === 0) {
       if (this.taskForm.targets.length === 0) {
-        this.$message.error('目标设置不能为空,请添加至少一个目标');
+        this.$message.error('靶标设置不能为空,请添加至少一个靶标');
         return;
         return;
       }
       }
 
 
@@ -979,7 +979,7 @@ export default {
     },
     },
     confirmAddTarget() {
     confirmAddTarget() {
       if (!this.targetForm.name || !this.targetForm.type || !this.targetForm.coordinates) {
       if (!this.targetForm.name || !this.targetForm.type || !this.targetForm.coordinates) {
-        this.$message.warning('请填写完整标信息');
+        this.$message.warning('请填写完整标信息');
         return;
         return;
       }
       }
 
 
@@ -989,20 +989,20 @@ export default {
       });
       });
 
 
       this.showTargetDialog = false;
       this.showTargetDialog = false;
-      this.$message.success('标添加成功');
+      this.$message.success('标添加成功');
     },
     },
     editTarget(target) {
     editTarget(target) {
       this.targetForm = { ...target };
       this.targetForm = { ...target };
       this.showTargetDialog = true;
       this.showTargetDialog = true;
     },
     },
     removeTarget(target) {
     removeTarget(target) {
-      this.$confirm(`确定要删除标"${target.name}"吗?`, '提示', {
+      this.$confirm(`确定要删除标"${target.name}"吗?`, '提示', {
         confirmButtonText: '确定',
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         cancelButtonText: '取消',
         type: 'warning'
         type: 'warning'
       }).then(() => {
       }).then(() => {
         this.taskForm.targets = this.taskForm.targets.filter(t => t.id !== target.id);
         this.taskForm.targets = this.taskForm.targets.filter(t => t.id !== target.id);
-        this.$message.success('标已删除');
+        this.$message.success('标已删除');
       }).catch(() => {
       }).catch(() => {
         // 取消删除
         // 取消删除
       });
       });
@@ -1096,33 +1096,33 @@ export default {
 
 
       updateNode(this.equipmentTree);
       updateNode(this.equipmentTree);
     },
     },
-    // 更新标关联的装备
+    // 更新标关联的装备
     updateTargetEquipment(targetId, equipmentId) {
     updateTargetEquipment(targetId, equipmentId) {
       const target = this.taskForm.targets.find(t => t.id === targetId);
       const target = this.taskForm.targets.find(t => t.id === targetId);
       if (target) {
       if (target) {
         target.equipmentId = equipmentId;
         target.equipmentId = equipmentId;
       }
       }
     },
     },
-    // 根据导弹类型更新标设置
+    // 根据导弹类型更新标设置
     updateTargetsByMissileType() {
     updateTargetsByMissileType() {
-      // 根据选择的导弹类型过滤不兼容的
+      // 根据选择的导弹类型过滤不兼容的
       if (!this.taskForm.missileType) return;
       if (!this.taskForm.missileType) return;
 
 
       const compatibleTypes = [];
       const compatibleTypes = [];
-      if (this.isAirTargetAllowed) compatibleTypes.push('空中标');
-      if (this.isSeaTargetAllowed) compatibleTypes.push('海上标');
-      if (this.isGroundTargetAllowed) compatibleTypes.push('地面标');
+      if (this.isAirTargetAllowed) compatibleTypes.push('空中标');
+      if (this.isSeaTargetAllowed) compatibleTypes.push('海上标');
+      if (this.isGroundTargetAllowed) compatibleTypes.push('地面标');
 
 
-      // 过滤不兼容的
+      // 过滤不兼容的
       this.taskForm.targets = this.taskForm.targets.filter(target =>
       this.taskForm.targets = this.taskForm.targets.filter(target =>
         compatibleTypes.includes(target.type)
         compatibleTypes.includes(target.type)
       );
       );
 
 
-      // 如果没有目标,自动创建一个兼容的目
+      // 如果没有靶标,自动创建一个兼容的靶
       if (this.taskForm.targets.length === 0) {
       if (this.taskForm.targets.length === 0) {
         this.taskForm.targets.push({
         this.taskForm.targets.push({
           id: Date.now(),
           id: Date.now(),
-          name: `标${compatibleTypes[0]}`,
+          name: `标${compatibleTypes[0]}`,
           type: compatibleTypes[0],
           type: compatibleTypes[0],
           coordinates: '东经120°00′,北纬30°00′',
           coordinates: '东经120°00′,北纬30°00′',
           threatLevel: 3,
           threatLevel: 3,
@@ -1130,9 +1130,9 @@ export default {
         });
         });
       }
       }
     },
     },
-    // 根据导弹数量更新标设置
+    // 根据导弹数量更新标设置
     updateTargetsByMissileCount() {
     updateTargetsByMissileCount() {
-      // 如果靶标数量超过导弹数量的2倍,删除多余的
+      // 如果靶标数量超过导弹数量的2倍,删除多余的
       const maxTargets = this.taskForm.missileCount * 2;
       const maxTargets = this.taskForm.missileCount * 2;
       if (this.taskForm.targets.length > maxTargets) {
       if (this.taskForm.targets.length > maxTargets) {
         this.taskForm.targets = this.taskForm.targets.slice(0, maxTargets);
         this.taskForm.targets = this.taskForm.targets.slice(0, maxTargets);
@@ -1195,7 +1195,7 @@ export default {
     }
     }
   },
   },
   watch: {
   watch: {
-    // 监听导弹类型变化,更新标设置
+    // 监听导弹类型变化,更新标设置
     'taskForm.missileType': function() {
     'taskForm.missileType': function() {
       this.updateTargetsByMissileType();
       this.updateTargetsByMissileType();
     }
     }
@@ -1633,7 +1633,7 @@ export default {
   }
   }
 }
 }
 
 
-/* 标项样式:军事风格清晰 */
+/* 标项样式:军事风格清晰 */
 .target-item {
 .target-item {
   background-color: rgba(15, 23, 42, 0.6);
   background-color: rgba(15, 23, 42, 0.6);
   border: 1px solid rgba(14, 165, 233, 0.2);
   border: 1px solid rgba(14, 165, 233, 0.2);
@@ -1709,7 +1709,7 @@ export default {
   }
   }
 }
 }
 
 
-/* 标-装备分配关系表格样式 */
+/* 标-装备分配关系表格样式 */
 ::v-deep .el-table {
 ::v-deep .el-table {
   background-color: transparent;
   background-color: transparent;
   color: #e0f2fe;
   color: #e0f2fe;

+ 10 - 10
src/views/showSituation/nandOne/index.vue

@@ -6,9 +6,6 @@
     >
     >
       <div class="panel-content">
       <div class="panel-content">
         <div class="sidebar-section panel-section">
         <div class="sidebar-section panel-section">
-<!--          <div class="panel-title">
-            任务基础信息
-          </div>-->
           <div class="panel-content">
           <div class="panel-content">
             <KeyEvent
             <KeyEvent
               :key-event="keyEvent"
               :key-event="keyEvent"
@@ -131,7 +128,7 @@
               <div class="video-stats">
               <div class="video-stats">
                 <span class="resolution">{{ camera.resolution }}</span>
                 <span class="resolution">{{ camera.resolution }}</span>
                 <span class="fps">{{ camera.fps }} FPS</span>
                 <span class="fps">{{ camera.fps }} FPS</span>
-                <span class="stability"></span>
+                <span class="stability">{{ camera.stability }}</span>
               </div>
               </div>
             </div>
             </div>
           </div>
           </div>
@@ -294,16 +291,17 @@ export default {
         { id: 8, name: '弹道跟踪相机', type: '跟踪相机', imgUrl: '/img/视角8.png', resolution: '720P', fps: 30, stability: '稳定' },
         { id: 8, name: '弹道跟踪相机', type: '跟踪相机', imgUrl: '/img/视角8.png', resolution: '720P', fps: 30, stability: '稳定' },
         { id: 9, name: '全景监控相机', type: '监控相机', imgUrl: '/img/视角9.png', resolution: '480P', fps: 15, stability: '稳定' },
         { id: 9, name: '全景监控相机', type: '监控相机', imgUrl: '/img/视角9.png', resolution: '480P', fps: 15, stability: '稳定' },
         { id: 10, name: '特写相机-1', type: '特写相机', imgUrl: '/img/视角1.png', resolution: '720P', fps: 30, stability: '较稳定' },
         { id: 10, name: '特写相机-1', type: '特写相机', imgUrl: '/img/视角1.png', resolution: '720P', fps: 30, stability: '较稳定' },
-        { id: 11, name: '特写相机-2', type: '特写相机', imgUrl: '/img/视角2.png', resolution: '480P', fps: 20, stability: '较稳定' },
-        { id: 12, name: '热成像相机', type: '热成像相机', imgUrl: '/img/视角3.png', resolution: '480P', fps: 30, stability: '一般' }
-      ],
+        { id: 11, name: '特写相机-2', type: '特写相机', imgUrlrl: '/img/视角2.png', resolution: '480P', fps: 20, stability: '较稳定' },
+    { id: 12, name: '热成像相机', type: '热成像相机', imgUrl: '/img/视角3.png', resolution: '480P', fps: 30, stability: '一般' }
+  ],
 
 
-      selectedCameras: [], // 选中的相机ID
+    selectedCameras: [], // 选中的相机ID
       selectedCameraRows: [], // 选中的相机行数据
       selectedCameraRows: [], // 选中的相机行数据
       confirmedCameras: [1, 2, 3, 4, 5, 6], // 确认展示的相机
       confirmedCameras: [1, 2, 3, 4, 5, 6], // 确认展示的相机
       currentUnselectedIndex: 0, // 轮播索引
       currentUnselectedIndex: 0, // 轮播索引
-      unselectedInterval: null // 轮播计时器
-    };
+      unselectedInterval: null, // 轮播计时器
+
+  }
   },
   },
   computed: {
   computed: {
     // 获取选中的相机
     // 获取选中的相机
@@ -719,6 +717,8 @@ export default {
   cursor: pointer;
   cursor: pointer;
   aspect-ratio: 16/9;
   aspect-ratio: 16/9;
   background-color: #2c3e50;
   background-color: #2c3e50;
+  height: 100%;
+  width: 100%;
 }
 }
 
 
 /* 相机名称标签 */
 /* 相机名称标签 */