修改抽屉形式

This commit is contained in:
yangjun 2025-03-13 11:12:37 +08:00
parent 9035d5381a
commit 7fdcacf8af
2 changed files with 103 additions and 86 deletions

View File

@ -32,7 +32,7 @@
</template> </template>
</BasicTable> </BasicTable>
<!-- 表单区域 --> <!-- 表单区域 -->
<ConfigSuppliersInfoModal @register="registerModal" @success="handleSuccess"></ConfigSuppliersInfoModal> <ConfigSuppliersInfoModal @register="registerDrawer" @success="handleSuccess"></ConfigSuppliersInfoModal>
</div> </div>
</template> </template>
@ -46,11 +46,14 @@
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './ConfigSuppliersInfo.api'; import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './ConfigSuppliersInfo.api';
import { downloadFile } from '/@/utils/common/renderUtils'; import { downloadFile } from '/@/utils/common/renderUtils';
import { useUserStore } from '/@/store/modules/user'; import { useUserStore } from '/@/store/modules/user';
import { useDrawer } from '/@/components/Drawer';
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const checkedKeys = ref<Array<string | number>>([]); const checkedKeys = ref<Array<string | number>>([]);
const userStore = useUserStore(); const userStore = useUserStore();
//model //model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
//drawer
const [registerDrawer, { openDrawer }] = useDrawer();
//table //table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({ const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{ tableProps:{
@ -105,30 +108,33 @@
* 新增事件 * 新增事件
*/ */
function handleAdd() { function handleAdd() {
openModal(true, { openDrawer(true, {
isUpdate: false, isUpdate: false,
showFooter: true, showFooter: true,
}); tenantSaas: false,
});
} }
/** /**
* 编辑事件 * 编辑事件
*/ */
function handleEdit(record: Recordable) { function handleEdit(record: Recordable) {
openModal(true, { openDrawer(true, {
record, record,
isUpdate: true, isUpdate: true,
showFooter: true, showFooter: true,
}); tenantSaas: false,
});
} }
/** /**
* 详情 * 详情
*/ */
function handleDetail(record: Recordable) { function handleDetail(record: Recordable) {
openModal(true, { openDrawer(true, {
record, record,
isUpdate: true, isUpdate: true,
showFooter: false, showFooter: false,
}); tenantSaas: false,
});
} }
/** /**
* 删除事件 * 删除事件

View File

@ -1,76 +1,87 @@
<template> <template>
<BasicModal v-bind="$attrs" @register="registerModal" destroyOnClose :title="title" :width="800" @ok="handleSubmit"> <BasicDrawer
<BasicForm @register="registerForm" name="ConfigSuppliersInfoForm" /> v-bind="$attrs"
</BasicModal> @register="registerDrawer"
:title="getTitle"
:width="adaptiveWidth"
@ok="handleSubmit"
:showFooter="showFooter"
destroyOnClose
>
<BasicForm @register="registerForm" />
</BasicDrawer>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref, computed, unref} from 'vue'; import { defineComponent, ref, computed, unref, useAttrs } from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal'; import { BasicForm, useForm } from '/@/components/Form/index';
import {BasicForm, useForm} from '/@/components/Form/index'; import { formSchema } from '../ConfigSuppliersInfo.data';
import {formSchema} from '../ConfigSuppliersInfo.data'; import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
import {saveOrUpdate} from '../ConfigSuppliersInfo.api'; import { saveOrUpdate } from '../ConfigSuppliersInfo.api';
// Emits import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth';
const emit = defineEmits(['register','success']); import { getTenantId } from "/@/utils/auth";
const isUpdate = ref(true);
const isDetail = ref(false); // Emits
// const emit = defineEmits(['success', 'register']);
const [registerForm, { setProps,resetFields, setFieldsValue, validate, scrollToField }] = useForm({ const attrs = useAttrs();
labelWidth: 150, const isUpdate = ref(true);
schemas: formSchema, const rowId = ref('');
showActionButtonGroup: false, const departOptions = ref([]);
baseColProps: {span: 24} let isFormDepartUser = false;
}); //
// const [registerForm, { setProps, resetFields, setFieldsValue, validate, updateSchema }] = useForm({
const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => { labelWidth: 90,
// schemas: formSchema,
await resetFields(); showActionButtonGroup: false,
setModalProps({confirmLoading: false,showCancelBtn:!!data?.showFooter,showOkBtn:!!data?.showFooter}); });
isUpdate.value = !!data?.isUpdate; const showFooter = ref(true);
isDetail.value = !!data?.showFooter; //
if (unref(isUpdate)) { const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
// await resetFields();
await setFieldsValue({ showFooter.value = data?.showFooter ?? true;
...data.record, setDrawerProps({ confirmLoading: false, showFooter: showFooter.value });
}); isUpdate.value = !!data?.isUpdate;
}
// if (unref(isUpdate)) {
setProps({ disabled: !data?.showFooter }) //
}); await setFieldsValue({
// ...data.record,
const title = computed(() => (!unref(isUpdate) ? '新增' : !unref(isDetail) ? '详情' : '编辑')); });
//
async function handleSubmit(v) {
try {
let values = await validate();
setModalProps({confirmLoading: true});
//
await saveOrUpdate(values, isUpdate.value);
//
closeModal();
//
emit('success');
} catch ({ errorFields }) {
if (errorFields) {
const firstField = errorFields[0];
if (firstField) {
scrollToField(firstField.name, { behavior: 'smooth', block: 'center' });
}
}
return Promise.reject(errorFields);
} finally {
setModalProps({confirmLoading: false});
}
} }
setProps({ disabled: !showFooter.value });
});
//
const getTitle = computed(() => {
// update-begin--author:liaozhiyang---date:20240306---forQQYUN-8389title
if (!unref(isUpdate)) {
return '新增';
} else {
return unref(showFooter) ? '编辑' : '详情';
}
// update-end--author:liaozhiyang---date:20240306---forQQYUN-8389title
});
const { adaptiveWidth } = useDrawerAdaptiveWidth();
//
async function handleSubmit() {
try {
let values = await validate();
setDrawerProps({ confirmLoading: true });
values.userIdentity === 1 && (values.departIds = '');
let isUpdateVal = unref(isUpdate);
// -update-begin--author:liaozhiyang---date:20240702---forTV360X-1737updateFromPage:"deptUsers"
let params = values;
if (isFormDepartUser) {
params = { ...params, updateFromPage: 'deptUsers' };
}
// -update-end--author:liaozhiyang---date:20240702---forTV360X-1737updateFromPage:"deptUsers"
//
await saveOrUpdate(params, isUpdateVal);
//
closeDrawer();
//
emit('success',{isUpdateVal ,values});
} finally {
setDrawerProps({ confirmLoading: false });
}
}
</script> </script>
<style lang="less" scoped>
/** 时间和数字输入框样式 */
:deep(.ant-input-number) {
width: 100%;
}
:deep(.ant-calendar-picker) {
width: 100%;
}
</style>