7.2 实战训练(积分发放)

前言

当我们碰到一个全新的场景,除了写代码以外也可以通过设计器来完成,大致步骤如下:

  1. 分析业务场景,规划对应的模型并通过模型设计器进行配置

  2. 通过界面设计器,设计出必要管理页面

  3. 通过流程设计器,设计对应业务流程

  4. 通过数据可视化,设计相应的数据看板

场景说明

本节通过例子完成一个积分成本分摊的业务场景

积分支出:谁受益谁支出原则+导购手动确认原则,通过门店应用的积分规则,来实现自动化+手动积分形式实现

案例背景

某家具企业经营多种家具类型,不同系列不同品类分事业部经营。

注:

独立门店:只能售卖本事业部下的商品;

融合门店:可以售卖多事业部下的商品;

需求:需要建立一套积分规则,遵循谁受益谁支出原则+导购手动确认原则;通过门店应用的积分规则,来实现自动化+手动积分。

7.2 实战训练(积分发放)

场景一

导购a邀请老客户c通过裂变分享新客户x在独立门店1下单。系统根据独立门店1的积分规则,自动发放积分给老客户c和新客户x,积分由国一事业部承担。

7.2 实战训练(积分发放)

场景二

融合门店1导购b邀请老客户d裂变分享新客户y在融合门店下单。该订单可能涉及多个事业部,由导购b手动选择最大量值的积分规则进行发放

7.2 实战训练(积分发放)

场景三

独立门店1的导购a邀请老客户c裂变分享新客户z在独立门店2下单。系统根据独立门店2的积分规则,来计算积分值,自动发放老客户c和新客户z的积分,积分由国二事业部

7.2 实战训练(积分发放)

实战训练

Step1 分析业务场景规划对应模型

本场景下涉及基础对象模型包括:事业部、门店、导购、会员等

  1. 事业部:它是积分成本的载体

  2. 门店:类型分为独立门店和融合门店,独立门店必须隶属于一个事业部,同时配置默认积分发放规则,融合门店可能属于多个事业部当发生积分发放时,需要店员手工选择成本事业部和积分发放规则

  3. 导购员:导购员必须隶属于一个门店等

  4. 会员:消费者需要记录它隶属导购员,以及是由哪个会员推荐过来的等

涉及业务对象模型包括:积分发放规则,积分发放记录,邀请下单记录

  1. 积分发放规则:会员积分发放规则,对应邀请老客的积分发放规则等

  2. 积分发放记录:本次发放积分、本次发放积分规则、发放对象(会员)、成本事业部、关联门店、关联导购、关联老客(可空)、关联下单记录编码等

  3. 邀请下单记录:导购、下单会员、下单门店、商品信息、下单金额等

对应模型如下:

7.2 实战训练(积分发放)

模型 设计器呈现 自定义字段列表 关系字段说明 说明
事业部 7.2 实战训练(积分发放) 事业部负责人(文本)
门店列表(o2m)
与门店建立o2m绑定关系,绑定时选择双向绑定,双向绑定意思是在事业部这边建立o2m到门店的关系字段,在门店那边建立m2o的关系字段 关系字段需要在有对方模型的情况下再建,比如事业部中的门店列表则是再后面追加新增的
门店 7.2 实战训练(积分发放)
7.2 实战训练(积分发放)
导购列表(o2m)
事业部(m2o)
默认积分发规则(m2o)
门店类型(枚举)
分别与事业部、导购、积分发放规则建立m2o、o2m、m2o关系 门店类型:需要先建对应的数据字典
导购 7.2 实战训练(积分发放) 绑定用户(m2o)
门店(m2o)
是否离职(布尔型)
与门店建立m2o关系 1. 绑定用户,用于后续业务流程设计中的填写规则
2. 打马赛克的忽略,其他场景测试用
会员 7.2 实战训练(积分发放) 会员累计积分(浮点数)
推荐客户(m2o)
所属于导购员(m2o)
是否为新客(布尔型)
与导购、会员建立m2o关系 1. 会员m2o的字段是自关联用于存储推荐会员
2. 打马赛克的忽略,其他场景测试用
积分发放规则 7.2 实战训练(积分发放) 推荐客户发放比例(浮点数)
发放倍数(整数)
积分发放记录 7.2 实战训练(积分发放) 最终发放积分(浮点数)
关联积分规则(m2o)
事件编码(文本)
推荐导购员(m2o)
推荐会员(m2o)
关系门店(m2o)
成本事业部(m2o)
会员(m2o)
成本事业部名称(文本)
会员名称(文本)
与积分发放规则、导购员、会员、门店、事业部建立m2o关系 1. 会员有两个m2o,分别用户记录发放会员和发放会员的推荐会员也就是老客
2. 事件编码用户维护触发本次积分发放记录产生的源头单据编码如:邀请下单记录的编码
邀请下单记录 7.2 实战训练(积分发放) 成本事业部(m2o)
选择积分发放规则(m2o)
下单门店(m2o)
购买商品(文本)
下单金额(整数)
会员(m2o)
导购(m2o)
与成本事业部、积分发放规则、下单门店、会员、导购等建立m2o的关系 1. 会员、下单门店、导购属于必要信息
2. 成本事业部、积分发放规则是业务流程中自动计算回填的数据

Step3 利用界面设计器,设计出必要的管理页面

以事业部为例,构建管理页面。其他模型依次按例子建立管理页面

  1. 进入界面设计器,应用选择全员营销,模型选择事业部,点击添加页面下的直接创建

7.2 实战训练(积分发放)

  1. 设置页面标题、模型(自动带上可切换)、业务类型(运营管理后续会扩展其他类型)、视图类型(表单)后点击确认按钮进入事业部表单设计页面

7.2 实战训练(积分发放)

  1. 进入页面设计器,对事业部表单页面进行设计(更多细节介绍,请参考界面设计产品使用手册)

    a. 左侧为物料区:分为组件、模型。

    ⅰ. 【组件】选项卡下为通用物料区,我们可以为页面增加对应布局、字段(如同在模型设计器增加字段)、动作、数据、多媒体等等

    ⅱ. 【模型】选项卡下为页面对应模型的自定义字段、系统字段、以及模型已有动作

    b. 中间是设计区域

    c. 右侧为属性面板,在设计区域选择中组件会显示对应组件的可配置参数

7.2 实战训练(积分发放)

  1. 在左侧【组件】选项卡下,拖入布局组件【分组】,并设置组件【标题属性】为基础信息

