guoyujia 6 mēneši atpakaļ
vecāks
revīzija
52be3c2325
35 mainītis faili ar 1916 papildinājumiem un 1350 dzēšanām
  1. 2 2
      components/dialog-lot/dialog-lot.vue
  2. 92 80
      components/dialog-turnoverApplication/dialog-turnoverApplication.vue
  3. 44 18
      index.html
  4. 7 1
      pages/auxiliaryDaywork/index.vue
  5. 108 75
      pages/deliveryInspection/consultation.vue
  6. 50 18
      pages/deliveryInspection/form.vue
  7. 23 17
      pages/deliveryInspection/technicianOptions.vue
  8. 108 75
      pages/factoryInspection/consultation.vue
  9. 52 19
      pages/factoryInspection/form.vue
  10. 23 17
      pages/factoryInspection/technicianOptions.vue
  11. 108 75
      pages/firstInspection/consultation.vue
  12. 51 18
      pages/firstInspection/form.vue
  13. 41 11
      pages/firstInspection/instrumentRoomForm.vue
  14. 23 17
      pages/firstInspection/technicianOptions.vue
  15. 14 8
      pages/handlingList/index.vue
  16. 42 35
      pages/inspectionDetails/index.vue
  17. 108 75
      pages/instrumentRoomInspection/consultation.vue
  18. 45 14
      pages/instrumentRoomInspection/form.vue
  19. 23 17
      pages/instrumentRoomInspection/technicianOptions.vue
  20. 109 76
      pages/onSiteInspection/consultation.vue
  21. 53 20
      pages/onSiteInspection/form.vue
  22. 23 17
      pages/onSiteInspection/technicianOptions.vue
  23. 108 75
      pages/outsourcedInspection/consultation.vue
  24. 35 5
      pages/outsourcedInspection/form.vue
  25. 23 17
      pages/outsourcedInspection/technicianOptions.vue
  26. 24 23
      pages/outsourcedReturnCheck/carriers.vue
  27. 299 291
      pages/queryLotInfo/index.vue
  28. 35 36
      pages/sortProductionPlan/details.vue
  29. 110 78
      pages/sorting/consultation.vue
  30. 2 2
      pages/sorting/options.vue
  31. 5 4
      pages/sorting/specialOptions.vue
  32. 23 17
      pages/sorting/technicianOptions.vue
  33. 1 1
      pages/startTurnover/index.vue
  34. 2 1
      pages/vueQrCode/index.vue
  35. 100 95
      uni_modules/uni-section/components/uni-section/uni-section.vue

+ 2 - 2
components/dialog-lot/dialog-lot.vue

@@ -187,7 +187,7 @@
 								//处理成功情况
 								close();
 								emit('submit', selection.value);
-								uni.$emit('dayworkItemUpdate');
+								// uni.$emit('dayworkItemUpdate');
 							} else {
 								uni.showModal({
 									title: '提示',
@@ -199,7 +199,7 @@
 				} else {
 					close();
 					emit('submit', selection.value);
-					uni.$emit('dayworkItemUpdate');
+					// uni.$emit('dayworkItemUpdate');
 				}
 
 				// 	console.log(selection.value)

+ 92 - 80
components/dialog-turnoverApplication/dialog-turnoverApplication.vue

@@ -22,13 +22,15 @@
 						style="margin: 0 0 0 16rpx;outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
 				</uni-section>
 			</view>
-	<view v-if="curDayworkItem.turnoverType != '3'" class="list-title uni-row">
-		<text class="label"  >下序是否包装</text><text style="margin-left: 56rpx;" class="label">否</text>
-		<switch class="switch" @change="switchChange" :checked="normalStatus" style="transform: scale(0.8);align-items: center;font-size:32rpx ;" color="rgba(103, 195, 55, 1.0)" />
-		<text class="label">是</text>
-	</view>
-	<view class="list-title">
-				<text class="label" >请选择您摆放位置</text>
+			<view v-if="curDayworkItem.turnoverType != '3'" class="list-title uni-row">
+				<text class="label">下序是否包装</text><text style="margin-left: 56rpx;" class="label">否</text>
+				<switch class="switch" @change="switchChange" :checked="normalStatus"
+					style="transform: scale(0.8);align-items: center;font-size:32rpx ;"
+					color="rgba(103, 195, 55, 1.0)" />
+				<text class="label">是</text>
+			</view>
+			<view class="list-title">
+				<text class="label">请选择您摆放位置</text>
 			</view>
 			<view class="turnArea uni-row" v-if="curDayworkItem.turnoverType == '1'">
 				<view v-for="(item,index) in turnAreaList" class="btn">
@@ -51,9 +53,9 @@
 							style="font-size: 30rpx;">{{item.code}}</text></view>
 				</view>
 			</view>
-		</view>
-		<view class="add-btn-container uni-row">
-			<button type="default" class="btn" @click="handleConfirm">确认</button>
+			<view class="add-btn-container uni-row">
+				<button type="default" class="btn" @click="handleConfirm">确认</button>
+			</view>
 		</view>
 	</dialog-base>
 </template>
@@ -145,6 +147,7 @@
 		outsideDepts.value = []
 		turnAreaList.value = []
 	}
+
 	function switchChange(event) {
 		console.log(event.detail.value)
 		//是
@@ -171,8 +174,8 @@
 			})
 		})
 		getOutsourceTurnoverByWorkshop({
-			deptCode:'170000'
-		}).then(response =>{
+			deptCode: '170000'
+		}).then(response => {
 			outTurnArea.value = response.data
 		})
 		getDayWorkItemList({
@@ -180,7 +183,7 @@
 			userId: store.userInfo.userId,
 			lotId: dayworkInfo.value.lotId,
 			isWasteRecycling: dayworkInfo.value.isWasteRecycling,
-			isAmend:dayworkInfo.value.isAmend,
+			isAmend: dayworkInfo.value.isAmend,
 			processStepNumber: dayworkInfo.value.currentProcess.processStepNumber
 		}).then(res => {
 			curDayworkItem.value = {
@@ -227,7 +230,7 @@
 	}
 
 	function selectTurnoverDoor(item) {
-		console.log(item,"chejiannei")
+		console.log(item, "chejiannei")
 		// turnoverDoorChecked.value = item;
 		// curDayworkItem.value.turnoverArea = item.dictValue;
 		let index = selection.value.findIndex(selectedItem => selectedItem === item);
@@ -239,13 +242,14 @@
 	}
 
 	function selectTurnoverDoorOutside(item) {
-		console.log(item,"wai")
+		console.log(item, "wai")
 		selection.value[0] = item;
 	}
-	 function selectTurnoverOutsource(item) {
-		 console.log(item,"waixie")
-		 selection.value[0] = item
-	 }
+
+	function selectTurnoverOutsource(item) {
+		console.log(item, "waixie")
+		selection.value[0] = item
+	}
 
 	function handleTurnoverDoor(item) {
 		return selection.value.includes(item);
@@ -277,7 +281,7 @@
 			});
 		} else {
 			const currentTime = Date.now();
-			
+
 			// 检查是否已经过去了 2 秒
 			if (currentTime - lastRequestTimestamp.value < 2000) {
 				// 如果在 2 秒 内已经有请求发出,那么不执行
@@ -288,45 +292,50 @@
 				})
 				return;
 			}
-		lastRequestTimestamp.value = currentTime;
-		curDayworkItem.value.id = null;
-		curDayworkItem.value.processStepNumber = dayworkInfo.value.currentProcess.processStepNumber
-		curDayworkItem.value.startTime = timestampToTime(new Date());
-		curDayworkItem.value.endTime = timestampToTime(new Date());
-		curDayworkItem.value.technologicalProcessId = dayworkInfo.value.technologicalProcessId;
-		curDayworkItem.value.dayworkId = dayworkInfo.value.id;
-		curDayworkItem.value.productionPlanDetailId = dayworkInfo.value.productionPlanDetailId;
-		curDayworkItem.value.status = '4';
-		if (!store.tenantId) {
-			curDayworkItem.value.tenantId = store.userInfo.tenantId;
-		} else {
-			curDayworkItem.value.tenantId = store.tenantId;
-		}
-		//curDayworkItem.value.turnoverArea = "外协周转";
-		curDayworkItem.value.turnoverArea = selection.value.map((item) => {return item.code;}).join('、')
-		// 0627 将turnoverId存入dayworkItem,多选将Id进行拼接
-		curDayworkItem.value.turnoverId = selection.value.map((item) => {return item.id;}).join('、')
-		/**** 此处暂时为硬编码,170000为外协部门编码,根据编码查询信息 ***/
-		curDayworkItem.value.deptCode = 170000;
-		close();
-		turnoverOutsource(curDayworkItem.value).then(res => {
-			if (res.code === 200) {
-				uni.showToast({
-					icon: 'success',
-					title: '操作成功'
-				});
-				emit('reflushDaywork');
+			lastRequestTimestamp.value = currentTime;
+			curDayworkItem.value.id = null;
+			curDayworkItem.value.processStepNumber = dayworkInfo.value.currentProcess.processStepNumber
+			curDayworkItem.value.startTime = timestampToTime(new Date());
+			curDayworkItem.value.endTime = timestampToTime(new Date());
+			curDayworkItem.value.technologicalProcessId = dayworkInfo.value.technologicalProcessId;
+			curDayworkItem.value.dayworkId = dayworkInfo.value.id;
+			curDayworkItem.value.productionPlanDetailId = dayworkInfo.value.productionPlanDetailId;
+			curDayworkItem.value.status = '4';
+			if (!store.tenantId) {
+				curDayworkItem.value.tenantId = store.userInfo.tenantId;
 			} else {
-				uni.showToast({
-					icon: 'none',
-					title: res.msg,
-					duration:2000
-				});
-				setTimeout(() => {
-				 emit('reflushDaywork')
-				}, 1000);
+				curDayworkItem.value.tenantId = store.tenantId;
 			}
-		})
+			//curDayworkItem.value.turnoverArea = "外协周转";
+			curDayworkItem.value.turnoverArea = selection.value.map((item) => {
+				return item.code;
+			}).join('、')
+			// 0627 将turnoverId存入dayworkItem,多选将Id进行拼接
+			curDayworkItem.value.turnoverId = selection.value.map((item) => {
+				return item.id;
+			}).join('、')
+			/**** 此处暂时为硬编码,170000为外协部门编码,根据编码查询信息 ***/
+			curDayworkItem.value.deptCode = 170000;
+			console.log(curDayworkItem.value)
+			close();
+			turnoverOutsource(curDayworkItem.value).then(res => {
+				if (res.code === 200) {
+					uni.showToast({
+						icon: 'success',
+						title: '操作成功'
+					});
+					emit('reflushDaywork');
+				} else {
+					uni.showToast({
+						icon: 'none',
+						title: res.msg,
+						duration: 2000
+					});
+					setTimeout(() => {
+						emit('reflushDaywork')
+					}, 1000);
+				}
+			})
 		}
 	}
 
@@ -335,17 +344,17 @@
 			handleConfirmOutsource();
 		} else {
 			const currentTime = Date.now();
-				
-				// 检查是否已经过去了 2 秒
-				if (currentTime - lastRequestTimestamp.value < 2000) {
-					// 如果在 2 秒 内已经有请求发出,那么不执行
-					uni.showToast({
-						icon: 'none',
-						title: `请勿重复点击`,
-						duration: 2000
-					})
-					return;
-				}
+
+			// 检查是否已经过去了 2 秒
+			if (currentTime - lastRequestTimestamp.value < 2000) {
+				// 如果在 2 秒 内已经有请求发出,那么不执行
+				uni.showToast({
+					icon: 'none',
+					title: `请勿重复点击`,
+					duration: 2000
+				})
+				return;
+			}
 			lastRequestTimestamp.value = currentTime;
 			console.log(dayworkInfo.value)
 			curDayworkItem.value.id = null;
@@ -391,7 +400,7 @@
 				//0628将位置id也拼接的方式存下来
 				curDayworkItem.value.turnoverId = newIdArray.join('、');
 			}
