Commit 60fc2adf authored by 刘斌's avatar 刘斌

fix: 修复表单修改和新增

parent a0af350f
...@@ -16,7 +16,7 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -16,7 +16,7 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysDeptApi.Dept>({}); const isUpdate = ref(false);
function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] { function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] {
const top: SysDeptApi.Dept = { const top: SysDeptApi.Dept = {
...@@ -37,6 +37,15 @@ function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] { ...@@ -37,6 +37,15 @@ function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] {
} }
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'ApiTreeSelect', component: 'ApiTreeSelect',
componentProps: { componentProps: {
...@@ -131,12 +140,8 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -131,12 +140,8 @@ const [Drawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
const data = drawerApi.getData<SysDeptApi.Dept>(); const data = drawerApi.getData<SysDeptApi.Dept>();
if (data) { isUpdate.value = !!data.id;
formData.value = data; await (isUpdate.value ? formApi.setValues(data) : formApi.resetForm());
await formApi.setValues(formData.value);
} else {
await formApi.resetForm();
}
await markInitialized(); await markInitialized();
}, },
}); });
...@@ -147,9 +152,7 @@ async function onSubmit() { ...@@ -147,9 +152,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<SysDeptApi.Dept>(); const data = await formApi.getValues<SysDeptApi.Dept>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -165,7 +168,7 @@ async function handleClosed() { ...@@ -165,7 +168,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改部门' : '新增部门', isUpdate.value ? '修改部门' : '新增部门',
); );
</script> </script>
<template> <template>
......
...@@ -20,7 +20,7 @@ import { getMenuTypeOptions } from './data'; ...@@ -20,7 +20,7 @@ import { getMenuTypeOptions } from './data';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysMenuApi.menu>({}); const isUpdate = ref(false);
const loading = ref(false); const loading = ref(false);
function filterMenuTree(menuList: SysMenuApi.menu[]): SysMenuApi.menu[] { function filterMenuTree(menuList: SysMenuApi.menu[]): SysMenuApi.menu[] {
...@@ -39,6 +39,15 @@ function filterMenuTree(menuList: SysMenuApi.menu[]): SysMenuApi.menu[] { ...@@ -39,6 +39,15 @@ function filterMenuTree(menuList: SysMenuApi.menu[]): SysMenuApi.menu[] {
} }
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'ApiTreeSelect', component: 'ApiTreeSelect',
componentProps: { componentProps: {
...@@ -225,9 +234,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -225,9 +234,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
loading.value = true; loading.value = true;
const data = drawerApi.getData<SysMenuApi.menu>(); const data = drawerApi.getData<SysMenuApi.menu>();
if (data) { isUpdate.value = !!data.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -244,10 +253,7 @@ async function onSubmit() { ...@@ -244,10 +253,7 @@ async function onSubmit() {
const data = const data =
await formApi.getValues<Omit<SysMenuApi.menu, 'children' | 'id'>>(); await formApi.getValues<Omit<SysMenuApi.menu, 'children' | 'id'>>();
try { try {
// await saveOne({ id: formData.value.id || 0, ...data }); await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
await (formData.value?.id
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -263,7 +269,7 @@ async function handleClosed() { ...@@ -263,7 +269,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改菜单' : '新增菜单', isUpdate.value ? '修改菜单' : '新增菜单',
); );
</script> </script>
<template> <template>
......
...@@ -18,7 +18,7 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -18,7 +18,7 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<PostApi.Post>(); const isUpdate = ref(false);
function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] { function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] {
const top: SysDeptApi.Dept = { const top: SysDeptApi.Dept = {
...@@ -39,6 +39,15 @@ function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] { ...@@ -39,6 +39,15 @@ function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] {
} }
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'ApiTreeSelect', component: 'ApiTreeSelect',
componentProps: { componentProps: {
...@@ -137,9 +146,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -137,9 +146,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
const data = drawerApi.getData<PostApi.Post>(); const data = drawerApi.getData<PostApi.Post>();
if (data) { isUpdate.value = !!data.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -153,9 +162,7 @@ async function onSubmit() { ...@@ -153,9 +162,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<PostApi.Post>(); const data = await formApi.getValues<PostApi.Post>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -171,7 +178,7 @@ async function handleClosed() { ...@@ -171,7 +178,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改岗位信息' : '新增岗位信息', isUpdate.value ? '修改岗位信息' : '新增岗位信息',
); );
</script> </script>
<template> <template>
......
...@@ -20,9 +20,18 @@ type MenuOption = SysMenuApi.MenuOption; ...@@ -20,9 +20,18 @@ type MenuOption = SysMenuApi.MenuOption;
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysRoleApi.Role>({}); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'name', fieldName: 'name',
...@@ -120,12 +129,14 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -120,12 +129,14 @@ const [Drawer, drawerApi] = useVbenDrawer({
} }
drawerApi.drawerLoading(true); drawerApi.drawerLoading(true);
const { id } = drawerApi.getData() as { id?: number }; const { id } = drawerApi.getData() as { id?: number };
isUpdate.value = !!id;
let checkedKeys: number[] = []; let checkedKeys: number[] = [];
if (id) { if (isUpdate.value && id) {
const data = await getRoleDetail(id); const data = await getRoleDetail(id);
checkedKeys = data.menuIds; checkedKeys = data.menuIds;
formData.value = data; await formApi.setValues(data);
await formApi.setValues(formData.value); } else {
formApi.resetForm();
} }
await setupMenuTree(checkedKeys); await setupMenuTree(checkedKeys);
await markInitialized(); await markInitialized();
...@@ -166,13 +177,7 @@ async function onSubmit() { ...@@ -166,13 +177,7 @@ async function onSubmit() {
const data = await formApi.getValues<SysRoleApi.Role>(); const data = await formApi.getValues<SysRoleApi.Role>();
data.menuIds = menuIds; data.menuIds = menuIds;
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
// await saveRole({
// sysRole: { id: formData.value.id || 0, ...data },
// menuIds,
// });
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -188,7 +193,7 @@ async function handleClosed() { ...@@ -188,7 +193,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改角色' : '新增角色', isUpdate.value ? '修改角色' : '新增角色',
); );
/** /**
......
...@@ -25,7 +25,6 @@ import { authScopeOptions } from '#/views/auth/role/data'; ...@@ -25,7 +25,6 @@ import { authScopeOptions } from '#/views/auth/role/data';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysUserApi.User>({});
const isUpdate = ref(false); const isUpdate = ref(false);
function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] { function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] {
const top: SysDeptApi.Dept = { const top: SysDeptApi.Dept = {
...@@ -46,6 +45,15 @@ function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] { ...@@ -46,6 +45,15 @@ function genDeptTree(deptList: SysDeptApi.Dept[]): SysDeptApi.Dept[] {
} }
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'name', fieldName: 'name',
...@@ -210,8 +218,7 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -210,8 +218,7 @@ const [Drawer, drawerApi] = useVbenDrawer({
isUpdate.value = !!id; isUpdate.value = !!id;
if (id) { if (id) {
const data = await getUserDetail(id); const data = await getUserDetail(id);
formData.value = data; formApi.setValues(data);
formApi.setValues(formData.value);
// 更新时不会触发onSelect 需要手动调用 // 更新时不会触发onSelect 需要手动调用
await setupPostOptions(data.deptId); await setupPostOptions(data.deptId);
} else { } else {
...@@ -290,9 +297,7 @@ async function onSubmit() { ...@@ -290,9 +297,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<SysUserApi.User>(); const data = await formApi.getValues<SysUserApi.User>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -308,7 +313,7 @@ async function handleClosed() { ...@@ -308,7 +313,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改系统用户' : '新增系统用户', isUpdate.value ? '修改系统用户' : '新增系统用户',
); );
</script> </script>
<template> <template>
......
...@@ -18,10 +18,18 @@ import SecretInput from './secret-input.vue'; ...@@ -18,10 +18,18 @@ import SecretInput from './secret-input.vue';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysClientApi.Client>({});
const isUpdate = ref(false); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'clientId', fieldName: 'clientId',
...@@ -143,9 +151,8 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -143,9 +151,8 @@ const [Drawer, drawerApi] = useVbenDrawer({
fieldName: 'status', fieldName: 'status',
}, },
]); ]);
if (data) { if (isUpdate.value) {
formData.value = data; await formApi.setValues(data);
await formApi.setValues(formData.value);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -184,9 +191,7 @@ async function onSubmit() { ...@@ -184,9 +191,7 @@ async function onSubmit() {
const data = await formApi.getValues<SysClientApi.Client>(); const data = await formApi.getValues<SysClientApi.Client>();
try { try {
// await apiSave({ id: formData.value.id || 0, ...data }); // await apiSave({ id: formData.value.id || 0, ...data });
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -202,7 +207,7 @@ async function handleClosed() { ...@@ -202,7 +207,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改终端信息' : '新增终端信息', isUpdate.value ? '修改终端信息' : '新增终端信息',
); );
</script> </script>
<template> <template>
......
...@@ -15,9 +15,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -15,9 +15,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysConfigApi.Config>(); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'configName', fieldName: 'configName',
...@@ -85,9 +94,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -85,9 +94,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
const data = drawerApi.getData<SysConfigApi.Config>(); const data = drawerApi.getData<SysConfigApi.Config>();
if (data) { isUpdate.value = !!data?.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -101,9 +110,7 @@ async function onSubmit() { ...@@ -101,9 +110,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<SysConfigApi.Config>(); const data = await formApi.getValues<SysConfigApi.Config>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
drawerApi.close(); drawerApi.close();
emit('success'); emit('success');
} finally { } finally {
...@@ -118,7 +125,7 @@ async function handleClosed() { ...@@ -118,7 +125,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改参数配置' : '新增参数配置', isUpdate.value ? '修改参数配置' : '新增参数配置',
); );
</script> </script>
<template> <template>
......
...@@ -20,7 +20,7 @@ import { tagSelectOptions } from './data'; ...@@ -20,7 +20,7 @@ import { tagSelectOptions } from './data';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<DictDataApi.DictData>(); const isUpdate = ref(false);
const tagSelectList = ref(tagSelectOptions()); const tagSelectList = ref(tagSelectOptions());
const newTag = ref(''); const newTag = ref('');
...@@ -33,7 +33,8 @@ const formSchema: VbenFormSchema[] = [ ...@@ -33,7 +33,8 @@ const formSchema: VbenFormSchema[] = [
show: () => false, show: () => false,
triggerFields: [''], triggerFields: [''],
}, },
fieldName: 'dictId', fieldName: 'id',
label: 'id',
}, },
{ {
component: 'Input', component: 'Input',
...@@ -111,9 +112,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -111,9 +112,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
const data = drawerApi.getData<DictDataApi.DictData>(); const data = drawerApi.getData<DictDataApi.DictData>();
if (data) { isUpdate.value = !!data?.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -127,9 +128,7 @@ async function onSubmit() { ...@@ -127,9 +128,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<DictDataApi.DictData>(); const data = await formApi.getValues<DictDataApi.DictData>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -166,7 +165,7 @@ async function handleClosed() { ...@@ -166,7 +165,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改字典明细' : '新增字典明细', isUpdate.value ? '修改字典明细' : '新增字典明细',
); );
</script> </script>
<template> <template>
......
...@@ -13,9 +13,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -13,9 +13,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<DictTypeApi.DictType>(); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'dictName', fieldName: 'dictName',
...@@ -73,9 +82,9 @@ const [BasicModal, modalApi] = useVbenModal({ ...@@ -73,9 +82,9 @@ const [BasicModal, modalApi] = useVbenModal({
modalApi.modalLoading(true); modalApi.modalLoading(true);
const data = modalApi.getData<DictTypeApi.DictType>(); const data = modalApi.getData<DictTypeApi.DictType>();
if (data) { isUpdate.value = !!data?.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} }
await markInitialized(); await markInitialized();
...@@ -89,9 +98,7 @@ async function onSubmit() { ...@@ -89,9 +98,7 @@ async function onSubmit() {
modalApi.lock(); modalApi.lock();
const data = await formApi.getValues<DictTypeApi.DictType>(); const data = await formApi.getValues<DictTypeApi.DictType>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
modalApi.close(); modalApi.close();
...@@ -107,7 +114,7 @@ async function handleClosed() { ...@@ -107,7 +114,7 @@ async function handleClosed() {
} }
const getModalTitle = computed(() => const getModalTitle = computed(() =>
formData.value?.id ? '修改字典类型' : '新增字典类型', isUpdate.value ? '修改字典类型' : '新增字典类型',
); );
</script> </script>
<template> <template>
......
...@@ -16,9 +16,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -16,9 +16,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysJobApi.SysJob>(); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Select', component: 'Select',
componentProps: { componentProps: {
...@@ -109,9 +118,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -109,9 +118,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
const data = drawerApi.getData<SysJobApi.SysJob>(); const data = drawerApi.getData<SysJobApi.SysJob>();
if (data) { isUpdate.value = !!data?.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -125,9 +134,7 @@ async function onSubmit() { ...@@ -125,9 +134,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<SysJobApi.SysJob>(); const data = await formApi.getValues<SysJobApi.SysJob>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -143,7 +150,7 @@ async function handleClosed() { ...@@ -143,7 +150,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改定时任务' : '新增定时任务', isUpdate.value ? '修改定时任务' : '新增定时任务',
); );
</script> </script>
<template> <template>
......
...@@ -16,9 +16,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -16,9 +16,18 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<NoticeApi.Notice>(); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'noticeTitle', fieldName: 'noticeTitle',
...@@ -103,9 +112,9 @@ const [BasicModal, modalApi] = useVbenModal({ ...@@ -103,9 +112,9 @@ const [BasicModal, modalApi] = useVbenModal({
modalApi.modalLoading(true); modalApi.modalLoading(true);
const data = modalApi.getData<NoticeApi.Notice>(); const data = modalApi.getData<NoticeApi.Notice>();
if (data) { isUpdate.value = !!data?.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} }
await markInitialized(); await markInitialized();
...@@ -119,9 +128,7 @@ async function onSubmit() { ...@@ -119,9 +128,7 @@ async function onSubmit() {
modalApi.lock(); modalApi.lock();
const data = await formApi.getValues<NoticeApi.Notice>(); const data = await formApi.getValues<NoticeApi.Notice>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
modalApi.close(); modalApi.close();
...@@ -137,7 +144,7 @@ async function handleClosed() { ...@@ -137,7 +144,7 @@ async function handleClosed() {
} }
const getModalTitle = computed(() => const getModalTitle = computed(() =>
formData.value?.id ? '修改通知公告' : '新增通知公告', isUpdate.value ? '修改通知公告' : '新增通知公告',
); );
</script> </script>
<template> <template>
......
...@@ -21,7 +21,7 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup'; ...@@ -21,7 +21,7 @@ import { defaultFormValueGetter, useBeforeCloseDiff } from '#/utils/popup';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<SysTenantApi.Tenant>(); const isUpdate = ref(false);
const loading = ref(false); const loading = ref(false);
const tenantStore = useTenantStore(); const tenantStore = useTenantStore();
const router = useRouter(); const router = useRouter();
...@@ -289,9 +289,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -289,9 +289,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
loading.value = true; loading.value = true;
const data = drawerApi.getData<SysTenantApi.Tenant>(); const data = drawerApi.getData<SysTenantApi.Tenant>();
if (data) { isUpdate.value = !!data?.id;
formData.value = data; if (isUpdate.value) {
await formApi.setValues(formData.value); await formApi.setValues(data);
} else { } else {
formApi.resetForm(); formApi.resetForm();
} }
...@@ -307,9 +307,7 @@ async function onSubmit() { ...@@ -307,9 +307,7 @@ async function onSubmit() {
drawerApi.lock(); drawerApi.lock();
const data = await formApi.getValues<SysTenantApi.Tenant>(); const data = await formApi.getValues<SysTenantApi.Tenant>();
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -327,7 +325,7 @@ async function handleClosed() { ...@@ -327,7 +325,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改租户' : '新增租户', isUpdate.value ? '修改租户' : '新增租户',
); );
</script> </script>
<template> <template>
......
<script lang="ts" setup> <script lang="ts" setup>
import type { VbenFormSchema } from '#/adapter/form'; import type { VbenFormSchema } from '#/adapter/form';
import type { SysMenuApi } from '#/api/auth/menu'; import type { SysMenuApi } from '#/api/auth/menu';
import type { TenantPackageApi } from '#/api/system/sysTenantPackage';
import { computed, nextTick, ref } from 'vue'; import { computed, nextTick, ref } from 'vue';
import { useVbenDrawer } from '@vben/common-ui'; import { useVbenDrawer } from '@vben/common-ui';
import { cloneDeep } from '@vben/utils'; import { cloneDeep } from '@vben/utils';
import { omit } from 'lodash-es';
import { useVbenForm } from '#/adapter/form'; import { useVbenForm } from '#/adapter/form';
import { apiMenuTree } from '#/api/auth/menu'; import { apiMenuTree } from '#/api/auth/menu';
import { apiAdd, apiDetail, apiUpdate } from '#/api/system/sysTenantPackage'; import { apiAdd, apiDetail, apiUpdate } from '#/api/system/sysTenantPackage';
...@@ -21,9 +18,18 @@ type MenuOption = SysMenuApi.MenuOption; ...@@ -21,9 +18,18 @@ type MenuOption = SysMenuApi.MenuOption;
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<TenantPackageApi.TenantPackage>(); const isUpdate = ref(false);
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Input', component: 'Input',
fieldName: 'packageName', fieldName: 'packageName',
...@@ -85,11 +91,11 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -85,11 +91,11 @@ const [Drawer, drawerApi] = useVbenDrawer({
return null; return null;
} }
const { id } = drawerApi.getData() as { id: number }; const { id } = drawerApi.getData() as { id: number };
isUpdate.value = !!id;
let checkedKeys: number[] = []; let checkedKeys: number[] = [];
if (id) { if (isUpdate.value && id) {
const data = await apiDetail(id); const data = await apiDetail(id);
formData.value = omit(data, ['menuIds']); await formApi.setValues(data);
await formApi.setValues(formData.value);
checkedKeys = data.menuIds ? data.menuIds.split(',').map(Number) : []; checkedKeys = data.menuIds ? data.menuIds.split(',').map(Number) : [];
} else { } else {
formApi.resetForm(); formApi.resetForm();
...@@ -127,9 +133,7 @@ async function onSubmit() { ...@@ -127,9 +133,7 @@ async function onSubmit() {
const data = cloneDeep(await formApi.getValues()); const data = cloneDeep(await formApi.getValues());
data.menuIds = menuIds; data.menuIds = menuIds;
try { try {
await (formData.value?.id await (isUpdate.value ? apiUpdate(data) : apiAdd(data));
? apiUpdate({ id: formData.value.id, ...data })
: apiAdd(data));
resetInitialized(); resetInitialized();
emit('success'); emit('success');
drawerApi.close(); drawerApi.close();
...@@ -145,7 +149,7 @@ async function handleClosed() { ...@@ -145,7 +149,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改租户套餐' : '新增租户套餐', isUpdate.value ? '修改租户套餐' : '新增租户套餐',
); );
/** /**
* 通过回调更新 无法通过v-model * 通过回调更新 无法通过v-model
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment