mao 1 年之前
父節點
當前提交
cf800cfeb9

+ 16 - 0
api/business/dayWork.js

@@ -20,4 +20,20 @@ export function saveDayWork(data) {
 		method: 'POST',
 		data: data
 	})
+}
+
+export function showDaywork(data) {
+	return req.request({
+		url:'/business/daywork/showDaywork',
+		method: 'GET',
+		data: data
+	})
+}
+
+export function showDayworkSave(data) {
+	return req.request({
+		url:'/business/daywork/showDayworkSave',
+		method: 'POST',
+		data: data
+	})
 }

+ 4 - 3
api/business/dayWorkItem.js

@@ -47,7 +47,8 @@ export function saveDayWorkItemBatch(data) {
 
 export function getDayworkItemByCarrierId(data) {
 	return req.request({
-		url:'/business/dayworkItem/getDayworkItemByCarrier/?carrierId=' + data,
-		method: 'GET'
+		url:'/business/dayworkItem/getDayworkItemByCarrier',
+		method: 'GET',
+		data: data
 	})
-}
+}

+ 76 - 53
components/dialog-login/dialog-login.vue

@@ -22,12 +22,19 @@
 		ref,
 		getCurrentInstance
 	} from 'vue'
+	import {
+		onLoad
+	} from '@dcloudio/uni-app'
 	import {
 		getUserInfo
 	} from '@/api/login/index.js'
-	import { getUserProcess } from '@/api/process/process.js'
-	import baseURL from '@/api/base/path.js'
-	import { store } from '@/store/index.js'
+	import {
+		getUserProcess
+	} from '@/api/process/process.js'
+	// import baseURL from '@/api/base/path.js'
+	import {
+		store
+	} from '@/store/index.js'
 	// 对话框
 	const baseDialog = ref(null)
 	const currentUser = ref({})
@@ -35,66 +42,82 @@
 	const successMsg = ref('登录成功')
 	const userInfo = ref({})
 	const user = ref([])
+	const baseURL = ref('')
 	// const { proxy } = getCurrentInstance()
 
+
+
+	function init() {
+
+	}
+
 	const open = (data) => {
 		currentUser.value = data
 		// console.log(dialog.value)
 		baseDialog.value.open()
 	}
-	 const handleLogin = () => {
-		 uni.showLoading({
-		 	title: '加载中'
-		 });
-		 setTimeout(function(){
-			 uni.hideLoading();
-		 },3000)
-		uni.request({
-			method: 'POST',
-			url: baseURL + '/login',
-			data: {
-				username: currentUser.value.userName,
-				password: currentUser.value.password
-			},
-			success: (res) => {
-				if (res.data.code === 200) {
-					uni.showToast({
-						title: successMsg.value,
-						icon: 'success',
-						duration: 2000
-					});
-					// 保存token
-					uni.setStorageSync('token', res.data.token);
-					uni.setStorage({
-						key: currentUser.value.userName,
-						data: currentUser.value.password,
-					});
-					// 获取员工工序信息
-					getUserProcess().then(res => {
-						store.userProcessInfo = res.data;
-					})
-					// 获取员工信息存入store,并跳转到控制面板
-					getUserInfo(currentUser.value).then((res) => {
-						if (res.code == 200) {
-							userInfo.value = res.data;
-							user.value.push(userInfo.value);
-							store.userInfo = res.data
-							console.log(store.userInfo)
-							uni.redirectTo({
-								url: '/pages/dashboard/index'
+	const handleLogin = () => {
+		// 获取服务器地址
+		uni.getStorage({
+			key: 'baseUrl',
+			success: function(res) {
+				baseURL.value = res.data;
+				// 加载
+				uni.showLoading({
+					title: '加载中'
+				});
+				setTimeout(function() {
+					uni.hideLoading();
+				}, 3000)
+				// 请求 
+				uni.request({
+					method: 'POST',
+					url: baseURL.value + '/login',
+					data: {
+						username: currentUser.value.userName,
+						password: currentUser.value.password
+					},
+					success: (res) => {
+						if (res.data.code === 200) {
+							uni.showToast({
+								title: successMsg.value,
+								icon: 'success',
+								duration: 2000
+							});
+							// 保存token
+							uni.setStorageSync('token', res.data.token);
+							uni.setStorage({
+								key: currentUser.value.userName,
+								data: currentUser.value.password,
 							});
+							// 获取员工工序信息
+							getUserProcess().then(res => {
+								store.userProcessInfo = res.data;
+							})
+							// 获取员工信息存入store,并跳转到控制面板
+							getUserInfo(currentUser.value).then((res) => {
+								if (res.code == 200) {
+									userInfo.value = res.data;
+									user.value.push(userInfo.value);
+									store.userInfo = res.data
+									console.log(store.userInfo)
+									uni.redirectTo({
+										url: '/pages/dashboard/index'
+									});
+								}
+							})
+						} else {
+							uni.showToast({
+								title: errorMsg.value,
+								icon: 'error',
+								//显示持续时间为 2秒
+								duration: 2000
+							})
 						}
-					})
-				} else {
-					uni.showToast({
-						title: errorMsg.value,
-						icon: 'error',
-						//显示持续时间为 2秒
-						duration: 2000
-					})
-				}
+					}
+				})
 			}
-		})
+		});
 	}
 
 	/** 暴露给父组件的方法 */

+ 17 - 14
components/dialog-lot/dialog-lot.vue

@@ -4,11 +4,11 @@
 		<view class="list-container">
 			<view class="list-container-item uni-row">
 				<text class="label">产品描述</text>
-				<text class="label value">{{form['caseNumber']}}</text>
+				<text class="label value">{{form['productDescription']}}</text>
 			</view>
 			<view class="list-container-item uni-row">
 				<text class="label">关联箱号</text>
-				<text class="label value">{{form['caseNumber']}}</text>
+				<text class="label value">{{form['carrierName']}}</text>
 			</view>
 			<view class="list-container-item uni-row">
 				<text class="label">当前工序</text>
@@ -25,7 +25,7 @@
 		</view> -->
 		<!-- </scroll-view> -->
 		<view class="add-btn-container uni-row">
-			<button type="primary" class="btn" >确认</button>
+			<button type="primary" class="btn" @click="handleConfirm">确认</button>
 		</view>
 	</dialog-base>
 </template>
@@ -35,27 +35,25 @@
 		ref,
 		getCurrentInstance
 	} from 'vue'
+	
 	const baseDialog = ref(null)
 	const selectedButton = ref(null)
-	const form = ref({
-		batchNumber: "DC23727410070",
-		caseNumber: "X12522、X522、X15522、J5211、J5112",
-		totalWorkingHours: 135.5,
-		qualifiedQuantity: 600,
-		invest: 1000,
-		previousProcess: "NC车1",
-		currentProcess: "热处理",
-		NextProcess: "清洗",
-		status: 0
-	})
+	const form = ref({})
+	const emit = defineEmits(['submit'])
 	// const equiments = ref(['009-21','009-22','009-23','009-24','009-25','009-26','009-27','009-28','009-29'])
  //    const selectButton = (data) => {
 	// 	 selectedButton.value = data;
 	// }
 	const open = (data) => {
 		// console.log(dialog.value)
+		form.value = data
 		baseDialog.value.open()
 	}
+	
+	const close = () => {
+		baseDialog.value.close()
+	}
+	
 	defineExpose({
 		open
 	})
@@ -67,6 +65,11 @@
 			}
 		});
 	}
