lilei hai 1 ano
pai
achega
f1d66483aa

+ 103 - 63
pages/purchasing/index.vue

@@ -1,4 +1,5 @@
 <template>
+	<view>
 	<view class="p-content">
 		<view class="p-head" v-if="baseData">
 			<view>
@@ -7,7 +8,7 @@
 					<text style="color: crimson;">{{baseData.purchaseBillNo}}</text>
 				</view>
 				<view>
-					<button :disabled="loading" size="mini" type="primary" @click="toOut"> 入库 <text class="iconfont icon-icon-test43"></text></button>
+					<button :disabled="loading" size="mini" style="padding:0 10px;height: 28px;line-height: 28px;" type="primary" @click="toOut"> 入库 <text class="iconfont icon-icon-test43"></text></button>
 				</view>
 			</view>
 			<view>
@@ -28,6 +29,9 @@
 						border="surround" 
 						v-model="code">
 					</view>
+					<view>
+						<button size="mini" style="padding:0 10px;height: 30px;line-height: 30px;margin-left: 10px;margin-top: 3px;" :style="{color:'#aa0000'}" @click="resetInput">重置</button>
+					</view>
 				</view>
 			</view>
 			<view style="justify-content: flex-start;flex-wrap: wrap;"  v-if="baseData">
@@ -39,69 +43,75 @@
 			</view>
 		</view>
 		<view class="p-body">
-			<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading" >
-				<!-- 表头行 -->
-				<uni-tr>
-					<uni-td align="center">产品编码</uni-td>
-					<uni-td align="center">仓库仓位</uni-td>
-					<uni-td align="center">入库/发货数量</uni-td>
-				</uni-tr>
-				<!-- 表格数据行 -->
-				<uni-tr 
-				v-for="item in detailList" 
-				:key="item.id" 
-				:checkedRow="hasCheck(item)"
-				 @click="editRow(item)"
-				>
-					<uni-td width="30%" align="center">
-						<view>{{item.dealerProductEntity&&item.dealerProductEntity.code||'--'}}</view>
-					</uni-td>
-					<uni-td width="30%" align="center">
-						<view>
-							<view>{{item.warehouseEntity&&item.warehouseEntity.name||defWarehouseName[0]}}/</view>
-							<view>{{item.warehouseLocationEntity&&item.warehouseLocationEntity.name||defWarehouseName[1]}}</view>
-						</view>
-					</uni-td>
-					<uni-td width="40%" align="center"><text style="color: red;">{{item.realPutQty||'0'}}</text>/{{item.putQty}}</uni-td>
-				</uni-tr>
-			</uni-table>
+			<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scrollView">
+				<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading" >
+					<!-- 表头行 -->
+					<uni-tr>
+						<uni-td align="center">产品编码</uni-td>
+						<uni-td align="center">仓库仓位</uni-td>
+						<uni-td align="center">入库/发货数量</uni-td>
+					</uni-tr>
+					<!-- 表格数据行 -->
+					<uni-tr 
+					v-for="item in detailList" 
+					:key="item.id" 
+					:id="item.id"
+					:checkedRow="hasCheck(item)"
+					@click="selRow(item)"
+					>
+						<uni-td width="30%" align="center">
+							<view>{{item.dealerProductEntity&&item.dealerProductEntity.code||'--'}}</view>
+						</uni-td>
+						<uni-td width="35%" align="center">
+							<view>
+							{{item.warehouseEntity&&item.warehouseEntity.name||defWarehouseName[0]}}/{{item.warehouseLocationEntity&&item.warehouseLocationEntity.name||defWarehouseName[1]}}
+							</view>
+						</uni-td>
+						<uni-td width="35%" align="center">
+							<view @click="editRow(item)">
+								<text style="color: red;">{{item.realPutQty||'0'}}</text>/{{item.putQty}}
+							</view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+			</scroll-view>
 		</view>
 		<view class="p-footer">
 			<button size="mini" type="warn" @click="pickFun(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
 			<button size="mini" type="primary" @click="pickFun(true)"> <text class="iconfont icon-add-btn"> 加 </text></button>
 		</view>
-		<scanCode @onKeyDown="keyDown"></scanCode>
-		 <!-- 选择仓库 -->
-		<chooseWarehouse ref="chooseWarehouse" :openPick="showPick" :value="warehouseVal" @close="showPick=false" @change="confirmWarehouse"></chooseWarehouse>
-		<!-- 左键扫描,修改包装数 -->
-		<uni-popup ref="popup" :mask-click="false" type="dialog">
-			<view style="background-color: #fff;padding: 30rpx 50rpx;border-radius: 30rpx;width: 75%;margin: 0 auto;">
-				<view v-if="tempProduct">
-					<view style="padding: 30rpx 0;">
-						产品编码:{{tempProduct.dealerProductEntity.code}}
-					</view>
-					<view style="display: flex;align-items: center;">
-						数量:
-						<u--input
-						    placeholder="请输入数量"
-						    border="surround"
-						    v-model="tempProduct.packQty"
-							:min="0"
-							type="digit"
-						  ></u--input>
-						  {{tempProduct.dealerProductEntity.unit}}
-						  {{tempProduct.dealerProductEntity.packQtyUnit?("/"+tempProduct.dealerProductEntity.packQtyUnit):''}}
-					</view>
+	</view>
+	<scanCode @onKeyDown="keyDown"></scanCode>
+	 <!-- 选择仓库 -->
+	<chooseWarehouse ref="chooseWarehouse" :openPick="showPick" :value="warehouseVal" @close="showPick=false" @change="confirmWarehouse"></chooseWarehouse>
+	<!-- 左键扫描,修改包装数 -->
+	<uni-popup ref="popup" :mask-click="false" type="dialog">
+		<view style="background-color: #fff;padding: 30rpx 50rpx;border-radius: 30rpx;width: 75%;margin: 0 auto;">
+			<view v-if="tempProduct">
+				<view style="padding: 30rpx 0;">
+					产品编码:{{tempProduct.dealerProductEntity.code}}
 				</view>
