4421c94b6bb41a3ce1a1489dbd2f4be7855b4717..ce7ff0effee22807c8d29a31d6f5f2713d3bf95c
9 小时以前 wupengfei
Merge branch 'master' into dev-v1.1
ce7ff0 对比 | 目录
10 小时以前 wupengfei
feat: 页面
4f0a66 对比 | 目录
11 小时以前 zhengyiming
fix: bug
68e3ef 对比 | 目录
12 小时以前 zhengyiming
fix: bug
72ba29 对比 | 目录
14 小时以前 wupengfei
feat: 页面
226030 对比 | 目录
5个文件已添加
15个文件已修改
1077 ■■■■ 已修改文件
.env.development 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/enterpriseWallet.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/task.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/electronSign.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/enterpriseWallet.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 196 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/user.ts 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/enterpriseWallet.ts 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CPersonManage/components/CPersonDetailDialog.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CPersonManage/components/SignDetailView.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CPersonManage/components/StaffDetailInfoView.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CPersonManage/components/StaffResumeView.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseManage/EnterpriseManageList.vue 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseManage/components/ConfigureDialog.vue 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -12,6 +12,7 @@
# 开发环境后端地址
VITE_PROXY_DOMAIN_REAL = "http://localhost:53780/"
# VITE_PROXY_DOMAIN_REAL = "https://testfj.81812333.com/"
# VITE_PROXY_DOMAIN_REAL = "https://lgdapi.81812333.com"
.eslintrc-auto-import.json
@@ -44,11 +44,11 @@
    "EnumEnterpriseWalletAccess": true,
    "EnumEnterpriseWalletExpandindirectOrderFileType": true,
    "EnumEnterpriseWalletExpandindirectOrderScene": true,
    "EnumEnterpriseWalletExpandindirectOrderSceneText": true,
    "EnumEnterpriseWalletExpandindirectOrderStatus": true,
    "EnumEnterpriseWalletExpandindirectOrderStatusText": true,
    "EnumEnterpriseWalletSignStatus": true,
    "EnumEnterpriseWalletSignStatusText": true,
    "EnumEnterpriseWalletTransactionStatus": true,
    "EnumEnterpriseWalletTransactionType": true,
    "EnumMenuType": true,
    "EnumMenuVisitLevel": true,
@@ -56,7 +56,9 @@
    "EnumPagedListOrder": true,
    "EnumPayAccess": true,
    "EnumPersonalFreeTime": true,
    "EnumPersonalFreeTimeText": true,
    "EnumPersonalJobSeekingStatus": true,
    "EnumPersonalJobSeekingStatusText": true,
    "EnumPersonalRealMethod": true,
    "EnumPersonalUserRealStatus": true,
    "EnumRealAccess": true,
@@ -95,6 +97,8 @@
    "EnumUserStatus": true,
    "EnumUserType": true,
    "EnumUserTypeText": true,
    "EnumUserWalletTransactionType": true,
    "EnumWalletTransactionStatus": true,
    "ExtractDefaultPropTypes": true,
    "ExtractPropTypes": true,
    "ExtractPublicPropTypes": true,
auto-imports.d.ts
@@ -46,6 +46,7 @@
  const EnumEnterpriseWalletAccess: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletAccess']
  const EnumEnterpriseWalletExpandindirectOrderFileType: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderFileType']
  const EnumEnterpriseWalletExpandindirectOrderScene: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderScene']
  const EnumEnterpriseWalletExpandindirectOrderSceneText: typeof import('./src/constants/enterpriseWallet')['EnumEnterpriseWalletExpandindirectOrderSceneText']
  const EnumEnterpriseWalletExpandindirectOrderStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderStatus']
  const EnumEnterpriseWalletExpandindirectOrderStatusText: typeof import('./src/constants/enterprise')['EnumEnterpriseWalletExpandindirectOrderStatusText']
  const EnumEnterpriseWalletSignStatus: typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletSignStatus']
@@ -58,7 +59,9 @@
  const EnumPagedListOrder: typeof import('./src/constants/apiEnum')['EnumPagedListOrder']
  const EnumPayAccess: typeof import('./src/constants/apiEnum')['EnumPayAccess']
  const EnumPersonalFreeTime: typeof import('./src/constants/apiEnum')['EnumPersonalFreeTime']
  const EnumPersonalFreeTimeText: typeof import('./src/constants/task')['EnumPersonalFreeTimeText']
  const EnumPersonalJobSeekingStatus: typeof import('./src/constants/apiEnum')['EnumPersonalJobSeekingStatus']
  const EnumPersonalJobSeekingStatusText: typeof import('./src/constants/task')['EnumPersonalJobSeekingStatusText']
  const EnumPersonalRealMethod: typeof import('./src/constants/apiEnum')['EnumPersonalRealMethod']
  const EnumPersonalUserRealStatus: typeof import('./src/constants/apiEnum')['EnumPersonalUserRealStatus']
  const EnumRealAccess: typeof import('./src/constants/apiEnum')['EnumRealAccess']
@@ -97,6 +100,8 @@
  const EnumUserStatus: typeof import('./src/constants/apiEnum')['EnumUserStatus']
  const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType']
  const EnumUserTypeText: typeof import('./src/constants/apiEnumText')['EnumUserTypeText']
  const EnumUserWalletTransactionType: typeof import('./src/constants/apiEnum')['EnumUserWalletTransactionType']
  const EnumWalletTransactionStatus: typeof import('./src/constants/apiEnum')['EnumWalletTransactionStatus']
  const FastButtonMap: typeof import('./src/constants/module')['FastButtonMap']
  const FastColumnList: typeof import('./src/constants/module')['FastColumnList']
  const FastDataButtonList: typeof import('./src/constants/module')['FastDataButtonList']
