@tplc/business
Version:
51 lines (45 loc) • 1.12 kB
text/typescript
import { get } from 'lodash-es'
import { getDynamicData } from './utils'
type AnyRecord = Record<string, any>
/**
* 根据 keyFromUser 选择动态数据源
* - true: userStore.userInfo
* - false: innerDynamicData
*/
export function selectDynamicSource(
keyFromUser: boolean | undefined,
userInfo: AnyRecord | undefined,
innerDynamicData: AnyRecord | undefined,
) {
return (keyFromUser ? userInfo : innerDynamicData) as AnyRecord | undefined
}
/**
* 统一处理 actionProps:
* - dynamicActionKey 优先:从 innerDynamicData 取整段 action 配置
* - 否则对 action.jumpUrl 做动态参数替换(${xxx})
*/
export function resolveActionProps({
dynamicActionKey,
action,
innerDynamicData,
templateStore,
}: {
dynamicActionKey?: string
action?: AnyRecord
innerDynamicData?: AnyRecord
templateStore?: AnyRecord
}) {
if (dynamicActionKey) {
return get(innerDynamicData, dynamicActionKey)
}
const jumpUrl = action?.jumpUrl
if (!jumpUrl) {
return action
}
return {
...action,
jumpUrl: getDynamicData(jumpUrl, {
store: templateStore,
}),
}
}