From 1703be93b291e4e9e380b139d236cbd9096f929b Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 20 二月 2025 13:36:01 +0800
Subject: [PATCH] feat: enterprise

---
 src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue |  268 ++++++++++++++++++++++
 src/hooks/useEvent.ts                                             |    2 
 package.json                                                      |    2 
 src/views/EnterpriseManage/AddOrEditEnterprise.vue                |   24 ++
 src/views/EnterpriseManage/EnterpriseManageList.vue               |  228 +++++++++++++++++++
 pnpm-lock.yaml                                                    |  190 ++++++++++-----
 6 files changed, 643 insertions(+), 71 deletions(-)

diff --git a/package.json b/package.json
index 2446e0b..54ec92a 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
   "dependencies": {
     "@bole-12333/chat-kit": "latest",
     "@bole-12333/customer-chat": "latest",
-    "@bole-core/components": "^1.2.28",
+    "@bole-core/components": "latest",
     "@bole-core/core": "latest",
     "@bole-core/pretty-layout": "latest",
     "@bole-core/sass-utils": "latest",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ccc3c7b..01f3fbb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,5 +1,9 @@
 lockfileVersion: '6.0'
 
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false
+
 overrides:
   vue: 3.5.11
 
@@ -16,8 +20,8 @@
     specifier: latest
     version: 1.0.3(@bole-12333/chat-kit@1.0.1)(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(dayjs@1.11.6)(vue@3.5.11)
   '@bole-core/components':
-    specifier: ^1.2.28
-    version: 1.2.28(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11)
+    specifier: latest
+    version: 1.3.2(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11)
   '@bole-core/core':
     specifier: latest
     version: 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
@@ -2123,7 +2127,7 @@
     peerDependencies:
       '@tencentcloud/chat-uikit-engine': '*'
       lodash: '*'
-      vue: '*'
+      vue: 3.5.11
     dependencies:
       '@tencentcloud/chat-uikit-engine': 2.4.0(react-native@0.76.5)(react@19.0.0)
       lodash: 4.17.21
@@ -2144,7 +2148,7 @@
       '@tiptap/pm': ^2.0.0-beta.220
       '@tiptap/suggestion': ^2.0.0-beta.220
       dayjs: '*'
-      vue: '*'
+      vue: 3.5.11
     dependencies:
       '@bole-12333/chat-kit': 1.0.1(@tencentcloud/chat-uikit-engine@2.4.0)(lodash@4.17.21)(vue@3.5.11)
       '@tiptap/core': 2.1.13(@tiptap/pm@2.1.13)
@@ -2160,8 +2164,8 @@
       vue: 3.5.11(typescript@4.8.4)
     dev: false
 
-  /@bole-core/components@1.2.28(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11):
-    resolution: {integrity: sha512-Gh7gBf8vl+L2/Ph55NqRcVy2CaWRVGYZhyUo0H9Ela61B9hV2ALz5B95Km+jbvMdhl4rr5b/gVh6a/3DhGTv7A==}
+  /@bole-core/components@1.3.2(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11):
+    resolution: {integrity: sha512-sMCgoaKtJi3nPP3MrMx5cs0IjI0Tbes3YJF1AHN3TItR549aYc+vb+mkU34MjWh7EzqTE40htPxJueAGT6tMWg==}
     peerDependencies:
       '@bole-core/core': '*'
       '@bole-core/sass-utils': '*'
@@ -2177,7 +2181,7 @@
       senin-help: '*'
       senin-vue: '*'
       video.js: '*'
-      vue: '*'
+      vue: 3.5.11
       vue-component-type-helpers: ^2.1.6
     dependencies:
       '@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
@@ -2210,7 +2214,7 @@
       jszip: '*'
       lodash: '*'
       senior-request: '*'
-      vue: '*'
+      vue: 3.5.11
       vue-router: '*'
       xlsx: '*'
       xlsx-style: '*'
@@ -2243,7 +2247,7 @@
       path-browserify: '*'
       path-to-regexp: '*'
       pinia: '*'
-      vue: '*'
+      vue: 3.5.11
       vue-router: '*'
     dependencies:
       '@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5)
@@ -2280,7 +2284,7 @@
     resolution: {integrity: sha512-33Cfr0zjbc3Dd8d5b1IgzXRAgXH0c2Gv19VI4snS25V/x9Z41eg769tC+Us1x+vqgQQhgD5YUjLnkpkrQfeMSw==}
     peerDependencies:
       qrcode: ^1.5.0
-      vue: ^3.0.0
+      vue: 3.5.11
     dependencies:
       qrcode: 1.5.4
       vue: 3.5.11(typescript@4.8.4)
@@ -2928,7 +2932,7 @@
   /@element-plus/icons-vue@2.3.1(vue@3.5.11):
     resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
     peerDependencies:
-      vue: ^3.2.0
+      vue: 3.5.11
     dependencies:
       vue: 3.5.11(typescript@4.8.4)
     dev: false
@@ -3288,7 +3292,7 @@
   /@iconify/vue@4.0.0(vue@3.5.11):
     resolution: {integrity: sha512-73z81Yf2HISfehu3qvN9GqL1OnUO7wEMKkiFwVGJ2pqAdGCR8FrVylhRhka+6U+gFLlng0ynnT20svk3jJYwow==}
     peerDependencies:
-      vue: '>=3'
+      vue: 3.5.11
     dependencies:
       '@iconify/types': 2.0.0
       vue: 3.5.11(typescript@4.8.4)
@@ -4042,7 +4046,7 @@
     dependencies:
       '@babel/core': 7.25.7
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
     transitivePeerDependencies:
       - supports-color
     dev: false
@@ -4055,7 +4059,7 @@
       postcss-syntax: '>=0.36.2'
     dependencies:
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
       remark: 13.0.0
       unist-util-find-all-after: 3.0.2
     transitivePeerDependencies:
@@ -4081,7 +4085,7 @@
     resolution: {integrity: sha512-QzCQ94g2oZQcEfI4nfqa6Qr3aFXtXiEH17Jho+QFl73c7epqsWNcyP3ovF1fgJz5jEOE5OYtwgkoaRKIRaSigg==}
     peerDependencies:
       '@vue/composition-api': ^1.1.2
-      vue: ^2.5.0 || ^3.0.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -4093,25 +4097,39 @@
       vue-demi: 0.13.11(vue@3.5.11)
     dev: false
 
-  /@tencentcloud/call-uikit-vue2.6@3.3.9(react-native@0.76.5)(react@19.0.0)(vue@3.5.11):
-    resolution: {integrity: sha512-EWXc+wqGXlWSmkR/ucKdwPpe+tOXwtYDL2wUD3C/XW4pmKldtxRIIWIzDzo9upPTeojZMfIIoOC/che7wwE9KQ==}
+  /@tencentcloud/call-engine-js@2.9.0(react-native@0.76.5)(react@19.0.0):
+    resolution: {integrity: sha512-djDZ8z1ZGmyDrcoMvEIb7fdJiuXrwkT1N78A/Cbwo1ufBh6eFN9BSHqrGW1jRzlmpTokNHPSuAoJ3OhKWKX4DQ==}
     dependencies:
+      '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
+      core-js: 3.38.1
+      eventemitter3: 4.0.7
+      rtc-detect: 0.0.5
+      trtc-cloud-js-sdk: 2.8.7
+      tuikit-logger: 0.0.4-beta.1
+    transitivePeerDependencies:
+      - react
+      - react-native
+    dev: false
+
+  /@tencentcloud/call-uikit-vue2.6@4.0.0(react-native@0.76.5)(react@19.0.0)(vue@3.5.11):
+    resolution: {integrity: sha512-dY1S13vCPgU3/VG4I7X52QPisrVFZ1dDQUI5sPjr9l8C1U24maCwm43S7e/joiAT/VpN+CcIY5GHKkooMPndAg==}
+    dependencies:
+      '@tencentcloud/call-engine-js': 2.9.0(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
       '@vue/composition-api': 1.7.2(vue@3.5.11)
-      tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
     transitivePeerDependencies:
       - react
       - react-native
       - vue
     dev: false
 
-  /@tencentcloud/call-uikit-vue2@3.3.9(react-native@0.76.5)(react@19.0.0):
-    resolution: {integrity: sha512-xAa1eQGoYj6PKoaSLxNXHPXTO5A/ld8A5Oy9Ps3qjEQWaOIkei8cqJfRX5tUJiQSeNJAxME/GrqLueIARshnTg==}
+  /@tencentcloud/call-uikit-vue2@4.0.0(react-native@0.76.5)(react@19.0.0):
+    resolution: {integrity: sha512-RcBaH1xgdtOCu/gHtQL3G+BDzjPQyx5uGt6r3ekE/GoIGVjXc7TIJllEQlMNexQ2GoXf4RoIUNB5dWBMB1Q1Hw==}
     dependencies:
+      '@tencentcloud/call-engine-js': 2.9.0(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
-      tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
     transitivePeerDependencies:
       - react
       - react-native
@@ -4127,12 +4145,12 @@
       - react-native
     dev: false
 
-  /@tencentcloud/call-uikit-vue@3.3.9(react-native@0.76.5)(react@19.0.0):
-    resolution: {integrity: sha512-fFwQSAU+PVqantxbabRZa268BBBcv+hIX265Ag3ogYcrKq/hEo8XyH7nkjZL8wkQ2hFvnkwUgMMLXVeAgyMsng==}
+  /@tencentcloud/call-uikit-vue@4.0.0(react-native@0.76.5)(react@19.0.0):
+    resolution: {integrity: sha512-FfxugHiCEEtO75NV5UdNCPTpRXEChBNqfZy4M0NL4TbrGPob8LR10//8yPvaCQtm6pSe9NGvdKf3vJ2vg+xoKQ==}
     dependencies:
+      '@tencentcloud/call-engine-js': 2.9.0(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/chat': 3.5.2(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
-      tuicall-engine-webrtc: 3.1.6(react-native@0.76.5)(react@19.0.0)
     transitivePeerDependencies:
       - react
       - react-native
@@ -4162,9 +4180,9 @@
       '@tiptap/pm': ^2.0.0-beta.220
       '@tiptap/suggestion': ^2.0.0-beta.220
     dependencies:
-      '@tencentcloud/call-uikit-vue': 3.3.9(react-native@0.76.5)(react@19.0.0)
-      '@tencentcloud/call-uikit-vue2': 3.3.9(react-native@0.76.5)(react@19.0.0)
-      '@tencentcloud/call-uikit-vue2.6': 3.3.9(react-native@0.76.5)(react@19.0.0)(vue@3.5.11)
+      '@tencentcloud/call-uikit-vue': 4.0.0(react-native@0.76.5)(react@19.0.0)
+      '@tencentcloud/call-uikit-vue2': 4.0.0(react-native@0.76.5)(react@19.0.0)
+      '@tencentcloud/call-uikit-vue2.6': 4.0.0(react-native@0.76.5)(react@19.0.0)(vue@3.5.11)
       '@tencentcloud/chat-uikit-engine': 2.4.0(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/tui-core': 2.4.0(react-native@0.76.5)(react@19.0.0)
       '@tencentcloud/tui-customer-service-plugin': 2.2.6(@tencentcloud/tui-core@2.4.0)(vue@3.5.11)
@@ -4235,7 +4253,7 @@
     peerDependencies:
       '@tencentcloud/tui-core': latest
       '@vue/composition-api': ^1.0.0-rc.1
-      vue: ^2.0.0 || >=3.0.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -5048,7 +5066,7 @@
     peerDependencies:
       '@types/video.js': 7.x
       video.js: 7.x
-      vue: 3.x
+      vue: 3.5.11
     dependencies:
       '@types/video.js': 7.3.49
       video.js: 7.20.3
@@ -5114,7 +5132,7 @@
     engines: {node: ^18.0.0 || >=20.0.0}
     peerDependencies:
       vite: ^5.0.0
-      vue: ^3.0.0
+      vue: 3.5.11
     dependencies:
       '@babel/core': 7.25.7
       '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.25.7)
@@ -5130,7 +5148,7 @@
     engines: {node: ^18.0.0 || >=20.0.0}
     peerDependencies:
       vite: ^5.0.0
-      vue: ^3.2.25
+      vue: 3.5.11
     dependencies:
       vite: 5.4.8(@types/node@18.7.18)(sass@1.55.0)(terser@5.34.1)
       vue: 3.5.11(typescript@4.8.4)
@@ -5278,7 +5296,7 @@
   /@vue/composition-api@1.7.2(vue@3.5.11):
     resolution: {integrity: sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==}
     peerDependencies:
-      vue: '>= 2.5 < 2.7'
+      vue: 3.5.11
     dependencies:
       vue: 3.5.11(typescript@4.8.4)
     dev: false
@@ -5406,7 +5424,7 @@
     resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==}
     peerDependencies:
       '@vue/composition-api': ^1.1.0
-      vue: ^2.6.0 || ^3.2.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -5447,7 +5465,7 @@
     resolution: {integrity: sha512-cAZqXexLX6xo+H1N1Mv+wBSSqG4wB+BdjIuHQ50jwlelXCDxSi8gj0K/9nDS+aUZtWh6YMwS6UGCKg58jMVglA==}
     peerDependencies:
       '@vue/composition-api': ^1.4.1
-      vue: ^2.0.0 || >=3.0.0-rc.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -5473,7 +5491,7 @@
     resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==}
     peerDependencies:
       '@vue/composition-api': ^1.1.0
-      vue: ^2.6.0 || ^3.2.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -5571,7 +5589,7 @@
     resolution: {integrity: sha512-Xkrdo590AhLHvzyR+U246t6T89nIWHz1weAgMuo8jEA2HS5RiUnsA4U6+iUGaQ2E5c8mYQaeNqzHQXUp9Okbiw==}
     peerDependencies:
       '@wangeditor-next/editor': '>=5.1.0'
-      vue: ^3.0.5
+      vue: 3.5.11
     dependencies:
       '@wangeditor-next/editor': 5.3.14
       vue: 3.5.11(typescript@4.8.4)
@@ -7966,7 +7984,6 @@
       domelementtype: 2.3.0
       domhandler: 5.0.3
       entities: 4.5.0
-    dev: true
 
   /dom-walk@0.1.2:
     resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
@@ -8001,7 +8018,6 @@
     engines: {node: '>= 4'}
     dependencies:
       domelementtype: 2.3.0
-    dev: true
 
   /domutils@1.7.0:
     resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==}
@@ -8023,7 +8039,6 @@
       dom-serializer: 2.0.0
       domelementtype: 2.3.0
       domhandler: 5.0.3
-    dev: true
 
   /dot-case@3.0.4:
     resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
@@ -8097,7 +8112,7 @@
   /element-plus@2.8.4(vue@3.5.11):
     resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==}
     peerDependencies:
-      vue: ^3.2.0
+      vue: 3.5.11
     dependencies:
       '@ctrl/tinycolor': 3.4.1
       '@element-plus/icons-vue': 2.3.1(vue@3.5.11)
@@ -9026,6 +9041,10 @@
   /event-target-shim@5.0.1:
     resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
     engines: {node: '>=6'}
+    dev: false
+
+  /eventemitter3@4.0.7:
+    resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
     dev: false
 
   /execa@5.1.1:
@@ -9998,7 +10017,6 @@
       domhandler: 5.0.3
       domutils: 3.0.1
       entities: 4.5.0
-    dev: true
 
   /http-errors@2.0.0:
     resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
@@ -10902,7 +10920,6 @@
 
   /js-tokens@8.0.0:
     resolution: {integrity: sha512-PC7MzqInq9OqKyTXfIvQNcjMkODJYC8A17kAaQgeW79yfhqTWSOfjHYQ2mDDcwJ96Iibtwkfh0C7R/OvqPlgVA==}
-    dev: true
 
   /js-tokens@9.0.0:
     resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
@@ -12209,7 +12226,6 @@
     resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
     engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
     hasBin: true
-    dev: true
 
   /nanoid@3.3.7:
     resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
@@ -13033,7 +13049,6 @@
 
   /picocolors@1.0.0:
     resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
-    dev: true
 
   /picocolors@1.1.0:
     resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
@@ -13073,7 +13088,7 @@
     peerDependencies:
       '@vue/composition-api': ^1.4.0
       typescript: '>=4.4.4'
-      vue: ^2.6.14 || ^3.3.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -13314,7 +13329,7 @@
     dependencies:
       htmlparser2: 3.10.1
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
     dev: false
 
   /postcss-html@1.5.0:
@@ -13325,7 +13340,6 @@
       js-tokens: 8.0.0
       postcss: 8.4.18
       postcss-safe-parser: 6.0.0(postcss@8.4.18)
-    dev: true
 
   /postcss-image-set-function@7.0.0(postcss@8.4.18):
     resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==}
@@ -13358,7 +13372,7 @@
     dependencies:
       '@babel/core': 7.25.7
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18)
     transitivePeerDependencies:
       - supports-color
     dev: false
@@ -13401,7 +13415,7 @@
       postcss-syntax: '>=0.36.0'
     dependencies:
       postcss: 7.0.39
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18)
       remark: 10.0.1
       unist-util-find-all-after: 1.0.5
     dev: false
