diff --git a/src/api/mes/wm/stocktaking/plan.ts b/src/api/mes/wm/stocktaking/plan.ts new file mode 100644 index 000000000..8716f129c --- /dev/null +++ b/src/api/mes/wm/stocktaking/plan.ts @@ -0,0 +1,72 @@ +import request from '@/config/axios' + +// TODO @AI:原则是 plan、task 两个目录;然后每个目录里,index.ts 都只能;param/index.ts 这样; +export interface StockTakingPlanParamVO { + id?: number + planId?: number + type?: number + valueId?: number | string + valueCode?: string + valueName?: string + remark?: string +} + +export interface StockTakingPlanVO { + id?: number + code?: string + name?: string + type?: number + startTime?: string + endTime?: string + blindFlag?: boolean + frozenFlag?: boolean + enableFlag?: boolean + status?: number + remark?: string + params?: StockTakingPlanParamVO[] + createTime?: string +} + +export interface StockTakingPlanGenerateReqVO { + planId: number + code: string + name: string + takingDate?: string + userId: number + remark?: string + params?: StockTakingPlanParamVO[] +} + +export const StockTakingPlanApi = { + getStockTakingPlanPage: async (params: any) => { + return await request.get({ url: '/mes/wm/stocktaking-plan/page', params }) + }, + + getStockTakingPlan: async (id: number) => { + return await request.get({ url: '/mes/wm/stocktaking-plan/get?id=' + id }) + }, + + createStockTakingPlan: async (data: StockTakingPlanVO) => { + return await request.post({ url: '/mes/wm/stocktaking-plan/create', data }) + }, + + updateStockTakingPlan: async (data: StockTakingPlanVO) => { + return await request.put({ url: '/mes/wm/stocktaking-plan/update', data }) + }, + + deleteStockTakingPlan: async (id: number) => { + return await request.delete({ url: '/mes/wm/stocktaking-plan/delete?id=' + id }) + }, + + confirmStockTakingPlan: async (id: number) => { + return await request.put({ url: '/mes/wm/stocktaking-plan/confirm?id=' + id }) + }, + + generateStockTakingTask: async (data: StockTakingPlanGenerateReqVO) => { + return await request.post({ url: '/mes/wm/stocktaking-plan/generate-task', data }) + }, + + exportStockTakingPlan: async (params: any) => { + return await request.download({ url: '/mes/wm/stocktaking-plan/export-excel', params }) + } +} diff --git a/src/api/mes/wm/stocktaking/result.ts b/src/api/mes/wm/stocktaking/result.ts new file mode 100644 index 000000000..58dacbf29 --- /dev/null +++ b/src/api/mes/wm/stocktaking/result.ts @@ -0,0 +1,39 @@ +import request from '@/config/axios' + +// TODO @AI:原则是 plan、task 两个目录;然后每个目录里,index.ts 都只能;param/index.ts 这样; +export interface StockTakingResultVO { + id?: number + taskId?: number + lineId?: number + materialStockId?: number + itemId?: number + itemCode?: string + itemName?: string + specification?: string + unitMeasureName?: string + batchId?: number + batchCode?: string + warehouseId?: number + warehouseName?: string + locationId?: number + locationName?: string + areaId?: number + areaName?: string + quantity?: number + remark?: string + createTime?: string +} + +export const StockTakingResultApi = { + getStockTakingResultPage: async (params: any) => { + return await request.get({ url: '/mes/wm/stocktaking-task-result/page', params }) + }, + + getStockTakingResultList: async (taskId: number) => { + return await request.get({ url: '/mes/wm/stocktaking-task-result/list?taskId=' + taskId }) + }, + + exportStockTakingResult: async (params: any) => { + return await request.download({ url: '/mes/wm/stocktaking-task-result/export-excel', params }) + } +} diff --git a/src/api/mes/wm/stocktaking/taking.ts b/src/api/mes/wm/stocktaking/taking.ts new file mode 100644 index 000000000..2021c5778 --- /dev/null +++ b/src/api/mes/wm/stocktaking/taking.ts @@ -0,0 +1,103 @@ +import request from '@/config/axios' + +// TODO @AI:原则是 plan、task 两个目录;然后每个目录里,index.ts 都只能;param/index.ts 这样; +export interface StockTakingTaskVO { + id?: number + code?: string + name?: string + takingDate?: string + type?: number + userId?: number + userNickname?: string + planId?: number + planCode?: string + planName?: string + blindFlag?: boolean + frozenFlag?: boolean + snapshotTime?: string + startTime?: string + endTime?: string + status?: number + adjustedFlag?: boolean + remark?: string + createTime?: string +} + +export interface StockTakingTaskLineVO { + id: number + taskId: number + materialStockId?: number + itemId?: number + itemCode?: string + itemName?: string + specification?: string + unitMeasureName?: string + batchId?: number + batchCode?: string + quantity?: number + takingQuantity?: number + differenceQuantity?: number + warehouseId?: number + warehouseName?: string + locationId?: number + locationName?: string + areaId?: number + areaName?: string + status?: number + remark?: string +} + +export interface StockTakingTaskLineBatchUpdateReqVO { + taskId: number + items: Array<{ + id: number + takingQuantity: number + remark?: string + }> +} + +export const StockTakingApi = { + getStockTakingPage: async (params: any) => { + return await request.get({ url: '/mes/wm/stocktaking-task/page', params }) + }, + + getStockTaking: async (id: number) => { + return await request.get({ url: '/mes/wm/stocktaking-task/get?id=' + id }) + }, + + createStockTaking: async (data: StockTakingTaskVO) => { + return await request.post({ url: '/mes/wm/stocktaking-task/create', data }) + }, + + updateStockTaking: async (data: StockTakingTaskVO) => { + return await request.put({ url: '/mes/wm/stocktaking-task/update', data }) + }, + + deleteStockTaking: async (id: number) => { + return await request.delete({ url: '/mes/wm/stocktaking-task/delete?id=' + id }) + }, + + startStockTaking: async (id: number) => { + return await request.put({ url: '/mes/wm/stocktaking-task/start?id=' + id }) + }, + + finishStockTaking: async (id: number) => { + return await request.put({ url: '/mes/wm/stocktaking-task/finish?id=' + id }) + }, + + cancelStockTaking: async (id: number) => { + return await request.put({ url: '/mes/wm/stocktaking-task/cancel?id=' + id }) + }, + + getStockTakingLineList: async (taskId: number) => { + return await request.get({ url: '/mes/wm/stocktaking-task/line-list?taskId=' + taskId }) + }, + + batchUpdateStockTakingLines: async (data: StockTakingTaskLineBatchUpdateReqVO) => { + return await request.put({ url: '/mes/wm/stocktaking-task/line-batch-update', data }) + }, + + exportStockTaking: async (params: any) => { + return await request.download({ url: '/mes/wm/stocktaking-task/export-excel', params }) + } +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts index bed41059e..8d563eea8 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -296,6 +296,11 @@ export enum DICT_TYPE { MES_WM_ITEM_RECEIPT_STATUS = 'mes_wm_item_receipt_status', // MES 物料接收单状态 MES_WM_TRANSFER_STATUS = 'mes_wm_transfer_status', // MES 转移单状态 MES_WM_TRANSFER_TYPE = 'mes_wm_transfer_type', // MES 转移单类型 + MES_WM_STOCK_TAKING_TYPE = 'mes_wm_stock_taking_type', // MES 盘点类型 + MES_WM_STOCK_TAKING_PLAN_STATUS = 'mes_wm_stock_taking_plan_status', // MES 盘点方案状态 + MES_WM_STOCK_TAKING_TASK_STATUS = 'mes_wm_stock_taking_task_status', // MES 盘点任务状态 + MES_WM_STOCK_TAKING_LINE_STATUS = 'mes_wm_stock_taking_task_line_status', // MES 盘点任务行状态 + MES_WM_STOCK_TAKING_PARAM_TYPE = 'mes_wm_stock_taking_param_type', // MES 盘点方案参数类型 MES_WM_OUTSOURCE_RECPT_STATUS = 'mes_wm_outsource_recpt_status', // MES 外协入库单状态 MES_WM_PRODUCTION_ISSUE_STATUS = 'mes_wm_production_issue_status', // MES 领料出库单状态 MES_PRODUCT_PRODUCE_STATUS = 'mes_product_produce_status', // MES 生产入库单状态 diff --git a/src/views/mes/utils/constants.ts b/src/views/mes/utils/constants.ts index e73b1e858..ab455700a 100644 --- a/src/views/mes/utils/constants.ts +++ b/src/views/mes/utils/constants.ts @@ -228,6 +228,44 @@ export const MesWmOutsourceReceiptStatusEnum = { CANCELED: MesOrderStatusConstants.CANCELLED } +/** MES 盘点类型枚举 */ +export const MesWmStockTakingTypeEnum = { + OPEN: 1, + CYCLE: 2, + DYNAMIC: 3 +} + +/** MES 盘点方案状态枚举 */ +export const MesWmStockTakingPlanStatusEnum = { + PREPARE: MesOrderStatusConstants.DRAFT, + CONFIRMED: MesOrderStatusConstants.CONFIRMED +} + +/** MES 盘点任务状态枚举 */ +export const MesWmStockTakingTaskStatusEnum = { + PREPARE: MesOrderStatusConstants.DRAFT, + IN_PROGRESS: MesOrderStatusConstants.CONFIRMED, + FINISHED: MesOrderStatusConstants.FINISHED, + CANCELED: MesOrderStatusConstants.CANCELLED +} + +/** MES 盘点任务行状态枚举 */ +export const MesWmStockTakingTaskLineStatusEnum = { + UNCOUNTED: 0, + NORMAL: 1, + GAIN: 2, + LOSS: 3 +} + +/** MES 盘点方案参数类型枚举 */ +export const MesWmStockTakingParamTypeEnum = { + WAREHOUSE: 1, + LOCATION: 2, + AREA: 3, + ITEM: 4, + BATCH: 5 +} + /** MES 外协入库单状态枚举 */ export const MesWmOutsourceRecptStatusEnum = { PREPARE: MesOrderStatusConstants.DRAFT, diff --git a/src/views/mes/wm/stocktaking/plan/StockTakingPlanForm.vue b/src/views/mes/wm/stocktaking/plan/StockTakingPlanForm.vue new file mode 100644 index 000000000..5ca4c6e01 --- /dev/null +++ b/src/views/mes/wm/stocktaking/plan/StockTakingPlanForm.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/mes/wm/stocktaking/plan/components/StockTakingParamTable.vue b/src/views/mes/wm/stocktaking/plan/components/StockTakingParamTable.vue new file mode 100644 index 000000000..073cabbd9 --- /dev/null +++ b/src/views/mes/wm/stocktaking/plan/components/StockTakingParamTable.vue @@ -0,0 +1,182 @@ + + + + diff --git a/src/views/mes/wm/stocktaking/plan/index.vue b/src/views/mes/wm/stocktaking/plan/index.vue new file mode 100644 index 000000000..3c98716c5 --- /dev/null +++ b/src/views/mes/wm/stocktaking/plan/index.vue @@ -0,0 +1,309 @@ + + +