|  |  |  | 
|---|
|  |  |  | <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()" | 
|---|
|  |  |  | 
|---|
|  |  |  | <SearchInput | 
|---|
|  |  |  | v-model="extraParamState.searchWord" | 
|---|
|  |  |  | style="width: 250px" | 
|---|
|  |  |  | placeholder="任务名称" | 
|---|
|  |  |  | placeholder="姓名/身份证号/电话" | 
|---|
|  |  |  | @on-click-search="getList" | 
|---|
|  |  |  | @keyup.enter="getList()" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 
|---|
|  |  |  | > | 
|---|
|  |  |  | </ProTableV2> | 
|---|
|  |  |  | </AppContainer> | 
|---|
|  |  |  | <StaffInfoDialog v-bind="dialogStaffInfoProps" /> | 
|---|
|  |  |  | </LoadingLayout> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | AppContainer, | 
|---|
|  |  |  | QueryFilterItem, | 
|---|
|  |  |  | useTable, | 
|---|
|  |  |  | FieldDatePicker, | 
|---|
|  |  |  | 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 { useGlobalEventContext } from '@/hooks'; | 
|---|
|  |  |  | import { FlexEnterpriseSettingStatus } 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 * as taskUserServices from '@/services/api/taskUser'; | 
|---|
|  |  |  | import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'EmploymentSignList', | 
|---|
|  |  |  | 
|---|
|  |  |  | name: '录用', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleRecruit(role), | 
|---|
|  |  |  | onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Pass), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row) => false, | 
|---|
|  |  |  | hide: (row: API.GetTaskUsersQueryResultItem) => | 
|---|
|  |  |  | row.hireStatus === EnumTaskUserHireStatus.Pass, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | name: '谢绝', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | emits: { | 
|---|
|  |  |  | onClick: (role) => handleRefuse(role), | 
|---|
|  |  |  | onClick: (role) => setTaskUserHire(role, EnumTaskUserHireStatus.Refuse), | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | extraProps: { | 
|---|
|  |  |  | hide: (row) => false, | 
|---|
|  |  |  | hide: (row: API.GetTaskUsersQueryResultItem) => | 
|---|
|  |  |  | row.hireStatus !== EnumTaskUserHireStatus.Wait, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ]); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const router = useRouter(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const route = useRoute(); | 
|---|
|  |  |  | const id = route.params.id as string; | 
|---|
|  |  |  | const BaseState = { | 
|---|
|  |  |  | loading: true, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const state = reactive({ ...BaseState }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const eventContext = useGlobalEventContext(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | eventContext.addEvent('employment:add', () => { | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | eventContext.addEvent('employment:edit', () => { | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onMounted(async () => { | 
|---|
|  |  |  | await getList(); | 
|---|
|  |  |  | 
|---|
|  |  |  | } = 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 }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function handleRecruit(row) {} | 
|---|
|  |  |  | function handleRefuse(row) {} | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | dialogProps: dialogStaffInfoProps, | 
|---|
|  |  |  | handleEdit: handleStaffInfoEdit, | 
|---|
|  |  |  | editForm: staffInfoEditForm, | 
|---|
|  |  |  | } = useFormDialog({ | 
|---|
|  |  |  | defaultFormParams: { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | name: '', | 
|---|
|  |  |  | identity: '', | 
|---|
|  |  |  | contactPhoneNumber: '', | 
|---|
|  |  |  | gender: EnumUserGender.Male, | 
|---|
|  |  |  | age: null as any as number, | 
|---|
|  |  |  | identityImg: [] as UploadUserFile[], | 
|---|
|  |  |  | identityBackImg: [] as UploadUserFile[], | 
|---|
|  |  |  | contractUrl: [] as UploadUserFile[], | 
|---|
|  |  |  | regiterTime: '', | 
|---|
|  |  |  | userRealTime: '', | 
|---|
|  |  |  | userSignContractTime: '', | 
|---|
|  |  |  | isDetail: false, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async function setTaskUserHire( | 
|---|
|  |  |  | row: API.GetTaskUsersQueryResultItem, | 
|---|
|  |  |  | hireStatus: EnumTaskUserHireStatus | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | await Message.tipMessage( | 
|---|
|  |  |  | `确认要${hireStatus === EnumTaskUserHireStatus.Pass ? '录用' : '谢绝'}吗?` | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | let params: API.SetTaskUserHireCommand = { | 
|---|
|  |  |  | id: row.id, | 
|---|
|  |  |  | hireStatus: hireStatus, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await taskUserServices.setTaskUserHire(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | Message.successMessage('操作成功'); | 
|---|
|  |  |  | getList(paginationState.pageIndex); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|