guoyujia vor 1 Jahr
Ursprung
Commit
6f1ba368ee

+ 12 - 0
api/dept/dept.js

@@ -12,6 +12,18 @@ export function getDeptList(data) {
 	})
 }
 
+/**
+ * 获取生产子计划列表
+ * @param {Object} data
+ */
+export function getDeptOptions(data) {
+	return req.request({
+		url:'/system/dept/getList',
+		method: 'GET',
+		data: data
+	})
+}
+
 export function getUserDeptList(userId) {
 	return req.request({
 		url:'/system/dept/getUserDeptList?userId=' + userId,

+ 9 - 0
api/resourceGroup/resourceGroupDetail.js

@@ -0,0 +1,9 @@
+import req from '@/utils/request.js'
+
+
+export function getEquipmentByUidAndDid(userId,deptId) {
+	return req.request({
+		url:'/business/detail/getEquipmentByUidAndDid?userId=' + userId + '&deptId=' + deptId,
+		method: 'GET',
+	})
+}

+ 263 - 0
components/dialog-receipt/dialog-receipt.vue

@@ -0,0 +1,263 @@
+<template>
+	<dialog-base ref="baseDialog" title="投放位置">
+		<view class="list-container">
+			<view class="" style="margin: 0 20rpx 20rpx 0;width: 88%;">
+				<uni-section title="请选择工段" title-font-size="32rpx" style="margin: 0 0 0 -16rpx;">
+					<uni-data-select v-model="curDayworkItem.deptId" :localdata="deptList" @change="handleChange"
+					:clear="false"
+						style="margin: 0 0 0 16rpx;outline: 2rpx solid #999999;border-radius: 10rpx;"></uni-data-select>
+				</uni-section>
+			</view>
+			<view class="list-title">
+				<text class="label">请选择您存放位置</text>
+			</view>
+			<view class="turnArea uni-row" >
+				<view v-for="(item,index) in turnAreaList" class="btn">
+					<view :class="{ 'middle-btn': true, 'active': item == turnoverDoorChecked }"
+						@click="selectTurnoverDoor(item)"><text class="label">{{item.code}}</text></view>
+				</view>
+			</view>
+		</view>
+		<view class="add-btn-container uni-row">
+			<button type="default" class="btn" @click="handleConfirm">确认</button>
+		</view>
+	</dialog-base>
+</template>
+
+<script setup>
+	import {
+		ref,
+		getCurrentInstance
+	} from 'vue'
+	import {
+		onLoad
+	} from '@dcloudio/uni-app'
+	import {
+		getDictInfoByType
+	} from '@/api/dict/dict.js'
+	import {
+		getDayWorkItemList,
+		saveDayWorkItem
+	} from '@/api/business/dayWorkItem.js'
+	import {
+		getDeptList
+	} from '@/api/dept/dept.js'
+	import {
+		getTurnoverListByDeptId
+	} from '@/api/business/turnover.js'
+	import {
+		store
+	} from '@/store/index.js'
+	import {
+		timestampToTime
+	} from '@/utils/common.js'
+
+	const baseDialog = ref(null) 
+	const turnoverDoorChecked = ref({})
+	const turnoverType = ref([])
+	const turnoverArea = ref([])
+	const curDayworkItem = ref({
+		turnoverType: 1
+	})
+	const dayworkInfo = ref(null)
+	const deptList = ref([]) // 工段列表
+	const turnAreaList = ref([]) // 周转区列表
+	// const emit = defineEmits('confirm') // 自定义调用父组件方法
+
+	onLoad(() => {
+
+	})
+
+	function open(data) {
+		deptList.value = [];
+		turnAreaList.value = [];
+		dayworkInfo.value = data;
+		baseDialog.value.open();
+		init();
+	}
+
+	defineExpose({
+		open
+	})
+
+	function close() {
+		baseDialog.value.close()
+		turnAreaList.value = [];
+	}
+
+	function init() {
+		getDictInfoByType('daywork_turnover_type').then(res => {
+			turnoverType.value = res.data;
+			getDictInfoByType('workshop_turnover_area').then(res => {
+				turnoverArea.value = res.data;
+			})
+		})
+		getDayWorkItemList({
+			dayworkId: dayworkInfo.value.id,
+			userId: store.userInfo.userId
+		}).then(res => {
+			console.log(res.rows[0])
+			curDayworkItem.value = {
+				...res.rows[0],
+				turnoverType: 1
+			};
+		})
+		getDeptList({
+			isWorkSection: 1,
+			tenantId: store.tenantId
+		}).then(res => {
+			console.log(res.data)
+			for (var i = 0; i < res.data.length; i++) {
+				deptList.value[i] = {
+					text: res.data[i].deptName,
+					value: res.data[i].deptId,
+					data: res.data[i]
+				}
+			}
+		})
+	}
+
+	function selectTurnoverType(item) {
+		curDayworkItem.value.turnoverType = item.dictValue;
+	}
+
+	function selectTurnoverDoor(item) {
+		turnoverDoorChecked.value = item;
+		curDayworkItem.value.turnoverArea = item.dictValue;
+	}
+
+	function handleValidate(data) {
+		console.log(data)
+		if (data.turnoverType === "0" || data.turnoverArea === "" || data.deptId === "0") {
+			return false;
+		} else {
+			return true;
+		}
+	}
+
+	function handleConfirm() {
+		curDayworkItem.value.id = null;
+		curDayworkItem.value.status = curDayworkItem.value.turnoverType == '1' ? '7' : '4';
+		curDayworkItem.value.startTime = timestampToTime(new Date());
+		curDayworkItem.value.technologicalProcessId = dayworkInfo.value.technologicalProcessId;
+		if (!store.tenantId) {
+			curDayworkItem.value.tenantId = store.userInfo.tenantId;
+		} else {
+			curDayworkItem.value.tenantId = store.tenantId;
+		}
+		console.log(deptList.value)
+		// 设置周转下一个车间名
+		for (let i = 0; i < deptList.value.length; i++) {
+			if (deptList.value[i].value == curDayworkItem.value.deptId) {
+				curDayworkItem.value.deptName = deptList.value[i].text;
+			}
+		}
+		console.log(curDayworkItem.value);
+		if (!handleValidate(curDayworkItem.value)) {
+			uni.showToast({
+				icon: "error",
+				title: '请选择完整信息',
+				duration: 2000
+			});
+		} else {
+			saveDayWorkItem(curDayworkItem.value).then(res => {
+				if (res.code === 200) {
+					uni.showToast({
+						icon: 'success',
+						title: '操作成功',
+						duration: 2000
+					});
+					uni.$emit('dayworkItemUpdate');
+					close();
+				} else {
+					uni.showToast({
+						icon: 'error',
+						title: '操作失败',
+						duration: 2000
+					});
+					close();
+				}
+			})
+		}
+		// emit('confirm');
+	}
+
+	function handleChange() {
+		turnAreaList.value = [];
+		getTurnoverListByDeptId({
+			deptId: curDayworkItem.value.deptId,
+		}).then(res => {
+			for (var i = 0; i < res.data.length; i++) {
+				if(res.data[i].status == 0){
+					turnAreaList.value[i] = res.data[i];
+				}
+			}
+		})
+	}
+</script>
+
+<style lang="scss">
+	.dialog-body {
+		.list-container {
+			width: 100%;
+
+			.list-title {
+				margin-top: 24rpx;
+
+				.label {
+					font-size: 32rpx;
+				}
+			}
+
+			.turnArea {
+				flex-wrap: wrap;
+				height: auto;
+				max-height: 200rpx;
+				overflow: auto;
+			}
+
+			.btn {
+				margin-top: 24rpx;
+
+				.middle-btn {
+					margin-right: 32rpx;
+					align-items: center;
+					justify-content: center;
+					padding-left: 0;
+					height: 80rpx;
+					width: 220rpx;
+					border-radius: 8rpx;
+					background-color: #FFFFFF;
+					border: 1px solid #999999;
+					background-color: #FFFFFF;
+
+				}
+
+				.label {
+					font-size: 24rpx;
+					color: #000000;
+				}
+
+				.active {
+					border-color: #1684fc;
+					background-color: rgb(236, 245, 255);
+
+					.label {
+						color: #1684fc;
+					}
+				}
+			}
+		}
+
+		.add-btn-container {
+			margin-top: 32rpx;
+
+			.btn {
+				flex: 1;
+				background-color: #1684fc;
+				color: #FFFFFF;
+
+			}
+		}
+	}
+</style>

+ 70 - 38
components/dialog-selectEquipment/dialog-selectEquipment.vue

@@ -1,7 +1,7 @@
 <template>
 	<dialog-base ref="baseDialog" title="请选择">
 		<!-- 		<view class="equipment-container uni-row ">
-			<view v-for="(item, index) in equiments" :class="{'item':true,'selected': isSelected(item)}" :key="index"
+			<view v-for="(item, index) in equipments" :class="{'item':true,'selected': isSelected(item)}" :key="index"
 				@click="handleSelection(item)"><text class="label">{{item['equipmentDetailCode']}}</text></view>
 		</view> -->
 		<view>
@@ -12,7 +12,7 @@
 		</view>
 		<view>
 			<uni-section title="设备" type="line">
-				<uni-data-select v-model="selectedEquiment" :localdata="equipmentList" :clear="false"
+				<uni-data-select v-model="selectedEquipment" :localdata="equipmentList" :clear="false"
 					@change="handleEquipmentChange"></uni-data-select>
 			</uni-section>
 		</view>
@@ -23,9 +23,9 @@
 				<switch class="switch" @change="switchChange" />
 				<text>是</text>
 			</view>
-		</view> 
+		</view>
 		<view v-if="flag">
-			<uni-easyinput class="uni-mt-5" suffixIcon="search" focus  v-model="userName" placeholder="请输入协作者编号"
+			<uni-easyinput class="uni-mt-5" suffixIcon="search" focus v-model="userName" placeholder="请输入协作者编号"
 				@iconClick="iconClick"></uni-easyinput>
 		</view>
 
@@ -58,20 +58,23 @@
 	import {
 		store
 	} from '@/store/index.js'
+	import {
+		getEquipmentByUidAndDid
+	} from '@/api/resourceGroup/resourceGroupDetail.js'
 	import {
 		timestampToTime
 	} from '@/utils/common.js'
 
 	const baseDialog = ref(null)
-	const equiments = ref([]) // 接收设备列表信息
+	const equipments = ref([]) // 接收设备列表信息
 	const equipmentList = ref([])
 	const emit = defineEmits(['handleAddDayWorkItem'])
 	const userId = ref(null)
 	const firstItem = ref(null);
-	const sendReqParam = ref([])
+	const sendReqParam = ref({})
 	const processList = ref([])
 	const selectedProcess = ref(null)
-	const selectedEquiment = ref(null)
+	const selectedEquipment = ref(null)
 	const flag = ref(false)
 	const userName = ref(null)
 
@@ -86,7 +89,6 @@
 			deptId: store.curDeptDetails
 		}).then(res => {
 			if (res.code == 200) {
-				console.log(res)
 				for (var i = 0; i < res.rows.length; i++) {
 					processList.value[i] = {
 						text: res.rows[i].processAlias,
@@ -96,13 +98,43 @@
 				selectedProcess.value = res.rows[0].processId;
 			}
 		})
+
+		getEquipmentByUidAndDid(store.userInfo.userId, store.curDeptDetails).then(res => {
+			if (res.code == 200) {
+				getDayWorkItemList({
+					userId: store.userInfo.userId,
+					dayworkId: store.dayworkInfo.id,
+					status: 1
+				}).then(response => {
+					equipmentList.value = res.rows
+					if (response.code = 200) {
+						for (let i = 0; i < res.rows.length; i++) {
+							for (let j = 0; j < response.rows.length; j++) {
+								if (response.rows[j].equipmentDetailId == res.rows[i].commonId) {
+									equipmentList.value.splice(j, 1)
+								}
+							}
+						};
+						for (var i = 0; i < equipmentList.value.length; i++) {
+							equipmentList.value[i] = {
+								text: equipmentList.value[i].commonName,
+								value: equipmentList.value[i]
+							}
+						};
+						selectedEquipment.value = equipmentList.value[0];
+						console.log(selectedEquipment.value)
+					}
+				})
+				selectedEquipment.value = equipmentList.value[0];
+			}
+		})
 		// let reqParam = {
 		// 	userId: userId.value,
 		// 	processId: store.dayworkInfo.currentProcess.id,
 		// }
 		// getUserequipmentList(reqParam).then(res => {
 		// 	if (res.code == 200) {
-		// 		equiments.value = res.rows
+		// 		equipments.value = res.rows
 		// 		getDayWorkItemList({
 		// 			userId: store.userInfo.userId,
 		// 			dayworkId: store.dayworkInfo.id,
@@ -110,14 +142,14 @@
 		// 		}).then(response => {
 		// 			// 过滤人员可选择的设备列表(选择之后不予展示)
 		// 			for (let i = 0; i < response.rows.length; i++) {
-		// 				for (let j = 0; j < equiments.value.length; j++) {
-		// 					if (response.rows[i].equipmentDetailId == equiments.value[j]
+		// 				for (let j = 0; j < equipments.value.length; j++) {
+		// 					if (response.rows[i].equipmentDetailId == equipments.value[j]
 		// 						.equipmentDetailId) {
-		// 						equiments.value.splice(j, 1);
+		// 						equipments.value.splice(j, 1);
 		// 					}
 		// 				}
 		// 			}
-		// 			console.log(equiments.value)
+		// 			console.log(equipments.value)
 		// 			baseDialog.value.open()
 		// 		})
 		// 	}
@@ -151,43 +183,43 @@
 	}
 
 
-	function handleSelection(item) {
-		// const buttonIndex = selection.value.findIndex(selectedItem => selectedItem === item);
-		// if (buttonIndex > -1) {
-		// 	selection.value.splice(buttonIndex, 1); // 取消选中
-		// } else {
-		// 	selection.value.push(item); // 选中
-		// }
-		selection.value[0] = item;
-	}
+	// function handleSelection(item) {
+	// 	// const buttonIndex = selection.value.findIndex(selectedItem => selectedItem === item);
+	// 	// if (buttonIndex > -1) {
+	// 	// 	selection.value.splice(buttonIndex, 1); // 取消选中
+	// 	// } else {
+	// 	// 	selection.value.push(item); // 选中
+	// 	// }
+	// 	selection.value[0] = item;
+	// }
 
 	function handleStart() {
-		if (!selectedProcess.value || !selectedEquiment.value) {
+		if (!selectedProcess.value || !selectedEquipment.value) {
 			uni.showToast({
 				icon: "none",
 				title: "未选择工序或设备"
 			})
-
+			selectedProcess.value = null;
+			selectedEquipment.value = null;
 			return;
 		}
 		close();
 		if (firstItem.value) {
-			sendReqParam.value.push(firstItem.value);
-			sendReqParam.value[i].id = null;
-			sendReqParam.value[i].processId = selectedProcess.value;
-			sendReqParam.value[i].equipmentDetailId = selectedEquiment.value.equipmentDetailId;
-			sendReqParam.value[i].equipmentDetailCode = selectedEquiment.value.equipmentDetailCode;
-			sendReqParam.value[i].startTime = timestampToTime(new Date());
-			sendReqParam.value[i].status = 1;
-
+			sendReqParam.value = {
+				...firstItem.value,
+				processId: selectedProcess.value,
+				equipmentDetailId: selectedEquipment.value.commonId,
+				equipmentDetailCode: selectedEquipment.value.commonCode,
+				startTime: timestampToTime(new Date()),
+				status: 1
+			};
 			emit('handleAddDayWorkItem', sendReqParam.value);
-			selectedProcess.value = null;
-			selectedEquiment.value = null;
 		} else {
-			console.log(selection.value);
-			emit('handleAddDayWorkItem', selection.value);
-			selectedProcess.value = null;
-			selectedEquiment.value = null;
+			emit('handleAddDayWorkItem', {
+				processId: selectedProcess.value,
+				equipmentDetailId: selectedEquipment.value.commonId,
+				equipmentDetailCode: selectedEquipment.value.commonCode
+			});
 		}
 	}
 </script>

+ 4 - 2
pages/recerptSfprod/index.vue

@@ -29,7 +29,7 @@
 			<button class='bottom-btn right-btn' type="primary" @click="handleConfirmReceipt">确定领取</button>
 		</view>
 	</view>
-	<dialog-confirm ref="confirm" @submit="handleDoIt"></dialog-confirm>
+	<dialog-receipt ref="receipt" @submit="handleDoIt"></dialog-receipt>
 </template>
 <script setup>
 	import {
@@ -49,7 +49,7 @@
 	const title = ref(null)
 	const sum = ref(0)
 	const products = ref([])
-	const confirm = ref(null)
+	const receipt = ref(null)
 	const flag = ref(false)
 	const selection = ref([])
 
@@ -111,6 +111,8 @@
 	}
 
 	function handleConfirmReceipt() {
+		let msg = "是否确认接收";
+		receipt.value.open(msg);
 		if (selection.value.length > 0) {
 			let msg = "是否确认接收";
 			confirm.value.open(msg);

+ 12 - 13
pages/reportingForWork/index.vue

@@ -205,27 +205,26 @@
 
 	function handleAddDayWorkItem(data) {
 		console.log(data)
-		if (data[0].dayworkId) { // data里面任意一对象除了设备相关的字段存在,直接给reqParam赋值
-			reqParam.value = data;
+		if (data.dayworkId) { // data里面任意一对象除了设备相关的字段存在,直接给reqParam赋值
+			reqParam.value = {
+				...data,
+				productionPlanId: curPlan.value.productionPlanId,
+				productionPlanDetailId: curPlan.value.id,
+				technologicalProcessId: curPlan.value.technologicalProcessId
+			}
 		} else {
 			// equipmentList.value = data;
 			dayWorkItem.value = {
 				dayworkId: dayWorkInfo.value.id,
 				lotId: dayWorkInfo.value.lotId,
 				productionPlanId: curPlan.value.productionPlanId,
-				productionPlanDetailId: curPlan.value.productionPlanDetailId,
-				productionPlanDetailSubDetailId: curPlan.value.id,
-				processId: store.dayworkInfo.currentProcess.id,
-				technologicalProcessId: store.dayworkInfo.technologicalProcessId,
+				productionPlanDetailId: curPlan.value.id,
+				technologicalProcessId: curPlan.value.technologicalProcessId,
 				status: 1,
-				startTime: timestampToTime(new Date())
-			}
-
-			for (var i = 0; i < data.length; i++) {
-				reqParam.value.push(dayWorkItem.value);
-				reqParam.value[i].equipmentDetailId = data[i].equipmentDetailId;
-				reqParam.value[i].equipmentDetailCode = data[i].equipmentDetailCode;
+				startTime: timestampToTime(new Date()),
+				...data
 			}
+			reqParam.value = dayWorkItem.value;
 		}
 		console.log(reqParam.value)
 		saveDayWorkItemBatch(reqParam.value).then(res => {