andon修改

This commit is contained in:
17630416519
2025-12-20 15:27:43 +08:00
parent 139c3ffc7b
commit 4d2bfd33e3
5 changed files with 232 additions and 164 deletions

View File

@@ -55,3 +55,10 @@ export function delAndonAlarmTypeDict(pid) {
method: 'delete'
})
}
//报警联系人下拉
export function getAndonAlarmContactDictList() {
return request({
url: 'system/user/getAlarmPullDown',
method: 'get'
})
}

View File

@@ -18,7 +18,7 @@ export function listAndonAlarmRecord(query) {
*/
export function addAndonAlarmRecord(data) {
return request({
url: 'mes/AndonAlarmRecord',
url: 'mes/AndonAlarmRecord/createAndonAlarmRecord',
method: 'post',
data: data,
})
@@ -62,4 +62,20 @@ export function getAndonAlarmTypeDictList() {
url: 'mes/AndonAlarmTypeDict/getPullDown',
method: 'get'
})
}
//报警级别下拉
export function getAndonAlarmLevelDictList() {
return request({
url: 'mes/AndonAlarmLevel/getPullDowm',
method: 'get'
})
}
//报警联系人下拉
export function getAndonAlarmContactDictList() {
return request({
url: 'system/user/getAlarmPullDown',
method: 'get'
})
}

View File

