[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"approved-friend-links":32,"project-slug-wms":33},{"code":4,"msg":5,"data":6},0,"操作成功",{"police_number":7,"login_password_enabled":8,"copyright":9,"wechat_pay_api_key":7,"admin_login_wechat_enabled":8,"wechat_pay_public_key_id":10,"member_price":11,"police_link":7,"payment_enabled":12,"contact_email":13,"wechat_pay_serial_no":14,"member_discount":15,"wechat_pay_mch_id":16,"alipay_return_url":7,"alipay_private_key":17,"admin_login_password_enabled":8,"wechat_id":18,"wechat_pay_app_id":19,"owner_name":20,"site_domain":21,"site_desc":22,"login_wechat_qr_enabled":8,"alipay_public_key":23,"wechat_pay_private_key":24,"site_name":25,"icp_number":26,"alipay_notify_url":7,"wechat_pay_public_key":27,"payment_alipay_enabled":8,"icp_link":28,"wechat_pay_api_v3_key":29,"login_email_enabled":12,"alipay_app_id":30,"member_enabled":12,"wechat_pay_notify_url":31,"admin_login_email_enabled":12},"","false","© 2026 makexu.com 版权所有","PUB_KEY_ID_0117465997412026060900182334001401","168","true","370663537@qq.com","38039BC91B0D03B6C7DDDBAEAB823D1201FDA789","0.70","1746599741","MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCJKx4pNlM6dJN10cqHxscvHhyBOu7KY6+23rmnIs1GtIvd8bu09I1mCyzWUDM26VxLz2l55I44gmK+\u002FnIhxqzsl0znvbZh5r3fj8CYbQRcDM7L9I7hOr9k5vWc\u002FAQy2jb9AmNuV3xa8F1bVkve00nN2U6Oap2aoNdDhSsSA1NeC0WwtVLaq2wkqqKBY\u002FUrfNLR3xr0iP0YRQy+paY6jta4Tz88KHE+x3ZRfxben+tejAsYVpjVTpcfDKzzKSTqDcY1vbPjApCsN66kKmEwD4HmPRNphksLiIOqyWc+zaJE39JM620Br6NuxvMiR0dmbncE3UaztvvXUSL0kDKnYKKhAgMBAAECggEAfO9U7VyZuehsVyfaPIkE6xmWBO7UiGr7pKiAmIbOSdQwgNqoiU0lbQhIsnsh6qXqdvJXs7pE\u002F5tirWu8MJ9w6Z11Yq4c7FbqIjIgzbSd\u002F+l6gbIiYWrM4O6sT2wLtvWimBgQ0HPGxF2h6otTV4VC98cyEe1x12EgMFOewy1cRY7QP68VBaGpOS6twrCJtLw9PvOPfeY6Fkur65ESAp1N7ELgJRHE0vtQljY01EYM30BwesDIZpUaGqmepzRhFKOkfiQDtgXM3GZOUXJHWR06j2T9PYcmDEFRkPPtLABI42UJPwtIb75kiXjv6uysob0vo746WtdIGRkuQNRjyyh\u002FsQKBgQDLxUCWAexSrrbnr5UITlMwocY0Fuo1U9pjABfB5MnrWoQPWsJgAOgiXt\u002FsNRtdZDMpo7fTku2rhDueiUHWY7aLUbvvvzbuBLfNXIX7wy2qNEPMmRpn9KkzLeB0MYwMvTXgT+zD\u002Fr6lIO3RYQE9JYaojBMuykDu+2Y9C9yRGTGjbwKBgQCsU6gc8cODXKHSCovZO8M6fbOpSoc6GezozvMvD\u002Fg1sOwNwovZ4VJwIFyGTyssbjjEp\u002F5B5B\u002FDg+HGygaPubuzTyc0\u002FfZ5uxgDfMjzExMhJiol0JdgSX+m3pC\u002Fc189pcvkSAKXQrGApXN3i95OrGOj\u002FiRr1AuGH8sYk0+vWYjS7wKBgGSEAL\u002F+YtzGYmMXMaTPPioXIvY+93kmy+tZ+F4kxZXbKJmKY6eHyvppYnvaFo2TB8nagKtVJvgcWmxxuJBQz5MZ1mMFJ8txeFlM8qqmNLho36jlPSlafrxIPRgT+Mmv7AuiYWCtIM3D2IwYFcxb3nj13+CM1EsOp\u002FglCcBpdRrxAoGAFLL3voJLubumtFQP+Ef1a1EuA2ewVopGqrAxBbYlWk2mDQERS1qFTHKWqotX5D5ZE0YahE+igRmWRQp\u002FP0RQB3m6e+MFeBnBCKo0eP4RjinHZkNn62jorGKPgG+bQQxpMUJ1DTY1m\u002F5DoFhsm4aZcVlVhp4xxCqNeqY3LBjVFoECgYEAmOxK+rzVnF83wfTE65lMXqN8UWTOWSDsbiGzx6YSg02X67MfDk2asD\u002FyciUiCCE25lRxwm0SuaetOTMbZO5mD8ZZEq7GQSt9L+r1LFjkB\u002FwmX6tbAJI3rpAWpD0ntcASCN8QfaWh3liFMaSjkn1OmhCCrV\u002FbS+aOJ1wZwJK4jeg=","dajiang8070","wxebc91c29d4bd3fe8","码客徐","www.makexu.com","分享优质开发工具、项目实战、编程教程、AI开发、源码项目和技术资源，帮助程序员快速成长，让开发更高效。","MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApUboIRwnBzMLC+hFy+b1Fhsy4xacSBoMfasdqMicCrK70hj+mCrUqJ2hGUn2gClNvMGyO+90p9UNhrDGCzpact8CCZCs6t7vQCrnD4PEmEKl62XcCwngrPEKP5gP6sSWDL\u002Fm8cHabF\u002FVn9HlayaS0nePd89XRgSi8gd0oh5qyUbt2s27zY3fpIsd66naVwMLn7CBwDLFKDINnFeRu\u002FsAN3SKYcwl7T1yhpPb99yoSCKA+yYaPaT85UKLOqESk6kUabPsUDDmpkZn6nHHXUQa3\u002FSJUSnn7a\u002F+YOZsSveZg4ei1AMSmXTZH\u002FnB9MuHgyZ0pnI2Bw3LR1YpNcyUoKtZfQIDAQAB","-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDnmf8oIN9HbAUi\nuaNZwKB\u002F3pDPtavwOLpF6PpKJsLts3fOeXHUwbNJzcjrxTe5DKKMNOk5t3cFXPtb\nBH18pEFNi1zHWkN5aZ1BrViCwYpo7FRucie7Dc9sGFeaRZMsRH+piHUkCh5I3QJM\nYCXIbsiTeavWiRCSLsmcQ2KfStSw8NO9+Tio6dTQb7lmSCBEK51zlge8tgvEyoWm\nsXCAlAz0GgzxTrIWo4saJ2ooIkX0ljvmPyTxyZ2+nXzI8RYKA1DZ38yoy4Pa+xXv\nxOa0VV5kidl8s+6F8rk7133boU+44gmKOE8lK5+a3FBkrI1D3rSxFGnQ0WIYC\u002F\u002F0\nB+TRUVFTAgMBAAECggEBAIAN+bKqWkoXQ8+rbNJXW2bYHKF8BZFRDE1TP\u002FB39heP\nv5J+O54za3pHOeyCowjCH63+I2YyNrDUdHYiyW99Mk453BatpdkfuD90JRhHAsx4\nv0ZCAA3A2QsfenBmP7WeOif2ty4yGgSXjonEL5\u002FfAS\u002FpekWoi20ISZkI+SKyMV+S\n+2+aoInmX9KcK1E\u002FM8vA6\u002FaNUOYmGM5hk1342ezQ131\u002FlwrksN4i1cuUdGaXJ8SI\nlmXTavDC1ypQKXtyigorOCW2Y\u002FAzNVjL04Pb\u002FiSsB0yjagSHU69veSLJTf+XCGFt\ne3YfScQDhLblq142RnKVfMQvePaAI3dQ1tOqgUrHuaECgYEA+DzzcmiyxOSicu37\n+Nvwc5d8DETyxBDqF\u002F1GJ6bZLwflZvBOx67K\u002FNlT9Z3L2yNGjrL0w0oQJnOWH0hb\nyW7piXXqnQ2\u002FNkNLzks0goY6zjyI3FHMvDEvdxiyz4PD6H+JeMUSANLnGztR9aFh\nAO1mgtH+TF95mUenytEYcTde4JUCgYEA7tfgcWm8SsctkahZOwbClWPDy69wxUh5\nlLDgwj1+XJ7Pa5MaACUvQV8E6LFA7HHZZCIf2JGOgzXW0UEym46Z6v2OiXOasLKN\nBwtnFytKbzOK7nkkr+U6ympW1eZXJN5A4MZRLQl2gKA8teZL8Gz+F2i0+uVlR0cb\nK7G\u002FdfAS6EcCgYEAoc8hJR9n\u002F\u002F3EgkPsbe\u002F3kXFZ86lx0SnxXYfDlg8lHIn6F5pm\nz7R5Lk3\u002Fc2fTPNmGoXe3IiEB2\u002F6WCXgiFHBOnEKXlp4iWJ2PKT5OURJr\u002FIjq8SoE\n2Vr6RJh93dRW\u002FBM+KdHThWP0LwUAzKrPz0nv+zAkoeXOHoLdtc+MLihYmO0CgYEA\nrp8glmqy4o0rMOI\u002FkttHaoeNQB8duO9bDK4hNYJWH4twpPrguJh3Kzk4UpQ9nmFC\nimY0mFcbNa0oSMd9I6QnvlnxW2ctAuEYIL1ietsIybKKcf4aJ4vV5uXGZQ7KScdA\n8dWsxdu0SyhcGrWscbSONTk1kHYlDO7c255SF\u002F0VJcMCgYB0v6C3bNIPkbAlvFlo\nBTgccv3dBUa2Zo\u002FOJa8xGW\u002FVz3RuL6qTjFRVEYJILVmrSR2fT1w44EET2fGW6cb4\nb5a\u002FDGz9scZwUBwhhMleBPUu2LL6\u002FFkuP2amFFr5uRK8GwbZ5TvrtpNgdBoMhvPb\n1+z709LIwIzFbq5WLW3OEao7MA==\n-----END PRIVATE KEY-----","码客徐的小栈","皖ICP备2024065487号-6","-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAymOTDu1kxxydfrQEgKbe\nne0+i+Bq55TY+BWkkev\u002Ffy9NtSS0Fpbz4g7rscQg6W+4CmYz4VSD6GrC3pXwjRhK\nUGZDHhUnUV9Hf6SLWepxfh8SihdqDbBu6mRKRwyQw7RBYhxLZV+udagchCtSBut1\niQ6H+ozn+3jVUdX\u002F2rGuXBt1WIWbFomPj1MIQuolSORM85nr8cqWyimgECm70imE\nTlRR0s9WkksWoF0WwFdoWWAjxo4LVNdf9\u002FEySIu5I5NuYslwWjb+T87D\u002FNkIoI92\ne1jjAOsPgl5oJ10wLjNjbOMy9+\u002FrzDDz6yAyuKMKj\u002Flhu2D35Cx8ZJDC798vTbZS\nfQIDAQAB\n-----END PUBLIC KEY-----","https:\u002F\u002Fbeian.miit.gov.cn\u002F","K8mX2pQ7vN4rT9yL6cD1wH5sJ3eF0aZB","9021000164659589","https:\u002F\u002Fwww.makexu.com\u002Fapi\u002Forder\u002Fnotify\u002Fwechat",[],{"project":34,"introHtml":77,"deployHtml":7,"tocIntro":78,"tocDeploy":79},{"id":35,"title":36,"projectCode":37,"slug":38,"summary":39,"hot":40,"sortNum":4,"status":41,"price":42,"originalPrice":43,"salesCount":4,"categoryId":44,"categoryName":45,"viewCount":45,"tagIds":46,"tagList":52,"images":68,"resources":69,"videos":75,"createTime":76,"publishTime":76,"isNew":40},"2087124518469668865","仓库管理系统","SV005","wms","采用前后端分离架构，覆盖从仓库、库区、库位的基础设施管理，到商品、供应商、客户等基础资料维护，再到入库、出库、库存、盘点等核心仓储业务的完整流程。系统同时内置数据看板、库存预警与公告管理能力，帮助仓储管理人员实时掌握库存动态、规范出入库流程、及时完成盘点对账。",false,3,99,200,"1",null,[47,48,49,50,51],"2063897838560788481","2063897893363564545","2063898057671229442","2087124519350472705","2087124519581159426",[53,56,59,62,65],{"id":47,"name":54,"color":55,"sortNum":45,"status":45},"SpringBoot","#22c55e",{"id":48,"name":57,"color":58,"sortNum":45,"status":45},"Vue","#f59e0b",{"id":49,"name":60,"color":61,"sortNum":45,"status":45},"MySQL","#06b6d4",{"id":50,"name":63,"color":64,"sortNum":45,"status":45},"MybatisPlus","#B216E6FF",{"id":51,"name":66,"color":67,"sortNum":45,"status":45},"ElementPlus","#84cc16",[],[70],{"id":71,"projectId":35,"resourceType":72,"name":73,"url":45,"sortNum":4,"fileId":74},"2105573066736709634","source","完整源码+SQL文件","2087124683964321794",[],"2026-08-11 18:30:37","\u003Ch1 id=\"%E4%BB%93%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F-%E2%80%94-%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D%E6%96%87%E6%A1%A3\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%BB%93%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F-%E2%80%94-%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D%E6%96%87%E6%A1%A3\" aria-hidden=\"true\">\u003C\u002Fa> 仓库管理系统 — 项目介绍文档\u003C\u002Fh1>\n\u003Ch2 id=\"%E4%B8%80%E3%80%81%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%BF%B0\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%B8%80%E3%80%81%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%BF%B0\" aria-hidden=\"true\">\u003C\u002Fa> 一、项目概述\u003C\u002Fh2>\n\u003Cp>本项目是一套\u003Cstrong>企业级仓库管理系统（Warehouse Management System，WMS）\u003C\u002Fstrong>，采用前后端分离架构，覆盖从仓库、库区、库位的基础设施管理，到商品、供应商、客户等基础资料维护，再到入库、出库、库存、盘点等核心仓储业务的完整流程。系统同时内置数据看板、库存预警与公告管理能力，帮助仓储管理人员实时掌握库存动态、规范出入库流程、及时完成盘点对账。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>属性\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>项目名称\u003C\u002Ftd>\n\u003Ctd>仓库管理系统（Warehouse Management System）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>架构模式\u003C\u002Ftd>\n\u003Ctd>B\u002FS 前后端分离\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>后端技术\u003C\u002Ftd>\n\u003Ctd>Spring Boot 3.2 \u002F MyBatis-Plus 3.5 \u002F MySQL 8.0 \u002F JWT\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>前端技术\u003C\u002Ftd>\n\u003Ctd>Vue 3 \u002F Element Plus \u002F Pinia \u002F Axios \u002F ECharts \u002F Vite\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>开发语言\u003C\u002Ftd>\n\u003Ctd>Java 21 \u002F JavaScript（ES6+）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>适用场景\u003C\u002Ftd>\n\u003Ctd>计算机毕设、课程设计、源码学习与二次开发\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cblockquote>\n\u003Cp>本系统为\u003Cstrong>纯后台管理系统\u003C\u002Fstrong>，不提供前台用户界面，所有功能均通过管理员后台访问，按&quot;管理员 \u002F 员工&quot;两种角色进行权限控制。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"%E4%BA%8C%E3%80%81%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%BA%8C%E3%80%81%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84\" aria-hidden=\"true\">\u003C\u002Fa> 二、技术架构\u003C\u002Fh2>\n\u003Ch3 id=\"2.1-%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.1-%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" aria-hidden=\"true\">\u003C\u002Fa> 2.1 后端技术栈\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>类别\u003C\u002Fth>\n\u003Cth>技术选型\u003C\u002Fth>\n\u003Cth>版本\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>核心框架\u003C\u002Ftd>\n\u003Ctd>Spring Boot\u003C\u002Ftd>\n\u003Ctd>3.2.3\u003C\u002Ftd>\n\u003Ctd>Java 企业级开发框架\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ORM 框架\u003C\u002Ftd>\n\u003Ctd>MyBatis-Plus\u003C\u002Ftd>\n\u003Ctd>3.5.5\u003C\u002Ftd>\n\u003Ctd>增强版 MyBatis，简化 CRUD，内置分页\u002F逻辑删除\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>数据库\u003C\u002Ftd>\n\u003Ctd>MySQL\u003C\u002Ftd>\n\u003Ctd>8.0+\u003C\u002Ftd>\n\u003Ctd>关系型数据库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>安全认证\u003C\u002Ftd>\n\u003Ctd>jjwt（JWT）\u003C\u002Ftd>\n\u003Ctd>0.12.3\u003C\u002Ftd>\n\u003Ctd>无状态 Token 认证\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>密码加密\u003C\u002Ftd>\n\u003Ctd>BCrypt（Hutool）\u003C\u002Ftd>\n\u003Ctd>5.8.26\u003C\u002Ftd>\n\u003Ctd>慢哈希 + 随机盐值\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>API 文档\u003C\u002Ftd>\n\u003Ctd>Knife4j（OpenAPI 3）\u003C\u002Ftd>\n\u003Ctd>4.4.0\u003C\u002Ftd>\n\u003Ctd>Swagger 增强 UI\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>工具库\u003C\u002Ftd>\n\u003Ctd>Hutool\u003C\u002Ftd>\n\u003Ctd>5.8.26\u003C\u002Ftd>\n\u003Ctd>Java 通用工具集\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>构建工具\u003C\u002Ftd>\n\u003Ctd>Maven\u003C\u002Ftd>\n\u003Ctd>3.8+\u003C\u002Ftd>\n\u003Ctd>依赖管理与项目构建\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"2.2-%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.2-%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" aria-hidden=\"true\">\u003C\u002Fa> 2.2 前端技术栈\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>类别\u003C\u002Fth>\n\u003Cth>技术选型\u003C\u002Fth>\n\u003Cth>版本\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>核心框架\u003C\u002Ftd>\n\u003Ctd>Vue 3（Composition API）\u003C\u002Ftd>\n\u003Ctd>3.4.21\u003C\u002Ftd>\n\u003Ctd>渐进式前端框架\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>UI 组件库\u003C\u002Ftd>\n\u003Ctd>Element Plus\u003C\u002Ftd>\n\u003Ctd>2.6.3\u003C\u002Ftd>\n\u003Ctd>企业级桌面端组件库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>路由\u003C\u002Ftd>\n\u003Ctd>Vue Router\u003C\u002Ftd>\n\u003Ctd>4.3.0\u003C\u002Ftd>\n\u003Ctd>单页应用路由管理\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>状态管理\u003C\u002Ftd>\n\u003Ctd>Pinia\u003C\u002Ftd>\n\u003Ctd>2.1.7\u003C\u002Ftd>\n\u003Ctd>Vue 官方状态管理库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>HTTP 客户端\u003C\u002Ftd>\n\u003Ctd>Axios\u003C\u002Ftd>\n\u003Ctd>1.15.2\u003C\u002Ftd>\n\u003Ctd>基于 Promise 的 HTTP 库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>图表\u003C\u002Ftd>\n\u003Ctd>ECharts\u003C\u002Ftd>\n\u003Ctd>5.5.0\u003C\u002Ftd>\n\u003Ctd>数据可视化图表库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>构建工具\u003C\u002Ftd>\n\u003Ctd>Vite\u003C\u002Ftd>\n\u003Ctd>5.2.0\u003C\u002Ftd>\n\u003Ctd>下一代前端构建工具\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>自动导入\u003C\u002Ftd>\n\u003Ctd>unplugin-auto-import\u003C\u002Ftd>\n\u003Ctd>0.17.5\u003C\u002Ftd>\n\u003Ctd>API 自动按需导入\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"2.3-%E6%9E%B6%E6%9E%84%E5%9B%BE\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.3-%E6%9E%B6%E6%9E%84%E5%9B%BE\" aria-hidden=\"true\">\u003C\u002Fa> 2.3 架构图\u003C\u002Fh3>\n\u003Cdiv class=\"code-block-wrapper\">\u003Cdiv class=\"code-block-header\">\u003Cbutton class=\"code-copy-btn\" data-code=\"┌─────────────────────────────────────────────────────────┐\n│                   浏览器（Browser）                       │\n├─────────────────────────────────────────────────────────┤\n│          后台管理（Admin） localhost:3000\u002Fadmin            │\n│  · 数据看板 \u002F 库存预警 \u002F 出入库趋势图表                     │\n│  · 仓库 \u002F 库区库位 \u002F 商品 \u002F 供应商 \u002F 客户 基础数据管理        │\n│  · 入库单 \u002F 出库单 \u002F 库存 \u002F 库存流水 \u002F 盘点管理             │\n│  · 用户管理 \u002F 公告管理 \u002F 个人中心                          │\n└─────────────────────────────────────────────────────────┘\n                          │  HTTP \u002Fapi\u002F*\n                          ▼\n┌─────────────────────────────────────────────────────────┐\n│              Spring Boot 后端（localhost:8080）            │\n├─────────────┬──────────────┬──────────────┬──────────────┤\n│  Interceptor │  Controller  │   Service    │   Mapper     │\n│  JWT认证     │  admin\u002F 后台  │   业务逻辑    │  MyBatis-Plus│\n│  角色鉴权     │  auth\u002F 登录   │   事务管理    │  XML 自定义SQL│\n└─────────────┴──────────────┴──────────────┴──────────────┘\n                          │\n                          ▼\n┌─────────────────────────────────────────────────────────┐\n│            MySQL 8.0（warehouse_management）              │\n│   17 张数据表：user, warehouse, storage_area,             │\n│   storage_location, product_category, product, supplier, │\n│   customer, inbound_order(+item), outbound_order(+item), │\n│   stock, stock_record, stock_check(+item), announcement  │\n└─────────────────────────────────────────────────────────┘\n\" title=\"复制代码\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode class=\"language-text\">\u003Cspan class=\"line\">\u003Cspan>┌─────────────────────────────────────────────────────────┐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│                   浏览器（Browser）                       │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├─────────────────────────────────────────────────────────┤\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│          后台管理（Admin） localhost:3000\u002Fadmin            │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  · 数据看板 \u002F 库存预警 \u002F 出入库趋势图表                     │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  · 仓库 \u002F 库区库位 \u002F 商品 \u002F 供应商 \u002F 客户 基础数据管理        │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  · 入库单 \u002F 出库单 \u002F 库存 \u002F 库存流水 \u002F 盘点管理             │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  · 用户管理 \u002F 公告管理 \u002F 个人中心                          │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└─────────────────────────────────────────────────────────┘\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          │  HTTP \u002Fapi\u002F*\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          ▼\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>┌─────────────────────────────────────────────────────────┐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│              Spring Boot 后端（localhost:8080）            │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├─────────────┬──────────────┬──────────────┬──────────────┤\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  Interceptor │  Controller  │   Service    │   Mapper     │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  JWT认证     │  admin\u002F 后台  │   业务逻辑    │  MyBatis-Plus│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  角色鉴权     │  auth\u002F 登录   │   事务管理    │  XML 自定义SQL│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└─────────────┴──────────────┴──────────────┴──────────────┘\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          ▼\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>┌─────────────────────────────────────────────────────────┐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│            MySQL 8.0（warehouse_management）              │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   17 张数据表：user, warehouse, storage_area,             │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   storage_location, product_category, product, supplier, │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   customer, inbound_order(+item), outbound_order(+item), │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   stock, stock_record, stock_check(+item), announcement  │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└─────────────────────────────────────────────────────────┘\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"2.4-%E5%AE%89%E5%85%A8%E8%AE%BE%E8%AE%A1\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.4-%E5%AE%89%E5%85%A8%E8%AE%BE%E8%AE%A1\" aria-hidden=\"true\">\u003C\u002Fa> 2.4 安全设计\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>JWT 双拦截器\u003C\u002Fstrong>：\u003Ccode>JwtAuthInterceptor\u003C\u002Fcode>（认证）+ \u003Ccode>RoleAuthInterceptor\u003C\u002Fcode>（角色鉴权），按路径分层控制\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>@RequireRole\u003C\u002Fcode> 注解\u003C\u002Fstrong>：标注在 Controller 方法上，声明接口允许访问的角色（默认仅管理员），权限校验集中统一\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>@Anonymous\u003C\u002Fcode> 注解\u003C\u002Fstrong>：标注公开接口（如登录、用户信息、文件上传），无需额外维护白名单\u003C\u002Fli>\n\u003Cli>\u003Cstrong>密码 BCrypt 加密\u003C\u002Fstrong>：使用慢哈希算法加随机盐值，有效抵御彩虹表攻击\u003C\u002Fli>\n\u003Cli>\u003Cstrong>逻辑删除\u003C\u002Fstrong>：基于 MyBatis-Plus 全局逻辑删除配置，业务数据（用户\u002F商品\u002F供应商\u002F客户\u002F单据\u002F盘点单）删除均为软删除，保障数据可追溯\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CORS 精准控制\u003C\u002Fstrong>：仅允许特定来源跨域，携带认证信息\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"%E4%B8%89%E3%80%81%E8%A7%92%E8%89%B2%E4%B8%8E%E6%9D%83%E9%99%90\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%B8%89%E3%80%81%E8%A7%92%E8%89%B2%E4%B8%8E%E6%9D%83%E9%99%90\" aria-hidden=\"true\">\u003C\u002Fa> 三、角色与权限\u003C\u002Fh2>\n\u003Cp>系统采用&quot;管理员 \u002F 员工&quot;双角色模型，前端菜单与操作按钮按角色动态控制，后端接口通过 \u003Ccode>@RequireRole\u003C\u002Fcode> 二次校验：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>权限点\u003C\u002Fth>\n\u003Cth style=\"text-align:center\">管理员（role=1）\u003C\u002Fth>\n\u003Cth style=\"text-align:center\">员工（role=0）\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>数据看板、公告查看\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>仓库\u002F库区\u002F商品\u002F供应商\u002F客户 查看\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>仓库\u002F库区\u002F商品\u002F供应商\u002F客户 新增、编辑、删除\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">❌\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>创建入库单\u002F出库单\u002F盘点单（提交后待审核）\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>出入库单审核（通过\u002F驳回）、盘点完成\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">❌\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>用户管理、公告管理\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">❌\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>个人中心（资料\u002F头像\u002F密码）\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003Ctd style=\"text-align:center\">✅\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cblockquote>\n\u003Cp>默认账号：管理员 \u003Ccode>admin\u003C\u002Fcode>，员工 \u003Ccode>wm001\u003C\u002Fcode> \u002F \u003Ccode>wm002\u003C\u002Fcode> \u002F \u003Ccode>wm003\u003C\u002Fcode>，初始密码均为 \u003Ccode>123456\u003C\u002Fcode>（BCrypt 加密存储）。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"%E5%9B%9B%E3%80%81%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E5%9B%9B%E3%80%81%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97\" aria-hidden=\"true\">\u003C\u002Fa> 四、功能模块\u003C\u002Fh2>\n\u003Ch3 id=\"4.1-%E6%95%B0%E6%8D%AE%E7%9C%8B%E6%9D%BF\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.1-%E6%95%B0%E6%8D%AE%E7%9C%8B%E6%9D%BF\" aria-hidden=\"true\">\u003C\u002Fa> 4.1 数据看板\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>统计卡片\u003C\u002Ftd>\n\u003Ctd>仓库总数、在库商品种类、库存总量、预警商品数、今日入库单、今日出库单、待审核入库单、待审核出库单\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>趋势图表\u003C\u002Ftd>\n\u003Ctd>近 7 天出入库单趋势（双折线）、仓库库存分布（柱状图）、库存 TOP 商品（横向柱状图），基于 ECharts 可视化\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>最新公告\u003C\u002Ftd>\n\u003Ctd>展示已发布公告，管理员可直接跳转公告管理\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"4.2-%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%AE%A1%E7%90%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.2-%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E7%AE%A1%E7%90%86\" aria-hidden=\"true\">\u003C\u002Fa> 4.2 基础数据管理\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模块\u003C\u002Fth>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>仓库管理\u003C\u002Ftd>\n\u003Ctd>仓库增删改查、启用\u002F停用\u003C\u002Ftd>\n\u003Ctd>仓库名称、编码、地址、负责人、联系电话\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>库区库位\u003C\u002Ftd>\n\u003Ctd>库区、库位增删改查\u003C\u002Ftd>\n\u003Ctd>库区类型（常温\u002F冷藏\u002F冷冻\u002F危险品\u002F贵重品）；库位编号（如 A-01-01）、货架号、层号、最大\u002F已用容量\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>商品管理\u003C\u002Ftd>\n\u003Ctd>商品分类、商品增删改查\u003C\u002Ftd>\n\u003Ctd>商品编码、规格、单位、品牌、参考单价、库存预警值；分类支持启用\u002F停用，含商品数量统计\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>供应商管理\u003C\u002Ftd>\n\u003Ctd>供应商增删改查\u003C\u002Ftd>\n\u003Ctd>联系人、电话、邮箱、地址、备注\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>客户管理\u003C\u002Ftd>\n\u003Ctd>客户增删改查\u003C\u002Ftd>\n\u003Ctd>联系人、电话、邮箱、地址、备注\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"4.3-%E4%BB%93%E5%82%A8%E4%B8%9A%E5%8A%A1\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.3-%E4%BB%93%E5%82%A8%E4%B8%9A%E5%8A%A1\" aria-hidden=\"true\">\u003C\u002Fa> 4.3 仓储业务\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模块\u003C\u002Fth>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>入库单管理\u003C\u002Ftd>\n\u003Ctd>创建入库单、审核\u002F驳回、作废\u003C\u002Ftd>\n\u003Ctd>选择仓库、供应商，明细含商品、库位、数量、单价；审核通过自动增加库存、更新库位容量并生成库存流水\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>出库单管理\u003C\u002Ftd>\n\u003Ctd>创建出库单、审核\u002F驳回、作废\u003C\u002Ftd>\n\u003Ctd>选择仓库、客户，明细含商品、库位、数量、单价；审核通过自动扣减库存、更新库位容量并生成库存流水\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>库存管理\u003C\u002Ftd>\n\u003Ctd>库存查询、预警筛选\u003C\u002Ftd>\n\u003Ctd>按商品\u002F仓库筛选，支持&quot;仅看预警&quot;；库存低于预警值显示红色预警标签\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>库存流水\u003C\u002Ftd>\n\u003Ctd>流水查询\u003C\u002Ftd>\n\u003Ctd>记录每次入库、出库、盘点调整、初始化的变动数量、变动前后库存、关联单据号\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>盘点管理\u003C\u002Ftd>\n\u003Ctd>创建盘点单、录入实盘、完成盘点\u003C\u002Ftd>\n\u003Ctd>账面数量 vs 实盘数量自动计算差异；盘点完成自动调整库存并生成&quot;盘点调整&quot;流水\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"4.4-%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.4-%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86\" aria-hidden=\"true\">\u003C\u002Fa> 4.4 系统管理\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模块\u003C\u002Fth>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>用户管理\u003C\u002Ftd>\n\u003Ctd>用户列表、启用\u002F禁用\u003C\u002Ftd>\n\u003Ctd>支持关键词搜索，展示用户名、昵称、角色（管理员\u002F员工）、状态\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>公告管理\u003C\u002Ftd>\n\u003Ctd>公告增删改查\u003C\u002Ftd>\n\u003Ctd>类型（系统公告\u002F活动通知）、置顶、草稿\u002F发布状态、发布时间\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>个人中心\u003C\u002Ftd>\n\u003Ctd>修改资料、头像上传、修改密码\u003C\u002Ftd>\n\u003Ctd>昵称\u002F邮箱\u002F手机号可编辑，头像上传支持 JPG\u002FPNG\u002FWebP\u002FGIF\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"%E4%BA%94%E3%80%81%E9%A1%B9%E7%9B%AE%E4%BA%AE%E7%82%B9\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%BA%94%E3%80%81%E9%A1%B9%E7%9B%AE%E4%BA%AE%E7%82%B9\" aria-hidden=\"true\">\u003C\u002Fa> 五、项目亮点\u003C\u002Fh2>\n\u003Ch3 id=\"5.1-%E5%87%BA%E5%85%A5%E5%BA%93%E5%AE%A1%E6%A0%B8%E9%97%AD%E7%8E%AF\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.1-%E5%87%BA%E5%85%A5%E5%BA%93%E5%AE%A1%E6%A0%B8%E9%97%AD%E7%8E%AF\" aria-hidden=\"true\">\u003C\u002Fa> 5.1 出入库审核闭环\u003C\u002Fh3>\n\u003Cp>入库单\u002F出库单提交后进入&quot;待审核&quot;状态，管理员审核通过后，系统在\u003Cstrong>同一事务内\u003C\u002Fstrong>完成：更新库存数量、增减库位已用容量、生成库存流水，并记录审核人与审核时间；驳回、作废状态全程可追溯。\u003C\u002Fp>\n\u003Ch3 id=\"5.2-%E5%BA%93%E5%AD%98%E9%A2%84%E8%AD%A6%E6%9C%BA%E5%88%B6\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.2-%E5%BA%93%E5%AD%98%E9%A2%84%E8%AD%A6%E6%9C%BA%E5%88%B6\" aria-hidden=\"true\">\u003C\u002Fa> 5.2 库存预警机制\u003C\u002Fh3>\n\u003Cp>每个商品可设置独立预警值，库存管理页对低于预警值的商品以红色高亮展示，数据看板同步统计预警商品数，便于仓管人员及时补货。\u003C\u002Fp>\n\u003Ch3 id=\"5.3-%E7%9B%98%E7%82%B9%E5%B7%AE%E5%BC%82%E5%A4%84%E7%90%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.3-%E7%9B%98%E7%82%B9%E5%B7%AE%E5%BC%82%E5%A4%84%E7%90%86\" aria-hidden=\"true\">\u003C\u002Fa> 5.3 盘点差异处理\u003C\u002Fh3>\n\u003Cp>盘点单按&quot;库位 + 商品&quot;录入实盘数量，系统自动计算与账面数量的差异（差异 = 实盘 - 账面）；完成盘点时自动将库存修正为实盘数量，并生成&quot;盘点调整&quot;库存流水，保证账实相符。\u003C\u002Fp>\n\u003Ch3 id=\"5.4-%E5%BA%93%E5%AE%B9%E8%81%94%E5%8A%A8\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.4-%E5%BA%93%E5%AE%B9%E8%81%94%E5%8A%A8\" aria-hidden=\"true\">\u003C\u002Fa> 5.4 库容联动\u003C\u002Fh3>\n\u003Cp>库位维护最大容量与已用容量，出入库审核通过时自动增减已用容量，为库位规划与容量预警提供数据基础。\u003C\u002Fp>\n\u003Ch3 id=\"5.5-%E5%8D%95%E5%8F%B7%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.5-%E5%8D%95%E5%8F%B7%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90\" aria-hidden=\"true\">\u003C\u002Fa> 5.5 单号自动生成\u003C\u002Fh3>\n\u003Cp>\u003Ccode>OrderNoUtils\u003C\u002Fcode> 统一生成入库单号（RK+日期+序列）、出库单号（CK+日期+序列）、盘点单号（PD+日期+序列），规则统一、全局唯一。\u003C\u002Fp>\n\u003Ch3 id=\"5.6-%E8%A7%92%E8%89%B2%E6%9D%83%E9%99%90%E5%8F%8C%E5%B1%82%E6%8E%A7%E5%88%B6\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.6-%E8%A7%92%E8%89%B2%E6%9D%83%E9%99%90%E5%8F%8C%E5%B1%82%E6%8E%A7%E5%88%B6\" aria-hidden=\"true\">\u003C\u002Fa> 5.6 角色权限双层控制\u003C\u002Fh3>\n\u003Cp>前端按角色动态渲染菜单与操作按钮，后端通过 \u003Ccode>@RequireRole\u003C\u002Fcode> 注解对写操作\u002F敏感操作二次鉴权，权限模型清晰，安全可靠。\u003C\u002Fp>\n\u003Ch3 id=\"5.7-%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83%E6%80%A7\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#5.7-%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83%E6%80%A7\" aria-hidden=\"true\">\u003C\u002Fa> 5.7 代码规范性\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>全局统一异常处理（\u003Ccode>GlobalExceptionHandler\u003C\u002Fcode>），错误码枚举化管理（\u003Ccode>ErrorCode\u003C\u002Fcode>）\u003C\u002Fli>\n\u003Cli>分页统一返回结构（\u003Ccode>PageResult\u003C\u002Fcode>），前端无需适配不同接口\u003C\u002Fli>\n\u003Cli>统一响应体（\u003Ccode>Result&lt;T&gt;\u003C\u002Fcode>），所有接口返回格式一致\u003C\u002Fli>\n\u003Cli>所有数据库操作使用 Lambda 表达式构建条件，避免字段名硬编码\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"%E5%85%AD%E3%80%81%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E5%85%AD%E3%80%81%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84\" aria-hidden=\"true\">\u003C\u002Fa> 六、项目结构\u003C\u002Fh2>\n\u003Cdiv class=\"code-block-wrapper\">\u003Cdiv class=\"code-block-header\">\u003Cbutton class=\"code-copy-btn\" data-code=\"warehouse-management-system\u002F\n├── db\u002F                                 # 数据库初始化脚本目录\n│   └── init.sql                        # 建表 + 初始数据脚本（17 张表）\n├── springboot\u002F                         # 后端 Spring Boot 项目\n│   ├── pom.xml                         # Maven 配置（Spring Boot 3.2.3）\n│   └── src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002F\n│       ├── common\u002F                     # 公共模块\n│       │   ├── annotation\u002F             # @Anonymous、@RequireRole 注解\n│       │   ├── constant\u002F               # 安全常量\n│       │   ├── enums\u002F                  # UserRoleEnum、UserStatusEnum\n│       │   ├── exception\u002F              # 全局异常处理 + 错误码枚举\n│       │   ├── BaseEntity.java         # 基础实体（id + 时间戳）\n│       │   ├── LogicDeleteEntity.java  # 逻辑删除实体\n│       │   ├── PageResult.java         # 统一分页结果\n│       │   ├── Result.java             # 统一响应体\n│       │   └── UserContext.java        # 用户上下文工具\n│       ├── config\u002F                     # 配置类\n│       │   ├── CorsConfig.java         # 跨域配置\n│       │   ├── JacksonConfig.java      # JSON 序列化配置\n│       │   ├── MetaObjectHandlerConfig.java # 字段自动填充\n│       │   ├── MybatisPlusConfig.java  # MP 分页 + 逻辑删除\n│       │   └── WebMvcConfig.java       # 拦截器注册 + 静态资源映射\n│       ├── controller\u002F\n│       │   ├── admin\u002F                  # 12 个后台控制器（仓库\u002F库区\u002F商品\u002F供应商\u002F客户\u002F\n│       │   │                           #   入库\u002F出库\u002F库存\u002F盘点\u002F统计\u002F用户\u002F公告）\n│       │   ├── front\u002F                  # AuthController（登录）、UploadController（上传）\n│       │   └── FileController.java     # 文件访问\n│       ├── dto\u002F                        # 数据传输对象（10 个业务模块，19 个 DTO）\n│       ├── entity\u002F                     # 17 个实体类\n│       ├── mapper\u002F                     # 17 个 Mapper 接口\n│       ├── security\u002F                   # JWT 认证 + 角色鉴权\n│       │   ├── JwtUtils.java           # Token 生成\u002F解析\n│       │   ├── JwtAuthInterceptor.java # 认证拦截器\n│       │   └── RoleAuthInterceptor.java# 角色鉴权拦截器\n│       ├── service\u002F                    # 13 个业务服务类\n│       ├── utils\u002F                      # OrderNoUtils（单号生成）、PasswordUtils\n│       ├── vo\u002F                         # 视图对象（11 个业务模块，19 个 VO）\n│       └── MainApplication.java        # 启动类\n│   └── src\u002Fmain\u002Fresources\u002F\n│       ├── application.yml             # 主配置文件\n│       └── mapper\u002F                     # MyBatis XML 自定义 SQL（如有）\n├── vue\u002F                                # 前端 Vue 3 项目\n│   └── src\u002F\n│       ├── api\u002F                        # API 封装（admin 后台 12 个模块 + 统一出口 + auth\u002Fcommon）\n│       ├── assets\u002Fstyles\u002Fmain.css      # 全局样式（工业仓储主题：深青绿 + 琥珀）\n│       ├── layouts\u002FAdminLayout.vue     # 后台布局（侧边栏 + 顶栏）\n│       ├── router\u002Findex.js             # 路由配置（后台 14 个页面 + 登录页）\n│       ├── stores\u002Fuser.js              # Pinia 用户状态\n│       ├── utils\u002F                      # request.js（Axios 拦截器）、file.js\n│       ├── views\u002F                      # 后台页面（14 个）+ Login.vue\n│       └── main.js                     # 入口文件\n└── uploads\u002F                            # 文件上传目录（头像等）\n\" title=\"复制代码\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode class=\"language-text\">\u003Cspan class=\"line\">\u003Cspan>warehouse-management-system\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── db\u002F                                 # 数据库初始化脚本目录\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── init.sql                        # 建表 + 初始数据脚本（17 张表）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── springboot\u002F                         # 后端 Spring Boot 项目\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   ├── pom.xml                         # Maven 配置（Spring Boot 3.2.3）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── common\u002F                     # 公共模块\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── annotation\u002F             # @Anonymous、@RequireRole 注解\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── constant\u002F               # 安全常量\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── enums\u002F                  # UserRoleEnum、UserStatusEnum\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── exception\u002F              # 全局异常处理 + 错误码枚举\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── BaseEntity.java         # 基础实体（id + 时间戳）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── LogicDeleteEntity.java  # 逻辑删除实体\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── PageResult.java         # 统一分页结果\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── Result.java             # 统一响应体\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   └── UserContext.java        # 用户上下文工具\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── config\u002F                     # 配置类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── CorsConfig.java         # 跨域配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── JacksonConfig.java      # JSON 序列化配置\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── MetaObjectHandlerConfig.java # 字段自动填充\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── MybatisPlusConfig.java  # MP 分页 + 逻辑删除\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   └── WebMvcConfig.java       # 拦截器注册 + 静态资源映射\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── controller\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── admin\u002F                  # 12 个后台控制器（仓库\u002F库区\u002F商品\u002F供应商\u002F客户\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   │                           #   入库\u002F出库\u002F库存\u002F盘点\u002F统计\u002F用户\u002F公告）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── front\u002F                  # AuthController（登录）、UploadController（上传）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   └── FileController.java     # 文件访问\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── dto\u002F                        # 数据传输对象（10 个业务模块，19 个 DTO）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── entity\u002F                     # 17 个实体类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── mapper\u002F                     # 17 个 Mapper 接口\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── security\u002F                   # JWT 认证 + 角色鉴权\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── JwtUtils.java           # Token 生成\u002F解析\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── JwtAuthInterceptor.java # 认证拦截器\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   └── RoleAuthInterceptor.java# 角色鉴权拦截器\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── service\u002F                    # 13 个业务服务类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── utils\u002F                      # OrderNoUtils（单号生成）、PasswordUtils\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── vo\u002F                         # 视图对象（11 个业务模块，19 个 VO）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       └── MainApplication.java        # 启动类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── src\u002Fmain\u002Fresources\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── application.yml             # 主配置文件\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       └── mapper\u002F                     # MyBatis XML 自定义 SQL（如有）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── vue\u002F                                # 前端 Vue 3 项目\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── src\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── api\u002F                        # API 封装（admin 后台 12 个模块 + 统一出口 + auth\u002Fcommon）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── assets\u002Fstyles\u002Fmain.css      # 全局样式（工业仓储主题：深青绿 + 琥珀）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── layouts\u002FAdminLayout.vue     # 后台布局（侧边栏 + 顶栏）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── router\u002Findex.js             # 路由配置（后台 14 个页面 + 登录页）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── stores\u002Fuser.js              # Pinia 用户状态\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── utils\u002F                      # request.js（Axios 拦截器）、file.js\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── views\u002F                      # 后台页面（14 个）+ Login.vue\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       └── main.js                     # 入口文件\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└── uploads\u002F                            # 文件上传目录（头像等）\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>",[],[]]