@@ -254,7 +259,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, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionStatus, EnumEnterpriseWalletTransactionType, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionStatus, EnumEnterpriseWalletTransactionType, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum'
  export type { EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumCodeUrlScene, EnumContractTemplateStatus, EnumContractTemplateValueRecorder, EnumContractTemplateValueType, EnumDataSource, EnumDbAuditOperate, EnumElectronSignAccess, EnumEnterpriseCostStatus, EnumEnterpriseCostType, EnumEnterpriseRealMethod, EnumEnterpriseWalletAccess, EnumEnterpriseWalletExpandindirectOrderFileType, EnumEnterpriseWalletExpandindirectOrderScene, EnumEnterpriseWalletExpandindirectOrderStatus, EnumEnterpriseWalletSignStatus, EnumEnterpriseWalletTransactionType, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumPersonalUserRealStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementOrderStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, EnumUserWalletTransactionType, EnumWalletTransactionStatus, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum'
  import('./src/constants/apiEnum')
  // @ts-ignore
  export type { FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum, FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum } from './src/constants/cPerson'
@@ -339,11 +344,11 @@
    readonly EnumEnterpriseWalletAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletAccess']>
    readonly EnumEnterpriseWalletExpandindirectOrderFileType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderFileType']>
    readonly EnumEnterpriseWalletExpandindirectOrderScene: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderScene']>
    readonly EnumEnterpriseWalletExpandindirectOrderSceneText: UnwrapRef<typeof import('./src/constants/enterpriseWallet')['EnumEnterpriseWalletExpandindirectOrderSceneText']>
    readonly EnumEnterpriseWalletExpandindirectOrderStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletExpandindirectOrderStatus']>
    readonly EnumEnterpriseWalletExpandindirectOrderStatusText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumEnterpriseWalletExpandindirectOrderStatusText']>
    readonly EnumEnterpriseWalletSignStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletSignStatus']>
    readonly EnumEnterpriseWalletSignStatusText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumEnterpriseWalletSignStatusText']>
    readonly EnumEnterpriseWalletTransactionStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionStatus']>
    readonly EnumEnterpriseWalletTransactionType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseWalletTransactionType']>
    readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
    readonly EnumMenuVisitLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']>
@@ -351,7 +356,9 @@
    readonly EnumPagedListOrder: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPagedListOrder']>
    readonly EnumPayAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPayAccess']>
    readonly EnumPersonalFreeTime: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPersonalFreeTime']>
    readonly EnumPersonalFreeTimeText: UnwrapRef<typeof import('./src/constants/task')['EnumPersonalFreeTimeText']>
    readonly EnumPersonalJobSeekingStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPersonalJobSeekingStatus']>
    readonly EnumPersonalJobSeekingStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumPersonalJobSeekingStatusText']>
    readonly EnumPersonalRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPersonalRealMethod']>
    readonly EnumPersonalUserRealStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPersonalUserRealStatus']>
    readonly EnumRealAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRealAccess']>
@@ -390,6 +397,8 @@
    readonly EnumUserStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserStatus']>
    readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']>
    readonly EnumUserTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumUserTypeText']>
    readonly EnumUserWalletTransactionType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserWalletTransactionType']>
    readonly EnumWalletTransactionStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumWalletTransactionStatus']>
    readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
    readonly FastColumnList: UnwrapRef<typeof import('./src/constants/module')['FastColumnList']>
    readonly FastDataButtonList: UnwrapRef<typeof import('./src/constants/module')['FastDataButtonList']>
@@ -541,4 +550,4 @@
    readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
    readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
  }
}
}
src/constants/apiEnum.ts
@@ -167,22 +167,6 @@
  Stop = 999,
}
/** 企业钱包交易状态 */
export enum EnumEnterpriseWalletTransactionStatus {
  /**待提交 */
  WaitSubmit = 1,
  /**待支付 */
  WaitPay = 10,
  /**处理中 */
  Dealing = 20,
  /**成功 */
  Success = 30,
  /**退票 */
  Refund = 40,
  /**失败 */
  Fail = 50,
}
/** 企业钱包交易类型 */
export enum EnumEnterpriseWalletTransactionType {
  /**充值 */
@@ -275,9 +259,9 @@
export enum EnumPersonalUserRealStatus {
  /**未实名 */
  UnReal = 0,
  /**校验中 */
  /**认证中 */
  Checking = 10,
  /**实名失败 */
  /**认证失败 */
  Fail = 99,
  /**已实名 */
  Real = 100,
@@ -511,6 +495,30 @@
  Operation = 100,
}
/** 用户钱包收支类型 */
export enum EnumUserWalletTransactionType {
  /**收入 */
  Income = 10,
  /**提现 */
  Withdraw = 20,
}
/** 钱包交易状态 */
export enum EnumWalletTransactionStatus {
  /**待提交 */
  WaitSubmit = 1,
  /**待支付 */
  WaitPay = 10,
  /**处理中 */
  Dealing = 20,
  /**成功 */
  Success = 30,
  /**退票 */
  Refund = 40,
  /**失败 */
  Fail = 50,
}
/** 我的报名分页列表-状态 */
export enum GetPersonalApplyTaskInfosQueryStatus {
  /**待确认 */
src/constants/enterpriseWallet.ts
New file
@@ -0,0 +1,13 @@
import { EnumEnterpriseWalletExpandindirectOrderScene } from './apiEnum';
export const EnumEnterpriseWalletExpandindirectOrderSceneText = {
  [EnumEnterpriseWalletExpandindirectOrderScene.XIANJIN_YINGXIAO]: '现金营销',
  [EnumEnterpriseWalletExpandindirectOrderScene.XINGZHENG_BUTIE]: '行政补贴',
  [EnumEnterpriseWalletExpandindirectOrderScene.BAOXIAN_LIPEI]: '保险理赔',
  [EnumEnterpriseWalletExpandindirectOrderScene.YONGJIN_BAOCHOU]: '佣金报酬',
  [EnumEnterpriseWalletExpandindirectOrderScene.QIYE_PEIFU]: '企业赔付',
  [EnumEnterpriseWalletExpandindirectOrderScene.CAIGOU_HUOKUAN]: '采购货款',
  [EnumEnterpriseWalletExpandindirectOrderScene.ERSHOU_HUISHOU]: '二手回收',
  [EnumEnterpriseWalletExpandindirectOrderScene.GONGYI_BUZHU]: '公益补助',
  [EnumEnterpriseWalletExpandindirectOrderScene.ZHUANZHANG_QITA]: '其他场景',
};
src/constants/index.ts
@@ -19,3 +19,4 @@
export * from './task';
export * from './enterpriseEmployee';
export * from './electronSign';
export * from './enterpriseWallet';
src/constants/task.ts
@@ -53,3 +53,17 @@
  [EnumTaskCheckReceiveStatus.WaitSubmit]: '待验收',
  [EnumTaskCheckReceiveStatus.Completed]: '已验收',
};
export const EnumPersonalFreeTimeText = {
  [EnumPersonalFreeTime.NoLimit]: '不限',
  [EnumPersonalFreeTime.WinterSummerVacations]: '寒暑假',
  [EnumPersonalFreeTime.FestivalAndHoliday]: '节假日',
  [EnumPersonalFreeTime.Weekend]: '周六日',
  [EnumPersonalFreeTime.Weekday]: '工作日',
};
export const EnumPersonalJobSeekingStatusText = {
  [EnumPersonalJobSeekingStatus.Active]: '积极找任务',
  [EnumPersonalJobSeekingStatus.Whatever]: '随便看看',
  [EnumPersonalJobSeekingStatus.Not]: '暂时不找任务',
};
src/hooks/electronSign.ts
@@ -3,28 +3,33 @@
type UseEnabledElectronSignSettingsOptions = {
  enterpriseId?: MaybeRef<string>;
  all?: MaybeRef<boolean>;
};
export function useEnabledElectronSignSettings(
  options: UseEnabledElectronSignSettingsOptions = {}
) {
  const { enterpriseId } = options;
  const { enterpriseId, all } = options;
  const queryClient = useQueryClient();
  const { data } = useQuery({
    queryKey: ['electronSignServices/getEnabledElectronSignSettings', enterpriseId],
    queryKey: ['electronSignServices/getEnabledElectronSignSettings', enterpriseId, all],
    queryFn: async () => {
      let res = await electronSignServices.getEnabledElectronSignSettings(
        { enterpriseId: unref(enterpriseId) },
        { enterpriseId: unref(enterpriseId), all: unref(all) },
        { showLoading: false }
      );
      return res;
    },
    select(data) {
      const showDisabledName = !!unref(enterpriseId) && unref(all);
      return data.map((x) => ({
        ...x,
        accessName: EnumElectronSignAccessText[x.access],
        accessName:
          showDisabledName && x.isDisabled
            ? '该通道无法使用'
            : EnumElectronSignAccessText[x.access],
      }));
    },
    placeholderData: () => [] as API.GetEnabledElectronSignSettingsQueryResultItem[],
@@ -32,7 +37,7 @@
  function invalidateQueries() {
    return queryClient.invalidateQueries({
      queryKey: ['electronSignServices/getEnabledElectronSignSettings', enterpriseId],
      queryKey: ['electronSignServices/getEnabledElectronSignSettings'],
    });
  }
src/services/api/enterpriseWallet.ts
@@ -310,18 +310,3 @@
    }
  );
}
/** 企业钱包转账 POST /api/user/enterpriseWallet/transferEnterpriseWallet */
export async function transferEnterpriseWallet(
  body: API.TransferEnterpriseWalletCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/enterpriseWallet/transferEnterpriseWallet', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/typings.d.ts
@@ -76,6 +76,8 @@
  interface APIgetEnabledElectronSignSettingsParams {
    /** 企业Id */
    enterpriseId?: string;
    /** 是否查询全部 */
    all?: boolean;
  }
  interface APIgetEnterpriseContractTemplateSelectParams {
@@ -168,6 +170,11 @@
  interface APIgetPersonalUserRealResultParams {
    /** 查询个人实名结果 */
    request?: GetPersonalUserRealResultQuery;
  }
  interface APIgetPersonalUserTransactionParams {
    /** 收支Id */
    id?: string;
  }
  interface APIgetResourceFieldsParams {
@@ -641,21 +648,6 @@
    Stop = 999,
  }
  enum EnumEnterpriseWalletTransactionStatus {
    /**待提交 */
    WaitSubmit = 1,
    /**待支付 */
    WaitPay = 10,
    /**处理中 */
    Dealing = 20,
    /**成功 */
    Success = 30,
    /**退票 */
    Refund = 40,
    /**失败 */
    Fail = 50,
  }
  enum EnumEnterpriseWalletTransactionType {
    /**充值 */
    Recharge = 10,
@@ -738,9 +730,9 @@
  enum EnumPersonalUserRealStatus {
    /**未实名 */
    UnReal = 0,
    /**校验中 */
    /**认证中 */
    Checking = 10,
    /**实名失败 */
    /**认证失败 */
    Fail = 99,
    /**已实名 */
    Real = 100,
@@ -952,6 +944,28 @@
    Enterprise = 20,
    /**运营 */
    Operation = 100,
  }
  enum EnumUserWalletTransactionType {
    /**收入 */
    Income = 10,
    /**提现 */
    Withdraw = 20,
  }
  enum EnumWalletTransactionStatus {
    /**待提交 */
    WaitSubmit = 1,
    /**待支付 */
    WaitPay = 10,
    /**处理中 */
    Dealing = 20,
    /**成功 */
    Success = 30,
    /**退票 */
    Refund = 40,
    /**失败 */
    Fail = 50,
  }
  interface ExportTaskCheckReceiveTaskUsersCommand {
@@ -1634,6 +1648,42 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserRealResultQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserTransactionQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserTransactionQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserTransactionsQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserTransactionsQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -2641,6 +2691,7 @@
    date?: string;
    /** 提交时间 */
    createdTime?: string;
    checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
    /** 验收照片 */
    files?: string[];
  }
@@ -2945,6 +2996,8 @@
  interface GetEnabledElectronSignSettingsQueryResultItem {
    access?: EnumElectronSignAccess;
    /** 是否禁用 */
    isDisabled?: boolean;
    /** 实名费用 */
    realVerifyCost?: number;
    /** 签约费用 */
@@ -3288,10 +3341,6 @@
    /** 钱包Id */
    id?: string;
    access?: EnumEnterpriseWalletAccess;
    /** 账号 */
    account?: string;
    /** 商户Id */
    merchantId?: string;
    /** 协议号 */
    code?: string;
    /** 通道协议号 */
@@ -3303,6 +3352,21 @@
    /** 协议失效时间 */
    invalidTime?: string;
    signStatus?: EnumEnterpriseWalletSignStatus;
    /** 支付宝姓名 */
    name?: string;
    /** 支付宝登录账号 */
    identity?: string;
    scene?: EnumEnterpriseWalletExpandindirectOrderScene;
    /** 转账场景说明 */
    sceneDirections?: string;
    orderStatus?: EnumEnterpriseWalletExpandindirectOrderStatus;
    /** 进件单任务完结时间 */
    taskFinishTime?: string;
    /** 进件单审核不通过原因 */
    riskReviewRemark?: string;
    sitesInfo?: GetEnterpriseWalletExpandindirectOrderQueryResultSites;
    /** 附件 */
    files?: GetEnterpriseWalletExpandindirectOrderQueryResultFile[];
    expandindirectOrderStatus?: EnumEnterpriseWalletExpandindirectOrderStatus;
  }
@@ -3318,7 +3382,7 @@
    remark?: string;
    /** 订单支付时间 */
    transDate?: string;
    transactionStatus?: EnumEnterpriseWalletTransactionStatus;
    transactionStatus?: EnumWalletTransactionStatus;
  }
  interface GetExceptionLogsQuery {
@@ -3711,6 +3775,9 @@
    contactPhoneNumber?: string;
    /** 是否实名 */
    isReal?: boolean;
    realStatus?: EnumPersonalUserRealStatus;
    /** 实名失败消息 */
    realFailMessage?: string;
    realMethod?: EnumUserRealMethod;
    /** 我的报名 */
    taskCount?: number;
@@ -3718,6 +3785,8 @@
    hirePassTaskCount?: number;
    /** 已取消 */
    hireRefuseTaskCount?: number;
    /** 余额 */
    balance?: number;
  }
  type GetPersonalUserBankCardQuery = Record<string, any>;
@@ -3901,6 +3970,74 @@
    realFailMessage?: string;
    /** 人脸实名认证地址 */
    faceRealUrl?: string;
  }
  interface GetPersonalUserTransactionQueryResult {
    /** 收支Id */
    id?: string;
    type?: EnumUserWalletTransactionType;
    /** 订单号 */
    code?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 结算日期 */
    settlementTime?: string;
    /** 结算金额 */
    settlementAmount?: number;
    /** 实发金额/提现金额 */
    amount?: number;
    /** 收款人姓名 */
    receiveName?: string;
    /** 收款账户 */
    receiveAccount?: string;
    /** 服务费 */
    serviceFee?: number;
    /** 实际到账 */
    actualAmount?: number;
    /** 预计到账时间 */
    arrivalTimeEnd?: string;
    /** 订单支付时间 */
    transDate?: string;
    /** 创建时间 */
    createdTime?: string;
    /** 失败原因 */
    failReason?: string;
  }
  interface GetPersonalUserTransactionsQuery {
    /** 创建时间-起始 */
    createdTimeStart?: string;
    /** 创建时间-截止 */
    createdTimeEnd?: string;
    type?: EnumUserWalletTransactionType;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetPersonalUserTransactionsQueryResult {
    objectData?: GetPersonalUserTransactionsQueryResultObjectData;
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetPersonalUserTransactionsQueryResultItem[];
  }
  interface GetPersonalUserTransactionsQueryResultItem {
    /** 收支Id */
    id?: string;
    /** 标题 */
    title?: string;
    /** 创建时间 */
    createdTime?: string;
    /** 金额 */
    amount?: number;
    /** 余额 */
    balance?: number;
  }
  interface GetPersonalUserTransactionsQueryResultObjectData {
    /** 总收入 */
    sumIncome?: number;
    /** 总提现 */
    sumWithdraw?: number;
  }
  interface GetResourceFieldsQueryResultItem {
@@ -4124,6 +4261,7 @@
  }
  interface GetSettlementTaskUsersQueryResult {
    detail?: GetSettlementTaskQueryResult;
    /** 结算名单 */
    data?: GetSettlementTaskUsersQueryResultItem[];
    /** 错误信息 */
@@ -4787,10 +4925,6 @@
    /** 企业Id */
    enterpriseId?: string;
    access?: EnumEnterpriseWalletAccess;
    /** 账号 */
    account?: string;
    /** 商户Id */
    merchantId?: string;
  }
  interface OpenEnterpriseWalletCommandResult {
@@ -5367,6 +5501,8 @@
  interface SendInviteElectronSignSmsCommand {
    /** Id */
    ids?: string[];
    /** 合同模板Id */
    contractTemplateId?: string;
  }
  interface SendLoginOrRegisterVerifyCodeCommand {
@@ -5646,14 +5782,6 @@
    industrialParkIds?: string[];
    status?: EnumUserStatus;
    /** 备注 */
    remark?: string;
  }
  interface TransferEnterpriseWalletCommand {
    access?: EnumEnterpriseWalletAccess;
    /** 金额 */
    amount?: number;
    /** 充值备注 */
    remark?: string;
  }
src/services/api/user.ts
@@ -70,6 +70,42 @@
  );
}
/** 查询个人用户收支明细详情 GET /api/user/user/getPersonalUserTransaction */
export async function getPersonalUserTransaction(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetPersonalUserTransactionParams,
  options?: API.RequestConfig
) {
  return request<API.GetPersonalUserTransactionQueryResult>(
    '/api/user/user/getPersonalUserTransaction',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 查询个人用户收支明细分页列表数据 POST /api/user/user/getPersonalUserTransactions */
export async function getPersonalUserTransactions(
  body: API.GetPersonalUserTransactionsQuery,
  options?: API.RequestConfig
) {
  return request<API.GetPersonalUserTransactionsQueryResult>(
    '/api/user/user/getPersonalUserTransactions',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询用户角色列表 GET /api/user/user/getUserInfoRoles */
export async function getUserInfoRoles(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
src/utils/enterpriseWallet.ts
New file
@@ -0,0 +1,19 @@
import { UploadUserFile } from '@bole-core/components';
import { convertApi2FormUrl } from './common';
export function convertWalletFilesToApi(
  files: UploadUserFile[],
  type: EnumEnterpriseWalletExpandindirectOrderFileType
) {
  return files.map(
    (item) =>
      ({ file: item.path, type: type } as API.EnterpriseWalletExpandindirectCreateCommandFile)
  );
}
export function convertWalletApiToFiles(
  files: API.GetEnterpriseWalletExpandindirectOrderQueryResultFile[],
  type: EnumEnterpriseWalletExpandindirectOrderFileType
) {
  return files.filter((item) => item.type === type).map((item) => convertApi2FormUrl(item.file));
}
src/utils/index.ts
@@ -5,3 +5,4 @@
export * from './module';
export * from './theme';
export * from './validator';
export * from './enterpriseWallet';
src/views/CPersonManage/components/CPersonDetailDialog.vue
@@ -2,49 +2,13 @@
  <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="form.name" />
          </ProFormItemV2>
          <ProFormItemV2 label="身份证号:" prop="identity">
            <ProFormText v-model.trim="form.identity" />
          </ProFormItemV2>
          <ProFormItemV2 label="手机号:" prop="contactPhoneNumber">
            <ProFormText v-model.trim="form.contactPhoneNumber" />
          </ProFormItemV2>
          <ProFormItemV2 label="性别:" prop="gender">
            <ProFormRadio
              v-model="form.gender"
              :value-enum="EnumUserGenderTextForPerson"
            ></ProFormRadio>
          </ProFormItemV2>
          <ProFormItemV2 label="年龄:" prop="age">
            <ProFormInputNumber v-model="form.age" unit="岁"></ProFormInputNumber>
          </ProFormItemV2>
          <ProFormItemV2 label="身份证正面:" prop="identityImg">
            <ProFormImageUpload v-model:file-url="form.identityImg" />
          </ProFormItemV2>
          <ProFormItemV2 label="身份证反面:" prop="identityBackImg">
            <ProFormImageUpload v-model:file-url="form.identityBackImg" />
          </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">
            <template #contractUrl="{ row }">
              <PreviewBtn
                v-if="
                  row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass &&
                  row.contractUrl
                "
                :show-download-btn="false"
                :url="setOSSLink(row.contractUrl)"
              >
              </PreviewBtn>
            </template>
          </ProTableV2>
        </ProDialogTableWrapper>
        <SignDetailView :form="form" />
      </ProTabPane>
    </ProTabs>
    <template #footer>
@@ -56,33 +20,11 @@
</template>
<script setup lang="ts">
import {
  ProDialog,
  ProTableV2,
  ProDialogTableWrapper,
  ProTabs,
  ProTabPane,
  useTable,
  ProForm,
  ProFormItemV2,
  ProFormText,
  UploadUserFile,
  ProFormImageUpload,
  ProFormRadio,
  ProFormInputNumber,
  defineColumns,
  PreviewBtn,
} from '@bole-core/components';
import { ProDialog, ProTabs, ProTabPane } from '@bole-core/components';
import _ from 'lodash';
import * as userServices from '@/services/api/user';
import {
  EnumUserGender,
  EnumUserGenderTextForPerson,
  EnumTaskUserHireStatusText,
  EnumTaskUserSignContractStatusText,
  EnumTaskUserSignContractStatus,
} from '@/constants';
import { setOSSLink } from '@/utils';
import StaffDetailInfoView from './StaffDetailInfoView.vue';
import StaffResumeView from './StaffResumeView.vue';
import SignDetailView from './SignDetailView.vue';
defineOptions({
  name: 'CPersonDetailDialog',
@@ -91,13 +33,6 @@
type Form = {
  tabType: string;
  id: string;
  name: string;
  identity: string;
  contactPhoneNumber: string;
  age: number;
  gender: EnumUserGender;
  identityImg: UploadUserFile[];
  identityBackImg: UploadUserFile[];
};
const form = defineModel<Form>('form');
@@ -106,103 +41,6 @@
const emit = defineEmits<{
  (e: 'onCancel'): void;
}>();
const column = defineColumns([
  {
    id: '1',
    enCode: 'enterpriseName',
    name: '所属客户',
  },
  {
    id: '2',
    enCode: 'applyTime',
    name: '报名时间',
  },
  {
    id: '3',
    enCode: 'hireStatus',
    name: '录用状态',
  },
  {
    id: '4',
    enCode: 'hireTime',
    name: '录用时间',
  },
  {
    id: '5',
    enCode: 'userSignContractStatus',
    name: '签约状态',
  },
  {
    id: '6',
    enCode: 'enterpriseSignContractStatus',
    name: '企业签约状态',
  },
  {
    id: '7',
    enCode: 'enterpriseSignContractTime',
    name: '企业签约时间',
  },
  {
    id: '8',
    enCode: 'contractUrl',
    name: '电子合同',
  },
]);
watch(
  visible,
  (val) => {
    console.log('val: ', val);
    if (val) {
      getList();
    }
  },
  {
    immediate: true,
  }
);
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetPersonalUserInfoSignContractsQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        id: form.value.id,
      };
      let res = await userServices.getPersonalUserInfoSignContracts(params);
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
    },
    columnsRenderProps: {
      applyTime: { type: 'date' },
      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),
      // },
    },
  }
);
</script>
<style lang="scss" scoped>
src/views/CPersonManage/components/SignDetailView.vue
New file
@@ -0,0 +1,127 @@
<template>
  <ProTableV2
    v-bind="proTableProps"
    :columns="column"
    :show-operation-column="false"
    :auto-height="false"
    :table-props="{
      height: '400px',
    }"
  >
    <template #contractUrl="{ row }">
      <PreviewBtn
        v-if="row.userSignContractStatus === EnumTaskUserSignContractStatus.Pass && row.contractUrl"
        :show-download-btn="false"
        :url="setOSSLink(row.contractUrl)"
      >
      </PreviewBtn>
    </template>
  </ProTableV2>
</template>
<script setup lang="ts">
import { useTable, ProTableV2, defineColumns } from '@bole-core/components';
import { setOSSLink } from '@/utils';
import {
  EnumTaskUserSignContractStatus,
  EnumTaskUserHireStatusText,
  EnumTaskUserSignContractStatusText,
} from '@/constants';
import * as userServices from '@/services/api/user';
defineOptions({
  name: 'SignDetailView',
});
type Form = {
  id: string;
};
const form = defineModel<Form>('form');
const isLoading = ref(false);
const column = defineColumns([
  {
    id: '1',
    enCode: 'enterpriseName',
    name: '所属客户',
  },
  {
    id: '2',
    enCode: 'applyTime',
    name: '报名时间',
  },
  {
    id: '3',
    enCode: 'hireStatus',
    name: '录用状态',
  },
  {
    id: '4',
    enCode: 'hireTime',
    name: '录用时间',
  },
  {
    id: '5',
    enCode: 'userSignContractStatus',
    name: '签约状态',
  },
  {
    id: '6',
    enCode: 'enterpriseSignContractStatus',
    name: '企业签约状态',
  },
  {
    id: '7',
    enCode: 'enterpriseSignContractTime',
    name: '企业签约时间',
  },
  {
    id: '8',
    enCode: 'contractUrl',
    name: '电子合同',
  },
]);
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetPersonalUserInfoSignContractsQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        id: form.value.id,
      };
      let res = await userServices.getPersonalUserInfoSignContracts(params);
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
    },
    columnsRenderProps: {
      applyTime: { type: 'date' },
      hireTime: { type: 'date' },
      enterpriseSignContractTime: { type: 'date' },
      hireStatus: { type: 'enum', valueEnum: EnumTaskUserHireStatusText },
      userSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
      enterpriseSignContractStatus: { type: 'enum', valueEnum: EnumTaskUserSignContractStatusText },
    },
  }
);
onMounted(async () => {
  isLoading.value = true;
  await getList();
  isLoading.value = false;
});
</script>
src/views/CPersonManage/components/StaffDetailInfoView.vue
New file
@@ -0,0 +1,112 @@
<template>
  <ProForm :model="detail" ref="dialogForm" label-width="120px" is-read>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="姓名:" prop="name">
          <ProFormText v-model.trim="detail.name"></ProFormText>
        </ProFormItemV2>
      </ProFormColItem>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="实名时间:" prop="userRealTime">
          <div>{{ format(detail.userRealTime, 'YYYY-MM-DD HH:mm') }}</div>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="身份证号:" prop="identity">
          <ProFormText v-model.trim="detail.identity"></ProFormText>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="手机号:" prop="contactPhoneNumber">
          <ProFormText v-model.trim="detail.contactPhoneNumber"></ProFormText>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="性别:" prop="gender">
          <ProFormRadio
            v-model="detail.gender"
            :value-enum="EnumUserGenderTextForPerson"
          ></ProFormRadio>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="年龄:" prop="age">
          <ProFormInputNumber v-model="detail.age"> </ProFormInputNumber>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormItemV2 label="身份证正面:" prop="identityImg">
      <ProFormImageUpload v-model:file-url="detail.identityImg"> </ProFormImageUpload>
    </ProFormItemV2>
    <ProFormItemV2 label="身份证反面:" prop="identityBackImg">
      <ProFormImageUpload v-model:file-url="detail.identityBackImg"> </ProFormImageUpload>
    </ProFormItemV2>
  </ProForm>
