فهرست منبع

前端 小程序 sdy

zhongtianhaoyuan 3 سال پیش
والد
کامیت
06d5d9cabd

+ 1 - 0
pageA/product/detail.vue

@@ -1,4 +1,5 @@
 <template>
 <template>
+	<!--采购详情-->
 	<view class="container">
 	<view class="container">
 		<view class="back-btn cuIcon-back" @click="navBack"></view>
 		<view class="back-btn cuIcon-back" @click="navBack"></view>
 		<view class='title1'>采购详情</view>
 		<view class='title1'>采购详情</view>

+ 564 - 0
pageA/product/sale_trade.vue

@@ -0,0 +1,564 @@
+<template>
+	
+	<view class="container">
+		<view class="detail-desc">
+			<view class="c-list">
+				<view class="c-row b-b">
+					<text class="tit">卖方</text>
+					<view class="con-list">
+						<view v-if='goods.customerTypeFlag==1' class="title">{{goods.customerName}}</view>
+						<view v-if='goods.customerTypeFlag==2' class="title">{{goods.compName}}</view>
+					</view>
+				</view>
+				<view class="c-row">
+					<text class="tit">买方</text>
+					<view class="con-list">
+						<view class="title">{{seller}}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="detail-desc">
+			<view class="c-list">
+				<view class="c-row b-b">
+					<text class="tit">收货地区</text>
+					<view class="con-list">
+						<view  class="title">{{receivePrivate}}{{receiveCity}}{{receiveArea}}</view>
+					</view>
+				</view>
+				<view v-if='pcFlag==1' class="c-row  b-b">
+					<text class="tit">收货库</text>
+					<view class="con-list">
+						<view class="title">{{receiveWarehouse}}</view>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">货名</text>
+					<view class="con-list">
+						<view class="title">{{goodsName}}</view>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">最小成交量(吨)</text>
+					<view class="con-list">
+						<view class="title">{{minimumVolume}}</view>
+					</view>
+				</view>
+				<view class="c-row">
+					<text class="tit">今日基差(元/吨)</text>
+					<view class="con-list">
+						<view class="title">{{basisPrice}}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="detail-desc">
+			<view class="c-list">
+				<view class="c-row  b-b">
+					<text class="tit">发票类型</text>
+					<picker style="text-align:right;" @change="InvoiceTypeChange1" :value="invoiceTypeIndex1" :range="invoiceType1">
+						<view class="picker">
+							{{invoiceTypeIndex1>-1?invoiceType1[invoiceTypeIndex1]:'请选择'}}
+						</view>
+					</picker>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">出售数量(吨)<text style='color:#FC3535;'>*</text></text>
+					<view class="con-list">
+						<input v-model='list.transactionsNumber' type="digit">
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">发票类型</text>
+					<picker style="text-align:right;" @change="packingChange" :value="packingIndex" :range="packingType">
+						<view class="picker">
+							{{packingIndex>-1?packingType[packingIndex]:'请选择'}}
+						</view>
+					</picker>
+				</view>
+				<view class='b-b' style='padding:10px 15px;'>
+					<text class="tit">袋装备注</text>
+					<view style='position:relative;' class='con-list'>
+						<textarea maxlength='30' v-model='list.baggingNotes' placeholder="请输入袋装备注,如王中王彩袋,49公斤,大粒" class='textarea' name="" id=""  cols="30" rows="3"></textarea>
+					<text style='position:absolute;right:0;bottom:2px;'>{{list.baggingNotes.length}}/30个字</text>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">点价(元/吨)<text style='color:#FC3535;'>*</text></text>
+					<view class="con-list">
+						<input v-model='list.pointPrice' placeholder="请输入出售数量" type="digit">
+					</view>
+				</view>
+				<view  v-if='invoiceTypeIndex1==0&&goods.customerTypeFlag==1' class="c-row b-b">
+					<text class="tit">发票费用(元/吨)</text>
+					<view class="con-list">
+						<input disabled value='-20' placeholder="请输入出售数量" type="digit">
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">包装费(元/吨)</text>
+					<view class="con-list">
+						<input v-model='list.packingFee' placeholder="请输入包装费" type="digit">
+					</view>
+				</view>
+				<view  style='padding:10px 15px;'>
+					<view class='flex justify-between'>
+						<text class="tit">结算价格(元/吨)</text>
+						<view class="con-list">
+							<input disabled v-model='list.settlementPrice' placeholder="请输入包装费" type="digit">
+						</view>
+					</view>
+					<view style='font-size:11px;color:#AFB3BF;'>结算价格=点价+基差+发票费用+包装费</view>
+				</view>
+			</view>
+		</view>
+		<!-- <view v-if='isFutures==0' class="cu-form-group margin-top margin-bottom">
+			<view class="title">质量验收方式</view>
+			<picker @change="AcceptTypeChange" :value="acceptTypeIndex" :range="acceptType">
+				<view class="picker">
+					{{acceptTypeIndex>-1?acceptType[acceptTypeIndex]:'请选择'}}
+				</view>
+			</picker>
+		</view> -->
+		<view class="padding flex flex-direction">
+			<button class="cu-btn bg-red margin-tb-sm lg" @click="commit">提交</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+			data() {
+				return {
+					goodsName:'',
+					goods:{},
+					receiveWarehouse:'',
+					receivePrivate:'',
+					receiveCity:'',
+					receiveArea:'',
+					minimumVolume:0,
+					basisPrice:0,
+					pcFlag:0,
+					list:{
+						transactionsNumber:0,
+						baggingNotes:'',
+						pointPrice:0,
+						packingFee:'',
+						settlementPrice:0
+					},
+					invoiceTypeIndex:0,
+					invoiceTypeIndex1:0,
+					acceptTypeIndex:0,
+					priceTypeIndex:0,
+					bankNameIndex:0,
+					packingIndex:0,
+					packingType: ['散装', '大装','小袋'],
+					invoiceType: ['不开发票', '普通发票', '增值税发票'],
+					invoiceType1: ['不开发票','增值税发票'],
+					acceptType: ['第三方检验(国家检验资质)', '交收地库或港出具的检验', '现场看货','其他'],
+					priceType: ['库内价', '到库价', '到港价'],
+					priceTypeIndex1:'库内价',
+					region: [],
+					id:0,
+					packing:'',
+					memo:'',
+					buyer:'',
+					buyerPhone:'',
+					unitPrice:0,
+					address:'',
+					count:0,
+					price:'库内价',
+					invoice:'不开发票',
+					accept:'',
+					seller:'',
+					sellerPhone:'',
+					minSale:'',
+					province:'',
+					city:'',
+					area:'',
+					storeName:'',
+					exsitCount:0,
+					isFutures:'',
+					bankNameList:'',
+					Company:[],
+					companyId:'',
+					tradeCompanyId:'',
+					basis:0,
+					basisBig:0,
+					basisSmall:0,
+					invoiceMoney:0,
+					unloadingFee:0,
+					packingMoney:0,
+					packingIndex:0,
+					packing:'散装'
+				};
+			},
+			onLoad(options) {
+				this.receiveWarehouse=options.receiveWarehouse
+				this.receivePrivate=options.receivePrivate
+				this.receiveCity=options.receiveCity
+				this.receiveArea=options.receiveArea
+				this.minimumVolume=options.minimumVolume
+				this.basisPrice=options.basisPrice
+				this.id = options.id
+				this.pcFlag = options.pcFlag
+				this.goodsName = options.goodsName
+				this.seller = options.seller
+				this.isFutures = options.isFutures
+				this.minSale = options.minSale
+				this.companyId=options.companyId
+				this.province = options.province
+				this.city = options.city
+				this.area = options.area
+				this.storeName=options.storeName
+				this.exsitCount = Math.floor(options.exsitCount * 100) / 100
+				this.basis = options.basis
+				this.basisBig = options.basisBig
+				this.basisSmall = options.basisSmall
+				this.unloadingFee = options.unloadingFee
+			},
+			onShow() {
+				this.$api.doRequest('get', '/identityAuthenticationInfo/getInfo',{commonId:111111}).then(res => {
+					if(res.data.code==200){
+						this.goods=res.data.data
+					}
+					uni.hideLoading()
+				})
+				// var that=this
+				// this.$api.request('company', 'getCompany', failres => {
+				// 	that.$api.msg(failres.errmsg)
+				// 	uni.hideLoading()
+				// }).then(res => {
+				// 	if(res.data.code=='SUCCESS'){
+				// 		var data=[]
+				// 		this.Company=res.data.data
+				// 		if(res.data.data){
+				// 			for(let i=0;i<res.data.data.length;i++){
+				// 				data.push(res.data.data[i].companyName+' '+res.data.data[i].companyPhone)
+				// 			}
+				// 		}
+				// 		if(this.Company){
+				// 			this.buyer =this.Company[0].companyName
+				// 			this.buyerPhone=this.Company[0].companyPhone
+				// 			this.tradeCompanyId=this.Company[0].id
+				// 		}
+				// 		that.bankNameList=data
+				// 		uni.hideLoading()
+				// 	}else{
+				// 		that.$api.msg(res.data.code)
+				// 		uni.hideLoading()
+				// 	}
+				// })
+				// uni.getLocation({
+				//     type: 'wgs84',
+				// 	geocode:true,
+				//     success: function (res) {
+				//         console.log('当前位置的经度:' + res.longitude);
+				//         console.log('当前位置的纬度:' + res.latitude);
+				//     }
+				// });
+			},
+			methods: {
+				InvoiceTypeChange(e) {
+					this.invoiceTypeIndex = e.detail.value
+					this.invoice = this.invoiceType[this.invoiceTypeIndex];
+					
+				},
+				InvoiceTypeChange1(e) {
+					this.invoiceTypeIndex1 = e.detail.value
+					this.invoice = this.invoiceType1[this.invoiceTypeIndex1];
+					if(this.invoiceTypeIndex1 == 0){
+						this.invoiceMoney = 0
+					}
+					else{
+						this.invoiceMoney = 20
+					}
+				},
+				bankNameChange(e){
+					this.bankNameIndex=e.detail.value
+					this.buyer =this.Company[e.detail.value].companyName
+					this.buyerPhone=this.Company[e.detail.value].companyPhone
+					this.tradeCompanyId=this.Company[e.detail.value].id
+				},
+				AcceptTypeChange(e) {
+					this.acceptTypeIndex = e.detail.value
+					this.accept = this.acceptType[this.acceptTypeIndex];
+				},
+				packingChange(e){
+					this.packingIndex = e.detail.value
+					this.packing = this.packingType[this.packingIndex];
+					if(this.packingIndex == 0){
+						this.packingMoney = 0
+					}
+					else if(this.packingIndex == 1){
+						this.packingMoney = this.basisBig - this.basis
+					}
+					else if(this.packingIndex == 2){
+						this.packingMoney = this.basisSmall - this.basis
+					}
+				},
+				changeZhihang(){
+					uni.navigateTo({
+						url: '/pageA/pages/newcompany'
+					})
+				},
+				PriceTypeChange(e) {
+					this.priceTypeIndex = e.detail.value
+					this.price = this.priceType[this.priceTypeIndex]
+				},
+				RegionChange(e) {
+					this.region = e.detail.value
+					this.province = this.region[0];
+					this.area = this.region[0]+this.region[1]+this.region[2];
+				},
+				textareaInput(e) {
+					this.memo = e.detail.value
+				},
+				packingInput(e){
+					this.packing = e.detail.value
+				},
+				buyerInput(e){
+					this.buyer = e.detail.value
+				},
+				buyerPhoneInput(e){
+					this.buyerPhone = e.detail.value
+				},
+				unitPriceInput(e){
+					this.unitPrice = e.detail.value
+				},
+				addressInput(e){
+					this.address = e.detail.value
+				},
+				countInput(e){
+					this.count = e.detail.value
+				},
+				commit(){
+					const that = this
+					if ( that.companyId !=2 && !that.area ) {
+						that.$api.msg('请选择省市区');
+						return
+					}
+					if ( that.companyId !=2&& !that.address) {
+						that.$api.msg('请填写详细交收地址')
+						return
+					}
+					if (!that.price) {
+						that.$api.msg('请选择价格类型')
+						return
+					}
+					if (!that.invoice) {
+						that.$api.msg('请选择发票类型')
+						return
+					}
+					// if(!that.accept&&that.isFutures==0){
+					// 	that.$api.msg('请选择质量验收方式');
+					// 	return
+					// }
+					if(!that.unitPrice){
+						that.$api.msg('请填写协议价格(元/吨)');
+						return
+					}
+					if(!that.count){
+						that.$api.msg('请填写购买数量(吨)');
+						return
+					}
+					if(Number(that.count) < Number(that.minSale)){
+						that.$api.msg('购买数量不能小于最小成交量');
+						return
+					}
+					if(!that.tradeCompanyId){
+						that.$api.msg('请选择公司名头');
+						return
+					}
+					// if(that.count > that.exsitCount){
+					// 	that.$api.msg('购买数量大于库存量');
+					// 	return
+					// }
+					//this.$api.prePage()获取上一页实例,可直接调用上页所有数据和方法,在App.vue定义
+					
+					//this.$api.msg(`地址${this.manageType=='edit' ? '修改': '添加'}成功`);
+					that.tradeInfo.salebuyId = that.salebuyId
+					that.tradeInfo.buyer = that.buyer
+					that.tradeInfo.buyerPhone = that.buyerPhone
+					that.tradeInfo.priceType = that.price
+					that.tradeInfo.unitPrice = that.unitPrice
+					that.tradeInfo.province = that.province
+					that.tradeInfo.area = that.area
+					that.tradeInfo.address = that.address
+					that.tradeInfo.count = that.count
+					that.tradeInfo.acceptType = that.accept
+					that.tradeInfo.invoiceType = that.invoice
+					that.tradeInfo.packing = that.packing
+					that.tradeInfo.packingMoney = that.packingMoney
+					that.tradeInfo.memo = that.memo
+					that.tradeInfo.seller = that.seller
+					that.tradeInfo.sellerPhone = that.sellerPhone
+					that.tradeInfo.tradeCompanyId = that.tradeCompanyId
+					that.tradeInfo.invoiceMoney = that.invoiceMoney
+					// that.tradeInfo.unloadingFee = that.unloadingFee
+					uni.showLoading({
+						title: '正在提交',
+						mask:true
+					})
+					that.$api.request('trade', 'addTrade',that.tradeInfo, failres => {
+						uni.hideLoading()
+						that.$api.msg(failres.errmsg);
+						
+					}).then(res => {
+						uni.hideLoading()
+						uni.showModal({
+							title: '提示',
+							content: "交易申请提交成功",
+							showCancel: false,
+							confirmText: '确定',
+							success: () => {
+								uni.navigateBack({
+									delta: 2
+								})
+							}
+						})
+						// that.$api.prePage().refreshList(data, that.manageType);
+					})
+				
+				}
+			}
+		}
+</script>
+
+<style scoped>
+	.cu-form-group input {
+		text-align: right;
+	}
+	.cu-form-group textarea {
+		text-align: right;
+	}
+	.margin-bottom{
+		margin-bottom:30px;
+	}
+	.c-row {
+	    display: -webkit-box;
+	    display: -webkit-flex;
+	    display: flex;
+	    -webkit-box-align: center;
+	    -webkit-align-items: center;
+	    align-items: center;
+	    padding: 20rpx 30rpx;
+	    position: relative;
+	}
+	.con-list {
+	    -webkit-box-flex: 1;
+	    -webkit-flex: 1;
+	    flex: 1;
+	    display: -webkit-box;
+	    display: -webkit-flex;
+	    display: flex;
+	    -webkit-box-orient: vertical;
+	    -webkit-box-direction: normal;
+	    -webkit-flex-direction: column;
+	    flex-direction: column;
+	    color: #303133;
+	    line-height: 40rpx;
+	    text-align: right;
+	    padding-right: 20rpx;
+	}
+	/*  详情 */
+	.detail-desc {
+		background: #fff;
+		margin-top: 16upx;
+		margin:10px;
+		position:relative;
+		z-index:4;
+		border-radius:5px;
+		.d-header {
+			display: flex;
+			padding:10px;
+			font-size: $font-base + 2upx;
+			color: $font-color-dark;
+			position: relative;
+			border-bottom:1px solid #EEEEEE;
+			text {
+				padding: 0 20upx;
+				position: relative;
+				z-index: 1;
+			}
+		}
+	}
+	.c-list picker .picker {
+	    line-height: 80rpx;
+	    font-size: 24rpx;
+	    text-overflow: ellipsis;
+	    white-space: nowrap;
+	    overflow: hidden;
+	    width: 100%;
+	    text-align: right;
+	}
+	.c-list picker {
+	    -webkit-box-flex: 1;
+	    -webkit-flex: 1;
+	    flex: 1;
+	    padding-right: 10px;
+	    overflow: hidden;
+	    position: relative;
+	}
+	.c-list {
+		font-size: $font-sm + 2upx;
+		color: $font-color-base;
+		background: #fff;
+	
+		.c-row {
+			display: flex;
+			align-items: center;
+			padding: 20upx 30upx;
+			position: relative;
+		}
+	
+		.tit {
+			width: 220upx;
+		}
+	
+		.con {
+			flex: 1;
+			color: $font-color-dark;
+	
+			.selected-text {
+				margin-right: 10upx;
+			}
+		}
+	
+		.bz-list {
+			height: 40upx;
+			font-size: $font-sm+2upx;
+			color: $font-color-dark;
+	
+			text {
+				display: inline-block;
+				margin-right: 30upx;
+			}
+		}
+	
+		.con-list {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			color: $font-color-dark;
+			line-height: 40upx;
+			text-align: right;
+			padding-right: 20upx;
+		}
+	
+		.red {
+			color: $uni-color-primary;
+		}
+	}
+	.textarea{
+		background:#F9F9FA;
+		font-size:12px;
+		text-align:left;
+		width:100%;
+		height:60px;
+		padding:10px;
+		border-radius:5px;
+		margin-top:10px;
+	}
+</style>
+

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 844 - 0
pageA/product/saledetails.vue


+ 404 - 0
pageA/product/trade_sale.vue

@@ -0,0 +1,404 @@
+<template>
+	
+	<view class="container">
+		<view v-if="companyId!=2" class="cu-form-group">
+			<view class="title">买方</view>
+			<view class="title">{{buyer}}</view>
+		</view>
+		<view v-if="companyId!=2" class="cu-form-group">
+			<view class="title">买方电话</view>
+			<view class="title">{{buyerPhone}}</view>
+		</view>
+		<view class="cu-form-group">
+			<text class="tit">我的信息</text>
+			<view class="con-list">
+				<view v-if='bankNameList'>
+					<picker @change="bankNameChange" :value="bankNameIndex" :range="bankNameList">
+					<view class="picker">
+						{{bankNameIndex>-1?bankNameList[bankNameIndex]:'点击选择名头'}}
+					</view>
+				</picker>
+				</view>
+				
+			</view>
+			<button class='cu-btn bg-green shadow' @click="changeZhihang">添加名头</button>
+		</view>
+		<view  v-if="companyId!=2" class="cu-form-group margin-top">
+			<view class="title">价格类型</view>
+			<picker @change="PriceTypeChange" :value="priceTypeIndex" :range="priceType">
+				<view class="picker">
+					{{priceTypeIndex>-1?priceType[priceTypeIndex]:'请选择'}}
+				</view>
+			</picker>
+		</view>
+		<view v-if='companyId!=2' class="cu-form-group">
+			<view class="title">交接区域</view>
+			<picker mode="region" @change="RegionChange" :value="region">
+				<view class="picker" v-if="region.length>0">
+					{{region[0]}}{{region[1]}}{{region[2]}}
+				</view>
+				<view class="picker" v-else>
+					请选择
+				</view>
+			</picker>
+		</view>
+		<view v-if='companyId!=2' class="cu-form-group">
+			<view class="title">详细交收地址</view>
+			<input placeholder="请填写" name="input" @input="addressInput"></input>
+		</view>
+		<view v-if='companyId==2' class="cu-form-group">
+			<view class="title">库点地址</view>
+			<view class="title">{{province+city+area+storeName}}</view>
+		</view>
+		<view class="cu-form-group">
+			<view class="title">最小成交量(吨)</view>
+			<view class="title">{{minSale}}</view>
+		</view>
+		<view v-if="companyId==2" class="cu-form-group">
+			<view  class="title">发票类型</view>
+			<picker @change="InvoiceTypeChange1" :value="invoiceTypeIndex1" :range="invoiceType1">
+				<view class="picker">
+					{{invoiceTypeIndex1>-1?invoiceType1[invoiceTypeIndex1]:'请选择'}}
+				</view>
+			</picker>
+		</view>
+		<view v-else class="cu-form-group">
+			<view  class="title">发票类型</view>
+			<picker @change="InvoiceTypeChange" :value="invoiceTypeIndex" :range="invoiceType">
+				<view class="picker">
+					{{invoiceTypeIndex>-1?invoiceType[invoiceTypeIndex]:'请选择'}}
+				</view>
+			</picker>
+		</view>
+		<view v-if='companyId!=2' class="cu-form-group margin-top margin-bottom">
+			<view class="title">质量验收方式</view>
+			<picker @change="AcceptTypeChange" :value="acceptTypeIndex" :range="acceptType">
+				<view class="picker">
+					{{acceptTypeIndex>-1?acceptType[acceptTypeIndex]:'请选择'}}
+				</view>
+			</picker>
+		</view>
+		<view class="cu-form-group">
+			<view class="title">出售数量(吨)</view>
+			<input placeholder="请填写" name="input" @input="countInput"></input>
+		</view>
+		<view class="cu-form-group">
+			<view v-if='companyId!=2' class="title">协议单价(元/吨)</view>
+			<view v-else class="title" style='color:red'>点价(元/吨)</view>
+			<input placeholder="请填写" name="input" @input="unitPriceInput"></input>
+		</view>
+		<view v-if="companyId==2" class="cu-form-group">
+			<view class="title">基差</view>
+			<view class="title">{{basis}}</view>
+		</view>
+		<view v-if="companyId==2" class="cu-form-group">
+			<view class="title">发票费用(元/吨)</view>
+			<view class="title">{{invoiceMoney}}</view>
+		</view>
+		<view v-if="companyId==2&&unloadingFee" class="cu-form-group">
+			<view class="title">卸车费(元/吨)</view>
+			<view class="title">{{unloadingFee}}</view>
+		</view>
+		<view v-if="companyId!=2" class="cu-form-group">
+			<view class="title">包装方式</view>
+			<input placeholder="请填写 例:袋装XX斤/散装" name="input" @input='packingInput'></input>
+		</view>
+		<!-- <view class="cu-form-group align-start">
+			<view class="title">备注</view>
+			<textarea maxlength="-1" :disabled="modalName!=null" @input="textareaInput" placeholder="备注"></textarea>
+		</view> -->
+		<view v-if="companyId==2" class="cu-form-group">
+			<view class="title">总金额(自动计算)</view>
+			<view class="title">{{(Number(unitPrice) + Number(basis)+ Number(unloadingFee) + Number(invoiceMoney))*count}}元</view>
+		</view>
+		<view v-else class="cu-form-group">
+			<view class="title">总金额(自动计算)</view>
+			<view class="title">{{unitPrice*count}}元</view>
+		</view>
+		<view v-if="companyId==2" class="cu-form-group align-start">
+			<!-- <view class="title">结算价格=点价+基差+发票+卸车费</view> -->
+			<view class="title">最终以纸质合同为准</view>
+		</view>
+		<view  class="cu-form-group align-start">
+			<view class="title">备注</view>
+			<textarea maxlength="-1" :disabled="modalName!=null" @input="textareaInput" placeholder="备注"></textarea>
+		</view>
+		<view class="padding flex flex-direction">
+			<button class="cu-btn bg-red margin-tb-sm lg" @click="commit">提交</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+			data() {
+				return {
+					tradeInfo:{
+						salebuyId:0,
+						packing:'',
+						memo:'',
+						buyer:'',
+						buyerPhone:'',
+						unitPrice:0,
+						address:'',
+						count:0,
+						province:'',
+						area:'',
+						priceType:'',
+						invoiceType:'',
+						acceptType:'',
+						seller:'',
+						sellerPhone:'',
+						type:1
+					},
+					invoiceTypeIndex:0,
+					invoiceTypeIndex1:0,
+					acceptTypeIndex:0,
+					priceTypeIndex:0,
+					bankNameIndex:0,
+					packingType: ['散装', '大袋(50kg)', '小袋(25kg)'],
+					invoiceType: ['增值税发票', '普通发票', '不开发票'],
+					invoiceType1: ['增值税发票',  '不开发票'],
+					acceptType: ['第三方检验(国家检验资质)', '交收地库或港出具的检验', '现场看货','其他'],
+					priceType: ['库内价', '到库价', '到港价'],
+					priceTypeIndex1:'库内价',
+					region: [],
+					salebuyId:0,
+					packing:'',
+					memo:'',
+					buyer:'',
+					buyerPhone:'',
+					unitPrice:0,
+					address:'',
+					count:0,
+					price:'库内价',
+					invoice:'增值税发票',
+					accept:'',
+					seller:'',
+					province:'',
+					city:'',
+					area:'',
+					storeName:'',
+					sellerPhone:'',
+					minSale:0,
+					exsitCount:0,
+					isFutures:'',
+					companyId:'',
+					bankNameList:'',
+					Company:[],
+					tradeCompanyId:'',
+					basis:0,
+					invoiceMoney:0,
+					unloadingFee:0
+				};
+			},
+			onShow() {
+				var that=this
+				this.$api.request('company', 'getCompany', failres => {
+					that.$api.msg(failres.errmsg)
+					uni.hideLoading()
+				}).then(res => {
+					if(res.data.code=='SUCCESS'){
+						var data=[]
+						if(res.data.data){
+							this.Company=res.data.data
+						for(let i=0;i<res.data.data.length;i++){
+							data.push(res.data.data[i].companyName+' '+res.data.data[i].companyPhone)
+						}
+						that.bankNameList=data
+							this.seller =this.Company[0].companyName
+							this.sellerPhone=this.Company[0].companyPhone
+							this.tradeCompanyId=this.Company[0].id
+						}
+						uni.hideLoading()
+					}else{
+						that.$api.msg(res.data.code)
+						uni.hideLoading()
+					}
+				})
+			},
+			onLoad(options) {
+				console.log(options)
+				this.packing = options.packing
+				this.salebuyId = options.id
+				this.buyer = options.buyer
+				this.buyerPhone = options.buyerPhone
+				this.minSale = options.minSale
+				this.exsitCount = options.exsitCount
+				this.isFutures= options.isFutures
+				this.province = options.province
+				this.city = options.city
+				this.area = options.area
+				this.storeName=options.storeName
+				this.companyId=options.companyId
+				this.basis = options.basis
+				this.unloadingFee = options.unloadingFee
+			},
+			methods: {
+				InvoiceTypeChange(e) {
+					this.invoiceTypeIndex = e.detail.value
+					this.invoice = this.invoiceType[this.invoiceTypeIndex];
+				},
+				InvoiceTypeChange1(e) {
+					this.invoiceTypeIndex1 = e.detail.value
+					this.invoice = this.invoiceType1[this.invoiceTypeIndex1];
+					if(this.invoiceTypeIndex1 == 0){
+						this.invoiceMoney = 0
+					}
+					else{
+						this.invoiceMoney = -20
+					}
+				},
+				bankNameChange(e){
+					this.bankNameIndex=e.detail.value
+					this.seller =this.Company[e.detail.value].companyName
+					this.sellerPhone=this.Company[e.detail.value].companyPhone
+					this.tradeCompanyId=this.Company[e.detail.value].id
+				},
+				AcceptTypeChange(e) {
+					this.acceptTypeIndex = e.detail.value
+					this.accept = this.acceptType[this.acceptTypeIndex];
+				},
+				packingChange(e){
+					this.packingIndex = e.detail.value
+					this.packing = this.packingType[this.packingIndex];
+				},
+				PriceTypeChange(e) {
+					this.priceTypeIndex = e.detail.value
+					this.price = this.priceType[this.priceTypeIndex]
+				},
+				RegionChange(e) {
+					this.region = e.detail.value
+					this.province = this.region[0];
+					this.area = this.region[0]+this.region[1]+this.region[2];
+				},
+				changeZhihang(){
+					uni.navigateTo({
+						url: '/pageA/pages/newcompany'
+					})
+				},
+				textareaInput(e) {
+					this.memo = e.detail.value
+				},
+				sellerInput(e){
+					this.seller = e.detail.value
+				},
+				sellerPhoneInput(e){
+					this.sellerPhone = e.detail.value
+				},
+				unitPriceInput(e){
+					this.unitPrice = e.detail.value
+				},
+				addressInput(e){
+					this.address = e.detail.value
+				},
+				packingInput(e){
+					this.packing = e.detail.value
+				},
+				countInput(e){
+					this.count = e.detail.value
+				},
+				commit(){
+					const that = this
+					if (that.companyId !=2 && !that.area ) {
+						that.$api.msg('请选择省市区');
+						return
+					}
+					if (that.companyId !=2 && !that.address) {
+						that.$api.msg('请填写详细交收地址')
+						return
+					}
+					if (!that.price) {
+						that.$api.msg('请选择价格类型')
+						return
+					}
+					if (!that.invoice) {
+						that.$api.msg('请选择发票类型')
+						return
+					}
+					// if(!that.accept&&that.isFutures==0){
+					// 	that.$api.msg('请选择质量验收方式');
+					// 	return
+					// }
+					if(!that.unitPrice){
+						that.$api.msg('请填写协议价格(元/吨)');
+						return
+					}
+					if(!that.count){
+						that.$api.msg('请填写出售数量(吨)');
+						return
+					}
+					if(Number(that.count) < Number(that.minSale)){
+						that.$api.msg('出售数量不能小于最小成交量');
+						return
+					}
+					if(!that.tradeCompanyId){
+						that.$api.msg('请选择公司名头');
+						return
+					}
+					// if(that.isFutures == 0 && that.count > that.exsitCount){
+					// 	that.$api.msg('购买数量大于库存量');
+					// 	return
+					// }
+					//this.$api.prePage()获取上一页实例,可直接调用上页所有数据和方法,在App.vue定义
+					
+					//this.$api.msg(`地址${this.manageType=='edit' ? '修改': '添加'}成功`);
+					uni.showLoading({
+						title: '正在提交',
+						mask:true
+					})
+					that.tradeInfo.salebuyId = that.salebuyId
+					that.tradeInfo.buyer = that.buyer
+					that.tradeInfo.buyerPhone = that.buyerPhone
+					that.tradeInfo.priceType = that.price
+					that.tradeInfo.unitPrice = that.unitPrice
+					that.tradeInfo.province = that.province
+					that.tradeInfo.area = that.area
+					that.tradeInfo.address = that.address
+					that.tradeInfo.count = that.count
+					that.tradeInfo.acceptType = that.accept
+					that.tradeInfo.invoiceType = that.invoice
+					that.tradeInfo.packing = that.packing
+					that.tradeInfo.memo = that.memo
+					that.tradeInfo.seller = that.seller
+					that.tradeInfo.sellerPhone = that.sellerPhone
+					that.tradeInfo.tradeCompanyId = that.tradeCompanyId
+					that.tradeInfo.unloadingFee = that.unloadingFee
+					that.tradeInfo.invoiceMoney = that.invoiceMoney
+					
+					that.$api.request('trade', 'addTrade',that.tradeInfo, failres => {
+						uni.hideLoading()
+						that.$api.msg(failres.errmsg);
+						
+					}).then(res => {
+						uni.hideLoading()
+						uni.showModal({
+							title: '提示',
+							content: "交易申请提交成功",
+							showCancel: false,
+							confirmText: '确定',
+							success: () => {
+								uni.navigateBack({
+									delta: 2
+								})
+							}
+						})
+						// that.$api.prePage().refreshList(data, that.manageType);
+					})
+				
+				}
+			}
+		}
+</script>
+
+<style>
+	.cu-form-group input {
+		text-align: right;
+	}
+	.cu-form-group textarea {
+		text-align: right;
+	}
+	.margin-bottom{
+		margin-bottom:30px;
+	}
+</style>

