This commit is contained in:
Daniel 2025-07-04 16:42:37 +08:00
parent eafe42fe59
commit 99db625cf7
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
5 changed files with 24 additions and 17 deletions

View file

@ -194,13 +194,19 @@ type View struct {
Groups []*View `json:"groups,omitempty"` // 分组视图列表
GroupItemIDs []string `json:"groupItemIds,omitempty"` // 分组项目 ID 列表,用于维护分组中的所有项目
GroupCalcSum bool `json:"groupCalcSum,omitempty"` // 分组是否计算总和
GroupCalc *GroupCalc `json:"groupCalc,omitempty"` // 分组计算规则
GroupName string `json:"groupName,omitempty"` // 分组名称
GroupFolded bool `json:"groupFolded,omitempty"` // 分组是否折叠
GroupHidden bool `json:"groupHidden,omitempty"` // 分组是否隐藏
GroupDefault bool `json:"groupDefault,omitempty"` // 是否为默认分组
}
// GroupCalc 描述了分组计算规则和结果的结构。
type GroupCalc struct {
Field string `json:"field"` // 字段 ID
FieldCalc `json:"calc"` // 计算规则和结果
}
// LayoutType 描述了视图布局类型。
type LayoutType string

View file

@ -16,8 +16,8 @@
package av
// ColumnCalc 描述了列(字段)计算操作和结果的结构。
type ColumnCalc struct {
// FieldCalc 描述了字段计算操作和结果的结构。
type FieldCalc struct {
Operator CalcOperator `json:"operator"` // 计算操作符
Result *Value `json:"result"` // 计算结果
}

View file

@ -68,6 +68,7 @@ type BaseInstance struct {
Hidden bool `json:"hidden,omitempty"` // 是否隐藏
Groups []Viewable `json:"groups,omitempty"` // 分组实例列表
GroupCalc *GroupCalc `json:"groupCalc,omitempty"` // 分组计算规则和结果
}
func (baseInstance *BaseInstance) GetSorts() []*ViewSort {

View file

@ -47,7 +47,7 @@ type ViewTableColumn struct {
Pin bool `json:"pin"` // 是否固定
Width string `json:"width"` // 列宽度
Calc *ColumnCalc `json:"calc,omitempty"` // 计算
Calc *FieldCalc `json:"calc,omitempty"` // 计算规则
}
// Table 描述了表格视图实例的结构。
@ -65,7 +65,7 @@ type TableColumn struct {
Pin bool `json:"pin"` // 是否固定
Width string `json:"width"` // 列宽度
Calc *ColumnCalc `json:"calc"` // 计算
Calc *FieldCalc `json:"calc"` // 计算规则和结果
}
// TableRow 描述了表格实例行的结构。

View file

@ -2346,7 +2346,7 @@ func setAttributeViewColumnCalc(operation *Operation) (err error) {
return
}
calc := &av.ColumnCalc{}
calc := &av.FieldCalc{}
switch view.LayoutType {
case av.LayoutTypeTable:
if err = gulu.JSON.UnmarshalJSON(data, calc); err != nil {