647556386
3 天以前 696edbff3c8812e4b820f624d66a02ae6ddb1a06
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/views/outbound/printForm.vue
@@ -32,60 +32,62 @@
              />
            </el-form-item>
            <el-form-item label="规格" prop="specification">
            <el-form-item label="规格" prop="materialSpec">
              <el-input
                v-model="printForm.specification"
                v-model="printForm.materialSpec"
                placeholder="请输入物料规格"
                clearable
              />
            </el-form-item>
            <el-form-item label="批号" prop="batchNumber">
            <el-form-item label="批号" prop="barcode">
              <el-input
                v-model="printForm.batchNumber"
                v-model="printForm.barcode"
                placeholder="请输入批号(生成二维码用)"
                clearable
                @keyup.enter="fetchBarcodeData"
                :loading="fetchingData"
              />
            </el-form-item>
            <el-form-item label="厂区" prop="factory">
            <el-form-item label="厂区" prop="factoryArea">
              <el-input
                v-model="printForm.factory"
                v-model="printForm.factoryArea"
                placeholder="请输入厂区名称"
                clearable
              />
            </el-form-item>
          </el-col>
          <!-- ç¬¬äºŒåˆ— -->
          <el-col :span="12">
            <el-form-item label="供应商编码" prop="supplierCode">
            <el-form-item label="供应商编码" prop="suplierCode">
              <el-input
                v-model="printForm.supplierCode"
                v-model="printForm.suplierCode"
                placeholder="请输入供应商编码"
                clearable
              />
            </el-form-item>
            <el-form-item label="采购单号" prop="purchaseOrderNo">
            <el-form-item label="采购单号" prop="pruchaseOrderNo">
              <el-input
                v-model="printForm.purchaseOrderNo"
                v-model="printForm.pruchaseOrderNo"
                placeholder="请输入采购单号"
                clearable
              />
            </el-form-item>
            <el-form-item label="数量/总数" prop="quantityTotal">
            <el-form-item label="数量/总数" prop="quantity">
              <el-input
                v-model="printForm.quantityTotal"
                v-model="printForm.quantity"
                placeholder="例:100/5000"
                clearable
              />
            </el-form-item>
            <el-form-item label="批次" prop="batch">
            <el-form-item label="批次" prop="batchNo">
              <el-input
                v-model="printForm.batch"
                v-model="printForm.batchNo"
                placeholder="请输入批次号"
                clearable
              />
@@ -104,7 +106,7 @@
          </el-col>
        </el-row>
        <!-- æ‰¹é‡æ·»åŠ ï¼ˆå¯é€‰ï¼‰ -->
        <el-form-item label="打印份数">
          <el-input-number
            v-model="printCopyCount"
@@ -115,7 +117,7 @@
          />
        </el-form-item>
        <!-- æ“ä½œæŒ‰é’® -->
        <el-form-item class="form-actions">
          <el-button type="primary" @click="submitForm">确认并打开打印弹窗</el-button>
          <el-button @click="resetForm">重置表单</el-button>
@@ -123,52 +125,87 @@
      </el-form>
    </el-card>
    <!-- å¼•入打印弹窗组件 -->
    <print-view ref="printViewRef" />
  </div>
</template>
<script>
// å¼•入打印弹窗组件
import printView from "@/extension/outbound/extend/printView.vue";
import { ElMessage } from "element-plus";
import http from '@/api/http.js'
export default {
  name: "PrintInputPage",
  components: { printView },
  data() {
    return {
      // è¡¨å•数据(对应printView所需的参数)
      printForm: {
        materialCode: "", // æ–™å·
        supplierCode: "", // ä¾›åº”商编码
        materialName: "", // å“å
        purchaseOrderNo: "", // é‡‡è´­å•号
        specification: "", // è§„æ ¼
        quantityTotal: "", // æ•°é‡/总数
        batchNumber: "", // æ‰¹å·ï¼ˆäºŒç»´ç å†…容)
        batch: "", // æ‰¹æ¬¡
        factory: "", // åŽ‚åŒº
        date: "", // æ—¥æœŸï¼ˆé»˜è®¤å½“前日期)
        materialCode: "",
        suplierCode: "",
        materialName: "",
        pruchaseOrderNo: "",
        materialSpec: "",
        quantity: "",
        barcode: "",
        batchNo: "",
        factoryArea: "",
        date: "",
      },
      // æ‰“印份数(支持批量生成多条相同数据)
      printCopyCount: 1,
      // è¡¨å•验证规则
      formRules: {
        materialCode: [{ required: true, message: "请输入料号", trigger: "blur" }],
        materialName: [{ required: true, message: "请输入品名", trigger: "blur" }],
        batchNumber: [{ required: true, message: "请输入批号", trigger: "blur" }],
        barcode: [{ required: true, message: "请输入批号", trigger: "blur" }],
        date: [{ required: true, message: "请选择日期", trigger: "change" }],
      },
      fetchingData: false
    };
  },
  mounted() {
    // åˆå§‹åŒ–默认日期为当天
    const today = new Date();
    this.printForm.date = `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, "0")}-${today.getDate().toString().padStart(2, "0")}`;
  },
  methods: {
    // æäº¤è¡¨å•,打开打印弹窗
    async fetchBarcodeData() {
      if (!this.printForm.barcode.trim()) {
        return;
      }
      try {
        this.fetchingData = true;
        const response = await http.post(
          `/api/Outbound/PrintFromData?barcode=` + this.printForm.barcode.trim()
        );
        const data = response.data;
        if (data) {
          this.printForm.materialCode = data.materialCode || "";
          this.printForm.suplierCode = data.suplierCode || "";
          this.printForm.materialName = data.materialName || "";
          this.printForm.pruchaseOrderNo = data.pruchaseOrderNo || "";
          this.printForm.materialSpec = data.materialSpec || "";
          this.printForm.quantity = data.quantity || "";
          this.printForm.batchNo = data.batchNo || "";
          this.printForm.factoryArea = data.factoryArea || "";
          ElMessage.success("已根据批号自动填充数据");
        } else {
          ElMessage.info("未查询到该批号对应的物料数据");
        }
      } catch (error) {
        console.error("获取批号数据失败:", error);
        ElMessage.error("获取数据失败,请检查网络或批号是否正确");
      } finally {
        this.fetchingData = false;
      }
    },
    submitForm() {
      this.$refs.printFormRef.validate((valid) => {
        if (!valid) {
@@ -177,13 +214,10 @@
        }
        try {
          // æž„造打印数据(支持多份)
          const printData = [];
          for (let i = 0; i < this.printCopyCount; i++) {
            printData.push({ ...this.printForm });
          }
          // è°ƒç”¨printView的open方法,传递参数并打开弹窗
          this.$refs.printViewRef.open(printData);
          ElMessage.success(`已生成 ${this.printCopyCount} ä»½æ‰“印数据,即将打开打印弹窗`);
        } catch (error) {
@@ -193,10 +227,9 @@
      });
    },
    // é‡ç½®è¡¨å•
    resetForm() {
      this.$refs.printFormRef.resetFields();
      // é‡ç½®åŽæ¢å¤é»˜è®¤æ—¥æœŸ
      const today = new Date();
      this.printForm.date = `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, "0")}-${today.getDate().toString().padStart(2, "0")}`;
      this.printCopyCount = 1;