</template>
<script setup lang="ts">
import {
  ProForm,
  ProFormCol,
  ProFormColItem,
  ProFormItemV2,
  ProFormText,
  ProFormInputNumber,
  ProFormImageUpload,
  ProFormRadio,
  UploadUserFile,
} from '@bole-core/components';
import { convertApi2FormUrlOnlyOne, format } from '@/utils';
import { useQuery } from '@tanstack/vue-query';
import { EnumUserGender, EnumUserGenderTextForPerson } from '@/constants';
import * as enterpriseEmployeeServices from '@/services/api/enterpriseEmployee';
defineOptions({
  name: 'StaffDetailInfoView',
});
type Form = {
  id: string;
};
const form = defineModel<Form>('form');
const detail = reactive({
  name: '',
  identity: '',
  contactPhoneNumber: '',
  gender: EnumUserGender.Male,
  age: 0,
  identityImg: [] as UploadUserFile[],
  identityBackImg: [] as UploadUserFile[],
  userRealTime: '',
});
const { isLoading } = useQuery({
  queryKey: ['enterpriseEmployeeServices/getEnterpriseEmployee', form.value.id],
  queryFn: async () => {
    return await enterpriseEmployeeServices.getEnterpriseEmployee({ id: form.value.id });
  },
  onSuccess(data) {
    detail.name = data.name;
    detail.identity = data.identity;
    detail.contactPhoneNumber = data.contactPhoneNumber;
    detail.gender = data.gender;
    detail.age = data.age ?? 0;
    detail.identityImg = data.identityImg ? convertApi2FormUrlOnlyOne(data.identityImg) : [];
    detail.identityBackImg = data.identityBackImg
      ? convertApi2FormUrlOnlyOne(data.identityBackImg)
      : [];
    detail.userRealTime = data.userRealTime ?? '';
  },
  enabled: computed(() => !!form.value.id),
});
</script>
src/views/CPersonManage/components/StaffResumeView.vue
New file
@@ -0,0 +1,124 @@
<template>
  <ProForm :model="detail" ref="dialogForm" label-width="120px" is-read>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="期望岗位:" prop="name">
          <div>{{ detail.userExpectJobs }}</div>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="空闲时间:" prop="freeTime">
          <ProFormRadio
            v-model="detail.freeTime"
            :value-enum="EnumPersonalFreeTimeText"
          ></ProFormRadio>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="求职状态:" prop="jobSeekingStatus">
          <ProFormRadio
            v-model="detail.jobSeekingStatus"
            :value-enum="EnumPersonalJobSeekingStatusText"
          ></ProFormRadio>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="工作年限:" prop="workSeniority">
          <ProFormText v-model="detail.workSeniority"></ProFormText>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="工作经验:" prop="workExperience">
          <ProFormText v-model="detail.workExperience"></ProFormText>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="身高:" prop="height">
          <ProFormInputNumber v-model="detail.height"></ProFormInputNumber>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormCol>
      <ProFormColItem :span="12">
        <ProFormItemV2 label="体重:" prop="weight">
          <ProFormInputNumber v-model="detail.weight"></ProFormInputNumber>
        </ProFormItemV2>
      </ProFormColItem>
    </ProFormCol>
    <ProFormItemV2 label="个人照片:" prop="photos">
      <ProFormImageUpload v-model:file-url="detail.photos"> </ProFormImageUpload>
    </ProFormItemV2>
  </ProForm>
