From 0a3ebcfddbb20e880c3e1d7c8879e9eaf0d56c70 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 13 一月 2026 14:12:17 +0800
Subject: [PATCH] 核磅录入导体提交,计算磅差,输入格式报错修复

---
 pages/wareHouse/nuclearScale/index.vue |  590 ++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 462 insertions(+), 128 deletions(-)

diff --git a/pages/wareHouse/nuclearScale/index.vue b/pages/wareHouse/nuclearScale/index.vue
index 203add9..c737de5 100644
--- a/pages/wareHouse/nuclearScale/index.vue
+++ b/pages/wareHouse/nuclearScale/index.vue
@@ -1,137 +1,471 @@
 <template>
-  <!-- 鏍哥褰曞叆 -->
-  <div 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" />
-    <u-form :model="form" ref="uForm" :label-width="200" :rules="rules" :error-type="['toast']" class="uForm">
-      <u-form-item label="鏍哥鍗曞彿" :border-bottom="false" prop="value1">
-        <u-input v-model="form.value1" type="select" placeholder="璇烽�夋嫨鏍哥鍗曞彿" @click="openList" />
-      </u-form-item>
-      <u-form-item label="浜у搧绫诲瀷" :border-bottom="false" prop="value2">
-        <u-input v-model="form.value2" placeholder="" disabled />
-      </u-form-item>
-      <u-form-item label="杞︾墝鍙�" :border-bottom="false" prop="value3">
-        <u-input v-model="form.value3" placeholder="" disabled />
-      </u-form-item>
-      <u-form-item label="鍙戣揣閫氱煡鍗�" :border-bottom="false" prop="value4">
-        <u-input v-model="form.value4" placeholder="" disabled />
-      </u-form-item>
-      <u-form-item label="瀹㈡埛鍚嶇О" :border-bottom="false" prop="value5">
-        <u-input v-model="form.value5" placeholder="" disabled />
-      </u-form-item>
-      <u-form-item label="鍙哥鍛�" :border-bottom="false" prop="value6">
-        <u-input v-model="form.value6" placeholder="" disabled />
-      </u-form-item>
-      <u-form-item label="鍙夎溅鍙告満" :border-bottom="false" prop="value7">
-        <u-input v-model="form.value7" placeholder="" disabled />
-      </u-form-item>
-      <u-form-item label="鏍哥璁板綍" :border-bottom="false" prop="value8">
-        <u-input v-model="form.value8" type="select" placeholder="" @click="openNuclearScaleRecord" />
-      </u-form-item>
-      <u-form-item :label="`鎵爜璁板綍(${num}鏉�)锛歚" :border-bottom="false" prop="value4" :label-width="260">
-        <!-- <u-input v-model="form.value4" placeholder="" disabled /> -->
-      </u-form-item>
-    </u-form>
-    <u-button type="primary" class="bottom-button" @click="submit">鍒涘缓</u-button>
+	<!-- 鏍哥褰曞叆 -->
+	<div 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" />
+		<u-form :model="form" ref="uForm" :label-width="200" :rules="rules" :error-type="['toast']" class="uForm">
+			<u-form-item label="鏍哥鍗曞彿" :border-bottom="false" prop="verificationNo" style="font-size: small">
+				<u-input v-model="form.verificationNo" type="select" placeholder="璇烽�夋嫨鏍哥鍗曞彿" @click="openList" />
+			</u-form-item>
+			<u-form-item label="浜у搧绫诲瀷" :border-bottom="false" prop="productType" style="font-size: small">
+				<u-input v-model="productTypeMap[form.productType] || form.productType" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="杞︾墝鍙�" :border-bottom="false" prop="licensePlate" style="font-size: small">
+				<u-input v-model="form.licensePlate" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="鍙戣揣閫氱煡鍗�1" :border-bottom="false" prop="shippingNoticeNo1" style="font-size: small">
+				<u-input v-model="form.shippingNoticeNo1" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="瀹㈡埛鍚嶇О1" :border-bottom="false" prop="customerName1" style="font-size: small">
+				<u-input v-model="form.customerName1" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="鍙戣揣閫氱煡鍗�2" :border-bottom="false" prop="shippingNoticeNo2" style="font-size: small">
+				<u-input v-model="form.shippingNoticeNo2" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="瀹㈡埛鍚嶇О2" :border-bottom="false" prop="customerName2" style="font-size: small">
+				<u-input v-model="form.customerName2" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="鍙哥鍛�" :border-bottom="false" prop="weighingOperator" style="font-size: small">
+				<u-input v-model="form.weighingOperator" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="鍙夎溅鍙告満" :border-bottom="false" prop="forkliftOperator" style="font-size: small">
+				<u-input v-model="form.forkliftOperator" placeholder="" disabled />
+			</u-form-item>
+			<u-form-item label="鏍哥璁板綍" :border-bottom="false" prop="value8" style="font-size: small">
+				<u-input type="select" placeholder="" @click="openNuclearScaleRecord" />
+			</u-form-item>
+			<u-form-item :label="`鎵爜璁板綍(${ScanCodeRecord.length}鏉�)锛歚" :border-bottom="false" prop="shippingNoticeNo1"
+				:label-width="260" style="font-size: small">
+			</u-form-item>
+		</u-form>
+		<view class="wrap">
+			<scroll-view class="packing-registration-scroll-list" scroll-y="true">
+				<u-cell-group class="packing-registration-scroll-list-group" :border="false">
+					<view class="content" v-for="(item, index) in ScanCodeRecord" :key="index" :index="index"
+						@click="cancelReport(item)">
+						<view class="content-header">
+							<view class="content-header-title">{{
+                ScanCodeRecord.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.outBatchNo }}
+								</view>
+							</view>
+							<view class="row-list">
+								<view class="_label">
+									<view class="_label-name">闆朵欢鎻忚堪锛�</view>
+								</view>
+								<view class="_content">
+									{{ item.partName }}
+								</view>
+							</view>
+							<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.grossWeight }}
+								</view>
+							</view>
+							<view class="row-list">
+								<view class="_label">
+									<view class="_label-name">鐩橀噸锛�</view>
+								</view>
+								<view class="_content">
+									{{ item.tareWeight }}
+								</view>
+							</view>
+							<view class="row-list">
+								<view class="_label">
+									<view class="_label-name">鍑�閲嶏細</view>
+								</view>
+								<view class="_content">
+									{{ item.netWeight }}
+								</view>
+							</view>
+						</view>
+					</view>
+				</u-cell-group>
+			</scroll-view>
+		</view>
+		<!-- 閾滄潌 -->
+		<u-modal v-model="showModal" title="" :show-cancel-button="true" :show-confirm-button="true"
+			@confirm="confirmDt" @cancel="cancelDt">
+			<view class="popup-content">
+				<view class="packing-registration-param">
+					<view class="packing-registration-param-view">
+						<view class="packing-registration-param-item param-extra">
+							<view style=" min-width: 80px;">
+								<text style="font-size:16px">鏍哥閲嶉噺锛�</text>
+							</view>
+							<view class="packing-registration-param-item-right">
+								<u-input  v-model="modalList.verificationWeight" :custom-style="{
+                fontSize: '16px',
+                height: '40px',
+                lineHeight: '40px'
+              }" :input-style="{
+                fontSize: '16px',
+                height: '40px',
+                lineHeight: '40px'
+              }" />
+							</view>
+						</view>
+						<view class="packing-registration-param-item param-extra">
+							<view style=" min-width: 80px;">
+								<text style="font-size:16px">鍙夎溅鐩橀噸锛�</text>
+							</view>
+							<view class="packing-registration-param-item-right">
+								<u-input v-model="modalList.forkliftWeight" :custom-style="{
+                fontSize: '16px',
+                height: '40px',
+                lineHeight: '40px'
+              }" :input-style="{
+                fontSize: '16px',
+                height: '40px',
+                lineHeight: '40px'
+              }" />
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</u-modal>
+		<u-button type="primary" class="bottom-button" @click="submit" :disabled="ScanCodeRecord.length == 0"
+			v-show="form.productType != 'TG01'">鎻愪氦</u-button>
 		<u-modal v-model="show" @confirm="confirm" content="鏄惁纭鎻愪氦" show-cancel-button></u-modal>
