wupengfei
3 天以前 2a564dd0ddf2edee1a243cab256e7fcaa0ca0920
feat: 签约
2个文件已添加
8个文件已修改
477 ■■■■■ 已修改文件
.eslintrc-auto-import.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/sign.ts 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/electronSign.ts 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/enterpriseEmployee.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/index.ts 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/components/SignDialog.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json
@@ -195,6 +195,7 @@
    "useCssModule": true,
    "useCssVars": true,
    "useDictionaryDataSelect": true,
    "useEnterpriseContractTemplateSelect": true,
    "useGetDictionaryCategorySelect": true,
    "useGlobalEventContext": true,
    "useGlobalEventProvide": true,
auto-imports.d.ts
@@ -185,6 +185,7 @@
  const useCssModule: typeof import('vue')['useCssModule']
  const useCssVars: typeof import('vue')['useCssVars']
  const useDictionaryDataSelect: typeof import('./src/hooks/dic')['useDictionaryDataSelect']
  const useEnterpriseContractTemplateSelect: typeof import('./src/hooks/sign')['useEnterpriseContractTemplateSelect']
  const useGetDictionaryCategorySelect: typeof import('./src/hooks/dic')['useGetDictionaryCategorySelect']
  const useGlobalEventContext: typeof import('./src/hooks/useEvent')['useGlobalEventContext']
  const useGlobalEventProvide: typeof import('./src/hooks/useEvent')['useGlobalEventProvide']
@@ -205,6 +206,7 @@
  const useRouter: typeof import('vue-router')['useRouter']
  const useSearchSettingType: typeof import('./src/hooks/dic')['useSearchSettingType']
  const useSetReactive: typeof import('./src/hooks/global/helper')['useSetReactive']
  const useSign: typeof import('./src/hooks/sign')['useSign']
  const useSlots: typeof import('vue')['useSlots']
  const useTemplateRef: typeof import('vue')['useTemplateRef']
  const useUser: typeof import('./src/hooks/useUser')['useUser']
@@ -425,6 +427,7 @@
    readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
    readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
    readonly useDictionaryDataSelect: UnwrapRef<typeof import('./src/hooks/dic')['useDictionaryDataSelect']>
    readonly useEnterpriseContractTemplateSelect: UnwrapRef<typeof import('./src/hooks/sign')['useEnterpriseContractTemplateSelect']>
    readonly useGetDictionaryCategorySelect: UnwrapRef<typeof import('./src/hooks/dic')['useGetDictionaryCategorySelect']>
    readonly useGlobalEventContext: UnwrapRef<typeof import('./src/hooks/useEvent')['useGlobalEventContext']>
    readonly useGlobalEventProvide: UnwrapRef<typeof import('./src/hooks/useEvent')['useGlobalEventProvide']>
