Merge remote-tracking branch 'origin/master'

yangwl
mengjiao 4 months ago
commit 0a66a33483

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

@ -138,6 +138,18 @@ export const constantRoutes = [
component: () => import("@/views/kanban/Packagingline/index2"),
hidden: true,
},
// 烘房状态监控看板
{
path: "/kanban/exceptionnew",
component: () => import("@/views/kanban/exceptionnew/index"),
hidden: true,
},
// 烘房状态监控看板
{
path: "/kanban/Dryingprocess",
component: () => import("@/views/kanban/Dryingprocess/index"),
hidden: true,
},
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -9,6 +9,14 @@
@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="planCode">
<el-input
v-model="queryParams.planCode"
@ -17,10 +25,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工单号" prop="orderCode">
<el-form-item label="计划名称" prop="planName">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入工单号"
v-model="queryParams.planName"
placeholder="请输入计划名称"
clearable
@keyup.enter.native="handleQuery"
/>
@ -43,16 +51,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="循环周期" prop="planLoop">
<el-select v-model="queryParams.planLoopType" placeholder="请选择循环周期" clearable>
<el-option
v-for="dict in dict.type.device_loop_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="false" label="循环周期" prop="planLoop">
<el-input
v-model="queryParams.planLoop"
@ -101,7 +100,7 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备名称" prop="equipmentCode">
<el-form-item label="设备名称" prop="equipmentName">
<el-input
v-model="queryParams.equipmentName"
placeholder="请输入设备名称"
@ -220,6 +219,16 @@
value-format="yyyy-MM-dd"
placeholder="请选择更新时间">
</el-date-picker>
</el-form-item>
<el-form-item label="循环周期" prop="planLoopType">
<el-select v-model="queryParams.planLoopType" placeholder="请选择循环周期" clearable>
<el-option
v-for="dict in dict.type.device_loop_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="循环开始时间" prop="planLoopStart">
<el-date-picker
@ -318,7 +327,7 @@
<el-table-column v-if="false" label="主键" align="center" prop="orderId" />
<el-table-column v-if="false" label="计划id" align="center" prop="planId" />
<el-table-column width="150" label="计划编码" align="center" prop="planCode" />
<el-table-column width="150" label="计划名称" align="center" prop="planName" />
<el-table-column width="200" label="计划名称" align="center" prop="planName" />
<el-table-column v-if="false" label="计划类型" align="center" prop="planType" />
<el-table-column width="150" label="点检单号" align="center" prop="orderCode" fixed>
<template slot-scope="scope">
@ -331,7 +340,10 @@
</el-table-column>
<el-table-column label="车间编码" align="center" prop="planWorkshop" />
<el-table-column width="150" label="车间" align="center" prop="workCenterName"/>
<el-table-column width="100" label="设备编码" align="center" prop="equipmentCode" />
<el-table-column width="200" label="设备名称" align="center" prop="equipmentName" />
<el-table-column width="150" label="点检时间" align="center" prop="orderStart"/>
<el-table-column label="点检人" align="center" prop="planPerson" />
<el-table-column v-if="false" label="产线" align="center" prop="planProdLine" />
<el-table-column label="循环周期" align="center" prop="planLoop" />
<el-table-column width="120" label="循环周期类型" align="center" prop="planLoopType" >
@ -359,15 +371,12 @@
<span>{{ parseTime(scope.row.orderEnd, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column width="100" label="设备编码" align="center" prop="equipmentCode" />
<el-table-column width="200" label="设备名称" align="center" prop="equipmentName" />
<el-table-column label="工单状态" align="center" prop="orderStatus" >
<template slot-scope="scope">
<dict-tag :options="dict.type.device_order_status" :value="scope.row.orderStatus"/>
</template>
</el-table-column>
<el-table-column v-if="false" label="工单费用" align="center" prop="orderCost" />
<el-table-column label="点检人" align="center" prop="planPerson" />
<el-table-column v-if="false" label="工单用时" align="center" prop="orderCostTime" />
<el-table-column v-if="false" label="签字" align="center" prop="orderSignPerson" />
<el-table-column v-if="false" label="工厂" align="center" prop="factoryCode" />
@ -624,6 +633,7 @@ export default {
pageSize: 10,
planId: null,
planCode: null,
planName: null,
planType: "spotInspection",
orderCode: null,
planWorkshop: null,

File diff suppressed because it is too large Load Diff

@ -306,6 +306,11 @@
<el-table-column v-if="false" label="主键" align="center" prop="planId"/>
<el-table-column width="150" label="计划编码" align="center" prop="planCode" fixed/>
<el-table-column width="150" label="计划名称" align="center" prop="planName"/>
<el-table-column width="150" label="生成规则" align="center" prop="calculationRule">
<template slot-scope="scope">
{{ scope.row.calculationRule == "0" ? "按照固定周期" : scope.row.one == "1" ? "按照上次保养时间" : "单次" }}
</template>
</el-table-column>
<el-table-column label="车间编码" align="center" prop="planWorkshop"/>
<el-table-column width="150" label="车间" align="center" prop="workCenterName"/>
<el-table-column v-if="false" label="产线" align="center" prop="planProdLine"/>
@ -468,6 +473,7 @@
<el-date-picker
v-model="form.planLoopStart"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
@ -1461,7 +1467,7 @@ export default {
// 线
getGroupLine().then(response => {
this.groupLineList = response.data;
this.equipmentQuery.groupLine = response.data[0].equipmentCode;
// this.equipmentQuery.groupLine = response.data[0].equipmentCode;
this.getEquList();
})
@ -1696,6 +1702,10 @@ export default {
return
}
}
if(this.form.calculationRule == "2"){
this.form.planTimeArray = null;
this.form.planLoopEnd = this.form.planLoopStart;
}
this.planLoading = true;
if (this.form.planId != null) {
this.form.personList = this.selectPersonList.map(item => {

@ -0,0 +1,739 @@
<template>
<v-scale-screen width="1920" height="1080" :fullScreen="false">
<div class="app-container home" style="">
<div class="head">
<div class="head-content">
<div class="title">烘房生产监控看板</div>
</div>
</div>
<div class="content">
<div class="itemtop">
<div class="left">
<div class="box">
<div class="name name1">当天烘房情况</div>
</div>
<div class="cards">
<div
class="card-item"
:class="[[index + 1] % 7 == 0 ? 'isactive' : 'active1']"
>
<div class="card-header">
<span class="card-header-left"
>生产总数:<span class="color1">80</span></span
>
</div>
<div
class="card-box"
v-for="(card, index) in dataPropceshidata"
:key="index"
></div>
</div>
</div>
</div>
<div class="left left1">
<div class="cards">
<div
class="card-item card-item1"
:class="[[index + 1] % 7 == 0 ? 'isactive' : 'active1']"
>
<div class="card-header">
<span class="card-header-left">烘房</span>
</div>
<div
class="card-box"
v-for="(card, index) in dataPropceshidata"
:key="index"
></div>
</div>
</div>
</div>
<div class="left">
<div class="box">
<div class="name name1">当天质量情况</div>
</div>
<div class="cards">
<div
class="card-item"
:class="[[index + 1] % 7 == 0 ? 'isactive' : 'active1']"
>
<div class="card-header">
<span class="card-header-left"
>车不合格异常数量: <span class="color2">04</span> </span
>
</div>
<div class="card-box">
<div class="list1">
<div class="listitem1">烘房</div>
<div class="listitem1">产量</div>
<div class="listitem1">标准产能</div>
</div>
</div>
<div
class="card-box card-box1"
>
<div class="list" v-for="(card, index) in dataPropceshidata"
:key="index">
<div class="listitem1">烘房</div>
<div class="listitem1">产量</div>
<div class="listitem1">标准产能</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="itembottom">
<div class="left"></div>
</div>
</div>
<!-- <div class="item"></div> -->
<!-- <div class="item"></div> -->
</div>
</v-scale-screen>
</template>
<script>
import {
getBoardFactory,
getMesBoardEquProductionToday,
getBoardShifts,
getRepairWorkOrder,
getEquipmentInfo,
getRepairQuantity,
equipmentIntactRate,
equipmentStability,
getDeviceRefreshTime,
getdictlist,
} from "@/api/kanban/equipment";
import { dryRoomDataCarousel } from "@/api/kanban/dryingroom";
import * as echarts from "echarts";
import moment from "moment";
// import Echarts3D from "./echarts3d.vue";
// import Echarts3D2 from "./echarts3d2.vue";
export default {
name: "Index",
components: {},
data() {
return {
gettimedata: "",
selectxt: null,
selectxtclasses: null,
getLineList: [],
classesList: [],
number1: 0,
number2: 0,
number3: 0,
number4: 0,
nameList: [
"成型机一",
"成型机二",
"成型机三",
"成型机四",
"成型机五",
"成型机六",
"成型机五",
"成型机六",
],
valueList: [1639, 1422, 1306, 1131, 1040, 732, 1040, 732],
optionDatalist1: [],
optionDatalist2: [],
optionDatalist3: [],
optionDatalist4: [],
colorlist: ["#005aff", "#f8b551"],
datetime: null,
time1: null,
getlist: [],
repairlist: [],
equipmentlist: [],
equipmentrepairlist: [],
equipmentstabilizelist: [],
equipmentinfo: [],
RefreshTime: null,
dictlist: [],
StartArray: [],
dataPropceshidata: [{}, {}, {}, {}, {}, {}],
dataPropdata: [],
cards: {
data1: [],
data2: [],
},
cardss: [],
};
},
created() {},
destroyed() {
clearInterval(this.time1);
this.time1 = null;
},
mounted() {
// this.datetime = moment().subtract(2, "day").format("yyyy-MM-DD");
//console.log('zhuanhuahou',this.dateRangeone)
const { createData } = this;
createData();
this.gettime();
},
methods: {
back() {
this.$router.push({ path: "/index" });
},
getTagText(value) {
//
if (value === "0") {
return "无车";
} else if (value === "1") {
return "有车";
}
},
getTextColor(value) {
if (value === "0") {
return "#26fcd8";
} else if (value === "1") {
return "#ea6027";
}
},
getTagModel(value) {
//
if (value === "0") {
return "手动";
} else if (value === "1") {
return "自动";
}
},
gettime() {
this.gettimedata = moment().format("YYYY-MM-DD HH:mm:ss ");
setInterval(() => {
this.gettimedata = moment().format("YYYY-MM-DD HH:mm:ss ");
}, 1000);
},
selectline() {
const _this = this;
this.optionDatalist1 = [];
this.optionDatalist2 = [];
this.optionDatalist3 = [];
this.optionDatalist4 = [];
},
createData() {
this.cards.data1 = new Array(8).fill(0).map((foo, i) => ({
i: i + 1,
}));
this.cards.data2 = new Array(8).fill(0).map((foo, i) => ({
i: i + 9,
}));
this.cards.data3 = new Array(5).fill(0).map((foo, i) => ({
i: i === 0 ? 17 : i === 1 ? 18 : i === 2 ? 61 : i === 3 ? 62 : 63,
}));
// console.log(this.cards.data1)
dryRoomDataCarousel({ factory: 999 }).then((response) => {
if (response.data) {
this.dataPropdata = response.data.dryingroomList;
// console.log(response);
this.cards.data1 = this.cards.data1.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
this.cards.data2 = this.cards.data2.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
this.cards.data3 = this.cards.data3.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
this.cardss = this.cardss.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
console.log(this.cardss, this.cards, "wwwwwwww", this.dataPropdata);
}
});
},
handleScroll(event) {
//
this.createData();
// if (event==0){
// const that = this;
//
// }
//
// console.log(scrollTop);
//
// ...
},
//
},
};
</script>
<style lang="scss" scoped>
.app-container {
padding: 0px 24px;
}
.home {
width: 100%;
background: url("../../../assets/images/bg1.jpg") no-repeat;
background-size: 100% 100%;
background-color: #050711;
.head {
width: 100%;
height: 74px;
position: relative;
.head-content {
height: 74px;
background-image: url("../../../assets/images/bg-head.png");
background-repeat: no-repeat;
background-size: 100% 100%;
text-align: center;
.title {
font-size: 42px;
font-weight: 400;
color: #ffffff;
}
}
.head-logo {
position: absolute;
left: 0px;
top: 1px;
img {
height: 38px;
// width: ;
}
}
.back {
position: absolute;
right: 0px;
top: 5px;
}
}
.content {
margin-top: 63px;
.itemtop {
display: flex;
justify-content: space-between;
align-items: center;
.left {
.box {
width: 525px;
height: 62px;
background: url("../../../assets/images/bg2.png") no-repeat;
background-size: 100% 100%;
padding: 0px 21px 0px 25px;
box-sizing: border-box;
display: flex;
align-items: center;
background-color: #1f3668;
.name {
min-width: 300px;
letter-spacing: 4px;
color: #ffffff;
font-size: 22px;
}
.number {
min-width: 120px;
height: 50px;
border: 2px solid #274583;
border-radius: 5px;
padding: 1px;
box-sizing: border-box;
.number1 {
text-align: center;
height: 100%;
line-height: 43px;
color: #ffa95b;
border-radius: 7px;
font-size: 32px;
letter-spacing: 3px;
background-color: #294584;
}
}
.unit {
color: #b7b9c1;
margin-left: 30px;
font-size: 24px;
}
}
.cards {
width: 525px;
.card-item {
width: 525px;
height: 387px;
background: url("../../../assets/images/bg3.png") no-repeat;
background-size: 100% 100%;
padding: 10px;
background-color: #192c56;
// display: flex;
// flex-direction: column;
}
.card-item1 {
width: 750px;
height: 450px;
background: url("../../../assets/images/bg3.png") no-repeat;
background-size: 100% 100%;
padding: 10px;
background-color: #0e1d3a;
// display: flex;
// flex-direction: column;
}
.card-header {
width: 450px;
height: 13%;
margin: auto;
align-items: center;
text-align: center;
color: #f6f3f9;
font-size: 26px;
margin-top: 10px;
.card-header-left {
display: inline-block;
min-width: 100px;
padding: 16px 26px;
letter-spacing: 8px;
background: linear-gradient(to right, #192c56, #11518f, #192c56);
.color1 {
color: #0195fd;
}
.color2 {
color: #fb0102;
}
}
}
.card-box {
margin-top: 35px;
position: relative;
.list1 {
background-color: #0d61aa;
color: #ffffff;
border-radius: 10px;
display: flex;
justify-content: space-around;
align-items: center;
font-size: 22px;
min-height: 60px;
}
.list1::before {
content: "";
position: absolute;
bottom: 40px;
left: 3%;
transform: translateX(-50%);
border-width: 10px;
border-style: solid;
border-color: transparent transparent #0496FD transparent;
transform: rotate(315deg);
}
.list {
background-color: #114881;
color: #46AFF7;
border-radius: 10px;
display: flex;
justify-content: space-around;
align-items: center;
font-size: 22px;
min-height: 60px;
margin-bottom: 5px;
}
.list::before {
content: "";
position: absolute;
bottom: 40px;
left: 3%;
transform: translateX(-50%);
border-width: 10px;
border-style: solid;
border-color: transparent transparent #0496FD transparent;
transform: rotate(315deg);
}
}
.card-box1{
margin-top: 5px;
}
.ring-charts {
height: 55%;
}
}
}
.left1 {
width: 750px;
}
}
.itembottom {
margin-top: 19px;
display: flex;
justify-content: space-around;
.left {
// width: 100%;
// justify-content: space-between;
// display: flex;
}
}
}
}
.titlebox {
width: 431px;
height: 38px;
background: url("../../../assets/images/bg-title.png") no-repeat;
background-size: 100% 100%;
// text-align: center;
font-size: 20px;
font-weight: bold;
color: #ffffff;
line-height: 38px;
letter-spacing: 2px;
text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
padding-left: 60px;
// .titlename{
// position: relative;
// left: 24px;
// }
}
.factory {
display: flex;
align-items: center;
// justify-content: space-around;
}
.selectborder {
background-color: transparent;
border-radius: 4px;
// border: 2px solid #27408c;
position: relative;
display: flex;
align-items: center;
justify-content: space-around;
width: 350px;
margin-left: 50px;
}
.selectborder1 {
background-color: transparent;
border-radius: 4px;
// border: 2px solid #27408c;
position: relative;
display: flex;
align-items: center;
justify-content: space-around;
width: 88px;
margin-left: 25px;
}
.selectborder select {
/*清除select的边框样式*/
border: none;
/*清除select聚焦时候的边框颜色*/
outline: none;
background-color: transparent;
/*将select的宽高等于div的宽高*/
width: 100%;
height: 50px;
/*隐藏select的下拉图标*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
font-size: 25px;
font-weight: 400;
color: #ffffff;
line-height: 42px;
}
.selectborder option {
/*清除select的边框样式*/
border: none;
/*清除select聚焦时候的边框颜色*/
outline: none;
background-color: transparent;
/*将select的宽高等于div的宽高*/
width: 100%;
height: 50px;
/*隐藏select的下拉图标*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding-left: 20px;
font-size: 25px;
font-weight: 500;
color: #3fa2ff;
border-radius: 0%;
}
.selectborder1 option {
/*清除select的边框样式*/
border: none;
/*清除select聚焦时候的边框颜色*/
outline: none;
background-color: transparent;
/*将select的宽高等于div的宽高*/
width: 200px;
height: 50px;
/*隐藏select的下拉图标*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding-left: 20px;
font-size: 25px;
font-weight: 500;
color: #3fa2ff;
border-radius: 0%;
}
.selectborder:after {
content: "";
width: 24px;
height: 24px;
background: url(../../../assets/images/xiala.png) no-repeat center;
/*通过定位将图标放在合适的位置*/
position: absolute;
right: 0px;
top: 25%;
/*给自定义的图标实现点击下来功能*/
pointer-events: none;
}
.selectborder1:after {
content: "";
width: 24px;
height: 24px;
background: url(../../../assets/images/xiala.png) no-repeat center;
/*通过定位将图标放在合适的位置*/
position: absolute;
right: 0px;
top: 25%;
/*给自定义的图标实现点击下来功能*/
pointer-events: none;
}
::v-deep .el-button--primary {
color: #ffffff;
background-color: #325e82;
border-color: #0a0f19;
}
.active1 {
background-color: #0d1b2f;
}
.active2 {
// background-color: #04060E;
}
::-webkit-scrollbar {
width: 3px;
height: 0px;
background-color: #0c0642;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 8px;
background-color: #07356a;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 8px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
background-color: #0091ff;
}
::v-deep .el-date-editor .el-range-input {
background-color: #142944;
color: #ffffff;
}
::v-deep .el-range-input::placeholder {
color: #ffffff; /* 设置 placeholder 文本的颜色 */
}
::v-deep .el-range-separator {
color: #ffffff; /* 设置 placeholder 文本的颜色 */
}
::v-deep .el-range-editor--medium .el-range-separator {
line-height: 35px;
}
::v-deep .el-input__icon .el-range__icon .el-icon-date {
color: #ffffff; /* 设置 placeholder 文本的颜色 */
}
.fleft {
float: left;
}
.fright {
float: right;
}
.clearfix::after {
content: "";
display: block;
clear: both;
}
#cards .isactive {
margin-right: 0px;
}
</style>

@ -0,0 +1,824 @@
<template>
<v-scale-screen width="1920" height="1080" :fullScreen="false">
<div class="app-container home" style="">
<div class="head">
<div class="head-content">
<div class="title">烘房状态监控看板</div>
</div>
</div>
<div class="content">
<div class="itemtop">
<div class="left">
<!-- <div class="box">
<div class="name name1">烘房运行数量:</div>
<div class="number">
<div class="number1">00</div>
</div>
<div class="unit"></div>
</div>
<div class="box">
<div class="name">烘房自动模式数量:</div>
<div class="number">
<div class="number1">00</div>
</div>
<div class="unit"></div>
</div> -->
<div class="box" :key="item.title" v-for="item in digitalFlopData">
<div class="name">{{ item.title }}:</div>
<div class="number">
<div class="number1">{{ item.number.number }}</div>
</div>
<div class="unit">{{ item.unit }}</div>
</div>
</div>
</div>
<div class="itembottom">
<div class="left">
<div id="cards">
<div
class="card-item fleft clearfix"
v-for="(card, index) in dataPropdata"
:key="index"
:class="[[index + 1] % 7 == 0 ? 'isactive' : 'active1']"
>
<div class="card-header">
<span class="card-header-left">烘房{{ card.i }}</span>
</div>
<div class="card-box"></div>
<div class="card-footer">
<div class="card-footer-item">
<div class="footer-detail">
<span
:style="{
fontSize: '22px',
fontWeight: 'bold',
color: '#FDA45D',
textAlign: 'right',
}"
>
{{ getTagModel(card.status) }}
</span>
</div>
<div class="footer-title">烘房模式</div>
</div>
<div class="card-footer-item">
<div class="footer-detail">
<span
:style="{
fontSize: '22px',
fontWeight: 'bold',
color: '#93FE66',
textAlign: 'right',
}"
>
{{ getTagText(card.dollyNumber) }}
</span>
</div>
<div class="footer-title">门前数量</div>
</div>
</div>
<div class="card-footer">
<div class="card-footer-item">
<div class="footer-detail">
<span
style="
font-size: 22px;
font-weight: bold;
color: #fda45d;
text-align: right;
"
>{{ card.temperature }}
<span
style="
font-weight: normal;
font-size: 18px;
color: #ffffff;
"
></span
></span
>
</div>
<div class="footer-title">烘房温度</div>
</div>
<div class="card-footer-item">
<div class="footer-detail">
<span
style="
font-size: 22px;
font-weight: bold;
color: #93fe66;
text-align: right;
"
>{{ card.waitmin
}}<span
style="
font-weight: normal;
font-size: 18px;
color: #ffffff;
"
>min</span
></span
>
</div>
<div class="footer-title">保持时长</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- <div class="item"></div> -->
<!-- <div class="item"></div> -->
</div>
</v-scale-screen>
</template>
<script>
import {
dryRoomDataCarousel,
getDryingRoomList,
} from "@/api/kanban/dryingroom";
import * as echarts from "echarts";
import moment from "moment";
// import Echarts3D from "./echarts3d.vue";
// import Echarts3D2 from "./echarts3d2.vue";
export default {
name: "Index",
components: {},
data() {
return {
gettimedata: "",
selectxt: null,
selectxtclasses: null,
getLineList: [],
classesList: [],
number1: 0,
number2: 0,
number3: 0,
number4: 0,
nameList: [
"成型机一",
"成型机二",
"成型机三",
"成型机四",
"成型机五",
"成型机六",
"成型机五",
"成型机六",
],
valueList: [1639, 1422, 1306, 1131, 1040, 732, 1040, 732],
optionDatalist1: [],
optionDatalist2: [],
optionDatalist3: [],
optionDatalist4: [],
colorlist: ["#005aff", "#f8b551"],
datetime: null,
time1: null,
time2: null,
getlist: [],
repairlist: [],
equipmentlist: [],
equipmentrepairlist: [],
equipmentstabilizelist: [],
equipmentinfo: [],
RefreshTime: null,
dictlist: [],
StartArray: [],
dataPropceshidata: [],
dataPropdata: [],
cards: {
data1: [],
data2: [],
},
cardss: [],
digitalFlopData: [],
dryingRoomList: [],
cxjZCNumber: 0,
};
},
created() {},
destroyed() {
clearInterval(this.time1);
this.time1 = null;
clearInterval(this.time2);
this.time2 = null;
},
mounted() {
// this.datetime = moment().subtract(2, "day").format("yyyy-MM-DD");
//console.log('zhuanhuahou',this.dateRangeone)
const { createData } = this;
createData();
this.createData1();
this.time2 = setInterval(() => {
this.createData1();
}, 5000);
this.gettime();
},
methods: {
back() {
this.$router.push({ path: "/index" });
},
getTagText(value) {
//
if (value === "0") {
return "无车";
} else if (value === "1") {
return "有车";
}
},
getTextColor(value) {
if (value === "0") {
return "#26fcd8";
} else if (value === "1") {
return "#ea6027";
}
},
getTagModel(value) {
//
if (value === "0") {
return "手动";
} else if (value === "1") {
return "自动";
}
},
gettime() {
this.gettimedata = moment().format("YYYY-MM-DD HH:mm:ss ");
this.time1 = setInterval(() => {
this.gettimedata = moment().format("YYYY-MM-DD HH:mm:ss ");
}, 1000);
},
selectline() {
const _this = this;
this.optionDatalist1 = [];
this.optionDatalist2 = [];
this.optionDatalist3 = [];
this.optionDatalist4 = [];
},
createData() {
this.cards.data1 = new Array(8).fill(0).map((foo, i) => ({
i: i + 1,
}));
this.cards.data2 = new Array(8).fill(0).map((foo, i) => ({
i: i + 9,
}));
this.cards.data3 = new Array(5).fill(0).map((foo, i) => ({
i: i === 0 ? 17 : i === 1 ? 18 : i === 2 ? 61 : i === 3 ? 62 : 63,
}));
// console.log(this.cards.data1)
dryRoomDataCarousel({ factory: 999 }).then((response) => {
if (response.data) {
this.dataPropdata = response.data.dryingroomList;
// console.log(response);
this.cards.data1 = this.cards.data1.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
this.cards.data2 = this.cards.data2.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
this.cards.data3 = this.cards.data3.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
this.cardss = this.cardss.map((card) => {
const matchingIndex = response.data.dryingroomList.find(
(index) => index.i === card.i
);
if (matchingIndex) {
return {
...card,
title: "烘房" + matchingIndex.i,
model: matchingIndex.status,
dollyNumber: matchingIndex.dollyNumber,
waitmin: matchingIndex.waitmin,
temperature: matchingIndex.temperature,
};
} else {
return card;
}
});
console.log(this.cardss, this.cards, "wwwwwwww", this.dataPropdata);
}
});
},
createData1() {
const that = this;
getDryingRoomList({
factory: 999,
}).then((response) => {
if (response.data) {
// console.log(response)
this.cxjZCNumber = response.data.cxzc;
this.cxjYCNumber = response.data.cxyc;
this.dryingRoomList = response.data.result;
this.digitalFlopData = [
{
title: "成型机运行",
number: {
number: this.cxjZCNumber,
content: "{nt}",
textAlign: "right",
style: {
fill: "#4d99fc",
fontWeight: "bold",
},
},
unit: "台",
},
{
title: "烘房运行(自动)",
number: {
number: response.data.hfauto,
content: "{nt}",
textAlign: "right",
style: {
fill: "#4d99fc",
fontWeight: "bold",
},
},
unit: "座",
},
{
title: "收坯机台运行",
number: {
number: response.data.spzc,
content: "{nt}",
textAlign: "right",
style: {
fill: "#4d99fc",
fontWeight: "bold",
},
},
unit: "台",
},
{
title: "成型缓存区数量",
number: {
number: response.data.hcnumber,
content: "{nt}",
textAlign: "right",
style: {
fill: "#4d99fc",
fontWeight: "bold",
},
},
unit: "个",
},
];
}
});
},
handleScroll(event) {
//
this.createData();
// if (event==0){
// const that = this;
//
// }
//
// console.log(scrollTop);
//
// ...
},
//
},
};
</script>
<style lang="scss" scoped>
.app-container {
padding: 0px 24px;
}
.home {
width: 100%;
background: url("../../../assets/images/bg1.jpg") no-repeat;
background-size: 100% 100%;
background-color: #050711;
.head {
width: 100%;
height: 74px;
position: relative;
.head-content {
height: 74px;
background-image: url("../../../assets/images/bg-head.png");
background-repeat: no-repeat;
background-size: 100% 100%;
text-align: center;
.title {
font-size: 42px;
font-weight: 400;
color: #ffffff;
}
}
.head-logo {
position: absolute;
left: 0px;
top: 1px;
img {
height: 38px;
// width: ;
}
}
.back {
position: absolute;
right: 0px;
top: 5px;
}
}
.content {
margin-top: 63px;
.itemtop {
display: flex;
justify-content: space-between;
align-items: center;
.left {
width: 100%;
justify-content: space-between;
display: flex;
.box {
width: 437px;
height: 92px;
background: url("../../../assets/images/bg2.png") no-repeat;
background-size: 100% 100%;
padding: 0px 21px 0px 25px;
box-sizing: border-box;
display: flex;
align-items: center;
.name {
min-width: 225px;
letter-spacing: 0px;
color: #ffffff;
font-size: 26px;
}
.name1 {
min-width: 220px;
letter-spacing: 25px;
}
.number {
min-width: 120px;
height: 50px;
border: 2px solid #274583;
border-radius: 5px;
padding: 1px;
box-sizing: border-box;
.number1 {
text-align: center;
height: 100%;
line-height: 43px;
color: #ffa95b;
border-radius: 7px;
font-size: 32px;
letter-spacing: 3px;
background-color: #294584;
}
}
.unit {
color: #b7b9c1;
margin-left: 20px;
font-size: 24px;
}
}
}
}
.itembottom {
margin-top: 19px;
display: flex;
justify-content: space-around;
.left {
// width: 100%;
// justify-content: space-between;
// display: flex;
}
}
}
}
.titlebox {
width: 431px;
height: 38px;
background: url("../../../assets/images/bg-title.png") no-repeat;
background-size: 100% 100%;
// text-align: center;
font-size: 20px;
font-weight: bold;
color: #ffffff;
line-height: 38px;
letter-spacing: 2px;
text-shadow: 0px 2px 4px rgba(0, 0, 0, 0.5);
padding-left: 60px;
// .titlename{
// position: relative;
// left: 24px;
// }
}
.factory {
display: flex;
align-items: center;
// justify-content: space-around;
}
.selectborder {
background-color: transparent;
border-radius: 4px;
// border: 2px solid #27408c;
position: relative;
display: flex;
align-items: center;
justify-content: space-around;
width: 350px;
margin-left: 50px;
}
.selectborder1 {
background-color: transparent;
border-radius: 4px;
// border: 2px solid #27408c;
position: relative;
display: flex;
align-items: center;
justify-content: space-around;
width: 88px;
margin-left: 25px;
}
.selectborder select {
/*清除select的边框样式*/
border: none;
/*清除select聚焦时候的边框颜色*/
outline: none;
background-color: transparent;
/*将select的宽高等于div的宽高*/
width: 100%;
height: 50px;
/*隐藏select的下拉图标*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
font-size: 25px;
font-weight: 400;
color: #ffffff;
line-height: 42px;
}
.selectborder option {
/*清除select的边框样式*/
border: none;
/*清除select聚焦时候的边框颜色*/
outline: none;
background-color: transparent;
/*将select的宽高等于div的宽高*/
width: 100%;
height: 50px;
/*隐藏select的下拉图标*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding-left: 20px;
font-size: 25px;
font-weight: 500;
color: #3fa2ff;
border-radius: 0%;
}
.selectborder1 option {
/*清除select的边框样式*/
border: none;
/*清除select聚焦时候的边框颜色*/
outline: none;
background-color: transparent;
/*将select的宽高等于div的宽高*/
width: 200px;
height: 50px;
/*隐藏select的下拉图标*/
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding-left: 20px;
font-size: 25px;
font-weight: 500;
color: #3fa2ff;
border-radius: 0%;
}
.selectborder:after {
content: "";
width: 24px;
height: 24px;
background: url(../../../assets/images/xiala.png) no-repeat center;
/*通过定位将图标放在合适的位置*/
position: absolute;
right: 0px;
top: 25%;
/*给自定义的图标实现点击下来功能*/
pointer-events: none;
}
.selectborder1:after {
content: "";
width: 24px;
height: 24px;
background: url(../../../assets/images/xiala.png) no-repeat center;
/*通过定位将图标放在合适的位置*/
position: absolute;
right: 0px;
top: 25%;
/*给自定义的图标实现点击下来功能*/
pointer-events: none;
}
::v-deep .el-button--primary {
color: #ffffff;
background-color: #325e82;
border-color: #0a0f19;
}
.active1 {
background-color: #0d1b2f;
}
.active2 {
// background-color: #04060E;
}
::-webkit-scrollbar {
width: 3px;
height: 0px;
background-color: #0c0642;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 8px;
background-color: #07356a;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 8px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
background-color: #0091ff;
}
#cards {
.card-item {
width: 254px;
height: 262px;
background: url("../../../assets/images/bg3.png") no-repeat;
background-size: 100% 100%;
padding: 10px;
margin-right: 15px;
margin-bottom: 20px;
// display: flex;
// flex-direction: column;
}
.card-header {
width: 180px;
height: 20%;
margin: auto;
align-items: center;
text-align: center;
color: #f6f3f9;
font-size: 24px;
margin-top: 10px;
.card-header-left {
display: inline-block;
min-width: 100px;
background-color: #0b3765;
box-shadow: 0px 3px 18px 12px #0b3765;
}
}
.ring-charts {
height: 55%;
}
.card-footer {
height: 25%;
display: flex;
align-items: center;
justify-content: space-around;
margin-top: 25px;
}
.card-footer-item {
box-sizing: border-box;
width: 40%;
text-align: center;
.footer-title {
font-size: 22px;
margin-bottom: 5px;
color: #0593fd;
}
.footer-detail {
min-height: 46px;
text-align: center;
font-size: 20px;
color: #192c57;
font-size: 18px;
padding: 10px 10px 10px 10px;
box-sizing: border-box;
width: 100%;
background-color: #192c57;
border-radius: 3px;
.dv-digital-flop {
margin-right: 5px;
}
}
}
}
::v-deep .el-date-editor .el-range-input {
background-color: #142944;
color: #ffffff;
}
::v-deep .el-range-input::placeholder {
color: #ffffff; /* 设置 placeholder 文本的颜色 */
}
::v-deep .el-range-separator {
color: #ffffff; /* 设置 placeholder 文本的颜色 */
}
::v-deep .el-range-editor--medium .el-range-separator {
line-height: 35px;
}
::v-deep .el-input__icon .el-range__icon .el-icon-date {
color: #ffffff; /* 设置 placeholder 文本的颜色 */
}
.fleft {
float: left;
}
.fright {
float: right;
}
.clearfix::after {
content: "";
display: block;
clear: both;
}
#cards .isactive {
margin-right: 0px;
}
</style>

@ -11,14 +11,24 @@
<el-form-item label="生产时间" prop="productDateArray">
<el-date-picker
v-model="queryParams.productDateArray"
format="yyyy-MM-dd"
type="daterange"
format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item label="班次" prop="shiftId">
<el-select v-model="queryParams.shiftId" default-first-option clearable>
<el-option
v-for="item in shiftList"
:key="item.shiftId"
:label="item.shiftDesc"
:value="item.shiftId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="产品编号" prop="productCode">
<el-input
v-model="queryParams.productCode"
@ -111,7 +121,7 @@ export default {
machineProList: [],
//
products: [],
shiftList: [],
//
title: "",
//
@ -125,6 +135,7 @@ export default {
workorderName: null,
parentOrder: null,
orderId: null,
shiftId: null,
orderCode: null,
productId: null,
productCode: null,
@ -140,7 +151,9 @@ export default {
created() {
this.getDate();
this.getList();
getProShifts().then(response => {
this.shiftList = response.data
})
},
methods: {
/**获取默认查询时间段**/
@ -163,10 +176,10 @@ export default {
if (this.queryParams.productDateArray != null) {
this.queryParams.productDateStart = moment(
this.queryParams.productDateArray[0]
).format("YYYY-MM-DD");
).format("YYYY-MM-DD HH:mm:ss");
this.queryParams.productDateEnd = moment(
this.queryParams.productDateArray[1]
).format("YYYY-MM-DD");
).format("YYYY-MM-DD HH:mm:ss");
}
this.loading = true;

@ -377,6 +377,7 @@
@change="handleEdit(scope.$index, scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column label="报工单编号" align="center" prop="reportCode" width="120" />
<el-table-column label="创建时间" align="center" prop="createTime" width="150" />
</el-table>
@ -434,6 +435,7 @@
</el-select>
</template>
</el-table-column>
<el-table-column label="报工单编号" align="center" prop="reportCode" width="120" />
<el-table-column label="创建时间" align="center" prop="createTime" width="150" />
<el-table-column fixed="right" label="操作" width="90">
<template slot-scope="scope">
@ -995,6 +997,8 @@ export default {
updateBy: null,
endReport: "0"
};
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.resetForm("form");
this.libTabs = [];
this.libConsumeTabs = [];
@ -1264,6 +1268,8 @@ export default {
submitReportPS(this.reportRows).then((response) => {
this.$modal.msgSuccess("报工信息修改成功");
this.openReport = false;
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
this.getList();
});
},
@ -1309,9 +1315,10 @@ export default {
this.openConsume = true;
this.titleConsume = "工单报工物料损耗详情";
this.queryParams.workorderCode = "";
this.queryParams.machineCode = "";
});
this.queryParams.workorderCode = sr.workorderCode;
//this.queryParams.workorderCode = sr.workorderCode;
//BOM
//this.queryParams.parentOrder = '0';
//getBomList(this.queryParams).then(response => {

@ -3,10 +3,9 @@
v-if="showFlag"
:visible.sync="showFlag"
:modal= false
width="1000px"
width="1100px"
>
<el-row :gutter="20">
<el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryProjectForm" size="small" :inline="true" v-show="showSearch" label-width="105px" align="left">
<el-form-item label="检测项目名称" prop="ruleName">
@ -18,16 +17,13 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="检测方案名称" prop="projectType">
<el-select v-model="queryParams.projectType" filterable clearable placeholder="请选择检测方案">
<el-option
v-for="(item,index) in projectTypeOptions"
:key="index"
:label="item.projectTypeName"
:value="item.projectTypeCode">
</el-option>
</el-select>
<el-form-item v-show="false" label="检测项目名称" prop="projectType">
<el-input
v-model="queryParams.projectType"
placeholder="检测方案代码"
clearable
style="width: 240px"
/>
</el-form-item>
<el-form-item>
@ -35,49 +31,65 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection">
</el-table-column>
<!-- 序号 -->
<el-table-column label="检测项目Id" align="left" key="id" prop="id" v-if="false" />
<el-table-column label="检测项目编号" align="left" key="orderNum" prop="orderNum" width="110"/>
<el-table-column label="检测项目名称" align="left" key="ruleName" prop="ruleName" width="250" :show-overflow-tooltip="true" />
<el-table-column label="规则属性" align="left" prop="propertyCode">
<template slot-scope="scope">
<dict-tag
:options="dict.type.qc_rule_prop"
:value="scope.row.propertyCode"
/>
</template>
</el-table-column>
<el-table-column label="检测标准" align="left" prop="checkStandard" width="250" :show-overflow-tooltip="true"/>
<el-table-column label="上差值" align="center" prop="upperDiff" width="100">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.upperDiff" @change="handleEdit(scope.$index,scope.row)"
:disabled='scope.row.propertyCode=="0"'></el-input>
</template>
</el-table-column>
<el-table-column label="下差值" align="center" prop="downDiff" width="100">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.downDiff" @change="handleEdit(scope.$index,scope.row)"
:disabled='scope.row.propertyCode=="0"'
></el-input>
</template>
</el-table-column>
<el-table-column label="测量单位" align="left" prop="unitCode" width="90"/>
<el-table-column label="抽样方案" align="left" prop="samplePlan" width="100" :show-overflow-tooltip="true"/>
<el-table-column label="合格判定" align="left" prop="judge" width="100" />
<el-table-column label="缺陷等级" align="left" prop="defectLevel" width="90"/>
<el-table-column label="检验方式" align="left" prop="checkMode" width="90" :show-overflow-tooltip="true"/>
<el-table-column label="检验工具" align="left" prop="checkTool" width="90"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<el-row :gutter="20">
<el-col :span="5" :xs="24">
<el-tabs v-model="editTabsValue" @tab-click="handleClick" :tab-position="'right'" style="height: 600px;">
<el-tab-pane
v-for="(item) in projectTypeOptions"
:key="item.projectTypeCode"
:label="item.projectTypeName"
:name="item.projectTypeCode"
>{{ item.projectTypeName }}</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span="19" :xs="24">
<el-table v-loading="loading" :data="itemList" @selection-change="handleBomSelectionChange" ref="myTable" >
<el-table-column width="50" align="center" type="selection">
</el-table-column>
<!-- 序号 -->
<el-table-column label="检测项目Id" align="left" key="id" prop="id" v-if="false" />
<el-table-column label="检测项目编号" align="left" key="orderNum" prop="orderNum" width="110"/>
<el-table-column label="检测项目名称" align="left" key="ruleName" prop="ruleName" width="250" :show-overflow-tooltip="true" />
<el-table-column label="规则属性" align="left" prop="propertyCode">
<template slot-scope="scope">
<dict-tag
:options="dict.type.qc_rule_prop"
:value="scope.row.propertyCode"
/>
</template>
</el-table-column>
<el-table-column label="检测标准" align="left" prop="checkStandard" width="250" :show-overflow-tooltip="true"/>
<el-table-column label="上差值" align="center" prop="upperDiff" width="100">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.upperDiff" @change="handleEdit(scope.$index,scope.row)"
:disabled='scope.row.propertyCode=="0"'></el-input>
</template>
</el-table-column>
<el-table-column label="下差值" align="center" prop="downDiff" width="100">
<template slot-scope="scope">
<el-input type="number" size="small" v-model="scope.row.downDiff" @change="handleEdit(scope.$index,scope.row)"
:disabled='scope.row.propertyCode=="0"'
></el-input>
</template>
</el-table-column>
<el-table-column label="测量单位" align="left" prop="unitCode" width="90"/>
<el-table-column label="抽样方案" align="left" prop="samplePlan" width="100" :show-overflow-tooltip="true"/>
<el-table-column label="合格判定" align="left" prop="judge" width="100" />
<el-table-column label="缺陷等级" align="left" prop="defectLevel" width="90"/>
<el-table-column label="检验方式" align="left" prop="checkMode" width="90" :show-overflow-tooltip="true"/>
<el-table-column label="检验工具" align="left" prop="checkTool" width="90"/>
<el-table-column label="检测项分类" align="center" prop="itemType" width="100" :formatter="itemTypeFormat" />
<el-table-column label="合格判定比例" align="center" prop="judgeRate" width="150"/>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-col>
</el-row>
</el-col>
</el-row>
<div slot="footer" class="dialog-footer">
@ -109,6 +121,8 @@ export default {
itemList: null,
ruleName: null,
projectType:null,
editTabsValue: '',
tabIndex: null,
//
bomCode: undefined,
defaultProps: {
@ -120,6 +134,8 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
ruleName: null,
projectType: null,
groupId:null,
materialCode:null,
typeCode:null
@ -132,10 +148,21 @@ export default {
},
methods: {
//
itemTypeFormat(row, column, cellValue) {
if (cellValue != null) {
if(cellValue=='1'){
return '包装';
}else if(cellValue=='0'){
return '内容物';
}
}
},
//
getProjectList() {
getProjectOptions(this.queryParams).then(response => {
this.projectTypeOptions = response;
this.tabIndex = response.length;
});
},
@ -166,13 +193,15 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryProjectForm");
this.queryParams.projectType = '';
this.editTabsValue = '';
this.handleQuery();
},
//
handleBomSelectionChange(selection) {
this.selectionRows = selection
},
handleBomSelectionChange(selection) {
this.selectionRows = selection
},
handleEdit(index, row) {
console.log('row:',index, row);
},
@ -187,6 +216,11 @@ export default {
this.ruleName = '';
this.projectType = '';
},
handleClick(tab,event) {
this.queryParams.projectType = tab.name;
this.getList();
}
}
};
</script>

@ -138,134 +138,106 @@
<h2>成品检验报告</h2>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="产品名称" prop="materialName">
<el-input v-model="form.materialName" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品编码" prop="materialCode">
<el-input v-model="form.materialCode" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="生产数量" prop="quality">
<el-input type="number" v-model="form.quality" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位" prop="unit" >
<el-input v-model="form.unit" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检验编号" prop="checkNo">
<el-input v-model="form.checkNo" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="生产批号" prop="incomeBatchNo">
<el-input v-model="form.incomeBatchNo" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="抽样地点" prop="checkLoc">
<el-input v-model="form.checkLoc" disabled/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检验依据" prop="standardNo">
<el-input v-model="form.standardNo" disabled/>
</el-form-item>
<el-descriptions title="" border :column="3" :contentStyle="content_style" :label-style="label_style">
<el-descriptions-item label="产品名称" class="my-description-item1">{{form.materialName}}</el-descriptions-item>
<el-descriptions-item label="生产数量" class="my-description-item2">{{form.quality}}</el-descriptions-item>
<el-descriptions-item label="检验编码" class="my-description-item3">{{form.checkNo}}</el-descriptions-item>
<el-descriptions-item label="产品编码" class="my-description-item1">{{form.materialCode}}</el-descriptions-item>
<el-descriptions-item label="抽样地点" class="my-description-item2">{{form.checkLoc}}</el-descriptions-item>
<el-descriptions-item label="报检日期" class="my-description-item3">{{form.createTime}}</el-descriptions-item>
<el-descriptions-item label="生产批号" class="my-description-item1">{{form.incomeBatchNo}}</el-descriptions-item>
<el-descriptions-item label="检验依据" class="my-description-item2">{{form.standardNo}}</el-descriptions-item>
<el-descriptions-item label="检验日期" class="my-description-item3">{{form.checkTime}}</el-descriptions-item>
</el-descriptions>
<el-row class="border-row">
<el-col :span="24">
包装检验项目
</el-col>
<el-col :span="24">
<!-- 检验项目明细 -->
<el-table v-loading="loading" :data="checkProjectList" border>
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="检验项目" align="center" prop="ruleName" width="100"/>
<el-table-column label="标准要求" align="center" prop="checkStandard"/>
<el-table-column label="抽检数" align="center" prop="samplePlan" width="60"/>
<!--<el-table-column label="单位" align="center" prop="unitCode" width="50"/>-->
<el-table-column label="实测结果及判定" align="center">
<el-table-column label="实测结果" align="center" prop="actualValue" width="120"/>
<el-table-column label="判定" align="center" prop="status" width="110"/>
</el-table-column>
<!--
<el-table-column label="不良类型" align="center" prop="defectCode" width="80">
<template slot-scope="scope">
<span v-if="scope.row.defectCode">{{ getCodeValue(scope.row.defectCode) }}</span>
</template>
</el-table-column>
<el-table-column label="不良数量" align="center" prop="defectQuality" width="50"/>
<el-table-column label="附件" align="center" prop="files" width="120">
<template slot-scope="scope">
<el-image v-for="(item,index) in scope.row.files" :key="index"
:src="item.fileAddress"
style="width: 100px; height: 100px"
:fit="fit" />
</template>
</el-table-column>
-->
</el-table>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="报检日期" prop="createTime">
<el-input v-model="form.checkTime" placeholder="请输入报检日期" disabled>
{{ parseTime(form.checkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检验日期" prop="checkTime">
<el-input v-model="form.checkTime" placeholder="请输入检验日期" disabled>
{{ parseTime(form.checkTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="产品提报人" prop="checkManName">
<el-input v-model="form.checkManName" placeholder="请输入OEM产品提报人" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row class="border-row">
<el-col :span="24">
内容物分析项目
</el-col>
<el-col :span="24">
<!-- 检验项目明细 -->
<el-table v-loading="loading" :data="checkProjectList" >
<el-table-column type="selection" width="50" align="center" />
<el-table v-loading="loading" :data="checkProjectList0" border>
<el-table-column label="序号" align="center" type="index" width="50"/>
<el-table-column label="检验项目" align="center" prop="ruleName" />
<el-table-column label="标准要求" align="center" prop="checkStandard" width="160"/>
<el-table-column label="抽检数" align="center" prop="sampleNum" width="60"/>
<el-table-column label="单位" align="center" prop="unitCode" width="50"/>
<el-table-column label="实测结果" align="center" prop="actualValue" width="160"/>
<el-table-column label="判定" align="center" prop="status" width="70">
<template slot-scope="scope">
<dict-tag :options="dict.type.check_result" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column label="不良类型" align="center" prop="defectCode" width="80">
<template slot-scope="scope">
<span v-if="scope.row.defectCode">{{ getCodeValue(scope.row.defectCode) }}</span>
</template>
</el-table-column>
<el-table-column label="不良数量" align="center" prop="defectQuality" width="50"/>
<el-table-column label="附件" align="center" prop="files" width="120">
<template slot-scope="scope">
<el-image v-for="(item,index) in scope.row.files" :key="index"
:src="item.fileAddress"
style="width: 100px; height: 100px"
:fit="fit" />
</template>
<el-table-column label="检验项目" align="center" prop="ruleName" width="100"/>
<el-table-column label="标准要求" align="center" prop="checkStandard"/>
<el-table-column label="抽检数" align="center" prop="samplePlan" width="60"/>
<el-table-column label="实测结果及判定" align="center">
<el-table-column label="实测结果" align="center" prop="actualValue" width="120"/>
<el-table-column label="判定" align="center" prop="status" width="110"/>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="综合检验结论" label-width="100px">
<el-col offset="6" span="6">
<el-checkbox disabled>合格</el-checkbox>
</el-col>
<el-col offset="3" span="6">
<el-checkbox disabled>不合格</el-checkbox>
</el-col>
</el-form-item>
</el-col>
</el-row>
<el-descriptions title="" border :column="1">
<el-descriptions-item label="综合检验结论">
<el-col offset="1" span="6">
<el-checkbox-group v-model="form.checkedValues">
<el-checkbox label="Y">合格</el-checkbox>
<el-checkbox label="N">不合格</el-checkbox>
</el-checkbox-group>
</el-col>
<el-col span="8">
判定合格打不合格打×
</el-col>
</el-descriptions-item>
</el-descriptions>
<!--
<el-row>
<el-col :span="20">
<el-form-item label="备注:" label-width="100px">
<el-input type="textarea" disabled/>
</el-form-item>
</el-col>
</el-row>
</el-row>-->
<el-row>
<el-col :span="20">
<el-col :span="10">
<el-form-item label="品检主管:" label-width="100px">
<el-input disabled/>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item label="品管员:" >
<el-input disabled/>
<el-col :span="10">
<el-form-item label="检验员:" >
{{form.checkManName}}
</el-form-item>
</el-col>
</el-row>
@ -358,13 +330,27 @@ export default {
factoryCode: null,
},
//
form: {},
form: {checkedValues:[]},
checkTypes:[],
//
rules: {
/* incomeBatchNo: [
{ required: true, message: "来料批次号不能为空", trigger: "blur" }
], */
},
content_style: {
'text-align': 'center',
'min-width': '200px',
'word-break': 'break-all'
},
label_style: {
'color': '#000',
'text-align': 'center',
'font-weight': '600',
'height': '40px',
'background-color': '#d6dbe1',
'min-width': '100px',
'word-break': 'keep-all'
}
};
},
@ -481,6 +467,9 @@ export default {
this.queryParams.recordId = recordId;
getProduct(recordId).then(response => {
this.form = response.data;
let checkedValues0 =[];
checkedValues0.push(response.data.checkResult)
this.form.checkedValues = ['Y'];
this.form.printable = 'printFrom'; //
this.form.ignore = ['no-print'];//
this.open = true;
@ -529,7 +518,18 @@ export default {
getCheckedProjectList(){
this.loading = true;
getCkeckProjectList(this.queryParams).then((response) => {
this.checkProjectList = response.rows;
const itemType1s=[];
const itemType0s=[];
response.rows.forEach(item=>{
if (item.itemType == '1') {
itemType1s.push(item);
}else if(item.itemType == '0'){
itemType0s.push(item);
}
})
this.checkProjectList = itemType1s;
this.checkProjectList0 = itemType0s;
this.total = response.total;
this.loading = false;
this.form.standardNo = this.checkProjectList[0].standardNo;
@ -576,4 +576,18 @@ export default {
margin-left: 15px;
height: 38px;
}
.my-description-item1 {
width: 280px; /* 或者你想要的任何宽度 */
}
.my-description-item2 {
width: 120px; /* 或者你想要的任何宽度 */
}
.my-description-item3 {
width: 80px; /* 或者你想要的任何宽度 */
}
.border-row {
border: 1px solid #d3dce6; /* 边框颜色可以根据需要自定义 */
text-align:center;
}
</style>

@ -120,6 +120,8 @@
</el-table-column>
<el-table-column label="抽样方案" align="center" prop="samplePlan" :show-overflow-tooltip="true" width="200"/>
<el-table-column label="合格判定" align="center" prop="judge" :show-overflow-tooltip="true" width="200"/>
<el-table-column label="检测项分类" align="center" prop="itemType" width="100" :formatter="itemTypeFormat" />
<el-table-column label="合格判定比例" align="center" prop="judgeRate" width="150"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button
@ -244,6 +246,21 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="检测项分类" prop="itemType">
<el-radio v-model="form.itemType" label="1"></el-radio>
<el-radio v-model="form.itemType" label="0"></el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<el-form-item label="合格判定比例" prop="judgeRate">
<el-input type='number' v-model="form.judgeRate" placeholder="合格判定比例" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
@ -365,6 +382,17 @@ export default {
this.getProjectTypeList();
},
methods: {
//
itemTypeFormat(row, column, cellValue) {
if (cellValue != null) {
if(cellValue=='1'){
return '包装';
}else if(cellValue=='0'){
return '内容物';
}
}
},
/** 查询检验项目维护列表 */
getList() {
this.loading = true;

@ -166,8 +166,8 @@
}}</el-button>
</template>
</el-table-column>
<el-table-column label="批次号" align="center" prop="incomeBatchNo" width="200" :show-overflow-tooltip="true"/>
<el-table-column label="订单号" align="center" prop="orderNo" width="120"/>
<!--<el-table-column label="批次号" align="center" prop="incomeBatchNo" width="200" :show-overflow-tooltip="true"/>-->
<el-table-column label="订单号" align="center" prop="orderNo" width="130"/>
<el-table-column label="物料号" align="center" prop="materialCode" width="170" />
<el-table-column label="物料名称" align="center" prop="materialName" width="250" :show-overflow-tooltip="true"/>
<el-table-column label="数量" align="center" prop="quality" />
@ -458,9 +458,6 @@ export default {
form: {},
//
rules: {
incomeBatchNo: [
{ required: true, message: "批次号不能为空", trigger: "blur" }
],
orderNo: [
{ required: true, message: "订单号不能为空", trigger: "blur" }
],

@ -189,7 +189,7 @@
label="设备编码"
align="center"
prop="equipmentCode"
width="150"
width="100"
fixed="left"
>
<template slot-scope="scope">
@ -205,7 +205,7 @@
label="设备名称"
align="center"
prop="equipmentName"
width="300"
width="200"
/>
<el-table-column
label="是否启用"
@ -315,7 +315,7 @@
width="100"
/>
<el-table-column
label="单台能力工时"
label="标准产能(时)"
align="center"
prop="unitWorkingHours"
width="100"
@ -566,7 +566,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单台能力工时" prop="unitWorkingHours">
<el-form-item label="标准产能(时)" prop="unitWorkingHours">
<el-input-number
:min="0"
:step="1"
@ -939,7 +939,7 @@
<el-descriptions-item label="工段">{{
form.workshopSection
}}</el-descriptions-item>
<el-descriptions-item label="单台能力工时">{{
<el-descriptions-item label="标准产能(时)">{{
form.unitWorkingHours
}}</el-descriptions-item>
<el-descriptions-item label="工时单价">{{
@ -951,9 +951,12 @@
<el-descriptions-item label="sap线体名称">{{
form.sapName
}}</el-descriptions-item>
<el-descriptions-item label="设备类别">{{
form.equipmentCategory
}}</el-descriptions-item>
<el-descriptions-item label="设备类别">
<dict-tag
:options="dict.type.equipment_category"
:value="form.equipmentCategory"
/>
</el-descriptions-item>
<el-descriptions-item label="工厂车间">{{
form.factoryWorkshop
}}</el-descriptions-item>
@ -966,9 +969,12 @@
:contentStyle="CS"
:label-style="LS"
>
<el-descriptions-item label="设备状态">{{
form.status
}}</el-descriptions-item>
<el-descriptions-item label="设备状态">
<dict-tag
:options="dict.type.equipment_status"
:value="form.equipmentStatus"
/>
</el-descriptions-item>
<el-descriptions-item label="使用部门">{{
form.department
}}</el-descriptions-item>

Loading…
Cancel
Save