蓝云ERP3.0项目开发笔记-------------Day05

2023-11-23 11:50

本文主要是介绍蓝云ERP3.0项目开发笔记-------------Day05,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

采购申请功能完善


一、需求分析
  • 实现下拉表格选择供应商
  • 实现前端商品表格的添加与删除
  • 实现实现选择商品后自动显示出商品的价格及编号
  • 实现根据输入的商品数量计算某类商品的总金额
  • 实现根据用户选择的所有商品及每种商品的采购数量,计算出订单的合计
  • 扩展后台订单管理的保存订单功能,实现业务逻辑
  • 解决双向关联,订单信息转换JSON时出现的StackOverFlowException
二、代码过程
1、创建order_add.html文件,引入 Easyui样式,并编写添加订单商品的数据表格,文件内容如下:

在这里插入图片描述

2、编写order_add.js文件,编写采购订单申请页面的数据表格初始化代码,如下:

在这里插入图片描述

3、以上代码编写完成后效果如下:

在这里插入图片描述

4、动态的将数据表格增加一行,需要修改order_add.js文件,代码实现如下:
  • 为添加商品按钮添加事件绑定如下:

    在这里插入图片描述
    调用的是数据表格的方法:
    参数一:appendRow方法,为数据表格添加一行
    参数二:该行的num和money的 初始值

5、实现表格的可编辑,需要为每一列添加一个editor属性,实现表格的可编辑
  • 添加列属性:eidtor

editor属性的API:
在这里插入图片描述
为order_add.js中的每一列添加该属性:
在这里插入图片描述
完成以上操作后,表格仍然无法编辑,原因是:没有开启某行的可编辑状态

  • datagrid数据表格的,开启某行编辑状态的方法:

开启数据表格关于可编辑的API(传入要编辑行的索引):
在这里插入图片描述
创建一个JS的全局变量,记录当前正在编辑的行:
在这里插入图片描述
在开启编辑之前,关闭上一个正在编辑的行,此时前边定义的记录当前编辑行的变量就有了作用,每次点击添加按钮时,都关闭上一行正在编辑状态的行:
在这里插入图片描述
实现效果如下:
在这里插入图片描述

6、实现表格中的下拉菜单,选择商品
  • 修改orders_add.js文件,为商品列添加editor编辑器,具体代码如下:

在这里插入图片描述
运行结果如下:
在这里插入图片描述

7、为表格中的单元格赋值,选择一个商品后,将其单价与编号显示到表格中
  • 为商品选择下拉列表绑定onSelect事件,当商品被选择后,将其其他相关信息赋值到表格

    下拉列表的onSelect事件的API如下:
    在这里插入图片描述
    当商品被选择时,参数record会接收到选择的对象的所有相关信息

  • 若想为某个字段赋值,首先需要获取其编辑器,获取编辑器代码如下:

    获取字段编辑器的API如下:
    在这里插入图片描述
    封装获取编辑器的方法,因为其有两个参数,一个是行索引,一个是字段名,因为我们都是获取正在编辑行的编辑器,所以封装的获取编辑器的方法不需要传入要编辑的行索引,代码如下:
    在这里插入图片描述
    为商品编号添加字段编辑器,并且设置为不可编辑字段:
    在这里插入图片描述
    为商品选择的下拉菜单添加onSelect事件:
    在这里插入图片描述
    运行结果如下:
    在这里插入图片描述

8、根据用户选择的商品,与要采购的个数,计算该商品的金额,并且计算出合计
  • 编写计算金额的方法,并为数量输入框绑定键盘弹起keyup事件,完成用户边输入数量,边计算金额:

    编写计算金额的JS方法:
    在这里插入图片描述
    绑定事件,到表格中价格及数量编辑框中,实现键盘按下即计算金额:
    绑定事件的方法:在这里插入图片描述
    选择商品时,绑定自动计算金额
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

  • 添加删除一行的方法,实现删除新创建的商品订单

    编写删除方法的函数:
    在这里插入图片描述
    编写格式化器,在每行最后一列添加删除商品的超链接,页脚除外
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

  • 自动计算合计

    实现思路是:获取表格中的所有数据,循环读取获取到的数据的金额money字段,进行求和。
    首先编写一个sum的求合计的方法:
    在这里插入图片描述
    在选择商品的事件中,添加求合计方法:
    在这里插入图片描述
    子键盘按下时,即在绑定事件的方法中,添加计算求合计的方法:
    在这里插入图片描述
    加上以上代码后,仍然不能正确的计算合计,因为编辑状态的行,其所有字段值均为空,若想解决,需要修改计算金额的cal方法如下:
    在这里插入图片描述
    添加最后一行代码的作用是将用户输入的值,赋值给正在编辑行的money列的值
    运行结果如下:
    在这里插入图片描述

9、实现供应商的下拉表格
  • 查看API文档,找到combogrid控件,使用方法类似于数据表格的使用

    首先前端添加form表单,还有input标签如下:
    在这里插入图片描述
    修改JS代码,初始化下拉表格,代码如下:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

10、提交数据到后台
  • 前端代码的实现,主要就是获取每行的数据,然后转换为JSON的字符串格式,之后获取供应商表单的数据,之后为供应商表单的数据添加一个键为json,其值为前边表格中转换为字符串的数据,最后如果提交成功,则清空供应商的选择,以及已添加商品的列表

    在这里插入图片描述

11、后台实现
  • 修改OrdersAction添加json属性,用来接收商品明细的JSON字符串

    在这里插入图片描述

  • 修改Orders实体类,增加订单状态和订单类型的常量定义

    在这里插入图片描述

  • 修改Orders实体类,增加订单明细

    在这里插入图片描述

  • 修改orders.hbm.xml,配置级联更新

    在这里插入图片描述

  • 修改Orderdetail实体类,把ordersuuid替换成Orders,增加明细状态的常量定义

    在这里插入图片描述
    在这里插入图片描述

  • 修改Orderdetail.hbm.xml,删除ordersuuid配置跟Orders的关系

    在这里插入图片描述

  • 修改OrdersAction中的add方法,改成如下代码

    在这里插入图片描述

11、保存订单的业务逻辑
  • 修改OrdersBiz,重写add方法

    在这里插入图片描述

    1. 双向关联引发问题解决
    • 问题描述: 在建立订单和订单明细的双向关联后,订单列表无法正常显示,通过调试控制台信息可以看到,输出json的action报错
      在这里插入图片描述
    • 原因分析

      这是因为fastJson在转换成字符串时反复的循环调用其属性造成的死循环
      -解决方案

      在Orderdetail实体里给orders属性加上注解
      在这里插入图片描述

这篇关于蓝云ERP3.0项目开发笔记-------------Day05的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417737

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部