@@ -13588,7 +13602,6 @@
       postcss: ^8.3.3
     dependencies:
       postcss: 8.4.18
-    dev: true
 
   /postcss-sass@0.3.5:
     resolution: {integrity: sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A==}
@@ -13618,7 +13631,6 @@
       postcss: ^8.3.3
     dependencies:
       postcss: 8.4.18
-    dev: true
 
   /postcss-selector-not@8.0.0(postcss@8.4.18):
     resolution: {integrity: sha512-g/juh7A83GWc3+kWL8BiS3YUIJb3XNqIVKz1kGvgN3OhoGCsPncy1qo/+q61tjy5r87OxBhSY1+hcH3yOhEW+g==}
@@ -13678,7 +13690,7 @@
       postcss: 8.4.18
     dev: true
 
-  /postcss-syntax@0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39):
+  /postcss-syntax@0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39):
     resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==}
     peerDependencies:
       postcss: '>=5.0.0'
@@ -13701,10 +13713,34 @@
     dependencies:
       postcss: 7.0.39
       postcss-html: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39)
-      postcss-jsx: 0.36.4(postcss-syntax@0.36.2)(postcss@7.0.39)
       postcss-less: 3.1.4
-      postcss-markdown: 0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39)
       postcss-scss: 2.1.1
