组件属性

1. 通用属性

介绍组件和其属性之前,先介绍一些大部分组件通用支持的一些基础属性。

1.2 标题

标题是字段在当前页面的展示名称,标题默认为字段名称,可以修改。

image.png

1.2 占位提示

在未填写内容时,输入框或选择框内的浅色提示文字,仅用于提示,不会影响字段的值。

image.png

1.3 描述说明

一个字段的描述信息,通常用于说明当前字段的范围、注意事项等。描述说明大部分在组件的下方显示,特殊的是,分组的描述说明在标题的左侧。

image.png

1.4 默认值

创建数据时,有些字段大概率都是相同值,可设置默认值,减少添加人员的操作步骤,提高录入数据效率。

image.png

1.5 只读

设为只读时,字段可见,但不可编辑。

除了只读和非只读的对立选项,也可以设置条件只读,在设置的条件下才只读,条件不符合则非只读。

image.png

1.6 禁用

设为禁用时,字段可见,但不可编辑。

除了禁用和非禁用的对立选项,也可以设置条件禁用,在设置的条件下才禁用,条件不符合则非禁用。

image.png

1.7 隐藏

设为隐藏时,字段不可见,也不可编辑。但是在页面设计时,隐藏的组件也会展示,效果如下图。

除了隐藏和非隐藏的对立选项,也可以设置条件隐藏,在设置的条件下才隐藏,条件不符合则非隐藏。

image.png

1.8 必填

控制字段在当前页面是否必填,若设置为必填则在标题前会有红色的*作为标识。除了必填和非必填的对立选项,也可以设置条件必填,在设置的条件下才必填,条件不符合则非必填。

image.png

1.9 标题排列方式

字段的标题可以自定义横向排列还是纵向排列。每个字段组件都支持设置,设置后之间互不影响。除了组件支持自定义,表单、分组、选项卡也可以设置排列方式,对于这种布局容器类组件,设置后会将其容器内的所有组件的标题排列方式都改为所设置的值。

image.png

1.10 宽度

定义在页面中的宽度:占整行的比例,一般可选项有1/4、1/3、1/2、2/3、3/4、1。

其中1/2表示占当前行的一半;1表示占当前行一整行;以此类推。部分组件特殊,如富文本仅支持宽度为1,即占一整行。

image.png

2. 分组

分组是一个布局类组件,类似一个容器,可以把业务含义相近的内容放在这个分组容器内。

2.1 属性

2.1.1 标题

分组可以定义一个标题名称,标题显示在分组左上角,可以不设置标题。

2.1.2 描述说明

分组的描述说明显示在分组标题右侧。

image.png

2.1.3 标题排列方式

分组中的标题排列方式属性并不是控制分组的标题,而是控制分组内组件的标题。设置后对分组内的所有组件生效。

image.png

3. 选项卡

选项卡是一个布局类组件,类似一个容器,每个选项卡可以添加多个选项页,可以把业务含义相近的内容放在选项卡的选项页容器内。

image.png

3.1 选项卡属性

3.1.1 选项页排列方式

选中选项卡,可选择选项卡中的选项页排列方式:水平排列、竖直排列。默认是水平排列,效果如下图。

image.png

3.1.2 标题排列方式

选项卡中的标题排列方式控制选项卡内组件的标题。设置后对选项卡内的所有组件生效。

image.png

3.2 选项页属性

3.2.1 标题

选中选项页,显示选项页的属性设置,选项卡中的每个选项页支持设置标题。

3.2.2 标题排列方式

选项页中的标题排列方式控制选项页内组件的标题。设置后对选项页内的所有组件生效。同一个选项卡,不同选项页之间的标题排列方式可以不同。

image.png

4. 单行文本

单行文本输入框,常用于记录名称、身份证号或其他普通的文字内容。

4.1 创建字段

单行文本仅支持创建「文本」业务类型的字段,填写规则、内容和模型设计器端创建字段一致。

image.png

4.2 表单属性

4.2.1 通用属性

在表单中,单行文本可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

4.2.2 文本类型

文本类型选项为文本或密码。若设置为文本,输入时内容是可见的;若设置为密码,输入时是不可见的密码形态,如下图:

image.pngimage.png

4.2.3 最小/大长度

设置输入框输入内容的长度,输入框会根据设置的值进行校验。

  • 最大长度默认为创建字段时填写的长度,且设置的最大长度不可以大于字段的长度
  • 最小长度默认为空,为空则为不限制最小长度

image.png

image.png

4.2.4 输入格式

设置输入格式为网址或者身份证时,会进行格式的校验

  • 无:默认为无,不会校验内容
  • 网址:进行网址校验
  • 身份证:进行身份证号校验,设置后,需要输入正确的身份证号

image.png

4.2.5 显示计数器

当需要用户关注输入内容长度时,可以开启显示计数器,在输入时会实时显示当前内容的长度。

image.png

4.2.6 显示清除按钮