+ 773 - 0
pageD/warehousings/ex_warehouse.vue

@@ -0,0 +1,773 @@
+<template>
+	<view class="container">
+		<view class="center">
+			<view class="title_b ">发运信息</view>
+			<view class="c-row ">
+				<text class="tit">合同编号</text>
+				<view class="con-list">
+					<text>{{WarehouseInOutInfo.contractNo}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">货名</text>
+				<view class="con-list">
+					<text>{{WarehouseInOutInfo.goodsName}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">发车净重(吨)</text>
+				<view class="con-list">
+					<text>{{WarehouseInOutInfo.startWeight}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">车牌号</text>
+				<view class="con-list">
+					<text>{{WarehouseInOutInfo1.carNo}}</text>
+				</view>
+			</view>
+		</view>
+		<view class="center">
+			<view class="title_c ">出库信息</view>
+			<view class="c-list">
+				<view class="c-row b-b">
+					<text class="tit">毛重(吨)</text>
+					<view style="color: #ff0000; padding-left: 10rpx;">*</view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入毛重" name="input" v-model="WarehouseInOutInfo.grossWeight" @input="grossWeightInput"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="tit">皮重(吨)</view>
+					<view style="color: #ff0000; padding-left: 10rpx;">*</view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入皮重" name="input" v-model="WarehouseInOutInfo.tare"
+							@input="tareInput"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">净重(吨)</text>
+					<view class="con-list">
+						<text>{{numFilter(WarehouseInOutInfo.netWeight)}}</text>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">仓库</text>
+					<view style="color: #ff0000; padding-left: 10rpx;">*</view>
+					<view class="con-list">
+						<text @click=''>{{WarehouseInOutInfo.warehouseName}}</text>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">仓位号</view>
+					<view style="color: #ff0000; padding-left: 10rpx;">*</view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入仓位号" name="input" v-model="WarehouseInOutInfo.binNumber"></input>
+					</view>
+				</view>
+			
+				<view class="c-row b-b">
+					<text class="tit">入库类型 </text>
+					<picker @change="ruChange" :value="ruIndex" :range="ruType" class="con-list">
+						<view >
+							{{ruIndex>-1?ruType[ruIndex]:'请选择入库类型'}}
+						</view>
+					</picker>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">扣款金额</view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入扣款金额" name="input" v-model="WarehouseInOutInfo.deductionAmount"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">扣款项</view>
+					<view class="con-list">
+						<input maxlength='16' placeholder="请输入扣款项" name="input" v-model="WarehouseInOutInfo.deductionItems"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">入库日期</text>
+					
+					<view class="con-list" @click="show = true">{{WarehouseInOutInfo.inOutDate!=''?WarehouseInOutInfo.inOutDate:time}}</view>
+					<u-picker  :params='params' :default-time='time' @confirm="DateChange" v-model="show" mode="time"></u-picker>
+					
+				</view>
+				<view class="c-row ">
+					<text class="tit">上传磅单照片</text>
+				</view>
+				<upload
+					class="upload"
+					ref="upload"
+					:action="action"
+					:max-size="maxSize"
+					:max-count="1"
+					:size-type="['compressed']"
+					@on-success="getImgUrl"
+					@on-remove="onRemove"
+					@on-uploaded="isAdd = true"
+					:before-upload="filterFileType"
+				></upload>
+			</view>
+		</view>
+			
+
+		<view class="center">
+			<view class="title_c ">化验信息</view>
+			<view class="c-list">
+				<view class="c-row b-b">
+					<view class="title">质检员</view>
+					<view class="con-list">
+						<input maxlength='10' minlength='2' placeholder-style="font-size:14px" placeholder="请输入质检员姓名" name="input" v-model="list.qualityInspector"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">蛋白(%)>=</view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入蛋白占比" name="input" v-model="list.protein"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">水分(%)<= </view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入水分占比" name="input" v-model="list.waterContent"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">容重(克/升)>= </view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入容重" name="input" v-model="list.bulkDensity"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">热损伤(%)<= </view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入热损伤占比" name="input" v-model="list.jiaorenli"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">杂质(%)<= </view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入杂质占比" name="input" v-model="list.impurity"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">霉变粒(%)<= </view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入霉变粒占比" name="input" v-model="list.mildewGrain"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<view class="title">不完整粒(%)<= </view>
+					<view class="con-list">
+						<input placeholder-style="font-size:14px" placeholder="请输入不完整粒占比" name="input"
+							v-model="list.imperfectGrain"></input>
+					</view>
+				</view>
+				<view class="c-row b-b">
+					<text class="tit">品级 </text>
+					<picker @change="pinChange" :value="pinIndex" :range="pinType" class="con-list">
+						<view >
+							{{pinIndex>-1?pinType[pinIndex]:'请选择品级'}}
+						</view>
+					</picker>
+				</view>
+			</view>
+		</view>
+	<!-- 底部操作菜单 -->
+	<view class="page-bottom1">
+		<view>
+			<button type="primary" @click="commit1">暂 存</button>
+			<button  @click="commit"  type="primary" class=" action-btn no-border add-cart-btn" >提 交</button>
+		</view>
+	</view>
+</view>
+
+</template>
+<script>
+import upload from '@/components/upload.vue';
+	export default {
+	components:{upload},
+		data() {
+			return {
+				packingType: [],
+				packingIndex: "",
+				goods: {},
+				list: {},
+				WarehouseInOutInfo: {
+					inOutDate:'',
+					warehouseInOutDetail: {},
+					pcFlag: 0,
+					contractNo: {},
+					carNo: {},
+				},
+				WarehouseInOutInfo1: {
+					contractNo: {},
+					carNo: {},
+				},
+				pinIndex: '不限(默认)',
+				pinTypes: '',
+				pinType: ['不限(默认)', '一等品', '二等品', '三等品', '等外'],
+				ruIndex: '采购入库',
+				rutypes: '',
+				ruType: ['采购入库', '移库入库', '暂存入库', '贸易服务入库', '退库'],
+				action: this.$uploadUrl,
+				maxSize: 5 * 1024 * 1024,//限制文件大小 5M
+				btnLoading: false, //防止重复点击
+				imgUrls: [],
+				isAdd: true,
+				params:{
+					year: true,
+					month: true,
+					day: true,
+				},
+				show:false
+			}
+		},
+		computed: {
+				time() {
+					var date=new Date()
+					var year=date.getFullYear()
+					var month=date.getMonth()
+					var date1=date.getDate()
+					if(month+1<10){
+						month="0"+(month+1)
+					}
+					if(date1+1<10){
+						date1="0"+date1
+					}
+					return year+'-'+month+"-"+date1
+				},
+				startDate() {
+				//限制开始时间;
+				//也可以直接限定为当天日期 var date= new Date(); return date
+					return new Date(new Date(new Date().toLocaleDateString()).getTime()-(1*60*60*1000))
+				},
+				endDate() {
+					return new Date()
+				}
+			},
+			onShow(){
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectWarehouse', {compId:'2710b21efc1e4393930c5dc800010dc4',warehouseType:1,}).then(res => {
+			console.log(res)
+			})
+			this.$api.doRequest('get', '/warehouseBaseInfo/getWarehouse', {compId:'',warehouseType:1,}).then(res => {
+			console.log(res)
+			})
+			},
+		onLoad(option) {
+			this.WarehouseInOutInfo.contractNo = option.contractNo
+			this.WarehouseInOutInfo.goodsName = option.goodsName
+			this.WarehouseInOutInfo.startWeight = option.startWeight
+			this.WarehouseInOutInfo1.carNo = option.carNo + '(' + option.tranCarNo + ')'
+			this.WarehouseInOutInfo.warehouseName = option.warehouseName
+			this.WarehouseInOutInfo.id = option.id
+			this.WarehouseInOutInfo.carNo = option.carNo
+			var date=new Date()
+			var year=date.getFullYear()
+			var month=date.getMonth()
+			var date1=date.getDate()
+			if(month+1<10){
+				month="0"+(month+1)
+			}
+			this.time = year+'-'+month+"-"+date1
+		},
+		methods: {
+			
+			DateChange(e) {
+				this.WarehouseInOutInfo.inOutDate=e.year+'-'+e.month+'-'+e.day
+			},
+			filterFileType(index, lists) {
+				if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
+					lists.splice(index, 1);
+					// 当前文件不支持
+					uni.showModal({
+						title: '暂不支持当前图片类型',
+						showCancel: false
+					});
+				} else {
+					this.isAdd = false;
+				}
+			},
+			getImgUrl(res) {
+				this.imgUrls.push(res.data);
+			},
+			onRemove(index) {
+				this.imgUrls.splice(index, 1);
+			},
+			commit1() {
+				if(this.WarehouseInOutInfo.grossWeight>100||this.WarehouseInOutInfo.grossWeight<1){
+					this.$api.msg('毛重输入错误')
+					return
+				}
+				if(this.WarehouseInOutInfo.grossWeight.indexOf('.')!=-1){
+					if(this.WarehouseInOutInfo.grossWeight.split('.')[1].length>2){
+						this.$api.msg('毛重输入错误')
+						return
+					}
+				}
+				if(this.WarehouseInOutInfo.tare>50||this.WarehouseInOutInfo.tare<1){
+					this.$api.msg('皮重输入错误')
+					return
+				}
+				if(this.WarehouseInOutInfo.tare.indexOf('.')!=-1){
+					if(this.WarehouseInOutInfo.tare.split('.')[1].length>2){
+						this.$api.msg('皮重输入错误')
+						return
+					}
+				}
+				if(this.WarehouseInOutInfo.deductionAmount&&this.WarehouseInOutInfo.deductionAmount>10000||this.WarehouseInOutInfo.deductionAmount&&this.WarehouseInOutInfo.deductionAmount<0){
+					this.$api.msg('扣款金额输入错误')
+					return
+				}
+				if(this.WarehouseInOutInfo.deductionAmount&&this.WarehouseInOutInfo.deductionAmount.indexOf('.')!=-1){
+					if(this.WarehouseInOutInfo.deductionAmount.split('.')[1].length>2){
+						this.$api.msg('扣款金额输入错误')
+						return
+					}
+				}
+				if(this.list.qualityInspector&&this.list.qualityInspector<2||this.list.qualityInspector&&this.list.qualityInspector>10){
+					this.$api.msg('质检员姓名输入错误')
+					return
+				}
+				if(this.list.protein&&this.list.protein<1||this.list.protein&&this.list.protein>80){
+					this.$api.msg('蛋白占比输入错误')
+					return
+				}
+				if(this.list.protein&&this.list.protein.indexOf('.')!=-1){
+					if(this.list.protein.split('.')[1].length>2){
+						this.$api.msg('蛋白占比输入错误')
+						return
+					}
+				}
+				if(this.list.waterContent&&this.list.waterContent<1||this.list.waterContent&&this.list.waterContent>40){
+					this.$api.msg('水分输入错误')
+					return
+				}
+				if(this.list.waterContent&&this.list.waterContent.indexOf('.')!=-1){
+					if(this.list.waterContent.split('.')[1].length>2){
+						this.$api.msg('水分输入错误')
+						return
+					}
+				}
+				if(this.list.bulkDensity&&this.list.bulkDensity<1||this.list.bulkDensity&&this.list.bulkDensity>40){
+					this.$api.msg('容重输入错误')
+					return
+				}
+				if(this.list.bulkDensity&&this.list.bulkDensity.indexOf('.')!=-1){
+					if(this.list.bulkDensity.split('.')[1].length>2){
+						this.$api.msg('容重输入错误')
+						return
+					}
+				}
+				if(this.list.jiaorenli&&this.list.jiaorenli<1||this.list.jiaorenli&&this.list.jiaorenli>40){
+					this.$api.msg('热损伤输入错误')
+					return
+				}
+				if(this.list.jiaorenli&&this.list.jiaorenli.indexOf('.')!=-1){
+					if(this.list.jiaorenli.split('.')[1].length>2){
+						this.$api.msg('热损伤输入错误')
+						return
+					}
+				}
+				if(this.list.impurity&&this.list.impurity<1||this.list.impurity&&this.list.impurity>40){
+					this.$api.msg('杂质输入错误')
+					return
+				}
+				if(this.list.impurity&&this.list.impurity.indexOf('.')!=-1){
+					if(this.list.impurity.split('.')[1].length>2){
+						this.$api.msg('杂质输入错误')
+						return
+					}
+				}
+				if(this.list.mildewGrain&&this.list.mildewGrain<1||this.list.mildewGrain&&this.list.mildewGrain>40){
+					this.$api.msg('霉变粒输入错误')
+					return
+				}
+				if(this.list.mildewGrain&&this.list.mildewGrain.indexOf('.')!=-1){
+					if(this.list.mildewGrain.split('.')[1].length>2){
+						this.$api.msg('霉变粒输入错误')
+						return
+					}
+				}
+				if(this.list.imperfectGrain&&this.list.imperfectGrain<1||this.list.imperfectGrain&&this.list.imperfectGrain>40){
+					this.$api.msg('不完整粒输入错误')
+					return
+				}
+				if(this.list.imperfectGrain&&this.list.imperfectGrain.indexOf('.')!=-1){
+					if(this.list.imperfectGrain.split('.')[1].length>2){
+						this.$api.msg('不完整粒输入错误')
+						return
+					}
+				}
+				uni.showLoading({
+					title:"正在暂存"
+				})
+				this.WarehouseInOutInfo.deductionAmount=-this.WarehouseInOutInfo.deductionAmount
+				this.WarehouseInOutInfo.warehouseInOutDetail = this.list
+				this.WarehouseInOutInfo.statusFlag = 1
+				if(this.imgUrls.length > 0){
+					this.WarehouseInOutInfo.addressUrl = this.imgUrls[0]
+				}
+				this.$api.doRequest('post', '/warehouseInOutInfo/InOutWarehouse', this.WarehouseInOutInfo).then(res => {
+					if(res.data.code==200){
+						uni.showToast({
+							title: '暂存成功',
+							icon: 'none',
+							duration: 2000
+						})
+						uni.navigateBack({})
+					}else{
+						uni.showToast({
+							title: res.data.message,
+							icon: 'none',
+							duration: 2000
+						})
+					}
+					uni.hideLoading()
+					
+				}).catch(res => {
+					uni.showToast({
+						title: res.data.message,
+						icon: 'none',
+						duration: 2000
+					})
+					uni.hideLoading()
+				})
+			},
+			commit() {
+				if(!this.WarehouseInOutInfo.grossWeight){
+					this.$api.msg('毛重不能为空')
+					return
+				}
+				if(!this.WarehouseInOutInfo.tare){
+					this.$api.msg('皮重不能为空')
+					return
+				}
+				if(!this.WarehouseInOutInfo.warehouseName){
+					this.$api.msg('仓库不能为空')
+					return
+				}
+				if(!this.WarehouseInOutInfo.binNumber){
+					this.$api.msg('仓库不能为空')
+					return
+				}
+				if(this.WarehouseInOutInfo.grossWeight>100||this.WarehouseInOutInfo.grossWeight<1){
+					this.$api.msg('毛重输入错误')
+					return
+				}
+				if(this.WarehouseInOutInfo.grossWeight.indexOf('.')!=-1){
+					if(this.WarehouseInOutInfo.grossWeight.split('.')[1].length>2){
+						this.$api.msg('毛重输入错误')
+						return
+					}
+				}
+				if(this.WarehouseInOutInfo.tare>50||this.WarehouseInOutInfo.tare<1){
+					this.$api.msg('皮重输入错误')
+					return
+				}
+				if(this.WarehouseInOutInfo.tare.indexOf('.')!=-1){
+					if(this.WarehouseInOutInfo.tare.split('.')[1].length>2){
+						this.$api.msg('皮重输入错误')
+						return
+					}
+				}
+				if(this.WarehouseInOutInfo.deductionAmount&&this.WarehouseInOutInfo.deductionAmount>10000||this.WarehouseInOutInfo.deductionAmount&&this.WarehouseInOutInfo.deductionAmount<0){
+					this.$api.msg('扣款金额输入错误')
+					return
+				}
+				if(this.WarehouseInOutInfo.deductionAmount&&this.WarehouseInOutInfo.deductionAmount.indexOf('.')!=-1){
+					if(this.WarehouseInOutInfo.deductionAmount.split('.')[1].length>2){
+						this.$api.msg('扣款金额输入错误')
+						return
+					}
+				}
+				if(this.list.qualityInspector&&this.list.qualityInspector<2||this.list.qualityInspector&&this.list.qualityInspector>10){
+					this.$api.msg('质检员姓名输入错误')
+					return
+				}
+				if(this.list.protein&&this.list.protein<1||this.list.protein&&this.list.protein>80){
+					this.$api.msg('蛋白占比输入错误')
+					return
+				}
+				if(this.list.protein&&this.list.protein.indexOf('.')!=-1){
+					if(this.list.protein.split('.')[1].length>2){
+						this.$api.msg('蛋白占比输入错误')
+						return
+					}
+				}
+				if(this.list.waterContent&&this.list.waterContent<1||this.list.waterContent&&this.list.waterContent>40){
+					this.$api.msg('水分输入错误')
+					return
+				}
+				if(this.list.waterContent&&this.list.waterContent.indexOf('.')!=-1){
+					if(this.list.waterContent.split('.')[1].length>2){
+						this.$api.msg('水分输入错误')
+						return
+					}
+				}
+				if(this.list.bulkDensity&&this.list.bulkDensity<1||this.list.bulkDensity&&this.list.bulkDensity>40){
+					this.$api.msg('容重输入错误')
+					return
+				}
+				if(this.list.bulkDensity&&this.list.bulkDensity.indexOf('.')!=-1){
+					if(this.list.bulkDensity.split('.')[1].length>2){
+						this.$api.msg('容重输入错误')
+						return
+					}
+				}
+				if(this.list.jiaorenli&&this.list.jiaorenli<1||this.list.jiaorenli&&this.list.jiaorenli>40){
+					this.$api.msg('热损伤输入错误')
+					return
+				}
+				if(this.list.jiaorenli&&this.list.jiaorenli.indexOf('.')!=-1){
+					if(this.list.jiaorenli.split('.')[1].length>2){
+						this.$api.msg('热损伤输入错误')
+						return
+					}
+				}
+				if(this.list.impurity&&this.list.impurity<1||this.list.impurity&&this.list.impurity>40){
+					this.$api.msg('杂质输入错误')
+					return
+				}
+				if(this.list.impurity&&this.list.impurity.indexOf('.')!=-1){
+					if(this.list.impurity.split('.')[1].length>2){
+						this.$api.msg('杂质输入错误')
+						return
+					}
+				}
+				if(this.list.mildewGrain&&this.list.mildewGrain<1||this.list.mildewGrain&&this.list.mildewGrain>40){
+					this.$api.msg('霉变粒输入错误')
+					return
+				}
+				if(this.list.mildewGrain&&this.list.mildewGrain.indexOf('.')!=-1){
+					if(this.list.mildewGrain.split('.')[1].length>2){
+						this.$api.msg('霉变粒输入错误')
+						return
+					}
+				}
+				if(this.list.imperfectGrain&&this.list.imperfectGrain<1||this.list.imperfectGrain&&this.list.imperfectGrain>40){
+					this.$api.msg('不完整粒输入错误')
+					return
+				}
+				if(this.list.imperfectGrain&&this.list.imperfectGrain.indexOf('.')!=-1){
+					if(this.list.imperfectGrain.split('.')[1].length>2){
+						this.$api.msg('不完整粒输入错误')
+						return
+					}
+				}
+				this.WarehouseInOutInfo.deductionAmount=-this.WarehouseInOutInfo.deductionAmount
+				if(this.imgUrls.length > 0){
+					this.WarehouseInOutInfo.addressUrl = this.imgUrls[0]
+				}
+				this.WarehouseInOutInfo.warehouseInOutDetail = this.list
+				this.WarehouseInOutInfo.statusFlag = 3
+				uni.showLoading({
+					title:"正在提交"
+				})
+				
+				this.$api.doRequest('post', '/warehouseInOutInfo/InOutWarehouse', this.WarehouseInOutInfo).then(res => {
+					if(res.data.code==200){
+						uni.showToast({
+							title: '提交成功',
+							icon: 'none'
+						})
+						setTimeout(() => {
+							uni.navigateBack({})
+						}, 200)
+					}else{
+						uni.showToast({
+							title: res.data.message,
+							icon: 'none',
+							duration: 2000
+						})
+					}
+					uni.hideLoading()
+					
+				}).catch(res => {
+					uni.showToast({
+						title: res.data.message,
+						icon: 'none',
+						duration: 2000
+					})
+					uni.hideLoading()
+				})
+			},
+			numFilter(value) {
+				if (!value) {
+					return 0
+				}
+				// 截取当前数据到小数点后两位
+				let realVal = parseFloat(value).toFixed(2)
+				return realVal
+			},
+			grossWeightInput(e) {
+				this.WarehouseInOutInfo.grossWeight = e.detail.value
+				if (this.WarehouseInOutInfo.grossWeight && this.WarehouseInOutInfo.tare) {
+					this.WarehouseInOutInfo.netWeight = this.WarehouseInOutInfo.grossWeight - this.WarehouseInOutInfo.tare
+				}
+			},
+			tareInput(e) {
+				this.WarehouseInOutInfo.tare = e.detail.value
+				if (this.WarehouseInOutInfo.grossWeight && this.WarehouseInOutInfo.tare) {
+					this.WarehouseInOutInfo.netWeight = this.WarehouseInOutInfo.grossWeight - this.WarehouseInOutInfo.tare
+				}
+			},
+			ruChange(e) {
+				this.WarehouseInOutInfo.inOutTypeKey = e.detail.value
+				this.WarehouseInOutInfo.inOutType = this.ruType[this.ruIndex];
+			},
+			pinChange(e) {
+				this.WarehouseInOutInfo.gradeKey = e.detail.value
+				this.WarehouseInOutInfo.grade = this.pinType[this.pinIndex];
+			},
+		}
+
+	}
+</script>
+<style scoped lang='scss'>
+	.upload {
+		/deep/.u-list-item,
+		.u-add-wrap {
+			background-color: #eceae8;
+		}
+	}
+	.center{
+		margin: 15rpx 15rpx 10rpx 15rpx;
+		padding:0rpx 10rpx 30rpx 10rpx;
+		background-color: #FFFFFF;
+		border-radius: 15px;
+	}
+	.title_b{
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding:20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+		border-bottom: 1px solid #d6d6d6;
+	}
+	.title_c{
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding:20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+	}
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 20rpx 30rpx;
+		position: relative;
+	}
+
+	.con-list {
+		-webkit-box-flex: 1;
+		-webkit-flex: 1;
+		flex: 1;
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: vertical;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		color: #303133;
+		line-height: 40rpx;
+		text-align: right;
+		padding-right: 20rpx;
+	}
+
+	.d-header {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 80upx;
+		font-size: $font-base + 2upx;
+		color: $font-color-dark;
+		position: relative;
+
+		text {
+			padding: 0 20upx;
+			background: #fff;
+			position: relative;
+			z-index: 1;
+		}
+
+		&:after {
+			position: absolute;
+			left: 50%;
+			top: 50%;
+			transform: translateX(-50%);
+			width: 300upx;
+			height: 0;
+			content: '';
+			border-bottom: 1px solid #ccc;
+		}
+	}
+	/* 底部操作菜单 */
+	.page-bottom1 {
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		z-index: 95;
+		width:100%;
+		height: 70px;
+		background: rgba(255, 255, 255, .9);
+		padding:15px;
+		border-radius: 0;
+		text-align:right;
+		button{
+			display:inline-block;
+			border-radius:18px;
+			margin:0 10px;
+			font-size:14px;background:#fff;
+			color:#333;
+			border:1px solid #333;
+			padding-left: 50rpx;
+			padding-right: 50rpx;
+		}
+		.action-btn{
+			background:#22C572;
+			color:#fff;
+			border:1px solid #22C572;
+		}
+		.p-b-btn {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+			font-size: $font-sm;
+			color: $font-color-base;
+			width: 96upx;
+			height: 80upx;
+	
+			.yticon {
+				font-size: 40upx;
+				line-height: 48upx;
+				color: $font-color-light;
+			}
+	
+			&.active,
+			&.active .yticon {
+				color: $uni-color-primary;
+			}
+	
+			.icon-fenxiang2 {
+				font-size: 42upx;
+				transform: translateY(-2upx);
+			}
+	
+			.icon-shoucang {
+				font-size: 46upx;
+			}
+		}
+	
+		
+	}
+	.container{
+		padding-bottom: 160upx;
+	}
+</style>
+

