diff --git a/src/api/erp/stock/move/index.ts b/src/api/erp/stock/move/index.ts
index 398568e0..1171d99e 100644
--- a/src/api/erp/stock/move/index.ts
+++ b/src/api/erp/stock/move/index.ts
@@ -1,39 +1,39 @@
import request from '@/config/axios'
-// ERP 库存调度单 VO
export interface StockMoveVO {
- id: number // 出库编号
- no: string // 出库单号
- outTime: Date // 出库时间
- totalCount: number // 合计数量
- totalPrice: number // 合计金额,单位:元
- status: number // 状态
- remark: string // 备注
+ id: number
+ no: string
+ categoryType?: number
+ outTime: Date
+ totalCount: number
+ totalPrice: number
+ status: number
+ auditUserId?: number
+ auditUserName?: string
+ remark: string
}
-// ERP 库存调度单 API
export const StockMoveApi = {
- // 查询库存调度单分页
getStockMovePage: async (params: any) => {
return await request.get({ url: `/erp/stock-move/page`, params })
},
- // 查询库存调度单详情
getStockMove: async (id: number) => {
return await request.get({ url: `/erp/stock-move/get?id=` + id })
},
- // 新增库存调度单
+ getProductStockList: async (productId: number) => {
+ return await request.get({ url: `/erp/stock-move/product-stock-list`, params: { productId } })
+ },
+
createStockMove: async (data: StockMoveVO) => {
return await request.post({ url: `/erp/stock-move/create`, data })
},
- // 修改库存调度单
updateStockMove: async (data: StockMoveVO) => {
return await request.put({ url: `/erp/stock-move/update`, data })
},
- // 更新库存调度单的状态
updateStockMoveStatus: async (id: number, status: number) => {
return await request.put({
url: `/erp/stock-move/update-status`,
@@ -44,7 +44,14 @@ export const StockMoveApi = {
})
},
- // 删除库存调度单
+ submitStockMove: async (data: { id: number; auditUserId?: number; remark?: string }) => {
+ return await request.put({ url: `/erp/stock-move/submit`, data })
+ },
+
+ auditStockMove: async (data: { id: number; status: number; remark?: string }) => {
+ return await request.put({ url: `/erp/stock-move/audit`, data })
+ },
+
deleteStockMove: async (ids: number[]) => {
return await request.delete({
url: `/erp/stock-move/delete`,
@@ -54,8 +61,7 @@ export const StockMoveApi = {
})
},
- // 导出库存调度单 Excel
exportStockMove: async (params) => {
return await request.download({ url: `/erp/stock-move/export-excel`, params })
}
-}
+}
\ No newline at end of file
diff --git a/src/locales/en.ts b/src/locales/en.ts
index d6a68856..346034c6 100644
--- a/src/locales/en.ts
+++ b/src/locales/en.ts
@@ -799,6 +799,19 @@ export default {
confirmReverseApprove: 'Are you sure to reverse approve this transfer order?',
approveSuccess: 'Approve success',
reverseApproveSuccess: 'Reverse approve success',
+ submit: 'Submit',
+ submitSuccess: 'Submitted successfully',
+ auditUserName: 'Approver',
+ placeholderAuditUser: 'Please select approver',
+ validatorAuditUserRequired: 'Approver is required',
+ submitRemark: 'Submit Remark',
+ placeholderSubmitRemark: 'Please enter submit remark',
+ auditApprove: 'Approve',
+ auditReject: 'Reject',
+ auditRemark: 'Audit Remark',
+ placeholderAuditRemark: 'Please enter audit remark',
+ auditApproveSuccess: 'Approved successfully',
+ auditRejectSuccess: 'Rejected successfully',
exportName: 'Stock Transfer Order.xls',
list: 'Transfer Product List',
addItem: 'Add Transfer Product',
diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts
index 080f8ddb..675fa6c7 100644
--- a/src/locales/zh-CN.ts
+++ b/src/locales/zh-CN.ts
@@ -799,6 +799,19 @@ export default {
confirmReverseApprove: '确定反审批该调拨单吗?',
approveSuccess: '审批成功',
reverseApproveSuccess: '反审批成功',
+ submit: '提交',
+ submitSuccess: '提交成功',
+ auditUserName: '审批人',
+ placeholderAuditUser: '请选择审批人',
+ validatorAuditUserRequired: '审批人不能为空',
+ submitRemark: '提交备注',
+ placeholderSubmitRemark: '请输入提交备注',
+ auditApprove: '通过',
+ auditReject: '驳回',
+ auditRemark: '审批备注',
+ placeholderAuditRemark: '请输入审批备注',
+ auditApproveSuccess: '通过成功',
+ auditRejectSuccess: '驳回成功',
exportName: '库存调拨单.xls',
list: '调度产品清单',
addItem: '添加调度产品',
diff --git a/src/views/erp/stock/move/StockMoveForm.vue b/src/views/erp/stock/move/StockMoveForm.vue
index 533eb102..4ed3067b 100644
--- a/src/views/erp/stock/move/StockMoveForm.vue
+++ b/src/views/erp/stock/move/StockMoveForm.vue
@@ -25,6 +25,19 @@
/>
+
+
+
+
+ {{ dict.label }}
+
+
+
+
-
+
@@ -60,6 +78,7 @@
+
diff --git a/src/views/erp/stock/move/index.vue b/src/views/erp/stock/move/index.vue
index 57937523..eff9920f 100644
--- a/src/views/erp/stock/move/index.vue
+++ b/src/views/erp/stock/move/index.vue
@@ -168,7 +168,7 @@
-
+
{{ t('action.edit') }}
- {{ t('ErpStock.Move.confirmApprove').replace('确定', '').replace('该调拨单吗?', '') }}
+ {{ t('ErpStock.Move.submit') }}
+ {{ t('ErpStock.Move.auditApprove') }}
+
+
- {{ t('ErpStock.Move.confirmReverseApprove').replace('确定', '').replace('该调拨单吗?', '') }}
+ {{ t('ErpStock.Move.auditReject') }}
{{ t('action.del') }}
@@ -224,6 +234,59 @@
/>
+
+
+
+
@@ -265,6 +328,27 @@ const exportLoading = ref(false) // 导出的加载中
const productList = ref([]) // 产品列表
const warehouseList = ref([]) // 仓库列表
const userList = ref([]) // 用户列表
+const submitFormRef = ref()
+const submitDialogVisible = ref(false)
+const submitLoading = ref(false)
+const submitForm = reactive({
+ id: undefined as number | undefined,
+ auditUserId: undefined as number | undefined,
+ remark: undefined as string | undefined
+})
+const submitRules = {
+ auditUserId: [{ required: true, message: t('ErpStock.Move.validatorAuditUserRequired'), trigger: 'change' }]
+}
+const auditDialogVisible = ref(false)
+const auditLoading = ref(false)
+const auditForm = reactive({
+ id: undefined as number | undefined,
+ status: undefined as number | undefined,
+ remark: undefined as string | undefined
+})
+const auditDialogTitle = computed(() =>
+ auditForm.status === 20 ? t('ErpStock.Move.auditApprove') : t('ErpStock.Move.auditReject')
+)
/** 查询列表 */
const getList = async () => {
@@ -310,17 +394,58 @@ const handleDelete = async (ids: number[]) => {
} catch {}
}
-/** 审批/反审批操作 */
-const handleUpdateStatus = async (id: number, status: number) => {
+const openSubmitDialog = (row: StockMoveVO) => {
+ submitForm.id = row.id
+ submitForm.auditUserId = row.auditUserId
+ submitForm.remark = undefined
+ submitDialogVisible.value = true
+ nextTick(() => submitFormRef.value?.clearValidate?.())
+}
+
+const handleSubmit = async () => {
+ await submitFormRef.value.validate()
+ if (!submitForm.id || !submitForm.auditUserId) return
+ submitLoading.value = true
try {
- // 审批的二次确认
- await message.confirm(status === 20 ? t('ErpStock.Move.confirmApprove') : t('ErpStock.Move.confirmReverseApprove'))
- // 发起审批
- await StockMoveApi.updateStockMoveStatus(id, status)
- message.success(status === 20 ? t('ErpStock.Move.approveSuccess') : t('ErpStock.Move.reverseApproveSuccess'))
- // 刷新列表
+ await StockMoveApi.submitStockMove({
+ id: submitForm.id,
+ auditUserId: submitForm.auditUserId,
+ remark: submitForm.remark
+ })
+ message.success(t('ErpStock.Move.submitSuccess'))
+ submitDialogVisible.value = false
await getList()
- } catch {}
+ } finally {
+ submitLoading.value = false
+ }
+}
+
+const openAuditDialog = (row: StockMoveVO, status: number) => {
+ auditForm.id = row.id
+ auditForm.status = status
+ auditForm.remark = undefined
+ auditDialogVisible.value = true
+}
+
+const handleAudit = async () => {
+ if (!auditForm.id || !auditForm.status) return
+ auditLoading.value = true
+ try {
+ await StockMoveApi.auditStockMove({
+ id: auditForm.id,
+ status: auditForm.status,
+ remark: auditForm.remark
+ })
+ message.success(
+ auditForm.status === 20
+ ? t('ErpStock.Move.auditApproveSuccess')
+ : t('ErpStock.Move.auditRejectSuccess')
+ )
+ auditDialogVisible.value = false
+ await getList()
+ } finally {
+ auditLoading.value = false
+ }
}
/** 导出按钮操作 */