lilei 1 éve
szülő
commit
d870455ea0

+ 6 - 13
config/api.js

@@ -48,11 +48,11 @@ export const checkWarehouseQueryList = (params, config = {}) => http.post(`/chec
 //  库存盘点  自选盘点 选择产品  列表  分页
 export const checkWarehouseDetailStockList = (params, config = {}) => http.post(`/checkWarehouse/queryStockPage/${params.pageNo}/${params.pageSize}`, params, config)
 // 库存盘点详情添加产品
-export const checkWarehouseDetailSave = (params, config = {}) => http.post('/checkWarehouse/detail/save', params, config)
+export const checkWarehouseDetailSave = (params, config = {}) => http.post('/checkWarehouse/detail/saveByPda', params, config)
 // 库存盘点详情删除产品
 export const checkWarehouseDetailDel = (params, config = {}) => http.post('/checkWarehouse/detail/delete', params, config)
 //  库存盘点  详情  列表  分页
-export const checkWarehouseDetailList = (params, config = {}) => http.post(`/checkWarehouse/detail/queryPage/${params.pageNo}/${params.pageSize}`, params, config)
+export const checkWarehouseDetailList = (params, config = {}) => http.post(`/checkWarehouse/detail/queryDetailPageByPda/${params.pageNo}/${params.pageSize}`, params, config)
 //  库存盘点  详情  合计
 export const checkWarehouseDetailCount = (params, config = {}) => http.post('/checkWarehouse/detail/queryPageCount', params, config)
 // 库存盘点提交
@@ -109,18 +109,11 @@ export const dealerProductBrandQuery = (params, config = {}) => http.post('/deal
 //  产品分类 列表  无分页
 export const dealerProductTypeList = (params, config = {}) => http.post('/dealerProductType/query', params, config)
 
-//  库存 列表 合计
-export const stockCount = (params, config = {}) => http.post('/stock/queryCount', params, config)
-//  库存列表  分页
-export const stockList = (params, config = {}) => http.post(`/stock/queryPage/${params.pageNo}/${params.pageSize}`, params, config)
 //  库存 详情列表  分页
-export const stockDetailList = (params, config = {}) => http.post(`/stock/detail/queryPage/${params.pageNo}/${params.pageSize}`, params, config)
-//  库存流水(出入库明细) 列表  有分页
-export const stockFlowList = (params, config = {}) => http.post(`/stockFlow/queryPage/${params.pageNo}/${params.pageSize}`, params, config)
-//  库存 详情列表  分页
-export const querySumByProductLocation = (params, config = {}) => http.post(`/stock/detail/querySumByProductLocation/${params.pageNo}/${params.pageSize}`, params, config)
-//  出入库明细  列表  合计
-export const stockByProductSn = (params, config = {}) => http.post(`/stock/findByProductSn/${params.productSn}`, params, config)
+export const stockDetailList = (params, config = {}) => http.post(`/stock/detail/queryGroupPage/${params.pageNo}/${params.pageSize}`, params, config)
+//  详情列表
+export const stockfindGroupPage = (params, config = {}) => http.post(`/stock/detail/findGroupPage`, params, config)
+ 
 
 //  签收入库 列表  有分页
 export const receivingStockList = (params, config = {}) => http.post(`/receiving/queryStockInPage/${params.pageNo}/${params.pageSize}`, params, config)

+ 1 - 1
config/request.js

@@ -4,7 +4,7 @@ module.exports = (vm) => {
     // 初始化请求配置
     uni.$u.http.setConfig((config) => {
         /* config 为默认全局配置*/
-        config.baseURL = 'http://192.168.2.103/qpls-md'; /* 开发 */
+        config.baseURL = 'http://192.168.2.117/qpls-md'; /* 开发 */
 		// config.baseURL = 'https://iscm.360arrow.com/qpls-md'; /* 生产 */
 		// config.baseURL = 'https://p.iscm.360arrow.com/qpls-md'; /* 预发布 */
 		config.custom.auth = true

+ 0 - 14
pages.json

@@ -262,13 +262,6 @@
 				"enablePullDownRefresh": false
 			}
 		},
-		{
-			"path": "pages/stock/detaiList", // 库存详情列表
-			"style": {
-				"navigationBarTitleText": "库存详情",
-				"enablePullDownRefresh": false
-			}
-		},
 		{
 			"path": "pages/stock/stockDetail", // 库存详情
 			"style": {
@@ -276,13 +269,6 @@
 				"enablePullDownRefresh": false
 			}
 		},
-		{
-			"path": "pages/stock/warehouseDetail", // 出入库明细详情
-			"style": {
-				"navigationBarTitleText": "出入库明细",
-				"enablePullDownRefresh": false
-			}
-		},
 		{
 		    "path" : "pages/purchasing/list",
 		    "style" :                                                                                    

+ 2 - 0
pages/codeBar/codeBar.vue

@@ -171,8 +171,10 @@
 				this.subloading = true
 				const prams = JSON.parse(JSON.stringify(this.tempProduct))
 				prams.qrCode = this.code
+				console.log(prams)
 				dealerProductSave(prams).then(res => {
 					if(res.status == 200){
+						this.pageNo = 1
 						this.queryProduct(1)
 						this.closePop()
 					}

+ 124 - 27
pages/purchasing/index.vue

@@ -2,8 +2,13 @@
 	<view class="p-content">
 		<view class="p-head" v-if="baseData">
 			<view>
-				<text>采购单号:</text>
-				<text style="color: crimson;">{{baseData[0].purchaseBillNo}}</text>
+				<view>
+					<text>采购单号:</text>
+					<text style="color: crimson;">{{baseData[0].purchaseBillNo}}</text>
+				</view>
+				<view>
+					<button :disabled="loading" size="mini" type="primary" @click="toOut"> 入库 <text class="iconfont icon-icon-test43"></text></button>
+				</view>
 			</view>
 			<view>
 				<text>发货单号:</text>
@@ -13,7 +18,7 @@
 				<text>条码:</text>
 				<view>
 					<input
-					@blur="queryProduct"
+					@blur="addQty(true)"
 					style="width: 100%;text-align: left;" 
 					class="uni-input" 
 					placeholder="扫描或输入条码" 
@@ -39,9 +44,9 @@
 					<uni-td align="center">入库金额</uni-td>
 				</uni-tr>
 				<!-- 表格数据行 -->
-				<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.qrCode == item.qrCode">
+				<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.dealerProductEntity.qrCode == item.dealerProductEntity.qrCode">
 					<uni-td width="30%" align="center">{{item.dealerProductEntity.code}}</uni-td>
-					<uni-td width="30%" align="center">{{item.dealerProductEntity.productTypeName2}}</uni-td>
+					<uni-td width="30%" align="center">{{item.dealerProductEntity.productTypeName3}}</uni-td>
 					<uni-td width="25%" align="center"><text style="color: red;">{{item.realPutQty}}</text>/{{item.putQty}}</uni-td>
 					<uni-td width="15%" align="center">
 						 {{item.realPutAmount}}
@@ -50,9 +55,20 @@
 			</uni-table>
 		</view>
 		<view class="p-footer">
-			<button :disabled="loading" size="mini" type="primary" @click="toOut"> 入库 <text class="iconfont icon-icon-test43"></text></button>
+			<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>
+		<scanCode @onKeyDown="keyDown"></scanCode>
+		<u-picker 
+		:show="showPick" 
+		:closeOnClickOverlay="true" 
+		ref="uPicker" 
+		title="选择仓库仓位" 
+		:columns="pickItem" 
+		keyName="name" 
+		@close="showPick=false" 
+		@cancel="showPick=false" 
+		@change="changePick"></u-picker>
 	</view>
 </template>
 
@@ -65,26 +81,40 @@
 		data() {
 			return {
 				loading: false,
+				showPick: false,
 				baseData: null,
 				detailList:[],
 				code:'',
 				receivingBillSn: null,
 				salesId: null,
 				curProduct: null,
-				toThousands
+				toThousands,
+				warehouseList: [],
+				pickItem: [],
+				keyName: ''
 			};
 		},
 		onLoad(opts) {
 		  var _this = this
+		  this.warehouseList = this.$store.state.vuex_warehouseList
 		  this.receivingBillSn = opts.receivingBillSn
 		  this.salesId = opts.id
+		  
+		  // 仓库列表
+		  this.getWarehousePick()
+		  
 		  this.getDetail()
 		  this.getDetailList()
 		  
 		  uni.$on('scancodedate', function(content) {
-			  console.log("扫描到的内容为:", content)
-			  _this.code = content||''
-			  _this.queryProduct()
+			  console.log("扫描到的内容为:", content, this.keyName)
+			  if(this.keyName == 'rightKey'){
+				  _this.code = content||''
+				  _this.addQty(true)
+			  }
+			  if(this.keyName == 'leftKey'){
+			  				  
+			  }
 		  })
 		},
 		onShow() {
@@ -97,22 +127,88 @@
 			hideKeyborder(){
 				uni.hideKeyboard()
 			},
-			//拣货
-			queryProduct(){
-				if(this.code==''){return}
-				this.loading = true
-				salesPick({receivingBillSn: this.receivingBillSn, productQrCode: this.code}).then(res => {
-					console.log(res)
-					if(res.status == 200){
-						if(res.data){
-							this.getDetailList()
-						}else{
-							uni.$u.toast("此商品不存在")
-							playAudio('error')
-						}
+			keyDown(e){
+				this.keyName = e
+			},
+			getWarehousePick(){
+				const col1 = []
+				const col2 = []
+				this.warehouseList.map((item,index) => {
+					col1.push(item)
+					if(index == 0 && item.warehouseLocationList){
+						item.warehouseLocationList.map(k => {
+							col2.push(k)
+						})
 					}
-					this.loading = false
 				})
+				this.pickItem = [col1,col2]
+				// this.showPick = true
+			},
+			// 选择仓库
+			changePick(e){
+				const {
+					columnIndex,
+					index,
+					// 微信小程序无法将picker实例传出来,只能通过ref操作
+					picker = this.$refs.uPicker
+				} = e
+				console.log(columnIndex,index)
+				if (columnIndex === 0) {
+					const currow = this.pickItem[0][index]
+					const col2 = []
+					currow&&currow.warehouseLocationList.map(item => {
+						col2.push(item)
+					})
+					picker.setColumnValues(1, col2)
+				}
+			},
+			getCurRow(){
+				const curProduct = this.detailList.find(item => item.dealerProductEntity.qrCode == this.code)
+				this.curProduct = curProduct || null
+				return curProduct
+			},
+			// 修改仓库
+			updateWarehouse (row) {
+			  this.loading = true
+			  purchaseUpdateWarehouse({
+				id: row.id,
+				warehouseSn: row.warehouseSn,
+				warehouseLocationSn: row.warehouseLocationSn
+			  }).then(res => {
+				if (res.status == 200) {
+				  this.getDetailList()
+				}
+				this.loading = false
+			  })
+			},
+			// 修改入库数量
+			changePutQty(record, realPutQty){
+			  if(realPutQty){
+				  this.loading = true
+				  updateRealPutQty({id:record.id,realPutQty:realPutQty}).then(res => {
+					if(res.status == 200){
+					  uni.$u.toast(res.message)
+					  this.getDetail()
+					  this.getDetailList()
+					} 
+					this.loading = false
+				  })
+			  }else{
+				  uni.$u.toast("入库数量不能为0")
+			  }
+			},
+			//拣货
+			addQty(flag){
+				if(this.code==''){
+					uni.$u.toast("请扫描或输入条形码")
+					return
+				}
+				const row = this.getCurRow()
+				if(row){
+					this.changePutQty(row,row.realPutQty + (flag?1:-1))
+				}else{
+					uni.$u.toast("此商品不存在")
+				}
 			},
 			// 详情
 			getDetail(){
@@ -126,10 +222,10 @@
 			// 产品明细列表
 			getDetailList(){
 				receivingDetail({pageNo:1,pageSize:1000,receivingBillSn:this.receivingBillSn}).then(res => {
+					console.log(res,'明细列表')
 					if(res.status == 200){
 						this.detailList = res.data.list
-						const curProduct = this.detailList.find(item => item.qrCode == this.code)
-						this.curProduct = curProduct || null
+						this.getCurRow()
 					}
 				})
 			},
@@ -155,6 +251,7 @@
 				align-items: center;
 				padding: 10upx 20upx;
 				border-bottom: 1px solid #eee;
+				justify-content: space-between;
 				> view{
 					display: flex;
 					padding: 0 10upx;

+ 2 - 1
pages/purchasing/list.vue

@@ -41,7 +41,8 @@
 				pageSize: 10,
 				pageNo: 1,
 				total: 0,
-				status: 'loadmore'
+				status: 'loadmore',
+				warehouseList: []
 			}
 		},
 		onLoad() {

+ 0 - 264
pages/stock/detaiList.vue

@@ -1,264 +0,0 @@
-<template>
-	<view class="st-detailList-wrap">
-		<view class="panel-box">
-			<view class="type-box">
-				<u-subsection @change="sectionChange" mode="subsection" height="60" :list="list" :current="curNow" active-color="#00aaff"></u-subsection>
-			</view>
-			<view class="st-detailList-info">
-				<view class="st-detailList-tit">
-					{{stockInfo&&stockInfo.productName || '--'}}
-				</view>
-				<view class="st-detailList-info-con flex align_center">
-					<view class="pimgs">
-						<u-image :src="stockInfo&&stockInfo.productMsg||`../../static/def_img@2x.png`" width="100" height="100" border-radius="10"></u-image>
-					</view>
-					<view class="flex_1">
-						<view>产品编码:{{stockInfo&&stockInfo.productCode || '--'}}</view>
-						<view class="padding_3">原厂编码:{{stockInfo&&stockInfo.productOrigCode || '--'}}</view>
-						<view>
-							<view class="font_13">
-								可用总数量:{{toThousands(stockInfo&&stockInfo.currentStockQty||0)}}{{stockInfo&&stockInfo.productUnit||''}}
-							</view>
-							<view class="font_13" v-if="$hasPermissions('M_showCostPrice_mobile')">
-								可用总成本:
-								¥{{toThousands(stockInfo&&stockInfo.currentStockCost||0, 2)}}
-							</view>
-						</view>
-						<view>
-							<view class="font_13">
-								冻结总数量:{{toThousands(stockInfo&&stockInfo.freezeQty||0)}}{{stockInfo&&stockInfo.productUnit||''}}
-							</view>
-							<view class="font_13" v-if="$hasPermissions('M_showCostPrice_mobile')">
-								冻结总成本:
-								¥{{toThousands(stockInfo&&stockInfo.freezeCost||0, 2)}}
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- 查询结果 -->
-		<scroll-view class="st-detailList-con" scroll-y @scrolltolower="onreachBottom">
-			<view class="st-detailList-main">
-				<!-- 库存详情 -->
-				<view v-if="curNow==0" class="st-detailList-main-item flex align_center" v-for="(item, index) in listData" :key="item.id" @click="getDetail(item)">
-					<view>
-						<view class="flex align_center justify_between margin-b20">
-							<view :style="{color: '#00aaff'}">{{item.putTime || '--'}}</view>
-							<u-tag v-if="item.putBizTypeDictValue" :text="item.putBizTypeDictValue" border-color="#55aaff" shape="circle" size="mini" />
-						</view>
-						<view class="flex align_center justify_between">
-							<view v-if="item.warehouseName || item.warehouseLocationName">{{item.warehouseName}} > {{item.warehouseLocationName}}</view>
-							<view v-else>--</view>
-							<view>¥{{toThousands(item.putCost||0, 2)}} * {{toThousands(item.currentQty||0)}}{{item.unit}}</view>
-						</view>
-					</view>
-					<view>
-						<u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
-					</view>
-				</view>
-				<!-- 出入库明细 -->
-				<view v-if="curNow==1" class="st-detailList-main-item flex align_center" v-for="(item, index) in listData" :key="item.id" @click="getDetail(item)">
-					<view>
-						<view class="flex align_center justify_between margin-b20">
-							<view :style="{color: '#00aaff'}">{{item.auditTime || '--'}}</view>
-							<u-tag v-if="item.bizTypeDictValue" :text="item.bizTypeDictValue" border-color="#55aaff" shape="circle" size="mini" />
-						</view>
-						<view class="flex align_center justify_between">
-							<view>
-							<text v-if="item.unitType&&item.unitType=='CUSTOMER'">{{ item.unitNameCurrent||'--' }}</text>
-							<text v-else>{{ item.unitName||'--' }}</text>
-							</view>
-							<view>
-								<view :style="{color: item.qty && item.qty!=0 ? (item.flowType=='PUT' ? 'green':'red'):'', display:'inline-block'}"><text v-if="item.qty && item.qty!=0">{{ item.flowType=='PUT' ? '+':'-' }}</text>{{ toThousands(item.qty||0) }}</view>
-								{{item.product && item.product.unit}}
-							</view>
-						</view>
-					</view>
-					<view>
-						<u-icon name="arrow-right" color="#969da3" size="24"></u-icon>
-					</view>
-				</view>
-				<view v-if="listData && listData.length == 0">
-					<u-empty :text="noDataText" mode="list" :margin-top="50"></u-empty>
-				</view>
-			</view>
-		</scroll-view>
-	</view>
-</template>
-
-<script>
-	import { toThousands } from '@/libs/tools'
-	import { stockDetailList, stockFlowList } from '@/config/api.js'
-	export default{
-		data(){
-			return {
-				list: [
-					{ name: '库存详情' },
-					{ name: '出入库明细' }
-				],
-				totalData: null,
-				totalNum: 0,
-				listData: [],
-				pageNo: 1,
-				pageSize: 10,
-				stockInfo: null,
-				noDataText: '暂无数据',
-				curNow: 0,
-				theme: '',
-				toThousands
-			}
-		},
-		onLoad(option) {
-			this.theme = getApp().globalData.theme
-			this.stockInfo = option.data ? JSON.parse(option.data) : null
-			this.getList()
-		},
-		methods: {
-			// 列表
-			getList(pageNo){
-				const _this = this
-				if (pageNo) {
-					this.pageNo = pageNo
-				}
-				let params = {}
-				let url = stockDetailList
-				if(this.curNow == 0){  // 库存详情
-					url = stockDetailList
-					params = {
-						pageNo: this.pageNo,
-						pageSize: this.pageSize,
-						stockSn: this.stockInfo && this.stockInfo.stockSn || '',
-						isSellOut: '0'
-					}
-				}else if(this.curNow == 1){  // 出入库明细
-					url = stockFlowList
-					params = {
-						pageNo: this.pageNo,
-						pageSize: this.pageSize,
-						productSn: this.stockInfo && this.stockInfo.productSn || ''
-					}
-				}
-				url(params).then(res => {
-					if (res.status == 200) {
-						if(res.data && res.data.list){
-							if(this.curNow == 1){  // 出入库明细
-								res.data.list.map(item => {
-									if(item.flowType == 'PUT'){
-										item.qty = item.putQty || 0
-									}else if(item.flowType == 'OUT'){
-										item.qty = item.outQty || 0
-									}
-								})
-							}
-							if(this.pageNo>1){
-								this.listData = this.listData.concat(res.data && res.data.list || [])
-							}else{
-								this.listData = res.data.list || []
-							}
-						}else{
-							this.listData = []
-						}
-						this.totalNum = res.data && res.data.count || 0
-					} else {
-						this.listData = []
-						this.totalNum = 0
-						this.noDataText = res.message
-					}
-				})
-			},
-			// scroll-view到底部加载更多
-			onreachBottom() {
-				if(this.listData.length < this.totalNum){
-					this.pageNo += 1
-					this.getList()
-				}
-			},
-			// 详情
-			getDetail(data){
-				if(this.curNow == 0){  // 库存详情
-					uni.navigateTo({ url: "/pages/stock/stockDetail?productData="+JSON.stringify(this.stockInfo)+"&data="+JSON.stringify(data) })
-				}else if(this.curNow == 1){  // 出入库明细
-					uni.navigateTo({ url: "/pages/stock/warehouseDetail?productData="+JSON.stringify(this.stockInfo)+"&data="+JSON.stringify(data) })
-				}
-			},
-			sectionChange(index) {
-				this.curNow = index
-				this.getList(1)
-			}
-		}
-	}
-</script>
-
-<style lang="less">
-	page{
-		background: #f8f8f8;
-	}
-	.st-detailList-wrap{
-		width: 100%;
-		height: 100vh;
-		.panel-box {
-			background-color: #ffffff;
-			box-shadow: 3upx 2upx 6upx #eee;
-			margin-bottom: 20upx;
-			.type-box{
-				margin: 0 auto 20upx;
-				width: 65%;
-			}
-			.st-detailList-info{
-				background: #ffffff;
-				padding: 20upx;
-				margin-bottom: 25upx;
-				border-radius: 25upx;
-				box-shadow: 1px 1px 3px #EEEEEE;
-				.st-detailList-tit{
-					padding-bottom: 20upx;
-					border-bottom: 1px solid #e4e7ed;
-					font-weight: bold;
-					.u-line{
-						display: inline-block;
-						width: 6upx;
-						height: 40upx;
-						background-color: red;
-						vertical-align: bottom;
-						margin: 0 20upx 0 10upx;
-					}
-				}
-				.st-detailList-info-con{
-					padding: 20upx 20upx 6upx;
-					font-size: 14px;
-					.pimgs{
-						margin-right: 16upx;
-					}
-					.padding_3{
-						padding: 6upx 0;
-					}
-				}
-			}
-		}
-		.st-detailList-con{
-			height: calc(100vh - 370upx);
-			.st-detailList-main{
-				.st-detailList-main-item{
-					background-color: #fff;
-					margin: 0 20upx 10upx;
-					border-radius: 15upx;
-					box-shadow: 1px 1px 3px #EEEEEE;
-					padding: 20upx 20upx;
-					.margin-b20{
-						margin-bottom: 20upx;
-					}
-					> view{
-						&:first-child{
-							flex-grow: 1;
-						}
-						&:last-child{
-							padding: 0 0 0 20upx;
-						}
-					}
-				}
-			}
-			
-		}
-	}
-</style>

+ 74 - 107
pages/stock/index.vue

@@ -3,49 +3,32 @@
 		<!-- 库存查询 -->
 		<view class="stock-con" v-if="$hasPermissions('M_stockQuery_mobile')">
 			<u-form :model="form" ref="uForm" label-width="100">
-				<u-form-item label="条形码"><u-input v-model.trim="form.productQrCode" border="bottom" placeholder="请输入条形码" input-align="right" /></u-form-item>
-				<u-form-item label="产品编码"><u-input v-model.trim="form.productCode" border="bottom" placeholder="请输入产品编码" input-align="right" /></u-form-item>
-				<u-form-item label="产品名称"><u-input v-model.trim="form.productName" border="bottom" placeholder="请输入产品名称" input-align="right" /></u-form-item>
+				<u-form-item label="条形码"><u-input v-model.trim="form.productQrCode" placeholder="请输入条形码" input-align="right" /></u-form-item>
+				<u-form-item label="产品编码"><u-input v-model.trim="form.productCode" placeholder="请输入产品编码" input-align="right" /></u-form-item>
+				<u-form-item label="产品名称"><u-input v-model.trim="form.productName" placeholder="请输入产品名称" input-align="right" /></u-form-item>
 			</u-form>
 			<view class="form-footer-btn">
 				<u-button size="medium" shape="circle" hover-class="none" @click="handleClean">清空</u-button>
-				<u-button size="medium" hover-class="none" shape="circle" :custom-style="customBtnStyle" @click="handleSearch">查询</u-button>
+				<u-button size="medium" hover-class="none" shape="circle" :loading="loading" :custom-style="customBtnStyle" @click="handleSearch">查询</u-button>
 			</view>
 		</view>
-		<!-- 查询结果 -->
-		<view class="stockDetail-info" v-if="listData">
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">产品编码</view>
-				<view>{{listData && listData.productCode || '--'}} <copyText :text="listData.productCode" label="产品编码"></copyText></view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">产品名称</view>
-				<view>{{listData && listData.productName || '--'}} <copyText :text="listData.productName" label="产品名称"></copyText></view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">条形码</view>
-				<view>{{listData && listData.productQrCode || '--'}} <copyText :text="listData.productQrCode" label="条形码"></copyText></view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">库存数量</view>
-				<view>{{toThousands(listData.currentStockQty||0)}}{{listData.productUnit}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">仓库/仓位</view>
-				<view>{{listData && listData.putBizTypeDictValue || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">产品分类</view>
-				<view>{{listData && listData.putBizTypeDictValue || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">单位</view>
-				<view>{{listData && listData.putBizTypeDictValue || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">产品图片</view>
-				<view>{{listData && listData.putBizTypeDictValue || '--'}}</view>
-			</view>
+		<view class="p-body" v-if="listData.length">
+			<uni-table border emptyText="暂无数据" :loading="loading" >
+				<!-- 表头行 -->
+				<uni-tr>
+					<uni-td width="30%" align="center">产品编码</uni-td>
+					<uni-td width="30%" align="center">条形码</uni-td>
+					<uni-td width="15%" align="center">库存</uni-td>
+					<uni-td width="25%" align="center">仓库/仓位</uni-td>
+				</uni-tr>
+				<!-- 表格数据行 -->
+				<uni-tr v-for="item in listData" :key="item.productSn" @click="toDetail(item)">
+					<uni-td width="30%" align="center">{{item.productCode||'-'}}</uni-td>
+					<uni-td width="30%" align="center">{{item.dealerProductEntity.qrCode||'-'}}</uni-td>
+					<uni-td width="15%" align="center">{{item.currentQty}}</uni-td>
+					<uni-td width="25%" align="center">{{item.warehouseName}}/<view>{{item.warehouseLocationName}}</view></uni-td>
+				</uni-tr>
+			</uni-table>
 		</view>
 		
 		<scanCode></scanCode>
@@ -54,33 +37,27 @@
 
 <script>
 	import scanCode from '@/libs/scan-code.vue';
-	import { dealerProductTypeList , stockList } from '@/config/api'
-	import copyText from '@/pages/common/copyText.vue'
+	import { dealerProductTypeList , stockDetailList } from '@/config/api'
 	import { toThousands } from '@/libs/tools'
 	export default{
-		components: { scanCode, copyText },
+		components: { scanCode },
 		data(){
 			return {
 				form: {
 					productCode: '', //  产品编码
-					productQrCode: '', // 挑选
+					productQrCode: '', // 条形
 					productName: '', //  产品名称
-					productOrigCode: '', //  原厂编码
-					productBrandSn: undefined, //  产品品牌
-					productTypeSn1: undefined, //  产品分类1
-					productTypeSn2: undefined, //  产品分类2
-					productTypeSn3: undefined, //  产品分类3
-					zeroQtyFlag: false ,//  库存情况
-					enableFlag: true, // 显示禁用产品
-					minUnsalableDays: undefined, // 滞销天数最小值
-					maxUnsalableDays: undefined // 滞销天数最大值
+					enableFlag: true,
+					zeroQtyFlag: false,
+					minCurrentQty: 1
 				},
 				customBtnStyle: {  //  自定义按钮样式
 					backgroundColor: '#335fb6',
 					color: '#fff'
 				},
-				listData: null,
-				toThousands
+				listData: [],
+				toThousands,
+				loading: false
 			}
 		},
 		onLoad() {
@@ -88,17 +65,18 @@
 			uni.$on('scancodedate', function(content) {
 			  console.log("扫描到的内容为:", content)
 			  _this.form.productQrCode = content||''
-			  _this.handleSearch()
+			  if(content){
+				  _this.form.productCode = ''
+				  _this.form.productName = ''
+				  _this.handleSearch()
+			  }else{
+				  _this.$message("扫描失败,请重试!")
+			  }
 			})
 		},
 		onUnload() {
 			uni.$off('scancodedate')
 		},
-		onShow() {
-			// 是否默认包括禁用产品
-			const a = uni.getStorageSync('productEnabledFlag-' + this.$store.state.vuex_userData.orgId)
-			this.form.enableFlag = typeof a == 'boolean' ? a : true
-		},
 		methods: {
 			$message(msg){
 				uni.showToast({
@@ -111,34 +89,44 @@
 				this.form.productCode = ''
 				this.form.productQrCode = ''
 				this.form.productName = ''
-				this.form.productOrigCode = ''
-				this.form.productBrandSn = undefined
-				this.form.productTypeSn1 = undefined
-				this.form.productTypeSn2 = undefined
-				this.form.productTypeSn3 = undefined
-				this.form.zeroQtyFlag = false
-				this.form.minUnsalableDays = undefined // 滞销天数最小值
-				this.form.maxUnsalableDays = undefined // 滞销天数最大值
-				this.listData = null
+				this.listData = []
 			},
 			// 查询
 			handleSearch(){
-				let params = this.form
-				params.zeroQtyFlag = params.zeroQtyFlag ? '0' : ''
-				params.enableFlag = params.enableFlag ? '' : '1'
-				params.pageNo = 1
-				params.pageSize = 1
-				console.log(params)
-				stockList(params).then(res => {
-					console.log(res)
-					if(res.status == 200){
-						this.listData = res.data.list[0]
-					}
-					if(this.listData.length==0){
-						this.$message("没有查询到产品")
-					}
-				})
+				if(this.form.productQrCode||this.form.productCode||this.form.productName){
+					let params = {
+						minCurrentQty:1,
+						dealerProduct: {
+							"qrCode": this.form.productQrCode,
+							"code": this.form.productCode,
+							"name": this.form.productName
+						},
+						pageNo: 1,
+						pageSize: 100
+					} 
+					console.log(params)
+					this.loading = true
+					stockDetailList(params).then(res => {
+						console.log(res)
+						if(res.status == 200){
+							this.listData = res.data.list
+						}else{
+							this.listData = []
+							this.$message(res.message)
+						}
+						 
+						this.loading = false
+					})
+				}else{
+					this.$message("请输入查询条件")
+				}
 			},
+			toDetail(item){
+				this.$store.state.vuex_tempData = item
+				uni.navigateTo({
+					url: "/pages/stock/stockDetail"
+				})
+			}
 		}
 	}
 </script>
@@ -148,20 +136,6 @@
 		background: #f8f8f8;
 	}
 	.stock-wrap{
-		padding: 0 30upx;
-		.panel-box {
-			background-color: #ffffff;
-			padding: 20upx 20upx;
-			border-radius: 20upx;
-			.item-box{
-				text-align: center;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				font-size: 14px;
-			}
-			margin-bottom: 20upx;
-		}
 		.stock-con{
 			background-color: #ffffff;
 			padding: 20upx;
@@ -189,18 +163,11 @@
 				font-size: 30upx;
 			}
 		}
-		.stockDetail-info{
+		.p-body{
 			background-color: #ffffff;
-			padding: 10upx 20upx 20upx;
+			padding: 10upx 20upx;
 			border-radius: 20upx;
-			box-shadow: 3upx 2upx 6upx #eee;
-			.info-item{
-				border-bottom: 1px dashed #e4e7ed;
-				padding: 20upx 0;
-				.info-name{
-					color: #464646;
-				}
-			}
+			margin-top: 20upx;
 		}
 	}
 </style>

+ 54 - 29
pages/stock/stockDetail.vue

@@ -1,42 +1,40 @@
 <template>
 	<view class="stockDetail-wrap">
-		<view class="panel-box flex align_center justify_between">
-			<view class="pimgs">
-				<u-image :src="productData && productData.productMsg||`../../static/def_img@2x.png`" width="100" height="100" border-radius="10"></u-image>
-			</view>
-			<view class="info-con flex_1">
-				<view class="padding_7">{{productData && productData.productName || '--'}}</view>
-				<view>{{productData && productData.productCode || '--'}}</view>
+		<!-- 查询结果 -->
+		<view class="stockDetail-info" v-if="productData">
+			<view class="info-item flex align_center justify_between">
+				<view class="info-name">产品编码</view>
+				<view>{{productData && productData.dealerProductEntity.code || '--'}} <copyText :text="productData.dealerProductEntity.code" label="产品编码"></copyText></view>
 			</view>
-		</view>
-		<view class="stockDetail-info">
 			<view class="info-item flex align_center justify_between">
-				<view class="info-name">仓库</view>
-				<view>{{paramsData && paramsData.warehouseName || '--'}}</view>
+				<view class="info-name">产品名称</view>
+				<view style="width: 50%;">{{productData && productData.dealerProductEntity.name || '--'}} <copyText :text="productData.dealerProductEntity.name" label="产品名称"></copyText></view>
 			</view>
 			<view class="info-item flex align_center justify_between">
-				<view class="info-name">仓位</view>
-				<view>{{paramsData && paramsData.warehouseLocationName || '--'}}</view>
+				<view class="info-name">条形码</view>
+				<view>{{productData && productData.dealerProductEntity.qrCode || '--'}} <copyText :text="productData.dealerProductEntity.qrCode" label="条形码"></copyText></view>
 			</view>
 			<view class="info-item flex align_center justify_between">
-				<view class="info-name">入库时间</view>
-				<view>{{paramsData && paramsData.putTime || '--'}}</view>
+				<view class="info-name">库存数量</view>
+				<view>{{toThousands(productData.currentQty||0)}}{{productData.dealerProductEntity.unit}}</view>
 			</view>
 			<view class="info-item flex align_center justify_between">
-				<view class="info-name">入库类型</view>
-				<view>{{paramsData && paramsData.putBizTypeDictValue || '--'}}</view>
+				<view class="info-name">仓库/仓位</view>
+				<view style="width: 50%;">{{productData && productData.warehouseName || '--'}}>{{productData && productData.warehouseLocationName || '--'}}</view>
 			</view>
 			<view class="info-item flex align_center justify_between">
-				<view class="info-name">可用库存数量</view>
-				<view>{{toThousands(paramsData && paramsData.currentQty || 0)}}</view>
+				<view class="info-name">产品分类</view>
+				<view style="width: 50%;">{{productData.dealerProductEntity.productTypeName1 }} > {{productData.dealerProductEntity.productTypeName2 }} > {{productData.dealerProductEntity.productTypeName3 }} </view>
 			</view>
 			<view class="info-item flex align_center justify_between">
-				<view class="info-name">冻结库存数量</view>
-				<view>{{toThousands(paramsData && paramsData.freezeQty || 0)}}</view>
+				<view class="info-name">单位</view>
+				<view>{{productData && productData.dealerProductEntity.unit || '--'}}</view>
 			</view>
-			<view class="info-item flex align_center justify_between" v-if="$hasPermissions('M_showCostPrice_mobile')">
-				<view class="info-name">成本单价</view>
-				<view>¥{{toThousands(paramsData && paramsData.putCost || 0, 2)}}</view>
+			<view class="info-item flex align_center justify_between">
+				<view class="info-name">产品图片</view>
+				<view @click="viewImgs()">
+					<u-image :src="productData.productMainImage?productData.productMainImage:`../../static/def_img@2x.png`" width="80" height="80" border-radius="10"></u-image>
+				</view>
 			</view>
 		</view>
 	</view>
@@ -44,21 +42,48 @@
 
 <script>
 	import { toThousands } from '@/libs/tools'
+	import { stockfindGroupPage } from '@/config/api'
+	import copyText from '@/pages/common/copyText.vue'
 	export default{
+		components: { copyText },
 		data(){
 			return {
 				productData: null,
-				paramsData: null,
 				theme: '',
 				toThousands
 			}
 		},
 		onLoad(option) {
-			this.theme = getApp().globalData.theme
-			this.productData = option.productData ? JSON.parse(option.productData) : null
-			this.paramsData = option.data ? JSON.parse(option.data) : null
+			this.getData()
 		},
-		methods: {}
+		methods: {
+			getData(){
+				const data = this.$store.state.vuex_tempData
+				const params = {
+				     "productSn":data.productSn,
+					 "warehouseSn":data.warehouseSn,
+					 "warehouseLocationSn":data.warehouseLocationSn,
+					 "minCurrentQty":1
+				}
+				stockfindGroupPage(params).then(res => {
+					console.log(res.data)
+					if(res.status == 200){
+						this.productData = res.data
+					}
+				})
+			},
+			viewImgs(){
+				const imgUrls = []
+				this.productData.productPicList && this.productData.productPicList.map(item => {
+					imgUrls.push(item.imageUrl)
+				})
+				if(imgUrls.length){
+					uni.previewImage({
+						urls: imgUrls
+					})
+				}
+			}
+		}
 	}
 </script>
 

+ 0 - 268
pages/stock/stockSearch.vue

@@ -1,268 +0,0 @@
-<template>
-	<view class="stockSearch-wrap">
-		<!-- 统计 -->
-		<view class="panel-box" v-if="totalNum">
-			<view class="item-box">
-				<view>查询结果</view>
-				<view>{{toThousands(totalNum||0)}}条</view>
-			</view>
-			<view class="item-box">
-				<view>可用库存数量</view>
-				<view>{{toThousands(totalData&&totalData.totalCurrentStockQty||0)}}个</view>
-			</view>
-			<view class="item-box" v-if="$hasPermissions('M_showCostPrice_mobile')">
-				<view>可用库存成本</view>
-				<view>¥{{toThousands(totalData&&totalData.totalCurrentStockCost||0, 2)}}</view>
-			</view>
-		</view>
-		<!-- 查询结果 -->
-		<scroll-view class="stockSearch-con" scroll-y @scrolltolower="onreachBottom">
-			<view class="stockSearch-main">
-				<view class="stockSearch-main-item" v-for="(item, index) in listData" :key="item.id" @click.stop="getDetail(item)">
-					<view class="stockSearch-tit flex">
-						<view class="u-line" :style="{backgroundColor: '#00aaff'}"></view>
-						<view class="u-name">
-							{{item.productName}}
-						</view>
-						<view class="u-last">
-							<copyText :text="item.productName" label="产品名称"></copyText>
-						</view>
-					</view>
-					<view class="stockSearch-item-con flex align_center">
-						<view class="pimgs">
-							<u-image :src="item.productMsg?item.productMsg:`../../static/def_img@2x.png`" width="100" height="100" border-radius="10"></u-image>
-						</view>
-						<view class="flex_1">
-							<view>产品编码:{{item.productCode || '--'}} <copyText :text="item.productCode" label="产品编码"></copyText></view>
-							<view class="padding_3">原厂编码:{{item.productOrigCode && item.productOrigCode !== ' '? item.productOrigCode : '--'}}</view>
-						</view>
-					</view>
-					<view class="stockSearch-item-footer flex align_center">
-						<view class="font_13">
-							可用库存数量
-							<view>{{toThousands(item.currentStockQty||0)}}{{item.productUnit}}</view>
-						</view>
-						<view class="font_13" v-if="$hasPermissions('M_showCostPrice_mobile')">
-							可用库存成本
-							<view>¥{{toThousands(item.currentStockCost||0, 2)}}</view>
-						</view>
-						<!-- <view class="font_13">
-							滞销天数
-							<view>
-								<span v-if="item.unsalableDays>=180&&item.unsalableDays<=360" style="color:#FF9900">{{ num(item.unsalableDays) }}</span>
-								<span v-else-if="item.unsalableDays>360" style="color:#FF0000">{{ num(item.unsalableDays) }}</span>
-								<span v-else >{{ num(item.unsalableDays) }}</span>
-							</view>
-						</view> -->
-					</view>
-				</view>
-				<view v-if="listData&&listData.length==0">
-					<u-empty v-if="status!='loading'" :text="noDataText" mode="list" :margin-top="50"></u-empty>
-				</view>
-				<view style="padding: 20upx;" v-if="totalNum>pageSize || status=='loading'">
-					<u-loadmore :status="status" />
-				</view>
-			</view>
-		</scroll-view>
-	</view>
-</template>
-
-<script>
-	import { toThousands } from '@/libs/tools'
-	import { stockList, stockCount } from '@/config/api.js'
-	import copyText from '@/pages/common/copyText.vue'
-	export default{
-		components:{copyText},
-		data(){
-			return {
-				totalData: null,
-				totalNum: 0,
-				status: 'loading',
-				listData: [],
-				pageNo: 1,
-				pageSize: 50,
-				params: {},
-				noDataText: '暂无数据',
-				theme: '',
-				toThousands
-			}
-		},
-		onLoad(option) {
-			this.theme = getApp().globalData.theme
-			this.params = option.data ? JSON.parse(option.data) : {}
-			this.getList()
-		},
-		methods: {
-			// 格式化滞销天数为几个月零几天
-			num (val) {
-			  let days
-			  if (val != null && val != undefined) {
-			    if (val >= 30) {
-			      const a = Math.floor(val / 30)
-			      const b = val - a * 30
-			      if (b > 0) {
-			        days = a + '个月' + b + '天'
-			      } else {
-			        days = a + '个月'
-			      }
-			    } else {
-			      days = val + '天'
-			    }
-			  } else {
-			    days = '--'
-			  }
-			  return days
-			},
-			// 列表
-			getList(pageNo){
-				const _this = this
-				if (pageNo) {
-					this.pageNo = pageNo
-				}
-				this.status = 'loading'
-				let params = Object.assign(this.params, { pageNo: this.pageNo, pageSize: this.pageSize })
-				stockList(params).then(res => {
-					this.getTotal(params)
-					if(res.status == 200){
-						let list = res.data.list
-						if (list && list.length){
-							// 分页 拼接数据
-							if (_this.pageNo != 1) {
-								_this.listData = _this.listData ? _this.listData.concat(list) : list
-							} else {
-								_this.listData = list
-							}
-							this.totalNum = res.data.count
-							if (_this.listData.length == res.data.count) {
-								_this.status = 'nomore'
-							} else {
-								_this.status = 'loadmore'
-							}
-						} else {
-							_this.listData = list || []
-							this.totalNum = 0
-							_this.status = 'nomore'
-						}
-						_this.noDataText = '暂无数据'
-					}else{
-						_this.status = 'loadmore'
-						_this.listData = []
-						_this.totalNum = 0
-						_this.noDataText = res.message ? res.message : '网络似乎出错了,请稍后再试'
-					}
-				})
-			},
-			// 合计
-			getTotal (params) {
-				stockCount(params).then(res => {
-					if (res.status == 200 && res.data) {
-						this.totalData = res.data
-					} else {
-						this.totalData = null
-					}
-				})
-			},
-			// scroll-view到底部加载更多
-			onreachBottom() {
-				if(this.listData.length < this.totalNum){
-					this.pageNo += 1
-					this.getList()
-				}else{
-					this.status = "nomore"
-				}
-			},
-			// 详情
-			getDetail(data){
-				uni.navigateTo({ url: "/pages/stock/detaiList?data="+JSON.stringify(data) })
-			}
-		}
-	}
-</script>
-
-<style lang="less">
-	page{
-		background: #f8f8f8;
-	}
-	.stockSearch-wrap{
-		width: 100%;
-		height: 100vh;
-		.panel-box {
-			background-color: #ffffff;
-			margin: 25upx;
-			padding: 20upx 0;
-			.item-box{
-				padding: 5upx 30upx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-			}
-			.item-box:last-child{
-				border-bottom: none;
-			}
-		}
-		.stockSearch-con{
-			height: calc(100vh - 138upx);
-			.stockSearch-main{
-				.stockSearch-main-item{
-					background: #ffffff;
-					padding: 20upx;
-					margin: 25upx;
-					border-radius: 20upx;
-					box-shadow: 3upx 2upx 6upx #eee;
-					&:first-child{
-						margin-top: 0;
-					}
-					.stockSearch-tit{
-						font-size: 14px;
-						padding-bottom: 20upx;
-						font-weight: 900;
-						// white-space: nowrap;
-						// overflow: hidden;
-						// text-overflow: ellipsis;
-						.u-line{
-							display: inline-block;
-							width: 6upx;
-							height: 30upx;
-							margin: 6upx 10upx 0 10upx;
-							border-radius: 5upx;
-						}
-						.u-name{
-							flex-grow: 1;
-							width: 80%;
-						}
-						.u-last{
-							width: 100upx;
-							text-align: center;
-						}
-					}
-					.stockSearch-item-con{
-						padding: 20upx;
-						font-size: 14px;
-						.pimgs{
-							margin-right: 16upx;
-						}
-						.padding_3{
-							padding: 6upx 0;
-							word-break: break-all;
-						}
-					}
-					.stockSearch-item-footer{
-						border-top: 2upx solid #eee;
-						.font_13{
-							width: 49%;
-							font-size: 14px;
-							text-align: center;
-							border-left: 2upx solid #eee;
-							padding-top: 20upx;
-							&:first-child{
-								border: 0;
-							}
-						}
-					}
-				}
-			}
-			
-			
-		}
-	}
-</style>

+ 0 - 136
pages/stock/warehouseDetail.vue

@@ -1,136 +0,0 @@
-<template>
-	<view class="warehouseDetail-wrap">
-		<view class="panel-box flex align_center justify_between">
-			<view class="pimgs">
-				<u-image :src="productData && productData.productMsg||`../../static/def_img@2x.png`" width="100" height="100" border-radius="10"></u-image>
-			</view>
-			<view class="info-con flex_1">
-				<view>{{productData && productData.productCode || '--'}}</view>
-				<view class="padding_7">{{productData && productData.productName || '--'}}</view>
-			</view>
-		</view>
-		<view class="warehouseDetail-info">
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">变动类型</view>
-				<view v-if="paramsData && paramsData.flowType">{{paramsData.flowType=='OUT'?'出库':paramsData.flowType=='PUT'?'入库':'--'}}</view>
-				<view v-else>--</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">变动数量</view>
-				<view v-if="paramsData && paramsData.flowType && paramsData.flowType=='PUT'">
-					<view style="color: green;display: inline-block">
-						<text v-if="paramsData && paramsData.putQty && paramsData.putQty!=0">+</text>{{ toThousands(paramsData && paramsData.putQty||0) }}
-					</view>
-					{{paramsData && paramsData.product && paramsData.product.unit}}
-				</view>
-				<view v-if="paramsData && paramsData.flowType && paramsData.flowType=='OUT'">
-					<view style="color: red;display: inline-block">
-						<text v-if="paramsData && paramsData.outQty && paramsData.outQty!=0">-</text>{{ toThousands(paramsData && paramsData.outQty||0) }}
-					</view>
-					{{paramsData && paramsData.product && paramsData.product.unit}}
-				</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">单据类型</view>
-				<view>{{paramsData && paramsData.bizTypeDictValue || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">单据审核时间</view>
-				<view>{{paramsData && paramsData.auditTime || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">单位名称</view>
-				<view v-if="paramsData">
-					<text v-if="paramsData.unitType&&paramsData.unitType=='CUSTOMER'">{{ paramsData.unitNameCurrent||'--' }}</text>
-					<text v-else>{{ paramsData.unitName||'--' }}</text>
-				</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">批次号</view>
-				<view>{{paramsData && paramsData.stockBatchNo || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">关联单据号</view>
-				<view>{{paramsData && paramsData.bizNo || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">仓库</view>
-				<view>{{paramsData && paramsData.warehouseName || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">仓位</view>
-				<view>{{paramsData && paramsData.warehouseLocationName || '--'}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between" v-if="$hasPermissions('M_showCostPrice_mobile')">
-				<view class="info-name">总成本</view>
-				<view>¥{{toThousands(paramsData && paramsData.totalCost || 0, 2)}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">总售价</view>
-				<view>¥{{toThousands(paramsData && paramsData.totalPrice || 0, 2)}}</view>
-			</view>
-			<view class="info-item flex align_center justify_between">
-				<view class="info-name">出入库状态</view>
-				<view>{{paramsData && paramsData.stateDictValue || '--'}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import { toThousands } from '@/libs/tools'
-	export default{
-		data(){
-			return {
-				productData: null,
-				paramsData: null,
-				theme: '',
-				toThousands
-			}
-		},
-		onLoad(option) {
-			this.theme = getApp().globalData.theme
-			this.productData = option.productData ? JSON.parse(option.productData) : null
-			this.paramsData = option.data ? JSON.parse(option.data) : null
-		},
-		methods: {}
-	}
-</script>
-
-<style lang="scss">
-	page{
-		background: #f8f8f8;
-	}
-	.warehouseDetail-wrap{
-		padding: 30upx;
-		.panel-box {
-			background-color: #ffffff;
-			padding: 20upx 20upx;
-			border-radius: 20upx;
-			box-shadow: 3upx 2upx 6upx #eee;
-			margin-bottom: 30upx;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			.info-con{
-				margin-left: 20upx;
-				.padding_7{
-					padding: 14upx 0 0;
-				}
-			}
-		}
-		.warehouseDetail-info{
-			background-color: #ffffff;
-			padding: 10upx 20upx 20upx;
-			border-radius: 20upx;
-			box-shadow: 3upx 2upx 6upx #eee;
-			.info-item{
-				border-bottom: 1px dashed #e4e7ed;
-				padding: 20upx 0;
-				.info-name{
-					color: #464646;
-				}
-			}
-		}
-	}
-</style>

+ 98 - 29
pages/stockOut/chainTransferOut/index.vue

@@ -2,45 +2,75 @@
 	<view class="p-content">
 		<view class="p-head" v-if="baseData">
 			<view>
-				<text>连锁调出单号:</text>
-				<text style="color: crimson;">{{baseData.allocationLinkageOutNo}}</text>
-			</view>
-			<view>
-				<text>条码:</text>
 				<view>
-					<input
-					:focus="true"
-					@blur="queryProduct"
-					style="width: 100%;text-align: left;" 
-					class="uni-input" 
-					placeholder="扫描或输入条码" 
-					border="surround" 
-					v-model="code">
+					<text>连锁调出单号:</text>
+					<text style="color: crimson;">{{baseData.allocationLinkageOutNo}}</text>
+				</view>
+				<view>
+					<button :disabled="loading" size="mini" type="primary" @click="toOut"> 出库 <text class="iconfont icon-icon-test43"></text></button>
 				</view>
 			</view>
+			 <view>
+			 	<text>条形码:</text>
+			 	<view>
+			 		<input
+			 		@blur="addQty(true)"
+			 		style="width: 100%;text-align: left;" 
+			 		class="uni-input" 
+			 		placeholder="扫描或输入条形码" 
+			 		border="surround" 
+			 		v-model="code">
+			 	</view>
+			 </view>
+			 <view>
+			 	<text>产品编码:</text>
+			 	<view>
+			 		<input
+			 		@blur="addQty(true)"
+			 		style="width: 100%;text-align: left;" 
+			 		class="uni-input" 
+			 		placeholder="请输入产品编码" 
+			 		border="surround" 
+			 		v-model="productCode">
+			 	</view>
+			 </view>
+			 <view style="justify-content: flex-start;flex-wrap: wrap;">
+			 	<view>已拣款数: <text style="color: red;">{{baseData.pickCategory||0}}</text>/{{baseData.productTotalCategory}}</view>
+			 	<view>已拣数量: <text style="color: red;">{{baseData.pickQty||0}}</text>/{{baseData.productTotalQty}}</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-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">
-					<uni-td width="30%" align="center">{{item.dealerProductEntity.code}}</uni-td>
-					<uni-td width="30%" align="center">{{item.dealerProductEntity.name}}</uni-td>
-					<uni-td width="20%" align="center">{{item.outQty}}</uni-td>
-					<uni-td width="20%" align="center">
-						<text :style="{color:item.pickFlag==1?'green':'red'}">{{item.pickFlag==1?'已拣货':'未拣货'}}</text>
+				<uni-tr 
+				v-for="item in detailList" 
+				:key="item.id" 
+				:checkedRow="curProduct&&(item.dealerProductEntity.code == curProduct.dealerProductEntity.code)">
+					<uni-td width="30%" align="center">
+						<view @click="copyText(item.dealerProductEntity.code)">{{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>
+					<uni-td width="15%" align="center">
+						<view style="display: flex;justify-content: center;">
+							<u-icon v-if="item.pickFlag==0" name="close-circle-fill" color="red" size="22"></u-icon>
+							<u-icon v-if="item.pickFlag==1" name="checkmark-circle-fill" color="green" size="22"></u-icon>
+							<u-icon v-if="item.pickFlag==2" name="info-circle-fill" color="#ffaa00" size="22"></u-icon>
+						</view>
 					</uni-td>
 				</uni-tr>
 			</uni-table>
 		</view>
 		<view class="p-footer">
-			<button :disabled="loading" size="mini" type="primary" @click="toOut"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+			<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>
 	</view>
@@ -50,6 +80,7 @@
 	import scanCode from '@/libs/scan-code.vue';
 	import { allocLinkageOutDetail, allocLinkageOutDetailList, allocLinkageOutPick, allocLinkageOutStock } from '@/config/api.js'
 	import { playAudio } from '@/libs/tools.js'
+	import clipboard from "@/js_sdk/dc-clipboard/clipboard.js"
 	export default {
 		components: { scanCode },
 		data() {
@@ -58,6 +89,7 @@
 				baseData: null,
 				detailList:[],
 				code:'',
+				productCode: '',
 				allocationLinkageOutSn: null,
 				salesId: null,
 				curProduct: null
@@ -73,7 +105,7 @@
 		  uni.$on('scancodedate', function(content) {
 			  console.log("扫描到的内容为:", content)
 			  _this.code = content||''
-			  _this.queryProduct()
+			  _this.addQty(true)
 		  })
 		},
 		onUnload() {
@@ -86,14 +118,52 @@
 			hideKeyborder(){
 				uni.hideKeyboard()
 			},
+			// 复制
+			copyText(text){
+				clipboard.setText(text);
+				uni.showToast({
+					icon: 'none',
+					title: '编码已复制成功'
+				})
+			},
+			getCurProduct(){
+				const curProduct = this.detailList.find(item => item.dealerProductEntity.qrCode == this.code || item.dealerProductEntity.code == this.productCode)
+				this.curProduct = curProduct || null
+				return curProduct || null
+			},
+			addQty(flag){
+				const curProduct = this.getCurProduct()
+				if(curProduct){
+					if(curProduct.pickFlag != 1 || !flag){
+						this.queryProduct((curProduct.pickQty||0)+1*(flag?1:-1))
+					}else{
+						uni.$u.toast("此商品已全部拣货")
+						playAudio('warn')
+					}
+				}else{
+					if(this.code == '' && this.productCode == ''){
+						uni.$u.toast("请扫描条形码或输入编码")
+					}else{
+						uni.$u.toast("此商品不存在")
+					}
+					playAudio('warn')
+				}
+			},
 			//拣货
-			queryProduct(){
-				if(this.code==''){return}
+			queryProduct(pickQty){
 				this.loading = true
-				allocLinkageOutPick({allocationLinkageOutSn: this.allocationLinkageOutSn, productQrCode: this.code}).then(res => {
+				const params = {
+					allocationLinkageOutSn: this.allocationLinkageOutSn, 
+					productQrCode: this.code,
+					productCode: this.productCode,
+					pickQty: pickQty
+				}
+				console.log(params)
+				allocLinkageOutPick(params).then(res => {
 					console.log(res)
 					if(res.status == 200){
 						if(res.data){
+							this.getDetail()
 							this.getDetailList()
 						}else{
 							uni.$u.toast("此商品不存在")
@@ -118,8 +188,7 @@
 					console.log(res,'产品明细列表')
 					if(res.status == 200){
 						this.detailList = res.data.list
-						const curProduct = this.detailList.find(item => item.qrCode == this.code)
-						this.curProduct = curProduct || null
+						this.getCurProduct()
 					}
 				})
 			},

+ 1 - 1
pages/stockOut/chainTransferOut/list.vue

@@ -21,7 +21,7 @@
 		<view v-if="list.length==0&&status != 'loading'">
 			<u-empty :iconSize="60" text="暂无连锁调出单" :marginTop="100" mode="history"></u-empty>
 		</view>
-		<view style="padding: 30rpx 0;">
+		<view style="padding: 30rpx 0;" v-if="status == 'loading'">
 			<u-loadmore :status="status" />
 		</view>
 	</u-cell-group>

+ 81 - 34
pages/stockOut/salesOut/index.vue

@@ -2,28 +2,41 @@
 	<view class="p-content">
 		<view class="p-head" v-if="baseData">
 			<view>
-				<text>销售单号:</text>
-				<text style="color: crimson;">{{baseData.salesBillNo}}</text>
+				<view>
+					<text>销售单号:</text>
+					<text style="color: crimson;">{{baseData.salesBillNo}}</text>
+				</view>
+				<view>
+					<button :disabled="loading" size="mini" type="primary" @click="toOut"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+				</view>
 			</view>
 			<view>
-				<text>条码:</text>
+				<text>条码:</text>
 				<view>
 					<input
-					@blur="queryProduct"
+					@blur="addQty(true)"
 					style="width: 100%;text-align: left;" 
 					class="uni-input" 
-					placeholder="扫描或输入条码" 
+					placeholder="扫描或输入条码" 
 					border="surround" 
 					v-model="code">
 				</view>
 			</view>
-			<view style="justify-content: flex-start;flex-wrap: wrap;">
-				<view>总款数:123</view>
-				<view>已拣款数: 50</view>
+			<view>
+				<text>产品编码:</text>
+				<view>
+					<input
+					@blur="addQty(true)"
+					style="width: 100%;text-align: left;" 
+					class="uni-input" 
+					placeholder="请输入产品编码" 
+					border="surround" 
+					v-model="productCode">
+				</view>
 			</view>
 			<view style="justify-content: flex-start;flex-wrap: wrap;">
-				<view>总数量: 150</view>
-				<view>已拣数量: 70</view>
+				<view>已拣款数: <text style="color: red;">{{baseData.pickCategory}}</text>/{{baseData.totalCategory}}</view>
+				<view>已拣数量: <text style="color: red;">{{baseData.pickQty}}</text>/{{baseData.totalQty}}</view>
 			</view>
 		</view>
 		<view class="p-body">
@@ -36,22 +49,28 @@
 					<uni-td align="center">拣货</uni-td>
 				</uni-tr>
 				<!-- 表格数据行 -->
-				<uni-tr v-for="item in detailList" :key="item.id" :checkedRow="curProduct&&curProduct.qrCode == item.qrCode">
-					<uni-td width="30%" align="center">{{item.dealerProductEntity.code}}</uni-td>
-					<uni-td width="30%" align="center">{{item.dealerProductEntity.productTypeName2}}</uni-td>
-					<uni-td width="25%" align="center"><text style="color: red;">{{item.qty}}</text>/{{item.qty}}</uni-td>
+				<uni-tr 
+				v-for="item in detailList" 
+				:key="item.id" 
+				:checkedRow="curProduct&&(item.dealerProductEntity.code == curProduct.dealerProductEntity.code)">
+					<uni-td width="30%" align="center">
+						<view @click="copyText(item.dealerProductEntity.code)">{{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>
 					<uni-td width="15%" align="center">
-						<!-- <text :style="{color:item.pickFlag==1?'green':'red'}">{{item.pickFlag==1?'已拣货':'未拣货'}}</text> -->
 						<view style="display: flex;justify-content: center;">
 							<u-icon v-if="item.pickFlag==0" name="close-circle-fill" color="red" size="22"></u-icon>
 							<u-icon v-if="item.pickFlag==1" name="checkmark-circle-fill" color="green" size="22"></u-icon>
+							<u-icon v-if="item.pickFlag==2" name="info-circle-fill" color="#ffaa00" size="22"></u-icon>
 						</view>
 					</uni-td>
 				</uni-tr>
 			</uni-table>
 		</view>
 		<view class="p-footer">
-			<button :disabled="loading" size="mini" type="primary" @click="toOut"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+			<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>
 	</view>
@@ -61,6 +80,7 @@
 	import scanCode from '@/libs/scan-code.vue';
 	import { salesDetail, salesDetailList, salesPick, salesWriteStockOut, salesWriteNoStockOut } from '@/config/api.js'
 	import { playAudio } from '@/libs/tools.js'
+	import clipboard from "@/js_sdk/dc-clipboard/clipboard.js"
 	export default {
 		components: { scanCode },
 		data() {
@@ -69,6 +89,7 @@
 				baseData: null,
 				detailList:[],
 				code:'',
+				productCode: '',
 				salesBillSn: null,
 				salesId: null,
 				curProduct: null
@@ -84,7 +105,7 @@
 		  uni.$on('scancodedate', function(content) {
 			  console.log("扫描到的内容为:", content)
 			  _this.code = content||''
-			  _this.queryProduct()
+			  _this.addQty(true)
 		  })
 		},
 		onShow() {
@@ -94,17 +115,55 @@
 			uni.$off('scancodedate')
 		},
 		methods: {
+			// 复制
+			copyText(text){
+				clipboard.setText(text);
+				uni.showToast({
+					icon: 'none',
+					title: '编码已复制成功'
+				})
+			},
 			hideKeyborder(){
 				uni.hideKeyboard()
 			},
+			getCurProduct(){
+				const curProduct = this.detailList.find(item => item.dealerProductEntity.qrCode == this.code || item.dealerProductEntity.code == this.productCode)
+				this.curProduct = curProduct || null
+				return curProduct || null
+			},
+			addQty(flag){
+				const curProduct = this.getCurProduct()
+				if(curProduct){
+					if(curProduct.pickFlag != 1 || !flag){
+						this.queryProduct((curProduct.pickQty||0)+1*(flag?1:-1))
+					}else{
+						uni.$u.toast("此商品已全部拣货")
+						playAudio('warn')
+					}
+				}else{
+					if(this.code == '' && this.productCode == ''){
+						uni.$u.toast("请扫描条形码或输入编码")
+					}else{
+						uni.$u.toast("此商品不存在")
+					}
+					playAudio('warn')
+				}
+			},
 			//拣货
-			queryProduct(){
-				if(this.code==''){return}
+			queryProduct(pickQty){
 				this.loading = true
-				salesPick({salesBillSn: this.salesBillSn, productQrCode: this.code}).then(res => {
+				const params = {
+					salesBillSn: this.salesBillSn, 
+					productQrCode: this.code,
+					productCode: this.productCode,
+					pickQty: pickQty
+				}
+				console.log(params)
+				salesPick(params).then(res => {
 					console.log(res)
 					if(res.status == 200){
 						if(res.data){
+							this.getDetail()
 							this.getDetailList()
 						}else{
 							uni.$u.toast("此商品不存在")
@@ -128,23 +187,10 @@
 				salesDetailList({pageNo:1,pageSize:1000,salesBillSn:this.salesBillSn,orderBy: 'sales_bill_detail.CREATE_DATE desc'}).then(res => {
 					if(res.status == 200){
 						this.detailList = res.data.list
-						const curProduct = this.detailList.find(item => item.qrCode == this.code)
-						this.curProduct = curProduct || null
+						this.getCurProduct()
 					}
 				})
 			},
-			// 未捡货出库
-			toNoOut(){
-				const _this = this
-				uni.showModal({
-					title: '提示',
-					content: '确定未拣货出库?',
-					success: function (res) {
-						if (res.confirm) {
-						}
-					}
-				});
-			},
 			// 出库
 			async toOut(){
 				const ret = await salesWriteStockOut({salesBillSn: this.salesBillSn})
@@ -167,6 +213,7 @@
 				align-items: center;
 				padding: 10upx 20upx;
 				border-bottom: 1px solid #eee;
+				justify-content: space-between;
 				> view{
 					display: flex;
 					padding: 0 10upx;

+ 92 - 22
pages/stockOut/storeTransferOut/index.vue

@@ -2,45 +2,75 @@
 	<view class="p-content">
 		<view class="p-head" v-if="baseData">
 			<view>
-				<text>店内调出单号:</text>
-				<text style="color: crimson;">{{baseData.storeCallOutNo}}</text>
+				<view>
+					<text>店内调出单号:</text>
+					<text style="color: crimson;">{{baseData.storeCallOutNo}}</text>
+				</view>
+				<view>
+					<button :disabled="loading" size="mini" type="primary" @click="toOut"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+				</view>
 			</view>
 			<view>
-				<text>条码:</text>
+				<text>条码:</text>
 				<view>
 					<input
-					:focus="true"
-					@blur="queryProduct"
+					@blur="addQty(true)"
 					style="width: 100%;text-align: left;" 
 					class="uni-input" 
-					placeholder="扫描或输入条码" 
+					placeholder="扫描或输入条码" 
 					border="surround" 
 					v-model="code">
 				</view>
 			</view>
+			<view>
+				<text>产品编码:</text>
+				<view>
+					<input
+					@blur="addQty(true)"
+					style="width: 100%;text-align: left;" 
+					class="uni-input" 
+					placeholder="请输入产品编码" 
+					border="surround" 
+					v-model="productCode">
+				</view>
+			</view>
+			<view style="justify-content: flex-start;flex-wrap: wrap;">
+				<view>已拣款数: <text style="color: red;">{{baseData.pickCategory||0}}</text>/{{baseData.productTotalCategory}}</view>
+				<view>已拣数量: <text style="color: red;">{{baseData.pickQty||0}}</text>/{{baseData.productTotalQty}}</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-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">
-					<uni-td width="30%" align="center">{{item.productCode}}</uni-td>
-					<uni-td width="30%" align="center">{{item.productName}}</uni-td>
-					<uni-td width="20%" align="center">{{item.outQty}}</uni-td>
-					<uni-td width="20%" align="center">
-						<text :style="{color:item.pickFlag==1?'green':'red'}">{{item.pickFlag==1?'已拣货':'未拣货'}}</text>
+				<uni-tr 
+				v-for="item in detailList" 
+				:key="item.id" 
+				:checkedRow="curProduct&&(item.productCode == curProduct.productCode)">
+					<uni-td width="30%" align="center">
+						<view @click="copyText(item.productCode)">{{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>
+					<uni-td width="15%" align="center">
+						<view style="display: flex;justify-content: center;">
+							<u-icon v-if="item.pickFlag==0" name="close-circle-fill" color="red" size="22"></u-icon>
+							<u-icon v-if="item.pickFlag==1" name="checkmark-circle-fill" color="green" size="22"></u-icon>
+							<u-icon v-if="item.pickFlag==2" name="info-circle-fill" color="#ffaa00" size="22"></u-icon>
+						</view>
 					</uni-td>
 				</uni-tr>
 			</uni-table>
 		</view>
 		<view class="p-footer">
-			<button :disabled="loading" size="mini" type="primary" @click="toOut"> 出库 <text class="iconfont icon-icon-test43"></text></button>
+			<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>
 	</view>
@@ -50,6 +80,7 @@
 	import scanCode from '@/libs/scan-code.vue';
 	import { storeCallOutDetail, storeCallOutDetailList, storeCallOutPick, storeCallOutOut } from '@/config/api.js'
 	import { playAudio } from '@/libs/tools.js'
+	import clipboard from "@/js_sdk/dc-clipboard/clipboard.js"
 	export default {
 		components: { scanCode },
 		data() {
@@ -58,6 +89,7 @@
 				baseData: null,
 				detailList:[],
 				code:'',
+				productCode: '',
 				storeCallOutSn: null,
 				storeCallOutId: null,
 				curProduct: null
@@ -73,7 +105,7 @@
 		  uni.$on('scancodedate', function(content) {
 			  console.log("扫描到的内容为:", content)
 			  _this.code = content||''
-			  _this.queryProduct()
+			  _this.addQty(true)
 		  })
 		},
 		onUnload() {
@@ -86,14 +118,52 @@
 			hideKeyborder(){
 				uni.hideKeyboard()
 			},
+			// 复制
+			copyText(text){
+				clipboard.setText(text);
+				uni.showToast({
+					icon: 'none',
+					title: '编码已复制成功'
+				})
+			},
+			getCurProduct(){
+				const curProduct = this.detailList.find(item => item.productQrCode == this.code || item.productCode == this.productCode)
+				this.curProduct = curProduct || null
+				return curProduct || null
+			},
+			addQty(flag){
+				const curProduct = this.getCurProduct()
+				if(curProduct){
+					if(curProduct.pickFlag != 1 || !flag){
+						this.queryProduct((curProduct.pickQty||0)+1*(flag?1:-1))
+					}else{
+						uni.$u.toast("此商品已全部拣货")
+						playAudio('warn')
+					}
+				}else{
+					if(this.code == '' && this.productCode == ''){
+						uni.$u.toast("请扫描条形码或输入编码")
+					}else{
+						uni.$u.toast("此商品不存在")
+					}
+					playAudio('warn')
+				}
+			},
 			//拣货
-			queryProduct(){
-				if(this.code==''){return}
+			queryProduct(pickQty){
 				this.loading = true
-				storeCallOutPick({storeCallOutSn: this.storeCallOutSn, productQrCode: this.code}).then(res => {
+				const params = {
+					storeCallOutSn: this.storeCallOutSn, 
+					productQrCode: this.code,
+					productCode: this.productCode,
+					pickQty: pickQty
+				}
+				console.log(params)
+				storeCallOutPick(params).then(res => {
 					console.log(res)
 					if(res.status == 200){
 						if(res.data){
+							this.getDetail()
 							this.getDetailList()
 						}else{
 							uni.$u.toast("此商品不存在")
@@ -118,8 +188,7 @@
 					console.log(res)
 					if(res.status == 200){
 						this.detailList = res.data.list
-						const curProduct = this.detailList.find(item => item.qrCode == this.code)
-						this.curProduct = curProduct || null
+						this.getCurProduct()
 					}
 				})
 			},
@@ -145,6 +214,7 @@
 				align-items: center;
 				padding: 10upx 20upx;
 				border-bottom: 1px solid #eee;
+				justify-content: space-between;
 				> view{
 					display: flex;
 					padding: 0 10upx;

+ 1 - 1
pages/stockOut/storeTransferOut/list.vue

@@ -21,7 +21,7 @@
 		<view v-if="list.length==0&&status != 'loading'">
 			<u-empty :iconSize="60" text="暂无店内调出单" :marginTop="100" mode="history"></u-empty>
 		</view>
-		<view style="padding: 30rpx 0;">
+		<view style="padding: 30rpx 0;" v-if="status == 'loading'">
 			<u-loadmore :status="status" />
 		</view>
 	</u-cell-group>

+ 1 - 1
pages/stockPan/index.vue

@@ -185,7 +185,7 @@
 			// 查询产品
 			queryProduct(){
 				if(!this.code&&!this.productCode){
-					uni.$u.toast("未识别到条形码!")
+					uni.$u.toast("请输入条形码或编码!")
 					playAudio('error')
 					return
 				}

+ 8 - 6
pages/stockPan/viewDetail.vue

@@ -14,12 +14,6 @@
 						{{baseData.checkTypeDictValue}}
 					</view>
 				</view>
-				<view>
-					<text>创建人:</text>
-					<view>
-						{{baseData.creatorName}}
-					</view>
-				</view>
 			</view>
 			 <view>
 				 <view>
@@ -29,6 +23,14 @@
 				 	</view>
 				 </view>
 			 </view>
+			 <view>
+			 	<view>
+			 		<text>创建人:</text>
+			 		<view>
+			 			{{baseData.creatorName}}
+			 		</view>
+			 	</view>
+			 </view>
 			 <view>
 			 	<view>
 			 		<text>创建时间:</text>

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

@@ -12,9 +12,9 @@
 		<!-- #ifndef H5 -->
 		<view class="uni-table" :style="{ 'min-width': minWidth + 'px' }" :class="{ 'table--stripe': stripe }">
 			<slot></slot>
-			<view v-if="noData" class="uni-table-loading">
+			<!-- <view v-if="noData" class="uni-table-loading">
 				<view class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</view>
-			</view>
+			</view> -->
 			<view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }"><div class="uni-table--loader"></div></view>
 		</view>
 		<!-- #endif -->

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 1
unpackage/dist/dev/app-plus/app-config-service.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
unpackage/dist/dev/app-plus/app-service.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 660 - 232
unpackage/dist/dev/app-plus/app-view.js


Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott