huminmin
5 天以前 842336cb13319389ec8328bedc52491478d24203
src/views/inventoryManagement/receiptManagement/components/formDia.vue
@@ -2,27 +2,41 @@
  <el-dialog v-model="dialogFormVisible" :title="getDialogTitle()" width="70%"
    @close="closeDia">
    <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
      <el-form-item label="采购订单号" prop="purchaseContractNumber">
        <el-select
          v-model="form.purchaseContractNumber"
          placeholder="请选择采购订单号"
          clearable
          filterable
          remote
          :remote-method="loadPurchaseOptions"
          :loading="loadingPurchaseOptions"
          @change="handlePurchaseChange"
          :disabled="operationType === 'edit'"
          style="width: 100%"
        >
          <el-option
            v-for="item in purchaseOptions"
            :key="item.purchaseContractNumber"
            :label="formatPurchaseOption(item)"
            :value="item.purchaseContractNumber"
          />
        </el-select>
      </el-form-item>
      <el-row :gutter="24">
        <el-col :span="12">
          <el-form-item label="采购订单号" prop="purchaseContractNumber">
            <el-select
                v-model="form.purchaseContractNumber"
                placeholder="请选择采购订单号"
                clearable
                filterable
                :loading="loadingPurchaseOptions"
                @change="handlePurchaseChange"
                :disabled="operationType === 'edit'"
                style="width: 100%"
            >
              <el-option
                  v-for="item in purchaseOptions"
                  :key="item.purchaseContractNumber"
                  :label="formatPurchaseOption(item)"
                  :value="item.purchaseContractNumber"
              />
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="入库时间" prop="inboundTime">
            <el-date-picker
                v-model="form.inboundTime"
                value-format="YYYY-MM-DD"
                format="YYYY-MM-DD"
                type="date"
            ></el-date-picker>
          </el-form-item>
        </el-col>
      </el-row>
      <el-table
        :data="productList"
        border
@@ -39,33 +53,27 @@
        <el-table-column label="产品大类" prop="productCategory" />
        <el-table-column label="规格型号" prop="specificationModel" />
        <el-table-column label="单位" prop="unit" width="70" />
        <el-table-column label="供应商" prop="supplierName" width="100" />
        <!-- <el-table-column label="供应商" prop="supplierName" width="100" /> -->
        <el-table-column label="采购数量" prop="quantity" width="100" />
        <el-table-column label="待入库数量" prop="quantity0" width="100" />
        <el-table-column label="本次入库数量" prop="quantityStock" width="150">
          <template #default="scope">
            <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.quantityStock" />
            <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.quantityStock" @change="() => calculateTotalPrice(scope.row)" />
          </template>
        </el-table-column>
        <el-table-column label="税率(%)" prop="taxRate" width="120" />
        <el-table-column label="单价(元)" prop="taxInclusiveUnitPrice" width="150">
               <template #default="scope">
                  <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.taxInclusiveUnitPrice" @change="() => calculateTotalPrice(scope.row)" :disabled="operationType === 'edit'"/>
               </template>
            </el-table-column>
        <el-table-column
          label="含税单价(元)"
          prop="taxInclusiveUnitPrice"
          :formatter="formattedNumber"
          width="150"
        />
        <el-table-column
          label="含税总价(元)"
          label="总价(元)"
               :formatter="formattedNumber"
          prop="taxInclusiveTotalPrice"
          :formatter="formattedNumber"
          width="150"
        />
        <el-table-column
          label="不含税总价(元)"
          prop="taxExclusiveTotalPrice"
          :formatter="formattedNumber"
          width="150"
        />
        >
        </el-table-column>
      </el-table>
    </el-form>
    <template #footer>
@@ -199,6 +207,18 @@
  return parseFloat(cellValue).toFixed(2);
};
// 计算总价
const calculateTotalPrice = (row) => {
  const quantityStock = Number(row?.quantityStock ?? 0);
  const taxInclusiveUnitPrice = Number(row?.taxInclusiveUnitPrice ?? 0);
  if (Number.isFinite(quantityStock) && Number.isFinite(taxInclusiveUnitPrice)) {
    row.taxInclusiveTotalPrice = quantityStock * taxInclusiveUnitPrice;
  } else {
    row.taxInclusiveTotalPrice = 0;
  }
};
const fetchProductsByContract = async () => {
  if (!form.value.purchaseContractNumber) {
    proxy.$modal.msgWarning('请选择合同号')
@@ -217,6 +237,8 @@
    productList.value = productRes.data.map(item => ({
      ...item,
      quantityStock: 0,
      taxInclusiveUnitPrice: Number(item?.taxInclusiveUnitPrice ?? 0),
      taxInclusiveTotalPrice: 0,
      originalQuantityStock: Number(item.quantityStock ?? item.inboundQuantity ?? 0),
    }))
  } catch (error) {
@@ -283,7 +305,10 @@
      nickName: userStore.nickName,
      details: selectedRows.value.map(product => ({
        id: product.id,
        inboundQuantity: Number(product.quantityStock)
        inboundQuantity: Number(product.quantityStock),
            unitPrice: Number(product.taxInclusiveUnitPrice),
        taxRate: Number(product.taxRate),
            taxInclusiveTotalPrice: Number(product.taxInclusiveTotalPrice)
      })),
    };
    loading.value = true
@@ -365,6 +390,8 @@
      productList.value = res.data.map(item => ({
        ...item,
        quantityStock: Number(item.quantityStock ?? item.inboundQuantity ?? row.inboundNum ?? 0),
        taxInclusiveUnitPrice: Number(item?.taxInclusiveUnitPrice ?? 0),
        taxInclusiveTotalPrice: Number(item?.quantityStock ?? 0) * Number(item?.taxInclusiveUnitPrice ?? 0),
        originalQuantityStock: Number(item.quantityStock ?? item.inboundQuantity ?? row.inboundNum ?? 0),
      }))
      selectedRows.value = productList.value
@@ -385,3 +412,5 @@
<style scoped lang="scss"></style>