转移仓库
This commit is contained in:
@@ -34,4 +34,14 @@ export function getEqpList() {
|
|||||||
method: 'post',
|
method: 'post',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 注塑车间
|
||||||
|
export function getZSJList(day) {
|
||||||
|
return request({
|
||||||
|
url: '/api/bi/zhu-su-bi-data',
|
||||||
|
method: 'post',
|
||||||
|
data:{
|
||||||
|
day
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.host-body {
|
.host-body {
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
.dv-dec-10,
|
.dv-dec-10,
|
||||||
.dv-dec-10-s {
|
.dv-dec-10-s {
|
||||||
@@ -132,6 +133,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.body-box {
|
.body-box {
|
||||||
|
// height: 100%;
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -18,18 +18,97 @@
|
|||||||
.type0 {
|
.type0 {
|
||||||
background-image: linear-gradient(#849384, darken(#849384, 20%));
|
background-image: linear-gradient(#849384, darken(#849384, 20%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.type1 {
|
.type1 {
|
||||||
background-image: linear-gradient(#6acbf0, darken(#6acbf0, 20%));
|
background-image: linear-gradient(#6acbf0, darken(#6acbf0, 20%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.type2 {
|
.type2 {
|
||||||
background-image: linear-gradient(#35ff39, darken(#35ff39, 20%));
|
background-image: linear-gradient(#35ff39, darken(#35ff39, 20%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.type3 {
|
.type3 {
|
||||||
background-image: linear-gradient(#d3ff33, darken(#d3ff33, 20%));
|
background-image: linear-gradient(#d3ff33, darken(#d3ff33, 20%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.type4 {
|
.type4 {
|
||||||
background-image: linear-gradient(#ff7db7, darken(#ff7db7, 20%));
|
background-image: linear-gradient(#ff7db7, darken(#ff7db7, 20%));
|
||||||
}
|
}
|
||||||
|
|
||||||
.type5 {
|
.type5 {
|
||||||
background-image: linear-gradient(red, darken(red, 20%));
|
background-image: linear-gradient(red, darken(red, 20%));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 加载动画
|
||||||
|
.loadbox {
|
||||||
|
position: relative;
|
||||||
|
width: 90px;
|
||||||
|
height: 50px;
|
||||||
|
// margin: 50px auto;
|
||||||
|
position: fixed;
|
||||||
|
top: 40px;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox span {
|
||||||
|
position: absolute;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background: #3498db;
|
||||||
|
opacity: 0.5;
|
||||||
|
border-radius: 100%;
|
||||||
|
animation: anim 1s infinite ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(2) {
|
||||||
|
left: 20px;
|
||||||
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(3) {
|
||||||
|
left: 40px;
|
||||||
|
animation-delay: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(4) {
|
||||||
|
left: 60px;
|
||||||
|
animation-delay: 0.6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(5) {
|
||||||
|
left: 80px;
|
||||||
|
animation-delay: 0.8s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes anim {
|
||||||
|
0% {
|
||||||
|
opacity: 0.3;
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
background: #64dbe3;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 0.3;
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hongyuan {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: rgba(255, 0, 0);
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.lvyuan {
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: rgb(64, 229, 73);
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 MiB |
@@ -0,0 +1,53 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<!-- 通过率/达标率 -->
|
||||||
|
<Echart :options="options" :id="id" height="500px" width="500px"></Echart>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Echart from '@/common/echart'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
Echart,
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
id: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
default: "chartRate"
|
||||||
|
},
|
||||||
|
tips: {
|
||||||
|
type: Number,
|
||||||
|
required: true,
|
||||||
|
default: 50
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
|
||||||
|
},
|
||||||
|
colorObj: {
|
||||||
|
type: Object,
|
||||||
|
default: function () {
|
||||||
|
return {
|
||||||
|
textStyle: "#3fc0fb",
|
||||||
|
series: {
|
||||||
|
color: ["#00bcd44a", "transparent"],
|
||||||
|
dataColor: {
|
||||||
|
normal: "#03a9f4",
|
||||||
|
shadowColor: "#97e2f5"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
import { getCpcList } from '@/api/index'
|
import { getCpcList } from '@/api/index'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'yclView',
|
name: 'cpcView',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
data: [],
|
data: [],
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
import { getEqpList } from '@/api/index'
|
import { getEqpList } from '@/api/index'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'yclView',
|
name: 'eqpView',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
data: []
|
data: []
|
||||||
|
|||||||
+13
-4
@@ -40,14 +40,18 @@
|
|||||||
:style="type == 3 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
:style="type == 3 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
||||||
<span class="text">成品仓</span>
|
<span class="text">成品仓</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="react-left ml-3" @click="type = 4"
|
<!-- <div class="react-left ml-3" @click="type = 4"
|
||||||
:style="type == 4 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
:style="type == 4 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
||||||
<span class="text">设备数采</span>
|
<span class="text">设备数采</span>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="react-left ml-3" @click="type = 5"
|
<div class="react-left ml-3" @click="type = 5"
|
||||||
:style="type == 5 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
:style="type == 5 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
||||||
<span class="text">生产任务</span>
|
<span class="text">生产任务</span>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <div class="react-left ml-3" @click="type = 6"
|
||||||
|
:style="type == 6 ? 'background-color: #1a5cd7' : 'background-color: #0f1325'">
|
||||||
|
<span class="text">注塑车间</span>
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex aside-width">
|
<div class="d-flex aside-width">
|
||||||
<div class="react-right bg-color-blue mr-3">
|
<div class="react-right bg-color-blue mr-3">
|
||||||
@@ -118,6 +122,9 @@
|
|||||||
<dv-border-box-11 v-if="type == 5">
|
<dv-border-box-11 v-if="type == 5">
|
||||||
<taskView />
|
<taskView />
|
||||||
</dv-border-box-11>
|
</dv-border-box-11>
|
||||||
|
<dv-border-box-1 v-if="type == 6">
|
||||||
|
<zscjView />
|
||||||
|
</dv-border-box-1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -139,6 +146,7 @@ import taskView from './taskView'
|
|||||||
import cpcView from './cpcView'
|
import cpcView from './cpcView'
|
||||||
import yclView from './yclView'
|
import yclView from './yclView'
|
||||||
import zccView from './zccView'
|
import zccView from './zccView'
|
||||||
|
import zscjView from './zscjView'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [drawMixin],
|
mixins: [drawMixin],
|
||||||
@@ -151,7 +159,7 @@ export default {
|
|||||||
dateWeek: null,
|
dateWeek: null,
|
||||||
weekday: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
|
weekday: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
|
||||||
decorationColor: ['#568aea', '#000000'],
|
decorationColor: ['#568aea', '#000000'],
|
||||||
type: 1,
|
type: 6,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@@ -167,6 +175,7 @@ export default {
|
|||||||
cpcView,
|
cpcView,
|
||||||
yclView,
|
yclView,
|
||||||
zccView,
|
zccView,
|
||||||
|
zscjView,
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.timeFn()
|
this.timeFn()
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
<div class="loadbox" v-if="loadboxV">
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
<el-table :data="data" style="width: 100%" height="640" v-loading="loadingShow">
|
<el-table :data="data" style="width: 100%" height="640" v-loading="loadingShow">
|
||||||
<el-table-column prop="mo_code" label="任务单编号">
|
<el-table-column prop="mo_code" label="任务单编号">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -28,15 +35,18 @@
|
|||||||
<script>
|
<script>
|
||||||
import { gettaskList } from '@/api/index'
|
import { gettaskList } from '@/api/index'
|
||||||
export default {
|
export default {
|
||||||
name: 'yclView',
|
name: 'taskView',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
data: [],
|
data: [],
|
||||||
loadingShow: false,
|
loadingShow: false,
|
||||||
|
loadboxV: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.gettaskList()
|
this.gettaskList()
|
||||||
|
this.timer = setInterval(this.getYclListLoad, 30000);
|
||||||
|
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
},
|
},
|
||||||
@@ -49,13 +59,21 @@ export default {
|
|||||||
gettaskList().then(res => {
|
gettaskList().then(res => {
|
||||||
this.data = res.data.data || []
|
this.data = res.data.data || []
|
||||||
}).finally(e => { this.loadingShow = false })
|
}).finally(e => { this.loadingShow = false })
|
||||||
|
},
|
||||||
|
getYclListLoad() {
|
||||||
|
this.loadboxV = true
|
||||||
|
gettaskList().then(res => {
|
||||||
|
this.data = res.data.data || []
|
||||||
|
}).finally(e => { this.loadboxV = false })
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import '@/assets/scss/tianyi.scss';
|
@import '@/assets/scss/tianyi.scss';
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 860px;
|
height: 860px;
|
||||||
@@ -123,4 +141,7 @@ export default {
|
|||||||
::v-deep .el-loading-mask {
|
::v-deep .el-loading-mask {
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
@mouseleave="mouseleave(it, $event)">
|
@mouseleave="mouseleave(it, $event)">
|
||||||
<div class="lists">
|
<div class="lists">
|
||||||
<div>{{ it.location_code }}</div>
|
<div>{{ it.location_code }}</div>
|
||||||
<div v-if="it.type == 2">{{ it.material_code }}</div>
|
|
||||||
<div v-if="it.type == 2">{{ it.material_name }}</div>
|
<div v-if="it.type == 2">{{ it.material_name }}</div>
|
||||||
|
<div v-if="it.type == 2">{{ it.material_specification }}</div>
|
||||||
<div v-if="it.type == 2">{{ it.code_batch }}</div>
|
<div v-if="it.type == 2">{{ it.code_batch }}</div>
|
||||||
<div v-if="it.type == 2">数量:{{ it.num }}</div>
|
<div v-if="it.type == 2">数量:{{ it.num }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
|
<div class="loadbox" v-if="loadboxV">
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
<div v-for="(item, index) of data" :key="index" class="box-x">
|
<div v-for="(item, index) of data" :key="index" class="box-x">
|
||||||
<!-- <div class="index">{{ ab[index] }}</div> -->
|
<!-- <div class="index">{{ ab[index] }}</div> -->
|
||||||
<div class="index">{{ index + 1 }}</div>
|
<div class="index">{{ index + 1 }}</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="item-top" v-for="i of 6" :key="i">
|
<div class="item-top" v-for="i of [6, 5, 4, 3, 2, 1]" :key="i">
|
||||||
<!-- <div class="item-x" v-if="item.type == 0"> </div> -->
|
<!-- <div class="item-x" v-if="item.type == 0"> </div> -->
|
||||||
<div v-for="(it, ind) of filterData(item, i)" :key="ind" class="item-x"
|
<div v-for="(it, ind) of filterData(item, i)" :key="ind" class="item-x"
|
||||||
:class="it.type == 2 ? 'typeOne' : it.type == 0 ? 'typeTwo' : 'typeTh'"
|
:class="it.type == 2 ? 'typeOne' : it.type == 0 ? 'typeTwo' : 'typeTh'"
|
||||||
@@ -36,16 +43,18 @@
|
|||||||
<script>
|
<script>
|
||||||
import { getZccList } from '@/api/index'
|
import { getZccList } from '@/api/index'
|
||||||
export default {
|
export default {
|
||||||
name: 'yclView',
|
name: 'zccView',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
data: [],
|
data: [],
|
||||||
|
loadboxV:false,
|
||||||
// ab: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S']
|
// ab: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S']
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getZccList()
|
this.getZccList()
|
||||||
|
this.timer = setInterval(this.getYclListLoad, 30000);
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
},
|
},
|
||||||
@@ -76,6 +85,23 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}).finally(e => { loading.close(); })
|
}).finally(e => { loading.close(); })
|
||||||
|
},
|
||||||
|
// 定时器重复加载
|
||||||
|
getYclListLoad() {
|
||||||
|
this.loadboxV = true
|
||||||
|
getZccList().then(res => {
|
||||||
|
this.data = res.data.data || []
|
||||||
|
this.data.forEach((item, index) => {
|
||||||
|
const arr = [6, 7, 8, 9, 10, 24, 25, 26, 27, 28, 29, 40, 41, 42, 43, 44]
|
||||||
|
// const obj = { type: 1, location_code: '', layer: '1' }
|
||||||
|
if (arr.some(it => { return it == index + 1 })) {
|
||||||
|
for (let i = 1; i < 7; i++) {
|
||||||
|
item.splice(42, 0, { type: 4, location_code: '', layers: i })
|
||||||
|
item.splice(42, 0, { type: 4, location_code: '', layers: i })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).finally(e => { this.loadboxV = false })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -140,5 +166,63 @@ $sysColor: rgba(85, 110, 255, 0.9);
|
|||||||
.item-top:last-child {
|
.item-top:last-child {
|
||||||
border-bottom: 0px;
|
border-bottom: 0px;
|
||||||
}
|
}
|
||||||
|
// 加载动画
|
||||||
|
.loadbox {
|
||||||
|
position: relative;
|
||||||
|
width: 90px;
|
||||||
|
height: 50px;
|
||||||
|
// margin: 50px auto;
|
||||||
|
position: fixed;
|
||||||
|
top: 40px;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox span {
|
||||||
|
position: absolute;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background: #3498db;
|
||||||
|
opacity: 0.5;
|
||||||
|
border-radius: 100%;
|
||||||
|
animation: anim 1s infinite ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(2) {
|
||||||
|
left: 20px;
|
||||||
|
animation-delay: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(3) {
|
||||||
|
left: 40px;
|
||||||
|
animation-delay: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(4) {
|
||||||
|
left: 60px;
|
||||||
|
animation-delay: 0.6s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loadbox> :nth-child(5) {
|
||||||
|
left: 80px;
|
||||||
|
animation-delay: 0.8s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes anim {
|
||||||
|
0% {
|
||||||
|
opacity: 0.3;
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(-10px);
|
||||||
|
background: #64dbe3;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 0.3;
|
||||||
|
transform: translateY(0px);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -0,0 +1,410 @@
|
|||||||
|
<template>
|
||||||
|
<div class="box">
|
||||||
|
<div class="loadbox" v-if="loadboxV">
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
|
<div class="top">
|
||||||
|
<div class="left">
|
||||||
|
<div class="top_le">
|
||||||
|
<div class="leftView">
|
||||||
|
<dv-border-box-13>
|
||||||
|
<div class="text">
|
||||||
|
<div>
|
||||||
|
本月产量
|
||||||
|
</div>
|
||||||
|
<div class="qty">
|
||||||
|
{{ data.day_month_yield.month_qty }}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dv-border-box-13>
|
||||||
|
</div>
|
||||||
|
<div class="leftView">
|
||||||
|
<dv-border-box-13>
|
||||||
|
<div class="text">
|
||||||
|
<div>
|
||||||
|
当日产量
|
||||||
|
</div>
|
||||||
|
<div class="qty">
|
||||||
|
{{ data.day_month_yield.day_qty }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dv-border-box-13>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="leftView">
|
||||||
|
<dv-border-box-13>
|
||||||
|
<div class="text">
|
||||||
|
<div>
|
||||||
|
本月合格
|
||||||
|
</div>
|
||||||
|
<div class="qty">
|
||||||
|
{{ data.day_month_yield.month_qualified_percent }}%
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dv-border-box-13>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="leftView">
|
||||||
|
<dv-border-box-13>
|
||||||
|
<div class="text">
|
||||||
|
<div>
|
||||||
|
当日合格率
|
||||||
|
</div>
|
||||||
|
<div class="qty">
|
||||||
|
{{ data.day_month_yield.day_qualified_percent }}%
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</dv-border-box-13>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bom_le">
|
||||||
|
<el-table :data="data.report_record_list" style="width: 100%" height="320" v-loading="loadingShow">
|
||||||
|
<el-table-column prop="mo_task_code" label="任务单编号">
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="material_name" label="物料名称">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="plan_qty" label="计划数量">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="qty" label="已排产数量">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="remain_plan_qty" label="待排产数量">
|
||||||
|
</el-table-column>
|
||||||
|
<!-- <el-table-column prop="report_time" label="提报时间">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="report_type" label="提报结论">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="repoter_name" label="提报人">
|
||||||
|
</el-table-column> -->
|
||||||
|
<!-- <el-table-column prop="complete_rate" label="进度">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-progress :percentage="parseInt(scope.row.complete_rate)"
|
||||||
|
v-if="scope.row.complete_rate"></el-progress>
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<div class="leftView">
|
||||||
|
<dv-border-box-13>
|
||||||
|
<div class="text">
|
||||||
|
<pieEchart :options="options" />
|
||||||
|
</div>
|
||||||
|
</dv-border-box-13>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="bom">
|
||||||
|
<dv-border-box-13>
|
||||||
|
<div class="item">
|
||||||
|
<div v-for="(item, index) in data.equip_info_list " :key="index"
|
||||||
|
style="display: flex;margin-bottom: 10px;">
|
||||||
|
<div class="item_pp" v-for="(it, ind) in item " :key="ind">
|
||||||
|
<div style="display: flex;">
|
||||||
|
<div :class="statusFn(it.status) ? 'lvyuan' : 'hongyuan'"></div>
|
||||||
|
<div>{{ it.name }}</div>
|
||||||
|
</div>
|
||||||
|
<img src="@/assets/zsj.png" alt="" srcset="" style="height: 30px;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</dv-border-box-13>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { gettaskList, getZSJList } from '@/api/index'
|
||||||
|
import pieEchart from '@/components/echart/pieEchart'
|
||||||
|
export default {
|
||||||
|
name: 'zscjView',
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
data: [],
|
||||||
|
loadingShow: false,
|
||||||
|
loadboxV: false,
|
||||||
|
imgsrc: require("../../assets/zsj.png"),
|
||||||
|
options: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.gettaskList()
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
pieEchart
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
gettaskList() {
|
||||||
|
this.loadingShow = true
|
||||||
|
getZSJList().then(res => {
|
||||||
|
let arr1 = []
|
||||||
|
let arr2 = []
|
||||||
|
let arr3 = []
|
||||||
|
let arr4 = []
|
||||||
|
|
||||||
|
res.data.data.equip_info_list.forEach((item, index) => {
|
||||||
|
if (index + 1 > 0 && index < 10) {
|
||||||
|
arr1.push(item)
|
||||||
|
} else if (index + 1 > 10 && index < 24) {
|
||||||
|
arr2.push(item)
|
||||||
|
} else if (index + 1 > 24 && index < 38) {
|
||||||
|
arr3.push(item)
|
||||||
|
} else if (index + 1 > 38 && index < 52) {
|
||||||
|
arr4.push(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.data = res.data.data
|
||||||
|
this.data.equip_info_list = [arr1, arr2, arr3, arr4]
|
||||||
|
console.log(res.data.data.equip_info_list, 77777);
|
||||||
|
this.options = {
|
||||||
|
title: {
|
||||||
|
text: '设备利用率',
|
||||||
|
// subtext: '设备利用率',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b} : {c} ({d}%)'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical',
|
||||||
|
// top: 'middle',
|
||||||
|
// bottom: 10,
|
||||||
|
left: 10,
|
||||||
|
data: res.data.data.equip_pie_list.map(item => item.name)
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
radius: '65%',
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
selectedMode: 'single',
|
||||||
|
data: res.data.data.equip_pie_list,
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}).finally(e => { this.loadingShow = false })
|
||||||
|
},
|
||||||
|
getYclListLoad() {
|
||||||
|
this.loadboxV = true
|
||||||
|
getZSJList().then(res => {
|
||||||
|
let arr1 = []
|
||||||
|
let arr2 = []
|
||||||
|
let arr3 = []
|
||||||
|
let arr4 = []
|
||||||
|
|
||||||
|
res.data.data.equip_info_list.forEach((item, index) => {
|
||||||
|
if (index + 1 > 0 && index < 10) {
|
||||||
|
arr1.push(item)
|
||||||
|
} else if (index + 1 > 10 && index < 24) {
|
||||||
|
arr2.push(item)
|
||||||
|
} else if (index + 1 > 24 && index < 38) {
|
||||||
|
arr3.push(item)
|
||||||
|
} else if (index + 1 > 38 && index < 52) {
|
||||||
|
arr4.push(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.data = res.data.data
|
||||||
|
this.data.equip_info_list = [arr1, arr2, arr3, arr4]
|
||||||
|
console.log(res.data.data.equip_info_list, 77777);
|
||||||
|
this.options = {
|
||||||
|
title: {
|
||||||
|
text: '设备利用率',
|
||||||
|
// subtext: '设备利用率',
|
||||||
|
left: 'center'
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: '{b} : {c} ({d}%)'
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
orient: 'vertical',
|
||||||
|
// top: 'middle',
|
||||||
|
// bottom: 10,
|
||||||
|
left: 10,
|
||||||
|
data: res.data.data.equip_pie_list.map(item => item.name)
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'pie',
|
||||||
|
radius: '65%',
|
||||||
|
center: ['50%', '50%'],
|
||||||
|
selectedMode: 'single',
|
||||||
|
data: res.data.data.equip_pie_list,
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
shadowBlur: 10,
|
||||||
|
shadowOffsetX: 0,
|
||||||
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}).finally(e => { this.loadingShow = false })
|
||||||
|
},
|
||||||
|
statusFn(val) {
|
||||||
|
if (val == null) return 0
|
||||||
|
let newval = val.split(/[\t\r\f\n\s]*/g).join('')
|
||||||
|
if (newval == "0U000") {
|
||||||
|
return 0
|
||||||
|
} else if (newval == "0M000" || newval == "0A000") {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '@/assets/scss/tianyi.scss';
|
||||||
|
|
||||||
|
.box {
|
||||||
|
width: 100%;
|
||||||
|
height: 860px;
|
||||||
|
|
||||||
|
.top {
|
||||||
|
display: flex;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// // justify-content: space-evenly;
|
||||||
|
// flex-wrap: wrap;
|
||||||
|
.left {
|
||||||
|
width: 70%;
|
||||||
|
|
||||||
|
.top_le {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leftView {
|
||||||
|
width: 300px;
|
||||||
|
height: 150px;
|
||||||
|
margin-right: 20px;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
padding: 30px 0 0 20px;
|
||||||
|
font-size: 25px;
|
||||||
|
|
||||||
|
.qty {
|
||||||
|
padding: 30px 0 0 100px;
|
||||||
|
font-size: 35px;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
// background-color: #eaeaea;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.leftView {
|
||||||
|
width: 99%;
|
||||||
|
height: 500px;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
padding: 30px 0 0 20px;
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.bom {
|
||||||
|
width: 99%;
|
||||||
|
height: 310px;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
padding: 30px 0px 0 20px;
|
||||||
|
// display: flex;
|
||||||
|
// flex-wrap: wrap;
|
||||||
|
|
||||||
|
.item_pp {
|
||||||
|
margin-right: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 滚动条隐藏
|
||||||
|
::v-deep .el-table__body-wrapper::-webkit-scrollbar {
|
||||||
|
/*width: 0;宽度为0隐藏*/
|
||||||
|
width: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb {
|
||||||
|
border-radius: 2px;
|
||||||
|
height: 50px;
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table__body-wrapper::-webkit-scrollbar-track {
|
||||||
|
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
|
||||||
|
border-radius: 2px;
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*最外层透明*/
|
||||||
|
::v-deep .el-table,
|
||||||
|
::v-deep .el-table__expanded-cell {
|
||||||
|
background-color: transparent !important;
|
||||||
|
color: #9a9a9a;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格内背景颜色 */
|
||||||
|
::v-deep .el-table th,
|
||||||
|
::v-deep .el-table tr,
|
||||||
|
::v-deep .el-table td {
|
||||||
|
background-color: transparent !important;
|
||||||
|
border: 0; //去除表格
|
||||||
|
}
|
||||||
|
|
||||||
|
/*去除底边框*/
|
||||||
|
::v-deep.el-table td.el-table__cell {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep.el-table th.el-table__cell.is-leaf {
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*去除底部灰条.el-table::before*/
|
||||||
|
::v-deep .el-table::before {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-loading-mask {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .el-table thead {
|
||||||
|
// background-color: transparent !important;
|
||||||
|
color: #eaeaea;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user