廖井涛
7 天以前 a660db06773007b1be690e0674829c00a57aeb7b
north-glass-erp/northglass-erp/src/views/sd/bom/ProductBomAdd.vue
@@ -6,7 +6,7 @@
import deepClone from "@/utils/deepClone"
import { ElMessage, ElMessageBox} from "element-plus"
const { t } = useI18n()
const emit = defineEmits(['closeDialog'])
let produceList = ref([])
let props = defineProps({
  productName:null,
@@ -15,10 +15,18 @@
  gridDataByProduct: { type: Object, default: () => ({}) }
})
const xGrid = ref()
const xGridByProduct = ref()
const activeProduct = ref('')                 // 当前选中的产品名
let materialType = ref(1)
//关闭弹窗
const closeDialog = () => {
  emit('closeDialog')
}
const value = ref('')
const options = [
@@ -152,7 +160,8 @@
      })
      getWorks()
      getDetails();
      editProductBOM();
    }else{
      ElMessage.warning(res.msg)
    }
@@ -236,6 +245,9 @@
}
const getDetails = () => {
}
//拆分每个产品
const productList = computed(() => {
  const raw = (props.productName ?? '').toString().trim()
@@ -292,6 +304,7 @@
}
const saveProductBOM = () => {
  gridOptionsByProduct.loading=true
  productList.value.forEach((name, index) => {
    const rows = gridDataMapByProduct[index] || []
    const seq = index + 1
@@ -302,12 +315,38 @@
      row.produceId = props.produceId
    })
  })
  console.log(gridDataMapByProduct)
  request.post(`/BomData/saveProductBOM`,gridDataMapByProduct).then((res) => {
    if(res.code==200){
      ElMessage.success(t('basicData.msg.saveSuccess'))
      gridOptionsByProduct.loading=false
      emit('closeDialog')
    }})
}
const editProductBOM = () => {
  request.post(`/BomData/editProductBOM/${props.produceId}`).then((res) => {
    if (res.code == 200 ) {
      // 初始化清空
      productList.value.forEach((_, index) => {
        gridDataMapByProduct[index + 1] = []
      })
      // 遍历后端返回的数据
      res.data.data.forEach(item => {
        const layer = item.product_layer - 1  // 例如 1, 2, 3
        if (!gridDataMapByProduct[layer]) {
          gridDataMapByProduct[layer] = []
        }
        const plainItem = JSON.parse(JSON.stringify(item))
        gridDataMapByProduct[layer].push(plainItem)
      })
      // 默认选择第一层
      activeProductIndex.value = 0
      xGridByProduct.value.loadData(gridDataMapByProduct[0])
    }
  })
}
</script>
<template>