-				<view style="display: flex;padding: 60rpx 15rpx 10rpx;justify-content: space-between;">
-					<button size="mini" @click="closePop">取消</button>
-					<button size="mini" type="primary" @click="okPop">确定</button>
+				<view style="display: flex;align-items: center;">
+					数量:
+					<u--input
+						placeholder="请输入数量"
+						border="surround"
+						v-model="tempProduct.packQty"
+						:min="0"
+						type="digit"
+					  ></u--input>
+					  {{tempProduct.dealerProductEntity.unit}}
+					  {{tempProduct.dealerProductEntity.packQtyUnit?("/"+tempProduct.dealerProductEntity.packQtyUnit):''}}
 				</view>
 			</view>
-		</uni-popup>
-		
-		<u-modal :show="showModal" :title="msg.title" :confirmText="msg.confirmText" showCancelButton :content='msg.content' @cancel="showModal=false" @confirm="confirmModal"></u-modal>
-	</view>
+			<view style="display: flex;padding: 60rpx 15rpx 10rpx;justify-content: space-between;">
+				<button size="mini" @click="closePop">取消</button>
+				<button size="mini" type="primary" @click="okPop">确定</button>
+			</view>
+		</view>
+	</uni-popup>
+	<u-modal :show="showModal" :title="msg.title" :confirmText="msg.confirmText" showCancelButton :content='msg.content' @cancel="showModal=false" @confirm="confirmModal"></u-modal>
+</view>
 </template>
 
 <script>
@@ -130,7 +140,8 @@
 				defWarehouse: [],
 				defWarehouseName:[],
 				keyName: '',
-				warehouseVal: []
+				warehouseVal: [],
+				scrollTop: 0,
 			};
 		},
 		onLoad(opts) {
@@ -184,9 +195,22 @@
 				return curProduct&&curProduct.id == item.id
 			},
 			// 获取所有可操作商品
-			getCurProduct(){
+			getCurProduct(flag){
 				const curProduct = this.detailList.filter(item => item.dealerProductEntity&&item.dealerProductEntity.qrCode == this.code)
 				this.curProductArr = curProduct || []
+				
+				// 滚动到指定位置
+				if(this.curProductArr.length&&!flag){
+					const cur = this.curProductArr[0]
+					this.scrollToRow(cur)
+				}
+			},
+			// 选择行
+			selRow(item){
+				this.code = item.dealerProductEntity&&item.dealerProductEntity.qrCode||''
+				this.getCurProduct(true)
+				const idx = this.curProductArr.findIndex(k => k.id == item.id)
+				this.curProductIndex = idx || 0
 			},
 			// 获取当前操作行
 			getCurRow(){
@@ -197,6 +221,18 @@
 				}
 				return curProduct
 			},
+			// 滚动到指定行
+			scrollToRow(cur){
+				const idx = this.detailList.findIndex(item => item.id == cur.id)
+				this.scrollTop = idx * 60
+			},
+			// 清空输入框
+			resetInput(){
+				this.code = ''
+				this.curProductIndex = 0
+				this.getCurProduct()
+				this.scrollTop = 0
+			},
 			pickFun(flag){
 				playAudio('info')
 				this.getCurProduct()
@@ -204,8 +240,8 @@
 			},
 			addQty(flag){
 				const curProduct = this.getCurRow()
-				// console.log(curProduct)
 				if(curProduct){
+					curProduct.realPutQty = curProduct.realPutQty || 0
 					this.loading = true
 					// 加
 					if(flag){
@@ -278,6 +314,7 @@
 					this.loading = false
 				  })
 			  }else{
+				  this.loading = false
 				  uni.$u.toast("入库数量不能小于0")
 				  playAudio('warn')
 			  }
@@ -313,7 +350,6 @@
 				this.loading = false
 			  })
 			},
-			
 			// 详情
 			getDetail(){
 				receivingQuery({receivingBillSn: this.receivingBillSn, source : "PDA"}).then(res => {
@@ -406,15 +442,19 @@
 			}
 		}
 		.p-body{
-			overflow: auto;
 			flex-grow: 1;
-			height: 50%;
+			height: calc(100vh - 240px);
+			.scrollView{
+				height: 100%;
+			}
 		}
 		.p-footer{
-			padding:30upx;
+			padding: 20upx;
 			display: flex;
 			> button{
 				width: 40%;
+				height: 32px;
+				line-height: 32px;
 			}
 		}
 	}

+ 73 - 48
pages/stockIn/index.vue

@@ -1,4 +1,5 @@
 <template>
+	<view>
 	<view class="p-content">
 		<view class="p-head">
 			<view v-if="baseData">
@@ -20,10 +21,12 @@
 						placeholder="扫描或输入条码" 
 						border="surround" 
 						v-model="code">
-						<button size="mini" @click="queryProduct" :style="{padding:'2px 10px',color:'#00aaff'}">查询</button>
 					</view>
 				</view>
-				<view></view>
+				<view style="display: flex;align-items: center;">
+					<button size="mini" @click="queryProduct" :style="{padding:'2px 3px',color:'#00aaff'}">查询</button>
+					<button size="mini" @click="resetForm" :style="{padding:'2px 3px',color:'#aa0000',margin:'0 0 0 5px'}">重置</button>
+				</view>
 			</view>
 			<view v-if="curProduct">
 				<view>
