wupengfei
4 天以前 fea063f5c7fdf79d56ada2dd2b8045a44ca2db44
feat: 任务
4个文件已添加
2个文件已删除
26个文件已修改
1876 ■■■■ 已修改文件
.eslintrc-auto-import.json 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
auto-imports.d.ts 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/WeMap/WeMap.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/apiEnum.ts 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/dic.ts 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/task.ts 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/area.ts 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/dic.ts 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/index.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/auth.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/dictionary.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/index.ts 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/task.ts 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/user.ts 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/userInfo.ts 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/common/area.ts 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/CheckManage.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/EmploymentManage.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/EmploymentManageArrange.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/EmploymentSignList.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/components/AddOrEditEmploymentView.vue 213 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/components/CheckManageDialog.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EmploymentManage/constants/columns.ts 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FinanceManage/components/DistributionDetailView.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FinanceManage/components/UsageDetailView.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/FlexJobManage/FlexJobManage.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/ServiceChargeDetail.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ServiceChargeManage/ServiceChargeManage.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
types/api.d.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
types/global.d.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.eslintrc-auto-import.json
@@ -3,14 +3,20 @@
    "AppLocalConfig": true,
    "AppType": true,
    "AreaType": true,
    "CategoryCode": true,
    "CertificateTypeCodeEnum": true,
    "Component": true,
    "ComponentPublicInstance": true,
    "ComputedRef": true,
    "DirectiveBinding": true,
    "EditorType": true,
    "EditorTypeText": true,
    "EducationCodeEnum": true,
    "EffectScope": true,
    "EmptyTextEditorItem": true,
    "EnumBillingMethod": true,
    "EnumBillingMethodText": true,
    "EnumBillingMethodUnitText": true,
    "EnumClientType": true,
    "EnumClientTypeText": true,
    "EnumMenuType": true,
@@ -22,8 +28,23 @@
    "EnumRoleWebApiDataPower": true,
    "EnumRoleWebApiDataPowerText": true,
    "EnumRoleWebApiDataPowerTextForFilter": true,
    "EnumSettlementCycle": true,
    "EnumSettlementCycleText": true,
    "EnumSmsAccess": true,
    "EnumUserInfoStatus": true,
    "EnumSmsTemplateType": true,
    "EnumTaskCheckReceiveStatus": true,
    "EnumTaskRecommendStatus": true,
    "EnumTaskRecommendStatusText": true,
    "EnumTaskReleaseStatus": true,
    "EnumTaskReleaseStatusText": true,
    "EnumTaskReleaseStatusTextForTip": true,
    "EnumTaskSettlementStatus": true,
    "EnumTaskStatus": true,
    "EnumTaskStatusText": true,
    "EnumUserGender": true,
    "EnumUserGenderText": true,
    "EnumUserGenderTextForEdit": true,
    "EnumUserStatus": true,
    "EnumUserType": true,
    "EnumUserTypeText": true,
    "ExtractDefaultPropTypes": true,
@@ -40,6 +61,7 @@
    "GlobalEvent": true,
    "GlobalEventContext": true,
    "GlobalEventListener": true,
    "IdentityCodeEnum": true,
    "InjectionKey": true,
    "MaybeRef": true,
    "MaybeRefOrGetter": true,
@@ -72,6 +94,7 @@
    "ThemeColors": true,
    "ThemeColorsType": true,
    "VNode": true,
    "WelfareCodeEnum": true,
    "WritableComputedRef": true,
    "acceptHMRUpdate": true,
    "computed": true,
@@ -136,11 +159,16 @@
    "triggerRef": true,
    "unref": true,
    "useAccess": true,
    "useAllAreaList": true,
    "useArea": true,
    "useAreaByCascader": true,
    "useAttrs": true,
    "useClearSubModule": true,
    "useCopyToClipboard": true,
    "useCssModule": true,
    "useCssVars": true,
    "useDictionaryDataSelect": true,
    "useGetDictionaryCategorySelect": true,
    "useGlobalEventContext": true,
    "useGlobalEventProvide": true,
    "useGroupColumns": true,
auto-imports.d.ts
@@ -9,12 +9,18 @@
  const AppLocalConfig: typeof import('./src/constants/app')['AppLocalConfig']
  const AppType: typeof import('./src/constants/app')['AppType']
  const AreaType: typeof import('./src/constants/enum')['AreaType']
  const CategoryCode: typeof import('./src/constants/dic')['CategoryCode']
  const CertificateTypeCodeEnum: typeof import('./src/constants/dic')['CertificateTypeCodeEnum']
  const CommonAnnexTableColumns: typeof import('@/constants')['CommonAnnexTableColumns']
  const EditorType: typeof import('./src/constants/editor')['EditorType']
  const EditorTypeText: typeof import('./src/constants/editor')['EditorTypeText']
  const EducationCodeEnum: typeof import('./src/constants/dic')['EducationCodeEnum']
  const EffectScope: typeof import('vue')['EffectScope']
  const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
  const EmptyTextEditorItem: typeof import('./src/constants/editor')['EmptyTextEditorItem']
  const EnumBillingMethod: typeof import('./src/constants/apiEnum')['EnumBillingMethod']
  const EnumBillingMethodText: typeof import('./src/constants/task')['EnumBillingMethodText']
  const EnumBillingMethodUnitText: typeof import('./src/constants/task')['EnumBillingMethodUnitText']
  const EnumClientType: typeof import('./src/constants/apiEnum')['EnumClientType']
  const EnumClientTypeText: typeof import('./src/constants/apiEnumText')['EnumClientTypeText']
  const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType']
@@ -26,8 +32,25 @@
  const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']
  const EnumRoleWebApiDataPowerText: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']
  const EnumRoleWebApiDataPowerTextForFilter: typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']
  const EnumSettlementCycle: typeof import('./src/constants/apiEnum')['EnumSettlementCycle']
  const EnumSettlementCycleText: typeof import('./src/constants/task')['EnumSettlementCycleText']
  const EnumSmsAccess: typeof import('./src/constants/apiEnum')['EnumSmsAccess']
  const EnumSmsTemplateType: typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']
  const EnumTaskCheckReceiveStatus: typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']
  const EnumTaskRecommendStatus: typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']
  const EnumTaskRecommendStatusText: typeof import('./src/constants/task')['EnumTaskRecommendStatusText']
  const EnumTaskReleaseStatus: typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']
  const EnumTaskReleaseStatusText: typeof import('./src/constants/task')['EnumTaskReleaseStatusText']
  const EnumTaskReleaseStatusTextForTip: typeof import('./src/constants/task')['EnumTaskReleaseStatusTextForTip']
  const EnumTaskSettlementStatus: typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']
  const EnumTaskStatus: typeof import('./src/constants/apiEnum')['EnumTaskStatus']
  const EnumTaskStatusText: typeof import('./src/constants/task')['EnumTaskStatusText']
  const EnumUserGender: typeof import('./src/constants/apiEnum')['EnumUserGender']
  const EnumUserGenderText: typeof import('./src/constants/task')['EnumUserGenderText']
  const EnumUserGenderTextForEdit: typeof import('./src/constants/task')['EnumUserGenderTextForEdit']
  const EnumUserGenderWithAllText: typeof import('./src/constants/task')['EnumUserGenderWithAllText']
  const EnumUserInfoStatus: typeof import('./src/constants/apiEnum')['EnumUserInfoStatus']
  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 FastButtonMap: typeof import('./src/constants/module')['FastButtonMap']
@@ -37,6 +60,7 @@
  const FlexEnterpriseSettingStatus: typeof import('./src/constants/enum')['FlexEnterpriseSettingStatus']
  const Gender: typeof import('./src/constants/enum')['Gender']
  const GenderText: typeof import('./src/constants/enum')['GenderText']
  const IdentityCodeEnum: typeof import('./src/constants/dic')['IdentityCodeEnum']
  const MenuSvgIconMap: typeof import('./src/constants/menu')['MenuSvgIconMap']
  const ModuleColumns: typeof import('./src/constants/module')['ModuleColumns']
  const MyRegExp: typeof import('./src/constants/regExp')['MyRegExp']
@@ -58,6 +82,7 @@
  const SubModuleType: typeof import('./src/constants/module')['SubModuleType']
  const TempFolderPath: typeof import('./src/constants/enum')['TempFolderPath']
  const ThemeColors: typeof import('./src/constants/theme')['ThemeColors']
  const WelfareCodeEnum: typeof import('./src/constants/dic')['WelfareCodeEnum']
  const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
  const computed: typeof import('vue')['computed']
  const copyTextToClipboard: typeof import('./src/hooks/useCopyToClipboard')['copyTextToClipboard']
@@ -121,11 +146,16 @@
  const triggerRef: typeof import('vue')['triggerRef']
  const unref: typeof import('vue')['unref']
  const useAccess: typeof import('./src/hooks/useAccess')['useAccess']
  const useAllAreaList: typeof import('./src/hooks/dic')['useAllAreaList']
  const useArea: typeof import('./src/hooks/dic')['useArea']
  const useAreaByCascader: typeof import('./src/hooks/dic')['useAreaByCascader']
  const useAttrs: typeof import('vue')['useAttrs']
  const useClearSubModule: typeof import('./src/hooks/useAccess')['useClearSubModule']
  const useCopyToClipboard: typeof import('./src/hooks/useCopyToClipboard')['useCopyToClipboard']
  const useCssModule: typeof import('vue')['useCssModule']
  const useCssVars: typeof import('vue')['useCssVars']
  const useDictionaryDataSelect: typeof import('./src/hooks/dic')['useDictionaryDataSelect']
  const useGetDictionaryCategorySelect: typeof import('./src/hooks/dic')['useGetDictionaryCategorySelect']
  const useGlobalEventContext: typeof import('./src/hooks/useEvent')['useGlobalEventContext']
  const useGlobalEventProvide: typeof import('./src/hooks/useEvent')['useGlobalEventProvide']
  const useGroupColumns: typeof import('./src/hooks/useAccess')['useGroupColumns']
