wupengfei
13 小时以前 d3d8fde64c4df263fd696f1599cb79fe9efb7623
feat: 签约
10个文件已修改
279 ■■■■■ 已修改文件
.eslintrc-auto-import.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/enterpriseEmployee.ts 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/enterprise.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/enterpriseEmployee.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/components/CheckManageDialog.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/FlexJobManage.vue 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/components/SignDialog.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json
@@ -26,6 +26,8 @@
    "EnumDataSource": true,
    "EnumDbAuditOperate": true,
    "EnumElectronSignAccess": true,
    "EnumEnterpriseCostStatus": true,
    "EnumEnterpriseCostType": true,
    "EnumEnterpriseRealMethod": true,
    "EnumMenuType": true,
    "EnumMenuVisitLevel": true,
@@ -61,6 +63,7 @@
    "EnumTaskUserHireStatusText": true,
    "EnumTaskUserSignContractStatus": true,
    "EnumTaskUserSignContractStatusText": true,
    "EnumTaskUserSignContractStatusTextForFilter": true,
    "EnumTaskUserSubmitCheckReceiveStatus": true,
    "EnumTaskUserSubmitCheckReceiveStatusText": true,
    "EnumUserGender": true,
auto-imports.d.ts
@@ -30,6 +30,8 @@
  const EnumDataSource: typeof import('./src/constants/apiEnum')['EnumDataSource']
  const EnumDbAuditOperate: typeof import('./src/constants/apiEnum')['EnumDbAuditOperate']
  const EnumElectronSignAccess: typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']
  const EnumEnterpriseCostStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']
  const EnumEnterpriseCostType: typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']
  const EnumEnterpriseRealMethod: typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']
  const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
  const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']
@@ -66,6 +68,7 @@
  const EnumTaskUserHireStatusText: typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserHireStatusText']
  const EnumTaskUserSignContractStatus: typeof import('./src/constants/apiEnum')['EnumTaskUserSignContractStatus']
  const EnumTaskUserSignContractStatusText: typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserSignContractStatusText']
  const EnumTaskUserSignContractStatusTextForFilter: typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserSignContractStatusTextForFilter']
  const EnumTaskUserSubmitCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskUserSubmitCheckReceiveStatus']
  const EnumTaskUserSubmitCheckReceiveStatusText: typeof import('./src/constants/task')['EnumTaskUserSubmitCheckReceiveStatusText']
  const EnumUserGender: typeof import('./src/constants/apiEnum')['EnumUserGender']
