|
|
@@ -141,7 +141,7 @@
|
|
|
<!-- Step 1 装备配置 -->
|
|
|
<template v-if="step===1">
|
|
|
<div class="flex w-full justify-center">
|
|
|
- <el-card class="ui-card fill-card" style="width:80%;justify-content:center" shadow="hover">
|
|
|
+ <el-card class="ui-card fill-card" style="width:100%;margin-bottom:20px;justify-content:center" shadow="never">
|
|
|
<div slot="header" class="card-header">
|
|
|
<div class="title-left">
|
|
|
<i class="fa fa-cogs icon-primary"></i><span>装备配置</span>
|
|
|
@@ -193,7 +193,7 @@
|
|
|
<!-- Step 3 环境设置(保留) -->
|
|
|
<template v-if="step===3">
|
|
|
<el-main class="main-full">
|
|
|
- <el-card class="ui-card fill-card" shadow="hover">
|
|
|
+ <el-card class="ui-card fill-card" shadow="never">
|
|
|
<div slot="header" class="card-header">
|
|
|
<div class="title-left">
|
|
|
<i class="fa fa-cloud icon-primary"></i><span>战场环境规划</span>
|
|
|
@@ -237,7 +237,7 @@
|
|
|
<!-- Step 4 想定预览 -->
|
|
|
<template v-if="step===4">
|
|
|
<el-main class="main-full">
|
|
|
- <el-card class="ui-card fill-card" shadow="hover">
|
|
|
+ <el-card class="ui-card fill-card" shadow="never">
|
|
|
<div slot="header" class="card-header">
|
|
|
<div class="title-left">
|
|
|
<i class="fa fa-file-text icon-primary"></i><span>想定预览(版本:{{ scenarioVersion }})</span>
|
|
|
@@ -272,52 +272,71 @@
|
|
|
<el-card body-style="padding:16px;" class="ui-card panel-card mb-16" shadow="never">
|
|
|
<div class="sub-title"><i class="el-icon-tickets"></i> 装备信息总览</div>
|
|
|
<el-row :gutter="12">
|
|
|
- <el-col :span="8" v-if="equTree.find(item=>item.name==='靶标方案')">
|
|
|
+ <el-col :span="24" v-if="equTree.find(item=>item.name==='靶标方案')">
|
|
|
<el-card body-style="padding:10px;" class="ui-card soft" shadow="never">
|
|
|
<div class="module-title"><i class="el-icon-location-information"></i>
|
|
|
靶标装备({{ equTree.find(item=>item.name==='靶标方案').equList.length }})
|
|
|
</div>
|
|
|
<el-table :data="equTree.find(item=>item.name==='靶标方案').equList" border height="220" size="mini">
|
|
|
- <el-table-column label="名称" min-width="120" prop="name"/>
|
|
|
- <el-table-column label="类型" prop="type" width="70"/>
|
|
|
- <el-table-column label="状态" width="90">
|
|
|
+ <el-table-column label="装备名称" min-width="120" prop="name"/>
|
|
|
+ <el-table-column label="装备类型" prop="typeName"/>
|
|
|
+ <el-table-column label="是否有准确位置" prop="isExactLocation">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-tag
|
|
|
- :type="scope.row.statusClass==='badge-success'?'success':(scope.row.statusClass==='badge-warn'?'warning':'info')"
|
|
|
- size="mini">
|
|
|
- {{ scope.row.statusText }}
|
|
|
- </el-tag>
|
|
|
+ <el-tag v-if="scope.row.isExactLocation === '0'" type="success">是</el-tag>
|
|
|
+ <el-tag v-if="scope.row.isExactLocation === '1'" type="warning">否</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="位置" prop="positionDescription">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.isExactLocation === '0'" >{{ scope.row.equipPositionX }},{{ scope.row.equipPositionY }}</div>
|
|
|
+ <div v-if="scope.row.isExactLocation === '1'" >{{ scope.row.positionDescription }}</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="激活" prop="time" width="90"/>
|
|
|
</el-table>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
|
|
|
- <el-col :span="8" v-if="equTree.find(item=>item.name==='干扰方案')">
|
|
|
+ <el-col :span="24" v-if="equTree.find(item=>item.name==='干扰方案')">
|
|
|
<el-card body-style="padding:10px;" class="ui-card soft" shadow="never">
|
|
|
<div class="module-title"><i class="el-icon-microphone"></i> 干扰装备({{ equTree.find(item=>item.name==='干扰方案').equList.length }})
|
|
|
</div>
|
|
|
<el-table :data="equTree.find(item=>item.name==='干扰方案').equList" border height="220" size="mini">
|
|
|
- <el-table-column label="名称" min-width="120" prop="name"/>
|
|
|
- <el-table-column label="类型" prop="type" width="70"/>
|
|
|
- <el-table-column label="频率(MHz)" width="100">
|
|
|
- <template slot-scope="scope">{{ scope.row.params && scope.row.params.freq }}</template>
|
|
|
+ <el-table-column label="装备名称" min-width="120" prop="name"/>
|
|
|
+ <el-table-column label="装备类型" prop="typeName"/>
|
|
|
+ <el-table-column label="是否有准确位置" prop="isExactLocation">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.isExactLocation === '0'" type="success">是</el-tag>
|
|
|
+ <el-tag v-if="scope.row.isExactLocation === '1'" type="warning">否</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="位置" prop="positionDescription">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.isExactLocation === '0'" >{{ scope.row.equipPositionX }},{{ scope.row.equipPositionY }}</div>
|
|
|
+ <div v-if="scope.row.isExactLocation === '1'" >{{ scope.row.positionDescription }}</div>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
|
|
|
- <el-col :span="8" v-if="equTree.find(item=>item.name==='测量方案')">
|
|
|
+ <el-col :span="24" v-if="equTree.find(item=>item.name==='测量方案')">
|
|
|
<el-card body-style="padding:10px;" class="ui-card soft" shadow="never">
|
|
|
<div class="module-title"><i class="el-icon-view"></i> 测量装备({{ equTree.find(item=>item.name==='测量方案').equList.length }})
|
|
|
</div>
|
|
|
<el-table :data="equTree.find(item=>item.name==='测量方案').equList" border height="220" size="mini">
|
|
|
- <el-table-column label="名称" min-width="120" prop="name"/>
|
|
|
- <el-table-column label="类型" prop="type" width="70"/>
|
|
|
- <el-table-column label="启动" prop="time" width="90"/>
|
|
|
- <el-table-column label="范围(km)" width="90">
|
|
|
- <template slot-scope="scope">{{ scope.row.params && scope.row.params.range }}</template>
|
|
|
+ <el-table-column label="装备名称" min-width="120" prop="name"/>
|
|
|
+ <el-table-column label="装备类型" prop="typeName"/>
|
|
|
+ <el-table-column label="是否有准确位置" prop="isExactLocation">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag v-if="scope.row.isExactLocation === '0'" type="success">是</el-tag>
|
|
|
+ <el-tag v-if="scope.row.isExactLocation === '1'" type="warning">否</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="位置" prop="positionDescription">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.isExactLocation === '0'" >{{ scope.row.equipPositionX }},{{ scope.row.equipPositionY }}</div>
|
|
|
+ <div v-if="scope.row.isExactLocation === '1'" >{{ scope.row.positionDescription }}</div>
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-card>
|
|
|
@@ -353,367 +372,6 @@
|
|
|
</div>
|
|
|
</el-container>
|
|
|
</template>
|
|
|
- <!-- 新增/编辑:靶标 -->
|
|
|
- <el-dialog :close-on-click-modal="false" :title="editModeTarget ? '编辑靶标' : '添加靶标'"
|
|
|
- :visible.sync="addTargetDialog" width="900px">
|
|
|
- <el-form ref="targetFormRef" :model="newTargetForm" :rules="targetRules" class="dense-form" label-width="110px"
|
|
|
- size="small">
|
|
|
- <el-row :gutter="16">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="靶标名称" prop="name">
|
|
|
- <el-input v-model="newTargetForm.name" placeholder="请输入"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="靶标类型" prop="type">
|
|
|
- <el-select v-model="newTargetForm.type" style="width:100%" @change="onTargetTypeChange">
|
|
|
- <el-option label="静态" value="静态"/>
|
|
|
- <el-option label="动态" value="动态"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <template v-if="newTargetForm.type==='静态'">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="固定点位来源">
|
|
|
- <el-switch v-model="newTargetForm.fixedFromPlan" active-text="使用方案固定点位"
|
|
|
- inactive-text="手动/地图选点"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="状态" prop="statusText">
|
|
|
- <el-select v-model="newTargetForm.statusText" style="width:100%">
|
|
|
- <el-option label="可用" value="可用"/>
|
|
|
- <el-option label="维护中" value="维护中"/>
|
|
|
- <el-option label="停用" value="停用"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item :prop="newTargetForm.fixedFromPlan ? '' : 'lon'" label="经度">
|
|
|
- <el-input v-model="newTargetForm.lon" placeholder="116.320000"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item :prop="newTargetForm.fixedFromPlan ? '' : 'lat'" label="纬度">
|
|
|
- <el-input v-model="newTargetForm.lat" placeholder="39.950000"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="激活时间" prop="time">
|
|
|
- <el-time-picker v-model="newTargetForm.time" format="HH:mm:ss" placeholder="选择时间"
|
|
|
- style="width:100%;" value-format="HH:mm:ss"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12"></el-col>
|
|
|
-
|
|
|
- <template v-if="newTargetForm.type==='动态'">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="运动模式">
|
|
|
- <el-select v-model="targetForm.motion">
|
|
|
- <el-option label="直线" value="linear"/>
|
|
|
- <el-option label="圆周" value="circular"/>
|
|
|
- <el-option label="随机" value="random"/>
|
|
|
- <el-option label="自定义" value="custom"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="速度(km/h)">
|
|
|
- <el-input v-model.number="targetForm.speed" :min="0" step="0.1" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="持续时间(s)">
|
|
|
- <el-input v-model.number="targetForm.duration" :min="1" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="工作模式">
|
|
|
- <el-select v-model="targetForm.mode">
|
|
|
- <el-option label="正常" value="normal"/>
|
|
|
- <el-option label="模拟" value="simulated"/>
|
|
|
- <el-option label="增强" value="enhanced"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </template>
|
|
|
-
|
|
|
- <el-col v-if="!newTargetForm.fixedFromPlan" :span="24">
|
|
|
- <!-- 地图选点 -->
|
|
|
- <el-form-item label="地图选点">
|
|
|
- <div class="map-container">
|
|
|
- <div class="map-placeholder" @click.stop="selectMapPosition">
|
|
|
- <img alt="map" class="map-image" src="/img/banner.jpg"/>
|
|
|
- <div
|
|
|
- v-if="mapMarkerPosition"
|
|
|
- class="map-marker"
|
|
|
- :style="{left: mapMarkerPosition.x + 'px', top: mapMarkerPosition.y + 'px'}"
|
|
|
- >
|
|
|
- <i class="el-icon-location icon-marker"></i>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <p class="map-hint">点击地图可快速带出经纬度</p>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- <div slot="footer">
|
|
|
- <el-button @click="addTargetDialog=false">取消</el-button>
|
|
|
- <el-button type="primary" @click="confirmAddTarget">{{ editModeTarget ? '保存' : '确认添加' }}</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
-
|
|
|
- <!-- 新增/编辑:干扰 -->
|
|
|
- <el-dialog :close-on-click-modal="false" :title="editModeJammer ? '编辑干扰装备' : '添加干扰装备'"
|
|
|
- :visible.sync="addJammerDialog" size="40%">
|
|
|
- <el-form ref="jammerFormRef" :model="newJammerForm" :rules="jammerRules" class="dense-form" label-width="110px"
|
|
|
- size="small">
|
|
|
- <el-row :gutter="16">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="装备名称" prop="name">
|
|
|
- <el-input v-model="newJammerForm.name"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="装备类型" prop="type">
|
|
|
- <el-select v-model="newJammerForm.type" style="width:100%">
|
|
|
- <el-option label="电磁" value="电磁"/>
|
|
|
- <el-option label="雷达" value="雷达"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="经度" prop="lon">
|
|
|
- <el-input v-model="newJammerForm.lon"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="纬度" prop="lat">
|
|
|
- <el-input v-model="newJammerForm.lat"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="干扰频率(MHz)">
|
|
|
- <el-input v-model.number="jammerForm.freq" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="干扰功率(W)">
|
|
|
- <el-input v-model.number="jammerForm.power" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="持续时间(s)">
|
|
|
- <el-input v-model.number="jammerForm.duration" :min="1" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="24">
|
|
|
- <div class="subsection-header">
|
|
|
- <span>激活计划</span>
|
|
|
- <el-button icon="el-icon-plus" size="mini" type="primary" @click="addJammerSchedule">新增计划</el-button>
|
|
|
- </div>
|
|
|
- <el-table :data="newJammerForm.schedules" border size="small">
|
|
|
- <el-table-column label="激活时间" width="140">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-time-picker v-model="scope.row.time" format="HH:mm:ss" placeholder="HH:mm:ss" size="mini"
|
|
|
- value-format="HH:mm:ss"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="触发类型" width="150">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-select v-model="scope.row.triggerType" size="mini" style="width:140px;">
|
|
|
- <el-option label="导弹接近" value="导弹接近"/>
|
|
|
- <el-option label="雷达信号异常" value="雷达信号异常"/>
|
|
|
- <el-option label="目标激活" value="目标激活"/>
|
|
|
- <el-option label="手动触发" value="手动触发"/>
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="阈值参数" width="140">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model="scope.row.threshold" placeholder="如:距离<5km" size="mini"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="触发动作" width="160">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-select v-model="scope.row.action" size="mini" style="width:150px;">
|
|
|
- <el-option label="立即启动干扰" value="立即启动干扰"/>
|
|
|
- <el-option label="进入准备状态" value="进入准备状态"/>
|
|
|
- <el-option label="发出警报" value="发出警报"/>
|
|
|
- <el-option label="执行预设序列" value="执行预设序列"/>
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="说明">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model="scope.row.triggerDesc" placeholder="补充说明(可选)" size="mini"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="延迟(s)" width="100">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model.number="scope.row.delaySec" :min="0" size="mini" type="number"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" width="90">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button class="danger-btn" size="mini" type="text" @click="removeJammerSchedule(scope.$index)">
|
|
|
- 删除
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- <div slot="footer">
|
|
|
- <el-button @click="addJammerDialog=false">取消</el-button>
|
|
|
- <el-button type="primary" @click="confirmAddJammer">{{ editModeJammer ? '保存' : '确认添加' }}</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
-
|
|
|
- <!-- 新增/编辑:测量 -->
|
|
|
- <el-dialog :close-on-click-modal="false" :title="editModeMeasurement ? '编辑测量装备' : '添加测量装备'"
|
|
|
- :visible.sync="addMeasurementDialog" size="40%">
|
|
|
- <el-form ref="measureFormRef" :model="newMeasurementForm" :rules="measureRules" class="dense-form"
|
|
|
- label-width="110px"
|
|
|
- size="small">
|
|
|
- <el-row :gutter="16">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="装备名称" prop="name">
|
|
|
- <el-input v-model="newMeasurementForm.name"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="装备类型" prop="type">
|
|
|
- <el-select v-model="newMeasurementForm.type" style="width:100%">
|
|
|
- <el-option label="雷达" value="雷达"/>
|
|
|
- <el-option label="光学" value="光学"/>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="经度" prop="lon">
|
|
|
- <el-input v-model="newMeasurementForm.lon"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="纬度" prop="lat">
|
|
|
- <el-input v-model="newMeasurementForm.lat"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="启动时间" prop="time">
|
|
|
- <el-time-picker v-model="newMeasurementForm.time" format="HH:mm:ss" placeholder="选择时间"
|
|
|
- style="width:100%;" value-format="HH:mm:ss"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12"></el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="测量范围(km)">
|
|
|
- <el-input v-model.number="measureForm.range" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="测量精度(m)">
|
|
|
- <el-input v-model.number="measureForm.precision" :min="0.1" step="0.1" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="俯仰角(°)">
|
|
|
- <el-input v-model.number="measureForm.deg" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :spn="12">
|
|
|
- <el-form-item label="离地高度(m)">
|
|
|
- <el-input v-model.number="measureForm.height" type="number"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="相对位置备注">
|
|
|
- <el-input v-model="newMeasurementForm.posNote" placeholder="如:指挥所东南角 200m 高度20m"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="24">
|
|
|
- <div class="subsection-header">
|
|
|
- <span>激活计划</span>
|
|
|
- <el-button icon="el-icon-plus" size="mini" type="primary" @click="addMeasurementSchedule">新增计划
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
- <el-table :data="newMeasurementForm.schedules" border size="small">
|
|
|
- <el-table-column label="激活时间" width="140">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-time-picker v-model="scope.row.time" format="HH:mm:ss" placeholder="HH:mm:ss" size="mini"
|
|
|
- value-format="HH:mm:ss"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="触发类型" width="150">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-select v-model="scope.row.triggerType" size="mini" style="width:140px;">
|
|
|
- <el-option label="导弹接近" value="导弹接近"/>
|
|
|
- <el-option label="雷达信号异常" value="雷达信号异常"/>
|
|
|
- <el-option label="目标激活" value="目标激活"/>
|
|
|
- <el-option label="手动触发" value="手动触发"/>
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="阈值参数" width="140">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model="scope.row.threshold" placeholder="如:距离<5km" size="mini"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="触发动作" width="160">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-select v-model="scope.row.action" size="mini" style="width:150px;">
|
|
|
- <el-option label="立即启动干扰" value="立即启动干扰"/>
|
|
|
- <el-option label="进入准备状态" value="进入准备状态"/>
|
|
|
- <el-option label="发出警报" value="发出警报"/>
|
|
|
- <el-option label="执行预设序列" value="执行预设序列"/>
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="说明">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model="scope.row.triggerDesc" placeholder="补充说明(可选)" size="mini"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="延迟(s)" width="100">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model.number="scope.row.delaySec" :min="0" size="mini" type="number"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="操作" width="90">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button class="danger-btn" size="mini" type="text"
|
|
|
- @click="removeMeasurementSchedule(scope.$index)">删除
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- <div slot="footer">
|
|
|
- <el-button @click="addMeasurementDialog=false">取消</el-button>
|
|
|
- <el-button type="primary" @click="confirmAddMeasurement">{{
|
|
|
- editModeMeasurement ? '保存' : '确认添加'
|
|
|
- }}
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
|
|
|
<dd-upload ref="uploadDd" />
|
|
|
</div>
|
|
|
@@ -843,27 +501,6 @@ export default {
|
|
|
|
|
|
mapMarkerPosition: null,
|
|
|
|
|
|
- targetRules: {
|
|
|
- name: [{required: true, message: '填写名称', trigger: 'blur'}],
|
|
|
- type: [{required: true, message: '选择类型', trigger: 'change'}],
|
|
|
- lon: [{required: true, message: '填写经度', trigger: 'blur'}],
|
|
|
- lat: [{required: true, message: '填写纬度', trigger: 'blur'}],
|
|
|
- time: [{required: true, message: '选择时间', trigger: 'change'}]
|
|
|
- },
|
|
|
- jammerRules: {
|
|
|
- name: [{required: true, message: '填写名称', trigger: 'blur'}],
|
|
|
- type: [{required: true, message: '选择类型', trigger: 'change'}],
|
|
|
- lon: [{required: true, message: '填写经度', trigger: 'blur'}],
|
|
|
- lat: [{required: true, message: '填写纬度', trigger: 'blur'}]
|
|
|
- },
|
|
|
- measureRules: {
|
|
|
- name: [{required: true, message: '填写名称', trigger: 'blur'}],
|
|
|
- type: [{required: true, message: '选择类型', trigger: 'change'}],
|
|
|
- lon: [{required: true, message: '填写经度', trigger: 'blur'}],
|
|
|
- lat: [{required: true, message: '填写纬度', trigger: 'blur'}],
|
|
|
- time: [{required: true, message: '选择时间', trigger: 'change'}]
|
|
|
- },
|
|
|
-
|
|
|
leftWidth: '58%',
|
|
|
rightWidth: '42%',
|
|
|
|
|
|
@@ -881,16 +518,13 @@ export default {
|
|
|
this.tsList.forEach(t => {
|
|
|
if (!t.ts) return;
|
|
|
list.push({
|
|
|
- time: `T0+${t.ts}`,
|
|
|
+ id:t.id,
|
|
|
+ time: `T0+${this.formatSeconds(t.seconds)}`,
|
|
|
name: t.zbName,
|
|
|
- rawTime: t.ts,
|
|
|
- title: t.ts === '00:00:00' ? '装备准备' : '装备激活',
|
|
|
- desc: `${t.zbName} ${t.ts === '00:00:00' ? '准备' : '激活'}`,
|
|
|
+ rawTime: this.formatSeconds(t.seconds),
|
|
|
+ title: t.seconds === '0' ? '初始化' : t.behavior,
|
|
|
+ desc: `${t.zbName}`,
|
|
|
zbType: this.$getDictNameByValue('zb_type', t.zbType),
|
|
|
- typeClass: t.type === '动态' ? 'tl-danger' : 'tl-warn',
|
|
|
- badgeClass: t.statusText === '可用'
|
|
|
- ? 'badge-success'
|
|
|
- : (t.statusText === '维护中' ? 'badge-warn' : 'badge-accent'),
|
|
|
});
|
|
|
});
|
|
|
|
|
|
@@ -941,6 +575,23 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
methods: {
|
|
|
+ formatSeconds(seconds) {
|
|
|
+ // 确保输入是有效的数字,并取整数部分
|
|
|
+ const totalSeconds = Math.max(0, Math.floor(seconds)); // 处理负数或无效输入
|
|
|
+
|
|
|
+ // 计算小时、分钟和秒
|
|
|
+ const hours = Math.floor(totalSeconds / 3600);
|
|
|
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
|
+ const secs = totalSeconds % 60;
|
|
|
+
|
|
|
+ // 使用 padStart 确保分钟和秒始终显示为两位数 (e.g., 05, 09, 12)
|
|
|
+ const paddedMinutes = String(minutes).padStart(2, '0');
|
|
|
+ const paddedSeconds = String(secs).padStart(2, '0');
|
|
|
+
|
|
|
+ // 返回格式: "Hhmmss" 或 "HH:mm:ss"
|
|
|
+ // 这里采用更标准的 HH:mm:ss 格式
|
|
|
+ return `${hours}:${paddedMinutes}:${paddedSeconds}`;
|
|
|
+ },
|
|
|
fetchTsList() {
|
|
|
getSubPlanZbTsList({simulationId: this.plan.id}).then((res) => {
|
|
|
this.tsList = res.data
|
|
|
@@ -1421,6 +1072,8 @@ html, body, #app, .page {
|
|
|
|
|
|
/* ===== 布局与滚动 ===== */
|
|
|
.workspace {
|
|
|
+ width: 80%;
|
|
|
+ margin: auto;
|
|
|
height: calc(100% - var(--header-h) - var(--footer-h));
|
|
|
}
|
|
|
|