+	
+	function handleConfirm(){
+		emit('submit');
+		close();
+	}
 </script>
 
 <style lang="scss">

+ 1 - 1
components/dialog-turnoverApplication/dialog-turnoverApplication.vue

@@ -97,7 +97,7 @@
 	
 	function handleConfirm(){
 		curDayworkItem.value.id = null;
-		curDayworkItem.value.status = '3';
+		curDayworkItem.value.status = '4';
 		curDayworkItem.value.startTime = timestampToTime(new Date());
 		curDayworkItem.value.technologicalProcessId = dayworkInfo.value.technologicalProcessId;
 		if(!store.tenantId){

+ 37 - 7
components/dialog-turnoverTask/dialog-turnoverTask.vue

@@ -2,9 +2,9 @@
 	<dialog-base class="dialog-body" ref="baseDialog" title="周转任务">
 		<view class="list-item">
 			<view v-for="(item, index) in confirmTurnoverList" :key="index">
-				<view class="list-title uni-row"><text class="label">{{item['process']}}</text>
+				<view class="list-title uni-row"><text class="label">{{ item['process'].processAlias }}</text>
 					<text class="label">→</text>
-					<text class="label">{{item['car']}}</text>
+					<text class="label">{{ item['nextProcess'].processAlias }}</text>
 				</view>
 				<view class="list-container">
 					<view class="list-container-item uni-row">
@@ -35,7 +35,7 @@
 			</view>
 		</view>
 		<view class="add-btn-container uni-row">
-			<button type="primary" class="btn">确认周转</button>
+			<button type="primary" class="btn" @click="handleConfirmDelivery">确认周转</button>
 		</view>
 
 	</dialog-base>
@@ -46,20 +46,50 @@
 		ref,
 		getCurrentInstance
 	} from 'vue'
-	import { onLoad } from '@dcloudio/uni-app'
-	
+	import {
+		onLoad
+	} from '@dcloudio/uni-app'
+	import { updateDayWorkItemBatch } from '@/api/business/dayWorkItem.js'
+
 	const baseDialog = ref(null)
 	const confirmTurnoverList = ref([])
 
-	function open(data){
+	function open(data) {
 		confirmTurnoverList.value = data
-		// console.log(dialog.value)
 		baseDialog.value.open()
 	}
 	
+	function close(data) {
+		baseDialog.value.close()
+	}
+
 	defineExpose({
 		open
 	})
+
+	function handleConfirmDelivery() {
+		// 设置周转状态
+		for (let i = 0; i < confirmTurnoverList.value.length; i++) {
+			confirmTurnoverList.value[i].status = confirmTurnoverList.value[i].status ='4';
+		}
+		console.log(confirmTurnoverList.value)
+		updateDayWorkItemBatch(confirmTurnoverList.value).then(res => {
+			if (res.code === 200) {
+				uni.showToast({
+					icon: 'success',
+					title: '操作成功',
+					duration: 2000
+				});
+			} else {
+				uni.showToast({
+					icon: 'error',
+					title: '操作失败',
+					duration: 2000
+				});
+			}
+		})
+		close();
+	}
 </script>
 
 <style lang="scss">

+ 63 - 15
pages/batchReporting/index.vue

@@ -10,11 +10,12 @@
 					</view>
 					<view class=" uni-row" style="margin-left: 16rpx;">
 						<view v-if="item['status'] == 1" class="tag"><text class="label">进行中</text></view>
-<!-- 						<view v-else-if="item['status'] == 2" class="tag turnover "><text class="label">周转中</text>
+						<!-- 						<view v-else-if="item['status'] == 2" class="tag turnover "><text class="label">周转中</text>
 						</view> -->
 						<view v-else-if="item['status'] == 0" class="tag turnover "><text class="label">未开始</text>
 						</view>
-						<view v-else-if="item['status'] == 2" type="default" class="tag finished"><text class="label">已完成</text></view>
+						<view v-else-if="item['status'] == 2" type="default" class="tag finished"><text
+								class="label">已完成</text></view>
 					</view>
 				</view>
 				<view class="item-info uni-row">
@@ -47,7 +48,7 @@
 							@click.stop="handleShowTurnoverApplication(item)">周转申请</button>
 						<!-- <button class="reporting-tag" size="mini" @click="handleToreportingForWork">去报工</button> -->
 					</view>
-					<view v-else-if="item['status'] == 3" class=" uni-row">
+					<view v-else-if="item['status'] == 1" class=" uni-row">
 						<button class="turnover-tag" size="mini">取消周转</button>
 					</view>
 				</view>
@@ -57,18 +58,18 @@
 			<button class="start-batch-btn" type="primary" @click="handleStartNewBatch">开始新批次</button>
 		</view>
 		<view v-else-if="bottomStatus == 1" class="bottom uni-row">
-			<button class="start-batch-btn" type="primary" @click="handleStartNewBatch(listData)">扫一扫开始新批次</button>
+			<button class="start-batch-btn" type="primary" @click="handleScanCode">扫一扫开始新批次</button>
 		</view>
 		<view v-else="bottomStatus == 2" class="bottom uni-row">
 			<button class="start-batch-btn" style="width: 40%;margin-right: 10rpx;" type="primary"
-				@click="handleStartNewBatch(listData)">开始新批次</button>
+				@click="handleStartNewBatch">开始新批次</button>
 			<button class="start-batch-btn" style="width: 40%;margin-left: 10rpx" type="primary"
-				@click="handleStartNewBatch(listData)">扫一扫开始新批次</button>
+				@click="handleScanCode">扫一扫开始新批次</button>
 		</view>
-		<dialog-lot ref="lotDialog" />
+		<dialog-lot ref="lotDialog" @submit="handleDoIt" />
 		<dialog-turnoverApplication ref="turnoverApplicationDialog" />
 	</view>
- 
+
 </template>
 
 <script setup>
@@ -86,14 +87,18 @@
 	import {
 		store
 	} from '@/store/index.js'
+	import {
+		showDaywork,showDayworkSave
+	} from '@/api/business/dayWork.js'
 
 	const turnoverApplicationDialog = ref(null)
 	const lotDialog = ref(null)
 	const listData = ref([])
 	const bizDayworkObj = ref({})
-	const curSubPlan = ref({})  // 子计划单信息
+	const curSubPlan = ref({}) // 子计划单信息
 	const processInfo = ref([]) // 员工工序信息
 	const bottomStatus = ref(0) // 底部按钮显示
+	const reqParam = ref(null);
 
 	onLoad(() => {
 		// let encodeData = encodeURIComponent(store.planSubDetails);
@@ -111,17 +116,17 @@
 			userProcesses.push(processInfo.value[i].id)
 		}
 		// 判断员工开始批次按钮显示bottomStatus状态
-		if(userProcesses.includes(sunPlanProcesses[0]) && userProcesses.length == 1){
+		if (userProcesses.includes(sunPlanProcesses[0]) && userProcesses.length == 1) {
 			bottomStatus.value = 0;
-		}else if(userProcesses.includes(sunPlanProcesses[0]) && userProcesses.length > 1){
+		} else if (userProcesses.includes(sunPlanProcesses[0]) && userProcesses.length > 1) {
 			bottomStatus.value = 2;
-		}else {
+		} else {
 			bottomStatus.value = 1;
 		}
 		init(curSubPlan.value.id);
 		uni.$on('batchReporting-addBatch', () => {
-			init(curSubPlan.value.id); 
-		}) 
+			init(curSubPlan.value.id);
+		})
 	})
 
 