若开启了清除按钮,则在输入框有内容时,点击清除按钮一键清除已有内容

image.pngimage.png

5. 多行文本

多行文本输入框,常用于记录字数较多的文字,如意见、复杂备注等。

5.1 创建字段

多行文本仅支持创建「多行文本」业务类型的字段,填写规则、内容和模型设计器端创建字段一致。

image.png

5.2 表单属性

5.2.1 通用属性

在表单中,单行文本可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

5.2.2 最小/大长度

设置输入框输入内容的长度,输入框会根据设置的值进行校验。

-最大长度默认为创建字段时填写的长度,且设置的最大长度不可以大于字段的长度

-最小长度默认为空,为空则为不限制最小长度

image.png

5.2.3 显示计数器

当需要用户关注输入内容长度时,可以开启显示计数器,在输入时会实时显示当前内容的长度。

image.png

5.2.5 显示清除按钮

若开启了清除按钮,则在输入框有内容时,点击清除按钮一键清除已有内容

image.png

6. 整数

整数输入框,常用于输入整数的天数、数量等,如果会出现小数,请使用小数组件。

6.1 创建字段

整数仅支持创建「整数」业务类型的字段,填写规则、内容和模型设计器端创建字段一致。

image.png

6.2 表单属性

6.2.1 通用属性

在表单中,整数可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

6.2.2 最小/大值

设置整数输入框输入内容的最值,输入框会根据设置的最值进行校验。

  • 最大值可设置的范围根据字段填写的长度转换,如设置长度为3,则最大值最大不可以超过999

截图

image.png

6.2.3 显示千分位

数字过长时,不便于查看,可开启显示千分位。

image.png

image.png

7. 小数

小数输入框,常用于输入金额、单价等,会出现小数的数值。

7.1 创建字段

小数仅支持创建「浮点型」业务类型的字段,填写规则、内容和模型设计器端创建字段一致。

image.png

7.2 表单属性

7.2.1 通用属性

在表单中,小数可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

7.2.2 最小/大值

设置小数输入框输入内容的最值,输入框会根据设置的最值进行校验。

  • 最大值可设置的范围根据字段填写的长度转换,如设置长度为3,则最大值最大不可以超过999

image.png

7.2.3 保留小数位数

支持设置小数的保留位数,设置后在页面中输入内容时,将进行校验

  • 可设置的保留小数位数不可大于该字段的精度,如字段精度为2,则组件属性中的小数位数最大只能为2;

image.png

image.png

7.2.4 显示千分位

数字过长时,不便于查看,可开启显示千分位。

image.png

8. 下拉单选

从多个选项中下拉选择一个数据,作为数据值。选项可以是关联模型的数据,也可以是数据字典或布尔型开关。

8.1 创建字段

下拉单选支持创建三种业务类型的字段,分别是:多对一、布尔型、数据字典。

image.png

  • 多对一:创建字段时需要选择关联的模型,关联模型的数据将作为下拉选项;
  • 布尔型:下拉选项默认只有是、否;
  • 数据字典:创建字段时需要选择数据字典,其数据字典项将作为下拉选项

8.2 表单属性

8.2.1 通用属性

在表单中,下拉单选可以设置一些通用的属性:标题、占位提示、描述说明、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.pngimage.png

8.2.2 选项类型

可以针对下拉单选的选项进行属性设置,同时,根据字段类型的不同,可以设置的内容也不同。

8.2.2.1 多对一选项

当下拉单选对应的是多对一型字段时,选项类型为“关联模型字段”。可以设置模型中的哪个(些)字段作为选项名称,以及哪些字段可以进行选项搜索。

image.png

  • 选项字段:可以选择关联模型的某个或某些字段。
  • 选择了【创建时间】和【创建人id】作为选项,那么在页面运行下拉选择数据时,创建时间和创建人id的值将会拼接起来作为选项值。如下图
  • 提示:可以在选项字段之间设置常量内容作为间隔,如, - 、 /等

image.png

  • 搜索字段:选项字段中哪些可以作为搜索值,默认会将选中的选项字段都设为搜索字段。
  • 若,将【创建时间】、【创建人id】都选中作为搜索字段,则在选择框中输入“01”时,创建时间或创建人id的值中包含“01”的都将作为搜索结果展示。
  • 若,只将【创建时间】选中作为搜索字段,则在选择框中输入“01”时,仅创建时间的值中包含“01”的将作为搜索结果展示。

8.2.2.2 布尔型选项

当下拉单选对应的是布尔型字段时,选项类型为“布尔型”。选项默认只有“是”、“否”,可以设置选项的排序、选项的默认值、选项是否可见。

image.png

-选项排序:选中选项行并直接拖动选项,即可变化上下位置,属性中的选项顺序将作为运行页面的选项顺序。效果如下图

image.png

image.png

-设置默认值:点击选项前的单选框,则这个选项将作为下拉单选的默认值。

image.png

-设置可见:在选项的右侧,点击隐藏/可见图标,将控制该选项在运行时是否可以展示。

