diff --git a/src/api/production/andonBoard.js b/src/api/production/andonBoard.js new file mode 100644 index 0000000..4d711d1 --- /dev/null +++ b/src/api/production/andonBoard.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +export function viewAndonBoard(boardCode) { + return request({ + url: '/production/andonBoard/view', + method: 'get', + params: { boardCode }, + headers: { isToken: false } + }) +} diff --git a/src/layout/boardIndex.vue b/src/layout/boardIndex.vue index c2caf12..6a14e81 100644 --- a/src/layout/boardIndex.vue +++ b/src/layout/boardIndex.vue @@ -34,7 +34,10 @@ export default { getDateIntervalFun = setInterval(getDate, 1000) }, beforeDestroy() { - getDateIntervalFun = null + if (getDateIntervalFun) { + clearInterval(getDateIntervalFun) + getDateIntervalFun = null + } } } diff --git a/src/permission.js b/src/permission.js index 2a904ee..49bec4c 100644 --- a/src/permission.js +++ b/src/permission.js @@ -8,7 +8,7 @@ import { isRelogin } from '@/utils/request' NProgress.configure({ showSpinner: false }) -const whiteList = ['/login', '/board1', '/board2', '/board3', '/board5', '/board6', '/register', '/liner', '/caseShell2', '/foaming', '/foaming2', '/pourInto', '/finalAssembly', '/scanDown', '/week', '/week2', '/model'] +const whiteList = ['/login', '/board1', '/board2', '/board3', '/board5', '/board6', '/register', '/liner', '/caseShell2', '/foaming', '/foaming2', '/pourInto', '/finalAssembly', '/scanDown', '/week', '/week2', '/model', '/andonBoard'] router.beforeEach((to, from, next) => { NProgress.start() diff --git a/src/router/index.js b/src/router/index.js index faecf2b..b1c0d95 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -197,6 +197,12 @@ export const constantRoutes = [ component: () => import('@/views/board/week2/index'), meta: {title: '综合看板', icon: 'dashboard',} }, + { + path: 'andonBoard', + name: 'AndonBoard', + component: () => import('@/views/board/andonBoard/index'), + meta: {title: '安灯看板', icon: 'dashboard',} + }, ] }, { diff --git a/src/views/base/deviceParam/index.vue b/src/views/base/deviceParam/index.vue index e6f4f58..dbe09f8 100644 --- a/src/views/base/deviceParam/index.vue +++ b/src/views/base/deviceParam/index.vue @@ -297,6 +297,15 @@ export default { form: {}, // 表单校验 rules: { + paramCode: [ + { required: true, message: "参数编号不能为空", trigger: "blur" } + ], + paramName: [ + { required: true, message: "参数名称不能为空", trigger: "blur" } + ], + deviceCode: [ + { required: true, message: "设备名称不能为空", trigger: "change" } + ], }, columns: [ { key: 0, label: `主键标识`, visible: false }, diff --git a/src/views/board/andonBoard/index.vue b/src/views/board/andonBoard/index.vue new file mode 100644 index 0000000..f34dc9e --- /dev/null +++ b/src/views/board/andonBoard/index.vue @@ -0,0 +1,681 @@ + + + + + diff --git a/src/views/production/andonBoardConfig/index.vue b/src/views/production/andonBoardConfig/index.vue index f94e24e..88b0235 100644 --- a/src/views/production/andonBoardConfig/index.vue +++ b/src/views/production/andonBoardConfig/index.vue @@ -47,12 +47,8 @@ - + + --> @@ -118,7 +114,7 @@ @@ -179,16 +175,19 @@ /> + + +
+ 操作说明 +
+
- {{dict.label}} + 有效 + 无效 @@ -200,6 +199,37 @@ 取 消 + + + +
+

作用:控制大屏进行中/已关闭列表显示哪些列、顺序与标题,可单独设置列宽与对齐。

+

写法示例:

+
    +
  1. 逗号分隔字符串(两张表共用同列)
    callCode,stationCode,eventStatus,priority,createTime
  2. +
  3. JSON 数组(可带 label/width/align)
    [
    +  "callCode",
    +  { "field": "eventStatus", "label": "状态", "align": "center" }
    +]
  4. +
  5. JSON 对象区分进行中/已关闭
    {
    +  "activeFields": ["callCode","priority"],
    +  "closedFields": ["callCode","responseEndTime","resolution"]
    +}
  6. +
+

可用字段:

+
+
    +
  • + {{ f.field }} - {{ f.label }} +
  • +
+
+

未填写或格式错误时会回退默认列,label/width/align 未设置则自动使用字段默认标题。

+
+ + 知道了 + +
@@ -210,7 +240,7 @@ import { listProcessStation } from "@/api/base/processStation"; export default { name: "AndonBoardConfig", - dicts: ['is_flag'], + dicts: [], data() { return { // 遮罩层 @@ -235,6 +265,8 @@ export default { title: "", // 是否显示弹出层 open: false, + // 操作说明弹层 + helpVisible: false, // 查询参数 queryParams: { pageNum: 1, @@ -276,6 +308,37 @@ export default { { key: 11, label: `更新人`, visible: true }, { key: 12, label: `更新时间`, visible: true }, ] + , + // 可用字段列表(与大屏展示字段映射一致) + availableFields: [ + { field: "index", label: "序号(前端行号)" }, + { field: "eventId", label: "事件ID" }, + { field: "callCode", label: "呼叫单号" }, + { field: "callTypeCode", label: "呼叫类型" }, + { field: "sourceType", label: "触发源类型(工位/设备/报警/手动)" }, + { field: "sourceRefId", label: "触发源编码" }, + { field: "productLineCode", label: "产线编码" }, + { field: "stationCode", label: "工位/工序编码" }, + { field: "teamCode", label: "班组编码" }, + { field: "orderCode", label: "工单号" }, + { field: "materialCode", label: "物料编码" }, + { field: "deviceCode", label: "设备编码" }, + { field: "priority", label: "优先级" }, + { field: "eventStatus", label: "状态(待处理/处理中/已解决/已取消)" }, + { field: "description", label: "呼叫描述" }, + { field: "ackBy", label: "确认人" }, + { field: "ackTime", label: "确认时间" }, + { field: "responseStartTime", label: "开始处理时间" }, + { field: "responseEndTime", label: "完成时间" }, + { field: "resolution", label: "解决措施" }, + { field: "cancelReason", label: "取消原因" }, + { field: "escalateLevel", label: "升级级别" }, + { field: "escalateTime", label: "升级时间" }, + { field: "ackDeadline", label: "确认截止时间" }, + { field: "resolveDeadline", label: "解决截止时间" }, + { field: "createTime", label: "创建时间" }, + { field: "updateTime", label: "更新时间" } + ] }; }, created() { @@ -337,6 +400,7 @@ export default { /** 新增按钮操作 */ handleAdd() { this.reset(); + this.form.isFlag = '1'; // 默认有效 this.open = true; this.title = "添加安灯看板配置"; },