فهرست منبع

添加erp静态页面

wangchao 3 سال پیش
والد
کامیت
27a8e4e311

+ 45 - 0
pages.json

@@ -899,6 +899,51 @@
                 "enablePullDownRefresh": false
             }
             
+        }
+		,{
+		    "path" : "pages/erp/improvedExWaehousing/improvedExWaehousing",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "待完善出库",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+        ,{
+            "path" : "pages/erp/improvedWrehousing/improvedWrehousingDetail",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "完善入库",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/erp/improvedExWaehousing/improvedExWaehousingDetail",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "完善出库",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/erp/openService/openService",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "开通服务",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/erp/contactCustomerService/contactCustomerService",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "联系客服",
+                "enablePullDownRefresh": false
+            }
+            
         }
     ],
 	"subpackages": [{

+ 165 - 0
pages/erp/contactCustomerService/contactCustomerService.vue

@@ -0,0 +1,165 @@
+<template>
+	<view class="wrap">
+		<view class="content">
+			<view class="row row-bottom">
+				<view class="left">姓名</view>
+				<input @input='calculate' class="right-bottom" placeholder="请输入姓名"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">电话</view>
+				<input @input='calculate' class="right-bottom" placeholder="请输入电话"></input>
+			</view>
+			<view class="row no-boder">
+				<view class="left">留言</view>
+			</view>
+			<view class="row no-boder">
+				<u-input v-model="value" :type="type" :border="border" :height="height" :auto-height="autoHeight" />
+			</view>
+			<view class="bottom">
+				<u-button type="primary" class="submit" hover-class="none" @click="submit">提交</u-button>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from 'vuex';
+
+	export default {
+		components: {
+
+		},
+		data() {
+			return {
+				value: '',
+				type: 'textarea',
+				border: true,
+				height: 100,
+				autoHeight: true,
+			}
+		},
+
+		onLoad() {
+
+		},
+		// #ifndef MP
+		onNavigationBarButtonTap(e) {
+			const index = e.index;
+			if (index === 0) {
+				this.navTo('/pages/set/set');
+			} else if (index === 1) {
+				// #ifdef APP-PLUS
+				const pages = getCurrentPages();
+				const page = pages[pages.length - 1];
+				const currentWebview = page.$getAppWebview();
+				currentWebview.hideTitleNViewButtonRedDot({
+					index
+				});
+				// #endif
+				uni.navigateTo({
+					url: '/pages/notice/notice'
+				})
+			}
+		},
+		// #endif
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		onShow() {
+			this.$api.doRequest('get', '/commonUser/api/checkSession').then(res => {
+				console.log("checkSession", res)
+				if (res.data.data == "INVALID") {
+					uni.showModal({
+						title: '登录提示',
+						content: 'Session过期需要重新登录,是否立即登录?',
+						showCancel: true,
+						confirmText: '登录',
+						success: (e) => {
+							if (e.confirm) {
+								uni.navigateTo({
+									url: '/pages/public/login'
+								})
+							}
+						},
+						fail: () => {},
+						complete: () => {}
+					})
+				}
+			})
+			console.log("hasLogin", this.hasLogin)
+		},
+		methods: {
+			/**
+			 * 统一跳转接口,拦截未登录路由
+			 * navigator标签现在默认没有转场动画,所以用view
+			 */
+			navTo(url) {
+				if (!this.hasLogin) {
+					url = '/pages/public/login';
+				}
+				uni.navigateTo({
+					url
+				})
+			},
+			calculate() {},
+			submit() {
+				this.$refs.uToast.show({
+					title: '登录成功',
+					type: 'error',
+					url: '/pages/user/index'
+				})
+			}
+		}
+	}
+</script>
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+		overflow: hidden;
+	}
+
+	.wrap {
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+		padding: 20rpx;
+	}
+
+	.content {
+		border-radius: 20rpx;
+		background: white;
+		padding: 20rpx;
+
+		.row {
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1px solid #EEEEEE;
+			padding: 21rpx 0;
+
+			.right,
+			input {
+				font-size: 28rpx;
+				color: #333333;
+			}
+		}
+
+		.row-bottom {
+			.right-bottom {
+				width: 300rpx;
+				text-align: right;
+			}
+		}
+
+		.no-boder {
+			border: 0;
+		}
+	}
+
+	.submit {
+		margin-top: 200rpx;
+		background: #22C572;
+		border-radius: 10rpx;
+	}
+</style>

+ 99 - 0
pages/erp/demo.vue

@@ -0,0 +1,99 @@
+<template>
+	<view class="wrap">
+		
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from 'vuex';
+
+	export default {
+		components: {
+
+		},
+		data() {
+			return {
+			
+			}
+		},
+
+		onLoad() {
+
+		},
+		// #ifndef MP
+		onNavigationBarButtonTap(e) {
+			const index = e.index;
+			if (index === 0) {
+				this.navTo('/pages/set/set');
+			} else if (index === 1) {
+				// #ifdef APP-PLUS
+				const pages = getCurrentPages();
+				const page = pages[pages.length - 1];
+				const currentWebview = page.$getAppWebview();
+				currentWebview.hideTitleNViewButtonRedDot({
+					index
+				});
+				// #endif
+				uni.navigateTo({
+					url: '/pages/notice/notice'
+				})
+			}
+		},
+		// #endif
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		onShow() {
+			this.$api.doRequest('get', '/commonUser/api/checkSession').then(res => {
+				console.log("checkSession", res)
+				if (res.data.data == "INVALID") {
+					uni.showModal({
+						title: '登录提示',
+						content: 'Session过期需要重新登录,是否立即登录?',
+						showCancel: true,
+						confirmText: '登录',
+						success: (e) => {
+							if (e.confirm) {
+								uni.navigateTo({
+									url: '/pages/public/login'
+								})
+							}
+						},
+						fail: () => {},
+						complete: () => {}
+					})
+				}
+			})
+			console.log("hasLogin", this.hasLogin)
+		},
+		methods: {
+			/**
+			 * 统一跳转接口,拦截未登录路由
+			 * navigator标签现在默认没有转场动画,所以用view
+			 */
+			navTo(url) {
+				if (!this.hasLogin) {
+					url = '/pages/public/login';
+				}
+				uni.navigateTo({
+					url
+				})
+			}
+		}
+	}
+</script>
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+	}
+
+	.wrap {
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+		padding: 10px;
+	}
+
+	
+</style>

+ 431 - 5
pages/erp/exWarehousing/exWarehousing.vue

@@ -1,22 +1,448 @@
 <template>
