From 1d9880e6ada168326e7516f23cf12db19e9a875d Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 11 十一月 2025 10:03:30 +0800
Subject: [PATCH] 生产管控-生产工序定制化

---
 src/views/inventoryManagement/dispatchLog/index.vue |  262 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 238 insertions(+), 24 deletions(-)

diff --git a/src/views/inventoryManagement/dispatchLog/index.vue b/src/views/inventoryManagement/dispatchLog/index.vue
index 65c90e8..86fe158 100644
--- a/src/views/inventoryManagement/dispatchLog/index.vue
+++ b/src/views/inventoryManagement/dispatchLog/index.vue
@@ -1,27 +1,209 @@
 <template>
 	<div class="app-container">
-		<div class="search_form">
-			<div>
-				<span class="search_title">渚涘簲鍟嗗悕绉帮細</span>
-				<el-input
-					v-model="searchForm.supplierName"
-					style="width: 240px"
-					placeholder="璇疯緭鍏�"
-					@change="handleQuery"
-					clearable
-					prefix-icon="Search"
-				/>
-				<el-button type="primary" @click="handleQuery" style="margin-left: 10px"
-				>鎼滅储</el-button
-				>
-			</div>
-			<div>
-				<!-- <el-button type="primary" @click="openForm('add')">鏂板</el-button> -->
-				<el-button @click="handleOut">瀵煎嚭</el-button>
-				<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
-				<el-button type="primary" plain @click="handlePrint">鎵撳嵃</el-button>
-			</div>
-		</div>
+		<el-tabs v-model="activeTab" @tab-change="handleTabChange">
+			<el-tab-pane label="鐢熶骇鍑哄簱" name="production">
+				<div class="search_form">
+					<div>
+						<span class="search_title">瀹㈡埛鍚嶇О锛�</span>
+						<el-input
+							v-model="searchForm.customerName"
+							style="width: 240px"
+							placeholder="璇疯緭鍏�"
+							@change="handleQuery"
+							clearable
+							prefix-icon="Search"
+						/>
+						<span class="search_title ml10">鍑哄簱鏃ユ湡锛�</span>
+						<el-date-picker
+							v-model="searchForm.timeStr"
+							type="date"
+							placeholder="璇烽�夋嫨鏃ユ湡"
+							value-format="YYYY-MM-DD"
+							format="YYYY-MM-DD"
+							clearable
+							@change="handleQuery"
+						/>
+						<el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
+					</div>
+					<div>
+						<el-button @click="handleOut">瀵煎嚭</el-button>
+						<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+						<el-button type="primary" plain @click="handlePrint">鎵撳嵃</el-button>
+					</div>
+				</div>
+				<div class="table_list">
+					<el-table
+						:data="tableData"
+						border
+						v-loading="tableLoading"
+						:expand-row-keys="expandedRowKeys"
+						:row-key="(row) => row.id"
+						show-summary
+						style="width: 100%"
+						:summary-method="summarizeMainTable"
+						height="calc(100vh - 18.5em)"
+					>
+						<el-table-column align="center" label="搴忓彿" type="index" width="60" />
+						<el-table-column label="鍑哄簱鏃ユ湡" prop="createTime" min-width="250" show-overflow-tooltip />
+						<el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" width="250" show-overflow-tooltip />
+						<el-table-column label="浜у搧澶х被" prop="productCategory" width="100" show-overflow-tooltip />
+						<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="100" show-overflow-tooltip />
+						<el-table-column label="鍗曚綅" prop="unit" width="80" show-overflow-tooltip />
+						<el-table-column label="鍑哄簱鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
+						<el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />
+						<el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />
+						<el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />
+						<el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />
+						<el-table-column label="鍑哄簱浜�" prop="createBy" width="80" show-overflow-tooltip />
+					</el-table>
+					<pagination
+						v-show="total > 0"
+						:total="total"
+						layout="total, sizes, prev, pager, next, jumper"
+						:page="page.current"
+						:limit="page.size"
+						@pagination="paginationChange"
+					/>
+				</div>
+			</el-tab-pane>
+
+			<el-tab-pane label="閲囪喘鍑哄簱" name="purchase">
+				<div class="search_form">
+					<div>
+						<span class="search_title">渚涘簲鍟嗗悕绉帮細</span>
+						<el-input
+							v-model="searchForm.supplierName"
+							style="width: 240px"
+							placeholder="璇疯緭鍏�"
+							@change="handleQuery"
+							clearable
+							prefix-icon="Search"
+						/>
+						<span class="search_title ml10">鍑哄簱鏃ユ湡锛�</span>
+						<el-date-picker
+							v-model="searchForm.timeStr"
+							type="date"
+							placeholder="璇烽�夋嫨鏃ユ湡"
+							value-format="YYYY-MM-DD"
+							format="YYYY-MM-DD"
+							clearable
+							@change="handleQuery"
+						/>
+						<el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
+					</div>
+					<div>
+						<el-button @click="handleOut">瀵煎嚭</el-button>
+						<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+						<el-button type="primary" plain @click="handlePrint">鎵撳嵃</el-button>
+					</div>
+				</div>
+				<div class="table_list">
+					<el-table
+						:data="tableData"
+						border
+						v-loading="tableLoading"
+						@selection-change="handleSelectionChange"
+						:expand-row-keys="expandedRowKeys"
+						:row-key="(row) => row.id"
+						show-summary
+						style="width: 100%"
+						:summary-method="summarizeMainTable"
+						height="calc(100vh - 18.5em)"
+					>
+						<el-table-column align="center" type="selection" width="55" />
+						<el-table-column align="center" label="搴忓彿" type="index" width="60" />
+						<el-table-column label="鍑哄簱鏃ユ湡" prop="createTime" min-width="250" show-overflow-tooltip />
+						<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="250" show-overflow-tooltip />
+						<el-table-column label="浜у搧澶х被" prop="productCategory" width="100" show-overflow-tooltip />
+						<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="100" show-overflow-tooltip />
+						<el-table-column label="鍗曚綅" prop="unit" width="80" show-overflow-tooltip />
+						<el-table-column label="鍑哄簱鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
+						<el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />
+						<el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />
+						<el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />
+						<el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />
+						<el-table-column label="鍑哄簱浜�" prop="createBy" width="80" show-overflow-tooltip />
+					</el-table>
+					<pagination
+						v-show="total > 0"
+						:total="total"
+						layout="total, sizes, prev, pager, next, jumper"
+						:page="page.current"
+						:limit="page.size"
+						@pagination="paginationChange"
+					/>
+				</div>
+			</el-tab-pane>
+
+			<el-tab-pane label="鎵嬪姩鍑哄簱" name="manual">
+				<div class="search_form">
+					<div>
+						<span class="search_title">渚涘簲鍟嗗悕绉帮細</span>
+						<el-input
+							v-model="searchForm.supplierName"
+							style="width: 240px"
+							placeholder="璇疯緭鍏�"
+							@change="handleQuery"
+							clearable
+							prefix-icon="Search"
+						/>
+						<span class="search_title ml10">鍑哄簱鏃ユ湡锛�</span>
+						<el-date-picker
+							v-model="searchForm.timeStr"
+							type="date"
+							placeholder="璇烽�夋嫨鏃ユ湡"
+							value-format="YYYY-MM-DD"
+							format="YYYY-MM-DD"
+							clearable
+							@change="handleQuery"
+						/>
+						<el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
+					</div>
+					<div>
+						<el-button @click="handleOut">瀵煎嚭</el-button>
+						<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
+						<el-button type="primary" plain @click="handlePrint">鎵撳嵃</el-button>
+					</div>
+				</div>
+				<div class="table_list">
+					<el-table
+						:data="tableData"
+						border
+						v-loading="tableLoading"
+						@selection-change="handleSelectionChange"
+						:expand-row-keys="expandedRowKeys"
+						:row-key="(row) => row.id"
+						show-summary
+						style="width: 100%"
+						:summary-method="summarizeMainTable"
+						height="calc(100vh - 18.5em)"
+					>
+						<el-table-column align="center" type="selection" width="55" />
+						<el-table-column align="center" label="搴忓彿" type="index" width="60" />
+						<el-table-column label="鍑哄簱鏃ユ湡" prop="createTime" min-width="250" show-overflow-tooltip />
+						<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="250" show-overflow-tooltip />
+						<el-table-column label="浜у搧澶х被" prop="productCategory" width="100" show-overflow-tooltip />
+						<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" width="100" show-overflow-tooltip />
+						<el-table-column label="鍗曚綅" prop="unit" width="80" show-overflow-tooltip />
+						<el-table-column label="鐗╁搧绫诲瀷" prop="itemType" width="120" show-overflow-tooltip />
+						<el-table-column label="鍑哄簱鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
+						<el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />
+						<el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />
+						<el-table-column label="绋庣巼(%)" prop="taxRate" width="100" show-overflow-tooltip />
+						<el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />
+						<el-table-column label="鍑哄簱浜�" prop="createBy" width="80" show-overflow-tooltip />
+					</el-table>
+					<pagination
+						v-show="total > 0"
+						:total="total"
+						layout="total, sizes, prev, pager, next, jumper"
+						:page="page.current"
+						:limit="page.size"
+						@pagination="paginationChange"
+					/>
+				</div>
+			</el-tab-pane>
+		</el-tabs>
 		<div class="table_list">
 			<el-table
 				:data="tableData"
