|
@@ -0,0 +1,717 @@
|
|
|
+<template>
|
|
|
+ <div class="bigBox">
|
|
|
+ <div class="top">
|
|
|
+ <el-button icon="el-icon-arrow-left" style="margin: 20px;" @click="goback">返回上一级</el-button>
|
|
|
+ <h2 style="font-size: 42px;color: #0f0f0f;display: inline-block;margin: 0;">仿真系统</h2>
|
|
|
+ </div>
|
|
|
+ <div class="main">
|
|
|
+ <div class="mainTop">
|
|
|
+ <el-radio-group v-model="radio" @change="changeRadio">
|
|
|
+ <el-radio :label="1" border><span class="radioText">数学仿真</span></el-radio>
|
|
|
+ <el-radio :label="2" border><span class="radioText">数实仿真</span></el-radio>
|
|
|
+ <el-radio :label="3" border><span class="radioText">数据回放</span></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ <el-divider content-position="left">参数设置</el-divider>
|
|
|
+ <!-- sxfz:数学仿真、ssfz:数实仿真 -->
|
|
|
+ <div class="mainCenter">
|
|
|
+ <div class="mainCenterTop">
|
|
|
+ <div class="mainCenterTopLeft">
|
|
|
+ <el-card class="box-card" :shadow="form.mathFZ?'never':'always'">
|
|
|
+ <span :class="[form.mathFZ ? 'disabledColor' :'normalColor']">基础参数</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="90px" size="small" :disabled="form.mathFZ" :class="[form.mathFZ ? 'labelColor' :'']">
|
|
|
+ <el-form-item label="仿真名称:">
|
|
|
+ <el-input v-model="form.FZname" placeholder="格式:环境-作战目标-序号"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="海洋环境:">
|
|
|
+ <div class="seaEnv">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="13">
|
|
|
+ <el-form-item label="海洋深度" label-width="80px" >
|
|
|
+ <el-input v-model="form.deep" placeholder="请输入海深(范围:0-1200m)" @change="seaDeepChange"></el-input>
|
|
|
+ <span class="spanStyle">(m)</span>
|
|
|
+ <span style="margin-left: 10px;color: blue;text-decoration:underline; cursor: pointer;" @click="setSeaDeep">设置</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-form-item label="海洋地质" label-width="80px" >
|
|
|
+ <el-select v-model="form.geology" placeholder="请选择海洋地质">
|
|
|
+ <el-option label="泥沙" value="泥沙"></el-option>
|
|
|
+ <el-option label="砾石" value="砾石"></el-option>
|
|
|
+ <el-option label="砂岩" value="砂岩"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="13">
|
|
|
+ <el-form-item label="海况等级" label-width="80px" >
|
|
|
+ <el-select v-model="form.grade" placeholder="请选择海况等级">
|
|
|
+ <el-option label="1级" value="1"></el-option>
|
|
|
+ <el-option label="2级" value="2"></el-option>
|
|
|
+ <el-option label="3级" value="3"></el-option>
|
|
|
+ <el-option label="4级" value="4"></el-option>
|
|
|
+ <el-option label="5级" value="5"></el-option>
|
|
|
+ <el-option label="6级" value="6"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="11">
|
|
|
+ <el-form-item label="声速剖面" label-width="80px" >
|
|
|
+ <el-select v-model="form.profile" placeholder="请选择声速剖面">
|
|
|
+ <el-option label="典型深海梯度剖面" value="典型深海梯度剖面"></el-option>
|
|
|
+ <el-option label="正梯度剖面" value="正梯度剖面"></el-option>
|
|
|
+ <el-option label="负梯度剖面" value="负梯度剖面"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="洋流环境:">
|
|
|
+ <div class="seaEnv">
|
|
|
+ <el-row>
|
|
|
+ <el-form-item label="是否有洋流" label-width="100px">
|
|
|
+ <el-radio-group v-model="form.yangLiu">
|
|
|
+ <el-radio label="是"></el-radio>
|
|
|
+ <el-radio label="否"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="深度" label-width="80px">
|
|
|
+ <el-input v-model="form.yangLiuDeep" placeholder="请输入洋流深度" :disabled="form.yangLiu=='否'" ></el-input>
|
|
|
+ <span class="spanStyle">(m)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="速度" label-width="80px" >
|
|
|
+ <el-input v-model="form.yangLiuSpeed" placeholder="请输入洋流速度" :disabled="form.yangLiu=='否'"></el-input>
|
|
|
+ <span class="spanStyle">(m/s)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="厚度" label-width="80px" >
|
|
|
+ <el-input v-model="form.yangLiuThickness" placeholder="请输入洋流厚度" :disabled="form.yangLiu=='否'"></el-input>
|
|
|
+ <span class="spanStyle">(m)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="方向" label-width="80px" >
|
|
|
+ <el-input v-model="form.yangLiuDirection" placeholder="请输入洋流方向" :disabled="form.yangLiu=='否'"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="任务雷数:">
|
|
|
+ <el-select v-model="form.number" placeholder="请选择任务雷数">
|
|
|
+ <el-option label="1" value="1"></el-option>
|
|
|
+ <el-option label="2" value="2"></el-option>
|
|
|
+ <el-option label="3" value="3"></el-option>
|
|
|
+ <el-option label="4" value="4"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <span class="spanStyle">(条)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="发射时间间隔:" label-width="120px" >
|
|
|
+ <el-input v-model="form.time" placeholder="请输入雷的发射时间间隔"></el-input>
|
|
|
+ <span class="spanStyle">(s)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-form-item label="作战任务:">
|
|
|
+ <el-radio-group v-model="form.task">
|
|
|
+ <el-radio label="反潜"></el-radio>
|
|
|
+ <el-radio label="反舰"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ <el-card class="box-card" style="margin-top: 20px;" :shadow="form.mathFZ?'never':'always'">
|
|
|
+ <span :class="[form.mathFZ ? 'disabledColor' :'normalColor']">信息簇参数</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="100px" size="small" :disabled="form.mathFZ" :class="[form.mathFZ ? 'labelColor' :'']">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="有无信息簇:">
|
|
|
+ <el-radio-group v-model="form.infoCluster">
|
|
|
+ <el-radio label="有"></el-radio>
|
|
|
+ <el-radio label="无"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="更新周期:">
|
|
|
+ <el-input v-model="form.updateCycle" :disabled="form.infoCluster=='无'" placeholder="请输入信息簇的更新周期"></el-input>
|
|
|
+ <span class="spanStyle">(s)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ <div class="mainCenterTopRight">
|
|
|
+ <el-card class="box-card" :shadow="form.mathFZ?'never':'always'">
|
|
|
+ <span :class="[form.mathFZ ? 'disabledColor' :'normalColor']">鱼雷参数</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="90px" size="small" :disabled="form.mathFZ" :class="[form.mathFZ ? 'labelColor' :'']">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始速度:">
|
|
|
+ <el-input v-model="form.torpedoSpeed" placeholder="请输入鱼雷初始速度"></el-input>
|
|
|
+ <span class="spanStyle">(km/h)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="速度范围:">
|
|
|
+ <el-input v-model="form.torpedoSpeedLow" style="width: 50px;"></el-input>
|
|
|
+ <span style="margin:0px 10px;">-</span>
|
|
|
+ <el-input v-model="form.torpedoSpeedHigh" style="width: 50px;"></el-input>
|
|
|
+ <span class="spanStyle" style="margin-left:10px;">(km/h)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始航向:">
|
|
|
+ <el-input v-model="form.torpedoCourse" placeholder="请输入鱼雷初始航向"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始深度:">
|
|
|
+ <el-input v-model="form.torpedoDepth" placeholder="请输入鱼雷初始深度"></el-input>
|
|
|
+ <span class="spanStyle">(m)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="制导模式:">
|
|
|
+ <el-select v-model="form.guidance" placeholder="请选择制导模式">
|
|
|
+ <el-option label="主动声制导" value="主动声制导"></el-option>
|
|
|
+ <el-option label="主被动声制导" value="主被动声制导"></el-option>
|
|
|
+ <el-option label="尾流制导" value="尾流制导"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始位置:">
|
|
|
+ <el-input v-model="form.torpedoPositionE" placeholder="经度" style="width: 80px;"></el-input>
|
|
|
+ <span class="spanStyle" style="margin:0px 30px 0px 10px;">E</span>
|
|
|
+ <el-input v-model="form.torpedoPositionN" placeholder="纬度" style="width: 80px;"></el-input>
|
|
|
+ <span class="spanStyle">N</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ <el-card class="box-card" style="margin-top: 15px;" :shadow="form.mathFZ?'never':'always'">
|
|
|
+ <span :class="[form.mathFZ ? 'disabledColor' :'normalColor']">目标参数</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="90px" size="small" :disabled="form.mathFZ" :class="[form.mathFZ ? 'labelColor' :'']">
|
|
|
+ <el-form-item label="对抗能力:">
|
|
|
+ <el-radio-group v-model="form.resist">
|
|
|
+ <el-radio label="有对抗能力"></el-radio>
|
|
|
+ <el-radio label="无对抗能力"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始速度:">
|
|
|
+ <el-input v-model="form.targetSpeed" placeholder="请输入目标初始速度"></el-input>
|
|
|
+ <span class="spanStyle">(km/h)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="速度范围:">
|
|
|
+ <el-input v-model="form.targetSpeedLow" style="width: 50px;"></el-input>
|
|
|
+ <span style="margin:0px 10px;">-</span>
|
|
|
+ <el-input v-model="form.targetSpeedHigh" style="width: 50px;"></el-input>
|
|
|
+ <span class="spanStyle" style="margin-left:10px;">(km/h)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始深度:">
|
|
|
+ <el-input v-model="form.targetDepth" placeholder="请输入目标初始深度"></el-input>
|
|
|
+ <span class="spanStyle">(m)</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="初始位置:">
|
|
|
+ <el-input v-model="form.targetPositionE" placeholder="经度" style="width: 80px;"></el-input>
|
|
|
+ <span class="spanStyle" style="margin:0px 30px 0px 10px;">E</span>
|
|
|
+ <el-input v-model="form.targetPositionN" placeholder="纬度" style="width: 80px;"></el-input>
|
|
|
+ <span class="spanStyle">N</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ <el-card class="box-card" style="margin-top: 15px;" :shadow="form.mathFZ?'never':'always'">
|
|
|
+ <span :class="[form.mathFZ ? 'disabledColor' :'normalColor']">数据注入</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="90px" size="small" :disabled="form.mathFZ" :class="[form.mathFZ ? 'labelColor' :'']">
|
|
|
+ <el-form-item label="数据类型:">
|
|
|
+ <el-radio-group v-model="form.injectType">
|
|
|
+ <el-radio label="环境参数"></el-radio>
|
|
|
+ <el-radio label="目标参数"></el-radio>
|
|
|
+ <el-radio label="干扰参数"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="注入文件:">
|
|
|
+ <el-upload
|
|
|
+ class="upload-demo"
|
|
|
+ action=""
|
|
|
+ accept=".xlsx,.xls"
|
|
|
+ :on-preview="handlePreview"
|
|
|
+ :on-remove="handleRemove"
|
|
|
+ :before-remove="beforeRemove"
|
|
|
+ multiple
|
|
|
+ :file-list="fileList">
|
|
|
+ <el-button size="small" type="primary">点击上传</el-button>
|
|
|
+ <div slot="tip" class="el-upload__tip" style="color:#c0c7da">只能上传.xlsx,.xls文件,且不超过500kb</div>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="mainCenterBottom">
|
|
|
+ <div class="mainCenterBottomLeft">
|
|
|
+ <el-card class="box-card" style="margin-top: 20px;" :shadow="form.SSFZ?'never':'always'">
|
|
|
+ <span :class="[form.SSFZ ? 'disabledColor' :'normalColor']">外部实物链接</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="20px" size="small" :disabled="form.SSFZ" :class="[form.SSFZ ? 'labelColor' :'']">
|
|
|
+ <el-form-item label="">
|
|
|
+ <el-radio-group v-model="form.link">
|
|
|
+ <el-radio label="链接制导系统"></el-radio>
|
|
|
+ <el-radio label="链接全雷系统"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ <el-card class="box-card" style="margin-top: 20px;" :shadow="form.playback?'never':'always'">
|
|
|
+ <span :class="[form.playback ? 'disabledColor' :'normalColor']">数据回放信息设置</span>
|
|
|
+ <el-form ref="form" :model="form" label-width="80px" size="small" :disabled="form.playback" :class="[form.playback ? 'labelColor' :'']">
|
|
|
+ <el-form-item label="">
|
|
|
+ <el-radio-group v-model="form.dataType">
|
|
|
+ <el-radio label="算法数据"></el-radio>
|
|
|
+ <el-radio label="试验数据"></el-radio>
|
|
|
+ <el-radio label="仿真数据"></el-radio>
|
|
|
+ <el-radio label="对比分析"></el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="回放数据" prop="playbackData">
|
|
|
+ <el-select v-model="form.playbackData" placeholder="请选择回放数据" @change="playbackChange">
|
|
|
+ <el-option
|
|
|
+ v-for="item in playbackList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="对比数据">
|
|
|
+ <el-select v-model="form.contrastData" :disabled="!(form.dataType=='对比分析')" placeholder="请选择对比数据" @change="playbackChange">
|
|
|
+ <el-option
|
|
|
+ v-for="item in contrastList"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ <div class="mainCenterBottomRight">
|
|
|
+ <el-form ref="form" :model="form" label-width="80px">
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" style="margin-right:50px" @click="onSubmit()">{{ title }}</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-dialog
|
|
|
+ title="参数确认"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ custom-class="descriptionsDialog"
|
|
|
+ width="1000px">
|
|
|
+ <el-descriptions title="基础参数" border size="mini">
|
|
|
+ <el-descriptions-item label="仿真名称">{{ form.FZname?form.FZname:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="海洋环境">海洋深度:{{form.deep?`${form.deep}米`:'-' }}<br>海洋地质:{{ form.geology?form.geology:'-' }}<br>海况等级:{{ form.grade?`${form.grade}级`:'-' }}<br>声速剖面:{{ form.profile?form.profile:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="洋流环境">是否有洋流:{{ form.yangLiu }}<br>深度:{{ form.yangLiu=='是'?`${form.yangLiuDeep}m`:'-' }}<br>
|
|
|
+ 速度:{{ form.yangLiu=='是'?`${form.yangLiuSpeed}m/s`:'-' }}<br>
|
|
|
+ 厚度:{{ form.yangLiu=='是'?`${form.yangLiuThickness}m`:'-' }}<br>
|
|
|
+ 方向:{{ form.yangLiu=='是'?`${form.yangLiuDirection}`:'-' }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="任务雷数">{{ form.number?`${form.number}条`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="发射时间间隔">{{ form.time?`${form.time}秒`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="作战任务">{{ form.task }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions title="信息簇参数" border size="mini">
|
|
|
+ <el-descriptions-item label="有无信息簇">{{ form.infoCluster }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="更新周期">{{ form.infoCluster=='有'?`${form.updateCycle}s`:'-' }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions title="鱼雷参数" border size="mini">
|
|
|
+ <el-descriptions-item label="初始速度">{{ form.torpedoSpeed?`${form.torpedoSpeed}km/h`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="速度范围">{{ form.torpedoSpeedLow?`${form.torpedoSpeedLow}km/h`:' ' }} - {{ form.torpedoSpeedHigh?`${form.torpedoSpeedHigh}km/h`:' ' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="初始航向">{{ form.torpedoCourse?form.torpedoCourse:' ' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="初始深度">{{ form.torpedoDepth?`${form.torpedoDepth}m`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="制导模式">{{ form.guidance?`${form.guidance}`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="初始位置">{{ form.torpedoPositionE?`${form.torpedoPositionE}E`:'' }},{{ form.torpedoPositionN?`${form.torpedoPositionN}N`:'' }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions title="目标参数" border size="mini">
|
|
|
+ <el-descriptions-item label="对抗能力">{{ form.resist }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="初始速度">{{ form.targetSpeed?`${form.targetSpeed}km/h`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="速度范围">{{ form.targetSpeedLow?`${form.targetSpeedLow}km/h`:' ' }} - {{ form.targetSpeedHigh?`${form.targetSpeedHigh}km/h`:' ' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="初始深度">{{ form.targetDepth?`${form.number}m`:'-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="初始位置">{{ form.targetPositionE?`${form.targetPositionE}E`:'' }},{{ form.targetPositionN?`${form.targetPositionN}N`:'' }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions title="数据注入" border size="mini">
|
|
|
+ <el-descriptions-item label="数据类型">{{ form.resist }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="注入文件">{{ fileList?`${fileList}`:'-' }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions title="外部实物链接" border size="mini" v-if="!form.SSFZ">
|
|
|
+ <el-descriptions-item label="链接系统">{{ form.link }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="paramsSubmit">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ title="设置海深"
|
|
|
+ :visible.sync="seaDeepVisible"
|
|
|
+ width="30%">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12" style="text-align:center">海深(m)</el-col>
|
|
|
+ <el-col :span="12" style="text-align:center">声速(m/s)</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row v-for="item in seaDeepList" :key="item.index">
|
|
|
+ <el-col :span="12" class="seaDialog seaDialogText">
|
|
|
+ {{ item.index }}m
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" class="seaDialog">
|
|
|
+ <el-input v-model="item.soundVelocity" size="small" placeholder="请输入声速"></el-input>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="seaDeepVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="seaDeepVisible = false">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ name:'simulationSystem',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ radio:1,
|
|
|
+ form: {
|
|
|
+ FZname: '',
|
|
|
+ geology: '',
|
|
|
+ deep:'',
|
|
|
+ grade:'',
|
|
|
+ profile:'',
|
|
|
+ yangLiu:"否",
|
|
|
+ yangLiuDeep:'',
|
|
|
+ yangLiuSpeed:'',
|
|
|
+ yangLiuThickness:'',
|
|
|
+ yangLiuDirection:'',
|
|
|
+ number:'',
|
|
|
+ time:'',
|
|
|
+ task:'反潜',
|
|
|
+ injectType:'环境参数',
|
|
|
+ guidance:'',
|
|
|
+ resist:'有对抗能力',
|
|
|
+ torpedoSpeed:'',
|
|
|
+ torpedoDepth:'',
|
|
|
+ torpedoSpeedLow:'',
|
|
|
+ torpedoSpeedHigh:'',
|
|
|
+ torpedoCourse:'0',
|
|
|
+ torpedoPositionE:'',
|
|
|
+ torpedoPositionN:'',
|
|
|
+ targetSpeed:'',
|
|
|
+ targetDepth:'',
|
|
|
+ targetSpeedLow:'',
|
|
|
+ targetSpeedHigh:'',
|
|
|
+ targetPositionE:'',
|
|
|
+ targetPositionN:'',
|
|
|
+ infoCluster:'有',
|
|
|
+ updateCycle:'600',
|
|
|
+ link:'链接制导系统',
|
|
|
+ dataType: '算法数据',
|
|
|
+ playbackData: '',
|
|
|
+ contrastData:'',
|
|
|
+ mathFZ:false,
|
|
|
+ SSFZ:true,
|
|
|
+ playback:true
|
|
|
+ },
|
|
|
+ fileList:[],
|
|
|
+ playbackList:[],
|
|
|
+ contrastList:[],
|
|
|
+ fileName:'',
|
|
|
+ dialogVisible:false,
|
|
|
+ paramsConfirm:false,
|
|
|
+ title:"参数预览",
|
|
|
+ seaDeepVisible:false,
|
|
|
+ // deepNumber:0,
|
|
|
+ seaDeepList:[]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted(){
|
|
|
+ this.getFile()
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ getFile(){
|
|
|
+ this.$axios.get(`/api/`).then((res) => {
|
|
|
+ if (res.status === 200) {
|
|
|
+ if (res.data.length === 0) {
|
|
|
+ this.$message.error('文件夹下暂无回放数据,请添加数据')
|
|
|
+ }
|
|
|
+ res.data.forEach((item, index) => {
|
|
|
+ this.playbackList.push({
|
|
|
+ label: item,
|
|
|
+ value: item
|
|
|
+ })
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.$message.warning('读文件列表有误')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ goback(){
|
|
|
+ this.$router.push({ name:'mainPage' })
|
|
|
+ },
|
|
|
+ onSubmit() {
|
|
|
+ if(!this.form.playback){
|
|
|
+ if (this.form.playbackData && this.form.dataType!=='对比分析') {
|
|
|
+ this.$router.push({ name:'threeDemo',params:{ fileName:this.fileName } })
|
|
|
+ }else if(!this.form.contrastData){
|
|
|
+ this.$message.warning('暂无对比数据')
|
|
|
+ }else {
|
|
|
+ this.$message.warning('请选择要回放的数据')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }else if(this.paramsConfirm){
|
|
|
+ return
|
|
|
+ }else{
|
|
|
+ this.dialogVisible=true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ paramsSubmit(){
|
|
|
+ this.dialogVisible=false
|
|
|
+ this.paramsConfirm = true
|
|
|
+ this.title="开始运行"
|
|
|
+ },
|
|
|
+ handleRemove(file, fileList) {
|
|
|
+ console.log(file, fileList);
|
|
|
+ },
|
|
|
+ handlePreview(file) {
|
|
|
+ console.log(file);
|
|
|
+ },
|
|
|
+ beforeRemove(file, fileList) {
|
|
|
+ return this.$confirm(`确定移除 ${ file.name }?`);
|
|
|
+ },
|
|
|
+ changeRadio(value){
|
|
|
+ switch (value) {
|
|
|
+ case 1:
|
|
|
+ this.form.mathFZ=false
|
|
|
+ this.form.SSFZ=true
|
|
|
+ this.form.playback=true
|
|
|
+ this.title="参数预览"
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ this.form.mathFZ=false
|
|
|
+ this.form.SSFZ=false
|
|
|
+ this.form.playback=true
|
|
|
+ this.title="参数预览"
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ this.form.mathFZ=true
|
|
|
+ this.form.SSFZ=true
|
|
|
+ this.form.playback=false
|
|
|
+ this.title="开始运行"
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ playbackChange(val){
|
|
|
+ console.log(val);
|
|
|
+ this.fileName=val
|
|
|
+ },
|
|
|
+ setSeaDeep(){
|
|
|
+ if(this.form.deep<0 || this.form.deep>1200){
|
|
|
+ this.$message.warning('请输入正确深度')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(this.form.deep){
|
|
|
+ if(this.seaDeepList.length==0){
|
|
|
+ let deepNumber=0
|
|
|
+ if(Number(this.form.deep)%100==0){
|
|
|
+ deepNumber=parseInt(Number(this.form.deep)/100)+1;
|
|
|
+ }else{
|
|
|
+ deepNumber=parseInt(Number(this.form.deep)/100)+2;
|
|
|
+ }
|
|
|
+ for(let i=0;i<=deepNumber-1;i++){
|
|
|
+ if(i==0){
|
|
|
+ this.seaDeepList.push({
|
|
|
+ index:i,
|
|
|
+ soundVelocity:''
|
|
|
+ })
|
|
|
+ }else if(i==deepNumber-1){
|
|
|
+ this.seaDeepList.push({
|
|
|
+ index:Number(this.form.deep),
|
|
|
+ soundVelocity:''
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ this.seaDeepList.push({
|
|
|
+ index:i*100,
|
|
|
+ soundVelocity:''
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.seaDeepVisible=true
|
|
|
+ }else{
|
|
|
+ this.$message.warning('请输入海洋深度')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ seaDeepChange(){
|
|
|
+ this.seaDeepList=[]
|
|
|
+ }
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+*{
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+.bigBox{
|
|
|
+ width: 1920px;
|
|
|
+ height: 1080px;
|
|
|
+ position: absolute;
|
|
|
+ left: 1920px;
|
|
|
+ top: 0;
|
|
|
+ background-color: white;
|
|
|
+ padding: 10px 50px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ /* margin-left: 20px; */
|
|
|
+}
|
|
|
+.radioText{
|
|
|
+ font-weight: 700;
|
|
|
+ /* font-size: 18px; */
|
|
|
+}
|
|
|
+.mainTop{
|
|
|
+ /* margin-left: 50px; */
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+.mainTop >>> .el-radio.is-bordered{
|
|
|
+ height: 50px;
|
|
|
+}
|
|
|
+.mainTop >>> .el-radio__label{
|
|
|
+ font-size: 22px;
|
|
|
+}
|
|
|
+.mainTop >>> .el-radio{
|
|
|
+ margin-right: 100px;
|
|
|
+}
|
|
|
+
|
|
|
+.seaEnv{
|
|
|
+ padding-top: 10px;
|
|
|
+ border: 1px solid #eeeeee;
|
|
|
+}
|
|
|
+/* .title{
|
|
|
+ font-weight: 700;
|
|
|
+} */
|
|
|
+.mainCenter{
|
|
|
+ width: 100%;
|
|
|
+ height: 819px;
|
|
|
+ /* display: flex; */
|
|
|
+}
|
|
|
+.mainCenterTop,
|
|
|
+.mainCenterBottom{
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+.mainCenterTopLeft,
|
|
|
+.mainCenterTopRight,
|
|
|
+.mainCenterBottomLeft,
|
|
|
+.mainCenterBottomRight{
|
|
|
+ width: 46%;
|
|
|
+ margin-left: 45px;
|
|
|
+}
|
|
|
+.mainCenterBottomRight{
|
|
|
+ display:flex;
|
|
|
+ justify-content:flex-end;
|
|
|
+ align-items:flex-end;
|
|
|
+}
|
|
|
+::v-deep(.el-card__body){
|
|
|
+ padding: 10px 20px;
|
|
|
+}
|
|
|
+.mainFooter{
|
|
|
+ margin-top: 20px;
|
|
|
+ margin-left: -100px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+::v-deep(.el-divider__text){
|
|
|
+ font-size: 20px;
|
|
|
+}
|
|
|
+::v-deep(.el-form-item){
|
|
|
+ margin-bottom: 8px;
|
|
|
+}
|
|
|
+::v-deep(.el-input){
|
|
|
+ width: 200px;
|
|
|
+}
|
|
|
+::v-deep(.el-input__inner){
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+.disabledColor{
|
|
|
+ color:#c0c7da;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.normalColor{
|
|
|
+ color:black;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.labelColor >>> .el-form-item__label{
|
|
|
+ color:#c0c7da;
|
|
|
+}
|
|
|
+::v-deep(.el-descriptions-item__label) {
|
|
|
+ width: 100px; /* 设置 label 宽度为 100px */
|
|
|
+}
|
|
|
+::v-deep(.el-descriptions-item__cell){
|
|
|
+ border: 1px solid #ced2db;
|
|
|
+}
|
|
|
+::v-deep(.descriptionsDialog .el-dialog__body) {
|
|
|
+ padding: 0px 20px;
|
|
|
+}
|
|
|
+::v-deep(.descriptionsDialog .el-descriptions__header) {
|
|
|
+ margin: 10px 0px 5px 0px;
|
|
|
+}
|
|
|
+.seaDialog{
|
|
|
+ text-align:center;
|
|
|
+ margin:10px 0px 0px 0px;
|
|
|
+}
|
|
|
+.seaDialogText{
|
|
|
+ padding-top:7px
|
|
|
+}
|
|
|
+.spanStyle{
|
|
|
+ margin-left: 10px;
|
|
|
+ color:#c0c7da
|
|
|
+}
|
|
|
+</style>
|