image.png

image.png

8.2.2.3 数据字典选项

当下拉单选对应的是数据字典字段时,选项类型为“数据字典”。选项会展示选择的数据字典中的所有字典项,可以设置选项的排序、选项的默认值、选项是否可见。(属性效果和布尔型选项一致)

image.png

  • 选项排序:选中选项行并直接拖动选项,即可变化上下位置,属性中的选项顺序将作为运行页面的选项顺序。
  • 设置默认值:点击选项前的单选框,则这个选项将作为下拉单选的默认值。
  • 设置可见:在选项的右侧,点击隐藏/可见图标,将控制该选项在运行时是否可以展示。默认所有字典项都可见。

8.2.3 显示清除按钮

若开启了清除按钮,则在选择框有内容时,点击清除按钮一键清除已有内容

image.pngimage.png

9. 下拉多选

从多个选项中下拉选择多个数据,作为数据值。选项可以是关联模型的数据,也可以是数据字典。

9.1 创建字段

下拉多选支持创建三种业务类型的字段,分别是:多对多、一对多、数据字典。

image.png

  • 多对多:创建字段时需要选择关联的模型,关联模型的数据将作为下拉选项;
  • 一对多:创建字段时需要选择关联的模型,关联模型的数据将作为下拉选项;
  • 数据字典:创建字段时需要选择数据字典,其数据字典项将作为下拉选项

9.2 表单属性

9.2.1 通用属性

在表单中,下拉多选可以设置一些通用的属性:标题、占位提示、描述说明、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

9.2.2 选项类型

可以针对下拉多选的选项进行属性设置,同时,根据字段类型的不同,可以设置的内容也不同。

9.2.2.1 多对多、一对多选项

当下拉多选对应的是一对多型字段时,选项类型为“关联模型字段”。可以设置模型中的哪个(些)字段作为选项名称,以及哪些字段可以进行选项搜索。(和关联模型字段型的下拉单选一致)

image.png

  • 选项字段:可以选择关联模型的某个或某些字段。
  • 选择了【创建时间】和【创建人id】作为选项,那么在页面运行下拉选择数据时,创建时间和创建人id的值将会拼接起来作为选项值。如下图
  • 提示:可以在选项字段之间设置常量内容作为间隔,如, - 、 /等

image.png

  • 搜索字段:选项字段中哪些可以作为搜索值,默认会将选中的选项字段都设为搜索字段。
  • 若,将【创建时间】、【创建人id】都选中作为搜索字段,则在选择框中输入“01”时,创建时间或创建人id的值中包含“01”的都将作为搜索结果展示。
  • 若,只将【创建时间】选中作为搜索字段,则在选择框中输入“01”时,仅创建时间的值中包含“01”的将作为搜索结果展示。

9.2.2.2 数据字典选项

当下拉多选对应的是数据字典字段时,选项类型为“数据字典”。选项会展示选择的数据字典中的所有字典项,可以设置选项的排序、选项的默认值、选项是否可见。

image.png

  • 选项排序:选中选项行并直接拖动选项,即可变化上下位置,属性中的选项顺序将作为运行页面的选项顺序。
  • 设置默认值:点击选项前的复选框,则这个选项将作为下拉单选的默认值。
  • 设置可见:在选项的右侧,点击隐藏/可见图标,将控制该选项在运行时是否可以展示。

9.2.3 显示清除按钮

若开启了清除按钮,则在选择框有内容时,点击清除按钮一键清除已有内容

10. 开关

常用于只有是否两种对立选项的选择。

10.1 创建字段

直接通过开关组件设计页面需要先填写字段信息以创建一个字段业务类型为「布尔型」的模型字段后才可以设置属性。

image.png

10.2 表单属性

在表单中,开关可以设置一些通用的属性:标题、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

11. 单选框

常用于在直接展示的选现中单选一个值,例如选择性别。

11.1 创建字段

单选框支持创建两种业务类型的字段,分别是:布尔型、数据字典。

image.png

  • 布尔型:选项默认只有是、否;
  • 数据字典:创建字段时需要选择数据字典,其数据字典项将作为选项

11.2 表单属性

11.2.1 通用属性

在表单中,单选框可以设置一些通用的属性:标题、描述说明、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

11.2.2 选项排列方式

支持设置选项的排列方式,横向或纵向。

image.png

11.2.3 选项类型

11.2.3.1 数据字典选项

当单选框对应的是数据字典字段时,选项类型为“数据字典”。选项会展示选择的数据字典中的所有字典项,可以设置选项的排序、选项的默认值、选项是否可见。

image.png

  • 选项排序:选中选项行并直接拖动选项,即可变化上下位置,属性中的选项顺序将作为运行页面的选项顺序。
  • 设置默认值:点击选项前的单选框,则这个选项将作为单选框的默认值。
  • 设置可见:在选项的右侧,点击隐藏/可见图标,将控制该选项在运行时是否可以展示。默认所有字典项都可见。