@@ -130,7 +135,7 @@
 		// 调用子组件中的方法
 		turnoverApplicationDialog.value.open(_data)
 	}
-	
+
 	function handleStartNewBatch() {
 		uni.navigateTo({
 			url: "/pages/addNewBatch/index"
@@ -158,6 +163,49 @@
 			url: "/pages/reportingForWork/index"
 		})
 	}
+
+	function handleScanCode() {
+		uni.scanCode({
+			scanType: ['qrCode'],
+			onlyFromCamera: true, // 只允许相机扫码
+			success: function(res) {
+				console.log(res.result)
+				let vehicleObj = JSON.parse(res.result);
+				showDaywork({
+					carrierId: vehicleObj.carrierId,
+					status: 7
+				}).then(response => {
+					lotDialog.value.open(response.data);
+					reqParam.value = response.data
+				})
+			}
+		});
+	}
+	
+	function handleAddDaywork(data){
+		for (let i = 0; i < listData.value.length; i++) {
+			if (Object.entries(listData.value[i]).toString() === Object.entries(data).toString()) {
+				uni.showToast({
+					icon: "error",
+					title: "该批次已存在" 
+				})
+				console.log("该批次已存在")
+				return;  
+			}
+		}
+		listData.value.push(data);
+		for (let i = 0; i < listData.value.length; i++) {
+			listData.value[i].carriers = listData.value[i].carrierName.split('、').length;
+		}
+		console.log(listData.value)
+		showDayworkSave(data).then(res => {
+			init(curSubPlan.value.id);
+		})
+	}
+	
+	function handleDoIt(){
+		handleAddDaywork(reqParam.value);
+	}
 </script>
 
 <style lang="scss">