-	<view>
-		出库
+	<view class="warp">
+		<view class="top">
+			<view class="top-left">鲅鱼圈一号库</view>
+			<view>102仓位</view>
+		</view>
+		<view class="content">
+			<view class="row">
+				<view class="left">合同编号</view>
+				<view @click='slectcontractNo'>{{detailData.contractNo}}</view>
+			</view>
+			<view class="row">
+				<view class="left">货名</view>
+				<view class="right">{{detailData.goodsName}}</view>
+			</view>
+			<view class="row">
+				<view class="left">类型</view>
+				<view @click='show1=true'>请选择类型</view>
+				<u-picker :range="typeList" range-key="type" @confirm='typePicker($event)' v-model="show1"
+					mode="selector">
+				</u-picker>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">毛重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入毛重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">皮重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入皮重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">净重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="不可编辑,自动计算"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">扣重比</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入扣重比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">干粮水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入干粮水分占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">潮粮水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入潮粮水分占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">纯重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="不可编辑,自动计算"></input>
+			</view>
+			<view class="row">
+				<view class="left">品级</view>
+				<view @click='show3=true'>请选择品级</view>
+				<u-picker :range="pjList" range-key="name" @confirm='handlerPicker($event)' v-model="show3" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">经办人</view>
+				<view @click='show6=true'>请选择经办人</view>
+				<u-picker :range="handlerList" range-key="name" @confirm='handlerPicker($event)' v-model="show6" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">出库日期</view>
+				<view @click='show4=true'>请选择日期</view>
+				<u-calendar v-model="show4" mode="date" @change='dateChange'></u-calendar>
+			</view>
+			<view class="row">
+				<view class="left">出库类型</view>
+				<view @click='show5=true'>请选择入库类型</view>
+				<u-picker :range="warehousingTypeList" range-key="type" @confirm='warehousingTypePicker($event)' v-model="show5" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">车牌号</view>
+				<view @click='slectCarNo'>{{detailData.carNo}}</view>
+			</view>
+			<view class="row row-bottom has-btn">
+				<view class="left">成本(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="自动获取"></input>
+					<u-button class="edit-btn">编辑</u-button>
+			</view>
+			<view class="row row-bottom has-btn">
+				<view class="left">运费(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="自动获取"></input>
+					<u-button class="edit-btn">编辑</u-button>
+			</view>
+		</view>
+		<view class="content2">
+			<view class="left">上传磅单</view>
+			<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="1"
+				:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
+				@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+		</view>
+		<view class="content1">
+			<view class="title">
+				质检数据(选填)
+			</view>
+			<view class="row row-bottom">
+				<view class="left">质检员</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入质检员姓名"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入水分占比"></input>
+			</view>
+			<view class="row row-bottom" style="border: 0;">
+				<view class="left">容重(克/升)</view>
+				<input v-model='detailData.netWeight' class="right-bottom" disabled placeholder="输入容重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">热损伤(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入热损伤占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">杂质(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入杂质占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">霉变粒(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入霉变粒占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">不完善粒(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入不完善粒占比"></input>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+		<view class="bottom-btn">
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">暂存</u-button>
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">提交</u-button>
+		</view>
 	</view>
 </template>
 
 <script>
+	import upload from '@/components/upload.vue';
 	export default {
+		components: {
+			upload
+		},
 		data() {
 			return {
-				
+				show: false,
+				show1: false,
+				show2: false,
+				show3: false,
+				show4: false,
+				show5: false,
+				show6: false,
+				contractNoList: [{
+					contractNo: "123"
+				}],
+				typeList: [{
+						type: "干粮"
+					},
+					{
+						type: "潮粮"
+					}
+				],
+				pjList: [{
+						type: "一等"
+					},
+					{
+						type: "二等"
+					},
+					{
+						type: "三等"
+					},
+					{
+						type: "等外"
+					}
+				],
+				handlerList: [{
+						name: "张三"
+					},
+					{
+						name: "二等"
+					},
+					{
+						name: "三等"
+					},
+					{
+						name: "等外"
+					}
+				],
+				warehousingTypeList: [{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					}
+				],
+				action: this.$uploadUrl,
+				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
+				btnLoading: false, //防止重复点击
+				isAdd: true,
+				detailData: {
+					contractNo: "123",
+					carNo:'辽H12345',
+					name: "",
+					goodsName: "123",
+					qualityInspectionManagement: {}
+				}
 			}
 		},
+		onLoad(options) {
+			this.id = options.id
+			this.cangId = options.cangId
+		},
+		onShow() {
+			// this.getWeighingManagement()
+		},
 		methods: {
-			
+			contractNopicker(e) {},
+			typePicker(e) {
+				console.log(e)
+			},
+			pjPicker(e) {
+				console.log(e)
+			},
+			handlerPicker(e) {
+				console.log(e)
+			},
+			dateChange(e){
+				console.log(e)
+			},
+			warehousingTypePicker(e) {
+				console.log(e)
+			},
+			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;
+				}
+			},
+			calculate() {
+				this.detailData.netWeight = this.detailData.grossWeight - this.detailData.tare
+			},
+			getImgUrl(res) {
+				this.detailData.addressUrl = res
+				console.log(res)
+				console.log('------------res-----------')
+			},
+			onError(error) {
+				alert(error)
+				console.log('------------error-----------')
+				console.log(error)
+			},
+			contractNopicker(e) {
+				// this.detailData.goodsName=this.contractNoList[e[0]].goodsName
+				// this.detailData.contractNo=this.contractNoList[e[0]].contractNo
+			},
+			binNumberpicker(e) {
+				this.detailData.binNumber = this.positionList[e[0]].binNumber
+			},
+			getWeighingManagement() {
+				this.$api.doRequest('get', '/weighingManagement/getWeighingManagement', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						console.log(res)
+						this.detailData = res.data.data
+					}
+				})
+				this.$api.doRequest('get', '/warehouseBaseInfo/getWarehouse', {
+					id: this.cangId
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.positionList = res.data.data.warehousePositionInfoList
+					}
+				})
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectContractNoList', {
+					compId: '',
+					flag: 5
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.contractNoList = res.data.data
+					}
+				})
+			},
+			onProgress(e) {
+				console.log(e)
+			},
+			onRemove(index) {},
+			submit() {
+				if (!this.detailData.grossWeight) {
+					this.$api.msg('毛重不能为空')
+					return
+				}
+				if (isNaN(this.detailData.grossWeight) ||
+					(String(this.detailData.grossWeight).indexOf('.') != -1 &&
+						String(this.detailData.grossWeight).length -
+						(String(this.detailData.grossWeight).indexOf('.') + 1) >
+						1) ||
+					this.detailData.grossWeight < 1 ||
+					this.detailData.grossWeight > 100000
+				) {
+					this.$api.msg('毛重输入错误!')
+					return
+				}
+				let that = this
+				uni.showModal({
+					content: "确定提交检斤信息?",
+					success(res) {
+						if (res.confirm) {
+							that.$api.doRequest('post', '/weighingManagement/api/editGrossWeight',
+								that.detailData).then(res => {
+								if (res.data.code == 200) {
+									that.$api.msg('提交成功')
+									uni.navigateBack()
+								}
+							})
+						}
+
+					}
+				})
+			},
+			slectcontractNo(){
+				uni.navigateTo({
+					url:'/pages/erp/exWarehousing/selectContractNo'
+				})
+			},
+			slectCarNo(){
+				uni.navigateTo({
+					url:'/pages/erp/exWarehousing/selectCarNo'
+				})
+			},
 		}
 	}
 </script>
 