+    dev: false
+
+  /postcss-syntax@0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18):
+    resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==}
+    peerDependencies:
+      postcss: '>=5.0.0'
+      postcss-html: '*'
+      postcss-jsx: '*'
+      postcss-less: '*'
+      postcss-markdown: '*'
+      postcss-scss: '*'
+    peerDependenciesMeta:
+      postcss-html:
+        optional: true
+      postcss-jsx:
+        optional: true
+      postcss-less:
+        optional: true
+      postcss-markdown:
+        optional: true
+      postcss-scss:
+        optional: true
+    dependencies:
+      postcss: 8.4.18
+      postcss-html: 1.5.0
+      postcss-scss: 4.0.5(postcss@8.4.18)
     dev: false
 
   /postcss-value-parser@3.3.1:
@@ -13739,7 +13775,6 @@
       nanoid: 3.3.4
       picocolors: 1.0.0
       source-map-js: 1.0.2
-    dev: true
 
   /postcss@8.4.47:
     resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
@@ -14800,6 +14835,10 @@
     resolution: {integrity: sha512-53e/4a4lT96K004mqDnLDE+upNSpBLRMfFgYCeIw3Gvuw9F17nxLP5v8MOVLly4/Epomxkx4SXrOFJJMxD2pIw==}
     dev: false
 
