feat(base): 添加设备参数预警功能和删除多个功能模块

- 在设备参数页面添加上限阈值、下限阈值、预警级别和启用预警字段
- 实现预警级别的标签显示(一般、重要、紧急)
- 添加启用预警开关功能
- 在工艺预警页面添加检查预警按钮和功能
- 实现阈值检查预警API调用
- 删除工艺调试备份、参数变更记录、参数监控、参数追溯、工艺快照等功能模块
- 移除相关API接口文件
master^2
zangch@mesnac.com 2 weeks ago
parent 05e25b4e68
commit 0478d69ff1

@ -51,3 +51,11 @@ export function handleProcessAlert(data) {
data: data
})
}
// 检查阈值预警
export function checkThresholdAlert() {
return request({
url: '/base/processAlert/checkThreshold',
method: 'post'
})
}

@ -1,53 +0,0 @@
import request from '@/utils/request'
// 查询调试备份列表
export function listProcessDebugBackup(query) {
return request({
url: '/base/processDebugBackup/list',
method: 'get',
params: query
})
}
// 查询调试备份详细
export function getProcessDebugBackup(backupId) {
return request({
url: '/base/processDebugBackup/' + backupId,
method: 'get'
})
}
// 新增调试备份
export function addProcessDebugBackup(data) {
return request({
url: '/base/processDebugBackup',
method: 'post',
data: data
})
}
// 修改调试备份
export function updateProcessDebugBackup(data) {
return request({
url: '/base/processDebugBackup',
method: 'put',
data: data
})
}
// 删除调试备份
export function delProcessDebugBackup(backupId) {
return request({
url: '/base/processDebugBackup/' + backupId,
method: 'delete'
})
}
// 获取调试备份列表(不分页)
export function getProcessDebugBackupList(query) {
return request({
url: '/base/processDebugBackup/getProcessDebugBackupList',
method: 'get',
params: query
})
}

@ -1,44 +0,0 @@
import request from '@/utils/request'
// 查询工艺参数变更记录列表
export function listProcessParamChange(query) {
return request({
url: '/base/processParamChange/list',
method: 'get',
params: query
})
}
// 查询工艺参数变更记录详细
export function getProcessParamChange(changeId) {
return request({
url: '/base/processParamChange/' + changeId,
method: 'get'
})
}
// 新增工艺参数变更记录
export function addProcessParamChange(data) {
return request({
url: '/base/processParamChange',
method: 'post',
data: data
})
}
// 修改工艺参数变更记录
export function updateProcessParamChange(data) {
return request({
url: '/base/processParamChange',
method: 'put',
data: data
})
}
// 删除工艺参数变更记录
export function delProcessParamChange(changeId) {
return request({
url: '/base/processParamChange/' + changeId,
method: 'delete'
})
}

@ -1,44 +0,0 @@
import request from '@/utils/request'
// 查询工艺参数监控列表
export function listProcessParamMonitor(query) {
return request({
url: '/base/processParamMonitor/list',
method: 'get',
params: query
})
}
// 查询工艺参数监控详细
export function getProcessParamMonitor(monitorId) {
return request({
url: '/base/processParamMonitor/' + monitorId,
method: 'get'
})
}
// 新增工艺参数监控
export function addProcessParamMonitor(data) {
return request({
url: '/base/processParamMonitor',
method: 'post',
data: data
})
}
// 修改工艺参数监控
export function updateProcessParamMonitor(data) {
return request({
url: '/base/processParamMonitor',
method: 'put',
data: data
})
}
// 删除工艺参数监控
export function delProcessParamMonitor(monitorId) {
return request({
url: '/base/processParamMonitor/' + monitorId,
method: 'delete'
})
}

