浏览代码

fix: 开发商品管理、BOM、生产管理、财务、调整出库入库部分字段

wuguojie 4 月之前
父节点
当前提交
76c2974f88
共有 3 个文件被更改,包括 59 次插入13 次删除
  1. 4 3
      src/api/production/task.js
  2. 42 8
      src/views/production/task/edit.vue
  3. 13 2
      src/views/wms/basic/product/index.vue

+ 4 - 3
src/api/production/task.js

@@ -45,10 +45,11 @@ export function detailTask(query) {
     })
 }
 
-export function editTask(query) {
+export function editTask(id, query) {
     return request({
-        url: `/wms/task/${query}`,
-        method: 'put'
+        url: `/wms/task/${id}`,
+        method: 'put',
+        data: query
     })
 }
 

+ 42 - 8
src/views/production/task/edit.vue

@@ -40,7 +40,7 @@
             </el-form>
             <div class="title">
                 <span>生产明细</span>
-                <el-button size="small" icon="Plus" @click="initList">添加商品</el-button>
+                <el-button :disabled="isView" size="small" icon="Plus" @click="initList">添加商品</el-button>
             </div>
             <el-table
                 :data="addList"
@@ -60,7 +60,7 @@
                 <el-table-column prop="versionId" label="BOM版本">
                     <template #default="scope">
                         <el-select :disabled="isView" v-model="scope.row.versionId" style="width: 100%">
-                            <el-option v-for="item in BOMList" :value="item.id" :label="item.version"></el-option>
+                            <el-option v-for="item in scope.row.bomList" :value="item.id" :label="item.version"></el-option>
                         </el-select>
                     </template>
                 </el-table-column>
@@ -109,7 +109,9 @@
                 </el-row>
             </el-form>
             <el-table
+                ref="shopRefs"
                 :data="itemList"
+                row-key="skuId"
                 @selection-change="handleSelectChange"
             >
                 <el-table-column type="selection"></el-table-column>
@@ -189,7 +191,7 @@
 </template>
 
 <script setup>
-import { ref, getCurrentInstance, onMounted } from 'vue'
+import {ref, getCurrentInstance, onMounted, nextTick} from 'vue'
 const { proxy } = getCurrentInstance();
 import {addTask, BOMVersion, detailTask, editTask} from '@/api/production/task'
 import { listItemSkuPage } from "@/api/wms/itemSku";
@@ -199,6 +201,8 @@ import { useRoute } from 'vue-router'
 
 const route = useRoute()
 
+let shopRefs = ref()
+
 const getVolumeText = (itemSku) => {
     if((itemSku.length || itemSku.length === 0) && (itemSku.width || itemSku.width === 0) && (itemSku.height || itemSku.height === 0)) {
         return itemSku.length + ' * ' + itemSku.width + ' * ' + itemSku.height
@@ -259,14 +263,21 @@ const createItem = () => {
 const handleAddTask = () => {
     let list = addList.value?.map(item => {
         return {
-            taskItemSkuId: item.itemSku.id,
+            taskItemSkuId: item.skuId,
             versionId: item.versionId,
             quantity: item.quantity
         }
     })
+    let index = list.findIndex(item => !item.versionId || !item.quantity)
+    if(index != -1) {
+        ElMessage({
+            type: 'error',
+            message: '请选择BOM版本或者生产数量'
+        })
+        return
+    }
     if(route.query.data) {
-        editTask({
-            id: route.query.data,
+        editTask(route.query.data,{
             ...addForm.value,
             taskItemSkuDtoList: [ ...list ]
         }).then(res => {
@@ -322,7 +333,9 @@ const handleSelectConfirm = () => {
             quantity: item.quantity,
             skuCode: item.itemSku.skuCode,
             skuName: item.itemSku.skuName,
-            versionId: item.versionId
+            versionId: item.versionId,
+            skuId: item.skuId,
+            bomList: getBomList(item.skuId)
         }
     })
     addItemShow.value = false
@@ -339,6 +352,16 @@ const initList = () => {
                 quantity: 0
             }
         })
+        addList.value.forEach(item => {
+            const index = itemList.value.findIndex(it => item.skuId === it.skuId)
+            itemList.value[index].versionId = item.versionId
+            itemList.value[index].quantity = item.quantity
+            if (index !== -1) {
+                nextTick(() => {
+                    shopRefs.value.toggleRowSelection(itemList.value[index], true)
+                })
+            }
+        })
         total.value = res.total
     })
 }
@@ -351,6 +374,10 @@ const initBOMVersion = () => {
         BOMList.value = res.data
     })
 }
+const getBomList = (id) => {
+    let list = BOMList.value.filter(item => item.itemSkuId === id)
+    return list || []
+}
 
 let isView = ref(false)
 onMounted(() => {
@@ -362,7 +389,14 @@ onMounted(() => {
                 addForm.value.startDate = res.data.startDate
                 addForm.value.endDate = res.data.endDate
                 addForm.value.remark = res.data.remark
-                addList.value = res.data.taskItemSkuDtoList
+                addList.value = res.data.taskItemSkuDtoList.map(item => {
+                    return {
+                        ...item,
+                        bomList: getBomList(item.skuId),
+                        versionId: Number(item.versionId)
+                    }
+                })
+                console.log(1231232, addList.value)
             }
         })
     }

+ 13 - 2
src/views/wms/basic/product/index.vue

@@ -345,7 +345,7 @@
         <el-drawer title="物料清单" v-model="productShow" size="80%" append-to-body :close-on-click-modal="false">
             <el-form :model="BOMForm" label-width="120">
                 <el-form-item label="BOM版本">
-                    <el-select v-model="BOMForm.version">
+                    <el-select v-model="BOMForm.version" @change="changeBom">
                         <el-option v-for="item in BOMList" :value="item.id" :label="item.version"></el-option>
                     </el-select>
                 </el-form-item>
@@ -1013,7 +1013,7 @@ const handleShowProduct = (row) => {
     initBOMVersion(row.skuId)
     bomList({
         skuItemId: BOMDataForm.value.skuItemId,
-        bomVersionId: BOMDataForm.value.version
+        bomVersionId: ''
     }).then(res => {
         if(res.code == 200) {
             productList.value = res.data
@@ -1133,6 +1133,17 @@ const initBOMVersion = (id) => {
     })
 }
 
+const changeBom = () => {
+    bomList({
+        skuItemId: BOMDataForm.value.skuItemId,
+        bomVersionId: BOMForm.value.version
+    }).then(res => {
+        if(res.code == 200) {
+            productList.value = res.data
+        }
+    })
+}
+
 let BOMDataForm = ref({})
 let BOMDataList = ref([])