projects/mesxc-zhp #161

Closed
zhp wants to merge 119 commits from projects/mesxc-zhp into projects/mes-test
3 changed files with 219 additions and 138 deletions
Showing only changes of commit 0bb434bc22 - Show all commits

View File

@ -90,7 +90,7 @@ export default {
{
type: 'datePicker',
label: '时间段',
dateType: 'datetimerange',
dateType: 'daterange',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: DY
* @LastEditTime: 2023-11-23 18:45:15
* @LastEditTime: 2023-12-22 16:02:25
* @Description:
-->
<template>
@ -12,86 +12,153 @@
:wrapper-closable="false"
class="drawer"
size="50%"> -->
<div class="app-container">
<div class="container">
<!-- <small-title slot="title" :no-padding="true">
{{ isdetail ? '详情' : !dataForm.id ? '新增' : '编辑' }}
</small-title> -->
<el-button style="float: right" type="primary" @click="goback()">返回</el-button>
<div v-show="workOrderButton.length">
<el-button v-for="(work, index) in workOrderButton" :key="index" type="primary" @click="init(work.id, true)">{{ work.name }}</el-button>
</div>
<div class="content">
<div>
<h1>工单编码{{ dataForm.code }}</h1>
</div>
<small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
基本信息
</small-title>
<div class="formContent">
<el-row :gutter="20">
<el-col :span="8">工单名称:{{ dataForm.name }}</el-col>
<el-col :span="8">工单来源:{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</el-col>
<el-col :span="8">所属订单:
<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">产品名称:{{ dataForm.productName }}</el-col>
<el-col :span="8"> :{{ dataForm.specifications }}</el-col>
<el-col :span="8">计划生产数量:{{ dataForm.planQuantity }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">预计用时(小时):{{ dataForm.remainingTime }}</el-col>
<el-col :span="8">计划投入数量:{{ dataForm.planAssignQuantity }}</el-col>
<el-col :span="8">优先级:{{ fitlerP(dataForm.priority) }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">负责人:{{ dataForm.workers }}</el-col>
<el-col :span="8">关联产线:
<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
</el-col>
<el-col :span="8">物料计算方式:{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">关联工艺:{{ dataForm.processFlowName }}</el-col>
</el-row>
<div class="card">
<div class="boxTitle">
<span class="blueTitle"></span>
<span>工单编码{{ dataForm.code }}</span>
</div>
<el-button style="float: right" type="primary" size="small" plain @click="goback()">
<svg-icon icon-class="return"/>返回
</el-button>
<div class="formContent">
<el-row :gutter="20">
<el-col :span="3">
<div class="blodTip">工单名称</div>
<div class="lightTip">{{ dataForm.name }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">工单来源</div>
<div class="lightTip">{{ dataForm.triggerOrigin === 1 ? 'MES' : dataForm.triggerOrigin === 2 ? 'ERP' : ''}}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">所属订单</div>
<div class="lightTip">
<span v-for="(item, index) in orderList" :key="index" style="margin-right: 10px">{{ item.orderName }}</span>
</div>
</el-col>
<el-col :span="3">
<div class="blodTip">产品名称</div>
<div class="lightTip">{{ dataForm.productName }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip"> </div>
<div class="lightTip">{{ dataForm.specifications }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">计划生产数量</div>
<div class="lightTip">{{ dataForm.planQuantity }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">预计用时(小时)</div>
<div class="lightTip">{{ dataForm.remainingTime }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">计划投入数量</div>
<div class="lightTip">{{ dataForm.planAssignQuantity }}</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="3">
<div class="blodTip">优先级</div>
<div class="lightTip">{{ fitlerP(dataForm.priority) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">负责人</div>
<div class="lightTip">{{ dataForm.workers }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">关联产线</div>
<div class="lightTip">
<span v-for="(item, index) in dataForm.productLineNames" :key="index" style="margin-right: 10px">{{ item }}</span>
</div>
</el-col>
<el-col :span="3">
<div class="blodTip">物料计算方式</div>
<div class="lightTip">{{ dataForm.materialMethod === 1 ? '产品基础' : dataForm.materialMethod === 2 ? '工艺扩展' : '' }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">关联工艺</div>
<div class="lightTip">{{ dataForm.processFlowName }}</div>
</el-col>
</el-row>
</div>
</div>
<small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
生产信息
</small-title>
<div class="formContent">
<el-row :gutter="20">
<el-col :span="8">工单创建时间:{{ parseTime(dataForm.createTime) }}</el-col>
<el-col :span="8">计划开始时间:{{ parseTime(dataForm.planStartTime) }}</el-col>
<el-col :span="8">计划完成时间:{{ parseTime(dataForm.planFinishTime) }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">预计结束时间:{{ parseTime(dataForm.computeFinishTime) }}</el-col>
<el-col :span="8">实际开始时间:{{ parseTime(dataForm.startProduceTime) }}</el-col>
<el-col :span="8">实际完成时间:{{ parseTime(dataForm.finishProduceTime) }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">工单状态:{{ fitlerS(dataForm.status) }}</el-col>
<el-col :span="8">实际投入数量:{{ dataForm.assignQuantity }}</el-col>
<el-col :span="8">实际生产数量:{{ dataForm.actualQuantity }}</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="8">废片数量:{{ dataForm.nokQuantity }}</el-col>
<el-col :span="8">检测瑕疵数:{{ }}</el-col>
</el-row>
<div class="card">
<!-- <small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
生产信息
</small-title> -->
<div class="boxTitle">
<span class="blueTitle"></span>
<span>生产信息</span>
</div>
<div class="formContent">
<el-row :gutter="20">
<el-col :span="3">
<div class="blodTip">工单创建时间</div>
<div class="lightTip">{{ parseTime(dataForm.createTime) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">计划开始时间</div>
<div class="lightTip">{{ parseTime(dataForm.planStartTime) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">计划完成时间</div>
<div class="lightTip">{{ parseTime(dataForm.planFinishTime) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">预计结束时间</div>
<div class="lightTip">{{ parseTime(dataForm.computeFinishTime) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">实际开始时间</div>
<div class="lightTip">{{ parseTime(dataForm.startProduceTime) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">实际完成时间</div>
<div class="lightTip">{{ parseTime(dataForm.finishProduceTime) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">工单状态</div>
<div class="lightTip">{{ fitlerS(dataForm.status) }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">实际投入数量</div>
<div class="lightTip">{{ dataForm.assignQuantity }}</div>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="3">
<div class="blodTip">实际生产数量</div>
<div class="lightTip">{{ dataForm.actualQuantity }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">废片数量</div>
<div class="lightTip">{{ dataForm.nokQuantity }}</div>
</el-col>
<el-col :span="3">
<div class="blodTip">检测瑕疵数</div>
<div class="lightTip">{{ }}</div>
</el-col>
</el-row>
</div>
</div>
<div class="attr-list">
<small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
订单相关信息
</small-title>
<div class="card" style="padding-bottom: 16px; margin-bottom: 10px">
<div class="boxTitle">
<span class="blueTitle"></span>
<span>订单相关信息</span>
</div>
<base-table
:table-props="tableProps"
:page="listQuery.pageNo"
@ -114,12 +181,11 @@
@pagination="getList" /> -->
</div>
<div class="attr-list">
<small-title
style="margin: 16px 0; padding-left: 8px"
:no-padding="true">
预计用料信息
</small-title>
<div class="card" style="padding-bottom: 16px;">
<div class="boxTitle">
<span class="blueTitle"></span>
<span>预计用料信息</span>
</div>
<base-table
:table-props="tableProps1"
:page="listQuery1.pageNo"
@ -228,7 +294,8 @@ export default {
visible: false,
isdetail: false,
workOrderButton: [],
processFlowList: []
processFlowList: [],
// tableH: this.tableHeight(510) / 2
};
},
created() {
@ -391,59 +458,12 @@ export default {
};
</script>
<style scoped>
.drawer >>> .el-drawer {
border-radius: 8px 0 0 8px;
display: flex;
flex-direction: column;
}
.drawer >>> .el-form-item__label {
padding: 0;
}
.drawer >>> .el-drawer__header {
margin: 0;
padding: 32px 32px 24px;
border-bottom: 1px solid #dcdfe6;
}
.drawer >>> .el-drawer__body {
flex: 1;
height: 1px;
display: flex;
flex-direction: column;
}
.drawer >>> .content {
padding: 10px 24px;
flex: 1;
display: flex;
flex-direction: column;
/* height: 100%; */
}
.drawer >>> .visual-part {
flex: 1 auto;
max-height: 76vh;
overflow: hidden;
overflow-y: scroll;
padding-right: 10px; /* 调整滚动条样式 */
}
.drawer >>> .el-form,
.drawer >>> .attr-list {
padding: 0 16px;
}
.drawer-body__footer {
display: flex;
justify-content: flex-end;
padding: 18px;
}
.formContent {
font-size: 16px;
line-height: 1.5;
margin-bottom: 10px;
width: 100%;
padding: 0 14px;
}
.action_btn {
float: right;
@ -453,4 +473,43 @@ export default {
.add {
color: #0b58ff;
}
.blodTip {
height: 16px;
font-size: 14px;
font-weight: 600;
color: rgba(0,0,0,0.85);
margin-bottom: 8px;
}
.lightTip {
height: 16px;
font-size: 14px;
font-weight: 400;
color: rgba(102,102,102,0.75);
margin-bottom: 12px;
}
.container {
background-color: rgb(242, 244, 249);
}
.card {
padding: 16px 16px 0 16px;
background-color: #fff;
border-radius: 9px;
}
.boxTitle {
display: inline-block;
font-size: 16px;
font-weight: 400;
color: #000000;
margin:0 10px 20px 0;
}
.blueTitle {
content: '';
display: inline-block;
width: 4px;
height: 18px;
background-color: #0B58FF;
border-radius: 1px;
margin-right: 8px;
vertical-align: bottom;
}
</style>

View File

@ -44,6 +44,7 @@ import { Message } from 'element-ui';
import LocalDataManager from './utils/local-data-manager';
// import response from './response';
import moment from 'moment';
import { parseTime } from '@/utils/ruoyi'
export default {
name: 'EquipmentFullParams',
@ -51,9 +52,9 @@ export default {
props: {},
data() {
const now = new Date();
const [y, m, d] = [now.getFullYear(), now.getMonth(), now.getDate()];
const today = new Date(y, m, d, 0, 0, 0, 0).getTime();
const aWeekAgo = today - 3600 * 1000 * 24 * 7;
// const [y, m, d] = [now.getFullYear(), now.getMonth(), now.getDate()];
const today = new Date().getTime();
const tenminAgo = today - (10 * 60 * 1000);
return {
searchBarFormConfig: [
{
@ -73,7 +74,7 @@ export default {
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange', // datetimerange
dateType: 'datetimerange', // datetimerange
format: 'yyyy-MM-dd HH:mm:ss',
// valueFormat: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'timestamp',
@ -94,13 +95,19 @@ export default {
],
queryParams: {
id: null,
time: [new Date(aWeekAgo), new Date(today)],
time: [tenminAgo, today],
},
tableList: [
// {
// key: 'base-table__key__1',
// tableProps: [],
// list: [],
// tableProps: [{
// prop: 'name',
// label: 'name'
// }],
// dataManager: {dataList: [{name: '1'}]},
// list: [{
// name: '11'
// }],
// pageNo: 1,
// pageSize: 3,
// total: 0,
@ -122,6 +129,11 @@ export default {
'defaultSelect',
to.params.equipmentCode
);
vm.$set(
vm.searchBarFormConfig[2],
'defaultSelect',
vm.queryParams.time
);
vm.handleQuery();
});
} else {
@ -268,11 +280,17 @@ export default {
async handleSearchBarBtnClick({ btnName, timeVal }) {
if (timeVal && timeVal.length > 0) {
this.queryParams.time = timeVal;
if (timeVal[1] - timeVal[0] <= 10 * 60 * 1000) {
this.queryParams.time = timeVal;
await this.handleQuery();
} else {
this.$message.warning('时间范围最大一小时限制!')
}
} else {
this.queryParams.time = [];
this.$message.warning('时间段必选!')
}
await this.handleQuery();
},
handleEmitFun(table, val) {
@ -295,9 +313,12 @@ export default {
}
.tables {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 18px;
/* display: grid; */
/* grid-template-columns: 1fr 1fr; */
/* gap: 18px; */
display: flex;
flex-direction: column;
width: 100%;
}
.tables >>> .baseTable {
@ -306,5 +327,6 @@ export default {
.custom-table {
overflow-x: hidden;
margin-bottom: 10px;
}
</style>