vue-admin-core
Version:
A Component Library for Vue 3
61 lines (57 loc) • 1.7 kB
JavaScript
;
var core = require('@formily/core');
require('../../components/config-provider/index.js');
require('../useRequest/index.js');
var vue = require('vue');
var lodashEs = require('lodash-es');
var useGlobalConfig = require('../../components/config-provider/src/hooks/use-global-config.js');
var useRequest = require('../useRequest/src/useRequest.js');
const useRemote = ({
form,
target
}, service, options) => {
const {
pagination,
...reset
} = options || {};
const config = useGlobalConfig.useGlobalConfig();
const request = useRequest.default(service, reset);
let totalKey = config.value.totalKey || "totalElements";
let listKey = config.value.listKey || "content";
if (!lodashEs.isBoolean(pagination) && pagination) {
totalKey = pagination.totalKey;
listKey = pagination.listKey;
}
vue.watch(request.loading, (loading) => {
vue.toValue(form).query(target).take((field) => {
if (core.isField(field))
field.setLoading(loading);
});
}, {
immediate: true
});
vue.watch([request.data], ([data]) => {
if (!data)
return;
const field = vue.toValue(form).query(target).take();
if (!field)
return;
if (!core.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;
};
exports.useRemote = useRemote;
//# sourceMappingURL=useRemote.js.map