7.2 实战训练(积分发放)

  1. 在左侧【组件】选项卡下,再次拖入布局组件【分组】,并设置组件【标题属性】为门店列表

7.2 实战训练(积分发放)

  1. 在左侧【模型】选项卡下,分别把自定义字段中的【事业部负责人】和系统字段中的【名称】拖入【基础信息】分组,把自定义字段中的【门店列表】字段拖入门店列表分组

7.2 实战训练(积分发放)

  1. 在设计区域切换【门店列表】展示组件为【表格】

7.2 实战训练(积分发放)

  1. 此时【门店列表】展示形式变成了表格形式,选中【门店列表】组件,会发现左侧【模型】选项卡下的当前模型切换成了【门店】,同时我们在右属性面板区置空其【标题属性】

7.2 实战训练(积分发放)

  1. 设计区选中【门店列表】的表格组件,分别把自定义字段中的【默认积分发规则】、【门店类型】、【导购列表】和系统字段中的【名称】拖入【门店列表】表格组件的表格字段设计区

7.2 实战训练(积分发放)

  1. 设计区选中【门店列表】的表格组件的【创建】按钮,点击【打开弹窗】设计关系字段【门店】的新增页面

7.2 实战训练(积分发放)

11.分别把自定义字段中的【默认积分发规则】、【门店类型】和系统字段中的【名称】拖入门店的新增页面设计区

7.2 实战训练(积分发放)

  1. 选中弹出框中【取消】取消按钮,设置其【按钮样式】属性为【次要按钮】

7.2 实战训练(积分发放)

  1. 关闭弹出框,回到主设计区

7.2 实战训练(积分发放)

  1. 设计区选中【门店列表】的表格组件的【删除】按钮,设置其【按钮样式】属性为【次要按钮】,【二次确认】属性打开

7.2 实战训练(积分发放)

  1. 设计区选中【门店列表】的表格组件中操作列的【编辑】按钮,点击【打开弹窗】设计关系字段【门店】的编辑页面,

    a. 分别把自定义字段中的【默认积分发规则】、【门店类型】和系统字段中的【名称】拖入门店的新增页面设计区。

    b. 选中弹出框中【取消】取消按钮,设置其【按钮样式】属性为【次要按钮】

    c. 把门店类型展示组件切换为【单选框】

    d. 关闭弹出框

7.2 实战训练(积分发放)

  1. 设计区选择非【门店列表】组件如基础信息,模型切换为主模型【事业部】,在左侧【模型】选项卡下,把动作分类下的提交类型【创建】动作拖入中间设计区的动作区

7.2 实战训练(积分发放)

  1. 选择中展示名为【确定】的创建动作按钮,在右侧属性面板中设置:是否隐藏属性为【条件隐藏】,隐藏条件为【id非空】

7.2 实战训练(积分发放)

  1. 在左侧【模型】选项卡下,把动作分类下的提交类型【更新】动作拖入中间设计区的动作区

7.2 实战训练(积分发放)

  1. 选择中展示名为【确定】的更新动作按钮,在右侧属性面板中设置:是否隐藏属性为【条件隐藏】,隐藏条件为【id为空】。之所以同时拖入【创建】和【更新】动作并都命名为确认,是期望这个页面同时可以做为新增页面也可以做为编辑页面,只不过要通过条件隐藏来设置按钮的出现规则

7.2 实战训练(积分发放)

  1. 在左侧【组件】选项卡下,把动作分类下的【客户端动作】拖入中间设计区的动作区

7.2 实战训练(积分发放)

  1. 选择设计区【客户端动作】,在右侧属性面板中设置:动作名称为【返回】,客户端行为为【返回上一个页面】并点击保存

7.2 实战训练(积分发放)

  1. 选择设计区【返回】动作,在右侧属性面板中设置:按钮样式为【返回】,【二次确认】属性打开并设置提示文字为【返回页面操作将不被保存】,可以点击预览二次确认看效果

7.2 实战训练(积分发放)

  1. 点击【发布】按钮,页面成功发布,每发布一次会有一个例子版本,可以通过历史版本进行恢复

7.2 实战训练(积分发放)

  1. 点击右上角历史版本图标,进入历史版本查看页面

7.2 实战训练(积分发放)

  1. 在历史版本页面可以选择对应历史版本记录,并通过【恢复此版本】来完成页面的历史版本切换

7.2 实战训练(积分发放)

  1. 接下来我们为事业部模型创建表格管理页面,入口同编辑页面。设置页面标题、模型(自动带上可切换)、业务类型(运营管理后续会扩展其他类型)、视图类型(表格)后点击确认按钮进入事业部表格设计页面

7.2 实战训练(积分发放)

  1. 进入页面设计器,对事业部表格页面进行设计(更多细节介绍,请参考界面设计产品使用手册)

7.2 实战训练(积分发放)

  1. 在左侧【模型】选项卡下,分别把自定义字段中的【事业部负责人】和系统字段中的【名称】拖入表格组件的表格字段设计区

7.2 实战训练(积分发放)

  1. 在左侧【组件】选项卡下,把动作分类下的【跳转动作】拖入中间设计区的动作区,并在右侧属性面板中设置动作名称为【新增】,数据控制类型为【不进行数据处理】,打开方式为【当前窗口打开】,动作跳转页面为【事业部编辑】页面,并点击保存

7.2 实战训练(积分发放)

  1. 在左侧【组件】选项卡下,把动作分类下的【跳转动作】拖入中间设计区的行内动作区,并在右侧属性面板中设置动作名称为【编辑】,数据控制类型为【处理单条数据】,打开方式为【当前窗口打开】,动作跳转页面为【事业部编辑】页面,并点击保存

7.2 实战训练(积分发放)

  1. 在左侧【模型】选项卡下,把动作分类下的【删除】拖入中间设计区的动作区,并在右侧属性面板中设置动作名称为【删除】,按钮样式为【次要按钮】,【二次确认】属性打开

7.2 实战训练(积分发放)

  1. 点击右上角【显示母版】进入页面最终展示形式,点击添加菜单项,并在输入框中输入【事业部管理】

7.2 实战训练(积分发放)

  1. 点击菜单右侧设置图标,选择【绑定已有页面】,进行菜单与页面的绑定操作

7.2 实战训练(积分发放)

  1. 在绑定页面中,模型选择【事业部】,视图选择【事业部管理】,点击确认按钮提交

7.2 实战训练(积分发放)

  1. 拖动【事业部管理】菜单到【积分管理】父菜单下

