| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <%@ 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> |