From b80934d8bb58f356abcb00a145d0305be519de8c Mon Sep 17 00:00:00 2001
From: 周宾 <2802492122@qq.com>
Date: 星期三, 24 十二月 2025 08:47:45 +0800
Subject: [PATCH] 天津双奇点-修改仓储物流相关

---
 src/views/inventoryManagement/receiptManagement/index.vue |  231 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 170 insertions(+), 61 deletions(-)

diff --git a/src/views/inventoryManagement/receiptManagement/index.vue b/src/views/inventoryManagement/receiptManagement/index.vue
index f07100f..073821e 100644
--- a/src/views/inventoryManagement/receiptManagement/index.vue
+++ b/src/views/inventoryManagement/receiptManagement/index.vue
@@ -1,12 +1,9 @@
 <template>
   <div class="app-container">
     <el-tabs v-model="activeTab" @tab-change="handleTabChange">
-      <el-tab-pane label="鎴愬搧鍏ュ簱" name="production">
+      <!-- <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"
@@ -38,39 +35,28 @@
             <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="inboundBatches" show-overflow-tooltip /> -->
-<!--            <el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" width="240" 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="70" show-overflow-tooltip />
 						<el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
-<!--						<el-table-column label="鍓╀綑搴撳瓨" prop="inboundNum0" 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="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
-<!--            <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
-<!--            <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" show-overflow-tooltip />-->
-<!--            <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" 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, 'production');">缂栬緫</el-button>
-                <el-button link type="success" size="small" @click="showQRCode(scope.row)">鐢熸垚鏉″舰鐮�</el-button>
-                <el-button link type="success" size="small" @click="showERCode(scope.row)">鐢熸垚浜岀淮鐮�</el-button>
+                <el-button link type="success" size="small" @click="showQRCode(scope.row,1)">鐢熸垚鏉″舰鐮�</el-button>
+                <el-button link type="success" size="small" @click="showERCode(scope.row,1)">鐢熸垚浜岀淮鐮�</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-tab-pane>
+      </el-tab-pane> -->
       
-     <el-tab-pane label="鍘熸枡鍏ュ簱" name="purchase">
+     <el-tab-pane label="閲囪喘鍏ュ簱" name="purchase">
        <div class="search_form">
          <div>
-<!--&lt;!&ndash;            <span class="search_title">渚涘簲鍟嗗悕绉帮細</span>&ndash;&gt;-->
-<!--&lt;!&ndash;            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="璇疯緭鍏�" @change="handleQuery"&ndash;&gt;-->
-<!--&lt;!&ndash;              clearable prefix-icon="Search" />&ndash;&gt;-->
            <span class="search_title ml10">鍏ュ簱鏃ユ湡锛�</span>
            <el-date-picker
              v-model="searchForm.timeStr"
@@ -102,21 +88,18 @@
            :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" width="100" show-overflow-tooltip />
-           <!-- <el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" width="160" show-overflow-tooltip /> -->
-<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" 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="70" show-overflow-tooltip />
-					 <el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
-<!--					 <el-table-column label="鍓╀綑搴撳瓨" prop="inboundNum0" show-overflow-tooltip />-->
-					 <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>
-					 <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="150"></el-table-column>
-<!--&lt;!&ndash;            <el-table-column label="鍚◣鍗曚环" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
-<!--&lt;!&ndash;            <el-table-column label="鍚◣鎬讳环" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
-<!--&lt;!&ndash;            <el-table-column label="绋庣巼(%)" prop="taxRate" width="80" show-overflow-tooltip />&ndash;&gt;-->
-<!--&lt;!&ndash;            <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
-           <el-table-column label="鍏ュ簱浜�" prop="createBy" width="80" show-overflow-tooltip />
+           <el-table-column label="鍏ュ簱鏃堕棿" prop="inboundDate" width="100" 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="100" 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="cartonSpecifications" width="150"></el-table-column>
+          <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, 'purchase');">缂栬緫</el-button>
@@ -130,12 +113,9 @@
        </div>
      </el-tab-pane>
       
-      <el-tab-pane label="鏉愭枡鍏ュ簱" name="manual">
+      <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"
@@ -167,27 +147,28 @@
             :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="inboundDate" width="100" show-overflow-tooltip />