7.2 实战训练(积分发放)

  1. 最后别忘了点击右上角【发布】按钮对【事业部管理】表格页面进行发布,回到界面设计器首页查看刚刚建好的两个页面

7.2 实战训练(积分发放)

  1. 以事业部为例分别对门店、导购、会员、积分发放规则、积分发放记录、邀请下单记录等模型进行页面设计,这里不再累赘,请按照自身学习需要,尝试进行界面设计

Step4 通过流程设计器,设计对应业务流程

我们先来整理下核心流程即:邀请下单流程

7.2 实战训练(积分发放)

Step4.1 创建导购邀请下单记录触发流程

  1. 进入流程设计器,点击【创建】按钮

注意:流程中需要获取关系类型的字段(如:O2O、O2M、M2O或M2M),这种类型都是复杂的对象字段,除关联字段(一般为ID)以外的字段,需要通过【数据获取】节点单独获取【关系字段】的对象数据。所以在流程设计中经常会用到【数据获取】节点

7.2 实战训练(积分发放)

  1. 左上角编辑流程名称为【导购邀请下单触发流程】,点击第一个【触发】节点,触发方式选择模型触发,模型选择【导购邀请下单】,触发场景选择【新增数据时】,点击该节点的【保存】按钮

7.2 实战训练(积分发放)

  1. 点击流程图节点间的【+】图标选择增加【获取数据】节点,或者拖动左侧物料区【获取数据】到特定的【+】图标

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 点击【获取数据】,在右侧属性面板中设置【获取数据条数】为单条,选择模型为【导购】,点击【筛选条件】的【{X}】图标,进行数据获取的条件设置

7.2 实战训练(积分发放)

  1. 选择条件字段为【ID】条件操作符为【等于】,条件为变量的导购字段的ID。当上下文只有一个变量时默认不需要选择,这里默认的是【触发[导购邀请下单记录]】,设置好以后点击确认,回到属性面板设置【未获取到数据时执行方式】为【终止流程】,并点击节点【保持】按钮

7.2 实战训练(积分发放)

  1. 再增加一个【获取数据】节点,在右侧属性面板中设置

    a. 【获取数据条数】为单条,选择模型为【会员】

    b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【导购邀请下单记录】的会员关系字段的ID字段。因为上下文中存在多个变量时需要选择对应变量,跟获取导购数据有点区别,在获取导购数据时,上下文中只有此次【导购邀请下单记录】所以不需要选择对应变量,设置好以后点击【确认】按钮

    c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

    d. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

  1. 新增【条件分支】,分别对分支1和分支2进行条件设置,条件为:【获取数据[会员]】的关系字段【所属导购员】的【ID】字段一个设置【为空】,一个设置【非空】

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 在【条件分支】的【获取数据[会员]】的关系字段【所属导购员】的【ID】字段【为空】的分支流程中,增加【更新数据】节点,在右侧属性面板中

    a. 【更新模型】选择【获取数据[会员]】

    b. 【字段列表】点击【创建】按钮

    ⅰ. 字段选择 更新【所属导购员】的【ID】

    ⅱ. 表达式设置为:【获取数据[导购]】的【ID】,点击【确认】按钮。

最终完成对【获取数据[会员]】的关系字段【所属导购员】的【ID】字段等于【获取数据[导购]】的【ID】字段的设置,最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

  1. 再增加一个【获取数据】节点,在右侧属性面板中设置

    a. 【获取数据条数】为单条,选择模型为【门店】

    b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【导购邀请下单记录】的关系字段【下单门店】的【ID】字段。设置好以后点击【确认】按钮

    c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

    d. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

  1. 新增【条件分支】,分别对分支1和分支2进行条件设置,条件为:【获取数据[门店]】的【门店类型】字段一个设置为【独立门店】,一个设置【融合门店】。这里条件值没有选择上下文变量,而是选择了选项。选项即字段对应的枚举值,在这个例子中【门店类型】字段类型为数据字典

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 在【条件分支】的【获取数据[门店]】的【门店类型】字段等于【独立门店】的分支流程中,增加【更新数据】节点,在右侧属性面板中

    a. 【更新模型】选择【触发[导购邀请下单]】

    b. 【字段列表】点击【创建】按钮

    ⅰ. 字段选择 更新【成本事业部】的【ID】

    ⅱ. 表达式设置为:【获取数据[门店]】的关系字段【事业部】的【ID】字段,点击【确认】按钮。

    c. 【字段列表】点击【创建】按钮

    ⅰ. 字段选择 更新【选择积分发放规则】的【ID】

    ⅱ. 表达式设置为:【获取数据[门店]】的关系字段【默认积分发放规则】的【ID】字段,点击【确认】按钮。

最终完成的【触发[导购邀请下单]】更新设置

a. 【触发[导购邀请下单]】的关系字段【成本事业部】的【ID】字段等于【获取数据[门店]】的关系字段【事业部】的【ID】字段

b. 【触发[导购邀请下单]】的关系字段【选择积分发放规则】的【ID】字段等于【获取数据[门店]】的关系字段【默认积分发放规则】的【ID】字段

c. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 在【条件分支】的【获取数据[门店]】的【门店类型】字段等于【融合门店】的分支流程中,增加【填写】节点,在右侧属性面板中

    a. 【填写模型】选择模型为【触发[导购邀请下单]】

    b. 【选择视图】选择【流程中邀请下单】,这里需要专门为流程增加一个表单页面,因为正常的【导购邀请下单】的表单不需要填写积分发放规则和成本部门

    c. 填写人,选择导购的【绑定用户】,同时加上角色为【超级管理员】方便测试

    d. 数据权限除了【积分发放规则】和【成本部门】需要编辑外,其他都为查看

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 再增加一个【获取数据】节点,在右侧属性面板中设置

    a. 【获取数据条数】为单条,选择模型为【积分发放规则】

    b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【触发[导购邀请下单]】的关系字段【选择积分发放规则】的【ID】字段。设置好以后点击【确认】按钮

    c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

    d. 最后点击节点【保持】按钮。

  2. 再增加一个【获取数据】节点,在右侧属性面板中设置

a. 【获取数据条数】为单条,选择模型为【事业部】

b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【触发[导购邀请下单]】的关系字段【成本事业部】的【ID】字段。设置好以后点击【确认】按钮

c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

