refactor(andon): 简化安灯看板和规则配置界面

- 移除产线和班组选择字段,以工位为中心重新设计表单
- 添加工位绑定必填校验和提示信息
- 更新字段标签和占位符文本以提高用户体验
- 在安灯规则中添加时限设置分组和优先级说明
- 隐藏不相关表格列以简化界面显示
- 为安灯事件分配页面添加只看我的开关功能
- 实现表格行样式高亮未完成记录
master^2
zangch@mesnac.com 2 weeks ago
parent 6eb0be6b12
commit 05e25b4e68

@ -146,32 +146,28 @@
@pagination="getList"
/>
<!-- 添加或修改安灯看板配置对话框 -->
<!-- 添加或修改安灯看板配置对话框简化版以工位为中心 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-alert
title="看板绑定工位后,将自动展示该工位的安灯事件"
type="info"
:closable="false"
style="margin-bottom: 15px;"
/>
<el-form-item label="看板编码" prop="boardCode">
<el-input v-model="form.boardCode" placeholder="请输入看板编码" />
<el-input v-model="form.boardCode" placeholder="请输入看板编码BOARD001" />
</el-form-item>
<el-form-item label="看板名称" prop="boardName">
<el-input v-model="form.boardName" placeholder="请输入看板名称" />
<el-input v-model="form.boardName" placeholder="请输入看板名称,如:装配工位安灯看板" />
</el-form-item>
<el-form-item label="产品线编码" prop="productLineCode" label-width="120px">
<el-select v-model="form.productLineCode" placeholder="请选择产线" clearable>
<el-option
v-for="item in productLineList"
:key="item.productLineCode"
:label="item.productLineName"
:value="item.productLineCode"
/>
</el-select>
</el-form-item>
<el-form-item label="工位/工序编码" prop="stationCode" label-width="120px">
<el-select v-model="form.stationCode" placeholder="请选择工位/工序" clearable>
<el-form-item label="绑定工位" prop="stationCode">
<el-select v-model="form.stationCode" placeholder="请选择绑定的工位(必填)" filterable style="width: 100%">
<el-option
v-for="item in processStationList"
:key="item.stationCode"
:label="item.stationName"
:value="item.stationCode"
:key="item.processCode"
:label="item.processCode + ' - ' + item.processName"
:value="item.processCode"
/>
</el-select>
</el-form-item>
@ -281,7 +277,7 @@ export default {
},
//
form: {},
//
//
rules: {
boardCode: [
{ required: true, message: "看板编码不能为空", trigger: "blur" }
@ -289,6 +285,9 @@ export default {
boardName: [
{ required: true, message: "看板名称不能为空", trigger: "blur" }
],
stationCode: [
{ required: true, message: "请选择绑定的工位", trigger: "change" }
],
isFlag: [
{ required: true, message: "是否有效不能为空", trigger: "change" }
],

@ -77,6 +77,9 @@
placeholder="请选择完成时间">
</el-date-picker>
</el-form-item>-->
<el-form-item label="只看我的" prop="onlyMine">
<el-switch v-model="onlyMine" @change="handleOnlyMineChange" />
</el-form-item>
<el-form-item label="派工状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择派工状态" clearable>
<el-option
@ -152,7 +155,7 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="andonEventAssignmentList" @selection-change="handleSelectionChange">
<el-table v-loading="loading" :data="andonEventAssignmentList" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName">
<el-table-column type="selection" width="55" align="center" />
<!-- 隐藏主键列减少干扰 -->
<el-table-column label="主键ID" align="center" prop="assignmentId" v-if="columns[0].visible"/>
@ -313,6 +316,10 @@ export default {
eventOptions: [],
//
userOptions: [],
//
onlyMine: true,
// ID
currentUserId: null,
//
defaultUserId: null,
defaultUserName: null,
@ -367,6 +374,12 @@ export default {
};
},
created() {
// ID
this.currentUserId = this.$store.getters.userId;
//
if (this.onlyMine && this.currentUserId) {
this.queryParams.assigneeUserId = this.currentUserId;
}
this.getList();
//
getAndonEventList({ isFlag: '1' }).then(res => {
@ -392,6 +405,25 @@ export default {
this.loading = false;
});
},
/** 切换“只看我的”开关 */
handleOnlyMineChange(val) {
if (val && this.currentUserId) {
this.queryParams.assigneeUserId = this.currentUserId;
} else {
this.queryParams.assigneeUserId = null;
}
this.handleQuery();
},
/** 表格行样式:未完成的记录高亮显示 */
tableRowClassName({ row }) {
// status: 0=, 1=, 2=, 3=
if (row.status === '0' || row.status === 0) {
return 'warning-row'; // -
} else if (row.status === '1' || row.status === 1) {
return 'info-row'; //
}
return '';
},
//
cancel() {
this.open = false;
@ -498,3 +530,20 @@ export default {
}
};
</script>
<style scoped>
/* 待接单记录高亮 - 红色背景 */
::v-deep .el-table .warning-row {
background-color: #fef0f0 !important;
}
::v-deep .el-table .warning-row:hover > td {
background-color: #fde2e2 !important;
}
/* 处理中记录 - 蓝色背景 */
::v-deep .el-table .info-row {
background-color: #f0f9eb !important;
}
::v-deep .el-table .info-row:hover > td {
background-color: #e1f3d8 !important;
}
</style>

@ -139,56 +139,40 @@
@pagination="getList"
/>
<!-- 添加或修改安灯规则配置对话框 -->
<!-- 添加或修改安灯规则配置对话框简化版PDA绑定工位触发安灯 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="规则名称" prop="ruleName" label-width="100px">
<el-input v-model="form.ruleName" placeholder="请输入规则名称" />
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-alert
title="手持PDA绑定工位后点击安灯按钮将自动匹配此规则并派工给通知用户"
type="info"
:closable="false"
style="margin-bottom: 15px;"
/>
<el-form-item label="规则名称" prop="ruleName">
<el-input v-model="form.ruleName" placeholder="请输入规则名称,如:装配工位-设备故障" />
</el-form-item>
<el-form-item label="呼叫类型编码" prop="callTypeCode" label-width="120px">
<el-input v-model="form.callTypeCode" placeholder="请输入呼叫类型编码" />
</el-form-item>
<el-form-item label="适用产线" prop="productLineCode"label-width="100px">
<el-select v-model="form.productLineCode" placeholder="请选择产线" clearable>
<el-option
v-for="item in productLineList"
:key="item.productLineCode"
:label="item.productLineName"
:value="item.productLineCode"
/>
</el-select>
</el-form-item>
<el-form-item label="适用工位/工序" prop="stationCode"label-width="100px">
<el-select v-model="form.stationCode" placeholder="请选择工位/工序" clearable>
<el-form-item label="绑定工位" prop="stationCode">
<el-select v-model="form.stationCode" placeholder="请选择绑定的工位(必填)" filterable style="width: 100%">
<el-option
v-for="item in processStationList"
:key="item.stationCode"
:label="item.stationName"
:value="item.stationCode"
:key="item.processCode"
:label="item.processCode + ' - ' + item.processName"
:value="item.processCode"
/>
</el-select>
</el-form-item>
<el-form-item label="适用班组" prop="teamCode"label-width="100px">
<el-select v-model="form.teamCode" placeholder="请选择班组" clearable>
<el-form-item label="呼叫类型" prop="callTypeCode">
<el-select v-model="form.callTypeCode" placeholder="请选择呼叫类型">
<el-option
v-for="item in teamMembersList"
:key="item.teamCode"
:label="item.teamName"
:value="item.teamCode"
v-for="dict in dict.type.andon_call_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="确认时限(分钟)" prop="ackTimeoutMin">
<el-input-number v-model="form.ackTimeoutMin" :min="0" placeholder="请输入确认时限" style="width: 100%" />
</el-form-item>
<el-form-item label="解决时限(分钟)" prop="resolveTimeoutMin">
<el-input-number v-model="form.resolveTimeoutMin" :min="0" placeholder="请输入解决时限" style="width: 100%" />
</el-form-item>
<el-form-item label="默认优先级" prop="priorityDefault">
<el-input-number v-model="form.priorityDefault" :min="1" :max="5" placeholder="请输入默认优先级(1-5)" style="width: 100%" />
</el-form-item>
<el-form-item label="通知用户" prop="notifyUsers">
<el-select v-model="formNotifyUsersArr" multiple filterable placeholder="请选择通知用户">
<el-select v-model="formNotifyUsersArr" multiple filterable placeholder="请选择派工通知的用户(必填)">
<el-option
v-for="u in userOptions"
:key="u.userId"
@ -197,8 +181,21 @@
/>
</el-select>
</el-form-item>
<el-divider content-position="left">时限设置可选</el-divider>
<el-form-item label="确认时限" prop="ackTimeoutMin">
<el-input-number v-model="form.ackTimeoutMin" :min="0" placeholder="分钟" style="width: 100%" />
<span style="color: #909399; font-size: 12px;">接单确认的时限分钟</span>
</el-form-item>
<el-form-item label="解决时限" prop="resolveTimeoutMin">
<el-input-number v-model="form.resolveTimeoutMin" :min="0" placeholder="分钟" style="width: 100%" />
<span style="color: #909399; font-size: 12px;">问题解决的时限分钟</span>
</el-form-item>
<el-form-item label="默认优先级" prop="priorityDefault">
<el-input-number v-model="form.priorityDefault" :min="1" :max="5" style="width: 100%" />
<span style="color: #909399; font-size: 12px;">1最高5最低</span>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -219,6 +216,7 @@ import { getDeviceLedgerList } from "@/api/base/deviceLedger";
export default {
name: "AndonRule",
dicts: ['andon_call_type'],
data() {
return {
//
@ -275,37 +273,40 @@ export default {
},
//
form: {},
//
//
rules: {
ruleName: [
{ required: true, message: "规则名称不能为空", trigger: "blur" }
],
stationCode: [
{ required: true, message: "请选择绑定的工位", trigger: "change" }
],
callTypeCode: [
{ required: true, message: "呼叫类型编码不能为空", trigger: "blur" }
{ required: true, message: "请选择呼叫类型", trigger: "change" }
]
},
columns: [
{ key: 0, label: `主键ID`, visible: false },
{ key: 1, label: `规则名称`, visible: true },
{ key: 2, label: `呼叫类型编码`, visible: true },
{ key: 3, label: `适用产线编码`, visible: true },
{ key: 3, label: `适用产线编码`, visible: false },
{ key: 4, label: `适用工位/工序编码`, visible: true },
{ key: 5, label: `适用班组编码`, visible: true },
{ key: 6, label: `限定触发源类型`, visible: true },
{ key: 5, label: `适用班组编码`, visible: false },
{ key: 6, label: `限定触发源类型`, visible: false },
{ key: 7, label: `确认时限`, visible: true },
{ key: 8, label: `解决时限`, visible: true },
{ key: 9, label: `默认优先级`, visible: true },
{ key: 10, label: `通知角色`, visible: true },
{ key: 10, label: `通知角色`, visible: false },
{ key: 11, label: `通知用户`, visible: true },
{ key: 12, label: `升级链`, visible: true },
{ key: 13, label: `生效开始时间`, visible: true },
{ key: 14, label: `生效结束时间`, visible: true },
{ key: 15, label: `是否有效`, visible: true },
{ key: 12, label: `升级链`, visible: false },
{ key: 13, label: `生效开始时间`, visible: false },
{ key: 14, label: `生效结束时间`, visible: false },
{ key: 15, label: `是否有效`, visible: false },
{ key: 16, label: `备注`, visible: true },
{ key: 17, label: `创建人`, visible: true },
{ key: 18, label: `创建时间`, visible: true },
{ key: 19, label: `更新人`, visible: true },
{ key: 20, label: `更新时间`, visible: true },
{ key: 19, label: `更新人`, visible: false },
{ key: 20, label: `更新时间`, visible: false },
]
};
},

Loading…
Cancel
Save