-			
+
 			// curDayworkItem.value.dayworkId = store.dayworkInfo.id;
 			// 设置周转下一个车间名
 			for (let i = 0; i < deptList.value.length; i++) {
@@ -408,10 +417,10 @@
 				});
 			} else {
 				curDayworkItem.value.isNextPacking = false
-				if(normalStatus.value) {
+				if (normalStatus.value) {
 					curDayworkItem.value.isNextPacking = true
 				}
-				
+
 				close();
 				turnover(curDayworkItem.value).then(res => {
 					if (res.code === 200) {
@@ -426,12 +435,12 @@
 						uni.showToast({
 							icon: 'none',
 							title: res.msg,
-							duration:2000
+							duration: 2000
 						});
 						setTimeout(() => {
-						 emit('reflushDaywork')
+							emit('reflushDaywork')
 						}, 1000);
-						
+
 					}
 				})
 			}
@@ -442,11 +451,11 @@
 	}
 
 	function handleChangeInside() {
-		let deptInfo = deptList.value.find(item=>  item.deptId == curDayworkItem.value.deptId )
+		let deptInfo = deptList.value.find(item => item.deptId == curDayworkItem.value.deptId)
 		console.log(deptInfo)
-		if(deptInfo.isSortPackaging == 1){
+		if (deptInfo.isSortPackaging == 1) {
 			normalStatus.value = true
-		}else{
+		} else {
 			normalStatus.value = false
 		}
 		turnAreaList.value = [];
@@ -463,11 +472,11 @@
 	}
 
 	function handleChangeOutside() {
-		let deptInfo = deptList.value.find(item=>  item.deptId == curDayworkItem.value.deptId )
+		let deptInfo = deptList.value.find(item => item.deptId == curDayworkItem.value.deptId)
 		console.log(deptInfo)
-		if(deptInfo.isSortPackaging == 1){
+		if (deptInfo.isSortPackaging == 1) {
 			normalStatus.value = true
-		}else{
+		} else {
 			normalStatus.value = false
 		}
 	}
@@ -475,8 +484,11 @@
 
 <style lang="scss">
 	.dialog-body {
+		overflow: auto;
+
 		.list-container {
 			width: 100%;
+			overflow: auto;
 
 			.list-title {
 				margin-top: 24rpx;

+ 44 - 18
index.html

@@ -1,20 +1,46 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <script>
-      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
-        CSS.supports('top: constant(a)'))
-      document.write(
-        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
-        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
-    </script>
-    <title></title>
-    <!--preload-links-->
-    <!--app-context-->
-  </head>
-  <body>
-    <div id="app"><!--app-html--></div>
-    <script type="module" src="/main.js"></script>
-  </body>
-</html>
+	<head>
+		<meta charset="UTF-8" />
+		<script>
+			var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+				CSS.supports('top: constant(a)'))
+			document.write(
+				'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+				(coverSupport ? ', viewport-fit=cover' : '') + '" />')
+		</script>
+		<title></title>
+		<!--preload-links-->
+		<!--app-context-->
+		<style>
+			/* 防止Safari下拉刷新 */
+			@media screen and (pointer: coarse) {
+				@supports (-webkit-backdrop-filter: blur(1px)) and (overscroll-behavior-y: none) {
+					html {
+						min-height: 100.3%;
+						overscroll-behavior-y: none;
+					}
+				}
+			}
+
+			/* 防止Chrome下拉刷新 */
+			body {
+				overscroll-behavior-y: none;
+
+			}
+		</style>
+	</head>
+	<body>
+		<div id="app"><!--app-html--></div>
+		<script type="module" src="/main.js">
+			// // 检测浏览器是否支持overscroll-behavior属性
+			// if (!'overscrollBehavior' in document.documentElement.style) {
+			// 	document.addEventListener('touchmove', function(event) {
+			// 		event.preventDefault();
+			// 	}, {
+			// 		passive: false
+			// 	});
+			// }
+		</script>
+	</body>
+</html>

+ 7 - 1
pages/auxiliaryDaywork/index.vue

@@ -125,7 +125,13 @@
 		});
 		// quer.value.userId = store.userInfo.userId;
 		// quer.value.startTime = startTime.value;
-		quer.value.startTime = `${startTime.value} 00:00:00`
+		console.log("555", startTime.value)
+		if (startTime.value) {
+			quer.value.startTime = `${startTime.value} 00:00:00`
+			console.log("999", startTime.value)
+		} else {
+			quer.value.startTime = null
+		}
 		quer.value.userId = userId.value
 		quer.value.isAuto = 0
 		getDayWorkList(quer.value).then(res => {

+ 108 - 75
pages/deliveryInspection/consultation.vue

@@ -10,10 +10,10 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName"/>
+						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
-						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>				
+						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
@@ -24,23 +24,23 @@
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -50,8 +50,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -77,7 +78,9 @@
 	import {
 		getProductConsult
 	} from '@/api/business/processInspection.js'
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 
 	const lot = ref({});
 	const selected = ref([]);
@@ -85,21 +88,20 @@
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
 
 	// 页面生命周期函数
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 	onMounted(() => {
@@ -128,45 +130,71 @@
 	onLoad(() => {})
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
-		} = e	
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		} = e
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	lot.value.departments = value.detail.value;
+		lot.value.departments = value.detail.value;
 	}
-	
+
 
 	const handleSubmit = () => {
-		if (lot.value.departments ==null || (lot.value.departments !=null &&lot.value.departments.length ==0 )) {
+		if (lot.value.departments == null || (lot.value.departments != null && lot.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
 			})
 			return
 		}
-		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined ||lot.value.product.technicianId == 0 ) ) {
+		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined || lot.value.product
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -196,7 +224,7 @@
 		lastRequestTimestamp.value = currentTime;
 		store.processInspection = null;
 		var consultList = []
-		for(let i = 0;i<lot.value.departments.length;i++) {
+		for (let i = 0; i < lot.value.departments.length; i++) {
 			let consult = {}
 			consult.content = lot.value.question
 			consult.consultDepartment = lot.value.departments[i]
@@ -204,7 +232,7 @@
 			consult.technicianId = lot.value.product.technicianId
 			consultList.push(consult)
 		}
-		uni.$emit('addWasteConsultationEvent',consultList)
+		uni.$emit('addWasteConsultationEvent', consultList)
 		lot.value = {};
 		uni.navigateBack()
 	}
@@ -214,7 +242,7 @@
 		lot.value.product.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -274,46 +302,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: center
-		}
-		
-		.segment {
-			width: 60%;
-			background-color: rgba(213, 213, 213, 1);
-			border: 1rpx solid rgba(213, 213, 213, 1);
-			margin:8px 0;
-		}
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: center
+	}
+
+	.segment {
+		width: 60%;
+		background-color: rgba(213, 213, 213, 1);
+		border: 1rpx solid rgba(213, 213, 213, 1);
+		margin: 8px 0;
+	}
+
 	.checkbox-item {
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  margin-bottom: 10px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
 	}
-	
+
 	.checkbox {
-	  margin-right: 10px;
+		margin-right: 10px;
 	}
+
 	// .uni-file-picker__container{
 	// }
 	.my-files {
 		display: flex;
 		justify-content: center;
-		
+
 		:deep(.uni-file-picker__container) {
-		flex-direction: row;
-			
+			flex-direction: row;
+
 		}
 	}
+
 	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -324,11 +356,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -336,6 +368,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;

+ 50 - 18
pages/deliveryInspection/form.vue

@@ -126,8 +126,9 @@
 		<view class="daywork-container">
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">交检状态</view>
-				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;" v-model="processInspecion.inspectionStatus"
-					:localdata="range" @change="handleChangeInspecionStatus"></uni-data-checkbox>
+				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;"
+					v-model="processInspecion.inspectionStatus" :localdata="range"
+					@change="handleChangeInspecionStatus"></uni-data-checkbox>
 			</view>
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">放行状态</view>
@@ -139,8 +140,9 @@
 					<text class="label">是否移交仪器室</text><text>&nbsp;否</text>
 					<!-- <switch class="switch" @change="switchChange" style="transform:scale(0.7);margin-top: -16rpx;"
 						color="rgba(255,85,85,1)" /> -->
-					<zero-switch v-model="processInspecion.flag" @change="switchChange" active-color="rgba(103, 195, 55, 1.0)"
-						:size="18" style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
+					<zero-switch v-model="processInspecion.flag" @change="switchChange"
+						active-color="rgba(103, 195, 55, 1.0)" :size="18"
+						style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
 					<text>是</text>
 				</view>
 				<view v-else class="list-title uni-row" style="margin-top: 16rpx;">
@@ -218,7 +220,7 @@
 		rejectNum: 0,
 		examiningNum: 0,
 		status: 0,
-		inspectionStatus:0
+		inspectionStatus: 0
 	})
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.baseUrl)
@@ -365,23 +367,31 @@
 		// 		return consul[i].text
 		// 	}
 		// }
-		if(item.consultResultId == 0) {
+		if (item.consultResultId == 0) {
 			return '待确认'
-		}else{
+		} else {
 			return item.result
 		}
 	}
 
 	function upLoadImageHandler(arg) {
-		console.log(arg)
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
 				pictureName: data.originalFilename,
 				tenantId: store.tenantId
 			})
+			photoList.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
 			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
 
@@ -391,17 +401,39 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
-	function handleChangeInspecionStatus(e){
+
+	function handleChangeInspecionStatus(e) {
 		console.log(e.detail.value)
 		//没有咨询
-		if(consultations.value && consultations.value.length == 0){
+		if (consultations.value && consultations.value.length == 0) {
 			processInspecion.value.status = e.detail.value
 			processInspecion.value.adoptStatus = e.detail.value
 		}
@@ -431,7 +463,7 @@
 		selectedPhotos.value.splice(index, 1)
 	}
 
-function handleDrawingMenu() {
+	function handleDrawingMenu() {
 		// 对 technologicalProcessDetailId 进行URL编码
 		var encodedId = encodeURIComponent(processInspecion.value.lot.productId);
 		var enTechnologicalProcessId = encodeURIComponent(processInspecion.value.lot.technologicalProcessId);
@@ -663,8 +695,8 @@ function handleDrawingMenu() {
 		})
 		consultations.value = consultations.value.concat(info)
 		isEventTriggered.value = true; // 更新标志位状态
-		 processInspecion.value.status = 0
-		 processInspecion.value.adoptStatus = 0
+		processInspecion.value.status = 0
+		processInspecion.value.adoptStatus = 0
 	}
 
 	/***************************** 定义了一些事件 *****************************/

+ 23 - 17
pages/deliveryInspection/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -98,8 +101,8 @@
 	const handleOptionChecked = (data) => {
 		console.log(data)
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -115,7 +118,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -173,21 +176,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 108 - 75
pages/factoryInspection/consultation.vue

@@ -10,11 +10,11 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName"  />
+						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
 						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
-						
+
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
@@ -25,23 +25,23 @@
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -51,8 +51,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -78,7 +79,9 @@
 	import {
 		getProductConsult
 	} from '@/api/business/processInspection.js'
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 
 	const lot = ref({});
 	const selected = ref([]);
@@ -86,21 +89,20 @@
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
 
 	// 页面生命周期函数
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 	onMounted(() => {
@@ -129,45 +131,71 @@
 	onLoad(() => {})
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
-		} = e	
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		} = e
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	lot.value.departments = value.detail.value;
+		lot.value.departments = value.detail.value;
 	}
-	
+
 
 	const handleSubmit = () => {
-		if (lot.value.departments ==null || (lot.value.departments !=null &&lot.value.departments.length ==0 )) {
+		if (lot.value.departments == null || (lot.value.departments != null && lot.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
 			})
 			return
 		}
-		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined ||lot.value.product.technicianId == 0 ) ) {
+		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined || lot.value.product
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -197,7 +225,7 @@
 		lastRequestTimestamp.value = currentTime;
 		store.processInspection = null;
 		var consultList = []
-		for(let i = 0;i<lot.value.departments.length;i++) {
+		for (let i = 0; i < lot.value.departments.length; i++) {
 			let consult = {}
 			consult.content = lot.value.question
 			consult.consultDepartment = lot.value.departments[i]
@@ -205,7 +233,7 @@
 			consult.technicianId = lot.value.product.technicianId
 			consultList.push(consult)
 		}
-		uni.$emit('addWasteConsultationEvent',consultList)
+		uni.$emit('addWasteConsultationEvent', consultList)
 		lot.value = {};
 		uni.navigateBack()
 	}
@@ -215,7 +243,7 @@
 		lot.value.product.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -275,46 +303,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: center
-		}
-		
-		.segment {
-			width: 60%;
-			background-color: rgba(213, 213, 213, 1);
-			border: 1rpx solid rgba(213, 213, 213, 1);
-			margin:8px 0;
-		}
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: center
+	}
+
+	.segment {
+		width: 60%;
+		background-color: rgba(213, 213, 213, 1);
+		border: 1rpx solid rgba(213, 213, 213, 1);
+		margin: 8px 0;
+	}
+
 	.checkbox-item {
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  margin-bottom: 10px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
 	}
-	
+
 	.checkbox {
-	  margin-right: 10px;
+		margin-right: 10px;
 	}
+
 	// .uni-file-picker__container{
 	// }
 	.my-files {
 		display: flex;
 		justify-content: center;
-		
+
 		:deep(.uni-file-picker__container) {
-		flex-direction: row;
-			
+			flex-direction: row;
+
 		}
 	}
+
 	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -325,11 +357,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -337,6 +369,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;

+ 52 - 19
pages/factoryInspection/form.vue

@@ -112,8 +112,9 @@
 		<view class="daywork-container">
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx;width: 170rpx;">出厂检状态</view>
-				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;" v-model="processInspecion.inspectionStatus"
-					:localdata="range" @change="handleChangeInspecionStatus"></uni-data-checkbox>
+				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;"
+					v-model="processInspecion.inspectionStatus" :localdata="range"
+					@change="handleChangeInspecionStatus"></uni-data-checkbox>
 			</view>
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">放行状态</view>
@@ -126,8 +127,9 @@
 					<!-- <switch :checked="isAllChecked" class="switch" :disabled="!showTransfer || processInspecion.flag"
 						@change="switchAllCheckChange" style="transform:scale(0.7);margin-top: -16rpx;"
 						color="rgba(255,85,85,1)" /> -->
-					<zero-switch v-model="isAllChecked" @change="switchAllCheckChange" active-color="rgba(103, 195, 55, 1.0)"
-						:size="18" style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
+					<zero-switch v-model="isAllChecked" @change="switchAllCheckChange"
+						active-color="rgba(103, 195, 55, 1.0)" :size="18"
+						style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
 					<text>是</text>
 				</view>
 			</view>
@@ -187,7 +189,7 @@
 		rejectNum: 0,
 		examiningNum: 0,
 		status: 0,
-		inspectionStatus:0
+		inspectionStatus: 0
 	})
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.baseUrl)
@@ -315,31 +317,33 @@
 		// 		return consul[i].text
 		// 	}
 		// }
-		if(item.consultResultId == 0) {
+		if (item.consultResultId == 0) {
 			return '待确认'
-		}else{
+		} else {
 			return item.result
 		}
 	}
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
 				pictureName: data.originalFilename,
 				tenantId: store.tenantId
 			})
+			photoList.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
 			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
