wupengfei
19 小时以前 08740aaf0861ee8c11a8bf6a97a1219f7d198043
feat: 签约
2个文件已添加
14个文件已修改
770 ■■■■ 已修改文件
apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.config.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/MineAgreementSignCard.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/SignCard.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/apiEnum.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/enterpriseEmployee.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/electronSign.ts 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/enterpriseEmployee.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/index.ts 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
@@ -23,10 +23,10 @@
      :taskInfoUsers="userResumeInfo.taskInfoUsers"
      :isCollapse="true"
    >
      <!-- <template #footer>
        <PageFooterBtn type="primary" plain>解约</PageFooterBtn>
        <PageFooterBtn type="primary">签约</PageFooterBtn>
      </template> -->
      <template #footer>
        <PageFooterBtn v-if="userResumeInfo" type="primary" plain>解约</PageFooterBtn>
        <PageFooterBtn type="primary" @click="goToSign">签约</PageFooterBtn>
      </template>
    </JobDetailContent>
  </LoadingLayout>
</template>
@@ -46,6 +46,12 @@
const { isLoading, isError, userResumeInfo, refetch } = useUserResume({
  enterpriseEmployeeId: enterpriseEmployeeId,
});
function goToSign() {
  Taro.navigateTo({
    url: `${RouterPath.flexJobSign}?enterpriseEmployeeId=${enterpriseEmployeeId}`,
  });
}
</script>
<style lang="scss">
apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue
@@ -34,25 +34,27 @@
        @click="goDetail(item)"
      >
        <template #footerRight>
          <span></span>
          <!-- <template
            v-if="queryState.userSignContractStatus === EnumTaskUserSignContractStatus.Pass"
          <template
            v-if="Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Pass"
          >
            <nut-button
              class="flexJobManage-card-plain-button"
              type="default"
              plain
              @click.stop="handleUnContract"
              @click.stop="goDetail(item)"
              >解约</nut-button
            >
            <nut-button type="primary" @click.stop="checkContract">查看合约</nut-button>
          </template>
          <nut-button
            v-else-if="queryState.userSignContractStatus === EnumTaskUserSignContractStatus.Wait"
            v-else-if="
              Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Wait ||
              Number(queryState.userSignContractStatus) === EnumTaskUserSignContractStatus.Refuse
            "
            type="primary"
            @click.stop="goSignContract(item)"
            @click.stop="goDetail(item)"
            >签约</nut-button
          > -->
          >
        </template>
      </FlexJobCard>
    </template>
