Commit f6ca7471 authored by 刘斌's avatar 刘斌

fix: 增加左侧部门选择

parent 60fc2adf
...@@ -100,6 +100,15 @@ export function applyRenewalContract( ...@@ -100,6 +100,15 @@ export function applyRenewalContract(
) { ) {
return requestClient.post('/employee/info/applyRenewalContract', data); return requestClient.post('/employee/info/applyRenewalContract', data);
} }
/**
* 人事专用 - 获取部门树
* @returns 部门树
*/
export function employeeDeptTreeSelect() {
return requestClient.get('/employee/info/deptTree');
}
/** /**
* 下载用户导入模板 * 下载用户导入模板
* @returns blob * @returns blob
......
...@@ -26,7 +26,7 @@ export namespace EmployeeInfoApi { ...@@ -26,7 +26,7 @@ export namespace EmployeeInfoApi {
/** /**
* 工号 * 工号
*/ */
employeeId?: number; employeeNo?: number;
/** /**
* 职级 * 职级
......
...@@ -4,12 +4,15 @@ import type { VbenFormProps } from '@vben/common-ui'; ...@@ -4,12 +4,15 @@ import type { VbenFormProps } from '@vben/common-ui';
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { ContractExpirationReminderApi } from '#/api/hr/contractExpirationReminder'; import type { ContractExpirationReminderApi } from '#/api/hr/contractExpirationReminder';
import { ref } from 'vue';
import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui'; import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui';
import { Button, Space } from 'ant-design-vue'; import { Button, Space } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { apiExport, apiPage } from '#/api/hr/contractExpirationReminder'; import { apiExport, apiPage } from '#/api/hr/contractExpirationReminder';
import { employeeDeptTreeSelect } from '#/api/hr/employeeInfo';
import { GhostButton } from '#/components/global/button'; import { GhostButton } from '#/components/global/button';
import { commonDownloadExcel } from '#/utils/file/download'; import { commonDownloadExcel } from '#/utils/file/download';
...@@ -18,6 +21,8 @@ import applyRenewalContractModel from './apply-renewal_contract-model.vue'; ...@@ -18,6 +21,8 @@ import applyRenewalContractModel from './apply-renewal_contract-model.vue';
import { querySchema, useColumns } from './data'; import { querySchema, useColumns } from './data';
// import Form from './form.vue'; // import Form from './form.vue';
// 左边部门用
const selectDeptId = ref<number[]>([]);
const formOptions: VbenFormProps = { const formOptions: VbenFormProps = {
commonConfig: { commonConfig: {
labelWidth: 80, labelWidth: 80,
...@@ -40,6 +45,15 @@ const formOptions: VbenFormProps = { ...@@ -40,6 +45,15 @@ const formOptions: VbenFormProps = {
['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'],
], ],
], ],
handleReset: async () => {
selectDeptId.value = [];
const { formApi, reload } = gridApi;
await formApi.resetForm();
const formValues = formApi.form.values;
formApi.setLatestSubmissionValues(formValues);
await reload(formValues);
},
}; };
const [EmployeeDetailDrawer, employeeDetailDrawerApi] = useVbenDrawer({ const [EmployeeDetailDrawer, employeeDetailDrawerApi] = useVbenDrawer({
...@@ -61,6 +75,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ ...@@ -61,6 +75,12 @@ const [Grid, gridApi] = useVbenVxeGrid({
proxyConfig: { proxyConfig: {
ajax: { ajax: {
query: async ({ page }, formValues = {}) => { query: async ({ page }, formValues = {}) => {
// 部门树选择处理
if (selectDeptId.value.length === 1) {
formValues.belongDeptId = selectDeptId.value[0];
} else {
Reflect.deleteProperty(formValues, 'belongDeptId');
}
return await apiPage({ return await apiPage({
pageNo: page.currentPage, pageNo: page.currentPage,
pageSize: page.pageSize, pageSize: page.pageSize,
...@@ -134,9 +154,16 @@ function handleDownloadExcel() { ...@@ -134,9 +154,16 @@ function handleDownloadExcel() {
} }
</script> </script>
<template> <template>
<Page auto-content-height> <Page auto-content-height content-class="flex gap-[8px] w-full">
<EmployeeDetailDrawer /> <EmployeeDetailDrawer />
<Grid table-title="员工合同续签提醒列表"> <DeptTree
v-model:select-dept-id="selectDeptId"
:api="employeeDeptTreeSelect"
class="w-[260px]"
@reload="() => gridApi.reload()"
@select="() => gridApi.reload()"
/>
<Grid class="flex-1 overflow-hidden" table-title="员工合同续签提醒列表">
<template #toolbar-tools> <template #toolbar-tools>
<Space> <Space>
<Button <Button
......
...@@ -7,26 +7,26 @@ import { getDictOptions } from '#/utils/dict'; ...@@ -7,26 +7,26 @@ import { getDictOptions } from '#/utils/dict';
import { HrDictEnum } from '../dict-enum'; import { HrDictEnum } from '../dict-enum';
export const querySchema: VbenFormSchema[] = [ export const querySchema: VbenFormSchema[] = [
{ // {
component: 'Input', // component: 'Input',
fieldName: 'plate', // fieldName: 'plate',
label: '板块', // label: '板块',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'firstLevelDepartment', // fieldName: 'firstLevelDepartment',
label: '一级部门', // label: '一级部门',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'secondLevelDepartment', // fieldName: 'secondLevelDepartment',
label: '二级部门', // label: '二级部门',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'thirdLevelDepartment', // fieldName: 'thirdLevelDepartment',
label: '三级部门', // label: '三级部门',
}, // },
{ {
component: 'Input', component: 'Input',
fieldName: 'employeeNo', fieldName: 'employeeNo',
......
...@@ -165,6 +165,9 @@ async function handleOpenChange(open: boolean) { ...@@ -165,6 +165,9 @@ async function handleOpenChange(open: boolean) {
<DescriptionsItem label="年龄"> <DescriptionsItem label="年龄">
{{ currentEmployee.age }} {{ currentEmployee.age }}
</DescriptionsItem> </DescriptionsItem>
<DescriptionsItem label="年龄组">
{{ currentEmployee.ageGroupName }}
</DescriptionsItem>
<DescriptionsItem label="籍贯"> <DescriptionsItem label="籍贯">
{{ currentEmployee.nativePlace }} {{ currentEmployee.nativePlace }}
</DescriptionsItem> </DescriptionsItem>
......
...@@ -22,7 +22,6 @@ import { HrDictEnum } from '../dict-enum'; ...@@ -22,7 +22,6 @@ import { HrDictEnum } from '../dict-enum';
const emit = defineEmits<{ const emit = defineEmits<{
success: []; success: [];
}>(); }>();
const formData = ref<EmployeeInfoApi.Employee>();
const loading = ref(false); const loading = ref(false);
const isUpdate = ref(false); const isUpdate = ref(false);
...@@ -46,6 +45,15 @@ const isUpdate = ref(false); ...@@ -46,6 +45,15 @@ const isUpdate = ref(false);
// } // }
const formSchema: VbenFormSchema[] = [ const formSchema: VbenFormSchema[] = [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'id',
label: 'id',
},
{ {
component: 'Divider', component: 'Divider',
componentProps: { componentProps: {
...@@ -792,10 +800,9 @@ const [Drawer, drawerApi] = useVbenDrawer({ ...@@ -792,10 +800,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
// 初始化 // 初始化
await setupDeptSelect(); await setupDeptSelect();
// console.log('[id]', id); // console.log('[id]', id);
if (id) { if (isUpdate.value && id) {
const data = await apiDetail(id); const data = await apiDetail(id);
formData.value = data; await formApi.setValues(data);
await formApi.setValues(formData.value!);
// await setupDeptLevel2Options(data.firstLevelDepartment); // await setupDeptLevel2Options(data.firstLevelDepartment);
} else { } else {
formApi.resetForm(); formApi.resetForm();
...@@ -828,9 +835,7 @@ async function onSubmit() { ...@@ -828,9 +835,7 @@ async function onSubmit() {
const data = await formApi.getValues<EmployeeInfoApi.Employee>(); const data = await formApi.getValues<EmployeeInfoApi.Employee>();
// console.log('[data]', data); // console.log('[data]', data);
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();
...@@ -846,7 +851,7 @@ async function handleClosed() { ...@@ -846,7 +851,7 @@ async function handleClosed() {
} }
const getDrawerTitle = computed(() => const getDrawerTitle = computed(() =>
formData.value?.id ? '修改员工信息' : '新增员工信息', isUpdate.value ? '修改员工信息' : '新增员工信息',
); );
</script> </script>
<template> <template>
......
...@@ -4,6 +4,8 @@ import type { VbenFormProps } from '@vben/common-ui'; ...@@ -4,6 +4,8 @@ import type { VbenFormProps } from '@vben/common-ui';
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { EmployeeInfoApi } from '#/api/hr/employeeModel'; import type { EmployeeInfoApi } from '#/api/hr/employeeModel';
import { ref } from 'vue';
import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui'; import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui';
import { import {
...@@ -14,9 +16,15 @@ import { ...@@ -14,9 +16,15 @@ import {
import { Button, Space } from 'ant-design-vue'; import { Button, Space } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { apiExport, apiPage, exportEmployeeList } from '#/api/hr/employeeInfo'; import {
apiExport,
apiPage,
employeeDeptTreeSelect,
exportEmployeeList,
} from '#/api/hr/employeeInfo';
import { GhostButton } from '#/components/global/button'; import { GhostButton } from '#/components/global/button';
import { commonDownloadExcel } from '#/utils/file/download'; import { commonDownloadExcel } from '#/utils/file/download';
import DeptTree from '#/views/auth/user/deptTree.vue';
import applyEntryModel from './apply-entry-model.vue'; import applyEntryModel from './apply-entry-model.vue';
import applyResignModel from './apply-resign-model.vue'; import applyResignModel from './apply-resign-model.vue';
...@@ -46,6 +54,8 @@ const [ApplyResignModel, applyResignModelApi] = useVbenModal({ ...@@ -46,6 +54,8 @@ const [ApplyResignModel, applyResignModelApi] = useVbenModal({
connectedComponent: applyResignModel, connectedComponent: applyResignModel,
}); });
// 左边部门用
const selectDeptId = ref<number[]>([]);
const formOptions: VbenFormProps = { const formOptions: VbenFormProps = {
commonConfig: { commonConfig: {
labelWidth: 80, labelWidth: 80,
...@@ -63,6 +73,15 @@ const formOptions: VbenFormProps = { ...@@ -63,6 +73,15 @@ const formOptions: VbenFormProps = {
['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'],
], ],
], ],
handleReset: async () => {
selectDeptId.value = [];
const { formApi, reload } = gridApi;
await formApi.resetForm();
const formValues = formApi.form.values;
formApi.setLatestSubmissionValues(formValues);
await reload(formValues);
},
}; };
const [FormDrawer, formDrawerApi] = useVbenDrawer({ const [FormDrawer, formDrawerApi] = useVbenDrawer({
...@@ -84,6 +103,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ ...@@ -84,6 +103,12 @@ const [Grid, gridApi] = useVbenVxeGrid({
proxyConfig: { proxyConfig: {
ajax: { ajax: {
query: async ({ page }, formValues = {}) => { query: async ({ page }, formValues = {}) => {
// 部门树选择处理
if (selectDeptId.value.length === 1) {
formValues.belongDeptId = selectDeptId.value[0];
} else {
Reflect.deleteProperty(formValues, 'belongDeptId');
}
return await apiPage({ return await apiPage({
pageNo: page.currentPage, pageNo: page.currentPage,
pageSize: page.pageSize, pageSize: page.pageSize,
...@@ -133,10 +158,17 @@ function handleDownloadEmployeeList() { ...@@ -133,10 +158,17 @@ function handleDownloadEmployeeList() {
} }
</script> </script>
<template> <template>
<Page auto-content-height> <Page auto-content-height content-class="flex gap-[8px] w-full">
<FormDrawer @success="onRefresh" /> <FormDrawer @success="onRefresh" />
<EmployeeDetailDrawer /> <EmployeeDetailDrawer />
<Grid table-title="员工信息列表"> <DeptTree
v-model:select-dept-id="selectDeptId"
:api="employeeDeptTreeSelect"
class="w-[260px]"
@reload="() => gridApi.reload()"
@select="() => gridApi.reload()"
/>
<Grid class="flex-1 overflow-hidden" table-title="员工信息列表">
<template #toolbar-tools> <template #toolbar-tools>
<Space> <Space>
<Button <Button
......
...@@ -3,26 +3,26 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; ...@@ -3,26 +3,26 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { PhoneBookApi } from '#/api/hr/phoneBook'; import type { PhoneBookApi } from '#/api/hr/phoneBook';
export const querySchema: VbenFormSchema[] = [ export const querySchema: VbenFormSchema[] = [
{ // {
component: 'Input', // component: 'Input',
fieldName: 'plate', // fieldName: 'plate',
label: '板块', // label: '板块',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'firstLevelDepartment', // fieldName: 'firstLevelDepartment',
label: '一级部门', // label: '一级部门',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'secondLevelDepartment', // fieldName: 'secondLevelDepartment',
label: '二级部门', // label: '二级部门',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'thirdLevelDepartment', // fieldName: 'thirdLevelDepartment',
label: '三级部门', // label: '三级部门',
}, // },
// { // {
// component: 'Input', // component: 'Input',
// fieldName: 'deptId', // fieldName: 'deptId',
......
...@@ -3,17 +3,23 @@ import type { VbenFormProps } from '@vben/common-ui'; ...@@ -3,17 +3,23 @@ import type { VbenFormProps } from '@vben/common-ui';
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import { ref } from 'vue';
import { Page } from '@vben/common-ui'; import { Page } from '@vben/common-ui';
import { Button, Space } from 'ant-design-vue'; import { Button, Space } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { employeeDeptTreeSelect } from '#/api/hr/employeeInfo';
import { apiExport, apiPage } from '#/api/hr/phoneBook'; import { apiExport, apiPage } from '#/api/hr/phoneBook';
import { commonDownloadExcel } from '#/utils/file/download'; import { commonDownloadExcel } from '#/utils/file/download';
import DeptTree from '#/views/auth/user/deptTree.vue';
import { querySchema, useColumns } from './data'; import { querySchema, useColumns } from './data';
// import Form from './form.vue'; // import Form from './form.vue';
// 左边部门用
const selectDeptId = ref<number[]>([]);
const formOptions: VbenFormProps = { const formOptions: VbenFormProps = {
commonConfig: { commonConfig: {
labelWidth: 80, labelWidth: 80,
...@@ -23,6 +29,15 @@ const formOptions: VbenFormProps = { ...@@ -23,6 +29,15 @@ const formOptions: VbenFormProps = {
}, },
schema: querySchema, schema: querySchema,
wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4', wrapperClass: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',
handleReset: async () => {
selectDeptId.value = [];
const { formApi, reload } = gridApi;
await formApi.resetForm();
const formValues = formApi.form.values;
formApi.setLatestSubmissionValues(formValues);
await reload(formValues);
},
}; };
// const [FormDrawer, formDrawerApi] = useVbenDrawer({ // const [FormDrawer, formDrawerApi] = useVbenDrawer({
...@@ -41,6 +56,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ ...@@ -41,6 +56,12 @@ const [Grid, gridApi] = useVbenVxeGrid({
proxyConfig: { proxyConfig: {
ajax: { ajax: {
query: async ({ page }, formValues = {}) => { query: async ({ page }, formValues = {}) => {
// 部门树选择处理
if (selectDeptId.value.length === 1) {
formValues.belongDeptId = selectDeptId.value[0];
} else {
Reflect.deleteProperty(formValues, 'belongDeptId');
}
return await apiPage({ return await apiPage({
pageNo: page.currentPage, pageNo: page.currentPage,
pageSize: page.pageSize, pageSize: page.pageSize,
...@@ -105,9 +126,16 @@ function handleDownloadExcel() { ...@@ -105,9 +126,16 @@ function handleDownloadExcel() {
} }
</script> </script>
<template> <template>
<Page auto-content-height> <Page auto-content-height content-class="flex gap-[8px] w-full">
<!-- <FormDrawer @success="onRefresh" /> --> <!-- <FormDrawer @success="onRefresh" /> -->
<Grid table-title="电话本"> <DeptTree
v-model:select-dept-id="selectDeptId"
:api="employeeDeptTreeSelect"
class="w-[260px]"
@reload="() => gridApi.reload()"
@select="() => gridApi.reload()"
/>
<Grid class="flex-1 overflow-hidden" table-title="电话本">
<template #toolbar-tools> <template #toolbar-tools>
<Space> <Space>
<Button <Button
......
...@@ -4,11 +4,14 @@ import type { VbenFormProps } from '@vben/common-ui'; ...@@ -4,11 +4,14 @@ import type { VbenFormProps } from '@vben/common-ui';
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { EmployeeRegularReminderApi } from '#/api/hr/regularReminder'; import type { EmployeeRegularReminderApi } from '#/api/hr/regularReminder';
import { ref } from 'vue';
import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui'; import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui';
import { Button, Space } from 'ant-design-vue'; import { Button, Space } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { employeeDeptTreeSelect } from '#/api/hr/employeeInfo';
import { apiExport, apiPage } from '#/api/hr/regularReminder'; import { apiExport, apiPage } from '#/api/hr/regularReminder';
import { GhostButton } from '#/components/global/button'; import { GhostButton } from '#/components/global/button';
import { commonDownloadExcel } from '#/utils/file/download'; import { commonDownloadExcel } from '#/utils/file/download';
...@@ -18,6 +21,8 @@ import applyRegularModel from './apply-regular-model.vue'; ...@@ -18,6 +21,8 @@ import applyRegularModel from './apply-regular-model.vue';
import { querySchema, useColumns } from './data'; import { querySchema, useColumns } from './data';
// import Form from './form.vue'; // import Form from './form.vue';
// 左边部门用
const selectDeptId = ref<number[]>([]);
const formOptions: VbenFormProps = { const formOptions: VbenFormProps = {
commonConfig: { commonConfig: {
labelWidth: 80, labelWidth: 80,
...@@ -40,6 +45,15 @@ const formOptions: VbenFormProps = { ...@@ -40,6 +45,15 @@ const formOptions: VbenFormProps = {
['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'],
], ],
], ],
handleReset: async () => {
selectDeptId.value = [];
const { formApi, reload } = gridApi;
await formApi.resetForm();
const formValues = formApi.form.values;
formApi.setLatestSubmissionValues(formValues);
await reload(formValues);
},
}; };
const [EmployeeDetailDrawer, employeeDetailDrawerApi] = useVbenDrawer({ const [EmployeeDetailDrawer, employeeDetailDrawerApi] = useVbenDrawer({
...@@ -61,6 +75,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ ...@@ -61,6 +75,12 @@ const [Grid, gridApi] = useVbenVxeGrid({
proxyConfig: { proxyConfig: {
ajax: { ajax: {
query: async ({ page }, formValues = {}) => { query: async ({ page }, formValues = {}) => {
// 部门树选择处理
if (selectDeptId.value.length === 1) {
formValues.belongDeptId = selectDeptId.value[0];
} else {
Reflect.deleteProperty(formValues, 'belongDeptId');
}
return await apiPage({ return await apiPage({
pageNo: page.currentPage, pageNo: page.currentPage,
pageSize: page.pageSize, pageSize: page.pageSize,
...@@ -130,9 +150,16 @@ function handleDownloadExcel() { ...@@ -130,9 +150,16 @@ function handleDownloadExcel() {
} }
</script> </script>
<template> <template>
<Page auto-content-height> <Page auto-content-height content-class="flex gap-[8px] w-full">
<EmployeeDetailDrawer /> <EmployeeDetailDrawer />
<Grid table-title="转正提醒列表"> <DeptTree
v-model:select-dept-id="selectDeptId"
:api="employeeDeptTreeSelect"
class="w-[260px]"
@reload="() => gridApi.reload()"
@select="() => gridApi.reload()"
/>
<Grid class="flex-1 overflow-hidden" table-title="转正提醒列表">
<template #toolbar-tools> <template #toolbar-tools>
<Space> <Space>
<Button <Button
......
...@@ -7,26 +7,26 @@ import { getDictOptions } from '#/utils/dict'; ...@@ -7,26 +7,26 @@ import { getDictOptions } from '#/utils/dict';
import { HrDictEnum } from '../dict-enum'; import { HrDictEnum } from '../dict-enum';
export const querySchema: VbenFormSchema[] = [ export const querySchema: VbenFormSchema[] = [
{ // {
component: 'Input', // component: 'Input',
fieldName: 'plate', // fieldName: 'plate',
label: '板块', // label: '板块',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'firstLevelDepartment', // fieldName: 'firstLevelDepartment',
label: '一级部门', // label: '一级部门',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'secondLevelDepartment', // fieldName: 'secondLevelDepartment',
label: '二级部门', // label: '二级部门',
}, // },
{ // {
component: 'Input', // component: 'Input',
fieldName: 'thirdLevelDepartment', // fieldName: 'thirdLevelDepartment',
label: '三级部门', // label: '三级部门',
}, // },
{ {
component: 'Input', component: 'Input',
fieldName: 'employeeNo', fieldName: 'employeeNo',
......
...@@ -4,15 +4,19 @@ import type { VbenFormProps } from '@vben/common-ui'; ...@@ -4,15 +4,19 @@ import type { VbenFormProps } from '@vben/common-ui';
import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { EmployeeInfoApi } from '#/api/hr/employeeModel'; import type { EmployeeInfoApi } from '#/api/hr/employeeModel';
import { ref } from 'vue';
import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui'; import { Page, useVbenDrawer, useVbenModal } from '@vben/common-ui';
import { ExportOutlined, UploadOutlined } from '@ant-design/icons-vue'; import { ExportOutlined, UploadOutlined } from '@ant-design/icons-vue';
import { Button, Space } from 'ant-design-vue'; import { Button, Space } from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { useVbenVxeGrid } from '#/adapter/vxe-table';
import { employeeDeptTreeSelect } from '#/api/hr/employeeInfo';
import { apiPage, exportEmployeeList } from '#/api/hr/resignEmployee'; import { apiPage, exportEmployeeList } from '#/api/hr/resignEmployee';
import { GhostButton } from '#/components/global/button'; import { GhostButton } from '#/components/global/button';
import { commonDownloadExcel } from '#/utils/file/download'; import { commonDownloadExcel } from '#/utils/file/download';
import DeptTree from '#/views/auth/user/deptTree.vue';
import employeeDetailDrawer from '../employeeInfo/employee-detail-drawer.vue'; import employeeDetailDrawer from '../employeeInfo/employee-detail-drawer.vue';
import { querySchema, useColumns } from './data'; import { querySchema, useColumns } from './data';
...@@ -28,6 +32,8 @@ function handleImport() { ...@@ -28,6 +32,8 @@ function handleImport() {
resignEmployeeImportModalApi.open(); resignEmployeeImportModalApi.open();
} }
// 左边部门用
const selectDeptId = ref<number[]>([]);
const formOptions: VbenFormProps = { const formOptions: VbenFormProps = {
commonConfig: { commonConfig: {
labelWidth: 80, labelWidth: 80,
...@@ -45,6 +51,15 @@ const formOptions: VbenFormProps = { ...@@ -45,6 +51,15 @@ const formOptions: VbenFormProps = {
['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'], ['YYYY-MM-DD 00:00:00', 'YYYY-MM-DD 23:59:59'],
], ],
], ],
handleReset: async () => {
selectDeptId.value = [];
const { formApi, reload } = gridApi;
await formApi.resetForm();
const formValues = formApi.form.values;
formApi.setLatestSubmissionValues(formValues);
await reload(formValues);
},
}; };
const [EmployeeDetailDrawer, employeeDetailDrawerApi] = useVbenDrawer({ const [EmployeeDetailDrawer, employeeDetailDrawerApi] = useVbenDrawer({
...@@ -63,6 +78,12 @@ const [Grid, gridApi] = useVbenVxeGrid({ ...@@ -63,6 +78,12 @@ const [Grid, gridApi] = useVbenVxeGrid({
proxyConfig: { proxyConfig: {
ajax: { ajax: {
query: async ({ page }, formValues = {}) => { query: async ({ page }, formValues = {}) => {
// 部门树选择处理
if (selectDeptId.value.length === 1) {
formValues.belongDeptId = selectDeptId.value[0];
} else {
Reflect.deleteProperty(formValues, 'belongDeptId');
}
return await apiPage({ return await apiPage({
pageNo: page.currentPage, pageNo: page.currentPage,
pageSize: page.pageSize, pageSize: page.pageSize,
...@@ -95,9 +116,16 @@ function handleDownloadEmployeeList() { ...@@ -95,9 +116,16 @@ function handleDownloadEmployeeList() {
} }
</script> </script>
<template> <template>
<Page auto-content-height> <Page auto-content-height content-class="flex gap-[8px] w-full">
<EmployeeDetailDrawer /> <EmployeeDetailDrawer />
<Grid table-title="离职员工列表"> <DeptTree
v-model:select-dept-id="selectDeptId"
:api="employeeDeptTreeSelect"
class="w-[260px]"
@reload="() => gridApi.reload()"
@select="() => gridApi.reload()"
/>
<Grid class="flex-1 overflow-hidden" table-title="离职员工列表">
<template #toolbar-tools> <template #toolbar-tools>
<Space> <Space>
<Button <Button
......
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