11.2.3.2 布尔型选项

当单选框对应的是数据字典字段时,选项类型为“数据字典”。选项会展示选择的数据字典中的所有字典项,可以设置选项的排序、选项的默认值、选项是否可见。

  • 选项排序:选中选项行并直接拖动选项,即可变化上下位置,属性中的选项顺序将作为运行页面的选项顺序。
  • 设置默认值:点击选项前的单选框,则这个选项将作为单选框的默认值。
  • 设置可见:在选项的右侧,点击隐藏/可见图标,将控制该选项在运行时是否可以展示。默认所有字典项都可见。

12. 复选框

常用于在直接展示的选现中多选一个值,例如选择爱好、选择课程等。

12.1 创建字段

直接通过复选框组件设计页面需要先填写字段信息以创建一个字段业务类型为「数据字典」的模型字段后才可以设置属性。

image.png

12.2 表单属性

12.2.1 通用属性

在表单中,复选框可以设置一些通用的属性:标题、描述说明、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

12.2.2 选项排列方式

支持设置选项的排列方式,横向或纵向。

12.2.3 选项类型

12.2.3.1 数据字典选项

当复选框对应的是数据字典字段时,选项类型为“数据字典”。选项会展示选择的数据字典中的所有字典项,可以设置选项的排序、选项的默认值、选项是否可见。

image.png

  • 选项排序:选中选项行并直接拖动选项,即可变化上下位置,属性中的选项顺序将作为运行页面的选项顺序。
  • 设置默认值:点击选项前的单选框,则这个选项将作为单选框的默认值。
  • 设置可见:在选项的右侧,点击隐藏/可见图标,将控制该选项在运行时是否可以展示。默认所有字典项都可见。

13. 富文本编辑器

富文本编辑器,是一种可内嵌于浏览器,所见即所得的文本编辑器,类似于Office Word 的编辑功能,常应用于篇幅较长的说明性文字,支持改变字体样式、插入图片等。

13.1 创建字段

直接通过富文本编辑器组件设计页面需要先填写字段信息以创建一个字段业务类型为「富文本」的模型字段后才可以设置属性

  • 填写信息如下,所有信息保存后再次查看均不可编辑

image.png

13.2 表单属性

在表单中,富文本编辑器可以设置一些通用的属性:标题、占位提示、描述说明、只读、隐藏、必填、标题排列方式、宽度。

image.png

13.3 表单样式

在运行页面,表单中的富文本编辑器如下图。

编辑器中具有丰富的功能:

  • 支持设置层级标题
  • 支持设置文字样式(加粗、字号、字体、斜体、下划线、删除线等等)
  • 支持设置段落缩进和行高
  • 支持插入序列、待办事项等
  • 支持插入表情、图片、表格、代码块、分割线等
  • 编辑时支持撤回、恢复、全屏编辑

image.png

13.4 表格属性

在表格中,富文本编辑器仅支持自定义标题属性。

image.png

13.5 表格样式

在运行页面,表格中的富文本对应字段数据用相应链接展示,若有,则可存在“查看”链接,点击查看,通过弹框查看富文本内容

image.png

13.6 详情属性

在详情视图中,仅支持自定义标题、宽度属性。

image.png

14. 年份

年份组件用于选择年份,常用于选择出身年份、一项计划的年份等。

image.png

14.1 创建字段

年份仅支持创建「年份」业务类型的字段,填写规则、内容和模型设计器端创建字段一致。

image.png

14.2 表单属性

在表单中,年份可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

15. 日期

常用于选择颗粒度到日期的Date类型字段,例如出生日期、入职日期、入驻日期等。

15.1 创建字段

直接通过日期组件设计页面需要先填写字段信息以创建一个字段业务类型为「日期」的模型字段后才可以设置属性。

image.png

15.2 表单属性

15.2.1 通用属性

在表单中,日期可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

15.2.2 日期格式

有9种日期格式可供选择。

image.png

16. 日期时间

常用于选择颗粒度到时间的DateTime类型的字段,例如下单时间、发货时间、审批时间等。

16.1 创建字段

直接通过日期时间组件设计页面需要先填写字段信息以创建一个字段业务类型为「日期时间」的模型字段后才可以设置属性。

image.png

16.2 表单属性

16.2.1 通用属性

在表单中,日期时间可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

16.2.2 日期格式

有9种日期格式可供选择。

image.png

16.2.3 时间格式

有4种时间格式可供选择。

image.png

17. 时间

常用于选择仅时间无日期的Time类型的字段,如设置规章中的上班时间、日志的提交时间等。

17.1 创建字段

直接通过时间组件设计页面需要先填写字段信息以创建一个字段业务类型为「时间」的模型字段后才可以设置属性。

image.png

17.2 表单属性

17.2.1 通用属性

在表单中,时间可以设置一些通用的属性:标题、占位提示、描述说明、默认值、只读、隐藏、禁用、必填、标题排列方式、宽度。

image.png

17.2.1 时间格式

有4种时间格式可供选择。

image.png

18. 颜色选择器

颜色选择器,应用于自定义颜色,如设置标签的颜色、设置产品的颜色属性、主题定制时选择色彩等。

18.1 创建字段

颜色选择器和单行文本这两个组件的样式不同,作用也不同,一个用于选择颜色,一个用于输入内容,但实质上所生成的数据都用文本来存储,所以通过颜色选择器生成字段时,仅支持对应生成「文本」类型字段。

image.png

18.2 表单属性

在表单中,颜色选择器可以设置一些通用的属性:标题、描述说明、默认值、只读、隐藏、必填、标题排列方式、宽度。

image.png

18.3 表单样式

在运行页面,表单中的颜色选择器由色号显示框+色号选择框组成,色号显示框无法编辑,由选择的颜色自动带出对应色号;点击色号选择框可选择颜色。

色号选择有三种方式

1在颜色选择区直接点击颜色;

2颜色选择器下方快捷选择系统提供的常用颜色;

3输入框中直接输入标准格式色号,输入后回车,定位到对应颜色。

image.png

18.4 表格属性

在表格中,颜色选择器仅支持自定义标题属性。

image.png

18.5 表格样式

在运行页面,表格中的颜色选择器对应字段数据用相应色块展示。

image.png

18.6 详情属性

在详情视图中,仅支持自定义标题、宽度属性。

image.png

19. 图表

可以选择数据可视化设计器中允许被引用的图表,展示在页面中。

19.1 选择报表

下拉中可选择允许被引用的图表。image.png

image.png

20. 报表

可以选择数据可视化设计器中允许被引用的报表,展示在页面中。

20.1 选择报表

下拉中可选择允许被引用的报表。

image.png

image.png

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

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

(0)
史, 昂的头像史, 昂数式管理员
上一篇 2024年6月20日
下一篇 2024年6月20日