d. 最后点击节点【保持】按钮。

  1. 增加【新增数据】节点,在右侧属性面板中设置

    a. 【新增模型】选择模型为【积分发放记录】

    b. 【新增数据的节点】设置为【节点执行完即时增加业务数据】

    c. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择【最终发放积分】

    ⅱ. 表达式设置为:【触发[导购邀请下单]】的【下单金额】字段【乘以】【获取数据[积分发放规则]】的【发放倍数】字段,点击【确认】按钮。

    d. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【积分发放规则】的【ID】

    ⅱ. 表达式设置为:【获取数据[积分发放规则]】的【ID】字段,点击【确认】按钮。

    e. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择【事件编码】

    ⅱ. 表达式设置为:【触发[导购邀请下单]】的【编码】字段,点击【确认】按钮。

    f. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【推荐导购员】的【ID】

    ⅱ. 表达式设置为:【获取数据[导购]】的【ID】字段,点击【确认】按钮。

    g. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【推荐会员】的【ID】

    ⅱ. 表达式设置为:【获取数据[会员]】的关系字段【推荐客户】的【ID】字段,点击【确认】按钮。

    h. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【关系门店】的【ID】

    ⅱ. 表达式设置为:【获取数据[门店]】的【ID】字段,点击【确认】按钮。

    i. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【成本事业部】的【ID】

    ⅱ. 表达式设置为:【触发[导购邀请下单]】的关系字段【成本事业部】的【ID】字段,点击【确认】按钮。

    j. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【会员】的【ID】

    ⅱ. 表达式设置为:【获取数据[会员]】的【ID】字段,点击【确认】按钮。

    k. 【新增数据】点击【创建】按钮 -- 为数据分析预留字段

    ⅰ. 字段选择【成本事业部名称】

    ⅱ. 表达式设置为:【获取数据[事业部]】的【名称】字段,点击【确认】按钮。

    l. 【新增数据】点击【创建】按钮 -- 为数据分析预留字段

    ⅰ. 字段选择【会员名称】

    ⅱ. 表达式设置为:【获取数据[会员]】的【名称】字段,点击【确认】按钮。

    m. 最终完成的【新增数据[积分发放记录]】新增设置,最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 新增【子流程节点】,这里之所以设置为子流程,就跟上面我们业务流程图中画的一样,【导购邀请下单触发流程】已经完成,会员积分累加从业务上来说是独立的,不影响【导购邀请下单触发流程】。我们在右侧属性面板中设置

    a. 【选择模型】设置为【新增数据[积分发放记录]】

    b. 【选择子流程】设置为【创建新的子流程】,并设置子流程名称为【会员积分累加子流程】

    c. 【子流程执行方式】设置为【子流程和后续节点同时进行】

    d. 最后点击节点【保持】按钮

    7.2 实战训练(积分发放)

Step4.2 创建积分发放记录子流程:积分累积子流程

  1. 点击子流程的跳转图标,跳转到子流程的设计页面。子流程的触发模型由主流程指定,无法更改

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 新增【条件分支】,分别对分支1和分支2进行条件设置,条件为:【触发[积分发放记录]】的【最终发放积分】字段一个设置为小于等于100,一个设置大于100。这里条件值没有选择上下文变量,而是选择了数值,因为【最终发放积分】字段为数字的普通类型,所以可以直接填数字

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 在【条件分支】的【触发[积分发放记录]】的【最终发放积分】字段一个设置为大于100的分支流程中,增加【审批】节点,在右侧属性面板中

    a. 【审批模型】选择模型为【触发[积分发放记录]】

    b. 【审批人】选择角色为【超级管理员】

    c. 【数据】权限全部设置为【查看】

    d. 其他配置项默认,需要了解更多请查看产品使用手册

    e. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

  1. 再增加一个【获取数据】节点,在右侧属性面板中设置

    a. 【获取数据条数】为单条,选择模型为【会员】

    b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量的关系字段【会员】的【ID】字段。设置好以后点击【确认】按钮。当上下文只有一个变量时默认不需要选择,这里默认的是【触发[积分发放记录]】

    c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

    d. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

  1. 增加【更新数据】节点,在右侧属性面板中

    a. 【更新模型】选择【获取数据[会员]】

    b. 【字段列表】点击【创建】按钮

    ⅰ. 字段选择 更新【会员累计积分】字段

    ⅱ. 表达式设置为:【获取数据[会员]】的【会员累计积分】字段【加上】【触发[积分发放记录]】的【最终发放积分】字段,点击【确认】按钮。

最终完成的【触发[导购邀请下单]】更新设置

a. 【获取数据[会员]】的【会员累计积分】字段等于自身【加上】【触发[积分发放记录]】的【最终发放积分】字段

b. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 新增【条件分支】,分别对分支1和分支2进行条件设置,条件为:【获取数据[会员]】的关系字段【推荐客户】的【ID】字段一个设置为【为空】,一个设置为【非空】。

7.2 实战训练(积分发放)

  1. 在【条件分支】的【获取数据[会员]】的关系字段【推荐客户】的【ID】字段非空,增加【获取数据】节点,在右侧属性面板中

    a. 【获取数据条数】为单条,选择模型为【积分发放规则】

    b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【触发[积分发放记录]】的关系字段【关联积分规则】的【ID】字段。设置好以后点击【确认】按钮。

    c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

    d. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

  1. 在【条件分支】的【获取数据[会员]】的关系字段【推荐客户】的【ID】字段非空,增加【获取数据】节点,在右侧属性面板中

    a. 【获取数据条数】为单条,选择模型为【会员】

    b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【获取数据[会员]】的关系字段【推荐客户】的【ID】字段。设置好以后点击【确认】按钮。

    c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】

    d. 最后点击节点【保持】按钮。

    e. 编辑节点名字为【推荐客户】

