Compare commits

..

No commits in common. "0bb434bc2228139ce7305520333644b3f5c17e25" and "d65f5f9bcac48eac7da77c3e071b8d68bbbcf3fa" have entirely different histories.

3 changed files with 138 additions and 219 deletions

View File

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

View File

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

View File

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