-	function handleChangeInspecionStatus(e){
-		console.log(e.detail.value)
-		//没有咨询
-		if(consultations.value && consultations.value.length == 0){
-			processInspecion.value.status = e.detail.value
-		}
-	}
 
 	function select(e) {
 		console.log(e)
@@ -347,12 +351,41 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
+	}
+
+	function handleChangeInspecionStatus(e) {
+		console.log(e.detail.value)
+		//没有咨询
+		if (consultations.value && consultations.value.length == 0) {
+			processInspecion.value.status = e.detail.value
+		}
 	}
 
 	function handleDeletedPhoto(e) {

+ 23 - 17
pages/factoryInspection/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -98,8 +101,8 @@
 	const handleOptionChecked = (data) => {
 		console.log(data)
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -115,7 +118,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -173,21 +176,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 108 - 75
pages/firstInspection/consultation.vue

@@ -10,11 +10,11 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName"  />
+						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
 						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
-						
+
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
@@ -25,23 +25,23 @@
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -51,8 +51,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -78,7 +79,9 @@
 	import {
 		getProductConsult
 	} from '@/api/business/processInspection.js'
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 
 	const lot = ref({});
 	const selected = ref([]);
@@ -86,21 +89,20 @@
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
 
 	// 页面生命周期函数
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 	onMounted(() => {
@@ -129,45 +131,71 @@
 	onLoad(() => {})
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
-		} = e	
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		} = e
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	lot.value.departments = value.detail.value;
+		lot.value.departments = value.detail.value;
 	}
-	
+
 
 	const handleSubmit = () => {
-		if (lot.value.departments ==null || (lot.value.departments !=null &&lot.value.departments.length ==0 )) {
+		if (lot.value.departments == null || (lot.value.departments != null && lot.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
 			})
 			return
 		}
-		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined ||lot.value.product.technicianId == 0 ) ) {
+		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined || lot.value.product
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -197,7 +225,7 @@
 		lastRequestTimestamp.value = currentTime;
 		store.processInspection = null;
 		var consultList = []
-		for(let i = 0;i<lot.value.departments.length;i++) {
+		for (let i = 0; i < lot.value.departments.length; i++) {
 			let consult = {}
 			consult.content = lot.value.question
 			consult.consultDepartment = lot.value.departments[i]
@@ -205,7 +233,7 @@
 			consult.technicianId = lot.value.product.technicianId
 			consultList.push(consult)
 		}
-		uni.$emit('addWasteConsultationEvent',consultList)
+		uni.$emit('addWasteConsultationEvent', consultList)
 		lot.value = {};
 		uni.navigateBack()
 	}
@@ -215,7 +243,7 @@
 		lot.value.product.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -275,46 +303,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: center
-		}
-		
-		.segment {
-			width: 60%;
-			background-color: rgba(213, 213, 213, 1);
-			border: 1rpx solid rgba(213, 213, 213, 1);
-			margin:8px 0;
-		}
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: center
+	}
+
+	.segment {
+		width: 60%;
+		background-color: rgba(213, 213, 213, 1);
+		border: 1rpx solid rgba(213, 213, 213, 1);
+		margin: 8px 0;
+	}
+
 	.checkbox-item {
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  margin-bottom: 10px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
 	}
-	
+
 	.checkbox {
-	  margin-right: 10px;
+		margin-right: 10px;
 	}
+
 	// .uni-file-picker__container{
 	// }
 	.my-files {
 		display: flex;
 		justify-content: center;
-		
+
 		:deep(.uni-file-picker__container) {
-		flex-direction: row;
-			
+			flex-direction: row;
+
 		}
 	}
+
 	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -325,11 +357,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -337,6 +369,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;

+ 51 - 18
pages/firstInspection/form.vue

@@ -100,10 +100,10 @@
 				@select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto"></uni-file-picker>
 		</view>
 		<!-- 咨询部分 -->
-		<view  class="title unfit-title uni-row">
+		<view class="title unfit-title uni-row">
 			<text>咨询</text>
 		</view>
-		<view  class="consultation-container uni-column">
+		<view class="consultation-container uni-column">
 			<view class="consultation-item-container" v-for="(item, index) in consultations" :key="index">
 				<view class="question uni-column">
 					<view class="label uni-row">
@@ -120,8 +120,9 @@
 		<view class="daywork-container">
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx;width: 170rpx;">首件检状态</view>
-				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;" v-model="processInspecion.inspectionStatus"
-					:localdata="range" @change="handleChangeInspecionStatus"></uni-data-checkbox>
+				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;"
+					v-model="processInspecion.inspectionStatus" :localdata="range"
+					@change="handleChangeInspecionStatus"></uni-data-checkbox>
 			</view>
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">放行状态</view>
@@ -133,8 +134,9 @@
 					<text class="label">是否移交仪器室</text><text>&nbsp;否</text>
 					<!-- <switch class="switch" @change="switchChange" style="transform:scale(0.7);margin-top: -16rpx;"
 						color="rgba(255,85,85,1)" /> -->
-					<zero-switch v-model="processInspecion.flag" @change="switchChange" active-color="rgba(103, 195, 55, 1.0)"
-						:size="18" style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
+					<zero-switch v-model="processInspecion.flag" @change="switchChange"
+						active-color="rgba(103, 195, 55, 1.0)" :size="18"
+						style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
 					<text>是</text>
 				</view>
 				<view v-else class="list-title uni-row" style="margin-top: 16rpx;">
@@ -151,7 +153,7 @@
 					<text>是</text>
 				</view>
 			</view>
-			<view  class="remark uni-row">
+			<view class="remark uni-row">
 				<view class="label">备注</view>
 				<textarea v-if="editable()" v-model="processInspecion.remark" maxlength="999" />
 				<view v-else class="value">{{ processInspecion.remark }}</view>
@@ -213,7 +215,7 @@
 		rejectNum: 0,
 		examiningNum: 0,
 		status: 0,
-		inspectionStatus:0
+		inspectionStatus: 0
 	})
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.baseUrl)
@@ -386,22 +388,31 @@
 		// 		return consul[i].text
 		// 	}
 		// }
-		if(item.consultResultId == 0) {
+		if (item.consultResultId == 0) {
 			return '待确认'
-		}else{
+		} else {
 			return item.result
 		}
 	}
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
 				pictureName: data.originalFilename,
 				tenantId: store.tenantId
 			})
+			photoList.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
 			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
 
@@ -411,12 +422,33 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
 
 	function handleDeletedPhoto(e) {
@@ -651,7 +683,7 @@
 		})
 		consultations.value = consultations.value.concat(info)
 		isEventTriggered.value = true; // 更新标志位状态
-		 processInspecion.value.status = 0
+		processInspecion.value.status = 0
 	}
 
 	/***************************** 定义了一些事件 *****************************/
@@ -677,11 +709,12 @@
 		});
 
 	}
-	function handleChangeInspecionStatus(e){
+
+	function handleChangeInspecionStatus(e) {
 		console.log(e.detail.value)
 		console.log(consultations.value)
 		//没有咨询
-		if(consultations.value && consultations.value.length == 0){
+		if (consultations.value && consultations.value.length == 0) {
 			processInspecion.value.status = e.detail.value
 		}
 	}

+ 41 - 11
pages/firstInspection/instrumentRoomForm.vue

@@ -111,8 +111,8 @@
 		<view class="daywork-container">
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; width: 170rpx;">仪器检状态</view>
-				<uni-data-checkbox :disabled="true" style="margin-top: 20rpx;" v-model="processInspecion.inspectionStatus"
-					:localdata="range"></uni-data-checkbox>
+				<uni-data-checkbox :disabled="true" style="margin-top: 20rpx;"
+					v-model="processInspecion.inspectionStatus" :localdata="range"></uni-data-checkbox>
 			</view>
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">放行状态</view>
@@ -179,7 +179,7 @@
 		rejectNum: 0,
 		examiningNum: 0,
 		status: 0,
-		inspectionStatus:0
+		inspectionStatus: 0
 	})
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.baseUrl)
@@ -228,7 +228,6 @@
 	}]
 
 	/***************************** 页面生命周期函数 *****************************/
-
 	function init() {
 		const instance = getCurrentInstance().proxy
 		const eventChannel = instance.getOpenerEventChannel();
@@ -244,6 +243,7 @@
 	}
 
 	onShow(() => {
+		uni.$off('addWasteInfoEvent');
 		console.log(store.processInspection)
 		console.log(flag.value)
 		if (!flag.value) {
@@ -322,22 +322,31 @@
 		// 		return consul[i].text
 		// 	}
 		// }
-		if(item.consultResultId == 0) {
+		if (item.consultResultId == 0) {
 			return '待确认'
-		}else{
+		} else {
 			return item.result
 		}
 	}
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
 				pictureName: data.originalFilename,
 				tenantId: store.tenantId
 			})
+			photoList.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
 			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
 
@@ -347,12 +356,33 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
 
 	function handleDeletedPhoto(e) {

+ 23 - 17
pages/firstInspection/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -98,8 +101,8 @@
 	const handleOptionChecked = (data) => {
 		console.log(data)
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -115,7 +118,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -173,21 +176,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 14 - 8
pages/handlingList/index.vue

@@ -746,9 +746,14 @@
 	/* 导航栏样式 */
 	.container {
 		// height: calc(100% - $navHeight);
-		height: 1500rpx;
-		position: relative;
-		top: $navHeight;
+		// height: 1500rpx;
+		// position: relative;
+		// top: $navHeight;
+		position: absolute;
+		left: 0;
+		top: 1.5rem;
+		right: 0;
+		height: 96%;
 		background-color: #f5f5f5;
 	}
 
@@ -785,11 +790,12 @@
 	/* 待周转样式 */
 	.padding-container,
 	.turnover-container {
-		position: absolute;
-		top: 56rpx;
-		right: 0;
-		bottom: 0rpx;
-		left: 0;
+		height: 90%;
+		// position: absolute;
+		// top: 56rpx;
+		// right: 0;
+		// bottom: 0rpx;
+		// left: 0;
 		background-color: #f5f5f5;
 
 		.scroll-container {

+ 42 - 35
pages/inspectionDetails/index.vue

@@ -12,10 +12,10 @@
 			</uni-section>
 		</view>
 		<view style="display: flex; flex-direction: row; align-items: center; margin-top: 10rpx;">
-		  <uni-section title="检查状态:" type="square" class="uni-row sta" style="flex: 1;">
-		    <uni-data-select v-model="quer.status" :localdata="statusData" :clear="true" placeholder="请选择检查状态"
-		      @change="handleChangeStatus" style="background-color: #ffffff; flex: 1;width: 100%;"></uni-data-select>
-		  </uni-section>
+			<uni-section title="检查状态:" type="square" class="uni-row sta" style="flex: 1 1 100%;">
+				<uni-data-select v-model="quer.status" :localdata="statusData" :clear="true" placeholder="请选择检查状态"
+					@change="handleChangeStatus" style="background-color: #ffffff; flex: 1;"></uni-data-select>
+			</uni-section>
 		</view>
 		<view class="daywork-item uni-column" v-for="(item, index) in inspecionList" :key="index"
 			@click="handleSelection(item)">
@@ -23,7 +23,7 @@
 				<text>批次号:{{ item.lotCode }}</text>
 				<text style="margin-left: 16rpx;color: #55ff7f;">{{ item.inspectionType }}</text>
 				<text :style="selectType(item)">{{ selectText(item) }}</text>
-				<text  class="fa fa-trash" style="font-size: 16; color: white;"></text>
+				<text class="fa fa-trash" style="font-size: 16; color: white;"></text>
 			</view>
 			<view class="info">
 				<view class="info-row uni-row">
@@ -93,18 +93,17 @@
 		text: "不合格",
 		type: "color: #ff0c2c"
 	}]
-	const statusData = ref([
-		{
-			value:0,
-			text:"待确认"
+	const statusData = ref([{
+			value: 0,
+			text: "待确认"
 		},
 		{
-			value:1,
-			text:"合格"
+			value: 1,
+			text: "合格"
 		},
 		{
-			value:2,
-			text:"不合格"
+			value: 2,
+			text: "不合格"
 		},
 	])
 
@@ -129,29 +128,29 @@
 		// 	}
 		// });
 	})
-	onReachBottom(()=>{
-			console.log(status.value)
-			if(status.value) {
+	onReachBottom(() => {
+		console.log(status.value)
+		if (status.value) {
 			pageNum.value += 1
 			quer.value.pageNum = pageNum.value
 			quer.value.pageSize = pageSize.value
-			getProcessInspecionList(quer.value).then(res =>{
-			 const existingIds = new Set(inspecionList.value.map(item => item.id));
-			
-			  // 过滤出那些不在 existingIds 中的项,即新数据
-			  const newRows = res.rows.filter(row => !existingIds.has(row.id));
-			
-			  // 如果有新数据,将其添加到 listData
-			  if (newRows.length > 0) {
-				inspecionList.value = inspecionList.value.concat(newRows);
-				original.value = original.value.concat(newRows);
-			  } else {
-				// 如果没有新数据,更新状态表示没有更多数据
-				status.value = false;
-			  }
+			getProcessInspecionList(quer.value).then(res => {
+				const existingIds = new Set(inspecionList.value.map(item => item.id));
+
+				// 过滤出那些不在 existingIds 中的项,即新数据
+				const newRows = res.rows.filter(row => !existingIds.has(row.id));
+
+				// 如果有新数据,将其添加到 listData
+				if (newRows.length > 0) {
+					inspecionList.value = inspecionList.value.concat(newRows);
+					original.value = original.value.concat(newRows);
+				} else {
+					// 如果没有新数据,更新状态表示没有更多数据
+					status.value = false;
+				}
 			})
-			}
-		})
+		}
+	})
 
 	/***************************** 定义了一些方法 *****************************/
 
@@ -188,11 +187,13 @@
 			}
 		});
 	}
+
 	function handleSearch() {
 		pageNum.value = 1
 		status.value = true
 		getList()
 	}
+
 	function handleChangeStatus() {
 		pageNum.value = 1
 		status.value = true
@@ -257,8 +258,9 @@
 
 <style lang="scss">
 	.uni-section-content {
-		width: 70%;
+		flex: 1;
 	}
+
 	.time-controls {
 		.title {
 			margin: 20% auto 40% auto;
@@ -362,6 +364,7 @@
 				.value {
 					flex: 1;
 				}
+
 				.start-batch-btn {
 					flex: 1;
 					height: 80rpx;
@@ -373,7 +376,11 @@
 			}
 		}
 	}
-	uni-app, uni-page, uni-page-wrapper, uni-page-body {
-	    height: 100%;
+
+	uni-app,
+	uni-page,
+	uni-page-wrapper,
+	uni-page-body {
+		height: 100%;
 	}
 </style>

+ 108 - 75
pages/instrumentRoomInspection/consultation.vue

@@ -10,11 +10,11 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName"  />
+						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
 						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
-						
+
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
@@ -25,23 +25,23 @@
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -51,8 +51,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -78,7 +79,9 @@
 	import {
 		getProductConsult
 	} from '@/api/business/processInspection.js'
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 
 	const lot = ref({});
 	const selected = ref([]);
@@ -86,21 +89,20 @@
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
 
 	// 页面生命周期函数
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 	onMounted(() => {
@@ -129,45 +131,71 @@
 	onLoad(() => {})
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
-		} = e	
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		} = e
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	lot.value.departments = value.detail.value;
+		lot.value.departments = value.detail.value;
 	}
-	
+
 
 	const handleSubmit = () => {
-		if (lot.value.departments ==null || (lot.value.departments !=null &&lot.value.departments.length ==0 )) {
+		if (lot.value.departments == null || (lot.value.departments != null && lot.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
 			})
 			return
 		}
-		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined ||lot.value.product.technicianId == 0 ) ) {
+		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined || lot.value.product
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -197,7 +225,7 @@
 		lastRequestTimestamp.value = currentTime;
 		store.processInspection = null;
 		var consultList = []
-		for(let i = 0;i<lot.value.departments.length;i++) {
+		for (let i = 0; i < lot.value.departments.length; i++) {
 			let consult = {}
 			consult.content = lot.value.question
 			consult.consultDepartment = lot.value.departments[i]
@@ -205,7 +233,7 @@
 			consult.technicianId = lot.value.product.technicianId
 			consultList.push(consult)
 		}
-		uni.$emit('addWasteConsultationEvent',consultList)
+		uni.$emit('addWasteConsultationEvent', consultList)
 		lot.value = {};
 		uni.navigateBack()
 	}
@@ -215,7 +243,7 @@
 		lot.value.product.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -275,46 +303,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: center
-		}
-		
-		.segment {
-			width: 60%;
-			background-color: rgba(213, 213, 213, 1);
-			border: 1rpx solid rgba(213, 213, 213, 1);
-			margin:8px 0;
-		}
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: center
+	}
+
+	.segment {
+		width: 60%;
+		background-color: rgba(213, 213, 213, 1);
+		border: 1rpx solid rgba(213, 213, 213, 1);
+		margin: 8px 0;
+	}
+
 	.checkbox-item {
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  margin-bottom: 10px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
 	}
-	
+
 	.checkbox {
-	  margin-right: 10px;
+		margin-right: 10px;
 	}
+
 	// .uni-file-picker__container{
 	// }
 	.my-files {
 		display: flex;
 		justify-content: center;
-		
+
 		:deep(.uni-file-picker__container) {
-		flex-direction: row;
-			
+			flex-direction: row;
+
 		}
 	}
+
 	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -325,11 +357,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -337,6 +369,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;

+ 45 - 14
pages/instrumentRoomInspection/form.vue

@@ -111,8 +111,9 @@
 		<view class="daywork-container">
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx;width: 170rpx;">仪器室检状态</view>
-				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;" v-model="processInspecion.inspectionStatus"
-					:localdata="range" @change="handleChangeInspecionStatus"></uni-data-checkbox>
+				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;"
+					v-model="processInspecion.inspectionStatus" :localdata="range"
+					@change="handleChangeInspecionStatus"></uni-data-checkbox>
 			</view>
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">放行状态</view>
@@ -180,7 +181,7 @@
 		rejectNum: 0,
 		examiningNum: 0,
 		status: 0,
-		inspectionStatus:0
+		inspectionStatus: 0
 	})
 	const initStatus = ref(0)
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
@@ -303,22 +304,31 @@
 		// 		return consul[i].text
 		// 	}
 		// }