+ 15 - 26
pages/dashboard/index.vue

@@ -16,26 +16,12 @@
 			</view>
 		</view>
 		<view class="user-info uni-column" style="margin: 0 20rpx 20rpx 20rpx;width: 94%;">
-		<!-- 				<view class="nickname">
-							<text class="label">当前厂别</text>
-						</view>
-						<view class="uni-row info">
-							<select id="incomingInfo" class="uni-input data-select" v-model="userInfo.tenantId"
-								@change="handleTenantChange">
-								<option class="data-select-options" v-for="(item,index) in tenantList" :value="item.id">
-									{{item.orgName}}
-								</option>
-							</select> -->
-							<uni-section title="当前厂别" type="line">
-								<uni-data-select v-model="userInfo.tenantId" 
-								:localdata="tenantList"
-									@change="handleTenantChange"></uni-data-select>
-							</uni-section>
-							<!-- <input id="HeatNo" class="uni-input" v-model="basicInfo.heatNo" placeholder="请填写" /> -->
-							<!-- <text id="HeatNo" class="uni-input">{{basicInfo.heatNo}}</text> -->
-						<!-- </view> -->
-					</view>
-		<view class="business-btn uni-row" @click="handleToRecerptSfprod"><text class="label">半成品接收</text></view>
+			<uni-section title="当前厂别" type="line">
+				<uni-data-select v-model="userInfo.tenantId" :localdata="tenantList"
+					@change="handleTenantChange"></uni-data-select>
+			</uni-section>
+		</view>
+		<view class="business-btn uni-row" @click="handleRecerptSfprod"><text class="label">半成品接收</text></view>
 		<view class="business-btn uni-row" @click="handleToProductionPlan"><text class="label">报工</text></view>
 		<view class="business-btn uni-row" @click="handleToHandlingList"><text class="label">周转</text></view>
 		<view class="bottom-btn-container">
@@ -82,22 +68,25 @@
 		getTenant()
 	})
 