+ 340 - 0
pageD/warehousings/ex_warehouse_detail.vue

@@ -0,0 +1,340 @@
+<template>
+	<view class="container">
+		<view class="center">
+			<view class="title_b ">发运信息</view>
+			<view class="c-row ">
+				<text class="tit">合同编号</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.contractNo}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">货名</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.goodsName}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">发车净重(吨)</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.startWeight}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">车牌号</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.carNo}}</text>
+				</view>
+			</view>
+		</view>
+		<view class="center">
+			<view class="title_b">出库信息</view>
+			<view class="c-list">
+				<view class="c-row ">
+					<text class="tit">毛重(吨)</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.grossWeight}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">皮重(吨)</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.tare}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">净重(吨)</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.netWeight}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">仓库</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.warehouseName}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">仓位号</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.binNumber}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">入库类型</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.inOutType}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">扣款金额(元/吨)</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.deductionAmount}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">扣款项</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.deductionItems}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">入库日期</text>
+					<view class="con-list">
+						<text>{{warehouseInOutInfo.inOutDate}}</text>
+					</view>
+				</view>
+				<view class="c-row ">
+					<text class="tit">磅单照片</text>
+				</view>
+				<view style="padding-left: 30rpx;">
+					<u-image width="30%" height="180rpx" :src="warehouseInOutInfo.addressUrl"></u-image>
+				</view>
+			</view>
+		</view>
+		<view class="center">
+			<view class="title_b">化验信息</view>
+			<view class="c-row ">
+				<text class="tit">质检员</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.qualityInspector}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">蛋白(%){{'>='}}</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.protein}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">水分(%){{'<='}}</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.waterContent}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">容重(g/L){{'<='}}</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.bulkDensity}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">热损伤(%){{'<='}}</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.jiaorenli}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">杂质(%){{'<='}}</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.impurity}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">霉变粒(%){{'<='}}</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.mildewGrain}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">不完整粒(%){{'<='}} </text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.imperfectGrain}}</text>
+				</view>
+			</view>
+			<view class="c-row ">
+				<text class="tit">品级</text>
+				<view class="con-list">
+					<text>{{warehouseInOutInfo.grade}}</text>
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+<script>
+	export default {
+
+		data() {
+			return {
+				warehouseInOutInfo: {
+					warehouseInOutDetail:{
+						qualityInspector:''
+					}
+				}
+			}
+		},
+		onLoad(options){
+				
+			this.getList(options.id)
+			console.log(options.id,"idwei1")
+		},
+		methods: {
+			typeChange(e){
+				this.typesIndex = e.detail.value
+				this.types = this.typesType[this.typesIndex];
+			},
+			getList(id1){
+				var that=this
+				this.$api.doRequest('get','/warehouseInOutInfo/getInfo',{id:id1}).then(res => {
+					console.log(res)
+					that.warehouseInOutInfo = res.data.data
+					
+				})
+				.catch(res => {
+					uni.showToast({
+						title: res.errmsg,
+						icon:'none',
+						duration: 2000
+					})
+				});
+				console.log(this.warehouseInOutInfo)
+			}
+		}
+		}
+</script>
+<style scoped lang='scss'>
+	.center{
+		margin: 15rpx 15rpx 10rpx 15rpx;
+		padding:0rpx 10rpx 30rpx 10rpx;
+		background-color: #FFFFFF;
+		border-radius: 15px;
+	}
+	.title_b{
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding:20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+		border-bottom: 1px solid #d6d6d6;
+	}
+	.title_c{
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding:20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+	}
+	.margin-bottom {
+		margin-bottom: 30px;
+	}
+	
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 20rpx 30rpx;
+		position: relative;
+	}
+	
+	.con-list {
+		-webkit-box-flex: 1;
+		-webkit-flex: 1;
+		flex: 1;
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: vertical;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		color: #303133;
+		line-height: 40rpx;
+		text-align: right;
+		padding-right: 20rpx;
+	}
+	
+	.d-header {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 80upx;
+		font-size: $font-base + 2upx;
+		color: $font-color-dark;
+		position: relative;
+	
+		text {
+			padding: 0 20upx;
+			background: #fff;
+			position: relative;
+			z-index: 1;
+		}
+	
+		&:after {
+			position: absolute;
+			left: 50%;
+			top: 50%;
+			transform: translateX(-50%);
+			width: 300upx;
+			height: 0;
+			content: '';
+			border-bottom: 1px solid #ccc;
+		}
+	}
+	/* 底部操作菜单 */
+	.page-bottom1 {
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		z-index: 95;
+		width:100%;
+		height: 70px;
+		background: rgba(255, 255, 255, .9);
+		padding:15px;
+		border-radius: 0;
+		text-align:right;
+		button{
+			display:inline-block;
+			border-radius:18px;
+			margin:0 10px;
+			font-size:14px;background:#fff;
+			color:#333;
+			border:1px solid #333;
+			padding-left: 50rpx;
+			padding-right: 50rpx;
+		}
+		.action-btn{
+			background:#22C572;
+			color:#fff;
+			border:1px solid #22C572;
+		}
+		.p-b-btn {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+			font-size: $font-sm;
+			color: $font-color-base;
+			width: 96upx;
+			height: 80upx;
+	
+			.yticon {
+				font-size: 40upx;
+				line-height: 48upx;
+				color: $font-color-light;
+			}
+	
+			&.active,
+			&.active .yticon {
+				color: $uni-color-primary;
+			}
+	
+			.icon-fenxiang2 {
+				font-size: 42upx;
+				transform: translateY(-2upx);
+			}
+	
+			.icon-shoucang {
+				font-size: 46upx;
+			}
+		}
+	
+		
+	}
+	.container{
+		padding-bottom: 160upx;
+	}
+</style>
+
+

