helongyang
3 天以前 753361f589444455fe1b20476c658201ccd92c38
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/outbound/extend/AddErpProScrapSheet.vue
@@ -61,8 +61,7 @@
                <el-col :span="6">
                  <el-form-item
                    required
                    :prop="'detailList.' + index + '.scrapProCode'"
                    :rules="{ required: true, message: '请选择产品编码', trigger: 'blur' }"
                    label="产品编码:"
                  >
                    <el-select
                      v-model="detail.scrapProCode"
@@ -73,8 +72,8 @@
                      style="width: 100%;"
                    >
                      <el-option
                        v-for="(code, index) in proCodeOptions"
                        :key="index"
                        v-for="(code, idx) in proCodeOptions"
                        :key="idx"
                        :label="code"
                        :value="code"
                      ></el-option>
@@ -85,8 +84,7 @@
                <el-col :span="5">
                  <el-form-item
                    required
                    :prop="'detailList.' + index + '.scrapProVersion'"
                    :rules="{ required: true, message: '请选择版本', trigger: 'blur' }"
                    label="版本:"
                  >
                    <el-select
                      v-model="detail.scrapProVersion"
@@ -108,8 +106,7 @@
                <el-col :span="5">
                  <el-form-item
                    required
                    :prop="'detailList.' + index + '.scrapProLotNo'"
                    :rules="{ required: true, message: '请选择批次号', trigger: 'blur' }"
                    label="批次号:"
                  >
                    <el-select
                      v-model="detail.scrapProLotNo"
@@ -131,13 +128,7 @@
                <el-col :span="4">
                  <el-form-item
                    required
                    :prop="'detailList.' + index + '.scrapPcsQty'"
                    :rules="{
                      required: true,
                      message: '请输入PCS数量',
                      trigger: 'blur',
                      validator: validateNumber // è‡ªå®šä¹‰æ•°å­—校验
                    }"
                    label="PCS数量:"
                  >
                    <el-input
                      v-model="detail.scrapPcsQty"
@@ -193,20 +184,6 @@
export default {
  components: { VolBox },
  data() {
    const validateNumber = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('请输入数量'));
      }
      const numberRegex = /^\d+(\.\d+)?$/;
      if (!numberRegex.test(value)) {
        return callback(new Error('请输入有效的数字'));
      }
      if (parseFloat(value) <= 0) {
        return callback(new Error('数量必须大于0'));
      }
      callback();
    };
    return {
      showDetialBox: false,
      warehouses: [],
@@ -215,7 +192,6 @@
        warehouseId: "",
        proScrapSheetOrderNo: ""
      },
      detailList: [
        {
          scrapProCode: "",
@@ -226,8 +202,7 @@
          versionOptions: [],
          lotNoOptions: []
        }
      ],
      validateNumber
      ]
    };
  },
  methods: {
@@ -243,6 +218,7 @@
        warehouseId: "",
        proScrapSheetOrderNo: ""
      };
      this.proCodeOptions = []; // æ¸…空产品编码列表
      this.detailList = [this.createEmptyDetail()];
      
      // åŠ è½½ä»“åº“åˆ—è¡¨