@@ -223,7 +226,7 @@
  export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
  import('vue')
  // @ts-ignore
  export type { EnumBillingMethod, EnumClientType, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseRealMethod, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseRealMethod, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum'
  export type { EnumBillingMethod, EnumClientType, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum'
  import('./src/constants/apiEnum')
  // @ts-ignore
  export type { CategoryCode, IdentityCodeEnum, EducationCodeEnum, CertificateTypeCodeEnum, WelfareCodeEnum } from './src/constants/dic'
@@ -278,6 +281,8 @@
    readonly EnumDataSource: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumDataSource']>
    readonly EnumDbAuditOperate: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumDbAuditOperate']>
    readonly EnumElectronSignAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumElectronSignAccess']>
    readonly EnumEnterpriseCostStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostStatus']>
    readonly EnumEnterpriseCostType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseCostType']>
    readonly EnumEnterpriseRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']>
    readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
    readonly EnumMenuVisitLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']>
@@ -313,6 +318,7 @@
    readonly EnumTaskUserHireStatusText: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserHireStatusText']>
    readonly EnumTaskUserSignContractStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskUserSignContractStatus']>
    readonly EnumTaskUserSignContractStatusText: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserSignContractStatusText']>
    readonly EnumTaskUserSignContractStatusTextForFilter: UnwrapRef<typeof import('./src/constants/enterpriseEmployee')['EnumTaskUserSignContractStatusTextForFilter']>
    readonly EnumTaskUserSubmitCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskUserSubmitCheckReceiveStatus']>
    readonly EnumTaskUserSubmitCheckReceiveStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskUserSubmitCheckReceiveStatusText']>
    readonly EnumUserGender: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserGender']>
src/constants/apiEnum.ts
@@ -71,6 +71,22 @@
  AlipaySign = 20,
}
/** 企业用量扣费状态 */
export enum EnumEnterpriseCostStatus {
  /**扣费成功 */
  Success = 10,
  /**扣费失败 */
  Fail = 20,
}
/** 企业用量类型 */
export enum EnumEnterpriseCostType {
  /**短信 */
  SMS = 10,
  /**电子签 */
  ElectronSign = 20,
}
/** 企业实名方式 */
export enum EnumEnterpriseRealMethod {
  /**企业三要素 */
@@ -331,8 +347,6 @@
  Pass = 20,
  /**已拒签 */
  Refuse = 30,
  /**生效中 */
  Effect = 40,
  /**已终止 */
  Stop = 50,
}
src/constants/enterpriseEmployee.ts
@@ -6,10 +6,16 @@
  [EnumTaskUserHireStatus.Refuse]: '已谢绝',
};
export const EnumTaskUserSignContractStatusTextForFilter = {
  [EnumTaskUserSignContractStatus.Wait]: '待签约',
  [EnumTaskUserSignContractStatus.Pass]: '已签约',
  [EnumTaskUserSignContractStatus.Stop]: '已解约',
};
export const EnumTaskUserSignContractStatusText = {
  [EnumTaskUserSignContractStatus.Wait]: '待签约',
  [EnumTaskUserSignContractStatus.Pass]: '已签约',
  [EnumTaskUserSignContractStatus.Refuse]: '已谢绝',
  [EnumTaskUserSignContractStatus.Refuse]: '已拒签',
  [EnumTaskUserSignContractStatus.Stop]: '已解约',
};
export const ImportEnterpriseEmployeesTempPath = `${TempFolderPath}/%E7%81%B5%E5%B7%A5%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx`;
src/services/api/enterprise.ts
@@ -80,6 +80,21 @@
  });
}
/** 保存企业费用 POST /api/user/enterprise/saveEnterpriseCost */
export async function saveEnterpriseCost(
  body: API.SaveEnterpriseCostCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterprise/saveEnterpriseCost', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 设置企业电子签配置 PUT /api/user/enterprise/setEnterpriseElectronSignSetting */
export async function setEnterpriseElectronSignSetting(
  body: API.SetEnterpriseElectronSignSettingCommand,
src/services/api/enterpriseEmployee.ts
@@ -17,6 +17,24 @@
  });
}
/** 企业用户签约 POST /api/user/enterpriseEmployee/enterpriseUserElectronSign */
export async function enterpriseUserElectronSign(
  body: API.EnterpriseUserElectronSignCommand,
  options?: API.RequestConfig
) {
  return request<API.EnterpriseUserElectronSignCommandResult>(
    '/api/user/enterpriseEmployee/enterpriseUserElectronSign',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询灵工详情 GET /api/user/enterpriseEmployee/getEnterpriseEmployee */
export async function getEnterpriseEmployee(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@@ -121,3 +139,36 @@
    ...(options || {}),
  });
}
/** 个人用户签约 POST /api/user/enterpriseEmployee/personalUserElectronSign */
export async function personalUserElectronSign(
  body: API.PersonalUserElectronSignCommand,
  options?: API.RequestConfig
) {
  return request<API.PersonalUserElectronSignCommandResult>(
    '/api/user/enterpriseEmployee/personalUserElectronSign',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 灵工解约 POST /api/user/enterpriseEmployee/stopElectronSign */
export async function stopElectronSign(
  body: API.StopElectronSignCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterpriseEmployee/stopElectronSign', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/typings.d.ts
@@ -389,6 +389,18 @@
    data?: any;
  }
  interface EnterpriseUserElectronSignCommand {
    /** 灵工Id */
    id?: string;
  }
  interface EnterpriseUserElectronSignCommandResult {
    /** 签署合同短链接 */
    signContractShortUrl?: string;
    /** 签署合同长链接 */
    signContractLongUrl?: string;
  }
  enum EnumBillingMethod {
    /**按月 */
    Month = 10,
@@ -449,6 +461,20 @@
    BestSign = 10,
    /**支付宝信任签 */
    AlipaySign = 20,
  }
  enum EnumEnterpriseCostStatus {
    /**扣费成功 */
    Success = 10,
    /**扣费失败 */
    Fail = 20,
  }
  enum EnumEnterpriseCostType {
    /**短信 */
    SMS = 10,
    /**电子签 */
    ElectronSign = 20,
  }
  enum EnumEnterpriseRealMethod {
@@ -687,8 +713,6 @@
    Pass = 20,
    /**已拒签 */
    Refuse = 30,
    /**生效中 */
    Effect = 40,
    /**已终止 */
    Stop = 50,
  }
@@ -750,6 +774,24 @@
    errorCode?: string;
    /** 数据 */
    data?: boolean;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultEnterpriseUserElectronSignCommandResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: EnterpriseUserElectronSignCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1961,6 +2003,24 @@
    timestamp?: number;
  }
  interface FriendlyResultPersonalUserElectronSignCommandResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PersonalUserElectronSignCommandResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultString {
    /** 跟踪Id */
    traceId?: string;
@@ -2182,6 +2242,8 @@
    /** 提交Id */
    id?: string;
    enterpriseEmployeeUser?: GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser;
    /** 验收时间 */
    date?: string;
    /** 提交时间 */
    createdTime?: string;
    /** 验收照片 */
@@ -2206,6 +2268,8 @@
  interface GetCheckReceiveTaskUserSubmitsQueryResultItem {
    /** 提交Id */
    id?: string;
    /** 验收时间 */
    date?: string;
    /** 提交时间 */
    createdTime?: string;
    /** 验收照片 */
@@ -2593,6 +2657,7 @@
    enterpriseSignContractTime?: string;
    /** 电子合同 */
    contractUrl?: string;
    userSignContractStatus?: EnumTaskUserSignContractStatus;
  }
  interface GetEnterpriseEmployeesQuery {
@@ -3563,6 +3628,8 @@
    status?: EnumTaskStatus;
    releaseStatus?: EnumTaskReleaseStatus;
    hireStatus?: EnumTaskUserHireStatus;
    /** 灵工Id */
    enterpriseEmployeeId?: string;
    applyButton?: GetTaskInfoQueryResultApplyButton;
    hireButton?: GetTaskInfoQueryResultHireButton;
  }
@@ -4146,6 +4213,18 @@
    clientType?: EnumClientType;
  }
  interface PersonalUserElectronSignCommand {
    /** 灵工Id */
    id?: string;
  }
  interface PersonalUserElectronSignCommandResult {
    /** 签署合同短链接 */
    signContractShortUrl?: string;
    /** 签署合同长链接 */
    signContractLongUrl?: string;
  }
  interface PersonalUserFaceRealCommand {
    /** 姓名 */
    name: string;
@@ -4298,6 +4377,17 @@
    password?: string;
    /** Id */
    id?: string;
  }
  interface SaveEnterpriseCostCommand {
    /** 企业Id */
    enterpriseId?: string;
    type?: EnumEnterpriseCostType;
    /** 合同模板Id */
    contractTemplateId?: string;
    /** 灵工合同Id */
    enterpriseEmployeeContractId?: string;
    status?: EnumEnterpriseCostStatus;
  }
  interface SaveMenuButtonCommand {
@@ -4672,6 +4762,11 @@
    clientType?: EnumClientType;
  }
  interface StopElectronSignCommand {
    /** 灵工Id */
    id?: string;
  }
  interface SubmitCheckReceiveTaskCommand {
    /** 任务Id */
    taskInfoId?: string;
src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -47,7 +47,7 @@
const columns = defineColumns([
  {
    id: '1',
    enCode: 'taskTime',
    enCode: 'date',
    name: '任务日期',
  },
  {
@@ -161,6 +161,7 @@
    columnsRenderProps: {
      createdTime: { type: 'date' },
      checkReceiveTime: { type: 'date' },
      date: { type: 'date' },
      checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskUserSubmitCheckReceiveStatusText },
      files: {
        type: 'url',
src/views/FlexJobManage/FlexJobManage.vue
@@ -129,7 +129,7 @@
import { FlexJobManageColumns } from './constants';
import { EnumTaskUserHireStatusText, EnumTaskUserSignContractStatusText } from '@/constants';
import { Message } from '@bole-core/core';
import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format } from '@/utils';
import { convertApi2FormUrlOnlyOne, downloadFileByUrl, format, omitByFalse } from '@/utils';
import StaffInfoDialog from './components/StaffInfoDialog.vue';
import BatchImportDialog from './components/BatchImportDialog.vue';
import SendShotMessageDialog from './components/SendShotMessageDialog.vue';
@@ -138,7 +138,7 @@
import { ModelValueType } from 'element-plus';
defineOptions({
  name: 'EnterpriseManageList',
  name: 'FlexJobManageList',
});
const operationBtns = defineOperationBtns([
@@ -162,11 +162,11 @@
  },
  {
    data: {
      enCode: 'signBtn',
      enCode: 'enterpriseSignBtn',
      name: '企业签约',
    },
    emits: {
      onClick: (role) => handleSign(role),
      onClick: (role) => handleEnterpriseSign(role),
    },
    extraProps: {
      hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
@@ -178,17 +178,17 @@
  },
  {
    data: {
      enCode: 'signBtn',
      enCode: 'inviteSignBtn',
      name: '邀请签约',
    },
    emits: {
      onClick: (role) => handleSign(role),
      onClick: (role) => handleInviteSign(role),
    },
    extraProps: {
      hide: (row: API.GetEnterpriseEmployeesQueryResultItem) =>
        !(
          row.userSignContractStatus === EnumTaskUserSignContractStatus.Wait ||
          row.userSignContractStatus === EnumTaskUserSignContractStatus.Refuse
          row.userSignContractStatus === EnumTaskUserSignContractStatus.Stop
        ),
    },
  },
@@ -265,7 +265,7 @@
        enterpriseSignContractStatus: extraParamState.enterpriseSignContractStatus,
      };
      let res = await enterpriseEmployeeServices.getEnterpriseEmployees(params, {
      let res = await enterpriseEmployeeServices.getEnterpriseEmployees(omitByFalse(params), {
        showLoading: !state.loading,
      });
      return res;
@@ -462,26 +462,33 @@
const {
  dialogProps: dialogSignProps,
  handleAdd: handleSignAdd,
  handleEdit: handleSignEdit,
  editForm: signEditForm,
} = useFormDialog({
  onConfirm: signContract,
  defaultFormParams: {
    url: [] as UploadUserFile[],
    id: '',
    contractTemplateId: '',
  },
});
function handleSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
  handleSignAdd();
function handleInviteSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
  if (row) {
    handleSignEdit({
      id: row.id,
      contractTemplateId: '',
    });
  }
}
function handleBatchSign() {
  const selectionRows = getSelectionRows();
  console.log('selectionRows: ', selectionRows);
  if (selectionRows) {
    const hasSigned = selectionRows?.some(
      (x) =>
        !(
          x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
          x.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Wait
        )
        x.userSignContractStatus === EnumTaskUserSignContractStatus.Pass ||
        x.enterpriseSignContractStatus === EnumTaskUserSignContractStatus.Pass ||
        x.hireStatus === EnumTaskUserHireStatus.Wait
    );
    if (hasSigned) {
      Message.warnMessage('勾选人员中包含已签约完成或未录用人员');
@@ -493,12 +500,35 @@
async function signContract() {
  try {
    let params: API.InviteElectronSignCommand = {
      id: signEditForm.id,
      contractTemplateId: signEditForm.contractTemplateId,
    };
    let res = await enterpriseEmployeeServices.inviteElectronSign(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
async function handleEnterpriseSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
  try {
    let res = await enterpriseEmployeeServices.enterpriseUserElectronSign({ id: row.id });
    if (res) {
      window.open(res?.signContractLongUrl, '_blank');
    }
  } catch (error) {}
}
async function handleUnSign(row: API.GetEnterpriseEmployeesQueryResultItem) {
  try {
    await Message.tipMessage('确定解约用户?');
    let res = await enterpriseEmployeeServices.stopElectronSign({ id: row.id });
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
src/views/FlexJobManage/components/SignDialog.vue
@@ -1,8 +1,15 @@
<template>
  <ProDialog title="签约" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
    <ProForm :model="form" ref="dialogForm" label-width="100px">
      <ProFormItemV2 label="请选择模板:" prop="url" :check-rules="[{ message: '请选择模板' }]">
        <ProFormSelect v-model="form.url" :valueEnum="enterpriseContractTemplateSelect">
      <ProFormItemV2
        label="请选择模板:"
        prop="contractTemplateId"
        :check-rules="[{ message: '请选择模板' }]"
      >
        <ProFormSelect
          v-model="form.contractTemplateId"
          :valueEnum="enterpriseContractTemplateSelect"
        >
        </ProFormSelect>
      </ProFormItemV2>
    </ProForm>
@@ -33,7 +40,8 @@
type Form = {
  title?: string;
  url: UploadUserFile[];
  id?: string;
  contractTemplateId?: string;
};
const visible = defineModel({ type: Boolean });