| | |
| | | clearable |
| | | filterable |
| | | check-strictly |
| | | :data="productOptions" |
| | | :data="displayProductOptions" |
| | | :render-after-expand="false" |
| | | @change="handleParentChange" |
| | | /> |
| | |
| | | <el-table-column label="规格型号" prop="model" show-overflow-tooltip /> |
| | | <el-table-column label="单位" prop="unit" show-overflow-tooltip /> |
| | | <el-table-column label="合格库存数量" prop="qualifiedQuantity" show-overflow-tooltip> |
| | | <template #default="scope">{{ scope.row.qualifiedQuantity ?? scope.row.qualitity ?? scope.row.unLockedQuantity ?? 0 }}</template> |
| | | <template #default="scope">{{ getQualifiedStock(scope.row) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="不合格库存数量" prop="unqualifiedQuantity" show-overflow-tooltip> |
| | | <template #default="scope">{{ scope.row.unqualifiedQuantity ?? 0 }}</template> |
| | | <template #default="scope">{{ getUnqualifiedStock(scope.row) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="合格冻结数量" prop="qualifiedLockedQuantity" show-overflow-tooltip> |
| | | <template #default="scope">{{ scope.row.qualifiedLockedQuantity ?? scope.row.lockedQuantity ?? 0 }}</template> |
| | | <template #default="scope">{{ getQualifiedLockedStock(scope.row) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="不合格冻结数量" prop="unqualifiedLockedQuantity" show-overflow-tooltip> |
| | | <template #default="scope">{{ scope.row.unqualifiedLockedQuantity ?? 0 }}</template> |
| | | <template #default="scope">{{ getUnqualifiedLockedStock(scope.row) }}</template> |
| | | </el-table-column> |
| | | <el-table-column label="库存预警数量" prop="warnNum" 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="90" align="center"> |
| | | <template #default="scope"> |
| | | <el-button link type="primary" @click="showSubtractModal(scope.row)" :disabled="scope.row.unLockedQuantity === 0">领用</el-button> |
| | | <el-button link type="primary" v-if="scope.row.unLockedQuantity > 0" @click="showFrozenModal(scope.row)">冻结</el-button> |
| | | <el-button link type="primary" v-if="scope.row.lockedQuantity > 0" @click="showThawModal(scope.row)">解冻</el-button> |
| | | <el-button link type="primary" @click="showSubtractModal(scope.row)" :disabled="getQualifiedUnLockedStock(scope.row) <= 0">领用</el-button> |
| | | <el-button link type="primary" v-if="getQualifiedUnLockedStock(scope.row) > 0" @click="showFrozenModal(scope.row)">冻结</el-button> |
| | | <el-button link type="primary" v-if="getQualifiedLockedStock(scope.row) > 0" @click="showThawModal(scope.row)">解冻</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | |
| | | <script setup> |
| | | import pagination from '@/components/PIMTable/Pagination.vue' |
| | | import { ref, reactive, toRefs, onMounted, getCurrentInstance, watch } from 'vue' |
| | | import { ref, reactive, toRefs, onMounted, getCurrentInstance, watch, computed } from 'vue' |
| | | import {ElMessage, ElMessageBox} from "element-plus"; |
| | | import { getStockInventoryListPage } from "@/api/inventoryManagement/stockInventory.js"; |
| | | import { modelList, productTreeList } from "@/api/basicData/product.js"; |
| | |
| | | }) |
| | | const { searchForm } = toRefs(data) |
| | | |
| | | const displayProductOptions = computed(() => { |
| | | if (!props.parentId) return productOptions.value |
| | | const currentParentNode = findNodeById(productOptions.value, props.parentId) |
| | | return Array.isArray(currentParentNode?.children) ? currentParentNode.children : [] |
| | | }) |
| | | |
| | | // 查询列表 |
| | | /** 搜索按钮操作 */ |
| | | const handleQuery = () => { |
| | |
| | | } |
| | | const getList = () => { |
| | | tableLoading.value = true |
| | | const queryParentId = searchForm.value.parentId || props.parentId |
| | | const queryParentId = props.parentId || searchForm.value.parentId |
| | | getStockInventoryListPage({ |
| | | ...searchForm.value, |
| | | ...page, |
| | | parentId: queryParentId, |
| | | topParentProductId: queryParentId, |
| | | productName: searchForm.value.productName, |
| | | model: searchForm.value.model, |
| | | }).then(res => { |
| | | tableLoading.value = false |
| | | tableData.value = res.data.records |
| | |
| | | } |
| | | const expandedRowKeys = ref([]) |
| | | |
| | | const toNumber = (value) => { |
| | | const num = Number(value) |
| | | return Number.isFinite(num) ? num : 0 |
| | | } |
| | | |
| | | const getQualifiedStock = (row) => { |
| | | return toNumber(row?.qualifiedQuantity ?? row?.qualitity ?? row?.unLockedQuantity) |
| | | } |
| | | |
| | | const getUnqualifiedStock = (row) => { |
| | | return toNumber(row?.unQualifiedQuantity ?? row?.unqualifiedQuantity ?? row?.unQualifiedUnLockedQuantity ?? row?.unqualifiedUnLockedQuantity) |
| | | } |
| | | |
| | | const getQualifiedLockedStock = (row) => { |
| | | return toNumber(row?.qualifiedLockedQuantity ?? row?.lockedQuantity) |
| | | } |
| | | |
| | | const getUnqualifiedLockedStock = (row) => { |
| | | return toNumber(row?.unQualifiedLockedQuantity ?? row?.unqualifiedLockedQuantity) |
| | | } |
| | | |
| | | const getQualifiedUnLockedStock = (row) => { |
| | | return toNumber(row?.qualifiedUnLockedQuantity ?? row?.unLockedQuantity ?? row?.qualifiedQuantity ?? row?.qualitity) |
| | | } |
| | | |
| | | // 表格行类名 |
| | | const tableRowClassName = ({ row }) => { |
| | | const stock = Number(row?.unLockedQuantity ?? 0); |
| | | const stock = getQualifiedUnLockedStock(row); |
| | | const warn = Number(row?.warnNum ?? 0); |
| | | if (!Number.isFinite(stock) || !Number.isFinite(warn)) { |
| | | return ''; |
| | |
| | | watch( |
| | | () => props.parentId, |
| | | async () => { |
| | | searchForm.value.parentId = props.parentId |
| | | searchForm.value.parentId = undefined |
| | | searchForm.value.productName = '' |
| | | searchForm.value.productModelId = undefined |
| | | searchForm.value.model = '' |
| | | await loadModelOptions(props.parentId) |
| | | await loadModelOptions(undefined) |
| | | handleQuery() |
| | | }, |
| | | { immediate: true } |