战术计算优化
This commit is contained in:
@ -16,7 +16,7 @@
|
||||
<el-form-item label="我方距堵击点">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入我方距堵击点" min="0" max="99999999"
|
||||
v-model="blockade.weDistance" />
|
||||
v-model="blockade.weDistance" @input="checkBlockadeWeDistance" />
|
||||
<span class="unit">km</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -24,7 +24,7 @@
|
||||
<el-form-item label="敌方距堵击点">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入敌方距堵击点" min="0" max="99999999"
|
||||
v-model="blockade.enemyDistance" />
|
||||
v-model="blockade.enemyDistance" @input="checkBlockadeEnemyDistance" />
|
||||
<span class="unit">km</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -32,7 +32,7 @@
|
||||
<el-form-item label="敌方平均速度">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入敌方平均速度" min="0" max="99999999"
|
||||
v-model="blockade.enemySpeed" />
|
||||
v-model="blockade.enemySpeed" @input="checkBlockadeEnemySpeed" />
|
||||
<span class="unit">km/h</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -51,9 +51,12 @@
|
||||
<div>
|
||||
<span>所需追击时间</span>
|
||||
<span v-show="blockade.time === null">_</span>
|
||||
<span v-show="blockade.time !== null">≤
|
||||
<span v-show="blockade.formatTime.integerPart >= 1"><span class="data">{{blockade.formatTime.integerPart }}</span>h</span>
|
||||
<span v-show="blockade.formatTime.fractionalPart > 0 ||(blockade.formatTime.integerPart === 0 && blockade.formatTime.fractionalPart === 0)"><span class="data">{{ Math.round(blockade.formatTime.fractionalPart * 60)}}</span>min</span>
|
||||
<span v-show="blockade.time !== null">≤
|
||||
<span v-show="blockade.formatTime.integerPart >= 1"><span class="data">{{ blockade.formatTime.integerPart
|
||||
}}</span>h</span>
|
||||
<span
|
||||
v-show="blockade.formatTime.fractionalPart > 0 || (blockade.formatTime.integerPart === 0 && blockade.formatTime.fractionalPart === 0)"><span
|
||||
class="data">{{ Math.round(blockade.formatTime.fractionalPart * 60) }}</span>min</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -63,7 +66,7 @@
|
||||
<el-form-item label="与敌人的距离">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入与敌人距离" min="0" max="99999999"
|
||||
v-model="pursuit.distance" />
|
||||
v-model="pursuit.distance" @input="checkPursuitDistance" />
|
||||
<span class="unit">km</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -71,7 +74,7 @@
|
||||
<el-form-item label="敌运动速度">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入敌运动速度" min="0" max="99999999"
|
||||
v-model="pursuit.enemySpeed" />
|
||||
v-model="pursuit.enemySpeed" @input="checkPursuitEnemySpeed" />
|
||||
<span class="unit">km/h</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -79,7 +82,7 @@
|
||||
<el-form-item label="追击速度">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入追击速度" min="0" max="99999999"
|
||||
v-model="pursuit.speed" />
|
||||
v-model="pursuit.speed" @input="checkPursuitSpeed" />
|
||||
<span class="unit">km/h</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -93,9 +96,12 @@
|
||||
<div>
|
||||
<span>追上敌方的时间</span>
|
||||
<span v-show="pursuit.time == null">_</span>
|
||||
<span v-show="pursuit.time !== null">=
|
||||
<span v-show="pursuit.formatTime.integerPart >= 1"><span class="data">{{pursuit.formatTime.integerPart }}</span>h</span>
|
||||
<span v-show="pursuit.formatTime.fractionalPart > 0 ||(pursuit.formatTime.integerPart === 0 && pursuit.formatTime.fractionalPart === 0)"><span class="data">{{ Math.round(pursuit.formatTime.fractionalPart * 60)}}</span>min</span>
|
||||
<span v-show="pursuit.time !== null">=
|
||||
<span v-show="pursuit.formatTime.integerPart >= 1"><span class="data">{{ pursuit.formatTime.integerPart
|
||||
}}</span>h</span>
|
||||
<span
|
||||
v-show="pursuit.formatTime.fractionalPart > 0 || (pursuit.formatTime.integerPart === 0 && pursuit.formatTime.fractionalPart === 0)"><span
|
||||
class="data">{{ Math.round(pursuit.formatTime.fractionalPart * 60) }}</span>min</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -105,7 +111,7 @@
|
||||
<el-form-item label="敌我间距离">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入敌我间距离" min="0" max="99999999"
|
||||
v-model="encounter.distance" />
|
||||
v-model="encounter.distance" @input="checkEncounterDistance" />
|
||||
<span class="unit">km</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -113,7 +119,7 @@
|
||||
<el-form-item label="我运动时速">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入我运动时速" min="0" max="99999999"
|
||||
v-model="encounter.weSpeed" />
|
||||
v-model="encounter.weSpeed" @input="checkEncounterWeSpeed" />
|
||||
<span class="unit">km/h</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -121,7 +127,7 @@
|
||||
<el-form-item label="敌运动速度">
|
||||
<div class="input-number input-number-unit-3">
|
||||
<input class="input" type="number" title="" placeholder="请输入敌运动速度" min="0" max="99999999"
|
||||
v-model="encounter.enemySpeed" />
|
||||
v-model="encounter.enemySpeed" @input="checkEncounterEnemySpeed" />
|
||||
<span class="unit">km/h</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -135,16 +141,19 @@
|
||||
<div>
|
||||
<span>与敌遭遇的时间</span>
|
||||
<span v-show="encounter.time === null">_</span>
|
||||
<span v-show="encounter.time !== null">=
|
||||
<span v-show="encounter.formatTime.integerPart >= 1"><span class="data">{{encounter.formatTime.integerPart }}</span>h</span>
|
||||
<span v-show="encounter.formatTime.fractionalPart > 0 ||(encounter.formatTime.integerPart === 0 && encounter.formatTime.fractionalPart === 0)"><span class="data">{{ Math.round(encounter.formatTime.fractionalPart * 60)}}</span>min</span>
|
||||
<span v-show="encounter.time !== null">=
|
||||
<span v-show="encounter.formatTime.integerPart >= 1"><span
|
||||
class="data">{{ encounter.formatTime.integerPart }}</span>h</span>
|
||||
<span
|
||||
v-show="encounter.formatTime.fractionalPart > 0 || (encounter.formatTime.integerPart === 0 && encounter.formatTime.fractionalPart === 0)"><span
|
||||
class="data">{{ Math.round(encounter.formatTime.fractionalPart * 60) }}</span>min</span>
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>与敌遭遇的距离</span>
|
||||
<span v-show="!encounter.meetingDistance && encounter.meetingDistance !== 0">_</span>
|
||||
<span v-show="encounter.meetingDistance || encounter.meetingDistance === 0">= <span class="data">{{
|
||||
encounter.meetingDistance }}</span>km</span>
|
||||
encounter.meetingDistance }}</span>km</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
@ -153,7 +162,7 @@
|
||||
<el-form-item label="河宽或潜渡路线长度">
|
||||
<div class="input-number input-number-unit-1" style="width: 190px;">
|
||||
<input class="input" type="number" title="" placeholder="请输入河宽或潜渡路线长度" min="0" max="99999999"
|
||||
v-model="dive.distance" />
|
||||
v-model="dive.distance" @input="checkDiveDistance" />
|
||||
<span class="unit">m</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -161,23 +170,23 @@
|
||||
<el-form-item label="潜渡中坦克间距">
|
||||
<div class="input-number input-number-unit-3" style="width: 190px;">
|
||||
<input class="input" type="number" title="" placeholder="请输入潜渡中坦克间距" min="0" max="99999999"
|
||||
v-model="dive.spacing" />
|
||||
v-model="dive.spacing" @input="checkDiveSpacing" />
|
||||
<span class="unit">m</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="潜渡坦克数量">
|
||||
<div class="input-number input-number-unit-3" style="width: 190px;">
|
||||
<input class="input" type="number" title="" placeholder="请输入潜渡坦克数量" min="0" max="99999999"
|
||||
v-model="dive.tank" />
|
||||
<input class="input" type="number" title="" placeholder="请输入潜渡坦克数量" min="1" max="99999999"
|
||||
v-model="dive.tank" @input="checkDiveTank" />
|
||||
<span class="unit">辆</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="潜渡路线数量">
|
||||
<div class="input-number input-number-unit-3" style="width: 190px;">
|
||||
<input class="input" type="number" title="" placeholder="请输入潜渡路线数量" min="0" max="99999999"
|
||||
v-model="dive.route" />
|
||||
<input class="input" type="number" title="" placeholder="请输入潜渡路线数量" min="1" max="99999999"
|
||||
v-model="dive.route" @input="checkDiveRoute" />
|
||||
<span class="unit">条</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -185,7 +194,7 @@
|
||||
<el-form-item label="潜渡速度">
|
||||
<div class="input-number input-number-unit-3" style="width: 190px;">
|
||||
<input class="input" type="number" title="" placeholder="请输入潜渡速度" min="0" max="99999999"
|
||||
v-model="dive.speed" />
|
||||
v-model="dive.speed" @input="checkDiveSpeed" />
|
||||
<span class="unit">m/min</span>
|
||||
<span class="arrow"></span>
|
||||
</div>
|
||||
@ -199,9 +208,12 @@
|
||||
<div>
|
||||
<span>潜渡时间</span>
|
||||
<span v-show="dive.time === null">_</span>
|
||||
<span v-show="dive.time !== null">=
|
||||
<span v-show="dive.formatTime.integerPart >= 1"><span class="data">{{dive.formatTime.integerPart }}</span>h</span>
|
||||
<span v-show="dive.formatTime.fractionalPart > 0 ||(dive.formatTime.integerPart === 0 && dive.formatTime.fractionalPart === 0)"><span class="data">{{ Math.round(dive.formatTime.fractionalPart * 60)}}</span>min</span>
|
||||
<span v-show="dive.time !== null">=
|
||||
<span v-show="dive.formatTime.integerPart >= 1"><span class="data">{{ dive.formatTime.integerPart
|
||||
}}</span>h</span>
|
||||
<span
|
||||
v-show="dive.formatTime.fractionalPart > 0 || (dive.formatTime.integerPart === 0 && dive.formatTime.fractionalPart === 0)"><span
|
||||
class="data">{{ Math.round(dive.formatTime.fractionalPart * 60) }}</span>min</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -352,10 +364,7 @@ export default {
|
||||
},
|
||||
|
||||
pursuitCalculate() {
|
||||
let num = Number(this.pursuit.distance)
|
||||
let num2 = Number(this.pursuit.enemySpeed)
|
||||
let num3 = Number(this.pursuit.speed)
|
||||
if (!num || !num2 || !num3) {
|
||||
if (!this.pursuit.distance || !this.pursuit.enemySpeed || !this.pursuit.speed) {
|
||||
this.pursuit.time = null
|
||||
this.pursuit.formatTime = {
|
||||
integerPart: null,
|
||||
@ -364,9 +373,16 @@ export default {
|
||||
return;
|
||||
}
|
||||
|
||||
let num = Number(this.pursuit.distance)
|
||||
let num2 = Number(this.pursuit.enemySpeed)
|
||||
let num3 = Number(this.pursuit.speed)
|
||||
// 如果初始距离为0,已经追上
|
||||
if (num === 0) {
|
||||
this.pursuit.time = 0
|
||||
this.pursuit.formatTime = {
|
||||
integerPart: 0,
|
||||
fractionalPart: 0,
|
||||
}
|
||||
}
|
||||
else {
|
||||
const relativeSpeed = num3 - num2;
|
||||
@ -387,10 +403,7 @@ export default {
|
||||
},
|
||||
|
||||
encounterCalculate() {
|
||||
let num = Number(this.encounter.distance)
|
||||
let num2 = Number(this.encounter.weSpeed)
|
||||
let num3 = Number(this.encounter.enemySpeed)
|
||||
if (!num || !num2 || !num3) {
|
||||
if (!this.encounter.distance || !this.encounter.weSpeed || !this.encounter.enemySpeed) {
|
||||
this.encounter.time = null
|
||||
this.encounter.meetingDistance = null
|
||||
this.encounter.formatTime = {
|
||||
@ -399,6 +412,13 @@ export default {
|
||||
}
|
||||
return;
|
||||
}
|
||||
let num = Number(this.encounter.distance)
|
||||
let num2 = Number(this.encounter.weSpeed)
|
||||
let num3 = Number(this.encounter.enemySpeed)
|
||||
if(num2 == 0 && num3 == 0) {
|
||||
this.$message.warning("敌我双方运动时速皆为0,不会遭遇");
|
||||
return
|
||||
}
|
||||
const relativeSpeed = num2 + num3;
|
||||
this.encounter.time = Math.round((num / relativeSpeed) * 100) / 100;
|
||||
this.encounter.meetingDistance = Math.round((num2 * this.encounter.time) * 100) / 100
|
||||
@ -422,7 +442,7 @@ export default {
|
||||
// let time = ((distance + ((tank / route) * spacing)) / speed)
|
||||
let num = Math.ceil(tank / route) //路径上坦克最多数量
|
||||
let actualDistance = distance
|
||||
if(num > 1) {
|
||||
if (num > 1) {
|
||||
actualDistance = distance + ((num - 1) * spacing)
|
||||
}
|
||||
let time = actualDistance / speed
|
||||
@ -459,7 +479,92 @@ export default {
|
||||
data = { integerPart, fractionalPart };
|
||||
}
|
||||
return data
|
||||
}
|
||||
},
|
||||
|
||||
checkBlockadeWeDistance(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.blockade.weDistance = 0.01
|
||||
}
|
||||
},
|
||||
checkBlockadeEnemyDistance(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.blockade.enemyDistance = 0.01
|
||||
}
|
||||
},
|
||||
checkBlockadeEnemySpeed(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.blockade.enemySpeed = 0.01
|
||||
}
|
||||
},
|
||||
checkPursuitDistance(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.pursuit.distance = 0.01
|
||||
}
|
||||
},
|
||||
checkPursuitEnemySpeed(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0) {
|
||||
this.pursuit.enemySpeed = 0
|
||||
}
|
||||
},
|
||||
checkPursuitSpeed(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.pursuit.speed = 0.01
|
||||
}
|
||||
},
|
||||
checkEncounterDistance(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.encounter.distance = 0.01
|
||||
}
|
||||
},
|
||||
checkEncounterWeSpeed(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0) {
|
||||
this.encounter.weSpeed = 0
|
||||
}
|
||||
},
|
||||
checkEncounterEnemySpeed(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0) {
|
||||
this.encounter.enemySpeed = 0
|
||||
}
|
||||
},
|
||||
checkDiveDistance(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.dive.distance = 0.01
|
||||
}
|
||||
},
|
||||
checkDiveSpacing(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.dive.spacing = 0.01
|
||||
}
|
||||
},
|
||||
checkDiveTank(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 1) {
|
||||
this.dive.tank = 1
|
||||
}
|
||||
},
|
||||
checkDiveRoute(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 1) {
|
||||
this.dive.route = 1
|
||||
}
|
||||
},
|
||||
checkDiveSpeed(e) {
|
||||
let value = Number(e.target.value)
|
||||
if (value < 0.01) {
|
||||
this.dive.speed = 0.01
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
@ -664,5 +769,4 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}</style>
|
||||
|
||||
Reference in New Issue
Block a user