|
@@ -4,13 +4,13 @@
|
|
|
<div class="headerTittle">物料采集</div>
|
|
|
<div class="header">
|
|
|
<div class="inputBox">
|
|
|
- <ScanCodeInput v-model="showSeqNo" />
|
|
|
+ <ScanCodeInput v-model="scanCode" @keyup.enter="enterfnc" />
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-scrollbar>
|
|
|
<div class="body">
|
|
|
<div
|
|
|
- class="infoBox"
|
|
|
+ :class="successStaus(item.materialCode) ? 'infoBox' : 'infoBox bg'"
|
|
|
v-for="(item, index) in scanData"
|
|
|
@click="setSelectIndex(index)"
|
|
|
:key="index"
|
|
@@ -31,7 +31,7 @@
|
|
|
<template v-if="selectIndex == index">
|
|
|
<NumberInput v-model="item.num" :max="item.needNum" />
|
|
|
</template>
|
|
|
- <div v-else class="titleText">0</div>
|
|
|
+ <div v-else class="titleText">{{ item.num }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -49,6 +49,79 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
+import {
|
|
|
+ getInfo,
|
|
|
+ itemRecordAdd,
|
|
|
+ recordList,
|
|
|
+ searchMaterial,
|
|
|
+} from "@/api/prosteps/wuliaocaiji";
|
|
|
+import { useProcessStore } from "@/store";
|
|
|
+const scanCode = ref("");
|
|
|
+const store = useProcessStore();
|
|
|
+const scanCodeCopyValue = ref("");
|
|
|
+const opCompentDataList = inject("opCompentDataList");
|
|
|
+//获取当前扫码总物料code code 以及是否数量满足 status
|
|
|
+const resArray = ref([]);
|
|
|
+const successStaus = (code: any) => {
|
|
|
+ let res = true;
|
|
|
+ for (let i = 0; i < resArray.value.length; i++) {
|
|
|
+ if (code == resArray.value[i].code) {
|
|
|
+ res = resArray.value[i].status;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return res;
|
|
|
+};
|
|
|
+const getRes = () => {
|
|
|
+ console.log("111");
|
|
|
+ resArray.value = [];
|
|
|
+ opCompentDataList.value.forEach((item) => {
|
|
|
+ resArray.value.push({
|
|
|
+ code: item.itemCode,
|
|
|
+ status: true,
|
|
|
+ needNum: item.needNum,
|
|
|
+ });
|
|
|
+ });
|
|
|
+ console.log(resArray.value, 222);
|
|
|
+ for (let i = 0; i < resArray.value.length; i++) {
|
|
|
+ let num = 0;
|
|
|
+ for (let j = 0; j < scanData.value.length; j++) {
|
|
|
+ if (resArray.value[i].code == scanData.value[j].materialCode) {
|
|
|
+ num += scanData.value[j].num;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log(num, resArray.value[i].needNum, 222);
|
|
|
+ if (resArray.value[i].needNum <= num) {
|
|
|
+ resArray.value[i].status = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+const enterfnc = async () => {
|
|
|
+ let str = scanCode.value;
|
|
|
+ scanCodeCopyValue.value = scanCode.value;
|
|
|
+ scanCode.value = "";
|
|
|
+ const { code, data } = await searchMaterial({
|
|
|
+ operationId: store.odersData.operationId,
|
|
|
+ processId: store.scanInfo.id,
|
|
|
+ seqNo: store.scanInfo.seqNo,
|
|
|
+ scanCode: str,
|
|
|
+ workOrderCode: store.odersData.workOrderCode,
|
|
|
+ });
|
|
|
+ if (code == "200") {
|
|
|
+ let newData = data[0];
|
|
|
+ for (let i = 0; i < resArray.value.length; i++) {
|
|
|
+ if ((resArray.value[i].code = newData.materialCode)) {
|
|
|
+ for (let i = 0; i < resArray.value.length; i++) {
|
|
|
+ if (resArray.value[i].status == false) {
|
|
|
+ ElMessage.error("该物料数量已经满足需求数量,请勿再次添加");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newData.itemSeq = scanCodeCopyValue.value;
|
|
|
+ scanData.value.push(newData);
|
|
|
+ }
|
|
|
+};
|
|
|
const emits = defineEmits(["update:modelValue", "submit"]);
|
|
|
const props = defineProps({
|
|
|
modelValue: {
|
|
@@ -72,6 +145,15 @@ const handleClose = () => {
|
|
|
const showSeqNo = computed(() => {
|
|
|
return props.seqNo;
|
|
|
});
|
|
|
+watch(
|
|
|
+ () => scanData.value,
|
|
|
+ () => {
|
|
|
+ getRes();
|
|
|
+ },
|
|
|
+ {
|
|
|
+ deep: true,
|
|
|
+ }
|
|
|
+);
|
|
|
defineExpose({
|
|
|
selectIndex,
|
|
|
});
|
|
@@ -93,6 +175,12 @@ defineExpose({
|
|
|
}
|
|
|
|
|
|
.body {
|
|
|
+ .bg {
|
|
|
+ background-color: rgb(100, 187, 92) !important;
|
|
|
+ div {
|
|
|
+ color: white;
|
|
|
+ }
|
|
|
+ }
|
|
|
.infoBox {
|
|
|
width: 100%;
|
|
|
height: 200px;
|