andon修改

This commit is contained in:
17630416519
2025-12-21 17:22:49 +08:00
parent b0fc61d855
commit 9cf9cb4dd6
4 changed files with 295 additions and 100 deletions

View File

@@ -86,4 +86,20 @@ export function getAndonAreaDictList() {
url: 'mes/AndonAlarmArea/getPullDown',
method: 'get'
})
}
//父级区域下拉
export function getAndonAreaParentDictList() {
return request({
url: 'mes/AndonAlarmArea/getPullDownP',
method: 'get'
})
}
//子集区域下拉
export function getAndonAreaChildDictList(data) {
return request({
url: 'mes/AndonAlarmArea/getPullDownByPID',
method: 'post',
data: data
})
}

View File

@@ -190,6 +190,9 @@ export default {
btnSubmitVisible: true,
// 表单校验
rules: {
receiver1: [
{ required: true, message: "报警联系人1不能为空", trigger: "blur" },
],
typeName: [
{ required: true, message: "报警类型名称不能为空", trigger: "blur" },
],

View File

@@ -4,17 +4,18 @@
<el-col :span="6">
<el-table :stripe="true" @row-click="handleRowClick" :data="leftList" v-loading="loading" ref="table"
border highlight-current-row>
<el-table-column prop="lineName" label="产线名称" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="area1" label="区域1" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="area2" label="区域2" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="alarmCode" label="报警记录编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="alarmInfo" label="报警信息" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="alarmType" label="操作" align="center" :show-overflow-tooltip="true">
<!-- <el-table-column prop="alarmType" label="操作" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button :disabled="scope.row.status !== '待响应'" size="mini" type="success"
icon="el-icon-edit" title="编辑" @click="handleUpdate(scope.row)"></el-button>
<el-button :disabled="scope.row.status !== '待响应'" size="mini" type="danger"
icon="el-icon-delete" title="删除" @click="handleDelete(scope.row)"></el-button>
</template>
</el-table-column>
</el-table-column> -->
</el-table>
<pagination class="mt10" background :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="getLeftList" />
@@ -35,40 +36,52 @@
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="产线">
<el-input disabled v-model="form.lineCode" placeholder="请输入产线" />
<el-form-item label="区域1">
<el-input disabled v-model="form.area1" placeholder="请输入区域1" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="产线名称">
<el-input disabled v-model="form.lineName" placeholder="请输入产线名称" />
<el-form-item label="区域2">
<el-input disabled v-model="form.area2" placeholder="请输入区域1" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="报警类型">
<el-input disabled v-model="form.alarmType" placeholder="请输入报警类型" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="报警级别">
<el-input disabled v-model="form.alarmLevel" placeholder="请输入报警级别" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="报警信息">
<el-input disabled v-model="form.alarmInfo" placeholder="请输入报警信息" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="接收方">
<el-input disabled v-model="form.receiver" placeholder="请输入接收方" />
<el-form-item label="接收方1">
<el-input disabled v-model="form.receiver1Name" placeholder="请输入接收方" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="接收方2">
<el-input disabled v-model="form.receiver2Name" placeholder="请输入接收方" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="接收方3">
<el-input disabled v-model="form.receiver3Name" placeholder="请输入接收方" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-form-item label="接收方4">
<el-input disabled v-model="form.receiver4Name" placeholder="请输入接收方" />
</el-form-item>
</el-col>
<!-- <el-col :lg="6">
<el-form-item label="接收方名称">
<el-input disabled v-model="form.receiverName" placeholder="请输入接收方名称" />
</el-form-item>
</el-col>
</el-col> -->
<el-col :lg="6">
<el-form-item label="状态">
<el-input disabled v-model="form.status" placeholder="请输入状态" />
@@ -84,7 +97,7 @@
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :lg="6">
<el-col :lg="6" style="margin-bottom: 10px;">
<el-button type="primary" @click="handleResponse">响应</el-button>
<el-button type="success" @click="hanleCompleted">处理完毕</el-button>
<!-- <el-button type="warning" @click="hanleReportToSuperiors">报告上级</el-button> -->
@@ -93,30 +106,21 @@
</el-form>
</el-col>
</el-row>
<div style="font-weight: bold; margin-bottom: 10px;">
操作记录
</div>
<el-table :stripe="true" :data="processingData" v-loading="loading" ref="table" border
highlight-current-row>
<el-table-column prop="alarmCode" label="报警记录编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="operator" label="操作员" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="operatorName" label="操作员名称" align="center"
<el-table-column prop="createdName" label="操作员名称" align="center"
:show-overflow-tooltip="true" />
<el-table-column prop="operatorTime" label="操作时间" align="center"
<el-table-column prop="createdTime" label="操作时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="operate" label="操作记录" align="center"
:show-overflow-tooltip="true" />
<el-table-column prop="remarks" label="备注" align="center" :show-overflow-tooltip="true" />
</el-table>
</div>
</el-col>
<!-- <el-col :span="10">
<el-table :stripe="true" :data="processingData" v-loading="loading" ref="table" border
highlight-current-row>
<el-table-column prop="alarmCode" label="报警记录编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="operator" label="操作员" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="operatorName" label="操作员名称" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="operatorTime" label="操作时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="remarks" label="备注" align="center" :show-overflow-tooltip="true" />
</el-table>
</el-col> -->
</el-row>
<!-- 查询弹窗 -->
@@ -139,67 +143,70 @@
</div>
</el-dialog>
<!-- 新增 -->
<el-dialog :close-on-click-modal="false" @close="resetFormAdd" title="新增" :visible.sync="open" width="800px">
<el-form ref="formAdd" :model="formAdd" :rules="rules" :label-width="formLabelWidth">
<el-dialog :close-on-click-modal="false" :title="title" :lock-scroll="false" :visible.sync="open">
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
<el-row :gutter="20">
<el-col :lg="12">
<el-form-item label="产线" prop="lineCode">
<el-input v-model="formAdd.lineCode" placeholder="请输入产线" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="产线名称" prop="lineName">
<el-input v-model="formAdd.lineName" placeholder="请输入产线名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警类型" prop="alarmType">
<el-select v-model="formAdd.alarmType" placeholder="请选择报警类型">
<el-select v-model="form.alarmType" placeholder="请选择报警类型" @change="handleAlarmTypeChange">
<el-option v-for="item in alarmTypeOptions" :key="item.dictValue"
:label="item.dictLabel" :value="item.dictLabel"></el-option>
:label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="区域1" prop="area1">
<!-- <el-cascader v-model="form.area" :options="areaOptions"
@expand-change="handleAreaExpandChange"
:props="{ expandTrigger: '', value: 'label', label: 'label' }"
@change="handleAreaChange" placeholder="请选择区域" clearable>
</el-cascader> -->
<el-select v-model="form.area1" placeholder="请选择区域" @change="handleAreaChange">
<el-option v-for="item in parentOptions" :key="item.label" :label="item.label"
:value="item.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警级别" prop="alarmLevel">
<el-input v-model="formAdd.alarmLevel" placeholder="请输入报警级别" />
<el-form-item label="区域2" prop="area2">
<el-select v-model="form.area2" placeholder="请选择区域下设备">
<el-option v-for="item in childrenOptions" :key="item.label" :label="item.label"
:value="item.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警信息" prop="alarmInfo">
<el-input v-model="formAdd.alarmInfo" placeholder="请输入报警信息" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="接收方" prop="receiver">
<el-input v-model="formAdd.receiver" placeholder="请输入接收方" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="接收方名称" prop="receiverName">
<el-input v-model="formAdd.receiverName" placeholder="请输入接收方名称" />
<el-input v-model="form.alarmInfo" placeholder="请输入报警信息" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="备注">
<el-input v-model="formAdd.remarks" placeholder="请输入备注" />
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="open = false"> </el-button>
<el-button type="primary" @click="handleAddSubmit"> </el-button>
<el-button type="text" @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listAndonAlarmRecord, addAndonAlarmRecord, listAndonAlarmRecordTime, handleResult, getAndonAlarmTypeDictList, getAndonAlarmRecordProcessList, addAndonAlarmRecordProcess, addAndonAlarmRecordReport } from "@/api/andonManagement/humanComputerInteraction/index.js"
import { listAndonAlarmRecord, listAndonAlarmRecordTime, handleResult, getAndonAlarmTypeDictList, getAndonAlarmRecordProcessList, addAndonAlarmRecordProcess, addAndonAlarmRecordReport } from "@/api/andonManagement/humanComputerInteraction/index.js"
import {
addAndonAlarmRecord,
getAndonAreaParentDictList,//区域一
getAndonAreaChildDictList,//区域二
} from '@/api/andonManagement/policeRecord/index.js';
export default {
data() {
const rules = {
@@ -233,9 +240,13 @@ export default {
},
show: 0,
rules,
title: "",
formLabelWidth: "100px",
alarmTypeOptions: [],
leftList: [],
changeValue: '',
parentOptions: [],
childrenOptions: [],
processingData: [],
total: 0,
loading: false,
@@ -260,6 +271,13 @@ export default {
})
}
})
getAndonAreaParentDictList().then(res => {
if (res.code == 200) {
this.parentOptions = res.data.map(item => {
return { label: item.label, value: item.value }
})
}
})
},
mounted() {
@@ -294,28 +312,46 @@ export default {
handleAdd() {
this.open = true
},
handleAreaChange(label) {
console.log('区域选择变化:', label);
this.changeValue = label;
const selectedItem = this.parentOptions.find(item => item.label === label);
const value = selectedItem ? selectedItem.value : label;
let data = {
value: value,
label: label
}
getAndonAreaChildDictList(data).then(res => {
if (res.code == 200) {
this.childrenOptions = res.data.map(item => {
return { label: item.label, value: item.value }
})
}
});
},
resetFormAdd() {
this.formAdd = {}
if (this.$refs.formAdd) {
this.$refs.formAdd.resetFields();
}
},
handleAddSubmit() {
this.$refs.formAdd.validate((valid) => {
if (valid) {
console.log(this.formAdd, '新增的数据');
addAndonAlarmRecord(this.formAdd).then(res => {
if (res.code == 200) {
this.msgSuccess("新增成功");
this.open = false;
this.getLeftList();
}
});
} else {
return false;
}
});
},
// handleAddSubmit() {
// this.$refs.formAdd.validate((valid) => {
// if (valid) {
// console.log(this.formAdd, '新增的数据');
// addAndonAlarmRecord(this.formAdd).then(res => {
// if (res.code == 200) {
// this.msgSuccess("新增成功");
// this.open = false;
// this.getLeftList();
// }
// });
// } else {
// return false;
// }
// });
// },
handleClose() {
this.timeData = [
new Date(),
@@ -338,6 +374,71 @@ export default {
}
})
},
handleAreaExpandChange(val) {
console.log(val[0], '区域选择变化');
},
handleAlarmTypeChange(value) {
const selectedType = this.alarmTypeDataList.find(item => item.label === value);
if (selectedType) {
this.$set(this.form, 'responseTime', selectedType.responseTime);
} else {
this.$set(this.form, 'responseTime', undefined);
}
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 提交按钮
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
let data = {
...this.form,
};
if (this.form.alarmType) {
const selectedOption = this.alarmTypeOptions.find(option => option.dictValue === this.form.alarmType);
if (selectedOption) {
data.alarmType = selectedOption.dictLabel;
data.alarmTypeCode = selectedOption.dictValue;
}
}
// 处理区域数据
if (this.form.area && this.form.area.length > 0) {
data.area1 = this.form.area[0];
data.area2 = this.form.area[1] || '';
}
console.log(data, '提交数据');
if (this.form.id != undefined && this.opertype === 2) {
// updateAndonAlarmRecord(data)
// .then((res) => {
// this.msgSuccess("修改成功");
// this.open = false;
// this.getList();
// })
// .catch((err) => {
// });
} else {
addAndonAlarmRecord(data)
.then((res) => {
this.msgSuccess("新增成功");
this.open = false;
this.getLeftList();
})
.catch((err) => {
});
}
}
});
},
//响应
handleResponse() {
if (this.ids == '' || this.ids == null || this.ids == undefined) {
@@ -347,6 +448,20 @@ export default {
});
return false;
}
if (this.form.status == '已处理') {
this.$message({
message: '此报警已处理',
type: 'warning'
});
return
}
if(this.form.status == '已响应'){
this.$message({
message: '此报警已响应',
type: 'warning'
});
return
}
this.$confirm('确定要响应此报警吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@@ -358,6 +473,8 @@ export default {
type: 'success',
message: '响应成功!'
});
this.form.status = '已响应'
this.getLeftList();
}
})
@@ -377,6 +494,13 @@ export default {
});
return false;
}
if (this.form.handleResult == '' || this.form.handleResult == null) {
this.$message({
message: '请填写处理结果',
type: 'warning'
});
return
}
this.$confirm('确定要处理完毕此报警吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@@ -388,6 +512,8 @@ export default {
type: 'success',
message: '处理完毕!'
});
this.form.status = '已处理'
this.getLeftList();
}
})

