@tplc/business
Version:
49 lines (44 loc) • 1.17 kB
text/typescript
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