feat: 出库类型贯穿申请→扫码出库——申请单加 outbound_type,申请时选类型、扫码出库自动带出
This commit is contained in:
@ -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({
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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, # 待审批
|
||||
)
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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 = []
|
||||
|
||||
Reference in New Issue
Block a user