该教程通过讲解开发订单管理的过程,带你逐步理解关联字段、子表、下拉框选项从数据表获取、表单的数据联动等。这些功能会让应用对于终端使用者更友好。

一、预期效果

  1. 订单管理功能

    a. 新增订单时,可以直接选择 已有客户。

    b. 选中客户后,带出客户来源、客户行业、客户地址等。

    c. 产品明细中,录入 产品信息,带出 产品单位、单价。

    d. 自动计算 每个产品的总价,和 订单总价。iShot_2024-08-15_16.42.58.gif

  2. 产品管理功能

    a. 选择一个产品大类后,产品小类的选项随之变动。iShot_2024-08-15_16.54.31.gif

二、思路解析

上述场景比上一篇 开发客户管理功能要复杂些,涉及到多个模型。开发步骤上,在第一步配置模型时,需要进一步分析。具体如下:

  1. 配置模型:

    a. 拆分模型:分析背后需要用几个数据模型存储数据。

    b. 建立模型之间的关系:分析数据模型之间的关系是怎样的。

    
    i.  强关联:todo 详情介绍什么是强关联
        
        1.  当前表的 1 条数据关联另一张表的多条数据(即 1:n) 使用**「子表」字段**
            
        2.  当前表的 1 条数据关联另一张表的 1 条数据(即 1:1)使用**「关联数据」字段**
            
    ii.  弱关联:使用【下拉框】字段,**配置选项从数据表获取**。todo 详情介绍什么是弱关联
        
    iii.  更弱的关联:模型中不建议关联关系,在页面中前端事件处理,或者后端事件处理。
        
    iv.  【关联数据】、【子表】使用起来更方便,但相对于 【下拉框】字段,更耗性能。推荐尽量使用【下拉框】字段。
        
  2. 配置页面:

    a. 配置页面布局

    b. 配置页面逻辑,即配置组件事件。

三、开发过程

(一)拆分模型

该场景需要 4 个模型:

  • 「产品类型表」模型: 存储有哪些产品大类、产品小类以及排序。该模型的示例数据如下:image.png
  • 「产品表」模型:存储有哪些产品,以及产品的基本信息。该模型的示例数据如下:image.png
  • 「订单表」模型:存储有哪些订单,以及订单的基本信息
  • 「订单明细表」模型:存储每个订单的产品明细。

「订单表」与 「订单明细表」关系很紧密,查看和录入时常常都在一起。示例数据如下:

image.png

为了方便初学者理解。我们每新建一个模型,建立关联关系后,就新建一个对应的页面,并录入几条数据,让初学者直观地感受下关联关系对其他地方的影响。

(二)「产品类型表」模型及页面

「产品类型表」是最基础的模型,不需要与其他模型关联。可以按上一篇开发客户管理功能的方式,在简易模式中创建数据管理功能时,一次性连续地创建好「产品类型表」模型和「产品类型配置」页面。

这里演示另一种在专业模型下的创建流程:

1.新建 模型》数据表

image.png

2.门户》默认门户,新建菜单

菜单配置中,选择数据管理功能。

image.png

3.录入示例数据

image.png

(三)「产品表」及页面

「产品表」与「产品类型表」有关系,体现在录入/编辑产品时需要选择产品类型。推荐使用【下拉框】字段,配置「数据来源于其他表」。「产品表」具体配置如下:

1.模型配置

  • 「产品大类」配置:

image.png

  • 「产品小类」配置:「产品小类」要配置数据筛选,筛选条件如下,才会实现选中一个「产品大类」后,「产品小类」的选项随之变动。这里配置的意思是: 从 「产品类型表」中取「产品小类」,且只筛选 「产品类型表」中「产品大类」= 当前表即「产品表」中的「产品大类」。

image.png

  • 注意:将「产品名称」设置为「数据标题」。

iShot_2024-08-16_09.06.38.gif

2.页面演示

iShot_2024-08-15_16.54.31.gif

