UNPKG

@tplc/business

Version:

49 lines (44 loc) 1.17 kB
import { FORM_KEY, PAGE_DYNAMIC_DATA, PAGE_PROVIDE_KEY } from '../constants' import { computed, inject, Ref } from 'vue' const useSyncForm = ({ dynamicScope, visibleScope, }: { dynamicScope?: string visibleScope?: string }) => { /** 上下文全局 */ const globalForm = inject(FORM_KEY) as Ref<Record<string, any>> /** 上下文局部form */ const pageDynamicData = inject(PAGE_DYNAMIC_DATA) as Ref<Record<string, any>> const visiblePageInfo = inject(PAGE_PROVIDE_KEY) as Ref<Record<string, any>> const syncForm = (params: Record<string, any>) => { if (dynamicScope) { pageDynamicData.value[dynamicScope] = { ...pageDynamicData.value[dynamicScope], ...params, } } else if (visibleScope) { visiblePageInfo.value[visibleScope] = params } else { globalForm.value = { ...globalForm.value, ...params, } } } const form = computed(() => { if (dynamicScope) { return { ...globalForm?.value, ...pageDynamicData.value[dynamicScope], } } return globalForm?.value }) return { syncForm, form, } } export default useSyncForm