-            <!-- <el-table-column label="鍏ュ簱鎵规" prop="inboundBatches" show-overflow-tooltip /> -->
-<!--             <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" width="240" 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="70" show-overflow-tooltip />
-            <el-table-column label="鐗╁搧绫诲瀷" prop="itemType" show-overflow-tooltip />
-						<el-table-column label="鍏ュ簱鏁伴噺" prop="inboundNum" width="100" show-overflow-tooltip />
-<!--						<el-table-column label="鍓╀綑搴撳瓨" prop="inboundNum0" show-overflow-tooltip />-->
-<!--						<el-table-column label="鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" width="150"></el-table-column>-->
-<!--						<el-table-column label="鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" width="150"></el-table-column>-->
-<!--            <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="80" show-overflow-tooltip />-->
-<!--            <el-table-column label="涓嶅惈绋庢�讳环" prop="taxExclusiveTotalPrice" width="100" 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="100" 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="cartonSpecifications" width="150"></el-table-column>
             <el-table-column label="鍏ュ簱浜�" prop="createBy" width="80" show-overflow-tooltip />
             <el-table-column fixed="right" label="鎿嶄綔" width="100" align="center">
               <template #default="scope">
                 <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'manual');">缂栬緫</el-button>
-                <el-button link type="success" size="small" @click="showQRCode(scope.row)">鐢熸垚鏉″舰鐮�</el-button>
-                <el-button link type="success" size="small" @click="showERCode(scope.row)">鐢熸垚浜岀淮鐮�</el-button>
+                <el-button link type="success" size="small" @click="showQRCode(scope.row,2)">鐢熸垚鏉″舰鐮�</el-button>
+                <el-button link type="success" size="small" @click="showERCode(scope.row,2)">鐢熸垚浜岀淮鐮�</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -228,6 +209,59 @@
         </div>
       </div>
     </el-dialog>
+    <el-dialog v-model="barcodeDia" title="浜у搧淇℃伅" width="40%" @close="closeBarcodeDia">
+      <div>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <div class="barcode-item">
+              <div class="barcode-label">鍥剧墖</div>
+              <img class="barcode-img" :src="javaApiUrl+barcodeDetail.url"></img>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <div class="barcode-item">
+              <div class="barcode-label">鍚嶇О</div>
+              <div class="barcode-value">{{barcodeDetail.productCategory}}</div>
+            </div>
+          </el-col>
+          <el-col :span="12">
+            <div class="barcode-item">
+              <div class="barcode-label">鍗曚环</div>
+              <div class="barcode-value">{{barcodeDetail.productCategory}}鍏�</div>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <div class="barcode-item">
+              <div class="barcode-label">鍏ュ簱浜�</div>
+              <div class="barcode-value">{{barcodeDetail.createBy}}</div>
+            </div>
+          </el-col>
+          <el-col :span="12">
+            <div class="barcode-item">
+              <div class="barcode-label">鏁伴噺/{{barcodeDetail.unit}}</div>
+              <div class="barcode-value">{{barcodeDetail.inboundNum}}</div>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <div class="barcode-item">
+              <div class="barcode-label">瑙勬牸</div>
+              <div class="barcode-value">{{barcodeDetail.specificationModel}}</div>
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="closeBarcodeDia">鍏抽棴</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -237,11 +271,13 @@
 import { ElMessageBox } from "element-plus";
 import useUserStore from '@/store/modules/user'
 import dayjs from 'dayjs'
+const javaApiUrl = __BASE_API__;
 import {
 	getStockInPage,
 	getStockInPageByProduction,
 	delStockIn,
 	delStockInCustom, getInPageByCustom,
+  stockinDetail,detailManagementByCustom
 } from "@/api/inventoryManagement/stockIn.js";
 import FormDia from './components/formDia.vue'
 import FormDiaManual from './components/formDiaManual.vue'
@@ -262,7 +298,7 @@
 const formDia = ref()
 const formDiaManual = ref()
 const formDiaProduct = ref()
