From 27550ee46778905ab194844ab5247b116f70659e Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 23 十月 2025 17:42:16 +0800
Subject: [PATCH] 切割排产重写,增加详情查询接口,增加查询类,部分中文翻译
---
UI-Project/src/views/EngineerScheduling/engineerScheduling.vue | 603 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 442 insertions(+), 161 deletions(-)
diff --git a/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue b/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
index 683aa1b..62dcc17 100644
--- a/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
+++ b/UI-Project/src/views/EngineerScheduling/engineerScheduling.vue
@@ -1,161 +1,195 @@
<script lang="ts" setup>
-import { ref, computed, watch, onMounted } from 'vue'
-import { useI18n } from 'vue-i18n'
-import { ElMessage, ElTransfer, ElTabs, ElTabPane, ElButton } from 'element-plus'
+import {ref, computed, watch, onMounted} from 'vue'
+import {useI18n} from 'vue-i18n'
+import {ElMessage, ElTransfer, ElTabs, ElTabPane, ElButton} from 'element-plus'
import request from '@/utils/request'
-const { t } = useI18n()
+const {t} = useI18n()
const activeTab = ref('cutting1')
// Transfer缁勪欢鎵�闇�鐨勬暟鎹牸寮�
interface TransferDataItem {
- key: string
- label: string
- projectNo: string
- projectName: string
+ key: string
+ label: string
+ projectNo: string
+ projectName: string
}
-// 鎵�鏈夊彲閫夋暟鎹紙宸︿晶锛�
+// Transfer缁勪欢鎵�闇�鐨勬暟鎹牸寮� - 瀹屽杽瀛楁瀹氫箟
+interface TransferDataItem {
+ key: string
+ projectNo: string
+ projectName: string
+ state?: number
+ type?: number
+ glassThickness?: string // 鐜荤拑鍘氬害
+ glassType?: string // 鐜荤拑绫诲瀷
+ glassTotal?: number // 鐜荤拑鎬绘暟
+ glassTotalArea?: number // 鐜荤拑鎬婚潰绉�
+}
+
+// 鎵�鏈夊彲閫夋暟鎹紙宸︿晶琛ㄦ牸锛�
const dataSource = ref<TransferDataItem[]>([])
-// 宸查�夋暟鎹殑keys锛堝彸渚э級
-const targetKeys = ref<string[]>([])
-
-// 鏍规嵁褰撳墠鏍囩椤佃幏鍙栧彸渚у垪琛ㄦ爣棰�
-const getRightListTitle = computed(() => {
- switch (activeTab.value) {
- case 'cutting1':
- return t('large.countOutOne')
- case 'cutting2':
- return t('large.countOutTwo')
- case 'tempered':
- return t('large.temp')
- default:
- return '宸叉帓浜�'
+// 宸查�夋暟鎹紙鍙充晶琛ㄦ牸锛�
+const rightDataSource = ref<TransferDataItem[]>([])
+// 宸︿晶琛ㄦ牸閫変腑椤�
+const selectedLeft = ref<TransferDataItem[]>([])
+// 鍙充晶琛ㄦ牸閫変腑椤�
+const selectedRight = ref<TransferDataItem[]>([])
+// 璇︽儏鏁版嵁鐘舵�侊紙鏀逛负鏁扮粍绫诲瀷锛岄�傚簲鍒楄〃杩斿洖锛�
+const detailData = ref<any[]>([]);
+const showDetail = ref(false);
+// 鑾峰彇椤圭洰璇︽儏鎺ュ彛锛堟洿鏂颁负瀹為檯鎺ュ彛锛�
+const fetchProjectDetail = async (projectNo: string) => {
+ try {
+ const response = await request.post('/loadGlass/optimizeProject/selectProgress', {
+ projectNo: projectNo // 浼犲叆宸ョ▼ID锛坧rojectNo锛�
+ });
+ if (response.code === 200) {
+ detailData.value = response.data; // 鍋囪杩斿洖鏁扮粍
+ showDetail.value = true;
+ } else {
+ ElMessage.error(`鑾峰彇璇︽儏澶辫触: ${response.message || '鏈煡閿欒'}`);
}
-})
+ } catch (error) {
+ console.error('鑾峰彇椤圭洰璇︽儏澶辫触:', error);
+ ElMessage.error('鑾峰彇璇︽儏澶辫触锛岃绋嶅悗閲嶈瘯');
+ }
+};
-// 鑾峰彇宸︿晶鏁版嵁婧�
+// 鑾峰彇宸︿晶鏁版嵁婧� - 鏇存柊鏄犲皠閫昏緫锛堝寘鍚墍鏈夊瓧娈碉級
const fetchDataSource = async () => {
- try {
- // 鏍规嵁褰撳墠鏍囩椤甸�夋嫨涓嶅悓鐨勬帴鍙�
- const apiUrl = activeTab.value === 'tempered'
- ? '/cacheVerticalGlass/bigStorageCageDetails/queryEngineer'
- : '/loadGlass/optimizeProject/queryEngineer';
+ try {
+ const apiUrl = activeTab.value === 'tempered'
+ ? '/cacheVerticalGlass/bigStorageCageDetails/queryEngineer'
+ : '/loadGlass/optimizeProject/queryEngineer';
- const response = await request.post(apiUrl)
+ const response = await request.post(apiUrl)
- if (response.code === 200) {
- dataSource.value = response.data.map((item: any) => {
- const projectNo = activeTab.value === 'tempered' ? item.engineerId : item.projectNo
- const name = activeTab.value === 'tempered' ? item.engineerId : (item.projectNo + "-" + item.projectName)
-
- return {
- key: projectNo,
- label: name,
- projectNo: projectNo,
- projectName: activeTab.value === 'tempered' ? '' : item.projectName
- }
- })
- } else {
- ElMessage.error(`鑾峰彇鏁版嵁澶辫触: ${response.message || '鏈煡閿欒'}`)
- }
- } catch (error) {
- console.error('鑾峰彇宸︿晶鏁版嵁澶辫触:', error)
- ElMessage.error('璇风◢鍚庨噸璇�')
+ if (response.code === 200) {
+ dataSource.value = response.data.map((item: any) => ({
+ key: activeTab.value === 'tempered' ? item.engineerId : item.projectNo,
+ projectNo: activeTab.value === 'tempered' ? item.engineerId : item.projectNo,
+ projectName: item.projectName || '',
+ state: item.state,
+ type: item.type,
+ glassThickness: item.glassThickness || '',
+ glassType: item.glassType || '',
+ glassTotal: item.glassTotal || 0,
+ glassTotalArea: item.glassTotalArea || 0
+ }))
+ } else {
+ ElMessage.error(`鑾峰彇鏁版嵁澶辫触: ${response.message || '鏈煡閿欒'}`)
}
+ } catch (error) {
+ console.error('鑾峰彇宸︿晶鏁版嵁澶辫触:', error)
+ ElMessage.error('璇风◢鍚庨噸璇�')
+ }
}
-// 鑾峰彇鍙充晶宸查�夋暟鎹�
+// 鑾峰彇鍙充晶宸查�夋暟鎹� - 鐩存帴濉厖鍙充晶琛ㄦ牸
const fetchTargetKeys = async () => {
- try {
- // 鏍规嵁褰撳墠鏍囩椤电‘瀹歵ype鍙傛暟
- let type = 1; // 榛樿鍒囧壊涓�绾�
- if (activeTab.value === 'cutting2') {
- type = 2; // 鍒囧壊浜岀嚎
- } else if (activeTab.value === 'tempered') {
- type = 3; // 閽㈠寲
- }
+ 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: type
- })
+ const response = await request.post('/loadGlass/optimizeProject/engineerScheduling', {type})
+ if (response.code === 200) {
+ // 鍙充晶琛ㄦ牸鏁版嵁
+ rightDataSource.value = response.data.map((item: any) => ({
+ key: item.projectNo,
+ projectNo: item.projectNo,
+ projectName: item.projectName || '',
+ state: item.state,
+ type: item.type,
+ glassThickness: item.glassThickness || '',
+ glassType: item.glassType || '',
+ glassTotal: item.glassTotal || 0,
+ glassTotalArea: item.glassTotalArea || 0
+ }))
- if (response.code === 200) {
- // 瀵逛簬鎵�鏈夋爣绛鹃〉锛屼娇鐢╬rojectNo浣滀负key
- targetKeys.value = response.data.map((item: any) => item.projectNo)
-
- // 灏嗗彸渚ф暟鎹坊鍔犲埌dataSource涓紝纭繚Transfer缁勪欢鑳芥壘鍒板搴旂殑椤�
- response.data.forEach((item: any) => {
- // 妫�鏌ataSource涓槸鍚﹀凡瀛樺湪璇ラ」
- const exists = dataSource.value.some(dataItem => dataItem.key === item.projectNo)
- if (!exists) {
- // 濡傛灉涓嶅瓨鍦紝娣诲姞鍒癲ataSource涓�
- const newItem: TransferDataItem = {
- key: item.projectNo,
- label: `${item.projectNo}-${item.projectName || 'null'}`,
- projectNo: item.projectNo,
- projectName: item.projectName || ''
- }
- dataSource.value.push(newItem)
- }
- })
- } else {
- ElMessage.error(`鑾峰彇鏁版嵁澶辫触: ${response.message || '鏈煡閿欒'}`)
- }
- } catch (error) {
- console.error('鑾峰彇鍙充晶鏁版嵁澶辫触:', error)
- ElMessage.error('璇风◢鍚庨噸璇�')
+ // 浠庡乏渚ф暟鎹簮绉婚櫎鍙充晶宸查�夋暟鎹�
+ dataSource.value = dataSource.value.filter(
+ item => !rightDataSource.value.some(rightItem => rightItem.key === item.key)
+ )
+ } else {
+ ElMessage.error(`鑾峰彇鏁版嵁澶辫触: ${response.message || '鏈煡閿欒'}`)
}
+ } catch (error) {
+ console.error('鑾峰彇鍙充晶鏁版嵁澶辫触:', error)
+ ElMessage.error('璇风◢鍚庨噸璇�')
+ }
}
-// 淇濆瓨鎺掍骇淇℃伅
+// 淇敼锛氭敮鎸佸崟琛屾暟鎹Щ鍔ㄥ埌鍙充晶琛ㄦ牸鏈熬
+const moveToRight = (row: TransferDataItem) => {
+ if (!row) return;
+ // 浠庡乏渚ц〃鏍肩Щ闄ゅ綋鍓嶈
+ dataSource.value = dataSource.value.filter(item => item.key !== row.key);
+ // 娣诲姞鍒板彸渚ц〃鏍兼湯灏�
+ rightDataSource.value.push(row);
+ ElMessage.success(`宸叉坊鍔犻」鐩� ${row.projectNo}`);
+}
+
+
+// 淇敼锛氭敮鎸佸崟琛屾暟鎹粠鍙充晶琛ㄦ牸绉诲洖宸︿晶琛ㄦ牸
+const moveToLeft = (row: TransferDataItem) => {
+ if (!row) return;
+
+ // 浠庡彸渚ц〃鏍肩Щ闄ゅ綋鍓嶈
+ rightDataSource.value = rightDataSource.value.filter(item => item.key !== row.key);
+
+ // 娣诲姞鍒板乏渚ц〃鏍�
+ dataSource.value.push(row);
+
+ ElMessage.success(`宸茬Щ闄ら」鐩� ${row.projectNo}`);
+}
+
+// 鏇存柊淇濆瓨閫昏緫 - 浣跨敤鍙充晶琛ㄦ牸鏁版嵁
const saveScheduling = async () => {
- try {
- // 鏍规嵁褰撳墠鏍囩椤电‘瀹歵ype鍙傛暟
- let type = 1; // 榛樿鍒囧壊涓�绾�
- if (activeTab.value === 'cutting2') {
- type = 2; // 鍒囧壊浜岀嚎
- } else if (activeTab.value === 'tempered') {
- type = 3; // 閽㈠寲
- }
+ try {
+ let type = 1;
+ if (activeTab.value === 'cutting2') type = 2;
+ else if (activeTab.value === 'tempered') type = 3;
- const engineerList = targetKeys.value.map(projectNo => {
- const dataItem = dataSource.value.find(item => item.key === projectNo)
- return {
- projectNo: projectNo,
- projectName: dataItem ? dataItem.projectName : ''
- }
- })
+ // 鍙充晶琛ㄦ牸鏁版嵁鍗充负闇�瑕佷繚瀛樼殑鎺掍骇鏁版嵁
+ const engineerList = rightDataSource.value.map(item => ({
+ projectNo: item.projectNo,
+ projectName: item.projectName
+ }))
- const response = await request.post(`/loadGlass/optimizeProject/updateEngineerScheduling?type=${type}`, engineerList)
+ const response = await request.post(
+ `/loadGlass/optimizeProject/updateEngineerScheduling?type=${type}`,
+ engineerList
+ )
- if (response.code === 200) {
- ElMessage.success('淇濆瓨鎴愬姛')
- // 閲嶆柊鍔犺浇鏁版嵁
- await fetchDataSource()
- await fetchTargetKeys()
- } else {
- ElMessage.error(`淇濆瓨澶辫触: ${response.message || '鏈煡閿欒'}`)
- }
- } catch (error) {
- console.error('淇濆瓨鎺掍骇淇℃伅澶辫触:', error)
- ElMessage.error('璇风◢鍚庨噸璇�')
+ if (response.code === 200) {
+ ElMessage.success('淇濆瓨鎴愬姛')
+ await fetchDataSource()
+ await fetchTargetKeys()
+ } else {
+ ElMessage.error(`淇濆瓨澶辫触: ${response.message || '鏈煡閿欒'}`)
}
+ } catch (error) {
+ console.error('淇濆瓨鎺掍骇淇℃伅澶辫触:', error)
+ ElMessage.error('璇风◢鍚庨噸璇�')
+ }
}
// 閲嶇疆鎺掍骇淇℃伅
const resetScheduling = async () => {
- await fetchDataSource()
- await fetchTargetKeys()
- ElMessage.info(t('宸插彇娑�'))
+ await fetchDataSource()
+ await fetchTargetKeys()
+ ElMessage.info(t('宸插彇娑�'))
}
// 鐩戝惉鏍囩椤靛垏鎹紝鏍规嵁涓嶅悓鏍囩椤靛姞杞藉搴旂殑鏁版嵁
watch(activeTab, async (newTab) => {
- // 閲嶆柊鑾峰彇鏁版嵁
- await fetchDataSource()
- await fetchTargetKeys()
+ // 閲嶆柊鑾峰彇鏁版嵁
+ await fetchDataSource()
+ await fetchTargetKeys()
})
@@ -164,85 +198,332 @@
// 缁勪欢鎸傝浇鏃惰幏鍙栨暟鎹�
onMounted(async () => {
- await fetchDataSource()
- await fetchTargetKeys()
+ await fetchDataSource()
+ await fetchTargetKeys()
})
+
+// 鍒ゆ柇鏄惁涓虹涓�琛�
+const isFirstRow = (row: TransferDataItem) => {
+ const index = rightDataSource.value.findIndex(item => item.key === row.key);
+ return index === 0;
+};
+
+// 鍒ゆ柇鏄惁涓烘渶鍚庝竴琛�
+const isLastRow = (row: TransferDataItem) => {
+ const index = rightDataSource.value.findIndex(item => item.key === row.key);
+ return index === rightDataSource.value.length - 1;
+};
+
+// 鍒ゆ柇涓婃柟鏄惁鏈夎繘琛屼腑鐨勮锛坰tate=100琛ㄧず杩涜涓紝鏍规嵁瀹為檯鐘舵�佸�艰皟鏁达級
+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);
+};
+
+// 鍚戜笂绉诲姩涓�琛�
+const moveUp = (row: TransferDataItem) => {
+ const index = rightDataSource.value.findIndex(item => item.key === row.key);
+ if (index > 0) {
+ // 浜ゆ崲浣嶇疆
+ [rightDataSource.value[index], rightDataSource.value[index - 1]] =
+ [rightDataSource.value[index - 1], rightDataSource.value[index]];
+ // 瑙﹀彂鍝嶅簲寮忔洿鏂�
+ rightDataSource.value = [...rightDataSource.value];
+ }
+};
+
+// 鍚戜笅绉诲姩涓�琛�
+const moveDown = (row: TransferDataItem) => {
+ const index = rightDataSource.value.findIndex(item => item.key === row.key);
+ if (index < rightDataSource.value.length - 1) {
+ // 浜ゆ崲浣嶇疆
+ [rightDataSource.value[index], rightDataSource.value[index + 1]] =
+ [rightDataSource.value[index + 1], rightDataSource.value[index]];
+ // 瑙﹀彂鍝嶅簲寮忔洿鏂�
+ rightDataSource.value = [...rightDataSource.value];
+ }
+};
+
+// 缃《锛堢Щ鍔ㄥ埌绗竴涓潪杩涜涓换鍔′笂鏂癸級
+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);
+ } else {
+ // 鏈夎繘琛屼腑浠诲姟锛屾坊鍔犲埌绗竴涓繘琛屼腑浠诲姟鍚庨潰
+ newList.splice(firstInProgressIndex + 1, 0, row);
+ }
+
+ // 鏇存柊鏁版嵁婧�
+ rightDataSource.value = newList;
+ }
+};
</script>
<template>
- <div class="engineer-scheduling-container">
- <el-tabs v-model="activeTab" class="custom-tabs">
- <el-tab-pane :label="t('large.countOutOne')" name="cutting1" />
- <el-tab-pane :label="t('large.countOutTwo')" name="cutting2" />
- <el-tab-pane :label="t('large.temp')" name="tempered" />
- </el-tabs>
+ <div class="engineer-scheduling-container">
+ <el-tabs v-model="activeTab" class="custom-tabs">
+ <el-tab-pane :label="t('large.countOutOne')" name="cutting1"/>
+ <el-tab-pane :label="t('large.countOutTwo')" name="cutting2"/>
+ <el-tab-pane :label="t('large.temp')" name="tempered"/>
+ </el-tabs>
- <div class="transfer-wrapper">
- <el-transfer v-model="targetKeys" class="custom-transfer" filterable :data="dataSource"
- :titles="['寰呮帓浜�', getRightListTitle]" :button-texts="['', '']">
- <template #right-empty>
- <el-empty :image-size="80" description="No data" />
- </template>
- </el-transfer>
+ <!-- 琛ㄦ牸甯冨眬瀹瑰櫒 -->
+ <div class="table-container">
+ <!-- 宸︿晶琛ㄦ牸锛氬緟鎺掍骇 -->
+ <div class="table-wrapper">
+ <h3 class="table-title">{{ '寰呮帓浜�' }} ({{ dataSource.length }})</h3>
+ <el-table
+ :data="dataSource"
+ border
+ class="custom-table"
+ 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">
+ <template #default="{ row }">
+ <el-button type="primary" @click="moveToRight(row)">
+ {{ t('娣诲姞') }}
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
- <div class="transfer-save">
- <el-button type="primary" @click="saveScheduling">
- {{ t('searchOrder.makesure') }}
+ <!-- 鍙充晶琛ㄦ牸锛氬凡鎺掍骇 -->
+ <div class="table-wrapper">
+ <h3 class="table-title">{{ t('scheduling.completed') }} ({{ rightDataSource.length }})</h3>
+ <el-table
+ :data="rightDataSource"
+ border
+ class="custom-table"
+ height="400"
+ row-key="key"
+ @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">
+ <template #default="{ row }">
+ <div style="display: flex; gap: 5px; align-items: center;">
+ <el-button
+ type="default"
+ size="small"
+ @click="moveToLeft(row)"
+ style="background: #ff4d4f; color: white; border-radius: 8px; min-width: 60px; display: inline-flex; justify-content: center; align-items: center;"
+ >
+ 鍘婚櫎
</el-button>
- <el-button type="primary" @click="resetScheduling">
- {{ t('delivery.cancel') }}
+
+ <!-- 鍚戜笂鎸夐挳 -->
+ <el-button
+ type="default"
+ size="small"
+ @click="moveUp(row)"
+ :disabled="isFirstRow(row) || hasInProgressAbove(row)"
+ style="background: #E6F4FF; color: #1890FF; border-radius: 8px; min-width: 40px; display: inline-flex; justify-content: center; align-items: center;"
+ >
+ 鈫�
</el-button>
- </div>
- </div>
+
+ <!-- 鍚戜笅鎸夐挳 -->
+ <el-button
+ type="default"
+ size="small"
+ @click="moveDown(row)"
+ :disabled="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)"
+ style="background: #E6F4FF; color: #1890FF; border-radius: 8px; min-width: 60px; display: inline-flex; justify-content: center; align-items: center;"
+ >
+ 缃《
+ </el-button>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
</div>
+
+ <!-- 淇濆瓨鍜岄噸缃寜閽� -->
+ <div class="transfer-save">
+ <el-button type="primary" @click="saveScheduling">
+ {{ t('searchOrder.makesure') }}
+ </el-button>
+ <el-button type="primary" @click="resetScheduling">
+ {{ t('delivery.cancel') }}
+ </el-button>
+ </div>
+ </div>
+ <!-- 璇︽儏灞曠ず鍖哄煙锛堟敼涓鸿〃鏍煎睍绀哄垪琛ㄦ暟鎹級 -->
+ <div v-if="showDetail" class="project-detail">
+ <!-- <h3 class="detail-title">宸ョ▼璇︽儏鍒楄〃 ({{ detailData.length }})</h3>-->
+ <el-table
+ :data="detailData"
+ border
+ 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>
+ </div>
</template>
+
<style scoped>
+/* 琛ㄦ牸甯冨眬瀹瑰櫒 */
+.table-container {
+ display: flex;
+ align-items: center;
+ gap: 20px;
+ margin-bottom: 20px;
+}
+
+/* 璇︽儏琛ㄦ牸鏍峰紡 */
+.project-detail {
+ margin-top: 0px;
+ padding: 15px;
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ width: 100%;
+ box-sizing: border-box;
+ height: auto; /* 纭繚瀹瑰櫒楂樺害鑷�傚簲 */
+}
+
+.detail-title {
+ margin-bottom: 15px;
+ font-size: 16px;
+ font-weight: bold;
+ color: #303133;
+}
+
+.detail-table {
+ width: 100%;
+ font-size: 14px;
+}
+
+/* 寮哄埗琛ㄦ牸鍐呭鍖哄煙婊氬姩 */
+::v-deep(.detail-table .el-table__body-wrapper) {
+ overflow-y: auto !important; /* 浼樺厛纭繚鍨傜洿婊氬姩 */
+ max-height: calc(230px - 50px); /* 閫傞厤琛ㄦ牸楂樺害锛堥渶涓巈l-table height鍖归厤锛� */
+}
+
+.table-wrapper {
+ flex: 1;
+}
+
+.table-title {
+ margin-bottom: 10px;
+ font-size: 18px;
+ font-weight: bold;
+ color: #303133;
+}
+
+.custom-table {
+ width: 100%;
+ font-size: 14px;
+}
+
+/* 杞Щ鎸夐挳鏍峰紡 */
+.transfer-buttons {
+ display: flex;
+ flex-direction: column;
+}
+
+/* 璋冩暣鎸夐挳鍖哄煙浣嶇疆 */
+.transfer-save {
+ display: flex;
+ justify-content: center;
+ gap: 10px;
+ margin-top: 20px;
+}
+
.engineer-scheduling-container {
- padding: 20px;
- border: 1px solid #dcdfe6;
- border-radius: 4px;
- background-color: #fff;
+ padding: 20px;
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ background-color: #fff;
}
.custom-tabs {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
::v-deep(.custom-tabs .el-tabs__item) {
- font-size: 20px;
+ font-size: 20px;
}
.transfer-wrapper {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 20px;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 20px;
}
.transfer-save {
- display: flex;
- gap: 10px;
+ display: flex;
+ gap: 10px;
}
/* 鑷畾涔塗ransfer缁勪欢鐨勬牱寮� */
::v-deep(.el-transfer-panel) {
- font-size: 16px;
- width: 350px;
- height: 440px;
+ font-size: 16px;
+ width: 350px;
+ height: 440px;
}
.custom-transfer {
- --el-transfer-panel-body-height: 400px;
+ --el-transfer-panel-body-height: 400px;
}
::v-deep(.el-transfer-panel__header) {
- font-weight: bold;
- font-size: 18px;
+ font-weight: bold;
+ font-size: 18px;
}
::v-deep(.el-checkbox__label) {
- font-size: 16px;
+ font-size: 16px;
}
</style>
--
Gitblit v1.8.0