payne
2024-04-25 81769069ee4fc2681676d4f01ea6ac30c3ef88fa
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBase/WmsMaterial/tabForm.vue
@@ -1,56 +1,157 @@
<template>
  <a-modal
    title="新增物料信息"
    :width="900"
    :visible="visible"
    :confirmLoading="confirmLoading"
    @ok="handleSubmit"
    @cancel="handleCancel"
  >
  <a-modal :title="title" :width="1300" :visible="visible" :confirmLoading="confirmLoading" @ok="handleSubmit"
    @cancel="handleCancel">
    <a-spin :spinning="confirmLoading">
      <!-- tab @change="callback"-->
      <a-tabs default-active-key="1" >
      <!-- tab -->
      <a-tabs default-active-key="1" @change="callbacktab">
        <a-tab-pane key="1" tab="基本信息">
         <add-form ref="addForm" @ok="handleOk" />
          <!-- <add-form ref="addFormRef" @ok="handleOk" /> -->
          <!-- 基本信息  layout="inline"  layout="vertical" -->
          <a-form :form="form">
            <a-form-item label="物料名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入物料名称"
                v-decorator="['materialName', { rules: [{ required: true, message: '请输入物料名称!' }] }]" />
            </a-form-item>
            <a-form-item label="物料编号" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入物料编号"
                v-decorator="['materialCode', { rules: [{ required: true, message: '请输入物料编号!' }] }]" />
            </a-form-item>
            <a-form-item label="ERP编号" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入ERP编号" v-decorator="['erpCode']" />
            </a-form-item>
            <!-- <a-form-item label="物料类型名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入物料类型名称" v-decorator="['materialTypeName']" />
            </a-form-item>
            <a-form-item label="物料类型描述" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入物料类型描述" v-decorator="['materialTypeDescr']" />
            </a-form-item> -->
            <a-form-item label="物料类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
              <a-select style="width: 100%" placeholder="请选择物料类型" v-decorator="['materialType']">
                <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.id">{{
                  item.materialTypeName }}</a-select-option>
              </a-select>
            </a-form-item>
            <a-form-item label="物料组" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入物料组" v-decorator="['materialGroup']" />
            </a-form-item>
            <!-- <a-form-item label="ABC分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入ABC分类名称" v-decorator="['aBCClassName']" />
            </a-form-item> -->
            <a-form-item label="ABC分类" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <!-- <a-input-number placeholder="请输入ABC分类" style="width: 100%" v-decorator="['aBCClass']" /> -->
              <a-select style="width: 100%" placeholder="请选择ABC分类" v-decorator="['abcClass']">
                <a-select-option v-for="(item, index) in materialTypeData2" :key="index" :value="Number(item.code)">{{
                  item.name }}</a-select-option>
              </a-select>
            </a-form-item>
            <a-form-item label="物料规格" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入物料规格" v-decorator="['materialSpec']" />
            </a-form-item>
            <a-form-item label="默认入库库位" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入默认入库库位" v-decorator="['inPlaceCode']" />
            </a-form-item>
            <a-form-item label="库存单位" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <!-- <a-input placeholder="请输入库存单位" v-decorator="['materialUnit']" /> -->
              <a-select style="width: 100%" placeholder="请选择库存单位" v-decorator="['materialUnit']">
                <a-select-option v-for="(item, index) in selectTypeData1" :key="index" :value="item.unitName">{{
                  item.unitName }}</a-select-option>
              </a-select>
            </a-form-item>
            <a-form-item label="采购单位" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <!-- <a-input placeholder="请输入采购单位" v-decorator="['pOUnit']" /> -->
              <a-select style="width: 100%" placeholder="请选择采购单位" v-decorator="['pOUnit']">
                <a-select-option v-for="(item, index) in selectTypeData2" :key="index" :value="item.unitName">{{
                  item.unitName }}</a-select-option>
              </a-select>
            </a-form-item>
            <a-form-item label="颜色" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入颜色" v-decorator="['color']" />
            </a-form-item>
            <a-form-item label="重量" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入重量" v-decorator="['weight']" />
            </a-form-item>
            <a-form-item label="标包数量" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入标包数量" v-decorator="['sNP']" />
            </a-form-item>
            <a-form-item label="换算率" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入换算率" v-decorator="['translateRate']" />
            </a-form-item>
            <!-- <a-form-item label="批次属性规则" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入批次属性规则" v-decorator="['batchRuleId']" />
            </a-form-item>
            <a-form-item label="控制属性规则" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入控制属性规则" v-decorator="['controlRuleId']" />
            </a-form-item> -->
            <a-form-item label="是否禁用" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-switch v-decorator="['isDisabled', { valuePropName: 'checked' }]" />
            </a-form-item>
            <a-form-item label="描述" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
              <a-input placeholder="请输入描述" v-decorator="['materialDesc']" />
            </a-form-item>
            <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
          </a-form>
        </a-tab-pane>
        <a-tab-pane key="2" tab="控制属性" force-render>
          Content of Tab Pane 2
          <add-control-rule v-if="visible" ref="WmsControlRuleRef" />
        </a-tab-pane>
        <a-tab-pane key="3" tab="批次属性">
          需求待定
        </a-tab-pane>
        <a-tab-pane key="4" tab="替代品管理">
          <add-form-sub ref="addFormWmsSubstituteGood" @ok="handleOk" />
          <add-form-sub v-if="visible" ref="addFormWmsSubstituteGoodRef" />
        </a-tab-pane>
        <a-tab-pane key="5" tab="客户">
          <add-form-base-customer ref="addFormBaseCustomer" @ok="handleOk" />
          <add-form-base-customer v-if="visible" ref="addFormBaseCustomer" />
        </a-tab-pane>
        <a-tab-pane key="7" tab="包装关系">
          <add-form-container-packaging ref="addFormContainerPackaging" @ok="handleOk" />
        </a-tab-pane>
        <!-- <a-tab-pane key="6" tab="包装关系">
          <add-form-container-packaging ref="addFormContainerPackagingRef" @ok="handleOk" />
        </a-tab-pane> -->
      </a-tabs>
    </a-spin>
  </a-modal>
