267 lines
7.0 KiB
Vue
267 lines
7.0 KiB
Vue
|
<template>
|
|||
|
<view class="page_padding columnFlex">
|
|||
|
<view class="statistics" v-if="form.date == 'day'">
|
|||
|
<view class="title font14">排程日统计</view>
|
|||
|
<view class="boxView contentboxsty">
|
|||
|
<view class="item">
|
|||
|
<view class="name font13">待生产</view>
|
|||
|
<view class="font_bold">32</view>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<view class="name font13">生产中</view>
|
|||
|
<view class="font_bold">12</view>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<view class="name font13">生产完成</view>
|
|||
|
<view class="font_bold">102</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="comView font13" :class="form.date == 'day'?'padd12 contentboxsty':''">
|
|||
|
<view class="dateView">
|
|||
|
<view class="dateTitle">
|
|||
|
<view class="title font14">排程视图 <text class="month">{{dateText}}</text></view>
|
|||
|
<view class="dateSwitch">
|
|||
|
<div class="item" :class="form.date == item.value?'dateActive':''" @click="form.date = item.value" v-for="(item,index) in dateList" :key="index">{{item.name}}</div>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view :class="form.date !='day'?'contentboxsty mar_top12 mar_bot12 padd12':'calendarView'">
|
|||
|
<calendar></calendar>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="speedView contentboxsty" :class="form.date!='day'?'padd12':''">
|
|||
|
<view class="left">
|
|||
|
<view class="line"></view>
|
|||
|
</view>
|
|||
|
<view class="right detail_list">
|
|||
|
<view class="boxItem padd12" v-for="(item,index) in list" :key="index">
|
|||
|
<view class="time">{{item.time}}</view>
|
|||
|
<view class="boxView card_right" :class="item.type==1?'success':item.type==2?'warning':item.type==3?'status':item.type==4?'error':''">
|
|||
|
<view class="cardStatus" :class="item.type==1?'success':item.type==2?'warning':item.type==3?'status':item.type==4?'error':''">{{item.status}}</view>
|
|||
|
<view class="row font_bold">
|
|||
|
<view class="name">工单号:</view>
|
|||
|
<view class="text">{{item.sn}}</view>
|
|||
|
</view>
|
|||
|
<view class="row">
|
|||
|
<view class="name">规格:</view>
|
|||
|
<view class="text">4*9*63</view>
|
|||
|
</view>
|
|||
|
<view class="row rowDate">
|
|||
|
<view class="date">
|
|||
|
<text class="name">开始时间:</text>
|
|||
|
<text class="text color">00:00</text>
|
|||
|
</view>
|
|||
|
<view class="date">
|
|||
|
<text class="name">剩余时间:</text>
|
|||
|
<text class="text">00:30</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="yieldView">
|
|||
|
<view class="box">
|
|||
|
<view class="num font18 font_bold">74.3<text class="symbol font12">%</text></view>
|
|||
|
<view class="name">出材率</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
components: {
|
|||
|
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
list:[
|
|||
|
{name:'',sn:"SO20240426000001",num:20,status:'待生产',type:1,time:'00:00'},
|
|||
|
{name:'',sn:"SO20240426000001",num:70,status:'生产中',type:2,time:'00:30'},
|
|||
|
{name:'',sn:"SO20240426000001",num:90,status:'生产完成',type:3},
|
|||
|
{name:'',sn:"SO20240422000002",num:20,status:'生产暂停',type:4,time:'01:00'},
|
|||
|
{name:'',sn:"SO20240426000001",num:70,status:'待生产',type:1},
|
|||
|
{name:'',sn:"SO20240426000001",num:90,status:'待生产',type:1,time:'03:00'},
|
|||
|
{name:'',sn:"SO20240426000001",num:90,status:'待生产',type:1},
|
|||
|
],
|
|||
|
dateList:[
|
|||
|
{name:'日',id:'',value:'day'},
|
|||
|
{name:'周',id:'',value:'week'},
|
|||
|
{name:'月',id:'',value:'month'},
|
|||
|
],
|
|||
|
dateText:'',
|
|||
|
form:{
|
|||
|
date:'day'
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
provide(){
|
|||
|
return{
|
|||
|
params:this.form,
|
|||
|
changeDateText:this.changeDate
|
|||
|
}
|
|||
|
},
|
|||
|
methods: {
|
|||
|
changeDate(val){
|
|||
|
this.dateText = val;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style scoped lang="scss">
|
|||
|
.statistics{
|
|||
|
.boxView{
|
|||
|
display: flex;flex-direction: row;align-items: center;margin-top: 12px;
|
|||
|
.item{
|
|||
|
flex: 1;display: flex;align-items: center;justify-content:center;flex-direction: column;padding: 12px 0;
|
|||
|
.name{padding-bottom: 10px;}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
.comView{margin-top: 12px;}
|
|||
|
.dateView{width: 100%;}
|
|||
|
.dateTitle{
|
|||
|
width: 100%;display: flex;align-items: center;justify-content: space-between;
|
|||
|
.dateSwitch{
|
|||
|
display: flex;align-items: center;background: $uni-bg-color-whith;border-radius: 20px;padding: 2px 3px;
|
|||
|
.item{
|
|||
|
padding: 5px 18px;
|
|||
|
color: $uni-text-color-default;
|
|||
|
}
|
|||
|
.dateActive{
|
|||
|
border-radius: 20px;
|
|||
|
background: $uni-color-primary;
|
|||
|
color: $uni-text-color-inverse;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
.calendarView{
|
|||
|
margin: 20px 0;
|
|||
|
}
|
|||
|
.speedView{
|
|||
|
width: 100%;display: flex;box-sizing: border-box;
|
|||
|
.left{
|
|||
|
flex-basis: 45px;
|
|||
|
display: flex;align-items: flex-start;flex-direction: column;padding: 12px 0 12px 18px;box-sizing: border-box;
|
|||
|
.line{
|
|||
|
position: relative;width: 1px;height: 100%;background: $uni-text-color-info;
|
|||
|
}
|
|||
|
.line::after{
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
z-index: 20;
|
|||
|
bottom: 0;
|
|||
|
left: -4px;
|
|||
|
width: 8px;
|
|||
|
height: 8px;
|
|||
|
border-radius: 50%;
|
|||
|
background: $uni-text-color-info;
|
|||
|
}
|
|||
|
}
|
|||
|
.right{
|
|||
|
flex: 1;margin: 0;
|
|||
|
.boxItem:first-child{
|
|||
|
margin-top: 6px;
|
|||
|
}
|
|||
|
.boxItem:last-child{
|
|||
|
margin-bottom: 6px;
|
|||
|
}
|
|||
|
.boxItem{
|
|||
|
background: $uni-bg-color-schedule;
|
|||
|
margin: 12px 0;
|
|||
|
padding-left: 20px;
|
|||
|
border-radius: 8px;
|
|||
|
position: relative;
|
|||
|
z-index: 10;
|
|||
|
.boxView{
|
|||
|
display: block;
|
|||
|
}
|
|||
|
}
|
|||
|
.time{
|
|||
|
position: absolute;
|
|||
|
left: -45px;
|
|||
|
top: 0;
|
|||
|
background: $uni-bg-color-primary;
|
|||
|
padding: 4px 2px;
|
|||
|
}
|
|||
|
.yieldView{
|
|||
|
position: absolute;
|
|||
|
right: 12px;
|
|||
|
top: 12px;
|
|||
|
z-index: 20;
|
|||
|
height: calc(100% - 30px);
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
justify-content: center;
|
|||
|
.box{
|
|||
|
display: flex;flex-direction: column;align-items: center;
|
|||
|
.num{color: $uni-text-color-warning;}
|
|||
|
.name{color: $uni-text-color-warning;}
|
|||
|
}
|
|||
|
}
|
|||
|
.cardStatus{
|
|||
|
display: inline-block;
|
|||
|
}
|
|||
|
.row{
|
|||
|
display: flex;align-items: center;
|
|||
|
margin-top: 12px;
|
|||
|
.date{
|
|||
|
display: flex;align-items: center;
|
|||
|
}
|
|||
|
}
|
|||
|
.rowDate{
|
|||
|
justify-content: space-between;
|
|||
|
.color{
|
|||
|
color: $uni-text-color-primary;
|
|||
|
}
|
|||
|
}
|
|||
|
.status::after{
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
left: 0;
|
|||
|
top: 0;
|
|||
|
height: 100%;
|
|||
|
width: 12px;
|
|||
|
border-top-left-radius: 8px;
|
|||
|
border-bottom-left-radius: 8px;
|
|||
|
background: $uni-bg-color-success;
|
|||
|
}
|
|||
|
.success::after{
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
left: 0;
|
|||
|
top: 0;
|
|||
|
height: 100%;
|
|||
|
width: 12px;
|
|||
|
border-top-left-radius: 8px;
|
|||
|
border-bottom-left-radius: 8px;
|
|||
|
background: $uni-bg-color-success;
|
|||
|
}
|
|||
|
.warning::after{
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
left: 0;
|
|||
|
top: 0;
|
|||
|
height: 100%;
|
|||
|
width: 12px;
|
|||
|
border-top-left-radius: 8px;
|
|||
|
border-bottom-left-radius: 8px;
|
|||
|
background: $uni-bg-color-warning;
|
|||
|
}
|
|||
|
.error::after{
|
|||
|
content: '';
|
|||
|
position: absolute;
|
|||
|
left: 0;
|
|||
|
top: 0;
|
|||
|
height: 100%;
|
|||
|
width: 12px;
|
|||
|
border-top-left-radius: 8px;
|
|||
|
border-bottom-left-radius: 8px;
|
|||
|
background: $uni-bg-color-error;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</style>
|