7.2 实战训练(积分发放)

  1. 在【条件分支】的【获取数据[会员]】的关系字段【推荐客户】的【ID】字段非空,增加【新增数据】节点,在右侧属性面板中

    a. 【新增模型】选择模型为【积分发放记录】

    b. 【新增数据的节点】设置为【节点执行完即时增加业务数据】

    c. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择【最终发放积分】

    ⅱ. 表达式设置为:【触发[积分发放记录]】的【最终发放积分】字段【乘以】【获取数据[积分发放规则]】的【推荐客户发放比例】字段,点击【确认】按钮。

    d. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【积分发放规则】的【ID】

    ⅱ. 表达式设置为:【获取数据[积分发放规则]】的【ID】字段,点击【确认】按钮。

    e. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择【事件编码】

    ⅱ. 表达式设置为:【触发[积分发放记录]】的【事件编码】字段,点击【确认】按钮。

    f. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【推荐导购员】的【ID】

    ⅱ. 表达式设置为:【触发[积分发放记录]】关系字段【推荐导购员】的【ID】,点击【确认】按钮。

    g. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【关系门店】的【ID】

    ⅱ. 表达式设置为:【触发[积分发放记录]】的关系字段【关系门店】的【ID】,点击【确认】按钮。

    h. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【成本事业部】的【ID】

    ⅱ. 表达式设置为:【触发[积分发放记录]】的关系字段【成本事业部】的【ID】字段,点击【确认】按钮。

    i. 【新增数据】点击【创建】按钮

    ⅰ. 字段选择关系字段【会员】的【ID】

    ⅱ. 表达式设置为:【推荐客户[会员]】的【ID】字段,点击【确认】按钮。

    j. 【新增数据】点击【创建】按钮 -- 为数据分析预留字段

    ⅰ. 字段选择【成本事业部名称】

    ⅱ. 表达式设置为:【触发[积分发放记录]】的【成本事业部名称】字段,点击【确认】按钮。

    k. 【新增数据】点击【创建】按钮 -- 为数据分析预留字段

    ⅰ. 字段选择【会员名称】

    ⅱ. 表达式设置为:【推荐客户[会员]】的【名称】字段,点击【确认】按钮。

    l. 最终完成的【新增数据[积分发放记录]】新增设置,最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 增加【更新数据】节点,在右侧属性面板中

    a. 【更新模型】选择【推荐客户[会员]】

    b. 【字段列表】点击【创建】按钮

    ⅰ. 字段选择 更新【会员累计积分】字段

    ⅱ. 表达式设置为:【推荐客户[会员]】的【会员累计积分】字段【加上】【新增[积分发放记录]】的【最终发放积分】字段,点击【确认】按钮。

最终完成的【触发[导购邀请下单]】更新设置

a. 【推荐客户[会员]】的【会员累计积分】字段等于自身【加上】【新增[积分发放记录]】的【最终发放积分】字段

b. 最后点击节点【保持】按钮。

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

Step4.3 两个流程确保都保持并发布过

流程列表页查看流程状态图标

7.2 实战训练(积分发放)

Step5 基础数据管理

流程前提:基础数据通过管理页面已经建好,后面看实战效果的基础数据为:

  1. 事业部:国一事业部、国二事业部

  2. 门店:国一独立门店01(绑定:国一事业部,积分发放规则:正常发放)、国二独立门店01(绑定:国二事业部,积分发放规则:双倍发放)、融合门店01

  3. 导购员:国一独立门店导购-cpc(绑定:国一独立门店01)、国二独立门店导购-温振(绑定:国二独立门店01)、融合门店导购-梦瑶(绑定:融合门店01)

  4. 会员:会员1001(导购绑定:融合门店导购-梦瑶)、会员1002(导购绑定:国二独立门店导购-温振、推荐会员绑定:会员1001)、会员1003(导购绑定:未绑定、推荐会员绑定:会员1001)、

  5. 积分发放规则:双倍发放(发放倍数:2、推荐客户发放比例:0.5)、正常发放(发放倍数:1、推荐客户发放比例:0.2)

Step6 走业务流程,看效果

Step6.1 用例设计1

新建【导购邀请下单记录】如下:

  1. 门店选择:国一独立门店01

  2. 导购选择:国一独立门店导购-cpc

  3. 会员选择:会员1003

  4. 商品填写:测试商品1001

  5. 下单金额:12

  6. 事件编码:O1001

期望结果:

  1. 【会员1003】的【所属于导购员】字段更新为:【国一独立门店导购-cpc】

  2. 【会员1003】的【会员累计积分】字段在原有值上增加【12】

  3. 【会员1001】的【会员累计积分】字段在原有值上增加【2.4】

  4. 新增两条【积分发放记录】

会员 关系门店 最终发放积分 关联积分规则 事件编码 推荐导购员 成本事业部 推荐会员
会员1003 国一独立门店01 12 正常发放 O1001 国一独立门店导购-cpc 国一事业部 会员1001
会员1001 国一独立门店01 2.4 正常发放 O1001 国一独立门店导购-cpc 国一事业部

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

Step6.2 用例设计2

新建【导购邀请下单记录】如下:

  1. 门店选择:融合门店01

  2. 导购选择:融合门店导购-梦瑶

  3. 会员选择:会员1001

  4. 商品填写:测试商品1002

  5. 下单金额:12

  6. 事件编码:O1002

期望结果:

  1. 出现填写节点,【选择积分发放规则】:双倍发放,【成本事业部】:国二事业部

  2. 【会员1001】的【会员累计积分】字段在原有值上增加【24】

  3. 新增一条【积分发放记录】

会员 关系门店 最终发放积分 关联积分规则 事件编码 推荐导购员 成本事业部 推荐会员
会员1001 融合门店01 24 双倍发放 O1002 融合门店导购-梦瑶 国二事业部

7.2 实战训练(积分发放)

Step6.3 用例设计3

新建【导购邀请下单记录】如下:

  1. 门店选择:国二独立门店01

  2. 导购选择:国二独立门店导购-温振

  3. 会员选择:会员1002

  4. 商品填写:测试商品1003

  5. 下单金额:60

  6. 事件编码:O1003

期望结果:

  1. 出现审批,审批通过

  2. 【会员1002】的【会员累计积分】字段在原有值上增加【120】

  3. 【会员1001】的【会员累计积分】字段在原有值上增加【60】

  4. 新增两条【积分发放记录】

会员 关系门店 最终发放积分 关联积分规则 事件编码 推荐导购员 成本事业部 推荐会员
会员1002 国二独立门店01 120 双倍发放 O1003 国二独立门店导购-温振 国二事业部 会员1001
会员1001 国二独立门店01 60 双倍发放 O1003 国二独立门店导购-温振 国二事业部

7.2 实战训练(积分发放)

Step6.4 用例设计4

新建【导购邀请下单记录】如下:

  1. 门店选择:国一独立门店01

  2. 导购选择:国二独立门店导购-温振

  3. 会员选择:会员1002

  4. 商品填写:测试商品1003

  5. 下单金额:60

  6. 事件编码:O1004

期望结果:

  1. 【会员1002】的【会员累计积分】字段在原有值上增加【60】

  2. 【会员1001】的【会员累计积分】字段在原有值上增加【12】

  3. 新增两条【积分发放记录】

会员 关系门店 最终发放积分 关联积分规则 事件编码 推荐导购员 成本事业部 推荐会员
会员1002 国一独立门店01 60 正常发放 O1004 国二独立门店导购-温振 国一事业部 会员1001
会员1001 国一独立门店01 12 正常发放 O1004 国二独立门店导购-温振 国一事业部

