<!--
|
* @Author: lzhe lzhe@example.com
|
* @Date: 2024-04-26 09:36:18
|
* @LastEditors: lzhe lzhe@example.com
|
* @LastEditTime: 2024-04-26 18:07:52
|
* @FilePath: /smart-web/src/views/mdc/status-record.vue
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
-->
|
<template>
|
<div class="aposcope-main">
|
<div class="aposcope-left">
|
<div class="left-title">查询条件</div>
|
<div class="left-title-col">日期</div>
|
<el-date-picker v-model="time" type="daterange" :shortcuts="shortcuts" range-separator="-" size="small" style="width: 100%;" value-format="YYYY-MM-DD"/>
|
<div class="left-title-col">工位</div>
|
<div class="MYTree">
|
<MYTree getAll v-model="treeChecked" show-checkbox class="MYTree-content"></MYTree>
|
</div>
|
<div class="footer">
|
<el-button @click="query" type="primary">查询</el-button>
|
<el-button>导出</el-button>
|
</div>
|
</div>
|
<div class="aposcope-right">
|
<el-tabs tab-position="top" v-model="activeName" type="card">
|
<el-tab-pane label="按日期查看" name="shift">
|
<el-button-group>
|
<el-button @click="changeTab(item)" :type="btnListActive == item.id ? 'primary' : ''" v-for="item in btnList" :key="item.id" size="small">{{item.title }}</el-button>
|
</el-button-group>
|
<div class="status">
|
<div class="status-wrap align-left">
|
<div class="collect-status">采集状态</div>
|
<div class="status-box" v-for="item in achievements"><div class="status-color" :style="{'background-color': item.color}"></div>{{ item.name }}</div>
|
</div>
|
<div class="status-wrap">
|
<el-checkbox v-model="checked1" label="人工反馈状态" size="large" />
|
<div class="status-con">
|
<div class="status-box" v-for="item in collectionstatus"><div class="status-color" :style="{'background-color': item.color}"></div>{{ item.name }}</div>
|
</div>
|
</div>
|
</div>
|
<!-- collectionstatus 反馈状态
|
date 日期
|
workstationInfoList 工位list -->
|
<record-charts :collectionstatus="collectionstatus" :date="date" :workstationInfoList="workstationInfoList" v-if="collectionstatus.length != 0"></record-charts>
|
</el-tab-pane>
|
<el-tab-pane label="按工位查看" name="time">
|
按工位查看
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import moment from 'moment';
|
import MYTree from './MYTree.vue';
|
import recordCharts from './components/recordCharts.vue';
|
export default {
|
components: {
|
time: "",
|
MYTree,
|
recordCharts
|
},
|
watch: {
|
treeChecked(select) {
|
var arr = [];
|
select.forEach(item=> {
|
arr.push({id: item.id,name: item.code})
|
})
|
this.select = arr;
|
}
|
},
|
data() {
|
return {
|
select: [],
|
workstationInfoList: [],
|
date: "",
|
checked1: true,
|
btnListActive: '',
|
btnList: [],
|
timeBtn: "",
|
shortcuts: [
|
{
|
text: '最近3天',
|
value: () => {
|
const end = new Date()
|
const start = new Date()
|
start.setDate(start.getDate() - 3)
|
return [start, end]
|
},
|
},
|
{
|
text: '最近7天',
|
value: () => {
|
const end = new Date()
|
const start = new Date()
|
start.setMonth(start.getDate() - 7)
|
return [start, end]
|
},
|
},
|
{
|
text: '最近一个月',
|
value: () => {
|
const end = new Date()
|
const start = new Date()
|
start.setMonth(start.getMonth() - 1)
|
return [start, end]
|
},
|
},
|
],
|
activeName: 'shift',
|
time: [],
|
treeChecked: [],
|
achievements: [],
|
collectionstatus: []
|
}
|
},
|
created() {
|
|
},
|
mounted() {
|
this.date = moment().format('YYYY-MM-DD');
|
this.init();
|
},
|
methods: {
|
changeTab(item) {
|
this.btnListActive = item.id;
|
this.date = item.id;
|
},
|
getachievements() { //班次状态记录采集状态
|
this.$HTTP.get(`/api/blade-cps/global_wcs/wcs-achievements`).then(res=> {
|
if(res.code == 200) {
|
var achievements = [];//采集状态
|
var collectionstatus = []; //人工反馈状态
|
res.data.forEach(item=> {
|
if(item.type == 1) {
|
achievements.push(item);
|
}
|
if(item.type == 4) {
|
collectionstatus.push(item);
|
}
|
})
|
this.achievements = achievements;
|
this.collectionstatus = collectionstatus;
|
}
|
})
|
},
|
getTime(data) {
|
this.$HTTP.post('/api/blade-mdc/efficiency-analysis/interval', {
|
...data
|
}).then(res => {
|
if (res.code === 200) {
|
var today = moment().format('YYYY-MM-DD');
|
var yesterday = moment().subtract(1, 'days').format('YYYY-MM-DD');
|
res.data.forEach(item=> {
|
if(item.title == today) {
|
item.title = "今天";
|
}
|
if(item.title == yesterday) {
|
item.title = "昨天";
|
}
|
})
|
this.btnList = res.data.reverse();
|
this.btnListActive = res?.data?.[0]?.id
|
}
|
})
|
},
|
init() {
|
this.time = [moment().subtract(2, 'days').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')];
|
this.getTime({endDate: this.time[1],startDate: this.time[0],statisticalMethod: 'SHIFT'}); //日期sort
|
this.getachievements(); //采集状态or人工反馈状态
|
},
|
timeBtnChange() {
|
|
},
|
query() {
|
this.getTime({endDate: this.time[1],startDate: this.time[0],statisticalMethod: 'SHIFT'});
|
this.workstationInfoList = this.select;
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
.aposcope-main {
|
display: flex;
|
min-height: 100%;
|
margin: 8px;
|
}
|
.aposcope-left {
|
position: relative;
|
width: 240px;
|
margin-right: 8px;
|
padding: 4px;
|
height: 100%;
|
background-color: #fff;
|
border-radius: 2px;
|
overflow: hidden;
|
}
|
.aposcope-right {
|
flex: 1;
|
padding: 8px;
|
background-color: #fff;
|
}
|
.left-title {
|
font-size: 16px;
|
text-align: center;
|
height: 38px;
|
line-height: 38px;
|
border-bottom: 1px solid #e2e2e2;
|
background-color: #409eff;
|
color: #fff;
|
border-radius: 2px 2px 0 0;
|
}
|
.left-title-col {
|
margin-bottom: 8px;
|
font-size: 14px;
|
margin-top: 8px;
|
}
|
.footer {
|
padding: 0px 32px;
|
border-radius: 0 0 2px 2px;
|
background: #fff;
|
box-shadow: -1px 0 3px rgba(92, 92, 92, .16);
|
height: 48px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
position: absolute;
|
bottom: 0;
|
left: 0;
|
width: 100%;
|
padding: 0 10px;
|
box-sizing: border-box;
|
z-index: 99;
|
}
|
.MYTree {
|
height: calc(100% - 200px);
|
overflow: hidden;
|
overflow-y: auto;
|
}
|
.status {
|
display: flex;
|
align-items: start;
|
flex-direction: column;
|
justify-content: start;
|
margin: 20px 0 8px;
|
position: relative;
|
width: 100%;
|
font-size: 16px;
|
cursor: pointer;
|
}
|
.status-wrap.align-left, .status-wrap:first-child {
|
padding-left: 24px;
|
}
|
.status-wrap {
|
display: flex;
|
flex-wrap: wrap;
|
justify-content: start;
|
}
|
.collect-status {
|
color: #409eff;
|
margin-right: 16px;
|
font-size: 14px;
|
}
|
.status-box {
|
margin: 0 8px;
|
display: flex;
|
align-items: center;
|
justify-content: flex-start;
|
}
|
.status-color {
|
width: 40px;
|
height: 15px;
|
border-radius: 2px;
|
margin-right: 8px;
|
}
|
.status-wrap .status-con {
|
display: flex;
|
flex: 1;
|
flex-wrap: wrap;
|
}
|
.status-wrap /deep/ .el-checkbox.el-checkbox--large {
|
color: #3b8e8e;
|
}
|
.pagination {
|
text-align: right;
|
display: flex;
|
justify-content: end;
|
}
|
</style>
|