@@ -248,17 +430,22 @@
 
 <script setup>
 import pagination from "@/components/PIMTable/Pagination.vue";
-import { ref } from "vue";
+import { ref, reactive, toRefs, onMounted, getCurrentInstance } from "vue";
 import { ElMessageBox } from "element-plus";
 import useUserStore from "@/store/modules/user";
 import {
 	getStockOutPage,
 	delStockOut,
 } from "@/api/inventoryManagement/stockOut.js";
+import {
+	getStockInPageByProduct,
+	getStockInPageByCustom,
+} from "@/api/inventoryManagement/stockIn.js";
 
 const userStore = useUserStore();
 const { proxy } = getCurrentInstance();
 const tableData = ref([]);
+const activeTab = ref('production');
 const selectedRows = ref([]);
 const tableLoading = ref(false);
 const page = reactive({
@@ -275,6 +462,8 @@
 const data = reactive({
 	searchForm: {
 		supplierName: "",
+		customerName: "",
+		timeStr: "",
 	},
 	form: {
 		supplierId: null,
@@ -311,7 +500,23 @@
 };
 const getList = () => {
 	tableLoading.value = true;
-	getStockOutPage({ ...searchForm.value, ...page })
+	const params = { ...page }
+	if (activeTab.value === 'production') {
+		params.customerName = searchForm.value.customerName
+		params.timeStr = searchForm.value.timeStr
+	} else {
+		params.supplierName = searchForm.value.supplierName
+		params.timeStr = searchForm.value.timeStr
+	}
+	
+	// 鏍规嵁涓嶅悓鐨� tab 绫诲瀷璋冪敤涓嶅悓鐨勬帴鍙�
+	const apiCall = activeTab.value === 'production' 
+		? getStockInPageByProduct(params)
+		: activeTab.value === 'manual' 
+		? getStockInPageByCustom(params)
+		: getStockOutPage(params)
+	
+	apiCall
 		.then((res) => {
 			tableLoading.value = false;
 			tableData.value = res.data.records;
@@ -325,6 +530,15 @@
 		});
 };
 
+const handleTabChange = () => {
+	page.current = 1
+	searchForm.value.supplierName = ''
+	searchForm.value.customerName = ''
+	searchForm.value.timeStr = ''
+	selectedRows.value = []
+	getList()
+};
+
 // 琛ㄦ牸閫夋嫨鏁版嵁
 const handleSelectionChange = (selection) => {
 	// 杩囨护鎺夊瓙鏁版嵁

--
Gitblit v1.9.3