Kaynağa Gözat

提交最新的PDA程序

SunYaLong 9 ay önce
ebeveyn
işleme
0dfe5b8ec2

+ 4 - 30
.gitignore

@@ -1,30 +1,4 @@
-# ---> Node
-# Logs
-logs
-*.log
-npm-debug.log*
-
-# Runtime data
-pids
-*.pid
-*.seed
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directory
-# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git
-node_modules
-
+node_modules/
+.project
+unpackage/
+.DS_Store

+ 147 - 10
TFT-PDA/App.vue

@@ -1,10 +1,15 @@
 <script>
 <script>
 	export default {
 	export default {
+		data(){
+            return {
+                curVersion: 100
+            }
+        },
 		onLaunch: function() {
 		onLaunch: function() {
-			console.log('App Launch')
+			//console.log('App Launch')
 			// #ifdef APP-PLUS
 			// #ifdef APP-PLUS
 			// token标志来判断
 			// token标志来判断
-			let token= uni.getStorageSync('userInfo');    
+			let token= uni.getStorageSync('userInfo');
 			if (token) {
 			if (token) {
 				//存在则关闭启动页进入首页
 				//存在则关闭启动页进入首页
 				plus.navigator.closeSplashscreen();
 				plus.navigator.closeSplashscreen();
@@ -19,19 +24,149 @@
 				// })
 				// })
 			}
 			}
 			// #endif
 			// #endif
+			let baseUrl= uni.getStorageSync('BasrUrl');
+			if(baseUrl) {
+				uni.setStorage({
+					key: 'BasrUrl',
+					data: baseUrl
+				});
+			}
+			else {
+				uni.setStorage({
+					key: 'BasrUrl',
+					data: 'http://192.168.150.100:8888'
+				});
+			}
 		},
 		},
 		onShow: function() {
 		onShow: function() {
-			console.log('App Show')
+			this.checkUpdate();
+			//console.log('App Show')
 		},
 		},
 		onHide: function() {
 		onHide: function() {
-			console.log('App Hide')
+			//console.log('App Hide')
 		},
 		},
 		globalData: {
 		globalData: {
-			baseUrl: 'http://192.168.137.1:8888',
-			userName: 'admin',
-			password: '123456'
+			baseUrl: 'http://192.168.150.100:8888',
+			userName: '',
+			password: ''
 		},
 		},
 		methods: {
 		methods: {
+			// 版本升级
+			async checkUpdate(){
+				// 获取manifest.json 的信息
+				plus.runtime.getProperty( plus.runtime.appid, async function ( wgtinfo ) {
+					this.curVersion = parseInt(wgtinfo.versionCode);
+					// console.log( "this.curVersion:" + this.curVersion );
+					let parm = {
+						url : '/GetPdaLatestmsg',
+						data: {},
+						method: 'GET',
+						isHaveToken : false
+					}
+					let retData = await getApp().RequestData(parm)
+					if(retData.isSuccess) {
+						if(retData.data.code == 200 && parseInt(wgtinfo.versionCode) < retData.data.data.versionNo) {
+							uni.showModal({
+								title: '版本更新:' + retData.data.data.versionName,
+								content: retData.data.data.updateDetails,
+								confirmText: "更新",
+								showCancel: false,
+								success: function(e) {
+									if (e.confirm) {
+										let baseUrl= uni.getStorageSync('BasrUrl');
+										// console.log(baseUrl + '/GetPdaPackage')
+										getApp().createDownload(baseUrl + '/GetPdaPackage?fileName=' + retData.data.data.packageName);
+									} else {
+										//取消
+									}
+								}
+							});
+						}
+						else {
+							uni.showModal({
+								title: '提示',
+								content: '已是最新版本',
+								showCancel: false
+							});
+						}
+					}
+					else {
+						uni.showModal({
+							title: '提示',
+							content: '自动更新接口异常!!',
+							showCancel: false
+						});
+					}
+				});
+			},
+			createDownload(url){
+                var dtask = plus.downloader.createDownload(url, {},
+                    function(d, status) {
+                        uni.showToast({
+                            title: '下载完成',
+                            mask: false,
+                            duration: 1000
+                        });
+                        //console.log(dtask);
+                        // 下载完成
+                        // console.log('status: '+status);
+                        if (status == 200) {
+                            // console.log('下载成功:'+d.filename);
+                            // console.log('plus.io.convertLocalFileSystemURL(d.filename): '+plus.io.convertLocalFileSystemURL(d.filename))
+                            plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, function(success) {
+                                uni.showToast({
+                                    title: '安装成功',
+                                    mask: false,
+                                    duration: 1500
+                                });
+                            }, function(error) {
+                                uni.showToast({
+                                    title: '安装失败-01',
+                                    mask: false,
+                                    duration: 1500
+                                });
+                            })
+                        } else {
+                            uni.showToast({
+                                title: '更新失败-02',
+                                mask: false,
+                                duration: 1500
+                            });
+                        }
+                });
+                try {
+                    dtask.start(); // 开启下载的任务
+                    var prg = 0;
+                    var showLoading = plus.nativeUI.showWaiting("正在下载");  //创建一个showWaiting对象 
+                    dtask.addEventListener('statechanged', function(task,status) {
+                        // 给下载任务设置一个监听 并根据状态  做操作
+                        switch (task.state) {
+                            case 1:
+                                showLoading.setTitle("正在下载");
+                                break;
+                            case 2:
+                                showLoading.setTitle("已连接到服务器");
+                                break;
+                            case 3:
+                                prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100 );
+                                showLoading.setTitle("  正在下载" + prg + "%  ");
+                                break;
+                            case 4:
+                                plus.nativeUI.closeWaiting();
+                                //下载完成
+                                break;
+                        }
+                    });
+				} 
+				catch (err) {
+                    plus.nativeUI.closeWaiting();
+                    uni.showToast({
+                        title: '更新失败-03',
+                        mask: false,
+                        duration: 1500
+                    });
+                }
+            },
 			AppExit() {
 			AppExit() {
 				uni.showModal({
 				uni.showModal({
 					//计算删除的数量
 					//计算删除的数量
@@ -46,8 +181,9 @@
 							//console.log('用户点击了确定')
 							//console.log('用户点击了确定')
 							let userMsg = uni.getStorageSync('userInfo')
 							let userMsg = uni.getStorageSync('userInfo')
 							if(userMsg) {
 							if(userMsg) {
+								let baseUrlStr = uni.getStorageSync('BasrUrl')
 								uni.request({
 								uni.request({
-									url: 'http://192.168.137.1:8888/logout',
+									url: baseUrlStr + '/logout',
 									//自定义请求头信息
 									//自定义请求头信息
 									header: {
 									header: {
 										Authorization: 'Bearer ' + userMsg.tokenStr + '',
 										Authorization: 'Bearer ' + userMsg.tokenStr + '',
@@ -81,15 +217,16 @@
 			RequestData(parm) {
 			RequestData(parm) {
 				return new Promise((resolve,reject) => {
 				return new Promise((resolve,reject) => {
 					let userMsg = uni.getStorageSync('userInfo')
 					let userMsg = uni.getStorageSync('userInfo')
+					let baseUrlStr = uni.getStorageSync('BasrUrl')
 					// console.log(parm.data)
 					// console.log(parm.data)
 					uni.request({
 					uni.request({
-					    url: getApp().globalData.baseUrl + parm.url,
+					    url: baseUrlStr + parm.url,
 					    data: parm.data,
 					    data: parm.data,
 					    header: { //自定义请求头信息
 					    header: { //自定义请求头信息
 							Authorization: parm.isHaveToken? 'Bearer ' + userMsg.tokenStr + '' : '',
 							Authorization: parm.isHaveToken? 'Bearer ' + userMsg.tokenStr + '' : '',
 					        'content-type': 'application/json'
 					        'content-type': 'application/json'
 					    },
 					    },
-						timeout: 10000,
+						timeout: 20000,
 						method: parm.method,
 						method: parm.method,
 					    success: (res) => {
 					    success: (res) => {
 							resolve({
 							resolve({

+ 3 - 0
TFT-PDA/androidPrivacy.json

@@ -0,0 +1,3 @@
+{
+    "prompt": "template"
+}

+ 54 - 7
TFT-PDA/manifest.json

@@ -1,9 +1,9 @@
 {
 {
     "name" : "TFT-PDA",
     "name" : "TFT-PDA",
-    "appid" : "__UNI__230CC65",
+    "appid" : "__UNI__62A10E1",
     "description" : "",
     "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : "100",
+    "versionName" : "1.1.1",
+    "versionCode" : 111,
     "transformPx" : false,
     "transformPx" : false,
     "app-plus" : {
     "app-plus" : {
         /* 5+App特有相关 */
         /* 5+App特有相关 */
@@ -16,7 +16,10 @@
             "autoclose" : true,
             "autoclose" : true,
             "delay" : 0
             "delay" : 0
         },
         },
-        "modules" : {},
+        "modules" : {
+            "Barcode" : {},
+            "Camera" : {}
+        },
         /* 模块配置 */
         /* 模块配置 */
         "distribute" : {
         "distribute" : {
             /* 应用发布信息 */
             /* 应用发布信息 */
@@ -38,11 +41,55 @@
                     "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                     "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                     "<uses-feature android:name=\"android.hardware.camera\"/>",
                     "<uses-feature android:name=\"android.hardware.camera\"/>",
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
-                ]
+                ],
+                "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
+                "schemes" : "",
+                "minSdkVersion" : 26,
+                "targetSdkVersion" : 29
+            },
+            "ios" : {
+                "dSYMs" : false
             },
             },
-            "ios" : {},
             /* ios打包配置 */
             /* ios打包配置 */
-            "sdkConfigs" : {}
+            "sdkConfigs" : {
+                "ad" : {}
+            },
+            "icons" : {
+                "android" : {
+                    "hdpi" : "unpackage/res/icons/72x72.png",
+                    "xhdpi" : "unpackage/res/icons/96x96.png",
+                    "xxhdpi" : "unpackage/res/icons/144x144.png",
+                    "xxxhdpi" : "unpackage/res/icons/192x192.png"
+                },
+                "ios" : {
+                    "appstore" : "unpackage/res/icons/1024x1024.png",
+                    "ipad" : {
+                        "app" : "unpackage/res/icons/76x76.png",
+                        "app@2x" : "unpackage/res/icons/152x152.png",
+                        "notification" : "unpackage/res/icons/20x20.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "proapp@2x" : "unpackage/res/icons/167x167.png",
+                        "settings" : "unpackage/res/icons/29x29.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "spotlight" : "unpackage/res/icons/40x40.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png"
+                    },
+                    "iphone" : {
+                        "app@2x" : "unpackage/res/icons/120x120.png",
+                        "app@3x" : "unpackage/res/icons/180x180.png",
+                        "notification@2x" : "unpackage/res/icons/40x40.png",
+                        "notification@3x" : "unpackage/res/icons/60x60.png",
+                        "settings@2x" : "unpackage/res/icons/58x58.png",
+                        "settings@3x" : "unpackage/res/icons/87x87.png",
+                        "spotlight@2x" : "unpackage/res/icons/80x80.png",
+                        "spotlight@3x" : "unpackage/res/icons/120x120.png"
+                    }
+                }
+            },
+            "splashscreen" : {
+                "androidStyle" : "default",
+                "useOriginalMsgbox" : true
+            }
         }
         }
     },
     },
     /* SDK配置 */
     /* SDK配置 */

+ 66 - 2
TFT-PDA/pages.json

@@ -32,7 +32,7 @@
 		}
 		}
         ,{
         ,{
             "path" : "pages/Inspect/inspect01",
             "path" : "pages/Inspect/inspect01",
-            "style" :                                                                                    
+            "style" :
             {
             {
                 "navigationBarTitleText": "质检操作  步骤-1",
                 "navigationBarTitleText": "质检操作  步骤-1",
                 "enablePullDownRefresh": false
                 "enablePullDownRefresh": false
@@ -186,7 +186,7 @@
             "path" : "pages/Inspect/inspectOperateNew",
             "path" : "pages/Inspect/inspectOperateNew",
             "style" :                                                                                    
             "style" :                                                                                    
             {
             {
-                "navigationBarTitleText": "质检操作  步骤-2",
+                "navigationBarTitleText": "质检操作  步骤-3",
                 "enablePullDownRefresh": false
                 "enablePullDownRefresh": false
             }
             }
             
             
@@ -218,6 +218,70 @@
             }
             }
             
             
         }
         }
+        ,{
+            "path" : "pages/Inspect/inspectDtlNew",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "质检操作  步骤-2",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+		,{
+		    "path" : "pages/Inspect/PrintLabel",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "标签打印  步骤-1",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+		,{
+		    "path" : "pages/Inspect/PrintLabelDtl",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "标签打印  步骤-2",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+		,{
+		    "path" : "pages/Inspect/PrintLabelOperate",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "标签打印操作",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+        ,{
+            "path" : "pages/Inspect/FastOutStoreInspect01",
+            "style" :
+            {
+                "navigationBarTitleText": "质检结果-快速出库  步骤-1",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/Inspect/FastOutStoreInspectDtl",
+            "style" :
+            {
+                "navigationBarTitleText": "质检结果-快速出库  步骤-2",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/Inspect/FastOutStoreInspectOperate",
+            "style" :
+            {
+                "navigationBarTitleText": "质检结果-快速出库  步骤-3",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+		
     ],
     ],
 	"globalStyle": {
 	"globalStyle": {
 		"navigationBarTextStyle": "white",
 		"navigationBarTextStyle": "white",

+ 170 - 0
TFT-PDA/pages/Inspect/FastOutStoreInspect01.vue

@@ -0,0 +1,170 @@
+<template>
+	<view>
+		<view class="uni-form-item uni-column">
+			<view class="uni-flex uni-row">
+				<view class="title">交验单号:</view>
+				<input class="uni-input" style="-webkit-flex: 1;flex: 1;margin-right: 5px;" v-model="deliverNo" :focus="foucusIndex === 0" placeholder="请输入交验单号" @confirm="foucusChange0"/>
+			</view>
+			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
+				<view class="title">生产令号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 1" v-model="bomNo" placeholder="请输入生产令号" @confirm="foucusChange1"/>
+			</view>
+			<view class="uni-flex uni-row">
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重置条件</button>
+			</view>
+		</view>
+		<uni-section title="交验单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单数据......</view>
+			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
+			v-for="(item,key) in deliverList" :key="key" @click="goDetailPage(item)">
+				<text class="uni-navigate-text">{{item.deliverNo}}</text>
+				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
+			</view>
+			<view v-if="!isShowTips" style="text-align: center; margin-top: 10px;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 10px;"/>
+		</uni-section>
+	</view>
+</template>
+
+<script>
+	// TODO 修复Android v3 加载过慢问题
+	// #ifdef APP-PLUS
+	var domModule = weex.requireModule('dom');
+	domModule.addRule('fontFace', {
+		'fontFamily': "uniicons",
+		'src': "url('/static/uni.ttf')"
+	});
+	// #endif
+	export default {
+		data() {
+			return {
+				title: '没有查询到校验单数据......',
+				deliverNo : '',
+				bomNo: '',
+				isShowTips: true,
+				deliverList:[],
+				foucusIndex: 0,
+				current: 1,
+				total: 0,
+				pageSize: 10
+			}
+		},
+        onLoad() {
+			this.queryFun()
+			uni.$on('QueryInspect01', this.QueryInspect01)
+        },
+		onUnload() {
+			uni.$off('QueryInspect01', this.QueryInspect01)
+		},
+		methods: {
+			async queryFun() {
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
+				})
+				this.deliverList = []
+				let parm = {
+					url : '/business/SapDeliverRecord/QuerySapDeliverData',
+					data: {
+						DeliverNo: this.deliverNo,
+						BomNo: this.bomNo,
+						IsPrintQuery: false,
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'POST',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						for (let i = 0; i < len;  i++) {
+							this.deliverList.push({
+									deliverid: i + 1,
+									deliverNo: retData.data.data.result[i].deliverNo
+							});
+						}
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+					}
+					else {
+						this.isShowTips = true
+					}
+				}
+				else {
+					this.isShowTips = true
+				}
+				
+				uni.hideLoading()
+			},
+			resetCondition() {
+				this.deliverNo = ''
+				this.bomNo = ''
+				this.foucusIndex = 0
+			},
+			goDetailPage(item) {
+				let urlStr = '/pages/Inspect/FastOutStoreInspectDtl?deliverNo=' + item.deliverNo;
+				uni.navigateTo({
+					url: urlStr
+				});
+			},
+			foucusChange0(event) {
+				let str = event.detail.value
+				if(str.length !== 0) {
+					this.foucusIndex = 1
+				}
+			},
+			foucusChange1(event) {
+				let str = event.detail.value
+				if(str.length !== 0) {
+					this.foucusIndex = 2
+				}
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
+			},
+			QueryInspect01() {
+				this.queryFun()
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-nvue.css';
+	.uni-navigate-icon-01 {
+		color: #999999;
+		font-size: 14px;
+		font-weight: normal;
+	}
+	.uni-navigate-item1 {
+		align-items: center;
+		background-color: #f5f5f5;
+		border-top-style: solid;
+		border-top-color: #f0f0f0;
+		border-top-width: 1px;
+		padding: 12px;
+		cursor: pointer;
+		margin-bottom: 1px;
+	}
+	.uni-navigate-item1:active {
+		background-color: #007AFF;
+	}
+	.my-tips-view {
+		margin-top: 50px;
+		text-align: center;
+		color: #999999;
+		font-size: 20px;
+		font-weight: normal;
+	}
+</style>

+ 215 - 0
TFT-PDA/pages/Inspect/FastOutStoreInspectDtl.vue

@@ -0,0 +1,215 @@
+<template>
+	<view>
+		<view class="uni-form-item uni-column">
+			<view class="uni-flex uni-row">
+				<view class="title" style="width: 190rpx;">交验单号:</view>
+				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="deliverNo"/>
+			</view>
+			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
+				<view class="title" style="width: 190rpx;">规格型号\图号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入规格型号\图号" @confirm="confirmFun"/>
+			</view>
+			<!-- 2024 孙亚龙新增的注释。 由于不确定是哪个业务要加状态过滤查询条件,所以暂时注释掉代码 -->
+			<view class="uni-flex uni-row" style="margin-top: 5px;margin-bottom: 8px;">
+				<view class="title">质检状态:</view>
+				<view style="padding-top: 10rpx;padding-bottom: 10rpx;">
+					<uni-data-checkbox v-model="CheckStatus" :localdata="CheckStatusData"></uni-data-checkbox>
+				</view>
+			</view>
+			<view class="uni-flex uni-row">
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
+			</view>
+		</view>
+		<uni-section title="待质检的交验单明细:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单明细数据......</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 4px;"/>
+			<view v-if="!isShowTips" style="text-align: center;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<view v-for="(newsitem,key) in sapDeliverDtlList" :key="key">
+				<view class="myDeliverDetail"  @click="myDeliverDetailClick(newsitem)">
+					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
+						<text style="align-self: center;">物料编号:</text>
+						<text style="align-self: center;font-size: 30rpx;font-weight: bold;">{{newsitem.materialCode}}</text>
+						<text :class="newsitem.keyFlag ? 'keyFlagRed' : 'keyFlagGray'" style="align-self: center;margin-left: 20px;">{{newsitem.keyFlag ? '★' : '■'}}</text>
+					</view>
+					<view class="line-h"></view>
+					<view style="flex-direction: row;flex-direction: row;display: flex;-webkit-justify-content: space-between;justify-content: space-between;">
+						<view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">物料名称:</text>
+								<text style="align-self: center;font-size: 25rpx;word-wrap: break-word;width: 200px;">{{newsitem.materialName}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">规格型号/图号:</text>
+								<text style="align-self: center;font-size: 30rpx;font-weight: bold;word-wrap: break-word;width: 200px;">{{newsitem.materialSpec}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">交验单数量:</text>
+								<text style="align-self: center;font-size: 35rpx;font-weight: bold;color: blue;">{{newsitem.sumQty}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">已质检数量:</text>
+								<text style="align-self: center;font-size: 35rpx;font-weight: bold;color: blue;">{{newsitem.sumCheckQty}}</text>
+							</view>
+						</view>
+						<view v-if="newsitem.sumCheckQty < newsitem.sumQty" style="border-radius: 35px;width: 35px; background-color: lime;height: 35px;align-self: center;margin-right: 5px;"></view>
+						<view v-else style="border-radius: 35px;width: 35px; background-color: lightgray;height: 35px;align-self: center;margin-right: 5px;"></view>
+					</view>
+				</view>
+			</view>
+		</uni-section>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				deliverNo: '',
+				foucusIndex: 0,
+				materialSpecCode: '',
+				isShowTips: true,
+				sapDeliverDtlList:[],
+				current: 1,
+				total: 0,
+				pageSize: 10,
+				//2024 孙亚龙新增的注释。 由于不确定是哪个业务要加状态过滤查询条件,所以暂时注释掉代码
+				CheckStatus: -1,
+				CheckStatusData: [{
+						value: -1,
+						text: '全部'
+					},{
+						value: 0,
+						text: '已质检'
+					},{
+						value: 1,
+						text: '未质检'
+					}
+				]
+			}
+		},
+        onLoad(option) {
+			this.deliverNo = option.deliverNo;
+			this.queryFun()
+			uni.$on('CallSapDeliverDtlQueryFunc', this.CallSapDeliverDtlQueryFunc)
+        },
+		onUnload() {
+			uni.$off('CallSapDeliverDtlQueryFunc', this.CallSapDeliverDtlQueryFunc)
+		},
+		methods: {
+			async queryFun() {
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
+				})
+				this.sapDeliverDtlList = []
+				let parm = {
+					url : '/business/SapDeliverRecord/GetSapDeliverRecordSumList',
+					data: {
+						DeliverNo: this.deliverNo,
+						MaterialSpec: this.materialSpecCode,
+						CheckStatus: this.CheckStatus, // 质检结果快速出库默认(CheckStatus = -1)查询全部质检状态的数据。
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'GET',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+						this.sapDeliverDtlList = retData.data.data.result
+					}
+					else {
+						this.isShowTips = true
+					}
+				}
+				else {
+					this.isShowTips = true
+				}
+				uni.hideLoading()
+			},
+			resetCondition() {
+				this.materialSpecCode = ""
+				this.sapDeliverDtlList = []
+				this.CheckStatus = -1
+				this.isShowTips = true
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+			},
+			confirmFun() {
+				this.queryFun()
+			},
+			myDeliverDetailClick(model) {
+				model.deliverNo = this.deliverNo;
+				if(model.sumCheckQty >= model.sumQty) {
+					uni.showToast({
+						title: '已全部质检',
+						icon: 'error',
+						mask: true,
+						duration: 1500
+					})
+				} else {
+					uni.navigateTo({
+						url: '/pages/Inspect/FastOutStoreInspectOperate',
+						success() {
+							uni.$emit('sendDeliverDtlData',model)
+						}
+					});
+				}
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
+			},
+			CallSapDeliverDtlQueryFunc() {
+				this.materialSpecCode = ""
+				this.queryFun()
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.my-tips-view {
+		/* margin-top: 50px; */
+		text-align: center;
+		color: #999999;
+		font-size: 20px;
+		font-weight: normal;
+	}
+	.myDeliverDetail {
+		border: 1px solid #cccccc;
+		border-radius: 5px;
+		margin-top: 1px;
+	}
+	.myDeliverDetail:active {
+		background-color: aliceblue;
+	}
+	.line-h {
+	    height: 1rpx;
+	    background-color: #cccccc;
+	}
+	.keyFlagRed {
+		color: red;
+	}
+	.keyFlagGray {
+		color: lightgray;
+	}
+</style>

+ 161 - 0
TFT-PDA/pages/Inspect/FastOutStoreInspectOperate.vue

@@ -0,0 +1,161 @@
+<template>
+	<view style="padding: 3px;">
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单号:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.deliverNo}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料号:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialCode}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;margin-bottom: 5px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料名称:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialName}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">规格型号/图号:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialSpec}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单数量:</text>
+			<text style="align-self: center;font-size: 40rpx;font-weight: bold;">{{deliverDtlMd.sumQty}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">已质检数量:</text>
+			<text style="align-self: center;font-size: 40rpx;font-weight: bold;color: blue;">{{deliverDtlMd.sumCheckQty}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px; ">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 230rpx;">BN/SN码:</text>
+			<input class="uni-input" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;" v-model="bnSnCode" :focus="foucusIndex === 0" placeholder="请输BN/SN码" />
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 230rpx;">合格数量:</text>
+			<input class="uni-input" type="number" style="margin-right: 5px;color: blue;font-size: 40rpx;font-weight: bold;" v-model="checkOkQty" placeholder="请输合格数量" />
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: red;width: 230rpx;">不合格数量:</text>
+			<input class="uni-input" type="number" style="margin-right: 5px;color: red;font-size: 40rpx;font-weight: bold;" v-model="checkNgQty" placeholder="请输不合格数量" />
+		</view>
+		<button type="primary" style="margin-top: 20px;" @click="resetCondition">重   置</button>
+		<button type="primary" style="margin-top: 20px;" @click="submitResult">质检结果&#8194;==>>&#8194;快速出库过账</button>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				deliverDtlMd: {},
+				bnSnCode: '',
+				checkOkQty: 0,
+				checkNgQty: 0,
+				foucusIndex: 0
+			}
+		},
+		onUnload() {
+			
+		},
+		onLoad() {
+			uni.$once('sendDeliverDtlData', (data) => {
+				this.deliverDtlMd = data
+				this.checkOkQty = data.sumQty - data.sumCheckQty
+			})
+		},
+		methods: {
+			async submitResult() {
+				if(this.isEmptyStr(this.bnSnCode)) {
+					uni.showToast({
+						title: 'BN/SN码不能为空!',
+						icon: 'none',
+						duration: 1000
+					})
+					return;
+				}
+				if(Number(this.checkOkQty) <= 0 && Number(this.checkNgQty) <= 0) {
+					uni.showToast({
+						title: '质检合格数量和不合格数量,至少需要输入一项!',
+						icon: 'none',
+						duration: 1000
+					})
+					return;
+				}
+				if((Number(this.checkOkQty) + Number(this.checkNgQty) + this.deliverDtlMd.sumCheckQty) > this.deliverDtlMd.sumQty) {
+					uni.showToast({
+						title: '质检合格数量+不合格数量 不能大于未质检数量。录入错误!',
+						icon: 'none',
+						duration: 1000
+					})
+					return;
+				}
+				let tmpMd = this.deliverDtlMd;
+				tmpMd.DeliverNo = this.deliverNo;
+				tmpMd.MaterialSpec = this.materialSpecCode;
+				tmpMd.BnSnCode = this.bnSnCode;
+				tmpMd.CheckOkQty = this.checkOkQty;
+				tmpMd.CheckNgQty = this.checkNgQty;
+				let parm = {
+					url : '/business/QaInspectRecord/InspectOneClickOutStore',
+					data: tmpMd,
+					method: 'POST',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						uni.navigateBack({
+							url: '/pages/Inspect/FastOutStoreInspectDtl',
+							success: () => {
+								uni.$emit('CallSapDeliverDtlQueryFunc',null);
+							}
+						});
+					}
+					else {
+						uni.showToast({
+							title: '提交数据失败!' + retData.data.msg,
+							icon: 'none',
+							duration: 1000
+						})
+					}
+				}
+				else {
+					uni.showToast({
+						title: '接口异常!' + retData.retMsg,
+						icon: 'none',
+						duration: 1000
+					})
+				}
+			},
+			isEmptyStr(s) {
+				if (s == undefined || s === '') {
+					return true
+				}
+				return false
+			},
+			foucusChange0(event) {
+				let str = event.detail.value
+				if(str.length !== 0) {
+					this.foucusIndex = 1
+				}
+			},
+			foucusChange1(event) {
+				let str = event.detail.value
+				if(str.length !== 0) {
+					this.foucusIndex = 2
+				}
+			},
+			resetCondition() {
+				this.bnSnCode = ''
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+				this.checkOkQty = this.deliverDtlMd.sumQty - this.deliverDtlMd.sumCheckQty
+				this.checkNgQty = 0
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-nvue.css';
+</style>

+ 166 - 0
TFT-PDA/pages/Inspect/PrintLabel.vue

@@ -0,0 +1,166 @@
+<template>
+	<view>
+		<view class="uni-form-item uni-column">
+			<view class="uni-flex uni-row">
+				<view class="title">交验单号:</view>
+				<input class="uni-input" style="-webkit-flex: 1;flex: 1;margin-right: 5px;" v-model="deliverNo" :focus="foucusIndex === 0" placeholder="请输入交验单号" @confirm="foucusChange0"/>
+			</view>
+			<view class="uni-flex uni-row" style="margin-top: 5px;">
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重置条件</button>
+			</view>
+		</view>
+		<uni-section title="交验单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单数据......</view>
+			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
+			v-for="(item,key) in deliverList" :key="key" @click="goDetailPage(item)">
+				<text class="uni-navigate-text">{{item.deliverNo}}</text>
+				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
+			</view>
+			<view v-if="!isShowTips" style="text-align: center; margin-top: 10px;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 10px;"/>
+		</uni-section>
+	</view>
+</template>
+
+<script>
+	// TODO 修复Android v3 加载过慢问题
+	// #ifdef APP-PLUS
+	var domModule = weex.requireModule('dom');
+	domModule.addRule('fontFace', {
+		'fontFamily': "uniicons",
+		'src': "url('/static/uni.ttf')"
+	});
+	// #endif
+	export default {
+		data() {
+			return {
+				title: '没有查询到校验单数据......',
+				deliverNo : '',
+				bomNo: '',
+				isShowTips: true,
+				deliverList:[],
+				foucusIndex: 0,
+				current: 1,
+				total: 0,
+				pageSize: 10
+			}
+		},
+        onLoad() {
+			this.queryFun()
+			uni.$on('QueryInspect01', this.QueryInspect01)
+        },
+		onUnload() {
+			uni.$off('QueryInspect01', this.QueryInspect01)
+		},
+		methods: {
+			async queryFun() {
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
+				})
+				this.deliverList = []
+				let parm = {
+					url : '/business/SapDeliverRecord/QuerySapDeliverData',
+					data: {
+						DeliverNo: this.deliverNo,
+						BomNo: this.bomNo,
+						IsPrintQuery: true,
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'POST',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						for (let i = 0; i < len;  i++) {
+							this.deliverList.push({
+									deliverid: i + 1,
+									deliverNo: retData.data.data.result[i].deliverNo
+							});
+						}
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+					}
+					else {
+						this.isShowTips = true
+					}
+				}
+				else {
+					this.isShowTips = true
+				}
+				
+				uni.hideLoading()
+			},
+			resetCondition() {
+				this.deliverNo = ''
+				this.bomNo = ''
+				this.foucusIndex = 0
+			},
+			goDetailPage(item) {
+				let urlStr = '/pages/Inspect/PrintLabelDtl?deliverNo=' + item.deliverNo;
+				uni.navigateTo({
+					url: urlStr
+				});
+			},
+			foucusChange0(event) {
+				let str = event.detail.value
+				if(str.length !== 0) {
+					this.foucusIndex = 1
+				}
+			},
+			foucusChange1(event) {
+				let str = event.detail.value
+				if(str.length !== 0) {
+					this.foucusIndex = 2
+				}
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
+			},
+			QueryInspect01() {
+				this.queryFun()
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-nvue.css';
+	.uni-navigate-icon-01 {
+		color: #999999;
+		font-size: 14px;
+		font-weight: normal;
+	}
+	.uni-navigate-item1 {
+		align-items: center;
+		background-color: #f5f5f5;
+		border-top-style: solid;
+		border-top-color: #f0f0f0;
+		border-top-width: 1px;
+		padding: 12px;
+		cursor: pointer;
+		margin-bottom: 1px;
+	}
+	.uni-navigate-item1:active {
+		background-color: #007AFF;
+	}
+	.my-tips-view {
+		margin-top: 50px;
+		text-align: center;
+		color: #999999;
+		font-size: 20px;
+		font-weight: normal;
+	}
+</style>

+ 184 - 0
TFT-PDA/pages/Inspect/PrintLabelDtl.vue

@@ -0,0 +1,184 @@
+<template>
+	<view>
+		<view class="uni-form-item uni-column">
+			<view class="uni-flex uni-row">
+				<view class="title" style="width: 190rpx;">交验单号:</view>
+				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="deliverNo"/>
+			</view>
+			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
+				<view class="title" style="width: 190rpx;">规格型号\图号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入规格型号\图号" @confirm="confirmFun"/>
+			</view>
+			<view class="uni-flex uni-row">
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
+			</view>
+		</view>
+		<uni-section title="交验单明细清单:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单明细数据......</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 4px;"/>
+			<view v-if="!isShowTips" style="text-align: center;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<view v-for="(newsitem,key) in sapDeliverDtlList" :key="key">
+				<view class="myDeliverDetail"  @click="myDeliverDetailClick(newsitem)">
+					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
+						<text style="align-self: center;">物料编号:</text>
+						<text style="align-self: center;font-size: 30rpx;font-weight: bold;">{{newsitem.materialCode}}</text>
+						<text :class="newsitem.keyFlag ? 'keyFlagRed' : 'keyFlagGray'" style="align-self: center;margin-left: 20px;">{{newsitem.keyFlag ? '★' : '■'}}</text>
+					</view>
+					<view class="line-h"></view>
+					<view style="flex-direction: row;flex-direction: row;display: flex;-webkit-justify-content: space-between;justify-content: space-between;">
+						<view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">物料名称:</text>
+								<text style="align-self: center;font-size: 25rpx;word-wrap: break-word;width: 200px;">{{newsitem.materialName}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">规格型号/图号:</text>
+								<text style="align-self: center;font-size: 25rpx;word-wrap: break-word;width: 200px;">{{newsitem.materialSpec}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">生产令号:</text>
+								<text style="align-self: center;font-size: 25rpx;word-wrap: break-word;width: 200px;">{{newsitem.bomNo}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">交验单数量:</text>
+								<text style="align-self: center;font-size: 30rpx;font-weight: bold;">{{newsitem.qty}}</text>
+							</view>
+						</view>
+						<view v-if="newsitem.sumCheckQty < newsitem.sumQty" style="border-radius: 35px;width: 35px; background-color: lime;height: 35px;align-self: center;margin-right: 5px;"></view>
+						<view v-else style="border-radius: 35px;width: 35px; background-color: lightgray;height: 35px;align-self: center;margin-right: 5px;"></view>
+					</view>
+				</view>
+			</view>
+		</uni-section>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				deliverNo: '',
+				foucusIndex: 0,
+				materialSpecCode: '',
+				isShowTips: true,
+				sapDeliverDtlList:[],
+				current: 1,
+				total: 0,
+				pageSize: 10
+			}
+		},
+        onLoad(option) {
+			this.deliverNo = option.deliverNo;
+			this.queryFun()
+			// uni.$on('CallSapDeliverDtlQueryFunc', this.CallSapDeliverDtlQueryFunc)
+        },
+		onUnload() {
+			// uni.$off('CallSapDeliverDtlQueryFunc', this.CallSapDeliverDtlQueryFunc)
+		},
+		methods: {
+			async queryFun() {
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
+				})
+				this.sapDeliverDtlList = []
+				let parm = {
+					url : '/business/SapDeliverRecord/QuerySapDeliverDtlData',
+					data: {
+						DeliverNo: this.deliverNo,
+						MaterialSpec: this.materialSpecCode,
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'POST',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+						this.sapDeliverDtlList = retData.data.data.result
+					}
+					else {
+						this.isShowTips = true
+					}
+				}
+				else {
+					this.isShowTips = true
+				}
+				uni.hideLoading()
+			},
+			resetCondition() {
+				this.materialSpecCode = ""
+				this.sapDeliverDtlList = []
+				this.isShowTips = true
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+			},
+			confirmFun() {
+				this.queryFun()
+			},
+			myDeliverDetailClick(model) {
+				model.deliverNo = this.deliverNo;
+				uni.navigateTo({
+					url: '/pages/Inspect/PrintLabelOperate',
+					success() {
+						uni.$emit('sendDeliverDtlData',model)
+					}
+				});
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
+			},
+			CallSapDeliverDtlQueryFunc() {
+				this.materialSpecCode = ""
+				this.queryFun()
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.my-tips-view {
+		/* margin-top: 50px; */
+		text-align: center;
+		color: #999999;
+		font-size: 20px;
+		font-weight: normal;
+	}
+	.myDeliverDetail {
+		border: 1px solid #cccccc;
+		border-radius: 5px;
+		margin-top: 1px;
+	}
+	.myDeliverDetail:active {
+		background-color: aliceblue;
+	}
+	.line-h {
+	    height: 1rpx;
+	    background-color: #cccccc;
+	}
+	.keyFlagRed {
+		color: red;
+	}
+	.keyFlagGray {
+		color: lightgray;
+	}
+</style>

+ 193 - 0
TFT-PDA/pages/Inspect/PrintLabelOperate.vue

@@ -0,0 +1,193 @@
+<template>
+	<view style="padding: 3px;">
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单号:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.deliverNo}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">采购订单:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.purchaseOrder}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料号:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialCode}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料名称:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialName}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">规格型号/图号:</text>
+			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialSpec}}</text>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单数量:</text>
+			<text style="align-self: center;font-size: 40rpx;font-weight: bold;">{{deliverDtlMd.qty}}</text>
+		</view>
+		<view class="text" style="align-self: center;font-size: 35rpx;color: darkslategray;padding: 1px;">BN/SN 生成模式:</view>
+		<uni-data-checkbox style="align-self: center;font-size: 35rpx;padding: 5px;" v-model="radio1" :localdata="sex" @change="change"></uni-data-checkbox>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px; ">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 250rpx;">BN码(批次号):</text>
+			<input class="uni-input" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;" :disabled="isBnInputDisabled" v-model="BnCode" :focus="foucusIndex === 0" placeholder="请输入BN码(批次号)" />
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px; ">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 250rpx;">SN码(序列号):</text>
+			<input class="uni-input" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;" :disabled="isSnInputDisabled" v-model="SnCode" :focus="foucusIndex === 1" placeholder="请输入SN码(序列号)" />
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px; ">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 250rpx;">标签默认数量:</text>
+			<input class="uni-input" type="number" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;" v-model="PrintShowQty"/>
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px; ">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 250rpx;">标签打印张数:</text>
+			<input class="uni-input" type="number" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;" v-model="PrintLabelNum"/>
+		</view>
+		<button type="primary" style="margin-top: 4px;" @click="resetCondition">重   置</button>
+		<button type="primary" style="margin-top: 4px;" @click="submitResult">打印标签</button>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				radio1: 0,
+				deliverDtlMd: {},
+				SnCode: '',
+				BnCode: '',
+				PrintLabelNum: 1,
+				PrintShowQty: 1,
+				foucusIndex: 1,
+				sex: [{
+					text: '系统自动生成',
+					value: 0
+				}, {
+					text: '扫码生成',
+					value: 1
+				}],
+				isBnInputDisabled: true,
+				isSnInputDisabled: true
+			}
+		},
+		onUnload() {
+			
+		},
+		onLoad() {
+			uni.$once('sendDeliverDtlData', (data) => {
+				this.deliverDtlMd = data
+			})
+			if(!this.radio1) {
+				this.isSnInputDisabled = true
+				this.isBnInputDisabled = true
+				this.foucusIndex = 2
+			}
+			else {
+				this.isSnInputDisabled = false
+				this.isBnInputDisabled = false
+				this.foucusIndex = 0
+			}
+		},
+		methods: {
+			async submitResult() {
+				if(this.radio1){
+					if(this.isEmptyStr(this.BnCode)) {
+						uni.showToast({
+							title: 'BN码不能为空!',
+							icon: 'none',
+							duration: 1000
+						})
+						return;
+					}
+					if(this.isEmptyStr(this.SnCode)) {
+						uni.showToast({
+							title: 'SN码不能为空!',
+							icon: 'none',
+							duration: 1000
+						})
+						return;
+					}
+				}
+				let tmpMd = {};
+				tmpMd.Mc = this.deliverDtlMd.materialCode;
+				tmpMd.Pn = this.deliverDtlMd.materialSpec;
+				tmpMd.Name = this.deliverDtlMd.materialName;
+				tmpMd.Qty = this.deliverDtlMd.qty;
+				tmpMd.Unit = "";
+				tmpMd.Po = this.deliverDtlMd.purchaseOrder;
+				tmpMd.BnOrSnGenerationMode = !Boolean(this.radio1);
+				tmpMd.PrintLabelNum = this.PrintLabelNum;
+				tmpMd.PrintShowQty = this.PrintShowQty;
+				if(this.radio1) {
+					tmpMd.Sn = this.SnCode;
+					tmpMd.Bn = this.BnCode;
+				}
+				let parm = {
+					url : '/business/SapDeliverRecord/AddPrintLabelRecord',
+					data: tmpMd,
+					method: 'POST',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						uni.showLoading({
+							title: '发送打印数据成功!!',
+							mask: true
+						});
+						setTimeout(function () {
+							uni.hideLoading();
+							uni.navigateBack({
+								url: '/pages/Inspect/PrintLabelDtl'
+							});
+						}, 1000);
+					}
+					else {
+						uni.showToast({
+							title: '提交数据失败!' + retData.data.msg,
+							icon: 'none',
+							duration: 1000,
+							mask: true
+						})
+					}
+				}
+				else {
+					uni.showToast({
+						title: '接口异常!' + retData.retMsg,
+						icon: 'none',
+						duration: 1000,
+						mask: true
+					})
+				}
+			},
+			isEmptyStr(s) {
+				if (s == undefined || s === '') {
+					return true
+				}
+				return false
+			},
+			resetCondition() {
+				this.SnCode = ''
+				this.BnCode = ''
+				this.radio1 = 0
+			},
+			change(e){
+				if(!this.radio1) {
+					this.isBnInputDisabled = true
+					this.isSnInputDisabled = true
+					this.foucusIndex = 2
+				}
+				else {
+					this.isBnInputDisabled = false
+					this.isSnInputDisabled = false
+					setTimeout(() => {
+						this.foucusIndex = 0;
+					}, 150)
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import '@/common/uni-nvue.css';
+</style>

+ 47 - 27
TFT-PDA/pages/Inspect/inspect01.vue

@@ -14,7 +14,19 @@
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重置条件</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重置条件</button>
 			</view>
 			</view>
 		</view>
 		</view>
-		<view style="margin-left: 5px;margin-right: 5px;">
+		<uni-section title="交验单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单数据......</view>
+			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
+			v-for="(item,key) in deliverList" :key="key" @click="goDetailPage(item)">
+				<text class="uni-navigate-text">{{item.deliverNo}}</text>
+				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
+			</view>
+			<view v-if="!isShowTips" style="text-align: center; margin-top: 10px;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 10px;"/>
+		</uni-section>
+		<!-- <view style="margin-left: 5px;margin-right: 5px;">
 			<view style="margin-left: 10px;margin-bottom: 5px;">交验单数据:</view>
 			<view style="margin-left: 10px;margin-bottom: 5px;">交验单数据:</view>
 			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单数据......</view>
 			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单数据......</view>
 			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
 			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
@@ -22,7 +34,11 @@
 				<text class="uni-navigate-text">{{item.deliverNo}}</text>
 				<text class="uni-navigate-text">{{item.deliverNo}}</text>
 				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
 				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
 			</view>
 			</view>
-		</view>
+			<view v-if="!isShowTips" style="text-align: center; margin-top: 10px;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 10px;"/>
+		</view> -->
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -43,28 +59,20 @@
 				bomNo: '',
 				bomNo: '',
 				isShowTips: true,
 				isShowTips: true,
 				deliverList:[],
 				deliverList:[],
-				foucusIndex: 0
+				foucusIndex: 0,
+				current: 1,
+				total: 0,
+				pageSize: 10
 			}
 			}
 		},
 		},
+        onLoad() {
+			this.queryFun()
+			uni.$on('QueryInspect01', this.QueryInspect01)
+        },
+		onUnload() {
+			uni.$off('QueryInspect01', this.QueryInspect01)
+		},
 		methods: {
 		methods: {
-			initData() {
-				this.deliverList = []
-				let random = Math.round(Math.random()*10)
-				let random1 = Math.round(Math.random()*80+10)
-				if(random)
-				{
-					for(let i = 1; i <= random; i++) {
-						this.deliverList.push({
-								deliverid: i,
-								deliverNo: 'JC-JY-23021400' + (i + random1)
-						});
-					}
-					this.isShowTips = false;
-				}
-				else {
-					this.isShowTips = true;
-				}
-			},
 			async queryFun() {
 			async queryFun() {
 				uni.showLoading({
 				uni.showLoading({
 					title: "正在查询...",
 					title: "正在查询...",
@@ -75,20 +83,23 @@
 					url : '/business/SapDeliverRecord/QuerySapDeliverData',
 					url : '/business/SapDeliverRecord/QuerySapDeliverData',
 					data: {
 					data: {
 						DeliverNo: this.deliverNo,
 						DeliverNo: this.deliverNo,
-						BomNo: this.bomNo
+						BomNo: this.bomNo,
+						IsPrintQuery: false,
+						PageNum: this.current,
+						PageSize: this.pageSize
 					},
 					},
 					method: 'POST',
 					method: 'POST',
 					isHaveToken : true
 					isHaveToken : true
 				}
 				}
 				let retData = await getApp().RequestData(parm)
 				let retData = await getApp().RequestData(parm)
-				// console.log(retData)
 				if(retData.isSuccess) {
 				if(retData.isSuccess) {
 					if(retData.data.code == 200) {
 					if(retData.data.code == 200) {
-						let len = retData.data.data.length
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
 						for (let i = 0; i < len;  i++) {
 						for (let i = 0; i < len;  i++) {
 							this.deliverList.push({
 							this.deliverList.push({
 									deliverid: i + 1,
 									deliverid: i + 1,
-									deliverNo: retData.data.data[i].deliverNo
+									deliverNo: retData.data.data.result[i].deliverNo
 							});
 							});
 						}
 						}
 						if(len > 0) {
 						if(len > 0) {
@@ -115,7 +126,8 @@
 			},
 			},
 			goDetailPage(item) {
 			goDetailPage(item) {
 				// let urlStr = '/pages/Inspect/inspectDtl?deliverNo=' + item.deliverNo;
 				// let urlStr = '/pages/Inspect/inspectDtl?deliverNo=' + item.deliverNo;
-				let urlStr = '/pages/Inspect/inspectOperateNew?deliverNo=' + item.deliverNo;
+				// let urlStr = '/pages/Inspect/inspectOperateNew?deliverNo=' + item.deliverNo;
+				let urlStr = '/pages/Inspect/inspectDtlNew?deliverNo=' + item.deliverNo;
 				uni.navigateTo({
 				uni.navigateTo({
 					url: urlStr
 					url: urlStr
 				});
 				});
@@ -131,6 +143,13 @@
 				if(str.length !== 0) {
 				if(str.length !== 0) {
 					this.foucusIndex = 2
 					this.foucusIndex = 2
 				}
 				}
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
+			},
+			QueryInspect01() {
+				this.queryFun()
 			}
 			}
 		}
 		}
 	}
 	}
@@ -145,12 +164,13 @@
 	}
 	}
 	.uni-navigate-item1 {
 	.uni-navigate-item1 {
 		align-items: center;
 		align-items: center;
-		background-color: #FFFFFF;
+		background-color: #f5f5f5;
 		border-top-style: solid;
 		border-top-style: solid;
 		border-top-color: #f0f0f0;
 		border-top-color: #f0f0f0;
 		border-top-width: 1px;
 		border-top-width: 1px;
 		padding: 12px;
 		padding: 12px;
 		cursor: pointer;
 		cursor: pointer;
+		margin-bottom: 1px;
 	}
 	}
 	.uni-navigate-item1:active {
 	.uni-navigate-item1:active {
 		background-color: #007AFF;
 		background-color: #007AFF;

+ 271 - 0
TFT-PDA/pages/Inspect/inspectDtlNew.vue

@@ -0,0 +1,271 @@
+<template>
+	<view>
+		<view class="uni-form-item uni-column">
+			<view class="uni-flex uni-row">
+				<view class="title" style="width: 190rpx;">交验单号:</view>
+				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="deliverNo"/>
+			</view>
+			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
+				<view class="title" style="width: 190rpx;">规格型号\图号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入规格型号\图号" @confirm="confirmFun"/>
+			</view>
+			<!-- 2024 孙亚龙新增的注释。 由于不确定是哪个业务要加状态过滤查询条件,所以暂时注释掉代码 -->
+			<view class="uni-flex uni-row" style="margin-top: 5px;margin-bottom: 8px;">
+				<view class="title">质检状态:</view>
+				<view style="padding-top: 10rpx;padding-bottom: 10rpx;">
+					<uni-data-checkbox v-model="CheckStatus" :localdata="CheckStatusData"></uni-data-checkbox>
+				</view>
+			</view>
+			<view class="uni-flex uni-row">
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
+			</view>
+		</view>
+		<button type="primary" style="margin-left: 5px;margin-right: 5px;" @click="submitInspectResult">提 交 质 检 结 果</button>
+		<uni-section title="待质检的交验单明细:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<view class="my-tips-view" v-if="isShowTips">没有查询到交验单明细数据......</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 4px;"/>
+			<view v-if="!isShowTips" style="text-align: center;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<view v-for="(newsitem,key) in sapDeliverDtlList" :key="key">
+				<view class="myDeliverDetail"  @click="myDeliverDetailClick(newsitem)">
+					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
+						<text style="align-self: center;">物料编号:</text>
+						<text style="align-self: center;font-size: 30rpx;font-weight: bold;">{{newsitem.materialCode}}</text>
+						<text :class="newsitem.keyFlag ? 'keyFlagRed' : 'keyFlagGray'" style="align-self: center;margin-left: 20px;">{{newsitem.keyFlag ? '★' : '■'}}</text>
+					</view>
+					<view class="line-h"></view>
+					<view style="flex-direction: row;flex-direction: row;display: flex;-webkit-justify-content: space-between;justify-content: space-between;">
+						<view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">物料名称:</text>
+								<text style="align-self: center;font-size: 25rpx;word-wrap: break-word;width: 200px;">{{newsitem.materialName}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">规格型号/图号:</text>
+								<text style="align-self: center;font-size: 30rpx;font-weight: bold;word-wrap: break-word;width: 200px;">{{newsitem.materialSpec}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">交验单数量:</text>
+								<text style="align-self: center;font-size: 35rpx;font-weight: bold;color: blue;">{{newsitem.sumQty}}</text>
+							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">已质检数量:</text>
+								<text style="align-self: center;font-size: 35rpx;font-weight: bold;color: blue;">{{newsitem.sumCheckQty}}</text>
+							</view>
+						</view>
+						<view v-if="newsitem.sumCheckQty < newsitem.sumQty" style="border-radius: 35px;width: 35px; background-color: lime;height: 35px;align-self: center;margin-right: 5px;"></view>
+						<view v-else style="border-radius: 35px;width: 35px; background-color: lightgray;height: 35px;align-self: center;margin-right: 5px;"></view>
+					</view>
+				</view>
+			</view>
+		</uni-section>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				deliverNo: '',
+				foucusIndex: 0,
+				materialSpecCode: '',
+				isShowTips: true,
+				sapDeliverDtlList:[],
+				current: 1,
+				total: 0,
+				pageSize: 10,
+				//2024 孙亚龙新增的注释。 由于不确定是哪个业务要加状态过滤查询条件,所以暂时注释掉代码
+				CheckStatus: -1,
+				CheckStatusData: [{
+						value: -1,
+						text: '全部'
+					},{
+						value: 0,
+						text: '已质检'
+					},{
+						value: 1,
+						text: '未质检'
+					}
+				]
+			}
+		},
+        onLoad(option) {
+			this.deliverNo = option.deliverNo;
+			this.queryFun()
+			uni.$on('CallSapDeliverDtlQueryFunc', this.CallSapDeliverDtlQueryFunc)
+        },
+		onUnload() {
+			uni.$off('CallSapDeliverDtlQueryFunc', this.CallSapDeliverDtlQueryFunc)
+		},
+		methods: {
+			async queryFun() {
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
+				})
+				this.sapDeliverDtlList = []
+				let parm = {
+					url : '/business/SapDeliverRecord/GetSapDeliverRecordSumList',
+					data: {
+						DeliverNo: this.deliverNo,
+						MaterialSpec: this.materialSpecCode,
+						CheckStatus: this.CheckStatus,
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'GET',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+						this.sapDeliverDtlList = retData.data.data.result
+					}
+					else {
+						this.isShowTips = true
+					}
+				}
+				else {
+					this.isShowTips = true
+				}
+				uni.hideLoading()
+			},
+			resetCondition() {
+				this.materialSpecCode = ""
+				this.sapDeliverDtlList = []
+				this.CheckStatus = -1
+				this.isShowTips = true
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+			},
+			confirmFun() {
+				this.queryFun()
+			},
+			myDeliverDetailClick(model) {
+				model.deliverNo = this.deliverNo;
+				if(model.sumCheckQty >= model.sumQty) {
+					uni.showToast({
+						title: '已全部质检',
+						icon: 'error',
+						mask: true,
+						duration: 1500
+					})
+				} else {
+					uni.navigateTo({
+						url: '/pages/Inspect/inspectOperate',
+						success() {
+							uni.$emit('sendDeliverDtlData',model)
+						}
+					});
+				}
+			},
+			async submitInspectResult() {
+				uni.showLoading({
+					title: "正在提交数据...",
+					mask: true,
+				})
+				this.sapDeliverDtlList = []
+				let parm = {
+					url : '/business/SapDeliverRecord/SubmitInspectResult?deliverNo=' + this.deliverNo,
+					data: {},
+					method: 'GET',
+					isHaveToken : true
+				}
+				let retData = await getApp().RequestData(parm)
+				console.log(retData)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						if(retData.data.data) {
+							uni.hideLoading()
+							uni.navigateBack({
+								url: '/pages/Inspect/inspect01',
+								success: () => {
+									uni.$emit('QueryInspect01',null);
+								}
+							});
+						}
+						else {
+							uni.hideLoading()
+							uni.showToast({
+								title: '质检结果提交失败!请检查是否存在未质检完成的数据!!',
+								icon: 'none',
+								duration: 2000,
+								mask:true,
+							})
+						}
+					}
+					else {
+						uni.hideLoading()
+						uni.showToast({
+							title: '服务器发生错误!' + retData.data.msg,
+							icon: 'none',
+							duration: 2000,
+							mask:true,
+						})
+					}
+				}
+				else {
+					uni.hideLoading()
+					uni.showToast({
+						title: '服务器发生错误!' + retData.retMsg,
+						icon: 'none',
+						duration: 2000,
+						mask:true,
+					})
+				}
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
+			},
+			CallSapDeliverDtlQueryFunc() {
+				this.materialSpecCode = ""
+				this.queryFun()
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.my-tips-view {
+		/* margin-top: 50px; */
+		text-align: center;
+		color: #999999;
+		font-size: 20px;
+		font-weight: normal;
+	}
+	.myDeliverDetail {
+		border: 1px solid #cccccc;
+		border-radius: 5px;
+		margin-top: 1px;
+	}
+	.myDeliverDetail:active {
+		background-color: aliceblue;
+	}
+	.line-h {
+	    height: 1rpx;
+	    background-color: #cccccc;
+	}
+	.keyFlagRed {
+		color: red;
+	}
+	.keyFlagGray {
+		color: lightgray;
+	}
+</style>

+ 44 - 25
TFT-PDA/pages/Inspect/inspectOperate.vue

@@ -1,18 +1,18 @@
 <template>
 <template>
-	<view>
+	<view style="padding: 3px;">
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.deliverNo}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.deliverNo}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+		<!-- <view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">生产令号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">生产令号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.bomNo}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.bomNo}}</text>
-		</view>
+		</view> -->
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialCode}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialCode}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;margin-bottom: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料名称:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料名称:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialName}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialName}}</text>
 		</view>
 		</view>
@@ -20,23 +20,28 @@
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">规格型号/图号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">规格型号/图号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialSpec}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{deliverDtlMd.materialSpec}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px;">
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单数量:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">交验单数量:</text>
-			<text style="align-self: center;font-size: 40rpx;font-weight: bold;">{{deliverDtlMd.qty}}</text>
+			<text style="align-self: center;font-size: 40rpx;font-weight: bold;">{{deliverDtlMd.sumQty}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px;">
-			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">已质检合格数量:</text>
-			<text style="align-self: center;font-size: 40rpx;font-weight: bold;color: blue;">{{deliverDtlMd.checkQty}}</text>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">已质检数量:</text>
+			<text style="align-self: center;font-size: 40rpx;font-weight: bold;color: blue;">{{deliverDtlMd.sumCheckQty}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px; margin-top: 5px;">
-			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">BN/SN码:</text>
-			<input class="uni-input" style="margin-right: 5px;" v-model="bnSnCode" :focus="foucusIndex === 0" @confirm="foucusChange0" placeholder="请输BN/SN码" />
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px; ">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 230rpx;">BN/SN码:</text>
+			<input class="uni-input" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;" v-model="bnSnCode" :focus="foucusIndex === 0" placeholder="请输BN/SN码" />
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px; margin-top: 5px;">
-			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">合格数量:</text>
-			<input class="uni-input" type="number" style="margin-right: 5px;" v-model="checkOkQty" :focus="foucusIndex === 1" @confirm="foucusChange1" placeholder="请输合格数量" />
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 230rpx;">合格数量:</text>
+			<input class="uni-input" type="number" style="margin-right: 5px;color: blue;font-size: 40rpx;font-weight: bold;" v-model="checkOkQty" placeholder="请输合格数量" />
+		</view>
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+			<text style="align-self: center;font-size: 35rpx;color: red;width: 230rpx;">不合格数量:</text>
+			<input class="uni-input" type="number" style="margin-right: 5px;color: red;font-size: 40rpx;font-weight: bold;" v-model="checkNgQty" placeholder="请输不合格数量" />
 		</view>
 		</view>
-		<button type="primary" style="margin-top: 15px;" @click="submitResult">质检结果提交</button>
+		<button type="primary" style="margin-top: 20px;" @click="resetCondition">重   置</button>
+		<button type="primary" style="margin-top: 20px;" @click="submitResult">质检结果提交</button>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -46,7 +51,8 @@
 			return {
 			return {
 				deliverDtlMd: {},
 				deliverDtlMd: {},
 				bnSnCode: '',
 				bnSnCode: '',
-				checkOkQty: '',
+				checkOkQty: 0,
+				checkNgQty: 0,
 				foucusIndex: 0
 				foucusIndex: 0
 			}
 			}
 		},
 		},
@@ -56,6 +62,7 @@
 		onLoad() {
 		onLoad() {
 			uni.$once('sendDeliverDtlData', (data) => {
 			uni.$once('sendDeliverDtlData', (data) => {
 				this.deliverDtlMd = data
 				this.deliverDtlMd = data
+				this.checkOkQty = data.sumQty - data.sumCheckQty
 			})
 			})
 		},
 		},
 		methods: {
 		methods: {
@@ -69,25 +76,28 @@
 					})
 					})
 					return;
 					return;
 				}
 				}
-				if(Number(this.checkOkQty) <= 0) {
+				if(Number(this.checkOkQty) <= 0 && Number(this.checkNgQty) <= 0) {
 					uni.showToast({
 					uni.showToast({
-						title: '未输入质检合格数量!',
+						title: '质检合格数量和不合格数量,至少需要输入一项!',
 						icon: 'none',
 						icon: 'none',
 						duration: 1000
 						duration: 1000
 					})
 					})
 					return;
 					return;
 				}
 				}
-				if((Number(this.checkOkQty) + this.deliverDtlMd.checkQty) > this.deliverDtlMd.qty) {
+				if((Number(this.checkOkQty) + Number(this.checkNgQty) + this.deliverDtlMd.sumCheckQty) > this.deliverDtlMd.sumQty) {
 					uni.showToast({
 					uni.showToast({
-						title: '质检合格数量录入错误,数量不能大于未录入数!',
+						title: '质检合格数量+不合格数量 不能大于未质检数量。录入错误!',
 						icon: 'none',
 						icon: 'none',
 						duration: 1000
 						duration: 1000
 					})
 					})
 					return;
 					return;
 				}
 				}
 				let tmpMd = this.deliverDtlMd;
 				let tmpMd = this.deliverDtlMd;
-				tmpMd.bnSnCode = this.bnSnCode;
-				tmpMd.checkOkQty = this.checkOkQty;
+				tmpMd.DeliverNo = this.deliverNo;
+				tmpMd.MaterialSpec = this.materialSpecCode;
+				tmpMd.BnSnCode = this.bnSnCode;
+				tmpMd.CheckOkQty = this.checkOkQty;
+				tmpMd.CheckNgQty = this.checkNgQty;
 				let parm = {
 				let parm = {
 					url : '/business/QaInspectRecord/addSapDeliverDtlInspectResult',
 					url : '/business/QaInspectRecord/addSapDeliverDtlInspectResult',
 					data: tmpMd,
 					data: tmpMd,
@@ -98,9 +108,9 @@
 				if(retData.isSuccess) {
 				if(retData.isSuccess) {
 					if(retData.data.code == 200) {
 					if(retData.data.code == 200) {
 						uni.navigateBack({
 						uni.navigateBack({
-							url: '/pages/Inspect/inspectDtl',
+							url: '/pages/Inspect/inspectDtlNew',
 							success: () => {
 							success: () => {
-								uni.$emit('addInspectedData',tmpMd);
+								uni.$emit('CallSapDeliverDtlQueryFunc',null);
 							}
 							}
 						});
 						});
 					}
 					}
@@ -137,6 +147,15 @@
 				if(str.length !== 0) {
 				if(str.length !== 0) {
 					this.foucusIndex = 2
 					this.foucusIndex = 2
 				}
 				}
+			},
+			resetCondition() {
+				this.bnSnCode = ''
+				this.foucusIndex = 1
+				setTimeout(() => {
+					this.foucusIndex = 0;
+				}, 150)
+				this.checkOkQty = this.deliverDtlMd.sumQty - this.deliverDtlMd.sumCheckQty
+				this.checkNgQty = 0
 			}
 			}
 		}
 		}
 	}
 	}

+ 21 - 2
TFT-PDA/pages/Inspect/inspectOperateNew.vue

@@ -21,7 +21,7 @@
 			<text style="align-self: center;font-size: 40rpx;font-weight: bold;">{{SapDeliverRecordSumMd.sumQty}}</text>
 			<text style="align-self: center;font-size: 40rpx;font-weight: bold;">{{SapDeliverRecordSumMd.sumQty}}</text>
 		</view>
 		</view>
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px;">
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 1px;">
-			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">已质检合格数量:</text>
+			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">已质检数量:</text>
 			<text style="align-self: center;font-size: 40rpx;font-weight: bold;color: blue;">{{SapDeliverRecordSumMd.sumCheckQty}}</text>
 			<text style="align-self: center;font-size: 40rpx;font-weight: bold;color: blue;">{{SapDeliverRecordSumMd.sumCheckQty}}</text>
 		</view>
 		</view>
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px; margin-top: 5px;">
 		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px; margin-top: 5px;">
@@ -108,7 +108,26 @@
 				let retData = await getApp().RequestData(parm)
 				let retData = await getApp().RequestData(parm)
 				if(retData.isSuccess) {
 				if(retData.isSuccess) {
 					if(retData.data.code == 200) {
 					if(retData.data.code == 200) {
-						this.resetCondition()
+						let parm1 = {
+							url : '/business/SapDeliverRecord/GetSapDeliverIsAllChecked',
+							data: {},
+							method: 'GET',
+							isHaveToken : true
+						}
+						let retData1 = await getApp().RequestData(parm1)
+						if(retData1.data.data)
+						{
+							uni.navigateBack({
+								url: '/pages/Inspect/inspect01',
+								success: () => {
+									uni.$emit('QueryInspect01',null);
+								}
+							});
+						}
+						else
+						{
+							this.resetCondition()
+						}
 					}
 					}
 					else {
 					else {
 						uni.showToast({
 						uni.showToast({

+ 17 - 2
TFT-PDA/pages/Inspect/inspectRecordQuery.vue

@@ -55,12 +55,18 @@
 								<text style="align-self: center;font-size: 30rpx;font-weight: bold;word-wrap: break-word;width: 200px;">{{newsitem.bnSnCode}}</text>
 								<text style="align-self: center;font-size: 30rpx;font-weight: bold;word-wrap: break-word;width: 200px;">{{newsitem.bnSnCode}}</text>
 							</view>
 							</view>
 							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
-								<text style="align-self: center;color: #555;font-size: 25rpx;">质检合格数量:</text>
+								<text style="align-self: center;color: #555;font-size: 25rpx;">质检数量:</text>
 								<text style="align-self: center;font-size: 35rpx;font-weight: bold;color: blue;">{{newsitem.checkQty}}</text>
 								<text style="align-self: center;font-size: 35rpx;font-weight: bold;color: blue;">{{newsitem.checkQty}}</text>
 							</view>
 							</view>
+							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
+								<text style="align-self: center;color: #555;font-size: 25rpx;">质检结果:</text>
+								<text v-if="(newsitem.result == 'OK')" style="align-self: center;font-size: 45rpx;font-weight: bold;color: lime;">{{newsitem.result}}</text>
+								<text v-if="newsitem.result == 'Wait'" style="align-self: center;font-size: 45rpx;font-weight: bold;color: black;">{{newsitem.result}}</text>
+								<text v-if="newsitem.result == 'NG'" style="align-self: center;font-size: 45rpx;font-weight: bold;color: red;">{{newsitem.result}}</text>
+							</view>
 							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 								<text style="align-self: center;color: #555;font-size: 25rpx;">质检人:</text>
 								<text style="align-self: center;color: #555;font-size: 25rpx;">质检人:</text>
-								<text style="align-self: center;font-size: 30rpx;">{{newsitem.inspectedBy}}</text>
+								<text  style="align-self: center;font-size: 30rpx;">{{newsitem.inspectedBy}}</text>
 							</view>
 							</view>
 							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 							<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;">
 								<text style="align-self: center;color: #555;font-size: 25rpx;">质检时间:</text>
 								<text style="align-self: center;color: #555;font-size: 25rpx;">质检时间:</text>
@@ -173,4 +179,13 @@
 	.keyFlagGray {
 	.keyFlagGray {
 		color: lightgray;
 		color: lightgray;
 	}
 	}
+	.resultOk {
+		color: lime;
+	}
+	.resultNg {
+		color: red;
+	}
+	.resultWait {
+		color: black;
+	}
 </style>
 </style>

+ 89 - 23
TFT-PDA/pages/Instore/instoreDtlNew.vue

@@ -2,20 +2,24 @@
 	<view>
 	<view>
 		<view class="uni-form-item uni-column">
 		<view class="uni-form-item uni-column">
 			<view class="uni-flex uni-row">
 			<view class="uni-flex uni-row">
-				<view class="title" style="width: 120rpx;">交验单号:</view>
-				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="deliverNo"/>
+				<view class="title" style="width: 190rpx;">交验单号:</view>
+				<input class="uni-input" style="margin-right: 5px;font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="deliverNo"/>
 			</view>
 			</view>
 			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
 			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
-				<view class="title" style="width: 120rpx;">物料号:</view>
-				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入物料信息" @confirm="confirmFun"/>
+				<view class="title" style="width: 190rpx;">规格型号\图号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入规格型号\图号" @confirm="confirmFun"/>
 			</view>
 			</view>
 			<view class="uni-flex uni-row">
 			<view class="uni-flex uni-row">
-				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryClick">查    询</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
 			</view>
 			</view>
 		</view>
 		</view>
 		<uni-section title="待入库的质检记录数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
 		<uni-section title="待入库的质检记录数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
 			<view class="my-tips-view" v-if="isShowTips">没有查询到数据......</view>
 			<view class="my-tips-view" v-if="isShowTips">没有查询到数据......</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 4px;"/>
+			<view v-if="!isShowTips" style="text-align: center;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
 			<view v-for="(newsitem,key) in inspectRecordList" :key="key">
 			<view v-for="(newsitem,key) in inspectRecordList" :key="key">
 				<view class="myDeliverDetail" @click="myDeliverDetailClick(newsitem)">
 				<view class="myDeliverDetail" @click="myDeliverDetailClick(newsitem)">
 					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
 					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
@@ -77,16 +81,28 @@
 				materialSpecCode: '',
 				materialSpecCode: '',
 				isShowTips: true,
 				isShowTips: true,
 				inspectRecordList:[],
 				inspectRecordList:[],
+				current: 1,
+				total: 0,
+				pageSize: 10,
 			}
 			}
 		},
 		},
         onLoad(option) {
         onLoad(option) {
 			this.deliverNo = option.deliverNo;
 			this.deliverNo = option.deliverNo;
 			uni.$on('addInstoreData', this.addInstoreData)
 			uni.$on('addInstoreData', this.addInstoreData)
+			this.QueryNotInstoreData(option.deliverNo)
         },
         },
 		onUnload() {
 		onUnload() {
 			uni.$off('addInstoreData', this.addInstoreData)
 			uni.$off('addInstoreData', this.addInstoreData)
 		},
 		},
 		methods: {
 		methods: {
+			async queryClick() {
+				if(!this.isEmptyStr(this.materialSpecCode)) {
+					await this.queryFun()
+				}
+				else {
+					await this.QueryNotInstoreData(this.deliverNo)
+				}
+			},
 			async queryFun() {
 			async queryFun() {
 				if(this.isEmptyStr(this.materialSpecCode)) {
 				if(this.isEmptyStr(this.materialSpecCode)) {
 					uni.showToast({
 					uni.showToast({
@@ -121,28 +137,32 @@
 						let len = retData.data.data.length
 						let len = retData.data.data.length
 						this.inspectRecordList = retData.data.data
 						this.inspectRecordList = retData.data.data
 						if(len > 0) {
 						if(len > 0) {
-							this.isShowTips = false
+							this.isShowTips = false;
 						}
 						}
 						else {
 						else {
-							this.isShowTips = true
-							this.resetCondition()
+							this.isShowTips = true;
 						}
 						}
 					}
 					}
 					else {
 					else {
 						this.isShowTips = true
 						this.isShowTips = true
-						this.resetCondition()
 					}
 					}
 				}
 				}
 				else {
 				else {
 					this.isShowTips = true
 					this.isShowTips = true
-					this.resetCondition()
 				}
 				}
 				uni.hideLoading()
 				uni.hideLoading()
 			},
 			},
 			resetCondition() {
 			resetCondition() {
 				this.materialSpecCode = ''
 				this.materialSpecCode = ''
-				this.inspectRecordList = []
+				// this.inspectRecordList = []
 				this.isShowTips = true
 				this.isShowTips = true
+				// this.foucusIndex = 1
+				// setTimeout(() => {
+				// 	this.foucusIndex = 0;
+				// }, 150)
+				this.QueryNotInstoreData(this.deliverNo)
+			},
+			ResetFoucus() {
 				this.foucusIndex = 1
 				this.foucusIndex = 1
 				setTimeout(() => {
 				setTimeout(() => {
 					this.foucusIndex = 0;
 					this.foucusIndex = 0;
@@ -172,23 +192,69 @@
 						}
 						}
 					});
 					});
 				}
 				}
-			},
+			}	,
 			addInstoreData(data) {
 			addInstoreData(data) {
-				this.inspectRecordList.forEach((item) => {
-					if(item.inspectId === data.inspectId) {
-						item.instoreQty += Number(data.instoreQty);
-					}
+				// this.inspectRecordList.forEach((item) => {
+				// 	if(item.inspectId === data.inspectId) {
+				// 		item.instoreQty += Number(data.instoreQty);
+				// 	}
+				// })
+				// let isFinish = this.inspectRecordList.some(x => x.instoreQty < x.checkQty)
+				// if(!isFinish) {
+				// 	this.resetCondition()
+				// }
+				// else {
+				// 	this.queryFun()
+				// }
+				this.QueryNotInstoreData(this.deliverNo)
+			},
+			confirmFun() {
+				this.queryFun()
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.QueryNotInstoreData(this.deliverNo)
+			},
+			async QueryNotInstoreData(deliverNoStr) {
+				this.inspectRecordList = []
+				let parm = {
+					url : '/business/QaInspectRecord/QueryNotInstoreData',
+					data: {
+						DeliverNo: deliverNoStr,
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'POST',
+					isHaveToken : true
+				}
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
 				})
 				})
-				let isFinish = this.inspectRecordList.some(x => x.instoreQty < x.checkQty)
-				if(!isFinish) {
-					this.resetCondition()
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						// let len = retData.data.data.length
+						// this.inspectRecordList = retData.data.data
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+						this.inspectRecordList = retData.data.data.result
+					}
+					else {
+						this.isShowTips = true
+					}
 				}
 				}
 				else {
 				else {
-					this.queryFun()
+					this.isShowTips = true
 				}
 				}
-			},
-			confirmFun() {
-				this.queryFun()
+				this.ResetFoucus()
+				uni.hideLoading()
 			}
 			}
 		}
 		}
 	}
 	}

+ 10 - 4
TFT-PDA/pages/Instore/instoreOperate.vue

@@ -59,9 +59,9 @@
 		},
 		},
 		methods: {
 		methods: {
 			async submitResult() {
 			async submitResult() {
-				if(Number(this.checkQty) <= 0) {
+				if(Number(this.instoreNum) <= 0) {
 					uni.showToast({
 					uni.showToast({
-						title: '未输入本次入库数量!',
+						title: '入库数量不能为:0!',
 						icon: 'none',
 						icon: 'none',
 						mask: true,
 						mask: true,
 						duration: 1000
 						duration: 1000
@@ -100,7 +100,10 @@
 							title: '提交数据失败!' + retData.data.msg,
 							title: '提交数据失败!' + retData.data.msg,
 							icon: 'none',
 							icon: 'none',
 							mask: true,
 							mask: true,
-							duration: 1000
+							duration: 1000,
+							success: () => {
+								tmpMd.instoreQty = 0;
+							}
 						})
 						})
 					}
 					}
 				}
 				}
@@ -109,7 +112,10 @@
 						title: '接口异常!' + retData.retMsg,
 						title: '接口异常!' + retData.retMsg,
 						icon: 'none',
 						icon: 'none',
 						mask: true,
 						mask: true,
-						duration: 1000
+						duration: 1000,
+						success: () => {
+							tmpMd.instoreQty = 0;
+						}
 					})
 					})
 				}
 				}
 			},
 			},

+ 22 - 7
TFT-PDA/pages/Outstore/outassemble01.vue

@@ -10,15 +10,20 @@
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重置条件</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重置条件</button>
 			</view>
 			</view>
 		</view>
 		</view>
-		<view style="margin-left: 5px;margin-right: 5px;">
-			<view style="margin-left: 10px;margin-bottom: 5px;">关键件清单数据:</view>
+		
+		<uni-section title="关键件清单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
+			<!-- <view style="margin-left: 10px;margin-bottom: 5px;">关键件清单数据:</view> -->
 			<view class="my-tips-view" v-if="isShowTips">没有查询到关键件清单数据......</view>
 			<view class="my-tips-view" v-if="isShowTips">没有查询到关键件清单数据......</view>
 			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
 			<view class="uni-navigate-item1 uni-flex uni-row" style="-webkit-justify-content: space-between;justify-content: space-between;" 
 			v-for="(item,key) in bomList" :key="key" @click="goDetailPage(item)">
 			v-for="(item,key) in bomList" :key="key" @click="goDetailPage(item)">
 				<text class="uni-navigate-text">{{item.bomNo}}</text>
 				<text class="uni-navigate-text">{{item.bomNo}}</text>
 				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
 				<text class="uni-navigate-icon uni-icon">&#xe470;</text>
 			</view>
 			</view>
-		</view>
+			<view v-if="!isShowTips" style="text-align: center; margin-top: 10px;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 10px;"/>
+		</uni-section>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -37,7 +42,10 @@
 				bomNo: '',
 				bomNo: '',
 				isShowTips: true,
 				isShowTips: true,
 				bomList:[],
 				bomList:[],
-				foucusIndex: 0
+				foucusIndex: 0,
+				current: 1,
+				total: 0,
+				pageSize: 10
 			}
 			}
 		},
 		},
 		methods: {
 		methods: {
@@ -50,7 +58,9 @@
 				let parm = {
 				let parm = {
 					url : '/business/SapBomRecord/QueryBomList',
 					url : '/business/SapBomRecord/QueryBomList',
 					data: {
 					data: {
-						BomNo: this.bomNo
+						BomNo: this.bomNo,
+						PageNum: this.current,
+						PageSize: this.pageSize
 					},
 					},
 					method: 'POST',
 					method: 'POST',
 					isHaveToken : true
 					isHaveToken : true
@@ -59,11 +69,12 @@
 				if(retData.isSuccess) {
 				if(retData.isSuccess) {
 					if(retData.data.code == 200) {
 					if(retData.data.code == 200) {
 						// console.log(retData)
 						// console.log(retData)
-						let len = retData.data.data.length
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
 						for (let i = 0; i < len;  i++) {
 						for (let i = 0; i < len;  i++) {
 							this.bomList.push({
 							this.bomList.push({
 									bomId: i + 1,
 									bomId: i + 1,
-									bomNo: retData.data.data[i].bomNo
+									bomNo: retData.data.data.result[i].bomNo
 							});
 							});
 						}
 						}
 						if(len > 0) {
 						if(len > 0) {
@@ -103,6 +114,10 @@
 				if(str.length !== 0) {
 				if(str.length !== 0) {
 					this.foucusIndex = 2
 					this.foucusIndex = 2
 				}
 				}
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
 			}
 			}
 		}
 		}
 	}
 	}

+ 37 - 21
TFT-PDA/pages/Outstore/outassembleDtlNew.vue

@@ -2,12 +2,12 @@
 	<view>
 	<view>
 		<view class="uni-form-item uni-column">
 		<view class="uni-form-item uni-column">
 			<view class="uni-flex uni-row">
 			<view class="uni-flex uni-row">
-				<view class="title" style="width: 150rpx;">生产令号:</view>
+				<view class="title" style="width: 190rpx;">生产令号:</view>
 				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="bomNo"/>
 				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="bomNo"/>
 			</view>
 			</view>
 			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
 			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
-				<view class="title" style="width: 150rpx;">物料号:</view>
-				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入物料信息" @confirm="confirmFun"/>
+				<view class="title" style="width: 190rpx;">规格型号\图号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入规格型号\图号" @confirm="confirmFun"/>
 			</view>
 			</view>
 			<view class="uni-flex uni-row">
 			<view class="uni-flex uni-row">
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
@@ -15,7 +15,10 @@
 			</view>
 			</view>
 		</view>
 		</view>
 		<uni-section title="关键件清单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
 		<uni-section title="关键件清单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
-			<view class="my-tips-view" v-if="isShowTips">没有查询到关键件清单数据......</view>
+			<view class="my-tips-view" v-if="isShowTips">没有查询到关键件清单数据......</view><uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 4px;"/>
+			<view v-if="!isShowTips" style="text-align: center;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
 			<view v-for="(newsitem,key) in sapOutTaskList" :key="key">
 			<view v-for="(newsitem,key) in sapOutTaskList" :key="key">
 				<view class="myDeliverDetail" @click="myDeliverDetailClick(newsitem)">
 				<view class="myDeliverDetail" @click="myDeliverDetailClick(newsitem)">
 					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
 					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
@@ -77,10 +80,14 @@
 				materialSpecCode: '',
 				materialSpecCode: '',
 				isShowTips: true,
 				isShowTips: true,
 				sapOutTaskList:[],
 				sapOutTaskList:[],
+				current: 1,
+				total: 0,
+				pageSize: 10,
 			}
 			}
 		},
 		},
         onLoad(option) {
         onLoad(option) {
 			this.bomNo = option.bomNo;
 			this.bomNo = option.bomNo;
+			this.queryFun()
 			uni.$on('addAssembleDtlData', this.addAssembleDtlData)
 			uni.$on('addAssembleDtlData', this.addAssembleDtlData)
         },
         },
 		onUnload() {
 		onUnload() {
@@ -88,19 +95,19 @@
 		},
 		},
 		methods: {
 		methods: {
 			async queryFun() {
 			async queryFun() {
-				if(this.isEmptyStr(this.materialSpecCode)) {
-					uni.showToast({
-						title: '物料信息 不能为空!',
-						icon: 'none',
-						duration: 1500,
-						mask:true,
-					})
-					this.foucusIndex = 1
-					setTimeout(() => {
-						this.foucusIndex = 0;
-					}, 100)
-					return
-				}
+				// if(this.isEmptyStr(this.materialSpecCode)) {
+				// 	uni.showToast({
+				// 		title: '物料信息 不能为空!',
+				// 		icon: 'none',
+				// 		duration: 1500,
+				// 		mask:true,
+				// 	})
+				// 	this.foucusIndex = 1
+				// 	setTimeout(() => {
+				// 		this.foucusIndex = 0;
+				// 	}, 100)
+				// 	return
+				// }
 				
 				
 				uni.showLoading({
 				uni.showLoading({
 					title: "正在查询...",
 					title: "正在查询...",
@@ -108,8 +115,12 @@
 				})
 				})
 				this.sapOutTaskList = []
 				this.sapOutTaskList = []
 				let parm = {
 				let parm = {
-					url : '/business/SapBomRecord/QuerySapBomRecordListForMaterialSpec?bomNo=' + this.bomNo + '&materialSpecCode=' + this.materialSpecCode,
+					url : '/business/SapBomRecord/QuerySapBomRecordListForMaterialSpec',
 					data: {
 					data: {
+						BomNo: this.bomNo,
+						MaterialSpec: this.materialSpecCode,
+						PageNum: this.current,
+						PageSize: this.pageSize						
 					},
 					},
 					method: 'POST',
 					method: 'POST',
 					isHaveToken : true
 					isHaveToken : true
@@ -118,8 +129,9 @@
 				// console.log(retData)
 				// console.log(retData)
 				if(retData.isSuccess) {
 				if(retData.isSuccess) {
 					if(retData.data.code == 200) {
 					if(retData.data.code == 200) {
-						let len = retData.data.data.length
-						this.sapOutTaskList = retData.data.data
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						this.sapOutTaskList = retData.data.data.result
 						if(len > 0) {
 						if(len > 0) {
 							this.isShowTips = false
 							this.isShowTips = false
 						}
 						}
@@ -161,7 +173,7 @@
 				model.bomNo = this.bomNo;
 				model.bomNo = this.bomNo;
 				if(model.assembleQty >= model.qty) {
 				if(model.assembleQty >= model.qty) {
 					uni.showToast({
 					uni.showToast({
-						title: '已全部出库',
+						title: '已全部装配完成',
 						icon: 'error',
 						icon: 'error',
 						mask: true,
 						mask: true,
 						duration: 1500
 						duration: 1500
@@ -195,6 +207,10 @@
 			},
 			},
 			confirmFun() {
 			confirmFun() {
 				this.queryFun()
 				this.queryFun()
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryFun()
 			}
 			}
 		}
 		}
 	}
 	}

+ 10 - 7
TFT-PDA/pages/Outstore/outassembleOperate.vue

@@ -17,12 +17,12 @@
 			<text style="align-self: center;font-size: 50rpx;font-weight: bold;color: blue;">{{sapBomDtlMd.qty - sapBomDtlMd.assembleQty}}</text>
 			<text style="align-self: center;font-size: 50rpx;font-weight: bold;color: blue;">{{sapBomDtlMd.qty - sapBomDtlMd.assembleQty}}</text>
 		</view>
 		</view>
 		<view style="flex-direction: row;display: flex;padding: 1px;">
 		<view style="flex-direction: row;display: flex;padding: 1px;">
-			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">扫码-物料号:</text>
+			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">规格型号\图号:</text>
 			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanMaterialCode" :focus="foucusIndex === 0" @confirm="foucusChange0" @focus="getFoucus(0)"/>
 			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanMaterialCode" :focus="foucusIndex === 0" @confirm="foucusChange0" @focus="getFoucus(0)"/>
 			<!-- <uni-easyinput style="background:#FFF;margin-right: 5px;font-size: 80rpx;" v-model="scanMaterialCode" :errorMessage="isMaterialCodeErr" :focus="foucusIndex === 0" @confirm="foucusChange0" @input="input"></uni-easyinput> -->
 			<!-- <uni-easyinput style="background:#FFF;margin-right: 5px;font-size: 80rpx;" v-model="scanMaterialCode" :errorMessage="isMaterialCodeErr" :focus="foucusIndex === 0" @confirm="foucusChange0" @input="input"></uni-easyinput> -->
 		</view>
 		</view>
 		<view style="flex-direction: row;display: flex;padding: 1px;">
 		<view style="flex-direction: row;display: flex;padding: 1px;">
-			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">扫码-BN/SN码:</text>
+			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">BN/SN码:</text>
 			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanBnSnCode" :focus="foucusIndex === 1" @confirm="foucusChange1" @focus="getFoucus(1)"/>
 			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanBnSnCode" :focus="foucusIndex === 1" @confirm="foucusChange1" @focus="getFoucus(1)"/>
 		</view>
 		</view>
 		<view style="flex-direction: row;display: flex;padding: 1px;">
 		<view style="flex-direction: row;display: flex;padding: 1px;">
@@ -149,8 +149,9 @@
 				tmpMd.BnSnCode = this.scanBnSnCode;
 				tmpMd.BnSnCode = this.scanBnSnCode;
 				// console.log(tmpMd)
 				// console.log(tmpMd)
 				let userMsg = uni.getStorageSync('userInfo')
 				let userMsg = uni.getStorageSync('userInfo')
+				let baseUrlStr = uni.getStorageSync('BasrUrl')
 				uni.uploadFile({
 				uni.uploadFile({
-					url: getApp().globalData.baseUrl + '/business/OutAssembleRecord/AddOutAssembleRecordForFile',
+					url: baseUrlStr + '/business/OutAssembleRecord/AddOutAssembleRecordForFile',
 					filePath: this.imageSrc,
 					filePath: this.imageSrc,
 					fileType: 'image',
 					fileType: 'image',
 					header: { //自定义请求头信息
 					header: { //自定义请求头信息
@@ -171,6 +172,7 @@
 						}
 						}
 						else {
 						else {
 							uni.hideLoading()
 							uni.hideLoading()
+							console.log(retMd.msg)
 							this.popTitleMsg = '请重新扫码!!'
 							this.popTitleMsg = '请重新扫码!!'
 							this.popMsg = `新增装配数据失败:【${retMd.msg}】`
 							this.popMsg = `新增装配数据失败:【${retMd.msg}】`
 							this.$refs.popup.open('center')
 							this.$refs.popup.open('center')
@@ -178,8 +180,9 @@
 					},
 					},
 					fail: (err) => {
 					fail: (err) => {
 						uni.hideLoading()
 						uni.hideLoading()
+						console.log(err)
 						this.popTitleMsg = '请重新扫码!!'
 						this.popTitleMsg = '请重新扫码!!'
-						this.popMsg = `新增装配数据失败:【${err}】`
+						this.popMsg = `新增装配数据发生异常:【${JSON.stringify(err)}】`
 						this.$refs.popup.open('center')
 						this.$refs.popup.open('center')
 					}
 					}
 				});
 				});
@@ -198,7 +201,7 @@
 					this.foucusIndex = 0
 					this.foucusIndex = 0
 					return;
 					return;
 				}
 				}
-				if(this.scanMaterialCode !== this.sapBomDtlMd.materialSpec) {
+				if(this.scanMaterialCode !== this.sapBomDtlMd.materialSpec && this.scanMaterialCode !== this.sapBomDtlMd.materialCode) {
 					this.popTitleMsg = '请重新扫码!!'
 					this.popTitleMsg = '请重新扫码!!'
 					let tmpMatCode = this.scanMaterialCode
 					let tmpMatCode = this.scanMaterialCode
 					this.popMsg = `物料号:【${tmpMatCode}】扫码确认错误`
 					this.popMsg = `物料号:【${tmpMatCode}】扫码确认错误`
@@ -218,7 +221,7 @@
 					this.foucusIndex = 0
 					this.foucusIndex = 0
 					return;
 					return;
 				}
 				}
-				if(this.scanMaterialCode !== this.sapBomDtlMd.materialSpec) {
+				if(this.scanMaterialCode !== this.sapBomDtlMd.materialSpec && this.scanMaterialCode !== this.sapBomDtlMd.materialCode) {
 					this.popTitleMsg = '请重新扫码!!'
 					this.popTitleMsg = '请重新扫码!!'
 					let tmpMatCode = this.scanMaterialCode
 					let tmpMatCode = this.scanMaterialCode
 					this.popMsg = `物料号:【${tmpMatCode}】扫码确认错误`
 					this.popMsg = `物料号:【${tmpMatCode}】扫码确认错误`
@@ -328,7 +331,7 @@
 					this.foucusIndex = 0
 					this.foucusIndex = 0
 					return;
 					return;
 				}
 				}
-				if(this.scanMaterialCode !== this.sapBomDtlMd.materialSpec) {
+				if(this.scanMaterialCode !== this.sapBomDtlMd.materialSpec && this.scanMaterialCode !== this.sapBomDtlMd.materialCode) {
 					this.popTitleMsg = '请重新扫码!!'
 					this.popTitleMsg = '请重新扫码!!'
 					let tmpMatCode = this.scanMaterialCode
 					let tmpMatCode = this.scanMaterialCode
 					this.popMsg = `物料号:【${tmpMatCode}】扫码确认错误`
 					this.popMsg = `物料号:【${tmpMatCode}】扫码确认错误`

+ 90 - 24
TFT-PDA/pages/Outstore/outstoreDtlNew.vue

@@ -2,26 +2,30 @@
 	<view>
 	<view>
 		<view class="uni-form-item uni-column">
 		<view class="uni-form-item uni-column">
 			<view class="uni-flex uni-row">
 			<view class="uni-flex uni-row">
-				<view class="title" style="width: 180rpx;">出库任务单号:</view>
+				<view class="title" style="width: 190rpx;">出库任务单号:</view>
 				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="outTaskNo"/>
 				<input class="uni-input" style="font-size: 40rpx;font-weight: bold;color: black;" disabled="true" v-model="outTaskNo"/>
 			</view>
 			</view>
 			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
 			<view class="uni-flex uni-row" style="margin-top: 3px;margin-bottom: 3px;">
-				<view class="title" style="width: 180rpx;">物料号:</view>
-				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入物料信息" @confirm="confirmFun"/>
+				<view class="title" style="width: 190rpx;">规格型号\图号:</view>
+				<input class="uni-input" style="margin-right: 5px;" :focus="foucusIndex === 0" v-model="materialSpecCode" placeholder="请输入规格型号\图号" @confirm="confirmFun"/>
 			</view>
 			</view>
 			<view class="uni-flex uni-row">
 			<view class="uni-flex uni-row">
-				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryFun">查    询</button>
+				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;" @click="queryClick">查    询</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
 				<button type="primary" style="-webkit-flex: 1;flex: 1;margin-left: 5px;margin-right: 5px;" @click="resetCondition">重    置</button>
 			</view>
 			</view>
 		</view>
 		</view>
 		<uni-section title="SAP出库任务单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
 		<uni-section title="SAP出库任务单数据:" type="line" style="margin-bottom: 3px;padding: 3px;">
 			<view class="my-tips-view" v-if="isShowTips">没有查询到SAP出库任务单数据......</view>
 			<view class="my-tips-view" v-if="isShowTips">没有查询到SAP出库任务单数据......</view>
+			<uni-pagination :total="total" :current="current" :pageSize="pageSize" @change="pageChange" title="标题文字" v-if="!isShowTips" style="margin: 4px;"/>
+			<view v-if="!isShowTips" style="text-align: center;">
+				<text class="example-info">数据总量:{{ total }}条,每页数据:{{ pageSize }}</text>
+			</view>
 			<view v-for="(newsitem,key) in sapOutTaskList" :key="key">
 			<view v-for="(newsitem,key) in sapOutTaskList" :key="key">
 				<view class="myDeliverDetail" @click="myDeliverDetailClick(newsitem)">
 				<view class="myDeliverDetail" @click="myDeliverDetailClick(newsitem)">
 					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
 					<view style="flex-direction: row;flex-direction: row;height: 25px;display: flex;padding: 2px;border-radius: 5px 5px;">
 						<text style="align-self: center;">物料编号:</text>
 						<text style="align-self: center;">物料编号:</text>
 						<text style="align-self: center;font-size: 30rpx;font-weight: bold;">{{newsitem.materialCode}}</text>
 						<text style="align-self: center;font-size: 30rpx;font-weight: bold;">{{newsitem.materialCode}}</text>
-						<!-- <text :class="newsitem.keyFlag ? 'keyFlagRed' : 'keyFlagGray'" style="align-self: center;margin-left: 20px;">{{newsitem.keyFlag ? '★' : '■'}}</text> -->
+						<text :class="newsitem.keyFlag ? 'keyFlagRed' : 'keyFlagGray'" style="align-self: center;margin-left: 20px;">{{newsitem.keyFlag ? '★' : '■'}}</text>
 					</view>
 					</view>
 					<view class="line-h"></view>
 					<view class="line-h"></view>
 					<view style="flex-direction: row;flex-direction: row;display: flex;-webkit-justify-content: space-between;justify-content: space-between;">
 					<view style="flex-direction: row;flex-direction: row;display: flex;-webkit-justify-content: space-between;justify-content: space-between;">
@@ -77,16 +81,28 @@
 				materialSpecCode: '',
 				materialSpecCode: '',
 				isShowTips: true,
 				isShowTips: true,
 				sapOutTaskList:[],
 				sapOutTaskList:[],
+				current: 1,
+				total: 0,
+				pageSize: 10
 			}
 			}
 		},
 		},
         onLoad(option) {
         onLoad(option) {
 			this.outTaskNo = option.outTaskNo;
 			this.outTaskNo = option.outTaskNo;
-			uni.$on('addOutstoreData', this.addOutstoreData)
+			uni.$on('addOutstoreData', this.addOutstoreData);
+			this.queryUnFinishedFun(option.outTaskNo);
         },
         },
 		onUnload() {
 		onUnload() {
 			uni.$off('addOutstoreData', this.addOutstoreData)
 			uni.$off('addOutstoreData', this.addOutstoreData)
 		},
 		},
 		methods: {
 		methods: {
+			async queryClick() {
+				if(!this.isEmptyStr(this.materialSpecCode)) {
+					await this.queryFun()
+				}
+				else {
+					await this.queryUnFinishedFun(this.outTaskNo)
+				}
+			},
 			async queryFun() {
 			async queryFun() {
 				if(this.isEmptyStr(this.materialSpecCode)) {
 				if(this.isEmptyStr(this.materialSpecCode)) {
 					uni.showToast({
 					uni.showToast({
@@ -124,26 +140,30 @@
 							this.isShowTips = false
 							this.isShowTips = false
 						}
 						}
 						else {
 						else {
-							this.isShowTips = true
-							this.resetCondition()
+							this.isShowTips = true;
 						}
 						}
 					}
 					}
 					else {
 					else {
 						this.isShowTips = true
 						this.isShowTips = true
-						this.resetCondition()
 					}
 					}
 				}
 				}
 				else {
 				else {
 					this.isShowTips = true
 					this.isShowTips = true
-					this.resetCondition()
 				}
 				}
 				uni.hideLoading()
 				uni.hideLoading()
 			},
 			},
 			resetCondition() {
 			resetCondition() {
-				this.foucusIndex = 1
 				this.materialSpecCode = ''
 				this.materialSpecCode = ''
-				this.sapOutTaskList = []
+				// this.sapOutTaskList = []
 				this.isShowTips = true
 				this.isShowTips = true
+				// this.foucusIndex = 1
+				// setTimeout(() => {
+				// 	this.foucusIndex = 0;
+				// }, 150)
+				this.queryUnFinishedFun(this.outTaskNo)
+			},
+			ResetFoucus() {
+				this.foucusIndex = 1
 				setTimeout(() => {
 				setTimeout(() => {
 					this.foucusIndex = 0;
 					this.foucusIndex = 0;
 				}, 150)
 				}, 150)
@@ -175,22 +195,68 @@
 			},
 			},
 			addOutstoreData(data) {
 			addOutstoreData(data) {
 				// console.log(data)
 				// console.log(data)
-				this.sapOutTaskList.forEach((item) => {
-					if(item.id === data.id) {
-						item.outQty += Number(data.OutNum);
-					}
+				// this.sapOutTaskList.forEach((item) => {
+				// 	if(item.id === data.id) {
+				// 		item.outQty += Number(data.OutNum);
+				// 	}
+				// })
+				// let isFinish = this.sapOutTaskList.some(x => x.outQty < x.qty)
+				// if(!isFinish) {
+				// 	// console.log(111)
+				// 	this.resetCondition()
+				// }
+				// else {
+				// 	this.queryFun()
+				// }
+				this.queryUnFinishedFun(this.outTaskNo);
+			},
+			confirmFun() {
+				this.queryFun()
+			},
+			pageChange(e) {
+				this.current = e.current
+				this.queryUnFinishedFun(this.outTaskNo)
+			},
+			async queryUnFinishedFun(outTaskNoStr) {
+				this.sapOutTaskList = []
+				let parm = {
+					url : '/SapInterface/QuerySapOutTaskListUnfinished',
+					data: {
+						OutTaskNo: outTaskNoStr,
+						PageNum: this.current,
+						PageSize: this.pageSize
+					},
+					method: 'POST',
+					isHaveToken : true
+				}
+				uni.showLoading({
+					title: "正在查询...",
+					mask: true,
 				})
 				})
-				let isFinish = this.sapOutTaskList.some(x => x.outQty < x.qty)
-				if(!isFinish) {
-					// console.log(111)
-					this.resetCondition()
+				let retData = await getApp().RequestData(parm)
+				if(retData.isSuccess) {
+					if(retData.data.code == 200) {
+						// let len = retData.data.data.length
+						// this.sapOutTaskList = retData.data.data
+						let len = retData.data.data.result.length
+						this.total = retData.data.data.totalNum
+						if(len > 0) {
+							this.isShowTips = false
+						}
+						else {
+							this.isShowTips = true
+						}
+						this.sapOutTaskList = retData.data.data.result
+					}
+					else {
+						this.isShowTips = true
+					}
 				}
 				}
 				else {
 				else {
-					this.queryFun()
+					this.isShowTips = true
 				}
 				}
-			},
-			confirmFun() {
-				this.queryFun()
+				this.ResetFoucus()
+				uni.hideLoading()
 			}
 			}
 		}
 		}
 	}
 	}

+ 22 - 20
TFT-PDA/pages/Outstore/outstoreOperate.vue

@@ -4,41 +4,40 @@
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">出库任务单号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">出库任务单号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.outTaskNo}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.outTaskNo}}</text>
 		</view> -->
 		</view> -->
-		<view style="flex-direction: row;display: flex;margin-top: 5px;">
+		<view style="flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">生产令号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">生产令号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.bomNo}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.bomNo}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;display: flex;">
+		<view style="flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.materialCode}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.materialCode}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;display: flex;">
+		<view style="flex-direction: row;display: flex;padding: 2px;margin-top: 5px;margin-bottom: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料名称:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">物料名称:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.materialName}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.materialName}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;display: flex;">
+		<view style="flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">规格型号/图号:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;">规格型号/图号:</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.materialSpec}}</text>
 			<text style="align-self: center;font-size: 35rpx;word-wrap: break-word;width: 200px;font-weight: bold;">{{outTaskDtlMd.materialSpec}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;flex-direction: row;display: flex;">
+		<view style="flex-direction: row;flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 260rpx;">需求数量:</text>
 			<text style="align-self: center;font-size: 35rpx;color: darkslategray;width: 260rpx;">需求数量:</text>
 			<text style="align-self: center;font-size: 50rpx;font-weight: bold;color: blue;">{{outTaskDtlMd.qty - outTaskDtlMd.outQty}}</text>
 			<text style="align-self: center;font-size: 50rpx;font-weight: bold;color: blue;">{{outTaskDtlMd.qty - outTaskDtlMd.outQty}}</text>
 		</view>
 		</view>
-		<view style="flex-direction: row;display: flex;padding: 1px;">
-			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">扫码-物料号:</text>
-			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanMaterialCode" :focus="foucusIndex === 0" @confirm="foucusChange0" @focus="getFoucus(0)"/>
-			<!-- <uni-easyinput style="background:#FFF;margin-right: 5px;font-size: 80rpx;" v-model="scanMaterialCode" :errorMessage="isMaterialCodeErr" :focus="foucusIndex === 0" @confirm="foucusChange0" @input="input"></uni-easyinput> -->
-		</view>
-		<view style="flex-direction: row;display: flex;padding: 1px;">
-			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">扫码-BN/SN码:</text>
+		<!-- <view style="flex-direction: row;display: flex;padding: 1px;">
+			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">规格型号\图号:</text>
+			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" disabled="true" v-model="scanMaterialCode" :focus="foucusIndex === 0" @confirm="foucusChange0" @focus="getFoucus(0)"/>
+		</view> -->
+		<view style="flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
+			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">BN/SN码:</text>
 			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanBnSnCode" :focus="foucusIndex === 1" @confirm="foucusChange1" @focus="getFoucus(1)"/>
 			<input class="uni-input" style="font-size: 40rpx;font-weight: bold;" v-model="scanBnSnCode" :focus="foucusIndex === 1" @confirm="foucusChange1" @focus="getFoucus(1)"/>
 		</view>
 		</view>
-		<view style="flex-direction: row;display: flex;padding: 1px;">
+		<view style="flex-direction: row;display: flex;padding: 2px;margin-top: 5px;">
 			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">出库数量:</text>
 			<text style="align-self: center;font-size: 35rpx;color: #0000ff;font-weight: bold;width: 260rpx;">出库数量:</text>
 			<input class="uni-input" type="number" style="font-size: 40rpx;font-weight: bold;color: red;" v-model="outNum" :focus="foucusIndex === 2" @confirm="foucusChange2" @focus="getFoucus(2)"/>
 			<input class="uni-input" type="number" style="font-size: 40rpx;font-weight: bold;color: red;" v-model="outNum" :focus="foucusIndex === 2" @confirm="foucusChange2" @focus="getFoucus(2)"/>
 		</view>
 		</view>
-		<view class="my-tips-view">{{tipMsg}}</view>
-		<button type="primary" style="margin-top: 5px;" @click="resetData">重置</button>
+		<view class="my-tips-view" style="margin-top: 15px;">{{tipMsg}}</view>
+		<button type="primary" style="margin-top: 45px;" @click="resetData">重置</button>
 		<button type="primary" style="margin-top: 15px;" @click="submitResult">出库结果提交</button>
 		<button type="primary" style="margin-top: 15px;" @click="submitResult">出库结果提交</button>
 		
 		
 		<!-- 提示信息弹窗 -->
 		<!-- 提示信息弹窗 -->
@@ -67,7 +66,7 @@
 				scanMaterialCode: '',
 				scanMaterialCode: '',
 				scanBnSnCode: '',
 				scanBnSnCode: '',
 				outNum: 0,
 				outNum: 0,
-				foucusIndex: 0,
+				foucusIndex: 1,
 				tipMsg: '等待扫码确认物料号......',
 				tipMsg: '等待扫码确认物料号......',
 				popTitleMsg: '请重新扫码!!',
 				popTitleMsg: '请重新扫码!!',
 				popMsg: '',
 				popMsg: '',
@@ -81,8 +80,10 @@
 		onLoad() {
 		onLoad() {
 			uni.$once('sendCheckedDeliverDtlData', (data) => {
 			uni.$once('sendCheckedDeliverDtlData', (data) => {
 				this.outTaskDtlMd = data
 				this.outTaskDtlMd = data
+				this.outNum = data.qty - data.outQty
+				this.scanMaterialCode = data.materialSpec
 			})
 			})
-			this.foucusIndex = 0
+			this.foucusIndex = 1
 		},
 		},
 		methods: {
 		methods: {
 			maskClickFun() {
 			maskClickFun() {
@@ -268,6 +269,7 @@
 					isHaveToken : true
 					isHaveToken : true
 				}
 				}
 				getApp().RequestData(parm).then((res)=>{
 				getApp().RequestData(parm).then((res)=>{
+					console.log(res)
 					let retData = res;
 					let retData = res;
 					if(retData.isSuccess) {
 					if(retData.isSuccess) {
 						if(retData.data.code == 200) {
 						if(retData.data.code == 200) {
@@ -329,10 +331,10 @@
 				this.submitResult()
 				this.submitResult()
 			},
 			},
 			resetData() {
 			resetData() {
-				this.resetFoucus(0)
+				this.resetFoucus(1)
 				this.scanBnSnCode = ''
 				this.scanBnSnCode = ''
-				this.scanMaterialCode = ''
-				this.outNum = 0
+				// this.scanMaterialCode = ''
+				this.outNum = this.outTaskDtlMd.qty - this.outTaskDtlMd.outQty
 				this.stockQty = 0
 				this.stockQty = 0
 				this.tipMsg = '等待扫码确认物料号......'
 				this.tipMsg = '等待扫码确认物料号......'
 			},
 			},

+ 155 - 121
TFT-PDA/pages/login/login.vue

@@ -31,6 +31,19 @@
 				  placeholder="请输入密码"
 				  placeholder="请输入密码"
 				></uni-easyinput>
 				></uni-easyinput>
 			</view>
 			</view>
+			<view class="uni-flex uni-row">
+				<view class="flex-item login-bottom-info" style="-webkit-flex: 1;flex: 1;text-decoration: underline;" @click="ChangeApiAddress">
+					修改后台API接口地址
+				</view>
+				<view style="font-size: 0.92em;color: #5555ff;-webkit-flex: 1;flex: 1;-webkit-justify-content: center;justify-content: center;-webkit-align-items: center;align-items: center;">
+					<checkbox-group @change="selfChanged">
+						<checkbox class="flex-item" style="transform:scale(0.75);" :checked="saveUserPswFlag" />记住用户和密码
+					</checkbox-group>
+				</view>
+			</view>
+			<!-- <view class="login-bottom-info" @click="ChangeApiAddress">
+				修改后台API接口地址
+			</view> -->
 			<view class="login-card-loginIn">
 			<view class="login-card-loginIn">
 				<view class="login-card-loginIn-btn" @click="BtnLoginClick">
 				<view class="login-card-loginIn-btn" @click="BtnLoginClick">
 					登  录
 					登  录
@@ -39,9 +52,6 @@
 					退  出
 					退  出
 				</view>
 				</view>
 			</view>
 			</view>
-			<!-- <view class="login-bottom-info">
-				忘记密码
-			</view> -->
 		</view>
 		</view>
 		<view class="bottom-message">
 		<view class="bottom-message">
 			Copyright ©2023 NAURA 北京七星华创集成电路装备有限公司
 			Copyright ©2023 NAURA 北京七星华创集成电路装备有限公司
@@ -52,6 +62,12 @@
 				<uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
 				<uni-popup-message :type="msgType" :message="messageText" :duration="2000"></uni-popup-message>
 			</uni-popup>
 			</uni-popup>
 		</view>
 		</view>
+		<view>
+			<!-- 输入框示例 -->
+			<uni-popup ref="inputDialog" type="dialog">
+				<uni-popup-dialog ref="inputClose" mode="input" title="修改后台API接口地址" :value="baseUrl" placeholder="请输入内容" @confirm="dialogInputConfirm"></uni-popup-dialog>
+			</uni-popup>
+		</view>
 	</view>
 	</view>
 </template>
 </template>
 
 
@@ -59,133 +75,152 @@
 <script>
 <script>
 import store from "@/store/index.js"
 import store from "@/store/index.js"
 export default {
 export default {
-  data() {
-    return {
-		// 输入框边框颜色默认值
-		colorDefault:'#b4b4b4',
-		// 输入框边框聚焦值
-		colorFocusColor:'#3cb79a',
-		// 输入框颜色配置
-		inputColorConfigToUserName: {
-		color: "#000000",
-		disableColor: "#eee",
-		borderColor: "#b4b4b4",
+	data() {
+		return {
+			// 输入框边框颜色默认值
+			colorDefault:'#b4b4b4',
+			// 输入框边框聚焦值
+			colorFocusColor:'#3cb79a',
+			// 输入框颜色配置
+			inputColorConfigToUserName: {
+			color: "#000000",
+			disableColor: "#eee",
+			borderColor: "#b4b4b4",
+			},
+			// 输入框颜色配置
+			inputColorConfigToPassWord: {
+			color: "#000000",
+			disableColor: "#eee",
+			borderColor: "#b4b4b4",
+			},
+			userNo: getApp().globalData.userName,
+			pswVal: getApp().globalData.password,
+			msgType: 'success',
+			messageText: '这是一条成功提示',
+			baseUrl: '',
+			saveUserPswFlag: true
+		};
+	},
+	onLoad() {
+		this.baseUrl = uni.getStorageSync('BasrUrl');
+		this.userNo = uni.getStorageSync('UserNo');
+		this.pswVal = uni.getStorageSync('PswVal');
+	},
+	// onBackPress() {
+	// 	//console.log("111")
+	// 	return true
+	// },
+	methods: {
+		// 输入框聚焦变换边框样式
+		UserNamePassWrodFocusBorderStyle(){
+		  this.inputColorConfigToUserName.borderColor
+		  = this.colorFocusColor;
 		},
 		},
-		// 输入框颜色配置
-		inputColorConfigToPassWord: {
-		color: "#000000",
-		disableColor: "#eee",
-		borderColor: "#b4b4b4",
+		PassWordFocusBorderStyle(){
+		  this.inputColorConfigToPassWord.borderColor
+		  = this.colorFocusColor;
 		},
 		},
-		userNo: getApp().globalData.userName,
-		pswVal: getApp().globalData.password,
-		msgType: 'success',
-		messageText: '这是一条成功提示',
-    };
-  },
-  methods: {
-    // 输入框聚焦变换边框样式
-    UserNamePassWrodFocusBorderStyle(){
-      this.inputColorConfigToUserName.borderColor
-      = this.colorFocusColor;
-    },
-    PassWordFocusBorderStyle(){
-      this.inputColorConfigToPassWord.borderColor
-      = this.colorFocusColor;
-    },
-    // 输入框失去焦点变换边框样式
-    UserNamePassWrodBlurBorderStyle(){
-      this.inputColorConfigToUserName.borderColor
-      = this.colorDefault;
-    },
-    PassWordBlurBorderStyle(){
-      this.inputColorConfigToPassWord.borderColor
-      = this.colorDefault;
-    },
-	async BtnLoginClick() {
-		uni.showLoading({
-			title: "正在登录中......",
-			mask: true,
-		})
-		let parm = {
-			url : '/login',
-			data: {
-				username: this.userNo,
-				password: this.pswVal
-			},
-			method: 'POST',
-			isHaveToken : false
-		}
-		await getApp().RequestData(parm).then(
-			value => {
-				let retData = value
-				if(retData.isSuccess) {
-					if(retData.data.code == 200) {
-						uni.hideLoading()
-						uni.setStorage({
-							key: 'userInfo',
-							data: {username : "admin", tokenStr : retData.data.data},
-						})
-						uni.switchTab({
-							url:"/pages/tabBar/inspect/inspect",
-						})
+		// 输入框失去焦点变换边框样式
+		UserNamePassWrodBlurBorderStyle(){
+		  this.inputColorConfigToUserName.borderColor
+		  = this.colorDefault;
+		},
+		PassWordBlurBorderStyle(){
+		  this.inputColorConfigToPassWord.borderColor
+		  = this.colorDefault;
+		},
+		async BtnLoginClick() {
+			uni.showLoading({
+				title: "正在登录中......",
+				mask: true,
+			})
+			let parm = {
+				url : '/login',
+				data: {
+					username: this.userNo,
+					password: this.pswVal
+				},
+				method: 'POST',
+				isHaveToken : false
+			}
+			let that = this;
+			await getApp().RequestData(parm).then(
+				value => {
+					let retData = value
+					if(retData.isSuccess) {
+						if(retData.data.code == 200) {
+							uni.hideLoading()
+							if(that.saveUserPswFlag) {
+								uni.setStorage({
+									key: 'UserNo',
+									data: that.userNo,
+								})
+								uni.setStorage({
+									key: 'PswVal',
+									data: that.pswVal,
+								})
+							}
+							else {
+								uni.removeStorage({
+									key: 'UserNo'
+								})
+								uni.removeStorage({
+									key: 'PswVal'
+								})
+							}
+							uni.setStorage({
+								key: 'userInfo',
+								data: {username : that.userNo, tokenStr : retData.data.data},
+							})
+							uni.switchTab({
+								url:"/pages/tabBar/inspect/inspect",
+							})
+						}
+						else {
+							uni.hideLoading()
+							let type = "登录失败!" + retData.data.msg + "!"
+							this.msgType = 'error'
+							this.messageText = `${type}`
+							this.$refs.message.open()
+						}
 					}
 					}
 					else {
 					else {
 						uni.hideLoading()
 						uni.hideLoading()
-						let type = "登录失败!" + retData.data.msg + "!"
+						let type = "登录失败!" + retData.retMsg + "!"
 						this.msgType = 'error'
 						this.msgType = 'error'
 						this.messageText = `${type}`
 						this.messageText = `${type}`
 						this.$refs.message.open()
 						this.$refs.message.open()
 					}
 					}
-				}
-				else {
+				},
+				err => {
+					let retData = err
 					uni.hideLoading()
 					uni.hideLoading()
 					let type = "登录失败!" + retData.retMsg + "!"
 					let type = "登录失败!" + retData.retMsg + "!"
 					this.msgType = 'error'
 					this.msgType = 'error'
 					this.messageText = `${type}`
 					this.messageText = `${type}`
 					this.$refs.message.open()
 					this.$refs.message.open()
 				}
 				}
-			},
-			err => {
-				let retData = err
-				uni.hideLoading()
-				let type = "登录失败!" + retData.retMsg + "!"
-				this.msgType = 'error'
-				this.messageText = `${type}`
-				this.$refs.message.open()
-			}
-		);
-		// console.log(retData)
-		// if(retData.isSuccess) {
-		// 	if(retData.data.code == 200) {
-		// 		uni.setStorage({
-		// 			key: 'userInfo',
-		// 			data: {username : "admin", tokenStr : retData.data.data},
-		// 		})
-		// 		uni.switchTab({
-		// 			url:"/pages/tabBar/inspect/inspect",
-		// 		})
-		// 	}
-		// 	else {
-		// 		let type = "登录失败!" + retData.data.msg + "!"
-		// 		this.msgType = 'error'
-		// 		this.messageText = `${type}`
-		// 		this.$refs.message.open()
-		// 	}
-		// }
-		// else {
-		// 	console.log(11)
-		// 	let type = "登录失败!" + retData.retMsg + "!"
-		// 	this.msgType = 'error'
-		// 	this.messageText = `${type}`
-		// 	this.$refs.message.open()
-		// }
-	},
-	BtnExitClick() {
-		let app = getApp()
-		app.AppExit()
+			);
+		},
+		BtnExitClick() {
+			let app = getApp()
+			app.AppExit()
+		},
+		ChangeApiAddress() {
+			this.$refs.inputDialog.open()
+		},
+		dialogInputConfirm(e) {
+			uni.setStorage({
+				key: 'BasrUrl',
+				data: e
+			});
+			getApp().globalData.baseUrl = e
+			this.baseUrl = e
+		},
+		selfChanged(e) {
+			this.saveUserPswFlag = !this.saveUserPswFlag;
+		}
 	}
 	}
-  },
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
@@ -242,7 +277,7 @@ export default {
   .login-card-input {
   .login-card-input {
     // background-color: violet;
     // background-color: violet;
     height: 50%;
     height: 50%;
-    padding: 5rpx;
+    padding: 1rpx;
   }
   }
   .login-card-title {
   .login-card-title {
     height: 20%;
     height: 20%;
@@ -275,12 +310,11 @@ export default {
     }
     }
   }
   }
   .login-bottom-info{
   .login-bottom-info{
-    height: 5%;
-    display: flex;
-    font-size: 0.7em;
-    color: #3cb79a;
-    justify-content: end;
-
+    // height: 5%;
+    // display: flex;
+    font-size: 0.9em;
+    color: #aa00ff;
+    // justify-content: center;
   }
   }
 }
 }
 .bottom-message{
 .bottom-message{

+ 22 - 0
TFT-PDA/pages/tabBar/inspect/inspect.nvue

@@ -10,6 +10,17 @@
         	<text class="uni-navigate-text-my">质检记录查询</text>
         	<text class="uni-navigate-text-my">质检记录查询</text>
         	<text class="uni-navigate-icon-my uni-icon">&#xe470;</text>
         	<text class="uni-navigate-icon-my uni-icon">&#xe470;</text>
         </view>
         </view>
+		<view style="height: 5px;"></view>
+        <view class="uni-navigate-item-my" @click="PrintLabelFun">
+        	<text class="uni-navigate-text-my">交验单标签打印</text>
+        	<text class="uni-navigate-icon-my uni-icon">&#xe470;</text>
+        </view>
+		<view style="height: 5px;"></view>
+        <view class="uni-navigate-item-my" @click="InspectOneClickOutStore">
+        	<text class="uni-navigate-text-my">质检结果-快速出库</text>
+        	<text class="uni-navigate-icon-my uni-icon">&#xe470;</text>
+        </view>
+		<!-- 以下代码用于测试选择相册图片和拍照图片。 建议不要删除。保留好。 -->
 		<!-- <view class="demo">
 		<!-- <view class="demo">
 			<block v-if="imageSrc">
 			<block v-if="imageSrc">
 				<image :src="imageSrc" class="image" mode="widthFix" @click="previewImage11(1)"></image>
 				<image :src="imageSrc" class="image" mode="widthFix" @click="previewImage11(1)"></image>
@@ -59,6 +70,7 @@
 				})
 				})
 			},
 			},
 			InspectRecordQuery() {
 			InspectRecordQuery() {
+				// 以下代码用于测试选择相册图片和拍照图片。 建议不要删除。保留好。
 				// uni.chooseImage({
 				// uni.chooseImage({
 				// 	count: 6, //默认9
 				// 	count: 6, //默认9
 				// 	sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
 				// 	sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
@@ -71,6 +83,16 @@
 					url:"/pages/Inspect/inspectRecordQuery",
 					url:"/pages/Inspect/inspectRecordQuery",
 				})
 				})
 			},
 			},
+			PrintLabelFun() {
+				uni.navigateTo({
+					url:"/pages/Inspect/PrintLabel",
+				})
+			},
+			InspectOneClickOutStore() {
+				uni.navigateTo({
+					url:"/pages/Inspect/FastOutStoreInspect01",
+				})
+			},
 			chooseImage: function() {
 			chooseImage: function() {
 				let userMsg = uni.getStorageSync('userInfo')
 				let userMsg = uni.getStorageSync('userInfo')
 				uni.chooseImage({
 				uni.chooseImage({

+ 3 - 0
TFT-PDA/pages/tabBar/instore/instore.nvue

@@ -37,6 +37,9 @@
 				
 				
 			}
 			}
 		},
 		},
+		// onBackPress() {
+		// 	return true
+		// },
 		methods: {
 		methods: {
 			InstoreOperate() {				
 			InstoreOperate() {				
 				uni.navigateTo({
 				uni.navigateTo({

+ 3 - 0
TFT-PDA/pages/tabBar/other/other.nvue

@@ -40,6 +40,9 @@
 				
 				
 			}
 			}
 		},
 		},
+		// onBackPress() {
+		// 	return true
+		// },
 		onShareAppMessage() {
 		onShareAppMessage() {
 			
 			
 		},
 		},

+ 3 - 0
TFT-PDA/pages/tabBar/outstore/outstore.nvue

@@ -37,6 +37,9 @@
 				
 				
 			}
 			}
 		},
 		},
+		// onBackPress() {
+		// 	return true
+		// },
 		methods: {
 		methods: {
 			OutstoreOperate() {				
 			OutstoreOperate() {				
 				uni.navigateTo({
 				uni.navigateTo({