+  /rtc-detect@0.0.5:
+    resolution: {integrity: sha512-VANIELbaoIkZRj4gyiCCbTM+/ASy0eNgF35jCs+rrGxzYvD7YIBajEbGGZeh+5ZCNAX8/rT8IVRdpuallf174Q==}
+    dev: false
+
   /run-applescript@7.0.0:
     resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
     engines: {node: '>=18'}
@@ -14983,7 +15022,7 @@
       file-saver: '*'
       lodash: '*'
       semver: '*'
-      vue: '*'
+      vue: 3.5.11
       xlsx: '*'
       xlsx-style: '*'
     dependencies:
@@ -15011,7 +15050,7 @@
       mitt: '*'
       semver: '*'
       senin-help: '*'
-      vue: '*'
+      vue: 3.5.11
     dependencies:
       '@tanstack/vue-query': 4.37.1(vue@3.5.11)
       axios: 1.7.7
@@ -15342,7 +15381,6 @@
   /source-map-js@1.0.2:
     resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
     engines: {node: '>=0.10.0'}
-    dev: true
 
   /source-map-js@1.2.1:
     resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
@@ -15899,7 +15937,7 @@
       postcss-sass: 0.4.4
       postcss-scss: 2.1.1
       postcss-selector-parser: 6.1.1
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39)
       postcss-value-parser: 4.2.0
       resolve-from: 5.0.0
       slash: 3.0.0
