UNPKG

vue-admin-core

Version:
59 lines (56 loc) 1.63 kB
import { isField } from '@formily/core'; import '../../components/config-provider/index.mjs'; import '../useRequest/index.mjs'; import { watch, toValue } from 'vue'; import { isBoolean } from 'lodash-es'; import { useGlobalConfig } from '../../components/config-provider/src/hooks/use-global-config.mjs'; import useRequest from '../useRequest/src/useRequest.mjs'; const useRemote = ({ form, target }, service, options) => { const { pagination, ...reset } = options || {}; const config = useGlobalConfig(); const request = useRequest(service, reset); let totalKey = config.value.totalKey || "totalElements"; let listKey = config.value.listKey || "content"; if (!isBoolean(pagination) && pagination) { totalKey = pagination.totalKey; listKey = pagination.listKey; } watch(request.loading, (loading) => { toValue(form).query(target).take((field) => { if (isField(field)) field.setLoading(loading); }); }, { immediate: true }); watch([request.data], ([data]) => { if (!data) return; const field = toValue(form).query(target).take(); if (!field) return; if (!isField(field)) return; if (field.componentType === "TableSelect" && pagination) { field.setDataSource(data[listKey]); field.setComponentProps({ total: data[totalKey], // @ts-ignore onCurrentChange: (value) => request.run({ [config.value.currentPageKey]: value }) }); } else { field.setDataSource(data); } }); return request; }; export { useRemote }; //# sourceMappingURL=useRemote.mjs.map