188 lines
3.9 KiB
Vue
188 lines
3.9 KiB
Vue
<!--
|
||
* @Author: zwq
|
||
* @Date: 2025-10-21 14:27:23
|
||
* @LastEditors: zwq
|
||
* @LastEditTime: 2025-11-04 10:49:16
|
||
* @Description:
|
||
-->
|
||
<template>
|
||
<div>
|
||
<div class="info-div">
|
||
<div>
|
||
<span class="title">计划编号:</span>
|
||
{{ infoData.code }}
|
||
</div>
|
||
<div>
|
||
<span class="title">计划状态:</span>
|
||
{{ ['', '草稿', '已确认', '已作废'][infoData.status] }}
|
||
</div>
|
||
<div>
|
||
<span class="title">计划名称:</span>
|
||
{{ infoData.name }}
|
||
</div>
|
||
<div>
|
||
<span class="title">部门:</span>
|
||
{{ infoData.deptName }}
|
||
</div>
|
||
<div>
|
||
<span class="title">开始时间:</span>
|
||
{{ parseTime(infoData.startDay) }}
|
||
</div>
|
||
<div>
|
||
<span class="title">结束时间:</span>
|
||
{{ parseTime(infoData.endDay) }}
|
||
</div>
|
||
<div>
|
||
<span class="title">周末休假方式:</span>
|
||
{{ ['', '双休', '周六休', '周日休', '不休'][infoData.weekType] }}
|
||
</div>
|
||
<div>
|
||
<span class="title">倒班方式:</span>
|
||
{{ ['', '长白班', '两班倒', '三班倒'][infoData.shiftType] }}
|
||
</div>
|
||
<div>
|
||
<span class="title">同班次连排:</span>
|
||
{{ infoData.shiftSustainedNum }}日
|
||
</div>
|
||
<div>
|
||
<span class="title">创建人:</span>
|
||
{{ infoData.creatorName }}
|
||
</div>
|
||
<div>
|
||
<span class="title">创建时间:</span>
|
||
{{ parseTime(infoData.createTime) }}
|
||
</div>
|
||
<div v-if="infoData.status == 3">
|
||
<span class="title">作废时间:</span>
|
||
{{ parseTime(infoData.disableTime) }}
|
||
</div>
|
||
<div>
|
||
<span class="title">备注:</span>
|
||
{{ infoData.remark }}
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<el-tabs v-model="activeName" stretch>
|
||
<el-tab-pane label="班次" name="first"></el-tab-pane>
|
||
<el-tab-pane label="班组" name="second"></el-tab-pane>
|
||
</el-tabs>
|
||
<base-table
|
||
v-if="activeName == 'first'"
|
||
:table-props="tableProps1"
|
||
:page="1"
|
||
:limit="10"
|
||
:table-data="tableData1"></base-table>
|
||
<base-table
|
||
v-else
|
||
:table-props="tableProps2"
|
||
:page="1"
|
||
:limit="10"
|
||
:table-data="tableData2"></base-table>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { parseTime } from '@/filter/code-filter';
|
||
import { getPlan } from '@/api/group/Schedule';
|
||
|
||
const tableProps1 = [
|
||
{
|
||
prop: 'name',
|
||
label: '班次名称',
|
||
},
|
||
{
|
||
prop: 'startTime',
|
||
label: '开始时间',
|
||
filter: (val) => {
|
||
return val ? val.slice(0, -3) : '-';
|
||
},
|
||
},
|
||
{
|
||
prop: 'endTime',
|
||
label: '结束时间',
|
||
filter: (val) => {
|
||
return val ? val.slice(0, -3) : '-';
|
||
},
|
||
},
|
||
{
|
||
prop: 'remark',
|
||
label: '备注',
|
||
},
|
||
];
|
||
|
||
const tableProps2 = [
|
||
{
|
||
prop: 'code',
|
||
label: '班组编号',
|
||
width: 140,
|
||
},
|
||
{
|
||
prop: 'name',
|
||
label: '班组名称',
|
||
},
|
||
{
|
||
prop: 'isProduction',
|
||
label: '是否生产班组',
|
||
filter: (val) => {
|
||
return val ? '是' : '否';
|
||
},
|
||
width: 110,
|
||
},
|
||
{
|
||
prop: 'lineName',
|
||
label: '产线及工段',
|
||
},
|
||
];
|
||
export default {
|
||
data() {
|
||
return {
|
||
infoData: {},
|
||
activeName: 'first',
|
||
tableProps1,
|
||
tableData1: [],
|
||
tableProps2,
|
||
tableData2: [],
|
||
};
|
||
},
|
||
methods: {
|
||
init(id) {
|
||
this.infoData = {};
|
||
getPlan(id).then((res) => {
|
||
this.infoData = res.data || {};
|
||
console.log(res);
|
||
this.tableData1 = res.data?.groupPlanClassesBaseVOList;
|
||
this.tableData2 = res.data?.groupPlanTeamBaseVOList;
|
||
this.tableData2.forEach((item, index) => {
|
||
let lineName = '';
|
||
lineName = this.setLineName(item.bindLineTree, lineName);
|
||
this.$set(this.tableData2[index], 'lineName', lineName.slice(0, -1));
|
||
});
|
||
});
|
||
},
|
||
//提取绑定的产线工段名展示出来
|
||
setLineName(val, lineName) {
|
||
val.forEach((item) => {
|
||
lineName += item.name + ':';
|
||
if (item.children && item.children.length > 0) {
|
||
const childName = this.setLineName(item.children, lineName);
|
||
lineName = childName;
|
||
}
|
||
});
|
||
return lineName;
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.info-div {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr 1fr;
|
||
gap: 10px;
|
||
}
|
||
.title {
|
||
font-weight: bold;
|
||
}
|
||
</style>
|