浏览代码

bug修复

dengrui 9 月之前
父节点
当前提交
2c43800b8b

文件差异内容过多而无法显示
+ 4 - 0
src/assets/icons/bianhao.svg


文件差异内容过多而无法显示
+ 5 - 0
src/assets/icons/jianyan.svg


文件差异内容过多而无法显示
+ 6 - 0
src/assets/icons/weiwai.svg


+ 3 - 2
src/components/ScanCodeInput/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-input class="scanInput" v-bind="$attrs">
+  <el-input class="scanInput" clearable v-bind="$attrs">
     <template #prefix>
       <img src="@/assets/icons/shaoma.svg" />
     </template>
@@ -21,7 +21,8 @@
   color: #00000080;
 
   :deep(.el-input__wrapper) {
-    box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color)) inset;
+    box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color))
+      inset;
     cursor: default;
 
     .el-input__inner {

+ 34 - 5
src/views/pro-operation/inspect/components/checkForm.vue

@@ -1,10 +1,17 @@
 <template>
   <el-form ref="formRef" :model="modelValue" :rules="rules" label-width="120px">
-    <el-form-item label="检验项名称" prop="checkName">
+    <!-- <el-form-item label="检验项名称" prop="checkName">
       <el-input v-model="modelValue.checkName" />
-    </el-form-item>
+    </el-form-item> -->
     <el-form-item label="检验内容" prop="checkContent">
-      <el-input v-model="modelValue.checkContent" type="textarea" />
+      <el-select v-model="modelValue.checkContent">
+        <el-option
+          v-for="(item, index) in options"
+          :key="index"
+          :label="item.label"
+          :value="item.label"
+        />
+      </el-select>
     </el-form-item>
     <el-form-item label="结果" prop="result">
       <el-select v-model="modelValue.result">
@@ -32,14 +39,26 @@
 </template>
 <script setup>
 import { useProcessStore } from "@/store/modules/processView";
-
+import { checkList } from "@/api/prosteps/dianjian";
+const processStore = useProcessStore();
+const checkListData = ref([]);
+const getCheckOpList = async () => {
+  const { data } = await checkList({
+    operationId: Number(processStore.odersData.operationId),
+    processId: Number(processStore.scanInfo.id),
+    seqNo: processStore.scanInfo.seqNo,
+    pageSize: 9999,
+    pageNo: 1,
+  });
+  checkListData.value = data;
+};
 const rules = reactive({
   checkContent: [{ required: true, trigger: "blur" }],
   checkName: [{ required: true, trigger: "blur" }],
   result: [{ required: true, trigger: "blur" }],
   seqNoList: [{ required: true, trigger: "blur" }],
 });
-const processStore = useProcessStore();
+
 const uploadRef = ref(null);
 const setFileList = (value) => {
   uploadRef.value.resetFileList(value);
@@ -61,8 +80,18 @@ const getSeq = async () => {
     seqNoList: SeqArray.value,
   });
 };
+const options = computed(() => {
+  let arr = [];
+  for (let i = 0; i < checkListData.value.length; i++) {
+    arr.push({
+      label: checkListData.value[i].content,
+    });
+  }
+  return arr;
+});
 onMounted(() => {
   getSeq();
+  getCheckOpList();
 });
 const fileName = inject("fileName");
 watch(

+ 4 - 1
src/views/pro-operation/inspect/index.vue

@@ -66,7 +66,7 @@
           style="height: calc(100vh - 250px); border-radius: 16px"
         >
           <el-table-column label="序号" type="index" width="80" />
-          <el-table-column label="检验项名称" prop="checkName" />
+          <!-- <el-table-column label="检验项名称" prop="checkName" /> -->
           <el-table-column label="检验项内容" prop="checkContent" />
           <el-table-column label="流转卡号" prop="seqNo" />
           <el-table-column label="备注" prop="remark" />
@@ -153,6 +153,7 @@ import {
   editCheckList,
   getCheckList,
 } from "@/api/inspect";
+
 import { useProcessStore } from "@/store/modules/processView";
 import { useInspectStore } from "@/store/modules/inspect";
 import { downloadFile } from "@/utils/downLoad";
@@ -169,6 +170,7 @@ const editCheck = async (row) => {
   formData.value.checkName = row.checkName;
   formData.value.result = row.result;
   formData.value.remark = row.remark;
+  formData.value.id = row.id;
   formData.value.seqNoList = [processStore.useSeqNo];
   editStatus.value = true;
   if (row.filePath) {
@@ -177,6 +179,7 @@ const editCheck = async (row) => {
     }, 0);
   }
 };