src/constants/apiEnum.ts
@@ -331,6 +331,10 @@
  Pass = 20,
  /**已拒签 */
  Refuse = 30,
  /**生效中 */
  Effect = 40,
  /**已终止 */
  Stop = 50,
}
/** 任务验收状态 */
src/hooks/index.ts
@@ -8,3 +8,4 @@
export * from './help';
export * from './menu';
export * from './dic';
export * from './sign';
src/hooks/sign.ts
New file
@@ -0,0 +1,22 @@
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import * as electronSignServices from '@/services/api/electronSign';
export function useEnterpriseContractTemplateSelect() {
  const queryClient = useQueryClient();
  const { data: enterpriseContractTemplateSelect } = useQuery({
    queryKey: ['electronSignServices/getEnterpriseContractTemplateSelect'],
    queryFn: () => {
      return electronSignServices.getEnterpriseContractTemplateSelect(
        {},
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () =>
      [] as API.SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption[],
  });
  return { enterpriseContractTemplateSelect };
}
src/services/api/electronSign.ts
@@ -2,6 +2,36 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 校验合同模是否可用 POST /api/user/electronSign/checkContractTemplate */
export async function checkContractTemplate(
  body: API.CheckContractTemplateCommand,
  options?: API.RequestConfig
) {
  return request<boolean>('/api/user/electronSign/checkContractTemplate', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 校验电子签通道是否启用 POST /api/user/electronSign/checkElectronSignAccessEnableds */
export async function checkElectronSignAccessEnableds(
  body: API.CheckElectronSignAccessEnabledsCommand,
  options?: API.RequestConfig
) {
  return request<boolean>('/api/user/electronSign/checkElectronSignAccessEnableds', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 电子签回传 POST /api/user/electronSign/electronSignCallback */
export async function electronSignCallback(
  body: API.ElectronSignCallbackCommand,
@@ -50,6 +80,24 @@
  );
}
/** 查询已启用的电子签配置 GET /api/user/electronSign/getEnabledElectronSignSettings */
export async function getEnabledElectronSignSettings(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnabledElectronSignSettingsParams,
  options?: API.RequestConfig
) {
  return request<API.GetEnabledElectronSignSettingsQueryResultItem[]>(
    '/api/user/electronSign/getEnabledElectronSignSettings',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询企业合同模板日志分页列表数据 POST /api/user/electronSign/getEnterpriseContractTemplateLogs */
export async function getEnterpriseContractTemplateLogs(
  body: API.GetEnterpriseContractTemplateLogsQuery,
@@ -81,6 +129,26 @@
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询企业合同模板选择器数据 GET /api/user/electronSign/getEnterpriseContractTemplateSelect */
export async function getEnterpriseContractTemplateSelect(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseContractTemplateSelectParams,
  options?: API.RequestConfig
) {
  return request<API.SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption[]>(
    '/api/user/electronSign/getEnterpriseContractTemplateSelect',
    {
      method: 'GET',
      params: {
        ...params,
        request: undefined,
        ...params['request'],
      },
      ...(options || {}),
    }
  );
@@ -195,3 +263,18 @@
    ...(options || {}),
  });
}
/** 同步电子签配置 POST /api/user/electronSign/syncElectronSignSettings */
export async function syncElectronSignSettings(
  body: API.SyncElectronSignSettingsCommand,
  options?: API.RequestConfig
) {
  return request<boolean>('/api/user/electronSign/syncElectronSignSettings', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/enterpriseEmployee.ts
@@ -53,6 +53,42 @@
  );
}
/** 查询个人用户签约详情 GET /api/user/enterpriseEmployee/getPersonalUserElectronSign */
export async function getPersonalUserElectronSign(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetPersonalUserElectronSignParams,
  options?: API.RequestConfig
) {
  return request<API.GetPersonalUserElectronSignQueryResult>(
    '/api/user/enterpriseEmployee/getPersonalUserElectronSign',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询个人用户签约列表 POST /api/user/enterpriseEmployee/getPersonalUserElectronSigns */
export async function getPersonalUserElectronSigns(
  body: API.GetPersonalUserElectronSignsQuery,
  options?: API.RequestConfig
) {
  return request<API.GetPersonalUserElectronSignsQueryResult>(
    '/api/user/enterpriseEmployee/getPersonalUserElectronSigns',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 导入灵工信息 POST /api/user/enterpriseEmployee/importEnterpriseEmployees */
export async function importEnterpriseEmployees(
  body: API.ImportEnterpriseEmployeesCommand,
@@ -70,3 +106,18 @@
    }
  );
}
/** 邀请灵工签约 POST /api/user/enterpriseEmployee/inviteElectronSign */
export async function inviteElectronSign(
  body: API.InviteElectronSignCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterpriseEmployee/inviteElectronSign', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/index.ts
@@ -5,16 +5,16 @@
import * as enterpriseEmployee from './enterpriseEmployee';
import * as user from './user';
import * as role from './role';
import * as ocrUtils from './ocrUtils';
import * as enterprise from './enterprise';
import * as electronSign from './electronSign';
import * as resource from './resource';
import * as task from './task';
import * as dictionary from './dictionary';
import * as electronSign from './electronSign';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskCheckReceive from './taskCheckReceive';
import * as taskUser from './taskUser';
import * as ocrUtils from './ocrUtils';
import * as menu from './menu';
import * as logRecords from './logRecords';
import * as fileUtils from './fileUtils';
@@ -22,16 +22,16 @@
  enterpriseEmployee,
  user,
  role,
  ocrUtils,
  enterprise,
  electronSign,
  resource,
  task,
  dictionary,
  electronSign,
  userResume,
  auth,
  taskCheckReceive,
  taskUser,
  ocrUtils,
  menu,
  logRecords,
  fileUtils,
src/services/api/typings.d.ts
@@ -66,6 +66,16 @@
    withChildren?: boolean;
  }
  interface APIgetEnabledElectronSignSettingsParams {
    /** 企业Id */
    enterpriseId?: string;
  }
  interface APIgetEnterpriseContractTemplateSelectParams {
    /** 查询企业合同模板选择器数据 */
    request?: GetEnterpriseContractTemplateSelectQuery;
  }
  interface APIgetEnterpriseElectronSignSettingParams {
    /** Id */
    id?: string;
@@ -117,6 +127,13 @@
  interface APIgetPersonalLoginInfoParams {
    /** 查询个人用户登录信息 */
    request?: GetPersonalLoginInfoQuery;
  }
  interface APIgetPersonalUserElectronSignParams {
    /** 灵工Id */
    id?: string;
    /** 合同模板业务编码 */
    code?: string;
  }
  interface APIgetPersonalUserRealResultParams {
@@ -276,6 +293,16 @@
    phoneNumber: string;
    /** 验证码 */
    verifyCode: string;
  }
  interface CheckContractTemplateCommand {
    /** 合同模板Id */
    id?: string;
  }
  interface CheckElectronSignAccessEnabledsCommand {
    /** 通道 */
    accesses?: EnumElectronSignAccess[];
  }
  type CheckHealthQuery = Record<string, any>;
@@ -660,6 +687,10 @@
    Pass = 20,
    /**已拒签 */
    Refuse = 30,
    /**生效中 */
    Effect = 40,
    /**已终止 */
    Stop = 50,
  }
  enum EnumTaskUserSubmitCheckReceiveStatus {
@@ -1197,6 +1228,42 @@
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserElectronSignQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserElectronSignQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserElectronSignsQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserElectronSignsQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserInfoSignContractsQueryResult {
    /** 跟踪Id */
    traceId?: string;
@@ -1596,6 +1663,25 @@
    timestamp?: number;
  }
  interface FriendlyResultListGetEnabledElectronSignSettingsQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: GetEnabledElectronSignSettingsQueryResultItem[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultListGetMenusQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
@@ -1719,6 +1805,25 @@
    errorCode?: string;
    /** 数据 */
    data?: SelectOptionGuidGetDictionaryCategorySelectQueryOption[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultListSelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2197,6 +2302,10 @@
    templateId?: string;
    /** 变量 */
    values?: GetContractTemplateQueryResultValue[];
    /** 创建操作人 */
    createdUserId?: string;
    /** 是否企业用户创建 */
    isEnterpriseUserCreated?: boolean;
  }
  interface GetContractTemplateQueryResultValue {
@@ -2209,6 +2318,8 @@
    label?: string;
    /** 变量代码 */
    name?: string;
    /** 绑定字段 */
    bindProperty?: string;
    /** 是否必填 */
    required?: boolean;
  }
@@ -2358,6 +2469,16 @@
    isDisabled?: boolean;
  }
  interface GetEnabledElectronSignSettingsQueryResultItem {
    access?: EnumElectronSignAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
  }
  interface GetEnterpriseContractTemplateLogsQuery {
    /** 模板Id */
    id?: string;
@@ -2380,6 +2501,17 @@
    operate?: EnumDbAuditOperate;
    /** 操作内容 */
    content?: string[];
  }
  type GetEnterpriseContractTemplateSelectQuery = Record<string, any>;
  interface GetEnterpriseContractTemplateSelectQueryOption {
    /** Id */
    id?: string;
    /** 模板名称 */
    name?: string;
    /** 模板Id */
    templateId?: string;
  }
  interface GetEnterpriseContractTemplatesQuery {
@@ -2431,13 +2563,8 @@
  interface GetEnterpriseElectronSignSettingQueryResult {
    /** Id */
    id?: string;
    realAccess?: EnumRealAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
    /** 电子签通道 */
    electronSignAccesses?: EnumElectronSignAccess[];
  }
  interface GetEnterpriseEmployeeQueryResult {
@@ -3032,6 +3159,47 @@
    hirePassTaskCount?: number;
    /** 已取消 */
    hireRefuseTaskCount?: number;
  }
  interface GetPersonalUserElectronSignQueryResult {
    /** 合同编号 */
    contractCode?: string;
    userSignContractStatus?: EnumTaskUserSignContractStatus;
    /** 签约方信息-员工-姓名 */
    name?: string;
    /** 签约方信息-员工-证件类型 */
    identityType?: string;
    /** 签约方信息-员工-证件号码 */
    identity?: string;
    /** 签约方信息-员工-签约时间 */
    userSignContractTime?: string;
    /** 签约方信息-公司主体-主体类型 */
    enterpriseType?: string;
    /** 签约方信息-公司主体-签约主体 */
    enterpriseName?: string;
    /** 签约方信息-公司主体-签约时间 */
    enterpriseSignContractTime?: string;
    /** 协议内容 */
    contractUrl?: string;
  }
  interface GetPersonalUserElectronSignsQuery {
    userSignContractStatus?: EnumTaskUserSignContractStatus;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetPersonalUserElectronSignsQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetPersonalUserElectronSignsQueryResultItem[];
  }
  interface GetPersonalUserElectronSignsQueryResultItem {
    /** 灵工Id */
    id?: string;
    /** 企业全称 */
    enterpriseName?: string;
    userSignContractStatus?: EnumTaskUserSignContractStatus;
  }
  interface GetPersonalUserInfoSignContractsQuery {
@@ -3891,6 +4059,13 @@
    identity?: string;
  }
  interface InviteElectronSignCommand {
    /** 灵工Id */
    id?: string;
    /** 合同模板Id */
    contractTemplateId?: string;
  }
  interface LoginCommandCallback {
    /** 用户Id */
    id?: string;
@@ -4046,6 +4221,8 @@
    label?: string;
    /** 变量代码 */
    name?: string;
    /** 绑定字段 */
    bindProperty?: string;
    /** 是否必填 */
    required?: boolean;
  }
@@ -4369,6 +4546,14 @@
    data?: GetDictionaryCategorySelectQueryOption;
  }
  interface SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption {
    /** 值 */
    value?: string;
    /** 标签 */
    label?: string;
    data?: GetEnterpriseContractTemplateSelectQueryOption;
  }
  interface SelectOptionStringGetDictionaryDataSelectQueryResultOption {
    /** 值 */
    value?: string;
@@ -4400,13 +4585,8 @@
  interface SetEnterpriseElectronSignSettingCommand {
    /** Id */
    id?: string;
    realAccess?: EnumRealAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
    /** 电子签通道 */
    electronSignAccesses?: EnumElectronSignAccess[];
  }
  interface SetEnterpriseSmsSettingCommand {
@@ -4501,6 +4681,23 @@
    files?: string[];
  }
  interface SyncElectronSignSettingsCommand {
    /** 项 */
    items?: SyncElectronSignSettingsCommandItem[];
  }
  interface SyncElectronSignSettingsCommandItem {
    access?: EnumElectronSignAccess;
    /** 是否禁用 */
    isDisabled?: boolean;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
  }
  interface SyncEnterpriseUserCommand {
    dataSource?: EnumDataSource;
    /** 数据来源Id */
@@ -4549,13 +4746,9 @@
    bankCard?: string;
    /** 是否已校验银行账户 */
    isCheckedBankCard?: boolean;
    /** 电子签通道 */
    electronSignAccesses?: EnumElectronSignAccess[];
    realAccess?: EnumRealAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
    /** 是否实名 */
    isReal?: boolean;
    enterpriseAuth?: SyncEnterpriseUserCommandEnterpriseAuth;
@@ -4564,6 +4757,10 @@
  interface SyncEnterpriseUserCommandEnterpriseAuth {
    enterpriseRealMethod?: EnumEnterpriseRealMethod;
    personalRealMethod?: EnumPersonalRealMethod;
    /** 法人姓名 */
    legalPerson?: string;
    /** 法人身份证号 */
    legalIdentity?: string;
    /** 法人或经办人姓名 */
    name?: string;
    /** 法人或经办人身份证号 */
@@ -4582,6 +4779,8 @@
    proxy?: boolean;
    /** 企业授权书 */
    proxyPowerAttorneyUrl?: string;
    /** 第三方实名通道账号 */
    certAccount?: string;
  }
  type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;
src/views/FlexJobManage/components/SignDialog.vue
New file
@@ -0,0 +1,65 @@
<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">
        </ProFormSelect>
      </ProFormItemV2>
    </ProForm>
    <template #footer>
      <span class="dialog-footer">
        <el-button type="primary" @click="handleConfirm">提交</el-button>
        <el-button type="default" @click="emit('onCancel')">取消</el-button>
      </span>
    </template>
  </ProDialog>
</template>
<script setup lang="ts">
import {
  ProDialog,
  ProForm,
  ProFormItemV2,
  ProFormSelect,
  UploadUserFile,
} from '@bole-core/components';
import { FormInstance } from 'element-plus';
defineOptions({
  name: 'BatchImportDialog',
});
const { enterpriseContractTemplateSelect } = useEnterpriseContractTemplateSelect();
type Form = {
  title?: string;
  url: UploadUserFile[];
};
const visible = defineModel({ type: Boolean });
const form = defineModel<Form>('form');
const emit = defineEmits<{
  (e: 'onDownloadTemplate'): void;
  (e: 'onConfirm'): void;
  (e: 'onCancel'): void;
}>();
const dialogForm = ref<FormInstance>();
function onDialogClose() {
  if (!dialogForm.value) return;
  dialogForm.value.resetFields();
}
function handleConfirm() {
  if (!dialogForm.value) return;
  dialogForm.value.validate((valid) => {
    if (valid) {
      emit('onConfirm');
    } else {
      return;
    }
  });
}
</script>