@@ -45,55 +48,58 @@
 				</view>
 			</view>
 		</view>
-		<view class="p-body">
-			<uni-table border emptyText="暂无数据" :loading="loading" >
-				<!-- 表头行 -->
-				<uni-tr>
-					<uni-td align="center">产品编码</uni-td>
-					<uni-td align="center">数量</uni-td>
-					<uni-td align="center">总成本</uni-td>
-				</uni-tr>
-				<!-- 表格数据行 -->
-				<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.qrCode == item.qrCode" @click="toDetail(item)">
-					<uni-td width="40%" align="center">{{item.productCode}}</uni-td>
-					<uni-td width="30%" align="center">{{item.putQty}}</uni-td>
-					<uni-td width="30%" align="center">
-						<span :style="{ color: 'red' }">¥{{Number(item.putCost*item.putQty).toFixed(2)}}</span>
-					</uni-td>
-				</uni-tr>
-			</uni-table>
+		<view class="p-body" :style="{height: curProduct ? 'calc(100vh - 250px)':'calc(100vh - 180px)'}">
+			<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scrollView">
+				<uni-table border emptyText="暂无数据" :loading="loading" >
+					<!-- 表头行 -->
+					<uni-tr>
+						<uni-td align="center">产品编码</uni-td>
+						<uni-td align="center">数量</uni-td>
+						<uni-td align="center">总成本</uni-td>
+					</uni-tr>
+					<!-- 表格数据行 -->
+					<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.qrCode == item.qrCode" @click="selRow(item)">
+						<uni-td width="40%" align="center">{{item.productCode}}</uni-td>
+						<uni-td width="30%" align="center">{{item.putQty}}</uni-td>
+						<uni-td width="30%" align="center">
+							<view @click="toDetail(item)"><span :style="{ color: 'red' }">¥{{Number(item.putCost*item.putQty).toFixed(2)}}</span></view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+			</scroll-view>
 		</view>
 		<view class="p-footer">
 			<button size="mini" type="warn" @click="addQty(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
 			<button size="mini" type="primary" @click="addQty(true)"> <text class="iconfont icon-add-btn"> 加 </text></button>
 		</view>
-		<scanCode></scanCode>
-		<uni-popup ref="popup" :mask-click="false" type="dialog">
-			<view style="background-color: #fff;padding: 30rpx 50rpx;border-radius: 30rpx;width: 75%;margin: 0 auto;">
-				<view v-if="tempProduct">
-					<view>
-						产品编码:{{tempProduct.code}}
-					</view>
-					<view>
-						产品名称:{{tempProduct.name}}
-					</view>
-					<view style="display: flex;align-items: center;">
-						成本价:
-						<u--input
-						    placeholder="请输入成本价"
-						    border="surround"
-						    v-model="tempProduct.putCost"
-							:min="0"
-							type="digit"
-						  ></u--input>
-					</view>
+	</view>
+	<scanCode></scanCode>
+	<uni-popup ref="popup" :mask-click="false" type="dialog">
+		<view style="background-color: #fff;padding: 30rpx 50rpx;border-radius: 30rpx;width: 75%;margin: 0 auto;">
+			<view v-if="tempProduct">
+				<view>
+					产品编码:{{tempProduct.code}}
 				</view>
-				<view style="display: flex;padding: 30rpx 15rpx;justify-content: space-between;">
-					<button @click="closePop">取消</button>
-					<button type="primary" @click="okPop">确定</button>
+				<view>
+					产品名称:{{tempProduct.name}}
+				</view>
+				<view style="display: flex;align-items: center;">
+					成本价:
+					<u--input
+					    placeholder="请输入成本价"
+					    border="surround"
+					    v-model="tempProduct.putCost"
+						:min="0"
+						type="digit"
+					  ></u--input>
 				</view>
 			</view>
-		</uni-popup>
+			<view style="display: flex;padding: 30rpx 15rpx;justify-content: space-between;">
+				<button @click="closePop">取消</button>
+				<button type="primary" @click="okPop">确定</button>
+			</view>
+		</view>
+	</uni-popup>
 	</view>
 </template>
 
@@ -123,7 +129,8 @@
 				sparePartsPurchaseId: '',
 				curProduct: null,
 				defaultWarehouseCascade: [] ,// 默认仓库仓位
-				tempProduct: null
+				tempProduct: null,
+				scrollTop: 0
 			};
 		},
 		onLoad(opts) {
@@ -329,6 +336,15 @@
 					}
 				})
 			},
+			selRow(item){
+				this.curProduct = item
+				this.code = item.qrCode
+			},
+			resetForm(){
+				this.curProduct = null
+				this.code = ''
+				this.scrollTop = 0
+			},
 			// 已添加产品列表
 			getDetailList(){
 				sparePartsPurDetailList({pageNo:1,pageSize:1000,sparePartsPurchaseSn:this.sparePartsPurchaseSn}).then(res => {
@@ -341,9 +357,15 @@
 						})
 						const curProduct = this.detailList.find(item => item.qrCode == this.code)
 						this.curProduct = curProduct || null
+						this.scrollToRow(this.curProduct)
 					}
 				})
 			},
+			// 滚动到指定行
+			scrollToRow(cur){
+				const idx = this.detailList.findIndex(item => item.id == cur.id)
+				this.scrollTop = idx * 30
+			},
 			getTotal(){
 				sparePartsQueryCount({sparePartsPurchaseSn:this.sparePartsPurchaseSn}).then(res => {
 					console.log(res,'getTotal')
@@ -395,15 +417,18 @@
 			}
 		}
 		.p-body{
-			overflow: auto;
 			flex-grow: 1;
-			height: 50%;
+			height: calc(100vh - 180px);
+			.scrollView{
+				height: 100%;
+			}
 		}
 		.p-footer{
-			padding:20upx 30upx;
+			padding: 20upx;
 			display: flex;
 			> button{
-				width: 30%;
+				width: 40%;
+				padding: 3px 0;
 			}
 		}
 	}