@@ -16006,7 +16044,7 @@
       postcss-sass: 0.3.5
       postcss-scss: 2.1.1
       postcss-selector-parser: 3.1.2
-      postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-jsx@0.36.4)(postcss-less@3.1.4)(postcss-markdown@0.36.0)(postcss-scss@2.1.1)(postcss@7.0.39)
+      postcss-syntax: 0.36.2(postcss-html@1.5.0)(postcss-scss@4.0.5)(postcss@8.4.18)
       postcss-value-parser: 3.3.1
       resolve-from: 4.0.0
       signal-exit: 3.0.7
@@ -16362,6 +16400,12 @@
       trtc-sdk-v5: 5.6.2
     dev: false
 
+  /trtc-cloud-js-sdk@2.8.7:
+    resolution: {integrity: sha512-dEquaPzboMd5EhjcN6qTAbF/FJuiyLli1WhkYybNsh3YywMkKR+mg8v+9yFXvZ1UYInWTgeOdIr9Hs50MpmhFg==}
+    dependencies:
+      trtc-sdk-v5: 5.8.7-beta.1
+    dev: false
+
   /trtc-js-sdk@4.15.19:
     resolution: {integrity: sha512-FFVvaji65d7+aq5o4hE+5lamvL1CEolNTPavaN7sRzh8Bb5UdDieBL9jV+lfxCnYpJ5lMi1YJt+EynDPX20Asw==}
     dependencies:
@@ -16370,6 +16414,12 @@
 
   /trtc-sdk-v5@5.6.2:
     resolution: {integrity: sha512-Ylt9LePeHyet2+hABcDxKSMTRMY6IVukw72yvRXgpRi2iR/sDLFSKtj+i3EeQ/BJZZWSTuyFXbolHpVJMPxgPg==}
+    dependencies:
+      webrtc-adapter: 8.2.3
+    dev: false
+
+  /trtc-sdk-v5@5.8.7-beta.1:
+    resolution: {integrity: sha512-kQdbrM4WBOmWm14QXcwPKYhlcitSX+7hkIN1bsLNhCekVxVohZ5VFEhjYVxIF9g3YYETXLzqIjKKJigzJEaLbA==}
     dependencies:
       webrtc-adapter: 8.2.3
     dev: false
@@ -16459,6 +16509,10 @@
     transitivePeerDependencies:
       - react
       - react-native
+    dev: false
+
+  /tuikit-logger@0.0.4-beta.1:
+    resolution: {integrity: sha512-Ky83B1p88xakmfZ2f92cU0YxfolyxnQBv14tQpvnuHcMTnVR2Rjy8tityDGwF+pnxrAhJ7H7OPB/4rFdWVncIw==}
     dev: false
 
   /type-check@0.4.0:
