From cd17315666ec8099678c55329d3e5889efb23c1e Mon Sep 17 00:00:00 2001
From: 周宾 <2802492122@qq.com>
Date: 星期五, 26 十二月 2025 17:01:53 +0800
Subject: [PATCH] 天津双奇点-仓储物流相关问题修复

---
 src/views/inventoryManagement/dispatchLog/index.vue |  503 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 313 insertions(+), 190 deletions(-)

diff --git a/src/views/inventoryManagement/dispatchLog/index.vue b/src/views/inventoryManagement/dispatchLog/index.vue
index 3eb5758..faa442d 100644
--- a/src/views/inventoryManagement/dispatchLog/index.vue
+++ b/src/views/inventoryManagement/dispatchLog/index.vue
@@ -1,144 +1,210 @@
 <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"
-				/>
-				<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 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>
-		<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-column
-					fixed="right"
-					label="鎿嶄綔"
-					min-width="60"
-					align="center"
-				>
-					<template #default="scope">
-						<el-button
-							link
-							type="primary"
-							size="small"
-							@click="openForm('edit', scope.row)"
-							>缂栬緫</el-button
-						>
-					</template>
-				</el-table-column> -->
-			</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-tabs v-model="activeTab" @tab-change="handleTabChange">
+			<!-- <el-tab-pane label="閲囪喘鍑哄簱" name="production">
+				<div class="search_form">
+					<div>
+						<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"
+						/>
+						<span class="search_title ml10">浜у搧澶х被锛�</span>
+						<el-input
+							v-model="searchForm.productCategory"
+							style="width: 240px"
+							placeholder="璇疯緭鍏�"
+							clearable
+						/>
+						<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="120" show-overflow-tooltip />
+						<el-table-column label="浜у搧澶х被" prop="productCategory" show-overflow-tooltip />
+						<el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" 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="unitPrice" width="150"></el-table-column>
+						<el-table-column label="鎬讳环(鍏�)" prop="totalPrice" width="150"></el-table-column>
+						<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 ml10">鍑哄簱鏃ユ湡锛�</span>
+						<el-date-picker
+							v-model="searchForm.timeStr"
+							type="date"
+							placeholder="璇烽�夋嫨鏃ユ湡"
+							value-format="YYYY-MM-DD"
+							format="YYYY-MM-DD"
+							clearable
+							@change="handleQuery"
+						/>
+						<span class="search_title ml10">浜у搧澶х被锛�</span>
+						<el-input
+							v-model="searchForm.productCategory"
+							style="width: 240px"
+							placeholder="璇疯緭鍏�"
+							clearable
+						/>
+						<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" show-overflow-tooltip />
+						<el-table-column label="浜у搧鍚嶇О" prop="productCategory" show-overflow-tooltip />
+						<el-table-column label="浜у搧楂樺害" prop="specificationModel" width="100" show-overflow-tooltip>
+						<template #default="scope">
+							<div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
+						</template>
+						</el-table-column>
+						<el-table-column label="鍑哄簱鏁伴噺/浠�" prop="inboundNum" show-overflow-tooltip />
+						<el-table-column label="姣忎欢鏁伴噺/鏀�" prop="boxNum" width="100" show-overflow-tooltip />
+						<el-table-column label="鍗曚环(鍏�)/鏀�" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
+						<el-table-column label="鍗曚环(缇庡厓)/鏀�" prop="dollarPrice" width="150"></el-table-column>
+						<el-table-column label="绾哥瑙勬牸" prop="cartonSpecifications" width="150"></el-table-column>
+						<el-table-column label="鍑哄簱浜�" prop="createBy" 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 ml10">鍑哄簱鏃ユ湡锛�</span>
+						<el-date-picker
+							v-model="searchForm.timeStr"
+							type="date"
+							placeholder="璇烽�夋嫨鏃ユ湡"
+							value-format="YYYY-MM-DD"
+							format="YYYY-MM-DD"
+							clearable
+							@change="handleQuery"
+						/>
+						<span class="search_title ml10">浜у搧澶х被锛�</span>
+						<el-input
+							v-model="searchForm.productCategory"
+							style="width: 240px"
+							placeholder="璇疯緭鍏�"
+							clearable
+						/>
+						<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="浜у搧鍥剧墖" width="100" align="center">
+							<template #default="scope">
+								<img class="barcode-img" :src="javaApiUrl+scope.row.url"></img>
+							</template>
+						</el-table-column>
+						<el-table-column label="鍑哄簱鏃ユ湡" prop="createTime" width="150" show-overflow-tooltip />
+						<el-table-column label="浜у搧鍚嶇О" prop="productCategory" show-overflow-tooltip />
+						<el-table-column label="浜у搧楂樺害" prop="specificationModel" width="100" show-overflow-tooltip>
+						<template #default="scope">
+							<div>{{ scope.row.specificationModel }}{{ scope.row.unit }}</div>
+						</template>
+						</el-table-column>
+						<el-table-column label="鍑哄簱鏁伴噺/浠�" prop="inboundNum" width="150" show-overflow-tooltip />
+						<el-table-column label="姣忎欢鏁伴噺/鏀�" prop="boxNum" width="100" show-overflow-tooltip />
+						<el-table-column label="鍗曚环(鍏�)/浠�" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
+						<el-table-column label="鍗曚环(缇庡厓)/浠�" prop="dollarPrice" width="150"></el-table-column>
+						<el-table-column label="绾哥瑙勬牸" prop="cartonSpecifications" width="150"></el-table-column>
+						<el-table-column label="鍑哄簱浜�" prop="createBy" width="150" 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>
 		
 		<!-- 鎵撳嵃棰勮寮圭獥 -->
 		<el-dialog
