ezhizao_zx 1 year ago
parent
commit
e1a94d78dc
2 changed files with 96 additions and 207 deletions
  1. 53 18
      src/views/business/lot/InBatchesDialog.vue
  2. 43 189
      src/views/business/lot/index.vue

+ 53 - 18
src/views/business/lot/InBatchesDialog.vue

@@ -68,7 +68,7 @@
             <div style="display: flex; flex-direction: row;">
               <div style="line-height: 32px;">分批信息</div>
               <el-form-item label="分批数量" style="margin-bottom: 0px;">
-                <el-input-number v-model="baseLot.sparateNum" :controls="false" @blur="handleNumBlur" />
+                <el-input-number v-model="baseLot.sparateNum" :controls="false" @blur="handleNumBlur" :max="10" />
               </el-form-item>
             </div>
             <el-divider />
@@ -90,10 +90,16 @@
               </el-col>
               <el-col :span="8">
                 <el-form-item label="分批载具:">
-                  <el-select-v2 v-model="e.carrierSelection"
+                  <!-- <el-select-v2 v-model="e.carrierSelection"
                     :disabled="e.id === baseLot.id || baseLot.currentDept == null" multiple filterable
                     collapse-tags-tooltip collapse-tags clearable :options="carriers" placeholder="请选择载具"
-                    style="width: 100%" />
+                    style="width: 100%" /> -->
+                  <el-select v-model="e.carrierSelection" :disabled="e.id === baseLot.id || baseLot.currentDept == null"
+                    multiple filterable remote reserve-keyword placeholder="请选择载具" collapse-tags-tooltip collapse-tags
+                    :remote-method="(arg) => remoteCarriers(arg, e.carriers)" :loading="loadingCarrier"
+                    @change="(arg) => handleCarrierChange(arg, e)">
+                    <el-option v-for="item in carriers" :key="item.value" :label="item.label" :value="item.value" />
+                  </el-select>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -109,8 +115,16 @@
 </template>
 <script setup>
 import { getLotInfoForInBatches, listCarriers, saveInBatches } from '@/api/business/lot'
+import { toRefs } from 'vue';
 // import {}
 const { proxy } = getCurrentInstance();