@ -1,44 +0,0 @@
import request from '@/utils/request'
// 查询参数追溯列表
export function listProcessParamTrace(query) {
return request({
url: '/base/processParamTrace/list',
method: 'get',
params: query
})
}
// 查询参数追溯详细
export function getProcessParamTrace(traceId) {
return request({
url: '/base/processParamTrace/' + traceId,
method: 'get'
})
}
// 新增参数追溯
export function addProcessParamTrace(data) {
return request({
url: '/base/processParamTrace',
method: 'post',
data: data
})
}
// 修改参数追溯
export function updateProcessParamTrace(data) {
return request({
url: '/base/processParamTrace',
method: 'put',
data: data
})
}
// 删除参数追溯
export function delProcessParamTrace(traceId) {
return request({
url: '/base/processParamTrace/' + traceId,
method: 'delete'
})
}

@ -1,44 +0,0 @@
import request from '@/utils/request'
// 查询工艺快照列表
export function listProcessSnapshot(query) {
return request({
url: '/base/processSnapshot/list',
method: 'get',
params: query
})
}
// 查询工艺快照详细
export function getProcessSnapshot(snapshotId) {
return request({
url: '/base/processSnapshot/' + snapshotId,
method: 'get'
})
}
// 新增工艺快照
export function addProcessSnapshot(data) {
return request({
url: '/base/processSnapshot',
method: 'post',
data: data
})
}
// 修改工艺快照
export function updateProcessSnapshot(data) {
return request({
url: '/base/processSnapshot',
method: 'put',
data: data
})
}
// 删除工艺快照
export function delProcessSnapshot(snapshotId) {
return request({
url: '/base/processSnapshot/' + snapshotId,
method: 'delete'
})
}

@ -114,6 +114,21 @@
</template>
</el-table-column>
<el-table-column label="读取频率" align="center" prop="readFrequency" v-if="columns[7].visible"/>
<el-table-column label="上限阈值" align="center" prop="upperLimit" v-if="columns[14].visible"/>
<el-table-column label="下限阈值" align="center" prop="lowerLimit" v-if="columns[15].visible"/>
<el-table-column label="预警级别" align="center" prop="alertLevel" v-if="columns[16].visible">
<template slot-scope="scope">
<el-tag v-if="scope.row.alertLevel === '1'" type="info"></el-tag>
<el-tag v-else-if="scope.row.alertLevel === '2'" type="warning">重要</el-tag>
<el-tag v-else-if="scope.row.alertLevel === '3'" type="danger">紧急</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="启用预警" align="center" prop="alertEnabled" v-if="columns[17].visible">
<template slot-scope="scope">
<el-tag :type="scope.row.alertEnabled === '1' ? 'success' : 'info'">{{ scope.row.alertEnabled === '1' ? '是' : '否' }}</el-tag>
</template>
</el-table-column>
<el-table-column label="启用标识" align="center" prop="isFlag" v-if="columns[8].visible">
<template slot-scope="scope">
<dict-tag :options="dict.type.is_flag" :value="scope.row.isFlag"/>
@ -195,7 +210,23 @@
</el-select>
</el-form-item>
<el-form-item label="读取频率" prop="readFrequency">
<el-input v-model="form.readFrequency" placeholder="请输入读取频率" />
<el-input v-model="form.readFrequency" placeholder="请输入读取频率(毫秒)" />
</el-form-item>
<el-form-item label="上限阈值" prop="upperLimit">
<el-input-number v-model="form.upperLimit" placeholder="参数上限" :precision="4" :controls="false" style="width: 100%" />
</el-form-item>
<el-form-item label="下限阈值" prop="lowerLimit">
<el-input-number v-model="form.lowerLimit" placeholder="参数下限" :precision="4" :controls="false" style="width: 100%" />
</el-form-item>
<el-form-item label="预警级别" prop="alertLevel">
<el-select v-model="form.alertLevel" placeholder="请选择预警级别" clearable style="width: 100%">
<el-option label="一般" value="1" />
<el-option label="重要" value="2" />
<el-option label="紧急" value="3" />
</el-select>
</el-form-item>
<el-form-item label="启用预警" prop="alertEnabled">
<el-switch v-model="form.alertEnabled" active-value="1" inactive-value="0" active-text="" inactive-text="" />
</el-form-item>
<el-form-item label="启用标识" prop="isFlag">
<el-radio-group v-model="form.isFlag">
@ -322,6 +353,10 @@ export default {
{ key: 11, label: `更新人`, visible: false },
{ key: 12, label: `更新时间`, visible: false },
{ key: 13, label: `产线`, visible: true },
{ key: 14, label: `上限阈值`, visible: true },
{ key: 15, label: `下限阈值`, visible: true },
{ key: 16, label: `预警级别`, visible: true },
{ key: 17, label: `启用预警`, visible: true },
],
//
deviceLedgerList: [],