+ 68 - 28
pages/stockOut/chainTransferOut/index.vue

@@ -7,34 +7,42 @@
 					<text style="color: crimson;">{{baseData.allocationLinkageOutNo}}</text>
 				</view>
 				<view>
-					<button :disabled="loading" size="mini" type="primary" @click="submitForm"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+					<button :disabled="loading" size="mini" type="primary" style="padding:0 10px;height: 28px;line-height: 28px;" @click="submitForm"> 出库 <text class="iconfont icon-icon-test43"></text></button>
 				</view>
 			</view>
 			 <view>
-			 	<view>条形码:</view>
 			 	<view>
-			 		<input
-			 		@blur="pickFun(true)"
-			 		@change="curProductIndex = 0"
-			 		style="width: 100%;text-align: left;" 
-			 		class="uni-input" 
-			 		placeholder="扫描或输入条形码" 
-			 		border="surround" 
-			 		v-model="code">
-			 	</view>
+					<view>条形码:</view>
+					<view>
+						<input
+						@change="curProductIndex = 0"
+						style="width: 100%;text-align: left;" 
+						class="uni-input" 
+						placeholder="扫描或输入条形码" 
+						border="surround" 
+						v-model="code">
+					</view>
+				</view>
+				<view>
+					<button size="mini" @click="resetForm" :style="{padding:'2px 5px',color:'#aa0000'}">重置</button>
+				</view>
 			 </view>
 			 <view>
-			 	<view>产品编码:</view>
 			 	<view>
-			 		<input
-			 		@blur="pickFun(true)"
-			 		@change="curProductIndex = 0"
-			 		style="width: 100%;text-align: left;" 
-			 		class="uni-input" 
-			 		placeholder="请输入产品编码" 
-			 		border="surround" 
-			 		v-model="productCode">
-			 	</view>
+					<view>产品编码:</view>
+					<view>
+						<input
+						@change="curProductIndex = 0"
+						style="width: 100%;text-align: left;" 
+						class="uni-input" 
+						placeholder="请输入产品编码" 
+						border="surround" 
+						v-model="productCode">
+					</view>
+				</view>
+				<view>
+					<button size="mini" @click="pickFun(true)" :style="{padding:'2px 5px',color:'#00aaff'}">查询</button>
+				</view>
 			 </view>
 			 <view style="justify-content: flex-start;flex-wrap: wrap;">
 			 	<view>已拣款数: <text style="color: red;">{{baseData.pickCategory||0}}</text>/{{baseData.productTotalCategory}}</view>
@@ -42,6 +50,7 @@
 			 </view>
 		</view>
 		<view class="p-body">
+			<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scrollView">
 			<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading1" >
 				<!-- 表头行 -->
 				<uni-tr>
@@ -54,10 +63,11 @@
 				<uni-tr 
 				v-for="item in detailList" 
 				:key="item.id" 
+				@click="selRow(item)"
 				:checkedRow="hasCheck(item)"
 				>
 					<uni-td width="30%" align="center">
-						<view @click="copyText(item.dealerProductEntity.code)">{{item.dealerProductEntity.code}}</view>
+						<view>{{item.dealerProductEntity.code}}</view>
 					</uni-td>
 					<uni-td width="30%" align="center">{{item.dealerProductEntity.productTypeName3||'--'}}</uni-td>
 					<uni-td width="25%" align="center"><text style="color: red;">{{item.pickQty||0}}</text>/{{item.outQty}}</uni-td>
@@ -70,6 +80,7 @@
 					</uni-td>
 				</uni-tr>
 			</uni-table>
+			</scroll-view>
 		</view>
 		<view class="p-footer">
 			<button :disabled="loading" size="mini" type="warn" @click="pickFun(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
@@ -101,6 +112,7 @@
 				salesId: null,
 				curProductIndex: 0,
 				curProductArr: [],
+				scrollTop: 0
 			};
 		},
 		onLoad(opts) {
@@ -139,15 +151,39 @@
 				const curProduct = this.curProductArr[this.curProductIndex]
 				return curProduct&&(item.dealerProductEntity.code == curProduct.dealerProductEntity.code)
 			},
-			getCurProduct(){
+			getCurProduct(flag){
 				const curProduct = this.detailList.filter(item => item.dealerProductEntity.qrCode == this.code || item.dealerProductEntity.code == this.productCode)
-				console.log(curProduct)
 				this.curProductArr = curProduct || []
+				// 滚动到指定位置
+				if(this.curProductArr.length&&!flag){
+					const cur = this.curProductArr[0]
+					this.scrollToRow(cur)
+				}
+			},
+			// 选择行
+			selRow(item){
+				this.code = item.dealerProductEntity&&item.dealerProductEntity.qrCode||''
+				this.productCode = item.dealerProductEntity&&item.dealerProductEntity.code||''
+				this.getCurProduct(true)
+				const idx = this.curProductArr.findIndex(k => k.id == item.id)
+				this.curProductIndex = idx || 0
 			},
 			pickFun(flag){
 				this.getCurProduct()
 				this.addQty(flag)
 			},
+			resetForm(){
+				this.curProductIndex = 0
+				this.code = ''
+				this.productCode = ''
+				this.curProductArr = []
+				this.scrollTop = 0
+			},
+			// 滚动到指定行
+			scrollToRow(cur){
+				const idx = this.detailList.findIndex(item => item.id == cur.id)
+				this.scrollTop = idx * 30
+			},
 			addQty(flag){
 				console.log(this.curProductArr, this.curProductIndex)
 				const curProduct = this.curProductArr[this.curProductIndex]
@@ -294,15 +330,19 @@
 			}
 		}
 		.p-body{
-			overflow: auto;
 			flex-grow: 1;
-			height: 50%;
+			height: calc(100vh - 205px);
+			.scrollView{
+				height: 100%;
+			}
 		}
 		.p-footer{
-			padding:20upx 30upx;
+			padding: 20upx 30upx;
 			display: flex;
 			> button{
-				width: 30%;
+				width: 40%;
+				height: 32px;
+				line-height: 32px;
 			}
 		}
 	}

