submitWarehouse.vue 7.67 KB
<template>
  <j-modal
    :title="title"
    :width="width"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    @ok="handleOk"
    @cancel="handleCancel"
    cancelText="关闭"
    okText="提交生产领料单"
  >

    <!-- 查询区域 -->
    <div class="table-page-search-wrapper">
      <a-form-model layout="inline" ref="form" :model="model" :rules="validatorHeaderRules">
        <a-row :gutter="24">
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-model-item label="部门" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="departName">
              <j-search-select-tag
                v-model="model.departName"
                dict="sys_depart,depart_name,depart_name,parent_id='2'"
                placeholder="请选择部门"
                :pageSize="10"
                :async="true"
              />
            </a-form-model-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-model-item label="保管人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="preserver">
              <j-search-select-tag
                v-model="model.preserver"
                dict="fp_user,username,username, type = 0"
                placeholder="请选择保管人"
                :pageSize="10"
                :async="true"
              />
            </a-form-model-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-model-item label="发料人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="issuer">
              <j-search-select-tag
                v-model="model.issuer"
                dict="fp_user,username,username, type = 0"
                placeholder="请选择发料人"
                :pageSize="10"
                :async="true"
              />
            </a-form-model-item>
          </a-col>

          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-model-item label="班组"  prop="remark">
              <!--              <a-input v-model="model.userdef3" placeholder="请输入班组"></a-input>-->
              <j-search-select-tag
                placeholder="请选择班组"
                v-model="model.userdef3"
                dict="team,code,name"
                :pageSize="15"
                :async="true">
              </j-search-select-tag>
            </a-form-model-item>
          </a-col>

          <a-col :xl="8" :lg="7" :md="8" :sm="24">
            <a-form-item label="领料单号">
              <a-input placeholder="请输入领料单号" v-model="model.userdef2"></a-input>
            </a-form-item>
          </a-col>

          <a-col :xl="8" :lg="7" :md="8" :sm="24">
            <a-form-item label="备注">
              <a-input placeholder="请输入备注" v-model="model.remark"></a-input>
            </a-form-item>
          </a-col>


        </a-row>
      </a-form-model>
    </div>

    <j-vxe-table
      ref="vTable"
      :columns="columns"
      :dataSource="dataSource"
      :rowNumber="true"
      :rowSelection="true"
      :maxHeight="400"
    />

  </j-modal>
</template>

<script>

import { httpAction } from '@/api/manage'
import {JVXETypes} from '@/components/jeecg/JVxeTable'
import moment from "moment";
import {randomNumber, randomUUID} from '@/utils/util'
import {productPickShipment,getBomListByIds} from '@/api/api'
export default {
  name: "submitWarehouse",
  components: {
  },
  props:{
    mainId:{
      type:String,
      required:false,
      default:''
    }
  },
  data () {
    return {
      title:"操作",
      width:1600,
      visible: false,
      loading: false,
      // 计划号数量
      planSize: 0,
      columns: [
        {
          title: '物料名称',
          key: 'name',
          type: JVXETypes.normal,
          width: '180px',
          fixed: 'left',
          defaultValue: 'normal-new',
        },
        {
          title: '物料编码',
          key: 'code',
          type: JVXETypes.normal,
          width: '180px',
          fixed: 'left',
          defaultValue: 'normal-new',
        },
        {
          title: '规格',
          key: 'spec',
          type: JVXETypes.normal,
          width: '180px',
          fixed: 'left',
          defaultValue: 'normal-new',
        },
        {
          title: '尺寸',
          key: 'shapeSize',
          type: JVXETypes.normal,
          width: '180px',
          fixed: 'left',
          defaultValue: 'normal-new',
        },

        {
          title: '总量',
          key: 'qty',
          type: JVXETypes.normal,
          width: '180px',
          fixed: 'left',
          defaultValue: 'normal-new',
        },
        {
          title: '已领',
          key: 'ytqty',
          type: JVXETypes.normal,
          width: '180px',
          fixed: 'left',
          defaultValue: 'normal-new',
        },
        {
          title: '需领',
          key: 'xlqty',
          type: JVXETypes.inputNumber,
          width: '200px',
          validateRules: [{required: true, message: '${title}不能为空'}],
        }
      ],
      dataSource: [],
      model:{},
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 },
      },

      confirmLoading: false,
      validatorHeaderRules: {
        preserver: [
          {required: true, message: '请选择保管人!'},
        ],
        departName: [
          {required: true, message: '请选择部门!'},
        ],
        issuer: [
          {required: true, message: '请选择发料人!'},
        ],
        userdef3: [
          {required: true, message: '请选择班组!'},
        ],
      },
      url: {
        add: "/product_model/productModel/addBom",
        edit: "/product_model/productModel/editBom",
      }

    }
  },
  created () {
    //备份model原始值
    this.modelDefault = JSON.parse(JSON.stringify(this.model));
  },
  methods: {
    loadFrom() {
      console.log("getBomListByIds"+JSON.stringify(this.model))
      getBomListByIds(this.model).then((res) => {
        this.dataSource=res.result;
      })
    },
    add () {
      this.edit(this.modelDefault);
    },
    edit (record) {
      this.model = Object.assign({}, record);
      console.log(JSON.stringify(record))
      // 获取计划数
      this.planSize = this.model.planNumber.split('/').length;
      console.log(this.planSize)
      this.visible = true;
      this.loadFrom();

    },
    close () {
      this.$emit('close');
      this.visible = false;
      this.$refs.form.clearValidate();
    },

    handleOk () {
      this.$refs.form.validate(valid => {
        if(valid){
          this.$refs.vTable.validateTable().then(errMap => {
            if (!errMap) {
              const values = this.$refs.vTable.getTableData()
              values.forEach(row => {
                row.reamrk = this.model.remark;
                row.reamrk2 = this.model.remark;
                row.reamrk3 = this.model.remark;
                row.userdef3 = this.model.userdef3;
                row.userdef2 = this.model.userdef2;
                row.preserver = this.model.preserver;
                row.issuer = this.model.issuer;
                row.departName = this.model.departName;
                row.planNumber = this.model.planNumber;

              });
              productPickShipment(values).then((res) => {
                if (res.success){
                  this.$message.success(res.message);
                }else{
                  this.$message.error(res.message);
                }
                this.visible = false;
              })
            }
          })
        } else {
          return false
        }
      });


    },
    handleCancel () {
      this.close()
    },


  }
}
</script>