瀏覽代碼

移除无用页面

wangc01 9 小時之前
父節點
當前提交
671c079bff

+ 11 - 0
App.vue

@@ -10,6 +10,17 @@
 				uni.setStorageSync('version', inf.version); // 大版本号
 				uni.setStorageSync('versionCode', inf.versionCode); // 小版本号
 			});
+			// 设置默认的服务器地址(如果还没配置过)
+			var defaultIP = "192.168.111.200";
+			var defaultPORT = "8800";
+			var ip = plus.storage.getItem("ip");
+			var port = plus.storage.getItem("port");
+			if (!ip) {
+				plus.storage.setItem("ip", defaultIP);
+			}
+			if (!port) {
+				plus.storage.setItem("port", defaultPORT);
+			}
 			let uuid = plus.device.uuid;
 			// #endif
 

+ 0 - 100
hybrid/html/main.html

@@ -1,100 +0,0 @@
-<!DOCTYPE html>
-<html>
-	<head>
-		<meta charset="utf-8">
-		<title>仓库管理</title>
-		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
-		<meta name="apple-mobile-web-app-capable" content="yes">
-		<meta name="apple-mobile-web-app-status-bar-style" content="black">
-		<link rel="stylesheet" href="css/mui.min.css">
-		<style>
-			.mui-btn {
-				display: block;
-				width: 120px;
-				margin: 10px auto;
-			}
-
-			#info {
-				padding: 20px 10px;
-			}
-		</style>
-	</head>
-	<body>
-		<!-- 	<header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">仓库管理</h1>
-		</header> -->
-		<div class="mui-content">
-			<div class="mui-content-padded" style="margin: 5px;text-align: center;">
-				<button id='alertBtn' type="button" class="mui-btn mui-btn-block" style="margin-top: 20px;">入库</button>
-				<button id='confirmBtn' type="button" class="mui-btn mui-btn-block"
-					style="margin-top: 20px;">正常出库</button>
-				<button id='promptBtn' type="button" class="mui-btn mui-btn-block"
-					style="margin-top: 20px;">分拣出库</button>
-				<div id="info"></div>
-			</div>
-		</div>
-		<script src="js/mui.min.js"></script>
-		<script src="js/app.js"></script>
-		<script src="js/uni.webview.1.5.2.js"></script>
-		<script>
-			//mui初始化
-			mui.init({
-				swipeBack: true //启用右滑关闭功能
-			});
-			mui.plusReady(function() {
-				document.getElementById('alertBtn').addEventListener('tap', function() {
-					setTimeout(() => {
-						uni.navigateTo({
-							url: '/pages/sample/test',
-						})
-					}, 500);
-				});
-				// alertBtn.addEventListener('tap', function(event) {
-				// 	console.log("bbb")
-				// 	uni.switchTab({
-				// 		url: 'pages/sample/group',
-				// 		success: (res) => {
-				// 			console.log("res", res)
-				// 		},
-				// 		fail: (err) => {
-				// 			console.log("err", err)
-				// 		},
-				// 		complete: (r) => {
-				// 			console.log("r", r)
-				// 		}
-				// 	})
-				// })
-
-				// document.getElementById("alertBtn").addEventListener('tap', function() { // 入库
-				// 	mui.openWindow({
-				// 		id:"group_disk.html",
-				// 		url:"group_disk.html"
-				// 	});
-				// });
-			})
-
-
-			// document.getElementById("confirmBtn").addEventListener('tap', function() {
-			// 	mui.openWindow({
-			// 		id:"index",
-			// 		url:"index.html"
-			// 	});
-			// });
-			// document.getElementById("promptBtn").addEventListener('tap', function(e) {
-			// 	e.detail.gesture.preventDefault(); //修复iOS 8.x平台存在的bug,使用plus.nativeUI.prompt会造成输入法闪一下又没了
-			// 	var btnArray = ['取消', '确定'];
-			// 	mui.prompt('请输入你对MUI的评语:', '性能好', 'Hello MUI', btnArray, function(e) {
-			// 		if (e.index == 1) {
-			// 			info.innerText = '谢谢你的评语:' + e.value;
-			// 		} else {
-			// 			info.innerText = '你点了取消按钮';
-			// 		}
-			// 	})
-			// });
-			// document.getElementById("toastBtn").addEventListener('tap', function() {
-
-			// });
-		</script>
-	</body>
-
-</html>

+ 3 - 29
pages.json