+ 64 - 24
pages/stockOut/salesOut/index.vue

@@ -7,33 +7,41 @@
 					<text style="color: crimson;">{{baseData.salesBillNo}}</text>
 				</view>
 				<view>
-					<button :disabled="loading" size="mini" type="primary" @click="submitForm"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+					<button :disabled="loading" size="mini" style="padding:0 10px;height: 28px;line-height: 28px;" type="primary" @click="submitForm"> 出库 <text class="iconfont icon-icon-test43"></text></button>
 				</view>
 			</view>
 			<view>
-				<view>条形码:</view>
 				<view>
-					<input
-					@blur="pickFun(true)"
-					@change="curProductIndex = 0"
-					style="width: 100%;text-align: left;" 
-					class="uni-input" 
-					placeholder="扫描或输入条形码" 
-					border="surround" 
-					v-model="code">
+					<view>条形码:</view>
+					<view>
+						<input
+						@change="curProductIndex = 0"
+						style="width: 190px;text-align: left;" 
+						class="uni-input" 
+						placeholder="扫描或输入条形码" 
+						border="surround" 
+						v-model="code">
+					</view>
+				</view>
+				<view>
+					<button size="mini" @click="resetForm" :style="{padding:'2px 5px',color:'#aa0000'}">重置</button>
 				</view>
 			</view>
 			<view>
-				<view>产品编码:</view>
 				<view>
-					<input
-					@blur="pickFun(true)"
-					@change="curProductIndex = 0"
-					style="width: 100%;text-align: left;" 
-					class="uni-input" 
-					placeholder="请输入产品编码" 
-					border="surround" 
-					v-model="productCode">
+					<view>产品编码:</view>
+					<view>
+						<input
+						@change="curProductIndex = 0"
+						style="width: 180px;text-align: left;" 
+						class="uni-input" 
+						placeholder="请输入产品编码" 
+						border="surround" 
+						v-model="productCode">
+					</view>
+				</view>
+				<view>
+					<button size="mini" @click="pickFun(true)" :style="{padding:'2px 5px',color:'#00aaff'}">查询</button>
 				</view>
 			</view>
 			<view style="justify-content: flex-start;flex-wrap: wrap;">
@@ -42,6 +50,7 @@
 			</view>
 		</view>
 		<view class="p-body">
+			<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scrollView">
 			<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading1" >
 				<!-- 表头行 -->
 				<uni-tr>
@@ -54,9 +63,10 @@
 				<uni-tr 
 				v-for="item in detailList" 
 				:key="item.id" 
+				@click="selRow(item)"
 				:checkedRow="hasCheck(item)">
 					<uni-td width="30%" align="center">
-						<view @click="copyText(item.dealerProductEntity.code)">{{item.dealerProductEntity.code}}</view>
+						<view>{{item.dealerProductEntity.code}}</view>
 					</uni-td>
 					<uni-td width="30%" align="center">{{item.dealerProductEntity.productTypeName3}}</uni-td>
 					<uni-td width="25%" align="center"><text style="color: red;">{{item.pickQty||0}}</text>/{{item.qty}}</uni-td>
@@ -69,6 +79,7 @@
 					</uni-td>
 				</uni-tr>
 			</uni-table>
+			</scroll-view>
 		</view>
 		<view class="p-footer">
 			<button :disabled="loading" size="mini" type="warn" @click="pickFun(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
@@ -100,6 +111,7 @@
 				salesId: null,
 				curProductIndex: 0,
 				curProductArr: [],
+				scrollTop: 0
 			};
 		},
 		onLoad(opts) {
@@ -138,15 +150,39 @@
 				const curProduct = this.curProductArr[this.curProductIndex]
 				return curProduct&&(item.dealerProductEntity.code == curProduct.dealerProductEntity.code)
 			},
-			getCurProduct(){
+			getCurProduct(flag){
 				const curProduct = this.detailList.filter(item => item.dealerProductEntity.qrCode == this.code || item.dealerProductEntity.code == this.productCode)
-				// console.log(curProduct)
 				this.curProductArr = curProduct || []
+				// 滚动到指定位置
+				if(this.curProductArr.length&&!flag){
+					const cur = this.curProductArr[0]
+					this.scrollToRow(cur)
+				}
+			},
+			// 选择行
+			selRow(item){
+				this.code = item.dealerProductEntity&&item.dealerProductEntity.qrCode||''
+				this.productCode = item.dealerProductEntity&&item.dealerProductEntity.code||''
+				this.getCurProduct(true)
+				const idx = this.curProductArr.findIndex(k => k.id == item.id)
+				this.curProductIndex = idx || 0
 			},
 			pickFun(flag){
 				this.getCurProduct()
 				this.addQty(flag)
 			},
+			resetForm(){
+				this.curProductIndex = 0
+				this.code = ''
+				this.productCode = ''
+				this.curProductArr = []
+				this.scrollTop = 0
+			},
+			// 滚动到指定行
+			scrollToRow(cur){
+				const idx = this.detailList.findIndex(item => item.id == cur.id)
+				this.scrollTop = idx * 30
+			},
 			addQty(flag){
 				console.log(this.curProductArr, this.curProductIndex)
 				const curProduct = this.curProductArr[this.curProductIndex]
@@ -296,15 +332,19 @@
 			}
 		}
 		.p-body{
-			overflow: auto;
 			flex-grow: 1;
-			height: 60%;
+			height: calc(100vh - 205px);
+			.scrollView{
+				height: 100%;
+			}
 		}
 		.p-footer{
 			padding: 20upx 30upx;
 			display: flex;
 			> button{
 				width: 40%;
+				height: 32px;
+				line-height: 32px;
 			}
 		}
 	}

