gaoluyang
5 天以前 3712799f3e0904f28e4268deaa5c5ee291323c38
src/views/productionManagement/productionReporting/components/formDia.vue
@@ -13,8 +13,15 @@
              <el-input v-model="form.schedulingNum" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="本次生产数量:" prop="finishedNum">
               <el-col :span="12">
                  <el-form-item label="待生产数量:" prop="pendingNum">
                     <el-input v-model="form.pendingNum" placeholder="请输入" clearable disabled/>
                  </el-form-item>
               </el-col>
        </el-row>
        <el-row :gutter="30">
               <el-col :span="12">
                  <el-form-item label="本次生产数量:" prop="finishedNum">
                     <el-input-number
                        v-model="form.finishedNum"
                        placeholder="请输入"
@@ -25,13 +32,18 @@
                        style="width: 100%"
                        @change="changeNum"
                     />
                  </el-form-item>
               </el-col>
          <el-col :span="12">
            <el-form-item label="单价(元):" prop="unitPrice">
              <el-input v-model="form.unitPrice" placeholder="请输入" clearable @input="calculateTotalPrice"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="待生产数量:" prop="pendingNum">
              <el-input :value="form.pendingNum !== undefined && form.pendingNum !== null ? Number(form.pendingNum).toFixed(2) : ''" placeholder="请输入" clearable disabled/>
            <el-form-item label="总价(元):" prop="totalPrice">
              <el-input v-model="form.totalPrice" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
@@ -42,6 +54,9 @@
                        v-model="form.schedulingUserId"
                        placeholder="选择人员"
                        style="width: 100%;"
                filterable
                default-first-option
                :reserve-keyword="false"
                     >
                        <el-option
                           v-for="user in userList"
@@ -88,7 +103,6 @@
const userList = ref([])
const dialogFormVisible = ref(false);
const operationType = ref('')
const pendingFinishNum = ref(0) // 外部传入的待生产数量(剩余可报工数量)
const data = reactive({
  form: {
      successNum: "",
@@ -96,6 +110,8 @@
      finishedNum: "",
      schedulingUserId: "",
      schedulingDate: "",
      unitPrice: "",
      totalPrice: "",
  },
  rules: {
      schedulingNum: [{ required: true, message: "请输入", trigger: "blur" },],
@@ -111,21 +127,27 @@
      userList.value = res.data;
   });
   form.value = {...row}
  pendingFinishNum.value = Number(row?.pendingFinishNum || 0)
  // 将待生产数量带入表单,方便展示与校验,保留两位小数
  form.value.pendingNum = Number(pendingFinishNum.value.toFixed(2))
}
const changeNum = (value) => {
   const maxPending = Number(pendingFinishNum.value) || 0
   // 上限:不能超过待生产数量
   if (Number(value) > maxPending) {
      form.value.finishedNum = Number(maxPending.toFixed(2));
      proxy.$modal.msgWarning('本次生产数量不可大于待生产数量')
   if (value > form.value.schedulingNum) {
      form.value.finishedNum = form.value.schedulingNum;
      proxy.$modal.msgWarning('本次生产数量不可大于排产数量')
   }
   // 重新计算剩余待生产数量,保留两位小数
   const finishedNum = Number(form.value.finishedNum) || 0
   form.value.pendingNum = Number((maxPending - finishedNum).toFixed(2));
   form.value.pendingNum = form.value.schedulingNum - form.value.finishedNum;
   calculateTotalPrice();
}
// 计算总价
const calculateTotalPrice = () => {
   const quantity = Number(form.value.finishedNum ?? 0);
   const unitPrice = Number(form.value.unitPrice ?? 0);
   if (quantity > 0 && unitPrice > 0) {
      form.value.totalPrice = (quantity * unitPrice).toFixed(2);
   } else {
      form.value.totalPrice = '0.00';
   }
}
// 提交产品表单
const submitForm = () => {