新增一个业务规则
作者:
当新增一个业务规则,且“用户规则”列是枚举或者参照时,就需要写代码干预。
前端处理渲染
apps/link/src/main/screens/archive/bill-type/business-rule
export const budgetPlanBusinessRule: { [keys: string]: IBusinessRuleCustomizedDef } = ({
['xxId']: {
cellValueSubmitHandler,
cellEditor: opt => {
const { rowField, params } = opt;
const field = rowField.select('userRule');
const dataFieldProps: any = {
...params,
field,
path: field.path,
type: 'enum',
enumType: 'ChangeViewType',
};
return <AgDataField {...dataFieldProps} />;
},
cellRenderer: createCellRender(),
} as IBusinessRuleCustomizedDef,
})
budgetPlanBusinessRule 是单据类型对象。其中的key是业务规则名,value是渲染的参数。dataFieldProps中的type为渲染的类型enum代表枚举,enumType是枚举的名字。
cellValueSubmitHandler和createCellRender是已提供的函数,可以直接使用。
Go处理返回值
由于后端存的是字符串,对于枚举和参照,存的都是Id,就需要在Go上把Id转化为结构化数据。
如果是枚举用GetEnumValue方法获取结构化数据即可。如果是参照对象,就需要GQL请求会对应的数据了。
trek/web/controllers/web-controllers/bill-type-setting/bill-type-setting.go
在此文件中加一个 case
case "xxId":
u, ok := result.UserRule.(string)
if ok {
var enumValue = metadata.GetMetadata().GetEnumValue(gen_enums.ENUM_ChangeViewType, u)
result.UserRule = enumValue
}
s, ok := result.SystemRule.(string)
if ok {
var enumValue = metadata.GetMetadata().GetEnumValue(gen_enums.ENUM_ChangeViewType, s)
result.SystemRule = enumValue
}