fix: 测控一体机开关,集成定时控制。

This commit is contained in:
tianyongbao
2026-03-08 17:19:47 +08:00
parent 35d11e1205
commit e8791e9371

View File

@@ -271,10 +271,15 @@
<el-dialog
:title="`定时控制 - ${currentSwitch?.switchName || ''} (序号:${currentSwitch?.index || ''})`"
v-model="timingCtrlDialogVisible"
width="800px"
width="1080px"
append-to-body
@close="closeTimingCtrlDialog"
>
<!-- 工具栏 -->
<div style="margin-bottom: 12px;">
<el-button type="primary" plain icon="Plus" size="small" @click="handleTimingCtrlAdd" v-hasPermi="['fishery:timingCtrl:add']">新增</el-button>
</div>
<el-table
v-loading="timingCtrlLoading"
:data="timingCtrlList"
@@ -293,6 +298,17 @@
<dict-tag :options="open_close" :value="scope.row.isOpen"/>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip /> -->
<el-table-column label="操作" align="center" width="120" fixed="right">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleTimingCtrlUpdate(scope.row)" v-hasPermi="['fishery:timingCtrl:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="danger" icon="Delete" @click="handleTimingCtrlDelete(scope.row)" v-hasPermi="['fishery:timingCtrl:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<template #footer>
@@ -301,6 +317,49 @@
</div>
</template>
</el-dialog>
<!-- 定时控制编辑对话框 -->
<el-dialog :title="timingCtrlEditDialog.title" v-model="timingCtrlEditDialog.visible" width="500px" append-to-body>
<el-form ref="timingCtrlFormRef" :model="timingCtrlForm" :rules="timingCtrlRules" label-width="90px">
<el-form-item label="开启时间" prop="openTime">
<el-date-picker clearable
v-model="timingCtrlForm.openTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择开启时间"
style="width: 100%">
</el-date-picker>
</el-form-item>
<el-form-item label="关闭时间" prop="closeTime">
<el-date-picker clearable
v-model="timingCtrlForm.closeTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择关闭时间"
style="width: 100%">
</el-date-picker>
</el-form-item>
<el-form-item label="循环类型" prop="loopType">
<el-select v-model="timingCtrlForm.loopType" placeholder="请选择循环类型" style="width: 100%">
<el-option v-for="dict in loop_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否启用" prop="isOpen">
<el-select v-model="timingCtrlForm.isOpen" placeholder="请选择是否启用" style="width: 100%">
<el-option v-for="dict in open_close" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="timingCtrlForm.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="timingCtrlEditLoading" type="primary" @click="submitTimingCtrlForm"> </el-button>
<el-button @click="timingCtrlEditDialog.visible = false"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
@@ -309,8 +368,8 @@ import { listDeviceSwitch, getDeviceSwitch, delDeviceSwitch, addDeviceSwitch, up
import { DeviceSwitchVO, DeviceSwitchQuery, DeviceSwitchForm } from '@/api/fishery/deviceSwitch/types';
import { listDevice } from '@/api/fishery/device';
import { DeviceVO } from '@/api/fishery/device/types';
import { listTimingCtrl } from '@/api/fishery/timingCtrl';
import { TimingCtrlVO } from '@/api/fishery/timingCtrl/types';
import { listTimingCtrl, getTimingCtrl, addTimingCtrl, updateTimingCtrl, delTimingCtrl } from '@/api/fishery/timingCtrl';
import { TimingCtrlVO, TimingCtrlForm } from '@/api/fishery/timingCtrl/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { aqu_device_type, open_close, connect_voltage_type, is_linked_ctrl, loop_type } = toRefs<any>(proxy?.useDict('aqu_device_type', 'open_close', 'connect_voltage_type', 'is_linked_ctrl', 'loop_type'));
@@ -641,6 +700,79 @@ const closeTimingCtrlDialog = () => {
timingCtrlDialogVisible.value = false;
currentSwitch.value = null;
timingCtrlList.value = [];
getList();
};
// 定时控制编辑对话框
const timingCtrlEditDialog = reactive<DialogOption>({ visible: false, title: '' });
const timingCtrlFormRef = ref<ElFormInstance>();
const timingCtrlEditLoading = ref(false);
const initTimingCtrlForm: TimingCtrlForm = {
id: undefined,
switchId: undefined,
openTime: undefined,
closeTime: undefined,
loopType: undefined,
isOpen: undefined,
remark: undefined
};
const timingCtrlForm = ref<TimingCtrlForm>({ ...initTimingCtrlForm });
const timingCtrlRules = {
openTime: [{ required: true, message: '开启时间不能为空', trigger: 'blur' }],
closeTime: [{ required: true, message: '关闭时间不能为空', trigger: 'blur' }],
loopType: [{ required: true, message: '循环类型不能为空', trigger: 'change' }],
isOpen: [{ required: true, message: '是否启用不能为空', trigger: 'change' }]
};
/** 新增定时控制 */
const handleTimingCtrlAdd = () => {
timingCtrlForm.value = { ...initTimingCtrlForm, switchId: currentSwitch.value?.id };
timingCtrlFormRef.value?.resetFields();
timingCtrlEditDialog.title = '新增定时控制';
timingCtrlEditDialog.visible = true;
};
/** 修改定时控制 */
const handleTimingCtrlUpdate = async (row: TimingCtrlVO) => {
const res = await getTimingCtrl(row.id);
timingCtrlForm.value = { ...res.data };
timingCtrlFormRef.value?.resetFields();
timingCtrlEditDialog.title = '修改定时控制';
timingCtrlEditDialog.visible = true;
};
/** 提交定时控制表单 */
const submitTimingCtrlForm = () => {
timingCtrlFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
timingCtrlEditLoading.value = true;
try {
if (timingCtrlForm.value.id) {
await updateTimingCtrl(timingCtrlForm.value);
} else {
await addTimingCtrl(timingCtrlForm.value);
}
proxy?.$modal.msgSuccess('操作成功');
timingCtrlEditDialog.visible = false;
// 刷新定时控制列表
if (currentSwitch.value) {
await getTimingCtrlList(currentSwitch.value.id);
}
} finally {
timingCtrlEditLoading.value = false;
}
}
});
};
/** 删除定时控制 */
const handleTimingCtrlDelete = async (row: TimingCtrlVO) => {
await proxy?.$modal.confirm('是否确认删除该定时控制?');
await delTimingCtrl(row.id);
proxy?.$modal.msgSuccess('删除成功');
if (currentSwitch.value) {
await getTimingCtrlList(currentSwitch.value.id);
}
};
onMounted(() => {