</template>
<script setup lang="ts">
import {
  ProForm,
  ProFormCol,
  ProFormColItem,
  ProFormItemV2,
  ProFormText,
  ProFormInputNumber,
  ProFormRadio,
  UploadUserFile,
  ProFormImageUpload,
} from '@bole-core/components';
import { EnumPersonalFreeTimeText, EnumPersonalJobSeekingStatusText } from '@/constants';
import { useQuery } from '@tanstack/vue-query';
import * as userResumeServices from '@/services/api/userResume';
import { convertApi2FormUrl } from '@/utils';
defineOptions({
  name: 'StaffResumeView',
});
type Form = {
  id: string;
};
const form = defineModel<Form>('form');
const detail = reactive({
  userExpectJobs: '',
  freeTime: '' as any as EnumPersonalFreeTime,
  jobSeekingStatus: '' as any as EnumPersonalJobSeekingStatus,
  workSeniority: '',
  workExperience: '',
  height: 0,
  weight: 0,
  photos: [] as UploadUserFile[],
});
const { isLoading } = useQuery({
  queryKey: ['userResumeServices/getUserResume', form.value.id],
  queryFn: async () => {
    return await userResumeServices.getUserResume({ enterpriseEmployeeId: form.value.id });
  },
  onSuccess(data) {
    detail.userExpectJobs =
      data.userExpectJobs?.length > 0
        ? data.userExpectJobs.map((x) => x.expectJobContent).join(',')
        : '';
    detail.freeTime = data.freeTime;
    detail.jobSeekingStatus = data.jobSeekingStatus;
    detail.workSeniority = data.workSeniority;
    detail.workExperience = data.workExperience;
    detail.height = data.height ?? 0;
    detail.weight = data.weight ?? 0;
    detail.photos = data.photos
      ? data.photos.map((x) => convertApi2FormUrl(x))
      : ([] as UploadUserFile[]);
  },
  enabled: computed(() => !!form.value.id),
});
</script>
src/views/EnterpriseManage/EnterpriseManageList.vue
@@ -52,6 +52,7 @@
  useTable,
  useFormDialog,
  FieldRadio,
  UploadUserFile,
} from '@bole-core/components';
import { useAccess, useGlobalEventContext } from '@/hooks';
import { EnterpriseConfigureType, IsConfiguredText } from '@/constants';
@@ -59,6 +60,7 @@
import { Message } from '@bole-core/core';
import * as enterpriseServices from '@/services/api/enterprise';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
import { convertWalletApiToFiles, convertWalletFilesToApi } from '@/utils';
defineOptions({
  name: 'EnterpriseManageList',
@@ -171,10 +173,22 @@
        ),
        smsAccess: smsSetting.smsAccess,
        smsCost: smsSetting.smsCost,
        alipayAccount: alipayWallet.account,
        alipayMerchantId: alipayWallet.merchantId,
        alipayAccount: alipayWallet.identity,
        alipayMerchantId: alipayWallet.code,
        signStatus: alipayWallet.signStatus,
        expandindirectOrderStatus: alipayWallet.expandindirectOrderStatus,
        name: alipayWallet.name,
        scene: alipayWallet.scene || EnumEnterpriseWalletExpandindirectOrderScene.YONGJIN_BAOCHOU,
        sceneDirections: alipayWallet.sceneDirections,
        sceneFiles: convertWalletApiToFiles(
          alipayWallet.files,
          EnumEnterpriseWalletExpandindirectOrderFileType.Scene
        ),
        sceneQualificationFiles: convertWalletApiToFiles(
          alipayWallet.files,
          EnumEnterpriseWalletExpandindirectOrderFileType.SceneQualification
        ),
      });
    } else {
      handleAdd({
@@ -196,6 +210,14 @@
    alipayMerchantId: '',
    signStatus: '' as any as EnumEnterpriseWalletSignStatus,
    expandindirectOrderStatus: '' as any as EnumEnterpriseWalletExpandindirectOrderStatus,
    name: '',
    scene: '' as any as EnumEnterpriseWalletExpandindirectOrderScene,
    sceneDirections: '',
    /**转账场景截图 */
    sceneFiles: [] as UploadUserFile[],
    /**商户行业资质图片或协议文本 */
    sceneQualificationFiles: [] as UploadUserFile[],
  },
});
@@ -211,6 +233,9 @@
    if (editForm.enterpriseConfigureType === EnterpriseConfigureType.ShortMessage) {
      res = await createOrEditFlexEnterpriseMessageSetting();
    }
    if (editForm.enterpriseConfigureType === EnterpriseConfigureType.AliPay) {
      res = await enterpriseWalletExpandindirectCreate();
    }
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
@@ -219,6 +244,30 @@
  } catch (error) {}
}
async function enterpriseWalletExpandindirectCreate() {
  try {
    let params: API.EnterpriseWalletExpandindirectCreateCommand = {
      enterpriseId: editForm.id,
      identity: editForm.alipayAccount,
      name: editForm.name,
      scene: editForm.scene,
      sceneDirections: editForm.sceneDirections,
      sitesInfo: null,
      files: [
        ...convertWalletFilesToApi(
          editForm.sceneFiles,
          EnumEnterpriseWalletExpandindirectOrderFileType.Scene
        ),
        ...convertWalletFilesToApi(
          editForm.sceneQualificationFiles,
          EnumEnterpriseWalletExpandindirectOrderFileType.SceneQualification
        ),
      ],
    };
    return await enterpriseWalletServices.enterpriseWalletExpandindirectCreate(params);
  } catch (error) {}
}
// async function createOrEditFlexEnterpriseBankSetting() {
//   try {
//     let params: API.CreateOrEditFlexEnterpriseBankInput = {
src/views/EnterpriseManage/components/ConfigureDialog.vue
@@ -49,21 +49,66 @@
          <div style="display: flex; width: 100%">
            <ProFormText v-model.trim="form.alipayAccount" placeholder="请输入支付宝账号">
            </ProFormText>
            <el-button
              style="margin-left: 10px"
              type="primary"
              link
              @click="handleOpenEnterpriseWallet"
            <el-button style="margin-left: 10px" type="primary" link @click="openEnterpriseWallet"
              >获取签约链接</el-button
            >
          </div>
        </ProFormItemV2>
        <ProFormItemV2
          label="支付宝姓名:"
          prop="name"
          :checkRules="[{ message: '请输入支付宝姓名' }]"
        >
          <ProFormText v-model.trim="form.name" placeholder="请输入支付宝姓名" />
        </ProFormItemV2>
        <ProFormItemV2
          label="商户ID:"
          prop="alipayMerchantId"
          :checkRules="[{ message: '请输入商户ID' }]"
        >
          <ProFormText v-model.trim="form.alipayMerchantId" placeholder="请输入商户ID" />
          <ProFormText v-model.trim="form.alipayMerchantId" placeholder="请输入商户ID" disabled />
        </ProFormItemV2>
        <ProFormItemV2 label="业务场景:" prop="scene" :checkRules="[{ message: '请选择业务场景' }]">
          <ProFormSelect
            v-model="form.scene"
            :valueEnum="EnumEnterpriseWalletExpandindirectOrderSceneText"
            placeholder="请选择业务场景"
          >
          </ProFormSelect>
        </ProFormItemV2>
        <ProFormItemV2
          label="场景描述:"
          prop="sceneDirections"
          :checkRules="[{ message: '请输入场景描述' }]"
        >
          <ProFormText
            v-model.trim="form.sceneDirections"
            placeholder="谁/通过什么媒介(APP/web/小程序)/主要为谁提供什么服务/用于在什么场景给什么人群转账"
          />
        </ProFormItemV2>
        <ProFormItemV2
          label="转账场景截图:"
          prop="sceneFiles"
          :check-rules="[{ type: 'upload', message: '请上传转账场景截图' }]"
        >
          <ProFormUpload
            v-model:file-url="form.sceneFiles"
            :limit="5"
            :limitFileSize="10"
            accept="png,jpg,jpeg,pdf"
          ></ProFormUpload>
        </ProFormItemV2>
        <ProFormItemV2
          label="资质文件:"
          prop="sceneQualificationFiles"
          :check-rules="[{ type: 'upload', message: '请上传资质文件' }]"
        >
          <ProFormUpload
            v-model:file-url="form.sceneQualificationFiles"
            :limit="5"
            :limitFileSize="10"
            accept="png,jpg,jpeg,pdf"
          ></ProFormUpload>
        </ProFormItemV2>
        <ProFormItemV2 label="签约状态:" prop="signStatus" required>
          <span>{{ EnumEnterpriseWalletSignStatusText[form.signStatus] }}</span>
