From 9ae2c0863a9e0a7bed5e00faf008160a2791f16a Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 31 十二月 2025 09:40:05 +0800
Subject: [PATCH] Pda盘点报告盘点页面开发,功能逻辑梳理,逻辑编写,接口测试联调,Pda版本号更改

---
 pages/wareHouse/inventory/index.vue | 1180 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 684 insertions(+), 496 deletions(-)

diff --git a/pages/wareHouse/inventory/index.vue b/pages/wareHouse/inventory/index.vue
index 3f8b34a..08944a5 100644
--- a/pages/wareHouse/inventory/index.vue
+++ b/pages/wareHouse/inventory/index.vue
@@ -1,530 +1,718 @@
 <template>
-	<view class="page">
-		<view class="packing-registration-bg" />
-		<u-navbar title="搴撳瓨鐩樼偣" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
-			back-icon-color="#000">
-			<template #right>
-				<text style="font-size:14px;margin-right:14px;font-weight:bold"  @click="goSubmit">鎻愪氦</text>
-			</template>
-		</u-navbar>
-		<view class="packing-registration-param">
-			<view class="packing-registration-param-view">
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">鐩樼偣鎶ュ憡鍙�</text>
-					</view>
-					<view class="packing-registration-param-item-right">
-						<text class="item-one item-two" @click="seachPersonnelNo()">{{ registerInfo.value1 == '' ?
-							"鐐瑰嚮閫夋嫨" : registerInfo.value1 }}</text>
-						<u-icon name="arrow-right" color="#687792" size="28" @click="seachPersonnelNo()"
-							v-show="registerInfo.value1 == ''"></u-icon>
-					</view>
-				</view>
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">浠撳簱</text>
-					</view>
-					<view class="packing-registration-param-item-right">
-						<text class="item-one item-two">{{ registerInfo.value2 }}</text>
-					</view>
-				</view>
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">闆朵欢鍙�</text>
-					</view>
-					<view class="packing-registration-param-item-right">
-						<view class="item-one item-two" @click="openPN()">
-							<text>{{ registerInfo.value6 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value6 }}</text>
-						</view>
-						<u-icon name="arrow-right" color="#687792" size="28"
-							v-show="registerInfo.value6 == ''"></u-icon>
-					</view>
-				</view>
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">鎵规鍙�</text>
-					</view>
-					<view class="packing-registration-param-item-right" @click="openBatch()">
-						<text
-							class="item-one item-two">{{ registerInfo.value3 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value3 }}</text>
-						<u-icon name="arrow-right" color="#687792" size="28"
-							v-show="registerInfo.value3 == ''"></u-icon>
-					</view>
-				</view>
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">搴撲綅鍙�</text>
-					</view>
-					<view class="packing-registration-param-item-right" @click="openLocation()">
-						<view class="item-one item-two">
-							<text>{{ registerInfo.value4 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value4 }}</text>
-						</view>
-						<u-icon name="arrow-right" color="#687792" size="28"
-							v-show="registerInfo.value4 == ''"></u-icon>
-					</view>
-				</view>
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">鐩樼偣鏁伴噺</text>
-					</view>
-					<view class="packing-registration-param-item-right" @click="openPhysicalInventory()">
-						<view class="item-one item-two">
-							<text>{{ registerInfo.value5 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value5 }}</text>
-						</view>
-						<u-icon name="arrow-right" color="#687792" size="28"
-							v-show="registerInfo.value4 == ''"></u-icon>
-					</view>
-				</view>
-				<view class="packing-registration-param-item param-extra">
-					<view class="packing-registration-param-item-left">
-						<text class="item-one">鐩樼偣璁板綍锛�</text>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="wrap">
-			<scroll-view class="packing-registration-scroll-list" scroll-y="true">
-				<u-cell-group class="packing-registration-scroll-list-group" :border="false">
-					<!-- <div class="tip" style="text-align: center;" v-if="hasScanSnList.length==0">-璇锋壂鐮�-</div> -->
-					<view class="content" v-for="(item, index) in hasScanSnList" :key="index" :index="index">
-						<view class="content-header">
-							<view class="content-header-title">{{ index + 1 }}</view>
-						</view>
-						<view class="content-body">
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-name">闆朵欢鍙凤細</view>
-								</view>
-								<view class="_content">
-									{{ item.value0 }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-name">鎵规鍙凤細</view>
-								</view>
-								<view class="_content">
-									{{ item.value1 }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-name">搴撲綅鍙凤細</view>
-								</view>
-								<view class="_content">
-									{{ item.value0 }}
-								</view>
-							</view>
-							<view class="row-list">
-								<view class="_label">
-									<view class="_label-name">鐩樼偣鏁伴噺锛�</view>
-								</view>
-								<view class="_content">
-									{{ item.value1 }}
-								</view>
-							</view>
-						</view>
-					</view>
-				</u-cell-group>
-			</scroll-view>
-			<scan></scan>
-			<!-- 闆朵欢鍙� -->
-			<modalBg ref="openPN" :confirm="confirmPN">
-				<u-field v-model="registerInfo.value6" label="闆朵欢鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false">
-				</u-field>
-			</modalBg>
-			<!-- 鎵规鍙� -->
-			<modalBg ref="openBatch" :confirm="confirmBatch">
-				<u-field v-model="registerInfo.value3" label="鎵规鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false">
-				</u-field>
-			</modalBg>
-			<!-- 搴撲綅鍙� -->
-			<modalBg ref="openLocation" :confirm="confirmLocation">
-				<u-field v-model="registerInfo.value4" label="搴撲綅鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false">
-				</u-field>
-			</modalBg>
-			<!-- 鐩樼偣鏁伴噺 -->
-			<modalBg ref="openPhysicalInventory" :confirm="confirmPhysicalInventory">
-				<u-field v-model="registerInfo.value5" label="鐩樼偣鏁伴噺锛�" label-width="140" placeholder="璇疯緭鍏�"
-					:border-bottom="false">
-				</u-field>
-			</modalBg>
-		</view>
-	</view>
+  <view class="page">
+    <view class="packing-registration-bg" />
+    <u-navbar
+      title="搴撳瓨鐩樼偣"
+      :background="background"
+      :border-bottom="false"
+      :title-bold="true"
+      title-color="#000"
+      back-icon-color="#000"
+    >
+      <template #right>
+        <text
+          style="font-size: 14px; margin-right: 14px; font-weight: bold"
+          @click="goSubmit"
+          >鎻愪氦</text
+        >
+      </template>
+    </u-navbar>
+    <view class="packing-registration-param">
+      <view class="packing-registration-param-view">
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">鐩樼偣鎶ュ憡鍙�</text>
+          </view>
+          <view class="packing-registration-param-item-right">
+            <text class="item-one item-two" @click="seaRchPersonnelNo()">{{
+              registerInfo.invListNo == "" ? "鐐瑰嚮閫夋嫨" : registerInfo.invListNo
+            }}</text>
+            <u-icon
+              name="arrow-right"
+              color="#687792"
+              size="28"
+              @click="seaRchPersonnelNo()"
+              v-show="registerInfo.invListNo == ''"
+            ></u-icon>
+          </view>
+        </view>
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">浠撳簱</text>
+          </view>
+          <view class="packing-registration-param-item-right">
+            <text class="item-one item-two">{{
+              registerInfo.warehouseId
+            }}</text>
+          </view>
+        </view>
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">闆朵欢鍙�</text>
+          </view>
+          <view class="packing-registration-param-item-right">
+            <view class="item-one item-two" @click="openPN()">
+              <text>{{
+                registerInfo.partNo == "" ? "鐐瑰嚮杈撳叆" : registerInfo.partNo
+              }}</text>
+            </view>
+            <u-icon
+              name="arrow-right"
+              color="#687792"
+              size="28"
+              v-show="registerInfo.partNo == ''"
+            ></u-icon>
+          </view>
+        </view>
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">鎵规鍙�</text>
+          </view>
+          <view
+            class="packing-registration-param-item-right"
+            @click="openBatch()"
+          >
+            <text class="item-one item-two">{{
+              registerInfo.ifsBatchNo == ""
+                ? "鐐瑰嚮杈撳叆"
+                : registerInfo.ifsBatchNo
+            }}</text>
+            <u-icon
+              name="arrow-right"
+              color="#687792"
+              size="28"
+              v-show="registerInfo.ifsBatchNo == ''"
+            ></u-icon>
+          </view>
+        </view>
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">搴撲綅鍙�</text>
+          </view>
+          <view
+            class="packing-registration-param-item-right"
+            @click="openLocation()"
+          >
+            <view class="item-one item-two">
+              <text>{{
+                registerInfo.locationNo == ""
+                  ? "鐐瑰嚮杈撳叆"
+                  : registerInfo.locationNo
+              }}</text>
+            </view>
+            <u-icon
+              name="arrow-right"
+              color="#687792"
+              size="28"
+              v-show="registerInfo.locationNo == ''"
+            ></u-icon>
+          </view>
+        </view>
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">鐩樼偣鏁伴噺</text>
+          </view>
+          <view
+            class="packing-registration-param-item-right"
+            @click="openPhysicalInventory()"
+          >
+            <view class="item-one item-two">
+              <text>{{
+                registerInfo.qtyAvailable == ""
+                  ? "鐐瑰嚮杈撳叆"
+                  : registerInfo.qtyAvailable
+              }}</text>
+            </view>
+            <u-icon
+              name="arrow-right"
+              color="#687792"
+              size="28"
+              v-show="registerInfo.qtyAvailable == ''"
+            ></u-icon>
+          </view>
+        </view>
+        <view class="packing-registration-param-item param-extra">
+          <view class="packing-registration-param-item-left">
+            <text class="item-one">鐩樼偣璁板綍锛�</text>
+          </view>
+        </view>
+      </view>
+    </view>
+    <view class="wrap">
+      <scroll-view class="packing-registration-scroll-list" scroll-y="true">
+        <u-cell-group
+          class="packing-registration-scroll-list-group"
+          :border="false"
+        >
+          <!-- <div class="tip" style="text-align: center;" v-if="hasScanSnList.length==0">-璇锋壂鐮�-</div> -->
+          <view
+            class="content"
+            v-for="(item, index) in hasScanSnList"
+            :key="index"
+            :index="index"
+          >
+            <view class="content-header">
+              <view class="content-header-title">{{
+                hasScanSnList.length - index
+              }}</view>
+            </view>
+            <view class="content-body">
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-name">闆朵欢鍙凤細</view>
+                </view>
+                <view class="_content">
+                  {{ item.partNo }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-name">鎵规鍙凤細</view>
+                </view>
+                <view class="_content">
+                  {{ item.ifsBatchNo }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-name">搴撲綅鍙凤細</view>
+                </view>
+                <view class="_content">
+                  {{ item.locationNo }}
+                </view>
+              </view>
+              <view class="row-list">
+                <view class="_label">
+                  <view class="_label-name">鐩樼偣鏁伴噺锛�</view>
+                </view>
+                <view class="_content">
+                  {{ item.qtyAvailable }}
+                </view>
+              </view>
+            </view>
+          </view>
+        </u-cell-group>
+      </scroll-view>
+      <scan></scan>
+      <!-- 闆朵欢鍙� -->
+      <modalBg ref="openPN" :confirm="confirmPN">
+        <u-field
+          v-model="registerInfo.partNo"
+          label="闆朵欢鍙凤細"
+          placeholder="璇疯緭鍏�"
+          :border-bottom="false"
+        >
+        </u-field>
+      </modalBg>
+      <!-- 鎵规鍙� -->
+      <modalBg ref="openBatch" :confirm="confirmBatch">
+        <u-field
+          v-model="registerInfo.ifsBatchNo"
+          label="鎵规鍙凤細"
+          placeholder="璇疯緭鍏�"
+          :border-bottom="false"
+        >
+        </u-field>
+      </modalBg>
+      <!-- 搴撲綅鍙� -->
+      <modalBg ref="openLocation" :confirm="confirmLocation">
+        <u-field
+          v-model="registerInfo.locationNo"
+          label="搴撲綅鍙凤細"
+          placeholder="璇疯緭鍏�"
+          :border-bottom="false"
+        >
+        </u-field>
+      </modalBg>
+      <!-- 鐩樼偣鏁伴噺 -->
+      <modalBg ref="openPhysicalInventory" :confirm="confirmPhysicalInventory">
+        <u-field
+          v-model="registerInfo.qtyAvailable"
+          label="鐩樼偣鏁伴噺锛�"
+          label-width="140"
+          placeholder="璇疯緭鍏�"
+          :border-bottom="false"
+        >
+        </u-field>
+      </modalBg>
+    </view>
+  </view>
 </template>
 <script>
-	import modalBg from '@/components/modal/modal-bg.vue'
-	import scan from "@/components/scan/scan.vue";
-	import content_bg from '@/static/custom/packing/backBg.png'
-	export default {
-		components: {
-			scan,
-			modalBg
-		},
-		data() {
-			return {
-				background: {
-					backgroundImage: `url(${content_bg})`,
-					backgroundAttachment: 'fixed',
-					backgroundSize: '100% auto',
-					backgroundRepeat: 'no-repeat',
-				},
-				labelStyle: {
-					fontSize: '32rpx',
-					whiteSpace: 'nowrap'
-				},
-				registerInfo: {},
-				hasScanSnList: [],
-				delContent: null,
-				staffList: [],
-			};
-		},
-		onLoad(option) {},
-		onShow() {
-
-			let that = this
-
-			uni.$off('scan') // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒
-			uni.$on('scan', function(data) {
-				console.log('onscan');
-				//鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲�
-				console.log('鎵爜缁撴灉锛�', data.code);
-				that.scanHandle(data.code)
-				that.$forceUpdate();
-
-			})
-		},
-		onNavigationBarButtonTap() {
-			this.goScan()
-		},
-		onReady() {},
-		methods: {
-			//闆朵欢鍙�
-			openPN() {
-				this.$refs.openPN.open();
-			},
-			// 寮规淇濆瓨
-			confirmPN() {
-				console.log('淇濆瓨', this.registerInfo.value6);
-				// 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
-			},
-			//鎵规鍙�
-			openBatch() {
-				this.$refs.openBatch.open();
-			},
-			// 寮规淇濆瓨
-			confirmBatch() {
-				console.log('淇濆瓨', this.registerInfo.value3);
-				// 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
-			},
-			//搴撲綅鍙�
-			openLocation() {
-				this.$refs.openLocation.open();
-			},
-			// 寮规淇濆瓨
-			confirmLocation() {
-				console.log('淇濆瓨', this.registerInfo.value4);
-				// 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
-			},
-			//鐩樼偣鏁伴噺
-			openPhysicalInventory() {
-				this.$refs.openPhysicalInventory.open();
-			},
-			// 寮规淇濆瓨
-			confirmPhysicalInventory() {
-				console.log('淇濆瓨', this.registerInfo.value5);
-				// 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
-			},
-
-			setNo(val) {
-				console.log('11111', val)
-				this.registerInfo.value1 = val.value1
-				this.registerInfo.value2 = val.value2
-
-			},
-			//鐩樼偣鎶ュ憡鍙�
-			seachPersonnelNo() {
-				console.log('11111')
-				uni.navigateTo({
-					url: '/pages/wareHouse/inventory/orderList'
-				})
-			},
-			goScan() {
-				uni.scanCode({
-					scanType: ['qrCode'],
-					success: res => {
-						try {
-							console.log('鎵爜缁撴灉锛�', res);
-							this.scanHandle(res.result)
-						} catch (e) {}
-					}
-				});
-			},
-			scanHandle(scanresult) {
-				scanresult = scanresult.replace(/[\r\n]/g, "")
-				if (scanresult.indexOf('{') > -1) {
-					//浜岀淮鐮�
-					const result = JSON.parse(scanresult)
-					//澧炲姞SN鏍¢獙
-					if (result.sn_no && result.sn_no != null && result.sn_no != '') {
-						if (this.hasScanSnList.length > 0) {
-							let hasScanSnIndex = this.hasScanSnList.indexOf(result.sn_no)
-							if (hasScanSnIndex < 0) {
-								this.hasScanSnList.push(result.sn_no)
-							} else {
-								this.$u.toast('璇峰嬁閲嶅鎵弿')
-							}
-						} else {
-							this.hasScanSnList.push(result.sn_no)
-						}
-					}
-
-				} else {
-					//澧炲姞SN鏍¢獙
-					if (this.hasScanSnList.length > 0) {
-						let hasScanSnIndex = this.hasScanSnList.indexOf(scanresult)
-						if (hasScanSnIndex < 0) {
-							this.hasScanSnList.push(scanresult)
-						} else {
-							this.$u.toast('璇峰嬁閲嶅鎵弿')
-						}
-					} else {
-						this.hasScanSnList.push(scanresult)
-					}
-				}
-			},
-  // 鐐瑰嚮鎻愪氦鎸夐挳鐨勪簨浠跺鐞嗗嚱鏁�
-  goSubmit() {
-    if (!this.registerInfo.value1) {
-      this.$u.toast('璇烽�夋嫨鐩樼偣鎶ュ憡鍙�');
-      return;
-    }
-    if (!this.registerInfo.value5) {
-      this.$u.toast('璇疯緭鍏ョ洏鐐规暟閲�');
-      return;
-    }
-    uni.showLoading({
-      mask: true,
-      title: "鎻愪氦涓�...",
-    });
-    // 澶勭悊鎻愪氦閫昏緫
-    this.$u.api.workReporting
-      .operationTask({
-        inventoryNo: this.registerInfo.value1,
-        warehouse: this.registerInfo.value2,
-        partNo: this.registerInfo.value6,
-        batchNo: this.registerInfo.value3,
-        location: this.registerInfo.value4,
-        quantity: this.registerInfo.value5,
-        scanList: this.hasScanSnList
-      })
-      .then((res) => {
-        uni.hideLoading();
-        if (res.success) {
-          this.$u.toast('鎻愪氦鎴愬姛');
-          this.registerInfo = {};
-          this.hasScanSnList = [];
-        } else {
-          this.$u.toast(res.message || '鎻愪氦澶辫触');
-        }
-      })
-      .catch(() => {
-        uni.hideLoading();
-        this.$u.toast('缃戠粶寮傚父锛岃閲嶈瘯');
-      });
+import modalBg from "@/components/modal/modal-bg.vue";
+import scan from "@/components/scan/scan.vue";
+import content_bg from "@/static/custom/packing/backBg.png";
+export default {
+  components: {
+    scan,
+    modalBg,
   },
-		}
-	};
+  data() {
+    return {
+      background: {
+        backgroundImage: `url(${content_bg})`,
+        backgroundAttachment: "fixed",
+        backgroundSize: "100% auto",
+        backgroundRepeat: "no-repeat",
+      },
+      labelStyle: {
+        fontSize: "32rpx",
+        whiteSpace: "nowrap",
+      },
+      registerInfo: {
+        invListNo: "",
+        warehouseId: "",
+        partNo: "",
+        ifsBatchNo: "",
+        locationNo: "",
+        qtyAvailable: "",
+      },
+      hasScanSnList: [],
+      delContent: null,
+      staffList: [],
+      submitList: {},
+      scanHandleList: {},
+    };
+  },
+  onLoad(option) {},
+  onShow() {
+    let that = this;
+
+    uni.$off("scan"); // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒
+
+    uni.$on("scan", function (data) {
+      if (that.registerInfo.invListNo == "") {
+        uni.showToast({
+          title: "璇峰厛閫夋嫨鐩樼偣鎶ュ憡鍙�",
+          icon: "none",
+        });
+        return;
+      }
+      console.log("onscan");
+      //鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲�
+      console.log("鎵爜缁撴灉锛�", data.code);
+      if (data.code) {
+        let codeInfo = JSON.parse(data.code);
+        // if (codeInfo.BN) {
+        // 鎵弿鎶ュ伐鍗曚簩缁寸爜
+        that.scanHandleList = codeInfo;
+        that.scanHandle(codeInfo);
+        // that.$forceUpdate();
+        // }
+      }
+    });
+  },
+  //   onNavigationBarButtonTap() {
+  //     this.goScan();
+  //   },
+  onReady() {},
+  methods: {
+    //闆朵欢鍙�
+    openPN() {
+      this.$refs.openPN.open();
+    },
+    // 寮规淇濆瓨
+    confirmPN() {
+      console.log("淇濆瓨", this.registerInfo.partNo);
+      // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
+    },
+    //鎵规鍙�
+    openBatch() {
+      this.$refs.openBatch.open();
+    },
+    // 寮规淇濆瓨
+    confirmBatch() {
+      console.log("淇濆瓨", this.registerInfo.ifsBatchNo);
+      // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
+    },
+    //搴撲綅鍙�
+    openLocation() {
+      this.$refs.openLocation.open();
+    },
+    // 寮规淇濆瓨
+    confirmLocation() {
+      console.log("淇濆瓨", this.registerInfo.locationNo);
+      // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
+    },
+    //鐩樼偣鏁伴噺
+    openPhysicalInventory() {
+      this.$refs.openPhysicalInventory.open();
+    },
+    // 寮规淇濆瓨
+    confirmPhysicalInventory() {
+      console.log("淇濆瓨", this.registerInfo.qtyAvailable);
+      // this.registerInfo.qtyAvailable = Number(this.registerInfo.qtyAvailable);
+      // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
+    },
+
+    setNo(val) {
+      console.log("val", val);
+      this.registerInfo.invListNo = val.INV_LIST_NO;
+      this.registerInfo.warehouseId = val.WAREHOUSE_ID;
+    },
+    //鐩樼偣鎶ュ憡鍙�
+    seaRchPersonnelNo() {
+      uni.navigateTo({
+        url: "/pages/wareHouse/inventory/orderList",
+      });
+    },
+    scanHandle(val) {
+      this.submitList = {};
+      const { PN, BN, NW } = val;
+      this.$u.api.shiftingParking
+        .selPartInfoPDA({ outBatchNo: BN })
+        .then((res) => {
+          console.log("res", res);
+          this.submitList = res.data;
+          // 妫�鏌ユ槸鍚﹀凡鐩樼偣
+          if (this.hasScanSnList && this.hasScanSnList.length > 0) {
+            // 鏌ユ壘鏄惁宸插瓨鍦ㄧ浉鍚岀殑 ifsBatchNo
+            const isAlreadyScanned = this.hasScanSnList.some(
+              (item) => item.ifsBatchNo === this.submitList.ifsBatchNo
+            );
+
+            if (isAlreadyScanned) {
+              uni.showModal({
+                title: "鎻愮ず",
+                content: "褰撳墠搴撳瓨宸茬洏鐐癸紝璇峰嬁閲嶅鐩樼偣",
+                showCancel: false,
+                confirmText: "纭畾",
+              });
+              return;
+            }
+          }
+          this.registerInfo = {
+            ...this.registerInfo,
+            partNo: this.submitList.partNo,
+            ifsBatchNo: this.submitList.ifsBatchNo,
+            // locationNo: this.registerInfo.locationNo,
+            qtyAvailable: this.submitList.qtyAvailable,
+          };
+
+          this.goSubmit();
+        })
+        .catch((err) => {
+          console.log("err", err);
+          uni.showModal({
+            title: "鎻愮ず",
+            content: err.message || "缃戠粶寮傚父锛岃閲嶈瘯",
+            showCancel: true,
+            success: function (res) {},
+          });
+          return;
+        });
+    },
+    getDifferentFields(obj1, obj2, mapping) {
+      const differences = {};
+
+      for (const [key1, mapRule] of Object.entries(mapping)) {
+        let value2;
+
+        if (typeof mapRule === "string") {
+          value2 = obj2[mapRule];
+        } else if (
+          mapRule &&
+          typeof mapRule === "object" &&
+          "fixed" in mapRule
+        ) {
+          value2 = mapRule.fixed;
+        } else {
+          continue;
+        }
+
+        if (obj1[key1] !== value2) {
+          differences[key1] = {
+            value1: obj1[key1],
+            value2,
+          };
+        }
+      }
+
+      return differences;
+    },
+    // 鐐瑰嚮鎻愪氦鎸夐挳鐨勪簨浠跺鐞嗗嚱鏁�
+    goSubmit() {
+      if (!this.registerInfo.invListNo) {
+        this.$u.toast("璇烽�夋嫨鐩樼偣鎶ュ憡鍙�");
+        return;
+      }
+      const diff = this.getDifferentFields(
+        this.registerInfo,
+        this.scanHandleList,
+        {
+          partNo: { fixed: this.scanHandleList.PN },
+          // qtyAvailable: { fixed: Number(this.scanHandleList.NW) },
+          ifsBatchNo: { fixed: this.scanHandleList.BN },
+        }
+      );
+      console.log("宸紓瀛楁:", diff);
+      console.log("鏄惁鏈夊樊寮�:", Object.keys(diff).length > 0);
+      if (this.registerInfo.locationNo !== this.submitList.locationNo) {
+        uni.showModal({
+          title: "鎻愮ず",
+          content: "鎵弿搴撲綅鍙蜂笌绯荤粺鏁版嵁涓嶄竴鑷�",
+          showCancel: true,
+          success: function (res) {},
+        });
+        return;
+      }
+      if (Object.keys(diff).length > 0) {
+        if (diff.partNo) {
+          uni.showModal({
+            title: "鎻愮ず",
+            content: "鎵弿闆朵欢鍙蜂笌绯荤粺鏁版嵁涓嶄竴鑷�",
+            showCancel: true,
+            success: function (res) {},
+          });
+          return;
+        }
+        if (diff.ifsBatchNo) {
+          uni.showModal({
+            title: "鎻愮ず",
+            content: "鎵弿鎵规鍙蜂笌绯荤粺鏁版嵁涓嶄竴鑷�",
+            showCancel: true,
+            success: function (res) {},
+          });
+          return;
+        }
+        if (diff.qtyAvailable) {
+          uni.showModal({
+            title: "鎻愮ず",
+            content: "鎵弿鐩樼偣鏁伴噺涓庣郴缁熸暟鎹笉涓�鑷�",
+            showCancel: true,
+            success: function (res) {},
+          });
+          return;
+        }
+      }
+      uni.showLoading({
+        mask: true,
+        title: "鎻愪氦涓�...",
+      });
+      console.log("鎻愪氦鐨勬暟鎹�", this.submitList);
+      // 澶勭悊鎻愪氦閫昏緫
+      this.$u.api.inventoryVerification
+        .erpInventorySubmit({
+          ...this.submitList,
+          invListNo: this.registerInfo.invListNo,
+        })
+        .then((res) => {
+          // uni.hideLoading();
+          this.$u.toast("鎻愪氦鎴愬姛");
+          !this.hasScanSnList.some(
+            (item) => item.ifsBatchNo === this.registerInfo.ifsBatchNo
+          ) && this.hasScanSnList.unshift(this.registerInfo);
+          // this.registerInfo = {};
+        })
+        .catch((err) => {
+          console.log("err", err);
+          // uni.hideLoading();
+          uni.showModal({
+            title: "鎻愮ず",
+            content: err.message || "缃戠粶寮傚父锛岃閲嶈瘯",
+            showCancel: true,
+            success: function (res) {},
+          });
+        });
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 .transparent-border {
-border: none;
+  border: none;
 }
-	.packing-registration-bg {
-		background-color: #F6F9FF;
-		background-image: url('~@/static/custom/packing/backBg.png');
-		padding: 0 20rpx;
-		background-attachment: fixed;
-		background-size: 100% auto;
-		background-repeat: no-repeat;
-		position: fixed;
-		top: 0;
-		bottom: 0;
-		width: 100%;
-		z-index: -1;
-	}
+.packing-registration-bg {
+  background-color: #f6f9ff;
+  background-image: url("~@/static/custom/packing/backBg.png");
+  padding: 0 20rpx;
+  background-attachment: fixed;
+  background-size: 100% auto;
+  background-repeat: no-repeat;
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  width: 100%;
+  z-index: -1;
+}
 
-	.packing-registration-param {
-		padding: 40rpx 30rpx 10rpx 30rpx;
+.packing-registration-param {
+  padding: 40rpx 30rpx 10rpx 30rpx;
 
-		.packing-registration-param-title {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			margin-bottom: 30rpx;
+  .packing-registration-param-title {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-bottom: 30rpx;
 
-			.title-label {
-				margin-left: 14rpx;
-				font-size: 34rpx;
-				font-weight: bold;
-				color: #283E65;
-			}
-		}
+    .title-label {
+      margin-left: 14rpx;
+      font-size: 34rpx;
+      font-weight: bold;
+      color: #283e65;
+    }
+  }
 
-		.packing-registration-param-view {
-			height: 615rpx;
-			background-color: #fff;
-			border-radius: 10rpx;
-			padding: 0rpx 23rpx;
-			margin-bottom: 30rpx;
+  .packing-registration-param-view {
+    height: 615rpx;
+    background-color: #fff;
+    border-radius: 10rpx;
+    padding: 0rpx 23rpx;
+    margin-bottom: 30rpx;
 
-			.packing-registration-param-item {
-				height: 90rpx;
-				border: 1px solid #ADC8E4;
-				line-height: 90rpx;
-				display: flex;
-				justify-content: space-between;
-				border: none;
+    .packing-registration-param-item {
+      height: 90rpx;
+      border: 1px solid #adc8e4;
+      line-height: 90rpx;
+      display: flex;
+      justify-content: space-between;
+      border: none;
 
-				.packing-registration-param-item-left {
-					.item-one {
-						font-size: 30rpx;
-						color: #666666;
-					}
-				}
+      .packing-registration-param-item-left {
+        .item-one {
+          font-size: 30rpx;
+          color: #666666;
+        }
+      }
 
-				.packing-registration-param-item-right {
-					display: flex;
-					justify-content: space-between;
+      .packing-registration-param-item-right {
+        display: flex;
+        justify-content: space-between;
 
-					.item-one {
-						font-size: 30rpx;
-						color: #333333;
-						margin-right: 6rpx;
-					}
+        .item-one {
+          font-size: 30rpx;
+          color: #333333;
+          margin-right: 6rpx;
+        }
 
-					.item-two {
-						font-size: 30rpx;
-						color: #A6B4CC;
-						margin-right: 6rpx;
-					}
+        .item-two {
+          font-size: 30rpx;
+          color: #a6b4cc;
+          margin-right: 6rpx;
+        }
 
-					.item-three {
-						font-size: 30rpx;
-						color: #214DED;
-						margin-right: 6rpx;
-					}
-				}
-			}
+        .item-three {
+          font-size: 30rpx;
+          color: #214ded;
+          margin-right: 6rpx;
+        }
+      }
+    }
 
-			.param-extra {
-				border-bottom: 1px solid #EDEDED;
-			}
-		}
-	}
+    .param-extra {
+      border-bottom: 1px solid #ededed;
+    }
+  }
+}
 
-	.wrap .packing-registration-scroll-list {
-		height: calc(100vh - var(--window-top) - var(--window-bottom) - 930rpx);
-		width: 100%;
-	}
+.wrap .packing-registration-scroll-list {
+  height: calc(100vh - var(--window-top) - var(--window-bottom) - 930rpx);
+  width: 100%;
+}
 
-	.packing-registration-scroll-list-group {
-		::v-deep .u-cell-item-box {
-			background-color: rgba(250, 252, 255, 0.36) !important;
-			padding: 0rpx 30rpx;
-		}
+.packing-registration-scroll-list-group {
+  ::v-deep .u-cell-item-box {
+    background-color: rgba(250, 252, 255, 0.36) !important;
+    padding: 0rpx 30rpx;
+  }
 
-		.content {
-			font-size: 12px;
-			background-color: #ffffff;
-			box-sizing: border-box;
-			border-radius: 10rpx;
-			margin: 0rpx 0rpx 16rpx;
-			padding: 20rpx 8rpx;
-			box-shadow: none;
-			display: flex;
-			align-items: center;
+  .content {
+    font-size: 12px;
+    background-color: #ffffff;
+    box-sizing: border-box;
+    border-radius: 10rpx;
+    margin: 0rpx 0rpx 16rpx;
+    padding: 20rpx 8rpx;
+    box-shadow: none;
+    display: flex;
+    align-items: center;
 
-			.content-header {
-				width: 40rpx;
-				height: 90rpx;
-				display: flex;
-				align-items: center;
+    .content-header {
+      height: 90rpx;
+      display: flex;
+      align-items: center;
+      max-width: 300rpx;
 
-				.content-header-icon {
-					background-image: url("~@/static/custom/moveWareHouse/header_icon.png");
-					background-size: 100% auto;
-					background-repeat: no-repeat;
-					height: 28rpx;
-					width: 28rpx;
-				}
+      .content-header-icon {
+        background-image: url("~@/static/custom/moveWareHouse/header_icon.png");
+        background-size: 100% auto;
+        background-repeat: no-repeat;
+        height: 28rpx;
+        width: 28rpx;
+        flex-shrink: 0;
+      }
 
-				.content-header-title {
-					margin-left: 11rpx;
-					font-size: 26rpx;
-					font-weight: bold;
-					color: #626369;
-				}
-			}
+      .content-header-title {
+        flex: 1; 
+        min-width: 0;
+        white-space: pre-wrap;
+        margin-left: 11rpx;
+        font-size: 20rpx;
+        font-weight: bold;
+        color: #626369;
+        word-wrap: break-word;
+        overflow-wrap: break-word;
+      }
+    }
 
-			.content-body {
-				flex: 1;
-				background-color: #ffffff;
-				border-radius: 10rpx;
-				padding: 0rpx 23rpx;
+    .content-body {
+      flex: 1;
+      background-color: #ffffff;
+      border-radius: 10rpx;
+      padding: 0rpx 23rpx;
 
-				.row-list {
-					height: 60rpx;
-					display: flex;
-					flex-direction: row;
-					padding: 0px;
-					align-items: center;
-				}
+      .row-list {
+        height: 60rpx;
+        display: flex;
+        flex-direction: row;
+        padding: 0px;
+        align-items: center;
+      }
 
-				.row-list ._label {
-					display: flex;
-					flex: 0.8;
-					color: #909399;
-					align-items: center;
+      .row-list ._label {
+        display: flex;
+        flex: 0.8;
+        color: #909399;
+        align-items: center;
 
-					._label-name {
-						margin-left: 11rpx;
-						font-size: 26rpx;
-						font-weight: 500;
-						color: #666666;
-					}
-				}
+        ._label-name {
+          margin-left: 11rpx;
+          font-size: 26rpx;
+          font-weight: 500;
+          color: #666666;
+        }
+      }
 
-				.row-list ._content {
-					flex: 1.5;
-					text-align: right;
-					color: #909399;
-					font-size: 24rpx;
-				}
+      .row-list ._content {
+        flex: 1.5;
+        text-align: right;
+        color: #909399;
+        font-size: 24rpx;
+      }
 
-				.row-list .s1 {
-					color: #d35651;
-				}
-			}
-		}
-	}
+      .row-list .s1 {
+        color: #d35651;
+      }
+    }
+  }
+}
 
-	.registration-form-footer {
-		display: flex;
-		margin-top: 10rpx;
-		margin-bottom: 10rpx;
-		margin-left: 20rpx;
-		margin-right: 20rpx;
-		padding-bottom: 14rpx;
+.registration-form-footer {
+  display: flex;
+  margin-top: 10rpx;
+  margin-bottom: 10rpx;
+  margin-left: 20rpx;
+  margin-right: 20rpx;
+  padding-bottom: 14rpx;
 
-		.btn {
-			flex: 1;
-			margin: 10rpx;
-			background: #214DED;
-			box-shadow: 0rpx 6rpx 8rpx 0rpx rgba(4, 49, 212, 0.3);
-			font-weight: bold;
-			color: #FEFEFE;
-			font-family: PingFang SC;
-		}
-	}
+  .btn {
+    flex: 1;
+    margin: 10rpx;
+    background: #214ded;
+    box-shadow: 0rpx 6rpx 8rpx 0rpx rgba(4, 49, 212, 0.3);
+    font-weight: bold;
+    color: #fefefe;
+    font-family: PingFang SC;
+  }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3