From 6b3deec4140591fd24f2592b88beb7ef5872a88a Mon Sep 17 00:00:00 2001 From: chenhao Date: Fri, 21 Nov 2025 16:15:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(inventory):=20=E6=96=B0=E5=A2=9E=E5=A4=87?= =?UTF-8?q?=E8=B4=A7=E4=BF=A1=E6=81=AF=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在库存模块中添加新的备货信息页面,支持查询、新增、修改和删除操作 - 实现了备货状态的更新逻辑,包括从“待备货”到“已备货”的转换 - 增加了按照项目编号、名称、合同编号及备货状态进行筛选的功能 - 支持按到货时间和审批时间排序 - 提供了导出备货信息列表为Excel文件的功能 - 添加了查看项目详情和订单详情的跳转链接 - 优化了移动端展示效果,确保在不同设备上都能良好显示数据 - 更新了权限配置,确保相关路由可以被正确访问 - 修复了部分UI交互问题,提升了用户体验 --- oms_web/oms_vue/src/api/inventory/stock.js | 56 ++ oms_web/oms_vue/src/api/system/partner.js | 9 + oms_web/oms_vue/src/permission.js | 2 +- oms_web/oms_vue/src/router/index.js | 12 +- .../src/views/inventory/execution/edit.vue | 10 +- .../src/views/inventory/execution/index.vue | 4 + .../inventory/outer/components/OuterForm.vue | 5 +- .../src/views/inventory/outer/index.vue | 2 +- .../src/views/inventory/stock/index.vue | 619 ++++++++++++++++++ .../src/views/system/partner/query.vue | 350 ++++++++++ .../oms_vue/src/views/system/vendor/query.vue | 296 +++++++++ .../src/main/resources/application.yml | 5 +- .../vue/VueInventoryOuterController.java | 2 +- .../service/impl/TodoServiceImpl.java | 3 + 14 files changed, 1361 insertions(+), 14 deletions(-) create mode 100644 oms_web/oms_vue/src/api/inventory/stock.js create mode 100644 oms_web/oms_vue/src/views/inventory/stock/index.vue create mode 100644 oms_web/oms_vue/src/views/system/partner/query.vue create mode 100644 oms_web/oms_vue/src/views/system/vendor/query.vue diff --git a/oms_web/oms_vue/src/api/inventory/stock.js b/oms_web/oms_vue/src/api/inventory/stock.js new file mode 100644 index 00000000..6558c40f --- /dev/null +++ b/oms_web/oms_vue/src/api/inventory/stock.js @@ -0,0 +1,56 @@ +import request from '@/utils/request' + +// 查询备货信息列表 +export function listStock(query) { + return request({ + url: '/stock/vue/list', + method: 'get', + params: query + }) +} + +// 获取备货信息详细信息 +export function getStock(id) { + return request({ + url: '/stock/vue/' + id, + method: 'get' + }) +} + +// 新增备货信息 +export function addStock(data) { + return request({ + url: '/stock/vue', + method: 'post', + data: data + }) +} + +// 修改备货信息 +export function updateStock(data) { + return request({ + url: '/stock/vue', + method: 'put', + data: data + }) +} + +// 删除备货信息 +export function delStock(ids) { + return request({ + url: '/stock/vue/' + ids, + method: 'delete' + }) +} + +// 导出备货信息 +export function exportStock(query) { + return request({ + url: '/stock/vue/export', + method: 'post', // Assuming POST for export with query params based on how old one was set up. + params: query, + // The original export function used window.location.href, so the backend handles the file download. + // We'll mimic the backend behavior for now and let it respond with a downloadable file. + responseType: 'blob' // Important for file download + }) +} diff --git a/oms_web/oms_vue/src/api/system/partner.js b/oms_web/oms_vue/src/api/system/partner.js index 8c2d43a5..419b9c92 100644 --- a/oms_web/oms_vue/src/api/system/partner.js +++ b/oms_web/oms_vue/src/api/system/partner.js @@ -51,3 +51,12 @@ export function exportPartner(query) { data: query }) } + +// 查询代理商信息(公开查询) +export function queryPartner(query) { + return request({ + url: '/system/partner/list/query', + method: 'get', + params: query + }) +} diff --git a/oms_web/oms_vue/src/permission.js b/oms_web/oms_vue/src/permission.js index d36e5d14..72639031 100644 --- a/oms_web/oms_vue/src/permission.js +++ b/oms_web/oms_vue/src/permission.js @@ -8,7 +8,7 @@ import { isRelogin } from '@/utils/request' NProgress.configure({ showSpinner: false }) -const whiteList = ['/login', '/register', '/service-query'] +const whiteList = ['/login', '/register', '/manage/service','/system/vendor/query','/system/partner/query'] const isWhiteList = (path) => { return whiteList.some(pattern => isPathMatch(pattern, path)) diff --git a/oms_web/oms_vue/src/router/index.js b/oms_web/oms_vue/src/router/index.js index 1e97d8fc..6f986687 100644 --- a/oms_web/oms_vue/src/router/index.js +++ b/oms_web/oms_vue/src/router/index.js @@ -91,9 +91,19 @@ export const constantRoutes = [ { - path: '/service-query', + path: '/manage/service', component: () => import('@/views/manage/service/index'), hidden: true + }, + { + path: '/system/vendor/query', + component: () => import('@/views/system/vendor/query'), + hidden: true + }, + { + path: '/system/partner/query', + component: () => import('@/views/system/partner/query'), + hidden: true } ] diff --git a/oms_web/oms_vue/src/views/inventory/execution/edit.vue b/oms_web/oms_vue/src/views/inventory/execution/edit.vue index 8f475b69..f8d03db9 100644 --- a/oms_web/oms_vue/src/views/inventory/execution/edit.vue +++ b/oms_web/oms_vue/src/views/inventory/execution/edit.vue @@ -1,9 +1,9 @@ @@ -99,6 +100,7 @@ export default { data() { return { visible: false, + showReturn: false, title: '出库单发货管理', form: {}, productList: [], @@ -117,6 +119,7 @@ export default { this.form = response.data.inventoryOuter; this.productList = response.data.productVoList || []; this.deliveryList = response.data.deliveryList || []; + this.showReturn=this.deliveryList.length<=0; }); } }, diff --git a/oms_web/oms_vue/src/views/inventory/outer/index.vue b/oms_web/oms_vue/src/views/inventory/outer/index.vue index 0944d4b7..67e7b535 100644 --- a/oms_web/oms_vue/src/views/inventory/outer/index.vue +++ b/oms_web/oms_vue/src/views/inventory/outer/index.vue @@ -61,7 +61,7 @@ 编辑 diff --git a/oms_web/oms_vue/src/views/inventory/stock/index.vue b/oms_web/oms_vue/src/views/inventory/stock/index.vue new file mode 100644 index 00000000..6746a808 --- /dev/null +++ b/oms_web/oms_vue/src/views/inventory/stock/index.vue @@ -0,0 +1,619 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/system/partner/query.vue b/oms_web/oms_vue/src/views/system/partner/query.vue new file mode 100644 index 00000000..09399329 --- /dev/null +++ b/oms_web/oms_vue/src/views/system/partner/query.vue @@ -0,0 +1,350 @@ + + + + + diff --git a/oms_web/oms_vue/src/views/system/vendor/query.vue b/oms_web/oms_vue/src/views/system/vendor/query.vue new file mode 100644 index 00000000..aec41abe --- /dev/null +++ b/oms_web/oms_vue/src/views/system/vendor/query.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index efc2d1ca..7a28e9de 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -160,4 +160,7 @@ unis: mail: enabled: true # 商务角色id - businessRoleId: 103 \ No newline at end of file + businessRoleId: 103 + +flowable: + database-schema-update: false \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java index a839195c..765521a9 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/vue/VueInventoryOuterController.java @@ -84,7 +84,7 @@ public class VueInventoryOuterController extends BaseController @PostMapping("/status") public AjaxResult updateStatus(@RequestBody InventoryOuter inventoryOuter) { - return toAjax(inventoryOuterService.updateInventoryOuter(inventoryOuter)); + return toAjax(inventoryOuterService.statusUpdate(inventoryOuter)); } @GetMapping("/view/{id}") diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java index 0784e657..16c2b0bc 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/flowable/service/impl/TodoServiceImpl.java @@ -331,6 +331,9 @@ public class TodoServiceImpl implements TodoService { @Override public void fillOrderApproveNode(List list) { List businessKeyList = list.stream().map(ProjectOrderInfo::getOrderCode).collect(Collectors.toList()); + if (CollUtil.isEmpty(businessKeyList)){ + return; + } List todoList = todoMapper.listTodoByBusinessKeyAndProcessKey(businessKeyList, Arrays.asList(orderOnlineFlowKey, orderOfflineFlowKey)); Map approveUserNameMap = todoList.stream() .collect(Collectors.groupingBy(Todo::getBusinessKey,