相关推荐

  • 3.4.3.3 SPI机制-扩展点

    扩展点结合拦截器的设计,oinone可以点、线、面一体化管理Function 扩展点用于扩展函数逻辑。扩展点类似于SPI机制(Service Provider Interface),是一种服务发现机制。这一机制为函数逻辑的扩展提供了可能。 一、构建第一个扩展点 自定义扩展点(举例) 在我们日常开发中,随着对业务理解的深入,往往还在一些逻辑中会预留扩展点,以便日后应对不同需求时可以灵活替换某一小块逻辑。 在3.3.4【模型的继承】一文中的PetCatItemQueryService,是独立新增函数只作公共逻辑单元。现在我们给它的实现类增加一个扩展点。在PetCatItemQueryServiceImpl的queryPage方法中原本会先查询PetCatType列表,我们这里假设这个逻辑随着业务发展未来会发生变化,我们可以预先预留【查询萌猫类型扩展点】 Step1 新增扩展点定义PetCatItemQueryCatTypeExtpoint 扩展点命名空间:在接口上用@Ext声明扩展点命名空间。会优先在本类查找@Ext,若为空则往接口向上做遍历查找,返回第一个查找到的@Ext.value注解值,使用该值再获取函数的命名空间;如果未找到,则返回扩展点全限定类名。所以我们这里扩展点命名空间为:pro.shushi.pamirs.demo.api.extpoint.PetCatItemQueryCatTypeExtpoint 扩展点技术名称:先取@ExtPoint.name,若为空则取扩展点接口方法名。所以我们这里技术名为queryCatType package pro.shushi.pamirs.demo.api.extpoint; import pro.shushi.pamirs.demo.api.model.PetCatType; import pro.shushi.pamirs.meta.annotation.Ext; import pro.shushi.pamirs.meta.annotation.ExtPoint; import java.util.List; @Ext public interface PetCatItemQueryCatTypeExtpoint { @ExtPoint(displayName = "查询萌猫类型扩展点") List<PetCatType> queryCatType(); } 图3-4-3-11 新增扩展点定义PetCatItemQueryCatTypeExtpoint Step2 修改PetCatItemQueryServiceImpl(用Ext.run模式调用) 修改queryPage,增加扩展点的使用代码。扩展点的使用有两种方式 方法一,使用命名空间和扩展点名称调用Ext.run(namespace, fun, 参数); 方法二,使用函数式接口调用Ext.run(函数式接口, 参数); 我们这里用了第二种方式 用PetCatItemQueryCatTypeExtpoint的全限定类名作为扩展点的命名空间(namespace) 用queryCatType的方法名作为扩展点的技术名称(name) 根据namespace+name去找到匹配扩展点实现,并根据规则是否匹配,以及优先级唯一确定一个扩展点实现去执行逻辑 package pro.shushi.pamirs.demo.core.service; ……省略依赖包 @Model.model(PetCatItem.MODEL_MODEL) @Component public class PetCatItemAction extends DataStatusBehavior<PetCatItem> { @Override protected PetCatItem fetchData(PetCatItem data) { return data.queryById(); } @Action(displayName = "启用") public PetCatItem dataStatusEnable(PetCatItem data){ data = super.dataStatusEnable(data); data.updateById(); return data; } @Function.Advanced(displayName = "查询模型数据的默认过滤条件", type = FunctionTypeEnum.QUERY, managed = true) @Function(openLevel = {LOCAL}) public String queryFilters() { StringBuilder sqlWhereCondition = new StringBuilder(); // List<PetCatType> typeList = new PetCatType().queryList(); List<PetCatType> typeList = Ext.run(PetCatItemQueryCatTypeExtpoint::queryCatType, new Object[]{}); if(!CollectionUtils.isEmpty(typeList)){ // sqlWhereCondition.append("type_id"); sqlWhereCondition.append(PStringUtils.fieldName2Column(LambdaUtil.fetchFieldName(PetCatItem::getTypeId))); sqlWhereCondition.append(StringUtils.SPACE).append(SqlConstants.IN).append(CharacterConstants.LEFT_BRACKET); for(PetCatType petCatType: typeList){ sqlWhereCondition.append(petCatType.getId()).append(CharacterConstants.SEPARATOR_COMMA); } sqlWhereCondition.deleteCharAt(sqlWhereCondition.lastIndexOf(CharacterConstants.SEPARATOR_COMMA)); sqlWhereCondition.append(StringUtils.SPACE).append(CharacterConstants.RIGHT_BRACKET); } return sqlWhereCondition.toString(); } ……省略其他函数 } 图3-4-3-12 修改PetCatItemQueryServiceImpl Step3 新增扩展点实现PetCatItemQueryCatTypeExtpointOne 扩展点命名空间要与扩展点定义一致,用@Ext(PetCatItemQueryCatTypeExtpoint.class) @ExtPoint.Implement声明这是在@Ext声明的命名空间下,且技术名为queryCatType的扩展点实现 package pro.shushi.pamirs.demo.core.extpoint; import pro.shushi.pamirs.demo.api.extpoint.PetCatItemQueryCatTypeExtpoint; import pro.shushi.pamirs.demo.api.model.PetCatType; import pro.shushi.pamirs.meta.annotation.Ext; import pro.shushi.pamirs.meta.annotation.ExtPoint; import pro.shushi.pamirs.meta.api.session.PamirsSession; import java.util.List; @Ext(PetCatItemQueryCatTypeExtpoint.class) public class PetCatItemQueryCatTypeExtpointOne implements PetCatItemQueryCatTypeExtpoint { @Override @ExtPoint.Implement(displayName = "查询萌猫类型扩展点的默认实现") public List<PetCatType> queryCatType() { PamirsSession.getMessageHub().info("走的是第一个扩展点"); List<PetCatType> typeList = new PetCatType().queryList(); return typeList; } } 图3-4-3-13 新增扩展点实现PetCatItemQueryCatTypeExtpointOne Step4…

    2024年5月23日
    1.2K00
  • 6.5 权限体系(改)

    做好企业级软件,首先得过权限这一关 在企业的IT部门沟通中,权限是避免不了。自嘲下在我们刚出来创业时,为了收获客户对我们技术能力的信任,每每与跟客户沟通时都会说我们是阿里出来的,但在权限设计这个环节不那么灵验,反而被打上了不懂B端权限设计的标签,会问很多问题。我就很奇怪难道大厂就没有内部管理系统了?大厂只有C端交易,没有B端交易?但从侧面说明权限不简单还特别重要。做好企业级软件,首先得过权限这一关。 整体介绍 对于平台运行来说,权限是必须,但我们的auth模块不是必须的,auth模块只是我们提供的一种默认实现,客户可以根据平台的spi机制进行替换。auth模块利用了平台的Hook特性做到与业务无关,在我们开发上层应用的时,是不用感知它的存在的。 auth模块涉及:功能权限、数据权限 数据权限:行权限和列权限。备注:数据权限的控制只能用于【存储模型】 表级权限:表达的语义是:是否该表可读/写(修改和新增) 列权限:表达的语义是:是否该列可读/写(修改和新增) 行权限:表达的语义是:是否对该行可读/写(修改)/删除 功能权限:表达的语义是ServerAction/Function是否可执行/展示,viewAction是否可展示,菜单是否可以显示 范围说明: 配置多个权限项的时候,取并集 配置多个角色的时候,取并集 模型设计 产品体验 Step1 创建角色 通过App Finder 切换至【权限】应用,点击新增按钮创建一个名为oinone的角色 Step2 创建数据权限项 在【权限项列表】菜单,点击【创建】按钮新增一个名为【宠物达人数据权限项】,同时宠物达人的数据权限设置为只能查看性别为男的记录 配置说明: 名称: 代表该项配置的权限的名字(必填)(必须是全系统唯一) 权限模型: 选择需要拦截的数据所在的表,即为模型,可以搜索使用 描述:对该权限项的描述 权限条件的配置: 满足全部:对条件一和条件二要同时满足的数据才能被看见 满足任一:对条件一和条件二要任意满足的数据都能被看见 读权限:对该数据是否有读取的权限 写权限:对该数据是否有修改的权限 删除权限:对该条件内的数据是否有删除的权限 Step3 为角色配置权限 编辑oinone角色,只开通oinoneDemo工程应用 选中【数据权限】选项卡点击【添加】按钮,勾选宠物达人数据权限项点击【确定】按钮 整体点击保存,回到列表页记得点击【权限生效】按钮 Step4 新建用户绑定角色 切换到用户中心模块,点击【创建】按钮填写必要信息,并在角色选中oinone权限组。 退出admin用户,用oinone登陆,权限效果: 只能看见demo模块 oinone登陆只能看到性别为男的宠物达人记录 admin用户登陆 oinone用户登陆 因为宠物达人的页面没有把性别字段放出来,我们看下数据库数据 auth模块扩展 在日常项目开发中,难免会碰到一些针对权限管理的特殊需求,或是为提升性能做的特殊逻辑。接下来我给大家介绍auth模块扩展性。 权限全局配置 对所有权限角色都做限制,而且不想让用户感知,可以实现PermissionFunApi接口,API接口实现的配置方式【只能用于支持全局的数据权限配置】 实现接口PermissionFunApi 将实现托管给SpringAOP 接口的具体实现看下图的代码 package pro.shushi.pamirs.demo.core.service; import org.springframework.stereotype.Component; import pro.shushi.pamirs.auth.api.service.PermissionFunApi; import pro.shushi.pamirs.demo.api.model.PetTalent; @Component public class PetTalentPermissionFunApi implements PermissionFunApi { @Override public String permissionDomain(Object… args) { //获取当前组织中 return "name == '张学友'"; } @Override public String nameSpace() { return PetTalent.MODEL_MODEL; } } 不参与权限控制 如果某一接口不想做权限控制,则可以在启动工程的application-dev.yml文件中配置不需要权限过滤的接口 pamirs: auth: fun-filter: – namespace: demo.PetTalent fun: queryPage 换一个没有配置宠物达人权限的用户(除管理员以外)进入系统,则也可以看到数据。注意【权限全局控制】还是生效的 API 1. 获取当前用户对该模型的行权限 Result<String> result = CommonApiFactory.getApi(AuthApi.class).canReadAccessData("Model"); 返回值为 { 'data':"name=in=('hahaha')" 'success':true … } 用法 : 场景:前端发起的请求都会经过权限拦截,后端代码逻辑发起的数据请求都是不经过任何权限的过滤,但是某些特殊情况需要在后端代码逻辑发起的数据请求也带上权限过滤 入参:请求的模型 出参:Result 数据结构中data会存储一段字符串,该字符串为Rsql 将该Rsql追加到wrapper中 Result<String> result = CommonApiFactory.getApi(AuthApi.class).canReadAccessData("base.UeModule"); String data=result.getData(); QueryWrapper<UeModule> wrapper = Pops.query(); wrapper.setEntity(ueModule); if (!StringUtils.isBlank(data)) { wrapper.apply(data); }

    2024年5月23日
    97000
  • 合作伙伴中心

    合作伙伴中心包含“公司、个人、部门、岗位、员工”五个菜单。其中公司、个人为合作伙伴,是创建组织架构的前置条件;部门、岗位、员工为组织架构,是选择的公司下的内部架构。 合作伙伴 公司页面中包含常规的增删改查和查看详情。 公司的创建页面如下: 个人暂不支持创建。 组织架构 同样菜单中包含常规的增删改查和查看详情。 组织架构可以依次创建部门、岗位、员工。对应关系为,一个部门下有多个岗位,一个员工可以归属于多个部门和多个岗位。 部门创建页面如下: 岗位创建页面如下: 员工创建页面如下: 合作伙伴中心创建的员工会自动生成可登录的用户并进行绑定。 在用户中心创建的用户仅为可登录用户无法操作管理员工、关联部门。 流程设计器中可选到的操作人分类为“员工、部门、角色”。

    2024年6月20日
    1.0K00
  • 5.6 商业支撑之商品域

    一、基础介绍 当业务在线化后,用于内部管理的产品主数据,叠加一堆销售属性变成了商品被推倒了前台,成为导购链路中最最重要的信息载体。看似最基础和最简单的商品模块也有很多门道。主要集中在以下几个方面: 商品的属性如何管理、呈现、参与导购(类目、搜索的过滤条件) 如何解决固定不变的内部管理需求与基于销售特性长期变化的运营需求之间的矛盾 在多渠道情况渠道商品,如何映射到实际sku进行履约 二、模型介绍 图5-6-1 模型介绍 类目属性,解决“商品的属性如何管理、呈现、参与导购(类目、搜索的过滤条件)” 前后台类目设计,解决“如何解决固定不变的内部管理需求与基于销售特性长期变化的运营需求之间的矛盾” 销售Sku和库存Sku设计,解决“在多渠道情况渠道商品,如何映射到实际sku进行履约” 要把这些问题搞清楚,得先把名词统一下: 领域 名称 oinone的定义 说明 举例 平台运营视角 Spu Product –>Spu2.1.9 –> 3.0.0 SPU(Standard Product Unit):标准化产品单元。SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性 iPhone X可以确定一个产品 后台类目 后台类目(Category) 商品分类分级管理,以及规范该类目下公共属性可以分为普通属性、销售属性 比如类目:3c数码/手机销售属性:内存大小、颜色等普通属性:分辨率 前台类目 前台类目(FrontCategory) 平台导购类目 通过前台类目关联后台类目或后台类目属性,用于满足运营需求 大体上SPU处于最上层、Item属于下一级,而SKU属于最低一层。SPU是平台层面,Item是商家层面,SKU是商家的Item确定销售属性SPU非必须,在平台类交易中,平台方为了规范商家发布商品信息,进行统一运营时需要 商家销售视角 Item 渠道商品(Item) 简单来说是:SPU加上归属商家、以及商家自有的价格与描述 商家A的iPhone X Sku 销售Sku(SaleSku) SKU=Stock Keeping Unit(库存保有单位)。是对每一个产品和服务的唯一标示符,该系统的使用SKU的值根于数据管理,使公司能够跟踪系统,如仓库和零售商店或产品的库存情况。 iPhone X 64G 银色 则是一个SKU。 店铺类目 ShopCategory 商家店铺导购类目 在平台类电商,商家都会有自己独立的店铺主页,商家类目跟前台类目作用类似,只是局限影响范围为商家店铺内 销售SKU中会有一个InvSkuCode来关联InventorySku,比如:品牌上在不同渠道(淘宝、京东、自建电商)中会有不同的销售SKU,在从渠道同步销售SKU会根据外部code 商家管理视角 产品或库存Sku InventorySku 跟销售领域的sku的定义类似,但销售领域是为了规范购买行为,这里规范企业内部管理。 iPhone X 64G 银色 组合Sku InventorySkuComposition 空调有内外机组合而成,这就是一个组合sku 产品分类 ProductKind 企业内部管理划分 商品系列 ItemSeries 指互相关联或相似的产品,是按照一定的分类标准对企业生产经营的全部产品进行划分的结果。一个产品系列内往往包括多个产品项目。产品系列的划分标准有产品功能、消费上的连带性、面向的顾客群、分销渠道、价格范围等 存货类别 StorageKind 为了反映存货的组成内容,正确计算产品的生产成本以及销售成本,会计上必须对存货进行科学地分类,按存货的不同类别进行核算 表5-6-1 各领域名称说明

    2024年5月23日
    1.1K00
  • 3.5.7.9 自定义多Tab

    在业务中,可能会遇到需要对多tab的交互或UI做全新设计的需求,这个时候可以自定义多tab组件支持。 首先继承平台的MultiTabsWidget组件,将自己vue文件设置到component处 import { MultiTabsWidget, SPI, ViewWidget } from '@kunlun/dependencies'; import Component from './CustomMultiTabs.vue'; @SPI.ClassFactory( ViewWidget.Token({ // 这里的tagName跟平台的组件一样,这样才能覆盖平台的组件 tagName: ['multi-tabs', 'MultiTabs'] }) ) export class CustomMultiTabsWidget extends MultiTabsWidget{ public initialize(props) { super.initialize(props); // 设置自定义的vue组件 this.setComponent(Component); return this; } } vue文件中继承平台的props,编写自定义页面代码 export const MultiTabsProps = { /** * 组件是否可见 */ invisible: { type: Boolean }, /** * tab列表数据 */ tabs: { type: Array as PropType<MultiTab[]> }, /** * 当前激活的tab */ activeTab: { type: Object as PropType<MultiTab> }, /** * 鼠标悬浮所在的tab */ hoverTab: { type: Object as PropType<MultiTab> }, /** * 鼠标经过tab事件回调 */ onMouseenterTab: { type: Function as PropType<(tab: MultiTab) => void> }, /** * 鼠标离开tab事件回调 */ onMouseleaveTab: { type: Function as PropType<(tab: MultiTab) => void> }, /** * 点击tab */ onClickTab: { type: Function as PropType<(tab: MultiTab) => void> }, /** * 刷新当前tab */ onRefreshCurrentTab: { type: Function as PropType<(tab: MultiTab) => void> }, /** * 关闭当前tab */ onCloseCurrentTab: { type: Function as PropType<(tab: MultiTab) => void> }, /** * 关闭除当前tab外的其他所有tab */ onCloseOtherTabs: { type: Function as PropType<(tab: MultiTab) => void> }, /** * 关闭当前tab左侧的所有tab */ onCloseLeftTabs: { type: Function as…

    2024年5月23日
    1.0K00

Leave a Reply

登录后才能评论