@@ -1,27 +1,13 @@
 {
 	"pages": [
-		//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-
-		{
-			"path": "pages/sample/login/logins",
-			"style": {
-				"navigationBarTitleText": "登录",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0039a6",
-				"navigationBarTextStyle": "white",
-				"app-plus": {
-				          "titleNView": true
-				        }
-			}
-		},
 		{
 			 "path": "pages/sample/webView",
 			  "style": {
-			        "navigationStyle": "custom", // 禁用页面默认导航栏
+			        "navigationStyle": "custom",
 			        "app-plus": {
-			          "titleNView": false, // 禁用 App 端标题栏
+			          "titleNView": false,
 			          "webviewParameter": {
-			            "addressBar": false, // 全局禁用地址栏
+			            "addressBar": false,
 			            "toolbar": false
 			          }
 			        }
@@ -45,18 +31,6 @@
 					}
 				}
 			}
-		},
-		{
-			"path": "pages/sample/settings",
-			"style": {
-				"navigationBarTitleText": "配置",
-				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#0039a6",
-				"navigationBarTextStyle": "white",
-				"app-plus": {
-				          "titleNView": true
-				        }
-			}
 		}
 	],
 	 "globalStyle": {

+ 0 - 1568
pages/sample/group.vue

@@ -1,1568 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">组盘入库</text>
-					</view>
-					<view class="map-wrap">
-						<uni-icons class="lanya"></uni-icons>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-form-item uni-column">
-					<text class="uni-form-item__title" style="width: 25%;">托盘码</text>
-					<input class="uni-input" ref="trayCodeInput" auto-focus="true" placeholder="请扫描托盘码"
-						v-model="container_code" @input="handleTrayCodeInput" style="font-weight: bold;" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">存货编码</text>
-					<input class="uni-input" ref="pruductCodeInput" placeholder="请扫描存货编码" v-model="pruduct_code"
-						@input="handlepruductCodeInput" style="font-weight: bold;" />
-				</view>
-
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">入库类别</text>
-					<select-lay style="width: 75%;" :zindex="zindex5" :value="category_sn" name="category_sn"
-						placeholder="请选择入库类别" :options="categoryList" @selectitem="selectCategory">
-					</select-lay>
-				</view>
-
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">入库状态</text>
-					<select-lay style="width: 75%;" :zindex="zindex4" :value="qualified" name="qualified"
-						placeholder="请选择入库状态" :options="qualifiedList" @selectitem="selectQualified">
-					</select-lay>
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">U8仓库 </text>
-					<select-lay style="width: 75%;" :zindex="zindex3" :value="stockarea" name="stockarea"
-						placeholder="请选择U8仓库" :options="stockareaList" @selectitem="selectStockArea">
-					</select-lay>
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">库区</text>
-					<select-lay style="width: 75%;" :zindex="zindex2" :value="area_sn" name="area_sn"
-						placeholder="请选择库区" :options="areaList" @selectitem="selectArea">
-					</select-lay>
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">入库口</text>
-					<select-lay style="width: 75%;" :zindex="zindex1" :value="port_sn" name="port_sn"
-						placeholder="请选择入库口" :options="portList" @selectitem="selectPort">
-					</select-lay>
-				</view>
-				<!-- <view class="uni-input-wrapper button-sp-area">
-						<button type="primary" @click="SelectProduct()">添加存货</button>
-				</view> -->
-				<view style="min-height:230px;overflow-y:auto;max-height:230px">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc">
-									<view class="meta" style="padding-bottom:10px;width: 70%;">
-										<view class="name" @click="Delete(item)">
-											编码:{{item.code}}
-											名称:{{item.name}} 
-											型号:{{item.model}}
-											状态:{{item.status_view}}
-										</view>
-									</view>
-									<!-- 商品数量 -->
-									<view class="numGroup" @click="Update(item)">
-										<text class="text_1">数量</text>
-										<text class="inputs">{{item.num}}</text>
-										<text class="text">{{item.unit}}</text>
-									</view>
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-				<view class="uni-input-wrapper button-sp-area">
-					<button type="primary" plain="true" @click="groupDisk()" :disabled="BtnDisabled">组盘入库</button>
-					<button type="primary" @click="SelectProduct()">添加存货</button>
-					<button type="primary" plain="true" @click="addMaterial()">空筐入库</button>
-				</view>
-				<view class="uni-input-wrapper button-sp-area" style="margin: 5px auto;">
-					<button type="primary" plain="true" @click="getOneNilCode()">1号口</button>
-					<button type="primary" style="visibility: hidden;">1111</button>
-					<button type="primary" plain="true" @click="getTwoNilCode()">2号口</button>
-				</view>
-			</view>
-		</view>
-
-		<!-- 提示窗示例 -->
-		<uni-popup ref="deleteDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" :content="del_tips"
-				@confirm="dialogConfirm" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-
-		<!-- 提示窗示例 -->
-		<uni-popup ref="groupDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定组盘?"
-				@confirm="dialogGroup" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-		<uni-popup ref="groupMaterialDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定空筐入库?"
-				@confirm="dialogMaterialGroup" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-		<uni-popup ref="nilCodeOneDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定叫空托到1号入库口?"
-				@confirm="dialogNilCodeOne" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-		<uni-popup ref="nilCodeTwoDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定叫空托到2号入库口?"
-				@confirm="dialogNilCodeTwo" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-		<!-- 引入自定义模态框 -->
-		<custom-modal :visible="updateModalVisible">
-			<!-- 模态框的内容 -->
-			<view>
-				<text>提示</text>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货编码</text>
-					<input class="uni-input" :value="code" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货名称</text>
-					<input class="uni-input" :value="name" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货型号</text>
-					<input class="uni-input" :value="model" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货品牌</text>
-					<input class="uni-input" :value="brand" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货单位</text>
-					<input class="uni-input" :value="unit" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">数量</text>
-					<input type="number" class="uni-input" :value="num" @input="numChange" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">仓库备注</text>
-					<input class="uni-input" :value="remark" @input="remarkChange" />
-				</view>
-				<br><br>
-				<button class="mini-btn" size="mini" @click="closeUpdateModal"
-					style="width: 50%;float: left;">关闭</button>
-				<button class="mini-btn" type="primary" size="mini" @click="UpdateProduct"
-					style="width: 50%;">更新</button>
-			</view>
-		</custom-modal>
-
-		<!-- 引入自定义模态框 -->
-		<custom-modal :visible="addModalVisible">
-			<!-- 模态框的内容 -->
-			<view>
-				<text>提示</text>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货编码</text>
-					<input class="uni-input" :value="code" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货名称</text>
-					<input class="uni-input" :value="name" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货型号</text>
-					<input class="uni-input" :value="model" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货品牌</text>
-					<input class="uni-input" :value="brand" disabled="true" />
-				</view>
-
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">存货单位</text>
-					<input class="uni-input" :value="unit" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">数量</text>
-					<input type="number" class="uni-input" :value="num" @input="numChange" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">仓库备注</text>
-					<input class="uni-input" :value="remark" @input="remarkChange" />
-				</view>
-				<br><br>
-				<button class="mini-btn" size="mini" @click="closeAddModal" style="width: 50%;float: left;">关闭</button>
-				<button class="mini-btn" type="primary" size="mini" @click="AddProduct" style="width: 50%;">添加</button>
-			</view>
-		</custom-modal>
-
-	</view>
-</template>
-<script>
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	let _this = null;
-	import {
-		mapGetters,
-		mapActions
-	} from 'vuex';
-	import {
-		GET_INFODATA,
-		GET_CONNECTBLEDATA
-	} from "@/store/gettersType.js";
-	import {
-		SET_CONNECTBLEDATA
-	} from '@/store/actionsType.js';
-	// #ifdef APP-PLUS
-	const modal = uni.requireNativePlugin('modal');
-
-	// #endif
-	let print;
-	const reqRootUrl = plus.storage.getItem("reqRootUrl");
-	const ParamreqRootUrl = reqRootUrl + "/wms/api";
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				types: "",
-				port_sn: "",
-				container_code: "",
-				del_tips: "",
-				updateModalVisible: false,
-				addModalVisible: false,
-				tableData: [],
-				portList: [],
-				BtnDisabled: false,
-				sn: "",
-				name: "",
-				code:"",
-				model: "",
-				brand: "",
-				unit: "",
-				remark: "",
-				num: 0,
-				area_sn: "",
-				areaList: [],
-				category_sn: "",
-				stockarea : "",
-				categoryList: [],
-				stockareaList :[],
-				qualified: "合格",
-				qualifiedList: [{
-					"label": "合格",
-					"value": "合格"
-				}, {
-					"label": "不良",
-					"value": "不良"
-				}],
-				zindex1: 1,
-				zindex2: 2,
-				zindex3 :3,
-				zindex4: 4,
-				zindex5: 5,
-				number: "",
-				pruduct_code: "",
-			}
-		},
-		computed: {
-			...mapGetters([GET_INFODATA, GET_CONNECTBLEDATA]),
-		},
-		methods: {
-			onUnload() {
-				SpeechTTS.destroy();
-			},
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/main',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-
-			CateGet() {
-				uni.request({
-					url: ParamreqRootUrl + '/PortGet',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"types": "in"
-					}),
-					success: (ret) => {
-						// console.log("ret", ret)
-						if (ret.statusCode === 200) {
-							this.portList = [];
-							let rows = ret.data.data;
-							// console.log("rows", rows[0]["addr"]["f"])
-							for (var i = 0; i < rows.length; i++) {
-								let lab = rows[i]["alias"]
-								this.portList.push({
-									label: lab,
-									value: JSON.stringify(rows[i]["addr"])
-								})
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-				uni.request({
-					url: ParamreqRootUrl + '/AreaAvailable',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"disable": false,
-					}),
-					success: (ret) => {
-						// console.log("ret", ret)
-						if (ret.statusCode === 200) {
-							this.areaList = [];
-							let rows = ret.data.data;
-							// console.log("rows", rows);
-							if (!_this.isEmpty(rows)) {
-								for (var i = 0; i < rows.length; i++) {
-									this.areaList.push({
-										label: rows[i]["name"],
-										value: rows[i]["sn"]
-									})
-								}
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-				uni.request({
-					url: ParamreqRootUrl + '/CategoryFind',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"disable": false,
-						"types": "in"
-					}),
-					success: (ret) => {
-						if (ret.statusCode === 200) {
-							this.categoryList = [];
-							let rows = ret.data.data;
-							if (!_this.isEmpty(rows)) {
-								for (var i = 0; i < rows.length; i++) {
-									this.categoryList.push({
-										label: rows[i]["full_name"],
-										value: rows[i]["sn"]
-									})
-									if (rows[i]["full_name"] == "BOM采购入库") {
-										this.category_sn = rows[i]["sn"]
-									}
-								}
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-				uni.request({
-					url: ParamreqRootUrl + '/StockU8Find',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"disable": false
-					}),
-					success: (ret) => {
-						if (ret.statusCode === 200) {
-							this.stockareaList = [];
-							let rows = ret.data.data;
-							if (!_this.isEmpty(rows)) {
-								for (var i = 0; i < rows.length; i++) {
-									this.stockareaList.push({
-										label: rows[i]["name"],
-										value: rows[i]["name"]
-									})
-									if (rows[i]["name"] == "原材料库") {
-										this.stockarea = rows[i]["name"]
-									}
-								}
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			selectArea(index, item) {
-				if (index >= 0) {
-					_this.area_sn = item.value;
-				} else {
-					_this.area_sn = ""
-				}
-			},
-			selectPort(index, item) {
-				if (index >= 0) {
-					_this.port_sn = item.value;
-				} else {
-					_this.port_sn = ""
-				}
-			},
-			selectCategory(index, item) {
-				if (index >= 0) {
-					_this.category_sn = item.value;
-				} else {
-					_this.category_sn = ""
-				}
-			},
-			selectStockArea(index, item) {
-				if (index >= 0) {
-					_this.stockarea = item.value;
-				} else {
-					_this.stockarea = ""
-				}
-			},
-
-			rightClick: function() {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/richAlert',
-					})
-				}, 30);
-				// this.$emit("rightClick")
-			},
-
-			onLoad(options) {
-				_this = this;
-				_this.firstFocus = true;
-				_this.getSn(),
-				_this.types = options.types || ""
-			},
-
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					_this.firstFocus = true;
-					this.getList();
-					this.speak_init();
-					this.CateGet();
-				}, 500);
-			},
-			selectQualified(index, item) {
-				if (index >= 0) {
-					_this.qualified = item.value;
-					if (item.value == "不良") {
-						_this.part = "无"
-					} else {
-						_this.part = "生产用料"
-					}
-				} else {
-					_this.qualified = ""
-				}
-			},
-			numChange: function(e) {
-				this.num = e.target.value
-			},
-
-			remarkChange: function(e) {
-				this.remark = e.target.value
-			},
-
-			// 新增明细单号处理方法
-			handleReceiptCodeInput(event) {
-				const code = event.target.value.trim();
-				this.number = code;
-				uni.setStorageSync("number", code);
-			},
-
-			// 新增方法:处理托盘码扫描
-			handleTrayCodeScan() {
-				const code = this.container_code.trim();
-				if (!code) return;
-				// 验证托盘码
-				this.validateTrayCode(code);
-			},
-
-			handleTrayCodeInput(event) {
-				const code = event.target.value.trim();
-				if (code.length >= 1) { // 假设托盘码至少需要1个字符才触发验证
-					this.validateTrayCode(code);
-				}
-			},
-
-			// 修改后的方法:验证托盘码
-			validateTrayCode(code) {
-				uni.request({
-					url: ParamreqRootUrl + '/CodeGet',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"code": code,
-					}),
-					success: (ret) => {
-						if (ret.statusCode !== 200) {
-							_this.alertInfo("托盘码错误,请重新扫描!");
-							_this.container_code = "";
-							_this.focusInput();
-							return;
-						}
-
-						let rows = ret.data.data;
-						if (_this.isEmpty(rows)) {
-							_this.alertInfo("托盘码错误,请重新扫描!");
-							_this.container_code = "";
-							_this.focusInput();
-							return;
-						}
-
-						this.container_code = code;
-						uni.setStorageSync("container_code", code);
-						if (!_this.isEmpty(rows["group_disk"])) {
-							let disk = [];
-							for (var i = 0; i < rows["group_disk"].length; i++) {
-								if (rows["group_disk"][i]["status"] === "status_wait") {
-									rows["group_disk"][i]["status_view"] = "待组盘"
-								}
-								if (rows["group_disk"][i]["status"] === "status_yes") {
-									_this.BtnDisabled = true
-									rows["group_disk"][i]["status_view"] = "已组盘"
-								}
-								disk.push(rows["group_disk"][i])
-							}
-							let rData = disk;
-							if (rData.length > 0) {
-								_this.product_name = rData[0]["product_name"];
-								uni.setStorageSync("product_types", rData[0]["types"])
-								_this.product_code = rData[0]["product_code"];
-								_this.container_code = rData[0]["container_code"];
-								uni.setStorageSync("container_code", rData[0]["container_code"])
-								uni.setStorageSync("receipt_num", rData[0]["receipt_num"])
-
-							}
-							this.tableData = disk;
-						}
-
-						if (!_this.isEmpty(rows["container_code"])) {
-							_this.container_code = code;
-							uni.removeStorageSync('container_code');
-							uni.setStorageSync("container_code", code)
-							if (_this.tableData.length > 0) {
-								for (let i = 0; i < _this.tableData.length; i++) {
-									if (_this.tableData[i]["container_code"] === "") {
-										uni.request({
-											url: reqRootUrl + '/wms/api',
-											method: 'POST',
-											headers: {
-												'Content-Type': 'application/json'
-											},
-											data: JSON.stringify({
-												"method": "GroupDiskUpdate",
-												"param": {
-													"sn": _this.tableData[i]["sn"],
-													"container_code": code
-												}
-											}),
-											success: (ret) => {
-												_this.alertInfo("更新成功!")
-												_this.getList()
-												//处理成功逻辑
-											},
-										})
-									} else {
-										if (_this.tableData[i]["container_code"] !== code) {
-											_this.getSn();
-											_this.getList();
-										}
-									}
-								}
-							} else {
-								_this.getList();
-							}
-						}
-					},
-					fail: (err) => {
-						this.focusInput()
-						this.alertInfo("请求失败,请重试!");
-					},
-					complete: () => {
-						// 可以在这里添加一些完成后的操作
-					}
-				});
-			},
-
-			// 修改后的方法:隐藏键盘(可选)
-			hideKeyboard: function(event) {
-				// 不再自动隐藏键盘,让用户自己决定何时隐藏
-				// 或者可以添加延迟自动隐藏
-				// setTimeout(() => {
-				// 	uni.hideKeyboard();
-				// }, 100);
-			},
-
-			handlepruductCodeInput(event) {
-				const code = event.target.value.trim();
-				if (code.length >= 1) { // 假设明细单号至少需要1个字符才触发验证
-					/**/if (_this.isEmpty(_this.container_code)) {
-						_this.alertInfo("请先扫描托盘码");
-						_this.focusInput();
-						return
-					}
-					this.pruduct_code = code;
-					uni.request({
-						url: ParamreqRootUrl + '/ProductGet',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"code": code,
-							"disable": false,
-							// "source": "U8"
-						}),
-						success: (ret) => {
-							if (ret.statusCode !== 200) {
-								_this.product_code = "";
-								_this.alertInfo("存货编码错误,请重新扫描!");
-								_this.focusInput();df
-								return;
-							}
-							let rows = ret.data.data;
-							if (_this.isEmpty(rows)) {
-								_this.product_code = "";
-								_this.alertInfo("存货编码错误,请重新扫描!");
-								_this.focusInput();
-								return;
-							}
-							// AAAA
-							_this.Add(rows[0])
-						},
-						fail: (err) => {
-							this.alertInfo("请求失败,请重试!");
-						},
-					})
-				}
-			},
-
-			closeAddModal() {
-				// 关闭模态框  
-				_this.sn = "";
-				_this.name = "";
-				_this.code = "";
-				_this.model = "";
-				_this.brand = "";
-				_this.unit = "";
-				_this.remark = "";
-				_this.num = 0;
-				_this.zindex1 = 1;
-				_this.zindex2 = 2;
-				_this.zindex3 = 3;
-				_this.zindex4 = 4;
-				_this.zindex5 = 5;
-				this.addModalVisible = false;
-			},
-			Add(item) {
-				_this.sn = item.sn;
-				_this.name = item.name;
-				_this.code = item.code;
-				_this.model = item.model;
-				_this.brand = item.brand;
-				_this.unit = item.unit;
-				_this.remark = item.remark;
-				_this.num = 1;
-				_this.zindex1 = 0;
-				_this.zindex2 = 0;
-				_this.zindex3 = 0;
-				_this.zindex4 = 0;
-				_this.zindex5 = 0;
-				_this.addModalVisible = true;
-			},
-
-			AddProduct() {
-				let data = {};
-				if (parseFloat(_this.num) <= 0) {
-					_this.alertInfo("请填写正确的数量!")
-					return
-				}
-				setTimeout(() => {
-					let receiptNum = uni.getStorageSync("receipt_num")
-					let number = uni.getStorageSync("number")
-					let containerCode = uni.getStorageSync("container_code")
-					uni.request({
-						url: ParamreqRootUrl + '/GroupDiskAdd',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"code": _this.pruduct_code,
-							"num": parseFloat(_this.num),
-							"remark": _this.remark,
-							"types": "normal",
-							"receipt_num": receiptNum,
-							"number": number,
-							"container_code": containerCode,
-						}),
-						success: (ret) => {
-							if (ret.statusCode === 200) {
-								setTimeout(() => {
-									if(ret.data.ret == "failed"){
-										_this.alertInfo(ret.data.msg)
-									}else{
-										_this.alertInfo("添加成功!")
-									}
-									_this.$nextTick(() => {
-										_this.pruduct_code = "";
-										_this.number ="";
-										_this.sn = "";
-										_this.name = "";
-										_this.code ="";
-										_this.model = "";
-										_this.brand = "";
-										_this.unit = "";
-										_this.remark = "";
-										_this.num = 0;
-										_this.zindex1 = 1;
-										_this.zindex2 = 2;
-										_this.zindex3 = 3;
-										_this.zindex4 = 4;
-										_this.zindex5 = 5;
-										// 关闭窗口后,恢复默认内容
-										_this.addModalVisible = false;
-										_this.getList();
-									})
-								}, 30);
-							}
-						},
-						fail: (err) => {
-							// console.log("BBBBBBBBBBBBBB ", err)
-							// console.log('request fail', err);
-						},
-						complete: (DATE) => {
-							// console.log("BBBBBBBBBBBBBB ", DATE)
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-
-			closeUpdateModal() {
-				_this.zindex1 = 1;
-				_this.zindex2 = 2;
-				_this.zindex3 = 3;
-				_this.zindex4 = 4;
-				_this.zindex5 = 5;
-				// 关闭模态框  
-				_this.sn = "";
-				_this.name = "";
-				_this.code ="";
-				_this.model = "";
-				_this.brand = "";
-				_this.unit = "";
-				_this.remark = "";
-				_this.num = 0;
-				this.updateModalVisible = false;
-			},
-
-			Update(item) {
-				if (item["allow_updates"] === false) {
-					return
-				}
-				_this.sn = item.sn;
-				_this.name = item.name;
-				_this.code = item.code;
-				_this.model = item.model;
-				_this.brand = item.brand;
-				_this.unit = item.unit;
-				_this.remark = item.remark;
-				_this.num = item.num;
-				_this.zindex1 = 0;
-				_this.zindex2 = 0;
-				_this.zindex3 = 0;
-				_this.zindex4 = 0;
-				_this.zindex5 = 0;
-				_this.updateModalVisible = true;
-			},
-
-			UpdateProduct() {
-				let data = {};
-				if (parseFloat(_this.num) <= 0) {
-					_this.alertInfo("请填写正确的数量!")
-					return
-				}
-				setTimeout(() => {
-					let receiptNum = uni.getStorageSync("receipt_num")
-					let containerCode = uni.getStorageSync("container_code")
-					uni.request({
-						url: ParamreqRootUrl + '/GroupDiskUpdate',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"sn": _this.sn,
-							"num": parseFloat(_this.num),
-							"remark": _this.remark
-						}),
-						success: (ret) => {
-							if (ret.statusCode === 200) {
-								setTimeout(() => {
-									_this.alertInfo("更新成功!")
-									_this.$nextTick(() => {
-										_this.sn = "";
-										_this.name = "";
-										_this.code ="";
-										_this.model = "";
-										_this.brand = "";
-										_this.remark = "";
-										_this.num = 0;
-										_this.zindex1 = 1;
-										_this.zindex2 = 2;
-										_this.zindex3 = 3;
-										_this.zindex4 = 4;
-										_this.zindex5 = 5;
-										// 关闭窗口后,恢复默认内容
-										_this.updateModalVisible = false;
-										_this.getList();
-									})
-								}, 30);
-							}
-						},
-						fail: (err) => {
-							// console.log("BBBBBBBBBBBBBB ", err)
-							// console.log('request fail', err);
-						},
-						complete: (DATE) => {
-							// console.log("BBBBBBBBBBBBBB ", DATE)
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-
-			Delete(item) {
-				// 出库后 扫码再次组盘的条目 不允许删除和更新数量 allow_updates 
-				if (item["allow_updates"] === false) {
-					return
-				}
-				this.sn = item["sn"]
-				this.del_tips = "确定删除" + item["name"] + "?";
-				this.$refs.deleteDialog.open()
-			},
-
-			dialogConfirm() {
-				setTimeout(() => {
-					uni.hideLoading()
-					uni.request({
-						url: ParamreqRootUrl + '/GroupDiskDelete',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							[_this.sn]: {}
-						}),
-						success: (ret) => {
-							this.$refs.deleteDialog.close()
-							_this.alertInfo("删除成功!")
-							_this.getList()
-							//处理成功逻辑
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-
-			dialogClose() {
-				_this.getList();
-			},
-
-			getList() {
-				_this.$forceUpdate()
-				_this.tableData = [];
-				let receiptNum = uni.getStorageSync("receipt_num")
-				// let number = uni.getStorageSync("number");
-				let containerCode = uni.getStorageSync("container_code");
-				/* 	if (!_this.isEmpty(number) && _this.isEmpty(_this.number)) {
-						_this.number = number;
-					} */
-				if (!_this.isEmpty(containerCode) && _this.isEmpty(_this.container_code)) {
-					_this.container_code = containerCode;
-				}
-				/**/
-				if (_this.isEmpty(_this.container_code)) {
-					return
-				}
-				uni.request({
-					url: ParamreqRootUrl + '/GroupDiskGetByCode',
-					method: 'POST',
-					async: false,
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						/* "number": _this.number, */
-						"code": _this.container_code,
-						// "receipt_num": receiptNum,
-					}),
-					success: (ret) => {
-						//处理成功逻辑
-						if (ret.statusCode === 200) {
-							let rows = ret.data.data;
-							if (!_this.isEmpty(rows)) {
-								for (var c = 0; c < rows.length; c++) {
-									if (rows[c]["status"] === "status_yes") {
-										rows[c]["status_view"] = "已组盘"
-									} else {
-										rows[c]["status_view"] = "待组盘"
-									}
-								}
-								_this.tableData = rows
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			// 组盘入库
-			groupDisk: function() {
-				_this.firstFocus = false;
-				// console.log("_this.BtnDisabled ", _this.BtnDisabled)
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("托盘码不能为空")
-					return
-				}
-				if (_this.BtnDisabled) {
-					_this.alertInfo("已组盘货物不能再次组盘")
-					return;
-				}
-				if (_this.qualified == "不良" && _this.isEmpty(_this.area_sn)) {
-					_this.alertInfo("不良品入库,请选择库区")
-					return;
-				}
-				if (_this.isEmpty(_this.category_sn)) {
-					_this.alertInfo("请选择入库类别")
-					return
-				}
-				if (_this.isEmpty(_this.qualified)) {
-					_this.alertInfo("请选择入库状态")
-					return
-				}
-				if (_this.isEmpty(_this.stockarea)) {
-					_this.alertInfo("请选择U8仓库")
-					return
-				}
-				if (_this.isEmpty(_this.port_sn) && _this.types != "out") {
-					_this.alertInfo("请选择入库口")
-					return
-				}
-				setTimeout(() => {
-					this.$refs.groupDialog.open()
-				}, 30)
-			},
-			// 空筐入库
-			addMaterial: function() {
-				_this.firstFocus = false;
-				// console.log("_this.BtnDisabled ", _this.BtnDisabled)
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("托盘码不能为空")
-					return
-				}
-				if (_this.isEmpty(_this.port_sn) && _this.types != "out") {
-					_this.alertInfo("请选择入库口")
-					return
-				}
-				setTimeout(() => {
-					this.$refs.groupMaterialDialog.open()
-				}, 30)
-			},
-			// 确定组盘
-			dialogGroup() {
-				let sns = [];
-				for (var d = 0; d < _this.tableData.length; d++) {
-					if (this.tableData[d]["status"] !== "status_wait") {
-						continue
-					}
-					sns.push(this.tableData[d].sn)
-				}
-				let receiptNum = uni.getStorageSync("receipt_num")
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("组盘失败!托盘码不能为空")
-					return
-				}
-				if (_this.isEmpty(_this.category_sn)) {
-					_this.alertInfo("请选择入库类别")
-					return
-				}
-				if (_this.isEmpty(_this.qualified)) {
-					_this.alertInfo("请选择入库状态")
-					return
-				}
-				if (_this.isEmpty(_this.stockarea)) {
-					_this.alertInfo("请选择U8仓库")
-					return
-				}
-				uni.request({
-					url: ParamreqRootUrl + '/ReceiptAdd',
-					method: 'POST',
-					async: false,
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"group_disk_sn_list": sns,
-						"container_code": _this.container_code,
-						"receipt_num": receiptNum,
-						"types": _this.types,
-						"areaSn": _this.area_sn,
-						"category_sn": _this.category_sn,
-						"upstreamstock" : _this.stockarea,
-						"qualified": _this.qualified,
-						"srcaddr": JSON.parse(_this.port_sn)
-
-					}),
-					success: (ret) => {
-						_this.alertInfo("操作成功")
-						_this.$nextTick(() => {
-							_this.container_code = "";
-							uni.setStorageSync("container_code", "")
-							_this.number = "";
-							uni.setStorageSync("number", "")
-							_this.area_sn = "";
-							_this.port_sn = "";
-							console.log("_this.number ", _this.number)
-							_this.getSn();
-							_this.tableData = [];
-							sns = [];
-						})
-						_this.$forceUpdate()
-						//_this.handlePrint(receiptNum)
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			// 空筐确定
-			dialogMaterialGroup() {
-				let receiptNum = uni.getStorageSync("receipt_num")
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("组盘失败!托盘码不能为空")
-					return
-				}
-				uni.request({
-					url: ParamreqRootUrl + '/MaterialAdd',
-					method: 'POST',
-					async: false,
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"container_code": _this.container_code,
-						"receipt_num": receiptNum,
-						"srcaddr": JSON.parse(_this.port_sn)
-					}),
-					success: (ret) => {
-						_this.alertInfo("操作成功")
-						_this.$nextTick(() => {
-							_this.container_code = "";
-							uni.setStorageSync("container_code", "")
-							_this.number = "";
-							uni.setStorageSync("number", "")
-							_this.area_sn = "";
-							_this.getSn();
-							_this.getList();
-						})
-						_this.$forceUpdate()
-						//_this.handlePrint(receiptNum)
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			// 1号口
-			getOneNilCode: function() {
-				_this.firstFocus = false;
-				setTimeout(() => {
-					this.$refs.nilCodeOneDialog.open()
-				}, 30)
-			},
-			// 1号口确定
-			dialogNilCodeOne() {
-				uni.request({
-					url: ParamreqRootUrl + '/PDACallEmptyTray',
-					method: 'POST',
-					async: false,
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"export": "1",
-					}),
-					success: (ret) => {
-						if (ret.statusCode == "200") {
-							if (ret.data.ret == "failed") {
-								_this.alertInfo(ret.data.msg)
-								return
-							} else {
-								_this.alertInfo("操作成功")
-								return
-							}
-						} else {
-							_this.alertInfo("操作失败")
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			// 2号口
-			getTwoNilCode: function() {
-				_this.firstFocus = false;
-				setTimeout(() => {
-					this.$refs.nilCodeTwoDialog.open()
-				}, 30)
-			},
-			// 2号口确定
-			dialogNilCodeTwo() {
-				uni.request({
-					url: ParamreqRootUrl + '/PDACallEmptyTray',
-					method: 'POST',
-					async: false,
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"export": "2",
-					}),
-					success: (ret) => {
-						if (ret.statusCode == "200") {
-							if (ret.data.ret == "failed") {
-								_this.alertInfo(ret.data.msg)
-								return
-							} else {
-								_this.alertInfo("操作成功")
-								return
-							}
-						} else {
-							_this.alertInfo("操作失败")
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-			onNavigationBarButtonTap: function(e) {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/richAlert',
-					})
-				}, 500);
-			},
-
-			SelectProduct() {
-				setTimeout(() => {
-					_this.firstFocus = false;
-					uni.navigateTo({
-						url: '/pages/sample/product',
-					})
-				}, 30)
-			},
-			getSn() {
-				let today = new Date();
-				let year = today.getFullYear();
-				let month = today.getMonth() + 1;
-				let date = today.getDate();
-				let hours = today.getHours();
-				let minutes = today.getMinutes();
-				let seconds = today.getSeconds();
-				let millisecond = today.getMilliseconds()
-				if (month <= 9) {
-					month = '0' + month
-				}
-				if (minutes <= 9) {
-					minutes = '0' + minutes;
-				}
-				if (date <= 9) {
-					date = '0' + date;
-				}
-				if (seconds <= 9) {
-					seconds = '0' + seconds;
-				}
-				let sn = year + '' + month + '' + date + '' + hours + '' + minutes + '' + seconds + '' + millisecond
-				uni.removeStorageSync('receipt_num');
-				uni.setStorageSync("receipt_num", sn)
-				uni.removeStorageSync('port_sn');
-				return sn
-			},
-
-			formattedDate(d) {
-				const date = new Date(d);
-				const year = date.getFullYear();
-				const month = String(date.getMonth() + 1).padStart(2, '0');
-				const day = String(date.getDate()).padStart(2, '0');
-				const hours = String(date.getHours()).padStart(2, '0');
-				const minutes = String(date.getMinutes()).padStart(2, '0');
-				const seconds = String(date.getSeconds()).padStart(2, '0');
-				return `${year}-${month}-${day}`;
-			},
-			focusInput() {
-				setTimeout(() => {
-					_this.$refs.trayCodeInput.focus();
-				}, 0);
-			},
-			// 新增聚焦到明细单号输入框的方法
-			focusReceiptInput() {
-				setTimeout(() => {
-					_this.$refs.receiptCodeInput.focus();
-				}, 0);
-			},
-			// 新增聚焦到明细单号输入框的方法
-			focuspruductCodeInput() {
-				setTimeout(() => {
-					_this.$refs.pruductCodeInput.focus();
-				}, 0);
-			},
-		},
-	}
-</script>
-
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 50px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 50px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			.specs {
-				line-height: 2;
-				padding: 0 15rpx;
-				font-size: 16px;
-				align-self: flex-start;
-				border-radius: 4rpx;
-				color: #888;
-				background-color: #f7f7f8;
-			}
-
-			.status_view {
-				line-height: 1;
-				font-size: 18px;
-				color: #444;
-				margin-bottom: 2rpx;
-				color: #000000;
-				padding-top: 5px;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				// position: absolute;
-				// bottom: 70rpx;
-				// right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 120px;
-				height: 48rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-
-			// 商品数量
-			.weightGroup {
-				// border: 1px solid green;
-				position: absolute;
-				bottom: 20rpx;
-				right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				width: 120px;
-				height: 48rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-		}
-
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 233
pages/sample/login/login.vue

@@ -1,233 +0,0 @@
-<!-- 蓝色登录页面2 -->
-<template>
-	<view>
-		<view class="img-a">
-			<view class="t-b">
-				您好,
-				<br />
-				欢迎使用WMS
-			</view>
-		</view>
-		<view class="login-view" style="">
-			<view class="t-login">
-				<form class="cl">
-					<view class="t-a">
-						<text class="txt">用户名</text>
-						<input type="text" name="username" placeholder="请输入您的用户名" v-model="username" />
-					</view>
-					<view class="t-a">
-						<text class="txt">密码</text>
-						<input type="password" name="password" maxlength="18" placeholder="请输入您的密码" v-model="pwd" />
-					</view>
-					<button @tap="login()">登 录</button>
-					<!-- <view class="reg" @tap="reg()">注 册</view> -->
-				</form>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-	export default {
-		data() {
-			return {
-				username: 'sysadmin', //用户名
-				pwd: 'abcd1234' //密码
-			};
-		},
-		onLoad() {},
-		methods: {
-			//当前登录按钮操作
-			login() {
-				var that = this;
-				if (!that.username) {
-					uni.showToast({
-						title: '请输入您的用户名',
-						icon: 'none'
-					});
-					return;
-				}
-				if (!that.pwd) {
-					uni.showToast({
-						title: '请输入您的密码',
-						icon: 'none'
-					});
-					return;
-				}
-
-				uni.request({
-					url: reqRootUrl + '/login',
-					data: {
-						rememberMe: true,
-					},
-					type: 'POST',
-					timeout: 30000, //超时时间设置为30秒;
-					beforeSend: function(xhr) {
-						xhr.setRequestHeader('Authorization', 'Basic ' + btoa(usernameBox.value +
-							':' + codeBox.value));
-					},
-					complete: function() {
-						plus.nativeUI.closeWaiting(); //关于加载提示
-					},
-					success: (ret) => {
-						uni.showToast({
-							title: '登录成功!',
-							icon: 'none'
-						});
-						setTimeout(() => {
-							uni.redirectTo({
-								url: '/pages/sample/main',
-							})
-						}, 500);
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			//注册按钮点击
-			// reg() {
-			// 	uni.showToast({ title: '注册跳转', icon: 'none' });
-			// },
-		}
-	};
-</script>
-<style>
-	.txt {
-		font-size: 32rpx;
-		font-weight: bold;
-		color: #333333;
-	}
-
-	.img-a {
-		width: 100%;
-		height: 450rpx;
-		background-image: url(../../../static/head.png);
-		background-size: 100%;
-	}
-
-	.reg {
-		font-size: 28rpx;
-		color: #fff;
-		height: 90rpx;
-		line-height: 90rpx;
-		border-radius: 50rpx;
-		font-weight: bold;
-		background: #f5f6fa;
-		color: #000000;
-		text-align: center;
-		margin-top: 30rpx;
-	}
-
-	.login-view {
-		width: 100%;
-		position: relative;
-		margin-top: -120rpx;
-		background-color: #ffffff;
-		border-radius: 8% 8% 0% 0;
-	}
-
-	.t-login {
-		width: 600rpx;
-		margin: 0 auto;
-		font-size: 28rpx;
-		padding-top: 80rpx;
-	}
-
-	.t-login button {
-		font-size: 28rpx;
-		background: #2796f2;
-		color: #fff;
-		height: 90rpx;
-		line-height: 90rpx;
-		border-radius: 50rpx;
-		font-weight: bold;
-	}
-
-	.t-login input {
-		height: 90rpx;
-		line-height: 90rpx;
-		margin-bottom: 50rpx;
-		border-bottom: 1px solid #e9e9e9;
-		font-size: 28rpx;
-	}
-
-	.t-login .t-a {
-		position: relative;
-	}
-
-	.t-b {
-		text-align: left;
-		font-size: 42rpx;
-		color: #ffffff;
-		padding: 130rpx 0 0 70rpx;
-		font-weight: bold;
-		line-height: 70rpx;
-	}
-
-	.t-login .t-c {
-		position: absolute;
-		right: 22rpx;
-		top: 22rpx;
-		background: #5677fc;
-		color: #fff;
-		font-size: 24rpx;
-		border-radius: 50rpx;
-		height: 50rpx;
-		line-height: 50rpx;
-		padding: 0 25rpx;
-	}
-
-	.t-login .t-d {
-		text-align: center;
-		color: #999;
-		margin: 80rpx 0;
-	}
-
-	.t-login .t-e {
-		text-align: center;
-		width: 250rpx;
-		margin: 80rpx auto 0;
-	}
-
-	.t-login .t-g {
-		float: left;
-		width: 50%;
-	}
-
-	.t-login .t-e image {
-		width: 50rpx;
-		height: 50rpx;
-	}
-
-	.t-login .t-f {
-		text-align: center;
-		margin: 150rpx 0 0 0;
-		color: #666;
-	}
-
-	.t-login .t-f text {
-		margin-left: 20rpx;
-		color: #aaaaaa;
-		font-size: 27rpx;
-	}
-
-	.t-login .uni-input-placeholder {
-		color: #aeaeae;
-	}
-
-	.cl {
-		zoom: 1;
-	}
-
-	.cl:after {
-		clear: both;
-		display: block;
-		visibility: hidden;
-		height: 0;
-		content: '\20';
-	}
-</style>

+ 0 - 25
pages/sample/login/logins.vue

@@ -1,25 +0,0 @@
-<template>
-	<view>
-		<web-view src="/hybrid/html/login.html"></web-view>
-	</view>
-</template>
-<script>
-	export default {
-		methods: {
-			// 关闭mui返回
-			clearMuiBack() {
-				// #ifdef APP-PLUS
-				var currentWebview = this.$scope.$getAppWebview().children()[0];
-				//监听注入的js
-				currentWebview.addEventListener("loaded", function() {
-					currentWebview.evalJS("mui.init({keyEventBind: {backbutton: false }});");
-				});
-				// #endif
-			},
-		},
-	}
-</script>
-
-<style>
-
-</style>

+ 0 - 662
pages/sample/product.vue

@@ -1,662 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">选择线下货物</text>
-					</view>
-					<view class="map-wrap">
-						<text></text>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-form-item uni-column">
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">名称:</text>
-					<input class="uni-input" :value="query_name" @input="nameChange" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">品牌:</text>
-					<input class="uni-input" :value="query_brand" @input="brandChange" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">型号:</text>
-					<input class="uni-input" :value="query_model" @input="modelChange" />
-				</view>
-
-				<view style="min-height:600px;overflow-y:auto;max-height:600px">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc" @click="SelectProduct(item)">
-									<view class="meta" style="padding-bottom:15px;">
-										<view class="name">
-											名称:{{item.name}}
-											品牌:{{item.brand}}
-											型号:{{item.model}}
-											设备编号:{{item.deviceid}}
-											主类别:{{item.category_name}}
-											分类别:{{item.main_categoryid_name}}
-											公司:{{item.company_name}}
-											产品详情:{{item.remark}}
-										</view>
-									</view>
-									<!-- 商品数量 -->
-									<!-- <view class="numGroup">
-										<text class="text_1"></text>
-										<text class="inputs"></text>
-										<text class="text"></text>
-									</view> -->
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-
-
-			</view>
-		</view>
-		<view>
-			<!-- 引入自定义模态框 -->
-			<custom-modal :visible="modalVisible">
-				<!-- 模态框的内容 -->
-				<view>
-					<text>提示</text>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">名称</text>
-						<input class="uni-input" :value="name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">品牌</text>
-						<input class="uni-input" :value="brand" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">型号</text>
-						<input class="uni-input" :value="model" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">主类别</text>
-						<input class="uni-input" :value="category_name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">分类别</text>
-						<input class="uni-input" :value="main_categoryid_name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">公司</text>
-						<select-lay style="width: 75%;" :zindex="3" :value="companyid" name="companyid" placeholder="请选择公司"
-							:options="companyList" @selectitem="selectCompany">
-						</select-lay>
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">产品详情</text>
-						<input class="uni-input" :value="remark" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">数量</text>
-						<input type="number" class="uni-input" :value="num" @input="numChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">设备编号</text>
-						<input class="uni-input" :value="deviceid" @input="deviceidChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">仓库备注</text>
-						<input class="uni-input" :value="stock_remark" @input="stock_remarkChange" />
-					</view>
-					<br><br>
-					<button class="mini-btn" size="mini" @click="closeModal" style="width: 50%;float: left;">关闭</button>
-					<button class="mini-btn" type="primary" size="mini" @click="SelectConfirm"
-						style="width: 50%;">添加</button>
-				</view>
-			</custom-modal>
-		</view>
-	</view>
-</template>
-<script>
-	let _this = null;
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-	const modal = uni.requireNativePlugin('modal');
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				url: '',
-				query_name: "",
-				query_brand: "",
-				query_model: "",
-				tableData: [],
-				modalVisible: false,
-				name: "",
-				model: "",
-				deviceid: "",
-				stock_remark:"",
-				brand: "",
-				num: 0,
-				productid: "",
-				companyid: "",
-				company_name: "",
-				category_name: "",
-				main_categoryid_name: "",
-				remark: "",
-				companyList: [{
-						label: "华力",
-						value: "6477115e9708e4295690708b"
-					},
-					{
-						label: "西曼克",
-						value: "6465c853797066b5c4e0ab0e"
-					}],
-			}
-		},
-		computed: {},
-		methods: {
-			onUnload() {
-				SpeechTTS.destroy();
-			},
-
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/group',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-			onLoad() {
-				this.platform = uni.getSystemInfoSync().platform
-				// #ifdef APP-PLUS-NVUE
-				this.isNvue = true
-				// #endif
-				_this = this;
-				setTimeout(() => {
-					this.getList();
-				}, 350);
-			},
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					this.getUserInfoWareHouse();
-				}, 300);
-				setTimeout(() => {
-					this.speak_init();
-					// this.getList();
-				}, 350);
-			},
-
-			selectCompany(index, item) {
-				if (index >= 0) {
-					_this.companyid = item.value;
-				} else {
-					_this.companyid = ""
-				}
-			},
-			nameChange: function(event) {
-				let Value = event.detail.value;
-				this.query_name = Value.trim();
-				_this.ContainerQuery();
-			},
-			brandChange: function(event) {
-				let Value = event.detail.value;
-				this.query_brand = Value.trim();
-				_this.ContainerQuery();
-			},
-			modelChange: function(event) {
-				let Value = event.detail.value;
-				this.query_model = Value.trim();
-				_this.ContainerQuery();
-			},
-
-			ContainerQuery() {
-				if (!_this.isEmpty(_this.query_name) || !_this.isEmpty(_this.query_brand) || !_this.isEmpty(_this
-						.query_model)) {
-					console.log("aaa ", _this.query_name, _this.query_brand, _this.query_model)
-					_this.tableData = [];
-					uni.request({
-						url: reqRootUrl + '/ProductQuery',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"name": this.query_name,
-							"brand": this.query_brand,
-							"model": this.query_model,
-							"types": "regex",
-						}),
-						success: (ret) => {
-							console.log("ret ", ret)
-							if (ret.statusCode === 200) {
-								if (!_this.isEmpty(ret.data)) {
-									_this.tableData = ret.data;
-								}
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				} else {
-					_this.getList()
-				}
-			},
-
-			SelectProduct(item) {
-				let source = uni.getStorageSync("source");
-				if (source !== "group") {
-					return
-				}
-				_this.productid = item._id;
-				_this.name = item.name;
-				_this.model = item.model;
-				_this.deviceid = item.deviceid;
-				_this.brand = item.brand;
-				_this.company_name = item.company_name;
-				_this.companyid = item.companyid
-				_this.category_name = item.category_name;
-				_this.main_categoryid_name = item.main_categoryid_name;
-				_this.remark = item.remark;
-				_this.num = 1;
-				_this.modalVisible = true;
-			},
-
-			numChange: function(e) {
-				this.num = e.target.value
-			},
-
-			deviceidChange: function(e) {
-				this.deviceid = e.target.value
-			},
-			
-			stock_remarkChange: function(e) {
-				this.stock_remark = e.target.value
-			},
-	
-			closeModal() {
-				// 关闭模态框  
-				_this.productid = "";
-				_this.name = "";
-				_this.model = "";
-				_this.deviceid = "";
-				_this.brand = "";
-				_this.companyid = "";
-				_this.company_name = "";
-				_this.category_name = "";
-				_this.main_categoryid_name = "";;
-				_this.remark = "";
-				_this.num = 0;
-				_this.deviceid = "";
-				_this.modalVisible = false;
-			},
-
-			SelectConfirm() {
-				let receiptNum = uni.getStorageSync("receipt_num");
-				let containerCode = uni.getStorageSync("container_code");
-				let warehouse_id = uni.getStorageSync("warehouse_id");
-				let source = uni.getStorageSync("source");
-				let data = {};
-				if (parseInt(_this.num) === 0) {
-					_this.alertInfo("请填写正确的入库数量")
-					return
-				}
-				data["productid"] = _this.productid;
-				data["num"] = parseInt(_this.num)
-				data["container_code"] = containerCode;
-				data["groupsn"] = "";
-				data["types"] = "normal";
-				data["receipt_num"] = receiptNum;
-				data["warehouse_id"] = warehouse_id;
-				data["stock_remark"] = _this.stock_remark;
-				data["purchaseid"] = "";
-				data["deviceid"] = _this.deviceid;
-				data["companyid"] = _this.companyid;
-				let methods = "GroupDiskAdd"
-				// if (source === "out") {
-				// 	methods = "AddDetailAddRecord";
-				// }
-				setTimeout(() => {
-					uni.request({
-						url: reqRootUrl + '/GroupDiskAdd',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify(data),
-						success: (ret) => {
-							console.log("ret ", ret)
-							if (ret.statusCode === 200) {
-								_this.alertInfo("添加成功");
-								_this.getList();
-								_this.productid = "";
-								_this.name = "";
-								_this.model = "";
-								_this.deviceid = "";
-								_this.brand = "";
-								_this.company_name = "";
-								_this.category_name = "";
-								_this.main_categoryid_name = "";;
-								_this.remark = "";
-								_this.companyid = "";
-								this.num = 0;
-								setTimeout(() => {
-									uni.navigateBack();
-									uni.redirectTo({
-										url: '/pages/sample/group',
-									})
-								}, 1000);
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-					// 关闭窗口后,恢复默认内容
-					this.modalVisible = false;
-				}, 30)
-			},
-
-			getList() {
-				uni.request({
-					url: reqRootUrl + '/ProductQuery',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({}),
-					success: (ret) => {
-						if (ret.statusCode === 200) {
-							if (!_this.isEmpty(ret.data)) {
-								this.tableData = ret.data;
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			getUserInfoWareHouse() {
-				uni.request({
-					url: reqRootUrl + '/getUserInfoWareHouse',
-					method: 'POST',
-					async: false,
-					success: (ret) => {
-						_this.warehouse_id = ret.data;
-						uni.setStorageSync("warehouse_id", ret.data)
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-		},
-	}
-</script>
-
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 25px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 25px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			.specs {
-				line-height: 2;
-				padding: 0 15rpx;
-				font-size: 16px;
-				align-self: flex-start;
-				border-radius: 4rpx;
-				color: #888;
-				background-color: #f7f7f8;
-			}
-
-			.status_view {
-				line-height: 1;
-				font-size: 18px;
-				color: #444;
-				margin-bottom: 2rpx;
-				color: #000000;
-				padding-top: 5px;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				// position: absolute;
-				// bottom: 70rpx;
-				// right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 120px;
-				height: 48rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-		}
-
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 547
pages/sample/select_detail.vue

@@ -1,547 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">库存明细</text>
-					</view>
-					<view class="map-wrap">
-						<text></text>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-form-item uni-column">
-				<view style="min-height:600px;overflow-y:auto;max-height:600px;">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc">
-									<view class="meta" style="padding-bottom:15px;">
-										<view class="name">
-											货物名称:{{item.name}} 型号:{{item.model}} 品牌:{{item.brand}}
-											数量:{{item.num}} 生产单号:{{item.product_number}}
-											出库备注:{{item.remark}}
-										</view>
-										<br>
-									</view>
-									<!-- 商品数量 -->
-									<view class="numGroup">
-										<button type="primary" @click="SelectProduct(item)">确认出库</button>
-									</view>
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-
-			</view>
-		</view>
-		<view>
-			<!-- 引入自定义模态框 -->
-			<custom-modal :visible="modalVisible">
-				<!-- 模态框的内容 -->
-				<view>
-					<text>提示</text>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">领取人</text>
-						<input class="uni-input" :value="operator" @input="operatorChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">领取数量</text>
-						<input class="uni-input" :value="out_num" @input="numChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">生产单号</text>
-						<input class="uni-input" :value="product_number" @input="product_numberChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">出库备注</text>
-						<input class="uni-input" :value="remark" @input="remarkChange" />
-					</view>
-					<br><br>
-					<button class="mini-btn" size="mini" @click="closeModal" style="width: 50%;float: left;">关闭</button>
-					<button class="mini-btn" type="primary" size="mini" @click="OutNum" style="width: 50%;">确定</button>
-				</view>
-			</custom-modal>
-		</view>
-	</view>
-</template>
-<script>
-	let _this = null;
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-	const modal = uni.requireNativePlugin('modal');
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				tableData: [],
-				modalVisible: false,
-				operator: "",
-				out_num: 0,
-				store_num: 0,
-				product_number: "",
-				remark: "",
-				sn: "",
-				_id: "",
-				title: "",
-				expound: "",
-			}
-		},
-		computed: {},
-		methods: {
-			onUnload() {
-				SpeechTTS.destroy();
-			},
-
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/group',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-			onLoad() {
-				this.platform = uni.getSystemInfoSync().platform
-				// #ifdef APP-PLUS-NVUE
-				this.isNvue = true
-				// #endif
-				_this = this;
-				setTimeout(() => {
-					this.getList();
-				}, 350);
-			},
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					this.speak_init();
-					// this.getList();
-				}, 350);
-			},
-			operatorChange: function(e) {
-				this.operator = e.target.value
-			},
-			product_numberChange: function(e) {
-				this.product_number = e.target.value
-			},
-			numChange: function(e) {
-				this.out_num = e.target.value
-			},
-			remarkChange: function(e) {
-				this.remark = e.target.value
-			},
-
-			SelectProduct(item) {
-				_this.expound = item["expound"];
-				this.out_num = 1;
-				_this.store_num = item["num"]
-				_this.sn = item["sn"]
-				_this._id = item["_id"]
-				_this.title = "库存数量:" + item["num"];
-				this.modalVisible = true;
-			},
-
-			closeModal() {
-				// 关闭模态框  
-				_this.expound = "";
-				_this.operator = "";
-				_this.out_num = 0;
-				_this.store_num = 0;
-				_this.product_number = "";
-				_this.remark = "";
-				_this.sn = "";
-				_this._id = "";
-				_this.title = "";
-				this.modalVisible = false;
-			},
-
-			OutNum() {
-				if (parseFloat(_this.out_num) <= 0 || parseFloat(_this.out_num) > parseFloat(_this.store_num)) {
-					_this.alertInfo("请输入正确的数量!");
-					return
-				}
-				setTimeout(() => {
-					uni.hideLoading()
-					// 1、新建出库单
-					uni.request({
-						url: reqRootUrl + '/OutOrderAdd',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"_id": _this._id,
-							"expound": _this.expound,
-							"remark": _this.remark,
-							"operator": _this.operator,
-							"num": parseFloat(_this.out_num),
-							"product_number": _this.product_number,
-							"types": "normal",
-						}),
-						success: (ret) => {
-							if (ret.statusCode === 200) {
-								_this.alertInfo("添加出库单成功!");
-								uni.navigateBack();
-								uni.redirectTo({
-									url: '/pages/sample/sorting_out',
-								})
-							} else {
-								_this.alertInfo("操作失败!");
-							}
-							//处理成功逻辑
-							// 2、出库操作
-						},
-						fail: (err) => {
-							console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-					// 关闭窗口后,恢复默认内容
-					this.modalVisible = false;
-				}, 30)
-			},
-
-			getList() {
-				let containerCode = uni.getStorageSync("container_code");
-				let detail_sn_list = uni.getStorageSync("detail_sn_list");
-				containerCode = containerCode.trim();
-				_this.tableData = [];
-				let params = JSON.stringify({
-					"sort": "creationTime",
-					"order": "desc",
-					"offset": 0,
-					"limit": 100,
-					"custom": {
-						'container_code': containerCode,
-						'flag': true,
-						'disable': false,
-					}
-				})
-
-				uni.request({
-					url: reqRootUrl + '/bootable/ums.wms_inventorydetail',
-					method: 'POST',
-					async: false,
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: params,
-					success: (ret) => {
-						// console.log("ret ", ret)
-						if (ret.statusCode === 200) {
-							let rows = ret.data.rows;
-							for (let i in rows) {
-								// if (detail_sn_list.includes(rows[i]["sn"])) {
-								// 	continue
-								// }
-								console.log("rows[i]", rows[i])
-								_this.tableData.push(rows[i])
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-		},
-	}
-</script>
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 25px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 25px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			.specs {
-				line-height: 2;
-				padding: 0 15rpx;
-				font-size: 16px;
-				align-self: flex-start;
-				border-radius: 4rpx;
-				color: #888;
-				background-color: #f7f7f8;
-			}
-
-			.status_view {
-				line-height: 1;
-				font-size: 18px;
-				color: #444;
-				margin-bottom: 2rpx;
-				color: #000000;
-				padding-top: 5px;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				position: absolute;
-				bottom: 40rpx;
-				right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 100px;
-				height: 30rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-
-			// 商品数量
-			.weightGroup {
-				// border: 1px solid green;
-				position: absolute;
-				bottom: 20rpx;
-				right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				width: 120px;
-				height: 48rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-		}
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 557
pages/sample/select_product.vue

@@ -1,557 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">选择采购货物</text>
-					</view>
-					<view class="map-wrap">
-						<text></text>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-form-item uni-column">
-				<view style="min-height:600px;overflow-y:auto;max-height:600px">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc" @click="SelectProduct(item)">
-									<view class="meta" style="padding-bottom:15px;">
-										<view class="name">
-											名称:{{item.name}} 型号:{{item.model}}
-											品牌:{{item.brand}} 仓库备注:{{item.stock_remark}}
-										</view>
-									</view>
-									<!-- 商品数量 -->
-									<view class="numGroup">
-										<text class="text_1">数量</text>
-										<text class="inputs">{{item.stay_num}}</text>
-										<text class="text">个</text>
-									</view>
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-
-			</view>
-		</view>
-		<view>
-			<!-- 引入自定义模态框 -->
-			<custom-modal :visible="modalVisible">
-				<!-- 模态框的内容 -->
-				<view>
-					<text>提示</text>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">名称</text>
-						<input class="uni-input" :value="name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">型号</text>
-						<input class="uni-input" :value="model" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">品牌</text>
-						<input class="uni-input" :value="brand" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">仓库备注</text>
-						<input class="uni-input" :value="stock_remark" @input="stock_remarkChange" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">数量</text>
-						<input type="number" class="uni-input" :value="num" @input="numChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">设备编号</text>
-						<input class="uni-input" :value="deviceid" @input="deviceidChange" />
-					</view>
-					<br><br>
-					<button class="mini-btn" size="mini" @click="closeModal" style="width: 50%;float: left;">关闭</button>
-					<button class="mini-btn" type="primary" size="mini" @click="SelectConfirm"
-						style="width: 50%;">添加</button>
-				</view>
-			</custom-modal>
-		</view>
-	</view>
-</template>
-<script>
-	let _this = null;
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-	const modal = uni.requireNativePlugin('modal');
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				tableData: [],
-				modalVisible: false,
-				name: "",
-				model: "",
-				brand: "",
-				num: 0,
-				stay_num: 0,
-				stock_remark: "",
-				productid: "",
-				sn: "",
-				purchaseid: "",
-				companyid: "",
-				deviceid: "",
-			}
-		},
-		computed: {},
-		methods: {
-			onUnload() {
-				SpeechTTS.destroy();
-			},
-
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/group',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-			onLoad() {
-				this.platform = uni.getSystemInfoSync().platform
-				// #ifdef APP-PLUS-NVUE
-				this.isNvue = true
-				// #endif
-				_this = this;
-				setTimeout(() => {
-					this.getList();
-				}, 350);
-			},
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					this.getUserInfoWareHouse();
-				}, 300);
-				setTimeout(() => {
-					this.speak_init();
-					// this.getList();
-				}, 350);
-			},
-
-			numChange: function(e) {
-				this.num = e.target.value
-			},
-
-			deviceidChange: function(e) {
-				this.deviceid = e.target.value
-			},
-
-			stock_remarkChange: function(e) {
-				this.stock_remark = e.target.value
-			},
-
-			SelectProduct(item) {
-				_this.sn = item.sn;
-				_this.productid = item.productid;
-				_this.name = item.name;
-				_this.model = item.model;
-				_this.brand = item.brand;
-				_this.stock_remark = item.stock_remark;
-				_this.num = item.stay_num;
-				_this.deviceid = item.deviceid;
-				_this.stay_num = item.stay_num;
-				_this.companyid = item.companyid;
-				_this.purchaseid = item.purchaseid;
-				this.modalVisible = true;
-			},
-
-			closeModal() {
-				// 关闭模态框
-				_this.productid = "";
-				_this.sn = "";
-				_this.name = "";
-				_this.model = "";
-				_this.brand = "";
-				_this.stock_remark = "";
-				_this.deviceid = "";
-				_this.num = 0;
-				_this.stay_num = 0;
-				_this.companyid = "";
-				_this.purchaseid = "";
-				_this.modalVisible = false;
-			},
-
-			SelectConfirm() {
-				let receiptNum = uni.getStorageSync("receipt_num");
-				let containerCode = uni.getStorageSync("container_code");
-				let warehouse_id = uni.getStorageSync("warehouse_id");
-
-				// let source = uni.getStorageSync("source");
-				let data = {};
-				if (parseInt(_this.num) === 0 || parseInt(_this.num) > parseInt(_this.stay_num)) {
-					_this.alertInfo("请填写正确的入库数量")
-					return
-				}
-				data["productid"] = _this.productid;
-				data["num"] = parseInt(_this.num)
-				data["container_code"] = containerCode;
-				data["groupsn"] = _this.sn;
-				data["types"] = "normal";
-				data["receipt_num"] = receiptNum;
-				data["stock_remark"] = _this.stock_remark;
-				data["deviceid"] = _this.deviceid;
-				data["warehouse_id"] = warehouse_id;
-				data["purchaseid"] = "";
-				data["companyid"] = _this.companyid;
-				console.log("data ",data)
-				let methods = "GroupDiskAdd"
-				// if (source === "out") {
-				// 	methods = "AddDetailAddRecord";
-				// }
-				setTimeout(() => {
-					uni.request({
-						url: reqRootUrl + '/GroupDiskAdd',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify(data),
-						success: (ret) => {
-							if (ret.statusCode === 200) {
-								_this.alertInfo("添加成功");
-								_this.productid = "";
-								_this.sn = "";
-								_this.name = "";
-								_this.model = "";
-								_this.brand = "";
-								_this.stock_remark = "";
-								_this.deviceid = "";
-								_this.num = 0;
-								_this.stay_num = 0;
-								_this.companyid = "";
-								_this.purchaseid = "";
-								_this.getList();
-								setTimeout(() => {
-									uni.navigateBack();
-									uni.redirectTo({
-										url: '/pages/sample/group',
-									})
-								}, 1000);
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-					// 关闭窗口后,恢复默认内容
-					this.modalVisible = false;
-				}, 30)
-			},
-			getList() {
-				_this.tableData = [];
-				let params = JSON.stringify({
-					"sort": "creationTime",
-					"order": "desc",
-					"offset": 0,
-					"limit": 100,
-					"custom": {
-						'status': "status_wait"
-					}
-				})
-
-				uni.request({
-					url: reqRootUrl + '/bootable/ums.wms_group_list',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: params,
-					success: (ret) => {
-						// console.log("ret ", ret)
-						if (ret.statusCode === 200) {
-							let rows = ret.data.rows;
-							_this.tableData = rows;
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-
-			getUserInfoWareHouse() {
-				uni.request({
-					url: reqRootUrl + '/getUserInfoWareHouse',
-					method: 'POST',
-					async: false,
-					success: (ret) => {
-						_this.warehouse_id = ret.data;
-						uni.setStorageSync("warehouse_id", ret.data)
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-		},
-	}
-</script>
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 25px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 25px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			.specs {
-				line-height: 2;
-				padding: 0 15rpx;
-				font-size: 16px;
-				align-self: flex-start;
-				border-radius: 4rpx;
-				color: #888;
-				background-color: #f7f7f8;
-			}
-
-			.status_view {
-				line-height: 1;
-				font-size: 18px;
-				color: #444;
-				margin-bottom: 2rpx;
-				color: #000000;
-				padding-top: 5px;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				// position: absolute;
-				// bottom: 70rpx;
-				// right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 120px;
-				height: 48rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-		}
-
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 15
pages/sample/settings.vue

@@ -1,15 +0,0 @@
-<template>
-	<view>
-		<web-view src="/hybrid/html/setup.html"></web-view>
-	</view>
-</template>
-<script>
-	export default {
-		methods: {
-		}
-	}
-</script>
-
-<style>
-
-</style>

+ 0 - 883
pages/sample/sorting_out.vue

@@ -1,883 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">出库确认</text>
-					</view>
-					<view class="map-wrap">
-						<uni-icons class="lanya"></uni-icons>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-input-wrapper" style="margin: 5px auto;">
-				<input class="uni-input" auto-focus="true" :focus="firstFocus" placeholder="请扫描托盘码" v-model="viewText"
-					@input="hideKeyboard" style="font-weight: bold;" />
-			</view>
-			<view class="uni-form-item uni-column">
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">托盘码</text>
-					<input class="uni-input" :value="container_code" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">回库口</text>
-					<select-lay style="width: 75%;" :zindex="2" :value="port_sn" name="port_sn" placeholder="请选择回库口"
-						:options="portList" @selectitem="selectPort">
-					</select-lay>
-				</view>
-				<view style="min-height:380px;overflow-y:auto;max-height:380px">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc">
-									<view class="meta" style="padding-bottom:15px;">
-										<view class="name">
-											生产线:{{item.line}} 货物编码:{{item.code}}
-											 </br>
-											货物名称:{{item.name}} 型号:{{item.model}}
-											</br>
-											出库数量:{{item.num}} 生产单号:{{item.product_number}}
-										</view>
-										<br>
-									</view>
-									<!-- 商品数量 -->
-									<view class="numGroup">
-										<button type="primary" @click="OutStore(item)">确认出库</button>
-									</view>
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-				<view class="uni-input-wrapper button-sp-area"  style="padding-bottom:5px;">
-					<button type="primary" plain="true" @click="ReturnWarehouse()" :disabled="BtnDisabled">回库</button>
-					<button type="primary" style="visibility: hidden;">1111</button>
-					<button type="primary" plain="true" @click="NotReturnWarehouse()" style="padding-left:10px;" :disabled="BtnDisabled">不回库</button>
-				</view>
-				<view class="uni-input-wrapper button-sp-area">
-					<button type="primary" plain="true" @click="ReturnMaterial()" :disabled="BtnDisabled">空筐回库</button>
-					<button type="primary" @click="ClearWarehouse()">释放</button>
-					<button type="primary" plain="true" @click="Group()">补加存货</button>
-				</view>
-			</view>
-		</view>
-
-		<!-- 单个出库提示窗示例 -->
-		<uni-popup ref="outStoreDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" :content="out_tips"
-				@confirm="outStoreConfirm" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-
-		<!-- 回库提示窗示例 -->
-		<uni-popup ref="groupDialogeturn" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="所需货物已拿取或添加完成,确定回库?"
-				@confirm="dialogReturnWarehouse" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-
-
-		<!-- 不回库提示窗示例 -->
-		<uni-popup ref="NotgroupDialogeturn" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定托盘货物清零并不回库?"
-				@confirm="dialogNotReturnWarehouse" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-
-
-		<!-- 清除托盘码提示窗示例 -->
-		<uni-popup ref="ReturnMaterialDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定空料筐回库?"
-				@confirm="dialogReturnMaterial" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-		<!--释放出库口-->
-		<uni-popup ref="ClearDialog" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定清除出库口托盘码?"
-				@confirm="dialogClear" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-	</view>
-</template>
-<script>
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	let _this = null;
-	import {
-		mapGetters,
-		mapActions
-	} from 'vuex';
-	import {
-		GET_INFODATA,
-		GET_CONNECTBLEDATA
-	} from "@/store/gettersType.js";
-	import {
-		SET_CONNECTBLEDATA
-	} from '@/store/actionsType.js';
-	// #ifdef APP-PLUS
-	const modal = uni.requireNativePlugin('modal');
-	// #endif
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-	var ParamreqRootUrl = reqRootUrl + "/wms/api";
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				container_code: "",
-				out_tips: "",
-				sn: "",
-				updateModalVisible: false,
-				firstFocus: false,
-				viewText: "",
-				tableData: [],
-				detail_sn_list: [],
-				BtnDisabled: false,
-				attributeData: {},
-				title: "",
-				port_sn: "",
-				portList: [],
-				outNum: "",
-				isConfirm : false, // 出库确认
-				isReturn : false, //  回库操作
-				isNotReturn : false, // 不回库操作
-				isReturnMaterial : false, // 空托回库
-			}
-		},
-		computed: {
-			...mapGetters([GET_INFODATA, GET_CONNECTBLEDATA]),
-		},
-		methods: {
-			onUnload() {
-				SpeechTTS.destroy();
-			},
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/main',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-
-			rightClick: function() {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/richAlert',
-					})
-				}, 30);
-				// this.$emit("rightClick")
-			},
-
-			onLoad(options) {
-				_this = this;
-				_this.firstFocus = true;
-				_this.container_code = options.containerCode || ""
-			},
-
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					_this.firstFocus = true;
-					this.getList();
-					this.speak_init();
-					this.CateGet();
-				}, 500);
-			},
-			CateGet() {
-				uni.request({
-					url: ParamreqRootUrl + '/PortGet',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"types":"out"
-					}),
-					success: (ret) => {
-						// console.log("ret", ret)
-						if (ret.statusCode === 200) {
-							this.portList = [];
-							let rows = ret.data.data;
-							// console.log("rows", rows[0]["addr"]["f"])
-							for (var i = 0; i < rows.length; i++) {
-								this.portList.push({
-									label: rows[i]["alias"],
-									value: JSON.stringify(rows[i]["addr"])
-								})
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			selectPort(index, item) {
-				if (index >= 0) {
-					_this.port_sn = item.value;
-
-				} else {
-					_this.port_sn = ""
-				}
-			},
-			// 补添货物
-			Group() {
-				setTimeout(() => {
-					_this.firstFocus = false;
-					uni.navigateTo({
-						url: '/pages/sample/group?types='+"out",
-					})
-				}, 30);
-			},
-			hideKeyboard: function(event) {
-				uni.hideKeyboard();
-				let Value = event.detail.value;
-				Value = Value.trim();
-				_this.firstFocus = false;
-				if (Value !== "" && Value !== null && Value !== undefined) {
-					uni.request({
-						url: ParamreqRootUrl + '/OutOrderList',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"container_code": Value,
-						}),
-						success: (ret) => {
-							//处理成功逻辑
-							if (ret.statusCode === 200) {
-								let data = ret.data.data;
-								_this.tableData = data;
-								for (let i in data) {
-									_this.detail_sn_list.push(data[i]["detail_sn"])
-								}
-								uni.setStorageSync("detail_sn_list", _this.detail_sn_list)
-
-								// 扫描到的码是托盘码
-								// 用扫描到的码查询 组盘表托盘管理表
-								// 优先显示查询到的组盘表的数据
-								_this.alertInfo("扫码成功!")
-								_this.BtnDisabled = false
-								_this.container_code = Value;
-								uni.setStorageSync("container_code", Value)
-								_this.$nextTick(() => {
-									_this.firstFocus = true;
-									_this.viewText = "";
-								})
-							} else {
-								_this.alertInfo("托盘码错误,请重新扫描!")
-								// _this.getSn();
-								_this.tableData = [];
-								_this.$nextTick(() => {
-									_this.firstFocus = true;
-									_this.viewText = "";
-									_this.container_code = "";
-									uni.setStorageSync("container_code", "")
-									uni.setStorageSync("detail_sn_list", [])
-								})
-								_this.$forceUpdate()
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}
-			},
-			// 出库确认
-			OutStore(item) {
-				_this.sn = item["sn"]
-				_this.outNum = item["num"]
-				this.out_tips = "确定出库品牌为" + item["brand"] + "型号为" + item["model"] + "的" + item["name"] + item["num"] +
-					item["unit"] + "?";
-				this.$refs.outStoreDialog.open()
-			},
-			outStoreConfirm() {
-				if(_this.isConfirm){
-					_this.alertInfo("请等待出库回传结果!")
-					return
-				}
-			setTimeout(() => {
-				uni.hideLoading()
-				_this.isConfirm = true
-				uni.request({
-						url: ParamreqRootUrl + '/OutStoreAddRecord',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"ordersn": _this.sn,
-							"num": parseFloat(_this.outNum),
-						}),
-						success: (ret) => {
-							_this.isConfirm = false
-							if(ret.data.ret =="failed"){
-								_this.alertInfo(ret.data.msg);
-							}else{
-								this.$refs.outStoreDialog.close();
-								_this.alertInfo("出库成功!");
-							}
-							_this.out_tips = "";
-							_this.sn = "";
-							_this.outNum = 0;
-							_this.getList();
-							//处理成功逻辑
-						},
-						fail: (err) => {
-							_this.isConfirm = false
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-			}, 30)
-			},
-
-			dialogClose() {
-				_this.getList();
-			},
-
-
-			getList() {
-				_this.$forceUpdate()
-				_this.tableData = [];
-				if (_this.container_code === "") {
-					return
-				}
-				uni.request({
-					url: ParamreqRootUrl + '/OutOrderList',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"container_code": _this.container_code,
-					}),
-					success: (ret) => {
-						//处理成功逻辑
-						if (ret.statusCode === 200) {
-							let data = ret.data.data;
-							_this.tableData = data;
-							for (let i in data) {
-								_this.detail_sn_list.push(data[i]["detail_sn"])
-							}
-							uni.setStorageSync("detail_sn_list", _this.detail_sn_list)
-							_this.BtnDisabled = false
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			ReturnWarehouse: function() {
-				_this.firstFocus = false;
-				setTimeout(() => {
-					if (_this.isEmpty(_this.container_code)) {
-						_this.alertInfo("请扫描托盘码!")
-						return
-					}
-					this.$refs.groupDialogeturn.open()
-				}, 30)
-			},
-			// 回库确认
-			dialogReturnWarehouse() {
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("操作失败!请扫描托盘码!")
-					return
-				}
-				if (_this.isEmpty(_this.port_sn)) {
-					_this.alertInfo("操作失败!请选择回库口")
-					return
-				}
-				if(_this.isReturn){
-					_this.alertInfo("请勿重复点击回库")
-					return
-				}
-				setTimeout(() => {
-					uni.hideLoading()
-					_this.isReturn = true
-					uni.request({
-						url: ParamreqRootUrl + '/ReturnWarehouse',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"srcAddr": JSON.parse(_this.port_sn),
-							"container_code": _this.container_code,
-						}),
-						success: (ret) => {
-							_this.isReturn = false
-							if(ret.data.ret =="failed"){
-								_this.alertInfo(ret.data.msg);
-								return;
-							}
-							if (ret.statusCode === 200) {
-								this.$refs.outStoreDialog.close();
-								_this.alertInfo("回库操作成功!");
-								_this.out_tips = "";
-								_this.sn = "";
-								_this.port_sn = "";
-								_this.container_code = "";
-								uni.setStorageSync("container_code", "")
-								uni.setStorageSync("detail_sn_list", [])
-							}
-							_this.getList();
-							//处理成功逻辑
-						},
-						fail: (err) => {
-							_this.isReturn = false
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-			// 不回库操作
-			NotReturnWarehouse: function() {
-				_this.firstFocus = false;
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("操作失败,托盘码不能为空")
-					return;
-				}
-				setTimeout(() => {
-					this.$refs.NotgroupDialogeturn.open()
-				}, 30)
-			},
-			// 不回库确定
-			dialogNotReturnWarehouse() {
-				if(_this.isNotReturn){
-					_this.alertInfo("请勿重复点击不回库")
-					return
-				}
-				setTimeout(() => {
-					uni.hideLoading()
-					_this.isNotReturn = true;
-					uni.request({
-						url: ParamreqRootUrl + '/NotReturnWarehouse',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"container_code": _this.container_code,
-						}),
-						success: (ret) => {
-							_this.isNotReturn = false;
-							if(ret.data.ret =="failed"){
-								_this.alertInfo(ret.data.msg);
-								return;
-							}
-							_this.alertInfo("不回库操作成功!");
-							this.$refs.NotgroupDialogeturn.close();
-							_this.out_tips = "";
-							_this.sn = "";
-							_this.container_code = "";
-							uni.setStorageSync("container_code", "")
-							uni.setStorageSync("detail_sn_list", [])
-							_this.getList();
-							
-						},
-						fail: (err) => {
-							_this.isNotReturn = false;
-							// console.log('request fail', err)
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-			// 空筐回库
-			ReturnMaterial: function() {
-				_this.firstFocus = false;
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("操作失败,托盘码不能为空")
-					return;
-				}
-				if (_this.isEmpty(_this.port_sn)) {
-					_this.alertInfo("操作失败!请选择回库口")
-					return
-				}
-				setTimeout(() => {
-					this.$refs.ReturnMaterialDialog.open()
-				}, 30)
-			},
-			// 空筐回库确定
-			dialogReturnMaterial() {
-				if (_this.isReturnMaterial) {
-					_this.alertInfo("请勿重复点击空筐回库")
-					return
-				}
-				setTimeout(() => {
-					uni.hideLoading()
-					_this.isReturnMaterial = true;
-					uni.request({
-						url: ParamreqRootUrl + '/ReturnMaterialWarehouse',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"srcAddr": JSON.parse(_this.port_sn),
-							"container_code": _this.container_code,
-						}),
-						success: (ret) => {
-							if(ret.data.ret =="failed"){
-								_this.alertInfo(ret.data.msg);
-								return;
-							}
-							this.$refs.ReturnMaterialDialog.close();
-							_this.alertInfo("添加空筐回库成功!");
-							_this.out_tips = "";
-							_this.sn = "";
-							_this.port_sn = "";
-							_this.container_code = "";
-							uni.setStorageSync("container_code", "")
-							uni.setStorageSync("detail_sn_list", [])
-							_this.getList();
-						},
-						fail: (ret) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-
-			// 清除出库口托盘码
-			ClearWarehouse: function() {
-				_this.firstFocus = false;
-				if (_this.isEmpty(_this.port_sn)) {
-					_this.alertInfo("操作失败!请选择要清除托盘码的出库口!")
-					return
-				}
-				setTimeout(() => {
-					this.$refs.ClearDialog.open()
-				}, 30)
-			},
-			// 确认清除
-			dialogClear() {
-				setTimeout(() => {
-					uni.hideLoading()
-					uni.request({
-						url: ParamreqRootUrl + '/ClearWarehouse',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"srcAddr": JSON.parse(_this.port_sn),
-						}),
-						success: (ret) => {
-							if(ret.data.ret =="failed"){
-								_this.alertInfo(ret.data.msg);
-								return;
-							}
-							this.$refs.ReturnMaterialDialog.close();
-							_this.alertInfo("清除托盘码成功!");
-							_this.out_tips = "";
-							_this.sn = "";
-							_this.port_sn = "";
-							_this.container_code = "";
-							uni.setStorageSync("container_code", "")
-							uni.setStorageSync("detail_sn_list", [])
-							_this.getList();
-						},
-						fail: (ret) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-			onNavigationBarButtonTap: function(e) {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/richAlert',
-					})
-				}, 500);
-			},
-
-			getSn() {
-				// return;
-				let today = new Date();
-				let year = today.getFullYear();
-				let month = today.getMonth() + 1;
-				let date = today.getDate();
-				let hours = today.getHours();
-				let minutes = today.getMinutes();
-				let seconds = today.getSeconds();
-				let millisecond = today.getMilliseconds()
-				if (month <= 9) {
-					month = '0' + month
-				}
-				if (minutes <= 9) {
-					minutes = '0' + minutes;
-				}
-				if (date <= 9) {
-					date = '0' + date;
-				}
-				if (seconds <= 9) {
-					seconds = '0' + seconds;
-				}
-				let sn = year + '' + month + '' + date + '' + hours + '' + minutes + '' + seconds + '' + millisecond
-				uni.removeStorageSync('port_sn');
-				return sn
-			},
-
-			formattedDate(d) {
-				const date = new Date(d);
-				const year = date.getFullYear();
-				const month = String(date.getMonth() + 1).padStart(2, '0');
-				const day = String(date.getDate()).padStart(2, '0');
-				const hours = String(date.getHours()).padStart(2, '0');
-				const minutes = String(date.getMinutes()).padStart(2, '0');
-				const seconds = String(date.getSeconds()).padStart(2, '0');
-				return `${year}-${month}-${day}`;
-			},
-		},
-	}
-</script>
-
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 50px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 50px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				position: absolute;
-				bottom: 40rpx;
-				right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 100px;
-				height: 30rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-			}
-		}
-
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 962
pages/sample/stocktaking.vue

@@ -1,962 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">盘点管理</text>
-					</view>
-					<view class="map-wrap">
-						<uni-icons class="lanya"></uni-icons>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-input-wrapper" style="margin: 5px auto;">
-				<input class="uni-input" auto-focus="true" :focus="firstFocus" placeholder="请扫描托盘码" v-model="viewText"
-					@input="hideKeyboard" style="font-weight: bold;" />
-			</view>
-			<view class="uni-form-item uni-column">
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">托盘码</text>
-					<input class="uni-input" :value="container_code" disabled="true" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">回库口</text>
-					<select-lay style="width: 75%;" :zindex="zindex1" :value="port_sn" name="port_sn" placeholder="请选择回库口"
-						:options="portList" @selectitem="selectPort">
-					</select-lay>
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 25%;">选择层</text>
-					<select-lay style="width: 75%;" :zindex="zindex2" :value="floor" name="floor"
-						placeholder="请选择层" :options="floorList" @selectitem="selectFloor">
-					</select-lay>
-				</view>
-				<!-- 优博讯:385px   新大陆:255px-->
-				<view style="min-height:385px;overflow-y:auto;max-height:385px">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc">
-									<view class="meta" style="padding-bottom:15px;">
-										<view class="name">
-											货物名称:{{item.name}}  型号:{{item.model}} 
-											 </br>
-											库存数量:{{item.num}}  盘点数量:{{item.stocktaking_num}} 
-											</br>
-											修改原因:{{item.remark}}
-										</view>
-										<br>
-									</view>
-									<!-- 商品数量 -->
-									<view class="numGroup">
-										<button type="primary" @click="OutStore(item)">更改</button>
-									</view>
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-				<view class="uni-input-wrapper button-sp-area"  style="padding-bottom:5px;">
-					<button type="primary" plain="true" @click="ReturnStockWarehouse()" :disabled="BtnDisabled">盘点回库</button>
-					<!-- <button type="primary" plain="true" @click="StocktakingProduct()" :disabled="BtnDisabled">盘点货物</button> -->
-					<button type="primary" plain="true" @click="StocktakingAddProduct()" :disabled="BtnDisabled">补添货物</button>
-				</view>
-			</view>
-		</view>
-		<!-- 盘点更改数量提示窗示例 -->
-		<uni-popup ref="dialogReturnWarehouse" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定该托盘产品已盘点完毕?"
-				@confirm="groupDialogeturn" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup>
-
-		<!-- 盘点更改数量提示窗示例 -->
-		<!-- <uni-popup ref="dialogStocktakingAddProduct" type="dialog">
-			<uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定将此托盘转化为出库?"
-				@confirm="StocktakingAddProductBtn" @close="dialogClose"></uni-popup-dialog>
-		</uni-popup> -->
-
-		<!-- 输入框示例 -->
-		<!-- <uni-popup ref="inputDialog" type="dialog">
-			<uni-popup-dialog ref="inputClose" mode="input" :title="title" :value="outNum" placeholder="请填写正确数量"
-				@confirm="UpdateNum"></uni-popup-dialog>
-		</uni-popup> -->
-		
-		<!-- 引入自定义模态框 -->
-		<custom-modal :visible="updateModalVisible">
-			<!-- 模态框的内容-->
-			<view>
-				<text>提示</text>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">数量</text>
-					<input type="number" class="uni-input" :value="outNum" @input="outNumChange"/>
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title" style="width: 30%;">修改原因</text>
-					<input class="uni-input" :value="remark" @input="remarkChange"/>
-				</view>
-				<br><br>
-				<button class="mini-btn" size="mini" @click="closeUpdateModal"
-					style="width: 50%;float: left;">关闭</button>
-				<button class="mini-btn" type="primary" size="mini" @click="UpdateNum"
-					style="width: 50%;">更新</button>
-			</view>
-		</custom-modal>
-	</view>
-</template>
-<script>
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	let _this = null;
-	import {
-		mapGetters,
-		mapActions
-	} from 'vuex';
-	import {
-		GET_INFODATA,
-		GET_CONNECTBLEDATA
-	} from "@/store/gettersType.js";
-	import {
-		SET_CONNECTBLEDATA
-	} from '@/store/actionsType.js';
-	// #ifdef APP-PLUS
-	const modal = uni.requireNativePlugin('modal');
-	// #endif
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-	
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				container_code: "",
-				sn: "",
-				detail_sn:"",
-				firstFocus: false,
-				viewText: "",
-				tableData: [],
-				BtnDisabled: false,
-				updateModalVisible:false,
-				attributeData: {},
-				title: "",
-				port_sn: "",
-				portList: [],
-				outNum: "",
-				remark:"",
-				floor:"",
-				floorList: [
-						{
-							label: "1层",
-							value: "1"
-						},
-						{
-							label: "2层",
-							value: "2"
-						},
-						{
-							label: "3层",
-							value: "3"
-						},
-						{
-							label: "4层",
-							value: "4"
-						},
-						{
-							label: "5层",
-							value: "5"
-						},
-						{
-							label: "6层",
-							value: "6"
-						}
-				],
-				zindex1: 2,
-				zindex2: 1,
-			}
-		},
-		computed: {
-			...mapGetters([GET_INFODATA, GET_CONNECTBLEDATA]),
-		},
-		methods: {
-			onUnload() {
-				SpeechTTS.destroy();
-			},
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/main',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-
-			rightClick: function() {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/richAlert',
-					})
-				}, 30);
-				// this.$emit("rightClick")
-			},
-
-			onLoad(options) {
-				
-				_this = this;
-				_this.firstFocus = true;
-				_this.container_code = options.containerCode;
-			},
-
-			onShow() {
-				
-				uni.hideKeyboard();
-				setTimeout(() => {
-					_this.firstFocus = true;
-					this.getList();
-					this.CateGet();
-					this.speak_init();
-					
-				}, 500);
-			},
-			CateGet() {
-				let warehouse_id = uni.getStorageSync("warehouse_id");
-				_this.warehouse_id = warehouse_id;
-				uni.request({
-					url: reqRootUrl + '/stocktakingPortQuery',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"warehouse_id": _this.warehouse_id,
-					}),
-					success: (ret) => {
-						// console.log("ret", ret)
-						if (ret.statusCode === 200) {
-							this.portList = [];
-							let rows = ret.data;
-							// console.log("rows", rows[0]["addr"]["f"])
-							for (var i = 0; i < rows.length; i++) {
-								let lab = rows[i]["addr"]["f"] + "-" + rows[i]["addr"]["c"] +
-									"-" + rows[i]["addr"]["r"]
-								this.portList.push({
-									label: lab,
-									value: JSON.stringify(rows[i]["addr"])
-								})
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				}),
-				uni.request({
-							url: reqRootUrl + '/SpaceQuery',
-							method: 'POST',
-							headers: {
-								'Content-Type': 'application/json'
-							},
-							data: JSON.stringify({
-								"warehouse_id": _this.warehouse_id,
-							}),
-							success: (ret) => {
-								// console.log("ret", ret)
-								if (ret.statusCode === 200) {
-									this.addrList = [];
-									let rows = ret.data;
-									// console.log("rows", rows);
-									if (!_this.isEmpty(rows)) {
-										for (var i = 0; i < rows.length; i++) {
-											this.addrList.push({
-												label: rows[i]["addr_view"],
-												value: rows[i]["sn"]
-											})
-										}
-									}
-								}
-							},
-							fail: (err) => {
-								// console.log('request fail', err);
-							},
-							complete: () => {
-								// console.log('complete');
-							}
-						})
-			},
-
-			selectPort(index, item) {
-				if (index >= 0) {
-					_this.port_sn = item.value;
-
-				} else {
-					_this.port_sn = ""
-				}
-			},
-			selectFloor(index, item) {
-				if (index >= 0) {
-					_this.floor = item.value;
-				} else {
-					_this.floor = ""
-				}
-			},
-			// 托盘上的盘点产品
-			hideKeyboard: function(event) {
-				uni.hideKeyboard();
-				let Value = event.detail.value;
-				Value = Value.trim();
-				_this.firstFocus = false;
-				if (Value !== "" && Value !== null && Value !== undefined) {
-					uni.request({
-						url: reqRootUrl + '/StocktakingGetByCode',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"container_code": Value,
-						}),
-						success: (ret) => {
-							//处理成功逻辑
-							if (ret.statusCode === 200) {
-								// console.log(ret);
-								let data = ret.data;
-								_this.tableData = data;
-								_this.alertInfo("扫码成功!")
-								_this.BtnDisabled = false
-								_this.container_code = Value;
-								uni.setStorageSync("container_code", Value)
-								_this.$nextTick(() => {
-									_this.firstFocus = true;
-									_this.viewText = "";
-								})
-							} else {
-								_this.alertInfo("托盘码错误,请重新扫描!")
-								// _this.getSn();
-								_this.tableData = [];
-								_this.$nextTick(() => {
-									_this.firstFocus = true;
-									_this.viewText = "";
-									_this.container_code = "";
-									uni.setStorageSync("container_code", "")
-								})
-								_this.$forceUpdate()
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}
-			},
-			closeModal() {
-				// 关闭模态框  
-			},
-			closeUpdateModal() {
-				_this.zindex1 = 2;
-				_this.zindex2 = 1;
-				// 关闭模态框  
-				_this.sn = "";
-				_this.remark = "";
-				_this.outNum = 0;
-				this.updateModalVisible = false;
-			},
-			OutStore(item) {
-				_this.zindex1 = 0;
-				_this.zindex2 = 0;
-				_this.sn = item["sn"]
-				_this.detail_sn = item["detail_sn"]
-				_this.title = "盘点数量:" + item["stocktaking_num"];
-				_this.outNum = item["stocktaking_num"]
-				_this.remark = item["remark"]
-				_this.updateModalVisible = true;
-				// this.$refs.inputDialog.open()
-			},
-			// 更改库存明细
-			UpdateNum() {
-				setTimeout(() => {
-					uni.hideLoading()
-					if (parseFloat(_this.outNum) < 0 ) {
-						_this.alertInfo("请输入正确的数量!");
-						return
-					}
-					if (_this.remark == "" ) {
-						_this.alertInfo("请输入修改原因!");
-						return
-					}
-					uni.request({
-						url: reqRootUrl + '/PDAUpdateDetail',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"detail_sn": _this.detail_sn,
-							"upNum": parseFloat(_this.outNum),
-							"remark":_this.remark
-						}),
-						success: (ret) => {
-							// this.$refs.inputDialog.close();
-							if (ret.statusCode === 200) {
-								if(ret.data.ret =="failed"){
-									_this.alertInfo(ret.data.msg);
-								}else{
-									_this.alertInfo("更改成功!");
-									_this.zindex1 = 2;
-									_this.zindex2 = 1;
-									// 关闭模态框  
-									_this.sn = "";
-									_this.remark = "";
-									_this.outNum = 0;
-									this.updateModalVisible = false;
-									_this.getList();
-								}
-							}else{
-								_this.alertInfo("更改失败!");
-								_this.zindex1 = 2;
-								_this.zindex2 = 1;
-								// 关闭模态框  
-								_this.sn = "";
-								_this.remark = "";
-								_this.outNum = 0;
-								this.updateModalVisible = false;
-								_this.getList();
-							}
-							
-							//处理成功逻辑
-						},
-						fail: (err) => {
-							console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-					// // 关闭窗口后,恢复默认内容
-					// this.$refs.inputDialog.close()
-				}, 30)
-			},
-
-			outNumChange: function(e) {
-				this.outNum = e.target.value
-			},
-			
-			remarkChange: function(e) {
-				this.remark = e.target.value
-			},
-			
-			dialogClose() {
-				_this.getList();
-			},
-
-			Update(item) {
-				_this.setView(item);
-				_this.sn = item["sn"];
-				_this.detail_sn = item["detail_sn"]
-			},
-			getList() {
-				_this.$forceUpdate()
-				_this.tableData = [];
-				if (_this.container_code === "") {
-					return
-				}
-				uni.request({
-					url: reqRootUrl + '/StocktakingGetByCode',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"container_code": _this.container_code,
-					}),
-					success: (ret) => {
-						
-						//处理成功逻辑
-						if (ret.statusCode === 200) {
-							//console.log(ret.statusCode);
-							let data = ret.data;
-							_this.tableData = data;
-							// console.log("tableData");
-							// console.log(_this.tableData);
-							_this.BtnDisabled = false
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			// StocktakingAddProduct: function() {
-			// 	_this.firstFocus = false;
-			// 	setTimeout(() => {
-			// 		if (_this.isEmpty(_this.container_code)) {
-			// 			_this.alertInfo("请扫描托盘码!")
-			// 			return
-			// 		}
-			// 		this.$refs.dialogStocktakingAddProduct.open()
-			// 	}, 30)
-			// },
-			// StocktakingAddProductBtn() {
-			// 	if (_this.isEmpty(_this.container_code)) {
-			// 		_this.alertInfo("操作失败!请扫描托盘码!")
-			// 		return
-			// 	}
-			// 	setTimeout(() => {
-			// 		uni.hideLoading()
-			// 		uni.request({
-			// 			url: reqRootUrl + '/StocktakingAddProduct',
-			// 			method: 'POST',
-			// 			headers: {
-			// 				'Content-Type': 'application/json'
-			// 			},
-			// 			data: JSON.stringify({
-			// 				"container_code": _this.container_code,
-			// 			}),
-			// 			success: (ret) => {
-			// 				this.$refs.dialogReturnWarehouse.close();
-			// 				if (ret.statusCode === 200) {
-			// 					if(ret.data.ret =="failed"){
-			// 						_this.alertInfo(ret.data.msg);
-			// 					}else{
-			// 						_this.alertInfo("盘点转出库成功!");
-			// 						_this.sn = "";
-			// 						_this.detail_sn = "";
-			// 						_this.port_sn = "";
-			// 						_this.container_code = "";
-			// 						_this.tableData = [];
-			// 						uni.setStorageSync("container_code", "")
-			// 					}
-			// 				}else{
-			// 					_this.alertInfo("盘点转出库失败!");
-			// 					_this.sn = "";
-			// 					_this.detail_sn = "";
-			// 					_this.port_sn = "";
-			// 					_this.container_code = "";
-			// 					uni.setStorageSync("container_code", "")
-			// 				}
-			// 				_this.getList();
-			// 			},
-			// 			fail: (err) => {
-			// 				// console.log('request fail', err);
-			// 			},
-			// 			complete: () => {
-			// 				// console.log('complete');
-			// 			}
-			// 		})
-			// 	}, 30)
-			// },
-			
-						
-			StocktakingAddProduct() {
-				uni.setStorageSync("source", "stocktaking")
-				if(_this.container_code == ""){
-					_this.alertInfo("请扫描托盘码!")
-					return
-				}
-				setTimeout(() => {
-					_this.firstFocus = false;
-					uni.navigateTo({
-						url: '/pages/sample/stocktaking_add_product?containerCode='+_this.container_code,
-					})
-				}, 30);
-			},			
-			
-			StocktakingProduct(){
-				setTimeout(() => {
-					uni.hideLoading()
-					uni.request({
-						url: reqRootUrl + '/autoStocktaking',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							
-						}),
-						success: (ret) => {
-							this.$refs.dialogReturnWarehouse.close();
-							if (ret.statusCode === 200) {
-								if(ret.data.ret =="failed"){
-									_this.alertInfo(ret.data.msg);
-								}else{
-									_this.alertInfo("盘点操作成功!");
-									_this.sn = "";
-									_this.detail_sn = "";
-									_this.port_sn = "";
-									_this.container_code = "";
-									_this.tableData = [];
-									uni.setStorageSync("container_code", "")
-								}
-								_this.getList();
-							}else{
-								_this.alertInfo("盘点操作失败,请确认是否存在未完成的盘点任务!");
-								_this.sn = "";
-								_this.detail_sn = "";
-								_this.port_sn = "";
-								_this.container_code = "";
-								uni.setStorageSync("container_code", "")
-							}
-							_this.getList();
-						},
-						fail: (err) => {
-							_this.alertInfo("存在出库任务未完成!");
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-			},
-			
-			ReturnStockWarehouse: function() {
-				_this.firstFocus = false;
-				setTimeout(() => {
-					if (_this.isEmpty(_this.container_code)) {
-						_this.alertInfo("请扫描托盘码!")
-						return
-					}
-					// if (_this.isEmpty(_this.port_sn)) {
-					// 	_this.alertInfo("请选择回库口")
-					// 	return
-					// }
-					this.$refs.dialogReturnWarehouse.open()
-				}, 30)
-			},
-			// 回库确认
-			groupDialogeturn() {
-				if (_this.isEmpty(_this.container_code)) {
-					_this.alertInfo("操作失败!请扫描托盘码!")
-					return
-				}
-				// let srcaddr =""
-				// if (!_this.isEmpty(_this.container_code)) {
-				// 	srcaddr =JSON.parse(_this.port_sn)
-				// }
-				// console.log(srcaddr);
-				setTimeout(() => {
-					uni.hideLoading()
-					uni.request({
-						url: reqRootUrl + '/ReturnStockWarehouse',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"container_code": _this.container_code,
-							"srcAddr":  _this.port_sn == ""? null :JSON.parse(_this.port_sn),
-							"floor": _this.floor
-						}),
-						success: (ret) => {
-							this.$refs.dialogReturnWarehouse.close();
-							if (ret.statusCode === 200) {
-								if(ret.data.ret =="failed"){
-									_this.alertInfo(ret.data.msg);
-								}else{
-									_this.alertInfo("盘点回库操作成功!");
-									_this.sn = "";
-									_this.detail_sn = "";
-									_this.port_sn = "";
-									_this.container_code = "";
-									_this.tableData = [];
-									uni.setStorageSync("container_code", "")
-								}
-								_this.getList();
-							}else{
-								_this.alertInfo("盘点回库操作失败!");
-								_this.sn = "";
-								_this.detail_sn = "";
-								_this.port_sn = "";
-								_this.container_code = "";
-								_this.floor = "";
-								uni.setStorageSync("container_code", "")
-							}
-							_this.getList();
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}, 30)
-				
-			},
-
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-			onNavigationBarButtonTap: function(e) {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/richAlert',
-					})
-				}, 500);
-			},
-
-			getSn() {
-				// return;
-				let today = new Date();
-				let year = today.getFullYear();
-				let month = today.getMonth() + 1;
-				let date = today.getDate();
-				let hours = today.getHours();
-				let minutes = today.getMinutes();
-				let seconds = today.getSeconds();
-				let millisecond = today.getMilliseconds()
-				if (month <= 9) {
-					month = '0' + month
-				}
-				if (minutes <= 9) {
-					minutes = '0' + minutes;
-				}
-				if (date <= 9) {
-					date = '0' + date;
-				}
-				if (seconds <= 9) {
-					seconds = '0' + seconds;
-				}
-				let sn = year + '' + month + '' + date + '' + hours + '' + minutes + '' + seconds + '' + millisecond
-				uni.removeStorageSync('port_sn');
-				return sn
-			},
-
-			formattedDate(d) {
-				const date = new Date(d);
-				const year = date.getFullYear();
-				const month = String(date.getMonth() + 1).padStart(2, '0');
-				const day = String(date.getDate()).padStart(2, '0');
-				const hours = String(date.getHours()).padStart(2, '0');
-				const minutes = String(date.getMinutes()).padStart(2, '0');
-				const seconds = String(date.getSeconds()).padStart(2, '0');
-				return `${year}-${month}-${day}`;
-			},
-		},
-	}
-</script>
-
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 50px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 50px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				position: absolute;
-				bottom: 40rpx;
-				right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 100px;
-				height: 30rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-			}
-		}
-
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 668
pages/sample/stocktaking_add_product.vue

@@ -1,668 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">选择补货物</text>
-					</view>
-					<view class="map-wrap">
-						<text></text>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-form-item uni-column">
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">名称:</text>
-					<input class="uni-input" :value="query_name" @input="nameChange" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">品牌:</text>
-					<input class="uni-input" :value="query_brand" @input="brandChange" />
-				</view>
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">型号:</text>
-					<input class="uni-input" :value="query_model" @input="modelChange" />
-				</view>
-
-				<view style="min-height:600px;overflow-y:auto;max-height:600px">
-					<view class="cart-list">
-						<!-- 滑动操作分区 -->
-						<uni-swipe-action>
-							<!-- 滑动操作项 -->
-							<uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
-								<!-- 商品信息 -->
-								<view class="goods" style="border:1px solid #ccc" @click="SelectProduct(item)">
-									<view class="meta" style="padding-bottom:15px;">
-										<view class="name">
-											名称:{{item.name}}
-											品牌:{{item.brand}}
-											型号:{{item.model}}
-											设备编号:{{item.deviceid}}
-											主类别:{{item.category_name}}
-											分类别:{{item.main_categoryid_name}}
-											公司:{{item.company_name}}
-											产品详情:{{item.remark}}
-										</view>
-									</view>
-									<!-- 商品数量 -->
-									<!-- <view class="numGroup">
-										<text class="text_1"></text>
-										<text class="inputs"></text>
-										<text class="text"></text>
-									</view> -->
-								</view>
-							</uni-swipe-action-item>
-						</uni-swipe-action>
-					</view>
-				</view>
-
-
-			</view>
-		</view>
-		<view>
-			<!-- 引入自定义模态框 -->
-			<custom-modal :visible="modalVisible">
-				<!-- 模态框的内容 -->
-				<view>
-					<text>提示</text>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">名称</text>
-						<input class="uni-input" :value="name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">品牌</text>
-						<input class="uni-input" :value="brand" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">型号</text>
-						<input class="uni-input" :value="model" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">主类别</text>
-						<input class="uni-input" :value="category_name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">分类别</text>
-						<input class="uni-input" :value="main_categoryid_name" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">公司</text>
-						<select-lay style="width: 75%;" :zindex="3" :value="companyid" name="companyid" placeholder="请选择公司"
-							:options="companyList" @selectitem="selectCompany">
-						</select-lay>
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">产品详情</text>
-						<input class="uni-input" :value="remark" disabled="true" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">数量</text>
-						<input type="number" class="uni-input" :value="num" @input="numChange" />
-					</view>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">设备编号</text>
-						<input class="uni-input" :value="deviceid" @input="deviceidChange" />
-					</view>
-					<br><br>
-					<button class="mini-btn" size="mini" @click="closeModal" style="width: 50%;float: left;">关闭</button>
-					<button class="mini-btn" type="primary" size="mini" @click="SelectConfirm"
-						style="width: 50%;">添加</button>
-				</view>
-			</custom-modal>
-		</view>
-	</view>
-</template>
-<script>
-	let _this = null;
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-	const modal = uni.requireNativePlugin('modal');
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-	var containerCode = ""
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				url: '',
-				query_name: "",
-				query_brand: "",
-				query_model: "",
-				tableData: [],
-				modalVisible: false,
-				name: "",
-				model: "",
-				deviceid: "",
-				brand: "",
-				num: 0,
-				productid: "",
-				companyid: "",
-				company_name: "",
-				category_name: "",
-				main_categoryid_name: "",
-				remark: "",
-				companyList: [{
-						label: "华力",
-						value: "6477115e9708e4295690708b"
-					},
-					{
-						label: "西曼克",
-						value: "6465c853797066b5c4e0ab0e"
-					}],
-			}
-		},
-		computed: {},
-		methods: {
-			onUnload() {
-				// SpeechTTS.destroy();
-			},
-
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/group',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-			onLoad(options) {
-				this.platform = uni.getSystemInfoSync().platform
-				// #ifdef APP-PLUS-NVUE
-				this.isNvue = true
-				// #endif
-				_this = this;
-				containerCode = options.containerCode;
-				setTimeout(() => {
-					this.getList();
-				}, 350);
-			},
-			// // 目标页面接收参数
-			// onLoad: function(options) {
-			//     console.log('containerCode: ', options.containerCode);
-
-			// }
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					this.getUserInfoWareHouse();
-				}, 300);
-				setTimeout(() => {
-					this.speak_init();
-					// this.getList();
-				}, 350);
-			},
-
-			selectCompany(index, item) {
-				if (index >= 0) {
-					_this.companyid = item.value;
-				} else {
-					_this.companyid = ""
-				}
-			},
-			nameChange: function(event) {
-				let Value = event.detail.value;
-				this.query_name = Value.trim();
-				_this.ContainerQuery();
-			},
-			brandChange: function(event) {
-				let Value = event.detail.value;
-				this.query_brand = Value.trim();
-				_this.ContainerQuery();
-			},
-			modelChange: function(event) {
-				let Value = event.detail.value;
-				this.query_model = Value.trim();
-				_this.ContainerQuery();
-			},
-
-			ContainerQuery() {
-				if (!_this.isEmpty(_this.query_name) || !_this.isEmpty(_this.query_brand) || !_this.isEmpty(_this
-						.query_model)) {
-					console.log("aaa ", _this.query_name, _this.query_brand, _this.query_model)
-					_this.tableData = [];
-					uni.request({
-						url: reqRootUrl + '/ProductQuery',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"name": this.query_name,
-							"brand": this.query_brand,
-							"model": this.query_model,
-							"types": "regex",
-						}),
-						success: (ret) => {
-							console.log("ret ", ret)
-							if (ret.statusCode === 200) {
-								if (!_this.isEmpty(ret.data)) {
-									_this.tableData = ret.data;
-								}
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				} else {
-					_this.getList()
-				}
-			},
-
-			SelectProduct(item) {
-				let source = uni.getStorageSync("source");
-				if (source !== "stocktaking") {
-					return
-				}
-				_this.productid = item._id;
-				_this.name = item.name;
-				_this.model = item.model;
-				_this.deviceid = item.deviceid;
-				_this.brand = item.brand;
-				_this.company_name = item.company_name;
-				_this.companyid = item.companyid
-				_this.category_name = item.category_name;
-				_this.main_categoryid_name = item.main_categoryid_name;
-				_this.remark = item.remark;
-				_this.num = 1;
-				_this.modalVisible = true;
-			},
-
-			numChange: function(e) {
-				this.num = e.target.value
-			},
-
-			deviceidChange: function(e) {
-				this.deviceid = e.target.value
-			},
-
-
-			closeModal() {
-				// 关闭模态框  
-				_this.productid = "";
-				_this.name = "";
-				_this.model = "";
-				_this.deviceid = "";
-				_this.brand = "";
-				_this.companyid = "";
-				_this.company_name = "";
-				_this.category_name = "";
-				_this.main_categoryid_name = "";;
-				_this.remark = "";
-				_this.num = 0;
-				_this.deviceid = "";
-				_this.modalVisible = false;
-			},
-
-			SelectConfirm() {
-				let receiptNum = uni.getStorageSync("receipt_num");
-				let containerCode = uni.getStorageSync("container_code");
-				let warehouse_id = uni.getStorageSync("warehouse_id");
-				let source = uni.getStorageSync("source");
-				let data = {};
-				if (parseInt(_this.num) === 0) {
-					_this.alertInfo("请填写正确的入库数量")
-					return
-				}
-				data["productid"] = _this.productid;
-				data["num"] = parseInt(_this.num)
-				data["container_code"] = containerCode;
-				data["groupsn"] = "";
-				data["types"] = "normal";
-				data["receipt_num"] = receiptNum;
-				data["warehouse_id"] = warehouse_id;
-				data["stock_remark"] = "";
-				data["purchaseid"] = "";
-				data["deviceid"] = _this.deviceid;
-				data["companyid"] = _this.companyid;
-				let methods = "GroupDiskAdd"
-				// if (source === "out") {
-				// 	methods = "AddDetailAddRecord";
-				// }
-				setTimeout(() => {
-					uni.request({
-						url: reqRootUrl + '/StocktakingAddProduct',
-						method: 'POST',
-						async: false,
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify(data),
-						success: (ret) => {
-							if (ret.statusCode === 200) {
-								_this.alertInfo("添加成功");
-								_this.getList();
-								_this.productid = "";
-								_this.name = "";
-								_this.model = "";
-								_this.deviceid = "";
-								_this.brand = "";
-								_this.company_name = "";
-								_this.category_name = "";
-								_this.main_categoryid_name = "";;
-								_this.remark = "";
-								_this.companyid = "";
-								this.num = 0;
-								setTimeout(() => {
-									uni.navigateBack();
-									uni.redirectTo({
-										url: '/pages/sample/stocktaking?containerCode='+containerCode,
-									})
-								}, 1000);
-							}else{
-								_this.alertInfo("添加失败");
-								setTimeout(() => {
-									uni.navigateBack();
-									uni.redirectTo({
-										url: '/pages/sample/stocktaking?containerCode='+containerCode,
-									})
-								}, 1000);
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-					// 关闭窗口后,恢复默认内容
-					this.modalVisible = false;
-				}, 30)
-			},
-
-			getList() {
-				uni.request({
-					url: reqRootUrl + '/ProductQuery',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({}),
-					success: (ret) => {
-						if (ret.statusCode === 200) {
-							if (!_this.isEmpty(ret.data)) {
-								this.tableData = ret.data;
-							}
-						}
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-			getUserInfoWareHouse() {
-				uni.request({
-					url: reqRootUrl + '/getUserInfoWareHouse',
-					method: 'POST',
-					async: false,
-					success: (ret) => {
-						_this.warehouse_id = ret.data;
-						uni.setStorageSync("warehouse_id", ret.data)
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-
-
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-
-			isEmpty: function(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" ||
-					obj.length === 0;
-			},
-		},
-	}
-</script>
-
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 25px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 25px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-
-	// 购物车列表
-	.cart-list {
-		padding: 0 5rpx;
-
-		// 购物车商品
-		.goods {
-			display: flex;
-			padding: 5rpx;
-			border-radius: 10rpx;
-			background-color: #fff;
-			position: relative;
-
-			.meta {
-				// border:1px solid red;
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				margin-left: 5rpx;
-			}
-
-			.name {
-				height: auto;
-				font-size: 18px;
-				color: #000000;
-			}
-
-			.specs {
-				line-height: 2;
-				padding: 0 15rpx;
-				font-size: 16px;
-				align-self: flex-start;
-				border-radius: 4rpx;
-				color: #888;
-				background-color: #f7f7f8;
-			}
-
-			.status_view {
-				line-height: 1;
-				font-size: 18px;
-				color: #444;
-				margin-bottom: 2rpx;
-				color: #000000;
-				padding-top: 5px;
-			}
-
-			// 商品数量
-			.numGroup {
-				// border: 1px solid green;
-				// position: absolute;
-				// bottom: 70rpx;
-				// right: 5rpx;
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				// width: 120px;
-				height: 48rpx;
-
-				.text_1 {
-					// border: 1px solid red;
-					width: 50px;
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 15px;
-					color: #444;
-				}
-
-				.text {
-					height: 100%;
-					padding: 0 5rpx;
-					font-size: 32rpx;
-					color: #444;
-				}
-
-				.inputs {
-					// border: 1px solid blue;
-					height: 100%;
-					padding-bottom: 10px;
-					text-align: center;
-					border-radius: 4rpx;
-					font-size: 20px;
-					color: #ff0000;
-					// background-color: #f6f6f6;
-				}
-			}
-		}
-
-		.cart-swipe {
-			display: block;
-			margin: 20rpx 0;
-		}
-	}
-</style>

+ 0 - 510
pages/sample/task.vue

@@ -1,510 +0,0 @@
-<template>
-	<view class="nvue-page-root">
-		<view class="head">
-			<view class="header-wrap">
-				<view class="index-header">
-					<uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
-						@click="leftClick"></uni-icons>
-					<view class="input-wrap">
-						<text class="iconfont">任务管理</text>
-					</view>
-					<view class="map-wrap">
-						<text></text>
-					</view>
-				</view>
-			</view>
-			<view class="blank"></view>
-		</view>
-		<view class="uni-common-mt" style="padding: 5px;">
-			<view class="uni-form-item uni-column">
-				<view class="uni-input-wrapper" style="margin: 5px auto;">
-					<text class="uni-form-item__title">容器码</text>
-					<input class="uni-input" :value="query_code" @input="hideKeyboard" />
-				</view>
-				<view class="uni-input-wrapper table-title">
-					<view class="tab-tr" style="width: 18%;">状态</view>
-					<view class="tab-tr" style="width: 40%;">容器码</view>
-					<view class="tab-tr" style="width: 15%;">类型</view>
-					<view class="tab-tr-end" style="width: 15%;">操作</view>
-				</view>
-				<view style="min-height:330px;overflow-y:auto;max-height:330px">
-					<view class="uni-input-wrapper table-data" v-for="(item,index) in tableData" :key="index">
-						<view class="tab-tr" style="width: 18%; overflow-wrap: break-word; ">{{item.status}}</view>
-						<view class="tab-tr"
-							style="width: 40%;text-align: left;word-break: break-all;word-wrap: break-word;line-height: initial;">
-							{{item.container_code}}
-						</view>
-						<view class="tab-tr" style="width: 15%; overflow-wrap: break-word; ">{{item.types}}</view>
-						<view class="tab-tr-end" style="width: 15%; overflow-wrap: break-word;color: #0039a6;"
-							@click="SelectProduct(item)">完成</view>
-					</view>
-				</view>
-				<view class="uni-input-wrapper button-sp-area">
-					<button type="primary" plain="true" @click="Group()">返回</button>
-					<button type="primary" plain="true" @click="moveError()">任务处理</button>
-				</view>
-			</view>
-		</view>
-		<view>
-
-			<!-- 引入自定义模态框 -->
-			<custom-modal :visible="modalVisible">
-				<!-- 模态框的内容 -->
-				<view>
-					<text>提示</text>
-					<view class="uni-input-wrapper" style="margin: 5px auto;">
-						<text class="uni-form-item__title" style="width: 30%;">出库位置</text>
-						<select-lay :zindex="1" :value="portAddr" name="portAddr" placeholder="请选择储位地址"
-							:options="portAddrList" @selectitem="selectPortAddr">
-						</select-lay>
-					</view>
-					<br>
-					<button class=" mini-btn" size="mini" @click="closeModal"
-						style="width: 50%;float: left;">取消</button>
-					<button class="mini-btn" type="primary" size="mini" @click="SelectConfirm"
-						style="width: 50%;">确定</button>
-				</view>
-			</custom-modal>
-		</view>
-	</view>
-</template>
-<script>
-	let _this = null;
-	import CustomModal from "@/components/CustomModal/CustomModal.vue";
-	const modal = uni.requireNativePlugin('modal');
-	var reqRootUrl = plus.storage.getItem("reqRootUrl");
-	const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
-
-	export default {
-		components: {
-			CustomModal
-		},
-		data() {
-			return {
-				portAddr: "",
-				tableData: [],
-				portAddrList: [],
-				modalVisible: false,
-				query_code: "",
-				wcs_sn: "",
-			}
-		},
-		computed: {},
-		methods: {
-			onUnload() {},
-			leftClick: function() {
-				setTimeout(() => {
-					uni.navigateBack();
-					// uni.redirectTo({
-					// 	url: '/pages/sample/group',
-					// })
-				}, 30);
-				// this.$emit('change', this.value)
-			},
-			onLoad() {
-				this.platform = uni.getSystemInfoSync().platform
-				// #ifdef APP-PLUS-NVUE
-				this.isNvue = true
-				// #endif
-				_this = this;
-			},
-			onShow() {
-				uni.hideKeyboard();
-				setTimeout(() => {
-					this.getList();
-					this.speak_init();
-				}, 350);
-			},
-
-			speak_init() {
-				// console.log('>> TTS:init...')
-				SpeechTTS.init((callback) => {
-					// SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎 
-					SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎 
-					// console.log('>> tts: init success');
-					SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
-					SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
-				});
-				SpeechTTS.onDone((res) => {
-					// console.log(">> tts: play end " + res)
-				});
-			},
-
-			selectPortAddr(index, item) {
-				if (index >= 0) {
-					this.portAddr = item.value;
-				} else {
-					this.portAddr = ""
-				}
-			},
-			SelectProduct(item) {
-				if (item["status"] === "错误") {
-					this.portAddrList = []
-					let qidian_name = JSON.parse(item.port_addr)["f"] + "-" + JSON.parse(item.port_addr)["c"] + "-" + JSON
-						.parse(item
-							.port_addr)["r"]
-					let zhongdian_name = JSON.parse(item.addr)["f"] + "-" + JSON.parse(item.addr)["c"] + "-" + JSON
-						.parse(item.addr)["r"]
-					this.portAddrList.push({
-						label: "起点:" + qidian_name,
-						value: qidian_name
-					})
-					this.portAddrList.push({
-						label: "终点:" + zhongdian_name,
-						value: zhongdian_name
-					})
-					this.modalVisible = true;
-				} else {
-					_this.alertInfo("只允许完成错误任务!")
-				}
-			},
-
-			hideKeyboard: function(event) {
-				let Value = event.detail.value;
-				Value = Value.trim();
-				this.query_code = Value;
-				_this.ContainerQuery();
-			},
-
-			ContainerQuery() {
-				if (_this.isEmpty(_this.query_code)) {
-					_this.getList()
-				} else {
-					uni.request({
-						url: reqRootUrl + '/wms/api',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"method": "TaskQuery",
-							"param": {
-								"container_code": this.query_code,
-								"model": "regex"
-							}
-						}),
-						success: (ret) => {
-							let rows = ret.data.data.rows;
-							if (!_this.isEmpty(rows)) {
-								for (var i = 0; i < rows.length; i++) {
-									let str = ""
-									if (rows[i]["types"] === "in") {
-										str = "入库"
-									}
-									if (rows[i]["types"] === "out") {
-										str = "出库"
-									}
-									if (rows[i]["types"] === "move") {
-										str = "移库"
-									}
-									if (rows[i]["types"] === "return") {
-										str = "回库"
-									}
-									if (rows[i]["types"] === "outEmpty") {
-										str = "空托出库"
-									}
-									if (rows[i]["types"] === "inEmpty") {
-										str = "空托入库"
-									}
-									if (rows[i]["types"] === "outMaterial") {
-										str = "空筐出库"
-									}
-									rows[i]["types"] = str;
-
-									let sta = ""
-									if (rows[i]["status"] === "status_wait") {
-										sta = "待执行"
-									}
-									if (rows[i]["status"] === "status_progress") {
-										sta = "执行中"
-									}
-									if (rows[i]["status"] === "status_success") {
-										sta = "已完成"
-									}
-									if (rows[i]["status"] === "status_cancel") {
-										sta = "已取消"
-									}
-									if (rows[i]["status"] === "status_fail") {
-										sta = "错误"
-									}
-									if (rows[i]["status"] === "status_delete") {
-										sta = "已删除"
-									}
-									rows[i]["status"] = sta;
-								}
-							}
-							this.tableData = rows;
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-				}
-			},
-
-			getList() {
-				uni.request({
-					url: reqRootUrl + '/wms/api',
-					method: 'POST',
-					headers: {
-						'Content-Type': 'application/json'
-					},
-					data: JSON.stringify({
-						"method": "TaskQuery",
-						"param": {}
-					}),
-					success: (ret) => {
-						let rows = ret.data.data.rows;
-						if (!_this.isEmpty(rows)) {
-							for (var i = 0; i < rows.length; i++) {
-								let str = ""
-								if (rows[i]["types"] === "in") {
-									str = "入库"
-								}
-								if (rows[i]["types"] === "out") {
-									str = "出库"
-								}
-								if (rows[i]["types"] === "move") {
-									str = "移库"
-								}
-								if (rows[i]["types"] === "return") {
-									str = "回库"
-								}
-								if (rows[i]["types"] === "outEmpty") {
-									str = "空托出库"
-								}
-								if (rows[i]["types"] === "inEmpty") {
-									str = "空托入库"
-								}
-								if (rows[i]["types"] === "outMaterial") {
-									str = "空筐出库"
-								}
-								rows[i]["types"] = str;
-
-								let sta = ""
-								if (rows[i]["status"] === "status_wait") {
-									sta = "待执行"
-								}
-								if (rows[i]["status"] === "status_progress") {
-									sta = "执行中"
-								}
-								if (rows[i]["status"] === "status_success") {
-									sta = "已完成"
-								}
-								if (rows[i]["status"] === "status_cancel") {
-									sta = "已取消"
-								}
-								if (rows[i]["status"] === "status_fail") {
-									sta = "错误"
-								}
-								if (rows[i]["status"] === "status_delete") {
-									sta = "已删除"
-								}
-								rows[i]["status"] = sta;
-							}
-						}
-						this.tableData = rows;
-					},
-					fail: (err) => {
-						// console.log('request fail', err);
-					},
-					complete: () => {
-						// console.log('complete');
-					}
-				})
-			},
-			Group: function(code) {
-				setTimeout(() => {
-					uni.navigateBack();
-				}, 500);
-			},
-			moveError: function(code) {
-				setTimeout(() => {
-					uni.navigateTo({
-						url: '/pages/sample/moveError',
-					})
-				}, 500);
-			},
-			isEmpty(obj) {
-				return typeof obj === undefined || obj == null || obj === "" || obj ===
-					"000000000000000000000000" || obj
-					.length === 0;
-			},
-
-			closeModal() {
-				// 关闭模态框  
-				this.modalVisible = false;
-			},
-			SelectConfirm() {
-				if (_this.isEmpty(_this.portAddr)) {
-					return
-				}
-				let portaddr = _this.portAddr.split("-");
-				let addrObj = {
-					f: parseFloat(portaddr[0]),
-					c: parseFloat(portaddr[1]),
-					r: parseFloat(portaddr[2]),
-				}
-				setTimeout(() => {
-					uni.request({
-						url: reqRootUrl + '/wms/api',
-						method: 'POST',
-						headers: {
-							'Content-Type': 'application/json'
-						},
-						data: JSON.stringify({
-							"method": "OrderComplete",
-							"param": {
-								"wcs_sn": _this.wcs_sn,
-								"new_addr": addrObj
-							}
-						}),
-						success: (ret) => {
-							if (ret.data.ret === "ok") {
-								_this.alertInfo("成功!")
-								_this.getList();
-							}
-						},
-						fail: (err) => {
-							// console.log('request fail', err);
-						},
-						complete: () => {
-							// console.log('complete');
-						}
-					})
-					// 关闭窗口后,恢复默认内容
-					this.modalVisible = false;
-				}, 30)
-			},
-
-			alertInfo(str) {
-				SpeechTTS.speak({
-					text: str,
-				});
-				modal.toast({
-					message: str,
-					duration: 6,
-				});
-			},
-		},
-	}
-</script>
-<style scoped>
-	.nvue-page-root {
-		background-color: #F8F8F8;
-		padding-bottom: 0px;
-	}
-
-	.uni-form-item__title {
-		margin: 5px auto;
-	}
-
-	.uni-input-wrapper {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		flex-wrap: nowrap;
-		background-color: #FFFFFF;
-	}
-
-	.uni-input {
-		height: 28px;
-		line-height: 28px;
-		font-size: 15px;
-		padding: 1px;
-		flex: 1;
-		border-radius: 5px;
-		border: 1px solid #cfdadd;
-		background-color: #FFFFFF;
-	}
-
-	.mini-btn {
-		height: 30px;
-		padding-left: 1px;
-		padding-right: 1px;
-	}
-
-	.uni-eye-active {
-		color: #007AFF;
-	}
-
-	.table-title {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 10px;
-		height: 40px;
-	}
-
-	.table-data {
-		background-color: aliceblue;
-		font-weight: 700;
-		margin-top: 1px;
-		height: 40px;
-	}
-
-	.tab-tr {
-		width: 25%;
-		line-height: 25px;
-		border-right: 1px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-
-	.tab-tr-end {
-		width: 25%;
-		line-height: 25px;
-		border-right: 0px solid #ccc;
-		margin: auto;
-		text-align: center;
-	}
-</style>
-<style lang="scss">
-	$color-base: #0039a6;
-	$words-color-base: #333333;
-	$words-color-light: #999999;
-
-	.header-wrap {
-		width: 100%;
-		position: fixed;
-		top: 0;
-		z-index: 999;
-
-		.index-header {
-			height: 88upx;
-			line-height: 88upx;
-			padding: 0 30upx;
-			padding-top: 40upx;
-			background-color: $color-base;
-			font-Size: 28upx;
-			color: #fff;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-
-			.fanhui {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-				font-weight: 700;
-			}
-
-			.lanya {
-				color: #fff !important;
-				font-size: 28px;
-				padding-top: 5px;
-			}
-
-			.map-wrap {
-				padding-top: 5px;
-			}
-		}
-	}
-
-	.blank {
-		height: 126upx;
-	}
-</style>

+ 49 - 5
pages/sample/webView.vue

@@ -15,12 +15,42 @@ const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
 export default {
   data() {
     return {
-      webUrl: 'http://'+plus.storage.getItem("ip")+':'+plus.storage.getItem("port")+'/w/pda/',
+      webUrl: '',
     };
   },
   onLoad() {
+    // 防御性检查:确保 ip/port 存在
+    // #ifdef APP-PLUS
+    var ip = plus.storage.getItem("ip");
+    var port = plus.storage.getItem("port");
+    if (!ip || !port) {
+      uni.showModal({
+        title: '提示',
+        content: '服务器地址未配置,请先配置',
+        showCancel: false,
+        success: () => {
+          uni.redirectTo({ url: '/pages/sample/settings' });
+        }
+      });
+      return;
+    }
+    this.webUrl = 'http://' + ip + ':' + port + '/login_pda';
+    // #endif
     this.speak_init();
   },
+  onShow() {
+    // 从 settings 页面返回时,重新加载 webUrl
+    // #ifdef APP-PLUS
+    var ip = plus.storage.getItem("ip");
+    var port = plus.storage.getItem("port");
+    if (ip && port) {
+      var newUrl = 'http://' + ip + ':' + port + '/login_pda';
+      if (this.webUrl !== newUrl) {
+        this.webUrl = newUrl;
+      }
+    }
+    // #endif
+  },
   onUnload() {
     SpeechTTS.destroy();
   },
@@ -35,7 +65,6 @@ export default {
         console.log("语音播报结束:", res);
       });
     },
-    
     onWebLoad(e) {
       console.log('网页加载完成:', e.detail.url);
     },
@@ -70,13 +99,28 @@ export default {
 .web-view-container {
   width: 100vw;
   height: 100vh;
-  margin: 0 !important; /* 新增:清除容器外边距 */
-  padding: 0 !important; /* 新增:清除容器内边距 */
+  margin: 0 !important;
+  padding: 0 !important;
+  position: relative;
 }
 uni-web-view, web-view {
   width: 100%;
   height: 100%;
-  margin: 0 !important; /* 新增:清除web-view自身占位 */
+  margin: 0 !important;
   padding: 0 !important;
 }
+.fab-btn {
+  position: fixed;
+  right: 20px;
+  bottom: 40px;
+  width: 50px;
+  height: 50px;
+  border-radius: 50%;
+  background: rgba(0, 0, 0, 0.5);
+  color: #fff;
+  font-size: 24px;
+  text-align: center;
+  line-height: 50px;
+  z-index: 999;
+}
 </style>