From 5ceeed41b099bd638075c6fa284241d545037573 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期四, 07 八月 2025 09:41:24 +0800
Subject: [PATCH] feat: 企业

---
 src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue |  199 +++++++++++++++++++++++++++++++------------------
 1 files changed, 125 insertions(+), 74 deletions(-)

diff --git a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
index 2d5ee59..1a0be06 100644
--- a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
+++ b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue
@@ -2,23 +2,27 @@
   <LoadingLayout :loading="isEdit && isLoading">
     <AppScrollContainer>
       <ChunkCell title="浼佷笟鍩烘湰淇℃伅">
-        <ProForm :model="form" :rules="rules" ref="formRef" label-width="120px" :is-read="isDetail">
+        <ProForm :model="form" ref="formRef" label-width="140px" :is-read="isDetail">
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="浼佷笟鍚嶇О:" prop="name" required>
+              <ProFormItemV2
+                label="浼佷笟鍚嶇О:"
+                prop="enterpriseName"
+                :check-rules="[{ message: '璇疯緭鍏ヤ紒涓氬悕绉�' }]"
+              >
                 <ProFormText
-                  v-model.trim="form.name"
+                  v-model.trim="form.enterpriseName"
                   :maxlength="30"
-                  placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"
+                  placeholder="璇疯緭鍏ヤ紒涓氬悕绉�"
                 />
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="娉曚汉濮撳悕:" prop="name" required>
+              <ProFormItemV2 label="娉曚汉濮撳悕:" prop="legalPerson">
                 <ProFormText
-                  v-model.trim="form.name"
+                  v-model.trim="form.legalPerson"
                   :maxlength="30"
                   placeholder="璇疯緭鍏ユ硶浜哄鍚�"
                 />
@@ -27,9 +31,9 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="娉曚汉韬唤璇佸彿:" prop="name" required>
+              <ProFormItemV2 label="娉曚汉韬唤璇佸彿:" prop="legalIdentity">
                 <ProFormText
-                  v-model.trim="form.name"
+                  v-model.trim="form.legalIdentity"
                   :maxlength="30"
                   placeholder="璇疯緭鍏ユ硶浜鸿韩浠借瘉鍙�"
                 />
@@ -38,7 +42,11 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="缁熶竴绀句細淇$敤浠g爜:" prop="societyCreditCode">
+              <ProFormItemV2
+                label="缁熶竴绀句細淇$敤浠g爜:"
+                prop="societyCreditCode"
+                :check-rules="[{ message: '璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜', type: 'societyCreditCode' }]"
+              >
                 <ProFormText
                   v-model.trim="form.societyCreditCode"
                   placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜"
@@ -48,9 +56,9 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鎵�鍦ㄧ渷浠�:" prop="name" required>
+              <ProFormItemV2 label="鎵�鍦ㄧ渷浠�:" prop="proviceId">
                 <ProFormText
-                  v-model.trim="form.name"
+                  v-model.trim="form.proviceId"
                   :maxlength="30"
                   placeholder="璇疯緭鍏ユ墍鍦ㄧ渷浠�"
                 />
@@ -59,21 +67,23 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鎵�灞炶涓�:" prop="name" required>
+              <ProFormItemV2 label="鎵�灞炶涓�:" prop="industryTypeId">
                 <ProFormSelect
+                  v-model="form.industryTypeId"
                   placeholder="璇烽�夋嫨鎵�灞炶涓�"
                   :value-enum="typeList"
+                  enum-value-key="id"
+                  enum-label-key="name"
                   clearable
-                  v-model="form.name"
                 ></ProFormSelect>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鎵�鍦ㄥ煄甯�:" prop="name" required>
+              <ProFormItemV2 label="鎵�鍦ㄥ煄甯�:" prop="cityId">
                 <ProFormText
-                  v-model.trim="form.name"
+                  v-model.trim="form.cityId"
                   :maxlength="30"
                   placeholder="璇疯緭鍏ユ墍鍦ㄥ煄甯�"
                 />
@@ -82,9 +92,9 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="24">
-              <ProFormItemV2 label="涓昏惀涓氬姟:" prop="name">
+              <ProFormItemV2 label="涓昏惀涓氬姟:" prop="mainBusiness">
                 <ProFormTextArea
-                  v-model="form.name"
+                  v-model="form.mainBusiness"
                   maxlength="200"
                   :rows="6"
                   show-word-limit
@@ -98,7 +108,6 @@
       <ChunkCell title="鑱旂郴淇℃伅">
         <ProForm
           :model="form"
-          :rules="rules"
           ref="settingFormRef"
           label-width="140px"
           :scroll-to-error="false"
@@ -106,9 +115,13 @@
         >
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鑱旂郴浜�:" prop="contact">
+              <ProFormItemV2
+                label="鑱旂郴浜�:"
+                prop="contacts"
+                :check-rules="[{ message: '璇疯緭鍏ヨ仈绯讳汉' }]"
+              >
                 <ProFormText
