|  |  |  | 
|---|
|  |  |  | <ProDialog title="申请详情" v-model="visible" width="1200px" destroy-on-close> | 
|---|
|  |  |  | <ProTabs v-model="form.tabType" hasBorder> | 
|---|
|  |  |  | <ProTabPane lazy label="人员详情" name="user"> | 
|---|
|  |  |  | <ProForm :model="form" ref="dialogForm" label-width="120px" is-read> | 
|---|
|  |  |  | <ProFormItemV2 label="姓名:" prop="name"> | 
|---|
|  |  |  | <ProFormText v-model.trim="form.name" /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | <ProFormItemV2 label="身份证号:" prop="idNumber"> | 
|---|
|  |  |  | <ProFormText v-model.trim="form.idNumber" /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | <ProFormItemV2 label="手机号:" prop="contactPhone"> | 
|---|
|  |  |  | <ProFormText v-model.trim="form.contactPhone" /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | <ProFormItemV2 label="性别:" prop="age"> | 
|---|
|  |  |  | <ProFormRadio v-model="form.genderType" :value-enum="GenderText"></ProFormRadio> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | <ProFormItemV2 label="年龄:" prop="age"> | 
|---|
|  |  |  | <ProFormInputNumber v-model="form.age" unit="岁"></ProFormInputNumber> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | <ProFormItemV2 label="身份证正面:" prop="certificateFrontImgUrl"> | 
|---|
|  |  |  | <ProFormImageUpload v-model:file-url="form.certificateFrontImgUrl" /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | <ProFormItemV2 label="身份证反面:" prop="certificateBackImgUrl"> | 
|---|
|  |  |  | <ProFormImageUpload v-model:file-url="form.certificateBackImgUrl" /> | 
|---|
|  |  |  | </ProFormItemV2> | 
|---|
|  |  |  | </ProForm> | 
|---|
|  |  |  | <!-- <StaffDetailInfoView :form="form" /> --> | 
|---|
|  |  |  | </ProTabPane> | 
|---|
|  |  |  | <ProTabPane lazy label="人员简历" name="resume"> | 
|---|
|  |  |  | <!-- <StaffResumeView :form="form" /> --> | 
|---|
|  |  |  | </ProTabPane> | 
|---|
|  |  |  | <ProTabPane lazy label="签约详情" name="sign"> | 
|---|
|  |  |  | <ProDialogTableWrapper :height="400"> | 
|---|
|  |  |  | <ProTableV2 v-bind="proTableProps" :columns="column" :show-operation-column="false"> | 
|---|
|  |  |  | </ProTableV2> | 
|---|
|  |  |  | </ProDialogTableWrapper> | 
|---|
|  |  |  | <SignDetailView :form="form" /> | 
|---|
|  |  |  | </ProTabPane> | 
|---|
|  |  |  | </ProTabs> | 
|---|
|  |  |  | <template #footer> | 
|---|
|  |  |  | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script setup lang="ts"> | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | ProDialog, | 
|---|
|  |  |  | ProTableV2, | 
|---|
|  |  |  | ProDialogTableWrapper, | 
|---|
|  |  |  | ProTabs, | 
|---|
|  |  |  | ProTabPane, | 
|---|
|  |  |  | useTable, | 
|---|
|  |  |  | ProForm, | 
|---|
|  |  |  | ProFormItemV2, | 
|---|
|  |  |  | ProFormText, | 
|---|
|  |  |  | UploadUserFile, | 
|---|
|  |  |  | ProFormImageUpload, | 
|---|
|  |  |  | ProFormRadio, | 
|---|
|  |  |  | ProFormInputNumber, | 
|---|
|  |  |  | } from '@bole-core/components'; | 
|---|
|  |  |  | import { OrderInputType } from '@bole-core/core'; | 
|---|
|  |  |  | import { ProDialog, ProTabs, ProTabPane } from '@bole-core/components'; | 
|---|
|  |  |  | import _ from 'lodash'; | 
|---|
|  |  |  | import * as flexEnterpriseWokerServices from '@/services/api/FlexEnterpriseWoker'; | 
|---|
|  |  |  | import { setOSSLink } from '@/utils'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | FlexTaskWorkerHireEnumText, | 
|---|
|  |  |  | FlexWorkerEleSignEnumText, | 
|---|
|  |  |  | Gender, | 
|---|
|  |  |  | GenderText, | 
|---|
|  |  |  | } from '@/constants'; | 
|---|
|  |  |  | import StaffDetailInfoView from './StaffDetailInfoView.vue'; | 
|---|
|  |  |  | import StaffResumeView from './StaffResumeView.vue'; | 
|---|
|  |  |  | import SignDetailView from './SignDetailView.vue'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'CPersonDetailDialog', | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | type Form = { | 
|---|
|  |  |  | tabType: string; | 
|---|
|  |  |  | userId: string; | 
|---|
|  |  |  | name: string; | 
|---|
|  |  |  | idNumber: string; | 
|---|
|  |  |  | contactPhone: string; | 
|---|
|  |  |  | age: number; | 
|---|
|  |  |  | genderType: Gender; | 
|---|
|  |  |  | certificateFrontImgUrl: UploadUserFile[]; | 
|---|
|  |  |  | certificateBackImgUrl: UploadUserFile[]; | 
|---|
|  |  |  | id: string; | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const form = defineModel<Form>('form'); | 
|---|
|  |  |  | const visible = defineModel<boolean>('visible'); | 
|---|
|  |  |  | const visible = defineModel<boolean>('modelValue'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const emit = defineEmits<{ | 
|---|
|  |  |  | (e: 'onCancel'): void; | 
|---|
|  |  |  | }>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const column: API.CustomModuleColumnDto[] = [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '1', | 
|---|
|  |  |  | enCode: 'enterpirseName', | 
|---|
|  |  |  | name: '所属客户', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '2', | 
|---|
|  |  |  | enCode: 'applyTime', | 
|---|
|  |  |  | name: '报名时间', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '3', | 
|---|
|  |  |  | enCode: 'hireStatus', | 
|---|
|  |  |  | name: '录用状态', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '4', | 
|---|
|  |  |  | enCode: 'hireDateTime', | 
|---|
|  |  |  | name: '录用时间', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '5', | 
|---|
|  |  |  | enCode: 'userSignStatus', | 
|---|
|  |  |  | name: '签约状态', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '6', | 
|---|
|  |  |  | enCode: 'enterSignStatus', | 
|---|
|  |  |  | name: '企业签约状态', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '7', | 
|---|
|  |  |  | enCode: 'enterSignTime', | 
|---|
|  |  |  | name: '企业签约时间', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: '8', | 
|---|
|  |  |  | enCode: 'contractUrl', | 
|---|
|  |  |  | name: '电子合同', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ]; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | watch( | 
|---|
|  |  |  | () => visible.value, | 
|---|
|  |  |  | (val) => { | 
|---|
|  |  |  | if (val) { | 
|---|
|  |  |  | getList(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | getDataSource: getList, | 
|---|
|  |  |  | proTableProps, | 
|---|
|  |  |  | paginationState, | 
|---|
|  |  |  | extraParamState, | 
|---|
|  |  |  | } = useTable( | 
|---|
|  |  |  | async ({ pageIndex, pageSize }, extraParamState) => { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.GetUserClientSignListInput = { | 
|---|
|  |  |  | pageModel: { | 
|---|
|  |  |  | rows: pageSize, | 
|---|
|  |  |  | page: pageIndex, | 
|---|
|  |  |  | orderInput: extraParamState.orderInput, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | userId: form.value.userId, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await flexEnterpriseWokerServices.getUserClientSignList(params); | 
|---|
|  |  |  | return res; | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | defaultExtraParams: { | 
|---|
|  |  |  | orderInput: [{ property: 'applyTime', order: OrderInputType.Desc }], | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | columnsRenderProps: { | 
|---|
|  |  |  | applyTime: { type: 'date' }, | 
|---|
|  |  |  | hireDateTime: { type: 'date' }, | 
|---|
|  |  |  | userSignTime: { type: 'date' }, | 
|---|
|  |  |  | hireStatus: { type: 'enum', valueEnum: FlexTaskWorkerHireEnumText }, | 
|---|
|  |  |  | userSignStatus: { type: 'enum', valueEnum: FlexWorkerEleSignEnumText }, | 
|---|
|  |  |  | enterSignStatus: { type: 'enum', valueEnum: FlexWorkerEleSignEnumText }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|