-<style>
+<style scoped lang="scss">
+	uni-page-body {
+		overflow: hidden;
+	}
 
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 140rpx 20rpx;
+
+		.top {
+			display: flex;
+			margin-bottom: 20rpx;
+
+			.top-left {
+				margin-right: 20rpx;
+			}
+		}
+	}
+
+	.content,
+	.content1,
+	.content2 {
+		border-radius: 20rpx;
+		background: white;
+		padding: 20rpx;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 600;
+			color: #333333;
+		}
+
+		.row {
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1px solid #EEEEEE;
+			padding: 21rpx 0;
+
+			.right,
+			input {
+				font-size: 28rpx;
+				color: #333333;
+			}
+		}
+
+		.row-bottom {
+
+			// border: 0;
+			.right-bottom {
+				width: 300rpx;
+				text-align: right;
+			}
+		}
+	}
+
+	.content1 {
+		margin-top: 20rpx;
+	}
+
+	.content2 {
+		margin-top: 10px;
+		display: flex;
+		align-items: center;
+
+		.left {
+			margin-right: 20px;
+		}
+	}
+
+	.submit {
+		width: 40%;
+		background: #22C572;
+		border-radius: 10rpx;
+	}
+	.edit-btn{
+		background: #22C572;
+		width: 100rpx;
+		height: 50rpx;
+		margin: 0;
+		color: white;
+	}
+	.has-btn{
+		align-items: center;
+	}
+	.bottom-btn{
+		width: 92%;
+		position: fixed;
+		bottom: 40rpx;
+		display: flex;
+		z-index: 2;
+	}
 </style>

+ 115 - 0
pages/erp/exWarehousing/selectCarNo.vue