-const activeTab = ref('production') // 褰撳墠婵�娲荤殑 tab
+const activeTab = ref('purchase') // 褰撳墠婵�娲荤殑 tab
 
 const page = reactive({
   current: 1,
@@ -353,6 +389,7 @@
 
 // 鎵撳紑寮规
 const openForm = async (type, row, tabType) => {
+  if(barcodeDia.value)return
   const currentTab = tabType || activeTab.value
   await nextTick(() => {
     if (currentTab === 'manual') {
@@ -424,7 +461,7 @@
     } else {
       // 鏉愭枡鍏ュ簱
       deleteApi = delStockInCustom
-      deleteParams = { ids }
+      deleteParams = [...ids]
     }
     
     deleteApi(deleteParams).then(() => {
@@ -442,15 +479,17 @@
 // 浜岀淮鐮佺浉鍏冲彉閲�
 const qrCodeDialogVisible = ref(false);
 const qrCodeUrl = ref("");
-const showQRCode = async (row) => {
+const showQRCode = async (row,type) => {
+  if(barcodeDia.value)return
   try {
     // 鏋勫缓浜岀淮鐮佸唴瀹癸紝鍙寘鍚噰璐悎鍚屽彿锛堢函鏂囨湰锛�
-    const qrContent = row.id || '';
+    let qrContent = row.id || '';
     // 妫�鏌ュ唴瀹规槸鍚︿负绌�
     if (!qrContent) {
       proxy.$modal.msgWarning("璇ヨ鍟嗗搧id锛屾棤娉曠敓鎴愭潯褰㈢爜");
       return;
     }
+    qrContent+=`,${type}`
     qrCodeDialogVisible.value = true;
     await nextTick();
     JsBarcode("#barcode", qrContent+'', {
@@ -466,13 +505,15 @@
 
 const erCodeDialogVisible = ref(false);
 const erCodeUrl = ref("");
-const showERCode = async (row) => {
-  const qrContent = row.id || '';
+const showERCode = async (row,type) => {
+  if(barcodeDia.value)return
+  let qrContent = row.id || '';
     // 妫�鏌ュ唴瀹规槸鍚︿负绌�
   if (!qrContent) {
     proxy.$modal.msgWarning("璇ヨ鍟嗗搧id锛屾棤娉曠敓鎴愪簩缁寸爜");
     return;
   }
+  qrContent+=`,${type}`
   try {
     erCodeUrl.value = await QRCode.toDataURL(qrContent+'', {
       width: 200,
@@ -519,12 +560,80 @@
   proxy.$modal.msgSuccess("涓嬭浇鎴愬姛");
 };
 
+//鎵爜鐩稿叧鍙傛暟
+const barcodeDia = ref(false);
+const scanBarcodeInput = ref('');
+const barcodeDetail = ref({})
+// 鎵爜鍑芥暟
+const scanBarcode = (e) => {
+  if(!e||!e.target||!e.target.tagName){
+    return;
+  }
+  if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') {
+    return
+  }
+  if (e.key === 'Enter') {
+    let _value = scanBarcodeInput.value
+    getDetail(_value)
+    scanBarcodeInput.value = ""
+  } else {
+    scanBarcodeInput.value += e.key
+  }
+}
+const getDetail = (barcode)=>{
+  if(barcode.indexOf(",")==-1){
+    proxy.$modal.msgWarning("璇锋壂鎻忔纭殑鏉″舰鐮�")
+    return
+  }
+  let barcodeList = barcode.split(",")
+  let barcodeId = barcodeList[0]
+  let type = barcodeList[1]
+  let detailApi = null
+  if(type==1){
+    detailApi = stockinDetail
+  }else if(type==2){
+    detailApi = detailManagementByCustom
+  }
+  
+  if(!detailApi){
+    proxy.$modal.msgWarning("璇锋壂鎻忔纭殑鏉″舰鐮�")
+    return
+  }
+  detailApi({id:barcodeId}).then((resp) => {
+    if(resp.code!=200||!resp.data)return
+    barcodeDetail.value = resp.data
+    barcodeDia.value = true
+  }).catch(() => {
+    proxy.$modal.msgError("鏌ョ湅璇︽儏澶辫触")
+  })
+  
+}
+
+const closeBarcodeDia = () => {
+  barcodeDia.value = false
+}
+
 onMounted(() => {
+  // 娣诲姞鎵爜鏋洃鍚簨浠�
+  document.addEventListener('keypress', scanBarcode)
   getList()
 })
 </script>
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+.barcode-item{
+  display: flex;
+  justify-content: space-between;
+  padding: 5px 0;
+  
+}
+.barcode-img{
+  width: 80px;
+  height: 80px;
+  border-radius: 5px;
+  background-color: #F5F5F5;
+}
+</style>
 
 
 

--
Gitblit v1.9.3