-    <scan></scan>
-  </div>
+		<saveForm ref="saveForm" :operationTaskList="form" @update="handleUpdate" />
+		<scan></scan>
+	</div>
 </template>
 
 <script>
-import scan from "@/components/scan/scan.vue";
-import content_bg from '@/static/custom/packing/backBg.png'
-export default {
-  components: { scan },
-  data() {
-    return {
-      background: {
-        backgroundImage: `url(${content_bg})`,
-        backgroundAttachment: 'fixed',
-        backgroundSize: '100% auto',
-        backgroundRepeat: 'no-repeat',
-      },
-      show:false,
-      num:1,
-      form: {
-        value0: '',
-        value1: '',
-        value2: '',
-        value3: '',
-        value4: '',
-        value5: '',
-        value6: '',
-        value7: '',
-        value8: ''
-      },
-      rules: {
-        value1: [
-          {
-            required: true,
-            message: '璇烽�夋嫨鏍哥鍗曞彿',
-            trigger: ['change', 'blur'],
-          },
-        ],
-      },
-    }
-  },
-  onReady() {
-    this.$refs.uForm.setRules(this.rules);
-  },
-  onShow() {
-    let that = this
-    uni.$off('scan') // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒
-    uni.$on('scan', function (data) {
-      console.log('onscan');
-      //鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲�
-      console.log('椤甸潰鎵爜缁撴灉锛�', data.code);
-      if (data.code) {
-        let codeInfo = JSON.parse(data.code)
-        if (codeInfo.WorkNo) {
-          // 鎵弿鎶ュ伐鍗曚簩缁寸爜
-          that.saveForm(codeInfo);
-        }
-      }
-    })
-  },
-  methods: {
-    // 鎻愪氦鎸夐挳
-    submit() {
-      this.show = true
-    },
-    // 寮规淇濆瓨
-    confirm() {
-      console.log('淇濆瓨', this.form.value1);
-      // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
-    },
-    // 閫夋嫨璁㈠崟鍙�
-    openList() {
-      uni.navigateTo({
-        url: '/pages/wareHouse/nuclearScale/nuclearScaleList'
-      })
-    },
-    //鏍哥璁板綍
-    openNuclearScaleRecord() {
-      uni.navigateTo({
-        url: '/pages/wareHouse/nuclearScale/nuclearscalerecord'
-      })
-    },
-    // 瀛樿鍗曞彿
-    setNo(val) {
-      this.form.value3 = val
-    },
-    // 鍥炴樉鎵爜鐨勪俊鎭�-鎶ュ伐鍗�
-    saveForm(val) {
-      let { WorkNo, ProcessName, ORDER_NO } = val
-      this.form.value1 = WorkNo
-      this.form.value2 = ProcessName
-      this.form.value3 = ORDER_NO
-    }
-  }
-}
+	import scan from "@/components/scan/scan.vue";
+	import content_bg from "@/static/custom/packing/backBg.png";
+	import saveForm from "./saveForm.vue";
+	export default {
+		components: {
+			scan,
+			saveForm,
+		},
+		data() {
+			return {
+				commitList: [],
+				modalList: {},
+				showModal: false,
+				productTypeMap: {
+					DTO1: "瀵间綋",
+					TG01: "閾滄潌",
+					DT02: "瀵间綋2.6",
+				},
+				ScanCodeRecord: [],
+				background: {
+					backgroundImage: `url(${content_bg})`,
+					backgroundAttachment: "fixed",
+					backgroundSize: "100% auto",
+					backgroundRepeat: "no-repeat",
+				},
+				show: false,
+				form: {},
+				rules: {
+					verificationNo: [{
+						required: true,
+						message: "璇烽�夋嫨鏍哥鍗曞彿",
+						trigger: ["change", "blur"],
+					}, ],
+				},
+			};
+		},
+		onReady() {
+			this.$refs.uForm.setRules(this.rules);
+		},
+		onShow() {
+			let that = this;
+			uni.$off("scan"); // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒
+			uni.$on("scan", function(data) {
+				console.log("onscan");
+				if (that.form.verificationNo == "") {
+					uni.showToast({
+						icon: "none",
+						title: "璇峰厛閫夋嫨鏍哥鍗曞彿锛�",
+						duration: 2 * 1000,
+					});
+					return;
+				}
+				//鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲�
+				console.log("椤甸潰鎵爜缁撴灉锛�", data.code);
+				if (data.code) {
+					let codeInfo = JSON.parse(data.code);
+
+					// 娣诲姞閲嶅鎵爜妫�鏌�
+					const batchNo = codeInfo.BN;
+					const isDuplicate = that.ScanCodeRecord.some(
+						(item) => item.outBatchNo === batchNo
+					);
+
+					if (isDuplicate) {
+						uni.showToast({
+							icon: "none",
+							title: "璇峰嬁閲嶅鎵爜锛�",
+							duration: 2 * 1000,
+						});
+						return;
+					}
+
+					let ScanCodeRecordList = {
+						outBatchNo: codeInfo.BN,
+						netWeight: codeInfo.NW,
+						tareWeight: codeInfo.TR, // 鐨噸
+						partNo: codeInfo.PN,
+						grossWeight: codeInfo.TW,
+						partName: codeInfo.ST,
+						originalLength: codeInfo.LN, // 闀垮害
+						palletNo: codeInfo.PNO, // 鐩樺彿
+						waivDevRejNo: codeInfo.WDR ? codeInfo.WDR : "*", // wdr鍙�
+						productType: that.form.productType,
+					};
+					if (that.form.productType == "TG01") {
+						that.$refs.saveForm.open(ScanCodeRecordList);
+					} else {
+						if (that.form.workshop == "ZF01") {
+							that.$refs.saveForm.open(ScanCodeRecordList);
+						}
+						that.queryCustomName(codeInfo, ScanCodeRecordList);
+					}
+				}
+			});
+		},
+		methods: {
+			queryCustomName(codeInfo, ScanCodeRecordList) {
+				// 鏌ヨ瀹㈡埛鍚嶇О
+				this.$u.api.NuclearScaleEntry.queryCustomName({
+					BN: codeInfo.BN,
+				}).then((res) => {
+					console.log("瀹㈡埛鍚嶇О锛�", res);
+					if (res.data != this.form.customerName1) {
+						let that = this;
+						// 鎵弿鎶ュ伐鍗曚簩缁寸爜
+						uni.showModal({
+							title: "鎻愮ず",
+							content: "瀹㈡埛涓嶄竴鑷达細" + res.data + " || " + that.form.customerName1,
+							showCancel: true,
+							success: function(res) {
+								if (res.confirm) {
+									that.ScanCodeRecord.unshift(ScanCodeRecordList);
+								} else if (res.cancel) {
+									return;
+								}
+							},
+						});
+					} else {
+						this.ScanCodeRecord.unshift(ScanCodeRecordList);
+					}
+				});
+			},
+			// 鍙栨秷鎵爜璁板綍
+			cancelReport(item) {
+				let that = this;
+				uni.showModal({
+					title: "鎻愮ず",
+					content: "鏄惁纭鍙栨秷閫変腑椤�",
+					success: function(res) {
+						if (res.confirm) {
+							that.ScanCodeRecord = that.ScanCodeRecord.filter(
+								(a) => a.outBatchNo !== item.outBatchNo
+							);
+						} else if (res.cancel) {
+							return;
+						}
+					},
+				});
+			},
+			// 瀵间綋鎻愪氦
+			confirmDt() {
+				// 璁$畻grossWeight鎬诲拰
+				let grossWeightSum = 0;
+				// 纭繚ScanCodeRecord鏄暟缁�
+				if (Array.isArray(this.ScanCodeRecord)) {
+					this.ScanCodeRecord.forEach((item) => {
+						grossWeightSum += Number(item.grossWeight) || 0;
+					});
+				}
+				// 浣跨敤姝g‘鐨勫瓧娈靛悕suppliedQuantity锛岃�屼笉鏄痸oltage
+				const magnetic = (
+					Number(this.modalList.verificationWeight) -
+					Number(this.modalList.forkliftWeight) -
+					grossWeightSum
+				).toFixed(1);
+				this.form.verificationWeight = this.modalList.verificationWeight;
+				this.form.forkliftWeight = this.modalList.forkliftWeight;
+				switch (this.form.productType) {
+					case "DT01":
+						if (Number(magnetic) >= -3 && Number(magnetic) <= 3) {
+							let that = this;
+							uni.showModal({
+								title: "鎻愮ず",
+								content: "纾呭樊:" + magnetic + "锛屾槸鍚︾‘璁ゆ彁浜わ紵",
+								success: function(res) {
+									if (res.confirm) {
+										that.allSubmit();
+									} else if (res.cancel) {
+										return;
+									}
+								},
+							});
+						} else {
+							this.$u.toast("纾呭樊:" + magnetic + "锛岃杞﹂棿鏍告煡");
+						}
+						break;
+					case "DT02":
+						if (Number(magnetic) >= -0.5 && Number(magnetic) <= 0.5) {
+							// this.ScanCodeRecord.push(this.form);
+							this.allSubmit();
+						} else {
+							this.$u.toast("纾呭樊:" + magnetic + "锛岃杞﹂棿鏍告煡");
+						}
+						break;
+				}
+			},
+			allSubmit() {
+				console.log("杩涙潵浜�", this.ScanCodeRecord);
+				this.ScanCodeRecord.forEach((item) => {
+					item.batchNo = item.outBatchNo;
+				});
+				this.form = {
+					...this.form,
+					weighingVerificationList: this.ScanCodeRecord,
+					verificationWeight: this.modalList.verificationWeight,
+					forkliftWeight: this.modalList.forkliftWeight,
+				};
+				console.log("11111111111", this.form);
+				// 澶勭悊鎻愪氦閫昏緫
+				this.$u.api.NuclearScaleEntry.createDetail(this.form)
+					.then((res) => {
+						this.$u.toast("鎻愪氦鎴愬姛");
+						this.ScanCodeRecord = [];
+						// if (this.form.productTypeMap == "DT01") {
+						this.modalList = {
+							verificationWeight: "",
+							// };
+						};
+					})
+					.catch((err) => {
+						console.log("err", err);
+						// uni.hideLoading();
+						uni.showModal({
+							title: "鎻愮ず",
+							content: err.message || "缃戠粶寮傚父锛岃閲嶈瘯",
+							showCancel: true,
+							success: function(res) {},
+						});
+					});
+			},
+
+			// 鍙栨秷
+			cancelDt() {
+				this.showModal = false;
+			},
+			handleUpdate(Obj) {
+				Obj.batchNo = Obj.outBatchNo;
+				this.form = {
+					...this.form,
+					weighingVerificationList: [Obj],
+					verificationWeight: Obj.verificationWeight,
+					forkliftWeight: Obj.forkliftWeight,
+				};
+				console.log("11111111111", this.form);
+				// 澶勭悊鎻愪氦閫昏緫
+				this.$u.api.NuclearScaleEntry.createDetail(this.form)
+					.then((res) => {
+						this.$u.toast("鎻愪氦鎴愬姛");
+						this.ScanCodeRecord = [];
+						// this.ScanCodeRecord.unshift(Obj);
+						this.$refs.saveForm.cancel();
+					})
+					.catch((err) => {
+						uni.hideLoading();
+						this.$refs.saveForm.cancel();
+						uni.showModal({
+							title: "鎻愮ず",
+							content: err.message || "缃戠粶寮傚父锛岃閲嶈瘯",
+							showCancel: true,
+							success: function(res) {},
+						});
+					});
+			},
+			// 鎻愪氦鎸夐挳
+			submit() {
+				if (this.form.productType != "TG01") {
+					this.modalList = {
+						verificationWeight: "",
+						forkliftWeight: this.form.productType == "DT01" ? "" : 0,
+					};
+					this.showModal = true;
+				} else {
+					this.allSubmit();
+				}
+			},
+			// 寮规淇濆瓨
+			confirm() {
+				console.log("淇濆瓨", this.form.verificationNo);
+				// 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊�
+				// this.allSubmit();
+			},
+			// 閫夋嫨璁㈠崟鍙�
+			openList() {
+				uni.navigateTo({
+					url: "/pages/wareHouse/nuclearScale/nuclearScaleList",
+				});
+			},
+			//鏍哥璁板綍
+			openNuclearScaleRecord() {
+				if (!this.form.verificationNo) {
+					uni.showToast({
+						icon: "none",
+						title: "璇峰厛閫夋嫨鏍哥鍗曞彿锛�",
+						duration: 2 * 1000,
+					});
+					return;
+				}
+				uni.navigateTo({
+					url: "/pages/wareHouse/nuclearScale/nuclearscalerecord?verificationNo=" +
+						encodeURIComponent(JSON.stringify(this.form.verificationNo)),
+				});
+			},
+			// 瀛樿鍗曞彿
+			setNo(val) {
+				this.form = val;
+				this.ScanCodeRecord = [];
+			},
+			// 鍥炴樉鎵爜鐨勪俊鎭�-鎶ュ伐鍗�
+			// saveForm(val) {
+			// 	let {
+			// 		WorkNo,
+			// 		ProcessName,
+			// 		ORDER_NO
+			// 	} = val;
+			// 	this.form.verificationNo = WorkNo;
+			// 	this.form.productType = ProcessName;
+			// 	this.form.licensePlate = ORDER_NO;
+			// },
+		},
+	};
 </script>
 
 <style lang="scss">
-@import 'index.scss';
+	@import "index.scss";
 </style>
\ No newline at end of file

--
Gitblit v1.9.3