Procházet zdrojové kódy

Merge branch 'qingban' of http://139.155.176.112:8091/mes/mes-client-temp into qingban

lupeng před 4 měsíci
rodič
revize
8f1bb0d816

+ 2 - 9
.env.test

@@ -2,13 +2,6 @@
 NODE_ENV='test'
 
 # 代理前缀 测试环境
-VITE_APP_BASE_API = '/prod-api'
-
-# 上传文件接口地址
-VITE_APP_UPLOAD_URL = 'http://192.168.101.4:9000'
-
-# 开发接口地址
-VITE_APP_API_URL = 'http://192.168.101.4:8079'
-
+VITE_APP_BASE_API = '/client-server'
 # Websocket地址
-VITE_WEBSOCKET_URL = 'ws://192.168.101.4:8079'
+VITE_WEBSOCKET_URL = 'ws://139.155.176.112:7101'

+ 1 - 0
package.json

@@ -7,6 +7,7 @@
     "preinstall": "npx only-allow pnpm",
     "dev": "vite serve --mode development",
     "build": "vite build --mode production",
+    "build:test": "vite build --mode test",
     "lint:eslint": "eslint  --fix --ext .ts,.js,.vue ./src ",
     "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"",
     "lint:stylelint": "stylelint  \"**/*.{css,scss,vue}\" --fix",

+ 28 - 1
src/api/prosteps/wuliaocaiji.ts

@@ -8,7 +8,13 @@ export function recordList(data: any) {
     data,
   });
 }
-
+export function accessoryList(data: any) {
+  return request({
+    url: "/api/v1/process/accessoryItemRecord/list",
+    method: "post",
+    data,
+  });
+}
 //采集详情查询
 export function itemInfoList(data: any) {
   return request({
@@ -26,6 +32,13 @@ export function searchMaterial(data: any) {
     data: data,
   });
 }
+export function searchFlMaterial(data: any) {
+  return request({
+    url: "/api/v1/process/accessoryItemRecord/searchMaterial",
+    method: "post",
+    data: data,
+  });
+}
 
 //新增物料采集信息
 export function itemRecordAdd(data: any) {
@@ -58,6 +71,13 @@ export function getCollectHistory(data: any) {
     data,
   });
 }