View File

@@ -7,8 +7,8 @@
<el-input v-model="queryParams.alarmCode" placeholder="请输入报警编码" clearable />
</el-form-item>
<el-form-item label="报警类型" prop="alarmType">
<el-select v-model="queryParams.alarmType" placeholder="请选择报警类型">
<el-form-item label="报警类型" prop="alarmTypeCode">
<el-select v-model="queryParams.alarmTypeCode" placeholder="请选择报警类型">
<el-option v-for="item in alarmTypeOptions" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue"></el-option>
</el-select>
@@ -36,7 +36,7 @@
<el-table :data="dataList" v-loading="loading" ref="table" border highlight-current-row
@sort-change="sortChange" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" />
<el-table-column prop="alarmCode" label="报警编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="alarmCode" min-width="140" label="报警编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="area1" label="区域" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="area2" label="区域下设备" min-width="120" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="alarmType" label="报警类型" align="center">
@@ -89,11 +89,24 @@
</el-col>
<el-col :lg="12">
<el-form-item label="区域" prop="area">
<el-cascader v-model="form.area" :options="areaOptions"
:props="{ expandTrigger: 'hover', value: 'label', label: 'label' }"
<el-form-item label="区域1" prop="area1">
<!-- <el-cascader v-model="form.area" :options="areaOptions"
@expand-change="handleAreaExpandChange"
:props="{ expandTrigger: '', value: 'label', label: 'label' }"
@change="handleAreaChange" placeholder="请选择区域" clearable>
</el-cascader>
</el-cascader> -->
<el-select v-model="form.area1" placeholder="请选择区域" @change="handleAreaChange">
<el-option v-for="item in parentOptions" :key="item.label" :label="item.label"
:value="item.label"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="区域2" prop="area2">
<el-select v-model="form.area2" placeholder="请选择区域下设备">
<el-option v-for="item in childrenOptions" :key="item.label" :label="item.label"
:value="item.label"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -130,7 +143,9 @@ import {
getAndonAlarmTypeDictList,
getAndonAlarmLevelDictList,
getAndonAlarmContactDictList,
getAndonAreaDictList
getAndonAreaDictList,
getAndonAreaParentDictList,//区域一
getAndonAreaChildDictList,//区域二
} from '@/api/andonManagement/policeRecord/index.js';
export default {
@@ -147,9 +162,12 @@ export default {
multiple: true,
// 遮罩层
loading: false,
changeValue: '',
// 显示搜索条件
showSearch: true,
alarmLevelOptions: [],
parentOptions: [],
childrenOptions: [],
//报警联系人
alarmContactOptions: [],
// 查询参数
@@ -213,6 +231,19 @@ export default {
btnSubmitVisible: true,
// 表单校验
rules: {
alarmType: [
{ required: true, message: "请输入报警类型", trigger: "change" },
],
area1: [
{ required: true, message: "请输入区域", trigger: "change" },
],
// area2: [
// { required: true, message: "请输入区域", trigger: "change" },
// ],
alarmInfo: [
{ required: true, message: "请输入报警信息", trigger: "change" },
],
},
};
},
@@ -227,12 +258,18 @@ export default {
})
}
})
getAndonAreaDictList().then(res => {
if (res && res.code == 200) {
this.areaOptions = res.data;
getAndonAreaParentDictList().then(res => {
if (res.code == 200) {
this.parentOptions = res.data.map(item => {
return { label: item.label, value: item.value }
})
}
})
// getAndonAreaDictList().then(res => {
// if (res && res.code == 200) {
// this.areaOptions = res.data;
// }
// })
//报警级别下拉
// getAndonAlarmLevelDictList().then(res => {
// if (res && res.code == 200) {
@@ -419,15 +456,28 @@ export default {
this.$set(this.form, 'responseTime', undefined);
}
},
handleAreaExpandChange(val) {
console.log(val[0], '区域选择变化');
},
// 区域选择变化时
handleAreaChange(value) {
if (value && value.length > 0) {
this.$set(this.form, 'area1', value[0]);
this.$set(this.form, 'area2', value[1] || '');
} else {
this.$set(this.form, 'area1', '');
this.$set(this.form, 'area2', '');
// 区域选择变化时
handleAreaChange(label) {
console.log('区域选择变化:', label);
this.changeValue = label;
const selectedItem = this.parentOptions.find(item => item.label === label);
const value = selectedItem ? selectedItem.value : label;
let data = {
value: value,
label: label
}
getAndonAreaChildDictList(data).then(res => {
if (res.code == 200) {
this.childrenOptions = res.data.map(item => {
return { label: item.label, value: item.value }
})
}
});
},
// 提交按钮
submitForm: function () {