+ 66 - 26
pages/stockOut/storeTransferOut/index.vue

@@ -7,33 +7,41 @@
 					<text style="color: crimson;">{{baseData.storeCallOutNo}}</text>
 				</view>
 				<view>
-					<button :disabled="loading" size="mini" type="primary" @click="submitForm"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+					<button :disabled="loading" size="mini" style="padding:0 10px;height: 28px;line-height: 28px;" type="primary" @click="submitForm"> 出库 <text class="iconfont icon-icon-test43"></text></button>
 				</view>
 			</view>
 			<view>
-				<view>条形码:</view>
 				<view>
-					<input
-					@blur="pickFun(true)"
-					@change="curProductIndex = 0"
-					style="width: 100%;text-align: left;" 
-					class="uni-input" 
-					placeholder="扫描或输入条形码" 
-					border="surround" 
-					v-model="code">
+					<view>条形码:</view>
+					<view>
+						<input
+						@change="curProductIndex = 0"
+						style="width: 190px;text-align: left;" 
+						class="uni-input" 
+						placeholder="扫描或输入条形码" 
+						border="surround" 
+						v-model="code">
+					</view>
+				</view>
+				<view>
+					<button size="mini" @click="resetForm" :style="{padding:'2px 5px',color:'#aa0000'}">重置</button>
 				</view>
 			</view>
 			<view>
-				<view>产品编码:</view>
 				<view>
-					<input
-					@blur="pickFun(true)"
-					@change="curProductIndex = 0"
-					style="width: 100%;text-align: left;" 
-					class="uni-input" 
-					placeholder="请输入产品编码" 
-					border="surround" 
-					v-model="productCode">
+					<view>产品编码:</view>
+					<view>
+						<input
+						@change="curProductIndex = 0"
+						style="width: 180px;text-align: left;" 
+						class="uni-input" 
+						placeholder="请输入产品编码" 
+						border="surround" 
+						v-model="productCode">
+					</view>
+				</view>
+				<view>
+					<button size="mini" @click="pickFun(true)" :style="{padding:'2px 5px',color:'#00aaff'}">查询</button>
 				</view>
 			</view>
 			<view style="justify-content: flex-start;flex-wrap: wrap;">
@@ -42,6 +50,7 @@
 			</view>
 		</view>
 		<view class="p-body">
+			<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scrollView">
 			<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading1" >
 				<!-- 表头行 -->
 				<uni-tr>
@@ -54,9 +63,10 @@
 				<uni-tr 
 				v-for="item in detailList" 
 				:key="item.id" 
+				@click="selRow(item)"
 				:checkedRow="hasCheck(item)">
 					<uni-td width="30%" align="center">
-						<view @click="copyText(item.productCode)">{{item.productCode}}</view>
+						<view>{{item.productCode}}</view>
 					</uni-td>
 					<uni-td width="30%" align="center">{{item.productTypeName3||'--'}}</uni-td>
 					<uni-td width="25%" align="center"><text style="color: red;">{{item.pickQty||0}}</text>/{{item.outQty}}</uni-td>
@@ -69,6 +79,7 @@
 					</uni-td>
 				</uni-tr>
 			</uni-table>
+			</scroll-view>
 		</view>
 		<view class="p-footer">
 			<button :disabled="loading" size="mini" type="warn" @click="pickFun(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
@@ -100,6 +111,7 @@
 				storeCallOutId: null,
 				curProductIndex: 0,
 				curProductArr: [],
+				scrollTop: 0
 			};
 		},
 		onLoad(opts) {
@@ -138,15 +150,39 @@
 				const curProduct = this.curProductArr[this.curProductIndex]
 				return curProduct&&(item.productCode == curProduct.productCode)
 			},
-			getCurProduct(){
+			getCurProduct(flag){
 				const curProduct = this.detailList.filter(item => item.productQrCode == this.code || item.productCode == this.productCode)
-				console.log(curProduct)
 				this.curProductArr = curProduct || []
+				// 滚动到指定位置
+				if(this.curProductArr.length&&!flag){
+					const cur = this.curProductArr[0]
+					this.scrollToRow(cur)
+				}
+			},
+			// 选择行
+			selRow(item){
+				this.code = item.productQrCode||''
+				this.productCode = item.productCode||''
+				this.getCurProduct(true)
+				const idx = this.curProductArr.findIndex(k => k.id == item.id)
+				this.curProductIndex = idx || 0
 			},
 			pickFun(flag){
 				this.getCurProduct()
 				this.addQty(flag)
 			},
+			resetForm(){
+				this.curProductIndex = 0
+				this.code = ''
+				this.productCode = ''
+				this.curProductArr = []
+				this.scrollTop = 0
+			},
+			// 滚动到指定行
+			scrollToRow(cur){
+				const idx = this.detailList.findIndex(item => item.id == cur.id)
+				this.scrollTop = idx * 30
+			},
 			addQty(flag){
 				console.log(this.curProductArr, this.curProductIndex)
 				const curProduct = this.curProductArr[this.curProductIndex]
@@ -294,15 +330,19 @@
 			}
 		}
 		.p-body{
-			overflow: auto;
 			flex-grow: 1;
-			height: 50%;
+			height: calc(100vh - 205px);
+			.scrollView{
+				height: 100%;
+			}
 		}
 		.p-footer{
-			padding:20upx 30upx;
+			padding: 20upx 30upx;
 			display: flex;
 			> button{
-				width: 30%;
+				width: 40%;
+				height: 32px;
+				line-height: 32px;
 			}
 		}
 	}