@@ -161,8 +191,11 @@
  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 { EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSmsAccess, EnumUserInfoStatus, EnumUserType, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSmsAccess, EnumUserInfoStatus, EnumUserType } from './src/constants/apiEnum'
  export type { EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsTemplateType, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType, EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumSmsTemplateType, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumUserGender, EnumUserStatus, EnumUserType } from './src/constants/apiEnum'
  import('./src/constants/apiEnum')
  // @ts-ignore
  export type { CategoryCode, IdentityCodeEnum, EducationCodeEnum, CertificateTypeCodeEnum, WelfareCodeEnum } from './src/constants/dic'
  import('./src/constants/dic')
  // @ts-ignore
  export type { EditorType, EditorType } from './src/constants/editor'
  import('./src/constants/editor')
@@ -191,10 +224,16 @@
    readonly AppLocalConfig: UnwrapRef<typeof import('./src/constants/app')['AppLocalConfig']>
    readonly AppType: UnwrapRef<typeof import('./src/constants/app')['AppType']>
    readonly AreaType: UnwrapRef<typeof import('./src/constants/enum')['AreaType']>
    readonly CategoryCode: UnwrapRef<typeof import('./src/constants/dic')['CategoryCode']>
    readonly CertificateTypeCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['CertificateTypeCodeEnum']>
    readonly EditorType: UnwrapRef<typeof import('./src/constants/editor')['EditorType']>
    readonly EditorTypeText: UnwrapRef<typeof import('./src/constants/editor')['EditorTypeText']>
    readonly EducationCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['EducationCodeEnum']>
    readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
    readonly EmptyTextEditorItem: UnwrapRef<typeof import('./src/constants/editor')['EmptyTextEditorItem']>
    readonly EnumBillingMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumBillingMethod']>
    readonly EnumBillingMethodText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodText']>
    readonly EnumBillingMethodUnitText: UnwrapRef<typeof import('./src/constants/task')['EnumBillingMethodUnitText']>
    readonly EnumClientType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumClientType']>
    readonly EnumClientTypeText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumClientTypeText']>
    readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']>
@@ -206,8 +245,23 @@
    readonly EnumRoleWebApiDataPower: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']>
    readonly EnumRoleWebApiDataPowerText: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerText']>
    readonly EnumRoleWebApiDataPowerTextForFilter: UnwrapRef<typeof import('./src/constants/apiEnumText')['EnumRoleWebApiDataPowerTextForFilter']>
    readonly EnumSettlementCycle: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSettlementCycle']>
    readonly EnumSettlementCycleText: UnwrapRef<typeof import('./src/constants/task')['EnumSettlementCycleText']>
    readonly EnumSmsAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsAccess']>
    readonly EnumUserInfoStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserInfoStatus']>
    readonly EnumSmsTemplateType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumSmsTemplateType']>
    readonly EnumTaskCheckReceiveStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskCheckReceiveStatus']>
    readonly EnumTaskRecommendStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskRecommendStatus']>
    readonly EnumTaskRecommendStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskRecommendStatusText']>
    readonly EnumTaskReleaseStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskReleaseStatus']>
    readonly EnumTaskReleaseStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusText']>
    readonly EnumTaskReleaseStatusTextForTip: UnwrapRef<typeof import('./src/constants/task')['EnumTaskReleaseStatusTextForTip']>
    readonly EnumTaskSettlementStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskSettlementStatus']>
    readonly EnumTaskStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumTaskStatus']>
    readonly EnumTaskStatusText: UnwrapRef<typeof import('./src/constants/task')['EnumTaskStatusText']>
    readonly EnumUserGender: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserGender']>
    readonly EnumUserGenderText: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderText']>
    readonly EnumUserGenderTextForEdit: UnwrapRef<typeof import('./src/constants/task')['EnumUserGenderTextForEdit']>
    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 FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']>
@@ -217,6 +271,7 @@
    readonly FlexEnterpriseSettingStatus: UnwrapRef<typeof import('./src/constants/enum')['FlexEnterpriseSettingStatus']>
    readonly Gender: UnwrapRef<typeof import('./src/constants/enum')['Gender']>
    readonly GenderText: UnwrapRef<typeof import('./src/constants/enum')['GenderText']>
    readonly IdentityCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['IdentityCodeEnum']>
    readonly MenuSvgIconMap: UnwrapRef<typeof import('./src/constants/menu')['MenuSvgIconMap']>
    readonly ModuleColumns: UnwrapRef<typeof import('./src/constants/module')['ModuleColumns']>
    readonly MyRegExp: UnwrapRef<typeof import('./src/constants/regExp')['MyRegExp']>
@@ -238,6 +293,7 @@
    readonly SubModuleType: UnwrapRef<typeof import('./src/constants/module')['SubModuleType']>
    readonly TempFolderPath: UnwrapRef<typeof import('./src/constants/enum')['TempFolderPath']>
    readonly ThemeColors: UnwrapRef<typeof import('./src/constants/theme')['ThemeColors']>
    readonly WelfareCodeEnum: UnwrapRef<typeof import('./src/constants/dic')['WelfareCodeEnum']>
    readonly acceptHMRUpdate: UnwrapRef<typeof import('pinia')['acceptHMRUpdate']>
    readonly computed: UnwrapRef<typeof import('vue')['computed']>
    readonly copyTextToClipboard: UnwrapRef<typeof import('./src/hooks/useCopyToClipboard')['copyTextToClipboard']>
@@ -301,11 +357,16 @@
    readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
    readonly unref: UnwrapRef<typeof import('vue')['unref']>
    readonly useAccess: UnwrapRef<typeof import('./src/hooks/useAccess')['useAccess']>
    readonly useAllAreaList: UnwrapRef<typeof import('./src/hooks/dic')['useAllAreaList']>
    readonly useArea: UnwrapRef<typeof import('./src/hooks/dic')['useArea']>
    readonly useAreaByCascader: UnwrapRef<typeof import('./src/hooks/dic')['useAreaByCascader']>
    readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
    readonly useClearSubModule: UnwrapRef<typeof import('./src/hooks/useAccess')['useClearSubModule']>
    readonly useCopyToClipboard: UnwrapRef<typeof import('./src/hooks/useCopyToClipboard')['useCopyToClipboard']>
    readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
    readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
    readonly useDictionaryDataSelect: UnwrapRef<typeof import('./src/hooks/dic')['useDictionaryDataSelect']>
    readonly useGetDictionaryCategorySelect: UnwrapRef<typeof import('./src/hooks/dic')['useGetDictionaryCategorySelect']>
    readonly useGlobalEventContext: UnwrapRef<typeof import('./src/hooks/useEvent')['useGlobalEventContext']>
    readonly useGlobalEventProvide: UnwrapRef<typeof import('./src/hooks/useEvent')['useGlobalEventProvide']>
    readonly useGroupColumns: UnwrapRef<typeof import('./src/hooks/useAccess')['useGroupColumns']>
src/components/WeMap/WeMap.vue
@@ -87,6 +87,7 @@
      cityCode: findAreaCodeFromName(cityName),
      countyCode: findAreaCodeFromName(countyName),
      address: loc.poiaddress,
      addressName: loc.poiname,
    });
    if (props.validateEvent) {
      formItem?.validate?.('change');
src/constants/apiEnum.ts
@@ -1,6 +1,18 @@
/* eslint-disable */
// @ts-ignore
/** 计费方式 */
export enum EnumBillingMethod {
  /**按月 */
  Month = 10,
  /**按天 */
  Day = 20,
  /**按时 */
  Hour = 30,
  /**计件 */
  Piece = 40,
}
/** 客户端类型 */
export enum EnumClientType {
  /**电脑网页 */
@@ -53,18 +65,20 @@
export enum EnumResourceController {
  /**数据字典 */
  Dictionary = 0,
  /**任务 */
  Task = 1,
  /**用户认证 */
  Auth = 1,
  Auth = 2,
  /**用户菜单 */
  Menu = 2,
  Menu = 3,
  /**用户资源 */
  Resource = 3,
  Resource = 4,
  /**用户角色 */
  Role = 4,
  Role = 5,
  /**用户信息 */
  UserInfo = 5,
  User = 6,
  /**企业信息 */
  Enterprise = 6,
  Enterprise = 7,
}
/** 资源请求方式 */
@@ -95,14 +109,86 @@
  All = 999,
}
/** 结算周期 */
export enum EnumSettlementCycle {
  /**月结 */
  Month = 10,
  /**周结 */
  Week = 20,
  /**日结 */
  Day = 30,
}
/** 短信通道 */
export enum EnumSmsAccess {
  /**阿里云短信 */
  AliyunSms = 10,
}
/** 短信模板类型 */
export enum EnumSmsTemplateType {
  /**登录 */
  Login = 0,
  /**注册 */
  Register = 1,
  /**修改密码 */
  UpdatePassword = 2,
  /**绑定手机号码 */
  BindPhoneNumber = 3,
  /**修改手机号码 */
  UpdatePhoneNumber = 4,
}
/** 任务结算状态 */
export enum EnumTaskCheckReceiveStatus {
  /**待验收 */
  Wait = 10,
  /**已验收 */
  Completed = 30,
}
/** 任务推荐状态 */
export enum EnumTaskRecommendStatus {
  /**未推荐 */
  No = 10,
  /**已推荐 */
  Yes = 20,
}
/** 任务发布状态 */
export enum EnumTaskReleaseStatus {
  /**发布中 */
  InProcess = 20,
  /**已停止 */
  Stopped = 100,
}
/** 任务结算状态 */
export enum EnumTaskSettlementStatus {
  /**待结算 */
  Wait = 10,
  /**已结算 */
  Completed = 30,
}
/** 任务安排状态 */
export enum EnumTaskStatus {
  /**待安排 */
  Wait = 10,
  /**已安排 */
  Complete = 20,
}
/** 用户性别 */
export enum EnumUserGender {
  /**男 */
  Male = 10,
  /**女 */
  Female = 20,
}
/** 用户信息状态 */
export enum EnumUserInfoStatus {
export enum EnumUserStatus {
  /**正常 */
  Normal = 10,
  /**禁用 */
src/constants/dic.ts
New file
@@ -0,0 +1,60 @@
export enum CategoryCode {
  /**身份 */
  Identity = '10',
  /**学历 */
  Education = '20',
  /**岗位 */
  Position = '30',
  /**证书类型 */
  CertificateType = '40',
  /**福利 */
  Welfare = '50',
  /**行业类型 */
  IndustryCategory = '60',
  /**行政地区 */
  Area = '70',
}
export enum IdentityCodeEnum {
  /**学生 */
  Student = '10-10',
  /**非学生 */
  NotStudent = '10-20',
}
export enum EducationCodeEnum {
  /**初中以下 */
  UnderPrimarySchool = '20-10',
  /**初中 */
  PrimarySchool = '20-20',
  /**高中 */
  HighSchool = '20-30',
  /**中专 */
  JuniorCollege = '20-40',
  /**技校 */
  TechnicalSchool = '20-50',
  /**中职 */
  JuniorHighSchool = '20-60',
  /**高职 */
  SeniorHighSchool = '20-70',
  /**本科 */
  Undergraduate = '20-80',
  /**本科以上 */
  UndergraduateAndAbove = '20-90',
}
export enum CertificateTypeCodeEnum {
  /**健康证 */
  HealthCertificate = '40-10',
}
export enum WelfareCodeEnum {
  /**包餐 */
  Meal = '50-10',
  /**包住宿 */
  Accommodation = '50-20',
  /**交通补贴 */
  TransportationSubsidies = '50-30',
  /**高温补贴 */
  HighTemperatureSubsidies = '50-40',
}
src/constants/index.ts
@@ -10,3 +10,4 @@
export * from './app';
export * from './apiEnum';
export * from './apiEnumText';
export * from './task';
src/constants/task.ts
New file
@@ -0,0 +1,49 @@
export const EnumTaskStatusText = {
  [EnumTaskStatus.Wait]: '待安排',
  [EnumTaskStatus.Complete]: '已安排',
};
export const EnumSettlementCycleText = {
  [EnumSettlementCycle.Month]: '月结',
  [EnumSettlementCycle.Week]: '周结',
  [EnumSettlementCycle.Day]: '日结',
};
export const EnumTaskReleaseStatusText = {
  [EnumTaskReleaseStatus.InProcess]: '发布中',
  [EnumTaskReleaseStatus.Stopped]: '已停止',
};
export const EnumTaskReleaseStatusTextForTip = {
  [EnumTaskReleaseStatus.InProcess]: '发布',
  [EnumTaskReleaseStatus.Stopped]: '停止发布',
};
export const EnumTaskRecommendStatusText = {
  [EnumTaskRecommendStatus.No]: '未推荐',
  [EnumTaskRecommendStatus.Yes]: '已推荐',
};
export const EnumBillingMethodText = {
  [EnumBillingMethod.Month]: '按月',
  [EnumBillingMethod.Day]: '按日',
  [EnumBillingMethod.Hour]: '按时',
  [EnumBillingMethod.Piece]: '计件',
};
export const EnumBillingMethodUnitText = {
  [EnumBillingMethod.Month]: '元/月',
  [EnumBillingMethod.Day]: '元/日',
  [EnumBillingMethod.Hour]: '元/小时',
  [EnumBillingMethod.Piece]: '元/件',
};
export const EnumUserGenderText = {
  [0]: '不限',
  [EnumUserGender.Male]: '男性',
  [EnumUserGender.Female]: '女性',
};
export const EnumUserGenderTextForEdit = {
  [EnumUserGender.Male]: '仅限男性',
  [EnumUserGender.Female]: '仅限女性',
};
src/hooks/area.ts
File was deleted
src/hooks/dic.ts
@@ -0,0 +1,252 @@
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import * as dictionaryServices from '@/services/api/dictionary';
import { formatAreaListToTree } from '@/utils';
import { CascaderProps } from 'element-plus';
export function useGetDictionaryCategorySelect() {
  const { data: dictionaryCategoryList, refetch } = useQuery({
    queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
    queryFn: async () => {
      let res = await dictionaryServices.getDictionaryCategorySelect({}, { showLoading: false });
      return res.map((x) => ({
        ...x,
        fieldNamesMap: x.data.fieldNames ? JSON.parse(x.data.fieldNames) : {},
      }));
    },
    placeholderData: () => [] as API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[],
  });
  const queryClient = useQueryClient();
  function ensureQueryData() {
    return queryClient.ensureQueryData<
      API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[]
    >({
      queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
    });
  }
  function updateDictionaryCategorySelect() {
    queryClient.invalidateQueries({
      queryKey: ['dictionaryServices/getDictionaryCategorySelect'],
    });
  }
  function getDictionaryCategoryById(id: string) {
    return dictionaryCategoryList.value.find((x) => x.data?.id === id);
  }
  function getDictionaryCategoryByCode(code: string) {
    return dictionaryCategoryList.value.find((x) => x.data?.code === code);
  }
  function getDictionaryCategoryNameByCode(code: string) {
    return getDictionaryCategoryByCode(code)?.label ?? '';
  }
  return {
    dictionaryCategoryList,
    ensureQueryData,
    getDictionaryCategoryById,
    getDictionaryCategoryNameByCode,
    getDictionaryCategoryByCode,
    updateDictionaryCategorySelect,
  };
}
type UseDictionaryDataSelectOptions = {
  categoryId?: MaybeRef<string>;
  categoryCode?: MaybeRef<CategoryCode>;
  parentId?: MaybeRef<string>;
  staleTime?: number;
  /** 关键字 */
  keywords?: MaybeRef<string>;
  /** 查询所有 */
  all?: MaybeRef<boolean>;
  maxDeep?: number;
};
export function useDictionaryDataSelect({
  categoryId,
  categoryCode,
  parentId,
  staleTime,
  keywords,
  all,
  maxDeep,
}: UseDictionaryDataSelectOptions) {
  const params = computed(() => ({
    categoryId: unref(categoryId),
    categoryCode: unref(categoryCode),
    parentId: unref(parentId),
    keywords: unref(keywords),
    all: unref(all),
    maxDeep: maxDeep,
  }));
  const { data: dictionaryDataList, refetch } = useQuery({
    queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
    queryFn: async () => {
      let res = await dictionaryServices.getDictionaryDataSelect(params.value, {
        showLoading: false,
      });
      return res.map((x) => ({
        ...x,
        code: x.data?.code ?? '',
      }));
    },
    placeholderData: () => [] as API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[],
    staleTime,
  });
  function getDictionaryDataNameById(id: string) {
    return dictionaryDataList.value?.find((x) => x.data?.id === id)?.label;
  }
  function getDictionaryDataByCode(code: string) {
    return dictionaryDataList.value?.find((x) => x.data?.code === code);
  }
  function getDictionaryDataNameByCode(code: string) {
    return getDictionaryDataByCode(code)?.label ?? '';
  }
  const queryClient = useQueryClient();
  function ensureQueryData() {
    return queryClient.ensureQueryData<
      API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]
    >({
      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
    });
  }
  function updateDictionaryDataSelect(categoryId?: string) {
    queryClient.invalidateQueries({
      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
    });
  }
  return {
    dictionaryDataList,
    ensureQueryData,
    refetch,
    getDictionaryDataNameById,
    getDictionaryDataNameByCode,
    getDictionaryDataByCode,
    updateDictionaryDataSelect,
  };
}
export function useArea() {
  const queryClient = useQueryClient();
  function getAreaList(parentId = '') {
    const params = {
      categoryCode: CategoryCode.Area,
      parentId: parentId,
    };
    return queryClient.fetchQuery({
      queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
      queryFn: async () => {
        let res = await dictionaryServices.getDictionaryDataSelect(params, { showLoading: false });
        return res.map(convertDictionaryToAreaTreeNode);
      },
      staleTime: Infinity,
    });
  }
  return { getAreaList };
}
function convertDictionaryToAreaTreeNode(
  item: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption
) {
  return {
    children: [],
    areaCode: item.data?.code,
    parentCode: '',
    areaName: item.label,
    layer: Number(item.data?.field4),
    sort: item.data?.sort,
    id: item.data?.id,
  } as API.AreaTreeNode;
}
/**
 *
 * @description 暂时无法使用
 */
export function useAllAreaList() {
  const { dictionaryDataList } = useDictionaryDataSelect({
    categoryCode: CategoryCode.Area,
    staleTime: Infinity,
    all: true,
    maxDeep: AreaType.Area,
  });
  const areaList = computed(() => dictionaryDataList.value.map(convertDictionaryToAreaTreeNode));
  const areaTreeProps = {
    children: 'children',
    label: 'areaName',
    value: 'areaCode',
  };
  const areaTree = computed(() => formatAreaListToTree(areaList.value));
  const findAreaCodeFromName = (areaName: string) => {
    const areaItem = areaList.value.find((x) => x.areaName === areaName);
    return areaItem?.areaCode ?? '';
  };
  const findAreaNameFromCode = (areaCode: string) => {
    const areaItem = areaList.value.find((x) => x.areaCode === areaCode);
    return areaItem?.areaName ?? '';
  };
  const findAreaItemFromCode = (areaCode: string) => {
    const areaItem = areaList.value.find((x) => x.areaCode === areaCode);
    return areaItem;
  };
  return {
    areaList,
    areaTree,
    areaTreeProps,
    findAreaCodeFromName,
    findAreaNameFromCode,
    findAreaItemFromCode,
  };
}
type UseAreaByCascaderOptions = {
  layer?: AreaType;
};
/**
 * @description 联级选择中使用
 */
export function useAreaByCascader(options: UseAreaByCascaderOptions = {}) {
  const { layer = AreaType.Area } = options;
  const { getAreaList } = useArea();
  return computed(() => ({
    props: {
      label: 'areaName',
      value: 'areaCode',
      lazy: true,
      async lazyLoad(node, resolve) {
        const { level, data } = node;
        const areas = (await getAreaList((data as API.AreaTreeNode).id)) as any[];
        return resolve(
          areas.map((x) => ({
            ...x,
            leaf: x.layer >= layer,
          }))
        );
      },
    } as CascaderProps,
  }));
}
src/hooks/index.ts
@@ -7,4 +7,4 @@
export * from './useUser';
export * from './help';
export * from './menu';
// export * from './dic';
export * from './dic';
src/services/api/auth.ts
@@ -62,3 +62,15 @@
    ...(options || {}),
  });
}
/** 发送验证码 POST /api/user/auth/sendVerifyCode */
export async function sendVerifyCode(body: API.SendVerifyCodeCommand, options?: API.RequestConfig) {
  return request<string>('/api/user/auth/sendVerifyCode', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/dictionary.ts
@@ -2,12 +2,12 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 删除数据字典类别 DELETE /api/main/dictionary/deleteDictionaryCategory */
/** 删除数据字典类别 DELETE /api/flexjob/dictionary/deleteDictionaryCategory */
export async function deleteDictionaryCategory(
  body: API.DeleteDictionaryCategoryCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/main/dictionary/deleteDictionaryCategory', {
  return request<number>('/api/flexjob/dictionary/deleteDictionaryCategory', {
    method: 'DELETE',
    headers: {
      'Content-Type': 'application/json-patch+json',
@@ -17,13 +17,13 @@
  });
}
/** 获取数据字典类别分页列表数据 POST /api/main/dictionary/getDictionaryCategories */
/** 获取数据字典类别分页列表数据 POST /api/flexjob/dictionary/getDictionaryCategories */
export async function getDictionaryCategories(
  body: API.GetDictionaryCategoriesQuery,
  options?: API.RequestConfig
) {
  return request<API.PagedListQueryResultGetDictionaryCategoriesQueryResultItem>(
    '/api/main/dictionary/getDictionaryCategories',
    '/api/flexjob/dictionary/getDictionaryCategories',
    {
      method: 'POST',
      headers: {
@@ -35,14 +35,14 @@
  );
}
/** 查询数据字典类别选择器数据 GET /api/main/dictionary/getDictionaryCategorySelect */
/** 查询数据字典类别选择器数据 GET /api/flexjob/dictionary/getDictionaryCategorySelect */
export async function getDictionaryCategorySelect(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetDictionaryCategorySelectParams,
  options?: API.RequestConfig
) {
  return request<API.SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption[]>(
    '/api/main/dictionary/getDictionaryCategorySelect',
  return request<API.SelectOptionGuidGetDictionaryCategorySelectQueryOption[]>(
    '/api/flexjob/dictionary/getDictionaryCategorySelect',
    {
      method: 'GET',
      params: {
@@ -55,13 +55,13 @@
  );
}
/** 获取数据字典分页列表数据 POST /api/main/dictionary/getDictionaryDatas */
/** 获取数据字典分页列表数据 POST /api/flexjob/dictionary/getDictionaryDatas */
export async function getDictionaryDatas(
  body: API.GetDictionaryDatasQuery,
  options?: API.RequestConfig
) {
  return request<API.PagedListQueryResultGetDictionaryDatasQueryResultItem>(
    '/api/main/dictionary/getDictionaryDatas',
    '/api/flexjob/dictionary/getDictionaryDatas',
    {
      method: 'POST',
      headers: {
@@ -73,14 +73,14 @@
  );
}
/** 查询数据字典选择器 GET /api/main/dictionary/getDictionaryDataSelect */
/** 查询数据字典选择器 GET /api/flexjob/dictionary/getDictionaryDataSelect */
export async function getDictionaryDataSelect(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetDictionaryDataSelectParams,
  options?: API.RequestConfig
) {
  return request<API.SelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption[]>(
    '/api/main/dictionary/getDictionaryDataSelect',
  return request<API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]>(
    '/api/flexjob/dictionary/getDictionaryDataSelect',
    {
      method: 'GET',
      params: {
@@ -91,12 +91,12 @@
  );
}
/** 保存数据字典类别 POST /api/main/dictionary/saveDictionaryCategory */
/** 保存数据字典类别 POST /api/flexjob/dictionary/saveDictionaryCategory */
export async function saveDictionaryCategory(
  body: API.SaveDictionaryCategoryCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/main/dictionary/saveDictionaryCategory', {
  return request<string>('/api/flexjob/dictionary/saveDictionaryCategory', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
@@ -106,12 +106,12 @@
  });
}
/** 保存数据字典 POST /api/main/dictionary/saveDictionaryData */
/** 保存数据字典 POST /api/flexjob/dictionary/saveDictionaryData */
export async function saveDictionaryData(
  body: API.SaveDictionaryDataCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/main/dictionary/saveDictionaryData', {
  return request<string>('/api/flexjob/dictionary/saveDictionaryData', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
@@ -121,12 +121,12 @@
  });
}
/** 设置数据字典是否禁用 PUT /api/main/dictionary/setDictionaryDataIsDisabled */
/** 设置数据字典是否禁用 PUT /api/flexjob/dictionary/setDictionaryDataIsDisabled */
export async function setDictionaryDataIsDisabled(
  body: API.SetDictionaryDataIsDisabledCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/main/dictionary/setDictionaryDataIsDisabled', {
  return request<number>('/api/flexjob/dictionary/setDictionaryDataIsDisabled', {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json-patch+json',
@@ -135,3 +135,18 @@
    ...(options || {}),
  });
}
/** 同步人力资源地区字典数据 POST /api/flexjob/dictionary/syncHumanResourcesAreaDictionaryData */
export async function syncHumanResourcesAreaDictionaryData(
  body: API.SyncHumanResourcesAreaDictionaryDataCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/flexjob/dictionary/syncHumanResourcesAreaDictionaryData', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/index.ts
@@ -2,19 +2,21 @@
/* eslint-disable */
// API 更新时间:
// API 唯一标识:
import * as auth from './auth';
import * as menu from './menu';
import * as dictionary from './dictionary';
import * as resource from './resource';
import * as role from './role';
import * as userInfo from './userInfo';
import * as menu from './menu';
import * as enterprise from './enterprise';
import * as task from './task';
import * as auth from './auth';
import * as user from './user';
import * as role from './role';
import * as resource from './resource';
export default {
  auth,
  menu,
  dictionary,
  resource,
  role,
  userInfo,
  menu,
  enterprise,
  task,
  auth,
  user,
  role,
  resource,
};
src/services/api/task.ts
New file
@@ -0,0 +1,75 @@
/* eslint-disable */
// @ts-ignore
import { request } from '@/utils/request';
/** 查询任务详情 GET /api/flexjob/task/getTaskInfo */
export async function getTaskInfo(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetTaskInfoParams,
  options?: API.RequestConfig
) {
  return request<API.GetTaskInfoQueryResult>('/api/flexjob/task/getTaskInfo', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}
/** 查询任务分页列表 POST /api/flexjob/task/getTaskInfos */
export async function getTaskInfos(body: API.GetTaskInfosQuery, options?: API.RequestConfig) {
  return request<API.PagedListQueryResultGetTaskInfosQueryResultItem>(
    '/api/flexjob/task/getTaskInfos',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 保存任务 POST /api/flexjob/task/saveTaskInfo */
export async function saveTaskInfo(body: API.SaveTaskInfoCommand, options?: API.RequestConfig) {
  return request<string>('/api/flexjob/task/saveTaskInfo', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 设置任务是否推荐 PUT /api/flexjob/task/setTaskInfoRecommendStatus */
export async function setTaskInfoRecommendStatus(
  body: API.SetTaskInfoRecommendStatusCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/flexjob/task/setTaskInfoRecommendStatus', {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 设置任务发布状态 PUT /api/flexjob/task/setTaskInfoReleaseStatus */
export async function setTaskInfoReleaseStatus(
  body: API.SetTaskInfoReleaseStatusCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/flexjob/task/setTaskInfoReleaseStatus', {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/typings.d.ts
@@ -30,6 +30,12 @@
    categoryCode?: string;
    /** 上级Id */
    parentId?: string;
    /** 关键字 */
    keywords?: string;
    /** 查询所有 */
    all?: boolean;
    /** 最大深度 */
    maxDeep?: number;
  }
  interface APIgetEnterpriseElectronSignSettingParams {
@@ -87,11 +93,21 @@
    roleId?: string;
  }
  interface APIgetTaskInfoParams {
    /** Id */
    id?: string;
  }
  interface APIgetUserInfoRolesParams {
    /** 用户Id */
    userInfoId?: string;
    /** 客户端类型 */
    clientType?: EnumClientType;
  }
  interface APIgetUserResumeParams {
    /** 用户Id */
    userId?: string;
  }
  interface DeleteDictionaryCategoryCommand {
@@ -104,6 +120,17 @@
  interface DeleteRoleCommand {
    ids: string[];
  }
  enum EnumBillingMethod {
    /**按月 */
    Month = 10,
    /**按天 */
    Day = 20,
    /**按时 */
    Hour = 30,
    /**计件 */
    Piece = 40,
  }
  enum EnumClientType {
@@ -152,18 +179,20 @@
  enum EnumResourceController {
    /**数据字典 */
    Dictionary = 0,
    /**任务 */
    Task = 1,
    /**用户认证 */
    Auth = 1,
    Auth = 2,
    /**用户菜单 */
    Menu = 2,
    Menu = 3,
    /**用户资源 */
    Resource = 3,
    Resource = 4,
    /**用户角色 */
    Role = 4,
    Role = 5,
    /**用户信息 */
    UserInfo = 5,
    User = 6,
    /**企业信息 */
    Enterprise = 6,
    Enterprise = 7,
  }
  enum EnumResourceMethod {
@@ -192,12 +221,76 @@
    All = 999,
  }
  enum EnumSettlementCycle {
    /**月结 */
    Month = 10,
    /**周结 */
    Week = 20,
    /**日结 */
    Day = 30,
  }
  enum EnumSmsAccess {
    /**阿里云短信 */
    AliyunSms = 10,
  }
  enum EnumUserInfoStatus {
  enum EnumSmsTemplateType {
    /**登录 */
    Login = 0,
    /**注册 */
    Register = 1,
    /**修改密码 */
    UpdatePassword = 2,
    /**绑定手机号码 */
    BindPhoneNumber = 3,
    /**修改手机号码 */
    UpdatePhoneNumber = 4,
  }
  enum EnumTaskCheckReceiveStatus {
    /**待验收 */
    Wait = 10,
    /**已验收 */
    Completed = 30,
  }
  enum EnumTaskRecommendStatus {
    /**未推荐 */
    No = 10,
    /**已推荐 */
    Yes = 20,
  }
  enum EnumTaskReleaseStatus {
    /**发布中 */
    InProcess = 20,
    /**已停止 */
    Stopped = 100,
  }
  enum EnumTaskSettlementStatus {
    /**待结算 */
    Wait = 10,
    /**已结算 */
    Completed = 30,
  }
  enum EnumTaskStatus {
    /**待安排 */
    Wait = 10,
    /**已安排 */
    Complete = 20,
  }
  enum EnumUserGender {
    /**男 */
    Male = 10,
    /**女 */
    Female = 20,
  }
  enum EnumUserStatus {
    /**正常 */
    Normal = 10,
    /**禁用 */
@@ -311,6 +404,42 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetRoleQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetTaskInfoQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskInfoQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetUserResumeQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetUserResumeQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -454,7 +583,7 @@
    timestamp?: number;
  }
  interface FriendlyResultListSelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption {
  interface FriendlyResultListSelectOptionGuidGetDictionaryCategorySelectQueryOption {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
@@ -462,7 +591,7 @@
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption[];
    data?: SelectOptionGuidGetDictionaryCategorySelectQueryOption[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -473,7 +602,7 @@
    timestamp?: number;
  }
  interface FriendlyResultListSelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption {
  interface FriendlyResultListSelectOptionStringGetDictionaryDataSelectQueryResultOption {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
@@ -481,7 +610,7 @@
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: SelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption[];
    data?: SelectOptionStringGetDictionaryDataSelectQueryResultOption[];
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -582,6 +711,24 @@
    timestamp?: number;
  }
  interface FriendlyResultPagedListQueryResultGetTaskInfosQueryResultItem {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: PagedListQueryResultGetTaskInfosQueryResultItem;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultPasswordLoginCommandCallback {
    /** 跟踪Id */
    traceId?: string;
@@ -639,6 +786,8 @@
    categoryId?: string;
    /** 类别编号(Id/编号二选一) */
    categoryCode?: string;
    /** 上级Id */
    parentId?: string;
    /** 关键字 */
    keywords?: string;
  }
@@ -697,10 +846,16 @@
    legalPerson?: string;
    /** 法人身份证号 */
    legalIdentity?: string;
    /** 所在省份编号 */
    provinceCode?: string;
    /** 所在省份 */
    provinceContent?: string;
    /** 所在城市编号 */
    cityCode?: string;
    /** 所在城市 */
    cityContent?: string;
    /** 所属行业编号 */
    industryTypeCode?: string;
    /** 所属行业 */
    industryTypeContent?: string;
    /** 主营业务 */
@@ -891,7 +1046,7 @@
    remark?: string;
    /** 角色 */
    roles?: GetOperationUserInfosQueryResultItemRole[];
    status?: EnumUserInfoStatus;
    status?: EnumUserStatus;
  }
  interface GetOperationUserInfosQueryResultItemRole {
@@ -994,6 +1149,136 @@
    isChecked?: boolean;
  }
  interface GetTaskInfoQueryResult {
    /** Id */
    id?: string;
    /** 企业Id */
    enterpriseId?: string;
    /** 企业全称 */
    enterpriseName?: string;
    /** 在招岗位数量 */
    taskCount?: number;
    /** 任务名称 */
    name?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
    /** 年龄范围最小 */
    ageMinLimit?: number;
    /** 年龄范围大 */
    ageMaxLimit?: number;
    genderLimit?: EnumUserGender;
    /** 资格证书类型 */
    credentialLimits?: GetTaskInfoQueryResultCredentialLimit[];
    /** 任务地点所属省份编号 */
    provinceCode?: string;
    /** 任务地点所属省份 */
    provinceContent?: string;
    /** 任务地点所属城市编号 */
    cityCode?: string;
    /** 任务地点所属城市 */
    cityContent?: string;
    /** 任务地点名称 */
    addressName?: string;
    /** 任务地点详细地址 */
    addressDetail?: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
    latitude?: number;
    /** 任务开始时间 */
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    /** 创建时间 */
    createdTime?: string;
    /** 是否已收藏 */
    isCollected?: boolean;
  }
  interface GetTaskInfoQueryResultBenefit {
    /** 福利编号 */
    benefitCode?: string;
    /** 福利 */
    benefitContent?: string;
  }
  interface GetTaskInfoQueryResultCredentialLimit {
    /** 证书类型编号 */
    typeCode?: string;
    /** 证书类型 */
    typeContent?: string;
  }
  interface GetTaskInfosQuery {
    pageModel?: PagedListQueryPageModel;
    /** 关键字(任务名称) */
    keywords?: string;
    /** 发布时间-开始 */
    beginTime?: string;
    /** 发布时间-结束 */
    endTime?: string;
    /** 任务地点所属城市编号 */
    cityCode?: string;
    settlementCycle?: EnumSettlementCycle;
    /** 员工福利 */
    benefitCodes?: string[];
    genderLimit?: EnumUserGender;
    status?: EnumTaskStatus;
    releaseStatus?: EnumTaskReleaseStatus;
    recommendStatus?: EnumTaskRecommendStatus;
  }
  interface GetTaskInfosQueryResultItem {
    /** Id */
    id?: string;
    /** 任务名称 */
    name: string;
    /** 任务单号 */
    code?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 福利 */
    benefits?: GetTaskInfoQueryResultBenefit[];
    genderLimit?: EnumUserGender;
    /** 资格证书类型 */
    credentialLimits?: GetTaskInfoQueryResultCredentialLimit[];
    /** 任务地点所属省份编号 */
    provinceCode?: string;
    /** 任务地点所属省份 */
    provinceContent?: string;
    /** 任务地点所属城市编号 */
    cityCode?: string;
    /** 任务地点所属城市 */
    cityContent?: string;
    /** 任务地点名称 */
    addressName?: string;
    /** 任务地点详细地址 */
    addressDetail?: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
    latitude?: number;
    /** 报名人数 */
    userCount?: number;
    status?: EnumTaskStatus;
    /** 任务开始时间 */
    beginTime?: string;
    /** 任务结束时间 */
    endTime?: string;
    releaseStatus?: EnumTaskReleaseStatus;
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
    settlementStatus?: EnumTaskSettlementStatus;
    recommendStatus?: EnumTaskRecommendStatus;
    /** 创建时间 */
    createdTime?: string;
  }
  interface GetUserInfoRolesQueryResultItem {
    /** 角色Id */
    id?: string;
@@ -1004,6 +1289,8 @@
    /** 是否选中 */
    isChecked?: boolean;
  }
  type GetUserResumeQueryResult = Record<string, any>;
  interface PagedListQueryPageModel {
    /** 行数 */
@@ -1048,6 +1335,12 @@
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetRolesQueryResultItem[];
  }
  interface PagedListQueryResultGetTaskInfosQueryResultItem {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetTaskInfosQueryResultItem[];
  }
  interface PagedListQueryResultPageModel {
@@ -1095,12 +1388,14 @@
  interface SaveDictionaryDataCommand {
    /** Id */
    id?: string;
    /** 类别Id */
    /** 类别Id(Id/编号二选一) */
    categoryId?: string;
    /** 类别编号(Id/编号二选一) */
    categoryCode?: string;
    /** 上级Id */
    parentId?: string;
    /** 编号 */
    code?: string;
    code: string;
    /** 显示内容 */
    content: string;
    /** 字段1 */
@@ -1130,12 +1425,12 @@
    legalPerson?: string;
    /** 法人身份证号 */
    legalIdentity?: string;
    /** 所在省份Id */
    provinceId?: string;
    /** 所在城市Id */
    cityId?: string;
    /** 所属行业Id */
    industryTypeId?: string;
    /** 所在省份编号 */
    provinceCode?: string;
    /** 所在城市编号 */
    cityCode?: string;
    /** 所属行业编号 */
    industryTypeCode?: string;
    /** 主营业务 */
    mainBusiness?: string;
    /** 联系人 */
@@ -1291,7 +1586,43 @@
    resources?: GetRoleQueryResultResource[];
  }
  interface SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOption {
  interface SaveTaskInfoCommand {
    /** Id */
    id?: string;
    /** 任务名称 */
    name: string;
    billingMethod: EnumBillingMethod;
    /** 服务费 */
    serviceFee: number;
    settlementCycle: EnumSettlementCycle;
    /** 福利编号 */
    benefits?: string[];
    /** 年龄范围最小 */
    ageMinLimit: number;
    /** 年龄范围大 */
    ageMaxLimit: number;
    genderLimit: EnumUserGender;
    /** 资格证书类型编号 */
    credentialLimits?: string[];
    /** 任务地点所属省份编号 */
    provinceCode: string;
    /** 任务地点所属城市编号 */
    cityCode: string;
    /** 任务地点名称 */
    addressName: string;
    /** 任务地点详细地址 */
    addressDetail: string;
    /** 经度 */
    longitude?: number;
    /** 纬度 */
    latitude?: number;
    /** 任务开始时间 */
    beginTime: string;
    /** 任务结束时间 */
    endTime: string;
  }
  interface SelectOptionGuidGetDictionaryCategorySelectQueryOption {
    /** 值 */
    value?: string;
    /** 标签 */
@@ -1300,13 +1631,19 @@
    data?: any;
  }
  interface SelectQueryResultOptionGuidGetDictionaryDataSelectQueryResultOption {
  interface SelectOptionStringGetDictionaryDataSelectQueryResultOption {
    /** 值 */
    value?: string;
    /** 标签 */
    label?: string;
    /** 数据 */
    data?: any;
  }
  interface SendVerifyCodeCommand {
    /** 手机号码 */
    phoneNumber?: string;
    templateCode?: EnumSmsTemplateType;
  }
  interface SetDictionaryDataIsDisabledCommand {
@@ -1358,6 +1695,18 @@
    userInfoIds?: string[];
  }
  interface SetTaskInfoRecommendStatusCommand {
    /** Id */
    ids?: string[];
    recommendStatus?: EnumTaskRecommendStatus;
  }
  interface SetTaskInfoReleaseStatusCommand {
    /** Id */
    ids?: string[];
    releaseStatus?: EnumTaskReleaseStatus;
  }
  interface SetUserInfoRolesCommand {
    /** 用户Id */
    userInfoId?: string;
@@ -1368,6 +1717,8 @@
  interface SetUserInfoStatusCommand {
    /** Id */
    ids?: string[];
    status?: EnumUserInfoStatus;
    status?: EnumUserStatus;
  }
  type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>;
}
src/services/api/user.ts
New file
@@ -0,0 +1,81 @@
/* eslint-disable */
// @ts-ignore
import { request } from '@/utils/request';
/** 查询运营端用户分页列表数据 POST /api/user/user/getOperationUserInfos */
export async function getOperationUserInfos(
  body: API.GetOperationUserInfosQuery,
  options?: API.RequestConfig
) {
  return request<API.PagedListQueryResultGetOperationUserInfosQueryResultItem>(
    '/api/user/user/getOperationUserInfos',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 查询用户角色列表 GET /api/user/user/getUserInfoRoles */
export async function getUserInfoRoles(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetUserInfoRolesParams,
  options?: API.RequestConfig
) {
  return request<API.GetUserInfoRolesQueryResultItem[]>('/api/user/user/getUserInfoRoles', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}
/** 查询用户简历 GET /api/user/user/getUserResume */
export async function getUserResume(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetUserResumeParams,
  options?: API.RequestConfig
) {
  return request<API.GetUserResumeQueryResult>('/api/user/user/getUserResume', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}
/** 设置用户信息角色 PUT /api/user/user/setUserInfoRoles */
export async function setUserInfoRoles(
  body: API.SetUserInfoRolesCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/user/user/setUserInfoRoles', {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 设置用户信息状态 PUT /api/user/user/setUserInfoStatus */
export async function setUserInfoStatus(
  body: API.SetUserInfoStatusCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/user/user/setUserInfoStatus', {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/userInfo.ts
File was deleted
src/utils/common/area.ts
@@ -1,13 +1,14 @@
import { AreaType } from '@/constants';
import _ from 'lodash';
export interface AreaTreeNode extends API.AreaDto {
  children?: AreaTreeNode[];
}
// type formatAreaListToTreeOptions = {
//   parentId?: string;
//   maxLayer?: number;
// };
export function formatAreaListToTree(
  areaDataList: API.AreaDto[],
  parentId: number,
  areaDataList: API.AreaTreeNode[],
  parentId = '',
  maxLayer = AreaType.Area
) {
  const treeNodeList: API.AreaTreeNode[] = [];
src/views/EmploymentManage/CheckManage.vue
@@ -66,7 +66,6 @@
} from '@bole-core/components';
import { CheckManageColumns } from './constants';
import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
import { OrderInputType } from '@bole-core/core';
import CheckManageDialog from './components/CheckManageDialog.vue';
defineOptions({
@@ -137,7 +136,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
src/views/EmploymentManage/EmploymentManage.vue
@@ -3,49 +3,41 @@
    <AppContainer>
      <ProTableQueryFilterBar @on-reset="reset">
        <template #query>
          <QueryFilterItem tip-content="录用状态">
          <QueryFilterItem tip-content="任务状态">
            <FieldRadio
              v-model="extraParamState.flexEnterpriseSettingStatus"
              :value-enum="[
                { label: '已安排', value: 1 },
                { label: '待安排', value: 0 },
              ]"
              v-model="extraParamState.status"
              :value-enum="EnumTaskStatusText"
              buttonStyle
              showAllBtn
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem tip-content="实名状态">
          <QueryFilterItem tip-content="发布状态">
            <FieldRadio
              v-model="extraParamState.flexEnterpriseSettingStatus"
              :value-enum="[
                { label: '发布中', value: 1 },
                { label: '已停止', value: 0 },
              ]"
              v-model="extraParamState.releaseStatus"
              :value-enum="EnumTaskReleaseStatusText"
              buttonStyle
              showAllBtn
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem>
          <QueryFilterItem tip-content="发布时间">
            <FieldDatePicker
              v-model="extraParamState.flexEnterpriseSettingStatus"
              v-model="extraParamState.time"
              type="daterange"
              range-separator="~"
              start-placeholder="起始日期"
              end-placeholder="截止日期"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
              clearable
              @change="getList()"
              tooltipContent="发布时间"
            ></FieldDatePicker>
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.searchWord"
              style="width: 250px"
              v-model="extraParamState.keywords"
              style="width: 260px"
              placeholder="任务名称"
              @on-click-search="getList"
              @keyup.enter="getList()"
            >
            </SearchInput>
          </QueryFilterItem>
@@ -59,8 +51,10 @@
        :columns="EmploymentManageColumns"
        :operationBtns="operationBtns"
      >
        <template #signNum="{ row }">
          <el-button link type="primary" @click="goSignList(row)">{{ row.signNum || 0 }}</el-button>
        <template #userCount="{ row }">
          <el-button link type="primary" @click="goSignList(row)">{{
            row.userCount || 0
          }}</el-button>
        </template>
      </ProTableV2>
    </AppContainer>
@@ -81,9 +75,12 @@
  defineOperationBtns,
} from '@bole-core/components';
import { EmploymentManageColumns } from './constants';
import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
import { OrderInputType } from '@bole-core/core';
import { EnumTaskStatusText, EnumTaskReleaseStatusText } from '@/constants';
import { useGlobalEventContext } from '@/hooks';
import * as taskServices from '@/services/api/task';
import { format } from '@/utils';
import { ModelValueType } from 'element-plus';
import { Message } from '@bole-core/core';
defineOptions({
  name: 'EmploymentManageList',
@@ -105,7 +102,7 @@
      name: '详情',
    },
    emits: {
      onClick: (role) => goDetail(role),
      onClick: (row: API.GetTaskInfosQueryResultItem) => goDetail(row),
    },
  },
  {
@@ -114,10 +111,12 @@
      name: '发布',
    },
    emits: {
      onClick: (role) => handlePublish(role),
      onClick: (row: API.GetTaskInfosQueryResultItem) =>
        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.InProcess),
    },
    extraProps: {
      hide: (row) => false,
      hide: (row: API.GetTaskInfosQueryResultItem) =>
        row.releaseStatus === EnumTaskReleaseStatus.InProcess,
    },
  },
  {
@@ -126,10 +125,12 @@
      name: '停止发布',
    },
    emits: {
      onClick: (role) => handleUnPublish(role),
      onClick: (row: API.GetTaskInfosQueryResultItem) =>
        setTaskInfoReleaseStatus(row, EnumTaskReleaseStatus.Stopped),
    },
    extraProps: {
      hide: (row) => false,
      hide: (row: API.GetTaskInfosQueryResultItem) =>
        row.releaseStatus === EnumTaskReleaseStatus.Stopped,
    },
  },
  {
@@ -138,7 +139,7 @@
      name: '安排',
    },
    emits: {
      onClick: (role) => handleArrange(role),
      onClick: (row: API.GetTaskInfosQueryResultItem) => handleArrange(row),
    },
  },
]);
@@ -175,17 +176,20 @@
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetFlexEnterpriseInput = {
      let params: API.GetTaskInfosQuery = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus,
        searchWord: extraParamState.searchWord,
        keywords: extraParamState.keywords,
        status: extraParamState.status,
        releaseStatus: extraParamState.releaseStatus,
        beginTime: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        endTime: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await flexEnterpriseServices.getFlexEnterpriseList(params, {
      let res = await taskServices.getTaskInfos(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -195,23 +199,46 @@
  },
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      keywords: '',
      status: '' as any as EnumTaskStatus,
      releaseStatus: '' as any as EnumTaskReleaseStatus,
      time: [] as unknown as ModelValueType,
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
    columnsRenderProps: {},
    queryKey: ['taskServices/getTaskInfos'],
    columnsRenderProps: {
      billingMethod: { type: 'enum', valueEnum: EnumBillingMethodText },
      settlementCycle: { type: 'enum', valueEnum: EnumSettlementCycleText },
      genderLimit: { type: 'enum', valueEnum: EnumUserGenderText },
      status: { type: 'enum', valueEnum: EnumTaskStatusText },
      releaseStatus: { type: 'enum', valueEnum: EnumTaskReleaseStatusText },
      beginTime: { type: 'date', format: 'YYYY-MM-DD' },
      endTime: { type: 'date', format: 'YYYY-MM-DD' },
      serviceFee: { type: 'money' },
    },
  }
);
function handlePublish(row) {
  console.log(row);
}
function handleUnPublish(row) {
  console.log(row);
async function setTaskInfoReleaseStatus(
  row: API.GetTaskInfosQueryResultItem,
  releaseStatus: EnumTaskReleaseStatus
) {
  try {
    await Message.tipMessage(`确认要${EnumTaskReleaseStatusTextForTip[releaseStatus]}吗?`);
    let params: API.SetTaskInfoReleaseStatusCommand = {
      ids: [row.id],
      releaseStatus: releaseStatus,
    };
    let res = await taskServices.setTaskInfoReleaseStatus(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
function handleArrange(row) {
function handleArrange(row: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'EmploymentManageArrange',
    params: {
@@ -219,7 +246,7 @@
    },
  });
}
function goAddOrEdit(row?) {
function goAddOrEdit(row?: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'AddOrEditEmployment',
    params: {
@@ -227,7 +254,7 @@
    },
  });
}
function goDetail(row) {
function goDetail(row: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'EmploymentManageDetail',
    params: {
@@ -236,7 +263,7 @@
  });
}
function goSignList(row) {
function goSignList(row: API.GetTaskInfosQueryResultItem) {
  router.push({
    name: 'EmploymentSignList',
    params: {
src/views/EmploymentManage/EmploymentManageArrange.vue
@@ -75,7 +75,7 @@
  defineOperationBtns,
} from '@bole-core/components';
import { EmploymentArrangeColumns } from './constants';
import { OrderInputType, Message } from '@bole-core/core';
import { Message } from '@bole-core/core';
import { FlexEnterpriseSettingStatus } from '@/constants';
defineOptions({
@@ -137,7 +137,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
src/views/EmploymentManage/EmploymentSignList.vue
@@ -53,7 +53,7 @@
  UploadUserFile,
} from '@bole-core/components';
import { EmploymentSignColumns } from './constants/columns';
import { OrderInputType, Message } from '@bole-core/core';
import {  Message } from '@bole-core/core';
import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
import StaffInfoDialog from '@/views/FlexJobManage/components/StaffInfoDialog.vue';
import { convertApi2FormUrlOnlyOne } from '@/utils';
@@ -142,7 +142,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
src/views/EmploymentManage/components/AddOrEditEmploymentView.vue
@@ -12,24 +12,19 @@
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="服务费:" prop="salaryType">
              <ProFormItemV2 label="服务费:" prop="billingMethod">
                <RadioWithExtra
                  v-model="form.salaryType"
                  :value-enum="[
                    { label: '按月', value: 1 },
                    { label: '按日', value: 2 },
                  ]"
                  v-model="form.billingMethod"
                  :value-enum="EnumBillingMethodText"
                  :showExtra="true"
                  :button-style="false"
                >
                  <template #extra>
                    <ProFormInputNumber
                      :controls="false"
                      :min="0"
                      :max="999"
                      v-model="form.name"
                      v-model="form.serviceFee"
                      placeholder="请输入"
                      :unit="form.salaryType === 1 ? '元/月' : '元/天'"
                      :unit="EnumBillingMethodUnitText[form.billingMethod]"
                    ></ProFormInputNumber>
                  </template>
                </RadioWithExtra>
@@ -38,10 +33,10 @@
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="结算方式:" prop="salaryType">
              <ProFormItemV2 label="结算方式:" prop="settlementCycle">
                <ProFormRadio
                  v-model="form.salaryType"
                  :value-enum="[{ label: '是', value: 1 }]"
                  v-model="form.settlementCycle"
                  :value-enum="EnumSettlementCycleText"
                  :button-style="false"
                ></ProFormRadio>
              </ProFormItemV2>
@@ -51,7 +46,8 @@
            <ProFormColItem :span="12">
              <ProFormItemV2 label="福利:" prop="benefits">
                <el-checkbox
                  v-model="state.checBenefitskAll"
                  v-if="!isDetail"
                  v-model="state.checkBenefitsAll"
                  style="margin-right: 30px"
                  :indeterminate="state.isBenefitsIndeterminate"
                  @change="handleCheckBenefitsAllChange"
@@ -59,9 +55,7 @@
                >
                <ProFormCheckbox
                  v-model="form.benefits"
                  :value-enum="[]"
                  enumLabelKey="name"
                  enum-value-key="id"
                  :value-enum="welfareList"
                  @change="handleCheckedBenefitsServicesChange"
                ></ProFormCheckbox>
              </ProFormItemV2>
@@ -72,15 +66,15 @@
              <ProFormItemV2 label="年龄范围:" prop="ageRange" class="form-age-range">
                <ProFormInputNumber
                  :controls="false"
                  :min="0"
                  v-model="form.ageStart"
                  :min="1"
                  v-model="form.ageMinLimit"
                  placeholder="请输入"
                ></ProFormInputNumber>
                <div class="form-input-separator">至</div>
                <ProFormInputNumber
                  :controls="false"
                  :min="0"
                  v-model="form.ageEnd"
                  :min="1"
                  v-model="form.ageMaxLimit"
                  placeholder="请输入"
                ></ProFormInputNumber>
              </ProFormItemV2>
@@ -88,46 +82,62 @@
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="性别要求:" prop="sexRequirement" required>
              <ProFormItemV2 label="性别要求:" prop="genderLimit">
                <ProFormRadio
                  v-model="form.sexRequirement"
                  :value-enum="[{ label: '不限', value: 1 }]"
                  v-model="form.genderLimit"
                  :value-enum="EnumUserGenderTextForEdit"
                  show-all-btn
                  :all-btn-label="'不限'"
                  :allBtnValue="0"
                ></ProFormRadio>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="资格证书:" prop="benefits">
              <ProFormItemV2 label="资格证书:" prop="credentialLimits">
                <el-checkbox
                  v-model="state.checBenefitskAll"
                  v-if="!isDetail"
                  v-model="state.checkCertificatesAll"
                  style="margin-right: 30px"
                  :indeterminate="state.isBenefitsIndeterminate"
                  @change="handleCheckBenefitsAllChange"
                  :indeterminate="state.isCertificatesIndeterminate"
                  @change="handleCheckCertificatesAllChange"
                  >全选</el-checkbox
                >
                <ProFormCheckbox
                  v-model="form.benefits"
                  :value-enum="[]"
                  enumLabelKey="name"
                  enum-value-key="id"
                  @change="handleCheckedBenefitsServicesChange"
                  v-model="form.credentialLimits"
                  :value-enum="certificateTypeList"
                  @change="handleCheckedCertificatesServicesChange"
                ></ProFormCheckbox>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务地点:" prop="areaList">
                <!-- <ProFromAddressSelect :areaList="form.areaList" :address="form.address" /> -->
              <ProFormItemV2 label="任务地点:" prop="weMapInfo">
                <WeMap v-if="!isDetail" v-model="form.weMapInfo" />
                <div v-else>
                  {{
                    `${form.weMapInfo.provinceName ?? ''}${form.weMapInfo.cityName ?? ''}${
                      form.weMapInfo.addressName ?? ''
                    }`
                  }}
                </div>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务时间:" prop="name">
              <ProFormItemV2 label="详细地址:" prop="addressDetail">
                <ProFormText v-model.trim="form.addressDetail" placeholder="请输入详细地址" />
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="12">
              <ProFormItemV2 label="任务时间:" prop="time">
                <ProFormDatePicker
                  v-model="form.name"
                  v-model="form.time"
                  type="daterange"
                  range-separator="至"
                  start-placeholder="开始日期"
@@ -160,10 +170,19 @@
  ProFormDatePicker,
  ProFormCheckbox,
} from '@bole-core/components';
import { FormInstance } from 'element-plus';
import { FormInstance, ModelValueType } from 'element-plus';
import { Message } from '@bole-core/core';
import { useQuery } from '@tanstack/vue-query';
import { useGlobalEventContext, useRouteView } from '@/hooks';
import * as taskServices from '@/services/api/task';
import {
  EnumUserGenderTextForEdit,
  EnumBillingMethodText,
  EnumBillingMethodUnitText,
  EnumSettlementCycleText,
} from '@/constants';
import { format } from '@/utils';
import dayjs from 'dayjs';
defineOptions({
  name: 'AddOrEditEmploymentView',
@@ -179,38 +198,71 @@
const eventContext = useGlobalEventContext();
const { closeViewPush } = useRouteView();
const { dictionaryDataList: welfareList } = useDictionaryDataSelect({
  categoryCode: CategoryCode.Welfare,
});
const { dictionaryDataList: certificateTypeList } = useDictionaryDataSelect({
  categoryCode: CategoryCode.CertificateType,
});
const state = reactive({
  checBenefitskAll: false,
  checkBenefitsAll: false,
  isBenefitsIndeterminate: false,
  checkCertificatesAll: false,
  isCertificatesIndeterminate: false,
});
const form = reactive({
  name: '',
  salaryType: 1,
  ageStart: 0,
  ageEnd: 0,
  sexRequirement: 1,
  manNumber: 0,
  womanNumber: 0,
  benefits: [],
  areaList: [] as number[],
  address: '',
  billingMethod: '' as any as EnumBillingMethod,
  serviceFee: 0,
  settlementCycle: '' as any as EnumSettlementCycle,
  benefits: [] as string[],
  ageMinLimit: 0,
  ageMaxLimit: 0,
  genderLimit: 0 as any as EnumUserGender,
  credentialLimits: [] as string[],
  time: [] as unknown as ModelValueType,
  weMapInfo: {} as WeMapModel,
  addressDetail: '',
});
const { isLoading } = useQuery({
  queryKey: ['flexTaskServices/getFlexTaskDetail', id],
  queryKey: ['taskServices/getTaskInfo', id],
  queryFn: async () => {
    return await flexTaskServices.getFlexTaskDetail(
    return await taskServices.getTaskInfo(
      { id: id },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput),
  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
  onSuccess(data) {
    form.name = data.taskName;
    form.name = data.name;
    form.billingMethod = data.billingMethod;
    form.serviceFee = data.serviceFee;
    form.settlementCycle = data.settlementCycle;
    form.benefits = data.benefits?.map((x) => x.benefitCode) ?? [];
    form.ageMinLimit = data.ageMinLimit;
    form.ageMaxLimit = data.ageMaxLimit;
    form.genderLimit = data.genderLimit;
    form.credentialLimits = data.credentialLimits?.map((x) => x.typeCode) ?? [];
    form.time = [
      format(data.beginTime, 'YYYY-MM-DD 00:00:00'),
      format(data.endTime, 'YYYY-MM-DD 23:59:59'),
    ];
    form.weMapInfo = {
      latitude: data.latitude,
      longitude: data.longitude,
      provinceName: data.provinceContent,
      cityName: data.cityContent,
      provinceCode: data.provinceCode,
      cityCode: data.cityCode,
      addressName: data.addressName,
    };
    form.addressDetail = data.addressDetail;
  },
  enabled: isEdit,
});
@@ -233,8 +285,30 @@
}
async function submit() {
  try {
    let params = {};
    let res;
    console.log('form.weMapInfo: ', form.weMapInfo);
    let params: API.SaveTaskInfoCommand = {
      name: form.name,
      billingMethod: form.billingMethod,
      serviceFee: form.serviceFee,
      settlementCycle: form.settlementCycle,
      benefits: form.benefits,
      ageMinLimit: form.ageMinLimit,
      ageMaxLimit: form.ageMaxLimit,
      genderLimit: form.genderLimit,
      credentialLimits: form.credentialLimits,
      provinceCode: form.weMapInfo.provinceCode,
      cityCode: form.weMapInfo.cityCode,
      addressName: form.weMapInfo.addressName,
      addressDetail: form.addressDetail,
      longitude: form.weMapInfo.longitude,
      latitude: form.weMapInfo.latitude,
      beginTime: dayjs(form.time[0]).format('YYYY-MM-DD 00:00:00'),
      endTime: dayjs(form.time[1]).format('YYYY-MM-DD 23:59:59'),
    };
    if (isEdit) {
      params.id = id;
    }
    let res = await taskServices.saveTaskInfo(params);
    if (res) {
      Message.successMessage('操作成功');
      eventContext.emit(isEdit ? 'employment:edit' : 'employment:add');
@@ -243,9 +317,36 @@
  } catch (error) {}
}
function handleCheckBenefitsAllChange() {}
function handleCheckBenefitsAllChange(val: boolean) {
  form.benefits = val
    ? welfareList.value.map((item) => {
        return item.value;
      })
    : [];
  state.isBenefitsIndeterminate = false;
}
function handleCheckedBenefitsServicesChange() {}
function handleCheckedBenefitsServicesChange(value: string[]) {
  const checkedCount = value.length;
  state.checkBenefitsAll = checkedCount === welfareList.value.length;
  state.isBenefitsIndeterminate = checkedCount > 0 && checkedCount < welfareList.value.length;
}
function handleCheckCertificatesAllChange(val: boolean) {
  form.credentialLimits = val
    ? certificateTypeList.value.map((item) => {
        return item.value;
      })
    : [];
  state.isCertificatesIndeterminate = false;
}
function handleCheckedCertificatesServicesChange(value: string[]) {
  const checkedCount = value.length;
  state.checkCertificatesAll = checkedCount === certificateTypeList.value.length;
  state.isCertificatesIndeterminate =
    checkedCount > 0 && checkedCount < certificateTypeList.value.length;
}
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
src/views/EmploymentManage/components/CheckManageDialog.vue
@@ -27,7 +27,6 @@
  defineOperationBtns,
  useTable,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
defineOptions({
  name: 'EnterpriseConsumptionDetailDialog',
@@ -107,7 +106,7 @@
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
    columnsRenderProps: {},
src/views/EmploymentManage/constants/columns.ts
@@ -8,52 +8,52 @@
  },
  {
    id: '2',
    enCode: 'name',
    enCode: 'code',
    name: '任务单号',
  },
  {
    id: '3',
    enCode: 'name',
    enCode: 'billingMethod',
    name: '结算周期',
  },
  {
    id: '4',
    enCode: 'name',
    enCode: 'serviceFee',
    name: '服务费金额',
  },
  {
    id: '5',
    enCode: 'name',
    enCode: 'settlementCycle',
    name: '结算方式',
  },
  {
    id: '6',
    enCode: 'name',
    enCode: 'genderLimit',
    name: '性别要求',
  },
  {
    id: '7',
    enCode: 'signNum',
    enCode: 'userCount',
    name: '报名人数',
  },
  {
    id: '8',
    enCode: 'name',
    enCode: 'status',
    name: '任务状态',
  },
  {
    id: '9',
    enCode: 'name',
    enCode: 'beginTime',
    name: '发布日期',
  },
  {
    id: '10',
    enCode: 'name',
    enCode: 'endTime',
    name: '结束日期',
  },
  {
    id: '11',
    enCode: 'name',
    enCode: 'releaseStatus',
    name: '发布状态',
  },
]);
src/views/FinanceManage/components/DistributionDetailView.vue
@@ -22,7 +22,6 @@
// import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
import { DistributionDetailColumns } from '../constants';
import { FlexEnterpriseSettingStatus } from '@/constants';
import { OrderInputType } from '@bole-core/core';
defineOptions({
  name: 'DistributionDetailView',
@@ -71,7 +70,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
src/views/FinanceManage/components/UsageDetailView.vue
@@ -12,7 +12,6 @@
// import * as flexEnterpriseServices from '@/services/api/FlexEnterprise';
import { UsageDetailColumns } from '../constants';
import { FlexEnterpriseSettingStatus } from '@/constants';
import { OrderInputType } from '@bole-core/core';
defineOptions({
  name: 'UsageDetailView',
@@ -59,7 +58,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
src/views/FlexJobManage/FlexJobManage.vue
@@ -134,7 +134,7 @@
} from '@bole-core/components';
import { FlexJobManageColumns } from './constants';
import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
import { OrderInputType, Message } from '@bole-core/core';
import { Message } from '@bole-core/core';
import { convertApi2FormUrlOnlyOne, downloadFileByUrl } from '@/utils';
import StaffInfoDialog from './components/StaffInfoDialog.vue';
import BatchImportDialog from './components/BatchImportDialog.vue';
@@ -242,7 +242,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -133,7 +133,7 @@
import { Edit, Upload } from '@element-plus/icons-vue';
import { SettlementListColumns } from './constants';
import { useQuery } from '@tanstack/vue-query';
import { downloadFileByUrl, OrderInputType } from '@bole-core/core';
import { downloadFileByUrl } from '@bole-core/core';
defineOptions({
  name: 'ServiceChargeDetail',
@@ -199,7 +199,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
    columnsRenderProps: {},
src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -109,7 +109,6 @@
} from '@bole-core/components';
import { ServiceChargeManageColumns } from './constants';
import { FlexEnterpriseSettingStatus, Gender } from '@/constants';
import { OrderInputType } from '@bole-core/core';
import { downloadFileByUrl } from '@/utils';
defineOptions({
@@ -195,7 +194,7 @@
  {
    defaultExtraParams: {
      searchWord: '',
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus,
    },
    queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'],
types/api.d.ts
@@ -13,4 +13,19 @@
    mock?: boolean;
    customErrorHandler?: (error: any) => boolean;
  }
    interface AreaTreeNode  {
    children?: AreaTreeNode[];
    /** 编码 */
    areaCode?: string;
    /** 父级编码 */
    parentCode?: string;
    /** 名称 */
    areaName?: string;
    /** 1省 2市 3区 4镇 */
    layer?: number;
    /** 排序 */
    sort?: number;
    id?: string
  }
}
types/global.d.ts
@@ -131,16 +131,17 @@
    errorLog: string | Array<'production' | 'development'>;
  }
  interface WeMapModel {
   interface WeMapModel {
    latitude?: number;
    longitude?: number;
    provinceName?: string;
    cityName?: string;
    countyName?: string;
    provinceCode?: number;
    cityCode?: number;
    countyCode?: number;
    provinceCode?: string;
    cityCode?: string;
    countyCode?: string;
    address?: string;
    addressName?: string;
  }
  interface CommonAnnexItem {