修改抽屉形式

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,29 +108,32 @@
* 新增事件 * 新增事件
*/ */
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";
// Emits
const emit = defineEmits(['success', 'register']);
const attrs = useAttrs();
const isUpdate = ref(true); const isUpdate = ref(true);
const isDetail = ref(false); const rowId = ref('');
const departOptions = ref([]);
let isFormDepartUser = false;
// //
const [registerForm, { setProps,resetFields, setFieldsValue, validate, scrollToField }] = useForm({ const [registerForm, { setProps, resetFields, setFieldsValue, validate, updateSchema }] = useForm({
labelWidth: 150, labelWidth: 90,
schemas: formSchema, schemas: formSchema,
showActionButtonGroup: false, showActionButtonGroup: false,
baseColProps: {span: 24}
}); });
const showFooter = ref(true);
// //
const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => { const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
//
await resetFields(); await resetFields();
setModalProps({confirmLoading: false,showCancelBtn:!!data?.showFooter,showOkBtn:!!data?.showFooter}); showFooter.value = data?.showFooter ?? true;
setDrawerProps({ confirmLoading: false, showFooter: showFooter.value });
isUpdate.value = !!data?.isUpdate; isUpdate.value = !!data?.isUpdate;
isDetail.value = !!data?.showFooter;
if (unref(isUpdate)) { if (unref(isUpdate)) {
// //
await setFieldsValue({ await setFieldsValue({
...data.record, ...data.record,
}); });
} }
// setProps({ disabled: !showFooter.value });
setProps({ disabled: !data?.showFooter })
}); });
// //
const title = computed(() => (!unref(isUpdate) ? '新增' : !unref(isDetail) ? '详情' : '编辑')); const getTitle = computed(() => {
// // update-begin--author:liaozhiyang---date:20240306---forQQYUN-8389title
async function handleSubmit(v) { if (!unref(isUpdate)) {
return '新增';
} else {
return unref(showFooter) ? '编辑' : '详情';
}
// update-end--author:liaozhiyang---date:20240306---forQQYUN-8389title
});
const { adaptiveWidth } = useDrawerAdaptiveWidth();
//
async function handleSubmit() {
try { try {
let values = await validate(); let values = await validate();
setModalProps({confirmLoading: true}); 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(values, isUpdate.value); await saveOrUpdate(params, isUpdateVal);
// //
closeModal(); closeDrawer();
// //
emit('success'); emit('success',{isUpdateVal ,values});
} catch ({ errorFields }) {
if (errorFields) {
const firstField = errorFields[0];
if (firstField) {
scrollToField(firstField.name, { behavior: 'smooth', block: 'center' });
}
}
return Promise.reject(errorFields);
} finally { } finally {
setModalProps({confirmLoading: false}); setDrawerProps({ confirmLoading: false });
} }
} }
</script> </script>
<style lang="less" scoped>
/** 时间和数字输入框样式 */
:deep(.ant-input-number) {
width: 100%;
}
:deep(.ant-calendar-picker) {
width: 100%;
}
</style>