| | |
| | | <span class="search_title">供应商名称:</span> |
| | | <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery" |
| | | clearable prefix-icon="Search" /> |
| | | <span class="search_title ml10">入库日期:</span> |
| | | <el-date-picker |
| | | v-model="searchForm.timeStr" |
| | | type="date" |
| | | placeholder="请选择日期" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | clearable |
| | | @change="handleQuery" |
| | | /> |
| | | <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button> |
| | | </div> |
| | | <div> |
| | |
| | | :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)"> |
| | | <el-table-column align="center" type="selection" width="55" /> |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="库存日期" prop="createTime" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="入库日期" prop="createTime" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> |
| | | <el-table-column label="产品大类" prop="productCategory" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="规格型号" prop="specificationModel" width="200" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" width="80" show-overflow-tooltip /> |
| | | <el-table-column label="库存数量" prop="inboundNum0" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="最低库存数量" prop="minStock" width="130" show-overflow-tooltip /> |
| | | <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip /> |
| | | <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip /> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | |
| | | <el-col :span="12"> |
| | | <el-form-item label="出库人:" prop="entryPerson"> |
| | | <el-select v-model="form.createUser" placeholder="请选择" clearable> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="最低库存:" prop="minStock"> |
| | | <el-input v-model="form.minStock" placeholder="请输入最低库存" clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer> |
| | |
| | | exportStockManage |
| | | } from "@/api/inventoryManagement/stockManage.js"; |
| | | import { |
| | | updateManagement |
| | | updateManagement,addSutockIn,selectProductRecordListByPuechaserId,updateStockIn |
| | | } from "@/api/inventoryManagement/stockIn.js"; |
| | | |
| | | |
| | | |
| | | const userStore = useUserStore() |
| | | const { proxy } = getCurrentInstance() |
| | | const tableData = ref([]) |
| | |
| | | }) |
| | | const total = ref(0) |
| | | const fileList = ref([]) |
| | | |
| | | const loading = ref(false); |
| | | // 用户信息表单弹框数据 |
| | | const operationType = ref('') |
| | | const dialogFormVisible = ref(false) |
| | | const data = reactive({ |
| | | searchForm: { |
| | | supplierName: '', |
| | | timeStr: '', |
| | | }, |
| | | form: { |
| | | supplierId: null, |
| | |
| | | inboundBatch: '', |
| | | stockQuantity: '', |
| | | boundTime: '', |
| | | minStock: '', // 新增最低库存字段 |
| | | salesLedgerProductId: null, |
| | | }, |
| | | rules: { |
| | | supplierName: [{ required: true, message: '请输入供应商名称', trigger: 'blur' }], |
| | |
| | | taxExclusiveTotalPrice: [{ required: true, message: '请输入不含税总价', trigger: 'blur' }], |
| | | boundTime: [{ required: true, message: '请选择库存时间', trigger: 'change' }], |
| | | inboundTime: [{ required: true, message: '请选择入库时间', trigger: 'change' }], |
| | | inboundPerson: [{ required: true, message: '请选择出库人', trigger: 'change' }] |
| | | inboundPerson: [{ required: true, message: '请选择出库人', trigger: 'change' }], |
| | | minStock: [{ required: true, message: '请输入最低库存', trigger: 'blur' }], |
| | | } |
| | | }) |
| | | const { searchForm, form, rules } = toRefs(data) |
| | |
| | | getStockManagePage({ ...searchForm.value, ...page }).then(res => { |
| | | tableLoading.value = false |
| | | tableData.value = res.data.records |
| | | console.log('res', res) |
| | | // console.log('res', res) |
| | | // tableData.value.map(item => { |
| | | // item.children = [] |
| | | // }) |
| | | total.value = res.data.total |
| | | // 数据加载完成后检查库存 |
| | | checkStockAndCreatePurchase(); |
| | | }).catch(() => { |
| | | tableLoading.value = false |
| | | }) |
| | |
| | | console.log(form.value) |
| | | proxy.$refs["formRef"].validate(valid => { |
| | | if (valid) { |
| | | // if (productData.value.length > 0) { |
| | | // form.value.productData = proxy.HaveJson(productData.value) |
| | | // } else { |
| | | // proxy.$modal.msgWarning('请添加产品信息') |
| | | // return |
| | | // } |
| | | // let tempFileIds = [] |
| | | // if (fileList.value.length > 0) { |
| | | // tempFileIds = fileList.value.map(item => item.tempId) |
| | | // } |
| | | // form.value.tempFileIds = tempFileIds |
| | | // form.value.type = 1 |
| | | |
| | | updateManagement(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("提交成功") |
| | | closeDia() |
| | | getList() |
| | | // 提交后检查库存并尝试创建请购单 |
| | | checkStockAndCreatePurchase(); |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | // const handList = () => { |
| | | // selectProductRecordListByPuechaserId().then(res => { |
| | | // productModelList.value = res.data.filter(item => item.productName === value) |
| | | // console.log('productModelList.value', productModelList.value) |
| | | // }) |
| | | // } |
| | | // 检查库存并创建请购单 |
| | | const checkStockAndCreatePurchase = async () => { |
| | | const stockList = tableData.value; |
| | | // handList() |
| | | for (const item of stockList) { |
| | | if (item.inboundNum0 < item.minStock) { |
| | | try { |
| | | console.log('item', item) |
| | | // const stockInData = { |
| | | // nickName: userStore.nickName,// 使用新格式化函数 |
| | | // details: [{ |
| | | // id: item.salesLedgerProductId, |
| | | // inboundQuantity: item.minStock - item.inboundNum0 |
| | | // }] |
| | | // }; |
| | | const stockInData = { |
| | | id: item.id, |
| | | quantityStock: item.minStock + item.totalInboundNum,// 使用新格式化函数 |
| | | }; |
| | | |
| | | |
| | | console.log('准备提交的数据:', JSON.parse(JSON.stringify(stockInData))); |
| | | |
| | | loading.value = true |
| | | // await addSutockIn(stockInData) |
| | | await updateStockIn(stockInData) |
| | | proxy.$modal.msgSuccess(`产品 ${item.productCategory} 修改入库成功`) |
| | | loading.value = false |
| | | // // 生成请购单 |
| | | // const createRes = await createPurchaseRequest({ |
| | | // productId: item.productId, |
| | | // requiredQuantity: item.minStock - item.inboundNum0, |
| | | // supplierId: item.supplierId |
| | | // }); |
| | | // if (createRes.code === 200) { |
| | | // // 流转请购单到采购模块 |
| | | // await transferPurchaseRequest({ requestId: createRes.data.id }); |
| | | // proxy.$modal.msgSuccess(`产品 ${item.productName} 请购单已生成并流转`); |
| | | // } |
| | | } catch (error) { |
| | | proxy.$modal.msgError(`产品 ${item.productCategory} 生成请购单失败,请手动处理`); |
| | | |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | // 关闭弹框 |
| | | const closeDia = () => { |
| | | proxy.resetForm("formRef") |
| | |
| | | } |
| | | onMounted(() => { |
| | | getList() |
| | | checkStockAndCreatePurchase(); |
| | | // 每小时检查一次库存 |
| | | const intervalId = setInterval(checkStockAndCreatePurchase, 60 * 60 * 1000); |
| | | |
| | | onUnmounted(() => { |
| | | // 组件卸载时清除定时器 |
| | | clearInterval(intervalId); |
| | | }); |
| | | }) |
| | | </script> |
| | | |