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