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