feat: 出库类型贯穿申请→扫码出库——申请单加 outbound_type,申请时选类型、扫码出库自动带出

This commit is contained in:
yueli
2026-09-07 14:01:13 +08:00
parent eaafeaf24e
commit 478b90fe50
5 changed files with 22 additions and 2 deletions

View File

@ -412,7 +412,8 @@ def create_outbound_request():
items=items,
allowed_approvers=allowed_approvers,
remark=data.get('remark'),
approver_id=approver_id
approver_id=approver_id,
outbound_type=data.get('outbound_type') # 出库类型(申请时确定)
)
return jsonify({

View File

@ -18,6 +18,8 @@ class OutboundApproval(db.Model):
applicant_id = db.Column(db.Integer, nullable=False, index=True)
# 申请说明
remark = db.Column(db.Text)
# 出库类型SALES/USE/PRODUCTION/LOSS/REPAIR申请时确定扫码出库自动带出
outbound_type = db.Column(db.String(50))
# 状态: 0-待审批, 1-已通过, 2-已驳回, 3-已完成(已出库)
status = db.Column(db.Integer, default=0, nullable=False)
# 允许审批的人员列表 (JSON格式: [{"type": "role", "value": "admin"}, {"type": "user", "value": "123"}])
@ -81,6 +83,7 @@ class OutboundApproval(db.Model):
'applicant_id': self.applicant_id,
'applicant_name': self._get_user_name(self.applicant_id),
'remark': self.remark,
'outbound_type': self.outbound_type or '',
'status': self.status,
'status_text': ['待审批', '已通过', '已驳回', '已完成', '已完结'][self.status] if self.status in [0, 1, 2, 3, 4] else '未知',
'allowed_approvers': self.get_allowed_approvers(),

View File

@ -701,7 +701,7 @@ class OutboundApprovalService:
return f"APR-OUT-{date_str}-{time_str}-{sequence:04d}"
@staticmethod
def create_request(applicant_id, items, allowed_approvers, remark=None, approver_id=None):
def create_request(applicant_id, items, allowed_approvers, remark=None, approver_id=None, outbound_type=None):
"""
创建出库审批单(申请阶段,直接存储前端传来的物料信息快照,不关联具体库存记录)
@ -759,6 +759,7 @@ class OutboundApprovalService:
request_no=request_no,
applicant_id=applicant_id,
remark=remark,
outbound_type=outbound_type, # 申请时确定的出库类型,扫码出库时带出
status=0, # 待审批
)

View File

@ -395,6 +395,15 @@
</el-table>
<el-form label-width="80px">
<el-form-item label="出库类型" required>
<el-select v-model="requestOutboundType" placeholder="请选择类型" style="width: 100%">
<el-option label="销售出库" value="SALES" />
<el-option label="内部领用" value="USE" />
<el-option label="生产出库" value="PRODUCTION" />
<el-option label="盘亏出库" value="LOSS" />
<el-option label="维修出库" value="REPAIR" />
</el-select>
</el-form-item>
<el-form-item label="* 指定审批人" required>
<el-select
v-model="requestApproverId"
@ -533,6 +542,7 @@ const printLoading = ref(false)
// ★ 出库申请相关
const requestDialogVisible = ref(false)
const requestRemark = ref('')
const requestOutboundType = ref('SALES') // 申请时确定出库类型,扫码出库自动带出
const requestApproverId = ref<number | null>(null)
const approvers = ref<any[]>([])
const requestSubmitting = ref(false)
@ -1088,6 +1098,7 @@ const confirmSubmitRequest = async () => {
quantity: item.export_quantity || 0
})),
remark: buildRemarkWithShortage(trimmed),
outbound_type: requestOutboundType.value,
approver_id: requestApproverId.value
}

View File

@ -462,6 +462,10 @@ const handleRequestChange = (val: number | null) => {
if (selectedRequest.value?.remark) {
form.remark = selectedRequest.value.remark
}
// ★ 自动带出申请时确定的出库类型(库管无需再选);旧单无类型则留待手动选择
if (selectedRequest.value?.outbound_type) {
form.outbound_type = selectedRequest.value.outbound_type
}
}
// 切换申请单时清空购物车,防止已扫物品与新单据混淆
cartItems.value = []