gaoluyang
2 天以前 df1406d0f571972d033dffd6a93fb4b94febeb56
src/views/procureMent/components/ProductionDialog.vue
@@ -1,57 +1,48 @@
<template>
  <div>
    <el-dialog
      v-model="dialogFormVisible"
      :title="title"
      width="600"
      :close-on-click-modal="false"
      @close="handleClose"
        v-model="dialogFormVisible"
        :title="title"
        width="600"
        :close-on-click-modal="false"
        @close="handleClose"
    >
      <el-form
        ref="formRef"
        :model="form"
        :rules="rules"
        label-width="auto"
        class="production-form"
        label-position="right"
        style="max-width: 400px; margin: 0 auto"
          ref="formRef"
          :model="form"
          :rules="rules"
          label-width="auto"
          class="production-form"
          label-position="right"
          style="max-width: 400px; margin: 0 auto"
      >
        <el-form-item label="供应商名称" prop="supplierId">
          <el-select v-model="form.supplierId" placeholder="请选择供应商">
            <el-option :label="item.label" v-for="item in supplyList" :key="item.value" :value="item.value" />
            <el-option :label="item.label" v-for="item in supplyList" :key="item.value" :value="item.value"/>
          </el-select>
        </el-form-item>
        <el-form-item label="煤种" prop="coalId">
          <el-select v-model="form.coalId" placeholder="请选择煤种">
            <el-option :label="item.label" v-for="item in coalList" :key="item.value" :value="item.value" />
          </el-select>
        </el-form-item>
        <el-form-item label="单位" prop="unit">
          <el-select
            v-model="form.unit"
            placeholder="请选择单位"
            clearable
            style="width: 100%"
          >
            <el-option label="吨" value="吨" />
            <el-option label="千克" value="千克" />
            <el-option :label="item.label" v-for="item in coalList" :key="item.value" :value="item.value"/>
          </el-select>
        </el-form-item>
        <el-form-item label="采购数量" prop="purchaseQuantity">
          <el-input
            v-model.number="form.purchaseQuantity"
            placeholder="请输入"
            @blur="handleQuantityBlur"
              v-model.number="form.purchaseQuantity"
              placeholder="请输入"
              @blur="handleQuantityBlur"
          >
            <template v-slot:suffix>
              <i style="font-style: normal">{{ form.unit ? form.unit : "" }}</i>
              <i style="font-style: normal">吨</i>
            </template>
          </el-input> </el-form-item
        ><el-form-item label="税率" prop="taxRate">
          </el-input>
        </el-form-item
        >
        <el-form-item label="税率" prop="taxRate">
          <el-input
            v-model.number="form.taxRate"
            placeholder="请输入税率"
            @blur="handleTaxRateBlur"
              v-model.number="form.taxRate"
              placeholder="请输入税率"
              @blur="handleTaxRateBlur"
          >
            <template v-slot:suffix>
              <i style="font-style: normal">%</i>
@@ -60,9 +51,9 @@
        </el-form-item>
        <el-form-item label="单价(不含税)" prop="priceExcludingTax">
          <el-input
            v-model.number="form.priceExcludingTax"
            placeholder="请输入"
            @blur="handlePriceBlur"
              v-model.number="form.priceExcludingTax"
              placeholder="请输入"
              @blur="handlePriceBlur"
          >
            <template v-slot:suffix>
              <i style="font-style: normal">元</i>
@@ -71,8 +62,8 @@
        </el-form-item>
        <el-form-item label="单价(含税)" prop="priceIncludingTax">
          <el-input
            v-model.number="form.priceIncludingTax"
            placeholder="自动计算"
              v-model.number="form.priceIncludingTax"
              placeholder="自动计算"
          >
            <template v-slot:suffix>
              <i style="font-style: normal">元</i>
@@ -81,8 +72,8 @@
        </el-form-item>
        <el-form-item label="总价(不含税)" prop="totalPriceExcludingTax">
          <el-input
            v-model.number="form.totalPriceExcludingTax"
            placeholder="自动计算"
              v-model.number="form.totalPriceExcludingTax"
              placeholder="自动计算"
          >
            <template v-slot:suffix>
              <i style="font-style: normal">元</i>
@@ -91,8 +82,8 @@
        </el-form-item>
        <el-form-item label="总价(含税)" prop="totalPriceIncludingTax">
          <el-input
            v-model.number="form.totalPriceIncludingTax"
            placeholder="自动计算"
              v-model.number="form.totalPriceIncludingTax"
              placeholder="自动计算"
          >
            <template v-slot:suffix>
              <i style="font-style: normal">元</i>
@@ -100,16 +91,16 @@
          </el-input>
        </el-form-item>
        <el-form-item label="登记人" prop="registrantId">
          <el-input v-model="form.registrantId" disabled placeholder="请输入" />
          <el-input v-model="form.registrantId" disabled placeholder="请输入"/>
        </el-form-item>
        <el-form-item label="登记日期" prop="registrationDate">
          <el-date-picker
            disabled
            v-model="form.registrationDate"
            type="date"
            placeholder="YYYY-MM-DD"
            style="width: 100%"
            value-format="YYYY-MM-DD"
              disabled
              v-model="form.registrationDate"
              type="date"
              placeholder="YYYY-MM-DD"
              style="width: 100%"
              value-format="YYYY-MM-DD"
          />
        </el-form-item>
      </el-form>