+
 const search = ref({
   limit: 10,
   page: 1,

+ 6 - 6
src/views/pro-steps/components/jiluxiang.vue

@@ -305,17 +305,19 @@ onMounted(() => {
 
 .operateBody {
   width: 100%;
-  height: calc(100% - 130px);
+  height: calc(100%);
 }
 
 .recordBody {
   width: 100%;
-  height: calc(100% - 130px);
+  height: calc(100% - 80px);
   display: flex;
 
   .left {
     width: 50%;
     height: calc(100%);
+    display: flex;
+    justify-content: space-between;
 
     .infoBox {
       display: inline-block;
@@ -324,11 +326,9 @@ onMounted(() => {
       height: 180px;
       background-color: white;
       border-radius: 16px;
-      margin: 10px;
-      margin-top: 0px;
-      box-sizing: border-box;
       padding: 20px;
-
+      margin: 0 5px;
+      margin-bottom: 5px;
       .textarea {
         display: -webkit-box;
         -webkit-box-orient: vertical;

+ 4 - 4
src/views/pro-steps/components/operates.vue

@@ -82,6 +82,10 @@ const stepComponents = ref([
     compentType: "bianhao",
   },
   {
+    compentName: "报工",
+    compentType: "baogong",
+  },
+  {
     compentName: "图纸",
     compentType: "tuzhi",
   },
@@ -93,10 +97,6 @@ const stepComponents = ref([
     compentName: "报故",
     compentType: "baogu",
   },
-  {
-    compentName: "报工",
-    compentType: "baogong",
-  },
 ]);
 </script>
 

+ 23 - 25
src/views/pro-steps/components/wuliaocaiji.vue

@@ -15,7 +15,7 @@
     <div
       v-for="(item, index) in opCompentDataList"
       :class="[
-        item.needNum - item.realNum === 0
+        item.needNum - item.realNum <= 0
           ? 'infoMsg infoMsgImg blueBgClass'
           : 'infoMsg whiteBgClass',
       ]"
@@ -29,7 +29,13 @@
         <div class="describe">需求:{{ Number(item.needNum) }}</div>
       </div>
       <div v-if="item.needNum - item.realNum != 0" class="rightMsg">
-        <div class="sum">{{ Number(item.needNum) - Number(item.realNum) }}</div>
+        <div class="sum">
+          {{
+            Number(item.needNum) - Number(item.realNum) < 0
+              ? 0
+              : Number(item.needNum) - Number(item.realNum)
+          }}
+        </div>
         <div class="describe">还需采集</div>
       </div>
       <svg-icon class="svgStyle" icon-class="jiaobiao" size="25" />
@@ -87,11 +93,13 @@ const enterfnc = async () => {
     workOrderCode: store.odersData.workOrderCode,
   });
   if (code == "200") {
+    data[0].itemSeq = scanCodeCopyValue.value;
     scanData.value = data;
     showCJ.value = true;
   }
 };
 const opCompentDataList = ref([]);
+provide("opCompentDataList", opCompentDataList);
 //通过id获取详情
 const getInfoById = async (item) => {
   const { data } = await getInfo({
@@ -103,32 +111,22 @@ const getInfoById = async (item) => {
   showInfo.value = item;
 };
 const toXQPop = async (itemName) => {
-  await getInfoById(item);
+  await getInfoById(itemName);
   showXQ.value = true;
 };
 //提交录入信息
-const submitRecordAdd = async (index) => {
-  const chooseData = scanData.value[index];
-  if (!chooseData) {
-    ElMessage.error("请先选择物料,并确定数量在提交录入信息");
-    return;
-  }
-  if (!chooseData.num) {
-    ElMessage.error("请输入数量!");
-    return;
-  }
-  const { code, data } = await itemRecordAdd({
-    itemCode: chooseData.materialCode,
-    itemModel: chooseData.spec,
-    itemName: chooseData.materialName,
-    itemSeq: scanCodeCopyValue.value,
-    operationId: store.odersData.operationId,
-    processId: store.scanInfo.id,
-    num: chooseData.num,
-    seqNo: store.scanInfo.seqNo,
-    trackBy: "S",
-    workOrderCode: store.odersData.workOrderCode,
+const submitRecordAdd = async () => {
+  let array = JSON.parse(JSON.stringify(scanData.value));
+
+  array.forEach((element) => {
+    element.operationId = store.odersData.operationId;
+    element.processId = store.scanInfo.id;
+    element.seqNo = store.scanInfo.seqNo;
+    element.trackBy = "S";
+    element.workOrderCode = store.odersData.workOrderCode;
   });
+
+  const { code, data } = await itemRecordAdd(array);
   if (code == "200") {
     showCJ.value = false;
     ElMessage.success("录入成功");
@@ -160,7 +158,7 @@ onMounted(() => {
 
 <style lang="scss" scoped>
 .scanCode {
-  width: 40%;
+  width: 100%;
   margin-top: $p5;
 }
 

+ 91 - 3
src/views/pro-steps/popUpView/caijiRightPopUp.vue

@@ -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;

+ 2 - 2
src/views/pro-steps/popUpView/xiangqingPopUp.vue

@@ -16,7 +16,7 @@
           <div class="sumBox">
             <div class="describeText">录入数量</div>
             <div class="sum">
-              {{ showInfo.realNum }}
+              {{ showInfo.realNum ? showInfo.realNum : 0 }}
             </div>
           </div>
         </div>
@@ -30,7 +30,7 @@
             :key="index"
           >
             {{ item.batchNo }} &nbsp;&nbsp;&nbsp;&nbsp;* {{ item.num }}
-            <span style="margin-right: 10px;"></span>
+            <span style="margin-right: 10px"></span>
           </div>
           <Empty v-if="showInfoData.length == 0" />
         </div>

+ 38 - 12
src/views/process/components/transferNum.vue

@@ -59,19 +59,45 @@ const store = useProcessStore();
 const dictS = useDictionaryStore();
 const selectSeqIndex = inject("selectSeqIndex");
 const selectSeqArray = inject("selectSeqArray");
-const fz = async (index: any) => {
-  // try {
-  //   const text = refArray.value[index].textContent;
-  //   // 确保 text 是正确的
-  //   console.log("准备复制的文本:", text);
-  //   // 使用 await 处理异步操作
-  //   await navigator.clipboard.writeText(text);
-  //   ElMessage.success("复制成功");
-  //   console.log("复制的文本:", text);
-  // } catch (err) {
-  //   console.error("复制失败:", err);
-  // }
+const fz = (index: any) => {
+  const text = refArray.value[index].textContent;
+  copyTextUsingTextarea(text);
 };
+
+const copyTextUsingTextarea = (text: string) => {
+  let textArea = document.createElement("textarea");
+  textArea.value = text;
+  textArea.style.position = "absolute";
+  textArea.style.opacity = "0";
+  textArea.style.left = "-9999px";
+  textArea.style.top = "-9999px";
+  document.body.appendChild(textArea);
+  textArea.focus();
+  textArea.select();
+  try {
+    const result = document.execCommand("copy");
+    showCopyMessage(result);
+  } catch (err) {
+    showCopyMessage(false);
+  }
+
+  textArea.remove();
+};
+
+const showCopyMessage = (success: boolean) => {
+  if (success) {
+    ElMessage({
+      type: "success",
+      message: "复制成功!",
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      message: "复制失败!",
+    });
+  }
+};
+
 const clickCardNum = (index: number) => {
   selectSeqIndex.value = index;
   store.useSeqNo = selectSeqArray.value[selectSeqIndex.value].seqNo;