</template>
<script>
import { WmsMaterialAdd, GetAreas, GetStations } from '@/api/modular/main/WmsMaterialManage'
import addForm from './tabItem/addForm.vue'
import addFormBaseCustomer from './tabItem/addFormBaseCustomer.vue'
import addFormContainerPackaging from './tabItem/addFormContainerPackaging.vue'
import addFormSub from './tabItem/addFormWmsSubstituteGood.vue'
import {
  WmsMaterialAdd, WmsMaterialEdit, WmsMaterialDetailList, materialTypeDataList
} from '@/api/modular/main/WmsBase/WmsMaterialManage'
import addForm from './tabItem/addForm.vue'
import addFormBaseCustomer from './tabItem/addFormBaseCustomer/addFormBaseCustomer.vue'
import addFormContainerPackaging from './tabItem/WmsContainerPackaging/addFormContainerPackaging.vue'
import addFormSub from './tabItem/WmsSubstituteGood/addFormWmsSubstituteGood.vue'
import addControlRule from './tabItem/WmsControlRule/addForm.vue'
import { WmsUnitPage } from '@/api/modular/main/WmsBase/WmsUnitManage'
export default {
  components: {
    addForm,
    addFormBaseCustomer,
    addFormContainerPackaging,
    addFormSub
    addFormSub,
    addControlRule
  },
  created() {
    this.materialTypeDataList()
    const materialTypeOption = this.$options
    this.materialTypeData2 = materialTypeOption.filters['dictData']('abc_class_type')
  },
  data() {
    return {
      title: '',
      labelCol: {
        // xs: { span: 24 },
        // sm: { span: 5 }
@@ -67,23 +168,97 @@
      stationNameParameterData: [],
      visible: false,
      confirmLoading: false,
      form: this.$form.createForm(this)
      form: this.$form.createForm(this),
      materialTypeData2: [],
      selectTypeData2: [],
      selectTypeData1: []
    }
  },
  methods: {
    handleOk(){
    // 物料类型
    materialTypeDataList() {
      materialTypeDataList().then((d) => {
        this.materialTypeData = d.data || []
      }).catch(() => {
      })
      // 库存单位
      WmsUnitPage().then((d) => {
        this.selectTypeData1 = d.data.rows || []
      }).catch(() => {
      })
      // 采购单位
      WmsUnitPage().then((d) => {
        this.selectTypeData2 = d.data.rows || []
      }).catch(() => {
      })
    },
    callbacktab(e) {
      //包装关系
      // if (e == 6) {
      //   this.$nextTick(() => {
      //     let materialType = this.form.getFieldValue('materialType');
      //     // 调接口 传物料类型
      //     this.$refs.addFormContainerPackagingRef.initShow(materialType)
      //   })
      // }
      // 替代品
      if (e == 4) {
        this.$nextTick(() => {
          // let materialCode = this.form.getFieldValue('materialCode');
          // let materialName = this.form.getFieldValue('materialName');
          this.$refs.addFormWmsSubstituteGoodRef.initShowSubstituteGood()
        })
      }
    },
    handleOk() { },
    // 初始化方法
    add(record) {
    add(record, type) {
      this.visible = true
      this.$nextTick(() => {
        this.getSelects()
      })
      const materialTypeOption = this.$options
      this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
      const inspectionMethodOption = this.$options
      this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
      if (record) {//编辑
        if (type == '详情') {
          this.title = '详情物料信息详情';// 详情
        } else {
          this.title = '编辑基础物料信息';
        }
        this.$nextTick(() => {
          this.form.setFieldsValue({
            ...record
          })
        })
        WmsMaterialDetailList({
          id: record.id
        })
          .then(res => {
            if (res.success) {
              console.log(res)
              this.$nextTick(() => {
                if (res.data.controlRuleDetailList && res.data.controlRuleDetailList.length > 0) {
                  this.$refs.WmsControlRuleRef.form.setFieldsValue({
                    ...res.data.controlRuleDetailList[0]
                  })
                }
                this.$refs.addFormWmsSubstituteGoodRef.list = res.data.substituteGoodList || []
                this.$refs.addFormBaseCustomer.list = res.data.baseCustomerList || []
              })
            } else {
              this.$message.error('详情失败:' + JSON.stringify(res.message))
            }
          })
          .finally(res => {
            this.confirmLoading = false
          })
      } else {
        this.title = '新增基础物料信息';// 新增
      }
    },
    getSelects() {
      if (this.areaNameParameterData.length <= 0 || this.stationNameParameterData.length <= 0) {
@@ -106,37 +281,95 @@
      const {
        form: { validateFields }
      } = this
      this.confirmLoading = true
      validateFields((errors, values) => {
        if (!errors) {
          if (this.$getObjectType(values.areas) === 'array') {
            values.areaIds = values.areas.join(',')
            values.areaNameParameterArr = values.areas.map(val => {
              return this.parseSelectName(val, 'areaId', 'areaName', 'areaNameParameterData')
          // if (this.$getObjectType(values.areas) === 'array') {
          //   values.areaIds = values.areas.join(',')
          //   values.areaNameParameterArr = values.areas.map(val => {
          //     return this.parseSelectName(val, 'areaId', 'areaName', 'areaNameParameterData')
          //   })
          //   values.areaNameParameter = values.areaNameParameterArr.join(',')
          // }
          // if (this.$getObjectType(values.stations) === 'array') {
          //   values.stationIds = values.stations.join(',')
          //   values.stationNameParameterArr = values.stations.map(val => {
          //     return this.parseSelectName(val, 'stationId', 'stationName', 'stationNameParameterData')
          //   })
          //   values.stationNameParameter = values.stationNameParameterArr.join(',')
          // }
          console.log("物料信息9999999999999999")
          console.log(values);
          console.log(6666666666666 + '控制属性')
          var ControlRuleld = this.$refs.WmsControlRuleRef.form.getFieldValue('id') || ''
          let SubstituteGoodList = []
          if (this.$refs.addFormWmsSubstituteGoodRef && this.$refs.addFormWmsSubstituteGoodRef.list.length > 0) {
            SubstituteGoodList = this.$refs.addFormWmsSubstituteGoodRef.list
            SubstituteGoodList.forEach(item => {
              item.materialName = this.form.getFieldValue('materialName')
              item.materialCode = this.form.getFieldValue('materialCode')
            })
            values.areaNameParameter = values.areaNameParameterArr.join(',')
          }
          if (this.$getObjectType(values.stations) === 'array') {
            values.stationIds = values.stations.join(',')
            values.stationNameParameterArr = values.stations.map(val => {
              return this.parseSelectName(val, 'stationId', 'stationName', 'stationNameParameterData')
            })
            values.stationNameParameter = values.stationNameParameterArr.join(',')
          console.log(6666666666666 + '替代品')
          let BaseCustomerList = [];
          if (this.$refs.addFormBaseCustomer && this.$refs.addFormBaseCustomer.list.length > 0) {
            BaseCustomerList = this.$refs.addFormBaseCustomer.list
          }
          WmsMaterialAdd(values)
            .then(res => {
              if (res.success) {
                this.$message.success('新增成功')
          console.log(6666666666666 + '往来关系集合')
          // console.log(6666666666666 + '包装关系')
          // console.log(this.$refs.addFormContainerPackagingRef.list)
          var a1 = []
          BaseCustomerList.forEach((item)=>{
            a1.push(item.id)
          })
          var param = {
            MaterialInput: values,
            ControlRuleld: ControlRuleld, //控制属性
            SubstituteGoodList: SubstituteGoodList, //替代品
            BaseCustomerList: a1, //往来关系集合
            // ContainerPackagingList: this.$refs.addFormContainerPackagingRef.list //包装关系
          }
          this.confirmLoading = true
          if (this.title == '新增基础物料信息') {
            WmsMaterialAdd(param)
              .then(res => {
                if (res.success) {
                  this.$message.success('新增成功')
                  this.confirmLoading = false
                  this.$emit('ok', values)
                  this.handleCancel()
                } else {
                  this.$message.error('新增失败:' + JSON.stringify(res.message))
                }
              })
              .finally(res => {
                this.confirmLoading = false
                this.$emit('ok', values)
                this.handleCancel()
              } else {
                this.$message.error('新增失败:' + JSON.stringify(res.message))
              }
            })
            .finally(res => {
              this.confirmLoading = false
            })
              })
          } else {
            WmsMaterialEdit(param)
              .then(res => {
                if (res.success) {
                  this.$message.success('编辑成功')
                  this.confirmLoading = false
                  this.$emit('ok', values)
                  this.handleCancel()
                } else {
                  this.$message.error('编辑失败:' + JSON.stringify(res.message))
                }
              })
              .finally(res => {
                this.confirmLoading = false
              })
          }
        } else {
          this.confirmLoading = false
        }
@@ -155,7 +388,18 @@
    handleCancel() {
      this.form.resetFields()
      this.visible = false
      // this.$refs.WmsControlRule.form.resetFields()
      // this.$refs.addFormWmsSubstituteGoodRef.list =[]
      // this.$refs.addFormWmsSubstituteGoodRef.list =[]
    }
  }
}
</script>
<style lang="less" scoped>
.ant-row.ant-form-item {
  width: 50% !important;
  display: inline-block;
}
</style>