@@ -163,7 +229,7 @@
 					<div v-for="(item, index) in printData" :key="index" class="print-page">
 						<div class="delivery-note">
 							<div class="header">
-								<div class="company-name">榧庤瘹鐟炲疄涓氭湁闄愯矗浠诲叕鍙�</div>
+								<div class="company-name">澶╂触鍙屽鐐规湁闄愯矗浠诲叕鍙�</div>
 								<div class="document-title">闆跺敭鍙戣揣鍗�</div>
 							</div>
 							
@@ -190,32 +256,34 @@
 									<thead>
 									<tr>
 										<th>浜у搧鍚嶇О</th>
-										<th>瑙勬牸鍨嬪彿</th>
-										<th>鍗曚綅</th>
-										<th>鍗曚环</th>
-										<th>闆跺敭鏁伴噺</th>
-										<th>闆跺敭閲戦</th>
+										<th>浜у搧楂樺害</th>
+										<th>鍗曚环锛堝厓锛�/浠�</th>
+										<th>鍗曚环锛堢編鍏冿級/浠�</th>
+										<th>闆跺敭鏁伴噺/浠�</th>
+										<th>姣忎欢鏁伴噺/鏀�</th>
+										<th>绾哥瑙勬牸</th>
 									</tr>
 									</thead>
 									<tbody>
 									<tr>
-										<td>{{ item.productCategory || '鐮傜伆鐮�' }}</td>
-										<td>{{ item.specificationModel || '鏍囧噯' }}</td>
-										<td>{{ item.unit || '鍧�' }}</td>
+										<td>{{ item.productCategory || '' }}</td>
+										<td>{{ item.specificationModel || '' }}{{ item.unit || '' }}</td>
 										<td>{{ item.taxInclusiveUnitPrice || '0' }}</td>
-										<td>{{ item.inboundNum || '2000' }}</td>
-										<td>{{ item.taxInclusiveTotalPrice || '0' }}</td>
+										<td>{{ item.dollarPrice || '0' }}</td>
+										<td>{{ item.inboundNum || '0' }}</td>
+										<td>{{ item.boxNum || '0' }}</td>
+										<td>{{ item.cartonSpecifications || '0' }}</td>
 									</tr>
 									</tbody>
 									<tfoot>
-									<tr>
+									<!-- <tr>
 										<td class="label">鍚堣</td>
 										<td class="total-value"></td>
 										<td class="total-value"></td>
 										<td class="total-value"></td>
 										<td class="total-value">{{ item.inboundNum || '2000' }}</td>
 										<td class="total-value">{{ item.taxInclusiveTotalPrice || '0' }}</td>
-									</tr>
+									</tr> -->
 									</tfoot>
 								</table>
 							</div>
@@ -258,17 +326,23 @@
 
 <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 javaApiUrl = __BASE_API__;
 
 const userStore = useUserStore();
 const { proxy } = getCurrentInstance();
 const tableData = ref([]);
+const activeTab = ref('purchase');
 const selectedRows = ref([]);
 const tableLoading = ref(false);
 const page = reactive({
@@ -285,7 +359,9 @@
 const data = reactive({
 	searchForm: {
 		supplierName: "",
-		timeStr: "",
+		customerName: "",
+    	productCategory:'',
+		timeStr: getCurrentDate(),
 	},
 	form: {
 		supplierId: null,
@@ -322,18 +398,56 @@
 };
 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
+	}
+    params.productCategory = searchForm.value.productCategory
+	
+	// 鏍规嵁涓嶅悓鐨� 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;
 			tableData.value.map((item) => {
 				item.children = [];
+				// 鍓嶇璁$畻鎬讳环
+				const inboundNum = Number(item.inboundNum) || 0;
+				if (activeTab.value === 'production') {
+					// 鎴愬搧鍑哄簱锛氭�讳环 = unitPrice 脳 inboundNum
+					const unitPrice = Number(item.unitPrice) || 0;
+					item.totalPrice = (unitPrice * inboundNum).toFixed(2);
+				} else {
+					// 鍘熸枡鍜屾潗鏂欏嚭搴擄細鎬讳环 = taxInclusiveUnitPrice 脳 inboundNum
+					const taxInclusiveUnitPrice = Number(item.taxInclusiveUnitPrice) || 0;
+					item.taxInclusiveTotalPrice = (taxInclusiveUnitPrice * inboundNum).toFixed(2);
+				}
 			});
 			total.value = res.data.total;
 		})
 		.catch(() => {
 			tableLoading.value = false;
 		});
+};
+
+const handleTabChange = () => {
+	page.current = 1
+	searchForm.value.supplierName = ''
+	searchForm.value.customerName = ''
+	searchForm.value.timeStr = ''
+	selectedRows.value = []
+  	searchForm.value.productCategory = ''
+	getList()
 };
 
 // 琛ㄦ牸閫夋嫨鏁版嵁
