| src/api/inventoryManagement/stockInRecord.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/api/inventoryManagement/stockOut.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/dispatchLog/Record.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/receiptManagement/Record.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/Qualified.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/Subtract.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/inventoryManagement/stockInRecord.js
@@ -18,6 +18,15 @@ }); }; // 编辑入库(用于库存台账编辑) export const editStockInStock = (data) => { return request({ url: "/stockInRecord/editStockInStock", method: "post", data, }); }; export const batchDeleteStockInRecords = (ids) => { return request({ url: "/stockInRecord", src/api/inventoryManagement/stockOut.js
@@ -17,3 +17,12 @@ data: ids, }); } // 编辑出库(库存台账编辑) export const editStockOut = (data) => { return request({ url: "/stockOutRecord/editStockOut", method: "post", data, }); } src/views/inventoryManagement/dispatchLog/Record.vue
@@ -28,7 +28,7 @@ </div> <div> <el-button @click="handleOut">导出</el-button> <el-button type="danger" plain @click="handleDelete">删除</el-button> <el-button type="danger" plain @click="handleDelete" v-if="hasDispatchCancel">删除</el-button> <!-- <el-button type="primary" plain @click="handlePrint">打印</el-button> --> </div> </div> @@ -71,11 +71,11 @@ prop="unit" show-overflow-tooltip /> <el-table-column <!-- <el-table-column label="出库数量" prop="stockOutNum" show-overflow-tooltip /> /> --> <el-table-column label="车牌号" prop="licensePlateNo" @@ -119,15 +119,128 @@ show-overflow-tooltip /> <el-table-column label="操作" width="120" width="260" align="center"> <template #default="scope"> <el-button type="primary" size="mini" @click="handlePreview(scope.row)">导出过磅单</el-button> <el-button v-if="scope.row.recordType === '0' && hasDispatchEdit" type="primary" size="mini" @click="handleEdit(scope.row)" >编辑</el-button> <el-button v-if="scope.row.recordType === '0'" type="primary" size="mini" @click="handlePreview(scope.row)" >导出过磅单</el-button> </template> </el-table-column> </el-table-column> </el-table> <el-dialog v-model="isShowEditModal" title="编辑出库" width="800" @close="closeEditModal" > <el-form label-width="140px" :model="editForm" label-position="top" ref="editFormRef"> <!-- <el-form-item label="出库数量" prop="stockOutNum" > <el-input-number v-model="editForm.stockOutNum" :min="0" :step="1" :precision="0" controls-position="right" style="width: 100%" disabled /> </el-form-item> --> <el-form-item label="车牌号" prop="licensePlateNo" :rules="[{ required: true, message: '请输入车牌号', trigger: ['blur','change'] }]" > <el-input v-model="editForm.licensePlateNo" /> </el-form-item> <el-form-item label="毛重(吨)" prop="grossWeight" :rules="[{ required: true, message: '请输入毛重', trigger: ['blur','change'] }]" > <el-input-number v-model="editForm.grossWeight" :step="0.01" :min="0" style="width: 100%" @change="computeNetWeightEdit" /> </el-form-item> <el-form-item label="皮重(吨)" prop="tareWeight" :rules="[{ required: true, message: '请输入皮重', trigger: ['blur','change'] }]" > <el-input-number v-model="editForm.tareWeight" :step="0.01" :min="0" style="width: 100%" @change="computeNetWeightEdit" /> </el-form-item> <el-form-item label="净重(吨)" prop="netWeight" :rules="[{ required: true, message: '净重由毛重和皮重自动计算', trigger: ['blur','change'] }]" > <el-input-number v-model="editForm.netWeight" :step="0.01" :min="0" style="width: 100%" disabled /> </el-form-item> <el-form-item label="过磅日期" prop="weighingDate" :rules="[{ required: true, message: '请选择过磅日期', trigger: 'change' }]" > <el-date-picker style="width: 100%" v-model="editForm.weighingDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择过磅日期" clearable /> </el-form-item> <el-form-item label="过磅员" prop="weighingOperator" :rules="[{ required: true, message: '请输入过磅员', trigger: ['blur','change'] }]" > <el-input v-model="editForm.weighingOperator" /> </el-form-item> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="handleEditSubmit">确认</el-button> <el-button @click="closeEditModal">取消</el-button> </div> </template> </el-dialog> <pagination v-show="total > 0" :total="total" @@ -142,13 +255,15 @@ <script setup> import pagination from "@/components/PIMTable/Pagination.vue"; import { ref } from "vue"; import { ref, computed } from "vue"; import { ElMessageBox } from "element-plus"; import useUserStore from "@/store/modules/user"; import { getCurrentDate } from "@/utils/index.js"; import { checkPermi } from "@/utils/permission.js"; import { getStockOutPage, delStockOut, editStockOut, } from "@/api/inventoryManagement/stockOut.js"; import { findAllQualifiedStockOutRecordTypeOptions, findAllUnQualifiedStockOutRecordTypeOptions, @@ -174,6 +289,9 @@ default: '0' } }) const hasDispatchEdit = computed(() => checkPermi(['dispatch_edit'])); const hasDispatchCancel = computed(() => checkPermi(['dispatch_cancel'])); // 打印相关 const printPreviewVisible = ref(false); @@ -248,6 +366,48 @@ proxy.$download.name(row.weighbridgeDocPath); } // 编辑出库 const isShowEditModal = ref(false); const editFormRef = ref(null); const editForm = ref({}); // 毛重 - 皮重 计算净重(保留两位小数,且不为负) const computeNetWeightEdit = () => { const gross = Number(editForm.value?.grossWeight ?? NaN); const tare = Number(editForm.value?.tareWeight ?? NaN); if (Number.isFinite(gross) && Number.isFinite(tare)) { const net = gross - tare; const safeNet = Number(net.toFixed(2)); editForm.value.netWeight = safeNet > 0 ? safeNet : 0; } else { editForm.value.netWeight = undefined; } }; const handleEdit = (row) => { editForm.value = { ...row }; computeNetWeightEdit(); isShowEditModal.value = true; }; const closeEditModal = () => { isShowEditModal.value = false; editForm.value = {}; editFormRef.value?.clearValidate?.(); }; const handleEditSubmit = () => { editFormRef.value?.validate?.((valid) => { if (!valid) return; const { stockOutNum, ...payload } = editForm.value || {}; editStockOut(payload).then(() => { closeEditModal(); proxy.$modal.msgSuccess("编辑成功"); getList(); }); }); }; // 导出 const handleOut = () => { ElMessageBox.confirm("是否确认导出?", "导出", { src/views/inventoryManagement/receiptManagement/Record.vue
@@ -34,7 +34,8 @@ <el-button @click="handleOut">导出</el-button> <el-button type="danger" plain @click="handleDelete">删除 @click="handleDelete" v-if="hasReceiptCancel">删除 </el-button> </div> </div> @@ -74,9 +75,9 @@ <el-table-column label="单位" prop="unit" show-overflow-tooltip/> <el-table-column label="入库数量" <!-- <el-table-column label="入库数量" prop="stockInNum" show-overflow-tooltip/> show-overflow-tooltip/> --> <el-table-column label="车牌号" prop="licensePlateNo" v-if="type === '0'" @@ -112,9 +113,14 @@ v-if="type === '0'" show-overflow-tooltip/> <el-table-column label="操作" width="120" width="260" align="center"> <template #default="scope"> <el-button v-if="scope.row.recordType === '0' && hasReceiptEdit" type="primary" size="mini" @click="handleEdit(scope.row)" >编辑</el-button> <el-button v-if="scope.row.recordType === '0'" type="primary" size="mini" @@ -122,6 +128,112 @@ </template> </el-table-column> </el-table> <el-dialog v-model="isShowEditModal" title="编辑入库" width="800" @close="closeEditModal" > <el-form label-width="140px" :model="editForm" label-position="top" ref="editFormRef"> <!-- <el-form-item label="入库数量" prop="stockInNum" > <el-input-number v-model="editForm.stockInNum" :min="0" :step="1" :precision="0" controls-position="right" style="width: 100%" disabled /> </el-form-item> --> <template v-if="type === '0'"> <el-form-item label="车牌号" prop="licensePlateNo" :rules="[{ required: true, message: '请输入车牌号', trigger: ['blur', 'change'] }]" > <el-input v-model="editForm.licensePlateNo" /> </el-form-item> <el-form-item label="毛重(吨)" prop="grossWeight" :rules="[{ required: true, message: '请输入毛重', trigger: ['blur', 'change'] }]" > <el-input-number v-model="editForm.grossWeight" :step="0.01" :min="0" style="width: 100%" @change="computeNetWeightEdit" /> </el-form-item> <el-form-item label="皮重(吨)" prop="tareWeight" :rules="[{ required: true, message: '请输入皮重', trigger: ['blur', 'change'] }]" > <el-input-number v-model="editForm.tareWeight" :step="0.01" :min="0" style="width: 100%" @change="computeNetWeightEdit" /> </el-form-item> <el-form-item label="净重(吨)" prop="netWeight" :rules="[{ required: true, message: '请输入净重', trigger: ['blur', 'change'] }]" > <el-input-number v-model="editForm.netWeight" :step="0.01" :min="0" style="width: 100%" disabled /> </el-form-item> <el-form-item label="过磅日期" prop="weighingDate" :rules="[{ required: true, message: '请选择过磅日期', trigger: 'change' }]" > <el-date-picker style="width: 100%" v-model="editForm.weighingDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择过磅日期" clearable /> </el-form-item> <el-form-item label="过磅员" prop="weighingOperator" :rules="[{ required: true, message: '请输入过磅员', trigger: ['blur', 'change'] }]" > <el-input v-model="editForm.weighingOperator" /> </el-form-item> </template> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="handleEditSubmit">确认</el-button> <el-button @click="closeEditModal">取消</el-button> </div> </template> </el-dialog> <div style="margin-top: 12px; display: flex; justify-content: flex-end;"> <pagination v-show="total > 0" :total="total" @@ -142,11 +254,14 @@ toRefs, onMounted, getCurrentInstance, computed, } from "vue"; import {ElMessageBox} from "element-plus"; import { checkPermi } from "@/utils/permission.js"; import { getStockInRecordListPage, batchDeleteStockInRecords, editStockInStock, } from "@/api/inventoryManagement/stockInRecord.js"; import { findAllQualifiedStockInRecordTypeOptions, findAllUnQualifiedStockInRecordTypeOptions, @@ -161,6 +276,9 @@ default: '0' } }) const hasReceiptEdit = computed(() => checkPermi(['receipt_edit'])); const hasReceiptCancel = computed(() => checkPermi(['receipt_cancel'])); const tableData = ref([]); const selectedRows = ref([]); @@ -240,6 +358,50 @@ proxy.$download.name(row.weighbridgeDocPath); } // 编辑 const isShowEditModal = ref(false); const editFormRef = ref(null); const editForm = ref({}); // 毛重 - 皮重 计算净重(保留两位小数,且不为负) const computeNetWeightEdit = () => { const gross = Number(editForm.value?.grossWeight ?? NaN); const tare = Number(editForm.value?.tareWeight ?? NaN); if (Number.isFinite(gross) && Number.isFinite(tare)) { const net = gross - tare; const safeNet = Number(net.toFixed(2)); editForm.value.netWeight = safeNet > 0 ? safeNet : 0; } else { editForm.value.netWeight = undefined; } }; const handleEdit = (row) => { editForm.value = { ...row }; if (props.type === '0') { computeNetWeightEdit(); } isShowEditModal.value = true; }; const closeEditModal = () => { isShowEditModal.value = false; editForm.value = {}; // 清理表单校验状态(有 ref 时) editFormRef.value?.clearValidate?.(); }; const handleEditSubmit = () => { editFormRef.value?.validate?.((valid) => { if (!valid) return; editStockInStock(editForm.value).then(() => { closeEditModal(); proxy.$modal.msgSuccess("编辑成功"); getList(); }); }); }; // 导出 const handleOut = () => { ElMessageBox.confirm("是否确认导出?", "导出", { src/views/inventoryManagement/stockManagement/Qualified.vue
@@ -30,7 +30,7 @@ <el-table-column label="库存数量" prop="qualitity" show-overflow-tooltip /> <el-table-column label="冻结数量" prop="lockedQuantity" show-overflow-tooltip /> <!-- <el-table-column label="库存预警数量" prop="warnNum" show-overflow-tooltip /> --> <el-table-column label="净重(吨)" prop="netWeight" show-overflow-tooltip /> <!-- <el-table-column label="净重(吨)" prop="netWeight" show-overflow-tooltip /> --> <el-table-column label="备注" prop="remark" show-overflow-tooltip /> <el-table-column label="最近更新时间" prop="updateTime" show-overflow-tooltip /> <el-table-column fixed="right" label="操作" min-width="60" align="center"> src/views/inventoryManagement/stockManagement/Subtract.vue
@@ -40,6 +40,7 @@ <el-form-item label="车牌号" prop="licensePlateNo" :rules="[{ required: true, message: '请输入车牌号', trigger: ['blur','change'] }]" > <el-input v-model="formState.licensePlateNo" /> </el-form-item> @@ -47,6 +48,7 @@ <el-form-item label="毛重(吨)" prop="grossWeight" :rules="[{ required: true, message: '请输入毛重', trigger: ['blur','change'] }]" > <el-input-number v-model="formState.grossWeight" @@ -60,6 +62,7 @@ <el-form-item label="皮重(吨)" prop="tareWeight" :rules="[{ required: true, message: '请输入皮重', trigger: ['blur','change'] }]" > <el-input-number v-model="formState.tareWeight" @@ -73,6 +76,7 @@ <el-form-item label="净重(吨)" prop="netWeight" :rules="[{ required: true, message: '净重由毛重和皮重自动计算', trigger: ['blur','change'] }]" > <el-input-number v-model="formState.netWeight" @@ -86,6 +90,7 @@ <el-form-item label="过磅日期" prop="weighingDate" :rules="[{ required: true, message: '请选择过磅日期', trigger: 'change' }]" > <el-date-picker style="width: 100%" @@ -101,6 +106,7 @@ <el-form-item label="过磅员" prop="weighingOperator" :rules="[{ required: true, message: '请输入过磅员', trigger: ['blur','change'] }]" > <el-input v-model="formState.weighingOperator" /> </el-form-item> @@ -168,6 +174,8 @@ formState.value = { ...props.record, } // 初始化时也触发一次净重计算,避免接口回填后净重为空 computeNetWeight() } }