(四)「订单表」之一:与「客户表」的关系

1.模型配置

录入订单时,不仅是需要选择已有的客户,还需要展示客户的多个字段,甚至按客户表的字段筛选订单(比如按搜索某个地区的客户订单量)。这属于强关联场景。另外,一个订单最多只能关联一个客户。所以这里使用「关联数据」字段。「订单表」的模型配置如下:(这里先忽略产品明细)

image.png

2.页面演示

演示效果如下

iShot_2024-08-16_10.59.21.gif

《开发客户管理功能》教程,新建数据管理功能,选择「订单表」。再转换为自定义功能。基于此,我们通过很简单的配置就能实现上述的效果。这就是「关联数据」字段的优势。

  • 表单组件,都可以直接在关联字段「客户」下方勾选「客户表」模型的字段。

image.png

  • 表格组件、筛选器组件,包括其他组件,也是同样的操作配置。

image.pngimage.png

  • 上述配置完后,使用时,会发现如下图所示:选择客户时,只显示了数字,没有显示客户名称。

image.png因为这里显示的是「客户表」模型配置的数据标题,所以需要在「客户表」模型中设置「客户名称」为数据标题。操作如下:image.png

(五)「订单表」之二:与「订单明细表」的关系

  • 从「订单明细表」的视角看,查看「订单明细表」的一行数据时,也需要能查看「订单表」的字段信息。 一条「订单明细」也最多只能关联一个「订单」。所以需要在「订单明细表」中新建「关联数据」字段(字段命名为「关联订单」),关联「订单表」。

image.png

  • 从「订单表」的视角看,查看/编辑「订单」时,需要也能查看/编辑「订单明细」。这也是强关联,且一个「订单」需要关联多个「订单明细」。所以需要在「订单表」中新建「子表」,关联「订单明细表」。具体配置如下:

image.png

(六)「订单明细表」

「订单明细」中,需要选择「产品」,后续也会需要按「订单」的多个字段筛选/统计「订单明细」。所以推荐使用「关联数据」字段。配置如下:

image.png

注意:

  1. 虽然「产品表」中有「单位」、「单价」字段,通过关联数据字段「产品」就能直接查看「产品单位」、「单价」,但如果这样实现,后续「产品表」中的产品价格、单位调整后,已有的订单的产品价格、单价都会及时更新,影响历史数据。所以这里,在「产品表」中新建「单位」、「单价」字段存储成交订单这一刻的信息。(如果有更多产品字段想要保留历史状态的信息,同理)
  2. 虽然「总价」可以设置行内公式为 数量*单价追求极致性能的话(特别是评估模型可能数据量很大、需要多处、多层被关联时),推荐少使用行内功能,通过前端组件事件计算得到最终结果,存储到数据库中,这样后续查数据时,不用每次及时去计算「总价」。具体配置操作,请往下看。

(七)实现编辑「订单」时的数据联动

回顾最终效果,接下来要实现最后一步:

  • 产品明细中,录入 产品信息,带出 产品单位、单价。
  • 自动计算 每个产品的总价,和 订单总价。

iShot_2024-08-15_16.42.58.gif

a.打开表单组件配置面板后,可以通过如下两种方式进入子表配置面板:

image.png

b.依次将「单位」、「单价」、「总价」设置为 仅可见。

image.png

c.开启「产品」、「数量」字段值改变后事件。以「产品」字段为例,操作如下。

image.png

d.配置事件逻辑

image.png

image.png

注意:子表行数据删除、复制时,也要更新下订单总价的值。

image.png

e.最后将主表中的「订单总价」设置为:仅可见。

image.png

进一步了解极态云,体验产品?

请访问 极态云官网


极态云官方账号
1 声望0 粉丝

JIT 技术,为专业开发全面提速!极态云(jit)是一个基于全新软件开发理论(面向元素开发方法)、全新编程框架、全新开发工具、全新部署运行平台的企业级软件系统开发与运行平台,极大简化了应用系统的开发、部署...