-                  v-model.trim="form.contact"
+                  v-model.trim="form.contacts"
                   :maxlength="30"
                   placeholder="璇疯緭鍏ヨ仈绯讳汉"
                 />
@@ -117,16 +130,20 @@
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="鑱旂郴鐢佃瘽:" prop="contactPhone">
-                <ProFormText v-model.trim="form.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+              <ProFormItemV2
+                label="鑱旂郴鐢佃瘽:"
+                prop="contactPhoneNumber"
+                :check-rules="[{ message: '璇疯緭鍏ヨ仈绯荤數璇�', type: 'phone' }]"
+              >
+                <ProFormText v-model.trim="form.contactPhoneNumber" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="12">
-              <ProFormItemV2 label="閭:" prop="email">
+              <ProFormItemV2 label="閭:" prop="contactEmail">
                 <ProFormText
-                  v-model.trim="form.email"
+                  v-model.trim="form.contactEmail"
                   :maxlength="30"
                   placeholder="璇疯緭鍏ラ偖绠�"
                   :formatter="filterCN"
@@ -134,6 +151,35 @@
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
+        </ProForm>
+      </ChunkCell>
+      <ChunkCell title="璐﹀彿淇℃伅">
+        <ProForm
+          :model="form"
+          ref="accountFormRef"
+          label-width="140px"
+          :scroll-to-error="false"
+          :is-read="isDetail"
+        >
+          <ProFormCol>
+            <ProFormColItem :span="12">
+              <ProFormItemV2
+                label="璐﹀彿:"
+                prop="userName"
+                :check-rules="[{ message: '璇疯緭鍏ヨ处鍙�' }]"
+              >
+                <ProFormText
+                  v-model.trim="form.userName"
+                  :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>
@@ -153,9 +199,8 @@
   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 * as enterpriseServices from '@/services/api/enterprise';
+import { useRouteView, useGlobalEventContext, GlobalEvent } from '@/hooks';
 import _ from 'lodash';
 import { validateFormList, filterCN } from '@/utils';
 import { Message, BoleRegExp } from '@bole-core/core';
@@ -175,7 +220,7 @@
   id: '',
   emitAddEvent: 'enterprise:add',
   emitEditEvent: 'enterprise:edit',
-  backRouteName: '',
+  backRouteName: 'EnterpriseManageList',
 });
 
 const route = useRoute();
@@ -183,76 +228,82 @@
 const { closeViewPush } = useRouteView();
 const eventContext = useGlobalEventContext();
 
-const { searchSettingTypeList: typeList } = useSearchSettingType({
-  searchType: SearchType.IndustryCategory,
-});
+const typeList = ref([]);
 
 const form = reactive({
   id: '',
-  name: '',
+  enterpriseName: '',
+  legalPerson: '',
+  legalIdentity: '',
   societyCreditCode: '',
-  contact: '',
-  contactPhone: '',
-  email: '',
+  industryTypeId: '',
+  mainBusiness: '',
+  proviceId: '',
+  cityId: '',
+  contacts: '',
+  contactPhoneNumber: '',
+  contactEmail: '',
+  userName: '',
 });
 
 onMounted(async () => {});
 
 const { isLoading } = useQuery({
-  //   queryKey: ['insureSupplierService/getInsureSupplierInfoById', props.id],
-  //   queryFn: async () => {
-  //     return await insureSupplierService.getInsureSupplierInfoById(
-  //       { id: props.id },
-  //       {
-  //         showLoading: false,
-  //       }
-  //     );
-  //   },
+  queryKey: ['enterpriseServices/getEnterprise', props.id],
+  queryFn: async () => {
+    return await enterpriseServices.getEnterprise(
+      { 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 },
-  ],
-});
+const accountFormRef = ref<FormInstance>();
 
 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.SaveEnterpriseCommand = {
+      enterpriseName: form.enterpriseName,
+      legalPerson: form.legalPerson,
+      legalIdentity: form.legalIdentity,
+      societyCreditCode: form.societyCreditCode,
+      provinceId: form.proviceId,
+      cityId: form.cityId,
+      industryTypeId: form.industryTypeId,
+      mainBusiness: form.mainBusiness,
+      contacts: form.contacts,
+      contactPhoneNumber: form.contactPhoneNumber,
+      contactEmail: form.contactEmail,
+      userName: form.userName,
+    };
+    if (isEdit.value) {
+      params.id = props.id;
+    }
+    let res = await enterpriseServices.saveEnterprise(params);
+    if (res) {
+      Message.successMessage(isEdit ? '缂栬緫鎴愬姛' : '鍙戝竷鎴愬姛');
+      eventContext.emit(isEdit ? 'enterprise:edit' : 'enterprise:add');
+      handleBack();
+    }
   } catch (error) {}
 }
 

--
Gitblit v1.9.1