@ -31,6 +31,9 @@
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-refresh" size="mini" @click="handleCheckThreshold" v-hasPermi="['base:processAlert:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['base:processAlert:export']"></el-button>
</el-col>
@ -121,7 +124,7 @@
</template>
<script>
import { listProcessAlert, getProcessAlert, handleProcessAlert } from "@/api/base/processAlert";
import { listProcessAlert, getProcessAlert, handleProcessAlert, checkThresholdAlert } from "@/api/base/processAlert";
export default {
name: "ProcessAlert",
@ -210,6 +213,14 @@ export default {
},
handleExport() {
this.download('base/processAlert/export', { ...this.queryParams }, `processAlert_${new Date().getTime()}.xlsx`);
},
handleCheckThreshold() {
this.$modal.confirm('是否检查参数阈值并生成预警?').then(() => {
checkThresholdAlert().then(response => {
this.$modal.msgSuccess(response.msg);
this.getList();
});
}).catch(() => {});
}
}
};

@ -1,216 +0,0 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="备份编号" prop="backupCode">
<el-input v-model="queryParams.backupCode" placeholder="请输入备份编号" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="设备编码" prop="deviceCode">
<el-input v-model="queryParams.deviceCode" placeholder="请输入设备编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入产品编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['base:processDebugBackup:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['base:processDebugBackup:remove']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['base:processDebugBackup:export']"></el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="backupList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="备份编号" align="center" prop="backupCode"/>
<el-table-column label="备份名称" align="center" prop="backupName" show-overflow-tooltip/>
<el-table-column label="设备编码" align="center" prop="deviceCode"/>
<el-table-column label="设备名称" align="center" prop="deviceName"/>
<el-table-column label="模具编码" align="center" prop="moldCode"/>
<el-table-column label="产品编码" align="center" prop="productCode"/>
<el-table-column label="备份人" align="center" prop="backupUser"/>
<el-table-column label="备份时间" align="center" prop="backupTime" width="160"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-download" @click="handleApply(scope.row)"></el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['base:processDebugBackup:remove']"></el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="备份编号" prop="backupCode">
<el-input v-model="form.backupCode" placeholder="请输入备份编号"/>
</el-form-item>
<el-form-item label="备份名称" prop="backupName">
<el-input v-model="form.backupName" placeholder="请输入备份名称"/>
</el-form-item>
<el-form-item label="设备编码" prop="deviceCode">
<el-input v-model="form.deviceCode" placeholder="请输入设备编码"/>
</el-form-item>
<el-form-item label="设备名称" prop="deviceName">
<el-input v-model="form.deviceName" placeholder="请输入设备名称"/>
</el-form-item>
<el-form-item label="模具编码" prop="moldCode">
<el-input v-model="form.moldCode" placeholder="请输入模具编码"/>
</el-form-item>
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="form.productCode" placeholder="请输入产品编码"/>
</el-form-item>
<el-form-item label="参数数据" prop="paramData">
<el-input v-model="form.paramData" type="textarea" :rows="6" placeholder="请输入参数数据(JSON格式)"/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog title="参数数据" :visible.sync="viewOpen" width="700px" append-to-body>
<pre style="max-height: 400px; overflow: auto; background: #f5f5f5; padding: 15px; border-radius: 4px;">{{ viewParamData }}</pre>
<div slot="footer" class="dialog-footer">
<el-button @click="viewOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listProcessDebugBackup, getProcessDebugBackup, delProcessDebugBackup, addProcessDebugBackup } from "@/api/base/processDebugBackup";
export default {
name: "ProcessDebugBackup",
data() {
return {
loading: true,
ids: [],
single: true,
multiple: true,
showSearch: true,
total: 0,
backupList: [],
title: "",
open: false,
viewOpen: false,
viewParamData: "",
queryParams: {
pageNum: 1,
pageSize: 10,
backupCode: null,
deviceCode: null,
productCode: null,
},
form: {},
rules: {
backupCode: [{ required: true, message: "备份编号不能为空", trigger: "blur" }],
deviceCode: [{ required: true, message: "设备编码不能为空", trigger: "blur" }],
}
};
},
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
listProcessDebugBackup(this.queryParams).then(response => {
this.backupList = response.rows;
this.total = response.total;
this.loading = false;
});
},
cancel() {
this.open = false;
this.reset();
},
reset() {
this.form = {
backupId: null,
backupCode: null,
backupName: null,
deviceCode: null,
deviceName: null,
moldCode: null,
moldName: null,
productCode: null,
productName: null,
paramData: null,
isFlag: "1",
remark: null,
};
this.resetForm("form");
},
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange(selection) {
this.ids = selection.map(item => item.backupId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
handleAdd() {
this.reset();
this.open = true;
this.title = "添加调试备份";
},
handleView(row) {
try {
this.viewParamData = row.paramData ? JSON.stringify(JSON.parse(row.paramData), null, 2) : "暂无参数数据";
} catch (e) {
this.viewParamData = row.paramData || "暂无参数数据";
}
this.viewOpen = true;
},
handleApply(row) {
this.$modal.confirm('是否确认应用备份编号为"' + row.backupCode + '"的参数数据?').then(() => {
this.$modal.msgSuccess("参数应用成功(此功能需要与设备通信模块对接)");
}).catch(() => {});
},
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
addProcessDebugBackup(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
});
},
handleDelete(row) {
const backupIds = row.backupId || this.ids;
this.$modal.confirm('是否确认删除调试备份编号为"' + backupIds + '"的数据项?').then(function() {
return delProcessDebugBackup(backupIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
handleExport() {
this.download('base/processDebugBackup/export', { ...this.queryParams }, `processDebugBackup_${new Date().getTime()}.xlsx`);
}
}
};
</script>

@ -1,127 +0,0 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="设备编码" prop="deviceCode">
<el-input v-model="queryParams.deviceCode" placeholder="请输入设备编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="参数名称" prop="paramName">
<el-input v-model="queryParams.paramName" placeholder="请输入参数名称" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="参数状态" prop="paramStatus">
<el-select v-model="queryParams.paramStatus" placeholder="请选择状态" clearable>
<el-option label="正常" value="0"/>
<el-option label="异常" value="1"/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['base:processParamMonitor:export']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-refresh" size="mini" @click="getList"></el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="monitorList" :row-class-name="tableRowClassName">
<el-table-column label="设备编码" align="center" prop="deviceCode"/>
<el-table-column label="设备名称" align="center" prop="deviceName"/>
<el-table-column label="参数编码" align="center" prop="paramCode"/>
<el-table-column label="参数名称" align="center" prop="paramName"/>
<el-table-column label="参数值" align="center" prop="paramValue">
<template slot-scope="scope">
<span :class="{'text-danger': scope.row.paramStatus === '1'}">{{ scope.row.paramValue }}</span>
</template>
</el-table-column>
<el-table-column label="单位" align="center" prop="paramUnit" width="80"/>
<el-table-column label="标准值" align="center" prop="standardValue"/>
<el-table-column label="上限" align="center" prop="upperLimit" width="80"/>
<el-table-column label="下限" align="center" prop="lowerLimit" width="80"/>
<el-table-column label="状态" align="center" prop="paramStatus" width="80">
<template slot-scope="scope">
<el-tag :type="scope.row.paramStatus === '0' ? 'success' : 'danger'">
{{ scope.row.paramStatus === '0' ? '正常' : '异常' }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="采集时间" align="center" prop="collectTime" width="160"/>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
</div>
</template>
<script>
import { listProcessParamMonitor } from "@/api/base/processParamMonitor";
export default {
name: "ProcessParamMonitor",
data() {
return {
loading: true,
showSearch: true,
total: 0,
monitorList: [],
queryParams: {
pageNum: 1,
pageSize: 10,
deviceCode: null,
paramName: null,
paramStatus: null,
},
refreshTimer: null,
};
},
created() {
this.getList();
},
beforeDestroy() {
if (this.refreshTimer) {
clearInterval(this.refreshTimer);
}
},
methods: {
getList() {
this.loading = true;
listProcessParamMonitor(this.queryParams).then(response => {
this.monitorList = response.rows;
this.total = response.total;
this.loading = false;
});
},
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
tableRowClassName({ row }) {
if (row.paramStatus === '1') {
return 'warning-row';
}
return '';
},
handleExport() {
this.download('base/processParamMonitor/export', { ...this.queryParams }, `processParamMonitor_${new Date().getTime()}.xlsx`);
}
}
};
</script>
<style scoped>
.text-danger {
color: #F56C6C;
font-weight: bold;
}
::v-deep .warning-row {
background-color: #FEF0F0 !important;
}
</style>

@ -1,102 +0,0 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="设备编码" prop="deviceCode">
<el-input v-model="queryParams.deviceCode" placeholder="请输入设备编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="模具编码" prop="moldCode">
<el-input v-model="queryParams.moldCode" placeholder="请输入模具编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入产品编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="批次编码" prop="batchCode">
<el-input v-model="queryParams.batchCode" placeholder="请输入批次编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="追溯时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['base:processParamTrace:export']"></el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="traceList">
<el-table-column label="设备编码" align="center" prop="deviceCode"/>
<el-table-column label="设备名称" align="center" prop="deviceName"/>
<el-table-column label="模具编码" align="center" prop="moldCode"/>
<el-table-column label="产品编码" align="center" prop="productCode"/>
<el-table-column label="批次编码" align="center" prop="batchCode"/>
<el-table-column label="模次" align="center" prop="moldCount" width="80"/>
<el-table-column label="参数编码" align="center" prop="paramCode"/>
<el-table-column label="参数名称" align="center" prop="paramName"/>
<el-table-column label="参数值" align="center" prop="paramValue"/>
<el-table-column label="单位" align="center" prop="paramUnit" width="80"/>
<el-table-column label="追溯时间" align="center" prop="traceTime" width="160"/>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
</div>
</template>
<script>
import { listProcessParamTrace } from "@/api/base/processParamTrace";
export default {
name: "ProcessParamTrace",
data() {
return {
loading: true,
showSearch: true,
total: 0,
traceList: [],
dateRange: [],
queryParams: {
pageNum: 1,
pageSize: 10,
deviceCode: null,
moldCode: null,
productCode: null,
batchCode: null,
},
};
},
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
let params = { ...this.queryParams };
if (this.dateRange && this.dateRange.length === 2) {
params.params = { beginTime: this.dateRange[0], endTime: this.dateRange[1] };
}
listProcessParamTrace(params).then(response => {
this.traceList = response.rows;
this.total = response.total;
this.loading = false;
});
},
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
handleExport() {
this.download('base/processParamTrace/export', { ...this.queryParams }, `processParamTrace_${new Date().getTime()}.xlsx`);
}
}
};
</script>

@ -1,144 +0,0 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="产品编码" prop="productCode">
<el-input v-model="queryParams.productCode" placeholder="请输入产品编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="工单编码" prop="orderCode">
<el-input v-model="queryParams.orderCode" placeholder="请输入工单编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="批次编码" prop="batchCode">
<el-input v-model="queryParams.batchCode" placeholder="请输入批次编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="设备编码" prop="deviceCode">
<el-input v-model="queryParams.deviceCode" placeholder="请输入设备编码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="快照时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['base:processSnapshot:export']"></el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="snapshotList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="快照编号" align="center" prop="snapshotCode" width="120"/>
<el-table-column label="产品编码" align="center" prop="productCode"/>
<el-table-column label="产品名称" align="center" prop="productName" show-overflow-tooltip/>
<el-table-column label="工单编码" align="center" prop="orderCode"/>
<el-table-column label="批次编码" align="center" prop="batchCode"/>
<el-table-column label="设备编码" align="center" prop="deviceCode"/>
<el-table-column label="工位编码" align="center" prop="stationCode"/>
<el-table-column label="工序步骤" align="center" prop="processStep" width="80"/>
<el-table-column label="工序名称" align="center" prop="processName"/>
<el-table-column label="快照时间" align="center" prop="snapshotTime" width="160"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList"/>
<el-dialog title="工艺参数快照" :visible.sync="viewOpen" width="700px" append-to-body>
<el-descriptions :column="2" border>
<el-descriptions-item label="产品编码">{{ currentRow.productCode }}</el-descriptions-item>
<el-descriptions-item label="产品名称">{{ currentRow.productName }}</el-descriptions-item>
<el-descriptions-item label="工单编码">{{ currentRow.orderCode }}</el-descriptions-item>
<el-descriptions-item label="批次编码">{{ currentRow.batchCode }}</el-descriptions-item>
<el-descriptions-item label="设备编码">{{ currentRow.deviceCode }}</el-descriptions-item>
<el-descriptions-item label="工位编码">{{ currentRow.stationCode }}</el-descriptions-item>
<el-descriptions-item label="工序步骤">{{ currentRow.processStep }}</el-descriptions-item>
<el-descriptions-item label="工序名称">{{ currentRow.processName }}</el-descriptions-item>
<el-descriptions-item label="快照时间" :span="2">{{ currentRow.snapshotTime }}</el-descriptions-item>
</el-descriptions>
<div style="margin-top: 15px;">
<h4>参数数据</h4>
<pre style="max-height: 300px; overflow: auto; background: #f5f5f5; padding: 15px; border-radius: 4px;">{{ viewParamData }}</pre>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="viewOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listProcessSnapshot, getProcessSnapshot } from "@/api/base/processSnapshot";
export default {
name: "ProcessSnapshot",
data() {
return {
loading: true,
ids: [],
showSearch: true,
total: 0,
snapshotList: [],
viewOpen: false,
viewParamData: "",
currentRow: {},
dateRange: [],
queryParams: {
pageNum: 1,
pageSize: 10,
productCode: null,
orderCode: null,
batchCode: null,
deviceCode: null,
},
};
},
created() {
this.getList();
},
methods: {
getList() {
this.loading = true;
let params = { ...this.queryParams };
if (this.dateRange && this.dateRange.length === 2) {
params.params = { beginTime: this.dateRange[0], endTime: this.dateRange[1] };
}
listProcessSnapshot(params).then(response => {
this.snapshotList = response.rows;
this.total = response.total;
this.loading = false;
});
},
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
handleSelectionChange(selection) {
this.ids = selection.map(item => item.snapshotId);
},
handleView(row) {
this.currentRow = row;
try {
this.viewParamData = row.paramData ? JSON.stringify(JSON.parse(row.paramData), null, 2) : "暂无参数数据";
} catch (e) {
this.viewParamData = row.paramData || "暂无参数数据";
}
this.viewOpen = true;
},
handleExport() {
this.download('base/processSnapshot/export', { ...this.queryParams }, `processSnapshot_${new Date().getTime()}.xlsx`);
}
}
};
</script>
Loading…
Cancel
Save