|  |  | 
 |  |  | <template> | 
 |  |  |   <ProDialog title="申请详情" v-model="innerVisible" width="1200px" destroy-on-close> | 
 |  |  |     <ProTabs v-model="innerForm.tabType" hasBorder> | 
 |  |  |   <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="innerForm.name" /> | 
 |  |  |             <ProFormText v-model.trim="form.name" /> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |           <ProFormItemV2 label="身份证号:" prop="idNumber"> | 
 |  |  |             <ProFormText v-model.trim="innerForm.idNumber" /> | 
 |  |  |           <ProFormItemV2 label="身份证号:" prop="identity"> | 
 |  |  |             <ProFormText v-model.trim="form.identity" /> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |           <ProFormItemV2 label="手机号:" prop="contactPhone"> | 
 |  |  |             <ProFormText v-model.trim="innerForm.contactPhone" /> | 
 |  |  |           <ProFormItemV2 label="手机号:" prop="contactPhoneNumber"> | 
 |  |  |             <ProFormText v-model.trim="form.contactPhoneNumber" /> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |           <ProFormItemV2 label="性别:" prop="age"> | 
 |  |  |             <ProFormRadio v-model="innerForm.genderType" :value-enum="GenderText"></ProFormRadio> | 
 |  |  |           <ProFormItemV2 label="性别:" prop="gender"> | 
 |  |  |             <ProFormRadio | 
 |  |  |               v-model="form.gender" | 
 |  |  |               :value-enum="EnumUserGenderTextForPerson" | 
 |  |  |             ></ProFormRadio> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |           <ProFormItemV2 label="年龄:" prop="age"> | 
 |  |  |             <ProFormInputNumber v-model="innerForm.age" unit="岁"></ProFormInputNumber> | 
 |  |  |             <ProFormInputNumber v-model="form.age" unit="岁"></ProFormInputNumber> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |           <ProFormItemV2 label="身份证正面:" prop="certificateFrontImgUrl"> | 
 |  |  |             <ProFormImageUpload v-model:file-url="innerForm.certificateFrontImgUrl" /> | 
 |  |  |           <ProFormItemV2 label="身份证正面:" prop="identityImg"> | 
 |  |  |             <ProFormImageUpload v-model:file-url="form.identityImg" /> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |           <ProFormItemV2 label="身份证反面:" prop="certificateBackImgUrl"> | 
 |  |  |             <ProFormImageUpload v-model:file-url="innerForm.certificateBackImgUrl" /> | 
 |  |  |           <ProFormItemV2 label="身份证反面:" prop="identityBackImg"> | 
 |  |  |             <ProFormImageUpload v-model:file-url="form.identityBackImg" /> | 
 |  |  |           </ProFormItemV2> | 
 |  |  |         </ProForm> | 
 |  |  |       </ProTabPane> | 
 |  |  |       <ProTabPane lazy label="签约详情" name="sign"> | 
 |  |  |         <ProDialogTableWrapper :height="400"> | 
 |  |  |           <ProTableV2 v-bind="proTableProps" :columns="column" :show-operation-column="false"> | 
 |  |  |             <template #contractUrl="{ row }"> | 
 |  |  |               <PreviewBtn | 
 |  |  |                 v-if=" | 
 |  |  |                   row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass && | 
 |  |  |                   row.contractUrl | 
 |  |  |                 " | 
 |  |  |                 :show-download-btn="false" | 
 |  |  |                 :url="setOSSLink(row.contractUrl)" | 
 |  |  |               > | 
 |  |  |               </PreviewBtn> | 
 |  |  |             </template> | 
 |  |  |           </ProTableV2> | 
 |  |  |         </ProDialogTableWrapper> | 
 |  |  |       </ProTabPane> | 
 |  |  |     </ProTabs> | 
 |  |  |     <template #footer> | 
 |  |  |       <span class="dialog-footer"> | 
 |  |  |         <el-button @click="emit('onCancel')">关闭</el-button> | 
 |  |  |       </span> | 
 |  |  |     </template> | 
 |  |  |   </ProDialog> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | 
 |  |  |   ProFormImageUpload, | 
 |  |  |   ProFormRadio, | 
 |  |  |   ProFormInputNumber, | 
 |  |  |   defineColumns, | 
 |  |  |   PreviewBtn, | 
 |  |  | } from '@bole-core/components'; | 
 |  |  | import { OrderInputType } from '@bole-core/core'; | 
 |  |  | import _ from 'lodash'; | 
 |  |  | import * as flexEnterpriseWokerServices from '@/services/api/FlexEnterpriseWoker'; | 
 |  |  | import * as userServices from '@/services/api/user'; | 
 |  |  | import { | 
 |  |  |   EnumUserGender, | 
 |  |  |   EnumUserGenderTextForPerson, | 
 |  |  |   EnumTaskUserHireStatusText, | 
 |  |  |   EnumTaskUserSignContractStatusText, | 
 |  |  |   EnumTaskUserSignContractStatus, | 
 |  |  | } from '@/constants'; | 
 |  |  | import { setOSSLink } from '@/utils'; | 
 |  |  | import { FlexTaskWorkerHireEnumText, FlexWorkerEleSignEnumText, Gender, GenderText } from '@/constants'; | 
 |  |  |  | 
 |  |  | defineOptions({ | 
 |  |  |   name: 'CPersonDetailDialog', | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | type Props = { | 
 |  |  |   modelValue: boolean; | 
 |  |  |   form: { | 
 |  |  |     tabType: string; | 
 |  |  |     userId: string; | 
 |  |  |     name: string; | 
 |  |  |     idNumber: string; | 
 |  |  |     contactPhone: string; | 
 |  |  |     age: number; | 
 |  |  |     genderType:Gender; | 
 |  |  |     certificateFrontImgUrl: UploadUserFile[]; | 
 |  |  |     certificateBackImgUrl: UploadUserFile[]; | 
 |  |  |   }; | 
 |  |  | type Form = { | 
 |  |  |   tabType: string; | 
 |  |  |   id: string; | 
 |  |  |   name: string; | 
 |  |  |   identity: string; | 
 |  |  |   contactPhoneNumber: string; | 
 |  |  |   age: number; | 
 |  |  |   gender: EnumUserGender; | 
 |  |  |   identityImg: UploadUserFile[]; | 
 |  |  |   identityBackImg: UploadUserFile[]; | 
 |  |  | }; | 
 |  |  |  | 
 |  |  | const props = withDefaults(defineProps<Props>(), { | 
 |  |  |   modelValue: false, | 
 |  |  | }); | 
 |  |  | const form = defineModel<Form>('form'); | 
 |  |  | const visible = defineModel<boolean>('modelValue'); | 
 |  |  |  | 
 |  |  | const emit = defineEmits<{ | 
 |  |  |   (e: 'update:modelValue', value: boolean): void; | 
 |  |  |   (e: 'update:form', value: Props['form']): void; | 
 |  |  |   (e: 'onCancel'): void; | 
 |  |  | }>(); | 
 |  |  |  | 
 |  |  | const column: API.CustomModuleColumnDto[] = [ | 
 |  |  | const column = defineColumns([ | 
 |  |  |   { | 
 |  |  |     id: '1', | 
 |  |  |     enCode: 'enterpirseName', | 
 |  |  |     enCode: 'enterpriseName', | 
 |  |  |     name: '所属客户', | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     id: '4', | 
 |  |  |     enCode: 'hireDateTime', | 
 |  |  |     enCode: 'hireTime', | 
 |  |  |     name: '录用时间', | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     id: '5', | 
 |  |  |     enCode: 'userSignStatus', | 
 |  |  |     enCode: 'userSignContractStatus', | 
 |  |  |     name: '签约状态', | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     id: '6', | 
 |  |  |     enCode: 'enterSignStatus', | 
 |  |  |     enCode: 'enterpriseSignContractStatus', | 
 |  |  |     name: '企业签约状态', | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     id: '7', | 
 |  |  |     enCode: 'enterSignTime', | 
 |  |  |     enCode: 'enterpriseSignContractTime', | 
 |  |  |     name: '企业签约时间', | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  | 
 |  |  |     enCode: 'contractUrl', | 
 |  |  |     name: '电子合同', | 
 |  |  |   }, | 
 |  |  | ]; | 
 |  |  |  | 
 |  |  | const innerVisible = computed({ | 
 |  |  |   get() { | 
 |  |  |     return props.modelValue; | 
 |  |  |   }, | 
 |  |  |   set(val) { | 
 |  |  |     emit('update:modelValue', val); | 
 |  |  |   }, | 
 |  |  | }); | 
 |  |  | const innerForm = computed({ | 
 |  |  |   get() { | 
 |  |  |     return props.form; | 
 |  |  |   }, | 
 |  |  |   set(val) { | 
 |  |  |     emit('update:form', val); | 
 |  |  |   }, | 
 |  |  | }); | 
 |  |  | ]); | 
 |  |  |  | 
 |  |  | watch( | 
 |  |  |   () => innerVisible.value, | 
 |  |  |   visible, | 
 |  |  |   (val) => { | 
 |  |  |     console.log('val: ', val); | 
 |  |  |     if (val) { | 
 |  |  |       getList(); | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     immediate: true, | 
 |  |  |   } | 
 |  |  | ); | 
 |  |  |  | 
 |  |  | 
 |  |  | } = useTable( | 
 |  |  |   async ({ pageIndex, pageSize }, extraParamState) => { | 
 |  |  |     try { | 
 |  |  |       let params: API.GetUserClientSignListInput = { | 
 |  |  |       let params: API.GetPersonalUserInfoSignContractsQuery = { | 
 |  |  |         pageModel: { | 
 |  |  |           rows: pageSize, | 
 |  |  |           page: pageIndex, | 
 |  |  |           orderInput: extraParamState.orderInput, | 
 |  |  |         }, | 
 |  |  |         userId: props.form.userId, | 
 |  |  |         id: form.value.id, | 
 |  |  |       }; | 
 |  |  |       let res = await flexEnterpriseWokerServices.getUserClientSignList(params); | 
 |  |  |       let res = await userServices.getPersonalUserInfoSignContracts(params); | 
 |  |  |       return res; | 
 |  |  |     } catch (error) {} | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     defaultExtraParams: { | 
 |  |  |       orderInput: [{ property: 'applyTime', order: OrderInputType.Desc }], | 
 |  |  |       orderInput: [{ property: 'id', order: EnumPagedListOrder.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 }, | 
 |  |  |       hireTime: { type: 'date' }, | 
 |  |  |       enterpriseSignContractTime: { type: 'date' }, | 
 |  |  |       hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText }, | 
 |  |  |       userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText }, | 
 |  |  |       enterpriseSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText }, | 
 |  |  |       // contractUrl: { | 
 |  |  |       //   type: 'url', | 
 |  |  |       //   showDownloadBtn: false, | 
 |  |  |       //   formatter: (row: API.GetPersonalUserInfoSignContractsQueryResultItem) => | 
 |  |  |       //     setOSSLink(row.contractUrl), | 
 |  |  |       // }, | 
 |  |  |     }, | 
 |  |  |   } | 
 |  |  | ); |