@@ -16851,7 +16905,7 @@
     peerDependencies:
       '@babel/parser': ^7.15.8
       '@nuxt/kit': ^3.2.2
-      vue: 2 || 3
+      vue: 3.5.11
     peerDependenciesMeta:
       '@babel/parser':
         optional: true
@@ -17342,7 +17396,7 @@
     requiresBuild: true
     peerDependencies:
       '@vue/composition-api': ^1.0.0-rc.1
-      vue: ^3.0.0-0 || ^2.6.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -17357,7 +17411,7 @@
     requiresBuild: true
     peerDependencies:
       '@vue/composition-api': ^1.0.0-rc.1
-      vue: ^3.0.0-0 || ^2.6.0
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/composition-api':
         optional: true
@@ -17369,7 +17423,7 @@
     peerDependencies:
       '@vue/runtime-core': ^3.0.0
       echarts: ^5.5.1
-      vue: ^2.7.0 || ^3.1.1
+      vue: 3.5.11
     peerDependenciesMeta:
       '@vue/runtime-core':
         optional: true
@@ -17402,7 +17456,7 @@
   /vue-router@4.4.5(vue@3.5.11):
     resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==}
     peerDependencies:
-      vue: ^3.2.0
+      vue: 3.5.11
     dependencies:
       '@vue/devtools-api': 6.6.4
       vue: 3.5.11(typescript@4.8.4)
@@ -17424,7 +17478,7 @@
     resolution: {integrity: sha512-3Wy6QcZl0VusCCHX3vYrWSILFlrOB2EQDoySnuYmASM5cUp1FivJGfkS5lp1CutDgyRb41g32r/1QCmiBj5i1Q==}
     engines: {node: '>=14.0.0'}
     peerDependencies:
-      vue: ^2.0.0 || ^3.0.0
+      vue: 3.5.11
     peerDependenciesMeta:
       vue:
         optional: true
@@ -17888,7 +17942,3 @@
   /zwitch@1.0.5:
     resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==}
     dev: false
-
-settings:
-  autoInstallPeers: true
-  excludeLinksFromLockfile: false
diff --git a/src/hooks/useEvent.ts b/src/hooks/useEvent.ts
index 02746ec..e5a7944 100644
--- a/src/hooks/useEvent.ts
+++ b/src/hooks/useEvent.ts
@@ -3,6 +3,8 @@
 
 export type GlobalEvent = {
   updateInsuranceClaim: any;
+  'enterprise:add': any;
+  'enterprise:edit': any;
 };
 
 export type GlobalEventListener<T extends keyof GlobalEvent> = (payload: GlobalEvent[T]) => any;