+ 67 - 31
pages/stockPan/index.vue

@@ -10,35 +10,37 @@
 					<button size="mini" :disabled="loading" type="warn" @click="submitIn"> 提交 <text class="iconfont icon-icon-test43"></text></button>
 				</view>
 			</view>
-			<view>
+			<view style="border: 0;">
 				<view>
 					<text>产品条码:</text>
 					<view style="flex-grow: 1;display: flex;align-items: center;">
 						<input 
-						style="width: 150px;text-align: left;font-size: 32rpx;padding: 6rpx 0 6rpx 7rpx;" 
+						style="width: 190px;text-align: left;font-size: 32rpx;padding: 6rpx 0 6rpx 7rpx;" 
 						class="uni-input" 
 						placeholder="扫描或输入条码" 
 						border="surround" 
 						v-model="code">
-						<button size="mini" @click="queryProduct" :style="{padding:'2px 10px',color:'#00aaff'}">查询</button>
 					</view>
 				</view>
-				<view></view>
+				<view>
+					<button size="mini" @click="resetForm" :style="{padding:'2px 3px',color:'#aa0000'}">重置</button>
+				</view>
 			</view>
 			<view>
 				<view>
 					<text>产品编码:</text>
 					<view style="flex-grow: 1;display: flex;align-items: center;">
 						<input 
-						style="width: 150px;text-align: left;font-size: 32rpx;padding: 6rpx 0 6rpx 7rpx;" 
+						style="width: 190px;text-align: left;font-size: 32rpx;padding: 6rpx 0 6rpx 7rpx;" 
 						class="uni-input" 
 						placeholder="请输入产品编码" 
 						border="surround" 
 						v-model="productCode">
-						<button size="mini" @click="queryProduct" :style="{padding:'2px 10px',color:'#00aaff'}">查询</button>
 					</view>
 				</view>
-				<view></view>
+				<view>
+					<button size="mini" @click="queryProduct" :style="{padding:'2px 3px',color:'#00aaff'}">查询</button>
+				</view>
 			</view>
 			<view v-if="curProduct">
 				<view>
@@ -60,25 +62,29 @@
 				<view>盈亏数量:<span :style="{ color: countData.totalCheckProfitLossQty>0?'red':countData.totalCheckProfitLossQty<0?'green':'' }">{{ (countData.totalCheckProfitLossQty || countData.totalCheckProfitLossQty==0) ? Math.abs(countData.totalCheckProfitLossQty) : '--' }}</span></view>
 			</view>
 		</view>
-		<view class="p-body">
-			<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading" >
-				<!-- 表头行 -->
-				<uni-tr>
-					<uni-td align="center">产品编码</uni-td>
-					<uni-td align="center">库存</uni-td>
-					<uni-td align="center">盘点数量</uni-td>
-					<uni-td align="center">盈亏数量</uni-td>
-				</uni-tr>
-				<!-- 表格数据行 -->
-				<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.qrCode == item.qrCode" @click="toDetail(item)">
-					<uni-td width="40%" align="center">{{item.productCode}}</uni-td>
-					<uni-td width="20%" align="center">{{item.stockQty}}</uni-td>
-					<uni-td width="20%" align="center">{{item.checkQty}}</uni-td>
-					<uni-td width="20%" align="center">
-						 <span :style="{ color: item.checkProfitLossQty>0?'red':item.checkProfitLossQty<0?'green':'' }">{{ (item.checkProfitLossQty || item.checkProfitLossQty==0) ? Math.abs(item.checkProfitLossQty) : '--' }}</span>
-					</uni-td>
-				</uni-tr>
-			</uni-table>
+		<view class="p-body" :style="{height: curProduct ? 'calc(100vh - 290px)':'calc(100vh - 220px)'}">
+			<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scrollView">
+				<uni-table style="width: 100%;" border emptyText="暂无数据" :loading="loading" >
+					<!-- 表头行 -->
+					<uni-tr>
+						<uni-td align="center">产品编码</uni-td>
+						<uni-td align="center">库存</uni-td>
+						<uni-td align="center">盘点数量</uni-td>
+						<uni-td align="center">盈亏数量</uni-td>
+					</uni-tr>
+					<!-- 表格数据行 -->
+					<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="hasCheck(item)" @click="selRow(item)">
+						<uni-td width="30%" align="center">{{item.productCode}}</uni-td>
+						<uni-td width="20%" align="center">{{item.stockQty}}</uni-td>
+						<uni-td width="25%" align="center">{{item.checkQty}}</uni-td>
+						<uni-td width="25%" align="center">
+							<view  @click="toDetail(item)">
+							 <span :style="{ color: item.checkProfitLossQty>0?'red':item.checkProfitLossQty<0?'green':'' }">{{ (item.checkProfitLossQty || item.checkProfitLossQty==0) ? Math.abs(item.checkProfitLossQty) : '--' }}</span>
+							</view>
+						</uni-td>
+					</uni-tr>
+				</uni-table>
+			</scroll-view>
 		</view>
 		<view class="p-footer">
 			<button size="mini" type="warn" @click="addQty(false)"> <text class="iconfont icon-reduce-btn"> 减 </text></button>
