From 077755cebc2f4c10120ed7410c8ebb5add9634ff Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 18:56:34 +0800 Subject: [PATCH 01/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index fdbec32..f59d34b 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -172,14 +172,14 @@
{{ index + 1 }}
- -
订单号:{{ order.woCode }}
-
- -
零件号:{{ order.partCode }}
+ +
+ {{ order.woCode }}/ + {{ order.partCode }} +
-
+
{{ order.batchNo }} / {{ order.makeQty }} / {{ order.productIdent }} / {{ order.priorityAps }} @@ -385,23 +385,23 @@ {{ tooltipData.makeQty || '-' }}
  • - 计划开始时间: + 计划开始: {{ tooltipData.planStartTime || '-' }}
  • -
  • - 实际开始时间: - {{ tooltipData.factStartTime || '-' }} +
  • + 计划完成: + {{ tooltipData.planEndTime || '-' }}
  • - 计划完成时间: - {{ tooltipData.planEndTime || '-' }} + 实际开始: + {{ tooltipData.factStartTime || '-' }}
  • - 实际完成时间: + 实际完成: {{ tooltipData.factEndTime || '-' }}
  • - 状态: + 工序状态: 未开始 @@ -460,7 +460,7 @@ export default { // 分页参数 currentPage: 1, - pageSize: 10, + pageSize: 8, // 提示框相关 tooltipVisible: false, @@ -597,7 +597,7 @@ export default { dates.push({ date: date, position: Math.max(0, Math.min(100, positionPercent)), - label: `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`, // 显示年/月/日 + label: `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日`, // 显示年/月/日 dayName: this.getDayName(date.getDay()), }); } @@ -1100,6 +1100,7 @@ export default { // 确保百分比在有效范围内 const percent = (startHour / totalDuration) * 100; + console.log('percent',percent) return Math.max(0, Math.min(100, percent)); }, @@ -1117,7 +1118,8 @@ export default { } // 确保宽度在有效范围内 - const width = (duration / totalDuration) * 100; + const width = ((duration / totalDuration) * 100); + return Math.max(0, Math.min(100, width)); }, @@ -1253,7 +1255,7 @@ export default { /* 左侧信息列表样式 */ .info-list { - width: 450px; + width: 330px; background-color: #f8f9fa; flex-shrink: 0; } @@ -1281,6 +1283,13 @@ export default { .info-item-txt i { font-style: normal; } +.info-item-info{ + display: flex; + justify-content: space-between; + align-items: center; + padding-right: 15px; + +} .info-title-cell { flex: 1; @@ -1511,14 +1520,14 @@ export default { border-radius: 5px; display: flex; align-items: center; - padding: 2px 8px; + padding: 2px 2px; box-sizing: border-box; cursor: pointer; overflow: hidden; transition: all 0.2s; white-space: nowrap; border: 1px solid rgba(255, 255, 255, 0.3); - min-width: 20px; + min-width: 5px; z-index: 1; } .task-bar.task-bar-narrow { @@ -1574,7 +1583,7 @@ export default { background-color: white; border: 1px solid #ddd; border-radius: 4px; - padding: 5px; + padding: 20px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); z-index: 1000; font-size: 12px; @@ -1605,9 +1614,10 @@ export default { line-height: 20px; .label { - width: 100px; + width: 60px; color: #666; font-weight: 500; + text-align: right; } .value { From 036d40c0156cc0300180a277fcde1ef5f3588c93 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 18:58:38 +0800 Subject: [PATCH 02/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index f59d34b..26d50c4 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -1563,7 +1563,7 @@ export default { .task-overlay-text { position: absolute; top: -20px; - left: 0; + left: -7px; color: rgba(0, 0, 0); padding: 2px 4px 2px 0; border-radius: 3px; @@ -1574,7 +1574,7 @@ export default { min-width: max-content; pointer-events: none; /* 避免影响鼠标事件 */ display: inline-block; - transform: scale(0.8); + transform: scale(0.7); } /* 提示框样式 */ From ce3ed2fa4c668758fda91ae37ea1d47e969321a1 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 19:40:16 +0800 Subject: [PATCH 03/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 86 +++++++++++++++---- 1 file changed, 68 insertions(+), 18 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 26d50c4..3082200 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -126,7 +126,7 @@ :style="{ '--checkbox-color': '#6c757d' }" @change="handleLegendChange('pending')" > - 未开始 + 未开始
  • @@ -136,7 +136,7 @@ :style="{ '--checkbox-color': '#007bff' }" @change="handleLegendChange('processing')" > - 进行中 + 进行中
    @@ -145,7 +145,7 @@ :style="{ '--checkbox-color': '#28a745' }" @change="handleLegendChange('completed')" > - 已完成 + 已完成
    @@ -159,7 +159,7 @@
    序号
    订单信息
    -
    +
    - {{ order.woCode }}/ + {{ order.woCode }}/ {{ order.partCode }}
    -
    +
    {{ order.batchNo }} / {{ order.makeQty }} / {{ order.productIdent }} / {{ order.priorityAps }} @@ -266,7 +267,7 @@
    -
    +
    - +
    @@ -388,7 +390,7 @@ 计划开始: {{ tooltipData.planStartTime || '-' }} -
  • +
  • 计划完成: {{ tooltipData.planEndTime || '-' }}
  • @@ -460,7 +462,7 @@ export default { // 分页参数 currentPage: 1, - pageSize: 8, + pageSize: 10, // 提示框相关 tooltipVisible: false, @@ -674,6 +676,13 @@ export default { this.updateTimeAxis(); this.$nextTick(() => { this.calcCurrentTimePosition(); + // 添加滚动事件监听器 + if (this.$refs.timelineContainerTest) { + this.$refs.timelineContainerTest.addEventListener('scroll', this.handleRightScrollBound); + } + if (this.$refs.leftScrollContainer) { + this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); + } }); // 定时更新当前时间线位置 @@ -681,7 +690,39 @@ export default { // this.calcCurrentTimePosition(); // }, 60000); }, + created() { + // 绑定方法,确保this指向正确 + this.handleRightScrollBound = this.handleRightScroll.bind(this); + this.handleLeftScrollBound = this.handleLeftScroll.bind(this); + }, + beforeDestroy() { + // 移除事件监听器 + if (this.$refs.timelineContainerTest) { + this.$refs.timelineContainerTest.removeEventListener('scroll', this.handleRightScrollBound); + } + if (this.$refs.leftScrollContainer) { + this.$refs.leftScrollContainer.removeEventListener('scroll', this.handleLeftScrollBound); + } + }, methods: { + // 右侧滚动时同步左侧滚动 + handleRightScroll(event) { + if (this.$refs.leftScrollContainer) { + const rightScrollTop = event.target.scrollTop; + console.log('右侧',rightScrollTop) + this.$refs.leftScrollContainer.scrollTop = rightScrollTop; + } + }, + + // 左侧滚动时同步右侧滚动 + handleLeftScroll(event) { + + if (this.$refs.timelineContainerTest) { + const leftScrollTop = event.target.scrollTop; + this.$refs.timelineContainerTest.scrollTop = leftScrollTop; + console.log('左侧',leftScrollTop,this.$refs.timelineContainerTest.scrollTop) + } + }, updateTime() { // 设置默认时间范围为今天到后两天 const today = new Date(); @@ -755,6 +796,7 @@ export default { // 滚动到当前时间位置 scrollToCurrentTime() { + debugger const container = this.$refs.timelineContainer; if (container && this.currentTimePosition >= 0 && this.currentTimePosition <= 100) { // 计算当前时间位置的像素值 @@ -1100,7 +1142,6 @@ export default { // 确保百分比在有效范围内 const percent = (startHour / totalDuration) * 100; - console.log('percent',percent) return Math.max(0, Math.min(100, percent)); }, @@ -1118,7 +1159,7 @@ export default { } // 确保宽度在有效范围内 - const width = ((duration / totalDuration) * 100); + const width = (duration / totalDuration) * 100; return Math.max(0, Math.min(100, width)); }, @@ -1258,9 +1299,17 @@ export default { width: 330px; background-color: #f8f9fa; flex-shrink: 0; + display: flex; + flex-direction: column; } .info-container { - + flex: 1; + overflow-y: auto; /* 允许垂直滚动 */ + overflow-x: hidden; /* 隐藏水平滚动条 */ +} +/* 隐藏滚动条的样式(Webkit浏览器) */ +.info-container::-webkit-scrollbar { + display: none; /* 隐藏滚动条 */ } .info-item-title { @@ -1283,12 +1332,12 @@ export default { .info-item-txt i { font-style: normal; } -.info-item-info{ +.info-item-info { display: flex; justify-content: space-between; align-items: center; padding-right: 15px; - + } .info-title-cell { @@ -1310,6 +1359,7 @@ export default { .info-item { display: flex; height: 100%; + /* padding: 5px; */ } @@ -1328,8 +1378,8 @@ export default { flex: 1; display: flex; flex-direction: column; - overflow-y: hidden; - overflow-x: auto; /* 确保支持横向滚动 */ + overflow-y: auto; /* 允许垂直滚动 */ + overflow-x: auto; /* 允许水平滚动 */ } /* 图表X轴区域样式 */ From d5efa53f77e20d6fc68fb0955b3dcab1539e773d Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 19:41:18 +0800 Subject: [PATCH 04/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/productionSchedulingPlan/schedulingDashboard/index.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 3082200..f571554 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -796,7 +796,6 @@ export default { // 滚动到当前时间位置 scrollToCurrentTime() { - debugger const container = this.$refs.timelineContainer; if (container && this.currentTimePosition >= 0 && this.currentTimePosition <= 100) { // 计算当前时间位置的像素值 From 27e45a1f12852662672c5c15a34e7ab95864569a Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 19:49:11 +0800 Subject: [PATCH 05/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index f571554..049b1bc 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -267,7 +267,11 @@
    -
    +
    @@ -664,8 +668,13 @@ export default { }, // 动态计算甘特图容器高度 ganttWrapperHeight() { - // 根据实际页面元素计算可用高度 - return `calc(100vh - 250px)`; // 调整数值以适应您的页面布局 + if (this.$route.path == '/productionSchedulingPlan/schedulingDashboard/index') { + // 根据实际页面元素计算可用高度 + return `calc(100vh - 250px - 120px)`; // 调整数值以适应您的页面布局 + } else { + // 根据实际页面元素计算可用高度 + return `calc(100vh - 250px)`; // 调整数值以适应您的页面布局 + } }, }, mounted() { @@ -709,18 +718,15 @@ export default { handleRightScroll(event) { if (this.$refs.leftScrollContainer) { const rightScrollTop = event.target.scrollTop; - console.log('右侧',rightScrollTop) this.$refs.leftScrollContainer.scrollTop = rightScrollTop; } }, - + // 左侧滚动时同步右侧滚动 handleLeftScroll(event) { - if (this.$refs.timelineContainerTest) { const leftScrollTop = event.target.scrollTop; this.$refs.timelineContainerTest.scrollTop = leftScrollTop; - console.log('左侧',leftScrollTop,this.$refs.timelineContainerTest.scrollTop) } }, updateTime() { @@ -1225,7 +1231,7 @@ export default { padding: 20px; box-sizing: border-box; font-family: Arial, sans-serif; - height: calc(100% - 72px); + height: calc(100% - 72px - 100px); } .gantt-header { @@ -1336,7 +1342,6 @@ export default { justify-content: space-between; align-items: center; padding-right: 15px; - } .info-title-cell { @@ -1358,7 +1363,7 @@ export default { .info-item { display: flex; height: 100%; - + /* padding: 5px; */ } From 4147e932437a41dcec48a9f5fbafab5da240f30e Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 20:23:49 +0800 Subject: [PATCH 06/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 049b1bc..6f5e5aa 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -152,9 +152,9 @@
    -
    +
    -
    +
    序号
    订单信息
    @@ -193,7 +193,7 @@
    -
    +
    @@ -348,8 +348,8 @@ @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" - - layout="total, prev, pager, next, jumper" + :page-sizes="[10, 20, 50]" + layout="total, prev, pager, next, jumper,sizes" :total="totalOrders" >
    @@ -476,7 +476,7 @@ export default { // 样式相关 baseRowHeight: 50, - baseRowChartHeight: 51, + baseRowChartHeight: 50, rowHeights: {}, selectTeamOptions: [], selectEquipOptions: [], @@ -666,6 +666,16 @@ export default { // 根据时间范围动态调整时间轴宽度 return Math.max(100, this.totalHours * (100 / 24)); // 每24小时为100%宽度,最小为100% }, + // 右侧动态计算甘特图容器高度 + ganttWrapperHeightLeft() { + if (this.$route.path == '/productionSchedulingPlan/schedulingDashboard/index') { + // 根据实际页面元素计算可用高度 + return `calc(100vh - 250px - 120px)`; // 调整数值以适应您的页面布局 + } else { + // 根据实际页面元素计算可用高度 + return `calc(100vh - 250px)`; // 调整数值以适应您的页面布局 + } + }, // 动态计算甘特图容器高度 ganttWrapperHeight() { if (this.$route.path == '/productionSchedulingPlan/schedulingDashboard/index') { @@ -1057,7 +1067,7 @@ export default { // 左侧行高计算 getRowHeight(device) { - return this.baseRowHeight; + return this.baseRowHeight-1; }, // 右侧行高计算 getRowChartHeight(device) { @@ -1384,6 +1394,7 @@ export default { flex-direction: column; overflow-y: auto; /* 允许垂直滚动 */ overflow-x: auto; /* 允许水平滚动 */ + } /* 图表X轴区域样式 */ From 91b41567d4c1042c8f5aab3dd0b66c8ecfd63644 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 20:25:06 +0800 Subject: [PATCH 07/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 6f5e5aa..d054b1c 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -349,7 +349,7 @@ :current-page="currentPage" :page-size="pageSize" :page-sizes="[10, 20, 50]" - layout="total, prev, pager, next, jumper,sizes" + layout="total,sizes, prev, pager, next, jumper" :total="totalOrders" >
    From d8e9453723212a5afcfe3024193bab1ada078a2a Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 20:53:23 +0800 Subject: [PATCH 08/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index d054b1c..78a12b9 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -495,6 +495,8 @@ export default { processing: true, pending: true, }, + handleRightScrollBound:null, + handleLeftScrollBound:null, }; }, computed: { From 4d12dcb6de758edd04905ec6a9b991cced1cadd6 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 21:07:04 +0800 Subject: [PATCH 09/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/error.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/error.js b/src/error.js index d2b5611..4f2f850 100644 --- a/src/error.js +++ b/src/error.js @@ -9,7 +9,7 @@ export default { stack: err.stack, info, }); - if (process.env.NODE_ENV === 'development') { + // if (process.env.NODE_ENV === 'development') { console.group('>>>>>> 错误信息 >>>>>>'); console.log(info); console.groupEnd(); @@ -19,7 +19,7 @@ export default { console.group('>>>>>> Error >>>>>>'); console.log(err); console.groupEnd(); - } + // } }; }, }; From fd65912891f8d3a09a08e4187340f3abd6c0a26a Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 21:17:59 +0800 Subject: [PATCH 10/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 78a12b9..e895b0a 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -466,7 +466,7 @@ export default { // 分页参数 currentPage: 1, - pageSize: 10, + pageSize: 6, // 提示框相关 tooltipVisible: false, @@ -698,12 +698,12 @@ export default { this.$nextTick(() => { this.calcCurrentTimePosition(); // 添加滚动事件监听器 - if (this.$refs.timelineContainerTest) { - this.$refs.timelineContainerTest.addEventListener('scroll', this.handleRightScrollBound); - } - if (this.$refs.leftScrollContainer) { - this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); - } + // if (this.$refs.timelineContainerTest) { + // this.$refs.timelineContainerTest.addEventListener('scroll', this.handleRightScrollBound); + // } + // if (this.$refs.leftScrollContainer) { + // this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); + // } }); // 定时更新当前时间线位置 @@ -713,17 +713,17 @@ export default { }, created() { // 绑定方法,确保this指向正确 - this.handleRightScrollBound = this.handleRightScroll.bind(this); - this.handleLeftScrollBound = this.handleLeftScroll.bind(this); + // this.handleRightScrollBound = this.handleRightScroll.bind(this); + // this.handleLeftScrollBound = this.handleLeftScroll.bind(this); }, beforeDestroy() { // 移除事件监听器 - if (this.$refs.timelineContainerTest) { - this.$refs.timelineContainerTest.removeEventListener('scroll', this.handleRightScrollBound); - } - if (this.$refs.leftScrollContainer) { - this.$refs.leftScrollContainer.removeEventListener('scroll', this.handleLeftScrollBound); - } + // if (this.$refs.timelineContainerTest) { + // this.$refs.timelineContainerTest.removeEventListener('scroll', this.handleRightScrollBound); + // } + // if (this.$refs.leftScrollContainer) { + // this.$refs.leftScrollContainer.removeEventListener('scroll', this.handleLeftScrollBound); + // } }, methods: { // 右侧滚动时同步左侧滚动 From 7fd6ff31a7dee429dfdf6ab42f9cf97b391603aa Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 21:36:33 +0800 Subject: [PATCH 11/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index e895b0a..26da7a4 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -297,11 +297,11 @@ :key="taskIndex" class="task-bar" :class="{ - 'task-bar-narrow': getWidthPercent(task.startTime, task.endTime) < 6, + 'task-bar-narrow': getWidthPercent(task.planStartTime, task.planEndTime) < 6, }" :style="{ - left: `${getPositionPercent(task.startTime)}%`, - width: `${getWidthPercent(task.startTime, task.endTime)}%`, + left: `${getPositionPercent(task.planStartTime)}%`, + width: `${getWidthPercent(task.planStartTime, task.planEndTime)}%`, backgroundColor: getStatusColor(task), top: `${getLayerOffset( layerIndex, @@ -318,7 +318,7 @@ >
    {{ task.processName }} @@ -466,7 +466,7 @@ export default { // 分页参数 currentPage: 1, - pageSize: 6, + pageSize: 10, // 提示框相关 tooltipVisible: false, @@ -698,12 +698,12 @@ export default { this.$nextTick(() => { this.calcCurrentTimePosition(); // 添加滚动事件监听器 - // if (this.$refs.timelineContainerTest) { - // this.$refs.timelineContainerTest.addEventListener('scroll', this.handleRightScrollBound); - // } - // if (this.$refs.leftScrollContainer) { - // this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); - // } + if (this.$refs.timelineContainerTest) { + this.$refs.timelineContainerTest.addEventListener('scroll', this.handleRightScrollBound); + } + if (this.$refs.leftScrollContainer) { + this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); + } }); // 定时更新当前时间线位置 @@ -713,17 +713,17 @@ export default { }, created() { // 绑定方法,确保this指向正确 - // this.handleRightScrollBound = this.handleRightScroll.bind(this); - // this.handleLeftScrollBound = this.handleLeftScroll.bind(this); + this.handleRightScrollBound = this.handleRightScroll.bind(this); + this.handleLeftScrollBound = this.handleLeftScroll.bind(this); }, beforeDestroy() { // 移除事件监听器 - // if (this.$refs.timelineContainerTest) { - // this.$refs.timelineContainerTest.removeEventListener('scroll', this.handleRightScrollBound); - // } - // if (this.$refs.leftScrollContainer) { - // this.$refs.leftScrollContainer.removeEventListener('scroll', this.handleLeftScrollBound); - // } + if (this.$refs.timelineContainerTest) { + this.$refs.timelineContainerTest.removeEventListener('scroll', this.handleRightScrollBound); + } + if (this.$refs.leftScrollContainer) { + this.$refs.leftScrollContainer.removeEventListener('scroll', this.handleLeftScrollBound); + } }, methods: { // 右侧滚动时同步左侧滚动 @@ -1189,6 +1189,7 @@ export default { } // timeStr 格式是 "YYYY-MM-DD HH:mm" 如 "2025-12-25 18:35" + console.log('timeStr',timeStr) const [datePart, timePart] = timeStr.split(' '); const [year, month, day] = datePart.split('-').map(Number); const [hours, minutes] = timePart.split(':').map(Number); From 6a223df5d2950bd586cb7a4730347326e92a8940 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 21:50:20 +0800 Subject: [PATCH 12/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 26da7a4..e50a9a1 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -1314,7 +1314,7 @@ export default { /* 左侧信息列表样式 */ .info-list { - width: 330px; + width: 350px; background-color: #f8f9fa; flex-shrink: 0; display: flex; From 888822130b1b433ec530d13f5706cfdba0081c47 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 21:53:15 +0800 Subject: [PATCH 13/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index e50a9a1..a1e6d9f 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -1314,7 +1314,7 @@ export default { /* 左侧信息列表样式 */ .info-list { - width: 350px; + width: 370px; background-color: #f8f9fa; flex-shrink: 0; display: flex; From 2a406f48914ae121b8fd07156485c7612b63f073 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 21:53:31 +0800 Subject: [PATCH 14/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index a1e6d9f..ef1284e 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -1314,7 +1314,7 @@ export default { /* 左侧信息列表样式 */ .info-list { - width: 370px; + width: 360px; background-color: #f8f9fa; flex-shrink: 0; display: flex; From 30bb597b6309333f1b96d7ae0e638d6829223dbc Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Fri, 26 Dec 2025 22:01:12 +0800 Subject: [PATCH 15/36] =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E5=B7=A5=E5=BA=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingDashboard/index.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index ef1284e..5a6d108 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -318,7 +318,7 @@ >
    {{ task.processName }} From 9b2454258287fc511fa108495200c5058ec2f21e Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Sat, 27 Dec 2025 09:44:58 +0800 Subject: [PATCH 16/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E6=96=87=E5=AD=97=E5=B1=95=E7=A4=BA=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 34 +++++++------------ 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 5a6d108..8309ade 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -297,7 +297,7 @@ :key="taskIndex" class="task-bar" :class="{ - 'task-bar-narrow': getWidthPercent(task.planStartTime, task.planEndTime) < 6, + 'task-bar-narrow': getWidthPercent(task.planStartTime, task.planEndTime) < 1, }" :style="{ left: `${getPositionPercent(task.planStartTime)}%`, @@ -318,17 +318,13 @@ >
    {{ task.processName }}
    {{ task.processName }} @@ -1376,8 +1372,6 @@ export default { .info-item { display: flex; height: 100%; - - /* padding: 5px; */ } .info-cell { @@ -1531,7 +1525,6 @@ export default { top: 0px; bottom: 0; width: 2px; - /* background-color: #ff4d4f; */ transform: translateX(-50%); z-index: 10; height: calc(100vh - 130px); @@ -1544,9 +1537,6 @@ export default { position: relative; overflow-y: auto; overflow-x: auto; - /* 预留横向滚动条高度 */ - /* padding-bottom: 16px; - margin-bottom: -16px; */ } .grid-lines { @@ -1570,7 +1560,6 @@ export default { position: relative; width: 100%; min-height: 100%; - /* height:500px; */ overflow-x: hidden; } @@ -1612,10 +1601,11 @@ export default { width: 100%; height: 100%; text-align: center; + display: inline-block; + transform: scale(0.7); } .task-label-txt { - position: absolute; - /* left: 2px; */ + position: absolute; font-size: 9px; color: white; white-space: nowrap; @@ -1623,10 +1613,14 @@ export default { text-overflow: ellipsis; max-width: 95%; text-align: center; + /* 正确的居中方式 */ + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } .task-label-txt-inside { - top: 50%; - transform: translateY(-50%); + } .task-overlay-text { position: absolute; @@ -1697,9 +1691,6 @@ export default { /* 分页样式 */ .pagination-container { - /* position: fixed; */ - /* right: 20px; - bottom: 20px; */ height: 35px; margin-top: 15px; background-color: #fff; /* 增加背景色避免与内容重叠时看不清 */ @@ -1707,7 +1698,6 @@ export default { z-index: 10; float: right; width: calc(100% - 20px); - /* width:100%; */ } :deep(.el-pagination) { float: right; From a488488a6d0b93138276d747175cbce951f26b06 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Sat, 27 Dec 2025 10:10:22 +0800 Subject: [PATCH 17/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 145 ++++++++++++++++-- 1 file changed, 133 insertions(+), 12 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 8309ade..63d4505 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -152,7 +152,7 @@
    -
    +
    @@ -193,7 +193,11 @@
    -
    +
    @@ -323,9 +327,21 @@ >{{ task.processName }}
    + +
    {{ task.processName }}
    @@ -491,11 +507,18 @@ export default { processing: true, pending: true, }, - handleRightScrollBound:null, - handleLeftScrollBound:null, + handleRightScrollBound: null, + handleLeftScrollBound: null, }; }, computed: { + // 通过 Vue Router 获取查询参数 + tsId() { + return this.$route.query.tsId || ''; + }, + tsName() { + return this.$route.query.tsName || ''; + }, // 计算基准开始时间(今天0点) baseDate() { if (this.formLabelAlign.timeRange && this.formLabelAlign.timeRange.length === 2) { @@ -685,6 +708,16 @@ export default { } }, }, + watch: { + // 监听参数变化 + '$route.query': { + handler(newQuery) { + console.log('参数变化:', newQuery); + this.handleParamsChange(); + }, + immediate: true + } + }, mounted() { this.getSelectTeam(); this.getSelectEquip(); @@ -701,6 +734,7 @@ export default { this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); } }); + // 定时更新当前时间线位置 // setInterval(() => { @@ -722,6 +756,96 @@ export default { } }, methods: { + handleParamsChange() { + // 参数变化时的处理逻辑 + console.log('接收到的参数:', { + tsId: this.tsId, + tsName: this.tsName, + userId: this.userId, + userName: this.userName, + timestamp: this.timestamp + }); + + this.formLabelAlign.teamId = this.tsId + this.formLabelAlign.teamName = this.tsName + // 根据参数加载数据 + this.getData(); + }, + // 计算重叠的窄任务的垂直偏移量 + getNarrowTaskOffset(orderWoCode, taskIndex, layerIndex) { + const tasks = this.getDeviceTasks(orderWoCode); + const currentTask = tasks[taskIndex]; + + // 获取当前任务的时间段 + const currentStart = this.parseTimeToHours(currentTask.planStartTime); + const currentEnd = this.parseTimeToHours(currentTask.planEndTime); + const currentWidth = this.getWidthPercent(currentTask.planStartTime, currentTask.planEndTime); + + // 如果宽度大于等于1%,不需要偏移 + if (currentWidth >= 1) { + return 0; + } + + // 查找在同一时间段内的其他窄任务 + const overlappingTasks = []; + for (let i = 0; i < tasks.length; i++) { + const task = tasks[i]; + const taskWidth = this.getWidthPercent(task.planStartTime, task.planEndTime); + + if (taskWidth < 1) { + // 只考虑窄任务 + const taskStart = this.parseTimeToHours(task.planStartTime); + const taskEnd = this.parseTimeToHours(task.planEndTime); + + // 检查时间是否重叠(考虑浮点数精度) + if (Math.max(currentStart, taskStart) <= Math.min(currentEnd, taskEnd) + 0.01) { + overlappingTasks.push({ index: i, task, start: taskStart, end: taskEnd }); + } + } + } + + // 按开始时间排序 + overlappingTasks.sort((a, b) => a.start - b.start); + + // 创建层来分配任务,避免同一层中的任务重叠 + const layers = []; + for (const overlapTask of overlappingTasks) { + let assigned = false; + + // 尝试将任务分配到现有层 + for (let layerIdx = 0; layerIdx < layers.length; layerIdx++) { + const lastTask = layers[layerIdx][layers[layerIdx].length - 1]; + // 检查是否与该层最后一个任务重叠 + if ( + Math.max(lastTask.start, overlapTask.start) > Math.min(lastTask.end, overlapTask.end) + ) { + // 不重叠,可以分配到这一层 + layers[layerIdx].push(overlapTask); + assigned = true; + break; + } + } + + // 如果没有合适的层,创建新层 + if (!assigned) { + layers.push([overlapTask]); + } + } + + // 找到当前任务所在的层索引 + const currentTaskLayerIndex = layers.findIndex(layer => + layer.some(item => item.index === taskIndex) + ); + + // 根据层索引返回偏移量 + const offsetStep = 20; // 每个任务之间的偏移量 + return currentTaskLayerIndex * offsetStep; + }, + + // 检查任务是否为窄任务 + isNarrowTask(task) { + return this.getWidthPercent(task.planStartTime, task.planEndTime) < 1; + }, // 右侧滚动时同步左侧滚动 handleRightScroll(event) { if (this.$refs.leftScrollContainer) { @@ -762,6 +886,7 @@ export default { if (this.legendStatus.pending) { this.formLabelAlign.planStatusList.push('1'); } + this.handleParamsChange() this.getData(); }, @@ -1065,7 +1190,7 @@ export default { // 左侧行高计算 getRowHeight(device) { - return this.baseRowHeight-1; + return this.baseRowHeight - 1; }, // 右侧行高计算 getRowChartHeight(device) { @@ -1185,7 +1310,6 @@ export default { } // timeStr 格式是 "YYYY-MM-DD HH:mm" 如 "2025-12-25 18:35" - console.log('timeStr',timeStr) const [datePart, timePart] = timeStr.split(' '); const [year, month, day] = datePart.split('-').map(Number); const [hours, minutes] = timePart.split(':').map(Number); @@ -1391,7 +1515,6 @@ export default { flex-direction: column; overflow-y: auto; /* 允许垂直滚动 */ overflow-x: auto; /* 允许水平滚动 */ - } /* 图表X轴区域样式 */ @@ -1601,11 +1724,11 @@ export default { width: 100%; height: 100%; text-align: center; - display: inline-block; + display: inline-block; transform: scale(0.7); } .task-label-txt { - position: absolute; + position: absolute; font-size: 9px; color: white; white-space: nowrap; @@ -1617,10 +1740,8 @@ export default { top: 50%; left: 50%; transform: translate(-50%, -50%); - } .task-label-txt-inside { - } .task-overlay-text { position: absolute; @@ -1634,7 +1755,7 @@ export default { z-index: 10; transform: none; min-width: max-content; - pointer-events: none; /* 避免影响鼠标事件 */ + pointer-events: none; display: inline-block; transform: scale(0.7); } From f86eb11ff3b724a32453e677065ae3bcff7db673 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Sat, 27 Dec 2025 13:19:42 +0800 Subject: [PATCH 18/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BC=98=E5=8C=96=E5=92=8C=E6=8E=92=E4=BA=A7?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=AD=97=E6=AE=B5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/index.vue | 114 ++++++++++++------ .../schedulingException/index.vue | 2 +- 2 files changed, 76 insertions(+), 40 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 63d4505..68fafe9 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -174,16 +174,20 @@
    - {{ order.woCode }}/ - {{ order.partCode }} + {{ order.woCode }} + {{ order.partCode }}
    -
    - {{ order.batchNo }} / {{ order.makeQty }} / {{ order.productIdent }} / {{ order.priorityAps }} +
    +
    + {{ order.batchNo }} + {{ order.makeQty }} + {{ order.productIdent }} + {{ + order.priorityAps + }} +
    @@ -333,14 +337,7 @@ v-if="getWidthPercent(task.planStartTime, task.planEndTime) < 1" class="task-overlay-text" :style="{ - top: `${ - -20 - - getNarrowTaskOffset( - order.woCode, - layer.findIndex(t => t === task), - layerIndex - ) - }px`, + top: `${getNarrowTaskOffsetByLayer(layerIndex)}px`, }" > {{ task.processName }} @@ -511,6 +508,16 @@ export default { handleLeftScrollBound: null, }; }, + watch: { + // 监听参数变化 + '$route.query': { + handler(newQuery) { + console.log('参数变化:', newQuery); + this.handleParamsChange(); + }, + immediate: true, + }, + }, computed: { // 通过 Vue Router 获取查询参数 tsId() { @@ -708,21 +715,12 @@ export default { } }, }, - watch: { - // 监听参数变化 - '$route.query': { - handler(newQuery) { - console.log('参数变化:', newQuery); - this.handleParamsChange(); - }, - immediate: true - } - }, + mounted() { this.getSelectTeam(); this.getSelectEquip(); this.getProcessSet(); - this.updateTime(); + // this.updateTime(); this.updateTimeAxis(); this.$nextTick(() => { this.calcCurrentTimePosition(); @@ -734,7 +732,6 @@ export default { this.$refs.leftScrollContainer.addEventListener('scroll', this.handleLeftScrollBound); } }); - // 定时更新当前时间线位置 // setInterval(() => { @@ -756,18 +753,17 @@ export default { } }, methods: { + // 根据层索引确定窄任务文本的垂直偏移 + getNarrowTaskOffsetByLayer(layerIndex) { + // 偶数层在上方显示(负值),奇数层在下方显示(正值) + const offset = layerIndex % 2 === 0 ? -20 : 15; // -20px 在上方,5px 在下方 + return offset; + }, handleParamsChange() { // 参数变化时的处理逻辑 - console.log('接收到的参数:', { - tsId: this.tsId, - tsName: this.tsName, - userId: this.userId, - userName: this.userName, - timestamp: this.timestamp - }); - - this.formLabelAlign.teamId = this.tsId - this.formLabelAlign.teamName = this.tsName + this.formLabelAlign.teamId = this.tsId; + this.formLabelAlign.teamName = this.tsName; + this.updateTime(); // 根据参数加载数据 this.getData(); }, @@ -886,7 +882,6 @@ export default { if (this.legendStatus.pending) { this.formLabelAlign.planStatusList.push('1'); } - this.handleParamsChange() this.getData(); }, @@ -1755,7 +1750,7 @@ export default { z-index: 10; transform: none; min-width: max-content; - pointer-events: none; + pointer-events: none; display: inline-block; transform: scale(0.7); } @@ -1896,4 +1891,45 @@ export default { font-size: 10px; white-space: nowrap; } +.info-item-content { + display: flex; + width: 100%; +} +/* 左侧信息颜色区分 */ +.order-code { + color: #1a73e8; /* 谷歌蓝 - 专业稳重 */ + font-weight: bold; + +} + +.part-code { + color: #34a853; /* 谷歌绿 - 清新自然 */ + font-weight: bold; +} + +.batch-no { + color: #fbbc05; /* 谷歌黄 - 温暖明亮 */ + font-weight: bold; + flex: 0 0 100px; /* 固定宽度80px,不伸缩 */ +} + +.make-qty { + color: #ea4335; /* 谷歌红 - 醒目突出 */ + font-weight: bold; + flex: 1; /* 均匀分配剩余空间 */ +} + +.product-ident { + color: #9c27b0; /* 紫色 - 优雅独特 */ + font-weight: bold; + flex: 1; /* 均匀分配剩余空间 */ +} + +.priority-aps { + color: #ff6d01; /* 橙色 - 温暖活力 */ + font-weight: bold; + flex: 0 0 90px; /* 固定宽度80px,不伸缩 */ + text-align:right; + padding-right:15px +} diff --git a/src/views/productionSchedulingPlan/schedulingException/index.vue b/src/views/productionSchedulingPlan/schedulingException/index.vue index 2b1e66d..a3b2b9a 100644 --- a/src/views/productionSchedulingPlan/schedulingException/index.vue +++ b/src/views/productionSchedulingPlan/schedulingException/index.vue @@ -114,7 +114,7 @@ export default { // span: 12, // }, { - label: '调度员', + label: '计划员', prop: 'planUser', search: false, sortable: true, From 9b37f8792a7110db343a313c2a3cb39177a5cbe3 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Sat, 27 Dec 2025 15:10:43 +0800 Subject: [PATCH 19/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BC=98=E5=8C=96=E5=92=8C=E6=8E=92=E4=BA=A7?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=AD=97=E6=AE=B5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../productionSchedulingPlan/schedulingException/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/productionSchedulingPlan/schedulingException/index.vue b/src/views/productionSchedulingPlan/schedulingException/index.vue index a3b2b9a..e4140ad 100644 --- a/src/views/productionSchedulingPlan/schedulingException/index.vue +++ b/src/views/productionSchedulingPlan/schedulingException/index.vue @@ -141,7 +141,7 @@ export default { }, { label: '订单优先级', - prop: 'priorityAps', + prop: 'priorityApsStr', search: false, sortable: true, width: 150, From 201352d12e5c188e20b68c843d8fcde2bc744536 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Sat, 27 Dec 2025 16:36:46 +0800 Subject: [PATCH 20/36] =?UTF-8?q?=E7=83=A7=E7=BB=93=E6=B8=A9=E5=BA=A6?= =?UTF-8?q?=E6=9B=B2=E7=BA=BF=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4=E9=A1=B5=E9=9D=A2=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/productionSchedulingPlan/basic.js | 47 +++ .../basic/sintTempCurve.vue | 303 ++++++++++++++++++ 2 files changed, 350 insertions(+) create mode 100644 src/views/productionSchedulingPlan/basic/sintTempCurve.vue diff --git a/src/api/productionSchedulingPlan/basic.js b/src/api/productionSchedulingPlan/basic.js index b4a336d..ca7b525 100644 --- a/src/api/productionSchedulingPlan/basic.js +++ b/src/api/productionSchedulingPlan/basic.js @@ -332,4 +332,51 @@ export const getDetailOutsourceProcess = params => { method: 'get', params: params, }); +}; + +// 烧结温度曲线 增删改查 +export const getListSintTempCurve = (current, size, params) => { + return request({ + url: '/blade-scheduling/sintTempCurve/page', + method: 'get', + params: { + ...params, + current, + size, + }, + }); +}; +export const removeSintTempCurve = ids => { + return request({ + url: '/blade-scheduling/sintTempCurve/remove', + method: 'post', + params: { + ids, + }, + }); +}; + +export const addSintTempCurve = row => { + return request({ + url: '/blade-scheduling/sintTempCurve/save', + method: 'post', + data: row, + }); +}; + +export const updateSintTempCurve = row => { + return request({ + url: '/blade-scheduling/sintTempCurve/update', + method: 'post', + data: row, + }); +}; + + +export const getDetailSintTempCurve = params => { + return request({ + url: '/blade-scheduling/outsourceProcess/detail', + method: 'get', + params: params, + }); }; \ No newline at end of file diff --git a/src/views/productionSchedulingPlan/basic/sintTempCurve.vue b/src/views/productionSchedulingPlan/basic/sintTempCurve.vue new file mode 100644 index 0000000..490142f --- /dev/null +++ b/src/views/productionSchedulingPlan/basic/sintTempCurve.vue @@ -0,0 +1,303 @@ + + + From e64b0867b240da35b9173cea5b09df4a7a57953a Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Mon, 29 Dec 2025 11:03:56 +0800 Subject: [PATCH 21/36] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/equipmentCapacity.vue | 11 +++++- .../basic/personnelCapacity.vue | 11 ++++++ .../basic/principalProducer.vue | 10 ++++++ .../basic/qualityGrade.vue | 13 +++++-- .../basic/sintTempCurve.vue | 34 ++++++------------- .../schedulingDashboard/index.vue | 22 ++++++------ 6 files changed, 63 insertions(+), 38 deletions(-) diff --git a/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue b/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue index 6b66286..6e4d90d 100644 --- a/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue +++ b/src/views/productionSchedulingPlan/basic/equipmentCapacity.vue @@ -17,6 +17,7 @@ @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" + :before-open="beforeOpen" > @@ -170,7 +171,7 @@ export default { }, { label: '普通设备', - value: 1, + value: '1', }, ], }, @@ -265,6 +266,14 @@ export default { }; }, methods: { + beforeOpen(done, type) { + if (['edit', 'view'].includes(type)) { + // this.form.processId = this.form.processId+'' + // this.form.craftId = this.form.craftId+'' + this.form.workCenterId = this.form.workCenterId+'' + } + done(); + }, onChangeData(val, type) { if (val&&type == 'workCenterId') { this.form.workCenterName = val.wcCode; diff --git a/src/views/productionSchedulingPlan/basic/personnelCapacity.vue b/src/views/productionSchedulingPlan/basic/personnelCapacity.vue index 3e39645..49fc7a1 100644 --- a/src/views/productionSchedulingPlan/basic/personnelCapacity.vue +++ b/src/views/productionSchedulingPlan/basic/personnelCapacity.vue @@ -17,6 +17,8 @@ @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" + :before-open="beforeOpen" + > @@ -191,6 +193,7 @@ export default { search: false, sortable: true, span: 12, + width:250, labelWidth: 220, type: 'number', }, @@ -210,6 +213,14 @@ export default { }; }, methods: { + beforeOpen(done, type) { + if (['edit', 'view'].includes(type)) { + this.form.processId = this.form.processId+'' + this.form.craftId = this.form.craftId+'' + this.form.workCenterId = this.form.workCenterId+'' + } + done(); + }, onChangeData(val, type) { if (val && type == 'workCenterId') { this.form.workCenterName = val.wcName; diff --git a/src/views/productionSchedulingPlan/basic/principalProducer.vue b/src/views/productionSchedulingPlan/basic/principalProducer.vue index 2c6d4aa..4c686b7 100644 --- a/src/views/productionSchedulingPlan/basic/principalProducer.vue +++ b/src/views/productionSchedulingPlan/basic/principalProducer.vue @@ -17,6 +17,7 @@ @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" + :before-open="beforeOpen" > @@ -149,6 +150,15 @@ export default { }; }, methods: { + + beforeOpen(done, type) { + if (['edit', 'view'].includes(type)) { + this.form.processId = this.form.processId+'' + // this.form.craftId = this.form.craftId+'' + this.form.workCenterId = this.form.workCenterId+'' + } + done(); + }, onChangeData(val, type) { if (val&&type == 'processId') { this.form.processName = val.name; diff --git a/src/views/productionSchedulingPlan/basic/qualityGrade.vue b/src/views/productionSchedulingPlan/basic/qualityGrade.vue index a2415ed..d4f6864 100644 --- a/src/views/productionSchedulingPlan/basic/qualityGrade.vue +++ b/src/views/productionSchedulingPlan/basic/qualityGrade.vue @@ -17,6 +17,7 @@ @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" + :before-open="beforeOpen" > @@ -106,15 +107,15 @@ export default { dicData:[ { label:'军品', - value:1 + value:'1' }, { label:'商飞', - value:2 + value:'2' }, { label:'宇航', - value:3 + value:'3' } ] }, @@ -126,6 +127,12 @@ export default { }; }, methods: { + beforeOpen(done, type) { + if (['edit', 'view'].includes(type)) { + + } + done(); + }, rowSave(row, done, loading) { addGualityGrade(row).then( () => { diff --git a/src/views/productionSchedulingPlan/basic/sintTempCurve.vue b/src/views/productionSchedulingPlan/basic/sintTempCurve.vue index 490142f..b4e7ce6 100644 --- a/src/views/productionSchedulingPlan/basic/sintTempCurve.vue +++ b/src/views/productionSchedulingPlan/basic/sintTempCurve.vue @@ -17,6 +17,7 @@ @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad" + :before-open="beforeOpen" > @@ -115,32 +116,12 @@ export default { hide: true, display: false, }, - { - label: '设备编码', - prop: 'equipCode', - search: true, - sortable: true, - span: 12, - width: 120, - type: 'select', - filterable: true, - dicUrl: '/blade-scheduling/equipment/findList', - props: { - label: 'deviceCode', - value: 'deviceCode', - }, - change: val => { - this.onChangeData(val.item, 'equipName'); - }, - }, { label: '设备名称', prop: 'equipName', search: false, sortable: true, span: 12, - width: 120, - disabled: true, }, { @@ -149,7 +130,6 @@ export default { search: false, sortable: true, span: 12, - width: 120, type: 'select', dicData: [ { @@ -158,7 +138,7 @@ export default { }, { label: '普通设备', - value: 1, + value: '1', }, ], }, @@ -168,8 +148,6 @@ export default { search: false, sortable: true, span: 12, - hide: true, - display: false, }, { @@ -195,6 +173,14 @@ export default { }; }, methods: { + beforeOpen(done, type) { + if (['edit', 'view'].includes(type)) { + this.form.processId = this.form.processId+'' + // this.form.craftId = this.form.craftId+'' + // this.form.workCenterId = this.form.workCenterId+'' + } + done(); + }, onChangeData(val, type) { if (val && type == 'workCenterId') { this.form.workCenterName = val.wcCode; diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index 68fafe9..c2926f0 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -108,6 +108,7 @@ 搜索 清空 + 导出
    @@ -117,9 +118,9 @@
    -
    +
    - 进行中 + + 进行中
    - 已完成 + 已完成
    @@ -1116,10 +1118,10 @@ export default { getStatusColor(row) { switch (row.planStatus) { case '5': - return '#28a745'; + return '#007bff'; case '2': case '3': - return '#007bff'; + return '#28a745'; case '1': return '#6c757d'; case '6': @@ -1131,10 +1133,10 @@ export default { getStatusTagType(row) { switch (row.planStatus) { case '5': - return 'success'; + return 'primary'; case '2': case '3': - return 'primary'; + return 'success'; case '1': return 'info'; case '6': From 58d24db1b2c7d723ca4cbd37c07efee371f4a8d3 Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Mon, 29 Dec 2025 13:42:57 +0800 Subject: [PATCH 22/36] =?UTF-8?q?=E6=8E=92=E4=BA=A7=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/page/index.js | 2 +- .../schedulingDashboard/container.vue | 1949 +++++++++++++++++ .../schedulingDashboard/index.vue | 1946 +--------------- .../schedulingDashboard/indexMenu.vue | 15 + 4 files changed, 1977 insertions(+), 1935 deletions(-) create mode 100644 src/views/productionSchedulingPlan/schedulingDashboard/container.vue create mode 100644 src/views/productionSchedulingPlan/schedulingDashboard/indexMenu.vue diff --git a/src/router/page/index.js b/src/router/page/index.js index 9b9d33a..96837bd 100644 --- a/src/router/page/index.js +++ b/src/router/page/index.js @@ -72,7 +72,7 @@ export default [ }, { path: '/SCHEDULING_DASHBOARD', - component: () => import(/* webpackChunkName: "page" */ '@/views/productionSchedulingPlan/schedulingDashboard/index.vue'), + component: () => import(/* webpackChunkName: "page" */ '@/views/productionSchedulingPlan/schedulingDashboard/container.vue'), name: '排产看板', meta: { keepAlive: true, diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/container.vue b/src/views/productionSchedulingPlan/schedulingDashboard/container.vue new file mode 100644 index 0000000..853c0ab --- /dev/null +++ b/src/views/productionSchedulingPlan/schedulingDashboard/container.vue @@ -0,0 +1,1949 @@ + + + + + diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue index c2926f0..959bc16 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/index.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/index.vue @@ -1,1937 +1,15 @@ - - - +import dashboardIndex from "./container.vue"; + export default { + components: { dashboardIndex }, + data() { + return {}; + }, + methods: {} + }; + \ No newline at end of file diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/indexMenu.vue b/src/views/productionSchedulingPlan/schedulingDashboard/indexMenu.vue new file mode 100644 index 0000000..959bc16 --- /dev/null +++ b/src/views/productionSchedulingPlan/schedulingDashboard/indexMenu.vue @@ -0,0 +1,15 @@ + + \ No newline at end of file From 155241d43f1b1587d52361fba70459bc8831324d Mon Sep 17 00:00:00 2001 From: zhangdi <15053473693@163.com> Date: Mon, 29 Dec 2025 15:26:30 +0800 Subject: [PATCH 23/36] =?UTF-8?q?=E6=90=9C=E7=B4=A0=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=8A=A0loading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedulingDashboard/container.vue | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/views/productionSchedulingPlan/schedulingDashboard/container.vue b/src/views/productionSchedulingPlan/schedulingDashboard/container.vue index 853c0ab..902588b 100644 --- a/src/views/productionSchedulingPlan/schedulingDashboard/container.vue +++ b/src/views/productionSchedulingPlan/schedulingDashboard/container.vue @@ -1,5 +1,5 @@