7.2 实战训练(积分发放)

Step7 通过数据可视化,设计相应的数据看板

Step7.1 事业部积分发放分析

  1. 进入数据可视化【图表】设计页,点击创建一级分组,在分组栏中会多出一行,并填入积分发放综合分析

7.2 实战训练(积分发放)

  1. 鼠标放到一级分组上会出现增加二级分组和删除入口,点击图标“+”,创建两个二级分组分别为:积分发放分析和订单下单分析

7.2 实战训练(积分发放)

  1. 选中二级分组【积分发放分析】出现【添加图标】操作入口,点击添加图表

7.2 实战训练(积分发放)

  1. 在创建图表弹出框中

    a. 【图表标题】填入【事业部积分成本分析】

    b. 【模型】选择【积分发放记录】

    c. 【方法】选择【根据条件分页查询记录列表和总数】

    d. 最后点击节点【确定】按钮

7.2 实战训练(积分发放)

  1. 上一步点击【确定】按钮后自动进入【事业部积分成本分析】图表设计页面。

    a. 【维度】选择【成本事业部名称】

    b. 【数值】选择【最终发放积分】

    c. 点击右上角【保存】,并点击左上角【< 事业部积分成本分析】返回图表管理入口

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 点击右上角【发布】按钮,即完成一个图表的开发。更多图表设计细节请查阅对应的产品使用手册
    7.2 实战训练(积分发放)

  2. 当有业务数据的时候展示

7.2 实战训练(积分发放)

Step7.2 会员积分分析

  1. 选中二级分组【积分发放分析】出现【添加图标】操作入口,点击添加图表。在创建图表弹出框中

    a. 【图表标题】填入【会员累计获取积分分析】

    b. 【模型】选择【积分发放记录】

    c. 【方法】选择【根据条件分页查询记录列表和总数】

    d. 最后点击节点【确定】按钮

7.2 实战训练(积分发放)

  1. 进入【会员累计获取积分分析】图表设计页面。

    a. 【维度】选择【会员名称】

    b. 【数值】选择【最终发放积分】

    c. 【对比】选择【成本事业部名称】

    d. 点击右上角【保存】,并点击左上角【< 会员累计获取积分分析】返回图表管理入口

7.2 实战训练(积分发放)

  1. 点击右上角【发布】按钮,即完成该图表的开发

7.2 实战训练(积分发放)

Step7.3 商品下单金额分析

  1. 选中二级分组【订单下单分析】出现【添加图标】操作入口,点击添加图表。在创建图表弹出框中

    a. 【图表标题】填入【商品购买金额分析】

    b. 【模型】选择【导购邀请下单】

    c. 【方法】选择【根据条件分页查询记录列表和总数】

    d. 最后点击节点【确定】按钮

7.2 实战训练(积分发放)

  1. 进入【商品购买金额分析】图表设计页面。

    a. 图表形式切换为【饼图】

    b. 【维度】选择【购买商品】

    c. 【数值】选择【下单金额】

    d. 右侧属性面板设置

    ⅰ. 【展示标签】为【开启】

    1. 勾选【购买商品】

    ⅱ. 【展示图例】为【开启】

    1. 勾选【购买商品】

    2. 勾选【数值】

    e. 点击右上角【保存】,并点击左上角【< 会员累计获取积分分析】返回图表管理入口

7.2 实战训练(积分发放)

  1. 点击右上角【发布】按钮,即完成该图表的开发

7.2 实战训练(积分发放)

Step7.4 设计综合分析报表

  1. 进入数据可视化【报表】设计页,点击创建一、二级分组,分别为【积分分析报表】、【积分综合报表】,选中二级分组【积分综合报表】出现【添加图标】操作入口,在分组栏中会多出一行,并填入积分发放综合分析

7.2 实战训练(积分发放)

  1. 选中二级分组【积分发放综合分析】,点击右上角【选择图表】,把上面建的三张图表都选上

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

  1. 选完图表后,拖动图表大小和所在位置即完成了报表的设计,最后别完了点击【发布】按钮

7.2 实战训练(积分发放)

7.2 实战训练(积分发放)

Step7.5 把报表挂载到页面上并邦上菜单

简单描述:新建名为【积分综合分析页】的页面,选择模型【积分发放记录】,页面类型设置为【详情】,并在左侧【组件】选项卡下找到【报表】组件,拖入到设计器区并在其属性面板中选择展示报表。新建菜单【积分数据分析】并绑定已有页面【积分综合分析页】,最后点击【发布】按钮

这里新建页面不过多赘诉,更多细节可参阅产品操作手册

7.2 实战训练(积分发放)

Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9334.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

Like (1)
史, 昂's avatar史, 昂数式管理员
Previous 2024年5月23日
Next 2024年5月23日

