From 84e27a26dcbee4d0706dfad6059454ea85fadacc Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期五, 15 八月 2025 14:20:54 +0800 Subject: [PATCH] fix: 修改角色授权代码 --- src/views/Permission/RoleManage.vue | 3 src/services/api/resource.ts | 15 - .eslintrc-auto-import.json | 5 src/services/api/typings.d.ts | 278 +++++++++++++++++++++++- src/utils/common/tree.ts | 26 ++ src/services/api/taskUser.ts | 15 + src/views/Permission/components/dialogAuthorizeV2.vue | 127 ++++------ src/services/api/index.ts | 4 src/services/api/userResume.ts | 15 + src/services/api/fileUtils.ts | 52 ++++ auto-imports.d.ts | 12 + src/constants/apiEnum.ts | 58 ++++ src/services/api/ocrUtils.ts | 18 + src/services/api/user.ts | 15 + 14 files changed, 527 insertions(+), 116 deletions(-) diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 3725c7e..92ed0ec 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -25,11 +25,16 @@ "EnumBillingMethodUnitText": true, "EnumClientType": true, "EnumClientTypeText": true, + "EnumDataSource": true, + "EnumEnterpriseRealMethod": true, "EnumMenuType": true, "EnumMenuVisitLevel": true, + "EnumOcrAccess": true, "EnumPagedListOrder": true, + "EnumPayAccess": true, "EnumPersonalFreeTime": true, "EnumPersonalJobSeekingStatus": true, + "EnumPersonalRealMethod": true, "EnumRealAccess": true, "EnumRealAccessText": true, "EnumResourceController": true, diff --git a/auto-imports.d.ts b/auto-imports.d.ts index f4b04b9..0bc8cee 100644 --- a/auto-imports.d.ts +++ b/auto-imports.d.ts @@ -33,11 +33,16 @@ 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 EnumDataSource: typeof import('./src/constants/apiEnum')['EnumDataSource'] + const EnumEnterpriseRealMethod: typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod'] const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType'] const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel'] + const EnumOcrAccess: typeof import('./src/constants/apiEnum')['EnumOcrAccess'] 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 EnumPersonalJobSeekingStatus: typeof import('./src/constants/apiEnum')['EnumPersonalJobSeekingStatus'] + const EnumPersonalRealMethod: typeof import('./src/constants/apiEnum')['EnumPersonalRealMethod'] const EnumRealAccess: typeof import('./src/constants/apiEnum')['EnumRealAccess'] const EnumRealAccessText: typeof import('./src/constants/enterprise')['EnumRealAccessText'] const EnumResourceController: typeof import('./src/constants/apiEnum')['EnumResourceController'] @@ -253,7 +258,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, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum' + export type { EnumBillingMethod, EnumClientType, EnumDataSource, EnumEnterpriseRealMethod, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton, EnumBillingMethod, EnumClientType, EnumDataSource, EnumEnterpriseRealMethod, EnumMenuType, EnumMenuVisitLevel, EnumOcrAccess, EnumPagedListOrder, EnumPayAccess, EnumPersonalFreeTime, EnumPersonalJobSeekingStatus, EnumPersonalRealMethod, EnumRealAccess, EnumResourceController, EnumResourceMethod, EnumRoleWebApiDataPower, EnumSettlementCycle, EnumSmsAccess, EnumTaskCheckReceiveStatus, EnumTaskRecommendStatus, EnumTaskReleaseStatus, EnumTaskSettlementStatus, EnumTaskStatus, EnumTaskUserArrangeStatus, EnumTaskUserHireStatus, EnumTaskUserSignContractStatus, EnumTaskUserSubmitCheckReceiveStatus, EnumUserGender, EnumUserRealMethod, EnumUserStatus, EnumUserType, GetPersonalApplyTaskInfosQueryStatus, GetPersonalHireTaskInfosQueryStatus, GetTaskInfoQueryResultApplyButton, GetTaskInfoQueryResultHireButton } from './src/constants/apiEnum' import('./src/constants/apiEnum') // @ts-ignore export type { FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum, FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum } from './src/constants/cPerson' @@ -316,11 +321,16 @@ 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 EnumDataSource: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumDataSource']> + readonly EnumEnterpriseRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumEnterpriseRealMethod']> readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']> readonly EnumMenuVisitLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']> + readonly EnumOcrAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumOcrAccess']> 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 EnumPersonalJobSeekingStatus: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPersonalJobSeekingStatus']> + readonly EnumPersonalRealMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPersonalRealMethod']> readonly EnumRealAccess: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRealAccess']> readonly EnumRealAccessText: UnwrapRef<typeof import('./src/constants/enterprise')['EnumRealAccessText']> readonly EnumResourceController: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumResourceController']> diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts index 01db867..15ec8af 100644 --- a/src/constants/apiEnum.ts +++ b/src/constants/apiEnum.ts @@ -21,6 +21,20 @@ Wxmp = 20, } +/** 鏁版嵁鏉ユ簮 */ +export enum EnumDataSource { + /**818 */ + HumanResources = 10, +} + +/** 浼佷笟瀹炲悕鏂瑰紡 */ +export enum EnumEnterpriseRealMethod { + /**浼佷笟涓夎绱� */ + Identity3 = 10, + /**浼佷笟鍥涜绱� */ + Identity4 = 20, +} + /** 鑿滃崟绫诲瀷 */ export enum EnumMenuType { /**鑿滃崟 */ @@ -45,12 +59,26 @@ NeedPower = 30, } +/** 鏂囧瓧璇嗗埆閫氶亾 */ +export enum EnumOcrAccess { + /**鐧惧害 */ + Baidu = 10, +} + /** 鍒嗛〉鍒楄〃鎺掑簭 */ export enum EnumPagedListOrder { /**鍗囧簭 */ Asc = 0, /**闄嶅簭 */ Desc = 1, +} + +/** 鏀粯閫氶亾 */ +export enum EnumPayAccess { + /**骞冲畨閾惰 */ + PingAnBank = 10, + /**鏀粯瀹� */ + Alipay = 20, } /** 绌洪棽鏃堕棿 */ @@ -77,6 +105,16 @@ Not = 30, } +/** 涓汉瀹炲悕鏂瑰紡 */ +export enum EnumPersonalRealMethod { + /**涓汉鎵嬫満鍙蜂笁瑕佺礌 */ + Identity3 = 10, + /**閾惰鍗″瑕佺礌 */ + Identity4 = 20, + /**鍒疯劯璁よ瘉 */ + Face = 30, +} + /** 瀹炲悕閫氶亾 */ export enum EnumRealAccess { /**涓婁笂绛� */ @@ -95,22 +133,26 @@ TaskUser = 2, /**浠诲姟楠屾敹 */ TaskCheckReceive = 3, + /**鏂囧瓧璇嗗埆 */ + FileUtils = 4, + /**鏂囧瓧璇嗗埆 */ + OcrUtils = 5, /**鐢ㄦ埛璁よ瘉 */ - Auth = 4, + Auth = 6, /**鐢ㄦ埛鑿滃崟 */ - Menu = 5, + Menu = 7, /**鐢ㄦ埛璧勬簮 */ - Resource = 6, + Resource = 8, /**鐢ㄦ埛瑙掕壊 */ - Role = 7, + Role = 9, /**鐢ㄦ埛淇℃伅 */ - User = 8, + User = 10, /**鐢ㄦ埛绠�鍘� */ - UserResume = 9, + UserResume = 11, /**浼佷笟淇℃伅 */ - Enterprise = 10, + Enterprise = 12, /**鐏靛伐淇℃伅 */ - EnterpriseEmployee = 11, + EnterpriseEmployee = 13, } /** 璧勬簮璇锋眰鏂瑰紡 */ diff --git a/src/services/api/fileUtils.ts b/src/services/api/fileUtils.ts new file mode 100644 index 0000000..425fac0 --- /dev/null +++ b/src/services/api/fileUtils.ts @@ -0,0 +1,52 @@ +/* eslint-disable */ +// @ts-ignore +import { request } from '@/utils/request'; + +/** 鑾峰彇鏂囦欢鍦板潃 GET /api/common/fileUtils/getFileUrl */ +export async function getFileUrl( + // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) + params: API.APIgetFileUrlParams, + options?: API.RequestConfig +) { + return request<string>('/api/common/fileUtils/getFileUrl', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 涓婁紶鏂囦欢 POST /api/common/fileUtils/uploadFile */ +export async function uploadFile( + body: { + /** 鍦烘櫙 */ + Scene?: string; + }, + File?: File, + options?: API.RequestConfig +) { + const formData = new FormData(); + + if (File) { + formData.append('File', File); + } + + Object.keys(body).forEach((ele) => { + const item = (body as any)[ele]; + + if (item !== undefined && item !== null) { + formData.append( + ele, + typeof item === 'object' && !(item instanceof File) ? JSON.stringify(item) : item + ); + } + }); + + return request<API.UploadFileCommandResult>('/api/common/fileUtils/uploadFile', { + method: 'POST', + data: formData, + requestType: 'form', + ...(options || {}), + }); +} diff --git a/src/services/api/index.ts b/src/services/api/index.ts index 9cabf40..38f65d3 100644 --- a/src/services/api/index.ts +++ b/src/services/api/index.ts @@ -7,6 +7,7 @@ import * as role from './role'; import * as enterprise from './enterprise'; import * as task from './task'; +import * as ocrUtils from './ocrUtils'; import * as dictionary from './dictionary'; import * as userResume from './userResume'; import * as auth from './auth'; @@ -14,12 +15,14 @@ import * as resource from './resource'; import * as taskUser from './taskUser'; import * as menu from './menu'; +import * as fileUtils from './fileUtils'; export default { enterpriseEmployee, user, role, enterprise, task, + ocrUtils, dictionary, userResume, auth, @@ -27,4 +30,5 @@ resource, taskUser, menu, + fileUtils, }; diff --git a/src/services/api/ocrUtils.ts b/src/services/api/ocrUtils.ts new file mode 100644 index 0000000..4601bae --- /dev/null +++ b/src/services/api/ocrUtils.ts @@ -0,0 +1,18 @@ +/* eslint-disable */ +// @ts-ignore +import { request } from '@/utils/request'; + +/** 鏂囧瓧璇嗗埆钀ヤ笟鎵х収 GET /api/common/ocrUtils/getLicenseOcr */ +export async function getLicenseOcr( + // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) + params: API.APIgetLicenseOcrParams, + options?: API.RequestConfig +) { + return request<API.GetLicenseOcrCommandResult>('/api/common/ocrUtils/getLicenseOcr', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/src/services/api/resource.ts b/src/services/api/resource.ts index 5e25fe0..dc3ef94 100644 --- a/src/services/api/resource.ts +++ b/src/services/api/resource.ts @@ -31,18 +31,3 @@ ...(options || {}), }); } - -/** 淇濆瓨浠诲姟璋冨害-浣滀笟 POST /api/user/resource/saveScheduleJobDetail */ -export async function saveScheduleJobDetail( - body: API.SaveScheduleJobDetailCommand, - options?: API.RequestConfig -) { - return request<boolean>('/api/user/resource/saveScheduleJobDetail', { - method: 'POST', - headers: { - 'Content-Type': 'application/json-patch+json', - }, - data: body, - ...(options || {}), - }); -} diff --git a/src/services/api/taskUser.ts b/src/services/api/taskUser.ts index a23742d..0edd5de 100644 --- a/src/services/api/taskUser.ts +++ b/src/services/api/taskUser.ts @@ -14,6 +14,21 @@ }); } +/** 娓呯┖宸插仠姝㈢殑浠诲姟鏀惰棌 DELETE /api/flexjob/taskUser/clearTaskCollect */ +export async function clearTaskCollect( + body: API.ClearTaskCollectCommand, + options?: API.RequestConfig +) { + return request<number>('/api/flexjob/taskUser/clearTaskCollect', { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} + /** 鏀惰棌浠诲姟 POST /api/flexjob/taskUser/collectTask */ export async function collectTask(body: API.CollectTaskCommand, options?: API.RequestConfig) { return request<number>('/api/flexjob/taskUser/collectTask', { diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts index 9256ea7..5b7daa2 100644 --- a/src/services/api/typings.d.ts +++ b/src/services/api/typings.d.ts @@ -83,6 +83,22 @@ id?: string; } + interface APIgetFileUrlParams { + /** 鍦板潃 */ + url?: string; + } + + interface APIgetLicenseOcrParams { + /** 閫氶亾 */ + access?: EnumOcrAccess; + /** 鍦烘櫙 */ + scene?: string; + /** 閾炬帴鍦板潃 */ + url?: string; + /** 鏄惁涓轰簯瀛樺偍鐩稿鍦板潃 */ + isOssUrl?: boolean; + } + interface APIgetMenuParams { /** Id */ id?: string; @@ -189,6 +205,25 @@ ids?: string[]; } + interface BaiduOcrBusinessLicenseResultModel { + /** 浼佷笟鍏ㄧО */ + enterpriseName?: string; + /** 缁熶竴绀句細淇$敤浠g爜 */ + societyCreditCode?: string; + /** 娉曚汉濮撳悕 */ + legalPerson?: string; + /** 浼佷笟绫诲瀷 */ + enterpriseType?: string; + /** 娉ㄥ唽璧勬湰 */ + registeredCapital?: string; + /** 鎴愮珛鏃ユ湡 */ + establishmentDate?: string; + /** 浼佷笟鍦板潃 */ + address?: string; + /** 缁忚惀鑼冨洿 */ + mainBusiness?: string; + } + interface BindWxmpUserInfoCommand { /** 璁块棶浠ょ墝 */ accessToken: string; @@ -212,6 +247,8 @@ id?: string; checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus; } + + type ClearTaskCollectCommand = Record<string, any>; interface CollectTaskCommand { /** 浠诲姟Id */ @@ -288,6 +325,18 @@ Wxmp = 20, } + enum EnumDataSource { + /**818 */ + HumanResources = 10, + } + + enum EnumEnterpriseRealMethod { + /**浼佷笟涓夎绱� */ + Identity3 = 10, + /**浼佷笟鍥涜绱� */ + Identity4 = 20, + } + enum EnumMenuType { /**鑿滃崟 */ Menu = 10, @@ -310,11 +359,23 @@ NeedPower = 30, } + enum EnumOcrAccess { + /**鐧惧害 */ + Baidu = 10, + } + enum EnumPagedListOrder { /**鍗囧簭 */ Asc = 0, /**闄嶅簭 */ Desc = 1, + } + + enum EnumPayAccess { + /**骞冲畨閾惰 */ + PingAnBank = 10, + /**鏀粯瀹� */ + Alipay = 20, } enum EnumPersonalFreeTime { @@ -339,6 +400,15 @@ Not = 30, } + enum EnumPersonalRealMethod { + /**涓汉鎵嬫満鍙蜂笁瑕佺礌 */ + Identity3 = 10, + /**閾惰鍗″瑕佺礌 */ + Identity4 = 20, + /**鍒疯劯璁よ瘉 */ + Face = 30, + } + enum EnumRealAccess { /**涓婁笂绛� */ BestSign = 10, @@ -355,22 +425,26 @@ TaskUser = 2, /**浠诲姟楠屾敹 */ TaskCheckReceive = 3, + /**鏂囧瓧璇嗗埆 */ + FileUtils = 4, + /**鏂囧瓧璇嗗埆 */ + OcrUtils = 5, /**鐢ㄦ埛璁よ瘉 */ - Auth = 4, + Auth = 6, /**鐢ㄦ埛鑿滃崟 */ - Menu = 5, + Menu = 7, /**鐢ㄦ埛璧勬簮 */ - Resource = 6, + Resource = 8, /**鐢ㄦ埛瑙掕壊 */ - Role = 7, + Role = 9, /**鐢ㄦ埛淇℃伅 */ - User = 8, + User = 10, /**鐢ㄦ埛绠�鍘� */ - UserResume = 9, + UserResume = 11, /**浼佷笟淇℃伅 */ - Enterprise = 10, + Enterprise = 12, /**鐏靛伐淇℃伅 */ - EnterpriseEmployee = 11, + EnterpriseEmployee = 13, } enum EnumResourceMethod { @@ -748,6 +822,24 @@ /** 閿欒鐮� */ errorCode?: string; data?: GetEnterpriseSmsSettingQueryResult; + /** 鎵ц鎴愬姛 */ + success?: boolean; + /** 閿欒淇℃伅 */ + msg?: any; + /** 闄勫姞鏁版嵁 */ + extras?: any; + /** 鏃堕棿鎴� */ + timestamp?: number; + } + + interface FriendlyResultGetLicenseOcrCommandResult { + /** 璺熻釜Id */ + traceId?: string; + /** 鐘舵�佺爜 */ + code?: number; + /** 閿欒鐮� */ + errorCode?: string; + data?: GetLicenseOcrCommandResult; /** 鎵ц鎴愬姛 */ success?: boolean; /** 閿欒淇℃伅 */ @@ -1454,6 +1546,24 @@ timestamp?: number; } + interface FriendlyResultUploadFileCommandResult { + /** 璺熻釜Id */ + traceId?: string; + /** 鐘舵�佺爜 */ + code?: number; + /** 閿欒鐮� */ + errorCode?: string; + data?: UploadFileCommandResult; + /** 鎵ц鎴愬姛 */ + success?: boolean; + /** 閿欒淇℃伅 */ + msg?: any; + /** 闄勫姞鏁版嵁 */ + extras?: any; + /** 鏃堕棿鎴� */ + timestamp?: number; + } + type GetAliyunOSSAcsQuery = Record<string, any>; interface GetAliyunOSSAcsQueryResult { @@ -1936,6 +2046,7 @@ avatar?: string; /** 濮撳悕 */ name?: string; + gender?: EnumUserGender; /** 浼佷笟鍏ㄧО */ enterpriseName?: string; /** 瑙掕壊 */ @@ -2024,6 +2135,12 @@ industryTypeContent?: string; /** 鏄惁宸查厤缃� */ isConfigured?: boolean; + } + + interface GetLicenseOcrCommandResult { + /** 鍦板潃 */ + url?: string; + model?: BaiduOcrBusinessLicenseResultModel; } interface GetMenuQueryResult { @@ -2161,6 +2278,27 @@ releaseStatus?: EnumTaskReleaseStatus; recommendStatus?: EnumTaskRecommendStatus; checkReceiveStatus?: EnumTaskCheckReceiveStatus; + pageModel?: PagedListQueryPageModel; + } + + interface GetOpenUserResumesQuery { + /** 浠诲姟Id */ + taskInfoId?: string; + /** 鏈熸湜宀椾綅缂栧彿 */ + userExpectJobs?: string[]; + gender?: EnumUserGender; + /** 韬唤缂栧彿 */ + personalIdentityCode?: string; + /** 骞撮緞鑼冨洿鏈�灏� */ + ageMin?: number; + /** 骞撮緞鑼冨洿澶� */ + ageMax?: number; + /** 璧勬牸璇佷功缂栧彿 */ + userCredentials?: string[]; + /** 鏄惁宸叉敹钘� */ + isCollected?: boolean; + /** 鏄惁宸茶仈绯� */ + isContacted?: boolean; pageModel?: PagedListQueryPageModel; } @@ -2303,6 +2441,8 @@ interface GetPersonalLoginInfoQueryResult { /** Id */ id?: string; + /** 澶村儚 */ + avatar?: string; /** 濮撳悕 */ name?: string; /** 鏄惁瀹炲悕 */ @@ -2993,6 +3133,7 @@ workExperience?: string; /** 鍒涘缓鏃堕棿 */ createdTime?: string; + hireStatus?: EnumTaskUserHireStatus; } type GetUserResumeWorkExperienceQuery = Record<string, any>; @@ -3332,15 +3473,6 @@ resources?: GetRoleQueryResultResource[]; } - interface SaveScheduleJobDetailCommand { - /** 璧勬簮Id */ - resourceId?: string; - /** 璇锋眰鏁版嵁 */ - body?: string; - /** Cron琛ㄨ揪寮� */ - cron?: string; - } - interface SaveTaskInfoCommand { /** 浠诲姟鍚嶇О */ name: string; @@ -3557,8 +3689,115 @@ interface SubmitCheckReceiveTaskCommand { /** 浠诲姟Id */ taskInfoId?: string; + /** 鏃ユ湡 */ + date?: string; /** 闄勪欢 */ files?: string[]; + } + + interface SyncEnterpriseUserCommand { + dataSource?: EnumDataSource; + /** 鏁版嵁鏉ユ簮Id */ + dataSourceId?: string; + /** 瀵嗙爜 */ + password?: string; + /** 濮撳悕 */ + name?: string; + /** 鐢ㄦ埛鍚� */ + userName?: string; + /** 鎵嬫満鍙� */ + phoneNumber?: string; + enterprise?: SyncEnterpriseUserCommandEnterprise; + } + + interface SyncEnterpriseUserCommandEnterprise { + /** 浼佷笟鍏ㄧО */ + enterpriseName: string; + /** 缁熶竴绀句細淇$敤浠g爜 */ + societyCreditCode: string; + /** 钀ヤ笟鎵х収鐓х墖 */ + licenseImage?: string; + /** 娉曚汉濮撳悕 */ + legalPerson?: string; + /** 娉曚汉韬唤璇佸彿 */ + legalIdentity?: string; + /** 鎵�鍦ㄧ渷浠界紪鍙� */ + provinceCode?: string; + /** 鎵�鍦ㄥ煄甯傜紪鍙� */ + cityCode?: string; + /** 鎵�灞炶涓氱紪鍙� */ + industryTypeCode?: string; + /** 浼佷笟绫诲瀷 */ + enterpriseType?: string; + /** 娉ㄥ唽璧勬湰 */ + registeredCapital?: string; + /** 鎴愮珛鏃ユ湡 */ + establishmentDate?: string; + /** 浼佷笟鍦板潃 */ + address?: string; + /** 缁忚惀鑼冨洿 */ + mainBusiness?: string; + /** 鑱旂郴浜� */ + contacts?: string; + /** 鑱旂郴鐢佃瘽 */ + contactPhoneNumber?: string; + /** 鑱旂郴閭 */ + contactEmail?: string; + payAccess?: EnumPayAccess; + /** 寮�鎴锋�昏 */ + bankName?: string; + /** 寮�鎴锋敮琛� */ + bankBranchName?: string; + /** 閾惰璐︽埛 */ + bankCard?: string; + /** 鏄惁宸叉牎楠岄摱琛岃处鎴� */ + isCheckedBankCard?: boolean; + realAccess?: EnumRealAccess; + /** 瀹炲悕璐圭敤 */ + realVerifyCost?: number; + /** 绛剧害璐圭敤 */ + signCost?: number; + /** 涓�鍙d环 */ + mergeSignCost?: number; + smsAccess?: EnumSmsAccess; + /** 鐭俊璐圭敤 */ + smsCost?: number; + /** 鏄惁瀹炲悕 */ + isReal?: boolean; + enterpriseAuth?: SyncEnterpriseUserCommandEnterpriseAuth; + } + + interface SyncEnterpriseUserCommandEnterpriseAuth { + enterpriseRealMethod?: EnumEnterpriseRealMethod; + /** 浼佷笟鍏ㄧО */ + enterpriseName: string; + /** 缁熶竴绀句細淇$敤浠g爜 */ + societyCreditCode: string; + /** 钀ヤ笟鎵х収鐓х墖 */ + licenseImage?: string; + /** 娉曚汉濮撳悕 */ + legalPerson?: string; + /** 娉曚汉韬唤璇佸彿 */ + legalIdentity?: string; + personalRealMethod?: EnumPersonalRealMethod; + /** 娉曚汉鎴栫粡鍔炰汉濮撳悕 */ + name?: string; + /** 娉曚汉鎴栫粡鍔炰汉韬唤璇佸彿 */ + identity?: string; + /** 娉曚汉鎴栫粡鍔炰汉韬唤璇佷汉鍍忛潰 */ + identityImg?: string; + /** 娉曚汉鎴栫粡鍔炰汉韬唤璇佸浗寰介潰 */ + identityBackImg?: string; + /** 娉曚汉鎴栫粡鍔炰汉閾惰鍗″彿 */ + bankCard?: string; + /** 娉曚汉鎴栫粡鍔炰汉閾惰鍗$収鐗� */ + bankCardImg?: string; + /** 娉曚汉鎴栫粡鍔炰汉鎵嬫満鍙� */ + phoneNumber?: string; + /** 鏄惁濮旀墭缁忓姙浜� */ + proxy?: boolean; + /** 浼佷笟鎺堟潈涔� */ + proxyPowerAttorneyUrl?: string; } type SyncHumanResourcesAreaDictionaryDataCommand = Record<string, any>; @@ -3568,6 +3807,11 @@ phoneNumber: string; } + interface UploadFileCommandResult { + /** 鍦板潃 */ + url?: string; + } + interface WxmpLoginCommand { /** 鐢ㄦ埛鐧诲綍鍑瘉 */ code: string; diff --git a/src/services/api/user.ts b/src/services/api/user.ts index 83fdcbf..44bca4f 100644 --- a/src/services/api/user.ts +++ b/src/services/api/user.ts @@ -97,3 +97,18 @@ ...(options || {}), }); } + +/** 鍚屾浼佷笟鐢ㄦ埛 POST /api/user/user/syncEnterpriseUser */ +export async function syncEnterpriseUser( + body: API.SyncEnterpriseUserCommand, + options?: API.RequestConfig +) { + return request<string>('/api/user/user/syncEnterpriseUser', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/api/userResume.ts b/src/services/api/userResume.ts index 8edd703..2557cb6 100644 --- a/src/services/api/userResume.ts +++ b/src/services/api/userResume.ts @@ -47,6 +47,21 @@ }); } +/** 鏌ヨ寮�鏀剧畝鍘嗗垎椤靛垪琛ㄦ暟鎹� POST /api/user/userResume/getOpenUserResumes */ +export async function getOpenUserResumes( + body: API.GetOpenUserResumesQuery, + options?: API.RequestConfig +) { + return request<API.GetUserResumesQueryResult>('/api/user/userResume/getOpenUserResumes', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} + /** 鏌ヨ鐢ㄦ埛绠�鍘� GET /api/user/userResume/getUserResume */ export async function getUserResume( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) diff --git a/src/utils/common/tree.ts b/src/utils/common/tree.ts index c1f171c..8f5241f 100644 --- a/src/utils/common/tree.ts +++ b/src/utils/common/tree.ts @@ -1,3 +1,5 @@ +import { TreeNodeData } from 'element-plus/es/components/tree/src/tree.type'; + export function getTree( data: API.ModuleDto[], root?: string, @@ -44,3 +46,27 @@ return result; } + +type TreeCallback<T extends TreeNodeData, R> = ( + data: T, + index: number, + array: T[], + parent?: T +) => R; + +export function treeEach<T extends TreeNodeData>( + treeData: T[], + callback: TreeCallback<T, void>, + getChildren: (data: T) => T[], + parent?: T +) { + for (let i = 0; i < treeData.length; i++) { + const data = treeData[i]; + callback(data, i, treeData, parent); + + const children = getChildren(data); + if (Array.isArray(children)) { + treeEach(children, callback, getChildren, data); + } + } +} diff --git a/src/views/Permission/RoleManage.vue b/src/views/Permission/RoleManage.vue index 976860e..efbe7b4 100644 --- a/src/views/Permission/RoleManage.vue +++ b/src/views/Permission/RoleManage.vue @@ -260,7 +260,8 @@ } catch (error) {} } -async function handleAuthorize(selectedMenuIds: string[], resourceIds: string[]) { +async function handleAuthorize(selectedMenuIds: string[]) { + console.log('selectedMenuIds: ', selectedMenuIds); try { let params: API.SaveRoleCommand = { ...authorizeForm.detail, diff --git a/src/views/Permission/components/dialogAuthorizeV2.vue b/src/views/Permission/components/dialogAuthorizeV2.vue index 5573b5b..9a272f7 100644 --- a/src/views/Permission/components/dialogAuthorizeV2.vue +++ b/src/views/Permission/components/dialogAuthorizeV2.vue @@ -24,7 +24,8 @@ default-expand-all show-checkbox ref="moduleTree" - :default-checked-keys="checkedModules" + :default-checked-keys="defaultCheckedKeys" + @check="handleModuleCheck" > <template #default="{ node }"> <div class="custom-tree-node"> @@ -62,7 +63,8 @@ default-expand-all show-checkbox ref="pageButtonTree" - :default-checked-keys="checkedPageButton" + :default-checked-keys="defaultCheckedKeys" + @check="handlePageButtonCheck" > <template #default="{ node }"> <div class="custom-tree-node"> @@ -97,7 +99,8 @@ default-expand-all show-checkbox ref="dataButtonTree" - :default-checked-keys="checkedDataButton" + :default-checked-keys="defaultCheckedKeys" + @check="handleDataButtonCheck" > <template #default="{ node }"> <div class="custom-tree-node"> @@ -132,7 +135,8 @@ default-expand-all show-checkbox ref="dataColumnTree" - :default-checked-keys="checkedDataColumn" + :default-checked-keys="defaultCheckedKeys" + @check="handleDataColumnCheck" > <template #default="{ node }"> <div class="custom-tree-node"> @@ -155,10 +159,11 @@ <script setup lang="ts"> import { Message } from '@bole-core/core'; import { AuthorizeType, SubModuleType, SubModuleTitle, EnumMenuType } from '@/constants'; -import { getTree } from '@/utils'; +import { getTree, treeEach } from '@/utils'; import { TreeInstance } from 'element-plus'; import { ProDialog } from '@bole-core/components'; import { useMenus, useMenu } from '@/hooks'; +import data from '@iconify-icons/ep/tickets'; const TypeTip = defineComponent({ name: 'TypeTip', @@ -195,7 +200,7 @@ const form = defineModel<Form>('form'); const emit = defineEmits<{ - (e: 'onConfirm', selectedMenuIds: string[], resourceIds: string[]): void; + (e: 'onConfirm', selectedMenuIds: string[]): void; (e: 'onCancel'): void; }>(); @@ -207,13 +212,17 @@ const state = reactive({ currentMenuId: '', - checkedInfo: [] as CheckedResourceItem[], + selectedMenuIds: [] as string[], }); + +const defaultCheckedKeys = computed(() => Array.from(state.selectedMenuIds)); watch(visible, (newVal) => { if (newVal) { state.currentMenuId = ''; - state.checkedInfo = []; + const menuIds = form.value.detail?.menuIds ?? []; + // menuIds.forEach((id) => state.selectedMenuIds.add(id)); + state.selectedMenuIds = [...menuIds]; } }); @@ -225,6 +234,8 @@ const pageButtonTree = useTemplateRef<TreeInstance>('pageButtonTree'); const dataButtonTree = useTemplateRef<TreeInstance>('dataButtonTree'); const dataColumnTree = useTemplateRef<TreeInstance>('dataColumnTree'); + +type TreeRef = ReturnType<typeof useTemplateRef<TreeInstance>>; const { menusTree, getMenuById } = useMenus({ params: computed(() => ({ @@ -243,77 +254,45 @@ enabled: computed(() => !!state.currentMenuId), }); -const checkedModules = computed(() => { - if (form.value.detail) { - return form.value.detail.menuIds; - } - return []; -}); - -const checkedPageButton = computed(() => initChecked(SubModuleType.PageButton)); -const checkedDataButton = computed(() => initChecked(SubModuleType.DataButton)); -const checkedDataColumn = computed(() => initChecked(SubModuleType.Column)); - -function initChecked(type: SubModuleType) { - return state.checkedInfo.filter((x) => x.resourceType === type).map((x) => x.resourceId); -} - function handleSelectModule(menu: API.GetMenusQueryResultItem) { - const modules1 = - dataButtonTree && - dataButtonTree.value.getCheckedKeys(true).map((x) => { - return { - resourceType: SubModuleType.DataButton, - resourceId: x, - menuId: menu.id, - } as CheckedResourceItem; - }); - - const modules2 = - pageButtonTree && - pageButtonTree.value.getCheckedKeys(true).map((x) => { - return { - resourceType: SubModuleType.PageButton, - resourceId: x, - menuId: menu.id, - } as CheckedResourceItem; - }); - - const modules3 = - dataColumnTree && - dataColumnTree.value.getCheckedKeys(true).map((x) => { - return { - resourceType: SubModuleType.Column, - resourceId: x, - menuId: menu.id, - } as CheckedResourceItem; - }); - - const checkExtends = state.checkedInfo.filter( - (x) => x.menuId !== menu.id && x.menuId !== undefined - ); - - if (modules1 && modules1.length) { - checkExtends.push(...modules1); - } - if (modules2 && modules2.length) { - checkExtends.push(...modules2); - } - if (modules3 && modules3.length) { - checkExtends.push(...modules3); - } - - state.checkedInfo = checkExtends; state.currentMenuId = menu.id; } +function handleModuleCheck(data, params) { + handleCheck(data, params, moduleTree); +} + +function handlePageButtonCheck(data, params) { + handleCheck(data, params, pageButtonTree); +} + +function handleDataButtonCheck(data, params) { + handleCheck(data, params, dataButtonTree); +} + +function handleDataColumnCheck(data, params) { + handleCheck(data, params, dataColumnTree); +} + +function handleCheck(data, params, treeRef: TreeRef) { + const dataMap = {}; + treeEach( + [treeRef.value.store.root], + (node) => (dataMap[node.key] = node), + (node) => node.childNodes + ); + + const uncachedCheckedKeys = params.checkedKeys.filter( + (item) => !['pageButtonAll', 'dataButtonAll', 'dataColumnAll'].includes(item) + ); + const cachedKeys = state.selectedMenuIds.filter( + (item) => !(item in dataMap) && !uncachedCheckedKeys.includes(item) + ); + state.selectedMenuIds = cachedKeys.concat(uncachedCheckedKeys); +} + function handleConfirm() { - const selectedMenuIds = moduleTree.value.getCheckedNodes().map((x) => x.id); - if (state.currentMenuId) { - handleSelectModule(getMenuById(state.currentMenuId)); - } - const resourceIds = state.checkedInfo.map((x) => x.resourceId); - emit('onConfirm', selectedMenuIds, resourceIds); + emit('onConfirm', state.selectedMenuIds); } </script> -- Gitblit v1.9.1