@@ -281,10 +257,13 @@
    // ä»“库变更事件
    handleWarehouseChange(warehouseId) {
      if (!warehouseId) return;
      if (!warehouseId) {
        this.proCodeOptions = []; // ä»“库为空时清空产品编码列表
        return;
      }
      // æ ¹æ®ä»“库ID加载产品编码列表
      this.http
        .post(`api/ProStockInfo/GetProCodeByWarehouse?warehouseId=${this.form.warehouseId}`,null, "加载产品数据中")
        .post(`api/ProStockInfo/GetProCodeByWarehouse?warehouseId=${warehouseId}`,null, "加载产品数据中")
        .then((res) => {
          if (res.status) {
            this.proCodeOptions = [...new Set(res.data)];
@@ -296,9 +275,13 @@
    // äº§å“ç¼–码变更事件
    handleProCodeChange(detail, index) {
      // æ¸…空版本和批次号
      detail.versionOptions = [];
      detail.lotNoOptions = [];
      detail.scrapProVersion = "";
      detail.scrapProLotNo = "";
      if (!detail.scrapProCode) {
        detail.versionOptions = [];
        detail.lotNoOptions = [];
        return;
      }
@@ -353,34 +336,57 @@
    // æäº¤è¡¨å•
    submitForm() {
  if (!this.form.warehouseId) {
    return this.$message.error("请选择所属仓库");
  }
      // è‡ªå®šä¹‰éªŒè¯é€»è¾‘
      let isValid = true;
      let errorMessage = '';
  const invalidDetail = this.detailList.find(item =>
    !item.scrapProCode || !item.scrapProVersion || !item.scrapProLotNo || !item.scrapPcsQty  || isNaN(parseFloat(item.scrapPcsQty))|| parseFloat(item.scrapPcsQty) <= 0
  );
  if (invalidDetail) {
    return this.$message.error("请为所有明细输入有效的数量值(大于0的数字)");
  }
      // éªŒè¯ä»“库
      if (!this.form.warehouseId) {
        isValid = false;
        errorMessage = '请选择所属仓库';
      }
  const submitData = {
    warehouseId: this.form.warehouseId,
    details: this.detailList.map(item => ({
      scrapProCode: item.scrapProCode,
      scrapProVersion: item.scrapProVersion,
      scrapProLotNo: item.scrapProLotNo,
      scrapPcsQty: parseFloat(item.scrapPcsQty),
      remark: item.remark
    }))
  };
      // éªŒè¯æ˜Žç»†
      if (isValid) {
        const invalidDetail = this.detailList.find(item =>
          !item.scrapProCode ||
          !item.scrapProVersion ||
          !item.scrapProLotNo ||
          !item.scrapPcsQty ||
          isNaN(parseFloat(item.scrapPcsQty)) ||
          parseFloat(item.scrapPcsQty) <= 0
        );
        if (invalidDetail) {
          isValid = false;
          errorMessage = '提交数据存在空值或输入数量不合法,请检查!';
        }
      }
  this.http
    .post("api/ErpProScrapSheet/Save", submitData, "提交中")
    .then((res) => {
      // æ ¹æ®éªŒè¯ç»“果处理
      if (!isValid) {
        this.$message.error(errorMessage);
        return;
      }
      // éªŒè¯é€šè¿‡ï¼Œå‡†å¤‡æäº¤æ•°æ®
      const submitData = {
        warehouseId: this.form.warehouseId,
        details: this.detailList.map(item => ({
          scrapProCode: item.scrapProCode,
          scrapProVersion: item.scrapProVersion,
          scrapProLotNo: item.scrapProLotNo,
          scrapPcsQty: parseFloat(item.scrapPcsQty),
          remark: item.remark
        }))
      };
      this.http
        .post("api/ErpProScrapSheet/Save", submitData, "提交中")
        .then((res) => {
          if (!res.status) return this.$message.error(res.message);
          this.$message.success("操作成功");
          this.proCodeOptions = [];
          this.close();
          this.$emit("parentCall", ($vue) => {
            $vue.refresh();
@@ -391,6 +397,8 @@
    // å…³é—­å¼¹çª—
    close() {
      this.showDetialBox = false;
      // æ¸…空产品编码列表
      this.proCodeOptions = [];
    }
  },
  created() {
@@ -441,4 +449,17 @@
::-webkit-scrollbar-track {
  background-color: #f5f5f5;
}
/* å¢žåŠ é€‰æ‹©æ¡†çš„é•¿åº¦ */
.el-select {
  width: 100% !important;
  min-width: 150px !important;
  padding-right:10px;
}
.el-input {
width: 100% !important;
  min-width: 150px !important;
  padding-right:10px;
}
</style>