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-10-21 15:02:27
 | ||
|  * @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.creator }}
 | ||
| 			</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>
 |