| | |
| | | <template #query> |
| | | <QueryFilterItem tip-content="录用状态"> |
| | | <FieldRadio |
| | | v-model="extraParamState.flexEnterpriseSettingStatus" |
| | | :value-enum="[ |
| | | { label: '已录用', value: 1 }, |
| | | { label: '待录用', value: 0 }, |
| | | ]" |
| | | v-model="extraParamState.hireStatus" |
| | | :value-enum="EnumTaskUserHireStatusText" |
| | | buttonStyle |
| | | showAllBtn |
| | | @change="getList()" |
| | |
| | | </QueryFilterItem> |
| | | </template> |
| | | </ProTableQueryFilterBar> |
| | | <ProTableV2 |
| | | v-bind="proTableProps" |
| | | :columns="EmploymentSignColumns" |
| | | :operationBtns="operationBtns" |
| | | > |
| | | <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> |
| | | </ProTableV2> |
| | | </AppContainer> |
| | | <StaffInfoDialog v-bind="dialogStaffInfoProps" /> |
| | | <RefuseDialog v-bind="dialogProps" /> |
| | | </LoadingLayout> |
| | | </template> |
| | | |
| | |
| | | QueryFilterItem, |
| | | useTable, |
| | | FieldRadio, |
| | | defineOperationBtns, |
| | | useFormDialog, |
| | | UploadUserFile, |
| | | } from '@bole-core/components'; |
| | | import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; |
| | | import { EmploymentSignColumns } from './constants/columns'; |
| | | import { OrderInputType, Message } from '@bole-core/core'; |
| | | import { FlexEnterpriseSettingStatus, Gender } from '@/constants'; |
| | | import { Message } from '@bole-core/core'; |
| | | import { EnumUserGender, EnumTaskUserHireStatusText } from '@/constants'; |
| | | import StaffInfoDialog from '@/views/FlexJobManage/components/StaffInfoDialog.vue'; |
| | | import { convertApi2FormUrlOnlyOne } from '@/utils'; |
| | | import { convertApi2FormUrlOnlyOne, hiddenIDNumberForEnd4 } from '@/utils'; |
| | | import * as taskUserServices from '@/services/api/taskUser'; |
| | | import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee'; |
| | | import RefuseDialog from './components/RefuseDialog.vue'; |
| | | |
| | | defineOptions({ |
| | | name: 'EmploymentSignList', |
| | | }); |
| | | |
| | | const operationBtns = defineOperationBtns([ |
| | | { |
| | | data: { |
| | | enCode: 'detailBtn', |
| | | name: '详情', |
| | | }, |
| | | const operationBtnMap: Record<string, OperationBtnType> = { |
| | | detailBtn: { |
| | | emits: { |
| | | onClick: (role) => openDialog(role), |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'recruitBtn', |
| | | name: '录用', |
| | | }, |
| | | recruitBtn: { |
| | | emits: { |
| | | onClick: (role) => handleRecruit(role), |
| | | onClick: (role) => handleRecruit(role.id, EnumTaskUserHireStatus.Pass), |
| | | }, |
| | | extraProps: { |
| | | hide: (row) => false, |
| | | hide: (row: API.GetTaskUsersQueryResultItem) => |
| | | row.hireStatus === EnumTaskUserHireStatus.Pass, |
| | | }, |
| | | }, |
| | | { |
| | | data: { |
| | | enCode: 'refuseBtn', |
| | | name: '谢绝', |
| | | }, |
| | | cancelRecruitBtn: { |
| | | emits: { |
| | | onClick: (role) => handleRefuse(role), |
| | | onClick: (role) => handleCancelRecruit(role.id, EnumTaskUserHireStatus.Cancel), |
| | | }, |
| | | extraProps: { |
| | | hide: (row) => false, |
| | | hide: (row: API.GetTaskUsersQueryResultItem) => |
| | | row.hireStatus !== EnumTaskUserHireStatus.Pass, |
| | | }, |
| | | }, |
| | | ]); |
| | | refuseBtn: { |
| | | emits: { |
| | | onClick: (role) => openRefuseDialog(role), |
| | | }, |
| | | extraProps: { |
| | | hide: (row: API.GetTaskUsersQueryResultItem) => |
| | | row.hireStatus !== EnumTaskUserHireStatus.Wait, |
| | | }, |
| | | }, |
| | | }; |
| | | |
| | | const { column, operationBtns } = useAccess({ |
| | | operationBtnMap, |
| | | }); |
| | | |
| | | const router = useRouter(); |
| | | const route = useRoute(); |
| | |
| | | } = useTable( |
| | | async ({ pageIndex, pageSize }, extraParamState) => { |
| | | try { |
| | | let params: API.GetFlexEnterpriseInput = { |
| | | let params: API.GetTaskUsersQuery = { |
| | | pageModel: { |
| | | rows: pageSize, |
| | | page: pageIndex, |
| | | orderInput: extraParamState.orderInput, |
| | | }, |
| | | flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus, |
| | | searchWord: extraParamState.searchWord, |
| | | id: id, |
| | | keywords: extraParamState.searchWord, |
| | | hireStatus: extraParamState.hireStatus, |
| | | }; |
| | | |
| | | let res = await flexEnterpriseServices.getFlexEnterpriseList(params, { |
| | | let res = await taskUserServices.getTaskUsers(params, { |
| | | showLoading: !state.loading, |
| | | }); |
| | | return res; |
| | |
| | | { |
| | | defaultExtraParams: { |
| | | searchWord: '', |
| | | orderInput: [{ property: 'id', order: OrderInputType.Desc }], |
| | | flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, |
| | | orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], |
| | | hireStatus: '' as any as EnumTaskUserHireStatus, |
| | | }, |
| | | queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], |
| | | columnsRenderProps: {}, |
| | | queryKey: ['taskUserServices/getTaskUsers'], |
| | | columnsRenderProps: { |
| | | gender: { type: 'enum', valueEnum: EnumUserGenderTextForPerson }, |
| | | hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText }, |
| | | identity: { |
| | | formatter: (row: API.GetTaskUsersQueryResultItem) => { |
| | | return hiddenIDNumberForEnd4(row.identity); |
| | | }, |
| | | }, |
| | | }, |
| | | } |
| | | ); |
| | | |
| | |
| | | defaultFormParams: { |
| | | id: '', |
| | | name: '', |
| | | idNumber: '', |
| | | phoneNumber: '', |
| | | genderType: Gender.Male, |
| | | age: 0, |
| | | companyId: '', |
| | | customerId: '', |
| | | idFrontUrl: [] as UploadUserFile[], |
| | | idBackUrl: [] as UploadUserFile[], |
| | | identity: '', |
| | | contactPhoneNumber: '', |
| | | gender: EnumUserGender.Male, |
| | | age: null as any as number, |
| | | identityImg: [] as UploadUserFile[], |
| | | identityBackImg: [] as UploadUserFile[], |
| | | contractUrl: [] as UploadUserFile[], |
| | | regiterTime: '', |
| | | realVerifyTime: '', |
| | | signTime: '', |
| | | userRealTime: '', |
| | | userSignContractTime: '', |
| | | isDetail: false, |
| | | }, |
| | | }); |
| | | |
| | | function openDialog(row) { |
| | | handleStaffInfoEdit({ |
| | | id: row.id, |
| | | name: row.name, |
| | | idNumber: row.idNumber, |
| | | phoneNumber: row.phoneNumber, |
| | | genderType: Gender.Male, |
| | | age: row.age ?? 0, |
| | | companyId: row.companyId, |
| | | customerId: row.customerId, |
| | | idFrontUrl: convertApi2FormUrlOnlyOne(row.idFrontUrl), |
| | | idBackUrl: convertApi2FormUrlOnlyOne(row.idBackUrl), |
| | | contractUrl: convertApi2FormUrlOnlyOne(row.contractUrl, { |
| | | fileName: row.contractUrl ? row.contractUrl.split('/').pop() : '合同', |
| | | }), |
| | | regiterTime: row.regiterTime, |
| | | realVerifyTime: row.realVerifyTime, |
| | | signTime: row.signTime, |
| | | isDetail: true, |
| | | }); |
| | | async function openDialog(row: API.GetTaskUsersQueryResultItem) { |
| | | try { |
| | | let detail = await enterpriseEmployeeServices.getEnterpriseEmployee({ |
| | | id: row.enterpriseEmployeeId, |
| | | }); |
| | | handleStaffInfoEdit({ |
| | | id: row.id, |
| | | name: row.name, |
| | | identity: row.identity, |
| | | contactPhoneNumber: row.contactPhoneNumber, |
| | | gender: detail.gender, |
| | | age: detail.age ?? null, |
| | | identityImg: convertApi2FormUrlOnlyOne(detail.identityImg), |
| | | identityBackImg: convertApi2FormUrlOnlyOne(detail.identityBackImg), |
| | | contractUrl: convertApi2FormUrlOnlyOne(detail.contractUrl, { |
| | | fileName: detail.contractUrl ? detail.contractUrl.split('/').pop() : '合同', |
| | | }), |
| | | regiterTime: detail.applyTime ?? '', |
| | | userRealTime: detail.userRealTime ?? '', |
| | | userSignContractTime: detail.userSignContractTime ?? '', |
| | | isDetail: true, |
| | | }); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | function handleRecruit(row) {} |
| | | function handleRefuse(row) {} |
| | | const { dialogProps, handleAdd, editForm } = useFormDialog({ |
| | | onConfirm: handleRefuse, |
| | | defaultFormParams: { |
| | | id: '', |
| | | remark: '', |
| | | }, |
| | | }); |
| | | |
| | | async function openRefuseDialog(row: API.GetTaskUsersQueryResultItem) { |
| | | try { |
| | | await Message.tipMessage(`确认要谢绝吗?`); |
| | | handleAdd({ |
| | | id: row.id, |
| | | }); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function handleRefuse() { |
| | | setTaskUserHire(editForm.id, EnumTaskUserHireStatus.Refuse, editForm.remark); |
| | | } |
| | | |
| | | async function handleRecruit(id: string, hireStatus: EnumTaskUserHireStatus) { |
| | | try { |
| | | await Message.tipMessage(`确认要录用吗?`); |
| | | setTaskUserHire(id, hireStatus); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function handleCancelRecruit(id: string, hireStatus: EnumTaskUserHireStatus) { |
| | | try { |
| | | await Message.tipMessage(`确认要取消录用吗?`); |
| | | setTaskUserHire(id, hireStatus); |
| | | } catch (error) {} |
| | | } |
| | | |
| | | async function setTaskUserHire(id: string, hireStatus: EnumTaskUserHireStatus, remark?: string) { |
| | | try { |
| | | let params: API.SetTaskUserHireCommand = { |
| | | id: id, |
| | | hireStatus: hireStatus, |
| | | hireRemark: remark, |
| | | }; |
| | | let res = await taskUserServices.setTaskUserHire(params); |
| | | if (res) { |
| | | Message.successMessage('操作成功'); |
| | | getList(paginationState.pageIndex); |
| | | } |
| | | } catch (error) {} |
| | | } |
| | | </script> |