feat 调整form 逻辑和样式
This commit is contained in:
parent
5f529f2f06
commit
d6112be661
@ -28,27 +28,30 @@
|
|||||||
<el-form-item label="策略名称" prop="configName" required>
|
<el-form-item label="策略名称" prop="configName" required>
|
||||||
<el-input v-model="formData.configName" clearable placeholder="请输入策略名称" />
|
<el-input v-model="formData.configName" clearable placeholder="请输入策略名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="总理论时长" prop="totalTheoryTime" required>
|
<el-form-item label="两段式" prop="isTwoStep">
|
||||||
|
<el-switch v-model="formData.isTwoStep" :active-value="1" :inactive-value="0" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="formData.isTwoStep !== 1" label="总理论时长" prop="totalTheoryTime" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.totalTheoryTime" disabled style="flex: 1;" />
|
<el-input-number v-model="formData.totalTheoryTime" disabled style="flex: 1;" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">分钟</span>
|
<span style="margin-left: 8px; white-space: nowrap;">分钟</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="sub-group">
|
<div class="sub-group" v-if="formData.isTwoStep !== 1">
|
||||||
<div class="sub-title">校准</div>
|
<div class="sub-title">校准</div>
|
||||||
<el-form-item label="校准阶段时长" prop="calibrateDuration" required>
|
<el-form-item v-if="formData.isTwoStep !== 1" label="校准阶段时长" prop="calibrateDuration" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.calibrateDuration" :min="0" style="flex: 1;" />
|
<el-input-number v-model="formData.calibrateDuration" :min="120" :max="300" style="flex: 1;" placeholder="请输入120-300之间的秒数" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">秒</span>
|
<span style="margin-left: 8px; white-space: nowrap;">秒</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="校准阶段补料占总量百分比" prop="calibrateVolumePercent" required>
|
<el-form-item v-if="formData.isTwoStep !== 1" label="校准阶段补料占总量百分比" prop="calibrateVolumePercent" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.calibrateVolumePercent" :min="0" :max="100" style="flex: 1;" />
|
<el-input-number v-model="formData.calibrateVolumePercent" :min="6" :max="20" style="flex: 1;" placeholder="请输入6-20之间的百分比" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="校准理论速度" prop="calibrateTheorySpeed" required>
|
<el-form-item v-if="formData.isTwoStep !== 1" label="校准理论速度" prop="calibrateTheorySpeed" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.calibrateTheorySpeed" :min="0" style="flex: 1;" disabled />
|
<el-input-number v-model="formData.calibrateTheorySpeed" :min="0" style="flex: 1;" disabled />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
@ -59,17 +62,29 @@
|
|||||||
<div class="sub-title">高速</div>
|
<div class="sub-title">高速</div>
|
||||||
<el-form-item label="高速阶段泵速百分比" prop="highSpeedPercent" required>
|
<el-form-item label="高速阶段泵速百分比" prop="highSpeedPercent" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.highSpeedPercent" :min="0" :max="100" style="flex: 1;" />
|
<el-input-number
|
||||||
|
v-model="formData.highSpeedPercent"
|
||||||
|
:min="formData.isTwoStep === 1 ? 1 : 2"
|
||||||
|
:max="formData.isTwoStep === 1 ? 100 : 50"
|
||||||
|
style="flex: 1;"
|
||||||
|
:placeholder="formData.isTwoStep === 1 ? '请输入1-100之间的百分比' : '请输入2-50之间的百分比'"
|
||||||
|
/>
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="高速阶段补料占总量百分比" prop="highSpeedVolumePercent" required>
|
<el-form-item label="高速阶段补料占总量百分比" prop="highSpeedVolumePercent" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.highSpeedVolumePercent" :min="0" :max="100" style="flex: 1;" />
|
<el-input-number
|
||||||
|
v-model="formData.highSpeedVolumePercent"
|
||||||
|
:min="formData.isTwoStep === 1 ? 50 : 60"
|
||||||
|
:max="formData.isTwoStep === 1 ? 90 : 80"
|
||||||
|
style="flex: 1;"
|
||||||
|
:placeholder="formData.isTwoStep === 1 ? '请输入50-90之间的百分比' : '请输入60-80之间的百分比'"
|
||||||
|
/>
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="高速理论时长" prop="highSpeedTheoryTime" required>
|
<el-form-item v-if="formData.isTwoStep !== 1" label="高速理论时长" prop="highSpeedTheoryTime" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.highSpeedTheoryTime" :min="0" style="flex: 1;" disabled />
|
<el-input-number v-model="formData.highSpeedTheoryTime" :min="0" style="flex: 1;" disabled />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">分钟</span>
|
<span style="margin-left: 8px; white-space: nowrap;">分钟</span>
|
||||||
@ -80,17 +95,23 @@
|
|||||||
<div class="sub-title">低速</div>
|
<div class="sub-title">低速</div>
|
||||||
<el-form-item label="低速阶段泵速百分比" prop="lowSpeedPercent" required>
|
<el-form-item label="低速阶段泵速百分比" prop="lowSpeedPercent" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.lowSpeedPercent" :min="0" :max="100" style="flex: 1;" />
|
<el-input-number
|
||||||
|
v-model="formData.lowSpeedPercent"
|
||||||
|
:min="formData.isTwoStep === 1 ? 1 : 0.5"
|
||||||
|
:max="formData.isTwoStep === 1 ? 100 : 20"
|
||||||
|
style="flex: 1;"
|
||||||
|
:placeholder="formData.isTwoStep === 1 ? '请输入1-100之间的百分比' : '请输入0.5-20之间的百分比'"
|
||||||
|
/>
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="低速阶段补料占总量百分比" prop="lowSpeedVolumePercent" required>
|
<el-form-item v-if="formData.isTwoStep !== 1" label="低速阶段补料占总量百分比" prop="lowSpeedVolumePercent" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.lowSpeedVolumePercent" :min="0" :max="100" style="flex: 1;" />
|
<el-input-number v-model="formData.lowSpeedVolumePercent" :min="2" :max="50" style="flex: 1;" placeholder="请输入2-50之间的百分比" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="低速理论时长" prop="lowSpeedTheoryTime" required>
|
<el-form-item v-if="formData.isTwoStep !== 1" label="低速理论时长" prop="lowSpeedTheoryTime" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.lowSpeedTheoryTime" :min="0" style="flex: 1;" disabled />
|
<el-input-number v-model="formData.lowSpeedTheoryTime" :min="0" style="flex: 1;" disabled />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">分钟</span>
|
<span style="margin-left: 8px; white-space: nowrap;">分钟</span>
|
||||||
@ -103,61 +124,69 @@
|
|||||||
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
|
||||||
<el-card shadow="hover" class="group-card">
|
<el-card shadow="hover" class="group-card">
|
||||||
<div class="section-title">监控</div>
|
<div class="section-title">监控</div>
|
||||||
<el-form-item label="环控间隔时间" prop="intervalTime" required>
|
<el-form-item prop="intervalTime" required>
|
||||||
|
<template #label>
|
||||||
|
环控间隔时间
|
||||||
|
<el-tooltip content="监控每次启动间隔时间" placement="top">
|
||||||
|
<el-icon style="margin-left: 4px; margin-top: 6px; color: #909399; cursor: pointer;">
|
||||||
|
<QuestionFilled />
|
||||||
|
</el-icon>
|
||||||
|
</el-tooltip>
|
||||||
|
</template>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.intervalTime" :min="0" style="flex: 1;" />
|
<el-input-number v-model="formData.intervalTime" :min="1" style="flex: 1;" placeholder="请输入大于0的秒数" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">秒</span>
|
<span style="margin-left: 8px; white-space: nowrap;">秒</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="补料超量百分比" prop="excessPercentage" required>
|
<el-form-item label="补料超量百分比" prop="excessPercentage" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.excessPercentage" :min="0" style="flex: 1;" />
|
<el-input-number v-model="formData.excessPercentage" :min="1" style="flex: 1;" placeholder="请输入大于0的百分比" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="超时时间" prop="timeOutSeconds" required>
|
<el-form-item label="超时时间" prop="timeOutSeconds" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.timeOutSeconds" :min="0" style="flex: 1;" />
|
<el-input-number v-model="formData.timeOutSeconds" :min="1" style="flex: 1;" placeholder="请输入大于0的秒数" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">秒</span>
|
<span style="margin-left: 8px; white-space: nowrap;">秒</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="终点百分比" prop="terminalVolumePercent" required>
|
<el-form-item label="终点百分比" prop="terminalVolumePercent" required>
|
||||||
<div style="display: flex; align-items: center; width: 100%;">
|
<div style="display: flex; align-items: center; width: 100%;">
|
||||||
<el-input-number v-model="formData.terminalVolumePercent" :min="0" :max="100" style="flex: 1;" />
|
<el-input-number v-model="formData.terminalVolumePercent" :min="98" :max="100" style="flex: 1;" placeholder="请输入98-100之间的百分比" />
|
||||||
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
<span style="margin-left: 8px; white-space: nowrap;">%</span>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="sub-group">
|
<div class="sub-group">
|
||||||
<div class="sub-title">抖动</div>
|
<div class="sub-title">抖动</div>
|
||||||
<el-form-item label="抖动环控时间系数" prop="ditherIntervalCoefficient" required>
|
<el-form-item label="抖动环控时间系数" prop="ditherIntervalCoefficient" required>
|
||||||
<el-input-number v-model="formData.ditherIntervalCoefficient" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.ditherIntervalCoefficient" :min="1" :max="5" style="width:100%" placeholder="请输入1-5之间的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="抖动系数" prop="ditherCoefficient" required>
|
<el-form-item label="抖动系数" prop="ditherCoefficient" required>
|
||||||
<el-input-number v-model="formData.ditherCoefficient" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.ditherCoefficient" :min="2" :max="10" style="width:100%" placeholder="请输入2-10之间的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="抖动观察时间系数" prop="ditherMonitorTime" required>
|
<el-form-item label="抖动观察时间系数" prop="ditherMonitorTime" required>
|
||||||
<el-input-number v-model="formData.ditherMonitorTime" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.ditherMonitorTime" :min="1" style="width:100%" placeholder="请输入大于0的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="抖动地秤系数" prop="ditherScaleCoefficient" required>
|
<el-form-item label="抖动地秤系数" prop="ditherScaleCoefficient" required>
|
||||||
<el-input-number v-model="formData.ditherScaleCoefficient" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.ditherScaleCoefficient" :min="1" style="width:100%" placeholder="请输入大于0的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="sub-group">
|
<div class="sub-group">
|
||||||
<div class="sub-title">返水</div>
|
<div class="sub-title">返水</div>
|
||||||
<el-form-item label="返水环控时间系数" prop="rebateIntervalCoefficient" required>
|
<el-form-item label="返水环控时间系数" prop="rebateIntervalCoefficient" required>
|
||||||
<el-input-number v-model="formData.rebateIntervalCoefficient" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.rebateIntervalCoefficient" disabled style="width:100%" placeholder="自动等于抖动环控时间系数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="返水系数" prop="rebateCoefficient" required>
|
<el-form-item label="返水系数" prop="rebateCoefficient" required>
|
||||||
<el-input-number v-model="formData.rebateCoefficient" :min="-100" style="width:100%" />
|
<el-input-number v-model="formData.rebateCoefficient" :max="-1" style="width:100%" placeholder="请输入小于等于-1的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="sub-group">
|
<div class="sub-group">
|
||||||
<div class="sub-title">堵塞</div>
|
<div class="sub-title">堵塞</div>
|
||||||
<el-form-item label="堵塞环控时间系数" prop="jamIntervalCoefficient" required>
|
<el-form-item label="堵塞环控时间系数" prop="jamIntervalCoefficient" required>
|
||||||
<el-input-number v-model="formData.jamIntervalCoefficient" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.jamIntervalCoefficient" :min="1" style="width:100%" placeholder="请输入大于0的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="堵塞系数" prop="jamCoefficient" required>
|
<el-form-item label="堵塞系数" prop="jamCoefficient" required>
|
||||||
<el-input-number v-model="formData.jamCoefficient" :min="0" style="width:100%" />
|
<el-input-number v-model="formData.jamCoefficient" :min="0" :max="1" style="width:100%" placeholder="请输入0-1之间的数值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -178,6 +207,7 @@ import { ref, reactive, watch } from 'vue'
|
|||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import type { FormInstance } from 'element-plus'
|
import type { FormInstance } from 'element-plus'
|
||||||
import { UspFeedingConfigApi } from '/@/api/admin/UspFeedingConfigApi'
|
import { UspFeedingConfigApi } from '/@/api/admin/UspFeedingConfigApi'
|
||||||
|
import { QuestionFilled } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
modelValue: boolean
|
modelValue: boolean
|
||||||
@ -189,34 +219,33 @@ const emit = defineEmits<{
|
|||||||
}>()
|
}>()
|
||||||
|
|
||||||
const formRef = ref<FormInstance>()
|
const formRef = ref<FormInstance>()
|
||||||
// 取消类型限制,保证所有字段都能用
|
|
||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
configName: '',
|
configName: '',
|
||||||
totalTheoryTime: 0,
|
totalTheoryTime: undefined as number | undefined,
|
||||||
calibrateDuration: 0,
|
calibrateDuration: undefined as number | undefined,
|
||||||
calibrateVolumePercent: 0,
|
calibrateVolumePercent: undefined as number | undefined,
|
||||||
calibrateTheorySpeed: 0,
|
calibrateTheorySpeed: undefined as number | undefined,
|
||||||
highSpeedPercent: 0,
|
highSpeedPercent: undefined as number | undefined,
|
||||||
highSpeedVolumePercent: 0,
|
highSpeedVolumePercent: undefined as number | undefined,
|
||||||
highSpeedTheoryTime: 0,
|
highSpeedTheoryTime: undefined as number | undefined,
|
||||||
lowSpeedPercent: 0,
|
lowSpeedPercent: undefined as number | undefined,
|
||||||
lowSpeedVolumePercent: 0,
|
lowSpeedVolumePercent: undefined as number | undefined,
|
||||||
lowSpeedTheoryTime: 0,
|
lowSpeedTheoryTime: undefined as number | undefined,
|
||||||
intervalTime: 0,
|
intervalTime: undefined as number | undefined,
|
||||||
excessPercentage: 0,
|
excessPercentage: undefined as number | undefined,
|
||||||
timeOutSeconds: 0,
|
timeOutSeconds: undefined as number | undefined,
|
||||||
terminalVolumePercent: 0,
|
terminalVolumePercent: undefined as number | undefined,
|
||||||
ditherIntervalCoefficient: 0,
|
ditherIntervalCoefficient: undefined as number | undefined,
|
||||||
ditherCoefficient: 0,
|
ditherCoefficient: undefined as number | undefined,
|
||||||
ditherMonitorTime: 0,
|
ditherMonitorTime: undefined as number | undefined,
|
||||||
ditherScaleCoefficient: 0,
|
ditherScaleCoefficient: undefined as number | undefined,
|
||||||
rebateIntervalCoefficient: 0,
|
rebateIntervalCoefficient: undefined as number | undefined,
|
||||||
rebateCoefficient: 0,
|
rebateCoefficient: undefined as number | undefined,
|
||||||
jamIntervalCoefficient: 0,
|
jamIntervalCoefficient: undefined as number | undefined,
|
||||||
jamCoefficient: 0,
|
jamCoefficient: undefined as number | undefined,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
isTwoStep: 0,
|
isTwoStep: 0,
|
||||||
id: 0
|
id: undefined as number | undefined
|
||||||
})
|
})
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
@ -265,45 +294,70 @@ watch(
|
|||||||
)
|
)
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => [formData.calibrateVolumePercent, formData.calibrateDuration],
|
() => [formData.calibrateVolumePercent, formData.calibrateDuration, formData.isTwoStep],
|
||||||
([volume, duration]) => {
|
([volume, duration]) => {
|
||||||
if (duration > 0) {
|
if (formData.isTwoStep === 1) return;
|
||||||
formData.calibrateTheorySpeed = Number((volume / duration * 60).toFixed(2))
|
if (typeof volume === 'number' && typeof duration === 'number' && duration > 0) {
|
||||||
|
formData.calibrateTheorySpeed = Number((volume / duration * 60).toFixed(2)) as number
|
||||||
} else {
|
} else {
|
||||||
formData.calibrateTheorySpeed = 0
|
formData.calibrateTheorySpeed = undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// 新增:高速理论时长自动计算
|
// 新增:高速理论时长自动计算
|
||||||
watch(
|
watch(
|
||||||
() => [formData.highSpeedVolumePercent, formData.highSpeedPercent],
|
() => [formData.highSpeedVolumePercent, formData.highSpeedPercent, formData.isTwoStep],
|
||||||
([volume, percent]) => {
|
([volume, percent]) => {
|
||||||
if (percent > 0) {
|
if (formData.isTwoStep === 1) return;
|
||||||
formData.highSpeedTheoryTime = Number((volume / percent).toFixed(2))
|
if (typeof volume === 'number' && typeof percent === 'number' && percent > 0) {
|
||||||
|
formData.highSpeedTheoryTime = Number((volume / percent).toFixed(2)) as number
|
||||||
} else {
|
} else {
|
||||||
formData.highSpeedTheoryTime = 0
|
formData.highSpeedTheoryTime = undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// 新增:低速理论时长自动计算
|
// 新增:低速理论时长自动计算
|
||||||
watch(
|
watch(
|
||||||
() => [formData.lowSpeedVolumePercent, formData.lowSpeedPercent],
|
() => [formData.lowSpeedVolumePercent, formData.lowSpeedPercent, formData.isTwoStep],
|
||||||
([volume, percent]) => {
|
([volume, percent]) => {
|
||||||
if (percent > 0) {
|
if (formData.isTwoStep === 1) return;
|
||||||
formData.lowSpeedTheoryTime = Number((volume / percent).toFixed(2))
|
if (typeof volume === 'number' && typeof percent === 'number' && percent > 0) {
|
||||||
|
formData.lowSpeedTheoryTime = Number((volume / percent).toFixed(2)) as number
|
||||||
} else {
|
} else {
|
||||||
formData.lowSpeedTheoryTime = 0
|
formData.lowSpeedTheoryTime = undefined
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// 新增:总理论时长自动计算
|
// 新增:总理论时长自动计算
|
||||||
watch(
|
watch(
|
||||||
() => [formData.calibrateDuration, formData.highSpeedTheoryTime, formData.lowSpeedTheoryTime],
|
() => [formData.calibrateDuration, formData.highSpeedTheoryTime, formData.lowSpeedTheoryTime, formData.isTwoStep],
|
||||||
([calibrateDuration, highSpeedTheoryTime, lowSpeedTheoryTime]) => {
|
([calibrateDuration, highSpeedTheoryTime, lowSpeedTheoryTime]) => {
|
||||||
formData.totalTheoryTime = Number(((calibrateDuration / 60) + highSpeedTheoryTime + lowSpeedTheoryTime).toFixed(2))
|
if (formData.isTwoStep === 1) return;
|
||||||
|
if (typeof calibrateDuration === 'number' && typeof highSpeedTheoryTime === 'number' && typeof lowSpeedTheoryTime === 'number') {
|
||||||
|
formData.totalTheoryTime = Number(((calibrateDuration / 60) + highSpeedTheoryTime + lowSpeedTheoryTime).toFixed(2)) as number
|
||||||
|
} else {
|
||||||
|
formData.totalTheoryTime = undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => [formData.isTwoStep, formData.highSpeedPercent],
|
||||||
|
([isTwoStep, highSpeedPercent]) => {
|
||||||
|
if (isTwoStep === 1) {
|
||||||
|
formData.lowSpeedVolumePercent = 100 - Number(highSpeedPercent || 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// 自动同步返水环控时间系数 = 抖动环控时间系数
|
||||||
|
watch(
|
||||||
|
() => formData.ditherIntervalCoefficient,
|
||||||
|
(val) => {
|
||||||
|
formData.rebateIntervalCoefficient = val
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -311,31 +365,31 @@ function resetForm() {
|
|||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
Object.assign(formData, {
|
Object.assign(formData, {
|
||||||
configName: '',
|
configName: '',
|
||||||
totalTheoryTime: 0,
|
totalTheoryTime: undefined,
|
||||||
calibrateDuration: 0,
|
calibrateDuration: undefined,
|
||||||
calibrateVolumePercent: 0,
|
calibrateVolumePercent: undefined,
|
||||||
calibrateTheorySpeed: 0,
|
calibrateTheorySpeed: undefined,
|
||||||
highSpeedPercent: 0,
|
highSpeedPercent: undefined,
|
||||||
highSpeedVolumePercent: 0,
|
highSpeedVolumePercent: undefined,
|
||||||
highSpeedTheoryTime: 0,
|
highSpeedTheoryTime: undefined,
|
||||||
lowSpeedPercent: 0,
|
lowSpeedPercent: undefined,
|
||||||
lowSpeedVolumePercent: 0,
|
lowSpeedVolumePercent: undefined,
|
||||||
lowSpeedTheoryTime: 0,
|
lowSpeedTheoryTime: undefined,
|
||||||
intervalTime: 0,
|
intervalTime: undefined,
|
||||||
excessPercentage: 0,
|
excessPercentage: undefined,
|
||||||
timeOutSeconds: 0,
|
timeOutSeconds: undefined,
|
||||||
terminalVolumePercent: 0,
|
terminalVolumePercent: undefined,
|
||||||
ditherIntervalCoefficient: 0,
|
ditherIntervalCoefficient: undefined,
|
||||||
ditherCoefficient: 0,
|
ditherCoefficient: undefined,
|
||||||
ditherMonitorTime: 0,
|
ditherMonitorTime: undefined,
|
||||||
ditherScaleCoefficient: 0,
|
ditherScaleCoefficient: undefined,
|
||||||
rebateIntervalCoefficient: 0,
|
rebateIntervalCoefficient: undefined,
|
||||||
rebateCoefficient: 0,
|
rebateCoefficient: undefined,
|
||||||
jamIntervalCoefficient: 0,
|
jamIntervalCoefficient: undefined,
|
||||||
jamCoefficient: 0,
|
jamCoefficient: undefined,
|
||||||
enabled: true,
|
enabled: true,
|
||||||
isTwoStep: 0,
|
isTwoStep: 0,
|
||||||
id: 0
|
id: undefined
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -367,32 +421,62 @@ async function open(row?: any) {
|
|||||||
async function handleSubmit() {
|
async function handleSubmit() {
|
||||||
if (!formRef.value) return
|
if (!formRef.value) return
|
||||||
|
|
||||||
// 新增:补料占总量百分比之和校验
|
// 只有 isTwoStep !== 1 时才校验百分比之和
|
||||||
|
if (formData.isTwoStep !== 1) {
|
||||||
const sum = Number(formData.calibrateVolumePercent) + Number(formData.highSpeedVolumePercent) + Number(formData.lowSpeedVolumePercent)
|
const sum = Number(formData.calibrateVolumePercent) + Number(formData.highSpeedVolumePercent) + Number(formData.lowSpeedVolumePercent)
|
||||||
if (sum !== 100) {
|
if (sum !== 100) {
|
||||||
ElMessage.warning('补料占总量百分比之和必须等于100!')
|
ElMessage.warning('补料占总量百分比之和必须等于100!')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await formRef.value.validate(async (valid: boolean) => {
|
await formRef.value.validate(async (valid: boolean) => {
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
// 处理所有undefined为null
|
||||||
|
const data: Record<string, any> = { ...formData }
|
||||||
|
Object.keys(data).forEach((key: string) => {
|
||||||
|
if (typeof data[key] === 'undefined') data[key] = null
|
||||||
|
})
|
||||||
|
if (data.id == null) delete data.id
|
||||||
if (formData.id) {
|
if (formData.id) {
|
||||||
const updateInput = {
|
const updateInput = {
|
||||||
...formData,
|
...data,
|
||||||
setSpeed: formData.calibrateTheorySpeed,
|
setSpeed: data.calibrateTheorySpeed,
|
||||||
speedDiff: 0,
|
speedDiff: 0,
|
||||||
feedTime: formData.totalTheoryTime
|
feedTime: data.totalTheoryTime,
|
||||||
|
id: data.id,
|
||||||
|
configName: data.configName,
|
||||||
|
intervalTime: data.intervalTime,
|
||||||
|
calibrateDuration: data.calibrateDuration,
|
||||||
|
calibrateVolumePercent: data.calibrateVolumePercent,
|
||||||
|
highSpeedPercent: data.highSpeedPercent,
|
||||||
|
highSpeedVolumePercent: data.highSpeedVolumePercent,
|
||||||
|
lowSpeedPercent: data.lowSpeedPercent,
|
||||||
|
lowSpeedVolumePercent: data.lowSpeedVolumePercent,
|
||||||
|
ditherIntervalCoefficient: data.ditherIntervalCoefficient,
|
||||||
|
ditherCoefficient: data.ditherCoefficient,
|
||||||
|
ditherMonitorTime: data.ditherMonitorTime,
|
||||||
|
ditherScaleCoefficient: data.ditherScaleCoefficient,
|
||||||
|
rebateIntervalCoefficient: data.rebateIntervalCoefficient,
|
||||||
|
rebateCoefficient: data.rebateCoefficient,
|
||||||
|
jamIntervalCoefficient: data.jamIntervalCoefficient,
|
||||||
|
jamCoefficient: data.jamCoefficient,
|
||||||
|
excessPercentage: data.excessPercentage,
|
||||||
|
timeOutSeconds: data.timeOutSeconds,
|
||||||
|
terminalVolumePercent: data.terminalVolumePercent,
|
||||||
|
enabled: data.enabled,
|
||||||
|
isTwoStep: data.isTwoStep
|
||||||
}
|
}
|
||||||
await api.update(updateInput)
|
await api.update(updateInput)
|
||||||
ElMessage.success('修改成功')
|
ElMessage.success('修改成功')
|
||||||
} else {
|
} else {
|
||||||
const addInput = {
|
const addInput = {
|
||||||
...formData,
|
...data,
|
||||||
setSpeed: formData.calibrateTheorySpeed,
|
setSpeed: data.calibrateTheorySpeed,
|
||||||
speedDiff: 0,
|
speedDiff: 0,
|
||||||
feedTime: formData.totalTheoryTime
|
feedTime: data.totalTheoryTime
|
||||||
}
|
}
|
||||||
delete (addInput as any).id
|
delete (addInput as any).id
|
||||||
await api.add(addInput)
|
await api.add(addInput)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<MyLayout>
|
<MyLayout>
|
||||||
<el-card class="my-query-box" shadow="never">
|
<el-card class="my-query-box mt8" shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-form ref="queryFormRef" :model="state.filter" :inline="true" class="demo-form-inline">
|
<el-form ref="queryFormRef" :model="state.filter" :inline="true" class="demo-form-inline">
|
||||||
<el-form-item label="策略名称">
|
<el-form-item label="策略名称">
|
||||||
@ -49,13 +49,28 @@
|
|||||||
<el-table-column prop="configName" label="策略名称" min-width="120" show-overflow-tooltip />
|
<el-table-column prop="configName" label="策略名称" min-width="120" show-overflow-tooltip />
|
||||||
<el-table-column label="补料方式" min-width="100" align="center" show-overflow-tooltip>
|
<el-table-column label="补料方式" min-width="100" align="center" show-overflow-tooltip>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag type="success" v-if="row.isTwoStep === 1">二段式</el-tag>
|
<el-tag type="info" v-if="row.isTwoStep === 1">二段式</el-tag>
|
||||||
<el-tag type="info" v-else>三段式</el-tag>
|
<el-tag type="success " v-else>三段式</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="feedTime" label="补料时长 min" min-width="100" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.isTwoStep === 1">-</span>
|
||||||
|
<span v-else>{{ row.feedTime }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="calibrateDuration" label="校准阶段时长/s" min-width="120" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.isTwoStep === 1">-</span>
|
||||||
|
<span v-else>{{ row.calibrateDuration }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="calibrateVolumePercent" label="校准阶段补料占总量百分比/%" min-width="180" show-overflow-tooltip>
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.isTwoStep === 1">-</span>
|
||||||
|
<span v-else>{{ row.calibrateVolumePercent }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="feedTime" label="补料时长" min-width="100" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="calibrateDuration" label="校准阶段时长/s" min-width="120" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="calibrateVolumePercent" label="校准阶段补料占总量百分比/%" min-width="180" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="highSpeedPercent" label="高速阶段泵速比例/%" min-width="140" show-overflow-tooltip />
|
<el-table-column prop="highSpeedPercent" label="高速阶段泵速比例/%" min-width="140" show-overflow-tooltip />
|
||||||
<el-table-column prop="highSpeedVolumePercent" label="高速阶段补料占比/%" min-width="140" show-overflow-tooltip />
|
<el-table-column prop="highSpeedVolumePercent" label="高速阶段补料占比/%" min-width="140" show-overflow-tooltip />
|
||||||
<el-table-column prop="lowSpeedPercent" label="低速阶段泵速比例/%" min-width="140" show-overflow-tooltip />
|
<el-table-column prop="lowSpeedPercent" label="低速阶段泵速比例/%" min-width="140" show-overflow-tooltip />
|
||||||
@ -101,7 +116,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<feeding-config-form ref="formRef" @success="handleSuccess" :model-value="false" title="泵速策略" />
|
<feeding-config-form
|
||||||
|
ref="formRef"
|
||||||
|
v-model="showForm"
|
||||||
|
@refresh="getList"
|
||||||
|
title="泵速策略"
|
||||||
|
/>
|
||||||
</MyLayout>
|
</MyLayout>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -217,9 +237,7 @@ const handleDelete = (row: FeedingConfigGetPageOutput) => {
|
|||||||
}).catch(() => {})
|
}).catch(() => {})
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleSuccess = () => {
|
const showForm = ref(false)
|
||||||
getList()
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList()
|
getList()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<MyLayout>
|
<MyLayout>
|
||||||
<el-card class="my-query-box" shadow="never">
|
<el-card class="my-query-box mt8" shadow="never">
|
||||||
<el-form :model="queryParams" ref="queryFormRef" :inline="true">
|
<el-form :model="queryParams" ref="queryFormRef" :inline="true">
|
||||||
<el-form-item label="关键字" prop="keyWord">
|
<el-form-item label="关键字" prop="keyWord">
|
||||||
<el-input v-model="queryParams.keyWord" placeholder="请输入关键字" clearable />
|
<el-input v-model="queryParams.keyWord" placeholder="请输入关键字" clearable />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user