From dee7ef800f4a695c6c9782ebfe3b40d3d789f457 Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期三, 10 十二月 2025 09:50:03 +0800
Subject: [PATCH] 1、采购入库、外仓扫码前端
---
H5/WCSM.aspx.cs | 19
H5/Js/PurchaseInventoryReturn.js | 464 ++++++++++++++++++
H5/PurchaseInventoryReturn.aspx | 258 ++++++++++
H5/Js/WCSM.js | 214 ++++++++
H5/PurchaseInventoryReturn.aspx.cs | 14
H5/WCSM.aspx | 513 ++++++++++++++++++++
6 files changed, 1,482 insertions(+), 0 deletions(-)
diff --git a/H5/Js/PurchaseInventoryReturn.js b/H5/Js/PurchaseInventoryReturn.js
new file mode 100644
index 0000000..6127b25
--- /dev/null
+++ b/H5/Js/PurchaseInventoryReturn.js
@@ -0,0 +1,464 @@
+锘縱ar vm = new Vue({
+ el: '#app',
+ data: function () {
+ return {
+ isLoading: false,
+ userInfo: {
+ "loginGuid": '',
+ "loginAccount": '',
+ },
+ formData: {
+ sectionCode: "",
+ barcode: "",
+ itemNo: "",
+ weight: "",
+ sumQuantity:0,
+ barcodeQuantity: 0,
+ returnBarcode: "",
+ returnQuantity: 0,
+ billNo: "",
+ remark:""
+ },
+ itemInsFormData: {},
+ tableData: [],
+ itemTableData: [],
+ barMessage: "",
+
+ Message: "",
+ messageCenter: {},
+ messageId: 0,
+
+ showClearIcon: false,
+ focus1: true,
+ focus2: false,
+ isActive: 0,
+ index: 0,
+ currentTab: 0,
+ contentScrollW: 0, // 瀵艰埅鍖哄搴�
+ scrollLeft: 0, // 妯悜婊氬姩鏉′綅缃�
+ fullHeight: "",
+ sectionCode:"",
+ depotData: [],
+ ItemDetail: [],
+ }
+ },
+ mounted() {
+ var that = this;
+ this.userInfo = {
+ loginGuid: this.GetLoginInfor().loginGuid,
+ loginAccount: this.GetLoginInfor().loginAccount,
+ };
+ },
+ methods: {
+ handleWeightInput(value) {
+ const source = value === undefined || value === null ? "" : String(value);
+ let sanitized = source.replace(/[^0-9.]/g, "");
+ const dotIndex = sanitized.indexOf(".");
+ if (dotIndex !== -1) {
+ const before = sanitized.slice(0, dotIndex + 1);
+ const after = sanitized.slice(dotIndex + 1).replace(/\./g, "");
+ sanitized = before + after;
+ }
+ if (sanitized.startsWith(".")) {
+ sanitized = "0" + sanitized;
+ }
+ if (sanitized === "") {
+ this.formData.weight = "";
+ return;
+ }
+ this.formData.weight = sanitized;
+ },
+ handleWeightBlur() {
+ if (this.formData.weight === "") {
+ return;
+ }
+ const numeric = Number(this.formData.weight);
+ if (isNaN(numeric) || numeric <= 0) {
+ this.formData.weight = "";
+ this.$toast.fail("鍏嬮噸闇�涓哄ぇ浜�0鐨勬暟瀛�");
+ this.$playSound('error');
+ } else {
+ this.formData.weight = numeric.toString();
+ }
+ },
+ getModel() {
+ var that = this;
+ that.isLoading = true;
+ that.AxiosHttp("post", 'MesDepotSections/GetSectionName', {
+ sectionCode: that.sectionCode
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+ that.depotData = json.data.tbBillList;
+ that.$refs.barcode.focus();
+ }
+ else {
+ that.$toast.fail(json.message);
+ that.$playSound('error');
+ that.depotData = [];
+ that.sectionCode = "";
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ that.depotData = [];
+ that.sectionCode = "";
+ that.$refs.sectionCode.focus();
+ });
+ },
+ getScan() {
+ var that = this;
+
+ if (that.formData.barcode.length * 1 <= 0) {
+ that.$toast.fail("鐗╂枡鏉$爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+
+ if (that.sectionCode.length * 1 <= 0) {
+ that.$toast.fail("搴撲綅缂栫爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+
+ if (that.formData.weight !== "" && that.formData.weight !== null && that.formData.weight !== undefined) {
+ var weightValue = Number(that.formData.weight);
+ if (isNaN(weightValue) || weightValue <= 0) {
+ that.formData.weight = "";
+ that.$toast.fail("鍏嬮噸闇�涓哄ぇ浜�0鐨勬暟瀛�");
+ that.$playSound('error');
+ that.$nextTick(() => {
+ if (that.$refs.weight && that.$refs.weight.focus) {
+ that.$refs.weight.focus();
+ }
+ });
+ return;
+ }
+ that.formData.weight = weightValue.toString();
+ } else {
+ that.formData.weight = "";
+ }
+ that.isLoading = true;
+ that.AxiosHttp("post", 'MesInvItemInCDetails/SaveBarCodes', {
+ sectionCode: that.sectionCode,
+ userName: that.userInfo.loginAccount,
+ barcode: that.formData.barcode,
+ weight: that.formData.weight ? Number(that.formData.weight) : null,
+ remark: that.formData.remark ? that.formData.remark : null
+
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+
+ that.formData.itemNo = json.data.tbBillList.itemNo;
+ that.formData.sumQuantity = json.data.tbBillList.sumQuantity;
+ that.ItemDetail = json.data.tbBillList.itemInDetails;
+ //that.itemInsFormData = json.data.tbBillList.itemIns;
+ //that.itemTableData = json.data.tbBillList.itemInDetails;g
+ that.tableData = json.data.tbBillList.itemBarCDetails;
+ //that.barMessage = json.data.tbBillList.message;
+ that.$refs.barcode.focus();
+ that.formData.barcode = null;
+ that.$notify({ type: 'success', message: json.message });
+ that.$playSound('success');
+ }
+ else {
+ that.$toast.fail(json.message);
+ that.$playSound('error');
+ that.$refs.barcode.focus();
+ that.formData.barcode = null;
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ console.log(error);
+ that.$refs.barcode.focus();
+ });
+ },
+ getReturnScan() {
+ var that = this;
+
+ if (that.formData.returnBarcode.length * 1 <= 0) {
+ that.$toast.fail("楠岄��鏉$爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+
+ if (that.sectionCode.length * 1 <= 0) {
+ that.$toast.fail("搴撲綅缂栫爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+
+ that.isLoading = true;
+ that.AxiosHttp("post", 'MesInvItemInCDetails/GetReturnBarcodeInfo', {
+ sectionCode: that.sectionCode,
+ userName: that.userInfo.loginAccount,
+ returnBarcode: that.formData.returnBarcode,
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+ that.formData.returnQuantity = json.data.tbBillList.quantity || 0;
+ // 浠巌temBarcodeDetails鑾峰彇itemNo鍜宷uantity
+ if (json.data.tbBillList.itemBarcodeDetails) {
+ that.formData.itemNo = json.data.tbBillList.itemBarcodeDetails.itemNo || '';
+ that.formData.barcodeQuantity = json.data.tbBillList.itemBarcodeDetails.quantity || 0;
+ that.formData.billNo = json.data.tbBillList.itemBarcodeDetails.billNo || '';
+ }
+ that.$notify({ type: 'success', message: json.message });
+ that.$playSound('success');
+ }
+ else {
+ that.$toast.fail(json.message);
+ that.$playSound('error');
+ that.$refs.returnBarcode.focus();
+ that.formData.returnBarcode = null;
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ console.log(error);
+ that.$refs.returnBarcode.focus();
+ });
+ },
+ confirmReturn() {
+ var that = this;
+
+ if (!that.formData.returnBarcode || that.formData.returnBarcode.length <= 0) {
+ that.$toast.fail("楠岄��鏉$爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+
+ if (!that.formData.returnQuantity || that.formData.returnQuantity * 1 <= 0) {
+ that.$toast.fail("楠岄��鏁伴噺蹇呴』澶т簬0锛�");
+ that.$playSound('error');
+ return;
+ }
+ if (that.formData.weight !== "" && that.formData.weight !== null && that.formData.weight !== undefined) {
+ var weightValue = Number(that.formData.weight);
+ if (isNaN(weightValue) || weightValue <= 0) {
+ that.formData.weight = "";
+ that.$toast.fail("鍏嬮噸闇�涓哄ぇ浜�0鐨勬暟瀛�");
+ that.$playSound('error');
+ that.$nextTick(() => {
+ if (that.$refs.weight && that.$refs.weight.focus) {
+ that.$refs.weight.focus();
+ }
+ });
+ return;
+ }
+ that.formData.weight = weightValue.toString();
+ } else {
+ that.formData.weight = "";
+ }
+
+ if (that.sectionCode.length * 1 <= 0) {
+ that.$toast.fail("搴撲綅缂栫爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+
+ that.isLoading = true;
+ that.AxiosHttp("post", 'MesInvItemInCDetails/ConfirmReturn', {
+ sectionCode: that.sectionCode,
+ userName: that.userInfo.loginAccount,
+ returnBarcode: that.formData.returnBarcode,
+ returnQuantity: that.formData.returnQuantity,
+ weight: that.formData.weight ? Number(that.formData.weight) : null
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+ that.formData.returnBarcode = "";
+ that.formData.returnQuantity = 0;
+ that.$refs.returnBarcode.focus();
+ that.$notify({ type: 'success', message: json.message });
+ that.$playSound('success');
+ }
+ else {
+ that.$toast.fail(json.message);
+ that.$playSound('error');
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ console.log(error);
+ });
+ },
+ getChaiFen() {
+ var that = this;
+ if (that.modeInfo.daa001.length <= 0) {
+ that.$toast.fail("棰嗘枡鍗曞彿涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+ if (that.scanInfo.splitNum * 1 <= 0) {
+ that.$toast.fail("鎷嗗垎鏁伴噺涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+ if (that.scanInfo.barcode.length * 1 <= 0) {
+ that.$toast.fail("鐗╂枡鏉$爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ return;
+ }
+ that.isLoading = true;
+ that.AxiosHttp("post", 'Womdaa/ScanCode', {
+ daa001: that.modeInfo.daa001,
+ userName: that.userInfo.loginAccount,
+ barcode: that.modeInfo.barcode,
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+ // that.modeInfo = json.data.tbBillList;
+ }
+ else {
+ that.$toast.fail(json.message);
+ that.$playSound('error');
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ console.log(error);
+ });
+ },
+ cleraCode() {
+ this.sectionCode = "";
+ this.$refs.sectionCode.focus();
+ },
+ ToErp() {
+ this.Message = "";
+ if (this.tableData.length == 0) {
+ this.Message = "鏉$爜涓虹┖锛屾棤娉曟帹閫丒RP";
+ return;
+ }
+ let userName = this.$loginInfo.account;
+ this.Message = "姝e湪鎺ㄩ�侀噰璐叆搴撳崟[" + this.itemInsFormData.billNo + "]鍒癊RP.... 璇风◢鍚�";
+ this.$post({
+ url: '/MesInvItemInCDetails/SaveMessageCenter',
+ data: {
+ id: this.itemInsFormData.id,
+ userName: userName,
+ billNo: this.itemInsFormData.billNo,
+ type: "A"
+ }
+ }).then(res => {
+ this.messageCenter = res.data.tbBillList;
+ this.sendPostRequest(this.messageCenter);
+ });
+ },
+
+ sendPostRequest(e) {
+ this.$sendPostRequest(e).then(res => {
+
+ //璁板綍涓�涓婱ES鐨勫洖璋�
+ this.saveMessage("A", {
+ url: this.$store.state.serverInfo.serverAPI + '/MesInvItemInCDetails/Audit',
+ data: { billNo: this.itemInsFormData.billNo }
+ });
+
+ if (res.state == 200) {
+ this.Message += " 姝e湪鎵цMES鍥炶皟锛佽绋嶅悗"
+ //鎵цMES鍥炶皟
+ this.audit();
+ } else {
+ this.Message += " ERP杩斿洖淇℃伅锛�" + res.msg;
+ //鏇存柊鎺ュ彛璁板綍琛�
+ this.messageCenter.result = 0;
+ this.messageCenter.dealWith = 0;
+ this.messageCenter.status = 1;
+ this.messageCenter.resultData = res.msg;
+ this.updateMessage(this.messageCenter);
+ }
+ });
+ },
+ //瀹℃牳鐨凪ES鍥炶皟
+ audit() {
+ this.$post({
+ url: '/MesInvItemInCDetails/Audit',
+ data: {
+ id: this.itemInsFormData.id,
+ billNo: this.itemInsFormData.billNo
+ }
+ }).then(res => {
+ if (res.data.tbBillList) {
+ this.Message += " 瀹℃牳鎴愬姛锛�";
+ } else {
+ this.Message += " 瀹℃牳澶辫触锛�";
+ }
+
+ let entity = {
+ id: this.messageId,
+ resultData: JSON.stringify(res.data),
+ dealWith: res.data.tbBillList ? 1 : 0,
+ result: res.data.tbBillList ? 1 : 0,
+ }
+ this.updateMessage(entity);
+ });
+ },
+ saveMessage(s, item) {
+
+ let title = "閲囪喘鍏ュ簱鍗�" + this.itemInsFormData.billNo + "瀹℃牳";
+ let tableName = "MES_INV_ITEM_INS_" + s;
+
+ if (s == "B") {
+ title = "閲囪喘鍏ュ簱鍗�" + this.itemInsFormData.billNo + "鍙嶅鏍�";
+ }
+
+ let entity = {
+ data: JSON.stringify(item.data),
+ url: item.url,
+ pid: this.messageCenter.id,
+ dealWith: 0,
+ result: 0,
+ status: 1,
+ seq: this.messageCenter.seq + 1,
+ createBy: this.$loginInfo.account,
+ title: title,
+ route: this.itemInsFormData.billNo,
+ tableName: tableName,
+ contentType: "application/json",
+ }
+
+ this.$post({
+ url: "/MessageCenter/Insert",
+ data: entity
+ }).then(res => {
+ this.messageId = res.data.tbBillList;
+ });
+ },
+ //鏇存柊鎺ュ彛璁板綍琛�
+ updateMessage(messageCenter) {
+ this.$post({
+ url: "/MessageCenter/ResetUpdate",
+ data: messageCenter
+ }).then(res => {
+ if (res.data.tbBillList > 0) {
+ this.Message += " [闂璁板綍鎴愬姛!]";
+ } else {
+ this.Message += " [闂璁板綍澶辫触!!!]";
+ }
+ });
+ },
+ }
+})
diff --git a/H5/Js/WCSM.js b/H5/Js/WCSM.js
new file mode 100644
index 0000000..b3ec7f5
--- /dev/null
+++ b/H5/Js/WCSM.js
@@ -0,0 +1,214 @@
+锘縱ar vm = new Vue({
+ el: '#app',
+ data: function () {
+ return {
+ // 鍔犺浇鐘舵��
+ isLoading: false,
+
+ // 鐢ㄦ埛淇℃伅
+ userInfo: {
+ loginGuid: '',
+ loginAccount: '',
+ },
+
+ // 搴撲綅鐩稿叧
+ sectionCode: "", // 搴撲綅缂栫爜
+ depotData: { // 浠撳簱鏁版嵁
+ depotName: "",
+ depotCode: ""
+ },
+
+ // 琛ㄥ崟鏁版嵁
+ formData: {
+ barcode: "", // 鐗╂枡鏉$爜
+ itemNo: "", // 鐗╂枡缂栫爜
+ itemName: "", // 鐗╂枡鍚嶇О
+ itemModel: "", // 鐗╂枡瑙勬牸
+ sumQuantity: 0, // 宸插叆鎬绘暟
+ quantity: 0, // 鍒拌揣鍗曟暟閲�
+ cbillNo: "", // 鍒拌揣鍗曞彿
+ paperBillNo:"", // 鍒拌揣鍗曞彿 +閫佽揣鍗曞彿
+ dhdQty: 0, // 鍒拌揣鍗曟暟閲�
+ tmsyQty: 0 // 鍓╀綑鏈壂鏉$爜寮犳暟
+
+ },
+ // 鏍囩椤垫暟鎹� - 鍓╀綑鏈壂
+ unscannedList: [],
+ // 鏍囩椤垫暟鎹� - 鍓╀綑鏈壂锛堝叾浠栫墿鏂欐眹鎬伙級
+ otherUnscannedList: [],
+ // 鏍囩椤垫暟鎹� - 鍒拌揣鍗曟壂鐮佽繘搴�
+ scanProgressList: []
+ }
+ },
+
+ mounted() {
+ var that = this;
+ // 鑾峰彇鐧诲綍淇℃伅
+ this.userInfo = {
+ loginGuid: this.GetLoginInfor().loginGuid,
+ loginAccount: this.GetLoginInfor().loginAccount,
+ };
+ },
+
+ methods: {
+ /**
+ * 鑾峰彇搴撲綅淇℃伅
+ * 瑙﹀彂鏃舵満锛氭壂鎻忓簱浣嶇紪鐮佸悗鎸夊洖杞﹂敭
+ */
+ getModel() {
+ var that = this;
+
+ that.$refs.barcode.focus();
+ },
+
+ /**
+ * 鎵弿鐗╂枡鏉$爜鍏ュ簱
+ * 瑙﹀彂鏃舵満锛氭壂鎻忕墿鏂欐潯鐮佸悗鎸夊洖杞﹂敭
+ */
+ getScan() {
+ var that = this;
+
+ // 杈撳叆楠岃瘉
+ if (!that.formData.barcode || that.formData.barcode.trim() === "") {
+ that.$toast.fail("鐗╂枡鏉$爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ that.$refs.barcode.focus();
+ return;
+ }
+
+ // if (!that.sectionCode || that.sectionCode.trim() === "") {
+ // that.$toast.fail("搴撲綅缂栫爜涓嶈兘涓虹┖锛�");
+ // that.$playSound('error');
+ // that.$refs.sectionCode.focus();
+ // return;
+ // }
+
+ that.isLoading = true;
+
+ that.AxiosHttp("post", 'MesInvItemInCDetails/WcsmBar', {
+ sectionCode: that.sectionCode.trim(),
+ userName: that.userInfo.loginAccount,
+ barcode: that.formData.barcode.trim(),
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+ // 娓呯┖鏉$爜杈撳叆妗�
+
+ var dab001 = that.formData.barcode
+ that.formData.barcode = "";
+
+ // 閲嶆柊鑱氱劍鍒版潯鐮佽緭鍏ユ锛堟敮鎸佽繛缁壂鐮侊級
+ that.$refs.barcode.focus();
+
+ // 鎻愮ず鎴愬姛
+ that.$notify({ type: 'success', message: json.message || '鎵弿鎴愬姛' });
+ that.$playSound('success');
+
+ //鏍规嵁鏉$爜鑾峰彇淇℃伅
+ that.selectByBarcode(dab001);
+ }
+ else {
+ // 澶辫触澶勭悊
+ that.$toast.fail(json.message || "鎵弿澶辫触锛�");
+ that.$playSound('error');
+
+ // 娓呯┖鏉$爜杈撳叆妗�
+ that.formData.barcode = "";
+
+ // 閲嶆柊鑱氱劍鍒版潯鐮佽緭鍏ユ
+ that.$refs.barcode.focus();
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ // 寮傚父澶勭悊
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ console.error("getScan error:", error);
+
+ // 娓呯┖鏉$爜杈撳叆妗�
+ that.formData.barcode = "";
+
+ // 閲嶆柊鑱氱劍鍒版潯鐮佽緭鍏ユ
+ that.$refs.barcode.focus();
+ });
+ },
+
+ /**
+ * 娓呴櫎搴撲綅缂栫爜
+ */
+ clearSectionCode() {
+ this.sectionCode = "";
+ this.depotData = {
+ depotName: "",
+ depotCode: ""
+ };
+ this.$refs.sectionCode.focus();
+ },
+
+ /// <summary>
+ /// 鏍规嵁鏉$爜鏌ヨ鐩稿叧淇℃伅
+ /// </summary>
+ selectByBarcode(dab001) {
+ var that = this;
+
+ if (!dab001 || dab001.length <= 0) {
+ that.$toast.fail("鏉$爜涓嶈兘涓虹┖锛�");
+ that.$playSound('error');
+ that.$refs.barcode.focus();
+ return;
+ }
+
+ that.isLoading = true;
+ that.AxiosHttp("post", 'MesInvItemInCDetails/WcsmDetail', {
+ barcode: dab001
+ }, false)
+ .then(function (res) {
+ var json = res;
+ if (json.status == 0) {
+ // 鏍囩椤垫暟鎹祴鍊�
+ that.unscannedList = json.data.tbBillList.unscannedList;
+ that.otherUnscannedList = json.data.tbBillList.otherUnscannedList;
+ that.scanProgressList = json.data.tbBillList.scanProgressList;
+
+ // 琛ㄥ崟鏁版嵁璧嬪�硷紙浠巇aaInfo鑾峰彇锛�
+ var daaInfo = json.data.tbBillList.daaInfo;
+ if (daaInfo && daaInfo.length > 0) {
+ var info = daaInfo[0];
+ that.formData.itemNo = info.itemNo || ''; // 鐗╂枡缂栫爜
+ that.formData.itemName = info.itemName || ''; // 鐗╂枡缂栫爜
+ that.formData.itemModel = info.itemModel || ''; // 鐗╂枡缂栫爜
+ that.formData.cbillNo = info.cbillNo || ''; // 鍒拌揣鍗曞彿
+ that.formData.paperBillNo = info.paperBillNo || ''; // 鍒拌揣鍗曞彿+閫佽揣鍗曞彿
+ that.formData.quantity = info.quantity || 0; // 褰撳墠鏉$爜鏁伴噺
+ that.formData.dhdQty = info.dhdQty || 0; // 鍒拌揣鍗曟暟閲�
+ that.formData.sumQuantity = info.sumQuantity || 0; // 宸插叆鎬绘暟
+ that.formData.tmsyQty = info.tmsyQty || 0; // 鍓╀綑鏈壂鏉$爜寮犳暟
+ }
+
+ that.$refs.barcode.focus();
+ }
+ else {
+ that.$toast.fail(json.message);
+ that.$playSound('error');
+ that.$refs.barcode.focus();
+ }
+ that.isLoading = false;
+ })
+ .catch(function (error) {
+ that.isLoading = false;
+ that.$toast.fail("缃戠粶閿欒锛岃閲嶈瘯锛�");
+ that.$playSound('error');
+ });
+ },
+
+ /**
+ * 杩斿洖涓婁竴椤�
+ */
+ GoBack() {
+ window.history.back();
+ }
+ }
+ });
diff --git a/H5/PurchaseInventoryReturn.aspx b/H5/PurchaseInventoryReturn.aspx
new file mode 100644
index 0000000..f557514
--- /dev/null
+++ b/H5/PurchaseInventoryReturn.aspx
@@ -0,0 +1,258 @@
+锘�<%@ Page Title="閲囪喘鍏ュ簱锛堟柊锛�"
+ Language="C#"
+ MasterPageFile="~/Mst.master"
+ AutoEventWireup="true"
+ CodeFile="PurchaseInventoryReturn.aspx.cs"
+ Inherits="H5_Scll" %>
+
+<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
+ <style>
+ /* 鍩虹鑳屾櫙鏍峰紡 */
+ .bg-info {
+ background-color: #fff;
+ }
+
+ /* 楠岄��鐩稿叧璀﹀憡鏍峰紡 */
+ .return-warning {
+ color: #ff4444 !important;
+ font-weight: bold;
+ }
+
+ .return-field .van-field__label {
+ color: #ff4444 !important;
+ font-weight: bold;
+ }
+
+ .return-field .van-field__control {
+ color: #ff4444 !important;
+ font-weight: bold;
+ }
+
+ .return-button {
+ background: linear-gradient(135deg, #ff6b6b, #ee5a52) !important;
+ border: none !important;
+ box-shadow: 0 2px 8px rgba(255, 107, 107, 0.3) !important;
+ }
+
+ /* 鍏嬮噸杈撳叆妗嗘牱寮� */
+ .weight-field {
+ background: linear-gradient(135deg, rgba(15, 157, 88, 0.12), rgba(15, 157, 88, 0.02));
+ border-left: 4px solid #0f9d58;
+ border-radius: 8px;
+ box-shadow: 0 2px 12px rgba(15, 157, 88, 0.18);
+ margin-bottom: 12px;
+ }
+
+ .weight-field .van-field__label,
+ .weight-field .van-field__control {
+ color: #0f9d58 !important;
+ font-weight: 600;
+ }
+
+ .weight-field input {
+ color: #0b7a45 !important;
+ font-weight: 600;
+ }
+ </style>
+</asp:Content>
+
+<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
+ <!-- 瀵艰埅鏍� -->
+ <van-nav-bar
+ title="閲囪喘鍏ュ簱锛堟柊锛�"
+ left-text="杩斿洖"
+ left-arrow
+ @click-left="GoBack()"
+ ></van-nav-bar>
+
+ <!-- 鏍稿績琛ㄥ崟鍖哄煙 -->
+ <van-cell-group>
+ <!-- 搴撲綅缂栫爜 -->
+ <van-field
+ ref="sectionCode"
+ v-model="sectionCode"
+ label="搴撲綅缂栫爜"
+ clearable
+ placeholder="璇锋壂鐮�"
+ :right-icon-size="19"
+ v-focus.noKeyboard
+ @keyup.enter.native="getModel"
+ autofocus="true"
+ ></van-field>
+
+ <!-- 浠撳簱淇℃伅锛堢鐢ㄧ姸鎬侊級 -->
+ <van-field
+ v-model="depotData.depotName"
+ label="浠撳簱鍚嶇О"
+ placeholder=""
+ disabled
+ ></van-field>
+
+ <van-field
+ v-model="depotData.depotCode"
+ label="浠撳簱缂栫爜"
+ placeholder=""
+ disabled
+ ></van-field>
+
+ <!-- 鍏嬮噸杈撳叆 -->
+ <van-field
+ ref="weight"
+ v-model="formData.weight"
+ label="鍏嬮噸"
+ clearable
+ placeholder="璇疯緭鍏ュ厠閲�"
+ type="text"
+ inputmode="decimal"
+ class="weight-field"
+ @input="handleWeightInput"
+ @blur="handleWeightBlur"
+ ></van-field>
+ <!-- 鍏ュ簱澶囨敞杈撳叆 -->
+ <van-field
+ ref="remark"
+ v-model="formData.remark"
+ label="鍏ュ簱澶囨敞"
+ clearable
+ placeholder="璇疯緭鍏ュ娉�"
+ type="text"
+ inputmode="nvachar"
+ class="weight-field"
+
+
+ ></van-field>
+
+ <!-- 鐗╂枡鏉$爜 -->
+ <van-field
+ ref="barcode"
+ v-model="formData.barcode"
+ label="鐗╂枡鏉$爜"
+ clearable
+ placeholder="璇锋壂鐮�"
+ :right-icon-size="19"
+ v-focus.noKeyboard
+ @keyup.enter.native="getScan"
+ ></van-field>
+
+ <%--<!-- 楠岄��鐩稿叧瀛楁锛堢孩鑹茶鍛婃牱寮忥級 -->
+ <van-field
+ ref="returnBarcode"
+ v-model="formData.returnBarcode"
+ label="鈿狅笍 楠岄��鏉$爜"
+ clearable
+ placeholder="璇锋壂鐮�"
+ :right-icon-size="19"
+ v-focus.noKeyboard
+ @keyup.enter.native="getReturnScan"
+ class="return-field"
+ ></van-field>
+
+ <!-- 楠岄��鏁伴噺 + 楠岄��鎸夐挳 -->
+ <van-row>
+ <van-col span="18">
+ <van-field
+ v-model="formData.returnQuantity"
+ label="鈿狅笍 楠岄��鏁伴噺"
+ clearable
+ placeholder="璇疯緭鍏ラ獙閫�鏁伴噺"
+ type="number"
+ class="return-field"
+ ></van-field>
+ </van-col>
+ <van-col span="6" style="padding: 10px;">
+ <van-button
+ type="primary"
+ size="small"
+ @click="confirmReturn"
+ class="return-button"
+ >鈿狅笍 楠岄��</van-button>
+ </van-col>
+ </van-row>--%>
+
+ <!-- 鍙淇℃伅灞曠ず -->
+ <van-field
+ v-model="formData.itemNo"
+ label="鐗╂枡缂栫爜"
+ placeholder=""
+ disabled
+ ></van-field>
+
+ <van-field
+ v-model="formData.billNo"
+ label="鍒拌揣鍗曞彿"
+ placeholder=""
+ disabled
+ ></van-field>
+
+ <van-field
+ v-model="formData.barcodeQuantity"
+ label="鏉$爜鏁伴噺"
+ placeholder=""
+ disabled
+ ></van-field>
+
+ <van-field
+ v-model="formData.sumQuantity"
+ label="宸插叆鎬绘暟"
+ placeholder=""
+ disabled
+ ></van-field>
+ </van-cell-group>
+
+ <!-- 鏍囩椤靛尯鍩� -->
+ <van-tabs color="#000" title-active-color="#0283EF">
+ <!-- 鍏ュ簱鐗╂枡鏍囩椤� -->
+ <van-tab title="鍏ュ簱鐗╂枡" class="mySolid font">
+ <van-row>
+ <van-col span="8" class="text-left padding-left">鐗╂枡</van-col>
+ <van-col span="8" class="text-left padding-left">瑙勬牸</van-col>
+ <van-col span="5">鐗╂枡鍒嗗尯</van-col>
+ <van-col span="3">宸插叆搴撴暟</van-col>
+ </van-row>
+ <!-- 鐗╂枡鍒楄〃寰幆 -->
+ <van-row v-for="(itm, index) in ItemDetail" :key="index">
+ <van-col span="8" class="text-left padding-left">
+ <div class="blue-text">{{itm.itemNo}}</div>
+ <div>{{itm.itemName}}</div>
+ </van-col>
+ <van-col span="8" class="text-left padding-left">
+ <div>{{itm.itemModel}}</div>
+ </van-col>
+ <van-col span="3" class="blue-text">{{itm.fQty}}</van-col>
+ <van-col span="5" class="blue-text">{{itm.fQty}}</van-col>
+ </van-row>
+ </van-tab>
+
+ <!-- 鍏ュ簱鏉$爜鏍囩椤� -->
+ <van-tab title="鍏ュ簱鏉$爜" class="mySolid font">
+ <van-row>
+ <van-col span="8" class="text-left padding-left">鏉$爜</van-col>
+ <van-col span="8" class="text-left padding-left">鐗╂枡</van-col>
+ <van-col span="4">鏁伴噺</van-col>
+ <van-col span="4">搴撲綅缂栫爜</van-col>
+ </van-row>
+ <!-- 鏉$爜鍒楄〃寰幆 -->
+ <van-row v-for="(itm, index) in tableData" :key="index">
+ <van-col span="8" class="text-left padding-left">
+ <div>{{itm.barcode}}</div>
+ </van-col>
+ <van-col span="8" class="text-left padding-left">
+ <div>{{itm.itemNo}}</div>
+ <div>{{itm.itemName}}</div>
+ </van-col>
+ <van-col span="4">{{itm.fQty}}</van-col>
+ <van-col span="4">{{itm.kw}}</van-col>
+ </van-row>
+ </van-tab>
+ </van-tabs>
+</asp:Content>
+
+<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder3" Runat="Server">
+ <!-- 鍔犺浇缁勪欢 -->
+ <comloading v-if="isLoading"></comloading>
+</asp:Content>
+
+<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder4" Runat="Server">
+ <!-- 寮曞叆JS鏂囦欢锛堝甫鐗堟湰鍙烽槻缂撳瓨锛� -->
+ <script src="Js/PurchaseInventoryReturn.js?<%=123611111 %>"></script>
+</asp:Content>
\ No newline at end of file
diff --git a/H5/PurchaseInventoryReturn.aspx.cs b/H5/PurchaseInventoryReturn.aspx.cs
new file mode 100644
index 0000000..f11cc1f
--- /dev/null
+++ b/H5/PurchaseInventoryReturn.aspx.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+public partial class H5_Scll : System.Web.UI.Page
+{
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/H5/WCSM.aspx b/H5/WCSM.aspx
new file mode 100644
index 0000000..cb2c9d9
--- /dev/null
+++ b/H5/WCSM.aspx
@@ -0,0 +1,513 @@
+锘�<%@ Page Title="澶栦粨浜哄憳鎵爜"
+ Language="C#"
+ AutoEventWireup="true"
+ MasterPageFile="~/Mst.master"
+ CodeFile="WCSM.aspx.cs"
+ Inherits="H5_WCSM" %>
+<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
+ <style>
+ /* 鍏ㄥ眬鏍峰紡 */
+ #app {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ min-height: 100vh;
+ padding: 0;
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ }
+
+ /* 鍗$墖寮忓鍣ㄦ牱寮� */
+ .card-container {
+ margin: 4px 16px 4px;
+ border-radius: 16px;
+ background-color: #fff;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+ transition: all 0.3s ease;
+ }
+
+ .card-container:hover {
+ box-shadow: 0 12px 48px rgba(0, 0, 0, 0.15);
+ transform: translateY(-2px);
+ }
+
+ /* 鍗$墖澶撮儴鍜屾爣棰樻牱寮� */
+ .card-header {
+ padding: 16px 20px;
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ color: #fff;
+ }
+
+ .card-title {
+ margin: 0;
+ font-size: 18px;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+ }
+
+ /* 鍗$墖鍐呭鍖烘牱寮� */
+ .card-body {
+ padding: 10px 18px;
+ }
+
+ /* 鎵爜鍖哄煙瀛楁鏍峰紡 */
+ .scan-field {
+ margin-bottom: 10px;
+ border-radius: 8px;
+ overflow: hidden;
+ }
+
+ /* 鏁版嵁灞曠ず缃戞牸甯冨眬 */
+ .data-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 6px;
+ }
+
+ .data-field {
+ border-radius: 8px;
+ overflow: hidden;
+ }
+
+ /* 瀵艰埅鏍忔牱寮忎紭鍖� */
+ .van-nav-bar {
+ background: linear-gradient(135deg, #5568d3 0%, #6b46c1 100%);
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+ }
+
+ .van-nav-bar__title {
+ font-size: 17px;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+ }
+
+ /* 琛ㄥ崟瀛楁鏍峰紡 */
+ .van-field {
+ padding: 8px 10px;
+ border-bottom: 1px solid #ebedf0;
+ transition: background-color 0.2s ease;
+ }
+
+ .van-field:last-child {
+ border-bottom: none;
+ }
+
+ /* 杈撳叆妗嗚仛鐒︽牱寮� */
+ .van-field--focused {
+ background-color: #fafafa;
+ border-left: 3px solid #0283EF;
+ }
+
+ /* 杈撳叆妗嗘牱寮� */
+ .van-cell__value {
+ font-size: 14px;
+ color: #323233;
+ line-height: 1.5;
+ }
+
+ /* 鏍囩鏍峰紡 */
+ .van-cell__title {
+ font-size: 14px;
+ color: #323233;
+ font-weight: 500;
+ }
+
+ /* 鍙瀛楁鏍峰紡 */
+ .van-field--disabled {
+ background-color: #fafafa;
+ }
+
+ .van-field--disabled .van-cell__title,
+ .van-field--disabled .van-cell__value {
+ font-weight: bold;
+ color: #323233;
+ }
+
+ .van-field--disabled .van-cell__value {
+ background-color: #e8ebed;
+ border-radius: 6px;
+ padding: 6px 10px;
+ }
+
+ /* 鏍囩椤垫牱寮� */
+ .van-tabs {
+ margin: 8px 16px;
+ background-color: #fff;
+ border-radius: 16px;
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+ }
+
+ /* 鏍囩椤靛ご閮ㄦ牱寮� */
+ .van-tabs__nav {
+ border-bottom: 2px solid #f0f2f5;
+ padding: 0 16px;
+ background: #fafbfc;
+ }
+
+ /* 鏍囩鏍峰紡 */
+ .van-tab {
+ font-size: 14px;
+ color: #4e4e4e;
+ padding: 12px 16px 10px;
+ transition: all 0.3s ease;
+ font-weight: 500;
+ }
+
+ /* 婵�娲绘爣绛炬牱寮� */
+ .van-tab--active {
+ font-weight: 700;
+ color: #667eea;
+ }
+
+ /* 婵�娲绘爣绛句笅鍒掔嚎鏍峰紡 */
+ .van-tabs__line {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ height: 3px;
+ bottom: 0;
+ transform: translateY(0);
+ }
+
+ /* 琛ㄦ牸琛屾牱寮� */
+ .bg-info {
+ background-color: #fff;
+ }
+
+ .van-row {
+ padding: 10px 12px;
+ border-bottom: 1px solid #ebedf0;
+ transition: all 0.3s ease;
+ }
+
+ .van-row:last-child {
+ border-bottom: none;
+ }
+
+ /* 琛ㄦ牸琛屾偓鍋滄牱寮� */
+ .van-row:hover {
+ background-color: #f0f4ff;
+ transform: translateX(4px);
+ }
+
+ /* 琛ㄦ牸澶撮儴鏍峰紡 */
+ .van-row:nth-child(1) {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ font-weight: 700;
+ color: #fff;
+ }
+
+ /* 浜ゆ浛琛屾牱寮� */
+ .van-row:nth-child(even) {
+ background-color: #fafbfc;
+ }
+
+ /* 鍗曞厓鏍兼牱寮� */
+ .van-col {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 14px;
+ color: #323233;
+ line-height: 1.6;
+ }
+
+ /* 宸﹀榻愬崟鍏冩牸 */
+ .text-left {
+ justify-content: flex-start;
+ }
+
+ /* 鍐呰竟璺� */
+ .padding-left {
+ padding-left: 12px;
+ }
+
+ /* 杈撳叆妗嗗崰浣嶇鏍峰紡 */
+ ::placeholder {
+ color: #c8c9cc;
+ }
+
+ /* 寮哄埗鏂囨湰鎹㈣ */
+ .van-cell__value {
+ word-wrap: break-word;
+ word-break: break-all;
+ }
+
+ /* 灏忓睆骞曢�傞厤 */
+ @media (max-width: 480px) {
+ .card-container {
+ margin: 8px;
+ }
+
+ .card-body {
+ padding: 16px 20px;
+ }
+
+ .data-grid {
+ grid-template-columns: 1fr;
+ }
+
+ .van-tabs {
+ margin: 8px;
+ }
+
+ .van-row {
+ padding: 12px 14px;
+ }
+
+ .van-col {
+ font-size: 13px;
+ }
+ }
+
+ /* 瀵艰埅鏍忔枃鏈牱寮� */
+ .van-nav-bar__text {
+ color: #fff;
+ font-weight: 500;
+ }
+
+ /* 鍔犺浇缁勪欢鏍峰紡 */
+ comloading {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 60px 20px;
+ font-size: 14px;
+ color: #4e4e4e;
+ }
+
+ /* 杈撳叆妗嗘牱寮忎紭鍖� */
+ .van-field__control {
+ border-radius: 6px;
+ transition: all 0.3s ease;
+ }
+
+ .van-field__control:focus {
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
+ }
+
+ /* 鎸夐挳鏍峰紡浼樺寲 */
+ .van-button {
+ border-radius: 8px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+ }
+
+ .van-button--primary {
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+ border: none;
+ }
+
+ .van-button--primary:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 8px 24px rgba(102, 126, 234, 0.3);
+ }
+
+ /* 鍔犺浇缁勪欢鏍峰紡 */
+ comloading {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 60px 20px;
+ font-size: 14px;
+ color: #4e4e4e;
+ }
+ </style>
+</asp:Content>
+
+<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
+ <div id="app">
+ <!-- 瀵艰埅鏍� -->
+ <van-nav-bar
+ title="澶栦粨浜哄憳鎵爜"
+ left-text="杩斿洖"
+ left-arrow
+ @click-left="GoBack()"
+ ></van-nav-bar>
+
+ <!-- 鎵爜鏍稿績鍖� -->
+ <div class="card-container scan-core">
+ <div class="card-header">
+ <h2 class="card-title">鎵爜鏍稿績鍖�</h2>
+ </div>
+ <div class="card-body">
+ <!-- 搴撲綅缂栫爜杈撳叆 -->
+ <van-field
+ ref="sectionCode"
+ v-model="sectionCode"
+ label="搴撲綅缂栫爜"
+ clearable
+ placeholder="璇锋壂鎻忓簱浣嶆潯鐮�"
+ :right-icon-size="19"
+ v-focus.noKeyboard
+ @keyup.enter.native="getModel"
+ autofocus="true"
+ class="scan-field"
+ ></van-field>
+
+ <!-- 鐗╂枡鏉$爜杈撳叆 -->
+ <van-field
+ ref="barcode"
+ v-model="formData.barcode"
+ label="鐗╂枡鏉$爜"
+ clearable
+ placeholder="璇锋壂鎻忕墿鏂欐潯鐮�"
+ :right-icon-size="19"
+ v-focus.noKeyboard
+ @keyup.enter.native="getScan"
+ class="scan-field"
+ ></van-field>
+ </div>
+ </div>
+
+ <!-- 鏁版嵁灞曠ず鍖� -->
+ <div class="card-container data-display">
+ <div class="card-header">
+ <h2 class="card-title">鐗╂枡淇℃伅</h2>
+ </div>
+ <div class="card-body">
+ <div class="data-grid">
+ <!-- 鐗╂枡缂栫爜锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.itemNo"
+ label="鐗╂枡缂栫爜"
+ disabled
+ class="data-field"
+ ></van-field>
+
+ <!-- 鐗╂枡鍚嶇О锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.itemName"
+ label="鐗╂枡鍚嶇О"
+ disabled
+ class="data-field"
+ ></van-field>
+
+ <!-- 鐗╂枡瑙勬牸锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.itemModel"
+ label="鐗╂枡瑙勬牸"
+ disabled
+ class="data-field"
+ ></van-field>
+
+ <!-- 鎵爜鏁伴噺锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.quantity"
+ label="鎵爜鏁伴噺"
+ disabled
+ class="data-field"
+ ></van-field>
+ <!-- 鍒拌揣鍗曞彿+閫佽揣鍗曞彿锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.paperBillNo"
+ label="鍒拌揣鍗曞彿"
+ disabled
+ class="data-field"
+ ></van-field>
+
+ <!-- 鍒拌揣鍗曟暟閲忥紙鍙锛� -->
+ <van-field
+ v-model="formData.dhdQty"
+ label="鍒拌揣鍗曟暟閲�"
+ disabled
+ class="data-field"
+ ></van-field>
+
+ <!-- 宸插叆鎬绘暟锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.sumQuantity"
+ label="宸插叆鎬绘暟"
+ disabled
+ class="data-field"
+ ></van-field>
+
+ <!-- 鍓╀綑鏈壂鏉$爜寮犳暟锛堝彧璇伙級 -->
+ <van-field
+ v-model="formData.tmsyQty"
+ label="鍓╀綑鏈壂寮犳暟"
+ disabled
+ class="data-field"
+ ></van-field>
+ </div>
+ </div>
+ </div>
+
+ <!-- 鏍囩椤靛尯鍩� -->
+ <van-tabs>
+ <!-- 绗竴涓爣绛鹃〉锛氬墿浣欐湭鎵� -->
+ <van-tab title="鍓╀綑鏈壂">
+ <van-row class="bg-info">
+ <van-col span="8" class="text-left padding-left">搴忓彿</van-col>
+ <van-col span="8" class="text-left padding-left">鏉$爜</van-col>
+ <van-col span="8">鏁伴噺</van-col>
+ </van-row>
+ <van-row v-for="(itm, index) in unscannedList" :key="index" class="bg-info">
+ <van-col span="8" class="text-left padding-left">
+ <div>{{index + 1}}</div>
+ </van-col>
+ <van-col span="8" class="text-left padding-left">
+ <div>{{itm.barcode}}</div>
+ </van-col>
+ <van-col span="8">
+ <div>{{itm.fQty}}</div>
+ </van-col>
+ </van-row>
+ </van-tab>
+
+ <!-- 绗簩涓爣绛鹃〉锛氬墿浣欐湭鎵紙鍏朵粬鐗╂枡姹囨�伙級 -->
+ <van-tab title="鍏朵綑鏈壂">
+ <van-row class="bg-info">
+ <van-col span="8" class="text-left padding-left">搴忓彿</van-col>
+ <van-col span="8" class="text-left padding-left">鏉$爜</van-col>
+ <van-col span="8">鏁伴噺</van-col>
+ </van-row>
+ <van-row v-for="(itm, index) in otherUnscannedList" :key="index" class="bg-info">
+ <van-col span="8" class="text-left padding-left">
+ <div>{{index + 1}}</div>
+ </van-col>
+ <van-col span="8" class="text-left padding-left">
+ <div>{{itm.barcode}}</div>
+ </van-col>
+ <van-col span="8">
+ <div>{{itm.fQty}}</div>
+ </van-col>
+ </van-row>
+ </van-tab>
+
+ <!-- 绗笁涓爣绛鹃〉锛氬埌璐у崟鎵爜杩涘害 -->
+ <van-tab title="鍒拌揣鍗曡繘搴�">
+ <van-row class="bg-info">
+ <van-col span="4" class="text-left padding-left">搴忓彿</van-col>
+ <van-col span="6" class="text-left padding-left">鐗╂枡缂栫爜</van-col>
+ <van-col span="6" class="text-left padding-left">闇�姹傝窡韪彿</van-col>
+ <van-col span="4">鍒拌揣鏁伴噺</van-col>
+ <van-col span="4">鎵爜鏁伴噺</van-col>
+ </van-row>
+ <van-row v-for="(itm, index) in scanProgressList" :key="index" class="bg-info">
+ <van-col span="4" class="text-left padding-left">
+ <div>{{index + 1}}</div>
+ </van-col>
+ <van-col span="6" class="text-left padding-left">
+ <div>{{itm.itemNo}}</div>
+ </van-col>
+ <van-col span="6" class="text-left padding-left">
+ <div>{{itm.planTrackingNo}}</div>
+ </van-col>
+ <van-col span="4">
+ <div>{{itm.arrivalQty}}</div>
+ </van-col>
+ <van-col span="4">
+ <div>{{itm.scannedQty}}</div>
+ </van-col>
+ </van-row>
+ </van-tab>
+ </van-tabs>
+ </div>
+</asp:Content>
+
+<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder3" runat="server">
+ <comloading v-if="isLoading"></comloading>
+</asp:Content>
+
+<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder4" runat="server">
+ <script src="Js/WCSM.js?=20251118"></script>
+</asp:Content>
diff --git a/H5/WCSM.aspx.cs b/H5/WCSM.aspx.cs
new file mode 100644
index 0000000..994c66e
--- /dev/null
+++ b/H5/WCSM.aspx.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+/// <summary>
+/// 澶栦粨浜哄憳鎵爜椤甸潰
+/// 鍔熻兘锛氬簱浣嶆壂鐮侀獙璇� + 鐗╂枡鏉$爜鍏ュ簱
+/// 鍒涘缓鏃ユ湡锛�2025-11-18
+/// </summary>
+public partial class H5_WCSM : System.Web.UI.Page
+{
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ // 椤甸潰鍔犺浇閫昏緫锛堝闇�瑕佸彲鍦ㄦ娣诲姞锛�
+ }
+}
--
Gitblit v1.9.3