-		if(item.consultResultId == 0) {
+		if (item.consultResultId == 0) {
 			return '待确认'
-		}else{
+		} else {
 			return item.result
 		}
 	}
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
 				pictureName: data.originalFilename,
 				tenantId: store.tenantId
 			})
+			photoList.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
 			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
 
@@ -328,12 +338,33 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
 
 	function handleDeletedPhoto(e) {
@@ -372,10 +403,10 @@
 		// 构建查询参数字符串
 		var queryParam =
 			`param1=${encodedId}&param2=${encodeCode}&param3=${enprocessCode}&param4=${enTechnologicalProcessId}&param5=${enProcessAlias}&param6=${enIsWasteRecycling}&param7=${enIsAmend}`;
-	
+
 		// 使用模板字符串构建完整的URL
 		var navigateUrl = `/pages/drawingMenu/index?${queryParam}`;
-	
+
 		// 导航到指定页面
 		uni.navigateTo({
 			url: navigateUrl
@@ -497,10 +528,10 @@
 		});
 	}
 
-	function handleChangeInspecionStatus(e){
+	function handleChangeInspecionStatus(e) {
 		console.log(e.detail.value)
 		//没有咨询
-		if(consultations.value && consultations.value.length == 0){
+		if (consultations.value && consultations.value.length == 0) {
 			processInspecion.value.status = e.detail.value
 		}
 	}

+ 23 - 17
pages/instrumentRoomInspection/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -98,8 +101,8 @@
 	const handleOptionChecked = (data) => {
 		console.log(data)
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -115,7 +118,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -173,21 +176,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 109 - 76
pages/onSiteInspection/consultation.vue

@@ -10,11 +10,11 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName"  />
+						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
 						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
-						
+
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
@@ -25,23 +25,23 @@
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -51,8 +51,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -78,7 +79,9 @@
 	import {
 		getProductConsult
 	} from '@/api/business/processInspection.js'
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 
 	const lot = ref({});
 	const selected = ref([]);
@@ -86,21 +89,20 @@
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
 
 	// 页面生命周期函数
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 	onMounted(() => {
@@ -129,46 +131,72 @@
 	onLoad(() => {})
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
-		} = e	
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		} = e
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	lot.value.departments = value.detail.value;
+		lot.value.departments = value.detail.value;
 	}
-	
+
 
 	const handleSubmit = () => {
 		console.log(lot.value.product)
-		if (lot.value.departments ==null || (lot.value.departments !=null &&lot.value.departments.length ==0 )) {
+		if (lot.value.departments == null || (lot.value.departments != null && lot.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
 			})
 			return
 		}
-		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined ||lot.value.product.technicianId == 0 ) ) {
+		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined || lot.value.product
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -198,7 +226,7 @@
 		lastRequestTimestamp.value = currentTime;
 		store.processInspection = null;
 		var consultList = []
-		for(let i = 0;i<lot.value.departments.length;i++) {
+		for (let i = 0; i < lot.value.departments.length; i++) {
 			let consult = {}
 			consult.content = lot.value.question
 			consult.consultDepartment = lot.value.departments[i]
@@ -206,7 +234,7 @@
 			consult.technicianId = lot.value.product.technicianId
 			consultList.push(consult)
 		}
-		uni.$emit('addWasteConsultationEvent',consultList)
+		uni.$emit('addWasteConsultationEvent', consultList)
 		// lot.value = {};
 		uni.navigateBack()
 	}
@@ -216,7 +244,7 @@
 		lot.value.product.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -276,46 +304,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: center
-		}
-		
-		.segment {
-			width: 60%;
-			background-color: rgba(213, 213, 213, 1);
-			border: 1rpx solid rgba(213, 213, 213, 1);
-			margin:8px 0;
-		}
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: center
+	}
+
+	.segment {
+		width: 60%;
+		background-color: rgba(213, 213, 213, 1);
+		border: 1rpx solid rgba(213, 213, 213, 1);
+		margin: 8px 0;
+	}
+
 	.checkbox-item {
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  margin-bottom: 10px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
 	}
-	
+
 	.checkbox {
-	  margin-right: 10px;
+		margin-right: 10px;
 	}
+
 	// .uni-file-picker__container{
 	// }
 	.my-files {
 		display: flex;
 		justify-content: center;
-		
+
 		:deep(.uni-file-picker__container) {
-		flex-direction: row;
-			
+			flex-direction: row;
+
 		}
 	}
-.box-bg {
+
+	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -326,11 +358,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -338,6 +370,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;

+ 53 - 20
pages/onSiteInspection/form.vue

@@ -117,8 +117,9 @@
 		<view class="daywork-container">
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">巡检状态</view>
-				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;" v-model="processInspecion.inspectionStatus"
-					:localdata="range" @change="handleChangeInspecionStatus"></uni-data-checkbox>
+				<uni-data-checkbox :disabled="!editable()" style="margin-top: 20rpx;"
+					v-model="processInspecion.inspectionStatus" :localdata="range"
+					@change="handleChangeInspecionStatus"></uni-data-checkbox>
 			</view>
 			<view class="result uni-row">
 				<view class="label" style="margin-top: 20rpx; margin-right: 10rpx;">放行状态</view>
@@ -130,8 +131,9 @@
 					<text class="label">是否移交仪器室</text><text>&nbsp;否</text>
 					<!-- <switch class="switch" @change="switchChange" style="transform:scale(0.7);margin-top: -16rpx;"
 						color="rgba(255,85,85,1)" /> -->
-					<zero-switch v-model="processInspecion.flag" @change="switchChange" active-color="rgba(103, 195, 55, 1.0)"
-						:size="18" style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
+					<zero-switch v-model="processInspecion.flag" @change="switchChange"
+						active-color="rgba(103, 195, 55, 1.0)" :size="18"
+						style="transform:scale(0.9);margin-top: -9rpx;"></zero-switch>
 					<text>是</text>
 				</view>
 				<view v-else class="list-title uni-row" style="margin-top: 16rpx;">
@@ -212,7 +214,7 @@
 		rejectNum: 0,
 		examiningNum: 0,
 		status: 0,
-		inspectionStatus:0
+		inspectionStatus: 0
 	})
 	const initStatus = ref(0)
 	const photoList = ref([])
@@ -282,7 +284,7 @@
 	}
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
@@ -293,7 +295,12 @@
 				url: data.fileName,
 				pictureName: data.originalFilename
 			})
-			console.log(photoList.value)
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
 
@@ -303,17 +310,43 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// uni.showLoading({
+		// 	title: uploadPromises,
+		// 	mask: true
+		// });
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
-	function handleChangeInspecionStatus(e){
+
+	function handleChangeInspecionStatus(e) {
 		console.log(e.detail.value)
 		//没有咨询
-		if(consultations.value && consultations.value.length == 0){
+		if (consultations.value && consultations.value.length == 0) {
 			processInspecion.value.status = e.detail.value
 		}
 	}
@@ -454,9 +487,9 @@
 		// 		return consul[i].text
 		// 	}
 		// }
-		if(item.consultResultId == 0) {
+		if (item.consultResultId == 0) {
 			return '待确认'
-		}else{
+		} else {
 			return item.result
 		}
 	}
@@ -473,10 +506,10 @@
 		// 构建查询参数字符串
 		var queryParam =
 			`param1=${encodedId}&param2=${encodeCode}&param3=${enprocessCode}&param4=${enTechnologicalProcessId}&param5=${enProcessAlias}&param6=${enIsWasteRecycling}&param7=${enIsAmend}`;
-	
+
 		// 使用模板字符串构建完整的URL
 		var navigateUrl = `/pages/drawingMenu/index?${queryParam}`;
-	
+
 		// 导航到指定页面
 		uni.navigateTo({
 			url: navigateUrl
@@ -571,7 +604,7 @@
 		processInspecion.value.inspectionCarrierId = processInspecion.value.lot.inspectionCarrierId
 		processInspecion.value.inspectionCarrierCode = processInspecion.value.lot.inspectionCarrierCode
 		processInspecion.value.processInspectionPictureList = selectedPhotos.value
-		console.log(photoList.value)
+		console.log(selectedPhotos.value)
 		console.log(processInspecion.value)
 		if (processInspecion.value.flag) {
 			//打开选择仪器室的弹窗
@@ -660,8 +693,8 @@
 			item.status = 0
 		})
 		consultations.value = consultations.value.concat(info)
-		isEventTriggered.value = true;// 更新标志位状态
-		 processInspecion.value.status = 0
+		isEventTriggered.value = true; // 更新标志位状态
+		processInspecion.value.status = 0
 	}
 
 	/***************************** 定义了一些事件 *****************************/

+ 23 - 17
pages/onSiteInspection/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -98,8 +101,8 @@
 	const handleOptionChecked = (data) => {
 		console.log(data)
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -115,7 +118,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -173,21 +176,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 108 - 75
pages/outsourcedInspection/consultation.vue

@@ -10,11 +10,11 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName"  />
+						<input class="nav-bar-input" type="text" disabled="true" v-model="lot.product.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
 						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
-						
+
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
@@ -25,23 +25,23 @@
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -51,8 +51,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -78,7 +79,9 @@
 	import {
 		getProductConsult
 	} from '@/api/business/processInspection.js'
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 
 	const lot = ref({});
 	const selected = ref([]);
@@ -86,21 +89,20 @@
 	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
 
 	// 页面生命周期函数
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 	onMounted(() => {
@@ -129,45 +131,71 @@
 	onLoad(() => {})
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
-		} = e	
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		} = e
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	lot.value.departments = value.detail.value;
+		lot.value.departments = value.detail.value;
 	}
-	
+
 
 	const handleSubmit = () => {
-		if (lot.value.departments ==null || (lot.value.departments !=null &&lot.value.departments.length ==0 )) {
+		if (lot.value.departments == null || (lot.value.departments != null && lot.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
 			})
 			return
 		}
-		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined ||lot.value.product.technicianId == 0 ) ) {
+		if (lot.value.departments.includes(0) && (lot.value.product.technicianId == undefined || lot.value.product
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -197,7 +225,7 @@
 		lastRequestTimestamp.value = currentTime;
 		store.processInspection = null;
 		var consultList = []
-		for(let i = 0;i<lot.value.departments.length;i++) {
+		for (let i = 0; i < lot.value.departments.length; i++) {
 			let consult = {}
 			consult.content = lot.value.question
 			consult.consultDepartment = lot.value.departments[i]
@@ -205,7 +233,7 @@
 			consult.technicianId = lot.value.product.technicianId
 			consultList.push(consult)
 		}
-		uni.$emit('wasteConsultationEvent',consultList)
+		uni.$emit('wasteConsultationEvent', consultList)
 		lot.value = {};
 		uni.navigateBack()
 	}
@@ -215,7 +243,7 @@
 		lot.value.product.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -275,46 +303,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
-			display: flex;
-			flex-direction: row;
-			align-items: center;
-			justify-content: center
-		}
-		
-		.segment {
-			width: 60%;
-			background-color: rgba(213, 213, 213, 1);
-			border: 1rpx solid rgba(213, 213, 213, 1);
-			margin:8px 0;
-		}
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		justify-content: center
+	}
+
+	.segment {
+		width: 60%;
+		background-color: rgba(213, 213, 213, 1);
+		border: 1rpx solid rgba(213, 213, 213, 1);
+		margin: 8px 0;
+	}
+
 	.checkbox-item {
-	  display: flex;
-	  justify-content: space-between;
-	  align-items: center;
-	  margin-bottom: 10px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
 	}
-	
+
 	.checkbox {
-	  margin-right: 10px;
+		margin-right: 10px;
 	}
+
 	// .uni-file-picker__container{
 	// }
 	.my-files {
 		display: flex;
 		justify-content: center;
-		
+
 		:deep(.uni-file-picker__container) {
-		flex-direction: row;
-			
+			flex-direction: row;
+
 		}
 	}
+
 	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -325,11 +357,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -337,6 +369,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;

+ 35 - 5
pages/outsourcedInspection/form.vue

@@ -462,14 +462,23 @@
 	}
 
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res => {
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
 			selectedPhotos.value.push({
 				url: data.fileName,
 				pictureName: data.originalFilename,
 				tenantId: store.tenantId
 			})
+			photoList.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
 			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
 		})
 	}
 
