From e823fa5527623bc77c421e5399290b4d410d2960 Mon Sep 17 00:00:00 2001 From: Arth <65160206@go.buu.ac.th> Date: Wed, 26 Mar 2025 02:53:07 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=81=E0=B8=81=E0=B9=89=E0=B8=AA=E0=B8=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/GanttChart/GanttChart.vue | 89 ++++++------------------ 1 file changed, 23 insertions(+), 66 deletions(-) diff --git a/src/components/GanttChart/GanttChart.vue b/src/components/GanttChart/GanttChart.vue index 8808e47..af1a759 100644 --- a/src/components/GanttChart/GanttChart.vue +++ b/src/components/GanttChart/GanttChart.vue @@ -25,55 +25,29 @@ <!-- Rows: แสดงเครื่องจักรจาก Machine Store --> <div class="rows"> - <div - v-for="machine in machineStore.machines" - :key="machine.MachineID" - class="row" - :data-machine-id="machine.MachineID" - @dragover.prevent="onDragOver($event)" - @drop="onDrop($event, machine.MachineID)" - > + <div v-for="machine in machineStore.machines" :key="machine.MachineID" class="row" + :data-machine-id="machine.MachineID" @dragover.prevent="onDragOver($event)" + @drop="onDrop($event, machine.MachineID)"> <div class="machine-label"> {{ machine.name }} </div> <div class="row-timeline"> <!-- เส้นแนวตั้ง (Grid Lines) --> - <div - v-for="hour in hours" - :key="'line-' + hour" - class="vertical-line" - :style="getLineStyle(hour)" - ></div> + <div v-for="hour in hours" :key="'line-' + hour" class="vertical-line" :style="getLineStyle(hour)"></div> <!-- แสดง Queue ที่ตรงกับวันที่ (selectedDate), Page (pagenum), และ Machine --> - <div - v-for="item in filteredQueue(machine.MachineID)" - :key="item.QueueID" - class="order" - :class="{ faded: draggingQueue && draggingQueue.QueueID === item.QueueID }" - :style="getQueueStyle(item)" - > + <div v-for="item in filteredQueue(machine.MachineID)" :key="item.QueueID" class="order" + :class="{ faded: draggingQueue && draggingQueue.QueueID === item.QueueID }" :style="getQueueStyle(item)"> <!-- Handle สำหรับ Resize ด้านซ้าย --> - <div - class="resize-handle left" - @mousedown="onResizeStart($event, item, 'left')" - ></div> + <div class="resize-handle left" @mousedown="onResizeStart($event, item, 'left')"></div> <!-- ส่วนกลางของ Order ใช้สำหรับลาก และเปิด Dialog เมื่อคลิก --> - <div - class="order-content" - draggable="true" - @dragstart="onDragStart($event, item)" - @dragend="onDragEnd($event, item)" - @click.stop="openQueueDialog(item)" - > + <div class="order-content" draggable="true" @dragstart="onDragStart($event, item)" + @dragend="onDragEnd($event, item)" @click.stop="openQueueDialog(item)"> {{ item.label }} ({{ getTimeString(item.startTime) }} - {{ getTimeString(item.finishTime) }}) </div> <!-- Handle สำหรับ Resize ด้านขวา --> - <div - class="resize-handle right" - @mousedown="onResizeStart($event, item, 'right')" - ></div> + <div class="resize-handle right" @mousedown="onResizeStart($event, item, 'right')"></div> </div> </div> </div> @@ -90,13 +64,8 @@ <!-- Pagination --> <div class="pagination-container"> <transition-group name="fade" tag="div" class="pagination"> - <button - v-for="p in pages" - :key="p" - :class="['page-btn', { active: p === currentPage }]" - @click="currentPage = p" - @contextmenu.prevent="onPageRightClick(p, $event)" - > + <button v-for="p in pages" :key="p" :class="['page-btn', { active: p === currentPage }]" + @click="currentPage = p" @contextmenu.prevent="onPageRightClick(p, $event)"> {{ p }} <button v-if="pageToShowDelete === p" class="delete-btn" @click.stop="deletePage(p)"> Delete @@ -111,27 +80,15 @@ <v-icon>mdi-plus</v-icon> </v-btn> </div> - <AddQueueDialog - :visible="showAddDialog" - :queueItem="selectedQueueItem" - :currentPage="currentPage" - @close="closeAddQueueDialog" - /> + <AddQueueDialog :visible="showAddDialog" :queueItem="selectedQueueItem" :currentPage="currentPage" + @close="closeAddQueueDialog" /> </div> - <OrderDialog - v-if="selectedQueueItem && !showAddDialog" - :queueId="selectedQueueItem.QueueID" - :color=" - getQueueColor( - selectedQueueItem.label === 'ผลิตเผื่อ' || selectedQueueItem.label === 'เปลี่ยนขนาด' - ? selectedQueueItem.label - : selectedQueueItem.orderID - ) - " - @close="closeQueueDialog" - @edit="openAddQueueDialogForEdit" - @delete="handleDelete" - /> + <OrderDialog v-if="selectedQueueItem && !showAddDialog" :queueId="selectedQueueItem.QueueID" :color="getQueueColor( + selectedQueueItem.label === 'ผลิตเผื่อ' || selectedQueueItem.label === 'เปลี่ยนขนาด' + ? selectedQueueItem.label + : selectedQueueItem.orderID + ) + " @close="closeQueueDialog" @edit="openAddQueueDialogForEdit" @delete="handleDelete" /> </div> </div> </template> @@ -160,10 +117,10 @@ const dateStore = useDateStore() const { currentDate: selectedDate } = storeToRefs(dateStore) const pageContext = usePageContextStore() -const ORDER_COLORS = ['#FFCDD2', '#FFE0B2', '#90CAF9'] // แดงอ่อน, ส้มอ่อน, น้ำเงินอ่อน +const ORDER_COLORS = ['#FFCDD2', '#FFE0B2', '#90CAF9', '#ADD88D', '#BEA9DF', '#FEB9D0', '#CC9B71', '#9DD8D4'] // แดงอ่อน, ส้มอ่อน, น้ำเงินอ่อน const SPECIAL_COLORS: Record<string, string> = { - 'ผลิตเผื่อ': '#94f397', - 'เปลี่ยนขนาด': '#B3E5FC', + 'ผลิตเผื่อ': '#94f397', + 'เปลี่ยนขนาด': '#B3E5FC', }; // ใช้ currentPage เป็น pagenum จาก pageContext -- GitLab