update 效率分析

This commit is contained in:
lb 2023-09-06 14:33:49 +08:00
parent 052f54833c
commit cd437ed7d3
2 changed files with 193 additions and 122 deletions

View File

@ -31,7 +31,6 @@ export default {
// dialogFormConfig: [], // 占位 // dialogFormConfig: [], // 占位
}; };
}, },
mounted() {},
methods: { methods: {
// 过滤后端传回的详情数据 // 过滤后端传回的详情数据
filterData(data, keys) { filterData(data, keys) {

View File

@ -17,10 +17,10 @@
<base-table <base-table
class="base-table__margin" class="base-table__margin"
:table-props="tableProps" :table-props="tableProps"
:page="queryParams.pageNo"
:limit="queryParams.pageSize"
:table-data="list" :table-data="list"
@emitFun="handleEmitFun"> @emitFun="handleEmitFun">
<!-- :page="queryParams.pageNo"
:limit="queryParams.pageSize" -->
<!-- <method-btn <!-- <method-btn
v-if="tableBtn.length" v-if="tableBtn.length"
slot="handleBtn" slot="handleBtn"
@ -30,28 +30,34 @@
</base-table> </base-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination <!-- <pagination
v-show="total > 0" v-show="total > 0"
:total="total" :total="total"
:page.sync="queryParams.pageNo" :page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@pagination="getList" /> @pagination="getList" /> -->
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<base-dialog <base-dialog
:dialogTitle="title" :dialogTitle="visualizationOpen ? '设备可视化' : '查看趋势'"
:dialogVisible="open" :dialogVisible="open"
width="500px" :width="visualizationOpen ? '80%' : '700px'"
@closed="closed"
@close="cancel" @close="cancel"
@cancel="cancel" @cancel="cancel"
@confirm="submitForm"> @confirm="submitForm">
<!-- some thing ... --> <div class="visualization" v-if="visualizationOpen">
<h1>设备可视化</h1>
</div>
<div v-if="trendOpen">
<h1>查看趋势</h1>
</div>
</base-dialog> </base-dialog>
</div> </div>
</template> </template>
<script> <script>
import moment from 'moment'; // import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin'; import basicPageMixin from '@/mixins/lb/basicPageMixin';
export default { export default {
@ -61,7 +67,9 @@ export default {
props: {}, props: {},
data() { data() {
return { return {
searchBarKeys: ['name', 'code'], open: false,
visualizationOpen: false,
trendOpen: false,
// tableBtn: [ // tableBtn: [
// this.$auth.hasPermi('base:equipment-group:update') // this.$auth.hasPermi('base:equipment-group:update')
// ? { // ? {
@ -77,21 +85,27 @@ export default {
// : undefined, // : undefined,
// ].filter((v) => v), // ].filter((v) => v),
tableProps: [ tableProps: [
{ prop: 'duration', label: '工厂', align: 'center' }, { prop: 'factoryName', label: '工厂', align: 'center' },
{ prop: 'duration', label: '产线', align: 'center' }, { prop: 'lineName', label: '产线', align: 'center' },
{ prop: 'duration', label: '工段', align: 'center' }, { prop: 'sectionName', label: '工段', align: 'center' },
{ prop: 'duration', label: '设备', align: 'center' }, { prop: 'equipmentName', label: '设备', align: 'center' },
{ {
label: '有效时间', label: '有效时间',
align: 'center', align: 'center',
children: [ children: [
{ {
width: 128, width: 128,
prop: 'duration', prop: 'workTime',
label: '工作时长', label: '工作时长',
align: 'center', align: 'center',
}, },
{ width: 128, prop: 'duration1', label: '百分比', align: 'center' }, {
width: 128,
prop: 'workRate',
label: '百分比',
align: 'center',
filter: (val) => (val != null ? +val.toFixed(3) : '-'),
},
], ],
}, },
{ {
@ -100,11 +114,11 @@ export default {
children: [ children: [
{ {
width: 128, width: 128,
prop: 'duration', prop: 'stopTime',
label: '停机时长', label: '停机时长',
align: 'center', align: 'center',
}, },
{ width: 128, prop: 'duration1', label: '百分比', align: 'center' }, { width: 128, prop: 'stopRate', label: '百分比', align: 'center' },
], ],
}, },
{ {
@ -113,16 +127,18 @@ export default {
children: [ children: [
{ {
width: 128, width: 128,
prop: 'duration', prop: 'downTime',
label: '故障时长', label: '故障时长',
align: 'center', align: 'center',
filter: (val) => (val != null ? +val.toFixed(3) : '-'),
}, },
{ width: 128, prop: 'duration1', label: '百分比', align: 'center' }, { width: 128, prop: 'downRate', label: '百分比', align: 'center' },
{ {
width: 128, width: 128,
prop: 'duration1', prop: 'timeEfficiency',
label: '时间开动率', label: '时间开动率',
align: 'center', align: 'center',
filter: (val) => (val != null ? +val.toFixed(3) : '-'),
}, },
], ],
}, },
@ -132,26 +148,37 @@ export default {
children: [ children: [
{ {
width: 128, width: 128,
prop: 'duration', prop: 'realProcSpeed',
label: '实际加工速度', label: '实际加工速度',
align: 'center', align: 'center',
}, },
{ {
width: 128, width: 128,
prop: 'duration1', prop: 'designProcSpeed',
label: '理论加工速度', label: '理论加工速度',
align: 'center', align: 'center',
}, },
{ {
width: 128, width: 128,
prop: 'duration1', prop: 'peEfficiency',
label: '速度开动率', label: '速度开动率',
align: 'center', align: 'center',
filter: (val) => (val != null ? +val.toFixed(3) : '-'),
}, },
], ],
}, },
{ prop: 'duration1', label: 'OEE', align: 'center' }, {
{ prop: 'duration1', label: 'TEEP', align: 'center' }, prop: 'oee',
label: 'OEE',
align: 'center',
filter: (val) => (val != null ? +val.toFixed(3) : '-'),
},
{
prop: 'teep',
label: 'TEEP',
align: 'center',
filter: (val) => (val != null ? +val.toFixed(3) : '-'),
},
{ {
_action: 'view-trend', _action: 'view-trend',
label: '趋势', label: '趋势',
@ -163,7 +190,7 @@ export default {
return h( return h(
'el-button', 'el-button',
{ {
props: { type: 'text', size: 'mini' }, props: { type: 'text' },
on: { on: {
click: function () { click: function () {
console.log('inejctdata', _this.injectData); console.log('inejctdata', _this.injectData);
@ -186,27 +213,54 @@ export default {
type: 'select', type: 'select',
label: '工厂', label: '工厂',
placeholder: '请选择工厂', placeholder: '请选择工厂',
param: 'name', param: 'factoryId',
selectOptions: [], selectOptions: [],
}, },
{ {
type: 'select', type: 'select',
label: '产线', label: '产线',
placeholder: '请选择产线', placeholder: '请选择产线',
param: 'codes', param: 'lineId',
selectOptions: [], selectOptions: [],
}, },
// //
{ {
type: 'datePicker', type: 'select',
label: '时间', label: '时间类型',
dateType: 'daterange', param: 'dateFilterType',
format: 'yyyy-MM-dd', defaultSelect: 0,
valueFormat: 'yyyy-MM-dd HH:mm:ss', selectOptions: [
rangeSeparator: '-', { id: 0, name: '按时间段' },
startPlaceholder: '开始时间', { id: 1, name: '按日期' },
endPlaceholder: '结束时间', ],
param: 'createTime', index: 2,
extraOptions: [
{
parent: 'dateFilterType',
//
type: 'datePicker',
label: '时间段',
dateType: 'daterange',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
defaultTime: ['00:00:00', '00:00:00'],
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'recordTime',
},
{
parent: 'dateFilterType',
//
type: 'datePicker',
label: '日期',
dateType: 'date',
placeholder: '选择日期',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
param: 'recordTime',
},
],
}, },
{ {
type: 'button', type: 'button',
@ -219,121 +273,139 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: 'OEE', btnName: '设备可视化',
name: 'add', name: 'visualization',
plain: true, plain: true,
color: 'success', color: 'success',
}, },
{ // {
type: 'button', // type: 'button',
btnName: 'TEEP', // btnName: 'OEE',
name: 'add', // name: 'add',
plain: true, // plain: true,
color: 'warning', // color: 'success',
}, // },
// {
// type: 'button',
// btnName: 'TEEP',
// name: 'add',
// plain: true,
// color: 'warning',
// },
], ],
// //
open: false, open: false,
// //
queryParams: { queryParams: {
pageNo: 1, lineId: null,
pageSize: 10, factoryId: null,
code: null, recordTime: [],
name: null,
}, },
// //
form: {}, form: {},
list: [],
}; };
}, },
created() { created() {
this.getFactory();
this.getLine();
this.getList(); this.getList();
}, },
methods: { methods: {
/** 准备工厂数据 */
async getFactory() {
const { code, data } = await this.$axios({
url: '/base/factory/listAll',
method: 'get',
});
if (code == 0) {
this.searchBarFormConfig[0].selectOptions = data.map((item) => {
return {
name: item.name,
id: item.id,
};
});
}
},
/** 准备产线数据 */
async getLine() {
const { code, data } = await this.$axios({
url: '/base/production-line/listAll',
method: 'get',
});
if (code == 0) {
this.searchBarFormConfig[1].selectOptions = data.map((item) => {
return {
name: item.name,
id: item.id,
};
});
}
},
/** 覆盖 handleEmitFun 的默认实现 */ /** 覆盖 handleEmitFun 的默认实现 */
handleEmitFun({ action, value }) { handleEmitFun({ action, value }) {
const {
id: equipmentGroupId,
name: equipmentGroupName,
code: equipmentGroupCode,
} = value;
switch (action) { switch (action) {
case 'equipment-group-show-alert': case 'view-trend':
// this.$router.push({ path: '/equipment/base/equipment-group-alarm' }); const { id } = value;
this.$router.push({ this.open = true;
name: 'EquipmentGroupAlarm', this.trendOpen = true;
params: {
equipmentGroupId,
equipmentGroupCode,
equipmentGroupName,
},
});
break; break;
} }
}, },
/** 查询列表 */ /** 查询列表 */
getList() { async getList() {
this.loading = true; this.loading = true;
// const { code, data } = await this.$axios({
getEquipmentGroupPage(this.queryParams).then((response) => { url: '/analysis/equipment-analysis/efficiency',
this.list = response.data.list; method: 'get',
this.total = response.data.total; params: this.queryParams,
this.loading = false;
}); });
if (code == 0) {
console.log('data', data);
this.list = data;
}
}, },
/** 取消按钮 */
handleSearchBarBtnClick({ btnName, ...payload }) {
console.log('handleSearchBarBtnClick', btnName, payload);
if (btnName == 'visualization') {
//
this.visualizationOpen = true;
this.open = true;
}
if (btnName == 'search') {
this.queryParams.factoryId = payload.factoryId || null;
this.queryParams.lineId = payload.lineId || null;
if (payload.recordTime != null) {
if (typeof payload.recordTime == 'string') {
if (payload.recordTime.trim() !== '') {
this.queryParams.recordTime = [
`${payload.recordTime} 00:00:00`,
`${payload.recordTime} 23:59:59`,
];
}
} else {
this.queryParams.recordTime = payload.recordTime;
}
} else {
this.queryParams.recordTime = null;
}
this.getList();
}
},
cancel() { cancel() {
this.open = false; this.open = false;
this.reset();
}, },
/** 表单重置 */
reset() { closed() {
this.form = { this.visualizationOpen = false;
id: undefined, this.trendOpen = false;
code: undefined,
name: undefined,
remark: undefined,
};
this.resetForm('form');
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm('queryForm');
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = '添加设备分组(用于同类型不同厂家的设备区分)';
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate((valid) => {
if (!valid) {
return;
}
//
if (this.form.id != null) {
updateEquipmentGroup(this.form).then((response) => {
this.$modal.msgSuccess('修改成功');
this.open = false;
this.getList();
});
return;
}
//
createEquipmentGroup(this.form).then((response) => {
this.$modal.msgSuccess('新增成功');
this.open = false;
this.getList();
});
});
}, },
submitForm() {},
}, },
}; };
</script> </script>