@@ -107,7 +109,6 @@
}
function checkContract() {}
function handleUnContract() {}
function goSignContract(item: API.GetNewestWorkerListOutput) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobSign}`,
apps/bMiniApp/src/subpackages/flexJobManage/flexJobSign/InnerPage.vue
@@ -14,49 +14,62 @@
    v-bind="infiniteLoadingProps"
  >
    <template #renderItem="{ item }">
      <SignCard @click="handleCheck(item)" v-model:checked-id="checkedId" :id="item.id"></SignCard>
      <SignCard
        :templateId="item.templateId"
        :name="item.name"
        @click="handleCheck(item)"
        v-model:checked-id="checkedId"
        :id="item.id"
      ></SignCard>
    </template>
  </InfiniteLoading>
  <PageFooter>
    <PageFooterBtn type="primary">邀请签约</PageFooterBtn>
    <PageFooterBtn type="primary" @click="handleInvite">邀请签约</PageFooterBtn>
  </PageFooter>
</template>
<script setup lang="ts">
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { EnumPagedListOrder } from '@12333/constants';
import * as electronSignServices from '@12333/services/apiV2/electronSign';
import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
import _ from 'lodash';
import { trim } from '@12333/utils';
import { Message, trim } from '@12333/utils';
import { SignCard } from '@12333/components';
import Taro from '@tarojs/taro';
import { goBack } from '@/utils';
defineOptions({
  name: 'InnerPage',
});
const router = Taro.useRouter();
const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? '';
const searchValue = ref('');
const queryState = reactive({
  searchValueTrim: '',
  keywords: '',
});
const checkedId = ref('');
const handleSearch = _.debounce(function () {
  queryState.searchValueTrim = trim(searchValue.value);
  queryState.keywords = trim(searchValue.value);
}, 300);
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetFlexTaskListInput = {
    let params: API.GetEnterpriseContractTemplatesQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
      keywords: queryState.keywords,
    };
    return flexWorkerServices.getFlexTaskByArrange(params, {
    return electronSignServices.getEnterpriseContractTemplates(params, {
      showLoading: false,
    });
  },
@@ -65,9 +78,26 @@
  }
);
function handleCheck(item: API.OrderInfoDto) {
function handleCheck(item: API.GetEnterpriseContractTemplatesQueryResultItem) {
  checkedId.value = item.id;
}
async function handleInvite() {
  try {
    let params: API.InviteElectronSignCommand = {
      id: enterpriseEmployeeId,
      contractTemplateId: checkedId.value,
    };
    let res = await enterpriseEmployeeServices.inviteElectronSign(params);
    if (res) {
      Message.success('签约成功', {
        onClosed() {
          goBack();
        },
      });
    }
  } catch (error) {}
}
</script>
<style lang="scss">
apps/cMiniApp/src/subpackages/authentication/extraPage/extraPage.vue
@@ -6,7 +6,7 @@
import Taro from '@tarojs/taro';
defineOptions({
  name: 'authenticationFaRen',
  name: 'extraPage',
});
const router = Taro.useRouter();
apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ProTabs
    v-model="queryState.mineAgreementSignType"
    v-model="queryState.userSignContractStatus"
    name="home-tab"
    :showPaneContent="false"
    class="home-tabs"
@@ -9,17 +9,22 @@
    title-scroll
  >
    <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane>
    <ProTabPane :title="`待签约`" :pane-key="10"></ProTabPane>
    <ProTabPane :title="`生效中`" :pane-key="20"></ProTabPane>
    <ProTabPane :title="`已终止`" :pane-key="30"></ProTabPane>
    <ProTabPane :title="`待签约`" :pane-key="EnumTaskUserSignContractStatus.Wait"></ProTabPane>
    <ProTabPane :title="`生效中`" :pane-key="EnumTaskUserSignContractStatus.Effect"></ProTabPane>
    <ProTabPane :title="`已终止`" :pane-key="EnumTaskUserSignContractStatus.Stop"></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list home-list"
    v-bind="infiniteLoadingProps"
    :key="queryState.mineAgreementSignType"
    :key="queryState.userSignContractStatus"
  >
    <template #renderItem="{ item }">
      <MineAgreementSignCard @click="goDetail"> </MineAgreementSignCard>
      <MineAgreementSignCard
        :enterpriseName="item.enterpriseName"
        :userSignContractStatus="item.userSignContractStatus"
        @click="goDetail(item)"
      >
      </MineAgreementSignCard>
    </template>
  </InfiniteLoading>
</template>
@@ -27,10 +32,9 @@
<script setup lang="ts">
import { MineAgreementSignCard, ProTabs, ProTabPane } from '@12333/components';
import { useUserStore } from '@/stores/modules/user';
import { TaskStatus } from '@/constants';
import { useInfiniteLoading } from '@12333/hooks';
import { EnumPagedListOrder } from '@12333/constants';
import * as taskServices from '@12333/services/apiV2/task';
import { EnumPagedListOrder, EnumTaskUserSignContractStatus } from '@12333/constants';
import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
import Taro from '@tarojs/taro';
defineOptions({
@@ -38,33 +42,34 @@
});
const queryState = reactive({
  mineAgreementSignType: TaskStatus.All,
  userSignContractStatus: 0 as any as EnumTaskUserSignContractStatus,
});
const userStore = useUserStore();
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetFlexTaskListInput = {
    let params: API.GetPersonalUserElectronSignsQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
      userSignContractStatus: queryState.userSignContractStatus,
    };
    return taskServices.getPersonalHireTaskInfos(params, {
    return enterpriseEmployeeServices.getPersonalUserElectronSigns(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['taskServices/getPersonalHireTaskInfos', queryState],
    queryKey: ['enterpriseEmployeeServices/getPersonalUserElectronSigns', queryState],
  }
);
function goDetail() {
function goDetail(row: API.GetPersonalUserElectronSignsQueryResultItem) {
  Taro.navigateTo({
    url: RouterPath.mineAgreementSignDetail,
    url: `${RouterPath.mineAgreementSignDetail}?id=${row.id}`,
  });
}
</script>
apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
@@ -6,23 +6,11 @@
          <template #content>
            <MineAgreementSignDetailItem
              label="协议编号"
              detail="QY1052511040446686047"
              :detail="detail?.contractCode"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="协议状态"
              detail="生效中/已终止"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="起始时间"
              detail="2024.05.20"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="终止时间"
              detail="2025.05.19"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="协议类型"
              detail="劳动合同"
              :detail="EnumTaskUserSignContractStatusText[detail?.userSignContractStatus]"
            ></MineAgreementSignDetailItem>
          </template>
        </MineAgreementSignDetailCard>
@@ -30,20 +18,19 @@
          <template #content>
            <MineAgreementSignDetailItem
              label="员工姓名"
              detail="阳阳"
              :detail="detail?.name"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="证件类型"
              detail="居民身份证"
              :detail="detail?.identityType"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="证件号码"
              detail="622429199105261913"
              :detail="detail?.identity"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem label="岗位" detail="保洁"></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="签约时间"
              detail="2024.05.20"
              :detail="format(detail?.userSignContractTime, 'YYYY-MM-DD')"
            ></MineAgreementSignDetailItem>
          </template>
        </MineAgreementSignDetailCard>
@@ -51,15 +38,15 @@
          <template #content>
            <MineAgreementSignDetailItem
              label="主体类型"
              detail="公司"
              :detail="detail?.enterpriseType"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="签约主体"
              detail="宁波人力无忧人力资源"
              :detail="detail?.enterpriseName"
            ></MineAgreementSignDetailItem>
            <MineAgreementSignDetailItem
              label="签约时间"
              detail="2024.05.20"
              :detail="format(detail?.enterpriseSignContractTime, 'YYYY-MM-DD')"
            ></MineAgreementSignDetailItem>
          </template>
        </MineAgreementSignDetailCard>
@@ -67,31 +54,66 @@
          <template #content>
            <MineAgreementSignDetailItem label="协议内容">
              <template #detail>
                <div class="detail-card-btn">查看协议</div>
                <div class="detail-card-btn" @click="checkAgreement">查看协议</div>
              </template>
            </MineAgreementSignDetailItem>
          </template>
        </MineAgreementSignDetailCard>
      </div>
    </ContentScrollView>
    <PageFooter>
    <PageFooter v-if="detail?.userSignContractStatus === EnumTaskUserSignContractStatus.Wait">
      <PageFooterBtn type="primary" @click="goToSign">去签约</PageFooterBtn>
    </PageFooter>
  </LoadingLayout>
</template>
<script setup lang="ts">
import { useUserStore } from '@/stores/modules/user';
import { useQuery } from '@tanstack/vue-query';
import MineAgreementSignDetailCard from './MineAgreementSignDetailCard.vue';
import MineAgreementSignDetailItem from './MineAgreementSignDetailItem.vue';
import * as enterpriseEmployeeServices from '@12333/services/apiV2/enterpriseEmployee';
import {
  EnumTaskUserSignContractStatus,
  EnumTaskUserSignContractStatusText,
} from '@12333/constants';
import { format } from '@12333/utils';
import Taro from '@tarojs/taro';
defineOptions({
  name: 'InnerPage',
});
const queryState = reactive({});
const router = Taro.useRouter();
const id = router.params?.id;
const code = router.params?.code;
const userStore = useUserStore();
const {
  isLoading,
  isError,
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['enterpriseEmployeeServices/getTaskInfo', id, code],
  queryFn: async () => {
    return await enterpriseEmployeeServices.getPersonalUserElectronSign(
      { id: id, code: code },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.GetPersonalUserElectronSignQueryResult),
  onSuccess(data) {
    // if (data.isExistTradeChatRecord) setTrue();
  },
});
function checkAgreement() {
  const encodedUrl = encodeURIComponent(detail?.value?.contractUrl);
  Taro.navigateTo({
    url: `${RouterPath.mineAgreementSignDetail}?url=${encodedUrl}`,
  });
}
const goToSign = useAccessReal(() => {});
</script>
apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.config.ts
New file
@@ -0,0 +1,3 @@
export default definePageConfig({
  disableScroll: true,
});
apps/cMiniApp/src/subpackages/mine/mineAgreementSignExtraPage/mineAgreementSignExtraPage.vue
New file
@@ -0,0 +1,17 @@
<template>
  <web-view :src="urlLink" />
</template>
<script setup lang="ts">
import Taro from '@tarojs/taro';
defineOptions({
  name: 'mineAgreementSignExtraPage',
});
const router = Taro.useRouter();
const url = (router.params.url as string) ?? '';
const urlLink = computed(() => decodeURIComponent(url));
</script>
packages/components/src/Card/MineAgreementSignCard.vue
@@ -1,11 +1,11 @@
<template>
  <div class="task-card-wrapper">
    <div class="task-card-title-wrapper">
      <div class="task-card-title">宁波人力无忧人力资源有限公司</div>
      <div class="task-card-title">{{ props.enterpriseName }}</div>
    </div>
    <div class="task-card-footer">
      <div class="task-card-actions" :style="{ color: '#FF4D4F' }">
        {{ '待签约' }}
        {{ EnumTaskUserSignContractStatusSignText[props.userSignContractStatus] }}
      </div>
      <IconFont name="rect-right" size="12"></IconFont>
    </div>
@@ -13,14 +13,22 @@
</template>
<script setup lang="ts">
import {
  EnumTaskUserSignContractStatus,
  EnumTaskUserSignContractStatusSignText,
} from '@12333/constants';
import { IconFont } from '@nutui/icons-vue-taro';
import { CommonTaskCardProps } from './card';
defineOptions({
  name: 'MineAgreementSignCard',
});
const props = withDefaults(defineProps<CommonTaskCardProps>(), {});
type Props = {
  enterpriseName: string;
  userSignContractStatus: EnumTaskUserSignContractStatus;
};
const props = withDefaults(defineProps<Props>(), {});
</script>
<style lang="scss">
packages/components/src/Card/SignCard.vue
@@ -1,8 +1,8 @@
<template>
  <div class="sign-card-wrapper">
    <div class="sign-card-title">{{ '合同编号:0293848340' }}</div>
    <div class="sign-card-title">{{ `合同编号:${props.templateId}` }}</div>
    <div class="sign-card-content">
      <div class="sign-card-content-name">{{ 'xxxx劳务公司合同' }}</div>
      <div class="sign-card-content-name">{{ props.name }}</div>
      <div class="sign-card-content-icon">
        <IconFont v-if="selected" name="check-checked" color="#3A71FF" size="16"></IconFont>
        <IconFont v-else name="check-normal" size="16"></IconFont>
@@ -22,6 +22,8 @@
type Props = {
  checkedId?: string;
  id: string;
  templateId: string;
  name: string;
};
const props = withDefaults(defineProps<Props>(), {});
packages/constants/apiEnum.ts
@@ -159,6 +159,18 @@
  Face = 30,
}
/** 个人用户实名状态 */
export enum EnumPersonalUserRealStatus {
  /**未实名 */
  UnReal = 0,
  /**校验中 */
  Checking = 10,
  /**实名失败 */
  Fail = 99,
  /**已实名 */
  Real = 100,
}
/** 实名通道 */
export enum EnumRealAccess {
  /**上上签 */
@@ -319,6 +331,10 @@
  Pass = 20,
  /**已拒签 */
  Refuse = 30,
  /**生效中 */
  Effect = 40,
  /**已终止 */
  Stop = 50,
}
/** 任务验收状态 */
packages/constants/enterpriseEmployee.ts
@@ -18,3 +18,11 @@
  [EnumTaskUserSignContractStatus.Pass]: '已签约',
  [EnumTaskUserSignContractStatus.Refuse]: '已谢绝',
};
export const EnumTaskUserSignContractStatusSignText = {
  [EnumTaskUserSignContractStatus.Wait]: '待签约',
  [EnumTaskUserSignContractStatus.Pass]: '已签约',
  [EnumTaskUserSignContractStatus.Refuse]: '已拒签',
  [EnumTaskUserSignContractStatus.Effect]: '生效中',
  [EnumTaskUserSignContractStatus.Stop]: '已终止',
};
packages/services/apiV2/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,46 @@
        '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 || {}),
    }
  );
}
/** 查询个人实名结果 GET /api/user/electronSign/getPersonalUserRealResult */
export async function getPersonalUserRealResult(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetPersonalUserRealResultParams,
  options?: API.RequestConfig
) {
  return request<API.GetPersonalUserRealResultQueryResult>(
    '/api/user/electronSign/getPersonalUserRealResult',
    {
      method: 'GET',
      params: {
        ...params,
        request: undefined,
        ...params['request'],
      },
      ...(options || {}),
    }
  );
@@ -131,6 +219,21 @@
  });
}
/** 合同制版 POST /api/user/electronSign/saveContractTemplateValues */
export async function saveContractTemplateValues(
  body: API.SaveContractTemplateValuesCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/electronSign/saveContractTemplateValues', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 发送个人三要素实名短信 POST /api/user/electronSign/sendPersonalUserIdentity3RealSms */
export async function sendPersonalUserIdentity3RealSms(
  body: API.SendPersonalUserIdentity3RealSmsCommand,
@@ -160,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 || {}),
  });
}
packages/services/apiV2/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 || {}),
  });
}
packages/services/apiV2/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 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 electronSign from './electronSign';
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,
  resource,
  task,
  dictionary,
  electronSign,
  userResume,
  auth,
  taskCheckReceive,
  electronSign,
  taskUser,
  ocrUtils,
  menu,
  logRecords,
  fileUtils,
packages/services/apiV2/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,18 @@
  interface APIgetPersonalLoginInfoParams {
    /** 查询个人用户登录信息 */
    request?: GetPersonalLoginInfoQuery;
  }
  interface APIgetPersonalUserElectronSignParams {
    /** 灵工Id */
    id?: string;
    /** 合同模板业务编码 */
    code?: string;
  }
  interface APIgetPersonalUserRealResultParams {
    /** 查询个人实名结果 */
    request?: GetPersonalUserRealResultQuery;
  }
  interface APIgetResourceFieldsParams {
@@ -271,6 +293,16 @@
    phoneNumber: string;
    /** 验证码 */
    verifyCode: string;
  }
  interface CheckContractTemplateCommand {
    /** 合同模板Id */
    id?: string;
  }
  interface CheckElectronSignAccessEnabledsCommand {
    /** 通道 */
    accesses?: EnumElectronSignAccess[];
  }
  type CheckHealthQuery = Record<string, any>;
@@ -498,6 +530,17 @@
    Face = 30,
  }
  enum EnumPersonalUserRealStatus {
    /**未实名 */
    UnReal = 0,
    /**校验中 */
    Checking = 10,
    /**实名失败 */
    Fail = 99,
    /**已实名 */
    Real = 100,
  }
  enum EnumRealAccess {
    /**上上签 */
    BestSign = 10,
@@ -644,6 +687,10 @@
    Pass = 20,
    /**已拒签 */
    Refuse = 30,
    /**生效中 */
    Effect = 40,
    /**已终止 */
    Stop = 50,
  }
  enum EnumTaskUserSubmitCheckReceiveStatus {
@@ -1181,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;
@@ -1207,6 +1290,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserInfosQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserRealResultQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserRealResultQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1562,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;
@@ -1685,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;
    /** 错误信息 */
@@ -2150,6 +2289,12 @@
    name?: string;
    /** 模板 */
    file?: string;
    /** 小程序码 */
    wxmpQrCode?: string;
    /** 制版模板照片 */
    templateEditData?: string;
    /** 制版变量JSON */
    templateJsonData?: string;
    /** 业务编码 */
    code?: string;
    access?: EnumElectronSignAccess;
@@ -2157,6 +2302,10 @@
    templateId?: string;
    /** 变量 */
    values?: GetContractTemplateQueryResultValue[];
    /** 创建操作人 */
    createdUserId?: string;
    /** 是否企业用户创建 */
    isEnterpriseUserCreated?: boolean;
  }
  interface GetContractTemplateQueryResultValue {
@@ -2169,6 +2318,8 @@
    label?: string;
    /** 变量代码 */
    name?: string;
    /** 绑定字段 */
    bindProperty?: string;
    /** 是否必填 */
    required?: boolean;
  }
@@ -2318,6 +2469,16 @@
    isDisabled?: boolean;
  }
  interface GetEnabledElectronSignSettingsQueryResultItem {
    access?: EnumElectronSignAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
  }
  interface GetEnterpriseContractTemplateLogsQuery {
    /** 模板Id */
    id?: string;
@@ -2340,6 +2501,17 @@
    operate?: EnumDbAuditOperate;
    /** 操作内容 */
    content?: string[];
  }
  type GetEnterpriseContractTemplateSelectQuery = Record<string, any>;
  interface GetEnterpriseContractTemplateSelectQueryOption {
    /** Id */
    id?: string;
    /** 模板名称 */
    name?: string;
    /** 模板Id */
    templateId?: string;
  }
  interface GetEnterpriseContractTemplatesQuery {
@@ -2379,6 +2551,8 @@
    code?: string;
    /** 模板 */
    file?: string;
    /** 小程序码 */
    wxmpQrCode?: string;
    status?: EnumContractTemplateStatus;
    /** 制版时间 */
    completedTime?: string;
@@ -2389,13 +2563,8 @@
  interface GetEnterpriseElectronSignSettingQueryResult {
    /** Id */
    id?: string;
    realAccess?: EnumRealAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
    /** 电子签通道 */
    electronSignAccesses?: EnumElectronSignAccess[];
  }
  interface GetEnterpriseEmployeeQueryResult {
@@ -2992,6 +3161,47 @@
    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 {
    /** 用户Id */
    id?: string;
@@ -3078,6 +3288,41 @@
    hireTime?: string;
    /** 最近签约时间 */
    signContractTime?: string;
  }
  type GetPersonalUserRealResultQuery = Record<string, any>;
  interface GetPersonalUserRealResultQueryResult {
    /** 是否实名 */
    isReal?: boolean;
    /** 实名时间 */
    realTime?: string;
    realMethod?: EnumUserRealMethod;
    /** 姓名 */
    name?: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 身份证号 */
    identity?: string;
    /** 身份证人像面 */
    identityImg?: string;
    /** 身份证国徽面 */
    identityBackImg?: string;
    gender?: EnumUserGender;
    /** 生日 */
    birthday?: string;
    /** 年龄 */
    age?: number;
    /** 银行卡号 */
    bankCard?: string;
    /** 银行卡照片 */
    bankCardImg?: string;
    realAccess?: EnumRealAccess;
    realStatus?: EnumPersonalUserRealStatus;
    /** 实名失败消息 */
    realFailMessage?: string;
    /** 人脸实名认证地址 */
    faceRealUrl?: string;
  }
  interface GetResourceFieldsQueryResultItem {
@@ -3814,6 +4059,13 @@
    identity?: string;
  }
  interface InviteElectronSignCommand {
    /** 灵工Id */
    id?: string;
    /** 合同模板Id */
    contractTemplateId?: string;
  }
  interface LoginCommandCallback {
    /** 用户Id */
    id?: string;
@@ -3939,18 +4191,27 @@
    name: string;
    /** 模板 */
    file: string;
    /** 制版模板照片 */
    templateEditData?: string;
    /** 业务编码 */
    code?: string;
    access?: EnumElectronSignAccess;
    /** 模板Id */
    templateId?: string;
    /** 变量 */
    values?: SaveContractTemplateCommandValue[];
    /** Id */
    id?: string;
  }
  interface SaveContractTemplateCommandValue {
  interface SaveContractTemplateValuesCommand {
    /** 模板Id */
    id: string;
    /** 制版变量JSON */
    templateJsonData?: string;
    /** 变量 */
    values: SaveContractTemplateValuesCommandItem[];
  }
  interface SaveContractTemplateValuesCommandItem {
    /** Id */
    id?: string;
    type?: EnumContractTemplateValueType;
@@ -3960,6 +4221,8 @@
    label?: string;
    /** 变量代码 */
    name?: string;
    /** 绑定字段 */
    bindProperty?: string;
    /** 是否必填 */
    required?: boolean;
  }
@@ -4283,6 +4546,14 @@
    data?: GetDictionaryCategorySelectQueryOption;
  }
  interface SelectOptionGuidGetEnterpriseContractTemplateSelectQueryOption {
    /** 值 */
    value?: string;
    /** 标签 */
    label?: string;
    data?: GetEnterpriseContractTemplateSelectQueryOption;
  }
  interface SelectOptionStringGetDictionaryDataSelectQueryResultOption {
    /** 值 */
    value?: string;
@@ -4314,13 +4585,8 @@
  interface SetEnterpriseElectronSignSettingCommand {
    /** Id */
    id?: string;
    realAccess?: EnumRealAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
    /** 电子签通道 */
    electronSignAccesses?: EnumElectronSignAccess[];
  }
  interface SetEnterpriseSmsSettingCommand {
@@ -4415,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 */
@@ -4463,13 +4746,9 @@
    bankCard?: string;
    /** 是否已校验银行账户 */
    isCheckedBankCard?: boolean;
    /** 电子签通道 */
    electronSignAccesses?: EnumElectronSignAccess[];
    realAccess?: EnumRealAccess;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
    signCost?: number;
    /** 一口价 */
    mergeSignCost?: number;
    /** 是否实名 */
    isReal?: boolean;
    enterpriseAuth?: SyncEnterpriseUserCommandEnterpriseAuth;
@@ -4478,6 +4757,10 @@
  interface SyncEnterpriseUserCommandEnterpriseAuth {
    enterpriseRealMethod?: EnumEnterpriseRealMethod;
    personalRealMethod?: EnumPersonalRealMethod;
    /** 法人姓名 */
    legalPerson?: string;
    /** 法人身份证号 */
    legalIdentity?: string;
    /** 法人或经办人姓名 */
    name?: string;
    /** 法人或经办人身份证号 */
@@ -4496,6 +4779,8 @@
    proxy?: boolean;
    /** 企业授权书 */
    proxyPowerAttorneyUrl?: string;
    /** 第三方实名通道账号 */
    certAccount?: string;
  }
  type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;