refactor: post

This commit is contained in:
dap 2024-09-23 08:48:37 +08:00
parent 4b5c5a3f63
commit 1a10f30de3

View File

@ -6,7 +6,7 @@ import { $t } from '@vben/locales';
import { addFullName } from '@vben/utils'; import { addFullName } from '@vben/utils';
import { useVbenForm } from '#/adapter'; import { useVbenForm } from '#/adapter';
import { postAdd, postUpdate } from '#/api/system/post'; import { postAdd, postInfo, postUpdate } from '#/api/system/post';
import { getDeptTree } from '#/api/system/user'; import { getDeptTree } from '#/api/system/user';
import { drawerSchema } from './data'; import { drawerSchema } from './data';
@ -15,7 +15,7 @@ const emit = defineEmits<{ reload: [] }>();
interface DrawerProps { interface DrawerProps {
update: boolean; update: boolean;
record?: any; id?: number | string;
} }
const isUpdate = ref(false); const isUpdate = ref(false);
@ -32,33 +32,23 @@ const [BasicForm, formApi] = useVbenForm({
wrapperClass: 'grid-cols-2', wrapperClass: 'grid-cols-2',
}); });
async function initDeptSelect() { async function setupDeptSelect() {
const deptTree = await getDeptTree(); const deptTree = await getDeptTree();
// / // /
addFullName(deptTree, 'label', ' / '); addFullName(deptTree, 'label', ' / ');
formApi.setState((prev) => { formApi.updateSchema([
return { {
...prev, componentProps: {
schema: prev.schema?.map((item) => { fieldNames: { label: 'label', value: 'id' },
// treeData: deptTree,
if (item.fieldName === 'deptId') { treeDefaultExpandAll: true,
return { treeLine: { showLeafIcon: false },
...item, //
componentProps: { treeNodeLabelProp: 'fullName',
...item.componentProps, },
fieldNames: { label: 'label', value: 'id' }, fieldName: 'deptId',
treeData: deptTree, },
treeDefaultExpandAll: true, ]);
treeLine: { showLeafIcon: false },
//
treeNodeLabelProp: 'fullName',
},
};
}
return item;
}),
};
});
} }
const [BasicDrawer, drawerApi] = useVbenDrawer({ const [BasicDrawer, drawerApi] = useVbenDrawer({
@ -69,14 +59,15 @@ const [BasicDrawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
drawerApi.drawerLoading(true); drawerApi.drawerLoading(true);
const { record, update } = drawerApi.getData() as DrawerProps; const { id, update } = drawerApi.getData() as DrawerProps;
isUpdate.value = update; isUpdate.value = update;
// //
await initDeptSelect(); await setupDeptSelect();
// && // &&
if (update && record) { if (update && id) {
const record = await postInfo(id);
for (const key in record) { for (const key in record) {
await formApi.setFieldValue(key, record[key]); await formApi.setFieldValue(key, record[key as keyof typeof record]);
} }
} }
drawerApi.drawerLoading(false); drawerApi.drawerLoading(false);
@ -91,7 +82,6 @@ async function handleConfirm() {
return; return;
} }
const data = await formApi.getValues(); const data = await formApi.getValues();
console.log(data);
await (isUpdate.value ? postUpdate(data) : postAdd(data)); await (isUpdate.value ? postUpdate(data) : postAdd(data));
emit('reload'); emit('reload');
await handleCancel(); await handleCancel();