feat 调整form 逻辑和样式

This commit is contained in:
Asoka 2025-06-10 11:50:46 +08:00
parent 5f529f2f06
commit d6112be661
3 changed files with 212 additions and 110 deletions

View File

@ -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 {
// undefinednull
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)

View File

@ -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()

View File

@ -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 />