From 43d86830f4696c3ba2250a961d26377e1ff6cc32 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 17 十二月 2025 10:39:43 +0800
Subject: [PATCH] 1、 查询是否除膜优化
---
UI-Project/src/views/EngineerScheduling/engineerScheduling.vue | 189 ++++++++++++++++++++++++++++++++---------------
1 files changed, 129 insertions(+), 60 deletions(-)
diff --git a/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue b/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
index 62dcc17..53fbbc5 100644
--- a/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
+++ b/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
@@ -92,10 +92,16 @@
const fetchTargetKeys = async () => {
try {
let type = 1;
- if (activeTab.value === 'cutting2') type = 2;
- else if (activeTab.value === 'tempered') type = 3;
-
- const response = await request.post('/loadGlass/optimizeProject/engineerScheduling', {type})
+ let response;
+ if (activeTab.value === 'cutting2') {
+ type = 2;
+ response = await request.post('/loadGlass/optimizeProject/engineerScheduling', {type})
+ } else if (activeTab.value === 'tempered') {
+ type = 3;
+ response = await request.post('/cacheVerticalGlass/bigStorageCageDetails/queryTemperingOrder')
+ } else {
+ response = await request.post('/loadGlass/optimizeProject/engineerScheduling', {type})
+ }
if (response.code === 200) {
// 鍙充晶琛ㄦ牸鏁版嵁
rightDataSource.value = response.data.map((item: any) => ({
@@ -151,6 +157,11 @@
const saveScheduling = async () => {
try {
let type = 1;
+ // 1. 鍔ㄦ�佺‘瀹� type 鍜屾帴鍙h矾寰勶紙鏍规嵁 activeTab 鍒囨崲锛�
+ const apiPath = activeTab.value === 'tempered'
+ ? 'updateEngineerScheduling'
+ : 'updateCuttingLayout';
+
if (activeTab.value === 'cutting2') type = 2;
else if (activeTab.value === 'tempered') type = 3;
@@ -161,8 +172,7 @@
}))
const response = await request.post(
- `/loadGlass/optimizeProject/updateEngineerScheduling?type=${type}`,
- engineerList
+ `/loadGlass/optimizeProject/${apiPath}?type=${type}`, engineerList
)
if (response.code === 200) {
@@ -182,7 +192,7 @@
const resetScheduling = async () => {
await fetchDataSource()
await fetchTargetKeys()
- ElMessage.info(t('宸插彇娑�'))
+ ElMessage.info(t('scheduling.cancelled'))
}
// 鐩戝惉鏍囩椤靛垏鎹紝鏍规嵁涓嶅悓鏍囩椤靛姞杞藉搴旂殑鏁版嵁
@@ -214,17 +224,24 @@
return index === rightDataSource.value.length - 1;
};
-// 鍒ゆ柇涓婃柟鏄惁鏈夎繘琛屼腑鐨勮锛坰tate=100琛ㄧず杩涜涓紝鏍规嵁瀹為檯鐘舵�佸�艰皟鏁达級
+// 鍒ゆ柇涓婃柟鏄惁鏈夎繘琛屼腑鐨勮锛堜慨澶嶏細浣跨敤姝g‘鐨勭姸鎬佸��1锛�
const hasInProgressAbove = (row: TransferDataItem) => {
const index = rightDataSource.value.findIndex(item => item.key === row.key);
// 鏌ユ壘褰撳墠琛屼笂鏂规槸鍚︽湁杩涜涓殑浠诲姟
- return rightDataSource.value.some((item, i) => i < index && item.state === 100);
+ return rightDataSource.value.some((item, i) => i < index && item.state === 1);
};
// 鍚戜笂绉诲姩涓�琛�
const moveUp = (row: TransferDataItem) => {
const index = rightDataSource.value.findIndex(item => item.key === row.key);
if (index > 0) {
+ // 妫�鏌ユ槸鍚︿細瓒呰繃杩涜涓殑浠诲姟
+ const prevItem = rightDataSource.value[index - 1];
+ if (prevItem.state === 1) {
+ // 鐩存帴涓婃柟鏄繘琛屼腑浠诲姟锛屾彁绀虹敤鎴蜂笉鍙秴杩�
+ ElMessage.warning('鎿嶄綔涓嶅彲瓒呰繃杩涜涓殑浠诲姟');
+ return;
+ }
// 浜ゆ崲浣嶇疆
[rightDataSource.value[index], rightDataSource.value[index - 1]] =
[rightDataSource.value[index - 1], rightDataSource.value[index]];
@@ -245,27 +262,77 @@
}
};
-// 缃《锛堢Щ鍔ㄥ埌绗竴涓潪杩涜涓换鍔′笂鏂癸級
+// 鍒ゆ柇鏄惁鍙互缃《锛堝嵆鏄惁鏈夊彲缃《鐨勪綅缃級
+const canMoveToTop = (row: TransferDataItem) => {
+ // 杩涜涓换鍔′笉鑳界疆椤�
+ if (row.state === 1) return false;
+
+ const index = rightDataSource.value.findIndex(item => item.key === row.key);
+ // 宸茬粡鏄涓�琛岀殑涓嶈兘缃《
+ if (index === 0) return false;
+
+ // 鏌ユ壘绗竴涓潪杩涜涓换鍔$殑浣嶇疆
+ const firstNonProgressIndex = rightDataSource.value.findIndex(item => item.state !== 1);
+
+ // 濡傛灉褰撳墠琛屽凡缁忓湪绗竴涓潪杩涜涓换鍔$殑浣嶇疆鎴栦箣鍓嶏紝鍒欎笉鑳界疆椤�
+ return index > firstNonProgressIndex;
+};
+
+// ... existing code (moveUp鍜宮oveDown鍑芥暟淇濇寔涓嶅彉)
+
+// 缃《锛堢Щ鍔ㄥ埌鎵�鏈夐潪杩涜涓换鍔$殑鏈�鍓嶉潰锛�
const moveToTop = (row: TransferDataItem) => {
const index = rightDataSource.value.findIndex(item => item.key === row.key);
if (index > 0) {
// 绉婚櫎褰撳墠琛�
const newList = rightDataSource.value.filter(item => item.key !== row.key);
- // 鏌ユ壘绗竴涓繘琛屼腑浠诲姟鐨勪綅缃�
- const firstInProgressIndex = newList.findIndex(item => item.state === 100);
- if (firstInProgressIndex === -1) {
- // 鏃犺繘琛屼腑浠诲姟锛岀洿鎺ユ坊鍔犲埌寮�澶�
- newList.unshift(row);
+ // 鏌ユ壘鎵�鏈夐潪杩涜涓换鍔$殑浣嶇疆
+ const nonProgressIndices = newList
+ .map((item, i) => ({item, index: i}))
+ .filter(item => item.item.state !== 1)
+ .map(item => item.index);
+
+ if (nonProgressIndices.length > 0) {
+ // 鏈夐潪杩涜涓换鍔★紝娣诲姞鍒扮涓�涓潪杩涜涓换鍔$殑浣嶇疆
+ newList.splice(nonProgressIndices[0], 0, row);
} else {
- // 鏈夎繘琛屼腑浠诲姟锛屾坊鍔犲埌绗竴涓繘琛屼腑浠诲姟鍚庨潰
- newList.splice(firstInProgressIndex + 1, 0, row);
+ // 鍏ㄩ儴閮芥槸杩涜涓换鍔★紝娣诲姞鍒板紑澶�
+ newList.unshift(row);
}
// 鏇存柊鏁版嵁婧�
rightDataSource.value = newList;
}
};
+// 鍒涘缓璁$畻灞炴�э紝鏍规嵁鏍囩椤佃繑鍥炰笉鍚岀殑琛ㄥご閰嶇疆
+const tableHeaders = computed(() => {
+ const baseHeaders = {
+ serial: t('scheduling.serial'),
+ projectNo: t('scheduling.projectNo'),
+ thickness: t('scheduling.thickness'),
+ glassType: t('scheduling.glassType'),
+ totalCount: t('scheduling.totalCount'),
+ totalArea: t('scheduling.totalArea'),
+ operate: t('scheduling.operate')
+ };
+ // 鏍规嵁涓嶅悓鏍囩椤佃繑鍥炰笉鍚岀殑琛ㄥご閰嶇疆
+ if (activeTab.value === 'tempered') {
+ return {
+ ...baseHeaders,
+ // 鏇存敼閽㈠寲鏍囩椤电殑鐗瑰畾琛ㄥご
+ totalCount: t('scheduling.totalFireCount'),
+ totalArea: t('scheduling.fullFireCount')
+ };
+ }
+
+ return baseHeaders;
+});
+// 鐘舵�佹牸寮忓寲鍑芥暟
+const stateFormatter = (row: any) => {
+ return row.state === 1 ? '杩涜涓�' : '鏈紑濮�';
+};
+
</script>
<template>
@@ -279,8 +346,8 @@
<!-- 琛ㄦ牸甯冨眬瀹瑰櫒 -->
<div class="table-container">
<!-- 宸︿晶琛ㄦ牸锛氬緟鎺掍骇 -->
- <div class="table-wrapper">
- <h3 class="table-title">{{ '寰呮帓浜�' }} ({{ dataSource.length }})</h3>
+ <div class="table-wrapper" v-if="activeTab !== 'tempered'">
+ <h3 class="table-title">{{ t('scheduling.unfinished') }} ({{ dataSource.length }})</h3>
<el-table
:data="dataSource"
border
@@ -288,16 +355,16 @@
height="400"
row-key="key"
>
- <el-table-column type="index" label="搴忓彿" width="55"/>
- <el-table-column prop="projectNo" label="宸ョ▼ID" width="180"/>
- <el-table-column prop="glassThickness" label="鐜荤拑鍘氬害(mm)" width="120"/>
- <el-table-column prop="glassType" label="鐜荤拑绫诲瀷" width="120"/>
- <el-table-column prop="glassTotal" label="鎬荤墖鏁�" width="90"/>
- <el-table-column prop="glassTotalArea" label="鎬婚潰绉�(銕�)" width="120"/>
- <el-table-column label="鎿嶄綔" width="120" align="center">
+ <el-table-column type="index" :label="$t('scheduling.serial')" width="55"/>
+ <el-table-column prop="projectNo" :label="$t('scheduling.projectNo')" width="150"/>
+ <el-table-column prop="glassThickness" :label="$t('scheduling.thickness')" width="120"/>
+ <el-table-column prop="glassType" :label="$t('scheduling.glassType')" width="120"/>
+ <el-table-column prop="glassTotal" :label="$t('scheduling.totalCount')" width="90"/>
+ <el-table-column prop="glassTotalArea" :label="$t('scheduling.totalArea')" width="100"/>
+ <el-table-column :label="$t('scheduling.operate')" width="90" align="center">
<template #default="{ row }">
<el-button type="primary" @click="moveToRight(row)">
- {{ t('娣诲姞') }}
+ {{ t('scheduling.add') }}
</el-button>
</template>
</el-table-column>
@@ -317,55 +384,57 @@
@row-click="(row) => fetchProjectDetail(row.key)"
highlight-current-row
>
- <el-table-column type="index" label="搴忓彿" width="55"/>
- <el-table-column prop="projectNo" label="宸ョ▼ID" width="120"/>
- <el-table-column prop="glassThickness" label="鐜荤拑鍘氬害(mm)" width="120"/>
- <el-table-column prop="glassType" label="鐜荤拑绫诲瀷" width="120"/>
- <el-table-column prop="glassTotal" label="鎬荤墖鏁�" width="90"/>
- <el-table-column prop="glassTotalArea" label="鎬婚潰绉�(銕�)" width="120"/>
- <el-table-column label="鎿嶄綔" width="300" align="center">
+ <el-table-column type="index" :label="tableHeaders.serial" width="55"/>
+ <el-table-column prop="projectNo" :label="tableHeaders.projectNo" width="120"/>
+ <el-table-column prop="glassThickness" :label="tableHeaders.thickness" width="120"/>
+ <el-table-column prop="glassType" :label="tableHeaders.glassType" width="120"/>
+ <el-table-column prop="glassTotal" :label="tableHeaders.totalCount" width="90"/>
+ <el-table-column prop="glassTotalArea" :label="tableHeaders.totalArea" width="120"/>
+ <el-table-column
+ prop="state"
+ :label="t('scheduling.state')"
+ width="90"
+ :formatter="stateFormatter"
+ />
+ <el-table-column :label="t('scheduling.operate')" :width="activeTab === 'tempered' ? 200 : 300"
+ :align="center">
<template #default="{ row }">
<div style="display: flex; gap: 5px; align-items: center;">
<el-button
+ v-if="activeTab !== 'tempered'"
type="default"
size="small"
@click="moveToLeft(row)"
+ :disabled="row.state === 1"
style="background: #ff4d4f; color: white; border-radius: 8px; min-width: 60px; display: inline-flex; justify-content: center; align-items: center;"
>
- 鍘婚櫎
+ {{ t('scheduling.remove') }}
</el-button>
-
- <!-- 鍚戜笂鎸夐挳 -->
<el-button
type="default"
size="small"
@click="moveUp(row)"
- :disabled="isFirstRow(row) || hasInProgressAbove(row)"
+ :disabled="row.state === 1 || isFirstRow(row)"
style="background: #E6F4FF; color: #1890FF; border-radius: 8px; min-width: 40px; display: inline-flex; justify-content: center; align-items: center;"
>
鈫�
</el-button>
-
- <!-- 鍚戜笅鎸夐挳 -->
<el-button
type="default"
size="small"
@click="moveDown(row)"
- :disabled="isLastRow(row)"
+ :disabled="row.state === 1 || isLastRow(row)"
style="background: #E6F4FF; color: #1890FF; border-radius: 8px; min-width: 40px; display: inline-flex; justify-content: center; align-items: center;"
>
鈫�
</el-button>
-
- <!-- 缃《鎸夐挳 -->
<el-button
- type="primary"
size="small"
@click="moveToTop(row)"
- :disabled="isFirstRow(row) || hasInProgressAbove(row)"
+ :disabled="row.state === 1 || isFirstRow(row) || !canMoveToTop(row)"
style="background: #E6F4FF; color: #1890FF; border-radius: 8px; min-width: 60px; display: inline-flex; justify-content: center; align-items: center;"
>
- 缃《
+ {{ t('scheduling.top') }}
</el-button>
</div>
</template>
@@ -393,20 +462,19 @@
class="detail-table"
height="230"
>
- <el-table-column prop="engineerId" label="宸ョ▼鍙�" width="120"/>
- <el-table-column prop="flowCardId" label="娴佺▼鍗″彿" width="150"/>
- <el-table-column prop="layer" label="灞傚彿" width="80"/>
- <el-table-column prop="glassType" label="璁㈠簭" width="80"/>
- <el-table-column prop="thickness" label="鍘氬害(mm)" width="100"/>
- <el-table-column prop="filmsid" label="鑶滅郴" width="120"/>
- <el-table-column prop="width" label="瀹�(mm)" width="90"/>
- <el-table-column prop="height" label="楂�(mm)" width="90"/>
- <el-table-column prop="glassIdCount" label="鏁伴噺" width="80"/>
- <el-table-column prop="cuttingCount" label="鍒囧壊" width="80"/>
-
- <el-table-column prop="edgingCount" label="纾ㄨ竟" width="80"/>
- <el-table-column prop="temperingCount" label="閽㈠寲" width="80"/>
- <el-table-column prop="insulatingCount" label="涓┖" width="80"/>
+ <el-table-column prop="engineerId" :label="$t('scheduling.projectNo')" width="120"/>
+ <el-table-column prop="flowCardId" :label="$t('scheduling.flowCardId')" width="150"/>
+ <el-table-column prop="layer" :label="$t('scheduling.layerCount')" width="80"/>
+ <el-table-column prop="glassType" :label="$t('scheduling.serial')" width="80"/>
+ <el-table-column prop="thickness" :label="$t('scheduling.thickness')" width="100"/>
+ <el-table-column prop="filmsid" :label="$t('scheduling.coatingType')" width="120"/>
+ <el-table-column prop="width" :label="$t('scheduling.width')" width="90"/>
+ <el-table-column prop="height" :label="$t('scheduling.height')" width="90"/>
+ <el-table-column prop="glassIdCount" :label="$t('scheduling.glassCount')" width="80"/>
+ <el-table-column prop="cuttingCount" :label="$t('scheduling.cuttingCount')" width="80"/>
+ <el-table-column prop="edgingCount" :label="$t('scheduling.edgingCount')" width="80"/>
+ <el-table-column prop="temperingCount" :label="$t('scheduling.temperingCount')" width="80"/>
+ <el-table-column prop="insulatingCount" :label="$t('scheduling.insulatingCount')" width="80"/>
</el-table>
</div>
</template>
@@ -419,6 +487,7 @@
align-items: center;
gap: 20px;
margin-bottom: 20px;
+ overflow: auto;
}
/* 璇︽儏琛ㄦ牸鏍峰紡 */
--
Gitblit v1.8.0