一、项目简介
本项目是基于 Vue 和 Spring Boot 的公司货物订单管理系统,包括了用户档案、客户档案、货物订单、订单条目、商品档案、供应商档案、系统日志、数据字典、修改密码、个人中心等基本功能。本系统主要面向中小贸易公司管理货物订单所用,降低仓管员的工作量,提高货物订单的运维水平。
二、功能明细
- 用户档案:管理员可以对系统的登录用户进行增删改查、禁用启用操作。
- 客户档案模块:客户是贸易公司的营销对象,管理员可以对客户数据进行增删改查操作。
- 货物订单模块:货物订单是客户向公司下单后的结果,管理员可以对货物订单进行增删改查操作。
- 商品档案模块:商品是客户向公司购买的产品,管理员可以对商品进行增删改查操作。
- 供应商管理模块:供应商是贸易公司的上游客户,管理员可以对供应商进行增删改查操作。
- 系统日志:用户在系统中的行为会自动记录,管理员可以查询系统日志。
- 数据字典:管理员可视化修改其他模块的下拉框数据,无需修改前端代码。
- 修改密码:用户可以根据自己的需要,修改自己账号的登录密码。
- 个人中心:登陆注册、修改密码、维护自己账号的数据等。
三、使用对象
- 贸易公司管理员:管理员可以删改供应商、商品、客户、货物订单,维护公司人员档案等全部功能。
- 计划员:可查询公司的货物订单情况,对未来的采购拟定方案。
- 业务员:可根据客户的购买需求,新增货物订单。
四、技术选型
前端
Vue:Vue 是构建前端界面的核心框架,本系统采用 2.6.14 版本。
View UI:基于 Vue.js2.0 的组件库,本系统采用 4.7.0 版本。
后端
Spring Boot:构建系统核心逻辑的后端框架,本系统采用 2.7.4 版本。
MyBatis / MyBatis Plus:后端连接数据库的框架,本系统采用 3.5.2 版本。
数据库
MySQL:本项目的主数据库,本系统采用 8.0.30 版本。
Redis:本系统采用基于 Windows 版本的 Redis,用于图形验证码和用户菜单权限的临时存储,采用了 5.0.14.1 版本。
开发环境
VsCode:项目前端的开发工具,使用版本为 1.68.0。
IntelliJ IDEA :项目后端的开发工具,使用版本为 2022.2.2。
Jdk:Java 的开发环境,使用版本为 17.0.4.1。
Maven:后端项目的打包工具,使用版本为 3.6.2。
NodeJs:前端项目的开发环境,使用版本为 16.13.0。
五、系统展示
登录页
用户可使用账号 + 密码 + 图形验证码的方式进行登录,如下图所示。
注册页
如果用户没有账号,也可以根据手机号、姓名、密码和图形验证码进行注册,如下图所示。
主页
用户登录成功后,默认进入主页,如下图所示。
当然不同的用户拥有不同的菜单权限,实验室耗材智能运维系统采用基于角色的访问控制模式,采用同学们可以自定义角色,再分配指定的菜单权限,如下图所示。
商品支持模块
公司管理员可以在这里维护商品的数据,商品就是客户向公司购买的产品,比如生活类产品(双面胶等)、食品类产品(果冻、方便面等),如下图所示。
新增编辑商品
新增商品的操作界面如下图所示。
删除商品
用户可以选择一定数量的耗材,点击删除按钮,进行删除,系统会给与二次确认弹框,如下图所示。
供应商模块
供应商是贸易公司的上游客户,管理员可以对供应商进行增删改查操作,主界面如下图所示。
新增供应商
管理员可以新增供应商,需要填入公司名称、地址、联系人、电话等数据,如下图所示。
编辑供应商
管理员可以对供应商的数据进行修改,包括公司名称、地址、联系人、电话等数据,如下图所示。
删除供应商
管理员可以点击每一行数据的红色删除按钮,触发二次确认弹框,再点击确认即可完成供应商删除,如下图所示。
客户档案模块
客户是贸易公司的营销对象,管理员可以对客户数据进行增删改查操作,如下图所示。
新增客户
管理员可以新增客户档案,需要填入客户姓名、身份证号码、联系电话、客户性别,选填备注,如下图所示。
编辑客户数据
管理员可以编辑 CRM 档案,维护客户的各类数据,如姓名、身份证号码、联系电话等,如下图所示。
订单支持模块
货物订单是客户向公司下单后的结果,管理员可以对货物订单进行增删改查操作,订单模块的主界面如下图所示。
业务下订单
业务员可以在这里下订单,即新增贸易订单,如下图所示。
退货
若商品存在质量问题,业务员可以点击主界面的条目维护按钮,申请退货,如下图所示。
业务也可以添加订单的明细数据,完成商品选择和数量输入,点击添加条目按钮即可,如下图所示。
用户管理
公司管理员管理员工,在这里维护,如下图所示。
云盘(文件管理)
公司货物订单管理系统的所有文件都在这里维护,如下图所示。
系统日志
用户的指定操作(后端代码匹配)可以自动化记录日志,汇总在日志模块,如下图所示。
修改密码
用户可以修改自己的密码,如下图所示。
个人门户
用户可以在个人门户中编辑自己的信息,如下图所示。
图表
系统还支持 ANTV 图表,同学们可以根据自己需要,进行二次开发。
六、项目总结
公司货物订单管理系统的投入作用,可以帮助中小贸易公司实现办公自动化,替代掉 Excel 维护的方法,提高货物订单的管理效率。
公司货物订单管理系统基于 Vue 和 SpringBoot 开发,包含了用户档案、客户档案、货物订单、订单条目、商品档案、供应商档案、系统日志、数据字典、修改密码、个人中心功能,面向中小贸易公司管理货物订单,降低仓管员的工作量,提高货物订单的运维水平。
七、核心代码实例
实体类定义
@Data @Entity @DynamicInsert @DynamicUpdate @Table(name = "a_order") @TableName("a_order") @ApiModel(value = "订单信息") public class Order extends ZwzBaseEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "订单编号") private String code; @ApiModelProperty(value = "订单状态") private String status; @ApiModelProperty(value = "订单总价") private BigDecimal sumMoney; @ApiModelProperty(value = "订单生成日期") private String date; @ApiModelProperty(value = "操作人员") private String userName; @ApiModelProperty(value = "订单客户ID") private String customerId; @ApiModelProperty(value = "订单客户姓名") private String customerName; @ApiModelProperty(value = "收货人") private String inName; @ApiModelProperty(value = "收货电话") private String inMobile; @ApiModelProperty(value = "付款人") private String outName; @ApiModelProperty(value = "付款电话") private String outMobile; @ApiModelProperty(value = "备注") private String remark; @Transient @TableField(exist=false) @ApiModelProperty(value = "条目列表") private List<OrderItem> itemList; }
新增贸易单
@RequestMapping(value = "/insert", method = RequestMethod.POST) @ApiOperation(value = "新增贸易单") public Result<Order> insert(Order order) { if(ZwzNullUtils.isNull(order.getCustomerId())) { return ResultUtil.error("订单客户不能为空"); } Customer customer = iCustomerService.getById(order.getCustomerId()); if(customer == null) { return ResultUtil.error("订单客户已被删除"); } User currUser = securityUtil.getCurrUser(); order.setUserName(currUser.getNickname()); order.setCustomerName(customer.getName()); order.setDate(DateUtil.today()); order.setCode(IdUtil.getSnowflake(1, 1).nextId() + ""); iOrderService.saveOrUpdate(order); return new ResultUtil<Order>().setData(order); }
新增条目单(贸易子单)
@RequestMapping(value = "/inOrder", method = RequestMethod.POST) @ApiOperation(value = "新增条目单") public Result<Object> inOrder(@RequestParam String orderId,@RequestParam String commodityId,@RequestParam float number){ Order order = iOrderService.getById(orderId); if(order == null) { return ResultUtil.error("订单不存在"); } Commodity commodity = iCommodityService.getById(commodityId); if(commodity == null) { return ResultUtil.error("商品不存在"); } OrderItem item = new OrderItem(); item.setCode(IdUtil.getSnowflake(1, 1).nextId() + ""); item.setCommodityId(commodity.getId()); item.setCommodityName(commodity.getName()); item.setUnit(commodity.getUnit()); item.setMoney(commodity.getMoney()); item.setDiscount(commodity.getDiscount()); item.setNumber(BigDecimal.valueOf(number)); item.setOrderId(orderId); iOrderItemService.saveOrUpdate(item); // 计算总订单金额 calOrderSumNumber(order); return ResultUtil.success(); }
八、免责声明
- 本项目开源,仅供个人学习使用,遵循 GPL-3.0 开源协议,转发 / 商用授权请联系作者,否则后果自负。
- 作者拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,欢迎一切有价值的商业合作。
- 如有问题,欢迎在评论区留言,看到后会第一时间回复。相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
- 下载本系统代码的用户,必须同意以下内容,否则请勿下载!
- 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
- 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和作者无关,作者对此不承担任何责任。
- 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),作者概不承担任何责任。
- 必须了解使用本软件的风险,作者不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。