refactor(outbound): 移除扫码出库页的强制完结按钮
- 删除 create.vue 中「强制完结此单」按钮及对应逻辑 - 完结功能保留在出库审批列表页(approval/index.vue) - 出库执行页聚焦扫码作业
This commit is contained in:
@ -46,12 +46,6 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
<p class="select-tip">仅显示已通过(status=1)的审批单</p>
|
<p class="select-tip">仅显示已通过(status=1)的审批单</p>
|
||||||
<div v-if="selectedRequest && userStore.hasPermission('outbound_create:operation')" style="margin-top: 8px; display: flex; align-items: center; gap: 8px;">
|
|
||||||
<el-button type="danger" plain size="small" :loading="closingRequest" @click="handleCloseRequest">
|
|
||||||
强制完结此单
|
|
||||||
</el-button>
|
|
||||||
<span style="color: #F56C6C; font-size: 12px;">作废后该单将从下拉列表移除,出库记录将无法关联此单</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ★ 按单出库:计划清单预览 -->
|
<!-- ★ 按单出库:计划清单预览 -->
|
||||||
@ -304,7 +298,7 @@ import { ref, reactive, nextTick, onUnmounted, onMounted, computed } from 'vue'
|
|||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
import { Scissor, EditPen, Delete, CameraFilled, Close, Refresh, Select } from '@element-plus/icons-vue'
|
import { Scissor, EditPen, Delete, CameraFilled, Close, Refresh, Select } from '@element-plus/icons-vue'
|
||||||
import QrScanner from '@/components/QrScanner/index.vue'
|
import QrScanner from '@/components/QrScanner/index.vue'
|
||||||
import { getStockByBarcode, submitOutbound, getOutboundList, getApprovalRequestList, closeRequest } from '@/api/outbound'
|
import { getStockByBarcode, submitOutbound, getOutboundList, getApprovalRequestList } from '@/api/outbound'
|
||||||
import { uploadFile } from '@/api/common/upload'
|
import { uploadFile } from '@/api/common/upload'
|
||||||
import { useUserStore } from '@/stores/user'
|
import { useUserStore } from '@/stores/user'
|
||||||
|
|
||||||
@ -323,7 +317,6 @@ const formRef = ref()
|
|||||||
const approvalRequests = ref<any[]>([])
|
const approvalRequests = ref<any[]>([])
|
||||||
const selectedRequest = ref<any>(null)
|
const selectedRequest = ref<any>(null)
|
||||||
const requestsLoading = ref(false)
|
const requestsLoading = ref(false)
|
||||||
const closingRequest = ref(false)
|
|
||||||
|
|
||||||
// 签名相关
|
// 签名相关
|
||||||
const showSignatureDialog = ref(false)
|
const showSignatureDialog = ref(false)
|
||||||
@ -412,37 +405,6 @@ const handleRequestChange = (val: number | null) => {
|
|||||||
signaturePreviewUrl.value = ''
|
signaturePreviewUrl.value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
// ★ 强制完结当前选中的申请单(作废,状态 1-已通过 → 4-已完结)
|
|
||||||
const handleCloseRequest = async () => {
|
|
||||||
if (!selectedRequest.value) return ElMessage.warning('请先选择要完结的审批单')
|
|
||||||
const req = selectedRequest.value
|
|
||||||
|
|
||||||
try {
|
|
||||||
await ElMessageBox.confirm(
|
|
||||||
`确定强制完结审批单【${req.request_no}】吗?\n\n` +
|
|
||||||
`此操作将使该单从「已通过」列表中移除,且不可恢复。\n` +
|
|
||||||
`若该单已部分出库,请确认无需再关联此单。`,
|
|
||||||
'⚠️ 强制完结确认',
|
|
||||||
{ confirmButtonText: '确认完结', cancelButtonText: '取消', type: 'warning' }
|
|
||||||
)
|
|
||||||
} catch (e) {
|
|
||||||
return // 用户取消
|
|
||||||
}
|
|
||||||
|
|
||||||
closingRequest.value = true
|
|
||||||
try {
|
|
||||||
await closeRequest(req.id)
|
|
||||||
ElMessage.success(`审批单 ${req.request_no} 已完结`)
|
|
||||||
// 完结后刷新列表并清空当前选择
|
|
||||||
selectedRequest.value = null
|
|
||||||
await loadApprovalRequests()
|
|
||||||
} catch (err: any) {
|
|
||||||
ElMessage.error(err?.msg || err?.message || '完结失败')
|
|
||||||
} finally {
|
|
||||||
closingRequest.value = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ★ 按单出库模式:校验扫码是否在计划内
|
// ★ 按单出库模式:校验扫码是否在计划内
|
||||||
const validateAgainstPlan = (scannedName: string, scannedSpec: string, scannedQty: number): string | null => {
|
const validateAgainstPlan = (scannedName: string, scannedSpec: string, scannedQty: number): string | null => {
|
||||||
const normalizedName = scannedName.trim()
|
const normalizedName = scannedName.trim()
|
||||||
|
|||||||
Reference in New Issue
Block a user