wupengfei
14 小时以前 4f0a665d8b0078defa95c6557ed46c681ca29fc6
src/views/CPersonManage/components/CPersonDetailDialog.vue
@@ -1,195 +1,46 @@
<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" />
          </ProFormItemV2>
          <ProFormItemV2 label="身份证号:" prop="idNumber">
            <ProFormText v-model.trim="innerForm.idNumber" />
          </ProFormItemV2>
          <ProFormItemV2 label="手机号:" prop="contactPhone">
            <ProFormText v-model.trim="innerForm.contactPhone" />
          </ProFormItemV2>
          <ProFormItemV2 label="性别:" prop="age">
            <ProFormRadio v-model="innerForm.genderType" :value-enum="GenderText"></ProFormRadio>
          </ProFormItemV2>
          <ProFormItemV2 label="年龄:" prop="age">
            <ProFormInputNumber v-model="innerForm.age" unit="岁"></ProFormInputNumber>
          </ProFormItemV2>
          <ProFormItemV2 label="身份证正面:" prop="certificateFrontImgUrl">
            <ProFormImageUpload v-model:file-url="innerForm.certificateFrontImgUrl" />
          </ProFormItemV2>
          <ProFormItemV2 label="身份证反面:" prop="certificateBackImgUrl">
            <ProFormImageUpload v-model:file-url="innerForm.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>
      <span class="dialog-footer">
        <el-button @click="emit('onCancel')">关闭</el-button>
      </span>
    </template>
  </ProDialog>
</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 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;
};
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[] = [
  {
    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: '电子合同',
  },
];
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,
  (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: props.form.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>