<template>
<BasicDrawer @register="registerDrawer" :title="title" :width="580" destroyOnClose @ok="handleSubmit">
<BasicForm @register="registerForm" />
</BasicDrawer>
</template>
<script lang="ts">
import { defineComponent, ref, unref, computed } from 'vue';
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
import { BasicForm, useForm } from '/@/components/Form';
import { getUserDepartList } from '../../user/user.api';
import { tenantUserSchema } from '../tenant.data';
import { saveOrUpdateTenantUser } from '../tenant.api';
export default defineComponent({
name: 'TenantUserDrawer',
components: {
BasicDrawer,
BasicForm,
},
emits: ['success', 'register'],
setup(_p, { emit }) {
const status = ref<string>('');
const isUpdate = ref(false);
const title = computed(() => {
return isUpdate.value ? '编辑人员' : '添加人员';
});
//表单
const [registerForm, { setFieldsValue, resetFields, validate, setProps, clearValidate }] = useForm({
schemas: tenantUserSchema,
showActionButtonGroup: false,
labelCol: { span: 24 },
wrapperCol: { span: 24 },
});
const showFooter = ref<boolean>(true);
// modal
const [registerDrawer, { closeDrawer, setDrawerProps }] = useDrawerInner(async (data) => {
isUpdate.value = data.isUpdate;
await resetFields();
showFooter.value = data?.showFooter ?? true;
setDrawerProps({ showFooter: showFooter.value });
if (unref(isUpdate)) {
const userDepart = await getUserDepartList({ userId: data.record.id });
let departData: any = '';
if (userDepart && userDepart.length > 0) {
departData = userDepart.map((item) => item.value);
}
let formData = {
...data.record,
selecteddeparts: departData,
selectedroles: data.record.selectedroles,
};
status.value = data.status;
await setFieldsValue(formData);
}
// 隐藏底部时禁用整个表单
setProps({ disabled: !data?.showFooter });
if(!data?.showFooter){
await clearValidate();
}
});
const confirmLoading = ref<boolean>(false);
//提交事件
async function handleSubmit() {
const data: any = await validate();
if (!data.username) {
data.username = data.phone;
}
data.password = '123456';
confirmLoading.value = true;
await saveOrUpdateTenantUser(data, isUpdate.value);
confirmLoading.value = false;
emit('success');
handleClose();
}
/**
* 取消
*/
function handleClose() {
closeDrawer();
}
return {
isUpdate,
title,
registerForm,
registerDrawer,
handleSubmit,
handleClose,
status,
confirmLoading,
};
},
});
</script>