@@ -117,10 +108,12 @@
        <div class="dialog-footer">
          <!-- 重置和取消 -->
          <el-button @click="handleClose" v-if="title.includes('新增')"
            >取消</el-button
          >取消
          </el-button
          >
          <el-button @click="handleReset" v-if="title.includes('编辑')"
            >重置</el-button
          >重置
          </el-button
          >
          <el-button type="primary" @click="handleSubmit">确认</el-button>
        </div>
@@ -130,12 +123,11 @@
</template>
<script setup name="ProductionDialog">
import { ref, defineProps, watch, onMounted, nextTick, computed } from "vue";
import { ElMessage } from "element-plus";
import {ref, defineProps, watch, onMounted, nextTick, computed} from "vue";
import {ElMessage} from "element-plus";
import useUserStore from "@/store/modules/user";
import { addOrEditPR,getSupplyList, getCoalInfoList } from "@/api/procureMent";
import { getSupply } from "@/api/basicInformation/supplier";
import { getCoalInfo } from "@/api/basicInformation/coal";
import {addOrEditPR, getSupplyList, getCoalInfoList} from "@/api/procureMent";
const props = defineProps({
  title: {
    type: String,
@@ -164,7 +156,6 @@
      getSupplyList(),
      getCoalInfoList(),
    ]);
    console.log(supplyRes, coalRes);
    let supplyData = supplyRes.data;
    let coalData = coalRes.data;
    supplyList.value = supplyData.map((item) => ({
@@ -188,8 +179,8 @@
    return 0;
  }
  return (
    Math.floor(parseFloat(num) * Math.pow(10, precision)) /
    Math.pow(10, precision)
      Math.floor(parseFloat(num) * Math.pow(10, precision)) /
      Math.pow(10, precision)
  );
};
// 含税单价计算
@@ -250,9 +241,9 @@
// 处理税率输入框失焦,确保精度
const handleTaxRateBlur = () => {
  if (
    form.value.taxRate !== null &&
    form.value.taxRate !== undefined &&
    form.value.taxRate !== ""
      form.value.taxRate !== null &&
      form.value.taxRate !== undefined &&
      form.value.taxRate !== ""
  ) {
    form.value.taxRate = toFixed(parseFloat(form.value.taxRate), 2);
  }
@@ -261,13 +252,13 @@
// 处理不含税单价输入框失焦,确保精度
const handlePriceBlur = () => {
  if (
    form.value.priceExcludingTax !== null &&
    form.value.priceExcludingTax !== undefined &&
    form.value.priceExcludingTax !== ""
      form.value.priceExcludingTax !== null &&
      form.value.priceExcludingTax !== undefined &&
      form.value.priceExcludingTax !== ""
  ) {
    form.value.priceExcludingTax = toFixed(
      parseFloat(form.value.priceExcludingTax),
      2
        parseFloat(form.value.priceExcludingTax),
        2
    );
  }
};
@@ -275,13 +266,13 @@
// 处理采购数量输入框失焦,确保精度
const handleQuantityBlur = () => {
  if (
    form.value.purchaseQuantity !== null &&
    form.value.purchaseQuantity !== undefined &&
    form.value.purchaseQuantity !== ""
      form.value.purchaseQuantity !== null &&
      form.value.purchaseQuantity !== undefined &&
      form.value.purchaseQuantity !== ""
  ) {
    form.value.purchaseQuantity = toFixed(
      parseFloat(form.value.purchaseQuantity),
      3
        parseFloat(form.value.purchaseQuantity),
        3
    ); // 数量保留3位小数
  }
};
@@ -293,30 +284,29 @@
});
const rules = {
  supplierName: [
    { required: true, message: "请输入供应商名称", trigger: "blur" },
    {required: true, message: "请输入供应商名称", trigger: "blur"},
  ],
  coal: [{ required: true, message: "请输入煤种", trigger: "blur" }],
  unit: [{ required: true, message: "请输入单位", trigger: "blur" }],
  coal: [{required: true, message: "请输入煤种", trigger: "blur"}],
  purchaseQuantity: [
    { required: true, message: "请输入采购数量", trigger: "blur" },
    { type: "number", message: "采购数量必须为数字", trigger: "blur" },
    {required: true, message: "请输入采购数量", trigger: "blur"},
    {type: "number", message: "采购数量必须为数字", trigger: "blur"},
  ],
  priceExcludingTax: [
    { required: true, message: "请输入单价", trigger: "blur" },
    {required: true, message: "请输入单价", trigger: "blur"},
  ],
  totalPriceExcludingTax: [
    { required: true, message: "请输入总价", trigger: "blur" },
    {required: true, message: "请输入总价", trigger: "blur"},
  ],
  priceIncludingTax: [
    { required: true, message: "请输入含税单价", trigger: "blur" },
    {required: true, message: "请输入含税单价", trigger: "blur"},
  ],
  totalPriceIncludingTax: [
    { required: true, message: "请输入含税总价", trigger: "blur" },
    {required: true, message: "请输入含税总价", trigger: "blur"},
  ],
  taxRate: [{ required: true, message: "请输入税率", trigger: "blur" }],
  registrantId: [{ required: true, message: "请输入登记人", trigger: "blur" }],
  taxRate: [{required: true, message: "请输入税率", trigger: "blur"}],
  registrantId: [{required: true, message: "请输入登记人", trigger: "blur"}],
  registrationDate: [
    { required: true, message: "请选择登记日期", trigger: "change" },
    {required: true, message: "请选择登记日期", trigger: "change"},
  ],
};
// 关闭弹窗