| | |
| | | prop="availableQuality" /> |
| | | <el-table-column label="退货数量" |
| | | prop="returnQuality" /> |
| | | <el-table-column label="运费单价(元)" |
| | | prop="freightUnitPrice" |
| | | :formatter="formattedNumber" /> |
| | | <el-table-column label="总运费(元)" |
| | | prop="totalFreight" |
| | | :formatter="formattedNumber" /> |
| | | <el-table-column label="税率(%)" |
| | | prop="taxRate" /> |
| | | <el-table-column label="含税单价(元)" |
| | |
| | | <el-table-column label="付款方式" |
| | | width="100" |
| | | prop="paymentMethod" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="车牌号" |
| | | prop="carPlateNumber" |
| | | width="140" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="运输单位/个人" |
| | | prop="transportUnitOrPerson" |
| | | width="180" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="合同金额(元)" |
| | | prop="contractAmount" |
| | |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="车牌号:" |
| | | prop="carPlateNumber"> |
| | | <el-input v-model="form.carPlateNumber" |
| | | placeholder="请输入" |
| | | clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="运输单位/个人:" |
| | | prop="transportUnitOrPerson"> |
| | | <el-input v-model="form.transportUnitOrPerson" |
| | | placeholder="请输入" |
| | | clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="录入人:" |
| | | prop="recorderId"> |
| | | <el-select v-model="form.recorderId" |
| | |
| | | <el-table-column label="数量" |
| | | prop="quantity" |
| | | width="70" /> |
| | | <el-table-column label="运费单价(元)" |
| | | prop="freightUnitPrice" |
| | | :formatter="formattedNumber" |
| | | width="150" /> |
| | | <el-table-column label="总运费(元)" |
| | | prop="totalFreight" |
| | | :formatter="formattedNumber" |
| | | width="150" /> |
| | | <el-table-column label="库存预警数量" |
| | | prop="warnNum" |
| | | width="120" |
| | |
| | | style="width: 100%" |
| | | v-model="productForm.quantity" |
| | | placeholder="请输入" |
| | | @change="mathNum" /> |
| | | @change="handleQuantityChange" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="运费单价(元):" |
| | | prop="freightUnitPrice"> |
| | | <el-input-number v-model="productForm.freightUnitPrice" |
| | | :precision="2" |
| | | :step="0.1" |
| | | :min="0" |
| | | clearable |
| | | style="width: 100%" |
| | | @change="handleFreightUnitPriceChange" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="总运费(元):" |
| | | prop="totalFreight"> |
| | | <el-input-number v-model="productForm.totalFreight" |
| | | :precision="2" |
| | | :step="0.1" |
| | | :min="0" |
| | | clearable |
| | | style="width: 100%" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | supplierName: "", |
| | | supplierId: "", |
| | | paymentMethod: "", |
| | | carPlateNumber: "", |
| | | transportUnitOrPerson: "", |
| | | executionDate: "", |
| | | isChecked: false, |
| | | }, |
| | |
| | | specificationModel: "", |
| | | unit: "", |
| | | quantity: "", |
| | | freightUnitPrice: "", |
| | | totalFreight: "", |
| | | taxInclusiveUnitPrice: "", |
| | | taxRate: "", |
| | | taxInclusiveTotalPrice: "", |
| | |
| | | }; |
| | | |
| | | const formattedNumber = (row, column, cellValue) => { |
| | | return parseFloat(cellValue).toFixed(2); |
| | | if (cellValue === undefined || cellValue === null || cellValue === "") { |
| | | return "0.00"; |
| | | } |
| | | const num = Number(cellValue); |
| | | if (Number.isNaN(num)) return "0.00"; |
| | | return num.toFixed(2); |
| | | }; |
| | | // 查询列表 |
| | | /** 搜索按钮操作 */ |
| | |
| | | return proxy.summarizeTable( |
| | | param, |
| | | [ |
| | | "freightUnitPrice", |
| | | "totalFreight", |
| | | "taxInclusiveUnitPrice", |
| | | "taxInclusiveTotalPrice", |
| | | "taxExclusiveTotalPrice", |
| | |
| | | "taxInclusiveUnitPrice", |
| | | "taxInclusiveTotalPrice", |
| | | "taxExclusiveTotalPrice", |
| | | "totalFreight", |
| | | ]); |
| | | }; |
| | | // 打开弹框 |
| | |
| | | if (type === "edit") { |
| | | // 复制行数据 |
| | | productForm.value = { ...row }; |
| | | if (productForm.value.freightUnitPrice === undefined) { |
| | | productForm.value.freightUnitPrice = ""; |
| | | } |
| | | if (productForm.value.totalFreight === undefined) { |
| | | productForm.value.totalFreight = ""; |
| | | } |
| | | |
| | | // 如果是从模板加载的数据,可能没有 productId 和 productModelId |
| | | // 需要根据 productCategory 和 specificationModel 来查找对应的 ID |
| | |
| | | // 最后再等待一次 DOM 更新,确保所有数据都已设置 |
| | | await nextTick(); |
| | | } |
| | | computeTotalFreight(); |
| | | }; |
| | | |
| | | const computeTotalFreight = () => { |
| | | const hasQuantity = |
| | | productForm.value.quantity !== "" && |
| | | productForm.value.quantity !== null && |
| | | productForm.value.quantity !== undefined; |
| | | const hasFreightUnitPrice = |
| | | productForm.value.freightUnitPrice !== "" && |
| | | productForm.value.freightUnitPrice !== null && |
| | | productForm.value.freightUnitPrice !== undefined; |
| | | if (!hasQuantity || !hasFreightUnitPrice) return; |
| | | |
| | | const quantity = Number(productForm.value.quantity); |
| | | const freightUnitPrice = Number(productForm.value.freightUnitPrice); |
| | | if (!Number.isFinite(quantity) || !Number.isFinite(freightUnitPrice)) return; |
| | | |
| | | productForm.value.totalFreight = (quantity * freightUnitPrice).toFixed(2); |
| | | }; |
| | | |
| | | const handleQuantityChange = () => { |
| | | mathNum(); |
| | | computeTotalFreight(); |
| | | }; |
| | | |
| | | const handleFreightUnitPriceChange = () => { |
| | | computeTotalFreight(); |
| | | }; |
| | | const getProductOptions = () => { |
| | | return productTreeList().then(res => { |