+const props = defineProps({
+  getList: {
+    type: Function,
+    default: () => { }
+  }
+})
+const { getList } = toRefs(props);
 /**工段弹窗变量 */
 const total = ref(0);
 const baseLot = ref({
@@ -144,24 +158,32 @@ function open(data) {
 }
 
 function getCarriers() {
-  listCarriers({ isAbandoned: 0 }).then(res => {
+  listCarriers({ isAbandoned: 0, pageSize: 200 }).then(res => {
+    if (res.code === 200) {
+      carriers.value.push(...res.rows.map(v => ({ value: v.id, label: v.code })))
+    }
+  })
+}
+
+function remoteCarriers(queryString, choiced) {
+  loadingCarrier.value = true
+  listCarriers({ isAbandoned: 0, pageSize: 200, code: queryString != '' ? queryString : null }).then(res => {
     if (res.code === 200) {
       carriers.value = res.rows.map(v => ({ value: v.id, label: v.code }))
+      carriers.value.push(...choiced.filter(v => !carriers.value.map(e => e.value).includes(v.id)).map(v => ({ value: v.id, label: v.code })))
+    } else {
+      carriers.value = []
+      carriers.value.push(...choiced)
     }
+    console.log(carriers.value)
+    loadingCarrier.value = false
   })
 }
 
-// function remoteCarriers(queryString) {
-//   loadingCarrier.value = true
-//   listCarriers({ isAbandoned: 0, pageSize: 200, code: queryString != '' ? queryString : null }).then(res => {
-//     if (res.code === 200) {
-//       carriers.value = res.rows.map(v => ({ value: v.id, label: v.code }))
-//     } else {
-//       carriers.value = []
-//     }
-//     loadingCarrier.value = false
-//   })
-// }
+function handleCarrierChange(arg, item) {
+  item.carriers = carriers.value.filter(v => arg.includes(v.value)).map(v => ({ id: v.value, code: v.label }))
+}
+
 
 function loadLot() {
   getLotInfoForInBatches({ id: baseLot.value.id }).then(res => {
@@ -174,6 +196,8 @@ function loadLot() {
       baseLot.value.carriers = res.data.carriers
       baseLot.value.sparateNum = 0
       baseLot.value.latestLotCode = res.data.latestLotCode
+      baseLot.value.productId = res.data.productId
+      carriers.value.push(...res.data.carriers.map(v => ({ value: v.id, label: v.code })))
     }
   })
 }
@@ -207,7 +231,7 @@ function handleSave() {
   let num = 0
   let qualified = 0
   baseLot.value.sparateList.forEach(e => {
-    num += e.prodNum
+    num += e.lotNumber
     qualified += e.qualifiedNum
   })
   const prodNum = !!baseLot.value.prodNum ? baseLot.value.prodNum : baseLot.value.productionQuantity
@@ -226,7 +250,10 @@ function handleSave() {
     })
     return
   }
-  const saveDate = { ...baseLot.value, sparateList: baseLot.value.sparateList.map(v => ({ ...v, carriers: v.id === baseLot.id ? v.carriers : carrierSelection.map(e => ({ id: e })) })) }
+  // const saveDate = { ...baseLot.value, sparateList: baseLot.value.sparateList.map(v => ({ ...v, carriers: v.id === baseLot.id ? v.carriers : v.carrierSelection.map(e => ({ id: e })) })) }
+  // const saveDate = { ...baseLot.value }
+  const saveDate = { id: baseLot.value.id, lotCode: baseLot.value.lotCode, sparateList: baseLot.value.sparateList.map(v => ({ id: v.id, fromId: v.fromId, lotNumber: v.lotNumber, qualifiedNum: v.qualifiedNum, productionPlanDetailId: v.productionPlanDetailId, technologicalProcessId: v.technologicalProcessId, technologyVersion: v.technologyVersion, productId: v.productId, productionQuantity: v.lotNumber, lotCode: v.lotCode, carriers: v.id === baseLot.id ? v.carriers : v.carrierSelection.map(e => ({ id: e })) })) }
+
   // 提交分批结果
   saveInBatches(saveDate).then(res => {
     if (res.code === 200) {
@@ -235,6 +262,7 @@ function handleSave() {
         message: '分批成功'
       })
       close()
+      getList.value()
     } else {
       proxy.$message({
         type: 'error',
@@ -248,9 +276,11 @@ function handleNumBlur() {
   // 分批数量修改
   baseLot.value.sparateList = []
   const prodNum = !!baseLot.value.prodNum ? baseLot.value.prodNum : baseLot.value.productionQuantity
+  const qualifiedNum = !!baseLot.value.qualifiedNum ? baseLot.value.qualifiedNum : 0
   const arg = baseLot.value.sparateNum
   const latestLotCode = baseLot.value.latestLotCode
-  if ((latestLotCode.charAt(latestLotCode.length - 1) + arg - 1) > 9) {
+  // debugger
+  if ((Number(latestLotCode.charAt(latestLotCode.length - 1)) + arg - 1) > 9) {
     proxy.$message({
       type: 'warning',
       message: '总分批书里不能大于9'
@@ -262,10 +292,13 @@ function handleNumBlur() {
     if (i === 0) {
       // 第一条
       item.lotNumber = Math.ceil(prodNum / arg)
+      item.qualifiedNum = Math.ceil(qualifiedNum / arg)
       item.carrierSelection = baseLot.value.carriers.map(v => v.id)
     } else if ((i + 1) === arg) {
       item.lotNumber = prodNum - (Math.ceil(prodNum / arg) * (arg - 1))
       item.lotCode = baseLot.value.latestLotCode.slice(0, -1) + (Number(latestLotCode.charAt(latestLotCode.length - 1)) + i)
+      item.qualifiedNum = qualifiedNum - (Math.ceil(qualifiedNum / arg) * (arg - 1))
+      item.fromId = baseLot.value.id
       item.id = null
       item.lotId = null
       item.last = 0
@@ -273,8 +306,10 @@ function handleNumBlur() {
     } else {
       item.id = null
       item.lotId = null
+      item.fromId = baseLot.value.id
       item.lotCode = baseLot.value.latestLotCode.slice(0, -1) + (Number(latestLotCode.charAt(latestLotCode.length - 1)) + i)
       item.lotNumber = Math.ceil(prodNum / arg)
+      item.qualifiedNum = Math.ceil(qualifiedNum / arg)
       item.fromId = baseLot.value.id
       item.last = 0
       item.carrierSelection = []

+ 43 - 189
src/views/business/lot/index.vue

@@ -1,225 +1,87 @@
 <template>
   <div class="page-container column-container">
     <!-- 搜索区 -->
-    <el-form
-      class="list-search-container"
-      :model="queryParams"
-      ref="queryRef"
-      :inline="true"
-    >
+    <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
       <el-form-item label="产品描述:">
-        <el-input
-          placeholder="请输入产品描述"
-          v-model.trim="queryParams.productDescription"
-          style="width: 150px"
-          clearable
-          @keyup.enter="handleQuerydaywork"
-          @keydown.enter.prevent
-        />
+        <el-input placeholder="请输入产品描述" v-model.trim="queryParams.productDescription" style="width: 150px" clearable
+          @keyup.enter="handleQuerydaywork" @keydown.enter.prevent />
       </el-form-item>
       <el-form-item label="生产计划单号:">
-        <el-input
-          placeholder="请输入生产计划单号"
-          v-model.trim="queryParams.productionPlanNo"
-          style="width: 150px"
-          clearable
-          @keyup.enter="handleQuerydaywork"
-          @keydown.enter.prevent
-        />
+        <el-input placeholder="请输入生产计划单号" v-model.trim="queryParams.productionPlanNo" style="width: 150px" clearable
+          @keyup.enter="handleQuerydaywork" @keydown.enter.prevent />
       </el-form-item>
       <el-form-item label="序号:">
-        <el-input
-          placeholder="请输入序号"
-          v-model.trim="queryParams.lineNumber"
-          style="width: 130px"
-          clearable
-          @keyup.enter="handleQuerydaywork"
-          @keydown.enter.prevent
-        />
+        <el-input placeholder="请输入序号" v-model.trim="queryParams.lineNumber" style="width: 130px" clearable
+          @keyup.enter="handleQuerydaywork" @keydown.enter.prevent />
       </el-form-item>
       <el-form-item label="批次号:">
-        <el-input
-          placeholder="请输入批次号"
-          v-model.trim="queryParams.lotCode"
-          style="width: 130px"
-          clearable
-          @keyup.enter="handleQuerydaywork"
-          @keydown.enter.prevent
-        />
+        <el-input placeholder="请输入批次号" v-model.trim="queryParams.lotCode" style="width: 130px" clearable
+          @keyup.enter="handleQuerydaywork" @keydown.enter.prevent />
       </el-form-item>
       <el-form-item label="工段:">
-        <el-select-v2
-          v-model="queryParams.deptId"
-          :options="deptList"
-          placeholder="请选择工段"
-          style="width: 140px"
-        />
+        <el-select-v2 v-model="queryParams.deptId" :options="deptList" placeholder="请选择工段" style="width: 140px" />
       </el-form-item>
       <el-form-item label="是否废品回用:">
-        <el-select
-          style="width: 100px"
-          v-model="queryParams.isWasteRecycling"
-          placeholder="请选择"
-        >
-          <el-option
-            v-for="item in yes_no"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          ></el-option>
+        <el-select style="width: 100px" v-model="queryParams.isWasteRecycling" placeholder="请选择">
+          <el-option v-for="item in yes_no" :key="item.value" :label="item.label" :value="item.value"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="工序:">
-        <el-select-v2
-          v-model="processAlias"
-          :options="processList"
-          placeholder="请选择工序"
-          style="width: 140px"
-          @change="handleProcessChange"
-        />
+        <el-select-v2 v-model="processAlias" :options="processList" placeholder="请选择工序" style="width: 140px"
+          @change="handleProcessChange" />
       </el-form-item>
       <el-form-item>
-        <el-button type="info" icon="Search" @click="handleQuerydaywork"
-          >搜索</el-button
-        >
+        <el-button type="info" icon="Search" @click="handleQuerydaywork">搜索</el-button>
       </el-form-item>
       <div style="margin-top: 20px">
         <el-button type="primary" @click="handleFallback">回退</el-button>
-        <el-button
-          type="primary"
-          @click="handleWasteRecycling"
-          :disabled="selections.length == 0 || selections.length > 1"
-          >添加废品回用</el-button
-        >
-        <el-button
-          :disabled="selections.length !== 1"
-          type="primary"
-          @click="showInBatch"
-          >分批</el-button
-        >
-        <el-button
-          type="primary"
-          :disabled="once"
-          @click="handleOnceSingleChange"
-          >单批单改</el-button
-        >
-        <el-button
-          type="primary"
-          :disabled="multi"
-          @click="handleMultiSingleChange"
-          >多批单改</el-button
-        >
+        <el-button type="primary" @click="handleWasteRecycling"
+          :disabled="selections.length == 0 || selections.length > 1">添加废品回用</el-button>
+        <el-button :disabled="selections.length !== 1" type="primary" @click="showInBatch">分批</el-button>
+        <el-button type="primary" :disabled="once" @click="handleOnceSingleChange">单批单改</el-button>
+        <el-button type="primary" :disabled="multi" @click="handleMultiSingleChange">多批单改</el-button>
       </div>
     </el-form>
 
     <!-- 列表区 -->
     <div class="el-table-container">
       <div class="el-table-inner-container">
-        <el-table
-          ref="dayworkTable"
-          v-loading="loading"
-          row-key="id"
-          @selection-change="handleSelectionChange"
-          height="100%"
-          :data="lotList"
-        >
+        <el-table ref="dayworkTable" v-loading="loading" row-key="id" @selection-change="handleSelectionChange"
+          height="100%" :data="lotList">
           <el-table-column type="selection" width="40" align="center" />
-          <el-table-column
-            label="客户简称"
-            prop="companyAlias"
-            width="120"
-            align="center"
-          />
-          <el-table-column
-            label="生产计划单号"
-            width="100"
-            prop="productionPlanNo"
-            align="center"
-          />
-          <el-table-column
-            label="序号"
-            width="60"
-            prop="lineNumber"
-            align="center"
-          />
+          <el-table-column label="客户简称" prop="companyAlias" width="120" align="center" />
+          <el-table-column label="生产计划单号" width="100" prop="productionPlanNo" align="center" />
+          <el-table-column label="序号" width="60" prop="lineNumber" align="center" />
 
           <el-table-column label="批次号" prop="lotCode" align="center">
             <template #default="scope">
-              <el-button
-                link
-                type="primary"
-                @click="handleColumnClick(scope.row)"
-                ><span>{{ scope.row.lotCode }}</span></el-button
-              >
+              <el-button link type="primary" @click="handleColumnClick(scope.row)"><span>{{ scope.row.lotCode
+                  }}</span></el-button>
             </template>
           </el-table-column>
-          <el-table-column
-            label="产品描述"
-            prop="productDescription"
-            align="center"
-          />
-          <el-table-column
-            label="图纸版本"
-            width="80"
-            prop="technologyVersion"
-            align="center"
-          />
-          <el-table-column
-            label="投产量"
-            width="100"
-            prop="productionQuantity"
-            align="center"
-          />
-          <el-table-column
-            label="下达日期"
-            prop="createTime"
-            width="100"
-            align="center"
-          >
+          <el-table-column label="产品描述" prop="productDescription" align="center" />
+          <el-table-column label="图纸版本" width="80" prop="technologyVersion" align="center" />
+          <el-table-column label="投产量" width="100" prop="productionQuantity" align="center" />
+          <el-table-column label="下达日期" prop="createTime" width="100" align="center">
             <template #default="scope">
               <span>{{
-                proxy.moment(scope.row.createTime).format("YYYY-MM-DD")
-              }}</span>
+      proxy.moment(scope.row.createTime).format("YYYY-MM-DD")
+    }}</span>
             </template>
           </el-table-column>
-          <el-table-column
-            label="当前工段"
-            width="100"
-            prop="deptName"
-            align="center"
-          />
-          <el-table-column
-            label="当前工序"
-            width="120"
-            prop="processAlias"
-            align="center"
-          />
-          <el-table-column
-            label="废品回用"
-            width="70"
-            prop="isWasteRecycling"
-            align="center"
-          >
+          <el-table-column label="当前工段" width="100" prop="deptName" align="center" />
+          <el-table-column label="当前工序" width="120" prop="processAlias" align="center" />
+          <el-table-column label="废品回用" width="70" prop="isWasteRecycling" align="center">
             <template #default="scope">
               <dict-tag :options="yes_no" :value="scope.row.isWasteRecycling" />
             </template>
           </el-table-column>
-          <el-table-column
-            label="批废"
-            width="70"
-            prop="isWaste"
-            align="center"
-          >
+          <el-table-column label="批废" width="70" prop="isWaste" align="center">
             <template #default="scope">
               <dict-tag :options="yes_no" :value="scope.row.isWaste" />
             </template>
           </el-table-column>
-          <el-table-column
-            label="单批单改"
-            width="70"
-            prop="isAmend"
-            align="center"
-          >
+          <el-table-column label="单批单改" width="70" prop="isAmend" align="center">
             <template #default="scope">
               <dict-tag :options="yes_no" :value="scope.row.isAmend" />
             </template>
@@ -229,17 +91,10 @@
       </div>
     </div>
     <!-- 分页 -->
-    <pagination
-      v-show="total > 0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getLot"
-    />
-    <waste-recycling-dialog
-      ref="wasteRecyclingDialogRef"
-    ></waste-recycling-dialog>
-    <InBatchesDialog ref="inBatchesDialogRef"></InBatchesDialog>
+    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize" @pagination="getLot" />
+    <waste-recycling-dialog ref="wasteRecyclingDialogRef"></waste-recycling-dialog>
+    <InBatchesDialog ref="inBatchesDialogRef" :getList="handleQuerydaywork" />
     <once-change ref="onceChangeRef" @handleSaveSuccess="getLot()" />
     <multi-change ref="multiChangeRef" @handleSaveSuccess="getLot()" />
   </div>
@@ -430,5 +285,4 @@ const showInBatch = () => {
 onMounted(() => {
   getDept();
 });
-</script>
-  
+</script>