diff --git a/src/views/EnterpriseManage/AddOrEditEnterprise.vue b/src/views/EnterpriseManage/AddOrEditEnterprise.vue
new file mode 100644
index 0000000..30f4646
--- /dev/null
+++ b/src/views/EnterpriseManage/AddOrEditEnterprise.vue
@@ -0,0 +1,24 @@
+<template>
+  <AddOrEditEnterpriseView
+    emitAddEvent="myPublishInformationList:add"
+    emitEditEvent="myPublishInformationList:edit"
+    backRouteName="MyPublishInformationList"
+    :isDetail="false"
+  ></AddOrEditEnterpriseView>
+</template>
+
+<script lang="ts">
+import { setPageTitle } from '@/utils';
+
+export default defineComponent({
+  name: 'AddOrEditEnterprise',
+  beforeRouteEnter(to) {
+    to.meta.title = to.params.id ? '缂栬緫' : '鏂板';
+    setPageTitle(to.meta.title as string);
+  },
+});
+</script>
+
+<script setup lang="ts">
+import AddOrEditEnterpriseView from './components/AddOrEditEnterpriseView.vue';
+</script>
diff --git a/src/views/EnterpriseManage/EnterpriseManageList.vue b/src/views/EnterpriseManage/EnterpriseManageList.vue
new file mode 100644
index 0000000..d7a8dde
--- /dev/null
+++ b/src/views/EnterpriseManage/EnterpriseManageList.vue
@@ -0,0 +1,228 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableQueryFilterBar @on-reset="reset">
+        <template #query>
+          <QueryFilterItem tip-content="鐘舵��">
+            <FieldRadio
+              v-model="extraParamState.status"
+              :value-enum="[
+                { label: '宸查厤缃�', value: true },
+                { label: '鏈厤缃�', value: false },
+              ]"
+              buttonStyle
+              showAllBtn
+              @change="getList()"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
+            <SearchInput
+              v-model="extraParamState.name"
+              style="width: 200px"
+              placeholder="浼佷笟鍚嶇О/娉曚汉/鑱旂郴浜�"
+              @on-click-search="getList"
+              @keyup.enter="getList()"
+            >
+            </SearchInput>
+          </QueryFilterItem>
+        </template>
+        <template #btn>
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+            @click="openDialog()"
+            icon="Plus"
+            type="primary"
+            >鏂板</el-button
+          >
+        </template>
+      </ProTableQueryFilterBar>
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
+      </ProTableV2>
+    </AppContainer>
+    <!-- <AddOrEditSearchSetting v-bind="dialogProps" :typeList="typeList" /> -->
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+  ProTableQueryFilterBar,
+  OperationBtnType,
+  ProTableV2,
+  SearchInput,
+  LoadingLayout,
+  AppContainer,
+  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 { OrderInputType, Message } from '@bole-core/core';
+import { convertApi2FormUrl } from '@/utils';
+import { useQueryClient } from '@tanstack/vue-query';
+import { useSearchSettingType } from '@/hooks';
+
+defineOptions({
+  name: 'EnterpriseManageList',
+});
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+  editBtn: { emits: { onClick: (role) => openDialog(role) } },
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+  operationBtnMap,
+});
+
+const eventContext = useGlobalEventContext();
+
+eventContext.addEvent('enterprise:add', () => {
+  getList();
+});
+
+eventContext.addEvent('enterprise:edit', () => {
+  getList(paginationState.pageIndex);
+});
+
+const BaseState = {
+  loading: true,
+};
+const queryClient = useQueryClient();
+const { searchSettingTypeList: typeList } = useSearchSettingType({
+  searchType: SearchType.IndustryCategory,
+});
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetSearchSettingListInput = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        name: extraParamState.name,
+        // belongType: Number(extraParamState.belongType),
+        searchType: Number(extraParamState.searchType),
+        status: extraParamState.status,
+      };
+
+      if (extraParamState.searchType === SearchType.Position) {
+        params.isRecommend = extraParamState.isRecommend;
+        params.parentId = extraParamState.parentId;
+      }
+      let res = await searchSettingServices.getSearchSettingList(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {
+      console.log('error: ', error);
+    }
+  },
+  {
+    defaultExtraParams: {
+      name: '',
+      searchType: SearchType.Identity,
+      orderInput: [{ property: 'sort', order: OrderInputType.Asc }],
+      status: '' as any as boolean,
+      isRecommend: '' as any as boolean,
+      parentId: '',
+    },
+    queryKey: ['searchSettingServices/getSearchSettingList'],
+    columnsRenderProps: {
+      searchType: { type: 'enum', valueEnum: SearchTypeText },
+    },
+  }
+);
+
+function openDialog(row?: API.GetSearchSettingList) {
+  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 ?? '',
+    });
+  } else {
+    handleAdd({
+      searchType: extraParamState.searchType,
+    });
+  }
+}
+
+const { dialogProps, handleAdd, handleEdit, editForm, dialogState } = useFormDialog({
+  onConfirm: handleAddOrEdit,
+  defaultFormParams: {
+    id: '',
+    searchType: SearchType.Identity,
+    name: '',
+    sort: 0,
+    status: true,
+    src: [] as UploadUserFile[],
+    parentId: '',
+  },
+});
+
+async function handleAddOrEdit() {
+  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 = await searchSettingServices.createOrEditSearchSetting(params);
+    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 setCategoryVis(row: API.GetSearchSettingList) {
+  try {
+    let params: API.EnableSearchSettingInput = {
+      id: row.id,
+      status: !row.status,
+    };
+    let res = await searchSettingServices.enableSearchSetting(params);
+    updateCategoryMenu();
+    getList(paginationState.pageIndex);
+    return !!res;
+  } catch (error) {}
+}
+</script>
diff --git a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
new file mode 100644
index 0000000..2d5ee59
--- /dev/null
+++ b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
@@ -0,0 +1,268 @@
+<template>
+  <LoadingLayout :loading="isEdit && isLoading">
+    <AppScrollContainer>
+      <ChunkCell title="浼佷笟鍩烘湰淇℃伅">
+        <ProForm :model="form" :rules="rules" ref="formRef" label-width="120px" :is-read="isDetail">
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="浼佷笟鍚嶇О:" prop="name" required>
+                <ProFormText
+                  v-model.trim="form.name"
+                  :maxlength="30"
+                  placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="娉曚汉濮撳悕:" prop="name" required>
+                <ProFormText
+                  v-model.trim="form.name"
+                  :maxlength="30"
+                  placeholder="璇疯緭鍏ユ硶浜哄鍚�"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="娉曚汉韬唤璇佸彿:" prop="name" required>
+                <ProFormText
+                  v-model.trim="form.name"
+                  :maxlength="30"
+                  placeholder="璇疯緭鍏ユ硶浜鸿韩浠借瘉鍙�"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="缁熶竴绀句細淇$敤浠g爜:" prop="societyCreditCode">
+                <ProFormText
+                  v-model.trim="form.societyCreditCode"
+                  placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="鎵�鍦ㄧ渷浠�:" prop="name" required>
+                <ProFormText
+                  v-model.trim="form.name"
+                  :maxlength="30"
+                  placeholder="璇疯緭鍏ユ墍鍦ㄧ渷浠�"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="鎵�灞炶涓�:" prop="name" required>
+                <ProFormSelect
+                  placeholder="璇烽�夋嫨鎵�灞炶涓�"
+                  :value-enum="typeList"
+                  clearable
+                  v-model="form.name"
+                ></ProFormSelect>
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="鎵�鍦ㄥ煄甯�:" prop="name" required>
+                <ProFormText
+                  v-model.trim="form.name"
+                  :maxlength="30"
+                  placeholder="璇疯緭鍏ユ墍鍦ㄥ煄甯�"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="24">
+              <ProFormItemV2 label="涓昏惀涓氬姟:" prop="name">
+                <ProFormTextArea
+                  v-model="form.name"
+                  maxlength="200"
+                  :rows="6"
+                  show-word-limit
+                  placeholder="璇疯緭鍏ヤ富钀ヤ笟鍔�"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+        </ProForm>
+      </ChunkCell>
+      <ChunkCell title="鑱旂郴淇℃伅">
+        <ProForm
+          :model="form"
+          :rules="rules"
+          ref="settingFormRef"
+          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>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="鑱旂郴鐢佃瘽:" prop="contactPhone">
+                <ProFormText v-model.trim="form.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2 label="閭:" prop="email">
+                <ProFormText
+                  v-model.trim="form.email"
+                  :maxlength="30"
+                  placeholder="璇疯緭鍏ラ偖绠�"
+                  :formatter="filterCN"
+                />
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+        </ProForm>
+      </ChunkCell>
+    </AppScrollContainer>
+  </LoadingLayout>
+</template>
+<script setup lang="ts">
+import {
+  LoadingLayout,
+  AppScrollContainer,
+  ProForm,
+  ProFormItemV2,
+  ChunkCell,
+  ProFormText,
+  ProFormSelect,
+  ProFormTextArea,
+  ProFormCol,
+  ProFormColItem,
+} from '@bole-core/components';
+import { FormRules, FormInstance } from 'element-plus';
+import { SearchType } from '@/constants';
+import * as searchSettingServices from '@/services/api/SearchSetting';
+import { useRouteView, useGlobalEventContext, GlobalEvent, useSearchSettingType } from '@/hooks';
+import _ from 'lodash';
+import { validateFormList, filterCN } from '@/utils';
+import { Message, BoleRegExp } from '@bole-core/core';
+import { useQuery } from '@tanstack/vue-query';
+
+defineOptions({ name: 'AddOrEditEnterpriseView' });
+
+type Props = {
+  isDetail: boolean;
+  id?: string;
+  emitAddEvent?: keyof GlobalEvent;
+  emitEditEvent?: keyof GlobalEvent;
+  backRouteName?: string;
+};
+
+const props = withDefaults(defineProps<Props>(), {
+  id: '',
+  emitAddEvent: 'enterprise:add',
+  emitEditEvent: 'enterprise:edit',
+  backRouteName: '',
+});
+
+const route = useRoute();
+const isEdit = computed(() => !!props.id);
+const { closeViewPush } = useRouteView();
+const eventContext = useGlobalEventContext();
+
+const { searchSettingTypeList: typeList } = useSearchSettingType({
+  searchType: SearchType.IndustryCategory,
+});
+
+const form = reactive({
+  id: '',
+  name: '',
+  societyCreditCode: '',
+  contact: '',
+  contactPhone: '',
+  email: '',
+});
+
+onMounted(async () => {});
+
+const { isLoading } = useQuery({
+  //   queryKey: ['insureSupplierService/getInsureSupplierInfoById', props.id],
+  //   queryFn: async () => {
+  //     return await insureSupplierService.getInsureSupplierInfoById(
+  //       { id: props.id },
+  //       {
+  //         showLoading: false,
+  //       }
+  //     );
+  //   },
+  onSuccess(data) {},
+  enabled: computed(() => !!props.id),
+});
+
+const formRef = ref<FormInstance>();
+const settingFormRef = 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' }],
+  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 },
+  ],
+});
+
+async function handleSubmit() {
+  try {
+    const valid = await validateFormList([formRef.value, settingFormRef.value]);
+    if (valid) {
+      handleCreateOrEditInsureSupplier();
+    }
+  } catch (error) {}
+}
+
+async function handleCreateOrEditInsureSupplier() {
+  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();
+    // }
+  } catch (error) {}
+}
+
+function handleBack() {
+  closeViewPush(route, {
+    name: 'EnterpriseManageList',
+  });
+}
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>

--
Gitblit v1.9.1