相关推荐

  • 3.5.7.3 自定义布局

    布局是什么 在系统中,布局决定了母版内的页面元素,一个页面可以由多个组件进行组装,布局可以根据视图类型来替换。 默认布局范围: 图3-5-7-36 默认布局范围 作用场景 系统内置了多个布局组件,这些组件适用于全局、某个应用或某个页面,提供了灵活的布局定制选项。这些组件根据不同类型的视图进行了默认的组装,这也是选择了视图类型后,页面能够呈现的原因。当然,这些默认的组装是可以被覆盖、新增和添加新组件的。 使用registerLayout进行自定义布局 开发者在使用这些布局组件时,应该遵循公司的规范进行统一的调整。自定义布局组件的使用可通过 registerLayout 实现。registerLayout 的第一个参数是代表布局的 XML,第二个参数是不同的选项维度,默认包含以下维度: viewType: 视图类型 module: 视图模型所在模块 moduleName: 视图模型所在模块名称 model: 视图模型编码 modelName: 视图模型名称 viewName: 视图名称 actionName: 动作名称 inline: 是否内嵌视图(子视图特有) ttype: 模型字段类型(子视图特有) relatedTtype: 关联模型字段类型(子视图特有) field: 字段(子视图特有) 需要注意的是,动作可以是A模块下的a模型,这个动作可以打开B模块下的b模型的视图,module、moduleName、model、modelName应该填b模型对应的值,只不过大部分场景我们都是本模型的动作打开本模型的视图,所以这些场景拿动作所在模型填这些值也可以这些纬度也可以通过查看TS的定义查看 全局 在系统中,我们可以通过指定视图类型来决定某一类视图的全局布局。以表格为例,当第二个入参为 { viewType: ViewType.Table } 时,代表了替换了系统内所有表格的布局样式。 示例工程目录 以下是需关注的工程目录示例,main.ts更新导入./layout,layout/index.ts更新导出./tableLayout: 图3-5-7-37 全局纬度注册布局工程目录示例 示例代码 import {registerLayout, ViewType} from '@kunlun/dependencies' /** * 把系统内所有表格类型视图的全局动作放入搜索区域 * * 移动actionBar布局至外层 * <element widget="actionBar" slot="actionBar" slotSupport="action"> * <xslot name="actions" slotSupport="action" /> * </element> * */ const registerGlobalTableLayout = () => { return registerLayout(`<view type="TABLE"> <element widget="actionBar" slot="actionBar" slotSupport="action"> <xslot name="actions" slotSupport="action" /> </element> <pack widget="group"> <view type="SEARCH"> <element widget="search" slot="search" slotSupport="field" /> </view> </pack> <pack widget="group" slot="tableGroup"> <element widget="table" slot="table" slotSupport="field"> <element widget="expandColumn" slot="expandRow" /> <xslot name="fields" slotSupport="field" /> <element widget="rowActions" slot="rowActions" slotSupport="action" /> </element> </pack> </view>`, { viewType: ViewType.Table }) } registerGlobalTableLayout() 图3-5-7-38 全局纬度注册布局代码示例 效果 图3-5-7-39 全局纬度注册布局效果示例 应用 在系统中,我们可以通过指定视图类型和模块名称来替换某一类视图在特定模块下的全局布局。以表格为例,当第二个入参为 { viewType: ViewType.Table, moduleName: ‘resource’ } 时,代表了替换了资源应用下所有表格的布局样式,而其他应用仍使用默认布局 import {registerLayout, ViewType} from '@kunlun/dependencies' const registerModuleTableLayout = () => { return registerLayout(`<view type="TABLE"> <element widget="actionBar" slot="actionBar" slotSupport="action"> <xslot name="actions" slotSupport="action" /> </element> <pack widget="group"> <view type="SEARCH"> <element widget="search" slot="search" slotSupport="field" /> </view> </pack> <pack…

    2024年5月23日
    1.6K00
  • 数据字典

    1. 什么是数据字典 数据字典是一些固定字典项的集合,可作为多选或单选的选项,例如人员性别、员工属相、杭州市下属的行政区等都是数据字典。 选择一个应用/模块下的一个小模块,可以查看其中包含的自定义字典(自建的数据字典)和系统字典。可以通过导入或添加创建自定义字典。 2. 数据字典基本操作 删除:系统字典不支持删除,无法批量删除自定义数据字典,若数据字典已经被字段、页面等引用时,也无法删除这个数据字典。 隐藏/可见:自定义字典、系统字典都可以操作隐藏和可见,隐藏和可见不影响数据字典在字段、页面等处的使用。 查看引用关系:点击查看引用关系,展开弹窗,展示该数据字典和字段、视图的引用关系。 修改:若数据字典已经被引用,无法删除其中的字典项。若无引用关系则可以任意修改。 3. 数据字典导入 点击“导入数据字典”按钮,弹出窗口,可根据图中引导进行数据字典的导入。 在经典模式下,导入数据字典会新建数据字典。 在专家模式下,数据字典导入的模板中包含字段“字典编码”,若导入的字典编码不存在则会新建数据字典,若导入的字典编码已存在则会修改字典编码的设置,新建和修改的动作会校验是否符合规范。 4. 数据字典创建 4.1 专家模式(低代码模式) 字典项类型有“二进制、文本、整数”三种可选,选择二进制时,字典项值需要选择存储在数据库二进制中的第几位。系统根据字典项值去查找字典项名称,因此字典项值不可重复。 数据字典的api名称、代码名称、描述可不填,部分系统会赋默认值。 字典项中字典项名称和字典项值必填,api名称和字典项描述不填系统会赋默认值。 4.2 经典模式(无代码模式) 经典模式下只需要填写字典名称,添加字典项即可。系统会自动将字典项类型设置为“二进制”,并将字典项按照创建的先后顺序设置字典项值的位数。字典项类型、字典项值释义可参照专家模式的解释。

    2024年6月20日
    2.8K00
  • 4.1.14 Search之非存储字段条件

    search默认查询的是模型的queryPage函数,但我们有时候需要替换调用的函数,这个特性会在下个版本支持。其核心场景为当搜索条件中有非存储字段,如果直接用queryPage函数的rsql拼接就会报错,所以非存储字段不会增加在rsql中。本文介绍一个比较友好的临时替代方案。 非存储字段条件(举例) Step1 为PetTalent新增一个非存储字段unStore @Field(displayName = "非存储字段测试",store = NullableBoolEnum.FALSE) private String unStore; 图4-1-14-1 为PetTalent新增一个非存储字段unStore Step2 修改PetTalent的Table视图的Template 在标签内增加一个查询条件 <field data="unStore" /> 图4-1-14-2 修改PetTalent的Table视图的Template Step3 重启看效果 进入宠物达人列表页,在搜索框【非存储字段测试】输入查询内容,点击搜索跟无条件一致 Step4 修改PetTalentAction的queryPage方法 package pro.shushi.pamirs.demo.core.action; …… 引入依赖类 @Model.model(PetTalent.MODEL_MODEL) @Component public class PetTalentAction { ……其他代码 @Function.Advanced(type= FunctionTypeEnum.QUERY) @Function.fun(FunctionConstants.queryPage) @Function(openLevel = {FunctionOpenEnum.API}) public Pagination<PetTalent> queryPage(Pagination<PetTalent> page, IWrapper<PetTalent> queryWrapper){ QueryWrapper<PetTalent> queryWrapper1 = (QueryWrapper<PetTalent>) queryWrapper; Map<String, Object> queryData = queryWrapper.getQueryData(); String unStore = (String) queryData.get(LambdaUtil.fetchFieldName(PetTalent::getUnStore)); if (StringUtils.isNotEmpty(unStore)) { //转换查询条件 queryWrapper1.like( 图4-1-14-3 修改PetTalentAction的queryPage方法 Step5 重启看效果 在搜索框【非存储字段测试】输入查询内容,跟通过【达人】字段搜索的效果是一致的 图4-1-14-4 示例效果

    2024年5月23日
    2.3K00
  • 3.2.2 启动前端工程

    本节核心是带大家直观的感受下我们上节构建的demo模块,并搭建前端环境为后续学习打下基础 一、使用vue-cli构建工程 ##demo-front是项目名,可以替换成自己的 vue create –preset http://ss.gitlab.pamirs.top/:qilian/pamirs-archetype-front4 –clone demo-front –registry http://nexus.shushi.pro/repository/kunlun/ 图3-2-2-1 使用vue-cli构建工程 如果启动报错,清除node_modules后重新npm i mac清除命令:npm run cleanOs windows清除命令: npm run clean 若安装失败,检查本地node、npm、vue对应的版本 图3-2-2-2 检查本地的版本 或者下载前端工程本地运行[oinone-front.zip](oinone-front)(575 KB) 二、启动前端工程 找到README.MD文件,根据文件一步一步操作就行。 找到vue.config.js文件,修改devServer.proxy.pamirs.target为后端服务的地址和端口 const WidgetLoaderPlugin = require('@kunlun/widget-loader/dist/plugin.js').default; const Dotenv = require('dotenv-webpack'); module.exports = { lintOnSave: false, runtimeCompiler: true, configureWebpack: { module: { rules: [ { test: /\.widget$/, loader: '@kunlun/widget-loader' } ] }, plugins: [new WidgetLoaderPlugin(), new Dotenv()], resolveLoader: { alias: { '@kunlun/widget-loader': require.resolve('@kunlun/widget-loader') } } }, devServer: { port: 8080, disableHostCheck: true, progress: false, proxy: { pamirs: { // 支持跨域 changeOrigin: true, target: 'http://127.0.0.1:8090' } } } }; 图3-2-2-3 修改后端服务地址与端口 注:要用localhost域名访问,.env文件这里也要改成localhost。如果开发中一定要出现前后端域名不一致,老版本Chrome会有问题,修改可以请参考https://www.cnblogs.com/willingtolove/p/12350429.html 。或者下载新版本Chrome 进入前端工程demo-front文件目录下,执行 npm run dev,最后出现下图就代表启动成功 图3-2-2-4 前端启动成功提示 使用 http://127.0.0.1:8081/login 进行访问,并用admin账号登陆,默认密码为admin 图3-2-2-5 系统登陆页面 点击左上角进行应用切换,会进入App Finder页面,可以看到所有已经安装的应用,可以对照boot的yml配置文件看。但细心的小伙伴应该注意到了,在App Finder页面出现的应用跟我们启动工程yml配置文件中加载的启动模块数不是一一对应的,同时也没有看到我们demo模块。 图3-2-2-6 已安装应用界面 boot工作的yml文件中加载模块 App Finder的应用 说明 – base- common- sequence- expression 无 模块的application = false,为非应用类的模块 – resource – user – auth – business- message – apps- my_center(show=INACTIVE )- sys_setting (show=INACTIVE ) 有 模块的application = true,为应用类的模块但show=INACTIVE 的则不展示,通过以下方式定义:@Module(show = ActiveEnum.INACTIVE) – demo_core 无 刚建的oinoneDemo工程,默认为false 设计器:无 设计器:无 因为boot中没有加载设计器模块,所以App Finder中的设计器tab选项卡下没有应用 表3-2-2-1 boot工作的yml文件中加载模块及App Finder应用说明 只需要修改oinoneDemo工程的模块定义如下图,那么就可以在App Finder页面看见“oinoneDemo工程”。 图3-2-2-7 修改模块的application属性为true 图3-2-2-8 在App Finder 页面即可看见“OinoneDemo工程” 目前oinone的Demo模块还是一个全空的模块,所以我们点击后会进入一个空白页面。在后续的学习过程中我们会不断完善该模块。 至此恭喜您,前端工程已经启动完成。 三、前端工程结构介绍 ├── public 发布用的目录,index.html入口文件将在这里 │ ├── src 源代码…

    2024年5月23日
    1.9K00
  • 4.1.19 框架之网关协议-后端占位符

    在我们日常开发中会有碰到一些特殊场景,需要由前端来传一些如“当前用户Id”、“当前用户code”诸如此类只有后端才知道值的参数,那么后端占位符就是来解决类似问题的。如前端传${currentUserId},后端会自动替换为当前用户Id。 Step1 后端定义占位符 我们新建一个UserPlaceHolder继承AbstractPlaceHolderParser,用namespace来定义一个“currentUserId”的占位符,其对应值由value()决定为“PamirsSession.getUserId().toString()”,active要为真才有效,priority为优先级 package pro.shushi.pamirs.demo.core.placeholder; import org.springframework.stereotype.Component; import pro.shushi.pamirs.meta.api.session.PamirsSession; import pro.shushi.pamirs.user.api.AbstractPlaceHolderParser; @Component public class UserPlaceHolder extends AbstractPlaceHolderParser { @Override protected String value() { return PamirsSession.getUserId().toString(); } @Override public Integer priority() { return 10; } @Override public Boolean active() { return Boolean.TRUE; } @Override public String namespace() { return "currentUserId"; } } 图4-1-19-1 后端定义占位符 Step2 前端使用后端占位符 我们经常在o2m和m2m中会设置domain来过滤数据,这里案例就是在field中设置来过滤条件,domain="createUid == $#{currentUserId}",注意这里用的是$#{currentUserId} 而不是${currentUserId},这是前端为了区分真正变量和后端占位符,提交的时候会把#过滤掉提交。修改宠物达人表格视图的Template中search部分 <template slot="search" cols="4"> <field data="name" label="达人"/> <field data="petTalentSex" multi="true" label="达人性别"/> <field data="creater" /> <!– <field data="petShops" label="宠物商店" domain="createUid == ${activeRecord.creater.id}"/>–> <field data="petShops" label="宠物商店" domain="createUid == $#{currentUserId}"/> <field data="dataStatus" label="数据状态" multi="true"> <options> <option name="DRAFT" displayName="草稿" value="DRAFT" state="ACTIVE"/> <option name="NOT_ENABLED" displayName="未启用" value="NOT_ENABLED" state="ACTIVE"/> <option name="ENABLED" displayName="已启用" value="ENABLED" state="ACTIVE"/> <option name="DISABLED" displayName="已禁用" value="DISABLED" state="ACTIVE"/> </options> </field> <field data="createDate" label="创建时间"/> <field data="unStore" /> </template> 图4-1-19-2 前端使用后端占位符 Step3 重启看效果 请求上都带上了createUid==${currentUserId} 图4-1-19-3 示例效果

    2024年5月23日
    2.5K00

Leave a Reply

Please Login to Comment