@@ -8,7 +8,6 @@
-->
<template>
<div class="app-container">
<!-- :model属性用于表单验证使用 比如下面的el-form-item prop属性用于对表单值进行验证操作 -->
<el-form :model="queryParams" size="small" label-position="right" inline ref="queryForm" :label-width="labelWidth"
v-show="showSearch" @submit.native.prevent>
@@ -27,9 +26,6 @@
<el-button type="primary" v-hasPermi="['business:andonalarmtypedict:add']" plain icon="el-icon-plus" size="mini"
@click="handleAdd">新增</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="success" :disabled="single" v-hasPermi="['business:andonalarmtypedict:edit']" plain icon="el-icon-edit" size="mini" @click="handleUpdate">修改</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button type="danger" :disabled="multiple" v-hasPermi="['business:andonalarmtypedict:delete']" plain
icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
@@ -44,7 +40,10 @@
<!-- <el-table-column prop="id" label="主键" align="center" /> -->
<el-table-column prop="typeCode" label="报警类型编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="typeName" label="报警类型名称" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="responseTime" label="最晚响应时间(分钟)" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver1Name" label="报警联系人1" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver2Name" label="报警联系人2" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver3Name" label="报警联系人3" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver4Name" label="报警联系人4" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="createdTime" label="创建时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" />
@@ -77,12 +76,41 @@
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="最晚响应时间(分钟)" prop="responseTime">
<el-input-number v-model="form.responseTime" @change="handleChange" :min="0"
label="请输入时间"></el-input-number>
<el-form-item label="报警联系人1" prop="receiver1">
<el-select v-model="form.receiver1" placeholder="请选择报警联系人1" @change="(val) => handleReceiverChange(val, 1)">
<el-option v-for="item in alarmContactOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警联系人2" prop="receiver2">
<el-select v-model="form.receiver2" placeholder="请选择报警联系人2" @change="(val) => handleReceiverChange(val, 2)">
<el-option v-for="item in alarmContactOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警联系人3" prop="receiver3">
<el-select v-model="form.receiver3" placeholder="请选择报警联系人3" @change="(val) => handleReceiverChange(val, 3)">
<el-option v-for="item in alarmContactOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警联系人4" prop="receiver4">
<el-select v-model="form.receiver4" placeholder="请选择报警联系人4" @change="(val) => handleReceiverChange(val, 4)">
<el-option v-for="item in alarmContactOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
@@ -100,6 +128,7 @@ import {
delAndonAlarmTypeDict,
updateAndonAlarmTypeDict,
getAndonAlarmTypeDict,
getAndonAlarmContactDictList
} from '@/api/andonManagement/AndonAlarmTypeDict/index.js';
export default {
@@ -116,6 +145,7 @@ export default {
multiple: true,
// 遮罩层
loading: false,
alarmContactOptions: [],
// 显示搜索条件
showSearch: true,
// 查询参数
@@ -133,7 +163,15 @@ export default {
open: false,
// 表单参数
form: {
responseTime: 0
responseTime: 0,
receiver1: undefined,
receiver1Name: undefined,
receiver2: undefined,
receiver2Name: undefined,
receiver3: undefined,
receiver3Name: undefined,
receiver4: undefined,
receiver4Name: undefined
},
columns: [
{ index: 0, key: 'id', label: `主键`, checked: true },
@@ -164,7 +202,17 @@ export default {
created() {
// 列表数据查询
this.getList();
//报警联系人
getAndonAlarmContactDictList().then(res => {
if (res && res.code == 200) {
this.alarmContactOptions = res.data.map(item => {
return {
label: item.label,
value: item.value
}
})
}
})
var dictParams = [
];
},
@@ -195,7 +243,15 @@ export default {
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
responseTime: 0
responseTime: 0,
receiver1: undefined,
receiver1Name: undefined,
receiver2: undefined,
receiver2Name: undefined,
receiver3: undefined,
receiver3Name: undefined,
receiver4: undefined,
receiver4Name: undefined
};
this.resetForm("form");
},
@@ -203,6 +259,12 @@ export default {
handleChange(val) {
this.form.responseTime = val
},
// 联系人选择变化处理
handleReceiverChange(val, index) {
const selectedOption = this.alarmContactOptions.find(option => option.value === val);
this.form[`receiver${index}`] = val;
this.form[`receiver${index}Name`] = selectedOption ? selectedOption.label : undefined;
},
// 重置查询操作
resetQuery() {
this.timeRange = [];

View File

@@ -87,13 +87,11 @@
<el-col :lg="6">
<el-button type="primary" @click="handleResponse">响应</el-button>
<el-button type="success" @click="hanleCompleted">处理完毕</el-button>
<el-button type="warning" @click="hanleReportToSuperiors">报告上级</el-button>
<!-- <el-button type="warning" @click="hanleReportToSuperiors">报告上级</el-button> -->
</el-col>
</el-row>
</el-form>
</el-col>
</el-row>
<el-table :stripe="true" :data="processingData" v-loading="loading" ref="table" border
highlight-current-row>
@@ -400,35 +398,35 @@ export default {
});
});
},
hanleReportToSuperiors() {
if (this.ids == '' || this.ids == null || this.ids == undefined) {
this.$message({
message: '请选择报警信息',
type: 'warning'
});
return false;
}
this.$confirm('确定报告上级此报警吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
addAndonAlarmRecordReport(this.form).then(res => {
if (res.code == 200) {
this.$message({
type: 'success',
message: '已报告!'
});
}
})
// hanleReportToSuperiors() {
// if (this.ids == '' || this.ids == null || this.ids == undefined) {
// this.$message({
// message: '请选择报警信息',
// type: 'warning'
// });
// return false;
// }
// this.$confirm('确定报告上级此报警吗?', '提示', {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(() => {
// addAndonAlarmRecordReport(this.form).then(res => {
// if (res.code == 200) {
// this.$message({
// type: 'success',
// message: '已报告!'
// });
// }
// })
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
// }).catch(() => {
// this.$message({
// type: 'info',
// message: '已取消'
// });
// });
// },
formatDate(date) {
if (!date) return '';
const year = date.getFullYear();

View File

@@ -1,33 +1,16 @@
<!--
* @Descripttion: (报警记录/andon_alarm_record)
* @version: (1.0)
* @Author: (admin)
* @Date: (2025-12-11)
* @LastEditors: (admin)
* @LastEditTime: (2025-12-11)
-->
<template>
<div class="app-container">
<!-- :model属性用于表单验证使用 比如下面的el-form-item prop属性用于对表单值进行验证操作 -->
<el-form :model="queryParams" size="small" label-position="right" inline ref="queryForm"
v-show="showSearch" @submit.native.prevent>
<el-form :model="queryParams" size="small" label-position="right" inline ref="queryForm" v-show="showSearch"
@submit.native.prevent>
<el-form-item label="报警编码" prop="alarmCode">
<el-input v-model="queryParams.alarmCode" placeholder="请输入报警编码" clearable />
</el-form-item>
<el-form-item label="产线" prop="lineCode">
<el-input v-model="queryParams.lineCode" placeholder="请输入产线" clearable />
</el-form-item>
<el-form-item label="产线名称" prop="lineName">
<el-input v-model="queryParams.lineName" placeholder="请输入产线名称" clearable />
</el-form-item>
<el-form-item label="报警类型" prop="alarmType">
<el-select v-model="queryParams.alarmType" placeholder="请选择报警类型">
<el-option v-for="item in alarmTypeOptions" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictLabel"></el-option>
:value="item.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item>
@@ -41,7 +24,7 @@
<el-button type="primary" v-hasPermi="['business:andonalarmrecord:add']" plain icon="el-icon-plus"
size="mini" @click="handleAdd">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" :disabled="multiple" v-hasPermi="['business:andonalarmrecord:delete']" plain
icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
@@ -53,7 +36,6 @@
<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="id" label="主键" align="center" /> -->
<el-table-column prop="alarmCode" label="报警编码" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="lineCode" label="产线" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="lineName" label="产线名称" align="center" :show-overflow-tooltip="true" />
@@ -61,25 +43,22 @@
</el-table-column>
<el-table-column prop="alarmLevel" label="报警级别" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="alarmInfo" label="报警信息" align="center" :show-overflow-tooltip="true" />
<!-- <el-table-column prop="sender" label="发送方ID" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="senderName" label="发送方名称" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="sendTime" label="发送时间" align="center" :show-overflow-tooltip="true" /> -->
<el-table-column prop="receiver" label="接收方" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiverName" label="接收方名称" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="sequence" label="序号" align="center" />
<el-table-column prop="receiver1" label="报警联系人1" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver2" label="报警联系人2" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver3" label="报警联系人3" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="receiver4" label="报警联系人4" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="durationTime" label="持续时间" align="center" />
<el-table-column prop="status" label="状态" align="center">
<template slot-scope="scope">
<dict-tag :options="statusOptions" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column prop="createdBy" label="创建人" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="创建时间" align="center" min-width="120"></el-table-column>
<el-table-column prop="updatedBy" label="更新人" align="center"></el-table-column>
<el-table-column prop="updatedTime" label="更新时间" align="center" min-width="120"></el-table-column>
<el-table-column prop="handleResult" label="处理结果" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="remarks" label="备注" align="center" :show-overflow-tooltip="true" />
<!-- <el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="createdTime" label="创建时间" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="updatedTime" label="更新时间" align="center" :show-overflow-tooltip="true" /> -->
<el-table-column label="操作" align="center" width="140">
<template slot-scope="scope">
<el-button size="mini" v-hasPermi="['business:andonalarmrecord:edit']" type="success"
@@ -93,40 +72,26 @@
:limit.sync="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改报警记录对话框 -->
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open">
<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="alarmCode">
<el-input v-model="form.alarmCode" placeholder="请输入报警编码" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="产线" prop="lineCode">
<el-input v-model="form.lineCode" placeholder="请输入产线" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="产线名称" prop="lineName">
<el-input v-model="form.lineName" placeholder="请输入产线名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="报警类型" prop="alarmType">
<el-select v-model="form.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="报警级别" prop="alarmLevel">
<el-input v-model="form.alarmLevel" placeholder="请输入报警级别" />
<!-- <el-input v-model="form.alarmLevel" placeholder="请输入报警级别" /> -->
<el-select v-model="form.alarmLevel" placeholder="请选择报警级别">
<el-option v-for="item in alarmLevelOptions" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
</el-form-item>
</el-col>
@@ -136,63 +101,6 @@
</el-form-item>
</el-col>
<!-- <el-col :lg="12">
<el-form-item label="发送方ID" prop="sender">
<el-input v-model="form.sender" placeholder="请输入发送方ID" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="发送方名称" prop="senderName">
<el-input v-model="form.senderName" placeholder="请输入发送方名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="发送时间" prop="sendTime">
<el-date-picker v-model="form.sendTime" type="datetime" placeholder="选择日期时间"></el-date-picker>
</el-form-item>
</el-col> -->
<el-col :lg="12">
<el-form-item label="接收方" prop="receiver">
<el-input v-model="form.receiver" placeholder="请输入接收方" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="接收方名称" prop="receiverName">
<el-input v-model="form.receiverName" placeholder="请输入接收方名称" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="序号" prop="sequence">
<el-input v-model="form.sequence" placeholder="请输入序号" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="持续时间" prop="durationTime">
<el-input v-model="form.durationTime" placeholder="请输入持续时间" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="状态" prop="status">
<el-select v-model="form.status" placeholder="请选择状态">
<el-option v-for="item in statusOptions" :key="item.dictValue" :label="item.dictLabel"
:value="item.dictValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="处理结果" prop="handleResult">
<el-input v-model="form.handleResult" placeholder="请输入处理结果" />
</el-form-item>
</el-col>
<el-col :lg="12">
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注" />
@@ -216,7 +124,9 @@ import {
delAndonAlarmRecord,
updateAndonAlarmRecord,
getAndonAlarmRecord,
getAndonAlarmTypeDictList
getAndonAlarmTypeDictList,
getAndonAlarmLevelDictList,
getAndonAlarmContactDictList
} from '@/api/andonManagement/policeRecord/index.js';
export default {
@@ -224,7 +134,7 @@ export default {
data() {
return {
labelWidth: "100px",
formLabelWidth: "100px",
formLabelWidth: "120px",
// 选中id数组
ids: [],
// 非单个禁用
@@ -235,6 +145,9 @@ export default {
loading: false,
// 显示搜索条件
showSearch: true,
alarmLevelOptions: [],
//报警联系人
alarmContactOptions: [],
// 查询参数
queryParams: {
pageNum: 1,
@@ -261,8 +174,8 @@ export default {
{ index: 7, key: 'sender', label: `发送方ID`, checked: true },
{ index: 8, key: 'senderName', label: `发送方名称`, checked: true },
{ index: 9, key: 'sendTime', label: `发送时间`, checked: false },
{ index: 10, key: 'receiver', label: `接收方`, checked: false },
{ index: 11, key: 'receiverName', label: `接收方名称`, checked: false },
{ index: 10, key: 'receiver', label: `报警联系人`, checked: false },
{ index: 11, key: 'receiverName', label: `报警联系人名称`, checked: false },
{ index: 12, key: 'sequence', label: `序号`, checked: false },
{ index: 13, key: 'durationTime', label: `持续时间`, checked: false },
{ index: 14, key: 'status', label: `状态`, checked: false },
@@ -275,6 +188,8 @@ export default {
],
// 报警类型选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
alarmTypeOptions: [],
// 报警类型原始数据列表
alarmTypeDataList: [],
// 状态选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
statusOptions: [
{ dictLabel: '上报', dictValue: '上报' },
@@ -300,11 +215,34 @@ export default {
this.getList();
getAndonAlarmTypeDictList().then(res => {
if (res.code == 200) {
this.alarmTypeDataList = res.data; // 保存原始数据
this.alarmTypeOptions = res.data.map(item => {
return { dictLabel: item.value, dictValue: item.label }
})
}
})
//报警级别下拉
getAndonAlarmLevelDictList().then(res => {
if (res && res.code == 200) {
this.alarmLevelOptions = res.data.map(item => {
return {
label: item.label,
value: item.value
}
})
}
})
//报警联系人
// getAndonAlarmContactDictList().then(res => {
// if (res && res.code == 200) {
// this.alarmContactOptions = res.data.map(item => {
// return {
// label: item.label,
// value: item.value
// }
// })
// }
// })
var dictParams = [
];
},
@@ -349,6 +287,7 @@ export default {
createdTime: undefined,
updatedBy: undefined,
updatedTime: undefined,
responseTime: undefined,
};
this.resetForm("form");
},
@@ -415,10 +354,13 @@ export default {
this.form = {
...data,
receiver: data.receiverName,
manager: data.managerName,
};
}
});
},
// 报警类型字典翻译
alarmTypeFormat(row, column) {
return this.selectDictLabel(this.alarmTypeOptions, row.alarmType);
@@ -427,14 +369,57 @@ export default {
statusFormat(row, column) {
return this.selectDictLabel(this.statusOptions, row.status);
},
// 报警联系人改变时更新报警联系人名称
handleReceiverChange(value) {
if (value && this.alarmContactOptions.length > 0) {
const selectedOption = this.alarmContactOptions.find(option => option.value === value);
if (selectedOption) {
this.$set(this.form, 'receiverName', selectedOption.label);
}
} else {
this.$set(this.form, 'receiverName', '');
}
},
// 超时接收人改变时更新超时接收人名称
handleManagerChange(value) {
if (value && this.alarmContactOptions.length > 0) {
const selectedOption = this.alarmContactOptions.find(option => option.value === value);
if (selectedOption) {
this.$set(this.form, 'managerName', selectedOption.label);
}
} else {
this.$set(this.form, 'managerName', '');
}
},
// 报警类型改变时处理
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);
}
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
console.log(JSON.stringify(this.form));
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;
}
}
console.log(data, '提交数据');
if (this.form.id != undefined && this.opertype === 2) {
updateAndonAlarmRecord(this.form)
updateAndonAlarmRecord(data)
.then((res) => {
this.msgSuccess("修改成功");
this.open = false;
@@ -444,14 +429,14 @@ export default {
//TODO 错误逻辑
});
} else {
addAndonAlarmRecord(this.form)
addAndonAlarmRecord(data)
.then((res) => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
})
.catch((err) => {
//TODO 错误逻辑
});
}
}