+ 35 - 2
pages.json

@@ -422,7 +422,8 @@
 			}
 			}
 
 
 		}
 		}
-    ],
+
+	],
 	"subpackages": [{
 	"subpackages": [{
 			"root": "pageA",
 			"root": "pageA",
 			"pages": [{
 			"pages": [{
@@ -484,7 +485,6 @@
 					"style": {
 					"style": {
 						"navigationStyle": "custom"
 						"navigationStyle": "custom"
 					}
 					}
-
 				}, {
 				}, {
 					"path": "product/business_sale",
 					"path": "product/business_sale",
 					"style": {
 					"style": {
@@ -498,6 +498,13 @@
 						"navigationBarTitleText": "详情"
 						"navigationBarTitleText": "详情"
 					}
 					}
 				},
 				},
+				{
+					"path": "product/saledetails",
+					"style": {
+						"navigationBarTitleText": "详情"
+					}
+
+				},
 				{
 				{
 					"path": "product/detail_buy",
 					"path": "product/detail_buy",
 					"style": {
 					"style": {
@@ -513,6 +520,12 @@
 					"style": {
 					"style": {
 						"navigationBarTitleText": "交易信息"
 						"navigationBarTitleText": "交易信息"
 					}
 					}
+				}, {
+					"path": "product/sale_trade",
+					"style": {
+						"navigationBarTitleText": "交易信息"
+					}
+
 				},
 				},
 				{
 				{
 					"path": "product/business_buy",
 					"path": "product/business_buy",
@@ -545,6 +558,12 @@
 					"style": {
 					"style": {
 						"navigationBarTitleText": "交易信息"
 						"navigationBarTitleText": "交易信息"
 					}
 					}
+				}, {
+					"path": "product/trade_sale",
+					"style": {
+						"navigationBarTitleText": "交易信息"
+					}
+
 				},
 				},
 				{
 				{
 					"path": "pages/contract",
 					"path": "pages/contract",
@@ -1062,6 +1081,20 @@
 						"enablePullDownRefresh": false
 						"enablePullDownRefresh": false
 					}
 					}
 
 
+				}, {
+					"path": "/warehousings/ex_warehouse",
+					"style": {
+						"navigationBarTitleText": "出库",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "/warehousings/ex_warehouse_detail",
+					"style": {
+						"navigationBarTitleText": "出库详情",
+						"enablePullDownRefresh": false
+					}
+
 				}
 				}
 			]
 			]
 		}
 		}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است