| | |
| | | <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.unQualifiedUnLockedQuantity === 0 && scope.row.qualifiedUnLockedQuantity === 0">{{ actionButtonText }}</el-button> |
| | | <el-button link type="primary" v-if="scope.row.unQualifiedUnLockedQuantity > 0 || scope.row.qualifiedUnLockedQuantity > 0" @click="showFrozenModal(scope.row)">冻结</el-button> |
| | | <el-button link type="primary" v-if="scope.row.qualifiedLockedQuantity > 0 || scope.row.unQualifiedLockedQuantity > 0" @click="showThawModal(scope.row)">解冻</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 冻结/解冻弹框 --> |
| | | <el-dialog |
| | | v-model="isShowFrozenModal" |
| | | :title="frozenDialogTitle" |
| | | width="800" |
| | | @close="closeFrozenModal" |
| | | > |
| | | <el-form label-width="140px" :model="frozenForm" label-position="top" ref="frozenFormRef"> |
| | | <el-form-item |
| | | label="产品名称" |
| | | prop="productModelId" |
| | | :rules="[{ required: true, message: '请选择产品', trigger: 'change' }]" |
| | | > |
| | | <el-button type="primary" disabled> |
| | | {{ frozenForm.productName ? frozenForm.productName : '选择产品' }} |
| | | </el-button> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="规格" prop="productModelName"> |
| | | <el-input v-model="frozenForm.model" disabled /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="单位" prop="unit"> |
| | | <el-input v-model="frozenForm.unit" disabled /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item |
| | | label="库存类型" |
| | | prop="type" |
| | | :rules="[{ required: true, message: '请选择库存类型', trigger: 'change' }]" |
| | | > |
| | | <el-select v-model="frozenForm.type" placeholder="请选择库存类型" @change="handleFrozenTypeChange"> |
| | | <el-option |
| | | label="合格库存" |
| | | value="qualified" |
| | | :disabled="frozenOperationType === 'frozen' ? currentRecord.qualifiedUnLockedQuantity <= 0 : currentRecord.qualifiedLockedQuantity <= 0" |
| | | /> |
| | | <el-option |
| | | label="不合格库存" |
| | | value="unqualified" |
| | | :disabled="frozenOperationType === 'frozen' ? currentRecord.unQualifiedUnLockedQuantity <= 0 : currentRecord.unQualifiedLockedQuantity <= 0" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="数量" prop="qualitity"> |
| | | <el-input-number v-model="frozenForm.qualitity" :step="1" :min="1" :max="frozenMaxQuality" style="width: 100%" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="frozenForm.remark" type="textarea" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="handleFrozenSubmit">确认</el-button> |
| | | <el-button @click="closeFrozenModal">取消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | } from "@/api/inventoryManagement/stockInventory.js"; |
| | | import { |
| | | subtractStockUnInventory |
| | | } from "@/api/inventoryManagement/stockUninventory.js"; |
| | | import { |
| | | frozenStockInventory, |
| | | thawStockInventory |
| | | } from "@/api/inventoryManagement/stockInventory.js"; |
| | | import { |
| | | frozenStockUninventory, |
| | | thawStockUninventory |
| | | } from "@/api/inventoryManagement/stockUninventory.js"; |
| | | import { getCurrentDate } from "@/utils/index.js"; |
| | | import { |
| | |
| | | |
| | | // 是否显示领用/发货弹框 |
| | | const isShowSubtractModal = ref(false) |
| | | // 是否显示冻结/解冻弹框 |
| | | const isShowFrozenModal = ref(false) |
| | | // 冻结/解冻操作类型 |
| | | const frozenOperationType = ref('frozen') |
| | | |
| | | // 判断是否是成品(产品名称包含"成品") |
| | | const isFinishedProduct = computed(() => { |
| | | return props.productName && props.productName.includes('成品') |
| | | return props.productName && props.productName.includes('销售') |
| | | }) |
| | | |
| | | // 按钮文字:成品显示"发货",其他显示"领用" |
| | | const actionButtonText = computed(() => { |
| | | return isFinishedProduct.value ? '发货' : '领用' |
| | | return isFinishedProduct.value ? '出库' : '领用' |
| | | }) |
| | | |
| | | // 弹框标题 |
| | | const dialogTitle = computed(() => { |
| | | return isFinishedProduct.value ? '发货' : '领用' |
| | | }) |
| | | |
| | | // 冻结/解冻弹框标题 |
| | | const frozenDialogTitle = computed(() => { |
| | | return frozenOperationType.value === 'frozen' ? '冻结' : '解冻' |
| | | return isFinishedProduct.value ? '出库' : '领用' |
| | | }) |
| | | |
| | | // 领用/发货表单 |
| | | const subtractFormRef = ref(null) |
| | | const subtractForm = ref({ |
| | | productId: undefined, |
| | | productModelId: undefined, |
| | | productName: "", |
| | | model: "", |
| | | unit: "", |
| | | type: "", |
| | | qualitity: 0, |
| | | remark: '', |
| | | }) |
| | | |
| | | // 冻结/解冻表单 |
| | | const frozenFormRef = ref(null) |
| | | const frozenForm = ref({ |
| | | productId: undefined, |
| | | productModelId: undefined, |
| | | productName: "", |
| | |
| | | max = currentRecord.value.qualifiedUnLockedQuantity ? currentRecord.value.qualifiedUnLockedQuantity : 0; |
| | | } else { |
| | | max = currentRecord.value.unQualifiedUnLockedQuantity ? currentRecord.value.unQualifiedUnLockedQuantity : 0; |
| | | } |
| | | return Math.max(max, 1); |
| | | }) |
| | | |
| | | // 冻结/解冻最大数量 |
| | | const frozenMaxQuality = computed(() => { |
| | | let max = 0; |
| | | if (frozenOperationType.value === 'frozen') { |
| | | if (frozenForm.value.type === 'qualified') { |
| | | max = currentRecord.value.qualifiedUnLockedQuantity ? currentRecord.value.qualifiedUnLockedQuantity : 0; |
| | | } else { |
| | | max = currentRecord.value.unQualifiedUnLockedQuantity ? currentRecord.value.unQualifiedUnLockedQuantity : 0; |
| | | } |
| | | } else { |
| | | if (frozenForm.value.type === 'qualified') { |
| | | max = currentRecord.value.qualifiedLockedQuantity ? currentRecord.value.qualifiedLockedQuantity : 0; |
| | | } else { |
| | | max = currentRecord.value.unQualifiedLockedQuantity ? currentRecord.value.unQualifiedLockedQuantity : 0; |
| | | } |
| | | } |
| | | return Math.max(max, 1); |
| | | }) |
| | |
| | | subtractForm.value.qualitity = 0; |
| | | } |
| | | |
| | | // 冻结类型改变 |
| | | const handleFrozenTypeChange = () => { |
| | | frozenForm.value.qualitity = 0; |
| | | } |
| | | |
| | | // 提交领用/发货 |
| | | const handleSubtractSubmit = () => { |
| | | proxy.$refs["subtractFormRef"].validate(valid => { |
| | |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | getList(); |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // 点击冻结 |
| | | const showFrozenModal = (row) => { |
| | | currentRecord.value = row |
| | | frozenOperationType.value = 'frozen' |
| | | frozenForm.value = { |
| | | ...row, |
| | | type: '', |
| | | qualitity: 0, |
| | | remark: '', |
| | | } |
| | | isShowFrozenModal.value = true |
| | | } |
| | | |
| | | // 点击解冻 |
| | | const showThawModal = (row) => { |
| | | currentRecord.value = row |
| | | frozenOperationType.value = 'thaw' |
| | | frozenForm.value = { |
| | | ...row, |
| | | type: '', |
| | | qualitity: 0, |
| | | remark: '', |
| | | } |
| | | isShowFrozenModal.value = true |
| | | } |
| | | |
| | | // 关闭冻结/解冻弹框 |
| | | const closeFrozenModal = () => { |
| | | frozenForm.value = { |
| | | productId: undefined, |
| | | productModelId: undefined, |
| | | productName: "", |
| | | model: "", |
| | | unit: "", |
| | | type: "", |
| | | qualitity: 0, |
| | | remark: '', |
| | | } |
| | | isShowFrozenModal.value = false |
| | | } |
| | | |
| | | // 提交冻结/解冻 |
| | | const handleFrozenSubmit = () => { |
| | | proxy.$refs["frozenFormRef"].validate(valid => { |
| | | if (valid) { |
| | | if (!frozenForm.value.productModelId) { |
| | | proxy.$modal.msgError("请选择产品"); |
| | | return; |
| | | } |
| | | const isQualified = frozenForm.value.type === 'qualified' |
| | | const isFrozen = frozenOperationType.value === 'frozen' |
| | | |
| | | if (isQualified) { |
| | | if (isFrozen) { |
| | | frozenStockInventory(frozenForm.value).then(res => { |
| | | isShowFrozenModal.value = false; |
| | | proxy.$modal.msgSuccess("冻结成功"); |
| | | getList(); |
| | | }) |
| | | } else { |
| | | thawStockInventory(frozenForm.value).then(res => { |
| | | isShowFrozenModal.value = false; |
| | | proxy.$modal.msgSuccess("解冻成功"); |
| | | getList(); |
| | | }) |
| | | } |
| | | } else { |
| | | if (isFrozen) { |
| | | frozenStockUninventory(frozenForm.value).then(res => { |
| | | isShowFrozenModal.value = false; |
| | | proxy.$modal.msgSuccess("冻结成功"); |
| | | getList(); |
| | | }) |
| | | } else { |
| | | thawStockUninventory(frozenForm.value).then(res => { |
| | | isShowFrozenModal.value = false; |
| | | proxy.$modal.msgSuccess("解冻成功"); |
| | | getList(); |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | }) |