-	const handleToRecerptSfprod = () => {
+	function handleRecerptSfprod() {
 		uni.navigateTo({
 			url: '/pages/recerptSfprod/index'
 		})
 	}
-	const handleToProductionPlan = () => {
+	
+	function handleToProductionPlan() {
 		uni.navigateTo({
 			url: '/pages/productionPlan/index'
 		})
 	}
-	const handleToHandlingList = () => {
+	
+	function handleToHandlingList() {
 		uni.navigateTo({
 			url: '/pages/handlingList/index'
 		})
 	}
-	const handleSwitchOrQuit = () => {
+	
+	function handleSwitchOrQuit() {
 		uni.navigateTo({
 			url: '/pages/index/index'
 		})
@@ -158,7 +147,7 @@
 	}
 
 	.user-info-container {
-		margin: 64rpx 0 20rpx 8rpx;
+		margin: 64rpx 0 20rpx 20rpx;
 
 		.icon {
 			width: 120rpx;
@@ -211,7 +200,7 @@
 		margin: 0 20rpx 20rpx 20rpx;
 		background-color: #fff;
 		height: 200rpx;
-		width:94%;
+		width: 94%;
 		border-radius: 4;
 		align-items: center;
 		justify-content: center;

+ 45 - 32
pages/handlingList/index.vue

@@ -10,14 +10,15 @@
 		<view class="padding-container" v-if='pendingShow'>
 			<scroll-view class="scroll-container" scroll-y>
 				<view v-for="(item, index) in listData" :key="index"
-					:class="{'list-item':true,'selected':isSelected(item)}" >
+					:class="{'list-item':true,'selected':isSelected(item)}">
 					<!-- @click="handleSelection(item)" -->
 					<view class="title-container uni-row">
 						<view class="title uni-row">
 							<text class="label">{{ item['dictDataLabel'] }}</text>
 							<text class="label code">{{ item['process'].processAlias }}</text>
 							<text class="label code" style="margin-left: 16rpx;">→</text>
-							<text class="label code" style="margin-left: 16rpx;">{{ item['nextProcess'].processAlias }}</text>
+							<text class="label code"
+								style="margin-left: 16rpx;">{{ item['nextProcess'].processAlias }}</text>
 						</view>
 
 						<view class="right-info uni-row">
@@ -57,14 +58,16 @@
 			<scroll-view class="scroll-container" scroll-y>
 				<!-- 循环周转中的数据 -->
 				<view class='item-container'>
-					<view class="turnover-title uni-row">
-						<view class="uni-row">
-							<view><text class='title-color'>{{turnoverContentTitle}}</text></view>
+					<view v-if="products.length > 0" class="turnover-title uni-row">
+						<view class="uni-row" style="align-items: center;">
+							<view><text class='title-color'>{{turnoverContentTitle}}</text></view>
 							<view><text class="second-info">{{turnoverSecondTitle}}</text></view>
 						</view>
-						<!-- <view><text class="label">周转中</text></view> -->
+						<view><text class="label">周转中</text></view>
 					</view>
-					<view :class="{'list-container':true,'selected':isSelected(item)}" v-for="(item,index) in products" :key='index' @click="handleSelection(item)">
+					<view :class="{'list-container':true,'selected':isSelected(item)}" v-for="(item,index) in products"
+						:key='index'>
+						<!-- @click="handleSelection(item)" -->
 						<view class="list-container-item product-description uni-row">
 							<text class="label left-value">产品描述</text>
 							<text class="label right-value">{{item['productDescription']}}</text>
@@ -105,13 +108,18 @@
 	import {
 		getDayWorkItemList
 	} from '@/api/business/dayWorkItem.js'
-	import { updateDayWorkItem,updateDayWorkItemBatch } from '@/api/business/dayWorkItem.js'
-	import { getDictInfoByType } from '@/api/dict/dict.js'
+	import {
+		updateDayWorkItem,
+		updateDayWorkItemBatch
+	} from '@/api/business/dayWorkItem.js'
+	import {
+		getDictInfoByType
+	} from '@/api/dict/dict.js'
 
 
 	const pendingTitle = ref('待周转')
 	const turnoverTitle = ref('周转中')
-	const turnoverContentTitle = ref('')
+	const turnoverContentTitle = ref(0)
 	const turnoverSecondTitle = ref('')
 	const sum = ref(0)
 	const pendingClass = ref({
@@ -134,7 +142,7 @@
 
 	function init() {
 		getDayWorkItemList({
-			status: 3
+			status: 4
 		}).then(res => {
 			if (res.code == 200) {
 				listData.value = res.rows;
@@ -146,51 +154,55 @@
 			}
 		})
 		getDayWorkItemList({
-			status: 4
+			status: 5
 		}).then(res => {
 			if (res.code == 200) {
 				products.value = res.rows;
 				// 设置箱数
-				for (var i = 0; i < products.value.length; i++) {
+				for (let i = 0; i < products.value.length; i++) {
 					products.value[i].carriers = products.value[i].carrierName.split('、').length;
+					turnoverContentTitle.value += products.value[i].carriers;
 				}
+				// 设置总数和目标
+				turnoverSecondTitle.value = products.value[0].process.processAlias + " → " + products.value[0]
+					.nextProcess.processAlias
 				console.log(res)
 			}
 		})
 	}
-	
-	function reflush(){
+
+	function reflush() {
 		init();
 	}
-	
-	function handleConfirmUnbind(){
+
+	function handleConfirmUnbind() {
 		handleDoTurn();
 	}
-	
-	function handleStartTurn(){
+
+	function handleStartTurn() {
 		// if(selection.value.length > 0){
 		// 	let msg = '是否确认周转?';
 		// 	confirm.value.open(msg);
 		// }
 		// turnoverTask.value.open(selection.value);
 		uni.navigateTo({
-			url:"/pages/startTurnover/index"
+			url: "/pages/startTurnover/index"
 		})
 	}
-	
-	function handleConfirmDelivery(){
-		if(selection.value.length > 0){
+
+	function handleConfirmDelivery() {
+		if(products.value.length > 0){
 			let msg = '是否确认送达?';
 			confirm.value.open(msg);
 		}
 	}
-	
-	function handleDoTurn(){
+
+	function handleDoTurn() {
 		// 设置周转状态
-		for (var i = 0; i < selection.value.length; i++) {
-			selection.value[i].status = selection.value[i].status == '4'? '5' : '4';
+		for (var i = 0; i < products.value.length; i++) {
+			products.value[i].status = '6';
 		}
-		updateDayWorkItemBatch(selection.value).then(res => {
+		updateDayWorkItemBatch(products.value).then(res => {
 			if (res.code === 200) {
 				uni.showToast({
 					icon: 'success',
@@ -209,7 +221,7 @@
 		// 清空选中数组
 		selection.value = [];
 	}
-	
+
 	function isSelected(item) {
 		return selection.value.includes(item);
 	}
@@ -379,7 +391,8 @@
 	.turnover-container {
 		.scroll-container {
 			.item-container {
-				padding: 8rpx 0 32rpx 0;
+				// height: 90%;
+				// padding: 8rpx 0 32rpx 0;
 				margin: 0 24rpx;
 				margin-bottom: 24rpx;
 				background-color: rgba(255, 255, 255, 1);
@@ -427,12 +440,12 @@
 
 				.title-color {
 					color: rgba(22, 132, 252, 1);
-					font-size: 32rpx;
+					font-size: 36rpx;
 					font-weight: bold;
 				}
 
 				.second-info {
-					font-size: 32rpx;
+					font-size: 36rpx;
 					font-weight: bold;
 					margin-left: 32rpx;
 				}

+ 64 - 4
pages/index/index.vue

@@ -1,12 +1,16 @@
 <template>
 	<view class="page-container uni-column">
-		<view class="title uni-column" v-if="loggedUsers.length > 0">
+		<view class="title uni-row" v-if="loggedUsers.length > 0">
 			<text>点击头像切换用户</text>
+			<uni-icons class="icon-gear" type="gear-filled" size="60" color="#1684fc" @click="handleGear"></uni-icons>
+		</view>
+		<view class="baseUrl uni-row" v-if="showInput">
+			<input v-model="baseUrl" placeholder="服务器地址" />
+			<button @click="handleSetting">设置</button>
 		</view>
-
 		<view v-for="(item, index) in loggedUsers" class="item-user uni-row" @click="handleSelectUser(item)"
 			@longpress="handleLongPressUser(item)">
-			<view class="user-avatar uni-row"><text class="label">{{item.nickName.charAt(0)}}</text></view>
+			<view class="user-avatar uni-row"><text class="label">{{ item.nickName.charAt(0) }}</text></view>
 			<view class="user-info">
 				<view class="nickname">
 					<text class="label">{{item.nickName}}</text>
@@ -48,6 +52,9 @@
 	const userInfo = ref({})
 	const users = ref([])
 	const nickName = ref('')
+	const baseUrl = ref(null)
+	const showInput = ref(false)
+
 	onLoad(() => {
 		init();
 		// getUser();
@@ -61,7 +68,8 @@
 					uni.getStorage({
 						key: storagekey,
 						success: function(res) {
-							if (storagekey !== 'token' && storagekey !== '__DC_STAT_UUID') {
+							if (storagekey !== 'token' && storagekey !== '__DC_STAT_UUID' &&
+								storagekey !== 'baseUrl') {
 								getNickNameByUserName(storagekey).then((response) => {
 									if (response.code == 200) {
 										loggedUsers.value.push({
@@ -72,6 +80,9 @@
 									}
 								})
 							}
+							if(storagekey === 'baseUrl'){
+								baseUrl.value = res.data;
+							}
 						}
 					});
 				}
@@ -80,6 +91,33 @@
 	}
 
 
+	function handleGear() {
+		showInput.value = !showInput.value
+	}
+
+	function handleSetting() {
+		// let reg = /^(?:(http|https|ftp):\/\/)?((?:[\w-]+\.)+[a-z0-9]+)((?:\/[^/?#]*)+)?(\?[^#]+)?(#.+)?$/i;
+		// if (baseUrl.value !== null && baseUrl.value.trim() && reg.test(baseUrl.value)) {
+		if (baseUrl.value) {
+			uni.setStorage({
+				key: 'baseUrl',
+				data: baseUrl.value,
+				success: function() {
+					uni.showToast({
+						icon: "success",
+						title: "设置成功"
+					})
+				}
+			});
+			showInput.value = !showInput.value;
+		} else {
+			uni.showToast({
+				icon: "error",
+				title: "输入错误"
+			})
+		}
+	}
+
 	const handleShowLoginDialog = (user) => {
 		let _user = user ?? {}
 		// 调用子组件中的方法
@@ -140,6 +178,28 @@
 		align-items: center;
 	}
 
+	.icon-gear {
+		position: fixed;
+		right: 40rpx;
+		font-size: 60rpx;
+	}
+
+	.baseUrl {
+		border: 2rpx solid gray;
+		width: 90%;
+		margin: 0 auto;
+		border-radius: 12rpx;
+
+		input {
+			width: 80%;
+			padding: 16rpx 24rpx;
+		}
+
+		button {
+			width: 20%;
+		}
+	}
+
 	.item-user {
 		margin: 32rpx;
 		margin-top: 0;

+ 94 - 65
pages/recerptSfprod/index.vue

@@ -2,87 +2,127 @@
 
 	<view class='container '>
 		<view class='content'>
-			<text class='title'>{{title}}</text>
 			<view class='item-table' scroll-y v-for="(item,index) in products" :key='index'>
+				<text class='title'>{{title}}</text>
 				<view class="uni-row table-layout">
 					<text class='tbhead left'>产品描述</text>
-					<text class='tbhead right'>{{item['description']}}</text>
+					<text class='tbhead right'>{{item['productDescription']}}</text>
 				</view>
 				<view class="uni-row table-layout">
 					<text class='tbbody left'>批次</text>
-					<text class='tbbody right'>{{item['batch']}}</Text>
+					<text class='tbbody right'>{{item['lotCode']}}</Text>
 				</view>
 				<view class="uni-row table-layout">
 					<text class='tbbody left'>箱数</text>
-					<text class='tbbody right'>{{item['cases']}}</Text>
+					<text class='tbbody right'>{{item['carriers']}}</Text>
 				</view>
 				<view class="uni-row table-layout">
-					<text class='tbbody  left' style="height: 100%;">箱号</text>
-					<text class='last-tbbody right'>{{item['boxno']}}</text>
+					<text class='tbbody  left'>箱号</text>
+					<text class='tbbody right'>{{item['carrierName']}}</text>
 				</view>
 
 			</view>
 		</view>
 		<view class='btn uni-row'>
-			<button class='bottom-btn left-btn'>取消</button>
-			<button class='bottom-btn right-btn' type="primary">确定接收</button>
+			<button class='bottom-btn left-btn' type="primary" @click="handleScanCode">扫码添加</button>
+			<button class='bottom-btn right-btn' type="primary" @click="handleConfirmReceipt">确定接收</button>
 		</view>
 	</view>
+	<dialog-confirm ref="confirm" @submit="handleDoIt"></dialog-confirm>
 </template>
 <script setup>
 	import {
 		ref
 	} from 'vue'
 	import {
-		onLoad,
-		onReady
+		onLoad
 	} from '@dcloudio/uni-app'
-	onLoad(() => {
-		for (let i = 0; i < products.value.length; i++) {
-			sum.value += parseInt(products.value[i]['cases'].toString());
-		}
-		// this.title = '热处理' + this.sum + '箱'
-		title.value = '热处理' + sum.value + '箱'
-	})
+	import {
+		getDayworkItemByCarrierId,
+		updateDayWorkItemBatch
+	} from '@/api/business/dayWorkItem.js'
+	import {
+		store
+	} from '@/store/index.js'
+
 	const title = ref('热处理')
 	const sum = ref(0)
-	const products = ref([{
-			description: '博士_0395614149_15*110.1',
-			batch: 'DC23727410070',
-			cases: 5,
-			boxno: 'X12522、X552222、X15522、J5211、J5112、X12522、X552222、X15522、J5211、J5112'
-		},
-		{
-			description: '博士_0395614149_15*110.1',
-			batch: 'DC23727410070',
-			cases: 5,
-			boxno: 'X12522、X552222、X15522、J5211、J5112'
-		},
-		{
-			description: '博士_0395614149_15*110.1',
-			batch: 'DC23727410070',
-			cases: 5,
-			boxno: 'X12522、X552222、X15522、J5211、J5112'
-		},
-		{
-			description: '博士_0395614149_15*110.1',
-			batch: 'DC23727410070',
-			cases: 5,
-			boxno: 'X12522、X552222、X15522、J5211、J5112'
-		},
-		{
-			description: '博士_0395614149_15*110.1',
-			batch: 'DC23727410070',
-			cases: 5,
-			boxno: 'X12522、X552222、X15522、J5211、J5112'
-		},
-		{
-			description: '博士_0395614149_15*110.1',
-			batch: 'DC23727410070',
-			cases: 5,
-			boxno: 'X12522、X552222、X15522、J5211、J5112'
+	const products = ref([])
+	const confirm = ref(null)
+
+	onLoad(() => {
+
+	})
+
+	function handleScanCode() {
+		uni.scanCode({
+			scanType: ['qrCode'],
+			onlyFromCamera: true, // 只允许相机扫码
+			success: function(res) {
+				console.log(res.result)
+				let vehicleObj = JSON.parse(res.result);
+				getDayworkItemByCarrierId({
+					carrierId: vehicleObj.carrierId,
+					status: 6
+				}).then(response => {
+					for (let i = 0; i < products.value.length; i++) {
+						if (Object.entries(products.value[i]).toString() === Object.entries(res
+								.data)
+							.toString()) {
+							uni.showToast({
+								icon: "error",
+								title: "该批次已存在"
+							})
+							console.log("该批次已存在")
+							return;
+						}
+					}
+					products.value.push(response.data);
+					for (let i = 0; i < products.value.length; i++) {
+						products.value[i].carriers = products.value[i].carrierName.split('、')
+							.length;
+					}
+					console.log(products.value)
+				})
+			}
+		});
+	}
+
+	function handleConfirmReceipt() {
+		if (products.value.length > 0) {
+			let msg = "是否确认接收";
+			confirm.value.open(msg);
+		}
+	}
+
+	function handleDoReceipt() {
+		// 设置周转状态
+		for (var i = 0; i < products.value.length; i++) {
+			products.value[i].status = '7';
+			products.value[i].recipientId = store.userInfo.userId;
 		}
-	])
+		updateDayWorkItemBatch(products.value).then(res => {
+			if (res.code === 200) {
+				uni.showToast({
+					icon: 'success',
+					title: '操作成功',
+					duration: 2000
+				});
+				init();
+			} else {
+				uni.showToast({
+					icon: 'error',
+					title: '操作失败',
+					duration: 2000
+				});
+			}
+		})
+		products.value = [];
+	}
+
+	function handleDoIt() {
+		handleDoReceipt();
+	}
 </script>
 
 <style lang="scss">
@@ -96,7 +136,6 @@
 			/* height: auto; */
 			background-color: rgba(255, 255, 255, 1);
 			margin: 50rpx auto;
-			padding-bottom: 144rpx;
 			border-radius: 12rpx;
 
 			.title {
@@ -141,16 +180,6 @@
 					.right {
 						flex: 3;
 					}
-
-					.last-tbbody {
-						font-size: 28rpx;
-						background-color: rgba(238, 240, 245, 1);
-						width: 70%;
-						height: 100%;
-						align-items: center;
-						border-bottom: 1px solid lightgray;
-					}
-
 				}
 			}
 		}
@@ -172,7 +201,7 @@
 				color: #FFFFFF;
 
 				&.left-btn {
-					background-color: #a4adb3;
+					// background-color: #a4adb3;
 				}
 
 				&.right-btn {

+ 3 - 0
pages/reportingForWork/index.vue

@@ -37,6 +37,9 @@
 					<text class="label right">{{ (item['reason'] != "")?item['reason']:'-'}}</text>
 				</view>
 
+		<!-- 		<view v-if="item['userId'] == userInfo['userId'] ? item['status'] == 0 : false" class="status-btn uni-row ">
+					<button class="finished-turnover-tag" size="mini">开始加工</button>
+				</view> -->
 				<view v-if="item['userId'] == userInfo['userId'] ? item['status'] == 0 : false" class="status-btn uni-row ">
 					<button class="finished-turnover-tag" size="mini"
 						@click.stop="handleShowEndWorkDialog(item)">结束报工</button>

+ 16 - 19
pages/startTurnover/index.vue

@@ -1,8 +1,8 @@
 <template>
 	<view class="uni-column container" >
 		<scroll-view class="scroll-container" scroll-y>
-			<view v-for="(item, index) in listData" :key="index" :class="{'list-item':true,'selected':isSelected(item)}"
-				@click="handleSelection(item,index)">
+			<view v-for="(item, index) in listData" :key="index" :class="{'list-item':true,'selected':isSelected(item)}">
+				<!-- @click="handleSelection(item,index)" -->
 				<view class="title-container uni-row">
 					<view class="title uni-row">
 						<text class="label">{{ item['dictDataLabel'] }}</text>
@@ -34,11 +34,11 @@
 		</scroll-view>
 		<view class="bottom uni-row">
 			<button class="bottom-btn left-btn" @click="HandleScanCode">扫码添加</button>
-			<button class="bottom-btn right-btn" @click="handleStartTurnover(null)">确认周转</button>
+			<button class="bottom-btn right-btn" @click="handleStartTurnover">确认周转</button>
 		</view>
 		<dialog-turnoverTask ref="turnoverTaskDialog" />
 	</view>
-
+	<dialog-turnoverTask ref="turnoverTask"></dialog-turnoverTask>
 
 </template>
 
@@ -55,6 +55,7 @@
 	const selection = ref([])
 	const turnoverTaskDialog = ref(null)
 	const listData = ref([])
+	const turnoverTask = ref(null)
 	
 	onLoad(() => {
 	
@@ -71,17 +72,21 @@
 			success: function(res) {
 				console.log(res.result)
 				let vehicleObj = JSON.parse(res.result);
-				getDayworkItemByCarrierId(vehicleObj.carrierId).then(res => {
+				getDayworkItemByCarrierId({
+					carrierId: vehicleObj.carrierId,
+					status: 4
+				}).then(response => {
 					for (let i = 0; i < listData.value.length; i++) {
-						if (Object.entries(listData.value[i]).toString() === Object.entries(listData).toString()) {
+						if (Object.entries(listData.value[i]).toString() === Object.entries(res.data).toString()) {
 							uni.showToast({
 								icon: "error",
-								title: "载具已存在" 
+								title: "该批次已存在" 
 							})
-							return;
+							console.log("该批次已存在")
+							return;  
 						}
 					}
-					listData.value.push(res.data);
+					listData.value.push(response.data);
 					for (let i = 0; i < listData.value.length; i++) {
 						listData.value[i].carriers = listData.value[i].carrierName.split('、').length;
 					}
@@ -92,18 +97,10 @@
 	}
 	
 	function handleStartTurnover() {
-		if(selection.value.length >0) {
-			turnoverTaskDialog.value.open(selection.value)
-		}
-		else {
-			uni.showToast({
-				title: '未选中周转内容',
-				icon:'error',
-				duration: 1000//1后消失
-			});
-		}
 		// 调用子组件中的方法
+		turnoverTask.value.open(listData.value);
 	}
+	
 	function isSelected(item) {
 		return selection.value.includes(item);
 	}