+export function getFlCollectHistory(data: any) {
+  return request({
+    url: `/api/v1/process/accessoryItemRecord/queryCollectHistory`,
+    method: "post",
+    data,
+  });
+}
 export function saveBatch(data: any) {
   return request({
     url: `/api/v1/process/itemRecord/saveBatch`,
@@ -65,3 +85,10 @@ export function saveBatch(data: any) {
     data,
   });
 }
+export function saveFlBatch(data: any) {
+  return request({
+    url: `/api/v1/process/accessoryItemRecord/saveBatch`,
+    method: "post",
+    data,
+  });
+}

+ 9 - 3
src/components/MessageBox/index.vue

@@ -10,10 +10,10 @@
       <br />
       <el-scrollbar class="itemScrollbar">
         <div class="item" v-for="(item, index) in msgData" :key="index">
-          <div>
+          <div class="box">
             <div>{{ item.created }}</div>
             <div>{{ item.title }}</div>
-            <div>
+            <div class="wordWrap">
               {{ item.content }}
             </div>
           </div>
@@ -143,7 +143,13 @@ watch(value, () => {
     border-radius: 16px;
     justify-content: space-between;
     font-size: $f20;
-
+    .box {
+      width: calc(100% - 10px);
+    }
+    .box div {
+      width: 100%;
+      overflow-wrap: break-word;
+    }
     .operate {
       margin-left: 10px;
     }

+ 4 - 0
src/components/RealTimeMsg/index.vue

@@ -197,11 +197,15 @@ onUnmounted(() => {
 
         .itemContent {
           height: 100%;
+          width: calc(100% - 60px - 20px);
           border-radius: 16px;
           padding: 20px;
           background-color: white;
           font-size: $f20;
         }
+        .itemContent div {
+          word-wrap: break-word; /* 或者使用 overflow-wrap: break-word; */
+        }
 
         .btns {
           width: 60px;

+ 12 - 0
src/views/pro-steps/components/shebeijilu.vue

@@ -83,6 +83,18 @@
         </div>
       </div>
     </div>
+    <div
+      style="
+        height: 100%;
+        width: 100%;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+      "
+      v-if="equitListData.length == 0"
+    >
+      <Empty />
+    </div>
     <PopScanCode
       v-model:inputValue="inputValueVal"
       v-model:showStatus="showStatusVal"

+ 97 - 35
src/views/pro-steps/components/wuliaocaiji.vue

@@ -1,6 +1,14 @@
 <template>
-  <div class="scanCode">
-    <ScanCodeInput v-model="scanCode" @keyup.enter="enterfnc" />
+  <div style="display: flex; justify-content: space-between">
+    <div class="scanCode">
+      <ScanCodeInput v-model="scanCode" @keyup.enter="enterfnc" />
+    </div>
+    <el-button
+      style="height: 50px; font-size: 20px"
+      :type="!flStatus ? 'primary' : 'warning'"
+      @click="flStatus = !flStatus"
+      >{{ flStatus ? "切换为物料采集" : "切换为辅料采集" }}</el-button
+    >
   </div>
   <div v-if="opCompentDataList.length < 1" class="showCodeBody">
     <div class="codeBox">
@@ -8,7 +16,6 @@
         src="@/assets/icons/shaoma.svg"
         style="width: 134px; height: 134px"
       />
-      <div class="codeText">扫码物料码添加物料</div>
     </div>
   </div>
   <div v-else class="materialInfoBody">
@@ -21,13 +28,15 @@
       <div class="leftMsg">
         <div class="nameMsg">{{ item.itemName }}</div>
         <div class="describe">{{ item.itemModel }}</div>
-        <div class="describe">单管需求:{{ item.needNum }}</div>
+        <div class="describe" v-if="!flStatus">
+          单管需求:{{ item.needNum }}
+        </div>
       </div>
       <div class="rightMsg">
         <div class="showSeq" @click.stop="showSeq(item.batchNoList)">
-          <el-button type="text"> 查看已绑号 </el-button>
+          <el-button type="text"> 查看已绑批次号 </el-button>
         </div>
-        <div class="info">
+        <div v-if="!flStatus" class="info">
           <div class="describe">可采集数量:</div>
           <div class="sum">{{ item.surplusNum }}</div>
         </div>
@@ -35,7 +44,15 @@
       <svg-icon class="svgStyle" icon-class="jiaobiao" size="25" />
     </div>
   </div>
+
   <xiangqingPopUp
+    v-if="!flStatus"
+    v-model="showXQ"
+    :showInfo="seqInfoList"
+    @data-list="getOpCompentData"
+  />
+  <flXiangqingPopUp
+    v-else
     v-model="showXQ"
     :showInfo="seqInfoList"
     @data-list="getOpCompentData"
@@ -45,20 +62,24 @@
 
 <script setup>
 import ScanCodeInput from "@/components/ScanCodeInput/index.vue";
-
+import flXiangqingPopUp from "../popUpView/flXiangqingPopUp.vue";
 import xiangqingPopUp from "../popUpView/xiangqingPopUp.vue";
 import seqPopUp from "../popUpView/seqPopUp.vue";
 import {
   getInfo,
   itemRecordAdd,
   recordList,
+  accessoryList,
   searchMaterial,
   getCollectHistory,
+  searchFlMaterial,
+  getFlCollectHistory,
 } from "@/api/prosteps/wuliaocaiji";
 import { useProcessStore } from "@/store";
 defineOptions({
   name: "Wuliaocaiji",
 });
+const flStatus = ref(false);
 const caijiRef = ref(null);
 const store = useProcessStore();
 const scanCode = ref("");
@@ -68,15 +89,27 @@ const showCJ = ref(false);
 const showSEQ = ref(false);
 const seqInfoList = ref([]);
 const getHistroyList = async (item) => {
-  const { data } = await getCollectHistory({
-    itemCode: item.itemCode,
-    operationId: store.odersData.operationId,
-    pageNo: 1,
-    pageSize: 9999,
-    processId: store.scanInfo.id,
-    workOrderCode: store.odersData.workOrderCode,
-  });
-  seqInfoList.value = data[0];
+  if (!flStatus.value) {
+    const { data } = await getCollectHistory({
+      itemCode: item.itemCode,
+      operationId: store.odersData.operationId,
+      pageNo: 1,
+      pageSize: 9999,
+      processId: store.scanInfo.id,
+      workOrderCode: store.odersData.workOrderCode,
+    });
+    seqInfoList.value = data[0];
+  } else {
+    const { data } = await getFlCollectHistory({
+      itemCode: item.itemCode,
+      operationId: store.odersData.operationId,
+      pageNo: 1,
+      pageSize: 9999,
+      processId: store.scanInfo.id,
+      workOrderCode: store.odersData.workOrderCode,
+    });
+    seqInfoList.value = data[0];
+  }
 };
 const showSeqData = ref([]);
 const showSeq = (data) => {
@@ -97,16 +130,30 @@ const enterfnc = async () => {
   }
   scanCode.value = "";
   scanCodeCopyValue.value = str;
-  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") {
-    seqInfoList.value = data[0];
-    showXQ.value = true;
+  if (flStatus.value == false) {
+    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") {
+      seqInfoList.value = data[0];
+      showXQ.value = true;
+    }
+  } else {
+    const { code, data } = await searchFlMaterial({
+      operationId: store.odersData.operationId,
+      processId: store.scanInfo.id,
+      seqNo: store.scanInfo.seqNo,
+      scanCode: str,
+      workOrderCode: store.odersData.workOrderCode,
+    });
+    if (code == "200") {
+      seqInfoList.value = data[0];
+      showXQ.value = true;
+    }
   }
 };
 const opCompentDataList = ref([]);
@@ -162,20 +209,35 @@ const submit = () => {
 
 //获取tag列表数据
 const getOpCompentData = async () => {
-  const { data } = await recordList({
-    operationId: store.odersData.operationId,
-    workOrderCode: store.odersData.workOrderCode,
-    seqNo: store.scanInfo.seqNo,
-    processId: store.scanInfo.id,
-    pageNo: 1,
-    pageSize: 9999,
-  });
-  opCompentDataList.value = data;
+  if (flStatus.value == false) {
+    const { data } = await recordList({
+      operationId: store.odersData.operationId,
+      workOrderCode: store.odersData.workOrderCode,
+      seqNo: store.scanInfo.seqNo,
+      processId: store.scanInfo.id,
+      pageNo: 1,
+      pageSize: 9999,
+    });
+    opCompentDataList.value = data;
+  } else {
+    const { data } = await accessoryList({
+      operationId: store.odersData.operationId,
+      workOrderCode: store.odersData.workOrderCode,
+      seqNo: store.scanInfo.seqNo,
+      processId: store.scanInfo.id,
+      pageNo: 1,
+      pageSize: 9999,
+    });
+    opCompentDataList.value = data;
+  }
 };
 const input = ref("");
 onMounted(() => {
   getOpCompentData();
 });
+watch(flStatus, (value) => {
+  getOpCompentData();
+});
 </script>
 
 <style lang="scss" scoped>

+ 1 - 3
src/views/pro-steps/index.vue

@@ -81,10 +81,9 @@
 import OperationBar from "@/views/pro-steps/operationBar.vue";
 import { useProcessStore } from "@/store";
 import { getOpCompent } from "@/api/prosteps";
-
+defineOptions({ name: "ProSteps" });
 const store = useProcessStore();
 const key = ref(false);
-defineOptions({ name: "ProSteps" });
 const route = useRoute();
 const router = useRouter();
 const loading = ref(false);
@@ -174,7 +173,6 @@ const defaultComponents = [
 ];
 //当前路由在setpComponents中的index
 const selectIndex = ref(0);
-
 //配置data固定路由参数等
 const setStepComponents = (data) => {
   let resData = [];

+ 434 - 0
src/views/pro-steps/popUpView/flXiangqingPopUp.vue

@@ -0,0 +1,434 @@
+<template>
+  <!-- 辅料采集详情界面 -->
+  <div class="popUp" v-if="modelValue">
+    <div class="header" style="height: 3vh">
+      <div class="headerTittle" style="font-weight: border; font-size: 28px">
+        辅料采集详情
+      </div>
+    </div>
+    <div
+      class="header"
+      style="display: flex; justify-content: center; margin: 20px"
+    >
+      <div class="box" @click.stop>
+        <div class="boxItem">
+          <div class="describeText">
+            需采集物料:{{ showInfo.materialName }}
+          </div>
+          <div class="describeText">物料编码:{{ showInfo.materialCode }}</div>
+          <div class="describeText">型号:{{ showInfo.spec }}</div>
+        </div>
+      </div>
+    </div>
+    <div class="body">
+      <div class="container1" @click.stop>
+        <div class="boxTittle">
+          批次号列表(共&nbsp;{{ batchNoTableData.length }}&nbsp;批次)
+        </div>
+        <el-divider style="margin-top: 20px !important" />
+        <div style="display: flex; margin-bottom: 20px; align-items: center">
+          <div class="seqSearchInput">
+            <!-- <el-input
+              v-model="searchBatchNo"
+              placeholder="搜索批次号"
+              class="searchInput"
+              clearable
+            /> -->
+          </div>
+          <!-- <el-button style="width: 300px" type="success" @click="autoAll"
+            >按需全批次自动绑定</el-button
+          > -->
+        </div>
+
+        <el-table
+          border
+          class="seqTable"
+          :data="showBatchNoTableData"
+          style="flex: 1"
+        >
+          <el-table-column align="center" label="批次号" prop="batchNo" />
+          <el-table-column align="center" label="绑定管号">
+            <template #default="scope">
+              <el-scrollbar max-height="300px">
+                <el-select
+                  multiple
+                  clearable
+                  filterable
+                  placeholder="管号"
+                  v-model="batchNoTableData[scope.$index].seqList"
+                >
+                  <template #header>
+                    <el-checkbox @change="handleCheckAll(scope.$index)">
+                      全选
+                    </el-checkbox>
+                  </template>
+                  <el-option
+                    v-for="item in seqList"
+                    :key="item"
+                    :label="item"
+                    :value="item"
+                  >
+                  </el-option>
+                </el-select>
+              </el-scrollbar>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column align="center" width="160" label="操作">
+            <template #default="scope">
+              <el-button style="width: 120px" type="primary"
+                >按需自动绑定</el-button
+              >
+            </template>
+          </el-table-column> -->
+          <template #empty>
+            <div class="empty">
+              <Empty />
+            </div>
+          </template>
+        </el-table>
+        <div class="btns">
+          <el-button type="primary" @click="submit">绑定确认</el-button>
+          <el-button @click="handleClose">取消</el-button>
+        </div>
+      </div>
+      <div class="container2" @click.stop>
+        <div class="boxTittle">管号列表(共 {{ seqList.length }} 个 )</div>
+        <el-divider />
+        <div style="display: flex; margin-bottom: 20px; align-items: center">
+          <div class="seqSearchInput">
+            <el-input
+              v-model="searchSeqNo"
+              placeholder="搜索管号"
+              class="searchInput"
+              clearable
+            />
+          </div>
+          <!-- <el-button @click="seqNoOk = true" :type="seqNoOk ? 'primary' : ''"
+            >完成绑定</el-button
+          >
+          <el-button :type="!seqNoOk ? 'primary' : ''" @click="seqNoOk = false"
+            >未完成</el-button
+          > -->
+        </div>
+        <el-table border class="seqTable" :data="showSeqData" style="flex: 1">
+          <el-table-column align="center" label="管号" prop="seqNo" />
+          <el-table-column
+            align="center"
+            label="批次号绑定情况"
+            prop="bodyatchNoList"
+          >
+            <template #default="scope">
+              <template
+                v-if="scope.row.batchNoList.length > 0"
+                v-for="item in scope.row.batchNoList"
+              >
+                <div>批次号: {{ item }}</div>
+              </template>
+              <span v-else>-</span>
+            </template>
+          </el-table-column>
+
+          <template #empty>
+            <div class="empty">
+              <Empty />
+            </div>
+          </template>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { useProcessStore } from "@/store";
+import { getunProcessedList } from "@/api/prosteps";
+import { saveFlBatch } from "@/api/prosteps/wuliaocaiji.ts";
+import { useUserStore } from "@/store";
+import { includes } from "lodash-es";
+const props = defineProps({
+  modelValue: {
+    type: Boolean,
+    default: false,
+  },
+  showInfo: {
+    type: Object,
+  },
+});
+const searchBatchNo = ref("");
+const searchSeqNo = ref("");
+const handleCheckAll = (index) => {
+  batchNoTableData.value[index].seqList = seqList.value;
+};
+const showBatchNoTableData = computed(() => {
+  let array = JSON.parse(JSON.stringify(batchNoTableData.value));
+  if (searchBatchNo.value) {
+    const lowerCaseSearchValue = searchBatchNo.value.toLowerCase();
+    array = array.filter(
+      (item) =>
+        item.batchNo &&
+        item.batchNo.toLowerCase().includes(lowerCaseSearchValue)
+    );
+  }
+  return array;
+});
+const store1 = useUserStore();
+const emits = defineEmits(["update:modelValue", "dataList"]);
+const store = useProcessStore();
+//批次号绑定
+const batchNoTableData = ref([]);
+const setBatchNo = () => {
+  const array = [];
+  if (props.showInfo.batchNoList.length > 0) {
+    for (let i = 0; i < props.showInfo.batchNoList.length; i++) {
+      array.push({
+        batchNo: props.showInfo.batchNoList[i],
+        seqList: [],
+      });
+    }
+  }
+  //回显逻辑
+  if (props.showInfo.collectList.length > 0) {
+    for (let i = 0; i < array.length; i++) {
+      for (let j = 0; j < props.showInfo.collectList.length; j++) {
+        if (props.showInfo.collectList[j].batchNo.includes(array[i].batchNo)) {
+          array[i].seqList.push(props.showInfo.collectList[j].seqNo);
+        }
+      }
+    }
+  }
+  batchNoTableData.value = array;
+};
+//获取当前物料绑定管号
+const seqTableData = ref([]);
+const getSeqList = async () => {
+  const { data } = await getunProcessedList(store.scanInfo.id);
+  seqList.value = data;
+};
+const setSeqTableData = () => {
+  seqTableData.value = [];
+  for (let i = 0; i < seqList.value.length; i++) {
+    seqTableData.value.push({
+      seqNo: seqList.value[i],
+      batchNoList: [],
+    });
+  }
+};
+const showSeqData = computed(() => {
+  let array = JSON.parse(JSON.stringify(seqTableData.value));
+  let obj = {};
+  for (let j = 0; j < batchNoTableData.value.length; j++) {
+    obj[batchNoTableData.value[j].batchNo] = batchNoTableData.value[j].seqList;
+  }
+
+  for (let i = 0; i < array.length; i++) {
+    for (let j = 0; j < batchNoTableData.value.length; j++) {
+      if (obj[batchNoTableData.value[j].batchNo].includes(array[i].seqNo)) {
+        array[i].batchNoList.push(batchNoTableData.value[j].batchNo);
+      }
+    }
+  }
+  if (searchSeqNo.value) {
+    const lowerCaseSearchValue = searchSeqNo.value.toLowerCase();
+    array = array.filter(
+      (item) =>
+        item.seqNo && item.seqNo.toLowerCase().includes(lowerCaseSearchValue)
+    );
+  }
+  return array;
+});
+const submit = async () => {
+  const array = ref([]);
+  batchNoTableData.value.forEach((item) => {
+    if (item.seqList.length > 0) {
+      array.value.push({
+        itemCode: props.showInfo.materialCode,
+        itemModel: props.showInfo.spec,
+        itemName: props.showInfo.materialName,
+        operationId: store.scanInfo.operationId,
+        operationName: store.scanInfo.operationName,
+        processId: store.scanInfo.id,
+        workOrderCode: store.odersData.workOrderCode,
+        trackBy: store1.user.username,
+        seqNoList: item.seqList,
+        batchNo: item.batchNo,
+      });
+    }
+  });
+  if (array.value.length < 1) {
+    ElMessage.error("请先绑定物料!");
+    return;
+  }
+  const { code } = await saveFlBatch(array.value);
+  if (code == "200") {
+    ElMessage.success("采集成功!");
+    handleClose();
+    dataList();
+  }
+};
+//更新外部列表
+const dataList = () => {
+  emits("dataList");
+};
+
+const handleClose = () => {
+  emits("update:modelValue", false);
+};
+//当前所有管号
+const seqList = ref([]);
+
+watch(
+  () => props.showInfo,
+  async () => {
+    if (props.showInfo) {
+      await getSeqList();
+      setBatchNo();
+      setSeqTableData();
+    }
+  }
+);
+</script>
+
+<style>
+.el-table .warning-row {
+  --el-table-tr-bg-color: var(--el-color-warning-light-9);
+}
+.el-table .success-row {
+  --el-table-tr-bg-color: var(--el-color-success-light-9);
+}
+</style>
+<style lang="scss" scoped>
+.selectInfo {
+  margin-bottom: 5px;
+}
+
+:deep(.el-form-item) {
+  margin-bottom: 5px !important;
+}
+
+.sumFail {
+  color: black;
+}
+.sumOk {
+  color: green;
+}
+.describeText {
+  font-size: 20px !important;
+  font-weight: bolder;
+  color: black;
+}
+.searchInput {
+  height: 40px;
+}
+:deep(.el-input__wrapper) {
+  height: 40px !important;
+}
+:deep(.el-table__cell) {
+  font-size: 18px !important;
+}
+.el-divider {
+  margin-bottom: 10px;
+}
+.el-button {
+  width: 180px;
+  height: 40px;
+  font-size: 18px;
+  border-radius: 10px;
+}
+.describeText {
+  line-height: 25px !important;
+}
+.seqTable {
+  border-radius: 16px;
+}
+.boxTittle {
+  font-size: 18px;
+  font-weight: bolder;
+  text-align: center;
+  height: 1vh;
+}
+.popUp {
+  position: fixed;
+  width: 100vw;
+  height: 100vh;
+  z-index: 999;
+  background-color: #00000030;
+  top: 0;
+  left: 0;
+  backdrop-filter: blur(5px);
+  .header {
+    margin: 0;
+    .box {
+      width: 95vw;
+      height: 6vh;
+      background-color: #f1f3f5;
+      border-radius: 16px;
+      padding: 10px;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-evenly;
+      .boxItem {
+        display: flex;
+        justify-content: space-between;
+        padding: 0 5%;
+        .describeText {
+          font-size: 18px;
+        }
+      }
+    }
+  }
+  .body {
+    width: 100vw;
+    height: 85vh;
+    display: flex;
+    justify-content: space-evenly;
+    .container1 {
+      width: 60vw;
+      height: 100%;
+      background-color: #f1f3f5;
+      border-radius: 16px;
+      padding: 10px;
+      display: flex;
+      flex-direction: column;
+      .seqSearchInput {
+        margin-right: 10px;
+        width: 40%;
+        max-width: 360px;
+      }
+      .btns {
+        padding-top: 10px;
+        display: flex;
+        justify-content: space-evenly;
+        align-items: center;
+      }
+    }
+    .container2 {
+      width: 32vw;
+      height: 100%;
+      background-color: #f1f3f5;
+      border-radius: 16px;
+      padding: 10px;
+      display: flex;
+      flex-direction: column;
+      .seqSearchInput {
+        margin-right: 10px;
+        width: 40%;
+        max-width: 360px;
+      }
+      .btns {
+        height: 8vh;
+        display: flex;
+        justify-content: space-evenly;
+        align-items: center;
+      }
+    }
+  }
+}
+.headerTittle {
+  width: 100%;
+  height: 55px;
+  text-align: center;
+  line-height: 55px;
+  font-size: 38px;
+  font-weight: 500;
+}
+</style>

+ 1 - 1
src/views/pro-steps/popUpView/seqPopUp.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="midPopUp" v-if="modelValue" @click.stop="handleClose">
     <div class="container" @click.stop>
-      <div class="headerTittle">已绑号</div>
+      <div class="headerTittle">已绑批次号</div>
 
       <el-divider />
       <el-scrollbar>

+ 3 - 1
src/views/pro-steps/popUpView/xiangqingPopUp.vue

@@ -1,4 +1,5 @@
 <template>
+  <!-- 物料采集详情界面 -->
   <div class="popUp" v-if="modelValue">
     <div class="header" style="height: 3vh">
       <div class="headerTittle" style="font-weight: border; font-size: 28px">
@@ -14,7 +15,8 @@
           <div class="describeText">
             需采集物料:{{ showInfo.materialName }}
           </div>
-          <div class="describeText">型号:{{ showInfo.materialCode }}</div>
+          <div class="describeText">物料编码:{{ showInfo.materialCode }}</div>
+          <div class="describeText">型号:{{ showInfo.spec }}</div>
           <div class="describeText">单管需要:{{ showInfo.totalNum }}</div>
         </div>
       </div>