@@ -139,6 +184,9 @@
  ProFormSelect,
  ProFormSwitch,
  useFormDialog,
  UploadUserFile,
  ProFormImageUpload,
  ProFormUpload,
} from '@bole-core/components';
import { BoleRegExp } from '@bole-core/core';
import {
@@ -150,6 +198,7 @@
  EnumElectronSignAccess,
  EnumEnterpriseWalletSignStatusText,
  EnumEnterpriseWalletExpandindirectOrderStatusText,
  EnumEnterpriseWalletExpandindirectOrderSceneText,
} from '@/constants';
import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
import AlipayWalletOpen from './AlipayWalletOpen.vue';
@@ -173,6 +222,14 @@
  signStatus: EnumEnterpriseWalletSignStatus;
  expandindirectOrderStatus: EnumEnterpriseWalletExpandindirectOrderStatus;
  name: string;
  scene: EnumEnterpriseWalletExpandindirectOrderScene;
  sceneDirections: string;
  /**转账场景截图 */
  sceneFiles: UploadUserFile[];
  /**商户行业资质图片或协议文本 */
  sceneQualificationFiles: UploadUserFile[];
};
const form = defineModel<Form>('form');
@@ -185,7 +242,9 @@
const dialogForm = ref<FormInstance>();
const { enabledElectronSignSettings } = useEnabledElectronSignSettings();
const { enabledElectronSignSettings } = useEnabledElectronSignSettings({
  all: true,
});
async function handleCheckBankAccount() {
  try {
@@ -196,6 +255,17 @@
    if (alipayWallet) {
      form.value.signStatus = alipayWallet.signStatus;
      form.value.expandindirectOrderStatus = alipayWallet.expandindirectOrderStatus;
    }
  } catch (error) {}
}
async function getEnterpriseWalletExpandindirectOrder() {
  try {
    let res = await enterpriseWalletServices.getEnterpriseWalletExpandindirectOrder({
      enterpriseId: form.value.id,
    });
    if (res) {
      form.value.expandindirectOrderStatus = res.orderStatus;
    }
  } catch (error) {}
}
@@ -222,23 +292,21 @@
  },
});
async function handleOpenEnterpriseWallet() {
  try {
    if (!dialogForm.value) return;
    const valid = await dialogForm.value.validateField(['alipayAccount', 'alipayMerchantId']);
    if (valid) {
      openEnterpriseWallet();
    }
  } catch (error) {}
}
// async function handleOpenEnterpriseWallet() {
//   try {
//     if (!dialogForm.value) return;
//     const valid = await dialogForm.value.validateField(['alipayAccount', 'alipayMerchantId']);
//     if (valid) {
//       openEnterpriseWallet();
//     }
//   } catch (error) {}
// }
async function openEnterpriseWallet() {
  try {
    let params: API.OpenEnterpriseWalletCommand = {
      access: EnumEnterpriseWalletAccess.Alipay,
      enterpriseId: form.value.id,
      account: form.value.alipayAccount,
      merchantId: form.value.alipayMerchantId,
    };
    let res = await enterpriseWalletServices.openEnterpriseWallet(params);
    if (res) {
src/views/ProtocolManage/components/AddOrEditTemplateDialog.vue
@@ -105,6 +105,7 @@
const { enabledElectronSignSettings } = useEnabledElectronSignSettings({
  enterpriseId: computed(() => form.value.enterpriseId),
  all: true,
});
const dialogForm = ref<FormInstance>();