@@ -0,0 +1,115 @@
+<template>
+	<view class="warp">
+		<view class="content1">
+			<u-search placeholder="输入车牌号" :show-action="false" v-model="inputKeyword"></u-search>
+		</view>
+		<view class="content2" v-if="!inputKeyword">
+			<view class="title">编号123456789可选车牌号如下:</view>
+			<view class="item-contnet">
+				<view class="item-list" v-for="(item,index) in newList" :key="index" @click="confirm(item)">
+					{{item.contractNo}}
+				</view>
+			</view>
+		</view>
+		<view class="content3" v-if="inputKeyword">
+			<view class="search-item-list" v-for="(item,index) in filterNewList" :key="index" @click="confirm(item)">
+				{{item.contractNo}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	 import helper from '@/common/helper.js'; 
+	export default {
+		data() {
+			return {
+				inputKeyword: '',
+				newList: [],
+				filterNewList: [],
+				compId: ''
+			}
+		},
+		onShow() {},
+		onLoad(options) {
+			this.compId = options.compId
+			console.log(helper.selectContractNo); 
+			this.getContractNoList()
+		},
+		watch: {
+			inputKeyword(val) {
+				this.filterNewList = this.newList.filter(function(item) {
+					if (item.contractNo.indexOf(val) > -1) {
+						return item
+					}
+				})
+			}
+		},
+		methods: {
+			confirm(item){
+				uni.setStorageSync('ContractNo', item);
+				uni.navigateBack({})
+			},
+			getContractNoList() {
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectContractNoList', {
+					compId: this.compId,
+					flag: 5,
+				}).then(res => {
+					if (res.data.code == 200) {
+						console.log(res)
+						this.newList = res.data.data
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.content1 {
+		background: white;
+		padding: 20rpx;
+		border-radius: 0 0 20rpx 20rpx;
+	}
+
+	.content2 {
+		background: white;
+		margin-top: 20rpx;
+		padding: 20rpx;
+		border-radius: 20rpx 20rpx 0 0;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 400;
+			color: #AFB3BF;
+		}
+
+		.item-contnet {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+		}
+
+		.item-list {
+			width: 45%;
+			background: #F5F6F9;
+			margin: 20rpx 0;
+			padding: 10rpx 15rpx;
+			border-radius: 30rpx;
+			text-align: center;
+		}
+	}
+
+	.content3 {
+		height: calc(100vh - 192rpx);
+		background: white;
+		padding: 20rpx;
+		box-sizing: border-box;
+	}
+
+	.search-item-list {
+		margin: 20rpx;
+		border-bottom: 1px solid #EEEEEE;
+		padding-bottom: 20rpx;
+	}
+</style>

+ 115 - 0
pages/erp/exWarehousing/selectContractNo.vue

@@ -0,0 +1,115 @@
+<template>
+	<view class="warp">
+		<view class="content1">
+			<u-search placeholder="输入合同编号" :show-action="false" v-model="inputKeyword"></u-search>
+		</view>
+		<view class="content2" v-if="!inputKeyword">
+			<view class="title">最新合同</view>
+			<view class="item-contnet">
+				<view class="item-list" v-for="(item,index) in newList" :key="index" @click="confirm(item)">
+					{{item.contractNo}}
+				</view>
+			</view>
+		</view>
+		<view class="content3" v-if="inputKeyword">
+			<view class="search-item-list" v-for="(item,index) in filterNewList" :key="index" @click="confirm(item)">
+				{{item.contractNo}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	 import helper from '@/common/helper.js'; 
+	export default {
+		data() {
+			return {
+				inputKeyword: '',
+				newList: [],
+				filterNewList: [],
+				compId: ''
+			}
+		},
+		onShow() {},
+		onLoad(options) {
+			this.compId = options.compId
+			console.log(helper.selectContractNo); 
+			this.getContractNoList()
+		},
+		watch: {
+			inputKeyword(val) {
+				this.filterNewList = this.newList.filter(function(item) {
+					if (item.contractNo.indexOf(val) > -1) {
+						return item
+					}
+				})
+			}
+		},
+		methods: {
+			confirm(item){
+				uni.setStorageSync('ContractNo', item);
+				uni.navigateBack({})
+			},
+			getContractNoList() {
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectContractNoList', {
+					compId: this.compId,
+					flag: 5,
+				}).then(res => {
+					if (res.data.code == 200) {
+						console.log(res)
+						this.newList = res.data.data
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.content1 {
+		background: white;
+		padding: 20rpx;
+		border-radius: 0 0 20rpx 20rpx;
+	}
+
+	.content2 {
+		background: white;
+		margin-top: 20rpx;
+		padding: 20rpx;
+		border-radius: 20rpx 20rpx 0 0;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 400;
+			color: #AFB3BF;
+		}
+
+		.item-contnet {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+		}
+
+		.item-list {
+			width: 45%;
+			background: #F5F6F9;
+			margin: 20rpx 0;
+			padding: 10rpx 15rpx;
+			border-radius: 30rpx;
+			text-align: center;
+		}
+	}
+
+	.content3 {
+		height: calc(100vh - 192rpx);
+		background: white;
+		padding: 20rpx;
+		box-sizing: border-box;
+	}
+
+	.search-item-list {
+		margin: 20rpx;
+		border-bottom: 1px solid #EEEEEE;
+		padding-bottom: 20rpx;
+	}
+</style>

+ 97 - 5
pages/erp/improvedExWaehousing/improvedExWaehousing.vue

@@ -1,6 +1,27 @@
 <template>
-	<view>
-		待完善出库
+	<view class="wrap">
+		<view class="dropdown content1">
+			<view class="left"  @click='show1=true'>
+				<view>{{warehouseName}}</view>
+				<u-icon name="arrow-right" color=""></u-icon>
+				<u-select v-model="show1" :default-value='[0]' :list="warehouseList" @confirm="confirmWarehouse">
+				</u-select>
+			</view>
+			<view class="right"  @click='show2=true'>
+				<view>{{positionName}}</view>
+				<u-icon name="arrow-right" color=""></u-icon>
+				<u-select v-model="show2" :default-value='[0]' :list="positionList" @confirm="confirmPositon">
+				</u-select>
+			</view>
+		</view>
+		<view class="content2">
+			<view class="content2-item" v-for="(item,index) in dataList" @click="goDetail(item)">
+				<view class="item-style">{{item.val1}}</view>
+				<view class="item-style">{{item.val2}}</view>
+				<view class="item-style">{{item.val3}}</view>
+				<view class="item-style">{{item.val4}}</view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -8,15 +29,86 @@
 	export default {
 		data() {
 			return {
-				
+				show1:false,
+				show2:false,
+				warehouseName: '鲅鱼圈一号库',
+				positionName: '102仓位',
+					warehouseList: [
+						{
+						"label": '1',
+						"value": '1'
+						}
+					],
+					positionList: [
+						{
+						"label": '102仓位',
+						"value": '1'
+						}
+					],
+					dataList:[
+						{
+						val1:'我是合同编号',
+						val2:'我是车牌号',
+						val3:'我是暂存时间',
+						val4:'我是提交人姓名'
+					},
+					{
+						val1:'我是合同编号',
+						val2:'我是车牌号',
+						val3:'我是暂存时间',
+						val4:'我是提交人姓名'
+					},
+					{
+						val1:'我是合同编号',
+						val2:'我是车牌号',
+						val3:'我是暂存时间',
+						val4:'我是提交人姓名'
+					},
+					]
 			}
 		},
 		methods: {
+			confirmWarehouse(){},
+			confirmPositon(){},
+			goDetail(val){
+				uni.navigateTo({
+					url:'improvedWrehousingDetail?data='+val,
+					
+				})
+			}
 			
 		}
 	}
 </script>
 
-<style>
-
+<style scoped lang="scss">
+	.dropdown{
+		display: flex;
+		margin:20rpx 0;
+		justify-content: space-between;
+		.left,.right{
+			display: flex;
+		}
+	}
+	.content1{
+		background: red;
+		padding: 20rpx;
+		margin: 20rpx;
+		border-radius: 10rpx;
+	}
+	.content2{
+		padding: 20rpx;
+		margin: 20rpx;
+		border-bottom: 1px solid #ccc;
+		background: yellow;
+		.content2-item{
+			margin-bottom: 10rpx;
+			border-bottom:1px solid #ccc ;
+			// padding-bottom: 10px;
+		}
+		.item-style{
+			display: inline-block;
+			width: 50%;
+		}
+	}
 </style>

+ 448 - 0
pages/erp/improvedExWaehousing/improvedExWaehousingDetail.vue

@@ -0,0 +1,448 @@
+<template>
+	<view class="warp">
+		<view class="top">
+			<view class="top-left">鲅鱼圈一号库</view>
+			<view>102仓位</view>
+		</view>
+		<view class="content">
+			<view class="row">
+				<view class="left">合同编号</view>
+				<view @click='slectcontractNo'>{{detailData.contractNo}}</view>
+			</view>
+			<view class="row">
+				<view class="left">货名</view>
+				<view class="right">{{detailData.goodsName}}</view>
+			</view>
+			<view class="row">
+				<view class="left">类型</view>
+				<view @click='show1=true'>请选择类型</view>
+				<u-picker :range="typeList" range-key="type" @confirm='typePicker($event)' v-model="show1"
+					mode="selector">
+				</u-picker>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">毛重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入毛重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">皮重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入皮重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">净重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="不可编辑,自动计算"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">扣重比</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入扣重比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">干粮水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入干粮水分占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">潮粮水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入潮粮水分占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">纯重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="不可编辑,自动计算"></input>
+			</view>
+			<view class="row">
+				<view class="left">品级</view>
+				<view @click='show3=true'>请选择品级</view>
+				<u-picker :range="pjList" range-key="name" @confirm='handlerPicker($event)' v-model="show3" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">经办人</view>
+				<view @click='show6=true'>请选择经办人</view>
+				<u-picker :range="handlerList" range-key="name" @confirm='handlerPicker($event)' v-model="show6" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">出库日期</view>
+				<view @click='show4=true'>请选择日期</view>
+				<u-calendar v-model="show4" mode="date" @change='dateChange'></u-calendar>
+			</view>
+			<view class="row">
+				<view class="left">出库类型</view>
+				<view @click='show5=true'>请选择入库类型</view>
+				<u-picker :range="warehousingTypeList" range-key="type" @confirm='warehousingTypePicker($event)' v-model="show5" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">车牌号</view>
+				<view @click='slectCarNo'>{{detailData.carNo}}</view>
+			</view>
+			<view class="row row-bottom has-btn">
+				<view class="left">成本(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="自动获取"></input>
+					<u-button class="edit-btn">编辑</u-button>
+			</view>
+			<view class="row row-bottom has-btn">
+				<view class="left">运费(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="自动获取"></input>
+					<u-button class="edit-btn">编辑</u-button>
+			</view>
+		</view>
+		<view class="content2">
+			<view class="left">上传磅单</view>
+			<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="1"
+				:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
+				@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+		</view>
+		<view class="content1">
+			<view class="title">
+				质检数据(选填)
+			</view>
+			<view class="row row-bottom">
+				<view class="left">质检员</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入质检员姓名"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入水分占比"></input>
+			</view>
+			<view class="row row-bottom" style="border: 0;">
+				<view class="left">容重(克/升)</view>
+				<input v-model='detailData.netWeight' class="right-bottom" disabled placeholder="输入容重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">热损伤(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入热损伤占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">杂质(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入杂质占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">霉变粒(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入霉变粒占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">不完善粒(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入不完善粒占比"></input>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+		<view class="bottom-btn">
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">暂存</u-button>
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">提交</u-button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import upload from '@/components/upload.vue';
+	export default {
+		components: {
+			upload
+		},
+		data() {
+			return {
+				show: false,
+				show1: false,
+				show2: false,
+				show3: false,
+				show4: false,
+				show5: false,
+				show6: false,
+				contractNoList: [{
+					contractNo: "123"
+				}],
+				typeList: [{
+						type: "干粮"
+					},
+					{
+						type: "潮粮"
+					}
+				],
+				pjList: [{
+						type: "一等"
+					},
+					{
+						type: "二等"
+					},
+					{
+						type: "三等"
+					},
+					{
+						type: "等外"
+					}
+				],
+				handlerList: [{
+						name: "张三"
+					},
+					{
+						name: "二等"
+					},
+					{
+						name: "三等"
+					},
+					{
+						name: "等外"
+					}
+				],
+				warehousingTypeList: [{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					}
+				],
+				action: this.$uploadUrl,
+				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
+				btnLoading: false, //防止重复点击
+				isAdd: true,
+				detailData: {
+					contractNo: "123",
+					carNo:'辽H12345',
+					name: "",
+					goodsName: "123",
+					qualityInspectionManagement: {}
+				}
+			}
+		},
+		onLoad(options) {
+			this.id = options.id
+			this.cangId = options.cangId
+		},
+		onShow() {
+			// this.getWeighingManagement()
+		},
+		methods: {
+			contractNopicker(e) {},
+			typePicker(e) {
+				console.log(e)
+			},
+			pjPicker(e) {
+				console.log(e)
+			},
+			handlerPicker(e) {
+				console.log(e)
+			},
+			dateChange(e){
+				console.log(e)
+			},
+			warehousingTypePicker(e) {
+				console.log(e)
+			},
+			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;
+				}
+			},
+			calculate() {
+				this.detailData.netWeight = this.detailData.grossWeight - this.detailData.tare
+			},
+			getImgUrl(res) {
+				this.detailData.addressUrl = res
+				console.log(res)
+				console.log('------------res-----------')
+			},
+			onError(error) {
+				alert(error)
+				console.log('------------error-----------')
+				console.log(error)
+			},
+			contractNopicker(e) {
+				// this.detailData.goodsName=this.contractNoList[e[0]].goodsName
+				// this.detailData.contractNo=this.contractNoList[e[0]].contractNo
+			},
+			binNumberpicker(e) {
+				this.detailData.binNumber = this.positionList[e[0]].binNumber
+			},
+			getWeighingManagement() {
+				this.$api.doRequest('get', '/weighingManagement/getWeighingManagement', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						console.log(res)
+						this.detailData = res.data.data
+					}
+				})
+				this.$api.doRequest('get', '/warehouseBaseInfo/getWarehouse', {
+					id: this.cangId
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.positionList = res.data.data.warehousePositionInfoList
+					}
+				})
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectContractNoList', {
+					compId: '',
+					flag: 5
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.contractNoList = res.data.data
+					}
+				})
+			},
+			onProgress(e) {
+				console.log(e)
+			},
+			onRemove(index) {},
+			submit() {
+				if (!this.detailData.grossWeight) {
+					this.$api.msg('毛重不能为空')
+					return
+				}
+				if (isNaN(this.detailData.grossWeight) ||
+					(String(this.detailData.grossWeight).indexOf('.') != -1 &&
+						String(this.detailData.grossWeight).length -
+						(String(this.detailData.grossWeight).indexOf('.') + 1) >
+						1) ||
+					this.detailData.grossWeight < 1 ||
+					this.detailData.grossWeight > 100000
+				) {
+					this.$api.msg('毛重输入错误!')
+					return
+				}
+				let that = this
+				uni.showModal({
+					content: "确定提交检斤信息?",
+					success(res) {
+						if (res.confirm) {
+							that.$api.doRequest('post', '/weighingManagement/api/editGrossWeight',
+								that.detailData).then(res => {
+								if (res.data.code == 200) {
+									that.$api.msg('提交成功')
+									uni.navigateBack()
+								}
+							})
+						}
+
+					}
+				})
+			},
+			slectcontractNo(){
+				uni.navigateTo({
+					url:'/pages/erp/exWarehousing/selectContractNo'
+				})
+			},
+			slectCarNo(){
+				uni.navigateTo({
+					url:'/pages/erp/exWarehousing/selectCarNo'
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	uni-page-body {
+		overflow: hidden;
+	}
+
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 140rpx 20rpx;
+
+		.top {
+			display: flex;
+			margin-bottom: 20rpx;
+
+			.top-left {
+				margin-right: 20rpx;
+			}
+		}
+	}
+
+	.content,
+	.content1,
+	.content2 {
+		border-radius: 20rpx;
+		background: white;
+		padding: 20rpx;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 600;
+			color: #333333;
+		}
+
+		.row {
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1px solid #EEEEEE;
+			padding: 21rpx 0;
+
+			.right,
+			input {
+				font-size: 28rpx;
+				color: #333333;
+			}
+		}
+
+		.row-bottom {
+
+			// border: 0;
+			.right-bottom {
+				width: 300rpx;
+				text-align: right;
+			}
+		}
+	}
+
+	.content1 {
+		margin-top: 20rpx;
+	}
+
+	.content2 {
+		margin-top: 10px;
+		display: flex;
+		align-items: center;
+
+		.left {
+			margin-right: 20px;
+		}
+	}
+
+	.submit {
+		width: 40%;
+		background: #22C572;
+		border-radius: 10rpx;
+	}
+	.edit-btn{
+		background: #22C572;
+		width: 100rpx;
+		height: 50rpx;
+		margin: 0;
+		color: white;
+	}
+	.has-btn{
+		align-items: center;
+	}
+	.bottom-btn{
+		width: 92%;
+		position: fixed;
+		bottom: 40rpx;
+		display: flex;
+		z-index: 2;
+	}
+</style>

+ 97 - 5
pages/erp/improvedWrehousing/improvedWrehousing.vue

@@ -1,6 +1,27 @@
 <template>
-	<view>
-		待完善入库
+	<view class="wrap">
+		<view class="dropdown content1">
+			<view class="left"  @click='show1=true'>
+				<view>{{warehouseName}}</view>
+				<u-icon name="arrow-right" color=""></u-icon>
+				<u-select v-model="show1" :default-value='[0]' :list="warehouseList" @confirm="confirmWarehouse">
+				</u-select>
+			</view>
+			<view class="right"  @click='show2=true'>
+				<view>{{positionName}}</view>
+				<u-icon name="arrow-right" color=""></u-icon>
+				<u-select v-model="show2" :default-value='[0]' :list="positionList" @confirm="confirmPositon">
+				</u-select>
+			</view>
+		</view>
+		<view class="content2">
+			<view class="content2-item" v-for="(item,index) in dataList" @click="goDetail(item)">
+				<view class="item-style">{{item.val1}}</view>
+				<view class="item-style">{{item.val2}}</view>
+				<view class="item-style">{{item.val3}}</view>
+				<view class="item-style">{{item.val4}}</view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -8,15 +29,86 @@
 	export default {
 		data() {
 			return {
-				
+				show1:false,
+				show2:false,
+				warehouseName: '鲅鱼圈一号库',
+				positionName: '102仓位',
+					warehouseList: [
+						{
+						"label": '1',
+						"value": '1'
+						}
+					],
+					positionList: [
+						{
+						"label": '102仓位',
+						"value": '1'
+						}
+					],
+					dataList:[
+						{
+						val1:'我是合同编号',
+						val2:'我是车牌号',
+						val3:'我是暂存时间',
+						val4:'我是提交人姓名'
+					},
+					{
+						val1:'我是合同编号',
+						val2:'我是车牌号',
+						val3:'我是暂存时间',
+						val4:'我是提交人姓名'
+					},
+					{
+						val1:'我是合同编号',
+						val2:'我是车牌号',
+						val3:'我是暂存时间',
+						val4:'我是提交人姓名'
+					},
+					]
 			}
 		},
 		methods: {
+			confirmWarehouse(){},
+			confirmPositon(){},
+			goDetail(val){
+				uni.navigateTo({
+					url:'improvedWrehousingDetail?data='+val,
+					
+				})
+			}
 			
 		}
 	}
 </script>
 
-<style>
-
+<style scoped lang="scss">
+	.dropdown{
+		display: flex;
+		margin:20rpx 0;
+		justify-content: space-between;
+		.left,.right{
+			display: flex;
+		}
+	}
+	.content1{
+		background: red;
+		padding: 20rpx;
+		margin: 20rpx;
+		border-radius: 10rpx;
+	}
+	.content2{
+		padding: 20rpx;
+		margin: 20rpx;
+		border-bottom: 1px solid #ccc;
+		background: yellow;
+		.content2-item{
+			margin-bottom: 10rpx;
+			border-bottom:1px solid #ccc ;
+			// padding-bottom: 10px;
+		}
+		.item-style{
+			display: inline-block;
+			width: 50%;
+		}
+	}
 </style>

+ 456 - 0
pages/erp/improvedWrehousing/improvedWrehousingDetail.vue

@@ -0,0 +1,456 @@
+<template>
+	<view class="warp">
+		<view class="top">
+			<view class="top-left">鲅鱼圈一号库</view>
+			<view>102仓位</view>
+		</view>
+		<view class="content">
+			<view class="row">
+				<view class="left">合同编号</view>
+				<view @click='slectcontractNo'>{{detailData.contractNo}}</view>
+			</view>
+			<view class="row">
+				<view class="left">货名</view>
+				<view class="right">{{detailData.goodsName}}</view>
+			</view>
+			<view class="row">
+				<view class="left">类型</view>
+				<view @click='show1=true'>请选择类型</view>
+				<u-picker :range="typeList" range-key="type" @confirm='typePicker($event)' v-model="show1"
+					mode="selector">
+				</u-picker>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">毛重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入毛重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">皮重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入皮重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">扣重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="0"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">净重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="不可编辑,自动计算"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">扣款(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="0"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">扣重比</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入扣重比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">干粮水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入干粮水分占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">潮粮水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入潮粮水分占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">纯重(吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="不可编辑,自动计算"></input>
+			</view>
+			<view class="row">
+				<view class="left">品级</view>
+				<view @click='show3=true'>请选择品级</view>
+				<u-picker :range="pjList" range-key="name" @confirm='handlerPicker($event)' v-model="show3" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">经办人</view>
+				<view @click='show6=true'>请选择经办人</view>
+				<u-picker :range="handlerList" range-key="name" @confirm='handlerPicker($event)' v-model="show6" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">入库日期</view>
+				<view @click='show4=true'>请选择日期</view>
+				<u-calendar v-model="show4" mode="date" @change='dateChange'></u-calendar>
+			</view>
+			<view class="row">
+				<view class="left">入库类型</view>
+				<view @click='show5=true'>请选择入库类型</view>
+				<u-picker :range="warehousingTypeList" range-key="type" @confirm='warehousingTypePicker($event)' v-model="show5" mode="selector">
+				</u-picker>
+			</view>
+			<view class="row">
+				<view class="left">车牌号</view>
+				<view @click='slectCarNo'>{{detailData.carNo}}</view>
+			</view>
+			<view class="row row-bottom has-btn">
+				<view class="left">成本(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="自动获取"></input>
+					<u-button class="edit-btn">编辑</u-button>
+			</view>
+			<view class="row row-bottom has-btn">
+				<view class="left">运费(元/吨)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="自动获取"></input>
+					<u-button class="edit-btn">编辑</u-button>
+			</view>
+		</view>
+		<view class="content2">
+			<view class="left">上传磅单</view>
+			<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="1"
+				:size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
+				@on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload>
+		</view>
+		<view class="content1">
+			<view class="title">
+				质检数据(选填)
+			</view>
+			<view class="row row-bottom">
+				<view class="left">质检员</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入质检员姓名"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">水分(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入水分占比"></input>
+			</view>
+			<view class="row row-bottom" style="border: 0;">
+				<view class="left">容重(克/升)</view>
+				<input v-model='detailData.netWeight' class="right-bottom" disabled placeholder="输入容重"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">热损伤(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入热损伤占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">杂质(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入杂质占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">霉变粒(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入霉变粒占比"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">不完善粒(%)</view>
+				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
+					placeholder="输入不完善粒占比"></input>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+		<view class="bottom-btn">
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">暂存</u-button>
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">提交</u-button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import upload from '@/components/upload.vue';
+	export default {
+		components: {
+			upload
+		},
+		data() {
+			return {
+				show: false,
+				show1: false,
+				show2: false,
+				show3: false,
+				show4: false,
+				show5: false,
+				show6: false,
+				contractNoList: [{
+					contractNo: "123"
+				}],
+				typeList: [{
+						type: "干粮"
+					},
+					{
+						type: "潮粮"
+					}
+				],
+				pjList: [{
+						type: "一等"
+					},
+					{
+						type: "二等"
+					},
+					{
+						type: "三等"
+					},
+					{
+						type: "等外"
+					}
+				],
+				handlerList: [{
+						name: "张三"
+					},
+					{
+						name: "二等"
+					},
+					{
+						name: "三等"
+					},
+					{
+						name: "等外"
+					}
+				],
+				warehousingTypeList: [{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					},
+					{
+						type: "采购入库"
+					}
+				],
+				action: this.$uploadUrl,
+				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
+				btnLoading: false, //防止重复点击
+				isAdd: true,
+				detailData: {
+					contractNo: "123",
+					carNo:'辽H12345',
+					name: "",
+					goodsName: "123",
+					qualityInspectionManagement: {}
+				}
+			}
+		},
+		onLoad(options) {
+			this.id = options.id
+			this.cangId = options.cangId
+		},
+		onShow() {
+			// this.getWeighingManagement()
+		},
+		methods: {
+			contractNopicker(e) {},
+			typePicker(e) {
+				console.log(e)
+			},
+			pjPicker(e) {
+				console.log(e)
+			},
+			handlerPicker(e) {
+				console.log(e)
+			},
+			dateChange(e){
+				console.log(e)
+			},
+			warehousingTypePicker(e) {
+				console.log(e)
+			},
+			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;
+				}
+			},
+			calculate() {
+				this.detailData.netWeight = this.detailData.grossWeight - this.detailData.tare
+			},
+			getImgUrl(res) {
+				this.detailData.addressUrl = res
+				console.log(res)
+				console.log('------------res-----------')
+			},
+			onError(error) {
+				alert(error)
+				console.log('------------error-----------')
+				console.log(error)
+			},
+			contractNopicker(e) {
+				// this.detailData.goodsName=this.contractNoList[e[0]].goodsName
+				// this.detailData.contractNo=this.contractNoList[e[0]].contractNo
+			},
+			binNumberpicker(e) {
+				this.detailData.binNumber = this.positionList[e[0]].binNumber
+			},
+			getWeighingManagement() {
+				this.$api.doRequest('get', '/weighingManagement/getWeighingManagement', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						console.log(res)
+						this.detailData = res.data.data
+					}
+				})
+				this.$api.doRequest('get', '/warehouseBaseInfo/getWarehouse', {
+					id: this.cangId
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.positionList = res.data.data.warehousePositionInfoList
+					}
+				})
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectContractNoList', {
+					compId: '',
+					flag: 5
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.contractNoList = res.data.data
+					}
+				})
+			},
+			onProgress(e) {
+				console.log(e)
+			},
+			onRemove(index) {},
+			submit() {
+				if (!this.detailData.grossWeight) {
+					this.$api.msg('毛重不能为空')
+					return
+				}
+				if (isNaN(this.detailData.grossWeight) ||
+					(String(this.detailData.grossWeight).indexOf('.') != -1 &&
+						String(this.detailData.grossWeight).length -
+						(String(this.detailData.grossWeight).indexOf('.') + 1) >
+						1) ||
+					this.detailData.grossWeight < 1 ||
+					this.detailData.grossWeight > 100000
+				) {
+					this.$api.msg('毛重输入错误!')
+					return
+				}
+				let that = this
+				uni.showModal({
+					content: "确定提交检斤信息?",
+					success(res) {
+						if (res.confirm) {
+							that.$api.doRequest('post', '/weighingManagement/api/editGrossWeight',
+								that.detailData).then(res => {
+								if (res.data.code == 200) {
+									that.$api.msg('提交成功')
+									uni.navigateBack()
+								}
+							})
+						}
+
+					}
+				})
+			},
+			slectcontractNo(){
+				uni.navigateTo({
+					url:'/pages/erp/warehousing/selectContractNo'
+				})
+			},
+			slectCarNo(){
+				uni.navigateTo({
+					url:'/pages/erp/warehousing/selectCarNo'
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	uni-page-body {
+		overflow: hidden;
+	}
+
+	.warp {
+		margin: 10rpx;
+		padding: 20rpx 20rpx 140rpx 20rpx;
+
+		.top {
+			display: flex;
+			margin-bottom: 20rpx;
+
+			.top-left {
+				margin-right: 20rpx;
+			}
+		}
+	}
+
+	.content,
+	.content1,
+	.content2 {
+		border-radius: 20rpx;
+		background: white;
+		padding: 20rpx;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 600;
+			color: #333333;
+		}
+
+		.row {
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1px solid #EEEEEE;
+			padding: 21rpx 0;
+
+			.right,
+			input {
+				font-size: 28rpx;
+				color: #333333;
+			}
+		}
+
+		.row-bottom {
+
+			// border: 0;
+			.right-bottom {
+				width: 300rpx;
+				text-align: right;
+			}
+		}
+	}
+
+	.content1 {
+		margin-top: 20rpx;
+	}
+
+	.content2 {
+		margin-top: 10px;
+		display: flex;
+		align-items: center;
+
+		.left {
+			margin-right: 20px;
+		}
+	}
+
+	.submit {
+		width: 40%;
+		background: #22C572;
+		border-radius: 10rpx;
+	}
+	.edit-btn{
+		background: #22C572;
+		width: 100rpx;
+		height: 50rpx;
+		margin: 0;
+		color: white;
+	}
+	.has-btn{
+		align-items: center;
+	}
+	.bottom-btn{
+		width: 92%;
+		position: fixed;
+		bottom: 40rpx;
+		display: flex;
+		z-index: 2;
+	}
+</style>

+ 19 - 1
pages/erp/index.vue

@@ -88,7 +88,25 @@
 						num: 3,
 						name: '待完善出库',
 						// icon: 'cuIcon-edit',
-						src: '../../static/img/sign/shezhi@2x.png',
+						src: '../../static/img/erp/shougouzhijian@3x.png',
+						tips: 0,
+						url: `/pages/erp/improvedExWaehousing/improvedExWaehousing`,
+						show: true
+					},
+					{
+						num: 4,
+						name: '开通业务',
+						// icon: 'cuIcon-edit',
+						src: '../../static/img/erp/shougouzhijian@3x.png',
+						tips: 0,
+						url: `/pages/erp/improvedExWaehousing/improvedExWaehousing`,
+						show: true
+					},
+					{
+						num: 5,
+						name: '联系客服',
+						// icon: 'cuIcon-edit',
+						src: '../../static/img/erp/shougouzhijian@3x.png',
 						tips: 0,
 						url: `/pages/erp/improvedExWaehousing/improvedExWaehousing`,
 						show: true

+ 165 - 0
pages/erp/openService/openService.vue

@@ -0,0 +1,165 @@
+<template>
+	<view class="wrap">
+		<view class="content">
+			<view class="row row-bottom">
+				<view class="left">姓名</view>
+				<input @input='calculate' class="right-bottom" placeholder="请输入姓名"></input>
+			</view>
+			<view class="row row-bottom">
+				<view class="left">电话</view>
+				<input @input='calculate' class="right-bottom" placeholder="请输入电话"></input>
+			</view>
+			<view class="row no-boder">
+				<view class="left">留言</view>
+			</view>
+			<view class="row no-boder">
+				<u-input v-model="value" :type="type" :border="border" :height="height" :auto-height="autoHeight" />
+			</view>
+			<view class="bottom">
+				<u-button type="primary" class="submit" hover-class="none" @click="submit">提交</u-button>
+			</view>
+		</view>
+		<u-toast ref="uToast" />
+	</view>
+</template>
+<script>
+	import {
+		mapState
+	} from 'vuex';
+
+	export default {
+		components: {
+
+		},
+		data() {
+			return {
+				value: '',
+				type: 'textarea',
+				border: true,
+				height: 100,
+				autoHeight: true,
+			}
+		},
+
+		onLoad() {
+
+		},
+		// #ifndef MP
+		onNavigationBarButtonTap(e) {
+			const index = e.index;
+			if (index === 0) {
+				this.navTo('/pages/set/set');
+			} else if (index === 1) {
+				// #ifdef APP-PLUS
+				const pages = getCurrentPages();
+				const page = pages[pages.length - 1];
+				const currentWebview = page.$getAppWebview();
+				currentWebview.hideTitleNViewButtonRedDot({
+					index
+				});
+				// #endif
+				uni.navigateTo({
+					url: '/pages/notice/notice'
+				})
+			}
+		},
+		// #endif
+		computed: {
+			...mapState(['hasLogin', 'userInfo']),
+		},
+		onShow() {
+			this.$api.doRequest('get', '/commonUser/api/checkSession').then(res => {
+				console.log("checkSession", res)
+				if (res.data.data == "INVALID") {
+					uni.showModal({
+						title: '登录提示',
+						content: 'Session过期需要重新登录,是否立即登录?',
+						showCancel: true,
+						confirmText: '登录',
+						success: (e) => {
+							if (e.confirm) {
+								uni.navigateTo({
+									url: '/pages/public/login'
+								})
+							}
+						},
+						fail: () => {},
+						complete: () => {}
+					})
+				}
+			})
+			console.log("hasLogin", this.hasLogin)
+		},
+		methods: {
+			/**
+			 * 统一跳转接口,拦截未登录路由
+			 * navigator标签现在默认没有转场动画,所以用view
+			 */
+			navTo(url) {
+				if (!this.hasLogin) {
+					url = '/pages/public/login';
+				}
+				uni.navigateTo({
+					url
+				})
+			},
+			calculate() {},
+			submit() {
+				this.$refs.uToast.show({
+					title: '登录成功',
+					type: 'error',
+					url: '/pages/user/index'
+				})
+			}
+		}
+	}
+</script>
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+		overflow: hidden;
+	}
+
+	.wrap {
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+		padding: 20rpx;
+	}
+
+	.content {
+		border-radius: 20rpx;
+		background: white;
+		padding: 20rpx;
+
+		.row {
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1px solid #EEEEEE;
+			padding: 21rpx 0;
+
+			.right,
+			input {
+				font-size: 28rpx;
+				color: #333333;
+			}
+		}
+
+		.row-bottom {
+			.right-bottom {
+				width: 300rpx;
+				text-align: right;
+			}
+		}
+
+		.no-boder {
+			border: 0;
+		}
+	}
+
+	.submit {
+		margin-top: 200rpx;
+		background: #22C572;
+		border-radius: 10rpx;
+	}
+</style>

+ 7 - 7
pages/erp/warehousing/warehousing.vue

@@ -21,21 +21,21 @@
 				</u-picker>
 			</view>
 			<view class="row row-bottom">
-				<view class="left">毛重(公斤)</view>
+				<view class="left">毛重()</view>
 				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
 					placeholder="输入毛重"></input>
 			</view>
 			<view class="row row-bottom">
-				<view class="left">皮重(公斤)</view>
+				<view class="left">皮重()</view>
 				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
 					placeholder="输入皮重"></input>
 			</view>
 			<view class="row row-bottom">
-				<view class="left">扣重(公斤)</view>
+				<view class="left">扣重()</view>
 				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="0"></input>
 			</view>
 			<view class="row row-bottom">
-				<view class="left">净重(公斤)</view>
+				<view class="left">净重()</view>
 				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
 					placeholder="不可编辑,自动计算"></input>
 			</view>
@@ -56,7 +56,7 @@
 				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom" placeholder="输入潮粮水分占比"></input>
 			</view>
 			<view class="row row-bottom">
-				<view class="left">纯重(公斤)</view>
+				<view class="left">纯重()</view>
 				<input @input='calculate' v-model='detailData.grossWeight' class="right-bottom"
 					placeholder="不可编辑,自动计算"></input>
 			</view>
@@ -147,8 +147,8 @@
 		</view>
 		<u-toast ref="uToast" />
 		<view class="bottom-btn">
-			<u-button type="primary" class="submit" @click="submit">暂存</u-button>
-			<u-button type="primary" class="submit" @click="submit">提交</u-button>
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">暂存</u-button>
+			<u-button type="primary" class="submit" hover-class="none" @click="submit">提交</u-button>
 		</view>
 	</view>
 </template>