| | |
| | | <!-- <el-button @click="handleDownloadTemplate()" type="primary" link>模板下载</el-button> --> |
| | | <!-- <el-button @click="handleBatchImportAdd()" type="primary">批量导入</el-button> --> |
| | | <!-- <el-button @click="handleStaffInfoAdd()" type="primary">新建</el-button> --> |
| | | <el-button @click="handleBatchUnSign()" type="primary">批量解约</el-button> |
| | | <el-button @click="handleSendShotMessage()" type="primary">短信发送</el-button> |
| | | <el-button @click="handleBatchSign()" type="primary">批量签约</el-button> |
| | | <!-- <el-button @click="handleEnterpriseBatchSign()" type="primary">批量企业签约</el-button> --> |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'batchUnSignBtn')" |
| | | @click="handleBatchUnSign()" |
| | | type="primary" |
| | | >批量解约</el-button |
| | | > |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'sendShotMessageBtn')" |
| | | @click="handleSendShotMessage()" |
| | | type="primary" |
| | | >短信发送</el-button |
| | | > |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'batchSignBtn')" |
| | | @click="handleBatchSign()" |
| | | type="primary" |
| | | >批量签约</el-button |
| | | > |
| | | <el-button |
| | | v-if="checkSubModuleItemShow('pageButton', 'batchEnterpriseSignBtn')" |
| | | @click="handleEnterpriseBatchSign()" |
| | | type="primary" |
| | | >批量企业签约</el-button |
| | | > |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="FlexJobContractManageColumns" |
| | | :columns="column" |
| | | :operationBtns="operationBtns" |
| | | show-column-check |
| | | ref="proTable" |
| | |
| | | > |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <StaffInfoDialog v-bind="dialogStaffInfoProps" /> |
| | | <!-- <StaffInfoDialog v-bind="dialogStaffInfoProps" /> --> |
| | | <StaffDetailInfoDialog v-bind="dialogStaffDetailProps" /> |
| | | <BatchImportDialog |
| | | v-bind="dialogBatchImportProps" |
| | |
| | | QueryFilterItem, |
| | | useTable, |
| | | FieldDatePicker, |
| | | FieldRadio, |
| | | FieldSelect, |
| | | defineOperationBtns, |
| | | useFormDialog, |
| | | UploadUserFile, |
| | | XLSXUtils, |
| | | } from '@bole-core/components'; |
| | | import { FlexJobContractManageColumns } from './constants'; |
| | | import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants'; |
| | | import { Message } from '@bole-core/core'; |
| | | import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils'; |
| | | import StaffInfoDialog from './components/StaffInfoDialog.vue'; |
| | | // import StaffInfoDialog from './components/StaffInfoDialog.vue'; |
| | | import BatchImportDialog from './components/BatchImportDialog.vue'; |
| | | import SendShotMessageDialog from './components/SendShotMessageDialog.vue'; |
| | | import StaffDetailInfoDialog from './components/StaffDetailInfoDialog.vue'; |
| | |
| | | import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee'; |
| | | import { ModelValueType } from 'element-plus'; |
| | | import _ from 'lodash'; |
| | | import { getEnterpriseEmployeesHooks } from './hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'FlexJobContractManage', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | // { |
| | | // data: { |
| | | // enCode: 'editBtn', |
| | | // name: '编辑', |
| | | // }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | // editBtn: { |
| | | // emits: { |
| | | // onClick: (role) => openDialog(role), |
| | | // }, |
| | | // }, |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role: API.GetEnterpriseEmployeesQueryResultItem) => |
| | | handleStaffDetailEdit({ id: role.id, tabType: 'info' }), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'enterpriseSignBtn', |
| | | name: '企业签约', |
| | | }, |
| | | enterpriseSignBtn: { |
| | | emits: { |
| | | onClick: (role) => handleEnterpriseSign(role), |
| | | }, |
| | |
| | | hide: (row: API.GetEnterpriseEmployeesQueryResultItem) => |
| | | !( |
| | | row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass && |
| | | row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait |
| | | row.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait && |
| | | row.source === EnumEnterpriseEmployeeSource.Internal |
| | | ), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'inviteSignBtn', |
| | | name: '邀请签约', |
| | | }, |
| | | inviteSignBtn: { |
| | | emits: { |
| | | onClick: (role) => handleInviteSign(role), |
| | | }, |
| | |
| | | hide: (row: API.GetEnterpriseEmployeesQueryResultItem) => |
| | | !( |
| | | row.userSignContractStatus !== EnumTaskUserSignContractStatus.Pass && |
| | | row.hireStatus === EnumTaskUserHireStatus.Pass |
| | | ((row.hireStatus === EnumTaskUserHireStatus.Pass && |
| | | row.source === EnumEnterpriseEmployeeSource.External) || |
| | | row.source === EnumEnterpriseEmployeeSource.Internal) |
| | | ), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'unSignBtn', |
| | | name: '解约', |
| | | }, |
| | | unSignBtn: { |
| | | emits: { |
| | | onClick: (role) => handleUnSign(role), |
| | | }, |
| | |
| | | ), |
| | | }, |
| | | }, |
| | | // { |
| | | // data: { |
| | | // enCode: 'delBtn', |
| | | // name: '删除', |
| | | // }, |
| | | // props: { type: 'danger' }, |
| | | // emits: { |
| | | // onClick: (role) => handleDelete(role), |
| | | // }, |
| | | // }, |
| | | ]); |
| | | delBtn: { |
| | | props: { type: 'danger' }, |
| | | emits: { |
| | | onClick: (role) => handleDelete(role), |
| | | }, |
| | | }, |
| | | }; |
| | | |
| | | const { checkSubModuleItemShow, column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | |
| | |
| | | state.loading = false; |
| | | }); |
| | | |
| | | const { |
| | | getDataSource: getList, |
| | | proTableProps, |
| | | paginationState, |
| | | extraParamState, |
| | | reset, |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetEnterpriseEmployeesQuery = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | keywords: extraParamState.searchWord, |
| | | createdTimeStart: format(extraParamState.createdTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), |
| | | createdTimeEnd: format(extraParamState.createdTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), |
| | | signContractTimeStart: format( |
| | | extraParamState.signContractTime?.[0] ?? '', |
| | | 'YYYY-MM-DD 00:00:00' |
| | | ), |
| | | signContractTimeEnd: format( |
| | | extraParamState.signContractTime?.[1] ?? '', |
| | | 'YYYY-MM-DD 23:59:59' |
| | | ), |
| | | hireStatus: extraParamState.hireStatus, |
| | | isReal: extraParamState.isReal, |
| | | userSignContractStatus: extraParamState.userSignContractStatus, |
| | | enterpriseSignContractStatus: extraParamState.enterpriseSignContractStatus, |
| | | }; |
| | | |
| | | let res = await enterpriseEmployeeServices.getEnterpriseEmployees(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | | } catch (error) { |
| | | console.log('error: ', error); |
| | | } |
| | | }, |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }], |
| | | createdTime: [] as unknown as ModelValueType, |
| | | signContractTime: [] as unknown as ModelValueType, |
| | | hireStatus: '' as any as EnumTaskUserHireStatus, |
| | | isReal: null as any as boolean, |
| | | userSignContractStatus: '' as any as EnumTaskUserSignContractStatus, |
| | | enterpriseSignContractStatus: '' as any as EnumTaskUserSignContractStatus, |
| | | }, |
| | | queryKey: ['enterpriseEmployeeServices/getEnterpriseEmployees'], |
| | | columnsRenderProps: { |
| | | gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson }, |
| | | hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText }, |
| | | userIsReal: { |
| | | formatter: (row: API.GetEnterpriseEmployeesQueryResultItem) => { |
| | | return row.userIsReal ? '已实名' : '未实名'; |
| | | }, |
| | | }, |
| | | userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText }, |
| | | hireTime: { type: 'date' }, |
| | | userRealTime: { type: 'date' }, |
| | | userSignContractTime: { type: 'date' }, |
| | | enterpriseSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText }, |
| | | enterpriseSignContractTime: { type: 'date' }, |
| | | }, |
| | | } |
| | | ); |
| | | const { getList, proTableProps, paginationState, extraParamState, reset } = |
| | | getEnterpriseEmployeesHooks(); |
| | | |
| | | const proTable = ref<InstanceType<typeof ProTableV2>>(); |
| | | |