@@ -479,12 +488,33 @@
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item, index) => {
-			upLoadImageHandler({
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// tempFiles.forEach((item, index) => {
+		// 	upLoadImageHandler({
+		// 		filePath: tempFilePaths[index],
+		// 		name: item.name
+		// 	})
+		// })
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
 				filePath: tempFilePaths[index],
 				name: item.name
-			})
-		})
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
 
 	function handleDeletedPhoto(e) {

+ 23 - 17
pages/outsourcedInspection/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -98,8 +101,8 @@
 	const handleOptionChecked = (data) => {
 		console.log(data)
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -115,7 +118,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -173,21 +176,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 24 - 23
pages/outsourcedReturnCheck/carriers.vue

@@ -19,7 +19,7 @@
 					<text class="label right">{{ form.carrierCount }}</text>
 				</view>
 			</view>
-			<view class="vehicleList uni-row" style="padding: 0 2px;">
+			<view class="vehicleList uni-row" style="padding: 0 2px; margin-bottom: 30px;">
 				<view v-for="(ditem, index) in details"
 					style="border-bottom-style: solid; border-bottom-width: 1px;width: 100%; flex-direction: row; flex-wrap: wrap;">
 					<view :class="'vehicleNo uni-row' +(checkItem(item) ? ' success' :'')"
@@ -80,7 +80,7 @@
 	const showConfirm = ref(false)
 	const inputDialog = ref(null)
 	const showQrCodeReader = ref(false);
-	
+
 	onMounted(() => {
 		const instance = getCurrentInstance().proxy
 		const eventChannel = instance.getOpenerEventChannel();
@@ -238,20 +238,20 @@
 			}
 		}
 	*/
-   //H5扫码器回调
-   function onDecodeHandler(data) {
-   	showQrCodeReader.value = false;
-		  let vehicleObj = {
+	//H5扫码器回调
+	function onDecodeHandler(data) {
+		showQrCodeReader.value = false;
+		let vehicleObj = {
 			carrierCode: data
-		  };
-		  if (!vehicleObj.carrierCode || vehicleObj.carrierCode == "") {
+		};
+		if (!vehicleObj.carrierCode || vehicleObj.carrierCode == "") {
 			message.value = '请扫载具码'
 			inputDialog.value.open()
 			return;
-		  }
-		  let checked = false
-		  let allChecked = true
-		  details.value.forEach(l => {
+		}
+		let checked = false
+		let allChecked = true
+		details.value.forEach(l => {
 			checked = checked || (l.carriers.findIndex(e => e.code === vehicleObj.carrierCode) >=
 				0)
 			if (checked) {
@@ -259,8 +259,8 @@
 			}
 			allChecked = allChecked && l.carriers.every(t => checkedCarriers.value.includes(t
 				.code))
-		  })
-		  if (checked) {
+		})
+		if (checked) {
 			uni.showToast({
 				icon: 'none',
 				title: '已扫箱' + vehicleObj.carrierCode
@@ -275,18 +275,19 @@
 			} else {
 				debounce(handleScanCode, 700)
 			}
-		  } else {
+		} else {
 			message.value = '该箱号' + vehicleObj.carrierCode + '不在此发出单'
 			inputDialog.value.open()
 			return
-		  }
-   }
-   
-   
-   //H5扫码器关闭
-   function qrReaderClose() {
-   	showQrCodeReader.value = false;
-   }
+		}
+	}
+
+
+	//H5扫码器关闭
+	function qrReaderClose() {
+		showQrCodeReader.value = false;
+	}
+
 	function handleScanCode() {
 		showQrCodeReader.value = true;
 		// 引入原生插件

+ 299 - 291
pages/queryLotInfo/index.vue

@@ -1,324 +1,329 @@
 <template>
 	<view style="height: 100%;">
-	<view class="tab-container">
-		<view :class="['tab-item', isActiveId === 1 ? 'active': '']" @click="handleClickTab(1)">批次信息</view>
-		<view :class="['tab-item', isActiveId === 2 ? 'active': '']" @click="handleClickTab(2)">领料信息</view>
-		<view :class="['tab-item', isActiveId === 3 ? 'active': '']" @click="handleClickTab(3)">历史报工</view>
-		<view :class="['tab-item', isActiveId === 4 ? 'active': '']" @click="handleClickTab(4)">检查信息</view>
-		<view :class="['tab-item', isActiveId === 5 ? 'active': '']" @click="handleClickTab(5)">分选信息</view>
-	</view>
-	<scroll-view class="scroll-container" scroll-y scroll-with-animation :scroll-into-view="scrollToId"
-		:scroll-top="scrollTop" @scrolltoupper="handleScrollToUpper" @scrolltolower="handleScrollToLower"
-		@scroll="handleScroll">
-		<!-- 批次信息 -->
-		<view id="item1" class="scroll-item">
-			<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">批次信息</text>
-			</view>
-			<view v-if="lotData==null" class="no-date">
-				<text>暂无数据</text>
-			</view>
-			<view v-else>
-				<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label">批次号:</text>
-					<text class="label right" style="font-size: 30rpx;color: black;">{{ lotData['lotCode'] }}</text>
-				</view>
-				<view class="item-info uni-row"> <text class="label">产品描述:</text>
-					<text class="label right ">{{ lotData['productDescription'] }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">箱号:</text>
-					<text class="label right">{{ lotData['carrierName']}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">投产量:</text>
-					<text
-						class="label right">{{ lotData['prevProcess'] ? lotData['processQualifiedNum'] : lotData['productionQuantity']}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">合格数量:</text>
-					<text class="label right">{{ lotData['totalQuantityNum']}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">上道工序:</text>
-					<text
-						class="label right">{{ lotData.prevProcess && lotData['prevProcess'] != "" ? lotData['prevProcess'].processAlias : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">当前工序:</text>
-					<view class="label right uni-row">
+		<view class="tab-container">
+			<view :class="['tab-item', isActiveId === 1 ? 'active': '']" @click="handleClickTab(1)">批次信息</view>
+			<view :class="['tab-item', isActiveId === 2 ? 'active': '']" @click="handleClickTab(2)">领料信息</view>
+			<view :class="['tab-item', isActiveId === 3 ? 'active': '']" @click="handleClickTab(3)">历史报工</view>
+			<view :class="['tab-item', isActiveId === 4 ? 'active': '']" @click="handleClickTab(4)">检查信息</view>
+			<view :class="['tab-item', isActiveId === 5 ? 'active': '']" @click="handleClickTab(5)">分选信息</view>
+		</view>
+		<scroll-view class="scroll-container" scroll-y scroll-with-animation :scroll-into-view="scrollToId"
+			:scroll-top="scrollTop" @scrolltoupper="handleScrollToUpper" @scrolltolower="handleScrollToLower"
+			@scroll="handleScroll">
+			<!-- 批次信息 -->
+			<view id="item1" class="scroll-item">
+				<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">批次信息</text>
+				</view>
+				<view v-if="lotData==null" class="no-date">
+					<text>暂无数据</text>
+				</view>
+				<view v-else>
+					<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label">批次号:</text>
+						<text class="label right" style="font-size: 30rpx;color: black;">{{ lotData['lotCode'] }}</text>
+					</view>
+					<view class="item-info uni-row"> <text class="label">产品描述:</text>
+						<text class="label right ">{{ lotData['productDescription'] }}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">箱号:</text>
+						<text class="label right">{{ lotData['carrierName']}}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">投产量:</text>
 						<text
-							class="label right">{{ lotData.currentProcess && lotData['currentProcess'] != "" ? lotData['currentProcess'].processAlias : '-'}}</text>
-						(<view style="color:  #1684fc;" @click.stop="handleClickProcessList(lotData)">&nbsp;工艺列表&nbsp;
-						</view>)
+							class="label right">{{ lotData['prevProcess'] ? lotData['processQualifiedNum'] : lotData['productionQuantity']}}</text>
 					</view>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">下道工序:</text>
-					<text
-						class="label right">{{ lotData.nextProcess && lotData['nextProcess'] != "" ? lotData['nextProcess'].processAlias : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">当前设备:</text>
-					<text
-						class="label right">{{ lotData['currentEquipmentCode'] && lotData['currentEquipmentCode'] != "" ? lotData['currentEquipmentCode'] : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">当前操作者:</text>
-					<text class="label right">{{ lotData['currentNickName']}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">批次状态:</text>
-					<text
-						class="label right">{{ lotData['status'] == 1 ?"进行中":lotData['status'] == 3?"周转中":lotData['status'] == 2?"待领取":lotData['status'] == 4?"已送达":lotData['status'] == 5?"已完成":"未开始"}}</text>
-				</view>
-			</view>
-		</view>
-		<!-- 领料信息 -->
-		<view id="item2" class="scroll-item">
-			<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">领料信息</text></view>
-			<view v-if="furnaceData==null" class="no-date">
-				<text>暂无数据</text>
-			</view>
-			<view v-else>
-				<view class="item-info uni-row" style="margin-top: 16rpx;">
-					<text class="label">炉号</text>
-					<text id="manufacturer"
-						class="label right">{{furnaceData['furnaceNumber'] ? furnaceData['furnaceNumber'] : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">计划单号</text>
-					<text id="manufacturer"
-						class="label right">{{ furnaceData['productionPlanNo'] ? furnaceData['productionPlanNo'] : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">序号</text>
-					<text class="label right">{{ furnaceData['lineNumber'] ? furnaceData['lineNumber'] : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">厂家</text>
-					<text class="label right">{{ furnaceData['factory'] ? furnaceData['factory'] : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">牌号</text>
-					<text class="label right">{{ furnaceData['brandNumber'] ?furnaceData['brandNumber'] : '-' }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">规格</text>
-					<text class="label right">{{ furnaceData['spec'] ?furnaceData['spec'] : '-' }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">形状</text>
-					<text class="label right">{{ furnaceData['shape'] ?furnaceData['shape'] : '-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">材料直径</text>
-					<text class="label right">{{ furnaceData['diameter'] ? furnaceData['diameter'] : '-' }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">原料编码</text>
-					<text
-						class="label right">{{ furnaceData['rawMaterialCode'] ? furnaceData['rawMaterialCode'] : '-' }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">来料日期</text>
-					<text
-						class="label right">{{ furnaceData['incomingDate'] ? furnaceData['incomingDate'] : '-' }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">技术要求1</text>
-					<text
-						class="label right">{{ furnaceData['firstTechnicalRequirement'] ? furnaceData['firstTechnicalRequirement'] : '-' }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">技术要求2</text>
-					<text
-						class="label right">{{ furnaceData['secondTechnicalRequirement'] ?furnaceData['secondTechnicalRequirement'] : '-' }}</text>
-				</view>
-			</view>
-		</view>
-		<!-- 历史报工 -->
-		<view id="item3" class="scroll-item">
-			<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">历史报工</text></view>
-			<view v-if="historyData.length == 0" class="no-date">
-				<text>暂无数据</text>
-			</view>
-			<view v-for="(item, index) in historyData" :key="index" class="list-item" id="historyData">
-				<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">工序:</text>
-					<text class="label right">{{ item['processAlias'] }}</text>
-				</view>
-				<view class="item-info uni-row"> <text class="label">投产量:</text>
-					<text class="label right ">{{ item['prodNum'] }}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">合格数量:</text>
-					<text class="label right">{{ item['qualifiedNum']}}</text>
-				</view>
-				<view v-for="(info, index) in item.rejectList" :key="index">
 					<view class="item-info uni-row">
-						<text class="label">废品信息:</text>
-						<text class="label right">{{ info['reason']!=""?info['reason']:'-'}}</text>
+						<text class="label">合格数量:</text>
+						<text class="label right">{{ lotData['totalQuantityNum']}}</text>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">废品数量:</text>
-						<text class="label right">{{ info['rejectNum']}}</text>
+						<text class="label">上道工序:</text>
+						<text
+							class="label right">{{ lotData.prevProcess && lotData['prevProcess'] != "" ? lotData['prevProcess'].processAlias : '-'}}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">当前工序:</text>
+						<view class="label right uni-row">
+							<text
+								class="label right">{{ lotData.currentProcess && lotData['currentProcess'] != "" ? lotData['currentProcess'].processAlias : '-'}}</text>
+							(<view style="color:  #1684fc;" @click.stop="handleClickProcessList(lotData)">
+								&nbsp;工艺列表&nbsp;
+							</view>)
+						</view>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">下道工序:</text>
+						<text
+							class="label right">{{ lotData.nextProcess && lotData['nextProcess'] != "" ? lotData['nextProcess'].processAlias : '-'}}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">当前设备:</text>
+						<text
+							class="label right">{{ lotData['currentEquipmentCode'] && lotData['currentEquipmentCode'] != "" ? lotData['currentEquipmentCode'] : '-'}}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">当前操作者:</text>
+						<text class="label right">{{ lotData['currentNickName']}}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">批次状态:</text>
+						<text
+							class="label right">{{ lotData['status'] == 1 ?"进行中":lotData['status'] == 3?"周转中":lotData['status'] == 2?"待领取":lotData['status'] == 4?"已送达":lotData['status'] == 5?"已完成":"未开始"}}</text>
 					</view>
 				</view>
-				<view class="item-info uni-row">
-					<text class="label">设备:</text>
-					<text class="label right">{{ item['equipmentDetailCode'] ?item['equipmentDetailCode']:'-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">操作者:</text>
-					<text class="label right">{{ item['nickName']}}</text>
-				</view>
-				<view v-if="index!=historyData.length-1" class='middle'>
-					<view class='segment'></view>
-					<view class='segment'></view>
-				</view>
-			</view>
-		</view>
-		<!-- 检查信息 -->
-		<view id="item4" class="scroll-item">
-			<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">检查信息</text></view>
-			<view v-if="inspectionData.length == 0" class="no-date">
-				<text>暂无数据</text>
 			</view>
-			<view v-else v-for="(item, index) in inspectionData" :key="index" class="list-item" id="inspectionData">
-				<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">检查类型:</text>
-					<text class="label right">{{ getType(item.type) }}</text>
-				</view>
-				<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">工序:</text>
-					<text class="label right">{{ item['processAlias'] }}</text>
-				</view>
-				<view class="item-info uni-row"> <text class="label">检查员:</text>
-					<text class="label right ">{{ item['reviewerName'] }}</text>
-				</view>
-				<view v-if="item.processInspectionDetails && item.processInspectionDetails.length>0"
-					v-for="(info, index) in item.processInspectionDetails" :key="index">
+			<!-- 领料信息 -->
+			<view id="item2" class="scroll-item">
+				<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">领料信息</text></view>
+				<view v-if="furnaceData==null" class="no-date">
+					<text>暂无数据</text>
+				</view>
+				<view v-else>
+					<view class="item-info uni-row" style="margin-top: 16rpx;">
+						<text class="label">炉号</text>
+						<text id="manufacturer"
+							class="label right">{{furnaceData['furnaceNumber'] ? furnaceData['furnaceNumber'] : '-'}}</text>
+					</view>
 					<view class="item-info uni-row">
-						<text class="label">检测项目:</text>
-						<text class="label right">{{ info['checkStandard']}}</text>
+						<text class="label">计划单号</text>
+						<text id="manufacturer"
+							class="label right">{{ furnaceData['productionPlanNo'] ? furnaceData['productionPlanNo'] : '-'}}</text>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">检测结果:</text>
-						<text class="label right">{{ info['checkResult'] !=""?info['checkResult'] :'-'}}</text>
+						<text class="label">序号</text>
+						<text
+							class="label right">{{ furnaceData['lineNumber'] ? furnaceData['lineNumber'] : '-'}}</text>
 					</view>
-					<view v-if="item.type =='outsourcedInspection '" class="item-info uni-row">
-						<text class="label">废品数量:</text>
-						<text class="label right">{{ info['rejectNum']}}</text>
+					<view class="item-info uni-row">
+						<text class="label">厂家</text>
+						<text class="label right">{{ furnaceData['factory'] ? furnaceData['factory'] : '-'}}</text>
 					</view>
-				</view>
-				<!-- 拍照上传部分 -->
-				<view v-if="item.processInspectionPictureList && item.processInspectionPictureList.length>0"
-					class="item-info uni-row">
-					<text class="label">拍照上传:</text>
-					<text class=" label right">
-						<uni-file-picker v-model="item.processInspectionPictureList" :readonly="true"
-							return-type="array" :image-styles="imageStyles" file-mediatype="image"
-							class="my-files"></uni-file-picker>
-					</text>
-				</view>
-
-				<view v-for="(data, index) in item.dayworkItemConsults" :key="index">
 					<view class="item-info uni-row">
-						<text class="label">咨询信息:</text>
-						<text class="label right">{{ data['content']}}</text>
+						<text class="label">牌号</text>
+						<text
+							class="label right">{{ furnaceData['brandNumber'] ?furnaceData['brandNumber'] : '-' }}</text>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">咨询结果:</text>
-						<text class="label right">{{ data['status'] == 0?"未回复":data['result']}}</text>
+						<text class="label">规格</text>
+						<text class="label right">{{ furnaceData['spec'] ?furnaceData['spec'] : '-' }}</text>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">技术人员:</text>
-						<text class="label right">{{ data['technicianName']}}</text>
+						<text class="label">形状</text>
+						<text class="label right">{{ furnaceData['shape'] ?furnaceData['shape'] : '-'}}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">材料直径</text>
+						<text class="label right">{{ furnaceData['diameter'] ? furnaceData['diameter'] : '-' }}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">原料编码</text>
+						<text
+							class="label right">{{ furnaceData['rawMaterialCode'] ? furnaceData['rawMaterialCode'] : '-' }}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">来料日期</text>
+						<text
+							class="label right">{{ furnaceData['incomingDate'] ? furnaceData['incomingDate'] : '-' }}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">技术要求1</text>
+						<text
+							class="label right">{{ furnaceData['firstTechnicalRequirement'] ? furnaceData['firstTechnicalRequirement'] : '-' }}</text>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">技术要求2</text>
+						<text
+							class="label right">{{ furnaceData['secondTechnicalRequirement'] ?furnaceData['secondTechnicalRequirement'] : '-' }}</text>
 					</view>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">备注:</text>
-					<text class="label right">{{ item['remark'] !="" ?item['remark']:'-'}}</text>
-				</view>
-				<view class="item-info uni-row">
-					<text class="label">检查结果:</text>
-					<text class="label right">{{ item['status'] == 0?"待确认":item['status'] == 1?"合格":"不合格"}}</text>
-				</view>
-				<view v-if="index!=inspectionData.length -1" class='middle'>
-					<view class='segment'></view>
-					<view class='segment'></view>
 				</view>
 			</view>
-		</view>
-		<!-- 分选信息 -->
-		<view id="item5" class="scroll-item">
-			<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">分选信息</text></view>
-			<view v-if="sortData.length == 0" class="no-date">
-				<text>暂无数据</text>
-			</view>
-			<view v-else v-for="(item, index) in sortData" :key="index" class="list-item" id="sortData">
-
-				<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">工序:</text>
-					<text class="label right">{{ item['processAlias'] }}</text>
-				</view>
-				<view class="item-info uni-row"> <text class="label">分选人员:</text>
-					<text class="label right ">{{ item['nickName'] }}</text>
-				</view>
-				<view v-for="(info, index) in item.rejectList" :key="index">
+			<!-- 历史报工 -->
+			<view id="item3" class="scroll-item">
+				<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">历史报工</text></view>
+				<view v-if="historyData.length == 0" class="no-date">
+					<text>暂无数据</text>
+				</view>
+				<view v-for="(item, index) in historyData" :key="index" class="list-item" id="historyData">
+					<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">工序:</text>
+						<text class="label right">{{ item['processAlias'] }}</text>
+					</view>
+					<view class="item-info uni-row"> <text class="label">投产量:</text>
+						<text class="label right ">{{ item['prodNum'] }}</text>
+					</view>
 					<view class="item-info uni-row">
-						<text class="label">检测项目:</text>
-						<text class="label right">{{ info['checkStandard']}}</text>
+						<text class="label">合格数量:</text>
+						<text class="label right">{{ item['qualifiedNum']}}</text>
+					</view>
+					<view v-for="(info, index) in item.rejectList" :key="index">
+						<view class="item-info uni-row">
+							<text class="label">废品信息:</text>
+							<text class="label right">{{ info['reason']!=""?info['reason']:'-'}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">废品数量:</text>
+							<text class="label right">{{ info['rejectNum']}}</text>
+						</view>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">检测结果:</text>
-						<text class="label right">{{ info['reason'] !=""?info['reason'] :'-'}}</text>
+						<text class="label">设备:</text>
+						<text
+							class="label right">{{ item['equipmentDetailCode'] ?item['equipmentDetailCode']:'-'}}</text>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">废品数量:</text>
-						<text class="label right">{{ info['rejectNum']}}</text>
+						<text class="label">操作者:</text>
+						<text class="label right">{{ item['nickName']}}</text>
+					</view>
+					<view v-if="index!=historyData.length-1" class='middle'>
+						<view class='segment'></view>
+						<view class='segment'></view>
 					</view>
 				</view>
-				<view v-for="(data, index) in item.consults" :key="index">
-					<view class="item-info uni-row">
-						<text class="label">咨询信息:</text>
-						<text class="label right">{{ data['content']}}</text>
+			</view>
+			<!-- 检查信息 -->
+			<view id="item4" class="scroll-item">
+				<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">检查信息</text></view>
+				<view v-if="inspectionData.length == 0" class="no-date">
+					<text>暂无数据</text>
+				</view>
+				<view v-else v-for="(item, index) in inspectionData" :key="index" class="list-item" id="inspectionData">
+					<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">检查类型:</text>
+						<text class="label right">{{ getType(item.type) }}</text>
+					</view>
+					<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">工序:</text>
+						<text class="label right">{{ item['processAlias'] }}</text>
+					</view>
+					<view class="item-info uni-row"> <text class="label">检查员:</text>
+						<text class="label right ">{{ item['reviewerName'] }}</text>
+					</view>
+					<view v-if="item.processInspectionDetails && item.processInspectionDetails.length>0"
+						v-for="(info, index) in item.processInspectionDetails" :key="index">
+						<view class="item-info uni-row">
+							<text class="label">检测项目:</text>
+							<text class="label right">{{ info['checkStandard']}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">检测结果:</text>
+							<text class="label right">{{ info['checkResult'] !=""?info['checkResult'] :'-'}}</text>
+						</view>
+						<view v-if="item.type =='outsourcedInspection '" class="item-info uni-row">
+							<text class="label">废品数量:</text>
+							<text class="label right">{{ info['rejectNum']}}</text>
+						</view>
+					</view>
+					<!-- 拍照上传部分 -->
+					<view v-if="item.processInspectionPictureList && item.processInspectionPictureList.length>0"
+						class="item-info uni-row">
+						<text class="label">拍照上传:</text>
+						<text class=" label right">
+							<uni-file-picker v-model="item.processInspectionPictureList" :readonly="true"
+								return-type="array" :image-styles="imageStyles" file-mediatype="image"
+								class="my-files"></uni-file-picker>
+						</text>
+					</view>
+
+					<view v-for="(data, index) in item.dayworkItemConsults" :key="index">
+						<view class="item-info uni-row">
+							<text class="label">咨询信息:</text>
+							<text class="label right">{{ data['content']}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">咨询结果:</text>
+							<text class="label right">{{ data['status'] == 0?"未回复":data['result']}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">技术人员:</text>
+							<text class="label right">{{ data['technicianName']}}</text>
+						</view>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">咨询结果:</text>
-						<text class="label right">{{ data['status'] == 0?"未回复":data['result']}}</text>
+						<text class="label">备注:</text>
+						<text class="label right">{{ item['remark'] !="" ?item['remark']:'-'}}</text>
 					</view>
 					<view class="item-info uni-row">
-						<text class="label">技术人员:</text>
-						<text class="label right">{{ data['technicianName']}}</text>
+						<text class="label">检查结果:</text>
+						<text class="label right">{{ item['status'] == 0?"待确认":item['status'] == 1?"合格":"不合格"}}</text>
+					</view>
+					<view v-if="index!=inspectionData.length -1" class='middle'>
+						<view class='segment'></view>
+						<view class='segment'></view>
 					</view>
 				</view>
-				<view class="item-info uni-row">
-					<text class="label">备注:</text>
-					<text class="label right">{{ item['remark'] !="" ?item['remark']:'-'}}</text>
+			</view>
+			<!-- 分选信息 -->
+			<view id="item5" class="scroll-item">
+				<view> <text style="font-size: 32rpx;display: flex;justify-content: center;">分选信息</text></view>
+				<view v-if="sortData.length == 0" class="no-date">
+					<text>暂无数据</text>
 				</view>
-				<view v-if="index!=sortData.length -1" class='middle'>
-					<view class='segment'></view>
-					<view class='segment'></view>
+				<view v-else v-for="(item, index) in sortData" :key="index" class="list-item" id="sortData">
+
+					<view class="item-info uni-row" style="margin-top: 16rpx;"> <text class="label ">工序:</text>
+						<text class="label right">{{ item['processAlias'] }}</text>
+					</view>
+					<view class="item-info uni-row"> <text class="label">分选人员:</text>
+						<text class="label right ">{{ item['nickName'] }}</text>
+					</view>
+					<view v-for="(info, index) in item.rejectList" :key="index">
+						<view class="item-info uni-row">
+							<text class="label">检测项目:</text>
+							<text class="label right">{{ info['checkStandard']}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">检测结果:</text>
+							<text class="label right">{{ info['reason'] !=""?info['reason'] :'-'}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">废品数量:</text>
+							<text class="label right">{{ info['rejectNum']}}</text>
+						</view>
+					</view>
+					<view v-for="(data, index) in item.consults" :key="index">
+						<view class="item-info uni-row">
+							<text class="label">咨询信息:</text>
+							<text class="label right">{{ data['content']}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">咨询结果:</text>
+							<text class="label right">{{ data['status'] == 0?"未回复":data['result']}}</text>
+						</view>
+						<view class="item-info uni-row">
+							<text class="label">技术人员:</text>
+							<text class="label right">{{ data['technicianName']}}</text>
+						</view>
+					</view>
+					<view class="item-info uni-row">
+						<text class="label">备注:</text>
+						<text class="label right">{{ item['remark'] !="" ?item['remark']:'-'}}</text>
+					</view>
+					<view v-if="index!=sortData.length -1" class='middle'>
+						<view class='segment'></view>
+						<view class='segment'></view>
+					</view>
 				</view>
 			</view>
-		</view>
-		<uni-drawer ref="showRight" mode="right" :mask-click="true">
+
+		</scroll-view>
+		<uni-drawer ref="showRight" mode="right" :mask-click="true" style="height: 100%;">
 			<view style="text-align: center; font-size: 48rpx; padding: 48rpx 0 24rpx 0;">工艺列表</view>
 			<view style="font-size: 24rpx;text-align: center;color: red; margin-bottom: 16rpx;">
 				蓝色工序为当前工序
 			</view>
-			<scroll-view scroll-y="true" style="height: 82%;" @touchmove.stop>
+			<scroll-view scroll-y="true" style="height: 83%;" @touchmove.stop>
 				<view v-for="(item,index) in curProcessAfte" :key="index"
 					style="padding: 8rpx 5% 8rpx 14%; border-top: 1px solid #cccccc">
 					<text :style="{ color: showStatusColor(item) }">{{ index + 1 }}.{{item.processAlias}}</text>
 				</view>
 			</scroll-view>
 		</uni-drawer>
-	</scroll-view>
-	<!-- 	<view class="bottom-btn-container uni-row">
+		<!-- 	<view class="bottom-btn-container uni-row">
 		<button class="bottom-btn" @click="init()">扫码查询</button>
 	</view>
 	<dialog-selectLot ref="selectLotDialog" @submit="handleDoIt" /> -->
 
-	<view class="bottom-btn-container uni-row">
-		<button class="bottom-btn" @click="init()">扫码查询</button>
-	</view>
+		<view class="bottom-btn-container uni-row">
+			<button class="bottom-btn" @click="init()">扫码查询</button>
+		</view>
 	</view>
 	<dialog-selectLot ref="selectLotDialog" @submit="handleDoIt" />
 	<QrScanner v-if="showQrCodeReader" @decode="onDecodeHandler" @close="qrReaderClose" />
@@ -647,12 +652,14 @@
 	// 	isActiveId.value = val
 	// }
 	function handleClickTab(id) {
-	  isActiveId.value = id;
-	  const element = document.getElementById(`item${id}`);
-	  console.log(element)
-	  if (element) {
-	    element.scrollIntoView({ behavior: 'smooth' });
-	  }
+		isActiveId.value = id;
+		const element = document.getElementById(`item${id}`);
+		console.log(element)
+		if (element) {
+			element.scrollIntoView({
+				behavior: 'smooth'
+			});
+		}
 	}
 	const handleScrollToUpper = () => {
 		isActiveId.value = 1
@@ -674,16 +681,17 @@
 
 <style lang="scss">
 	.tab-container {
-	// display: flex;
-	// flex-direction: row;
-	// height: 32px;
-	position: fixed;
-	top: 0;
-	height: 32px;
-	display: flex;
-	flex-direction: row;
-	margin-top: 40px;
-	width: 100%;
+		// display: flex;
+		// flex-direction: row;
+		// height: 32px;
+		position: fixed;
+		top: 0;
+		height: 32px;
+		display: flex;
+		flex-direction: row;
+		margin-top: 40px;
+		width: 100%;
+
 		.tab-item {
 			display: flex;
 			flex-direction: row;
@@ -696,12 +704,12 @@
 	}
 
 	.scroll-container {
-	display: block;
-	padding-bottom: 60px;
-	height:80%;
-	background-color: #f5f5f5;
-	position: fixed;
-	top:72px;
+		display: block;
+		padding-bottom: 60px;
+		height: 80%;
+		background-color: #f5f5f5;
+		position: fixed;
+		top: 72px;
 	}
 
 	.tab-item.active {
@@ -798,7 +806,7 @@
 		align-items: center;
 		background-color: #fff;
 		justify-content: space-evenly;
-	
+
 		.bottom-btn {
 			flex: 1;
 			font-size: 28rpx;

+ 35 - 36
pages/sortProductionPlan/details.vue

@@ -10,9 +10,8 @@
 		<view v-if="listData.length == 0" style="color: #999;margin:90% auto;height: 90%;">
 			<text>暂无周转到该工段批次</text>
 		</view>
-		<view class="uni-column" v-else style="overflow: scroll;margin-top: 65px;" >
-			<view v-for="(item, index) in listData" :key="index"
-				class="list-item">
+		<view class="uni-column" v-else style="overflow: scroll;margin-top: 65px;">
+			<view v-for="(item, index) in listData" :key="index" class="list-item">
 				<view class="title-container uni-row">
 					<view class="title uni-row">
 						<text class="label">批次号</text>
@@ -25,7 +24,7 @@
 				</view>
 				<view class="item-info uni-row">
 					<text class="label">箱号</text>
-					<text class="label right">{{ item['carrierCode'] }}</text>
+					<text class="label right" style="word-wrap: break-word;">{{ item['carrierCode'] }}</text>
 				</view>
 				<view class="item-info uni-row">
 					<text class="label">所在区域</text>
@@ -68,35 +67,35 @@
 	function reflush() {
 		init();
 	}
-	onReachBottom(()=>{
+	onReachBottom(() => {
 		console.log(status.value)
-		if(status.value) {
-		pageNum.value += 1
-uni.showLoading({
-			title: '加载中'
-		});
-		getCarrierTotalList({
-			deptId: Number(store.curDeptDetails.deptId),
-			keywords: keywords.value,
-			userId:store.userInfo.userId,
-			pageNum:pageNum.value,
-			pageSize:pageSize.value
-		}).then(res =>{
-		 const existingIds = new Set(listData.value.map(item => item.lotCode));
-		
-		  // 过滤出那些不在 existingIds 中的项,即新数据
-		  const newRows = res.data.filter(row => !existingIds.has(row.lotCode));
-		console.log(newRows)
-		  // 如果有新数据,将其添加到 listData
-		  if (newRows.length > 0) {
-		    listData.value = listData.value.concat(newRows);
-			uni.hideLoading();
-		  } else {
-			  uni.hideLoading();
-		    // 如果没有新数据,更新状态表示没有更多数据
-		    status.value = false;
-		  }
-		})
+		if (status.value) {
+			pageNum.value += 1
+			uni.showLoading({
+				title: '加载中'
+			});
+			getCarrierTotalList({
+				deptId: Number(store.curDeptDetails.deptId),
+				keywords: keywords.value,
+				userId: store.userInfo.userId,
+				pageNum: pageNum.value,
+				pageSize: pageSize.value
+			}).then(res => {
+				const existingIds = new Set(listData.value.map(item => item.lotCode));
+
+				// 过滤出那些不在 existingIds 中的项,即新数据
+				const newRows = res.data.filter(row => !existingIds.has(row.lotCode));
+				console.log(newRows)
+				// 如果有新数据,将其添加到 listData
+				if (newRows.length > 0) {
+					listData.value = listData.value.concat(newRows);
+					uni.hideLoading();
+				} else {
+					uni.hideLoading();
+					// 如果没有新数据,更新状态表示没有更多数据
+					status.value = false;
+				}
+			})
 		}
 		console.log(status.value)
 	})
@@ -109,9 +108,9 @@ uni.showLoading({
 		getCarrierTotalList({
 			deptId: Number(store.curDeptDetails.deptId),
 			keywords: keywords.value,
-			userId:store.userInfo.userId,
-			pageNum:pageNum.value,
-			pageSize:pageSize.value
+			userId: store.userInfo.userId,
+			pageNum: pageNum.value,
+			pageSize: pageSize.value
 		}).then(res => {
 			if (res.code == 200) {
 				listData.value = res.data;
@@ -177,7 +176,7 @@ uni.showLoading({
 
 	.page-container {
 		background-color: rgba(245, 245, 245, 1);
-		 // height: 100%;
+		// height: 100%;
 	}
 
 	.list-item {

+ 110 - 78
pages/sorting/consultation.vue

@@ -14,34 +14,34 @@
 				<view class="label">技术负责人</view>
 				<view class="box-bg uni-row">
 					<view class="input-view uni-row">
-						<input class="nav-bar-input" type="text" disabled="true" v-model="dayworkItem.technicianName"  />
+						<input class="nav-bar-input" type="text" disabled="true" v-model="dayworkItem.technicianName" />
 					</view>
 					<view class="search" @click="handleSwitch">
 						<text style="padding-top: 5px;padding-right: 8px;color: aliceblue;">更换</text>
-						
+
 					</view>
 				</view>
 				<!-- <view class="value">{{ dayworkItem.technicianName }}</view> -->
 			</view>
 			<view class="info-row uni-row">
 				<view class="label">咨询部门</view>
-				<view class="value" >
-					<checkbox-group @change="checkboxChange"  style="margin-top: 16px;">
-							<view v-for="(item, index) in consulteList" :key="item.value">
-								<view class="uni-row checkbox-item" >
-									<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
-									<view class="checkboxHidden">
-										<checkbox :value="item.value" :checked="selected.includes(item.value)" color="#0000ff"
-											class="checkbox"  />
-									</view>
-								</view>
-								<view v-if="index!=consulteList.length -1" class='middle'>
-									<view class='segment'></view>
-									<view class='segment'></view>
+				<view class="value">
+					<checkbox-group @change="checkboxChange" style="margin-top: 16px;">
+						<view v-for="(item, index) in consulteList" :key="item.value">
+							<view class="uni-row checkbox-item">
+								<view style="flex-grow: 1;font-size: 16px;">{{item.label}}</view>
+								<view class="checkboxHidden">
+									<checkbox :value="item.value" :checked="selected.includes(item.value)"
+										color="#0000ff" class="checkbox" />
 								</view>
 							</view>
-						</checkbox-group>
-			</view>
+							<view v-if="index!=consulteList.length -1" class='middle'>
+								<view class='segment'></view>
+								<view class='segment'></view>
+							</view>
+						</view>
+					</checkbox-group>
+				</view>
 			</view>
 			<view class="info-row uni-column">
 				<view class="label" style="margin-bottom: 16rpx;">问题描述</view>
@@ -51,8 +51,9 @@
 			</view>
 			<view class="info-row">
 				<view class="label" style="margin-bottom: 16rpx;">照片</view>
-				<view  >
-					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files" @delete="handleDeletedPhoto" ></uni-file-picker>
+				<view>
+					<uni-file-picker :value="photoList.url" @select="select" file-mediatype="image" class="my-files"
+						@delete="handleDeletedPhoto"></uni-file-picker>
 				</view>
 			</view>
 			<view class="btn uni-row" @click.stop="handleSubmit">提交</view>
@@ -63,7 +64,7 @@
 <script setup>
 	import {
 		ref,
-		computed 
+		computed
 	} from 'vue'
 	import {
 		onLoad,
@@ -76,31 +77,32 @@
 		onMounted,
 		getCurrentInstance
 	} from 'vue';
-	import {getURL} from '@/api/sys/user.js'
+	import {
+		getURL
+	} from '@/api/sys/user.js'
 	const dayworkItem = ref({})
 	const selected = ref([]);
 	const selectedPhotos = ref([])
-    const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
+	const urlList = JSON.parse(uni.getStorageSync('baseUrl'))
 	const webHost = ref(urlList.pdfAppURL)
 	const photoList = ref([])
-	const consulteList = ref([
+	const consulteList = ref([{
+			value: 0,
+			label: "技术"
+		},
 		{
-				value: 0,
-				label: "技术"
-			},
-			{
-				value: 1,
-				label: "品管"
-			},
+			value: 1,
+			label: "品管"
+		},
 	])
 	const data = ref({
 		content: '',
-		departments:null
+		departments: null
 	})
 
 	// 创建一个引用来存储最后一次请求的时间戳
 	const lastRequestTimestamp = ref(0);
-	onShow(()=>{
+	onShow(() => {
 		uni.$off('addTechnicianEvent');
 	})
 
@@ -123,39 +125,65 @@
 	onLoad(() => {
 
 	})
+
 	function upLoadImageHandler(arg) {
-		getURL(arg).then(res =>{
+		return getURL(arg).then(res => {
 			let data = JSON.parse(res)
-						   selectedPhotos.value.push({
-							   url:data.fileName,
-							   pictureName:data.originalFilename
-						   })
-						   console.log(selectedPhotos.value)
-						   })
+			selectedPhotos.value.push({
+				url: data.fileName,
+				pictureName: data.originalFilename
+			})
+			console.log(selectedPhotos.value)
+			// uni.showToast({
+			// 	icon: 'none',
+			// 	title: selectedPhotos.value.length,
+			// 	duration: 2000
+			// })
+		})
 	}
-	function select (e) {
+
+	function select(e) {
 		console.log(e)
 		const {
 			tempFilePaths,
 			tempFiles
 		} = e
-		tempFiles.forEach((item,index)=>{
-			upLoadImageHandler({ filePath: tempFilePaths[index],name:item.name})
-		})
+		uni.showLoading({
+			title: '图片上传中',
+			mask: true
+		});
+		// 创建一个空的Promise数组
+		let uploadPromises = tempFiles.map((item, index) => {
+			return upLoadImageHandler({
+				filePath: tempFilePaths[index],
+				name: item.name
+			});
+		});
+
+		// 使用Promise.all等待所有图片上传完成
+		Promise.all(uploadPromises).then(() => {
+
+			// 上传完成后关闭加载提示
+			uni.hideLoading();
+		}).catch(() => {
+			// 如果有错误发生,也关闭加载提示
+			uni.hideLoading();
+		});
 	}
+
 	function handleDeletedPhoto(e) {
 		let fileName = selectedPhotos.value.map(info => info.name)
-			let index = fileName.findIndex(name => name === e.tempFile.name);
-			selectedPhotos.value.splice(index,1)
+		let index = fileName.findIndex(name => name === e.tempFile.name);
+		selectedPhotos.value.splice(index, 1)
 	}
 	//选中咨询部门数据
 	function checkboxChange(value) {
-	data.value.departments = value.detail.value; // 添加选中项
+		data.value.departments = value.detail.value; // 添加选中项
 	}
 
 	const handleSubmit = () => {
 		console.log(data.value.departments)
-		if (data.value.departments ==null || (data.value.departments !=null &&data.value.departments.length ==0 ) ) {
+		if (data.value.departments == null || (data.value.departments != null && data.value.departments.length == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择咨询部门'
@@ -163,7 +191,8 @@
 			return
 		}
 		console.log(dayworkItem.value.technicianId)
-		if (data.value.departments.includes(0) && (dayworkItem.value.technicianId == undefined || dayworkItem.value.technicianId == 0) ) {
+		if (data.value.departments.includes(0) && (dayworkItem.value.technicianId == undefined || dayworkItem.value
+				.technicianId == 0)) {
 			uni.showToast({
 				icon: 'none',
 				title: '请选择技术负责人'
@@ -194,7 +223,7 @@
 			content: data.value.content,
 			departments: data.value.departments,
 			pictures: selectedPhotos.value,
-			technicianId:dayworkItem.value.technicianId
+			technicianId: dayworkItem.value.technicianId
 		})
 		uni.navigateBack()
 	}
@@ -204,7 +233,7 @@
 		dayworkItem.value.technicianName = data.technicianName
 	}
 	//切换技术负责人
-	function handleSwitch(){
+	function handleSwitch() {
 		uni.$on('addTechnicianEvent', (data) => {
 			addTechnician(data)
 		})
@@ -264,46 +293,50 @@
 			align-items: center;
 		}
 	}
+
 	.middle {
 		display: flex;
 		flex-direction: row;
 		align-items: center;
 		justify-content: center
 	}
-	
+
 	.segment {
 		width: 60%;
 		background-color: rgba(213, 213, 213, 1);
 		border: 1rpx solid rgba(213, 213, 213, 1);
-		margin:8px 0;
+		margin: 8px 0;
 	}
-.checkbox-item {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-bottom: 10px;
-}
-
-.checkbox {
-  margin-right: 10px;
-}
-// .uni-file-picker__container{
-// }
-.my-files {
-	display: flex;
-	justify-content: center;
-	
-	:deep(.uni-file-picker__container) {
-	flex-direction: row;
-		
+
+	.checkbox-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-bottom: 10px;
+	}
+
+	.checkbox {
+		margin-right: 10px;
+	}
+
+	// .uni-file-picker__container{
+	// }
+	.my-files {
+		display: flex;
+		justify-content: center;
+
+		:deep(.uni-file-picker__container) {
+			flex-direction: row;
+
+		}
 	}
-}
+
 	.box-bg {
 		width: 94%;
 		padding: 5rpx 16rpx;
 		justify-content: space-around;
 		align-items: center;
-	
+
 		.input-view {
 			flex: 1;
 			height: 60rpx;
@@ -314,11 +347,11 @@
 			padding: 0 15rpx;
 			flex-wrap: nowrap;
 			line-height: 60rpx;
-	
+
 			.input-uni-icon {
-				line-height:60rpx;
+				line-height: 60rpx;
 			}
-	
+
 			.nav-bar-input {
 				width: 80%;
 				height: 60rpx;
@@ -326,6 +359,7 @@
 				padding: 0 5rpx;
 			}
 		}
+
 		.search {
 			width: 20%;
 			text-align: center;
@@ -338,6 +372,4 @@
 			padding-left: 10px;
 		}
 	}
-
-
 </style>

+ 2 - 2
pages/sorting/options.vue

@@ -18,7 +18,7 @@
 				<view class="btn" @click="handleSearch()">搜索</view>
 			</view>
 		</view>
-		<view class="uni-row" style="background-color:#ffffff;height: 75%;padding-bottom: 12px;margin-top: 8px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 71%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
 				<view v-if="dataList&& dataList.length == 0" style="align-items: center;margin-top: 30px">暂无分选标准数据
 				</view>
@@ -181,7 +181,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;

+ 5 - 4
pages/sorting/specialOptions.vue

@@ -20,9 +20,10 @@
 		</view>
 		<view v-if="categoryList && categoryList.length == 0" style="align-items: center;margin-top: 30px;">暂无分选标准
 		</view>
-		<view v-else class="uni-row" style="background-color:#ffffff;height: 75%;padding-bottom: 12px;margin-top: 8px;">
+		<view v-else class="uni-row"
+			style="background-color:#ffffff;height: 76%;padding-bottom: 12px;margin-bottom:65px;margin-top: 8px;">
 
-			<view style="width: 30%;height: 100%;overflow: auto;">
+			<view style="width: 30%;height: 96%;overflow: auto;">
 				<view v-for="(item, index) in categoryList" :key="index"
 					:class="{'category-item':true,'selected':isSelected(item)}" @click="cateClick(item)">
 					<view class="uni-row">
@@ -30,7 +31,7 @@
 					</view>
 				</view>
 			</view>
-			<view style="width: 69%;height: 100%;overflow: auto;">
+			<view style="width: 69%;height: 96%;overflow: auto;">
 				<view v-if="dataList&& dataList.length == 0" style="align-items: center;margin-top: 30px">暂无分选标准数据
 				</view>
 				<view v-else v-for="(item, index) in dataList" :key="index"
@@ -185,7 +186,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;

+ 23 - 17
pages/sorting/technicianOptions.vue

@@ -3,7 +3,7 @@
 		<view class="option-container uni-column" style="display: flex;">
 			<!-- tab-bar -->
 			<view class="tab-bars uni-row">
-				<view >
+				<view>
 					<text style="font-weight: bold;">技术负责人</text>
 					<view class="line"></view>
 				</view>
@@ -15,17 +15,18 @@
 			</view>
 
 		</view>
-		<view  class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;">
+		<view class="uni-row" style="background-color:#ffffff;height: 85%;padding-bottom: 12px;margin-top: 8px;">
 			<view style="width: 100%;height: 100%;overflow: auto;">
-				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员</view>
-			<!-- 选项 -->
-			<view class="option-item" v-for="(item, index) in optionList" :key="index"
-				@click="handleOptionChecked(item)">
-				<view class="uni-row">
-					<view class="value">{{ item.nickName }}</view>
+				<view v-if="optionList&& optionList.length == 0" style="align-items: center;margin-top: 30px">暂无技术员
+				</view>
+				<!-- 选项 -->
+				<view class="option-item" v-for="(item, index) in optionList" :key="index"
+					@click="handleOptionChecked(item)">
+					<view class="uni-row">
+						<view class="value">{{ item.nickName }}</view>
+					</view>
+					<uni-icons class="arrow-right" type="right" size="24" />
 				</view>
-				<uni-icons class="arrow-right" type="right" size="24" />
-			</view>
 			</view>
 		</view>
 	</view>
@@ -60,7 +61,9 @@
 		uni.showLoading({
 			title: '加载中'
 		});
-		getTechnicianList({nickName:keywords.value}).then(res => {
+		getTechnicianList({
+			nickName: keywords.value
+		}).then(res => {
 			console.log(res)
 			if (res.code === 200) {
 				optionList.value = res.data
@@ -97,8 +100,8 @@
 
 	const handleOptionChecked = (data) => {
 		uni.$emit('addTechnicianEvent', {
-			technicianId:data.userId,
-			technicianName:data.nickName
+			technicianId: data.userId,
+			technicianName: data.nickName
 		})
 		uni.navigateBack()
 	}
@@ -114,7 +117,7 @@
 	}
 
 	.option-container {
-		height: 10%;
+		height: 13%;
 		background-color: #ffffff;
 		padding: 24rpx;
 		border-radius: 12rpx;
@@ -172,21 +175,24 @@
 		padding-bottom: 8rpx;
 		border-bottom: 1px solid #BBBBBB;
 		margin-left: 24rpx;
-		
+
 		.uni-row {
 			padding-bottom: 16rpx;
-			
+
 			.label {
 				width: 144rpx;
 			}
+
 			.value {
 				flex: 1;
 			}
 		}
+
 		.uni-row:first-child {
 			font-size: 32rpx;
-	
+
 		}
+
 		.arrow-right {
 			position: absolute;
 			right: 24rpx;

+ 1 - 1
pages/startTurnover/index.vue

@@ -343,7 +343,7 @@
 
 	.scroll-container {
 		position: fixed;
-		top: 53rpx;
+		top: 54px;
 		right: 0;
 		bottom: 160rpx;
 		left: 0;

+ 2 - 1
pages/vueQrCode/index.vue

@@ -99,7 +99,8 @@
 			width: 30px;
 			height: 30px;
 			position: absolute;
-			top: 20px;
+			// top: 20px;
+			top: 54px;
 			right: 20px;
 			border-radius: 50%;
 			background-color: #fff;

+ 100 - 95
uni_modules/uni-section/components/uni-section/uni-section.vue

@@ -1,17 +1,19 @@
 <template>
 	<view class="uni-section">
 		<view class="uni-section-header" @click="onClick">
-				<view class="uni-section-header__decoration" v-if="type" :class="type" />
-        <slot v-else name="decoration"></slot>
+			<view class="uni-section-header__decoration" v-if="type" :class="type" />
+			<slot v-else name="decoration"></slot>
 
-        <view class="uni-section-header__content">
-          <text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title" :class="{'distraction':!subTitle}">{{ title }}</text>
-          <text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}" class="uni-section-header__content-sub">{{ subTitle }}</text>
-        </view>
+			<view class="uni-section-header__content">
+				<text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title"
+					:class="{'distraction':!subTitle}">{{ title }}</text>
+				<text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}"
+					class="uni-section-header__content-sub">{{ subTitle }}</text>
+			</view>
 
-        <view class="uni-section-header__slot-right">
-          <slot name="right"></slot>
-        </view>
+			<view class="uni-section-header__slot-right">
+				<slot name="right"></slot>
+			</view>
 		</view>
 
 		<view class="uni-section-content" :style="{padding: _padding}">
@@ -21,7 +23,6 @@
 </template>
 
 <script>
-
 	/**
 	 * Section 标题栏
 	 * @description 标题栏
@@ -40,7 +41,7 @@
 
 	export default {
 		name: 'UniSection',
-    emits:['click'],
+		emits: ['click'],
 		props: {
 			type: {
 				type: String,
@@ -51,11 +52,11 @@
 				required: true,
 				default: ''
 			},
-      titleFontSize: {
-        type: String,
-        default: '14px'
-      },
-			titleColor:{
+			titleFontSize: {
+				type: String,
+				default: '14px'
+			},
+			titleColor: {
 				type: String,
 				default: '#333'
 			},
@@ -63,28 +64,28 @@
 				type: String,
 				default: ''
 			},
-      subTitleFontSize: {
-        type: String,
-        default: '12px'
-      },
-      subTitleColor: {
-        type: String,
-        default: '#999'
-      },
+			subTitleFontSize: {
+				type: String,
+				default: '12px'
+			},
+			subTitleColor: {
+				type: String,
+				default: '#999'
+			},
 			padding: {
 				type: [Boolean, String],
 				default: false
 			}
 		},
-    computed:{
-      _padding(){
-        if(typeof this.padding === 'string'){
-          return this.padding
-        }
-
-        return this.padding?'10px':''
-      }
-    },
+		computed: {
+			_padding() {
+				if (typeof this.padding === 'string') {
+					return this.padding
+				}
+
+				return this.padding ? '10px' : ''
+			}
+		},
 		watch: {
 			title(newVal) {
 				if (uni.report && newVal !== '') {
@@ -92,76 +93,80 @@
 				}
 			}
 		},
-    methods: {
+		methods: {
 			onClick() {
 				this.$emit('click')
 			}
 		}
 	}
 </script>
-<style lang="scss" >
+<style lang="scss">
 	$uni-primary: #2979ff !default;
 
 	.uni-section {
 		background-color: #fff;
-    .uni-section-header {
-      position: relative;
-      /* #ifndef APP-NVUE */
-      display: flex;
-      /* #endif */
-      flex-direction: row;
-      align-items: center;
-      padding: 12px 10px;
-      font-weight: normal;
-
-      &__decoration{
-        margin-right: 6px;
-        background-color: $uni-primary;
-        &.line {
-          width: 4px;
-          height: 12px;
-          border-radius: 10px;
-        }
-
-        &.circle {
-          width: 8px;
-          height: 8px;
-          border-top-right-radius: 50px;
-          border-top-left-radius: 50px;
-          border-bottom-left-radius: 50px;
-          border-bottom-right-radius: 50px;
-        }
-
-        &.square {
-          width: 8px;
-          height: 8px;
-        }
-      }
-
-      &__content {
-        /* #ifndef APP-NVUE */
-        display: flex;
-        /* #endif */
-        flex-direction: column;
-        flex: 1;
-        color: #333;
-
-        .distraction {
-          flex-direction: row;
-          align-items: center;
-        }
-        &-sub {
-          margin-top: 2px;
-        }
-      }
-
-      &__slot-right{
-        font-size: 14px;
-      }
-    }
-
-    .uni-section-content{
-      font-size: 14px;
-    }
+
+		.uni-section-header {
+			position: relative;
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex-direction: row;
+			align-items: center;
+			padding: 12px 10px;
+			font-weight: normal;
+
+			&__decoration {
+				margin-right: 6px;
+				background-color: $uni-primary;
+
+				&.line {
+					width: 4px;
+					height: 12px;
+					border-radius: 10px;
+				}
+
+				&.circle {
+					width: 8px;
+					height: 8px;
+					border-top-right-radius: 50px;
+					border-top-left-radius: 50px;
+					border-bottom-left-radius: 50px;
+					border-bottom-right-radius: 50px;
+				}
+
+				&.square {
+					width: 8px;
+					height: 8px;
+				}
+			}
+
+			&__content {
+				/* #ifndef APP-NVUE */
+				display: flex;
+				/* #endif */
+				flex-direction: column;
+				flex: 1;
+				color: #333;
+
+				.distraction {
+					flex-direction: row;
+					align-items: center;
+				}
+
+				&-sub {
+					margin-top: 2px;
+				}
+			}
+
+			&__slot-right {
+				font-size: 14px;
+			}
+		}
+
+		.uni-section-content {
+			font-size: 14px;
+			flex: 1;
+		}
 	}
-</style>
+</style>