@@ -361,7 +475,14 @@
 		type: "warning",
 	})
 		.then(() => {
-			proxy.download("/stockmanagement/export", {}, "鍑哄簱鍙拌处.xlsx");
+			// 鏍规嵁涓嶅悓鐨� tab 绫诲瀷璋冪敤涓嶅悓鐨勫鍑烘帴鍙�
+			let exportUrl = "/stockmanagement/export"
+			if (activeTab.value === 'production') {
+				exportUrl = "/stockmanagement/exportone"
+			} else if (activeTab.value === 'manual') {
+				exportUrl = "/stockmanagement/exportTwo"
+			}
+			proxy.download(exportUrl, {}, "鍑哄簱鍙拌处.xlsx");
 		})
 		.catch(() => {
 			proxy.$modal.msg("宸插彇娑�");
@@ -554,7 +675,7 @@
       <div class="print-page">
         <div class="delivery-note">
           <div class="header">
-            <div class="company-name">榧庤瘹鐟炲疄涓氭湁闄愯矗浠诲叕鍙�</div>
+            <div class="company-name">鍙屽鐐规湁闄愯矗浠诲叕鍙�</div>
             <div class="document-title">闆跺敭鍙戣揣鍗�</div>
           </div>
           
@@ -576,39 +697,33 @@
           </div>
 
           <div class="table-section">
-            <table class="product-table">
-              <thead>
-                <tr>
-                  <th>浜у搧鍚嶇О</th>
-                  <th>瑙勬牸鍨嬪彿</th>
-                  <th>鍗曚綅</th>
-                  <th>鍗曚环</th>
-                  <th>闆跺敭鏁伴噺</th>
-                  <th>闆跺敭閲戦</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td>${item.productCategory || '鐮傜伆鐮�'}</td>
-                  <td>${item.specificationModel || '鏍囧噯'}</td>
-                  <td>${item.unit || '鍧�'}</td>
-                  <td>${item.taxInclusiveUnitPrice || '0'}</td>
-                  <td>${item.inboundNum || '2000'}</td>
-                  <td>${item.taxInclusiveTotalPrice || '0'}</td>
-                </tr>
-              </tbody>
-              <tfoot>
-                <tr>
-                  <td class="label">鍚堣</td>
-                  <td class="total-value"></td>
-                  <td class="total-value"></td>
-                  <td class="total-value"></td>
-                  <td class="total-value">${item.inboundNum || '2000'}</td>
-                  <td class="total-value">${item.taxInclusiveTotalPrice || '0'}</td>
-                </tr>
-              </tfoot>
-            </table>
-          </div>
+			<table class="product-table">
+				<thead>
+				<tr>
+					<th>浜у搧鍚嶇О</th>
+					<th>浜у搧楂樺害</th>
+					<th>鍗曚环锛堝厓锛�/浠�</th>
+					<th>鍗曚环锛堢編鍏冿級/浠�</th>
+					<th>闆跺敭鏁伴噺/浠�</th>
+					<th>姣忎欢鏁伴噺/鏀�</th>
+					<th>绾哥瑙勬牸</th>
+				</tr>
+				</thead>
+				<tbody>
+				<tr>
+					<td>{{ item.productCategory || '' }}</td>
+					<td>{{ item.specificationModel || '' }}{{ item.unit || '' }}</td>
+					<td>{{ item.taxInclusiveUnitPrice || '0' }}</td>
+					<td>{{ item.dollarPrice || '0' }}</td>
+					<td>{{ item.inboundNum || '0' }}</td>
+					<td>{{ item.boxNum || '0' }}</td>
+					<td>{{ item.cartonSpecifications || '0' }}</td>
+				</tr>
+				</tbody>
+				<tfoot>
+				</tfoot>
+			</table>
+		</div>
 
           <div class="footer-section">
             <div class="footer-row">
@@ -862,4 +977,12 @@
 		page-break-after: avoid;
 	}
 }
+.barcode-img{
+  width: 80px;
+  height: 80px;
+  border-radius: 5px;
+  background-color: #F5F5F5;
+}
 </style>
+
+

--
Gitblit v1.9.3