@@ -113,6 +119,7 @@
 				productCode: '',
 				baseData: null,
 				curProduct: null,
+				scrollTop: 0
 			};
 		},
 		onLoad(opts) {
@@ -200,6 +207,26 @@
 				 }
 			   })
 			},
+			hasCheck(item){
+				if(this.curProduct){
+					return(this.curProduct.productCode == item.productCode)
+					if(this.curProduct.qrCode || item.qrCode){
+						return(this.curProduct.qrCode == item.qrCode)
+					}
+				}
+				return false
+			},
+			selRow(item){
+				this.curProduct = item
+				this.code = item.qrCode||''
+				this.productCode = item.productCode||''
+			},
+			resetForm(){
+				this.curProduct = null
+				this.code = ''
+				this.productCode = ''
+				this.scrollTop = 0
+			},
 			// 查询产品
 			queryProduct(){
 				if(!this.code&&!this.productCode){
@@ -263,7 +290,6 @@
 				checkWarehouseDetailSave(params).then(res => {
 				  console.log(res,'添加')
 				  if (res.status == 200) {
-				    this.loading = false
 					this.pageInit()
 				  } else {
 				    this.loading = false
@@ -287,9 +313,16 @@
 						this.detailList = res.data.list 
 						const curProduct = this.detailList.find(item => item.qrCode == this.code || item.productCode == this.productCode)
 						this.curProduct = curProduct || null
+						this.scrollToRow(this.curProduct)
 					}
+					this.loading = false
 				})
 			},
+			// 滚动到指定行
+			scrollToRow(cur){
+				const idx = this.detailList.findIndex(item => item.id == cur.id)
+				this.scrollTop = idx * 30
+			},
 			getTotal(){
 				checkWarehouseDetailCount({checkWarehouseSn:this.checkWarehouseSn}).then(res => {
 					console.log(res,'getTotal')
@@ -343,15 +376,18 @@
 			}
 		}
 		.p-body{
-			overflow: auto;
 			flex-grow: 1;
-			height: 50%;
+			height: calc(100vh - 220px);
+			.scrollView{
+				height: 100%;
+			}
 		}
 		.p-footer{
-			padding:20upx 30upx;
+			padding: 20upx;
 			display: flex;
 			> button{
-				width: 30%;
+				width: 40%;
+				padding: 3px 0;
 			}
 		}
 	}

+ 1 - 1
uni_modules/uni-table/components/uni-table/uni-table.vue

@@ -322,7 +322,7 @@ $border-color: #ebeef5;
 	overflow-x: auto;
 	::v-deep .uni-table-tr:nth-child(n + 2) {
 		&:hover {
-			background-color: #f5f7fa;
+			// background-color: #feffb5;
 		}
 	}
 	::v-deep .uni-table-thead {

+ 2 - 2
uni_modules/uni-table/components/uni-td/uni-td.vue

@@ -76,10 +76,10 @@
 	.uni-table-td {
 		display: table-cell;
 		padding: 4px 6px;
-		font-size: 12px;
+		font-size: 14px;
 		border-bottom: 1px $border-color solid;
 		font-weight: 400;
-		color: #606266;
+		color: #333;
 		line-height: 23px;
 		box-sizing: border-box;
 	}

+ 8 - 4
uni_modules/uni-table/components/uni-tr/uni-tr.vue

@@ -1,6 +1,6 @@
 <template>
 	<!-- #ifdef H5 -->
-	<tr class="uni-table-tr" :class="checkedRow?'uni-table-checked':''" @click="bindClick" @tap="bindClick" @longpress="bindLongtap">
+	<tr class="uni-table-tr" :id="id" :class="checkedRow?'uni-table-checked':''" @click="bindClick" @tap="bindClick" @longpress="bindLongtap">
 		<th v-if="selection === 'selection' && ishead" class="checkbox" :class="{ 'tr-table--border': border }">
 			<table-checkbox :checked="checked" :indeterminate="indeterminate" :disabled="disabled" @checkboxSelected="checkboxSelected"></table-checkbox>
 		</th>
@@ -9,7 +9,7 @@
 	</tr>
 	<!-- #endif -->
 	<!-- #ifndef H5 -->
-	<view class="uni-table-tr" :class="checkedRow?'uni-table-checked':''" @click="bindClick" @tap="bindClick" @longpress="bindLongtap">
+	<view class="uni-table-tr" :id="id" :class="checkedRow?'uni-table-checked':''" @click="bindClick" @tap="bindClick" @longpress="bindLongtap">
 		<view v-if="selection === 'selection' " class="checkbox" :class="{ 'tr-table--border': border }">
 			<table-checkbox :checked="checked" :indeterminate="indeterminate" :disabled="disabled" @checkboxSelected="checkboxSelected"></table-checkbox>
 		</view>
@@ -40,6 +40,10 @@ export default {
 		checkedRow: {
 			type: Boolean,
 			default: false
+		},
+		id: {
+			type: String,
+			default: ''
 		}
 	},
 	options: {
@@ -157,9 +161,9 @@ $border-color: #ebeef5;
 	/* #endif */
 }
 .uni-table-checked{
-	background: #ffff7f;
+	background: #feffb5;
 	th{
-		background: #ffff7f;
+		background: #feffb5;
 	}
 }
 .checkbox {

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
unpackage/dist/build/app-plus/app-config-service.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/app-service.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/app-view.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
unpackage/dist/build/app-plus/manifest.json


BIN=BIN
unpackage/dist/build/app-plus/static/logo.png


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 240 - 209
unpackage/dist/dev/app-plus/app-service.js


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 222 - 144
unpackage/dist/dev/app-plus/app-view.js


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio