From ca8fc597599e8a85288b5d771957bb1bd712e8c7 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 21 三月 2025 09:58:10 +0800 Subject: [PATCH] feat: 接口对接 --- src/views/EnterpriseManage/EnterpriseDetail.vue | 11 src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue | 115 ++++-- src/views/EnterpriseManage/components/ConfigureDialog.vue | 239 ++++++++++++++ src/services/api/typings.d.ts | 184 ++++++++++ src/views/EnterpriseManage/AddOrEditEnterprise.vue | 2 config/config.ts | 10 src/constants/enterprise.ts | 136 ++++++++ src/services/api/index.ts | 4 src/services/api/FlexEnterpriseWoker.ts | 54 +++ src/services/api/User.ts | 11 src/services/api/UserResume.ts | 46 + src/constants/index.ts | 1 src/views/EnterpriseManage/EnterpriseManageList.vue | 203 +++++++---- 13 files changed, 878 insertions(+), 138 deletions(-) diff --git a/config/config.ts b/config/config.ts index 01a16e0..c7364cf 100644 --- a/config/config.ts +++ b/config/config.ts @@ -4,20 +4,20 @@ /** * @description 缃戦〉title */ - title: '涔愰亣淇濅簯鏈嶅姟', + title: '鐏靛伐骞冲彴', errorLog: 'production', - loginFormTitle: '涔愰亣淇濅簯鏈嶅姟鍚庡彴绠$悊绯荤粺', + loginFormTitle: '鐏靛伐骞冲彴鍚庡彴绠$悊绯荤粺', }); type AppType = 'one' | 'rz' | 'jx'; const AppSettingMap = { one: { - title: '涔愰亣淇濅簯鏈嶅姟', - loginFormTitle: '涔愰亣淇濅簯鏈嶅姟', - MenuTitle: '涔愰亣淇濅簯鏈嶅姟', + title: '鐏靛伐骞冲彴', + loginFormTitle: '鐏靛伐骞冲彴', + MenuTitle: '鐏靛伐骞冲彴', }, jx: { title: '姹熻タ淇濋櫓鐞嗚禂鍚庡彴绠$悊绯荤粺', diff --git a/src/constants/enterprise.ts b/src/constants/enterprise.ts new file mode 100644 index 0000000..2baa33d --- /dev/null +++ b/src/constants/enterprise.ts @@ -0,0 +1,136 @@ +export enum EnterpriseConfigureType { + /** + * 閾惰淇℃伅閰嶇疆 + */ + Bank = 1, + /** + * 鐢靛瓙绛鹃厤缃� + */ + Electronic = 2, + /** + * 鐭俊閫氶亾閰嶇疆 + */ + ShortMessage = 3, +} + +export const EnterpriseConfigureTypeText = { + [EnterpriseConfigureType.Bank]: '閾惰淇℃伅閰嶇疆', + [EnterpriseConfigureType.Electronic]: '鐢靛瓙绛鹃厤缃�', + [EnterpriseConfigureType.ShortMessage]: '鐭俊閫氶亾閰嶇疆', +}; + +export enum FlexEnterpriseSettingStatus { + /** + * 鏈厤缃� + */ + NotSetting = -10, + /** + * 宸查厤缃� + */ + IsSetting = 10, +} + +export const FlexEnterpriseSettingStatusText = { + [FlexEnterpriseSettingStatus.NotSetting]: '鏈厤缃�', + [FlexEnterpriseSettingStatus.IsSetting]: '宸查厤缃�', +}; + +export enum FlexEnterpriseStatus { + /** + * 鍐荤粨 + */ + Frozen = -10, + /** + * 姝e父 + */ + Normal = 10, +} + +export const FlexEnterpriseStatusText = { + [FlexEnterpriseStatus.Frozen]: '鍐荤粨', + [FlexEnterpriseStatus.Normal]: '姝e父', +}; + +export enum VerifyStatus { + /** + * 鏈獙璇� + */ + NotVerify = -10, + /** + * 宸查獙璇� + */ + Verify = 10, +} + +export const VerifyStatusText = { + [VerifyStatus.NotVerify]: '鏈獙璇�', + [VerifyStatus.Verify]: '宸查獙璇�', +}; +export const VerifyStatusColor = { + [VerifyStatus.NotVerify]: 'danger', + [VerifyStatus.Verify]: 'success', +}; + +export enum FlexEnterpriseCertificationStatus { + /** + * 鏈璇� + */ + NotCertification = -10, + /** + * 宸茶璇� + */ + HasCertification = 10, +} + +export const FlexEnterpriseCertificationStatusText = { + [FlexEnterpriseCertificationStatus.NotCertification]: '鏈璇�', + [FlexEnterpriseCertificationStatus.HasCertification]: '宸茶璇�', +}; + +export enum MessageChannelEnum { + /** + * 闃块噷浜� + */ + Alipay = 10, + /** + * 缃戞槗 + */ + NetEasy = 20, +} + +export const MessageChannelEnumText = { + [MessageChannelEnum.Alipay]: '闃块噷浜�', + [MessageChannelEnum.NetEasy]: '缃戞槗', +}; + +export enum SignChannelEnum { + /** + * 涓婁笂绛� + */ + BestSign = 10, + /** + * 鏀粯瀹濈數瀛愮 + */ + Alipay = 20, +} + +export const SignChannelEnumText = { + [SignChannelEnum.BestSign]: '涓婁笂绛�', + [SignChannelEnum.Alipay]: '鏀粯瀹濈數瀛愮', +}; + +export enum ChargeTypeEnum { + /** + * 缁勫悎璁¤垂 + */ + Group = 1, + /** + * 涓�鍙d环 + */ + Merge, +} + +export const ChargeTypeEnumText = { + [ChargeTypeEnum.Group]: '缁勫悎璁¤垂', + [ChargeTypeEnum.Merge]: '涓�鍙d环', +}; diff --git a/src/constants/index.ts b/src/constants/index.ts index 303e5a6..8f98d65 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -10,3 +10,4 @@ export * from './role'; export * from './app'; export * from './dic'; +export * from './enterprise'; diff --git a/src/services/api/FlexEnterpriseWoker.ts b/src/services/api/FlexEnterpriseWoker.ts new file mode 100644 index 0000000..9bafeb5 --- /dev/null +++ b/src/services/api/FlexEnterpriseWoker.ts @@ -0,0 +1,54 @@ +/* eslint-disable */ +// @ts-ignore +import { request } from '@/utils/request'; + +/** C绔汉鍛樼鐞嗗垪琛� POST /api/FlexEnterpriseWoker/GetUserClientList */ +export async function getUserClientList( + body: API.GetUserClientForBackInput, + options?: API.RequestConfig +) { + return request<API.GetUserClientForBackOutputPageOutput>( + '/api/FlexEnterpriseWoker/GetUserClientList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** C绔汉鍛樼鐞�--绛剧害璇︽儏 POST /api/FlexEnterpriseWoker/GetUserClientSignList */ +export async function getUserClientSignList( + body: API.GetUserClientSignListInput, + options?: API.RequestConfig +) { + return request<API.UserClientSignListOutputPageOutput>( + '/api/FlexEnterpriseWoker/GetUserClientSignList', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + } + ); +} + +/** C绔汉鍛樼鐞�--鑾峰彇浜哄憳璇︽儏 GET /api/FlexEnterpriseWoker/GetUserDetailForBack */ +export async function getUserDetailForBack( + // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) + params: API.APIgetUserDetailForBackParams, + options?: API.RequestConfig +) { + return request<API.GetUserDetailForBackOutput>('/api/FlexEnterpriseWoker/GetUserDetailForBack', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/src/services/api/User.ts b/src/services/api/User.ts new file mode 100644 index 0000000..603e2e7 --- /dev/null +++ b/src/services/api/User.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +// @ts-ignore +import { request } from '@/utils/request'; + +/** 鑾峰彇涓汉淇℃伅璇︽儏 GET /api/User/GetUserInfo */ +export async function getUserInfo(options?: API.RequestConfig) { + return request<API.UserDto>('/api/User/GetUserInfo', { + method: 'GET', + ...(options || {}), + }); +} diff --git a/src/services/api/UserResume.ts b/src/services/api/UserResume.ts index b10d921..3ec42a4 100644 --- a/src/services/api/UserResume.ts +++ b/src/services/api/UserResume.ts @@ -2,7 +2,15 @@ // @ts-ignore import { request } from '@/utils/request'; -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/UserResume/GetUserResume */ +/** 鏍规嵁鐢ㄦ埛鑾峰彇鏈熷緟鐨勫伐浣� GET /api/UserResume/GetResumeExpectationJob */ +export async function getResumeExpectationJob(options?: API.RequestConfig) { + return request<API.UserResumeExpectationJobOutput>('/api/UserResume/GetResumeExpectationJob', { + method: 'GET', + ...(options || {}), + }); +} + +/** 鏍规嵁鐢ㄦ埛鑾峰彇绠�鍘� GET /api/UserResume/GetUserResume */ export async function getUserResume(options?: API.RequestConfig) { return request<API.MyResumeOutput>('/api/UserResume/GetUserResume', { method: 'GET', @@ -10,7 +18,15 @@ }); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/UserResume/GetUserResumeCertificateDetailById */ +/** 鏍规嵁鐢ㄦ埛鑾峰彇绠�鍘嗗熀纭�淇℃伅 GET /api/UserResume/GetUserResumeBaseInfo */ +export async function getUserResumeBaseInfo(options?: API.RequestConfig) { + return request<API.UserResumeBaseInfoOutput>('/api/UserResume/GetUserResumeBaseInfo', { + method: 'GET', + ...(options || {}), + }); +} + +/** 鏍规嵁璁よ瘉id鑾峰彇璁よ瘉璇︽儏 GET /api/UserResume/GetUserResumeCertificateDetailById */ export async function getUserResumeCertificateDetailById( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetUserResumeCertificateDetailByIdParams, @@ -28,7 +44,7 @@ ); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/UserResume/GetUserResumeCertificateList */ +/** 鏍规嵁鐢ㄦ埛ID鑾峰彇鐢ㄦ埛璁よ瘉淇℃伅 GET /api/UserResume/GetUserResumeCertificateList */ export async function getUserResumeCertificateList(options?: API.RequestConfig) { return request<API.UserResumeCertificateListOutput[]>( '/api/UserResume/GetUserResumeCertificateList', @@ -39,7 +55,7 @@ ); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/UserResume/GetUserResumeDetailInfo */ +/** 鑾峰彇鐢ㄦ埛绠�鍘嗚鎯� GET /api/UserResume/GetUserResumeDetailInfo */ export async function getUserResumeDetailInfo(options?: API.RequestConfig) { return request<API.UserResumeDetailInfoOutput>('/api/UserResume/GetUserResumeDetailInfo', { method: 'GET', @@ -47,7 +63,7 @@ }); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/UserResume/GetUserResumeWorkExperience */ +/** 鏍规嵁鐢ㄦ埛id鑾峰彇鐢ㄦ埛宸ヤ綔缁忓巻 GET /api/UserResume/GetUserResumeWorkExperience */ export async function getUserResumeWorkExperience(options?: API.RequestConfig) { return request<API.UserResumeWorkExperienceOutput>( '/api/UserResume/GetUserResumeWorkExperience', @@ -58,12 +74,12 @@ ); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/UserResume/SaveUserResumeBaseInfo */ +/** 淇濆瓨绠�鍘嗙殑鍩虹淇℃伅 POST /api/UserResume/SaveUserResumeBaseInfo */ export async function saveUserResumeBaseInfo( body: API.SaveUserResumeBaseInfoInput, options?: API.RequestConfig ) { - return request<any>('/api/UserResume/SaveUserResumeBaseInfo', { + return request<number>('/api/UserResume/SaveUserResumeBaseInfo', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -73,12 +89,12 @@ }); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/UserResume/SaveUserResumeCertificate */ +/** 淇濆瓨鐢ㄦ埛鐨勭畝鍘嗚璇佷俊鎭� POST /api/UserResume/SaveUserResumeCertificate */ export async function saveUserResumeCertificate( body: API.SaveUserResumeCertificateInput, options?: API.RequestConfig ) { - return request<any>('/api/UserResume/SaveUserResumeCertificate', { + return request<number>('/api/UserResume/SaveUserResumeCertificate', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -88,12 +104,12 @@ }); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/UserResume/SaveUserResumeDetailInfo */ +/** 淇濆瓨绠�鍘嗚鎯� POST /api/UserResume/SaveUserResumeDetailInfo */ export async function saveUserResumeDetailInfo( body: API.SaveUserResumeDetailInfoInput, options?: API.RequestConfig ) { - return request<any>('/api/UserResume/SaveUserResumeDetailInfo', { + return request<number>('/api/UserResume/SaveUserResumeDetailInfo', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -103,12 +119,12 @@ }); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/UserResume/SaveUserResumeExpectationJob */ +/** 淇濆瓨鐢ㄦ埛鏈熸湜鐨勫矖浣嶄俊鎭� POST /api/UserResume/SaveUserResumeExpectationJob */ export async function saveUserResumeExpectationJob( body: API.SaveUserResumeExpectationJobInput, options?: API.RequestConfig ) { - return request<any>('/api/UserResume/SaveUserResumeExpectationJob', { + return request<number>('/api/UserResume/SaveUserResumeExpectationJob', { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -118,12 +134,12 @@ }); } -/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/UserResume/SaveUserResumeWorkExperience */ +/** 淇濆瓨鐢ㄦ埛宸ヤ綔缁忓巻 POST /api/UserResume/SaveUserResumeWorkExperience */ export async function saveUserResumeWorkExperience( body: API.SaveUserResumeWorkExperienceInput, options?: API.RequestConfig ) { - return request<any>('/api/UserResume/SaveUserResumeWorkExperience', { + return request<number>('/api/UserResume/SaveUserResumeWorkExperience', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/src/services/api/index.ts b/src/services/api/index.ts index 2f434df..ffe8d03 100644 --- a/src/services/api/index.ts +++ b/src/services/api/index.ts @@ -9,6 +9,7 @@ import * as Common from './Common'; import * as Features from './Features'; import * as FlexEnterprise from './FlexEnterprise'; +import * as FlexEnterpriseWoker from './FlexEnterpriseWoker'; import * as FlexTask from './FlexTask'; import * as FlexWorker from './FlexWorker'; import * as IdentityRole from './IdentityRole'; @@ -19,6 +20,7 @@ import * as Profile from './Profile'; import * as SearchSetting from './SearchSetting'; import * as Tenant from './Tenant'; +import * as User from './User'; import * as UserResume from './UserResume'; import * as Version from './Version'; export default { @@ -29,6 +31,7 @@ Common, Features, FlexEnterprise, + FlexEnterpriseWoker, FlexTask, FlexWorker, IdentityRole, @@ -39,6 +42,7 @@ Profile, SearchSetting, Tenant, + User, UserResume, Version, }; diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts index ed47c06..b4ce2de 100644 --- a/src/services/api/typings.d.ts +++ b/src/services/api/typings.d.ts @@ -242,6 +242,10 @@ id: string; } + interface APIgetUserDetailForBackParams { + userId?: string; + } + interface APIgetUserListByPhoneNumberParams { phoneNumber?: string; clientId?: string; @@ -803,6 +807,7 @@ id?: string; aideType?: FlexTaskAideEnum; name?: string; + imageUrl?: string; } type FlexTaskAideEnum = 10 | 20; @@ -847,7 +852,7 @@ type FlexTaskSettleTypeEnum = 10 | 20 | 30; - type FlexTaskWorkerHireEnum = 10 | 20 | 30; + type FlexTaskWorkerHireEnum = 1 | 10 | 20 | 30 | 40; type FlexWorkerEleSignEnum = 10 | 20 | 30; @@ -1196,6 +1201,77 @@ belongType?: number; } + interface GetUserClientForBackInput { + pageModel?: Pagination; + /** 濮撳悕/鎵嬫満/韬唤璇佸彿/瀹㈡埛 */ + searchKeys?: string; + /** 鏈�杩戝綍鐢ㄦ椂闂�--寮�濮� */ + nearlyHireDateTimeBegin?: string; + /** 鏈�杩戝綍鐢ㄦ椂闂�--缁撴潫 */ + nearlyHireDateTimeEnd?: string; + /** 鏈�杩戠绾︽椂闂�--寮�濮� */ + nearlySignDateTimeBegin?: string; + /** 鏈�杩戠绾︽椂闂�--缁撴潫 */ + nearlySignDateTimeEnd?: string; + /** 瀹炲悕鐘舵�� */ + realVerifyStatus?: boolean; + } + + interface GetUserClientForBackOutput { + userId?: string; + userResumeId?: string; + /** 濮撳悕 */ + name?: string; + /** 韬唤璇佸彿 */ + idNumber?: string; + /** 鎵嬫満鍙� */ + contactPhone?: string; + /** 骞撮緞 */ + age?: number; + genderType?: GenderTypeEnum; + /** 甯搁┗鐪佷唤Code */ + residentProvinceCode?: number; + /** 甯搁┗鍩庡競code */ + residentCityCode?: number; + /** 甯搁┗鐪佷唤鍚嶇О */ + residentProvinceName?: string; + /** 甯搁┗鍩庡競鍚嶇О */ + residentCityName?: string; + /** 瀹炲悕鐘舵�� */ + realVerifyStatus?: boolean; + /** 瀹炲悕鏃堕棿 */ + realVerifyTime?: string; + nearlyWorkRecord?: NearlyFlexWorkerRecord; + } + + interface GetUserClientForBackOutputPageOutput { + pageModel?: Pagination; + objectData?: any; + data?: GetUserClientForBackOutput[]; + } + + interface GetUserClientSignListInput { + pageModel?: Pagination; + userId?: string; + } + + interface GetUserDetailForBackOutput { + userId?: string; + userResumeId?: string; + /** 濮撳悕 */ + name?: string; + /** 韬唤璇佸彿 */ + idNumber?: string; + /** 鎵嬫満鍙� */ + contactPhone?: string; + /** 骞撮緞 */ + age?: number; + /** 韬唤璇佹闈� */ + certificateFrontImgUrl?: string; + /** 韬唤璇佸弽闈� */ + certificateBackImgUrl?: string; + } + interface GetWorkerListForBackOutput { userId?: string; /** 濮撳悕 */ @@ -1506,6 +1582,7 @@ resumeCertifiDetail?: UserResumeCertificateDetailOutput; resumeDetailInfo?: UserResumeDetailInfoOutput; resumeWorkExperience?: UserResumeWorkExperienceOutput; + /** 宸ヤ綔璁板綍 */ resumeWorkRecordList?: UserResumeWorkerRecordOutput[]; } @@ -1533,6 +1610,16 @@ interface NameValue { name?: string; value?: string; + } + + interface NearlyFlexWorkerRecord { + taskId?: string; + /** 鏈�杩戝綍鐢ㄦ椂闂� */ + nearlyHireDateTime?: string; + /** 鏈�杩戠绾︽椂闂� */ + nearlySignDateTime?: string; + /** 鎵�灞炲晢鎴� */ + enterpirseName?: string; } interface ObjectExtensionsDto { @@ -1712,6 +1799,13 @@ typeSimple?: string; } + interface RoleDto { + /** 瑙掕壊Id */ + id?: string; + /** 瑙掕壊鍚� */ + name?: string; + } + interface SaveUserResumeBaseInfoInput { name?: string; socialIdentity?: string; @@ -1720,6 +1814,10 @@ residentCityCode?: number; residentProvinceName?: string; residentCityName?: string; + /** 鑱旂郴鐢佃瘽 */ + phoneNumber?: string; + /** 澶村儚 */ + avatarUrl?: string; } interface SaveUserResumeCertificateInput { @@ -1929,6 +2027,30 @@ releaseStatus?: FlexTaskReleaseStatusEnum; } + interface UserClientSignListOutput { + /** 鎵�灞炲晢鎴� */ + enterpirseName?: string; + /** 鎶ュ悕鏃堕棿 */ + applyTime?: string; + enterSignStatus?: FlexWorkerEleSignEnum; + /** 浼佷笟绛剧害鏃堕棿 */ + enterSignTime?: string; + hireStatus?: FlexTaskWorkerHireEnum; + /** 褰曠敤鏃堕棿 */ + hireDateTime?: string; + userSignStatus?: FlexWorkerEleSignEnum; + /** 鐏靛伐绛剧害鏃堕棿 */ + userSignTime?: string; + /** 鐢靛瓙鍚堝悓 */ + contractUrl?: string; + } + + interface UserClientSignListOutputPageOutput { + pageModel?: Pagination; + objectData?: any; + data?: UserClientSignListOutput[]; + } + interface UserData { id?: string; tenantId?: string; @@ -1951,51 +2073,102 @@ items?: UserData[]; } - interface UserResumeBaseInfoOutput { + interface UserDto { + /** 鐢ㄦ埛Id */ + id?: string; + /** 鐧诲綍鐢ㄦ埛鍚嶏紙璐﹀彿锛� */ + userName?: string; + /** 鍚嶇О */ name?: string; + /** 鐢ㄦ埛鎵嬫満鍙� */ phoneNumber?: string; + /** 璐︽埛鏄惁閿佷綇锛堟槸鍚︾鐢級 */ + isLocked?: boolean; + /** 瑙掕壊淇℃伅 */ + roles?: RoleDto[]; + /** 澶囨敞 */ + remark?: string; + /** 缁勭粐鏋舵瀯鍏徃id */ + companyOrgId?: string; + /** 缁勭粐鏋舵瀯閮ㄩ棬id */ + departmentOrgId?: string; + } + + interface UserResumeBaseInfoOutput { + /** 濮撳悕 */ + name?: string; + /** 鐢佃瘽鍙风爜 */ + phoneNumber?: string; + /** 澶村儚 */ avatarUrl?: string; genderType?: GenderTypeEnum; + /** 骞撮緞 */ age?: number; + /** 涓婂矖娆℃暟 */ arrangeCount?: number; + /** 韬唤璇佸彿鐮� */ idNumber?: string; + /** 韬唤 */ socialIdentity?: string; + /** 韬唤鍚嶇О */ socialIdentityName?: string; + /** 瀛﹀巻 */ educationalLevel?: string; + /** 瀛﹀巻鍚嶇О */ educationalLevelName?: string; + /** 甯搁┗鐪佷唤Code */ residentProvinceCode?: number; + /** 甯搁┗鍩庡競code */ residentCityCode?: number; + /** 甯搁┗鐪佷唤鍚嶇О */ residentProvinceName?: string; + /** 甯搁┗鍩庡競鍚嶇О */ residentCityName?: string; } interface UserResumeCertificateDetailOutput { + /** 绠�鍘嗚璇佽鎯匢d */ id?: string; - userResumeId?: string; + /** 鐢ㄦ埛绠�鍘咺d */ + userId?: string; + /** 璁よ瘉绫诲埆Id */ certificateTypeId?: string; + /** 璁よ瘉璇佷欢鍙烽粯璁よ韩浠借瘉 */ certificateNo?: string; + /** 璇佷欢寮�濮嬫椂闂� */ beginTime?: string; + /** 璇佷欢缁撴潫鏃堕棿 */ endTime?: string; + /** 鏄惁姘镐箙 */ isPermanent?: boolean; certificateUnit?: string; + /** 韬唤璇佹闈� */ certificateFrontImgUrl?: string; + /** 韬唤璇佸弽闈� */ certificateBackImgUrl?: string; } interface UserResumeCertificateListOutput { id?: string; + /** 璇佷功Id */ certificateTypeId?: string; + /** 璇佷功鍚嶇О */ certificateTypeName?: string; + /** 宸ヤ綔绠�鍘咺d */ userResumeId?: string; } interface UserResumeDetailInfoOutput { + /** 韬珮 */ height?: string; + /** 浣撻噸 */ weight?: string; + /** 涓汉鐢熸椿鐓� */ lifeCircleImgUrlList?: string[]; } interface UserResumeExpectationJobOutput { + /** 鏈熸湜宀椾綅鍒楄〃 */ jobIdList?: IdNameOutput[]; freeTime?: UserResumeFreeTimeEnum; jobSeekingStatus?: UserResumeJobSeekingStatusEnum; @@ -2006,13 +2179,18 @@ type UserResumeJobSeekingStatusEnum = 1 | 2 | 3; interface UserResumeWorkerRecordOutput { + /** 宸ヤ綔鏃堕棿 */ workTime?: string; + /** 宸ヤ綔鍦扮偣 */ workAddress?: string; + /** 宸ヤ綔鍚嶇О */ workName?: string; } interface UserResumeWorkExperienceOutput { + /** 宸ヤ綔骞撮檺 */ workingSeniority?: string; + /** 宸ヤ綔缁忛獙 */ workExperience?: string; } diff --git a/src/views/EnterpriseManage/AddOrEditEnterprise.vue b/src/views/EnterpriseManage/AddOrEditEnterprise.vue index c506e3f..403484d 100644 --- a/src/views/EnterpriseManage/AddOrEditEnterprise.vue +++ b/src/views/EnterpriseManage/AddOrEditEnterprise.vue @@ -2,7 +2,7 @@ <AddOrEditEnterpriseView emitAddEvent="enterprise:add" emitEditEvent="enterprise:edit" - backRouteName="MyPublishInformationList" + backRouteName="EnterpriseManageList" :isDetail="false" ></AddOrEditEnterpriseView> </template> diff --git a/src/views/EnterpriseManage/EnterpriseDetail.vue b/src/views/EnterpriseManage/EnterpriseDetail.vue new file mode 100644 index 0000000..b563b26 --- /dev/null +++ b/src/views/EnterpriseManage/EnterpriseDetail.vue @@ -0,0 +1,11 @@ +<template> + <AddOrEditEnterpriseView backRouteName="EnterpriseManageList" isDetail /> +</template> + +<script setup lang="ts"> +import AddOrEditEnterpriseView from './components/AddOrEditEnterpriseView.vue'; + +defineOptions({ + name: 'EnterpriseDetail', +}); +</script> diff --git a/src/views/EnterpriseManage/EnterpriseManageList.vue b/src/views/EnterpriseManage/EnterpriseManageList.vue index d7a8dde..28e00da 100644 --- a/src/views/EnterpriseManage/EnterpriseManageList.vue +++ b/src/views/EnterpriseManage/EnterpriseManageList.vue @@ -3,13 +3,10 @@ <AppContainer> <ProTableQueryFilterBar @on-reset="reset"> <template #query> - <QueryFilterItem tip-content="鐘舵��"> + <QueryFilterItem tip-content="閰嶇疆鐘舵��"> <FieldRadio - v-model="extraParamState.status" - :value-enum="[ - { label: '宸查厤缃�', value: true }, - { label: '鏈厤缃�', value: false }, - ]" + v-model="extraParamState.flexEnterpriseSettingStatus" + :value-enum="FlexEnterpriseSettingStatusText" buttonStyle showAllBtn @change="getList()" @@ -17,7 +14,7 @@ </QueryFilterItem> <QueryFilterItem> <SearchInput - v-model="extraParamState.name" + v-model="extraParamState.searchWord" style="width: 200px" placeholder="浼佷笟鍚嶇О/娉曚汉/鑱旂郴浜�" @on-click-search="getList" @@ -29,7 +26,7 @@ <template #btn> <el-button v-if="checkSubModuleItemShow('pageButton', 'addBtn')" - @click="openDialog()" + @click="addOrEditEnterprise()" icon="Plus" type="primary" >鏂板</el-button @@ -39,7 +36,7 @@ <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> </ProTableV2> </AppContainer> - <!-- <AddOrEditSearchSetting v-bind="dialogProps" :typeList="typeList" /> --> + <ConfigureDialog v-bind="dialogProps" /> </LoadingLayout> </template> @@ -54,14 +51,24 @@ QueryFilterItem, useTable, useFormDialog, - UploadUserFile, FieldRadio, } from '@bole-core/components'; import { useAccess, useGlobalEventContext } from '@/hooks'; -import * as searchSettingServices from '@/services/api/SearchSetting'; -import { SearchType, SearchTypeText } from '@/constants'; +import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; +import { + SearchType, + FlexEnterpriseSettingStatusText, + FlexEnterpriseSettingStatus, + FlexEnterpriseCertificationStatusText, + EnterpriseConfigureType, + MessageChannelEnum, + VerifyStatus, + SignChannelEnum, + ChargeTypeEnum, + FlexEnterpriseStatus, +} from '@/constants'; +import ConfigureDialog from './components/ConfigureDialog.vue'; import { OrderInputType, Message } from '@bole-core/core'; -import { convertApi2FormUrl } from '@/utils'; import { useQueryClient } from '@tanstack/vue-query'; import { useSearchSettingType } from '@/hooks'; @@ -70,7 +77,10 @@ }); const operationBtnMap: Record<string, OperationBtnType> = { - editBtn: { emits: { onClick: (role) => openDialog(role) } }, + editBtn: { emits: { onClick: (role) => addOrEditEnterprise(role) } }, + detailBtn: { emits: { onClick: (role) => handleDetail(role) } }, + configBtn: { emits: { onClick: (role) => openDialog(role) } }, + freezeBtn: { emits: { onClick: (role) => handleSetStatus(role) } }, }; const { checkSubModuleItemShow, column, operationBtns } = useAccess({ @@ -87,6 +97,8 @@ getList(paginationState.pageIndex); }); +const router = useRouter(); + const BaseState = { loading: true, }; @@ -94,6 +106,7 @@ const { searchSettingTypeList: typeList } = useSearchSettingType({ searchType: SearchType.IndustryCategory, }); + const state = reactive({ ...BaseState }); onMounted(async () => { @@ -110,23 +123,17 @@ } = useTable( async ({ pageIndex, pageSize }, extraParamState) => { try { - let params: API.GetSearchSettingListInput = { + let params: API.GetFlexEnterpriseInput = { pageModel: { rows: pageSize, page: pageIndex, orderInput: extraParamState.orderInput, }, - name: extraParamState.name, - // belongType: Number(extraParamState.belongType), - searchType: Number(extraParamState.searchType), - status: extraParamState.status, + flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus, + searchWord: extraParamState.searchWord, }; - if (extraParamState.searchType === SearchType.Position) { - params.isRecommend = extraParamState.isRecommend; - params.parentId = extraParamState.parentId; - } - let res = await searchSettingServices.getSearchSettingList(params, { + let res = await flexEnterpriseServices.getFlexEnterpriseList(params, { showLoading: !state.loading, }); return res; @@ -136,35 +143,37 @@ }, { defaultExtraParams: { - name: '', - searchType: SearchType.Identity, - orderInput: [{ property: 'sort', order: OrderInputType.Asc }], - status: '' as any as boolean, - isRecommend: '' as any as boolean, - parentId: '', + searchWord: '', + orderInput: [{ property: 'id', order: OrderInputType.Asc }], + flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, }, - queryKey: ['searchSettingServices/getSearchSettingList'], + queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], columnsRenderProps: { - searchType: { type: 'enum', valueEnum: SearchTypeText }, + settingStatus: { type: 'enum', valueEnum: FlexEnterpriseSettingStatusText }, + certificationStatus: { type: 'enum', valueEnum: FlexEnterpriseCertificationStatusText }, }, } ); -function openDialog(row?: API.GetSearchSettingList) { +function openDialog(row?: API.FlexEnterpriseDto) { if (row) { handleEdit({ id: row.id, - searchType: extraParamState.searchType, - name: row.name, - sort: row.sort, - status: row.status, - src: row.src?.length ? [convertApi2FormUrl(row.src)] : [], - parentId: row.parentId ?? '', + flexEnterpirseId: row.id, + openBank: row.cityName, + openBranchBank: row.cityName, + bankAccount: row.cityName, + verifyStatus: VerifyStatus.NotVerify, + signChannel: SignChannelEnum.Alipay, + chargeType: ChargeTypeEnum.Group, + realVerifyCost: 0, + signCost: 0, + mergeSignCost: 0, + messageCost: 0, + messageChannel: MessageChannelEnum.Alipay, }); } else { - handleAdd({ - searchType: extraParamState.searchType, - }); + handleAdd({}); } } @@ -172,57 +181,101 @@ onConfirm: handleAddOrEdit, defaultFormParams: { id: '', - searchType: SearchType.Identity, - name: '', - sort: 0, - status: true, - src: [] as UploadUserFile[], - parentId: '', + flexEnterpirseId: '', + openBank: '', + openBranchBank: '', + bankAccount: '', + verifyStatus: '' as any as VerifyStatus, + signChannel: '' as any as SignChannelEnum, + chargeType: '' as any as ChargeTypeEnum, + realVerifyCost: 0, + signCost: 0, + mergeSignCost: 0, + messageCost: 0, + messageChannel: '' as any as MessageChannelEnum, }, }); -async function handleAddOrEdit() { +async function handleAddOrEdit(type: EnterpriseConfigureType) { try { - let params: API.CreateOrEditSearchInput = { - searchType: extraParamState.searchType, - name: editForm.name, - sort: editForm.sort, - status: editForm.status, - src: editForm.src?.[0]?.path ?? '', - parentId: editForm.parentId ?? '', - }; - if (editForm.id) { - params.id = editForm.id; + let res; + if (type === EnterpriseConfigureType.Bank) { + res = await createOrEditFlexEnterpriseBankSetting(); } - let res = await searchSettingServices.createOrEditSearchSetting(params); + if (type === EnterpriseConfigureType.Electronic) { + res = await createOrEditFlexEnterpriseSignSetting(); + } + if (type === EnterpriseConfigureType.ShortMessage) { + res = await createOrEditFlexEnterpriseMessageSetting(); + } if (res) { Message.successMessage('鎿嶄綔鎴愬姛'); getList(paginationState.pageIndex); dialogState.dialogVisible = false; - updateCategoryMenu(); } } catch (error) {} } -function updateCategoryMenu() { - queryClient.invalidateQueries({ - queryKey: [ - 'searchSettingServices/getTypeSearchSettingList', - { searchType: extraParamState.searchType, belongType: null }, - ], - }); +async function createOrEditFlexEnterpriseBankSetting() { + try { + let params: API.CreateOrEditFlexEnterpriseBankInput = { + id: editForm.id, + openBank: editForm.openBank, + openBranchBank: editForm.openBranchBank, + bankAccount: editForm.bankAccount, + verifyStatus: editForm.verifyStatus, + flexEnterpirseId: editForm.flexEnterpirseId, + }; + return await flexEnterpriseServices.createOrEditFlexEnterpriseBankSetting(params); + } catch (error) {} +} +async function createOrEditFlexEnterpriseSignSetting() { + try { + let params: API.CreateOrEditFlexEnterpriseSignSettingInput = { + id: editForm.id, + flexEnterpirseId: editForm.flexEnterpirseId, + signChannel: editForm.signChannel, + chargeType: editForm.chargeType, + realVerifyCost: editForm.realVerifyCost, + signCost: editForm.signCost, + mergeSignCost: editForm.mergeSignCost, + }; + return await flexEnterpriseServices.createOrEditFlexEnterpriseSignSetting(params); + } catch (error) {} +} +async function createOrEditFlexEnterpriseMessageSetting() { + try { + let params: API.CreateOrEditFlexEnterpriseMessageSettingInput = { + id: editForm.id, + flexEnterpirseId: editForm.flexEnterpirseId, + messageChannel: editForm.messageChannel, + messageCost: editForm.messageCost, + }; + return await flexEnterpriseServices.createOrEditFlexEnterpriseMessageSetting(params); + } catch (error) {} } -async function setCategoryVis(row: API.GetSearchSettingList) { +async function handleSetStatus(row: API.FlexEnterpriseDto) { try { - let params: API.EnableSearchSettingInput = { + let params: API.SetFlexEnterpriseStatusInput = { id: row.id, - status: !row.status, + status: + row.status === FlexEnterpriseStatus.Frozen + ? FlexEnterpriseStatus.Normal + : FlexEnterpriseStatus.Frozen, }; - let res = await searchSettingServices.enableSearchSetting(params); - updateCategoryMenu(); - getList(paginationState.pageIndex); - return !!res; + let res = await flexEnterpriseServices.setFlexEnterpriseStatus(params); + if (res) { + Message.successMessage('鎿嶄綔鎴愬姛'); + getList(paginationState.pageIndex); + } } catch (error) {} } + +function addOrEditEnterprise(row?: API.FlexEnterpriseDto) { + router.push({ name: 'AddOrEditEnterprise', params: { id: row?.id ?? '' } }); +} +function handleDetail(row: API.FlexEnterpriseDto) { + router.push({ name: 'EnterpriseDetail', params: { id: row?.id ?? '' } }); +} </script> diff --git a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue index 2d5ee59..bdc92b9 100644 --- a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue +++ b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue @@ -5,9 +5,9 @@ <ProForm :model="form" :rules="rules" ref="formRef" label-width="120px" :is-read="isDetail"> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="浼佷笟鍚嶇О:" prop="name" required> + <ProFormItemV2 label="浼佷笟鍚嶇О:" prop="enterpriseName"> <ProFormText - v-model.trim="form.name" + v-model.trim="form.enterpriseName" :maxlength="30" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" /> @@ -16,9 +16,9 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="娉曚汉濮撳悕:" prop="name" required> + <ProFormItemV2 label="娉曚汉濮撳悕:" prop="legalPersonName"> <ProFormText - v-model.trim="form.name" + v-model.trim="form.legalPersonName" :maxlength="30" placeholder="璇疯緭鍏ユ硶浜哄鍚�" /> @@ -27,9 +27,9 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="娉曚汉韬唤璇佸彿:" prop="name" required> + <ProFormItemV2 label="娉曚汉韬唤璇佸彿:" prop="legalPersonIdNumber"> <ProFormText - v-model.trim="form.name" + v-model.trim="form.legalPersonIdNumber" :maxlength="30" placeholder="璇疯緭鍏ユ硶浜鸿韩浠借瘉鍙�" /> @@ -48,9 +48,9 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="鎵�鍦ㄧ渷浠�:" prop="name" required> + <ProFormItemV2 label="鎵�鍦ㄧ渷浠�:" prop="proviceName"> <ProFormText - v-model.trim="form.name" + v-model.trim="form.proviceName" :maxlength="30" placeholder="璇疯緭鍏ユ墍鍦ㄧ渷浠�" /> @@ -59,21 +59,23 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="鎵�灞炶涓�:" prop="name" required> + <ProFormItemV2 label="鎵�灞炶涓�:" prop="belongIndustryType"> <ProFormSelect placeholder="璇烽�夋嫨鎵�灞炶涓�" :value-enum="typeList" + enum-value-key="id" + enum-label-key="name" clearable - v-model="form.name" + v-model="form.belongIndustryType" ></ProFormSelect> </ProFormItemV2> </ProFormColItem> </ProFormCol> <ProFormCol> <ProFormColItem :span="12"> - <ProFormItemV2 label="鎵�鍦ㄥ煄甯�:" prop="name" required> + <ProFormItemV2 label="鎵�鍦ㄥ煄甯�:" prop="cityName"> <ProFormText - v-model.trim="form.name" + v-model.trim="form.cityName" :maxlength="30" placeholder="璇疯緭鍏ユ墍鍦ㄥ煄甯�" /> @@ -82,9 +84,9 @@ </ProFormCol> <ProFormCol> <ProFormColItem :span="24"> - <ProFormItemV2 label="涓昏惀涓氬姟:" prop="name"> + <ProFormItemV2 label="涓昏惀涓氬姟:" prop="cityName"> <ProFormTextArea - v-model="form.name" + v-model="form.cityName" maxlength="200" :rows="6" show-word-limit @@ -136,6 +138,28 @@ </ProFormCol> </ProForm> </ChunkCell> + <ChunkCell title="璐﹀彿淇℃伅"> + <ProForm + :model="form" + :rules="rules" + ref="accountFormRef" + label-width="140px" + :scroll-to-error="false" + :is-read="isDetail" + > + <ProFormCol> + <ProFormColItem :span="12"> + <ProFormItemV2 label="璐﹀彿:" prop="contact"> + <ProFormText v-model.trim="form.contact" :maxlength="30" placeholder="璇疯緭鍏ヨ处鍙�" /> + </ProFormItemV2> + </ProFormColItem> + </ProFormCol> + <div class="chuck-add-or-edit-actions"> + <el-button @click="handleBack">杩斿洖</el-button> + <el-button v-if="!isDetail" type="primary" @click="handleSubmit">纭</el-button> + </div> + </ProForm> + </ChunkCell> </AppScrollContainer> </LoadingLayout> </template> @@ -154,7 +178,7 @@ } from '@bole-core/components'; import { FormRules, FormInstance } from 'element-plus'; import { SearchType } from '@/constants'; -import * as searchSettingServices from '@/services/api/SearchSetting'; +import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; import { useRouteView, useGlobalEventContext, GlobalEvent, useSearchSettingType } from '@/hooks'; import _ from 'lodash'; import { validateFormList, filterCN } from '@/utils'; @@ -175,7 +199,7 @@ id: '', emitAddEvent: 'enterprise:add', emitEditEvent: 'enterprise:edit', - backRouteName: '', + backRouteName: 'EnterpriseManageList', }); const route = useRoute(); @@ -189,8 +213,13 @@ const form = reactive({ id: '', - name: '', + enterpriseName: '', + legalPersonName: '', + legalPersonIdNumber: '', societyCreditCode: '', + proviceName: '', + cityName: '', + belongIndustryType: '', contact: '', contactPhone: '', email: '', @@ -214,16 +243,11 @@ const formRef = ref<FormInstance>(); const settingFormRef = ref<FormInstance>(); +const accountFormRef = ref<FormInstance>(); const rules = reactive<FormRules>({ - name: [{ required: true, message: '璇疯緭鍏ヤ緵搴斿晢鍚嶇О', trigger: 'blur' }], - societyCreditCode: [{ required: true, message: '璇疯緭鍏ョ粺涓�淇$敤浠g爜', trigger: 'blur' }], - categoryType: [{ required: true, message: '璇烽�夋嫨琛屼笟閰嶅', trigger: 'change' }], - areaList: [{ required: true, message: '璇烽�夋嫨鎵�鍦ㄥ湴鍖�', trigger: 'change', type: 'array' }], - companyAddress: [{ required: true, message: '璇疯緭鍏ュ叕鍙稿湴鍧�', trigger: 'blur' }], + enterpriseName: [{ required: true, message: '璇疯緭鍏ヤ紒涓氬悕绉�', trigger: 'blur' }], contact: [{ required: true, message: '璇疯緭鍏ヨ仈绯讳汉', trigger: 'blur' }], - suppierLevel: [{ required: true, message: '璇烽�夋嫨渚涘簲鍟嗙瓑绾�', trigger: 'change' }], - // suppierType: [{ required: true, message: '璇烽�夋嫨渚涘簲鍟嗙被鍨�', trigger: 'change' }], contactPhone: [ { required: true, message: '璇疯緭鍏ヨ仈绯荤數璇�', trigger: 'blur' }, { message: '璇疯緭鍏ユ纭殑鑱旂郴鐢佃瘽', trigger: 'blur', pattern: BoleRegExp.RegPhoneNumber }, @@ -232,27 +256,40 @@ async function handleSubmit() { try { - const valid = await validateFormList([formRef.value, settingFormRef.value]); + const valid = await validateFormList([ + formRef.value, + settingFormRef.value, + accountFormRef.value, + ]); if (valid) { - handleCreateOrEditInsureSupplier(); + handleCreateOrEditFlexEnterprise(); } } catch (error) {} } -async function handleCreateOrEditInsureSupplier() { +async function handleCreateOrEditFlexEnterprise() { try { - // let params: API.CreateOrEditSearchInput = { - // name: form.name, - // }; - // if (isEdit.value) { - // params.id = props.id; - // } - // let res = await searchSettingServices.createOrEditSearchSetting(params); - // if (res) { - // Message.successMessage(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛'); - // eventContext.emit(isEdit ? 'enterprise:edit' : 'enterprise:add'); - // handleBack(); - // } + let params: API.CreateOrEditFlexEnterpriseInput = { + enterpriseName: form.enterpriseName, + legalPersonName: form.legalPersonName, + legalPersonIdNumber: form.legalPersonIdNumber, + societyCreditCode: form.societyCreditCode, + proviceName: form.proviceName, + cityName: form.cityName, + belongIndustryType: form.belongIndustryType, + contact: form.contact, + contactPhone: form.contactPhone, + // email: form.email, + }; + if (isEdit.value) { + params.id = props.id; + } + let res = await flexEnterpriseServices.createOrEditFlexEnterprise(params); + if (res) { + Message.successMessage(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛'); + eventContext.emit(isEdit ? 'enterprise:edit' : 'enterprise:add'); + handleBack(); + } } catch (error) {} } diff --git a/src/views/EnterpriseManage/components/ConfigureDialog.vue b/src/views/EnterpriseManage/components/ConfigureDialog.vue new file mode 100644 index 0000000..c91035b --- /dev/null +++ b/src/views/EnterpriseManage/components/ConfigureDialog.vue @@ -0,0 +1,239 @@ +<template> + <ProDialog title="閰嶇疆" v-model="innerVisible" @close="onDialogClose" destroy-on-close draggable> + <ProForm :model="innerForm" ref="dialogForm" label-width="100px"> + <ProFormItemV2 label="" prop="enterpriseConfigureType" label-width="0"> + <ProFormRadio + v-model="enterpriseConfigureType" + :value-enum="EnterpriseConfigureTypeText" + buttonStyle + /> + </ProFormItemV2> + <template v-if="enterpriseConfigureType === EnterpriseConfigureType.Bank"> + <ProFormItemV2 label="寮�鎴锋�昏:" prop="openBank"> + <ProFormText + v-model.trim="innerForm.openBank" + placeholder="璇疯緭鍏ュ紑鎴锋�昏" + :maxlength="40" + /> + </ProFormItemV2> + <ProFormItemV2 label="寮�鎴锋敮琛�:" prop="openBranchBank"> + <ProFormText + v-model.trim="innerForm.openBranchBank" + placeholder="璇疯緭鍏ュ紑鎴锋敮琛�" + :maxlength="40" + /> + </ProFormItemV2> + <ProFormItemV2 + label="閾惰璐︽埛:" + prop="bankAccount" + :check-rules="[ + { message: '璇疯緭鍏ラ摱琛岃处鎴�' }, + { message: '閾惰璐︽埛浠呮敮鎸佹暟瀛�', pattern: BoleRegExp.RegNumber }, + ]" + > + <ProFormText v-model.trim="innerForm.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" /> + </ProFormItemV2> + <ProFormItemV2 label="閾惰璐︽埛:" prop="verifyStatus"> + {{ VerifyStatusText[innerForm.verifyStatus] }} + <el-button style="margin-left: 40px" type="primary" link @click="handleCheckBankAccount" + >鏍¢獙</el-button + > + </ProFormItemV2> + </template> + <template v-if="enterpriseConfigureType === EnterpriseConfigureType.Electronic"> + <div class="configure-dialog-form-title">閫氶亾閰嶇疆</div> + <ProFormItemV2 + label="鍚嶇О:" + prop="signChannel" + :checkRules="[{ message: '璇烽�夋嫨鐢靛瓙绛鹃�氶亾' }]" + > + <ProFormSelect + v-model="form.signChannel" + :valueEnum="SignChannelEnumText" + placeholder="璇烽�夋嫨鐢靛瓙绛鹃�氶亾" + > + </ProFormSelect> + </ProFormItemV2> + <div class="configure-dialog-form-title">璐圭敤閰嶇疆</div> + <ProFormItemV2 + label="璁¤垂鏂瑰紡:" + prop="chargeType" + :checkRules="[{ message: '璇烽�夋嫨璁¤垂鏂瑰紡' }]" + > + <ProFormRadio + :button-style="false" + v-model="innerForm.chargeType" + :value-enum="ChargeTypeEnumText" + /> + </ProFormItemV2> + <template v-if="innerForm.chargeType === ChargeTypeEnum.Group"> + <ProFormItemV2 label="瀹炲悕璐圭敤:" prop="realVerifyCost"> + <ProFormInputNumber + :controls="false" + v-model="innerForm.realVerifyCost" + placeholder="璇疯緭鍏�" + unit="鍏�/鏉�" + /> + </ProFormItemV2> + <ProFormItemV2 label="绛剧害璐圭敤:" prop="signCost"> + <ProFormInputNumber + :controls="false" + v-model="innerForm.signCost" + placeholder="璇疯緭鍏�" + unit="鍏�/浠�" + /> + </ProFormItemV2> + </template> + <template v-if="innerForm.chargeType === ChargeTypeEnum.Merge"> + <ProFormItemV2 label="缁熶竴鐢靛瓙绛�:" prop="mergeSignCost"> + <ProFormInputNumber + :controls="false" + v-model="innerForm.mergeSignCost" + placeholder="璇疯緭鍏�" + unit="鍏�/浠�" + /> + </ProFormItemV2> + </template> + </template> + <template v-if="enterpriseConfigureType === EnterpriseConfigureType.ShortMessage"> + <div class="configure-dialog-form-title">閫氶亾閰嶇疆</div> + <ProFormItemV2 + label="鍚嶇О:" + prop="messageChannel" + :checkRules="[{ message: '璇烽�夋嫨鐭俊閫氶亾' }]" + > + <ProFormSelect + v-model="form.messageChannel" + :valueEnum="MessageChannelEnumText" + placeholder="璇烽�夋嫨鐭俊閫氶亾" + > + </ProFormSelect> + </ProFormItemV2> + <div class="configure-dialog-form-title">璐圭敤閰嶇疆</div> + <ProFormItemV2 label="鐭俊璐圭敤:" prop="messageCost"> + <ProFormInputNumber + :controls="false" + v-model="innerForm.messageCost" + placeholder="璇疯緭鍏�" + unit="鍏�/鏉�" + /> + </ProFormItemV2> + </template> + </ProForm> + <template #footer> + <span class="dialog-footer"> + <el-button @click="emit('onCancel')">鍙� 娑�</el-button> + <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button> + </span> + </template> + </ProDialog> +</template> + +<script setup lang="ts"> +import { FormInstance } from 'element-plus'; +import { + ProDialog, + ProForm, + ProFormItemV2, + ProFormText, + ProFormRadio, + ProFormInputNumber, + ProFormSelect, +} from '@bole-core/components'; +import { BoleRegExp } from '@bole-core/core'; +import { + EnterpriseConfigureType, + EnterpriseConfigureTypeText, + ChargeTypeEnum, + ChargeTypeEnumText, + SignChannelEnum, + SignChannelEnumText, + VerifyStatusText, + VerifyStatusColor, + VerifyStatus, + MessageChannelEnum, + MessageChannelEnumText, +} from '@/constants'; + +defineOptions({ + name: 'ConfigureDialog', +}); + +type Props = { + modelValue: boolean; + form?: { + openBank: string; + openBranchBank: string; + bankAccount: string; + verifyStatus: VerifyStatus; + signChannel: SignChannelEnum; + chargeType: ChargeTypeEnum; + realVerifyCost: number; + signCost: number; + mergeSignCost: number; + messageCost: number; + messageChannel: MessageChannelEnum; + }; +}; + +const props = withDefaults(defineProps<Props>(), { + modelValue: false, +}); + +const enterpriseConfigureType = ref<EnterpriseConfigureType>(EnterpriseConfigureType.Bank); + +const emit = defineEmits<{ + (e: 'update:modelValue', value: boolean): void; + (e: 'update:form', value: Props['form']): void; + (e: 'onConfirm', value: EnterpriseConfigureType): void; + (e: 'onCancel'): void; +}>(); + +const dialogForm = ref<FormInstance>(); + +const innerVisible = computed({ + get() { + return props.modelValue; + }, + set(val) { + emit('update:modelValue', val); + }, +}); + +const innerForm = computed({ + get() { + return props.form; + }, + set(val) { + emit('update:form', val); + }, +}); + +function handleCheckBankAccount() {} + +function onDialogClose() { + if (!dialogForm.value) return; + dialogForm.value.resetFields(); +} + +function handleConfirm() { + if (!dialogForm.value) return; + dialogForm.value.validate((valid) => { + if (valid) { + emit('onConfirm', enterpriseConfigureType.value); + } else { + return; + } + }); +} +</script> +<style lang="scss" scoped> +@use '@/style/common.scss' as *; + +.configure-dialog-form-title { + margin-bottom: 10px; + font-size: 15px; + font-weight: bold; + line-height: 36px; +} +</style> -- Gitblit v1.9.1